From b8720f2161ad5a27693341b9ef47ec2380a4a972 Mon Sep 17 00:00:00 2001 From: Lunkhound Date: Sun, 4 Jun 2017 17:57:25 -0700 Subject: [PATCH 01/68] parallel solver: various changes - threading: adding btSequentialImpulseConstraintSolverMt - task scheduler: added parallelSum so that parallel solver can compute residuals - CommonRigidBodyMTBase: add slider for solver least squares residual and allow multithreading without needing OpenMP, TBB, or PPL - taskScheduler: don't wait for workers to sleep/signal at the end of each parallel block - parallel solver: convertContacts split into an allocContactConstraints and setupContactConstraints stage, the latter of which is done in parallel - parallel solver: rolling friction is now interleaved along with normal friction - parallel solver: batchified split impulse solving + some cleanup - parallel solver: sorting batches from largest to smallest - parallel solver: added parallel batch creation - parallel solver: added warmstartingWriteBackContacts func + other cleanup - task scheduler: truncate low bits to preserve determinism with parallelSum - parallel solver: reducing dynamic mem allocs and trying to parallelize more of the batch setup - parallel solver: parallelize updating constraint batch ids for merging - parallel solver: adding debug visualization - task scheduler: make TBB task scheduler parallelSum deterministic - parallel solver: split batch gen code into separate file; allow selection of batch gen method - task scheduler: add sleepWorkerThreadsHint() at end of simulation - parallel solver: added grain size per phase - task Scheduler: fix for strange threading issue; also no need for main thread to wait for workers to sleep - base constraint solver: break out joint setup into separate function for profiling/overriding - parallel solver: allow different batching method for contacts vs joints - base constraint solver: add convertJoint and convertBodies to make it possible to parallelize joint and body conversion - parallel solver: convert joints and bodies in parallel now - parallel solver: speed up batch creation with run-length encoding - parallel solver: batch gen: run-length expansion in parallel; collect constraint info in parallel - parallel solver: adding spatial grid batching method - parallel solver: enhancements to spatial grid batching - sequential solver: moving code for writing back into functions that derived classes can call - parallel solver: do write back of bodies and joints in parallel - parallel solver: removed all batching methods except for spatial grid (others were ineffective) - parallel solver: added 2D or 3D grid batching options; and a bit of cleanup - move btDefaultTaskScheduler into LinearMath project --- CMakeLists.txt | 13 +- examples/ExampleBrowser/CMakeLists.txt | 1 - .../CommonRigidBodyMTBase.cpp | 235 ++- .../MultiThreadedDemo/CommonRigidBodyMTBase.h | 2 + .../MultiThreadedDemo/MultiThreadedDemo.cpp | 31 +- examples/MultiThreading/btTaskScheduler.cpp | 448 ----- examples/MultiThreading/btTaskScheduler.h | 26 - src/BulletDynamics/CMakeLists.txt | 3 + .../ConstraintSolver/btBatchedConstraints.cpp | 1129 ++++++++++++ .../ConstraintSolver/btBatchedConstraints.h | 66 + .../btSequentialImpulseConstraintSolver.cpp | 530 +++--- .../btSequentialImpulseConstraintSolver.h | 8 +- .../btSequentialImpulseConstraintSolverMt.cpp | 1611 +++++++++++++++++ .../btSequentialImpulseConstraintSolverMt.h | 154 ++ .../Dynamics/btDiscreteDynamicsWorldMt.cpp | 11 + .../Dynamics/btDiscreteDynamicsWorldMt.h | 2 + .../Dynamics/btSimulationIslandManagerMt.cpp | 43 +- .../Dynamics/btSimulationIslandManagerMt.h | 2 + src/LinearMath/CMakeLists.txt | 4 + .../TaskScheduler/btTaskScheduler.cpp | 619 +++++++ .../TaskScheduler/btThreadSupportInterface.h | 75 + .../TaskScheduler/btThreadSupportPosix.cpp | 369 ++++ .../TaskScheduler/btThreadSupportWin32.cpp | 480 +++++ src/LinearMath/btThreads.cpp | 121 +- src/LinearMath/btThreads.h | 20 + 25 files changed, 5236 insertions(+), 767 deletions(-) delete mode 100644 examples/MultiThreading/btTaskScheduler.cpp delete mode 100644 examples/MultiThreading/btTaskScheduler.h create mode 100644 src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp create mode 100644 src/BulletDynamics/ConstraintSolver/btBatchedConstraints.h create mode 100644 src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp create mode 100644 src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.h create mode 100644 src/LinearMath/TaskScheduler/btTaskScheduler.cpp create mode 100644 src/LinearMath/TaskScheduler/btThreadSupportInterface.h create mode 100644 src/LinearMath/TaskScheduler/btThreadSupportPosix.cpp create mode 100644 src/LinearMath/TaskScheduler/btThreadSupportWin32.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index c14c02640..2a951d25a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,14 +28,14 @@ OPTION(USE_GRAPHICAL_BENCHMARK "Use Graphical Benchmark" ON) OPTION(BUILD_SHARED_LIBS "Use shared libraries" OFF) OPTION(USE_SOFT_BODY_MULTI_BODY_DYNAMICS_WORLD "Use btSoftMultiBodyDynamicsWorld" ON) -OPTION(BULLET2_USE_THREAD_LOCKS "Build Bullet 2 libraries with mutex locking around certain operations (required for multi-threading)" OFF) -IF (BULLET2_USE_THREAD_LOCKS) +OPTION(BULLET2_MULTITHREADING "Build Bullet 2 libraries with mutex locking around certain operations (required for multi-threading)" OFF) +IF (BULLET2_MULTITHREADING) OPTION(BULLET2_USE_OPEN_MP_MULTITHREADING "Build Bullet 2 with support for multi-threading with OpenMP (requires a compiler with OpenMP support)" OFF) OPTION(BULLET2_USE_TBB_MULTITHREADING "Build Bullet 2 with support for multi-threading with Intel Threading Building Blocks (requires the TBB library to be already installed)" OFF) IF (MSVC) OPTION(BULLET2_USE_PPL_MULTITHREADING "Build Bullet 2 with support for multi-threading with Microsoft Parallel Patterns Library (requires MSVC compiler)" OFF) ENDIF (MSVC) -ENDIF (BULLET2_USE_THREAD_LOCKS) +ENDIF (BULLET2_MULTITHREADING) IF(NOT WIN32) @@ -225,12 +225,15 @@ IF(USE_GRAPHICAL_BENCHMARK) ADD_DEFINITIONS( -DUSE_GRAPHICAL_BENCHMARK) ENDIF (USE_GRAPHICAL_BENCHMARK) -IF(BULLET2_USE_THREAD_LOCKS) +IF(BULLET2_MULTITHREADING) ADD_DEFINITIONS( -DBT_THREADSAFE=1 ) IF (NOT MSVC) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") ENDIF (NOT MSVC) -ENDIF (BULLET2_USE_THREAD_LOCKS) + IF (NOT WIN32) + LINK_LIBRARIES( pthread ) + ENDIF (NOT WIN32) +ENDIF (BULLET2_MULTITHREADING) IF (BULLET2_USE_OPEN_MP_MULTITHREADING) ADD_DEFINITIONS("-DBT_USE_OPENMP=1") diff --git a/examples/ExampleBrowser/CMakeLists.txt b/examples/ExampleBrowser/CMakeLists.txt index cd50c7cf2..6bccf0d5c 100644 --- a/examples/ExampleBrowser/CMakeLists.txt +++ b/examples/ExampleBrowser/CMakeLists.txt @@ -226,7 +226,6 @@ SET(BulletExampleBrowser_SRCS ../MultiThreading/b3PosixThreadSupport.cpp ../MultiThreading/b3Win32ThreadSupport.cpp ../MultiThreading/b3ThreadSupportInterface.cpp - ../MultiThreading/btTaskScheduler.cpp ../RenderingExamples/TinyRendererSetup.cpp ../RenderingExamples/TimeSeriesCanvas.cpp ../RenderingExamples/TimeSeriesCanvas.h diff --git a/examples/MultiThreadedDemo/CommonRigidBodyMTBase.cpp b/examples/MultiThreadedDemo/CommonRigidBodyMTBase.cpp index 1cf21db1e..b11cd7691 100644 --- a/examples/MultiThreadedDemo/CommonRigidBodyMTBase.cpp +++ b/examples/MultiThreadedDemo/CommonRigidBodyMTBase.cpp @@ -29,17 +29,17 @@ class btCollisionShape; #include "BulletCollision/CollisionDispatch/btCollisionDispatcherMt.h" #include "BulletDynamics/Dynamics/btSimulationIslandManagerMt.h" // for setSplitIslands() #include "BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h" +#include "BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.h" #include "BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h" #include "BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.h" #include "BulletDynamics/MLCPSolvers/btMLCPSolver.h" #include "BulletDynamics/MLCPSolvers/btSolveProjectedGaussSeidel.h" #include "BulletDynamics/MLCPSolvers/btDantzigSolver.h" #include "BulletDynamics/MLCPSolvers/btLemkeSolver.h" -#include "../MultiThreading/btTaskScheduler.h" static int gNumIslands = 0; - +bool gAllowNestedParallelForLoops = false; class Profiler { @@ -52,6 +52,10 @@ public: kRecordPredictUnconstrainedMotion, kRecordCreatePredictiveContacts, kRecordIntegrateTransforms, + kRecordSolverTotal, + kRecordSolverSetup, + kRecordSolverIterations, + kRecordSolverFinish, kRecordCount }; @@ -139,6 +143,41 @@ static void profileEndCallback( btDynamicsWorld *world, btScalar timeStep ) } +class MySequentialImpulseConstraintSolverMt : public btSequentialImpulseConstraintSolverMt +{ + typedef btSequentialImpulseConstraintSolverMt ParentClass; +public: + BT_DECLARE_ALIGNED_ALLOCATOR(); + + MySequentialImpulseConstraintSolverMt() {} + + // for profiling + virtual btScalar solveGroupCacheFriendlySetup(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer) BT_OVERRIDE + { + ProfileHelper prof(Profiler::kRecordSolverSetup); + btScalar ret = ParentClass::solveGroupCacheFriendlySetup(bodies, numBodies, manifoldPtr, numManifolds, constraints, numConstraints, infoGlobal, debugDrawer ); + return ret; + } + virtual btScalar solveGroupCacheFriendlyIterations( btCollisionObject** bodies, int numBodies, btPersistentManifold** manifoldPtr, int numManifolds, btTypedConstraint** constraints, int numConstraints, const btContactSolverInfo& infoGlobal, btIDebugDraw* debugDrawer ) BT_OVERRIDE + { + ProfileHelper prof(Profiler::kRecordSolverIterations); + btScalar ret = ParentClass::solveGroupCacheFriendlyIterations(bodies, numBodies, manifoldPtr, numManifolds, constraints, numConstraints, infoGlobal, debugDrawer ); + return ret; + } + virtual btScalar solveGroupCacheFriendlyFinish(btCollisionObject** bodies,int numBodies,const btContactSolverInfo& infoGlobal) BT_OVERRIDE + { + ProfileHelper prof(Profiler::kRecordSolverFinish); + btScalar ret = ParentClass::solveGroupCacheFriendlyFinish(bodies, numBodies, infoGlobal); + return ret; + } + virtual btScalar solveGroup(btCollisionObject** bodies, int numBodies, btPersistentManifold** manifold, int numManifolds, btTypedConstraint** constraints, int numConstraints, const btContactSolverInfo& info, btIDebugDraw* debugDrawer, btDispatcher* dispatcher) BT_OVERRIDE + { + ProfileHelper prof(Profiler::kRecordSolverTotal); + btScalar ret = ParentClass::solveGroup(bodies, numBodies, manifold, numManifolds, constraints, numConstraints, info, debugDrawer, dispatcher); + return ret; + } +}; + /// /// MyCollisionDispatcher -- subclassed for profiling purposes /// @@ -218,6 +257,8 @@ btConstraintSolver* createSolverByType( SolverType t ) { case SOLVER_TYPE_SEQUENTIAL_IMPULSE: return new btSequentialImpulseConstraintSolver(); + case SOLVER_TYPE_SEQUENTIAL_IMPULSE_MT: + return new MySequentialImpulseConstraintSolverMt(); case SOLVER_TYPE_NNCG: return new btNNCGConstraintSolver(); case SOLVER_TYPE_MLCP_PGS: @@ -253,7 +294,7 @@ public: { addTaskScheduler( btGetSequentialTaskScheduler() ); #if BT_THREADSAFE - if ( btITaskScheduler* ts = createDefaultTaskScheduler() ) + if ( btITaskScheduler* ts = btCreateDefaultTaskScheduler() ) { m_allocatedTaskSchedulers.push_back( ts ); addTaskScheduler( ts ); @@ -310,7 +351,7 @@ static bool gDisplayProfileInfo = true; static bool gMultithreadedWorld = false; static bool gDisplayProfileInfo = false; #endif -static SolverType gSolverType = SOLVER_TYPE_SEQUENTIAL_IMPULSE; +static SolverType gSolverType = SOLVER_TYPE_SEQUENTIAL_IMPULSE_MT; static int gSolverMode = SOLVER_SIMD | SOLVER_USE_WARMSTARTING | // SOLVER_RANDMIZE_ORDER | @@ -318,9 +359,11 @@ static int gSolverMode = SOLVER_SIMD | // SOLVER_USE_2_FRICTION_DIRECTIONS | 0; static btScalar gSliderSolverIterations = 10.0f; // should be int - static btScalar gSliderNumThreads = 1.0f; // should be int - +static btScalar gSliderIslandBatchingThreshold = 0.0f; // should be int +static btScalar gSliderMinBatchSize = btScalar(btSequentialImpulseConstraintSolverMt::s_minBatchSize); // should be int +static btScalar gSliderMaxBatchSize = btScalar(btSequentialImpulseConstraintSolverMt::s_maxBatchSize); // should be int +static btScalar gSliderLeastSquaresResidualThreshold = 0.0f; //////////////////////////////////// CommonRigidBodyMTBase::CommonRigidBodyMTBase( struct GUIHelperInterface* helper ) @@ -419,6 +462,23 @@ void setTaskSchedulerComboBoxCallback(int combobox, const char* item, void* user } +void setBatchingMethodComboBoxCallback(int combobox, const char* item, void* userPointer) +{ +#if BT_THREADSAFE + const char** items = static_cast( userPointer ); + for ( int i = 0; i < btBatchedConstraints::BATCHING_METHOD_COUNT; ++i ) + { + if ( strcmp( item, items[ i ] ) == 0 ) + { + // change the task scheduler + btSequentialImpulseConstraintSolverMt::s_contactBatchingMethod = static_cast( i ); + break; + } + } +#endif // #if BT_THREADSAFE +} + + static void setThreadCountCallback(float val, void* userPtr) { #if BT_THREADSAFE @@ -435,13 +495,43 @@ static void setSolverIterationCountCallback(float val, void* userPtr) } } +static void setLargeIslandManifoldCountCallback( float val, void* userPtr ) +{ + btSequentialImpulseConstraintSolverMt::s_minimumContactManifoldsForBatching = int( gSliderIslandBatchingThreshold ); +} + +static void setMinBatchSizeCallback( float val, void* userPtr ) +{ + gSliderMaxBatchSize = (std::max)(gSliderMinBatchSize, gSliderMaxBatchSize); + btSequentialImpulseConstraintSolverMt::s_minBatchSize = int(gSliderMinBatchSize); + btSequentialImpulseConstraintSolverMt::s_maxBatchSize = int(gSliderMaxBatchSize); +} + +static void setMaxBatchSizeCallback( float val, void* userPtr ) +{ + gSliderMinBatchSize = (std::min)(gSliderMinBatchSize, gSliderMaxBatchSize); + btSequentialImpulseConstraintSolverMt::s_minBatchSize = int(gSliderMinBatchSize); + btSequentialImpulseConstraintSolverMt::s_maxBatchSize = int(gSliderMaxBatchSize); +} + +static void setLeastSquaresResidualThresholdCallback( float val, void* userPtr ) +{ + if (btDiscreteDynamicsWorld* world = reinterpret_cast(userPtr)) + { + world->getSolverInfo().m_leastSquaresResidualThreshold = gSliderLeastSquaresResidualThreshold; + } +} + void CommonRigidBodyMTBase::createEmptyDynamicsWorld() { gNumIslands = 0; m_solverType = gSolverType; -#if BT_THREADSAFE && (BT_USE_OPENMP || BT_USE_PPL || BT_USE_TBB) +#if BT_THREADSAFE btAssert( btGetTaskScheduler() != NULL ); - m_multithreadCapable = true; + if (NULL != btGetTaskScheduler() && gTaskSchedulerMgr.getNumTaskSchedulers() > 1) + { + m_multithreadCapable = true; + } #endif if ( gMultithreadedWorld ) { @@ -486,7 +576,12 @@ void CommonRigidBodyMTBase::createEmptyDynamicsWorld() m_broadphase = new btDbvtBroadphase(); - m_solver = createSolverByType( m_solverType ); + SolverType solverType = m_solverType; + if ( solverType == SOLVER_TYPE_SEQUENTIAL_IMPULSE_MT ) + { + solverType = SOLVER_TYPE_SEQUENTIAL_IMPULSE; + } + m_solver = createSolverByType( solverType ); m_dynamicsWorld = new btDiscreteDynamicsWorld( m_dispatcher, m_broadphase, m_solver, m_collisionConfiguration ); } @@ -494,6 +589,7 @@ void CommonRigidBodyMTBase::createEmptyDynamicsWorld() m_dynamicsWorld->setInternalTickCallback( profileEndCallback, NULL, false ); m_dynamicsWorld->setGravity( btVector3( 0, -10, 0 ) ); m_dynamicsWorld->getSolverInfo().m_solverMode = gSolverMode; + m_dynamicsWorld->getSolverInfo().m_numIterations = btMax(1, int(gSliderSolverIterations)); createDefaultParameters(); } @@ -504,16 +600,18 @@ void CommonRigidBodyMTBase::createDefaultParameters() { // create a button to toggle multithreaded world ButtonParams button( "Multithreaded world enable", 0, true ); - button.m_initialState = gMultithreadedWorld; - button.m_userPointer = &gMultithreadedWorld; + bool* ptr = &gMultithreadedWorld; + button.m_initialState = *ptr; + button.m_userPointer = ptr; button.m_callback = boolPtrButtonCallback; m_guiHelper->getParameterInterface()->registerButtonParameter( button ); } { // create a button to toggle profile printing ButtonParams button( "Display solver info", 0, true ); - button.m_initialState = gDisplayProfileInfo; - button.m_userPointer = &gDisplayProfileInfo; + bool* ptr = &gDisplayProfileInfo; + button.m_initialState = *ptr; + button.m_userPointer = ptr; button.m_callback = boolPtrButtonCallback; m_guiHelper->getParameterInterface()->registerButtonParameter( button ); } @@ -544,6 +642,16 @@ void CommonRigidBodyMTBase::createDefaultParameters() slider.m_clampToIntegers = true; m_guiHelper->getParameterInterface()->registerSliderFloatParameter( slider ); } + { + // a slider for the solver leastSquaresResidualThreshold (used to run fewer solver iterations when convergence is good) + SliderParams slider( "Solver residual thresh", &gSliderLeastSquaresResidualThreshold ); + slider.m_minVal = 0.0f; + slider.m_maxVal = 0.25f; + slider.m_callback = setLeastSquaresResidualThresholdCallback; + slider.m_userPointer = m_dynamicsWorld; + slider.m_clampToIntegers = false; + m_guiHelper->getParameterInterface()->registerSliderFloatParameter( slider ); + } { ButtonParams button( "Solver use SIMD", 0, true ); button.m_buttonId = SOLVER_SIMD; @@ -618,20 +726,86 @@ void CommonRigidBodyMTBase::createDefaultParameters() m_guiHelper->getParameterInterface()->registerComboBox( comboParams ); } { - // create a slider to set the number of threads to use - int numThreads = btGetTaskScheduler()->getNumThreads(); // if slider has not been set yet (by another demo), if ( gSliderNumThreads <= 1.0f ) { + // create a slider to set the number of threads to use + int numThreads = btGetTaskScheduler()->getNumThreads(); gSliderNumThreads = float( numThreads ); } + int maxNumThreads = btGetTaskScheduler()->getMaxNumThreads(); SliderParams slider("Thread count", &gSliderNumThreads); slider.m_minVal = 1.0f; - slider.m_maxVal = float( BT_MAX_THREAD_COUNT ); + slider.m_maxVal = float( maxNumThreads ); slider.m_callback = setThreadCountCallback; slider.m_clampToIntegers = true; m_guiHelper->getParameterInterface()->registerSliderFloatParameter( slider ); } + { + // a slider for the number of manifolds an island needs to be too large for parallel dispatch + if (gSliderIslandBatchingThreshold < 1.0) + { + gSliderIslandBatchingThreshold = float(btSequentialImpulseConstraintSolverMt::s_minimumContactManifoldsForBatching); + } + SliderParams slider( "IslandBatchThresh", &gSliderIslandBatchingThreshold ); + slider.m_minVal = 1.0f; + slider.m_maxVal = 2000.0f; + slider.m_callback = setLargeIslandManifoldCountCallback; + slider.m_userPointer = NULL; + slider.m_clampToIntegers = true; + m_guiHelper->getParameterInterface()->registerSliderFloatParameter( slider ); + } + { + // create a combo box for selecting the batching method + static const char* sBatchingMethodComboBoxItems[ btBatchedConstraints::BATCHING_METHOD_COUNT ]; + { + sBatchingMethodComboBoxItems[ btBatchedConstraints::BATCHING_METHOD_SPATIAL_GRID_2D ] = "Batching: 2D Grid"; + sBatchingMethodComboBoxItems[ btBatchedConstraints::BATCHING_METHOD_SPATIAL_GRID_3D ] = "Batching: 3D Grid"; + }; + ComboBoxParams comboParams; + comboParams.m_userPointer = sBatchingMethodComboBoxItems; + comboParams.m_numItems = btBatchedConstraints::BATCHING_METHOD_COUNT; + comboParams.m_startItem = static_cast(btSequentialImpulseConstraintSolverMt::s_contactBatchingMethod); + comboParams.m_items = sBatchingMethodComboBoxItems; + comboParams.m_callback = setBatchingMethodComboBoxCallback; + m_guiHelper->getParameterInterface()->registerComboBox( comboParams ); + } + { + // a slider for the sequentialImpulseConstraintSolverMt min batch size (when batching) + SliderParams slider( "Min batch size", &gSliderMinBatchSize ); + slider.m_minVal = 1.0f; + slider.m_maxVal = 1000.0f; + slider.m_callback = setMinBatchSizeCallback; + slider.m_userPointer = NULL; + slider.m_clampToIntegers = true; + m_guiHelper->getParameterInterface()->registerSliderFloatParameter( slider ); + } + { + // a slider for the sequentialImpulseConstraintSolverMt max batch size (when batching) + SliderParams slider( "Max batch size", &gSliderMaxBatchSize ); + slider.m_minVal = 1.0f; + slider.m_maxVal = 1000.0f; + slider.m_callback = setMaxBatchSizeCallback; + slider.m_userPointer = NULL; + slider.m_clampToIntegers = true; + m_guiHelper->getParameterInterface()->registerSliderFloatParameter( slider ); + } + { + // create a button to toggle debug drawing of batching visualization + ButtonParams button( "Visualize batching", 0, true ); + bool* ptr = &btBatchedConstraints::s_debugDrawBatches; + button.m_initialState = *ptr; + button.m_userPointer = ptr; + button.m_callback = boolPtrButtonCallback; + m_guiHelper->getParameterInterface()->registerButtonParameter( button ); + } + { + ButtonParams button( "Allow Nested ParallelFor", 0, true ); + button.m_initialState = btSequentialImpulseConstraintSolverMt::s_allowNestedParallelForLoops; + button.m_userPointer = &btSequentialImpulseConstraintSolverMt::s_allowNestedParallelForLoops; + button.m_callback = boolPtrButtonCallback; + m_guiHelper->getParameterInterface()->registerButtonParameter( button ); + } #endif // #if BT_THREADSAFE } } @@ -643,6 +817,7 @@ void CommonRigidBodyMTBase::drawScreenText() int xCoord = 400; int yCoord = 30; int yStep = 30; + int indent = 30; if (m_solverType != gSolverType) { sprintf( msg, "restart example to change solver type" ); @@ -721,6 +896,34 @@ void CommonRigidBodyMTBase::drawScreenText() m_guiHelper->getAppInterface()->drawText( msg, xCoord, yCoord, 0.4f ); yCoord += yStep; + sprintf( msg, + "SolverTotal %5.3f ms", + gProfiler.getAverageTime( Profiler::kRecordSolverTotal )*0.001f + ); + m_guiHelper->getAppInterface()->drawText( msg, xCoord, yCoord, 0.4f ); + yCoord += yStep; + + sprintf( msg, + "SolverSetup %5.3f ms", + gProfiler.getAverageTime( Profiler::kRecordSolverSetup )*0.001f + ); + m_guiHelper->getAppInterface()->drawText( msg, xCoord + indent, yCoord, 0.4f ); + yCoord += yStep; + + sprintf( msg, + "SolverIterations %5.3f ms", + gProfiler.getAverageTime( Profiler::kRecordSolverIterations )*0.001f + ); + m_guiHelper->getAppInterface()->drawText( msg, xCoord + indent, yCoord, 0.4f ); + yCoord += yStep; + + sprintf( msg, + "SolverFinish %5.3f ms", + gProfiler.getAverageTime( Profiler::kRecordSolverFinish )*0.001f + ); + m_guiHelper->getAppInterface()->drawText( msg, xCoord + indent, yCoord, 0.4f ); + yCoord += yStep; + sprintf( msg, "PredictUnconstrainedMotion %5.3f ms", gProfiler.getAverageTime( Profiler::kRecordPredictUnconstrainedMotion )*0.001f diff --git a/examples/MultiThreadedDemo/CommonRigidBodyMTBase.h b/examples/MultiThreadedDemo/CommonRigidBodyMTBase.h index 0695b88c0..c283a3f22 100644 --- a/examples/MultiThreadedDemo/CommonRigidBodyMTBase.h +++ b/examples/MultiThreadedDemo/CommonRigidBodyMTBase.h @@ -14,6 +14,7 @@ enum SolverType { SOLVER_TYPE_SEQUENTIAL_IMPULSE, + SOLVER_TYPE_SEQUENTIAL_IMPULSE_MT, SOLVER_TYPE_NNCG, SOLVER_TYPE_MLCP_PGS, SOLVER_TYPE_MLCP_DANTZIG, @@ -27,6 +28,7 @@ inline const char* getSolverTypeName( SolverType t ) switch (t) { case SOLVER_TYPE_SEQUENTIAL_IMPULSE: return "SequentialImpulse"; + case SOLVER_TYPE_SEQUENTIAL_IMPULSE_MT: return "SequentialImpulseMt"; case SOLVER_TYPE_NNCG: return "NNCG"; case SOLVER_TYPE_MLCP_PGS: return "MLCP ProjectedGaussSeidel"; case SOLVER_TYPE_MLCP_DANTZIG: return "MLCP Dantzig"; diff --git a/examples/MultiThreadedDemo/MultiThreadedDemo.cpp b/examples/MultiThreadedDemo/MultiThreadedDemo.cpp index a04ab0d91..3cfcec807 100644 --- a/examples/MultiThreadedDemo/MultiThreadedDemo.cpp +++ b/examples/MultiThreadedDemo/MultiThreadedDemo.cpp @@ -25,10 +25,10 @@ subject to the following restrictions: -static btScalar gSliderStackRows = 8.0f; -static btScalar gSliderStackColumns = 6.0f; -static btScalar gSliderStackHeight = 10.0f; -static btScalar gSliderStackWidth = 1.0f; +static btScalar gSliderStackRows = 1.0f; +static btScalar gSliderStackColumns = 1.0f; +static btScalar gSliderStackHeight = 15.0f; +static btScalar gSliderStackWidth = 8.0f; static btScalar gSliderGroundHorizontalAmplitude = 0.0f; static btScalar gSliderGroundVerticalAmplitude = 0.0f; static btScalar gSliderGroundTilt = 0.0f; @@ -75,6 +75,21 @@ public: btScalar tilt = gSliderGroundTilt * SIMD_2_PI / 360.0f; return btQuaternion( btVector3( 1.0f, 0.0f, 0.0f ), tilt ); } + struct TestSumBody : public btIParallelSumBody + { + virtual btScalar sumLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + btScalar sum = 0.0f; + for (int i = iBegin; i < iEnd; ++i) + { + if (i > 0) + { + sum += 1.0f / btScalar(i); + } + } + return sum; + } + }; virtual void stepSimulation( float deltaTime ) BT_OVERRIDE { if ( m_dynamicsWorld ) @@ -115,6 +130,14 @@ public: // always step by 1/60 for benchmarking m_dynamicsWorld->stepSimulation( 1.0f / 60.0f, 0 ); } +#if 0 + { + // test parallelSum + TestSumBody testSumBody; + float testSum = btParallelSum( 1, 10000000, 10000, testSumBody ); + printf( "sum = %f\n", testSum ); + } +#endif } virtual void initPhysics() BT_OVERRIDE; diff --git a/examples/MultiThreading/btTaskScheduler.cpp b/examples/MultiThreading/btTaskScheduler.cpp deleted file mode 100644 index e6862a197..000000000 --- a/examples/MultiThreading/btTaskScheduler.cpp +++ /dev/null @@ -1,448 +0,0 @@ - -#include "LinearMath/btTransform.h" -#include "../Utils/b3Clock.h" -#include "LinearMath/btAlignedObjectArray.h" -#include "LinearMath/btThreads.h" -#include "LinearMath/btQuickprof.h" -#include -#include - - -typedef void( *btThreadFunc )( void* userPtr, void* lsMemory ); -typedef void* ( *btThreadLocalStorageFunc )(); - -#if BT_THREADSAFE - -#if defined( _WIN32 ) - -#include "b3Win32ThreadSupport.h" - -b3ThreadSupportInterface* createThreadSupport( int numThreads, btThreadFunc threadFunc, btThreadLocalStorageFunc localStoreFunc, const char* uniqueName ) -{ - b3Win32ThreadSupport::Win32ThreadConstructionInfo constructionInfo( uniqueName, threadFunc, localStoreFunc, numThreads ); - //constructionInfo.m_priority = 0; // highest priority (the default) -- can cause erratic performance when numThreads > numCores - // we don't want worker threads to be higher priority than the main thread or the main thread could get - // totally shut out and unable to tell the workers to stop - constructionInfo.m_priority = -1; // normal priority - b3Win32ThreadSupport* threadSupport = new b3Win32ThreadSupport( constructionInfo ); - return threadSupport; -} - -#else // #if defined( _WIN32 ) - -#include "b3PosixThreadSupport.h" - -b3ThreadSupportInterface* createThreadSupport( int numThreads, btThreadFunc threadFunc, btThreadLocalStorageFunc localStoreFunc, const char* uniqueName) -{ - b3PosixThreadSupport::ThreadConstructionInfo constructionInfo( uniqueName, threadFunc, localStoreFunc, numThreads ); - b3ThreadSupportInterface* threadSupport = new b3PosixThreadSupport( constructionInfo ); - return threadSupport; -} - -#endif // #else // #if defined( _WIN32 ) - - -/// -/// getNumHardwareThreads() -/// -/// -/// https://stackoverflow.com/questions/150355/programmatically-find-the-number-of-cores-on-a-machine -/// -#if __cplusplus >= 201103L - -#include - -int getNumHardwareThreads() -{ - return std::thread::hardware_concurrency(); -} - -#elif defined( _WIN32 ) - -#define WIN32_LEAN_AND_MEAN - -#include - -int getNumHardwareThreads() -{ - // caps out at 32 - SYSTEM_INFO info; - GetSystemInfo( &info ); - return info.dwNumberOfProcessors; -} - -#else - -int getNumHardwareThreads() -{ - return 0; // don't know -} - -#endif - - -struct WorkerThreadStatus -{ - enum Type - { - kInvalid, - kWaitingForWork, - kWorking, - kSleeping, - }; -}; - - -struct IJob -{ - virtual void executeJob() = 0; -}; - -class ParallelForJob : public IJob -{ - const btIParallelForBody* mBody; - int mBegin; - int mEnd; - -public: - ParallelForJob() - { - mBody = NULL; - mBegin = 0; - mEnd = 0; - } - void init( int iBegin, int iEnd, const btIParallelForBody& body ) - { - mBody = &body; - mBegin = iBegin; - mEnd = iEnd; - } - virtual void executeJob() BT_OVERRIDE - { - BT_PROFILE( "executeJob" ); - - // call the functor body to do the work - mBody->forLoop( mBegin, mEnd ); - } -}; - - -struct JobContext -{ - JobContext() - { - m_queueLock = NULL; - m_headIndex = 0; - m_tailIndex = 0; - m_workersShouldCheckQueue = false; - m_useSpinMutex = false; - } - b3CriticalSection* m_queueLock; - btSpinMutex m_mutex; - volatile bool m_workersShouldCheckQueue; - - btAlignedObjectArray m_jobQueue; - bool m_queueIsEmpty; - int m_tailIndex; - int m_headIndex; - bool m_useSpinMutex; - - void lockQueue() - { - if ( m_useSpinMutex ) - { - m_mutex.lock(); - } - else - { - m_queueLock->lock(); - } - } - void unlockQueue() - { - if ( m_useSpinMutex ) - { - m_mutex.unlock(); - } - else - { - m_queueLock->unlock(); - } - } - void clearQueue() - { - lockQueue(); - m_headIndex = 0; - m_tailIndex = 0; - m_queueIsEmpty = true; - unlockQueue(); - m_jobQueue.resizeNoInitialize( 0 ); - } - void submitJob( IJob* job ) - { - m_jobQueue.push_back( job ); - lockQueue(); - m_tailIndex++; - m_queueIsEmpty = false; - unlockQueue(); - } - IJob* consumeJob() - { - if ( m_queueIsEmpty ) - { - // lock free path. even if this is taken erroneously it isn't harmful - return NULL; - } - IJob* job = NULL; - lockQueue(); - if ( !m_queueIsEmpty ) - { - job = m_jobQueue[ m_headIndex++ ]; - if ( m_headIndex == m_tailIndex ) - { - m_queueIsEmpty = true; - } - } - unlockQueue(); - return job; - } -}; - - -struct WorkerThreadLocalStorage -{ - int threadId; - WorkerThreadStatus::Type status; -}; - - -static void WorkerThreadFunc( void* userPtr, void* lsMemory ) -{ - BT_PROFILE( "WorkerThreadFunc" ); - WorkerThreadLocalStorage* localStorage = (WorkerThreadLocalStorage*) lsMemory; - localStorage->status = WorkerThreadStatus::kWaitingForWork; - //printf( "WorkerThreadFunc: worker %d start working\n", localStorage->threadId ); - - JobContext* jobContext = (JobContext*) userPtr; - - while ( jobContext->m_workersShouldCheckQueue ) - { - if ( IJob* job = jobContext->consumeJob() ) - { - localStorage->status = WorkerThreadStatus::kWorking; - job->executeJob(); - localStorage->status = WorkerThreadStatus::kWaitingForWork; - } - else - { - // todo: spin wait a bit to avoid hammering the empty queue - } - } - - //printf( "WorkerThreadFunc stop working\n" ); - localStorage->status = WorkerThreadStatus::kSleeping; - // go idle -} - - -static void* WorkerThreadAllocFunc() -{ - return new WorkerThreadLocalStorage; -} - - - -class btTaskSchedulerDefault : public btITaskScheduler -{ - JobContext m_jobContext; - b3ThreadSupportInterface* m_threadSupport; - btAlignedObjectArray m_jobs; - btSpinMutex m_antiNestingLock; // prevent nested parallel-for - int m_numThreads; - int m_numWorkerThreads; - int m_numWorkersRunning; -public: - - btTaskSchedulerDefault() : btITaskScheduler("ThreadSupport") - { - m_threadSupport = NULL; - m_numThreads = getNumHardwareThreads(); - // if can't detect number of cores, - if ( m_numThreads == 0 ) - { - // take a guess - m_numThreads = 4; - } - m_numWorkerThreads = m_numThreads - 1; - m_numWorkersRunning = 0; - } - - virtual ~btTaskSchedulerDefault() - { - shutdown(); - } - - void init() - { - int maxNumWorkerThreads = BT_MAX_THREAD_COUNT - 1; - m_threadSupport = createThreadSupport( maxNumWorkerThreads, WorkerThreadFunc, WorkerThreadAllocFunc, "TaskScheduler" ); - m_jobContext.m_queueLock = m_threadSupport->createCriticalSection(); - for ( int i = 0; i < maxNumWorkerThreads; i++ ) - { - WorkerThreadLocalStorage* storage = (WorkerThreadLocalStorage*) m_threadSupport->getThreadLocalMemory( i ); - btAssert( storage ); - storage->threadId = i; - storage->status = WorkerThreadStatus::kSleeping; - } - setWorkersActive( false ); // no work for them yet - } - - virtual void shutdown() - { - setWorkersActive( false ); - waitForWorkersToSleep(); - m_threadSupport->deleteCriticalSection( m_jobContext.m_queueLock ); - m_jobContext.m_queueLock = NULL; - - delete m_threadSupport; - m_threadSupport = NULL; - } - - void setWorkersActive( bool active ) - { - m_jobContext.m_workersShouldCheckQueue = active; - } - - virtual int getMaxNumThreads() const BT_OVERRIDE - { - return BT_MAX_THREAD_COUNT; - } - - virtual int getNumThreads() const BT_OVERRIDE - { - return m_numThreads; - } - - virtual void setNumThreads( int numThreads ) BT_OVERRIDE - { - m_numThreads = btMax( btMin(numThreads, int(BT_MAX_THREAD_COUNT)), 1 ); - m_numWorkerThreads = m_numThreads - 1; - } - - void waitJobs() - { - BT_PROFILE( "waitJobs" ); - // have the main thread work until the job queue is empty - for ( ;; ) - { - if ( IJob* job = m_jobContext.consumeJob() ) - { - job->executeJob(); - } - else - { - break; - } - } - // done with jobs for now, tell workers to rest - setWorkersActive( false ); - waitForWorkersToSleep(); - } - - void wakeWorkers() - { - BT_PROFILE( "wakeWorkers" ); - btAssert( m_jobContext.m_workersShouldCheckQueue ); - // tell each worker thread to start working - for ( int i = 0; i < m_numWorkerThreads; i++ ) - { - m_threadSupport->runTask( B3_THREAD_SCHEDULE_TASK, &m_jobContext, i ); - m_numWorkersRunning++; - } - } - - void waitForWorkersToSleep() - { - BT_PROFILE( "waitForWorkersToSleep" ); - while ( m_numWorkersRunning > 0 ) - { - int iThread; - int threadStatus; - m_threadSupport->waitForResponse( &iThread, &threadStatus ); // wait for worker threads to finish working - m_numWorkersRunning--; - } - //m_threadSupport->waitForAllTasksToComplete(); - for ( int i = 0; i < m_numWorkerThreads; i++ ) - { - //m_threadSupport->waitForTaskCompleted( i ); - WorkerThreadLocalStorage* storage = (WorkerThreadLocalStorage*) m_threadSupport->getThreadLocalMemory( i ); - btAssert( storage ); - btAssert( storage->status == WorkerThreadStatus::kSleeping ); - } - } - - virtual void parallelFor( int iBegin, int iEnd, int grainSize, const btIParallelForBody& body ) BT_OVERRIDE - { - BT_PROFILE( "parallelFor_ThreadSupport" ); - btAssert( iEnd >= iBegin ); - btAssert( grainSize >= 1 ); - int iterationCount = iEnd - iBegin; - if ( iterationCount > grainSize && m_numWorkerThreads > 0 && m_antiNestingLock.tryLock() ) - { - int jobCount = ( iterationCount + grainSize - 1 ) / grainSize; - btAssert( jobCount >= 2 ); // need more than one job for multithreading - if ( jobCount > m_jobs.size() ) - { - m_jobs.resize( jobCount ); - } - if ( jobCount > m_jobContext.m_jobQueue.capacity() ) - { - m_jobContext.m_jobQueue.reserve( jobCount ); - } - - m_jobContext.clearQueue(); - // prepare worker threads for incoming work - setWorkersActive( true ); - wakeWorkers(); - // submit all of the jobs - int iJob = 0; - for ( int i = iBegin; i < iEnd; i += grainSize ) - { - btAssert( iJob < jobCount ); - int iE = btMin( i + grainSize, iEnd ); - ParallelForJob& job = m_jobs[ iJob ]; - job.init( i, iE, body ); - m_jobContext.submitJob( &job ); - iJob++; - } - - // put the main thread to work on emptying the job queue and then wait for all workers to finish - waitJobs(); - m_antiNestingLock.unlock(); - } - else - { - BT_PROFILE( "parallelFor_mainThread" ); - // just run on main thread - body.forLoop( iBegin, iEnd ); - } - } -}; - - - -btITaskScheduler* createDefaultTaskScheduler() -{ - btTaskSchedulerDefault* ts = new btTaskSchedulerDefault(); - ts->init(); - return ts; -} - -#else // #if BT_THREADSAFE - -btITaskScheduler* createDefaultTaskScheduler() -{ - return NULL; -} - -#endif // #else // #if BT_THREADSAFE \ No newline at end of file diff --git a/examples/MultiThreading/btTaskScheduler.h b/examples/MultiThreading/btTaskScheduler.h deleted file mode 100644 index a83b635eb..000000000 --- a/examples/MultiThreading/btTaskScheduler.h +++ /dev/null @@ -1,26 +0,0 @@ -/* -Copyright (c) 2003-2014 Erwin Coumans http://bullet.googlecode.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#ifndef BT_TASK_SCHEDULER_H -#define BT_TASK_SCHEDULER_H - - -class btITaskScheduler; - -btITaskScheduler* createDefaultTaskScheduler(); - - -#endif // BT_TASK_SCHEDULER_H diff --git a/src/BulletDynamics/CMakeLists.txt b/src/BulletDynamics/CMakeLists.txt index f8a6f34ba..2eb03c39a 100644 --- a/src/BulletDynamics/CMakeLists.txt +++ b/src/BulletDynamics/CMakeLists.txt @@ -15,6 +15,8 @@ SET(BulletDynamics_SRCS ConstraintSolver/btHingeConstraint.cpp ConstraintSolver/btPoint2PointConstraint.cpp ConstraintSolver/btSequentialImpulseConstraintSolver.cpp + ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp + ConstraintSolver/btBatchedConstraints.cpp ConstraintSolver/btNNCGConstraintSolver.cpp ConstraintSolver/btSliderConstraint.cpp ConstraintSolver/btSolve2LinearConstraint.cpp @@ -62,6 +64,7 @@ SET(ConstraintSolver_HDRS ConstraintSolver/btJacobianEntry.h ConstraintSolver/btPoint2PointConstraint.h ConstraintSolver/btSequentialImpulseConstraintSolver.h + ConstraintSolver/btSequentialImpulseConstraintSolverMt.h ConstraintSolver/btNNCGConstraintSolver.h ConstraintSolver/btSliderConstraint.h ConstraintSolver/btSolve2LinearConstraint.h diff --git a/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp b/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp new file mode 100644 index 000000000..bc840e889 --- /dev/null +++ b/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp @@ -0,0 +1,1129 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btBatchedConstraints.h" + +#include "LinearMath/btIDebugDraw.h" +#include "LinearMath/btMinMax.h" +#include "LinearMath/btStackAlloc.h" +#include "LinearMath/btQuickprof.h" + +#include //for memset + +const int kNoMerge = -1; + +bool btBatchedConstraints::s_debugDrawBatches = false; + + +struct btBatchedConstraintInfo +{ + int constraintIndex; + int numConstraintRows; + int bodyIds[2]; +}; + + +struct btBatchInfo +{ + int phaseId; + int numConstraints; + int mergeIndex; + + btBatchInfo(int _phaseId = -1) : numConstraints(0), mergeIndex(-1), phaseId(_phaseId) {} +}; + + +bool btBatchedConstraints::validate(btConstraintArray* constraints, const btAlignedObjectArray& bodies) const +{ + // + // validate: for debugging only. Verify coloring of bodies, that no body is touched by more than one batch in any given phase + // + int errors = 0; + const int kUnassignedBatch = -1; + + btAlignedObjectArray bodyBatchId; + for (int iPhase = 0; iPhase < m_phases.size(); ++iPhase) + { + bodyBatchId.resizeNoInitialize(0); + bodyBatchId.resize( bodies.size(), kUnassignedBatch ); + const Range& phase = m_phases[iPhase]; + for (int iBatch = phase.begin; iBatch < phase.end; ++iBatch) + { + const Range& batch = m_batches[iBatch]; + for (int iiCons = batch.begin; iiCons < batch.end; ++iiCons) + { + int iCons = m_constraintIndices[iiCons]; + const btSolverConstraint& cons = constraints->at(iCons); + const btSolverBody& bodyA = bodies[cons.m_solverBodyIdA]; + const btSolverBody& bodyB = bodies[cons.m_solverBodyIdB]; + if (! bodyA.internalGetInvMass().isZero()) + { + int thisBodyBatchId = bodyBatchId[cons.m_solverBodyIdA]; + if (thisBodyBatchId == kUnassignedBatch) + { + bodyBatchId[cons.m_solverBodyIdA] = iBatch; + } + else if (thisBodyBatchId != iBatch) + { + btAssert( !"dynamic body is used in 2 different batches in the same phase" ); + errors++; + } + } + if (! bodyB.internalGetInvMass().isZero()) + { + int thisBodyBatchId = bodyBatchId[cons.m_solverBodyIdB]; + if (thisBodyBatchId == kUnassignedBatch) + { + bodyBatchId[cons.m_solverBodyIdB] = iBatch; + } + else if (thisBodyBatchId != iBatch) + { + btAssert( !"dynamic body is used in 2 different batches in the same phase" ); + errors++; + } + } + } + } + } + return errors == 0; +} + + +static void debugDrawSingleBatch( const btBatchedConstraints* bc, + btConstraintArray* constraints, + const btAlignedObjectArray& bodies, + int iBatch, + const btVector3& color, + const btVector3& offset + ) +{ + if (bc && bc->m_debugDrawer && iBatch < bc->m_batches.size()) + { + const btBatchedConstraints::Range& b = bc->m_batches[iBatch]; + for (int iiCon = b.begin; iiCon < b.end; ++iiCon) + { + int iCon = bc->m_constraintIndices[iiCon]; + const btSolverConstraint& con = constraints->at(iCon); + int iBody0 = con.m_solverBodyIdA; + int iBody1 = con.m_solverBodyIdB; + btVector3 pos0 = bodies[iBody0].getWorldTransform().getOrigin() + offset; + btVector3 pos1 = bodies[iBody1].getWorldTransform().getOrigin() + offset; + bc->m_debugDrawer->drawLine(pos0, pos1, color); + } + } +} + + +static void debugDrawPhase( const btBatchedConstraints* bc, + btConstraintArray* constraints, + const btAlignedObjectArray& bodies, + int iPhase, + const btVector3& color0, + const btVector3& color1, + const btVector3& offset + ) +{ + BT_PROFILE( "debugDrawPhase" ); + if ( bc && bc->m_debugDrawer && iPhase < bc->m_phases.size() ) + { + const btBatchedConstraints::Range& phase = bc->m_phases[iPhase]; + for (int iBatch = phase.begin; iBatch < phase.end; ++iBatch) + { + float tt = float(iBatch - phase.begin) / float(btMax(1, phase.end - phase.begin - 1)); + btVector3 col = lerp(color0, color1, tt); + debugDrawSingleBatch(bc, constraints, bodies, iBatch, col, offset); + } + } +} + + +static void debugDrawAllBatches( const btBatchedConstraints* bc, + btConstraintArray* constraints, + const btAlignedObjectArray& bodies + ) +{ + BT_PROFILE( "debugDrawAllBatches" ); + if ( bc && bc->m_debugDrawer && bc->m_phases.size() > 0 ) + { + btVector3 bboxMin(BT_LARGE_FLOAT, BT_LARGE_FLOAT, BT_LARGE_FLOAT); + btVector3 bboxMax = -bboxMin; + for (int iBody = 0; iBody < bodies.size(); ++iBody) + { + const btVector3& pos = bodies[iBody].getWorldTransform().getOrigin(); + bboxMin.setMin(pos); + bboxMax.setMax(pos); + } + btVector3 bboxExtent = bboxMax - bboxMin; + btVector3 offsetBase = btVector3( 0, bboxExtent.y()*1.1f, 0 ); + btVector3 offsetStep = btVector3( 0, 0, bboxExtent.z()*1.1f ); + int numPhases = bc->m_phases.size(); + for (int iPhase = 0; iPhase < numPhases; ++iPhase) + { + float b = float(iPhase)/float(numPhases-1); + btVector3 color0 = btVector3(1,0,b); + btVector3 color1 = btVector3(0,1,b); + btVector3 offset = offsetBase + offsetStep*(float(iPhase) - float(numPhases-1)*0.5); + debugDrawPhase(bc, constraints, bodies, iPhase, color0, color1, offset); + } + } +} + + +static void initBatchedBodyDynamicFlags(btAlignedObjectArray* outBodyDynamicFlags, const btAlignedObjectArray& bodies) +{ + BT_PROFILE("initBatchedBodyDynamicFlags"); + btAlignedObjectArray& bodyDynamicFlags = *outBodyDynamicFlags; + bodyDynamicFlags.resizeNoInitialize(bodies.size()); + for (int i = 0; i < bodies.size(); ++i) + { + const btSolverBody& body = bodies[ i ]; + bodyDynamicFlags[i] = ( body.internalGetInvMass().x() > btScalar( 0 ) ); + } +} + + +static int runLengthEncodeConstraintInfo(btBatchedConstraintInfo* outConInfos, int numConstraints) +{ + BT_PROFILE("runLengthEncodeConstraintInfo"); + // detect and run-length encode constraint rows that repeat the same bodies + int iDest = 0; + int iSrc = 0; + while (iSrc < numConstraints) + { + const btBatchedConstraintInfo& srcConInfo = outConInfos[iSrc]; + btBatchedConstraintInfo& conInfo = outConInfos[iDest]; + conInfo.constraintIndex = iSrc; + conInfo.bodyIds[0] = srcConInfo.bodyIds[0]; + conInfo.bodyIds[1] = srcConInfo.bodyIds[1]; + while (iSrc < numConstraints && outConInfos[iSrc].bodyIds[0] == srcConInfo.bodyIds[0] && outConInfos[iSrc].bodyIds[1] == srcConInfo.bodyIds[1]) + { + ++iSrc; + } + conInfo.numConstraintRows = iSrc - conInfo.constraintIndex; + btAssert( conInfo.numConstraintRows <= 6 ); + ++iDest; + } + return iDest; +} + + +struct ReadSolverConstraintsLoop : public btIParallelForBody +{ + btBatchedConstraintInfo* m_outConInfos; + btConstraintArray* m_constraints; + + ReadSolverConstraintsLoop( btBatchedConstraintInfo* outConInfos, btConstraintArray* constraints ) + { + m_outConInfos = outConInfos; + m_constraints = constraints; + } + void forLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + for (int i = iBegin; i < iEnd; ++i) + { + btBatchedConstraintInfo& conInfo = m_outConInfos[i]; + const btSolverConstraint& con = m_constraints->at( i ); + conInfo.bodyIds[0] = con.m_solverBodyIdA; + conInfo.bodyIds[1] = con.m_solverBodyIdB; + conInfo.constraintIndex = i; + conInfo.numConstraintRows = 1; + } + } +}; + + +static int initBatchedConstraintInfo(btBatchedConstraintInfo* outConInfos, btConstraintArray* constraints) +{ + BT_PROFILE("initBatchedConstraintInfo"); + int numConstraints = constraints->size(); + bool inParallel = true; + if (inParallel) + { + ReadSolverConstraintsLoop loop(outConInfos, constraints); + int grainSize = 1200; + btParallelFor(0, numConstraints, grainSize, loop); + } + else + { + for (int i = 0; i < numConstraints; ++i) + { + btBatchedConstraintInfo& conInfo = outConInfos[i]; + const btSolverConstraint& con = constraints->at( i ); + conInfo.bodyIds[0] = con.m_solverBodyIdA; + conInfo.bodyIds[1] = con.m_solverBodyIdB; + conInfo.constraintIndex = i; + conInfo.numConstraintRows = 1; + } + } + bool useRunLengthEncoding = true; + if (useRunLengthEncoding) + { + numConstraints = runLengthEncodeConstraintInfo(outConInfos, numConstraints); + } + return numConstraints; +} + + +static void expandConstraintRowsInPlace(int* constraintBatchIds, const btBatchedConstraintInfo* conInfos, int numConstraints, int numConstraintRows) +{ + BT_PROFILE("expandConstraintRowsInPlace"); + if (numConstraintRows > numConstraints) + { + // we walk the array in reverse to avoid overwriteing + for (int iCon = numConstraints - 1; iCon >= 0; --iCon) + { + const btBatchedConstraintInfo& conInfo = conInfos[iCon]; + int iBatch = constraintBatchIds[iCon]; + for (int i = conInfo.numConstraintRows - 1; i >= 0; --i) + { + int iDest = conInfo.constraintIndex + i; + btAssert(iDest >= iCon); + btAssert(iDest >= 0 && iDest < numConstraintRows); + constraintBatchIds[iDest] = iBatch; + } + } + } +} + + +static void expandConstraintRows(int* destConstraintBatchIds, const int* srcConstraintBatchIds, const btBatchedConstraintInfo* conInfos, int numConstraints, int numConstraintRows) +{ + BT_PROFILE("expandConstraintRows"); + for ( int iCon = 0; iCon < numConstraints; ++iCon ) + { + const btBatchedConstraintInfo& conInfo = conInfos[ iCon ]; + int iBatch = srcConstraintBatchIds[ iCon ]; + for ( int i = 0; i < conInfo.numConstraintRows; ++i ) + { + int iDest = conInfo.constraintIndex + i; + btAssert( iDest >= iCon ); + btAssert( iDest >= 0 && iDest < numConstraintRows ); + destConstraintBatchIds[ iDest ] = iBatch; + } + } +} + + +struct ExpandConstraintRowsLoop : public btIParallelForBody +{ + int* m_destConstraintBatchIds; + const int* m_srcConstraintBatchIds; + const btBatchedConstraintInfo* m_conInfos; + int m_numConstraintRows; + + ExpandConstraintRowsLoop( int* destConstraintBatchIds, const int* srcConstraintBatchIds, const btBatchedConstraintInfo* conInfos, int numConstraintRows) + { + m_destConstraintBatchIds = destConstraintBatchIds; + m_srcConstraintBatchIds = srcConstraintBatchIds; + m_conInfos = conInfos; + m_numConstraintRows = numConstraintRows; + } + void forLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + expandConstraintRows(m_destConstraintBatchIds, m_srcConstraintBatchIds + iBegin, m_conInfos + iBegin, iEnd - iBegin, m_numConstraintRows); + } +}; + + +static void expandConstraintRowsMt(int* destConstraintBatchIds, const int* srcConstraintBatchIds, const btBatchedConstraintInfo* conInfos, int numConstraints, int numConstraintRows) +{ + BT_PROFILE("expandConstraintRowsMt"); + ExpandConstraintRowsLoop loop(destConstraintBatchIds, srcConstraintBatchIds, conInfos, numConstraintRows); + int grainSize = 600; + btParallelFor(0, numConstraints, grainSize, loop); +} + + +static void initBatchedConstraintInfoArray(btAlignedObjectArray* outConInfos, btConstraintArray* constraints) +{ + BT_PROFILE("initBatchedConstraintInfoArray"); + btAlignedObjectArray& conInfos = *outConInfos; + int numConstraints = constraints->size(); + conInfos.resizeNoInitialize(numConstraints); + + int newSize = initBatchedConstraintInfo(&outConInfos->at(0), constraints); + conInfos.resizeNoInitialize(newSize); +} + + +static void mergeSmallBatches(btBatchInfo* batches, int iBeginBatch, int iEndBatch, int minBatchSize, int maxBatchSize) +{ + BT_PROFILE("mergeSmallBatches"); + for ( int iBatch = iEndBatch - 1; iBatch >= iBeginBatch; --iBatch ) + { + btBatchInfo& batch = batches[ iBatch ]; + if ( batch.mergeIndex == kNoMerge && batch.numConstraints > 0 && batch.numConstraints < minBatchSize ) + { + for ( int iDestBatch = iBatch - 1; iDestBatch >= iBeginBatch; --iDestBatch ) + { + btBatchInfo& destBatch = batches[ iDestBatch ]; + if ( destBatch.mergeIndex == kNoMerge && ( destBatch.numConstraints + batch.numConstraints ) < maxBatchSize ) + { + destBatch.numConstraints += batch.numConstraints; + batch.numConstraints = 0; + batch.mergeIndex = iDestBatch; + break; + } + } + } + } + // flatten mergeIndexes + // e.g. in case where A was merged into B and then B was merged into C, we need A to point to C instead of B + // Note: loop goes forward through batches because batches always merge from higher indexes to lower, + // so by going from low to high it reduces the amount of trail-following + for ( int iBatch = iBeginBatch; iBatch < iEndBatch; ++iBatch ) + { + btBatchInfo& batch = batches[ iBatch ]; + if ( batch.mergeIndex != kNoMerge ) + { + int iMergeDest = batches[ batch.mergeIndex ].mergeIndex; + // follow trail of merges to the end + while ( iMergeDest != kNoMerge ) + { + int iNext = batches[ iMergeDest ].mergeIndex; + if ( iNext == kNoMerge ) + { + batch.mergeIndex = iMergeDest; + break; + } + iMergeDest = iNext; + } + } + } +} + + +static void updateConstraintBatchIdsForMerges(int* constraintBatchIds, int numConstraints, const btBatchInfo* batches, int numBatches) +{ + BT_PROFILE("updateConstraintBatchIdsForMerges"); + // update batchIds to account for merges + for (int i = 0; i < numConstraints; ++i) + { + int iBatch = constraintBatchIds[i]; + btAssert(iBatch < numBatches); + // if this constraint references a batch that was merged into another batch + if (batches[iBatch].mergeIndex != kNoMerge) + { + // update batchId + constraintBatchIds[i] = batches[iBatch].mergeIndex; + } + } +} + + +struct UpdateConstraintBatchIdsForMergesLoop : public btIParallelForBody +{ + int* m_constraintBatchIds; + const btBatchInfo* m_batches; + int m_numBatches; + + UpdateConstraintBatchIdsForMergesLoop( int* constraintBatchIds, const btBatchInfo* batches, int numBatches ) + { + m_constraintBatchIds = constraintBatchIds; + m_batches = batches; + m_numBatches = numBatches; + } + void forLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + BT_PROFILE( "UpdateConstraintBatchIdsForMergesLoop" ); + updateConstraintBatchIdsForMerges( m_constraintBatchIds + iBegin, iEnd - iBegin, m_batches, m_numBatches ); + } +}; + + +static void updateConstraintBatchIdsForMergesMt(int* constraintBatchIds, int numConstraints, const btBatchInfo* batches, int numBatches) +{ + BT_PROFILE( "updateConstraintBatchIdsForMergesMt" ); + UpdateConstraintBatchIdsForMergesLoop loop(constraintBatchIds, batches, numBatches); + int grainSize = 800; + btParallelFor(0, numConstraints, grainSize, loop); +} + + +inline bool BatchCompare(const btBatchedConstraints::Range& a, const btBatchedConstraints::Range& b) +{ + int lenA = a.end - a.begin; + int lenB = b.end - b.begin; + return lenA > lenB; +} + + +static void writeOutConstraintIndicesForRangeOfBatches(btBatchedConstraints* bc, + const int* constraintBatchIds, + int numConstraints, + int* constraintIdPerBatch, + int batchBegin, + int batchEnd + ) +{ + BT_PROFILE("writeOutConstraintIndicesForRangeOfBatches"); + for ( int iCon = 0; iCon < numConstraints; ++iCon ) + { + int iBatch = constraintBatchIds[ iCon ]; + if (iBatch >= batchBegin && iBatch < batchEnd) + { + int iDestCon = constraintIdPerBatch[ iBatch ]; + constraintIdPerBatch[ iBatch ] = iDestCon + 1; + bc->m_constraintIndices[ iDestCon ] = iCon; + } + } +} + + +struct WriteOutConstraintIndicesLoop : public btIParallelForBody +{ + btBatchedConstraints* m_batchedConstraints; + const int* m_constraintBatchIds; + int m_numConstraints; + int* m_constraintIdPerBatch; + int m_maxNumBatchesPerPhase; + + WriteOutConstraintIndicesLoop( btBatchedConstraints* bc, const int* constraintBatchIds, int numConstraints, int* constraintIdPerBatch, int maxNumBatchesPerPhase ) + { + m_batchedConstraints = bc; + m_constraintBatchIds = constraintBatchIds; + m_numConstraints = numConstraints; + m_constraintIdPerBatch = constraintIdPerBatch; + m_maxNumBatchesPerPhase = maxNumBatchesPerPhase; + } + void forLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + BT_PROFILE( "WriteOutConstraintIndicesLoop" ); + int batchBegin = iBegin * m_maxNumBatchesPerPhase; + int batchEnd = iEnd * m_maxNumBatchesPerPhase; + writeOutConstraintIndicesForRangeOfBatches(m_batchedConstraints, + m_constraintBatchIds, + m_numConstraints, + m_constraintIdPerBatch, + batchBegin, + batchEnd + ); + } +}; + + +static void writeOutConstraintIndicesMt(btBatchedConstraints* bc, + const int* constraintBatchIds, + int numConstraints, + int* constraintIdPerBatch, + int maxNumBatchesPerPhase, + int numPhases + ) +{ + BT_PROFILE("writeOutConstraintIndicesMt"); + bool inParallel = true; + if (inParallel) + { + WriteOutConstraintIndicesLoop loop( bc, constraintBatchIds, numConstraints, constraintIdPerBatch, maxNumBatchesPerPhase ); + btParallelFor( 0, numPhases, 1, loop ); + } + else + { + for ( int iCon = 0; iCon < numConstraints; ++iCon ) + { + int iBatch = constraintBatchIds[ iCon ]; + int iDestCon = constraintIdPerBatch[ iBatch ]; + constraintIdPerBatch[ iBatch ] = iDestCon + 1; + bc->m_constraintIndices[ iDestCon ] = iCon; + } + } +} + + +static void writeGrainSizes(btBatchedConstraints* bc) +{ + typedef btBatchedConstraints::Range Range; + int numPhases = bc->m_phases.size(); + bc->m_phaseGrainSize.resizeNoInitialize(numPhases); + int numThreads = btGetTaskScheduler()->getNumThreads(); + for (int iPhase = 0; iPhase < numPhases; ++iPhase) + { + const Range& phase = bc->m_phases[ iPhase ]; + int numBatches = phase.end - phase.begin; + float grainSize = floor((0.25f*numBatches / float(numThreads)) + 0.0f); + bc->m_phaseGrainSize[ iPhase ] = btMax(1, int(grainSize)); + } +} + + +static void writeOutBatches(btBatchedConstraints* bc, + const int* constraintBatchIds, + int numConstraints, + const btBatchInfo* batches, + int* batchWork, + int maxNumBatchesPerPhase, + int numPhases +) +{ + BT_PROFILE("writeOutBatches"); + typedef btBatchedConstraints::Range Range; + bc->m_constraintIndices.reserve( numConstraints ); + bc->m_batches.resizeNoInitialize( 0 ); + bc->m_phases.resizeNoInitialize( 0 ); + + //int maxNumBatches = numPhases * maxNumBatchesPerPhase; + { + int* constraintIdPerBatch = batchWork; // for each batch, keep an index into the next available slot in the m_constraintIndices array + int iConstraint = 0; + for (int iPhase = 0; iPhase < numPhases; ++iPhase) + { + int curPhaseBegin = bc->m_batches.size(); + int iBegin = iPhase * maxNumBatchesPerPhase; + int iEnd = iBegin + maxNumBatchesPerPhase; + for ( int i = iBegin; i < iEnd; ++i ) + { + const btBatchInfo& batch = batches[ i ]; + int curBatchBegin = iConstraint; + constraintIdPerBatch[ i ] = curBatchBegin; // record the start of each batch in m_constraintIndices array + int numConstraints = batch.numConstraints; + iConstraint += numConstraints; + if ( numConstraints > 0 ) + { + bc->m_batches.push_back( Range( curBatchBegin, iConstraint ) ); + } + } + // if any batches were emitted this phase, + if ( bc->m_batches.size() > curPhaseBegin ) + { + // output phase + bc->m_phases.push_back( Range( curPhaseBegin, bc->m_batches.size() ) ); + } + } + + btAssert(iConstraint == numConstraints); + bc->m_constraintIndices.resizeNoInitialize( numConstraints ); + writeOutConstraintIndicesMt( bc, constraintBatchIds, numConstraints, constraintIdPerBatch, maxNumBatchesPerPhase, numPhases ); + } + // for each phase + for (int iPhase = 0; iPhase < bc->m_phases.size(); ++iPhase) + { + // sort the batches from largest to smallest (can be helpful to some task schedulers) + const Range& curBatches = bc->m_phases[iPhase]; + bc->m_batches.quickSortInternal(BatchCompare, curBatches.begin, curBatches.end-1); + } + bc->m_phaseOrder.resize(bc->m_phases.size()); + for (int i = 0; i < bc->m_phases.size(); ++i) + { + bc->m_phaseOrder[i] = i; + } + writeGrainSizes(bc); +} + + +// +// PreallocatedMemoryHelper -- helper object for allocating a number of chunks of memory in a single contiguous block. +// It is generally more efficient to do a single larger allocation than many smaller allocations. +// +// Example Usage: +// +// btVector3* bodyPositions = NULL; +// btBatchedConstraintInfo* conInfos = NULL; +// { +// PreallocatedMemoryHelper<8> memHelper; +// memHelper.addChunk( (void**) &bodyPositions, sizeof( btVector3 ) * bodies.size() ); +// memHelper.addChunk( (void**) &conInfos, sizeof( btBatchedConstraintInfo ) * numConstraints ); +// void* memPtr = malloc( memHelper.getSizeToAllocate() ); // allocate the memory +// memHelper.setChunkPointers( memPtr ); // update pointers to chunks +// } +template +class PreallocatedMemoryHelper +{ + struct Chunk + { + void** ptr; + size_t size; + }; + Chunk m_chunks[N]; + int m_numChunks; +public: + PreallocatedMemoryHelper() {m_numChunks=0;} + void addChunk( void** ptr, size_t sz ) + { + btAssert( m_numChunks < N ); + if ( m_numChunks < N ) + { + Chunk& chunk = m_chunks[ m_numChunks ]; + chunk.ptr = ptr; + chunk.size = sz; + m_numChunks++; + } + } + size_t getSizeToAllocate() const + { + size_t totalSize = 0; + for (int i = 0; i < m_numChunks; ++i) + { + totalSize += m_chunks[i].size; + } + return totalSize; + } + void setChunkPointers(void* mem) const + { + size_t totalSize = 0; + for (int i = 0; i < m_numChunks; ++i) + { + const Chunk& chunk = m_chunks[ i ]; + char* chunkPtr = static_cast(mem) + totalSize; + *chunk.ptr = chunkPtr; + totalSize += chunk.size; + } + } +}; + + + +static btVector3 findMaxDynamicConstraintExtent( + btVector3* bodyPositions, + bool* bodyDynamicFlags, + btBatchedConstraintInfo* conInfos, + int numConstraints, + int numBodies + ) +{ + BT_PROFILE("findMaxDynamicConstraintExtent"); + btVector3 consExtent = btVector3(1,1,1) * 0.001; + for (int iCon = 0; iCon < numConstraints; ++iCon) + { + const btBatchedConstraintInfo& con = conInfos[ iCon ]; + int iBody0 = con.bodyIds[0]; + int iBody1 = con.bodyIds[1]; + btAssert(iBody0 >= 0 && iBody0 < numBodies); + btAssert(iBody1 >= 0 && iBody1 < numBodies); + // is it a dynamic constraint? + if (bodyDynamicFlags[iBody0] && bodyDynamicFlags[iBody1]) + { + btVector3 delta = bodyPositions[iBody1] - bodyPositions[iBody0]; + consExtent.setMax(delta.absolute()); + } + } + return consExtent; +} + + +struct btIntVec3 +{ + int m_ints[ 3 ]; + + SIMD_FORCE_INLINE const int& operator[](int i) const {return m_ints[i];} + SIMD_FORCE_INLINE int& operator[](int i) {return m_ints[i];} +}; + + +struct AssignConstraintsToGridBatchesParams +{ + bool* bodyDynamicFlags; + btIntVec3* bodyGridCoords; + int numBodies; + btBatchedConstraintInfo* conInfos; + char* constraintPhaseIds; + int* constraintBatchIds; + btIntVec3 gridChunkDim; + int maxNumBatchesPerPhase; + int numPhases; + int phaseMask; + + AssignConstraintsToGridBatchesParams() + { + memset(this, 0, sizeof(*this)); + } +}; + + +static void assignConstraintsToGridBatches(const AssignConstraintsToGridBatchesParams& params, int iConBegin, int iConEnd) +{ + BT_PROFILE("assignConstraintsToGridBatches"); + // (can be done in parallel) + for ( int iCon = iConBegin; iCon < iConEnd; ++iCon ) + { + const btBatchedConstraintInfo& con = params.conInfos[ iCon ]; + int iBody0 = con.bodyIds[ 0 ]; + int iBody1 = con.bodyIds[ 1 ]; + int iPhase = iCon; //iBody0; // pseudorandom choice to distribute evenly amongst phases + iPhase &= params.phaseMask; + int gridCoord[ 3 ]; + // is it a dynamic constraint? + if ( params.bodyDynamicFlags[ iBody0 ] && params.bodyDynamicFlags[ iBody1 ] ) + { + const btIntVec3& body0Coords = params.bodyGridCoords[iBody0]; + const btIntVec3& body1Coords = params.bodyGridCoords[iBody1]; + // for each dimension x,y,z, + for (int i = 0; i < 3; ++i) + { + int coordMin = btMin(body0Coords.m_ints[i], body1Coords.m_ints[i]); + int coordMax = btMax(body0Coords.m_ints[i], body1Coords.m_ints[i]); + if (coordMin != coordMax) + { + btAssert( coordMax == coordMin + 1 ); + if ((coordMin&1) == 0) + { + iPhase &= ~(1 << i); // force bit off + } + else + { + iPhase |= (1 << i); // force bit on + iPhase &= params.phaseMask; + } + } + gridCoord[ i ] = coordMin; + } + } + else + { + if ( !params.bodyDynamicFlags[ iBody0 ] ) + { + iBody0 = con.bodyIds[ 1 ]; + } + btAssert(params.bodyDynamicFlags[ iBody0 ]); + const btIntVec3& body0Coords = params.bodyGridCoords[iBody0]; + // for each dimension x,y,z, + for ( int i = 0; i < 3; ++i ) + { + gridCoord[ i ] = body0Coords.m_ints[ i ]; + } + } + // calculate chunk coordinates + int chunkCoord[ 3 ]; + btIntVec3 gridChunkDim = params.gridChunkDim; + // for each dimension x,y,z, + for ( int i = 0; i < 3; ++i ) + { + int coordOffset = ( iPhase >> i ) & 1; + chunkCoord[ i ] = (gridCoord[ i ] - coordOffset)/2; + btClamp( chunkCoord[ i ], 0, gridChunkDim[ i ] - 1); + btAssert( chunkCoord[ i ] < gridChunkDim[ i ] ); + } + int iBatch = iPhase * params.maxNumBatchesPerPhase + chunkCoord[ 0 ] + chunkCoord[ 1 ] * gridChunkDim[ 0 ] + chunkCoord[ 2 ] * gridChunkDim[ 0 ] * gridChunkDim[ 1 ]; + btAssert(iBatch >= 0 && iBatch < params.maxNumBatchesPerPhase*params.numPhases); + params.constraintPhaseIds[ iCon ] = iPhase; + params.constraintBatchIds[ iCon ] = iBatch; + } +} + + +struct AssignConstraintsToGridBatchesLoop : public btIParallelForBody +{ + const AssignConstraintsToGridBatchesParams* m_params; + + AssignConstraintsToGridBatchesLoop( const AssignConstraintsToGridBatchesParams& params ) + { + m_params = ¶ms; + } + void forLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + assignConstraintsToGridBatches(*m_params, iBegin, iEnd); + } +}; + + +// +// setupSpatialGridBatchesMt -- generate batches using a uniform 3D grid +// +/* + +Bodies are treated as 3D points at their center of mass. We only consider dynamic bodies at this stage, +kinematic and static bodies are dealt with at a later stage. Also we only consider constraints that +are between 2 dynamic bodies ("dynamic" constraints) -- constraints that involve a static or kinematic body are handled later + +1. Compute a bounding box around all dynamic bodies +2. Compute the maximum extent of all dynamic constraints. Each dynamic constraint is treated as a line segment, and we need the size of + box that will fully enclose any single dynamic constraint + +3. Establish the cell size of our grid, the cell size in each dimension must be at least as large as the dynamic constraints max-extent, + so that no dynamic constraint can span more than 2 cells of our grid on any axis of the grid. The cell size should be adjusted + larger in order to keep the total number of cells from being excessively high + +Key idea: Given that each constraint spans 1 or 2 grid cells in each dimension, we can handle all dynamic constraints by processing + in chunks of 2x2x2 cells with 8 different 1-cell offsets ((0,0,0),(0,0,1),(0,1,0),(0,1,1),(1,0,0)...). + For each of the 8 offsets, we create a phase, and for each 2x2x2 chunk with dynamic constraints becomes a batch in that phase. + + Once all of the phases have been populated, if any of the phases end up with too few batches, they could possibly be merged with other phases. + + Finally, we handle all of the remaining (non-dynamic) constraints, these can be added to whichever phase is least populated to help + even things out + +*/ +// +static void setupSpatialGridBatchesMt( + btBatchedConstraints* batchedConstraints, + btAlignedObjectArray* scratchMemory, + btConstraintArray* constraints, + const btAlignedObjectArray& bodies, + int minBatchSize, + int maxBatchSize, + bool use2DGrid +) +{ + BT_PROFILE("setupSpatialGridBatchesMt"); + const int numPhases = 8; + int numConstraints = constraints->size(); + int numConstraintRows = constraints->size(); + + const int maxGridChunkCount = 128; + int allocNumBatchesPerPhase = maxGridChunkCount; + int minNumBatchesPerPhase = 16; + int allocNumBatches = allocNumBatchesPerPhase * numPhases; + + btVector3* bodyPositions = NULL; + bool* bodyDynamicFlags = NULL; + btIntVec3* bodyGridCoords = NULL; + btBatchInfo* batches = NULL; + int* batchWork = NULL; + btBatchedConstraintInfo* conInfos = NULL; + char* constraintPhaseIds = NULL; + int* constraintBatchIds = NULL; + int* constraintRowBatchIds = NULL; + { + PreallocatedMemoryHelper<10> memHelper; + memHelper.addChunk( (void**) &bodyPositions, sizeof( btVector3 ) * bodies.size() ); + memHelper.addChunk( (void**) &bodyDynamicFlags, sizeof( bool ) * bodies.size() ); + memHelper.addChunk( (void**) &bodyGridCoords, sizeof( btIntVec3 ) * bodies.size() ); + memHelper.addChunk( (void**) &batches, sizeof( btBatchInfo )* allocNumBatches ); + memHelper.addChunk( (void**) &batchWork, sizeof( int )* allocNumBatches ); + memHelper.addChunk( (void**) &conInfos, sizeof( btBatchedConstraintInfo ) * numConstraints ); + memHelper.addChunk( (void**) &constraintPhaseIds, sizeof( char ) * numConstraints ); + memHelper.addChunk( (void**) &constraintBatchIds, sizeof( int ) * numConstraints ); + memHelper.addChunk( (void**) &constraintRowBatchIds, sizeof( int ) * numConstraintRows ); + size_t scratchSize = memHelper.getSizeToAllocate(); + scratchMemory->resizeNoInitialize( scratchSize ); + char* memPtr = &scratchMemory->at(0); + memHelper.setChunkPointers( memPtr ); + } + + numConstraints = initBatchedConstraintInfo(conInfos, constraints); + + // compute bounding box around all dynamic bodies + // (could be done in parallel) + btVector3 bboxMin(BT_LARGE_FLOAT, BT_LARGE_FLOAT, BT_LARGE_FLOAT); + btVector3 bboxMax = -bboxMin; + //int dynamicBodyCount = 0; + for (int i = 0; i < bodies.size(); ++i) + { + const btSolverBody& body = bodies[i]; + btVector3 bodyPos = body.getWorldTransform().getOrigin(); + bool isDynamic = ( body.internalGetInvMass().x() > btScalar( 0 ) ); + bodyPositions[i] = bodyPos; + bodyDynamicFlags[i] = isDynamic; + if (isDynamic) + { + //dynamicBodyCount++; + bboxMin.setMin(bodyPos); + bboxMax.setMax(bodyPos); + } + } + + // find max extent of all dynamic constraints + // (could be done in parallel) + btVector3 consExtent = findMaxDynamicConstraintExtent(bodyPositions, bodyDynamicFlags, conInfos, numConstraints, bodies.size()); + + btVector3 gridExtent = bboxMax - bboxMin; + + btVector3 gridCellSize = consExtent; + int gridDim[3]; + gridDim[ 0 ] = int( 1.0 + gridExtent.x() / gridCellSize.x() ); + gridDim[ 1 ] = int( 1.0 + gridExtent.y() / gridCellSize.y() ); + gridDim[ 2 ] = int( 1.0 + gridExtent.z() / gridCellSize.z() ); + + // if we can collapse an axis, it will cut our number of phases in half which could be more efficient + int phaseMask = 7; + bool collapseAxis = use2DGrid; + if ( collapseAxis ) + { + // pick the smallest axis to collapse, leaving us with the greatest number of cells in our grid + int iAxisToCollapse = 0; + int axisDim = gridDim[iAxisToCollapse]; + //for each dimension + for ( int i = 0; i < 3; ++i ) + { + if (gridDim[i] < axisDim) + { + iAxisToCollapse = i; + axisDim = gridDim[i]; + } + } + // collapse it + gridCellSize[iAxisToCollapse] = gridExtent[iAxisToCollapse] * 2.0f; + phaseMask &= ~(1 << iAxisToCollapse); + } + + int numGridChunks = 0; + btIntVec3 gridChunkDim; // each chunk is 2x2x2 group of cells + while (true) + { + gridDim[0] = int( 1.0 + gridExtent.x() / gridCellSize.x() ); + gridDim[1] = int( 1.0 + gridExtent.y() / gridCellSize.y() ); + gridDim[2] = int( 1.0 + gridExtent.z() / gridCellSize.z() ); + gridChunkDim[ 0 ] = btMax( 1, ( gridDim[ 0 ] + 0 ) / 2 ); + gridChunkDim[ 1 ] = btMax( 1, ( gridDim[ 1 ] + 0 ) / 2 ); + gridChunkDim[ 2 ] = btMax( 1, ( gridDim[ 2 ] + 0 ) / 2 ); + numGridChunks = gridChunkDim[ 0 ] * gridChunkDim[ 1 ] * gridChunkDim[ 2 ]; + float nChunks = float(gridChunkDim[0]) * float(gridChunkDim[1]) * float(gridChunkDim[2]); // suceptible to integer overflow + if ( numGridChunks <= maxGridChunkCount && nChunks <= maxGridChunkCount ) + { + break; + } + gridCellSize *= 1.25; // should roughly cut numCells in half + } + btAssert(numGridChunks <= maxGridChunkCount ); + int maxNumBatchesPerPhase = numGridChunks; + + // for each dynamic body, compute grid coords + btVector3 invGridCellSize = btVector3(1,1,1)/gridCellSize; + // (can be done in parallel) + for (int iBody = 0; iBody < bodies.size(); ++iBody) + { + btIntVec3& coords = bodyGridCoords[iBody]; + if (bodyDynamicFlags[iBody]) + { + btVector3 v = ( bodyPositions[ iBody ] - bboxMin )*invGridCellSize; + coords.m_ints[0] = int(v.x()); + coords.m_ints[1] = int(v.y()); + coords.m_ints[2] = int(v.z()); + btAssert(coords.m_ints[0] >= 0 && coords.m_ints[0] < gridDim[0]); + btAssert(coords.m_ints[1] >= 0 && coords.m_ints[1] < gridDim[1]); + btAssert(coords.m_ints[2] >= 0 && coords.m_ints[2] < gridDim[2]); + } + else + { + coords.m_ints[0] = -1; + coords.m_ints[1] = -1; + coords.m_ints[2] = -1; + } + } + + for (int iPhase = 0; iPhase < numPhases; ++iPhase) + { + int batchBegin = iPhase * maxNumBatchesPerPhase; + int batchEnd = batchBegin + maxNumBatchesPerPhase; + for ( int iBatch = batchBegin; iBatch < batchEnd; ++iBatch ) + { + btBatchInfo& batch = batches[ iBatch ]; + batch = btBatchInfo( iPhase ); + } + } + + { + AssignConstraintsToGridBatchesParams params; + params.bodyDynamicFlags = bodyDynamicFlags; + params.bodyGridCoords = bodyGridCoords; + params.numBodies = bodies.size(); + params.conInfos = conInfos; + params.constraintPhaseIds = constraintPhaseIds; + params.constraintBatchIds = constraintBatchIds; + params.gridChunkDim = gridChunkDim; + params.maxNumBatchesPerPhase = maxNumBatchesPerPhase; + params.numPhases = numPhases; + params.phaseMask = phaseMask; + bool inParallel = true; + if (inParallel) + { + AssignConstraintsToGridBatchesLoop loop(params); + int grainSize = 500; + btParallelFor(0, numConstraints, grainSize, loop); + } + else + { + assignConstraintsToGridBatches( params, 0, numConstraints ); + } + } + for ( int iCon = 0; iCon < numConstraints; ++iCon ) + { + const btBatchedConstraintInfo& con = conInfos[ iCon ]; + int iBatch = constraintBatchIds[ iCon ]; + btBatchInfo& batch = batches[iBatch]; + batch.numConstraints += con.numConstraintRows; + } + + for (int iPhase = 0; iPhase < numPhases; ++iPhase) + { + // if phase is legit, + if (iPhase == (iPhase&phaseMask)) + { + int iBeginBatch = iPhase * maxNumBatchesPerPhase; + int iEndBatch = iBeginBatch + maxNumBatchesPerPhase; + mergeSmallBatches( batches, iBeginBatch, iEndBatch, minBatchSize, maxBatchSize ); + } + } + // all constraints have been assigned a batchId + updateConstraintBatchIdsForMergesMt(constraintBatchIds, numConstraints, batches, maxNumBatchesPerPhase*numPhases); + + if (numConstraintRows > numConstraints) + { + expandConstraintRowsMt(&constraintRowBatchIds[0], &constraintBatchIds[0], &conInfos[0], numConstraints, numConstraintRows); + } + else + { + constraintRowBatchIds = constraintBatchIds; + } + + writeOutBatches(batchedConstraints, constraintRowBatchIds, numConstraintRows, batches, batchWork, maxNumBatchesPerPhase, numPhases); + btAssert(batchedConstraints->validate(constraints, bodies)); +} + + +static void setupSingleBatch( + btBatchedConstraints* bc, + int numConstraints +) +{ + BT_PROFILE("setupSingleBatch"); + typedef btBatchedConstraints::Range Range; + + bc->m_constraintIndices.resize( numConstraints ); + for ( int i = 0; i < numConstraints; ++i ) + { + bc->m_constraintIndices[ i ] = i; + } + + bc->m_batches.resizeNoInitialize( 0 ); + bc->m_phases.resizeNoInitialize( 0 ); + bc->m_phaseOrder.resizeNoInitialize( 0 ); + bc->m_phaseGrainSize.resizeNoInitialize( 0 ); + + if (numConstraints > 0) + { + bc->m_batches.push_back( Range( 0, numConstraints ) ); + bc->m_phases.push_back( Range( 0, 1 ) ); + bc->m_phaseOrder.push_back(0); + bc->m_phaseGrainSize.push_back(1); + } +} + + +void btBatchedConstraints::setup( + btConstraintArray* constraints, + const btAlignedObjectArray& bodies, + BatchingMethod batchingMethod, + int minBatchSize, + int maxBatchSize, + btAlignedObjectArray* scratchMemory + ) +{ + if (constraints->size() >= minBatchSize*4) + { + bool use2DGrid = batchingMethod == BatchingMethod::BATCHING_METHOD_SPATIAL_GRID_2D; + setupSpatialGridBatchesMt( this, scratchMemory, constraints, bodies, minBatchSize, maxBatchSize, use2DGrid ); + if (s_debugDrawBatches) + { + debugDrawAllBatches( this, constraints, bodies ); + } + } + else + { + setupSingleBatch( this, constraints->size() ); + } +} + + diff --git a/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.h b/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.h new file mode 100644 index 000000000..0fd8f31dd --- /dev/null +++ b/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.h @@ -0,0 +1,66 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_BATCHED_CONSTRAINTS_H +#define BT_BATCHED_CONSTRAINTS_H + +#include "LinearMath/btThreads.h" +#include "LinearMath/btAlignedObjectArray.h" +#include "BulletDynamics/ConstraintSolver/btSolverBody.h" +#include "BulletDynamics/ConstraintSolver/btSolverConstraint.h" + + +class btIDebugDraw; + +struct btBatchedConstraints +{ + enum BatchingMethod + { + BATCHING_METHOD_SPATIAL_GRID_2D, + BATCHING_METHOD_SPATIAL_GRID_3D, + BATCHING_METHOD_COUNT + }; + struct Range + { + int begin; + int end; + + Range() : begin( 0 ), end( 0 ) {} + Range( int _beg, int _end ) : begin( _beg ), end( _end ) {} + }; + + btAlignedObjectArray m_constraintIndices; + btAlignedObjectArray m_batches; // each batch is a range of indices in the m_constraintIndices array + btAlignedObjectArray m_phases; // each phase is range of indices in the m_batches array + btAlignedObjectArray m_phaseGrainSize; // max grain size for each phase + btAlignedObjectArray m_phaseOrder; // phases can be done in any order, so we can randomize the order here + btIDebugDraw* m_debugDrawer; + + static bool s_debugDrawBatches; + + btBatchedConstraints() {m_debugDrawer=NULL;} + void setup( btConstraintArray* constraints, + const btAlignedObjectArray& bodies, + BatchingMethod batchingMethod, + int minBatchSize, + int maxBatchSize, + btAlignedObjectArray* scratchMemory + ); + bool validate( btConstraintArray* constraints, const btAlignedObjectArray& bodies ) const; +}; + + +#endif // BT_BATCHED_CONSTRAINTS_H + diff --git a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp index 1b2f211a1..c2a23dfb2 100644 --- a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp +++ b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp @@ -1258,6 +1258,256 @@ void btSequentialImpulseConstraintSolver::convertContacts(btPersistentManifold** } } + +void btSequentialImpulseConstraintSolver::convertJoint(btSolverConstraint* currentConstraintRow, + btTypedConstraint* constraint, + const btTypedConstraint::btConstraintInfo1& info1, + int solverBodyIdA, + int solverBodyIdB, + const btContactSolverInfo& infoGlobal + ) +{ + const btRigidBody& rbA = constraint->getRigidBodyA(); + const btRigidBody& rbB = constraint->getRigidBodyB(); + + const btSolverBody* bodyAPtr = &m_tmpSolverBodyPool[solverBodyIdA]; + const btSolverBody* bodyBPtr = &m_tmpSolverBodyPool[solverBodyIdB]; + + int overrideNumSolverIterations = constraint->getOverrideNumSolverIterations() > 0 ? constraint->getOverrideNumSolverIterations() : infoGlobal.m_numIterations; + if (overrideNumSolverIterations>m_maxOverrideNumSolverIterations) + m_maxOverrideNumSolverIterations = overrideNumSolverIterations; + + for (int j=0;jgetDeltaLinearVelocity().isZero()); + btAssert(bodyAPtr->getDeltaAngularVelocity().isZero()); + btAssert(bodyAPtr->getPushVelocity().isZero()); + btAssert(bodyAPtr->getTurnVelocity().isZero()); + btAssert(bodyBPtr->getDeltaLinearVelocity().isZero()); + btAssert(bodyBPtr->getDeltaAngularVelocity().isZero()); + btAssert(bodyBPtr->getPushVelocity().isZero()); + btAssert(bodyBPtr->getTurnVelocity().isZero()); + //bodyAPtr->internalGetDeltaLinearVelocity().setValue(0.f,0.f,0.f); + //bodyAPtr->internalGetDeltaAngularVelocity().setValue(0.f,0.f,0.f); + //bodyAPtr->internalGetPushVelocity().setValue(0.f,0.f,0.f); + //bodyAPtr->internalGetTurnVelocity().setValue(0.f,0.f,0.f); + //bodyBPtr->internalGetDeltaLinearVelocity().setValue(0.f,0.f,0.f); + //bodyBPtr->internalGetDeltaAngularVelocity().setValue(0.f,0.f,0.f); + //bodyBPtr->internalGetPushVelocity().setValue(0.f,0.f,0.f); + //bodyBPtr->internalGetTurnVelocity().setValue(0.f,0.f,0.f); + + + btTypedConstraint::btConstraintInfo2 info2; + info2.fps = 1.f/infoGlobal.m_timeStep; + info2.erp = infoGlobal.m_erp; + info2.m_J1linearAxis = currentConstraintRow->m_contactNormal1; + info2.m_J1angularAxis = currentConstraintRow->m_relpos1CrossNormal; + info2.m_J2linearAxis = currentConstraintRow->m_contactNormal2; + info2.m_J2angularAxis = currentConstraintRow->m_relpos2CrossNormal; + info2.rowskip = sizeof(btSolverConstraint)/sizeof(btScalar);//check this + ///the size of btSolverConstraint needs be a multiple of btScalar + btAssert(info2.rowskip*sizeof(btScalar)== sizeof(btSolverConstraint)); + info2.m_constraintError = ¤tConstraintRow->m_rhs; + currentConstraintRow->m_cfm = infoGlobal.m_globalCfm; + info2.m_damping = infoGlobal.m_damping; + info2.cfm = ¤tConstraintRow->m_cfm; + info2.m_lowerLimit = ¤tConstraintRow->m_lowerLimit; + info2.m_upperLimit = ¤tConstraintRow->m_upperLimit; + info2.m_numIterations = infoGlobal.m_numIterations; + constraint->getInfo2(&info2); + + ///finalize the constraint setup + for (int j=0;j=constraint->getBreakingImpulseThreshold()) + { + solverConstraint.m_upperLimit = constraint->getBreakingImpulseThreshold(); + } + + if (solverConstraint.m_lowerLimit<=-constraint->getBreakingImpulseThreshold()) + { + solverConstraint.m_lowerLimit = -constraint->getBreakingImpulseThreshold(); + } + + solverConstraint.m_originalContactPoint = constraint; + + { + const btVector3& ftorqueAxis1 = solverConstraint.m_relpos1CrossNormal; + solverConstraint.m_angularComponentA = constraint->getRigidBodyA().getInvInertiaTensorWorld()*ftorqueAxis1*constraint->getRigidBodyA().getAngularFactor(); + } + { + const btVector3& ftorqueAxis2 = solverConstraint.m_relpos2CrossNormal; + solverConstraint.m_angularComponentB = constraint->getRigidBodyB().getInvInertiaTensorWorld()*ftorqueAxis2*constraint->getRigidBodyB().getAngularFactor(); + } + + { + btVector3 iMJlA = solverConstraint.m_contactNormal1*rbA.getInvMass(); + btVector3 iMJaA = rbA.getInvInertiaTensorWorld()*solverConstraint.m_relpos1CrossNormal; + btVector3 iMJlB = solverConstraint.m_contactNormal2*rbB.getInvMass();//sign of normal? + btVector3 iMJaB = rbB.getInvInertiaTensorWorld()*solverConstraint.m_relpos2CrossNormal; + + btScalar sum = iMJlA.dot(solverConstraint.m_contactNormal1); + sum += iMJaA.dot(solverConstraint.m_relpos1CrossNormal); + sum += iMJlB.dot(solverConstraint.m_contactNormal2); + sum += iMJaB.dot(solverConstraint.m_relpos2CrossNormal); + btScalar fsum = btFabs(sum); + btAssert(fsum > SIMD_EPSILON); + btScalar sorRelaxation = 1.f;//todo: get from globalInfo? + solverConstraint.m_jacDiagABInv = fsum>SIMD_EPSILON?sorRelaxation/sum : 0.f; + } + + { + btScalar rel_vel; + btVector3 externalForceImpulseA = bodyAPtr->m_originalBody ? bodyAPtr->m_externalForceImpulse : btVector3(0,0,0); + btVector3 externalTorqueImpulseA = bodyAPtr->m_originalBody ? bodyAPtr->m_externalTorqueImpulse : btVector3(0,0,0); + + btVector3 externalForceImpulseB = bodyBPtr->m_originalBody ? bodyBPtr->m_externalForceImpulse : btVector3(0,0,0); + btVector3 externalTorqueImpulseB = bodyBPtr->m_originalBody ?bodyBPtr->m_externalTorqueImpulse : btVector3(0,0,0); + + btScalar vel1Dotn = solverConstraint.m_contactNormal1.dot(rbA.getLinearVelocity()+externalForceImpulseA) + + solverConstraint.m_relpos1CrossNormal.dot(rbA.getAngularVelocity()+externalTorqueImpulseA); + + btScalar vel2Dotn = solverConstraint.m_contactNormal2.dot(rbB.getLinearVelocity()+externalForceImpulseB) + + solverConstraint.m_relpos2CrossNormal.dot(rbB.getAngularVelocity()+externalTorqueImpulseB); + + rel_vel = vel1Dotn+vel2Dotn; + btScalar restitution = 0.f; + btScalar positionalError = solverConstraint.m_rhs;//already filled in by getConstraintInfo2 + btScalar velocityError = restitution - rel_vel * info2.m_damping; + btScalar penetrationImpulse = positionalError*solverConstraint.m_jacDiagABInv; + btScalar velocityImpulse = velocityError *solverConstraint.m_jacDiagABInv; + solverConstraint.m_rhs = penetrationImpulse+velocityImpulse; + solverConstraint.m_appliedImpulse = 0.f; + } + } +} + + +void btSequentialImpulseConstraintSolver::convertJoints(btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal) +{ + BT_PROFILE("convertJoints"); + for (int j=0;jbuildJacobian(); + constraint->internalSetAppliedImpulse(0.0f); + } + + int totalNumRows = 0; + + m_tmpConstraintSizesPool.resizeNoInitialize(numConstraints); + //calculate the total number of contraint rows + for (int i=0;igetJointFeedback(); + if (fb) + { + fb->m_appliedForceBodyA.setZero(); + fb->m_appliedTorqueBodyA.setZero(); + fb->m_appliedForceBodyB.setZero(); + fb->m_appliedTorqueBodyB.setZero(); + } + + if (constraints[i]->isEnabled()) + { + constraints[i]->getInfo1(&info1); + } else + { + info1.m_numConstraintRows = 0; + info1.nub = 0; + } + totalNumRows += info1.m_numConstraintRows; + } + m_tmpSolverNonContactConstraintPool.resizeNoInitialize(totalNumRows); + + + ///setup the btSolverConstraints + int currentRow = 0; + + for (int i=0;igetRigidBodyA(); + btRigidBody& rbB = constraint->getRigidBodyB(); + + int solverBodyIdA = getOrInitSolverBody(rbA,infoGlobal.m_timeStep); + int solverBodyIdB = getOrInitSolverBody(rbB,infoGlobal.m_timeStep); + + convertJoint(currentConstraintRow, constraint, info1, solverBodyIdA, solverBodyIdB, infoGlobal); + } + currentRow+=info1.m_numConstraintRows; + } +} + + +void btSequentialImpulseConstraintSolver::convertBodies(btCollisionObject** bodies, int numBodies, const btContactSolverInfo& infoGlobal) +{ + BT_PROFILE("convertBodies"); + for (int i = 0; i < numBodies; i++) + { + bodies[i]->setCompanionId(-1); + } +#if BT_THREADSAFE + m_kinematicBodyUniqueIdToSolverBodyTable.resize( 0 ); +#endif // BT_THREADSAFE + + m_tmpSolverBodyPool.reserve(numBodies+1); + m_tmpSolverBodyPool.resize(0); + + //btSolverBody& fixedBody = m_tmpSolverBodyPool.expand(); + //initSolverBody(&fixedBody,0); + + for (int i=0;igetInvMass()) + { + btSolverBody& solverBody = m_tmpSolverBodyPool[bodyId]; + btVector3 gyroForce (0,0,0); + if (body->getFlags()&BT_ENABLE_GYROSCOPIC_FORCE_EXPLICIT) + { + gyroForce = body->computeGyroscopicForceExplicit(infoGlobal.m_maxGyroscopicForce); + solverBody.m_externalTorqueImpulse -= gyroForce*body->getInvInertiaTensorWorld()*infoGlobal.m_timeStep; + } + if (body->getFlags()&BT_ENABLE_GYROSCOPIC_FORCE_IMPLICIT_WORLD) + { + gyroForce = body->computeGyroscopicImpulseImplicit_World(infoGlobal.m_timeStep); + solverBody.m_externalTorqueImpulse += gyroForce; + } + if (body->getFlags()&BT_ENABLE_GYROSCOPIC_FORCE_IMPLICIT_BODY) + { + gyroForce = body->computeGyroscopicImpulseImplicit_Body(infoGlobal.m_timeStep); + solverBody.m_externalTorqueImpulse += gyroForce; + + } + } + } +} + + btScalar btSequentialImpulseConstraintSolver::solveGroupCacheFriendlySetup(btCollisionObject** bodies, int numBodies, btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer) { m_fixedBodyId = -1; @@ -1344,250 +1594,13 @@ btScalar btSequentialImpulseConstraintSolver::solveGroupCacheFriendlySetup(btCol #endif //BT_ADDITIONAL_DEBUG - for (int i = 0; i < numBodies; i++) - { - bodies[i]->setCompanionId(-1); - } -#if BT_THREADSAFE - m_kinematicBodyUniqueIdToSolverBodyTable.resize( 0 ); -#endif // BT_THREADSAFE - - m_tmpSolverBodyPool.reserve(numBodies+1); - m_tmpSolverBodyPool.resize(0); - - //btSolverBody& fixedBody = m_tmpSolverBodyPool.expand(); - //initSolverBody(&fixedBody,0); - //convert all bodies + convertBodies(bodies, numBodies, infoGlobal); + convertJoints(constraints, numConstraints, infoGlobal); - for (int i=0;igetInvMass()) - { - btSolverBody& solverBody = m_tmpSolverBodyPool[bodyId]; - btVector3 gyroForce (0,0,0); - if (body->getFlags()&BT_ENABLE_GYROSCOPIC_FORCE_EXPLICIT) - { - gyroForce = body->computeGyroscopicForceExplicit(infoGlobal.m_maxGyroscopicForce); - solverBody.m_externalTorqueImpulse -= gyroForce*body->getInvInertiaTensorWorld()*infoGlobal.m_timeStep; - } - if (body->getFlags()&BT_ENABLE_GYROSCOPIC_FORCE_IMPLICIT_WORLD) - { - gyroForce = body->computeGyroscopicImpulseImplicit_World(infoGlobal.m_timeStep); - solverBody.m_externalTorqueImpulse += gyroForce; - } - if (body->getFlags()&BT_ENABLE_GYROSCOPIC_FORCE_IMPLICIT_BODY) - { - gyroForce = body->computeGyroscopicImpulseImplicit_Body(infoGlobal.m_timeStep); - solverBody.m_externalTorqueImpulse += gyroForce; - - } - - - } - } - - if (1) - { - int j; - for (j=0;jbuildJacobian(); - constraint->internalSetAppliedImpulse(0.0f); - } - } - - //btRigidBody* rb0=0,*rb1=0; - - //if (1) - { - { - - int totalNumRows = 0; - int i; - - m_tmpConstraintSizesPool.resizeNoInitialize(numConstraints); - //calculate the total number of contraint rows - for (i=0;igetJointFeedback(); - if (fb) - { - fb->m_appliedForceBodyA.setZero(); - fb->m_appliedTorqueBodyA.setZero(); - fb->m_appliedForceBodyB.setZero(); - fb->m_appliedTorqueBodyB.setZero(); - } - - if (constraints[i]->isEnabled()) - { - constraints[i]->getInfo1(&info1); - } else - { - info1.m_numConstraintRows = 0; - info1.nub = 0; - } - totalNumRows += info1.m_numConstraintRows; - } - m_tmpSolverNonContactConstraintPool.resizeNoInitialize(totalNumRows); - - - ///setup the btSolverConstraints - int currentRow = 0; - - for (i=0;igetRigidBodyA(); - btRigidBody& rbB = constraint->getRigidBodyB(); - - int solverBodyIdA = getOrInitSolverBody(rbA,infoGlobal.m_timeStep); - int solverBodyIdB = getOrInitSolverBody(rbB,infoGlobal.m_timeStep); - - btSolverBody* bodyAPtr = &m_tmpSolverBodyPool[solverBodyIdA]; - btSolverBody* bodyBPtr = &m_tmpSolverBodyPool[solverBodyIdB]; - - - - - int overrideNumSolverIterations = constraint->getOverrideNumSolverIterations() > 0 ? constraint->getOverrideNumSolverIterations() : infoGlobal.m_numIterations; - if (overrideNumSolverIterations>m_maxOverrideNumSolverIterations) - m_maxOverrideNumSolverIterations = overrideNumSolverIterations; - - - int j; - for ( j=0;jinternalGetDeltaLinearVelocity().setValue(0.f,0.f,0.f); - bodyAPtr->internalGetDeltaAngularVelocity().setValue(0.f,0.f,0.f); - bodyAPtr->internalGetPushVelocity().setValue(0.f,0.f,0.f); - bodyAPtr->internalGetTurnVelocity().setValue(0.f,0.f,0.f); - bodyBPtr->internalGetDeltaLinearVelocity().setValue(0.f,0.f,0.f); - bodyBPtr->internalGetDeltaAngularVelocity().setValue(0.f,0.f,0.f); - bodyBPtr->internalGetPushVelocity().setValue(0.f,0.f,0.f); - bodyBPtr->internalGetTurnVelocity().setValue(0.f,0.f,0.f); - - - btTypedConstraint::btConstraintInfo2 info2; - info2.fps = 1.f/infoGlobal.m_timeStep; - info2.erp = infoGlobal.m_erp; - info2.m_J1linearAxis = currentConstraintRow->m_contactNormal1; - info2.m_J1angularAxis = currentConstraintRow->m_relpos1CrossNormal; - info2.m_J2linearAxis = currentConstraintRow->m_contactNormal2; - info2.m_J2angularAxis = currentConstraintRow->m_relpos2CrossNormal; - info2.rowskip = sizeof(btSolverConstraint)/sizeof(btScalar);//check this - ///the size of btSolverConstraint needs be a multiple of btScalar - btAssert(info2.rowskip*sizeof(btScalar)== sizeof(btSolverConstraint)); - info2.m_constraintError = ¤tConstraintRow->m_rhs; - currentConstraintRow->m_cfm = infoGlobal.m_globalCfm; - info2.m_damping = infoGlobal.m_damping; - info2.cfm = ¤tConstraintRow->m_cfm; - info2.m_lowerLimit = ¤tConstraintRow->m_lowerLimit; - info2.m_upperLimit = ¤tConstraintRow->m_upperLimit; - info2.m_numIterations = infoGlobal.m_numIterations; - constraints[i]->getInfo2(&info2); - - ///finalize the constraint setup - for ( j=0;j=constraints[i]->getBreakingImpulseThreshold()) - { - solverConstraint.m_upperLimit = constraints[i]->getBreakingImpulseThreshold(); - } - - if (solverConstraint.m_lowerLimit<=-constraints[i]->getBreakingImpulseThreshold()) - { - solverConstraint.m_lowerLimit = -constraints[i]->getBreakingImpulseThreshold(); - } - - solverConstraint.m_originalContactPoint = constraint; - - { - const btVector3& ftorqueAxis1 = solverConstraint.m_relpos1CrossNormal; - solverConstraint.m_angularComponentA = constraint->getRigidBodyA().getInvInertiaTensorWorld()*ftorqueAxis1*constraint->getRigidBodyA().getAngularFactor(); - } - { - const btVector3& ftorqueAxis2 = solverConstraint.m_relpos2CrossNormal; - solverConstraint.m_angularComponentB = constraint->getRigidBodyB().getInvInertiaTensorWorld()*ftorqueAxis2*constraint->getRigidBodyB().getAngularFactor(); - } - - { - btVector3 iMJlA = solverConstraint.m_contactNormal1*rbA.getInvMass(); - btVector3 iMJaA = rbA.getInvInertiaTensorWorld()*solverConstraint.m_relpos1CrossNormal; - btVector3 iMJlB = solverConstraint.m_contactNormal2*rbB.getInvMass();//sign of normal? - btVector3 iMJaB = rbB.getInvInertiaTensorWorld()*solverConstraint.m_relpos2CrossNormal; - - btScalar sum = iMJlA.dot(solverConstraint.m_contactNormal1); - sum += iMJaA.dot(solverConstraint.m_relpos1CrossNormal); - sum += iMJlB.dot(solverConstraint.m_contactNormal2); - sum += iMJaB.dot(solverConstraint.m_relpos2CrossNormal); - btScalar fsum = btFabs(sum); - btAssert(fsum > SIMD_EPSILON); - btScalar sorRelaxation = 1.f;//todo: get from globalInfo? - solverConstraint.m_jacDiagABInv = fsum>SIMD_EPSILON?sorRelaxation/sum : 0.f; - } - - - - { - btScalar rel_vel; - btVector3 externalForceImpulseA = bodyAPtr->m_originalBody ? bodyAPtr->m_externalForceImpulse : btVector3(0,0,0); - btVector3 externalTorqueImpulseA = bodyAPtr->m_originalBody ? bodyAPtr->m_externalTorqueImpulse : btVector3(0,0,0); - - btVector3 externalForceImpulseB = bodyBPtr->m_originalBody ? bodyBPtr->m_externalForceImpulse : btVector3(0,0,0); - btVector3 externalTorqueImpulseB = bodyBPtr->m_originalBody ?bodyBPtr->m_externalTorqueImpulse : btVector3(0,0,0); - - btScalar vel1Dotn = solverConstraint.m_contactNormal1.dot(rbA.getLinearVelocity()+externalForceImpulseA) - + solverConstraint.m_relpos1CrossNormal.dot(rbA.getAngularVelocity()+externalTorqueImpulseA); - - btScalar vel2Dotn = solverConstraint.m_contactNormal2.dot(rbB.getLinearVelocity()+externalForceImpulseB) - + solverConstraint.m_relpos2CrossNormal.dot(rbB.getAngularVelocity()+externalTorqueImpulseB); - - rel_vel = vel1Dotn+vel2Dotn; - btScalar restitution = 0.f; - btScalar positionalError = solverConstraint.m_rhs;//already filled in by getConstraintInfo2 - btScalar velocityError = restitution - rel_vel * info2.m_damping; - btScalar penetrationImpulse = positionalError*solverConstraint.m_jacDiagABInv; - btScalar velocityImpulse = velocityError *solverConstraint.m_jacDiagABInv; - solverConstraint.m_rhs = penetrationImpulse+velocityImpulse; - solverConstraint.m_appliedImpulse = 0.f; - - - } - } - } - currentRow+=m_tmpConstraintSizesPool[i].m_numConstraintRows; - } - } - - convertContacts(manifoldPtr,numManifolds,infoGlobal); - - } // btContactSolverInfo info = infoGlobal; @@ -1627,6 +1640,7 @@ btScalar btSequentialImpulseConstraintSolver::solveGroupCacheFriendlySetup(btCol btScalar btSequentialImpulseConstraintSolver::solveSingleIteration(int iteration, btCollisionObject** /*bodies */,int /*numBodies*/,btPersistentManifold** /*manifoldPtr*/, int /*numManifolds*/,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* /*debugDrawer*/) { + BT_PROFILE("solveSingleIteration"); btScalar leastSquaresResidual = 0.f; int numNonContactPool = m_tmpSolverNonContactConstraintPool.size(); @@ -1805,6 +1819,7 @@ btScalar btSequentialImpulseConstraintSolver::solveSingleIteration(int iteration void btSequentialImpulseConstraintSolver::solveGroupCacheFriendlySplitImpulseIterations(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer) { + BT_PROFILE("solveGroupCacheFriendlySplitImpulseIterations"); int iteration; if (infoGlobal.m_splitImpulse) { @@ -1863,14 +1878,9 @@ btScalar btSequentialImpulseConstraintSolver::solveGroupCacheFriendlyIterations( return 0.f; } -btScalar btSequentialImpulseConstraintSolver::solveGroupCacheFriendlyFinish(btCollisionObject** bodies,int numBodies,const btContactSolverInfo& infoGlobal) +void btSequentialImpulseConstraintSolver::writeBackContacts(int iBegin, int iEnd, const btContactSolverInfo& infoGlobal) { - int numPoolConstraints = m_tmpSolverContactConstraintPool.size(); - int i,j; - - if (infoGlobal.m_solverMode & SOLVER_USE_WARMSTARTING) - { - for (j=0;jsetEnabled(false); } } +} - - for ( i=0;isetCompanionId(-1); } } +} + +btScalar btSequentialImpulseConstraintSolver::solveGroupCacheFriendlyFinish(btCollisionObject** bodies,int numBodies,const btContactSolverInfo& infoGlobal) +{ + BT_PROFILE("solveGroupCacheFriendlyFinish"); + + if (infoGlobal.m_solverMode & SOLVER_USE_WARMSTARTING) + { + writeBackContacts(0, m_tmpSolverContactConstraintPool.size(), infoGlobal); + } + + writeBackJoints(0, m_tmpSolverNonContactConstraintPool.size(), infoGlobal); + writeBackBodies(0, m_tmpSolverBodyPool.size(), infoGlobal); m_tmpSolverContactConstraintPool.resizeNoInitialize(0); m_tmpSolverNonContactConstraintPool.resizeNoInitialize(0); diff --git a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h index 16c7eb74c..8c9c67f85 100644 --- a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h +++ b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h @@ -95,6 +95,10 @@ protected: void convertContact(btPersistentManifold* manifold,const btContactSolverInfo& infoGlobal); + virtual void convertJoints(btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal); + void convertJoint(btSolverConstraint* destConstraintRow, btTypedConstraint* srcConstraint, const btTypedConstraint::btConstraintInfo1& info1, int solverBodyIdA, int solverBodyIdB, const btContactSolverInfo& infoGlobal); + + virtual void convertBodies(btCollisionObject** bodies, int numBodies, const btContactSolverInfo& infoGlobal); btSimdScalar resolveSplitPenetrationSIMD(btSolverBody& bodyA,btSolverBody& bodyB, const btSolverConstraint& contactConstraint) { @@ -121,7 +125,9 @@ protected: protected: - + void writeBackContacts(int iBegin, int iEnd, const btContactSolverInfo& infoGlobal); + void writeBackJoints(int iBegin, int iEnd, const btContactSolverInfo& infoGlobal); + void writeBackBodies(int iBegin, int iEnd, const btContactSolverInfo& infoGlobal); virtual void solveGroupCacheFriendlySplitImpulseIterations(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer); virtual btScalar solveGroupCacheFriendlyFinish(btCollisionObject** bodies,int numBodies,const btContactSolverInfo& infoGlobal); virtual btScalar solveSingleIteration(int iteration, btCollisionObject** bodies ,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer); diff --git a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp new file mode 100644 index 000000000..b09665b15 --- /dev/null +++ b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp @@ -0,0 +1,1611 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btSequentialImpulseConstraintSolverMt.h" + +#include "LinearMath/btQuickprof.h" + +#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" + +#include "BulletDynamics/ConstraintSolver/btTypedConstraint.h" +#include "BulletDynamics/Dynamics/btRigidBody.h" + + + +bool btSequentialImpulseConstraintSolverMt::s_allowNestedParallelForLoops = false; // some task schedulers don't like nested loops +int btSequentialImpulseConstraintSolverMt::s_minimumContactManifoldsForBatching = 250; +int btSequentialImpulseConstraintSolverMt::s_minBatchSize = 50; +int btSequentialImpulseConstraintSolverMt::s_maxBatchSize = 100; +btBatchedConstraints::BatchingMethod btSequentialImpulseConstraintSolverMt::s_contactBatchingMethod = btBatchedConstraints::BATCHING_METHOD_SPATIAL_GRID_2D; +btBatchedConstraints::BatchingMethod btSequentialImpulseConstraintSolverMt::s_jointBatchingMethod = btBatchedConstraints::BATCHING_METHOD_SPATIAL_GRID_2D; + + +btSequentialImpulseConstraintSolverMt::btSequentialImpulseConstraintSolverMt() +{ + m_numFrictionDirections = 1; + m_useBatching = false; + m_useObsoleteJointConstraints = false; +} + + +btSequentialImpulseConstraintSolverMt::~btSequentialImpulseConstraintSolverMt() +{ +} + + +void btSequentialImpulseConstraintSolverMt::setupBatchedContactConstraints() +{ + BT_PROFILE("setupBatchedContactConstraints"); + m_batchedContactConstraints.setup( &m_tmpSolverContactConstraintPool, + m_tmpSolverBodyPool, + s_contactBatchingMethod, + s_minBatchSize, + s_maxBatchSize, + &m_scratchMemory + ); +} + + +void btSequentialImpulseConstraintSolverMt::setupBatchedJointConstraints() +{ + BT_PROFILE("setupBatchedJointConstraints"); + m_batchedJointConstraints.setup( &m_tmpSolverNonContactConstraintPool, + m_tmpSolverBodyPool, + s_jointBatchingMethod, + s_minBatchSize, + s_maxBatchSize, + &m_scratchMemory + ); +} + + +void btSequentialImpulseConstraintSolverMt::internalSetupContactConstraints(int iContactConstraint, const btContactSolverInfo& infoGlobal) +{ + btSolverConstraint& contactConstraint = m_tmpSolverContactConstraintPool[iContactConstraint]; + + btVector3 rel_pos1; + btVector3 rel_pos2; + btScalar relaxation; + + int solverBodyIdA = contactConstraint.m_solverBodyIdA; + int solverBodyIdB = contactConstraint.m_solverBodyIdB; + + btSolverBody* solverBodyA = &m_tmpSolverBodyPool[ solverBodyIdA ]; + btSolverBody* solverBodyB = &m_tmpSolverBodyPool[ solverBodyIdB ]; + + btRigidBody* colObj0 = solverBodyA->m_originalBody; + btRigidBody* colObj1 = solverBodyB->m_originalBody; + + btManifoldPoint& cp = *static_cast( contactConstraint.m_originalContactPoint ); + + const btVector3& pos1 = cp.getPositionWorldOnA(); + const btVector3& pos2 = cp.getPositionWorldOnB(); + + rel_pos1 = pos1 - solverBodyA->getWorldTransform().getOrigin(); + rel_pos2 = pos2 - solverBodyB->getWorldTransform().getOrigin(); + + btVector3 vel1; + btVector3 vel2; + + solverBodyA->getVelocityInLocalPointNoDelta( rel_pos1, vel1 ); + solverBodyB->getVelocityInLocalPointNoDelta( rel_pos2, vel2 ); + + btVector3 vel = vel1 - vel2; + btScalar rel_vel = cp.m_normalWorldOnB.dot( vel ); + + setupContactConstraint( contactConstraint, solverBodyIdA, solverBodyIdB, cp, infoGlobal, relaxation, rel_pos1, rel_pos2 ); + + // setup rolling friction constraints + int rollingFrictionIndex = m_rollingFrictionIndexTable[iContactConstraint]; + if (rollingFrictionIndex >= 0) + { + btSolverConstraint& spinningFrictionConstraint = m_tmpSolverContactRollingFrictionConstraintPool[ rollingFrictionIndex ]; + btAssert( spinningFrictionConstraint.m_frictionIndex == iContactConstraint ); + setupTorsionalFrictionConstraint( spinningFrictionConstraint, + cp.m_normalWorldOnB, + solverBodyIdA, + solverBodyIdB, + cp, + cp.m_combinedSpinningFriction, + rel_pos1, + rel_pos2, + colObj0, + colObj1, + relaxation, + 0.0f, + 0.0f + ); + btVector3 axis[2]; + btPlaneSpace1( cp.m_normalWorldOnB, axis[0], axis[1] ); + axis[0].normalize(); + axis[1].normalize(); + + applyAnisotropicFriction( colObj0, axis[0], btCollisionObject::CF_ANISOTROPIC_ROLLING_FRICTION ); + applyAnisotropicFriction( colObj1, axis[0], btCollisionObject::CF_ANISOTROPIC_ROLLING_FRICTION ); + applyAnisotropicFriction( colObj0, axis[1], btCollisionObject::CF_ANISOTROPIC_ROLLING_FRICTION ); + applyAnisotropicFriction( colObj1, axis[1], btCollisionObject::CF_ANISOTROPIC_ROLLING_FRICTION ); + // put the largest axis first + if (axis[1].length2() > axis[0].length2()) + { + btSwap(axis[0], axis[1]); + } + const btScalar kRollingFrictionThreshold = 0.001f; + for (int i = 0; i < 2; ++i) + { + int iRollingFric = rollingFrictionIndex + 1 + i; + btSolverConstraint& rollingFrictionConstraint = m_tmpSolverContactRollingFrictionConstraintPool[ iRollingFric ]; + btAssert(rollingFrictionConstraint.m_frictionIndex == iContactConstraint); + btVector3 dir = axis[i]; + if ( dir.length() > kRollingFrictionThreshold ) + { + setupTorsionalFrictionConstraint( rollingFrictionConstraint, + dir, + solverBodyIdA, + solverBodyIdB, + cp, + cp.m_combinedRollingFriction, + rel_pos1, + rel_pos2, + colObj0, + colObj1, + relaxation, + 0.0f, + 0.0f + ); + } + else + { + rollingFrictionConstraint.m_frictionIndex = -1; // disable constraint + } + } + } + + // setup friction constraints + // setupFrictionConstraint(solverConstraint, normalAxis, solverBodyIdA, solverBodyIdB, cp, rel_pos1, rel_pos2, colObj0, colObj1, relaxation, infoGlobal, desiredVelocity, cfmSlip); + { + ///Bullet has several options to set the friction directions + ///By default, each contact has only a single friction direction that is recomputed automatically very frame + ///based on the relative linear velocity. + ///If the relative velocity it zero, it will automatically compute a friction direction. + + ///You can also enable two friction directions, using the SOLVER_USE_2_FRICTION_DIRECTIONS. + ///In that case, the second friction direction will be orthogonal to both contact normal and first friction direction. + /// + ///If you choose SOLVER_DISABLE_VELOCITY_DEPENDENT_FRICTION_DIRECTION, then the friction will be independent from the relative projected velocity. + /// + ///The user can manually override the friction directions for certain contacts using a contact callback, + ///and set the cp.m_lateralFrictionInitialized to true + ///In that case, you can set the target relative motion in each friction direction (cp.m_contactMotion1 and cp.m_contactMotion2) + ///this will give a conveyor belt effect + /// + btSolverConstraint* frictionConstraint1 = &m_tmpSolverContactFrictionConstraintPool[contactConstraint.m_frictionIndex]; + btAssert(frictionConstraint1->m_frictionIndex == iContactConstraint); + + btSolverConstraint* frictionConstraint2 = NULL; + if ( infoGlobal.m_solverMode & SOLVER_USE_2_FRICTION_DIRECTIONS ) + { + frictionConstraint2 = &m_tmpSolverContactFrictionConstraintPool[contactConstraint.m_frictionIndex + 1]; + btAssert( frictionConstraint2->m_frictionIndex == iContactConstraint ); + } + + if ( !( infoGlobal.m_solverMode & SOLVER_ENABLE_FRICTION_DIRECTION_CACHING ) || !( cp.m_contactPointFlags&BT_CONTACT_FLAG_LATERAL_FRICTION_INITIALIZED ) ) + { + cp.m_lateralFrictionDir1 = vel - cp.m_normalWorldOnB * rel_vel; + btScalar lat_rel_vel = cp.m_lateralFrictionDir1.length2(); + if ( !( infoGlobal.m_solverMode & SOLVER_DISABLE_VELOCITY_DEPENDENT_FRICTION_DIRECTION ) && lat_rel_vel > SIMD_EPSILON ) + { + cp.m_lateralFrictionDir1 *= 1.f / btSqrt( lat_rel_vel ); + applyAnisotropicFriction( colObj0, cp.m_lateralFrictionDir1, btCollisionObject::CF_ANISOTROPIC_FRICTION ); + applyAnisotropicFriction( colObj1, cp.m_lateralFrictionDir1, btCollisionObject::CF_ANISOTROPIC_FRICTION ); + setupFrictionConstraint( *frictionConstraint1, cp.m_lateralFrictionDir1, solverBodyIdA, solverBodyIdB, cp, rel_pos1, rel_pos2, colObj0, colObj1, relaxation, infoGlobal ); + + if ( frictionConstraint2 ) + { + cp.m_lateralFrictionDir2 = cp.m_lateralFrictionDir1.cross( cp.m_normalWorldOnB ); + cp.m_lateralFrictionDir2.normalize();//?? + applyAnisotropicFriction( colObj0, cp.m_lateralFrictionDir2, btCollisionObject::CF_ANISOTROPIC_FRICTION ); + applyAnisotropicFriction( colObj1, cp.m_lateralFrictionDir2, btCollisionObject::CF_ANISOTROPIC_FRICTION ); + setupFrictionConstraint( *frictionConstraint2, cp.m_lateralFrictionDir2, solverBodyIdA, solverBodyIdB, cp, rel_pos1, rel_pos2, colObj0, colObj1, relaxation, infoGlobal ); + } + } + else + { + btPlaneSpace1( cp.m_normalWorldOnB, cp.m_lateralFrictionDir1, cp.m_lateralFrictionDir2 ); + + applyAnisotropicFriction( colObj0, cp.m_lateralFrictionDir1, btCollisionObject::CF_ANISOTROPIC_FRICTION ); + applyAnisotropicFriction( colObj1, cp.m_lateralFrictionDir1, btCollisionObject::CF_ANISOTROPIC_FRICTION ); + setupFrictionConstraint( *frictionConstraint1, cp.m_lateralFrictionDir1, solverBodyIdA, solverBodyIdB, cp, rel_pos1, rel_pos2, colObj0, colObj1, relaxation, infoGlobal ); + + if ( frictionConstraint2 ) + { + applyAnisotropicFriction( colObj0, cp.m_lateralFrictionDir2, btCollisionObject::CF_ANISOTROPIC_FRICTION ); + applyAnisotropicFriction( colObj1, cp.m_lateralFrictionDir2, btCollisionObject::CF_ANISOTROPIC_FRICTION ); + setupFrictionConstraint( *frictionConstraint2, cp.m_lateralFrictionDir2, solverBodyIdA, solverBodyIdB, cp, rel_pos1, rel_pos2, colObj0, colObj1, relaxation, infoGlobal ); + } + + if ( ( infoGlobal.m_solverMode & SOLVER_USE_2_FRICTION_DIRECTIONS ) && ( infoGlobal.m_solverMode & SOLVER_DISABLE_VELOCITY_DEPENDENT_FRICTION_DIRECTION ) ) + { + cp.m_contactPointFlags |= BT_CONTACT_FLAG_LATERAL_FRICTION_INITIALIZED; + } + } + } + else + { + setupFrictionConstraint( *frictionConstraint1, cp.m_lateralFrictionDir1, solverBodyIdA, solverBodyIdB, cp, rel_pos1, rel_pos2, colObj0, colObj1, relaxation, infoGlobal, cp.m_contactMotion1, cp.m_frictionCFM ); + if ( frictionConstraint2 ) + { + setupFrictionConstraint( *frictionConstraint2, cp.m_lateralFrictionDir2, solverBodyIdA, solverBodyIdB, cp, rel_pos1, rel_pos2, colObj0, colObj1, relaxation, infoGlobal, cp.m_contactMotion2, cp.m_frictionCFM ); + } + } + } + + setFrictionConstraintImpulse( contactConstraint, solverBodyIdA, solverBodyIdB, cp, infoGlobal ); +} + + +struct SetupContactConstraintsLoop : public btIParallelForBody +{ + btSequentialImpulseConstraintSolverMt* m_solver; + const btBatchedConstraints* m_bc; + const btContactSolverInfo* m_infoGlobal; + + SetupContactConstraintsLoop( btSequentialImpulseConstraintSolverMt* solver, const btBatchedConstraints* bc, const btContactSolverInfo& infoGlobal ) + { + m_solver = solver; + m_bc = bc; + m_infoGlobal = &infoGlobal; + } + void forLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + BT_PROFILE( "SetupContactConstraintsLoop" ); + for ( int iBatch = iBegin; iBatch < iEnd; ++iBatch ) + { + const btBatchedConstraints::Range& batch = m_bc->m_batches[ iBatch ]; + for (int i = batch.begin; i < batch.end; ++i) + { + int iContact = m_bc->m_constraintIndices[i]; + m_solver->internalSetupContactConstraints( iContact, *m_infoGlobal ); + } + } + } +}; + + +void btSequentialImpulseConstraintSolverMt::setupAllContactConstraints(const btContactSolverInfo& infoGlobal) +{ + BT_PROFILE( "setupAllContactConstraints" ); + if ( m_useBatching ) + { + const btBatchedConstraints& batchedCons = m_batchedContactConstraints; + SetupContactConstraintsLoop loop( this, &batchedCons, infoGlobal ); + for ( int iiPhase = 0; iiPhase < batchedCons.m_phases.size(); ++iiPhase ) + { + int iPhase = batchedCons.m_phaseOrder[ iiPhase ]; + const btBatchedConstraints::Range& phase = batchedCons.m_phases[ iPhase ]; + int grainSize = 1; + btParallelFor( phase.begin, phase.end, grainSize, loop ); + } + } + else + { + for ( int i = 0; i < m_tmpSolverContactConstraintPool.size(); ++i ) + { + internalSetupContactConstraints( i, infoGlobal ); + } + } +} + + +int btSequentialImpulseConstraintSolverMt::getOrInitSolverBodyThreadsafe(btCollisionObject& body,btScalar timeStep) +{ + // + // getOrInitSolverBody is threadsafe only for a single thread per solver (with potentially multiple solvers) + // + // getOrInitSolverBodyThreadsafe -- attempts to be fully threadsafe (however may affect determinism) + // + int solverBodyId = -1; + if ( !body.isStaticOrKinematicObject() ) + { + // dynamic body + // Dynamic bodies can only be in one island, so it's safe to write to the companionId + solverBodyId = body.getCompanionId(); + if ( solverBodyId < 0 ) + { + m_bodySolverArrayMutex.lock(); + // now that we have the lock, check again + solverBodyId = body.getCompanionId(); + if ( solverBodyId < 0 ) + { + if ( btRigidBody* rb = btRigidBody::upcast( &body ) ) + { + solverBodyId = m_tmpSolverBodyPool.size(); + btSolverBody& solverBody = m_tmpSolverBodyPool.expand(); + initSolverBody( &solverBody, &body, timeStep ); + body.setCompanionId( solverBodyId ); + } + } + m_bodySolverArrayMutex.unlock(); + } + } + else if (body.isKinematicObject()) + { + // + // NOTE: must test for kinematic before static because some kinematic objects also + // identify as "static" + // + // Kinematic bodies can be in multiple islands at once, so it is a + // race condition to write to them, so we use an alternate method + // to record the solverBodyId + int uniqueId = body.getWorldArrayIndex(); + const int INVALID_SOLVER_BODY_ID = -1; + if (m_kinematicBodyUniqueIdToSolverBodyTable.size() <= uniqueId ) + { + m_kinematicBodyUniqueIdToSolverBodyTableMutex.lock(); + // now that we have the lock, check again + if ( m_kinematicBodyUniqueIdToSolverBodyTable.size() <= uniqueId ) + { + m_kinematicBodyUniqueIdToSolverBodyTable.resize( uniqueId + 1, INVALID_SOLVER_BODY_ID ); + } + m_kinematicBodyUniqueIdToSolverBodyTableMutex.unlock(); + } + solverBodyId = m_kinematicBodyUniqueIdToSolverBodyTable[ uniqueId ]; + // if no table entry yet, + if ( INVALID_SOLVER_BODY_ID == solverBodyId ) + { + // need to acquire both locks + m_kinematicBodyUniqueIdToSolverBodyTableMutex.lock(); + m_bodySolverArrayMutex.lock(); + // now that we have the lock, check again + solverBodyId = m_kinematicBodyUniqueIdToSolverBodyTable[ uniqueId ]; + if ( INVALID_SOLVER_BODY_ID == solverBodyId ) + { + // create a table entry for this body + btRigidBody* rb = btRigidBody::upcast( &body ); + solverBodyId = m_tmpSolverBodyPool.size(); + btSolverBody& solverBody = m_tmpSolverBodyPool.expand(); + initSolverBody( &solverBody, &body, timeStep ); + m_kinematicBodyUniqueIdToSolverBodyTable[ uniqueId ] = solverBodyId; + } + m_bodySolverArrayMutex.unlock(); + m_kinematicBodyUniqueIdToSolverBodyTableMutex.unlock(); + } + } + else + { + // all fixed bodies (inf mass) get mapped to a single solver id + if ( m_fixedBodyId < 0 ) + { + m_bodySolverArrayMutex.lock(); + // now that we have the lock, check again + if ( m_fixedBodyId < 0 ) + { + m_fixedBodyId = m_tmpSolverBodyPool.size(); + btSolverBody& fixedBody = m_tmpSolverBodyPool.expand(); + initSolverBody( &fixedBody, 0, timeStep ); + } + m_bodySolverArrayMutex.unlock(); + } + solverBodyId = m_fixedBodyId; + } + btAssert( solverBodyId < m_tmpSolverBodyPool.size() ); + return solverBodyId; +} + + +void btSequentialImpulseConstraintSolverMt::internalCollectContactManifoldCachedInfo(btContactManifoldCachedInfo* cachedInfoArray, btPersistentManifold** manifoldPtr, int numManifolds, const btContactSolverInfo& infoGlobal) +{ + BT_PROFILE("internalCollectContactManifoldCachedInfo"); + for (int i = 0; i < numManifolds; ++i) + { + btContactManifoldCachedInfo* cachedInfo = &cachedInfoArray[i]; + btPersistentManifold* manifold = manifoldPtr[i]; + btCollisionObject* colObj0 = (btCollisionObject*) manifold->getBody0(); + btCollisionObject* colObj1 = (btCollisionObject*) manifold->getBody1(); + + int solverBodyIdA = getOrInitSolverBodyThreadsafe( *colObj0, infoGlobal.m_timeStep ); + int solverBodyIdB = getOrInitSolverBodyThreadsafe( *colObj1, infoGlobal.m_timeStep ); + + cachedInfo->solverBodyIds[ 0 ] = solverBodyIdA; + cachedInfo->solverBodyIds[ 1 ] = solverBodyIdB; + cachedInfo->numTouchingContacts = 0; + + btSolverBody* solverBodyA = &m_tmpSolverBodyPool[ solverBodyIdA ]; + btSolverBody* solverBodyB = &m_tmpSolverBodyPool[ solverBodyIdB ]; + + ///avoid collision response between two static objects + if ( solverBodyA->m_invMass.fuzzyZero() && solverBodyB->m_invMass.fuzzyZero() ) + break; + + int iContact = 0; + for ( int j = 0; j < manifold->getNumContacts(); j++ ) + { + btManifoldPoint& cp = manifold->getContactPoint( j ); + + if ( cp.getDistance() <= manifold->getContactProcessingThreshold() ) + { + cachedInfo->contactPoints[ iContact ] = &cp; + cachedInfo->contactHasRollingFriction[ iContact ] = ( cp.m_combinedRollingFriction > 0.f ); + iContact++; + } + } + cachedInfo->numTouchingContacts = iContact; + } +} + + +struct CollectContactManifoldCachedInfoLoop : public btIParallelForBody +{ + btSequentialImpulseConstraintSolverMt* m_solver; + btSequentialImpulseConstraintSolverMt::btContactManifoldCachedInfo* m_cachedInfoArray; + btPersistentManifold** m_manifoldPtr; + const btContactSolverInfo* m_infoGlobal; + + CollectContactManifoldCachedInfoLoop( btSequentialImpulseConstraintSolverMt* solver, btSequentialImpulseConstraintSolverMt::btContactManifoldCachedInfo* cachedInfoArray, btPersistentManifold** manifoldPtr, const btContactSolverInfo& infoGlobal ) + { + m_solver = solver; + m_cachedInfoArray = cachedInfoArray; + m_manifoldPtr = manifoldPtr; + m_infoGlobal = &infoGlobal; + } + void forLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + m_solver->internalCollectContactManifoldCachedInfo( m_cachedInfoArray + iBegin, m_manifoldPtr + iBegin, iEnd - iBegin, *m_infoGlobal ); + } +}; + + +void btSequentialImpulseConstraintSolverMt::internalAllocContactConstraints(const btContactManifoldCachedInfo* cachedInfoArray, int numManifolds) +{ + BT_PROFILE("internalAllocContactConstraints"); + // possibly parallel part + for ( int iManifold = 0; iManifold < numManifolds; ++iManifold ) + { + const btContactManifoldCachedInfo& cachedInfo = cachedInfoArray[ iManifold ]; + int contactIndex = cachedInfo.contactIndex; + int frictionIndex = contactIndex * m_numFrictionDirections; + int rollingFrictionIndex = cachedInfo.rollingFrictionIndex; + for ( int i = 0; i < cachedInfo.numTouchingContacts; i++ ) + { + btSolverConstraint& contactConstraint = m_tmpSolverContactConstraintPool[contactIndex]; + contactConstraint.m_solverBodyIdA = cachedInfo.solverBodyIds[ 0 ]; + contactConstraint.m_solverBodyIdB = cachedInfo.solverBodyIds[ 1 ]; + contactConstraint.m_originalContactPoint = cachedInfo.contactPoints[ i ]; + + // allocate the friction constraints + contactConstraint.m_frictionIndex = frictionIndex; + for ( int iDir = 0; iDir < m_numFrictionDirections; ++iDir ) + { + btSolverConstraint& frictionConstraint = m_tmpSolverContactFrictionConstraintPool[frictionIndex]; + frictionConstraint.m_frictionIndex = contactIndex; + frictionIndex++; + } + + // allocate rolling friction constraints + if ( cachedInfo.contactHasRollingFriction[ i ] ) + { + m_rollingFrictionIndexTable[ contactIndex ] = rollingFrictionIndex; + // allocate 3 (although we may use only 2 sometimes) + for ( int i = 0; i < 3; i++ ) + { + m_tmpSolverContactRollingFrictionConstraintPool[ rollingFrictionIndex ].m_frictionIndex = contactIndex; + rollingFrictionIndex++; + } + } + else + { + // indicate there is no rolling friction for this contact point + m_rollingFrictionIndexTable[ contactIndex ] = -1; + } + contactIndex++; + } + } +} + + +struct AllocContactConstraintsLoop : public btIParallelForBody +{ + btSequentialImpulseConstraintSolverMt* m_solver; + const btSequentialImpulseConstraintSolverMt::btContactManifoldCachedInfo* m_cachedInfoArray; + + AllocContactConstraintsLoop( btSequentialImpulseConstraintSolverMt* solver, btSequentialImpulseConstraintSolverMt::btContactManifoldCachedInfo* cachedInfoArray ) + { + m_solver = solver; + m_cachedInfoArray = cachedInfoArray; + } + void forLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + m_solver->internalAllocContactConstraints( m_cachedInfoArray + iBegin, iEnd - iBegin ); + } +}; + + +void btSequentialImpulseConstraintSolverMt::allocAllContactConstraints(btPersistentManifold** manifoldPtr, int numManifolds, const btContactSolverInfo& infoGlobal) +{ + BT_PROFILE( "allocAllContactConstraints" ); + btAlignedObjectArray cachedInfoArray; // = m_manifoldCachedInfoArray; + cachedInfoArray.resizeNoInitialize( numManifolds ); + if (false) + { + // sequential + internalCollectContactManifoldCachedInfo(&cachedInfoArray[ 0 ], manifoldPtr, numManifolds, infoGlobal); + } + else + { + // may alter ordering of bodies which affects determinism + CollectContactManifoldCachedInfoLoop loop( this, &cachedInfoArray[ 0 ], manifoldPtr, infoGlobal ); + int grainSize = 200; + btParallelFor( 0, numManifolds, grainSize, loop ); + } + + { + // serial part + int numContacts = 0; + int numRollingFrictionConstraints = 0; + for ( int iManifold = 0; iManifold < numManifolds; ++iManifold ) + { + btContactManifoldCachedInfo& cachedInfo = cachedInfoArray[ iManifold ]; + cachedInfo.contactIndex = numContacts; + cachedInfo.rollingFrictionIndex = numRollingFrictionConstraints; + numContacts += cachedInfo.numTouchingContacts; + for (int i = 0; i < cachedInfo.numTouchingContacts; ++i) + { + if (cachedInfo.contactHasRollingFriction[i]) + { + numRollingFrictionConstraints += 3; + } + } + } + m_tmpSolverContactConstraintPool.resizeNoInitialize(numContacts); + m_rollingFrictionIndexTable.resizeNoInitialize(numContacts); + m_tmpSolverContactFrictionConstraintPool.resizeNoInitialize(numContacts*m_numFrictionDirections); + m_tmpSolverContactRollingFrictionConstraintPool.resizeNoInitialize(numRollingFrictionConstraints); + } + { + AllocContactConstraintsLoop loop(this, &cachedInfoArray[0]); + int grainSize = 200; + btParallelFor( 0, numManifolds, grainSize, loop ); + } +} + + +void btSequentialImpulseConstraintSolverMt::convertContacts(btPersistentManifold** manifoldPtr, int numManifolds, const btContactSolverInfo& infoGlobal) +{ + if (!m_useBatching) + { + btSequentialImpulseConstraintSolver::convertContacts(manifoldPtr, numManifolds, infoGlobal); + return; + } + BT_PROFILE( "convertContacts" ); + if (numManifolds > 0) + { + if ( m_fixedBodyId < 0 ) + { + m_fixedBodyId = m_tmpSolverBodyPool.size(); + btSolverBody& fixedBody = m_tmpSolverBodyPool.expand(); + initSolverBody( &fixedBody, 0, infoGlobal.m_timeStep ); + } + allocAllContactConstraints( manifoldPtr, numManifolds, infoGlobal ); + if ( m_useBatching ) + { + setupBatchedContactConstraints(); + } + setupAllContactConstraints( infoGlobal ); + } +} + + +void btSequentialImpulseConstraintSolverMt::internalInitMultipleJoints( btTypedConstraint** constraints, int iBegin, int iEnd ) +{ + BT_PROFILE("internalInitMultipleJoints"); + for ( int i = iBegin; i < iEnd; i++ ) + { + btTypedConstraint* constraint = constraints[i]; + btTypedConstraint::btConstraintInfo1& info1 = m_tmpConstraintSizesPool[i]; + if (constraint->isEnabled()) + { + constraint->buildJacobian(); + constraint->internalSetAppliedImpulse( 0.0f ); + btJointFeedback* fb = constraint->getJointFeedback(); + if ( fb ) + { + fb->m_appliedForceBodyA.setZero(); + fb->m_appliedTorqueBodyA.setZero(); + fb->m_appliedForceBodyB.setZero(); + fb->m_appliedTorqueBodyB.setZero(); + } + constraint->getInfo1( &info1 ); + } + else + { + info1.m_numConstraintRows = 0; + info1.nub = 0; + } + } +} + + +struct InitJointsLoop : public btIParallelForBody +{ + btSequentialImpulseConstraintSolverMt* m_solver; + btTypedConstraint** m_constraints; + + InitJointsLoop( btSequentialImpulseConstraintSolverMt* solver, btTypedConstraint** constraints ) + { + m_solver = solver; + m_constraints = constraints; + } + void forLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + m_solver->internalInitMultipleJoints( m_constraints, iBegin, iEnd ); + } +}; + + +void btSequentialImpulseConstraintSolverMt::internalConvertMultipleJoints( const btAlignedObjectArray& jointParamsArray, btTypedConstraint** constraints, int iBegin, int iEnd, const btContactSolverInfo& infoGlobal ) +{ + BT_PROFILE("internalConvertMultipleJoints"); + for ( int i = iBegin; i < iEnd; ++i ) + { + const JointParams& jointParams = jointParamsArray[ i ]; + int currentRow = jointParams.m_solverConstraint; + if ( currentRow != -1 ) + { + const btTypedConstraint::btConstraintInfo1& info1 = m_tmpConstraintSizesPool[ i ]; + btAssert( currentRow < m_tmpSolverNonContactConstraintPool.size() ); + btAssert( info1.m_numConstraintRows > 0 ); + + btSolverConstraint* currentConstraintRow = &m_tmpSolverNonContactConstraintPool[ currentRow ]; + btTypedConstraint* constraint = constraints[ i ]; + + convertJoint( currentConstraintRow, constraint, info1, jointParams.m_solverBodyA, jointParams.m_solverBodyB, infoGlobal ); + } + } +} + + +struct ConvertJointsLoop : public btIParallelForBody +{ + btSequentialImpulseConstraintSolverMt* m_solver; + const btAlignedObjectArray& m_jointParamsArray; + btTypedConstraint** m_srcConstraints; + const btContactSolverInfo& m_infoGlobal; + + ConvertJointsLoop( btSequentialImpulseConstraintSolverMt* solver, + const btAlignedObjectArray& jointParamsArray, + btTypedConstraint** srcConstraints, + const btContactSolverInfo& infoGlobal + ) : + m_jointParamsArray(jointParamsArray), + m_infoGlobal(infoGlobal) + { + m_solver = solver; + m_srcConstraints = srcConstraints; + } + void forLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + m_solver->internalConvertMultipleJoints( m_jointParamsArray, m_srcConstraints, iBegin, iEnd, m_infoGlobal ); + } +}; + + +void btSequentialImpulseConstraintSolverMt::convertJoints(btTypedConstraint** constraints, int numConstraints, const btContactSolverInfo& infoGlobal) +{ + if ( !m_useBatching ) + { + btSequentialImpulseConstraintSolver::convertJoints(constraints, numConstraints, infoGlobal); + return; + } + BT_PROFILE("convertJoints"); + bool parallelJointSetup = true; + m_tmpConstraintSizesPool.resizeNoInitialize(numConstraints); + if (parallelJointSetup) + { + InitJointsLoop loop(this, constraints); + int grainSize = 40; + btParallelFor(0, numConstraints, grainSize, loop); + } + else + { + internalInitMultipleJoints( constraints, 0, numConstraints ); + } + + int totalNumRows = 0; + btAlignedObjectArray jointParamsArray; + jointParamsArray.resizeNoInitialize(numConstraints); + + //calculate the total number of contraint rows + for (int i=0;igetRigidBodyA(), infoGlobal.m_timeStep ); + params.m_solverBodyB = getOrInitSolverBody( constraint->getRigidBodyB(), infoGlobal.m_timeStep ); + } + else + { + params.m_solverConstraint = -1; + } + totalNumRows += info1.m_numConstraintRows; + } + m_tmpSolverNonContactConstraintPool.resizeNoInitialize(totalNumRows); + + ///setup the btSolverConstraints + if ( parallelJointSetup ) + { + ConvertJointsLoop loop(this, jointParamsArray, constraints, infoGlobal); + int grainSize = 20; + btParallelFor(0, numConstraints, grainSize, loop); + } + else + { + internalConvertMultipleJoints( jointParamsArray, constraints, 0, numConstraints, infoGlobal ); + } + setupBatchedJointConstraints(); +} + + +void btSequentialImpulseConstraintSolverMt::internalConvertBodies(btCollisionObject** bodies, int iBegin, int iEnd, const btContactSolverInfo& infoGlobal) +{ + BT_PROFILE("internalConvertBodies"); + for (int i=iBegin; i < iEnd; i++) + { + btCollisionObject* obj = bodies[i]; + obj->setCompanionId(i); + btSolverBody& solverBody = m_tmpSolverBodyPool[i]; + initSolverBody(&solverBody, obj, infoGlobal.m_timeStep); + + btRigidBody* body = btRigidBody::upcast(obj); + if (body && body->getInvMass()) + { + btVector3 gyroForce (0,0,0); + if (body->getFlags()&BT_ENABLE_GYROSCOPIC_FORCE_EXPLICIT) + { + gyroForce = body->computeGyroscopicForceExplicit(infoGlobal.m_maxGyroscopicForce); + solverBody.m_externalTorqueImpulse -= gyroForce*body->getInvInertiaTensorWorld()*infoGlobal.m_timeStep; + } + if (body->getFlags()&BT_ENABLE_GYROSCOPIC_FORCE_IMPLICIT_WORLD) + { + gyroForce = body->computeGyroscopicImpulseImplicit_World(infoGlobal.m_timeStep); + solverBody.m_externalTorqueImpulse += gyroForce; + } + if (body->getFlags()&BT_ENABLE_GYROSCOPIC_FORCE_IMPLICIT_BODY) + { + gyroForce = body->computeGyroscopicImpulseImplicit_Body(infoGlobal.m_timeStep); + solverBody.m_externalTorqueImpulse += gyroForce; + } + } + } +} + + +struct ConvertBodiesLoop : public btIParallelForBody +{ + btSequentialImpulseConstraintSolverMt* m_solver; + btCollisionObject** m_bodies; + int m_numBodies; + const btContactSolverInfo& m_infoGlobal; + + ConvertBodiesLoop( btSequentialImpulseConstraintSolverMt* solver, + btCollisionObject** bodies, + int numBodies, + const btContactSolverInfo& infoGlobal + ) : + m_infoGlobal(infoGlobal) + { + m_solver = solver; + m_bodies = bodies; + m_numBodies = numBodies; + } + void forLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + m_solver->internalConvertBodies( m_bodies, iBegin, iEnd, m_infoGlobal ); + } +}; + + +void btSequentialImpulseConstraintSolverMt::convertBodies(btCollisionObject** bodies, int numBodies, const btContactSolverInfo& infoGlobal) +{ + BT_PROFILE("convertBodies"); + m_kinematicBodyUniqueIdToSolverBodyTable.resize( 0 ); + + m_tmpSolverBodyPool.resizeNoInitialize(numBodies+1); + + m_fixedBodyId = numBodies; + { + btSolverBody& fixedBody = m_tmpSolverBodyPool[ m_fixedBodyId ]; + initSolverBody( &fixedBody, NULL, infoGlobal.m_timeStep ); + } + + bool parallelBodySetup = true; + if (parallelBodySetup) + { + ConvertBodiesLoop loop(this, bodies, numBodies, infoGlobal); + int grainSize = 40; + btParallelFor(0, numBodies, grainSize, loop); + } + else + { + internalConvertBodies( bodies, 0, numBodies, infoGlobal ); + } +} + + +btScalar btSequentialImpulseConstraintSolverMt::solveGroupCacheFriendlySetup( + btCollisionObject** bodies, + int numBodies, + btPersistentManifold** manifoldPtr, + int numManifolds, + btTypedConstraint** constraints, + int numConstraints, + const btContactSolverInfo& infoGlobal, + btIDebugDraw* debugDrawer + ) +{ + m_numFrictionDirections = (infoGlobal.m_solverMode & SOLVER_USE_2_FRICTION_DIRECTIONS) ? 2 : 1; + m_useBatching = false; + if ( numManifolds >= s_minimumContactManifoldsForBatching && + (s_allowNestedParallelForLoops || !btThreadsAreRunning()) + ) + { + m_useBatching = true; + m_batchedContactConstraints.m_debugDrawer = debugDrawer; + m_batchedJointConstraints.m_debugDrawer = debugDrawer; + } + btSequentialImpulseConstraintSolver::solveGroupCacheFriendlySetup( bodies, + numBodies, + manifoldPtr, + numManifolds, + constraints, + numConstraints, + infoGlobal, + debugDrawer + ); + return 0.0f; +} + + +btScalar btSequentialImpulseConstraintSolverMt::resolveMultipleContactSplitPenetrationImpulseConstraints( const btAlignedObjectArray& consIndices, int batchBegin, int batchEnd ) +{ + btScalar leastSquaresResidual = 0.f; + for ( int iiCons = batchBegin; iiCons < batchEnd; ++iiCons ) + { + int iCons = consIndices[ iiCons ]; + const btSolverConstraint& solveManifold = m_tmpSolverContactConstraintPool[ iCons ]; + btSolverBody& bodyA = m_tmpSolverBodyPool[ solveManifold.m_solverBodyIdA ]; + btSolverBody& bodyB = m_tmpSolverBodyPool[ solveManifold.m_solverBodyIdB ]; + btScalar residual = resolveSplitPenetrationImpulse( bodyA, bodyB, solveManifold ); + leastSquaresResidual += residual*residual; + } + return leastSquaresResidual; +} + + +struct ContactSplitPenetrationImpulseSolverLoop : public btIParallelSumBody +{ + btSequentialImpulseConstraintSolverMt* m_solver; + const btBatchedConstraints* m_bc; + + ContactSplitPenetrationImpulseSolverLoop( btSequentialImpulseConstraintSolverMt* solver, const btBatchedConstraints* bc ) + { + m_solver = solver; + m_bc = bc; + } + btScalar sumLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + BT_PROFILE( "ContactSplitPenetrationImpulseSolverLoop" ); + btScalar sum = 0; + for ( int iBatch = iBegin; iBatch < iEnd; ++iBatch ) + { + const btBatchedConstraints::Range& batch = m_bc->m_batches[ iBatch ]; + sum += m_solver->resolveMultipleContactSplitPenetrationImpulseConstraints( m_bc->m_constraintIndices, batch.begin, batch.end ); + } + return sum; + } +}; + + +void btSequentialImpulseConstraintSolverMt::solveGroupCacheFriendlySplitImpulseIterations(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer) +{ + BT_PROFILE("solveGroupCacheFriendlySplitImpulseIterations"); + if (infoGlobal.m_splitImpulse) + { + for ( int iteration = 0; iteration < infoGlobal.m_numIterations; iteration++ ) + { + btScalar leastSquaresResidual = 0.f; + if (m_useBatching) + { + const btBatchedConstraints& batchedCons = m_batchedContactConstraints; + ContactSplitPenetrationImpulseSolverLoop loop( this, &batchedCons ); + btScalar leastSquaresResidual = 0.f; + for ( int iiPhase = 0; iiPhase < batchedCons.m_phases.size(); ++iiPhase ) + { + int iPhase = batchedCons.m_phaseOrder[ iiPhase ]; + const btBatchedConstraints::Range& phase = batchedCons.m_phases[ iPhase ]; + int grainSize = 8; + leastSquaresResidual += btParallelSum( phase.begin, phase.end, grainSize, loop ); + } + } + else + { + // non-batched + leastSquaresResidual = resolveMultipleContactSplitPenetrationImpulseConstraints(m_orderTmpConstraintPool, 0, m_tmpSolverContactConstraintPool.size()); + } + if ( leastSquaresResidual <= infoGlobal.m_leastSquaresResidualThreshold || iteration >= ( infoGlobal.m_numIterations - 1 ) ) + { +#ifdef VERBOSE_RESIDUAL_PRINTF + printf( "residual = %f at iteration #%d\n", leastSquaresResidual, iteration ); +#endif + break; + } + } + } +} + + +btScalar btSequentialImpulseConstraintSolverMt::solveSingleIteration(int iteration, btCollisionObject** bodies, int numBodies, btPersistentManifold** manifoldPtr, int numManifolds, btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer) +{ + if ( !m_useBatching ) + { + return btSequentialImpulseConstraintSolver::solveSingleIteration( iteration, bodies, numBodies, manifoldPtr, numManifolds, constraints, numConstraints, infoGlobal, debugDrawer ); + } + BT_PROFILE( "solveSingleIterationMt" ); + btScalar leastSquaresResidual = 0.f; + + if (infoGlobal.m_solverMode & SOLVER_RANDMIZE_ORDER) + { + if (1) // uncomment this for a bit less random ((iteration & 7) == 0) + { + randomizeConstraintOrdering(iteration, infoGlobal.m_numIterations); + } + } + + { + ///solve all joint constraints + leastSquaresResidual += resolveAllJointConstraints(iteration); + + if (iteration< infoGlobal.m_numIterations) + { + // this loop is only used for cone-twist constraints, + // it would be nice to skip this loop if none of the constraints need it + if ( m_useObsoleteJointConstraints ) + { + for ( int j = 0; jisEnabled() ) + { + int bodyAid = getOrInitSolverBody( constraints[ j ]->getRigidBodyA(), infoGlobal.m_timeStep ); + int bodyBid = getOrInitSolverBody( constraints[ j ]->getRigidBodyB(), infoGlobal.m_timeStep ); + btSolverBody& bodyA = m_tmpSolverBodyPool[ bodyAid ]; + btSolverBody& bodyB = m_tmpSolverBodyPool[ bodyBid ]; + constraints[ j ]->solveConstraintObsolete( bodyA, bodyB, infoGlobal.m_timeStep ); + } + } + } + + if (infoGlobal.m_solverMode & SOLVER_INTERLEAVE_CONTACT_AND_FRICTION_CONSTRAINTS) + { + // solve all contact, contact-friction, and rolling friction constraints interleaved + leastSquaresResidual += resolveAllContactConstraintsInterleaved(); + } + else//SOLVER_INTERLEAVE_CONTACT_AND_FRICTION_CONSTRAINTS + { + // don't interleave them + // solve all contact constraints + leastSquaresResidual += resolveAllContactConstraints(); + + // solve all contact friction constraints + leastSquaresResidual += resolveAllContactFrictionConstraints(); + + // solve all rolling friction constraints + leastSquaresResidual += resolveAllRollingFrictionConstraints(); + } + } + } + return leastSquaresResidual; +} + + +btScalar btSequentialImpulseConstraintSolverMt::resolveMultipleJointConstraints( const btAlignedObjectArray& consIndices, int batchBegin, int batchEnd, int iteration ) +{ + btScalar leastSquaresResidual = 0.f; + for ( int iiCons = batchBegin; iiCons < batchEnd; ++iiCons ) + { + int iCons = consIndices[ iiCons ]; + const btSolverConstraint& constraint = m_tmpSolverNonContactConstraintPool[ iCons ]; + if ( iteration < constraint.m_overrideNumSolverIterations ) + { + btSolverBody& bodyA = m_tmpSolverBodyPool[ constraint.m_solverBodyIdA ]; + btSolverBody& bodyB = m_tmpSolverBodyPool[ constraint.m_solverBodyIdB ]; + btScalar residual = resolveSingleConstraintRowGeneric( bodyA, bodyB, constraint ); + leastSquaresResidual += residual*residual; + } + } + return leastSquaresResidual; +} + + +btScalar btSequentialImpulseConstraintSolverMt::resolveMultipleContactConstraints( const btAlignedObjectArray& consIndices, int batchBegin, int batchEnd ) +{ + btScalar leastSquaresResidual = 0.f; + for ( int iiCons = batchBegin; iiCons < batchEnd; ++iiCons ) + { + int iCons = consIndices[ iiCons ]; + const btSolverConstraint& solveManifold = m_tmpSolverContactConstraintPool[ iCons ]; + btSolverBody& bodyA = m_tmpSolverBodyPool[ solveManifold.m_solverBodyIdA ]; + btSolverBody& bodyB = m_tmpSolverBodyPool[ solveManifold.m_solverBodyIdB ]; + btScalar residual = resolveSingleConstraintRowLowerLimit( bodyA, bodyB, solveManifold ); + leastSquaresResidual += residual*residual; + } + return leastSquaresResidual; +} + + +btScalar btSequentialImpulseConstraintSolverMt::resolveMultipleContactFrictionConstraints( const btAlignedObjectArray& consIndices, int batchBegin, int batchEnd ) +{ + btScalar leastSquaresResidual = 0.f; + for ( int iiCons = batchBegin; iiCons < batchEnd; ++iiCons ) + { + int iContact = consIndices[ iiCons ]; + btScalar totalImpulse = m_tmpSolverContactConstraintPool[ iContact ].m_appliedImpulse; + + // apply sliding friction + if ( totalImpulse > 0.0f ) + { + int iBegin = iContact * m_numFrictionDirections; + int iEnd = iBegin + m_numFrictionDirections; + for ( int iFriction = iBegin; iFriction < iEnd; ++iFriction ) + { + btSolverConstraint& solveManifold = m_tmpSolverContactFrictionConstraintPool[ iFriction++ ]; + btAssert( solveManifold.m_frictionIndex == iContact ); + + solveManifold.m_lowerLimit = -( solveManifold.m_friction*totalImpulse ); + solveManifold.m_upperLimit = solveManifold.m_friction*totalImpulse; + + btSolverBody& bodyA = m_tmpSolverBodyPool[ solveManifold.m_solverBodyIdA ]; + btSolverBody& bodyB = m_tmpSolverBodyPool[ solveManifold.m_solverBodyIdB ]; + btScalar residual = resolveSingleConstraintRowGeneric( bodyA, bodyB, solveManifold ); + leastSquaresResidual += residual*residual; + } + } + } + return leastSquaresResidual; +} + + +btScalar btSequentialImpulseConstraintSolverMt::resolveMultipleContactRollingFrictionConstraints( const btAlignedObjectArray& consIndices, int batchBegin, int batchEnd ) +{ + btScalar leastSquaresResidual = 0.f; + for ( int iiCons = batchBegin; iiCons < batchEnd; ++iiCons ) + { + int iContact = consIndices[ iiCons ]; + int iFirstRollingFriction = m_rollingFrictionIndexTable[ iContact ]; + if ( iFirstRollingFriction >= 0 ) + { + btScalar totalImpulse = m_tmpSolverContactConstraintPool[ iContact ].m_appliedImpulse; + // apply rolling friction + if ( totalImpulse > 0.0f ) + { + int iBegin = iFirstRollingFriction; + int iEnd = iBegin + 3; + for ( int iRollingFric = iBegin; iRollingFric < iEnd; ++iRollingFric ) + { + btSolverConstraint& rollingFrictionConstraint = m_tmpSolverContactRollingFrictionConstraintPool[ iRollingFric ]; + if ( rollingFrictionConstraint.m_frictionIndex != iContact ) + { + break; + } + btScalar rollingFrictionMagnitude = rollingFrictionConstraint.m_friction*totalImpulse; + if ( rollingFrictionMagnitude > rollingFrictionConstraint.m_friction ) + { + rollingFrictionMagnitude = rollingFrictionConstraint.m_friction; + } + + rollingFrictionConstraint.m_lowerLimit = -rollingFrictionMagnitude; + rollingFrictionConstraint.m_upperLimit = rollingFrictionMagnitude; + + btScalar residual = resolveSingleConstraintRowGeneric( m_tmpSolverBodyPool[ rollingFrictionConstraint.m_solverBodyIdA ], m_tmpSolverBodyPool[ rollingFrictionConstraint.m_solverBodyIdB ], rollingFrictionConstraint ); + leastSquaresResidual += residual*residual; + } + } + } + } + return leastSquaresResidual; +} + + +btScalar btSequentialImpulseConstraintSolverMt::resolveMultipleContactConstraintsInterleaved( const btAlignedObjectArray& contactIndices, + int batchBegin, + int batchEnd + ) +{ + btScalar leastSquaresResidual = 0.f; + int numPoolConstraints = m_tmpSolverContactConstraintPool.size(); + + for ( int iiCons = batchBegin; iiCons < batchEnd; iiCons++ ) + { + btScalar totalImpulse = 0; + int iContact = contactIndices[ iiCons ]; + // apply penetration constraint + { + const btSolverConstraint& solveManifold = m_tmpSolverContactConstraintPool[ iContact ]; + btScalar residual = resolveSingleConstraintRowLowerLimit( m_tmpSolverBodyPool[ solveManifold.m_solverBodyIdA ], m_tmpSolverBodyPool[ solveManifold.m_solverBodyIdB ], solveManifold ); + leastSquaresResidual += residual*residual; + totalImpulse = solveManifold.m_appliedImpulse; + } + + // apply sliding friction + if ( totalImpulse > 0.0f ) + { + int iBegin = iContact * m_numFrictionDirections; + int iEnd = iBegin + m_numFrictionDirections; + for ( int iFriction = iBegin; iFriction < iEnd; ++iFriction ) + { + btSolverConstraint& solveManifold = m_tmpSolverContactFrictionConstraintPool[ iFriction ]; + btAssert( solveManifold.m_frictionIndex == iContact ); + + solveManifold.m_lowerLimit = -( solveManifold.m_friction*totalImpulse ); + solveManifold.m_upperLimit = solveManifold.m_friction*totalImpulse; + + btSolverBody& bodyA = m_tmpSolverBodyPool[ solveManifold.m_solverBodyIdA ]; + btSolverBody& bodyB = m_tmpSolverBodyPool[ solveManifold.m_solverBodyIdB ]; + btScalar residual = resolveSingleConstraintRowGeneric( bodyA, bodyB, solveManifold ); + leastSquaresResidual += residual*residual; + } + } + + // apply rolling friction + int iFirstRollingFriction = m_rollingFrictionIndexTable[ iContact ]; + if ( totalImpulse > 0.0f && iFirstRollingFriction >= 0) + { + int iBegin = iFirstRollingFriction; + int iEnd = iBegin + 3; + for ( int iRollingFric = iBegin; iRollingFric < iEnd; ++iRollingFric ) + { + btSolverConstraint& rollingFrictionConstraint = m_tmpSolverContactRollingFrictionConstraintPool[ iRollingFric ]; + if ( rollingFrictionConstraint.m_frictionIndex != iContact ) + { + break; + } + btScalar rollingFrictionMagnitude = rollingFrictionConstraint.m_friction*totalImpulse; + if ( rollingFrictionMagnitude > rollingFrictionConstraint.m_friction ) + { + rollingFrictionMagnitude = rollingFrictionConstraint.m_friction; + } + + rollingFrictionConstraint.m_lowerLimit = -rollingFrictionMagnitude; + rollingFrictionConstraint.m_upperLimit = rollingFrictionMagnitude; + + btScalar residual = resolveSingleConstraintRowGeneric( m_tmpSolverBodyPool[ rollingFrictionConstraint.m_solverBodyIdA ], m_tmpSolverBodyPool[ rollingFrictionConstraint.m_solverBodyIdB ], rollingFrictionConstraint ); + leastSquaresResidual += residual*residual; + } + } + } + return leastSquaresResidual; +} + + +void btSequentialImpulseConstraintSolverMt::randomizeBatchedConstraintOrdering( btBatchedConstraints* batchedConstraints ) +{ + btBatchedConstraints& bc = *batchedConstraints; + // randomize ordering of phases + for ( int ii = 1; ii < bc.m_phaseOrder.size(); ++ii ) + { + int iSwap = btRandInt2( ii + 1 ); + bc.m_phaseOrder.swap( ii, iSwap ); + } + + // for each batch, + for ( int iBatch = 0; iBatch < bc.m_batches.size(); ++iBatch ) + { + // randomize ordering of constraints within the batch + const btBatchedConstraints::Range& batch = bc.m_batches[ iBatch ]; + for ( int iiCons = batch.begin; iiCons < batch.end; ++iiCons ) + { + int iSwap = batch.begin + btRandInt2( iiCons - batch.begin + 1 ); + btAssert(iSwap >= batch.begin && iSwap < batch.end); + bc.m_constraintIndices.swap( iiCons, iSwap ); + } + } +} + + +void btSequentialImpulseConstraintSolverMt::randomizeConstraintOrdering(int iteration, int numIterations) +{ + // randomize ordering of joint constraints + randomizeBatchedConstraintOrdering( &m_batchedJointConstraints ); + + //contact/friction constraints are not solved more than numIterations + if ( iteration < numIterations ) + { + randomizeBatchedConstraintOrdering( &m_batchedContactConstraints ); + } +} + + +struct JointSolverLoop : public btIParallelSumBody +{ + btSequentialImpulseConstraintSolverMt* m_solver; + const btBatchedConstraints* m_bc; + int m_iteration; + + JointSolverLoop( btSequentialImpulseConstraintSolverMt* solver, const btBatchedConstraints* bc, int iteration ) + { + m_solver = solver; + m_bc = bc; + m_iteration = iteration; + } + btScalar sumLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + BT_PROFILE( "JointSolverLoop" ); + btScalar sum = 0; + for ( int iBatch = iBegin; iBatch < iEnd; ++iBatch ) + { + const btBatchedConstraints::Range& batch = m_bc->m_batches[ iBatch ]; + sum += m_solver->resolveMultipleJointConstraints( m_bc->m_constraintIndices, batch.begin, batch.end, m_iteration ); + } + return sum; + } +}; + + +btScalar btSequentialImpulseConstraintSolverMt::resolveAllJointConstraints(int iteration) +{ + BT_PROFILE( "resolveAllJointConstraints" ); + const btBatchedConstraints& batchedCons = m_batchedJointConstraints; + JointSolverLoop loop( this, &batchedCons, iteration ); + btScalar leastSquaresResidual = 0.f; + for ( int iiPhase = 0; iiPhase < batchedCons.m_phases.size(); ++iiPhase ) + { + int iPhase = batchedCons.m_phaseOrder[ iiPhase ]; + const btBatchedConstraints::Range& phase = batchedCons.m_phases[ iPhase ]; + int grainSize = 1; + leastSquaresResidual += btParallelSum( phase.begin, phase.end, grainSize, loop ); + } + return leastSquaresResidual; +} + + +struct ContactSolverLoop : public btIParallelSumBody +{ + btSequentialImpulseConstraintSolverMt* m_solver; + const btBatchedConstraints* m_bc; + + ContactSolverLoop( btSequentialImpulseConstraintSolverMt* solver, const btBatchedConstraints* bc ) + { + m_solver = solver; + m_bc = bc; + } + btScalar sumLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + BT_PROFILE( "ContactSolverLoop" ); + btScalar sum = 0; + for ( int iBatch = iBegin; iBatch < iEnd; ++iBatch ) + { + const btBatchedConstraints::Range& batch = m_bc->m_batches[ iBatch ]; + sum += m_solver->resolveMultipleContactConstraints( m_bc->m_constraintIndices, batch.begin, batch.end ); + } + return sum; + } +}; + + +btScalar btSequentialImpulseConstraintSolverMt::resolveAllContactConstraints() +{ + BT_PROFILE( "resolveAllContactConstraints" ); + const btBatchedConstraints& batchedCons = m_batchedContactConstraints; + ContactSolverLoop loop( this, &batchedCons ); + btScalar leastSquaresResidual = 0.f; + for ( int iiPhase = 0; iiPhase < batchedCons.m_phases.size(); ++iiPhase ) + { + int iPhase = batchedCons.m_phaseOrder[ iiPhase ]; + const btBatchedConstraints::Range& phase = batchedCons.m_phases[ iPhase ]; + int grainSize = batchedCons.m_phaseGrainSize[iPhase]; + leastSquaresResidual += btParallelSum( phase.begin, phase.end, grainSize, loop ); + } + return leastSquaresResidual; +} + + +struct ContactFrictionSolverLoop : public btIParallelSumBody +{ + btSequentialImpulseConstraintSolverMt* m_solver; + const btBatchedConstraints* m_bc; + + ContactFrictionSolverLoop( btSequentialImpulseConstraintSolverMt* solver, const btBatchedConstraints* bc ) + { + m_solver = solver; + m_bc = bc; + } + btScalar sumLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + BT_PROFILE( "ContactFrictionSolverLoop" ); + btScalar sum = 0; + for ( int iBatch = iBegin; iBatch < iEnd; ++iBatch ) + { + const btBatchedConstraints::Range& batch = m_bc->m_batches[ iBatch ]; + sum += m_solver->resolveMultipleContactFrictionConstraints( m_bc->m_constraintIndices, batch.begin, batch.end ); + } + return sum; + } +}; + + +btScalar btSequentialImpulseConstraintSolverMt::resolveAllContactFrictionConstraints() +{ + BT_PROFILE( "resolveAllContactFrictionConstraints" ); + const btBatchedConstraints& batchedCons = m_batchedContactConstraints; + ContactFrictionSolverLoop loop( this, &batchedCons ); + btScalar leastSquaresResidual = 0.f; + for ( int iiPhase = 0; iiPhase < batchedCons.m_phases.size(); ++iiPhase ) + { + int iPhase = batchedCons.m_phaseOrder[ iiPhase ]; + const btBatchedConstraints::Range& phase = batchedCons.m_phases[ iPhase ]; + int grainSize = batchedCons.m_phaseGrainSize[iPhase]; + leastSquaresResidual += btParallelSum( phase.begin, phase.end, grainSize, loop ); + } + return leastSquaresResidual; +} + + +struct InterleavedContactSolverLoop : public btIParallelSumBody +{ + btSequentialImpulseConstraintSolverMt* m_solver; + const btBatchedConstraints* m_bc; + + InterleavedContactSolverLoop( btSequentialImpulseConstraintSolverMt* solver, const btBatchedConstraints* bc ) + { + m_solver = solver; + m_bc = bc; + } + btScalar sumLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + BT_PROFILE( "InterleavedContactSolverLoop" ); + btScalar sum = 0; + for ( int iBatch = iBegin; iBatch < iEnd; ++iBatch ) + { + const btBatchedConstraints::Range& batch = m_bc->m_batches[ iBatch ]; + sum += m_solver->resolveMultipleContactConstraintsInterleaved( m_bc->m_constraintIndices, batch.begin, batch.end ); + } + return sum; + } +}; + + +btScalar btSequentialImpulseConstraintSolverMt::resolveAllContactConstraintsInterleaved() +{ + BT_PROFILE( "resolveAllContactConstraintsInterleaved" ); + const btBatchedConstraints& batchedCons = m_batchedContactConstraints; + InterleavedContactSolverLoop loop( this, &batchedCons ); + btScalar leastSquaresResidual = 0.f; + for ( int iiPhase = 0; iiPhase < batchedCons.m_phases.size(); ++iiPhase ) + { + int iPhase = batchedCons.m_phaseOrder[ iiPhase ]; + const btBatchedConstraints::Range& phase = batchedCons.m_phases[ iPhase ]; + int grainSize = 1; + leastSquaresResidual += btParallelSum( phase.begin, phase.end, grainSize, loop ); + } + return leastSquaresResidual; +} + + +struct ContactRollingFrictionSolverLoop : public btIParallelSumBody +{ + btSequentialImpulseConstraintSolverMt* m_solver; + const btBatchedConstraints* m_bc; + + ContactRollingFrictionSolverLoop( btSequentialImpulseConstraintSolverMt* solver, const btBatchedConstraints* bc ) + { + m_solver = solver; + m_bc = bc; + } + btScalar sumLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + BT_PROFILE( "ContactFrictionSolverLoop" ); + btScalar sum = 0; + for ( int iBatch = iBegin; iBatch < iEnd; ++iBatch ) + { + const btBatchedConstraints::Range& batch = m_bc->m_batches[ iBatch ]; + sum += m_solver->resolveMultipleContactRollingFrictionConstraints( m_bc->m_constraintIndices, batch.begin, batch.end ); + } + return sum; + } +}; + + +btScalar btSequentialImpulseConstraintSolverMt::resolveAllRollingFrictionConstraints() +{ + BT_PROFILE( "resolveAllRollingFrictionConstraints" ); + btScalar leastSquaresResidual = 0.f; + // + // We do not generate batches for rolling friction constraints. We assume that + // one of two cases is true: + // + // 1. either most bodies in the simulation have rolling friction, in which case we can use the + // batches for contacts and use a lookup table to translate contact indices to rolling friction + // (ignoring any contact indices that don't map to a rolling friction constraint). As long as + // most contacts have a corresponding rolling friction constraint, this should parallelize well. + // + // -OR- + // + // 2. few bodies in the simulation have rolling friction, so it is not worth trying to use the + // batches from contacts as most of the contacts won't have corresponding rolling friction + // constraints and most threads would end up doing very little work. Most of the time would + // go to threading overhead, so we don't bother with threading. + // + int numRollingFrictionPoolConstraints = m_tmpSolverContactRollingFrictionConstraintPool.size(); + if (numRollingFrictionPoolConstraints >= m_tmpSolverContactConstraintPool.size()) + { + // use batching if there are many rolling friction constraints + const btBatchedConstraints& batchedCons = m_batchedContactConstraints; + ContactRollingFrictionSolverLoop loop( this, &batchedCons ); + btScalar leastSquaresResidual = 0.f; + for ( int iiPhase = 0; iiPhase < batchedCons.m_phases.size(); ++iiPhase ) + { + int iPhase = batchedCons.m_phaseOrder[ iiPhase ]; + const btBatchedConstraints::Range& phase = batchedCons.m_phases[ iPhase ]; + int grainSize = 1; + leastSquaresResidual += btParallelSum( phase.begin, phase.end, grainSize, loop ); + } + } + else + { + // no batching, also ignores SOLVER_RANDMIZE_ORDER + for ( int j = 0; j < numRollingFrictionPoolConstraints; j++ ) + { + btSolverConstraint& rollingFrictionConstraint = m_tmpSolverContactRollingFrictionConstraintPool[ j ]; + if ( rollingFrictionConstraint.m_frictionIndex >= 0 ) + { + btScalar totalImpulse = m_tmpSolverContactConstraintPool[ rollingFrictionConstraint.m_frictionIndex ].m_appliedImpulse; + if ( totalImpulse > 0.0f ) + { + btScalar rollingFrictionMagnitude = rollingFrictionConstraint.m_friction*totalImpulse; + if ( rollingFrictionMagnitude > rollingFrictionConstraint.m_friction ) + rollingFrictionMagnitude = rollingFrictionConstraint.m_friction; + + rollingFrictionConstraint.m_lowerLimit = -rollingFrictionMagnitude; + rollingFrictionConstraint.m_upperLimit = rollingFrictionMagnitude; + + btScalar residual = resolveSingleConstraintRowGeneric( m_tmpSolverBodyPool[ rollingFrictionConstraint.m_solverBodyIdA ], m_tmpSolverBodyPool[ rollingFrictionConstraint.m_solverBodyIdB ], rollingFrictionConstraint ); + leastSquaresResidual += residual*residual; + } + } + } + } + return leastSquaresResidual; +} + + +void btSequentialImpulseConstraintSolverMt::internalWriteBackContacts( int iBegin, int iEnd, const btContactSolverInfo& infoGlobal ) +{ + BT_PROFILE("internalWriteBackContacts"); + writeBackContacts(iBegin, iEnd, infoGlobal); + //for ( int iContact = iBegin; iContact < iEnd; ++iContact) + //{ + // const btSolverConstraint& contactConstraint = m_tmpSolverContactConstraintPool[ iContact ]; + // btManifoldPoint* pt = (btManifoldPoint*) contactConstraint.m_originalContactPoint; + // btAssert( pt ); + // pt->m_appliedImpulse = contactConstraint.m_appliedImpulse; + // pt->m_appliedImpulseLateral1 = m_tmpSolverContactFrictionConstraintPool[ contactConstraint.m_frictionIndex ].m_appliedImpulse; + // if ( m_numFrictionDirections == 2 ) + // { + // pt->m_appliedImpulseLateral2 = m_tmpSolverContactFrictionConstraintPool[ contactConstraint.m_frictionIndex + 1 ].m_appliedImpulse; + // } + //} +} + + +void btSequentialImpulseConstraintSolverMt::internalWriteBackJoints( int iBegin, int iEnd, const btContactSolverInfo& infoGlobal ) +{ + BT_PROFILE("internalWriteBackJoints"); + writeBackJoints(iBegin, iEnd, infoGlobal); +} + + +void btSequentialImpulseConstraintSolverMt::internalWriteBackBodies( int iBegin, int iEnd, const btContactSolverInfo& infoGlobal ) +{ + BT_PROFILE("internalWriteBackBodies"); + writeBackBodies( iBegin, iEnd, infoGlobal ); +} + + +struct WriteContactPointsLoop : public btIParallelForBody +{ + btSequentialImpulseConstraintSolverMt* m_solver; + const btContactSolverInfo* m_infoGlobal; + + WriteContactPointsLoop( btSequentialImpulseConstraintSolverMt* solver, const btContactSolverInfo& infoGlobal ) + { + m_solver = solver; + m_infoGlobal = &infoGlobal; + } + void forLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + m_solver->internalWriteBackContacts( iBegin, iEnd, *m_infoGlobal ); + } +}; + + +struct WriteJointsLoop : public btIParallelForBody +{ + btSequentialImpulseConstraintSolverMt* m_solver; + const btContactSolverInfo* m_infoGlobal; + + WriteJointsLoop( btSequentialImpulseConstraintSolverMt* solver, const btContactSolverInfo& infoGlobal ) + { + m_solver = solver; + m_infoGlobal = &infoGlobal; + } + void forLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + m_solver->internalWriteBackJoints( iBegin, iEnd, *m_infoGlobal ); + } +}; + + +struct WriteBodiesLoop : public btIParallelForBody +{ + btSequentialImpulseConstraintSolverMt* m_solver; + const btContactSolverInfo* m_infoGlobal; + + WriteBodiesLoop( btSequentialImpulseConstraintSolverMt* solver, const btContactSolverInfo& infoGlobal ) + { + m_solver = solver; + m_infoGlobal = &infoGlobal; + } + void forLoop( int iBegin, int iEnd ) const BT_OVERRIDE + { + m_solver->internalWriteBackBodies( iBegin, iEnd, *m_infoGlobal ); + } +}; + + +btScalar btSequentialImpulseConstraintSolverMt::solveGroupCacheFriendlyFinish(btCollisionObject** bodies, int numBodies, const btContactSolverInfo& infoGlobal) +{ + BT_PROFILE("solveGroupCacheFriendlyFinish"); + + if (infoGlobal.m_solverMode & SOLVER_USE_WARMSTARTING) + { + WriteContactPointsLoop loop( this, infoGlobal ); + int grainSize = 500; + btParallelFor( 0, m_tmpSolverContactConstraintPool.size(), grainSize, loop ); + } + + { + WriteJointsLoop loop( this, infoGlobal ); + int grainSize = 400; + btParallelFor( 0, m_tmpSolverNonContactConstraintPool.size(), grainSize, loop ); + } + { + WriteBodiesLoop loop( this, infoGlobal ); + int grainSize = 100; + btParallelFor( 0, m_tmpSolverBodyPool.size(), grainSize, loop ); + } + + m_tmpSolverContactConstraintPool.resizeNoInitialize(0); + m_tmpSolverNonContactConstraintPool.resizeNoInitialize(0); + m_tmpSolverContactFrictionConstraintPool.resizeNoInitialize(0); + m_tmpSolverContactRollingFrictionConstraintPool.resizeNoInitialize(0); + + m_tmpSolverBodyPool.resizeNoInitialize(0); + return 0.f; +} + diff --git a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.h b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.h new file mode 100644 index 000000000..0577d8d2d --- /dev/null +++ b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.h @@ -0,0 +1,154 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_MT_H +#define BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_MT_H + +#include "btSequentialImpulseConstraintSolver.h" +#include "btBatchedConstraints.h" +#include "LinearMath/btThreads.h" + +/// +/// btSequentialImpulseConstraintSolverMt +/// +/// A multithreaded variant of the sequential impulse constraint solver. The constraints to be solved are grouped into +/// batches and phases where each batch of constraints within a given phase can be solved in parallel with the rest. +/// Ideally we want as few phases as possible, and each phase should have many batches, and all of the batches should +/// have about the same number of constraints. +/// This method works best on a large island of many constraints. +/// +/// Supports all of the features of the normal sequential impulse solver such as: +/// - split penetration impulse +/// - rolling friction +/// - interleaving constraints +/// - warmstarting +/// - 2 friction directions +/// - randomized constraint ordering +/// - early termination when leastSquaresResidualThreshold is satisfied +/// +/// When the SOLVER_INTERLEAVE_CONTACT_AND_FRICTION_CONSTRAINTS flag is enabled, unlike the normal SequentialImpulse solver, +/// the rolling friction is interleaved as well. +/// Interleaving the contact penetration constraints with friction reduces the number of parallel loops that need to be done, +/// which reduces threading overhead so it can be a performance win, however, it does seem to produce a less stable simulation, +/// at least on stacks of blocks. +/// +/// When the SOLVER_RANDMIZE_ORDER flag is enabled, the ordering of phases, and the ordering of constraints within each batch +/// is randomized, however it does not swap constraints between batches. +/// This is to avoid regenerating the batches for each solver iteration which would be quite costly in performance. +/// +/// Note that a non-zero leastSquaresResidualThreshold could possibly affect the determinism of the simulation +/// if the task scheduler's parallelSum operation is non-deterministic. The parallelSum operation can be non-deterministic +/// because floating point addition is not associative due to rounding errors. +/// The task scheduler can and should ensure that the result of any parallelSum operation is deterministic. +/// +ATTRIBUTE_ALIGNED16(class) btSequentialImpulseConstraintSolverMt : public btSequentialImpulseConstraintSolver +{ +public: + virtual void solveGroupCacheFriendlySplitImpulseIterations(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer) BT_OVERRIDE; + virtual btScalar solveSingleIteration(int iteration, btCollisionObject** bodies ,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer) BT_OVERRIDE; + virtual btScalar solveGroupCacheFriendlySetup(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer) BT_OVERRIDE; + virtual btScalar solveGroupCacheFriendlyFinish(btCollisionObject** bodies, int numBodies, const btContactSolverInfo& infoGlobal) BT_OVERRIDE; + + // temp struct used to collect info from persistent manifolds into a cache-friendly struct using multiple threads + struct btContactManifoldCachedInfo + { + static const int MAX_NUM_CONTACT_POINTS = 4; + + int numTouchingContacts; + int solverBodyIds[ 2 ]; + int contactIndex; + int rollingFrictionIndex; + bool contactHasRollingFriction[ MAX_NUM_CONTACT_POINTS ]; + btManifoldPoint* contactPoints[ MAX_NUM_CONTACT_POINTS ]; + }; + // temp struct used for setting up joint constraints in parallel + struct JointParams + { + int m_solverConstraint; + int m_solverBodyA; + int m_solverBodyB; + }; + void internalInitMultipleJoints(btTypedConstraint** constraints, int iBegin, int iEnd); + void internalConvertMultipleJoints( const btAlignedObjectArray& jointParamsArray, btTypedConstraint** constraints, int iBegin, int iEnd, const btContactSolverInfo& infoGlobal ); + + // parameters to control batching + static bool s_allowNestedParallelForLoops; // whether to allow nested parallel operations + static int s_minimumContactManifoldsForBatching; // don't even try to batch if fewer manifolds than this + static btBatchedConstraints::BatchingMethod s_contactBatchingMethod; + static btBatchedConstraints::BatchingMethod s_jointBatchingMethod; + static int s_minBatchSize; // desired number of constraints per batch + static int s_maxBatchSize; + +protected: + static const int CACHE_LINE_SIZE = 64; + + btBatchedConstraints m_batchedContactConstraints; + btBatchedConstraints m_batchedJointConstraints; + int m_numFrictionDirections; + bool m_useBatching; + bool m_useObsoleteJointConstraints; + btAlignedObjectArray m_manifoldCachedInfoArray; + btAlignedObjectArray m_rollingFrictionIndexTable; // lookup table mapping contact index to rolling friction index + btSpinMutex m_bodySolverArrayMutex; + char m_antiFalseSharingPadding[CACHE_LINE_SIZE]; // padding to keep mutexes in separate cachelines + btSpinMutex m_kinematicBodyUniqueIdToSolverBodyTableMutex; + btAlignedObjectArray m_scratchMemory; + + virtual void randomizeConstraintOrdering( int iteration, int numIterations ); + virtual btScalar resolveAllJointConstraints( int iteration ); + virtual btScalar resolveAllContactConstraints(); + virtual btScalar resolveAllContactFrictionConstraints(); + virtual btScalar resolveAllContactConstraintsInterleaved(); + virtual btScalar resolveAllRollingFrictionConstraints(); + + virtual void setupBatchedContactConstraints(); + virtual void setupBatchedJointConstraints(); + virtual void convertJoints(btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal) BT_OVERRIDE; + virtual void convertContacts(btPersistentManifold** manifoldPtr, int numManifolds, const btContactSolverInfo& infoGlobal) BT_OVERRIDE; + virtual void convertBodies(btCollisionObject** bodies, int numBodies, const btContactSolverInfo& infoGlobal) BT_OVERRIDE; + + int getOrInitSolverBodyThreadsafe(btCollisionObject& body, btScalar timeStep); + void allocAllContactConstraints(btPersistentManifold** manifoldPtr, int numManifolds, const btContactSolverInfo& infoGlobal); + void setupAllContactConstraints(const btContactSolverInfo& infoGlobal); + void randomizeBatchedConstraintOrdering( btBatchedConstraints* batchedConstraints ); + +public: + + BT_DECLARE_ALIGNED_ALLOCATOR(); + + btSequentialImpulseConstraintSolverMt(); + virtual ~btSequentialImpulseConstraintSolverMt(); + + btScalar resolveMultipleJointConstraints( const btAlignedObjectArray& consIndices, int batchBegin, int batchEnd, int iteration ); + btScalar resolveMultipleContactConstraints( const btAlignedObjectArray& consIndices, int batchBegin, int batchEnd ); + btScalar resolveMultipleContactSplitPenetrationImpulseConstraints( const btAlignedObjectArray& consIndices, int batchBegin, int batchEnd ); + btScalar resolveMultipleContactFrictionConstraints( const btAlignedObjectArray& consIndices, int batchBegin, int batchEnd ); + btScalar resolveMultipleContactRollingFrictionConstraints( const btAlignedObjectArray& consIndices, int batchBegin, int batchEnd ); + btScalar resolveMultipleContactConstraintsInterleaved( const btAlignedObjectArray& consIndices, int batchBegin, int batchEnd ); + + void internalCollectContactManifoldCachedInfo(btContactManifoldCachedInfo* cachedInfoArray, btPersistentManifold** manifold, int numManifolds, const btContactSolverInfo& infoGlobal); + void internalAllocContactConstraints(const btContactManifoldCachedInfo* cachedInfoArray, int numManifolds); + void internalSetupContactConstraints(int iContact, const btContactSolverInfo& infoGlobal); + void internalConvertBodies(btCollisionObject** bodies, int iBegin, int iEnd, const btContactSolverInfo& infoGlobal); + void internalWriteBackContacts(int iBegin, int iEnd, const btContactSolverInfo& infoGlobal); + void internalWriteBackJoints(int iBegin, int iEnd, const btContactSolverInfo& infoGlobal); + void internalWriteBackBodies(int iBegin, int iEnd, const btContactSolverInfo& infoGlobal); +}; + + + + +#endif //BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_MT_H + diff --git a/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp b/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp index 1d10bad92..330bccb87 100644 --- a/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp +++ b/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp @@ -325,3 +325,14 @@ void btDiscreteDynamicsWorldMt::integrateTransforms( btScalar timeStep ) } } + +int btDiscreteDynamicsWorldMt::stepSimulation( btScalar timeStep, int maxSubSteps, btScalar fixedTimeStep ) +{ + int numSubSteps = btDiscreteDynamicsWorld::stepSimulation(timeStep, maxSubSteps, fixedTimeStep); + if (btITaskScheduler* scheduler = btGetTaskScheduler()) + { + // tell Bullet's threads to sleep, so other threads can run + scheduler->sleepWorkerThreadsHint(); + } + return numSubSteps; +} diff --git a/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h b/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h index 2f144cdda..a8cc22dd0 100644 --- a/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h +++ b/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h @@ -129,6 +129,8 @@ public: btCollisionConfiguration* collisionConfiguration ); virtual ~btDiscreteDynamicsWorldMt(); + + virtual int stepSimulation( btScalar timeStep, int maxSubSteps, btScalar fixedTimeStep ) BT_OVERRIDE; }; #endif //BT_DISCRETE_DYNAMICS_WORLD_H diff --git a/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp b/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp index 65e1a140e..54ac39aaf 100644 --- a/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp +++ b/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp @@ -22,6 +22,7 @@ subject to the following restrictions: #include "BulletCollision/CollisionDispatch/btCollisionObject.h" #include "BulletCollision/CollisionDispatch/btCollisionWorld.h" #include "BulletDynamics/ConstraintSolver/btTypedConstraint.h" +#include "BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.h" // for s_minimumContactManifoldsForBatching //#include #include "LinearMath/btQuickprof.h" @@ -589,14 +590,52 @@ struct UpdateIslandDispatcher : public btIParallelForBody } }; + void btSimulationIslandManagerMt::parallelIslandDispatch( btAlignedObjectArray* islandsPtr, IslandCallback* callback ) { BT_PROFILE( "parallelIslandDispatch" ); - int grainSize = 1; // iterations per task + // + // if there are islands with many contacts, it may be faster to submit these + // large islands *serially* to a single parallel constraint solver, and then later + // submit the remaining smaller islands in parallel to multiple sequential solvers. + // + // Some task schedulers do not deal well with nested parallelFor loops. One implementation + // of OpenMP was actually slower than doing everything single-threaded. Intel TBB + // on the other hand, seems to do a pretty respectable job with it. + // + // When solving islands in parallel, the worst case performance happens when there + // is one very large island and then perhaps a smattering of very small + // islands -- one worker thread takes the large island and the remaining workers + // tear through the smaller islands and then sit idle waiting for the first worker + // to finish. Solving islands in parallel works best when there are numerous small + // islands, roughly equal in size. + // + // By contrast, the other approach -- the parallel constraint solver -- is only + // able to deliver a worthwhile speedup when the island is large. For smaller islands, + // it is difficult to extract a useful amount of parallelism -- the overhead of grouping + // the constraints into batches and sending the batches to worker threads can nullify + // any gains from parallelism. + // + UpdateIslandDispatcher dispatcher; dispatcher.islandsPtr = islandsPtr; dispatcher.callback = callback; - btParallelFor( 0, islandsPtr->size(), grainSize, dispatcher ); + // We take advantage of the fact the islands are sorted in order of decreasing size + int iBegin = 0; + while (iBegin < islandsPtr->size()) + { + btSimulationIslandManagerMt::Island* island = (*islandsPtr)[ iBegin ]; + if (island->manifoldArray.size() < btSequentialImpulseConstraintSolverMt::s_minimumContactManifoldsForBatching) + { + // OK to submit the rest of the array in parallel + break; + } + ++iBegin; + } + // serial dispatch for large islands (if any) + dispatcher.forLoop(0, iBegin); + // parallel dispatch for rest + btParallelFor( iBegin, islandsPtr->size(), 1, dispatcher ); } diff --git a/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h b/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h index 9a781aaef..31a2053b4 100644 --- a/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h +++ b/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h @@ -106,5 +106,7 @@ public: } }; +extern int gLargeIslandManifoldCount; + #endif //BT_SIMULATION_ISLAND_MANAGER_H diff --git a/src/LinearMath/CMakeLists.txt b/src/LinearMath/CMakeLists.txt index ede21d9a7..0c8c0133a 100644 --- a/src/LinearMath/CMakeLists.txt +++ b/src/LinearMath/CMakeLists.txt @@ -14,6 +14,9 @@ SET(LinearMath_SRCS btSerializer64.cpp btThreads.cpp btVector3.cpp + TaskScheduler/btTaskScheduler.cpp + TaskScheduler/btThreadSupportPosix.cpp + TaskScheduler/btThreadSupportWin32.cpp ) SET(LinearMath_HDRS @@ -44,6 +47,7 @@ SET(LinearMath_HDRS btTransform.h btTransformUtil.h btVector3.h + TaskScheduler/btThreadSupportInterface.h ) ADD_LIBRARY(LinearMath ${LinearMath_SRCS} ${LinearMath_HDRS}) diff --git a/src/LinearMath/TaskScheduler/btTaskScheduler.cpp b/src/LinearMath/TaskScheduler/btTaskScheduler.cpp new file mode 100644 index 000000000..e02458367 --- /dev/null +++ b/src/LinearMath/TaskScheduler/btTaskScheduler.cpp @@ -0,0 +1,619 @@ + +#include "LinearMath/btMinMax.h" +#include "LinearMath/btAlignedObjectArray.h" +#include "LinearMath/btThreads.h" +#include "LinearMath/btQuickprof.h" +#include +#include + + +typedef void( *btThreadFunc )( void* userPtr, void* lsMemory ); +typedef void* ( *btThreadLocalStorageFunc )(); + +#if BT_THREADSAFE + +#include "btThreadSupportInterface.h" + + + + +/// +/// getNumHardwareThreads() +/// +/// +/// https://stackoverflow.com/questions/150355/programmatically-find-the-number-of-cores-on-a-machine +/// +#if __cplusplus >= 201103L + +#include + +int getNumHardwareThreads() +{ + return std::thread::hardware_concurrency(); +} + +#elif defined( _WIN32 ) + +#define WIN32_LEAN_AND_MEAN + +#include + +int getNumHardwareThreads() +{ + // caps out at 32 + SYSTEM_INFO info; + GetSystemInfo( &info ); + return info.dwNumberOfProcessors; +} + +#else + +int getNumHardwareThreads() +{ + return 0; // don't know +} + +#endif + + +void btSpinPause() +{ +#if defined( _WIN32 ) + YieldProcessor(); +#endif +} + + +struct WorkerThreadStatus +{ + enum Type + { + kInvalid, + kWaitingForWork, + kWorking, + kSleeping, + }; +}; + + +struct IJob +{ + virtual void executeJob(int threadId) = 0; +}; + +class ParallelForJob : public IJob +{ + const btIParallelForBody* mBody; + int mBegin; + int mEnd; + +public: + ParallelForJob( int iBegin, int iEnd, const btIParallelForBody& body ) + { + mBody = &body; + mBegin = iBegin; + mEnd = iEnd; + } + virtual void executeJob(int threadId) BT_OVERRIDE + { + BT_PROFILE( "executeJob" ); + + // call the functor body to do the work + mBody->forLoop( mBegin, mEnd ); + } +}; + +static const int kCacheLineSize = 64; + +struct ThreadLocalSum +{ + btScalar mSum; + char mCachePadding[ kCacheLineSize - sizeof( btScalar ) ]; +}; + +class ParallelSumJob : public IJob +{ + const btIParallelSumBody* mBody; + ThreadLocalSum* mSumArray; + int mBegin; + int mEnd; + +public: + ParallelSumJob( int iBegin, int iEnd, const btIParallelSumBody& body, ThreadLocalSum* sums ) + { + mBody = &body; + mSumArray = sums; + mBegin = iBegin; + mEnd = iEnd; + } + virtual void executeJob( int threadId ) BT_OVERRIDE + { + BT_PROFILE( "executeJob" ); + + // call the functor body to do the work + btScalar val = mBody->sumLoop( mBegin, mEnd ); + // by truncating bits of the result, we can make the parallelSum deterministic (at the expense of precision) + const float TRUNC_SCALE = float(1<<19); + val = floor(val*TRUNC_SCALE+0.5f)/TRUNC_SCALE; // truncate some bits + mSumArray[threadId].mSum += val; + } +}; + + +struct JobContext +{ + JobContext() + { + m_queueLock = NULL; + m_headIndex = 0; + m_tailIndex = 0; + m_workersShouldCheckQueue = false; + m_workersShouldSleep = false; + m_useSpinMutex = false; + m_coolDownTime = 1000; // 1000 microseconds + } + btCriticalSection* m_queueLock; + btSpinMutex m_mutex; + volatile bool m_workersShouldCheckQueue; + volatile bool m_workersShouldSleep; + + btAlignedObjectArray m_jobQueue; + bool m_queueIsEmpty; + int m_tailIndex; + int m_headIndex; + bool m_useSpinMutex; + unsigned int m_coolDownTime; + btClock m_clock; + + void lockQueue() + { + if ( m_useSpinMutex ) + { + m_mutex.lock(); + } + else + { + m_queueLock->lock(); + } + } + void unlockQueue() + { + if ( m_useSpinMutex ) + { + m_mutex.unlock(); + } + else + { + m_queueLock->unlock(); + } + } + void clearQueue() + { + lockQueue(); + m_headIndex = 0; + m_tailIndex = 0; + m_queueIsEmpty = true; + unlockQueue(); + m_jobQueue.resizeNoInitialize( 0 ); + } + void submitJob( IJob* job ) + { + m_jobQueue.push_back( job ); + lockQueue(); + m_tailIndex++; + m_queueIsEmpty = false; + unlockQueue(); + } + IJob* consumeJob() + { + if ( m_queueIsEmpty ) + { + // lock free path. even if this is taken erroneously it isn't harmful + return NULL; + } + IJob* job = NULL; + lockQueue(); + if ( !m_queueIsEmpty ) + { + job = m_jobQueue[ m_headIndex++ ]; + if ( m_headIndex == m_tailIndex ) + { + m_queueIsEmpty = true; + } + } + unlockQueue(); + return job; + } +}; + + +struct WorkerThreadLocalStorage +{ + int threadId; + WorkerThreadStatus::Type status; + int numJobsFinished; + btSpinMutex m_mutex; +}; + + +static void WorkerThreadFunc( void* userPtr, void* lsMemory ) +{ + BT_PROFILE( "WorkerThreadFunc" ); + WorkerThreadLocalStorage* localStorage = (WorkerThreadLocalStorage*) lsMemory; + JobContext* jobContext = (JobContext*) userPtr; + + bool shouldSleep = false; + while (! shouldSleep) + { + // do work + localStorage->m_mutex.lock(); + while ( IJob* job = jobContext->consumeJob() ) + { + localStorage->status = WorkerThreadStatus::kWorking; + job->executeJob( localStorage->threadId ); + localStorage->numJobsFinished++; + } + localStorage->status = WorkerThreadStatus::kWaitingForWork; + localStorage->m_mutex.unlock(); + unsigned long long int clockStart = jobContext->m_clock.getTimeMicroseconds(); + // while queue is empty, + while (jobContext->m_queueIsEmpty) + { + // todo: spin wait a bit to avoid hammering the empty queue + btSpinPause(); + if ( jobContext->m_workersShouldSleep ) + { + shouldSleep = true; + break; + } + // if jobs are incoming, + if (jobContext->m_workersShouldCheckQueue) + { + clockStart = jobContext->m_clock.getTimeMicroseconds(); // reset clock + } + else + { + // if no jobs incoming and queue has been empty for the cooldown time, sleep + unsigned long long int timeElapsed = jobContext->m_clock.getTimeMicroseconds() - clockStart; + if (timeElapsed > jobContext->m_coolDownTime) + { + shouldSleep = true; + break; + } + } + } + } + + // go idle + localStorage->m_mutex.lock(); + localStorage->status = WorkerThreadStatus::kSleeping; + localStorage->m_mutex.unlock(); +} + + +static void* WorkerThreadAllocFunc() +{ + return new WorkerThreadLocalStorage; +} + + + +class btTaskSchedulerDefault : public btITaskScheduler +{ + JobContext m_jobContext; + btThreadSupportInterface* m_threadSupport; + btAlignedObjectArray m_jobMem; + btAlignedObjectArray m_threadLocalMem; + btSpinMutex m_antiNestingLock; // prevent nested parallel-for + int m_numThreads; + int m_numWorkerThreads; + int m_maxNumThreads; + int m_numJobs; +public: + + btTaskSchedulerDefault() : btITaskScheduler("ThreadSupport") + { + m_threadSupport = NULL; + } + + virtual ~btTaskSchedulerDefault() + { + shutdown(); + } + + void init() + { + btThreadSupportInterface::ConstructionInfo constructionInfo( "TaskScheduler", WorkerThreadFunc, WorkerThreadAllocFunc ); + m_threadSupport = btThreadSupportInterface::create( constructionInfo ); + + m_numWorkerThreads = m_threadSupport->getNumWorkerThreads(); + m_maxNumThreads = m_threadSupport->getNumWorkerThreads() + 1; + m_numThreads = m_maxNumThreads; + m_jobContext.m_queueLock = m_threadSupport->createCriticalSection(); + for ( int i = 0; i < m_numWorkerThreads; i++ ) + { + WorkerThreadLocalStorage* storage = (WorkerThreadLocalStorage*) m_threadSupport->getThreadLocalMemory( i ); + btAssert( storage ); + storage->threadId = i + 1; // workers start at 1 + storage->status = WorkerThreadStatus::kSleeping; + } + setWorkersActive( false ); // no work for them yet + setNumThreads( m_threadSupport->getCacheFriendlyNumThreads() ); + } + + virtual void shutdown() + { + setWorkersActive( false ); + waitForWorkersToSleep(); + m_threadSupport->deleteCriticalSection( m_jobContext.m_queueLock ); + m_jobContext.m_queueLock = NULL; + + delete m_threadSupport; + m_threadSupport = NULL; + } + + void setWorkersActive( bool active ) + { + m_jobContext.m_workersShouldCheckQueue = active; + } + + virtual int getMaxNumThreads() const BT_OVERRIDE + { + return m_maxNumThreads; + } + + virtual int getNumThreads() const BT_OVERRIDE + { + return m_numThreads; + } + + virtual void setNumThreads( int numThreads ) BT_OVERRIDE + { + m_numThreads = btMax( btMin(numThreads, int(m_maxNumThreads)), 1 ); + m_numWorkerThreads = m_numThreads - 1; + } + + void waitJobs() + { + BT_PROFILE( "waitJobs" ); + // have the main thread work until the job queue is empty + int numMainThreadJobsFinished = 0; + while ( IJob* job = m_jobContext.consumeJob() ) + { + job->executeJob( 0 ); + numMainThreadJobsFinished++; + } + // done with jobs for now, tell workers to rest + setWorkersActive( false ); + + unsigned long long int clockStart = m_jobContext.m_clock.getTimeMicroseconds(); + // wait for workers to finish any jobs in progress + while ( true ) + { + int numWorkerJobsFinished = 0; + for ( int iWorker = 0; iWorker < m_numWorkerThreads; ++iWorker ) + { + WorkerThreadLocalStorage* storage = static_cast( m_threadSupport->getThreadLocalMemory( iWorker ) ); + storage->m_mutex.lock(); + numWorkerJobsFinished += storage->numJobsFinished; + storage->m_mutex.unlock(); + } + if (numWorkerJobsFinished + numMainThreadJobsFinished == m_numJobs) + { + break; + } + unsigned long long int timeElapsed = m_jobContext.m_clock.getTimeMicroseconds() - clockStart; + btAssert(timeElapsed < 1000); + if (timeElapsed > 100000) + { + break; + } + btSpinPause(); + } + } + + void wakeWorkers(int numWorkersToWake) + { + BT_PROFILE( "wakeWorkers" ); + btAssert( m_jobContext.m_workersShouldCheckQueue ); + int numDesiredWorkers = btMin(numWorkersToWake, m_numWorkerThreads); + int numActiveWorkers = 0; + for ( int iWorker = 0; iWorker < m_numWorkerThreads; ++iWorker ) + { + // note this count of active workers is not necessarily totally reliable, because a worker thread could be + // just about to put itself to sleep. So we may on occasion fail to wake up all the workers. It should be rare. + WorkerThreadLocalStorage* storage = static_cast( m_threadSupport->getThreadLocalMemory( iWorker ) ); + if (storage->status != WorkerThreadStatus::kSleeping) + { + numActiveWorkers++; + } + } + for ( int iWorker = 0; iWorker < m_numWorkerThreads && numActiveWorkers < numDesiredWorkers; ++iWorker ) + { + WorkerThreadLocalStorage* storage = static_cast( m_threadSupport->getThreadLocalMemory( iWorker ) ); + if (storage->status == WorkerThreadStatus::kSleeping) + { + m_threadSupport->runTask( iWorker, &m_jobContext ); + numActiveWorkers++; + } + } + } + + void waitForWorkersToSleep() + { + BT_PROFILE( "waitForWorkersToSleep" ); + m_jobContext.m_workersShouldSleep = true; + m_threadSupport->waitForAllTasks(); + for ( int i = 0; i < m_numWorkerThreads; i++ ) + { + WorkerThreadLocalStorage* storage = static_cast( m_threadSupport->getThreadLocalMemory(i) ); + btAssert( storage ); + btAssert( storage->status == WorkerThreadStatus::kSleeping ); + } + } + + virtual void sleepWorkerThreadsHint() BT_OVERRIDE + { + BT_PROFILE( "sleepWorkerThreadsHint" ); + // hint the task scheduler that we may not be using these threads for a little while + m_jobContext.m_workersShouldSleep = true; + } + + void prepareWorkerThreads() + { + for ( int iWorker = 0; iWorker < m_numWorkerThreads; ++iWorker ) + { + WorkerThreadLocalStorage* storage = static_cast( m_threadSupport->getThreadLocalMemory( iWorker ) ); + storage->m_mutex.lock(); + storage->numJobsFinished = 0; + storage->m_mutex.unlock(); + } + m_jobContext.m_workersShouldSleep = false; + setWorkersActive( true ); + } + + virtual void parallelFor( int iBegin, int iEnd, int grainSize, const btIParallelForBody& body ) BT_OVERRIDE + { + BT_PROFILE( "parallelFor_ThreadSupport" ); + btAssert( iEnd >= iBegin ); + btAssert( grainSize >= 1 ); + int iterationCount = iEnd - iBegin; + if ( iterationCount > grainSize && m_numWorkerThreads > 0 && m_antiNestingLock.tryLock() ) + { + typedef ParallelForJob JobType; + int jobCount = ( iterationCount + grainSize - 1 ) / grainSize; + m_numJobs = jobCount; + btAssert( jobCount >= 2 ); // need more than one job for multithreading + int jobSize = sizeof( JobType ); + int jobBufSize = jobSize * jobCount; + // make sure we have enough memory allocated to store jobs + if ( jobBufSize > m_jobMem.size() ) + { + m_jobMem.resize( jobBufSize ); + } + // make sure job queue is big enough + if ( jobCount > m_jobContext.m_jobQueue.capacity() ) + { + m_jobContext.m_jobQueue.reserve( jobCount ); + } + + m_jobContext.clearQueue(); + // prepare worker threads for incoming work + prepareWorkerThreads(); + // submit all of the jobs + int iJob = 0; + JobType* jobs = reinterpret_cast( &m_jobMem[ 0 ] ); + for ( int i = iBegin; i < iEnd; i += grainSize ) + { + btAssert( iJob < jobCount ); + int iE = btMin( i + grainSize, iEnd ); + JobType& job = jobs[ iJob ]; + new ( (void*) &job ) ParallelForJob( i, iE, body ); // placement new + m_jobContext.submitJob( &job ); + iJob++; + } + wakeWorkers( jobCount - 1 ); + + // put the main thread to work on emptying the job queue and then wait for all workers to finish + waitJobs(); + m_antiNestingLock.unlock(); + } + else + { + BT_PROFILE( "parallelFor_mainThread" ); + // just run on main thread + body.forLoop( iBegin, iEnd ); + } + } + virtual btScalar parallelSum( int iBegin, int iEnd, int grainSize, const btIParallelSumBody& body ) BT_OVERRIDE + { + BT_PROFILE( "parallelSum_ThreadSupport" ); + btAssert( iEnd >= iBegin ); + btAssert( grainSize >= 1 ); + int iterationCount = iEnd - iBegin; + if ( iterationCount > grainSize && m_numWorkerThreads > 0 && m_antiNestingLock.tryLock() ) + { + typedef ParallelSumJob JobType; + int jobCount = ( iterationCount + grainSize - 1 ) / grainSize; + m_numJobs = jobCount; + btAssert( jobCount >= 2 ); // need more than one job for multithreading + int jobSize = sizeof( JobType ); + int jobBufSize = jobSize * jobCount; + // make sure we have enough memory allocated to store jobs + if ( jobBufSize > m_jobMem.size() ) + { + m_jobMem.resize( jobBufSize ); + } + // make sure job queue is big enough + if ( jobCount > m_jobContext.m_jobQueue.capacity() ) + { + m_jobContext.m_jobQueue.reserve( jobCount ); + } + // make sure thread local area is big enough + int threadLocalSize = m_numThreads * sizeof( ThreadLocalSum ); + if ( threadLocalSize > m_threadLocalMem.size() ) + { + m_threadLocalMem.resize( threadLocalSize ); + } + // initialize summation + ThreadLocalSum* threadLocalSum = reinterpret_cast( &m_threadLocalMem[ 0 ] ); + for ( int iThread = 0; iThread < m_numThreads; ++iThread ) + { + threadLocalSum[ iThread ].mSum = btScalar( 0 ); + } + + m_jobContext.clearQueue(); + // prepare worker threads for incoming work + prepareWorkerThreads(); + // submit all of the jobs + int iJob = 0; + JobType* jobs = reinterpret_cast( &m_jobMem[ 0 ] ); + for ( int i = iBegin; i < iEnd; i += grainSize ) + { + btAssert( iJob < jobCount ); + int iE = btMin( i + grainSize, iEnd ); + JobType& job = jobs[ iJob ]; + new ( (void*) &job ) ParallelSumJob( i, iE, body, threadLocalSum ); // placement new + m_jobContext.submitJob( &job ); + iJob++; + } + wakeWorkers( jobCount - 1 ); + + // put the main thread to work on emptying the job queue and then wait for all workers to finish + waitJobs(); + m_antiNestingLock.unlock(); + + // add up all the thread sums + btScalar sum = btScalar(0); + for ( int iThread = 0; iThread < m_numThreads; ++iThread ) + { + sum += threadLocalSum[ iThread ].mSum; + } + return sum; + } + else + { + BT_PROFILE( "parallelSum_mainThread" ); + // just run on main thread + return body.sumLoop( iBegin, iEnd ); + } + } +}; + + + +btITaskScheduler* btCreateDefaultTaskScheduler() +{ + btTaskSchedulerDefault* ts = new btTaskSchedulerDefault(); + ts->init(); + return ts; +} + +#else // #if BT_THREADSAFE + +btITaskScheduler* btCreateDefaultTaskScheduler() +{ + return NULL; +} + +#endif // #else // #if BT_THREADSAFE \ No newline at end of file diff --git a/src/LinearMath/TaskScheduler/btThreadSupportInterface.h b/src/LinearMath/TaskScheduler/btThreadSupportInterface.h new file mode 100644 index 000000000..d537d7095 --- /dev/null +++ b/src/LinearMath/TaskScheduler/btThreadSupportInterface.h @@ -0,0 +1,75 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2018 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_THREAD_SUPPORT_INTERFACE_H +#define BT_THREAD_SUPPORT_INTERFACE_H + + + +class btCriticalSection +{ +public: + btCriticalSection() {} + virtual ~btCriticalSection() {} + + virtual void lock() = 0; + virtual void unlock() = 0; +}; + + +class btThreadSupportInterface +{ +public: + + virtual ~btThreadSupportInterface() {} + + virtual int getNumWorkerThreads() const = 0; // number of worker threads (total number of logical processors - 1) + virtual int getCacheFriendlyNumThreads() const = 0; // the number of logical processors sharing a single L3 cache + virtual void runTask( int threadIndex, void* userData ) = 0; + virtual void waitForAllTasks() = 0; + + virtual btCriticalSection* createCriticalSection() = 0; + virtual void deleteCriticalSection( btCriticalSection* criticalSection ) = 0; + + virtual void* getThreadLocalMemory( int taskId ) { return NULL; } + + typedef void( *ThreadFunc )( void* userPtr, void* lsMemory ); + typedef void* ( *MemorySetupFunc )( ); + + struct ConstructionInfo + { + ConstructionInfo( const char* uniqueName, + ThreadFunc userThreadFunc, + MemorySetupFunc lsMemoryFunc, + int threadStackSize = 65535 + ) + :m_uniqueName( uniqueName ), + m_userThreadFunc( userThreadFunc ), + m_lsMemoryFunc( lsMemoryFunc ), + m_threadStackSize( threadStackSize ) + { + } + + const char* m_uniqueName; + ThreadFunc m_userThreadFunc; + MemorySetupFunc m_lsMemoryFunc; + int m_threadStackSize; + }; + + static btThreadSupportInterface* create( const ConstructionInfo& info ); +}; + +#endif //BT_THREAD_SUPPORT_INTERFACE_H + diff --git a/src/LinearMath/TaskScheduler/btThreadSupportPosix.cpp b/src/LinearMath/TaskScheduler/btThreadSupportPosix.cpp new file mode 100644 index 000000000..5521fc555 --- /dev/null +++ b/src/LinearMath/TaskScheduler/btThreadSupportPosix.cpp @@ -0,0 +1,369 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2018 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#if BT_THREADSAFE && !defined( _WIN32 ) + + +#include "LinearMath/btScalar.h" +#include "LinearMath/btAlignedObjectArray.h" +#include "LinearMath/btThreads.h" +#include "LinearMath/btMinMax.h" +#include "btThreadSupportInterface.h" + +#include +#include +#include + + +#ifndef _XOPEN_SOURCE +#define _XOPEN_SOURCE 600 //for definition of pthread_barrier_t, see http://pages.cs.wisc.edu/~travitch/pthreads_primer.html +#endif //_XOPEN_SOURCE +#include +#include +#include //for sysconf + + +/// +/// getNumHardwareThreads() +/// +/// +/// https://stackoverflow.com/questions/150355/programmatically-find-the-number-of-cores-on-a-machine +/// +#if __cplusplus >= 201103L + +#include + +int btGetNumHardwareThreads() +{ + return std::thread::hardware_concurrency(); +} + +#else + +int btGetNumHardwareThreads() +{ + return sysconf( _SC_NPROCESSORS_ONLN ); +} + +#endif + + +// btThreadSupportPosix helps to initialize/shutdown libspe2, start/stop SPU tasks and communication +class btThreadSupportPosix : public btThreadSupportInterface +{ +public: + struct btThreadStatus + { + int m_taskId; + int m_commandId; + int m_status; + + ThreadFunc m_userThreadFunc; + void* m_userPtr; //for taskDesc etc + void* m_lsMemory; //initialized using PosixLocalStoreMemorySetupFunc + + pthread_t thread; + //each tread will wait until this signal to start its work + sem_t* startSemaphore; + + // this is a copy of m_mainSemaphore, + //each tread will signal once it is finished with its work + sem_t* m_mainSemaphore; + unsigned long threadUsed; + }; +private: + typedef unsigned long long UINT64; + + btAlignedObjectArray m_activeThreadStatus; + // m_mainSemaphoresemaphore will signal, if and how many threads are finished with their work + sem_t* m_mainSemaphore; + int m_numThreads; + UINT64 m_startedThreadsMask; + void startThreads( const ConstructionInfo& threadInfo ); + void stopThreads(); + int waitForResponse(); + +public: + btThreadSupportPosix( const ConstructionInfo& threadConstructionInfo ); + virtual ~btThreadSupportPosix(); + + virtual int getNumWorkerThreads() const BT_OVERRIDE { return m_numThreads; } + // TODO: return the number of logical processors sharing the first L3 cache + virtual int getCacheFriendlyNumThreads() const BT_OVERRIDE { return m_numThreads + 1; } + + virtual void runTask( int threadIndex, void* userData ) BT_OVERRIDE; + virtual void waitForAllTasks() BT_OVERRIDE; + + virtual btCriticalSection* createCriticalSection() BT_OVERRIDE; + virtual void deleteCriticalSection( btCriticalSection* criticalSection ) BT_OVERRIDE; + + virtual void* getThreadLocalMemory( int taskId ) BT_OVERRIDE + { + return m_activeThreadStatus[ taskId ].m_lsMemory; + } +}; + + +#define checkPThreadFunction(returnValue) \ + if(0 != returnValue) { \ + printf("PThread problem at line %i in file %s: %i %d\n", __LINE__, __FILE__, returnValue, errno); \ + } + +// The number of threads should be equal to the number of available cores +// Todo: each worker should be linked to a single core, using SetThreadIdealProcessor. + + +btThreadSupportPosix::btThreadSupportPosix( const ConstructionInfo& threadConstructionInfo ) +{ + startThreads( threadConstructionInfo ); +} + +// cleanup/shutdown Libspe2 +btThreadSupportPosix::~btThreadSupportPosix() +{ + stopThreads(); +} + +#if (defined (__APPLE__)) +#define NAMED_SEMAPHORES +#endif + + +static sem_t* createSem( const char* baseName ) +{ + static int semCount = 0; +#ifdef NAMED_SEMAPHORES + /// Named semaphore begin + char name[ 32 ]; + snprintf( name, 32, "/%8.s-%4.d-%4.4d", baseName, getpid(), semCount++ ); + sem_t* tempSem = sem_open( name, O_CREAT, 0600, 0 ); + + if ( tempSem != reinterpret_cast( SEM_FAILED ) ) + { + // printf("Created \"%s\" Semaphore %p\n", name, tempSem); + } + else + { + //printf("Error creating Semaphore %d\n", errno); + exit( -1 ); + } + /// Named semaphore end +#else + sem_t* tempSem = new sem_t; + checkPThreadFunction( sem_init( tempSem, 0, 0 ) ); +#endif + return tempSem; +} + +static void destroySem( sem_t* semaphore ) +{ +#ifdef NAMED_SEMAPHORES + checkPThreadFunction( sem_close( semaphore ) ); +#else + checkPThreadFunction( sem_destroy( semaphore ) ); + delete semaphore; +#endif +} + +static void *threadFunction( void *argument ) +{ + btThreadSupportPosix::btThreadStatus* status = ( btThreadSupportPosix::btThreadStatus* )argument; + + while ( 1 ) + { + checkPThreadFunction( sem_wait( status->startSemaphore ) ); + void* userPtr = status->m_userPtr; + + if ( userPtr ) + { + btAssert( status->m_status ); + status->m_userThreadFunc( userPtr, status->m_lsMemory ); + status->m_status = 2; + checkPThreadFunction( sem_post( status->m_mainSemaphore ) ); + status->threadUsed++; + } + else + { + //exit Thread + status->m_status = 3; + checkPThreadFunction( sem_post( status->m_mainSemaphore ) ); + printf( "Thread with taskId %i exiting\n", status->m_taskId ); + break; + } + } + + printf( "Thread TERMINATED\n" ); +} + +///send messages to SPUs +void btThreadSupportPosix::runTask( int threadIndex, void* userData ) +{ + ///we should spawn an SPU task here, and in 'waitForResponse' it should wait for response of the (one of) the first tasks that finished + btThreadStatus& threadStatus = m_activeThreadStatus[ threadIndex ]; + btAssert( threadIndex >= 0 ); + btAssert( threadIndex < m_activeThreadStatus.size() ); + + threadStatus.m_commandId = 1; + threadStatus.m_status = 1; + threadStatus.m_userPtr = userData; + m_startedThreadsMask |= UINT64( 1 ) << threadIndex; + + // fire event to start new task + checkPThreadFunction( sem_post( threadStatus.startSemaphore ) ); +} + + +///check for messages from SPUs +int btThreadSupportPosix::waitForResponse() +{ + ///We should wait for (one of) the first tasks to finish (or other SPU messages), and report its response + ///A possible response can be 'yes, SPU handled it', or 'no, please do a PPU fallback' + + btAssert( m_activeThreadStatus.size() ); + + // wait for any of the threads to finish + checkPThreadFunction( sem_wait( m_mainSemaphore ) ); + // get at least one thread which has finished + size_t last = -1; + + for ( size_t t = 0; t < size_t( m_activeThreadStatus.size() ); ++t ) + { + if ( 2 == m_activeThreadStatus[ t ].m_status ) + { + last = t; + break; + } + } + + btThreadStatus& threadStatus = m_activeThreadStatus[ last ]; + + btAssert( threadStatus.m_status > 1 ); + threadStatus.m_status = 0; + + // need to find an active spu + btAssert( last >= 0 ); + m_startedThreadsMask &= ~( UINT64( 1 ) << last ); + + return last; +} + + +void btThreadSupportPosix::waitForAllTasks() +{ + while ( m_startedThreadsMask ) + { + waitForResponse(); + } +} + + +void btThreadSupportPosix::startThreads( const ConstructionInfo& threadConstructionInfo ) +{ + m_numThreads = btGetNumHardwareThreads() - 1; // main thread exists already + printf( "%s creating %i threads.\n", __FUNCTION__, m_numThreads ); + m_activeThreadStatus.resize( m_numThreads ); + m_startedThreadsMask = 0; + + m_mainSemaphore = createSem( "main" ); + //checkPThreadFunction(sem_wait(mainSemaphore)); + + for ( int i = 0; i < m_numThreads; i++ ) + { + printf( "starting thread %d\n", i ); + btThreadStatus& threadStatus = m_activeThreadStatus[ i ]; + threadStatus.startSemaphore = createSem( "threadLocal" ); + checkPThreadFunction( pthread_create( &threadStatus.thread, NULL, &threadFunction, (void*) &threadStatus ) ); + + threadStatus.m_userPtr = 0; + threadStatus.m_taskId = i; + threadStatus.m_commandId = 0; + threadStatus.m_status = 0; + threadStatus.m_mainSemaphore = m_mainSemaphore; + threadStatus.m_lsMemory = threadConstructionInfo.m_lsMemoryFunc(); + threadStatus.m_userThreadFunc = threadConstructionInfo.m_userThreadFunc; + threadStatus.threadUsed = 0; + + printf( "started thread %d \n", i ); + } +} + +///tell the task scheduler we are done with the SPU tasks +void btThreadSupportPosix::stopThreads() +{ + for ( size_t t = 0; t < size_t( m_activeThreadStatus.size() ); ++t ) + { + btThreadStatus& threadStatus = m_activeThreadStatus[ t ]; + printf( "%s: Thread %i used: %ld\n", __FUNCTION__, int( t ), threadStatus.threadUsed ); + + threadStatus.m_userPtr = 0; + checkPThreadFunction( sem_post( threadStatus.startSemaphore ) ); + checkPThreadFunction( sem_wait( m_mainSemaphore ) ); + + printf( "destroy semaphore\n" ); + destroySem( threadStatus.startSemaphore ); + printf( "semaphore destroyed\n" ); + checkPThreadFunction( pthread_join( threadStatus.thread, 0 ) ); + + } + printf( "destroy main semaphore\n" ); + destroySem( m_mainSemaphore ); + printf( "main semaphore destroyed\n" ); + m_activeThreadStatus.clear(); +} + +class btCriticalSectionPosix : public btCriticalSection +{ + pthread_mutex_t m_mutex; + +public: + btCriticalSectionPosix() + { + pthread_mutex_init( &m_mutex, NULL ); + } + virtual ~btCriticalSectionPosix() + { + pthread_mutex_destroy( &m_mutex ); + } + + virtual void lock() + { + pthread_mutex_lock( &m_mutex ); + } + virtual void unlock() + { + pthread_mutex_unlock( &m_mutex ); + } +}; + + +btCriticalSection* btThreadSupportPosix::createCriticalSection() +{ + return new btCriticalSectionPosix(); +} + +void btThreadSupportPosix::deleteCriticalSection( btCriticalSection* cs ) +{ + delete cs; +} + + +btThreadSupportInterface* btThreadSupportInterface::create( const ConstructionInfo& info ) +{ + return new btThreadSupportPosix( info ); +} + +#endif // BT_THREADSAFE && !defined( _WIN32 ) + diff --git a/src/LinearMath/TaskScheduler/btThreadSupportWin32.cpp b/src/LinearMath/TaskScheduler/btThreadSupportWin32.cpp new file mode 100644 index 000000000..f77616337 --- /dev/null +++ b/src/LinearMath/TaskScheduler/btThreadSupportWin32.cpp @@ -0,0 +1,480 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2018 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#if defined( _WIN32 ) && BT_THREADSAFE + +#include "LinearMath/btScalar.h" +#include "LinearMath/btMinMax.h" +#include "LinearMath/btAlignedObjectArray.h" +#include "LinearMath/btThreads.h" +#include "btThreadSupportInterface.h" +#include +#include + + +struct btProcessorInfo +{ + int numLogicalProcessors; + int numCores; + int numNumaNodes; + int numL1Cache; + int numL2Cache; + int numL3Cache; + int numPhysicalPackages; + static const int maxNumTeamMasks = 32; + int numTeamMasks; + UINT64 processorTeamMasks[ maxNumTeamMasks ]; +}; + +UINT64 getProcessorTeamMask( const btProcessorInfo& procInfo, int procId ) +{ + UINT64 procMask = UINT64( 1 ) << procId; + for ( int i = 0; i < procInfo.numTeamMasks; ++i ) + { + if ( procMask & procInfo.processorTeamMasks[ i ] ) + { + return procInfo.processorTeamMasks[ i ]; + } + } + return 0; +} + +int getProcessorTeamIndex( const btProcessorInfo& procInfo, int procId ) +{ + UINT64 procMask = UINT64( 1 ) << procId; + for ( int i = 0; i < procInfo.numTeamMasks; ++i ) + { + if ( procMask & procInfo.processorTeamMasks[ i ] ) + { + return i; + } + } + return -1; +} + +int countSetBits( ULONG64 bits ) +{ + int count = 0; + while ( bits ) + { + if ( bits & 1 ) + { + count++; + } + bits >>= 1; + } + return count; +} + + +typedef BOOL( WINAPI *Pfn_GetLogicalProcessorInformation )( PSYSTEM_LOGICAL_PROCESSOR_INFORMATION, PDWORD ); + + +void getProcessorInformation( btProcessorInfo* procInfo ) +{ + memset( procInfo, 0, sizeof( *procInfo ) ); + Pfn_GetLogicalProcessorInformation getLogicalProcInfo = + (Pfn_GetLogicalProcessorInformation) GetProcAddress( GetModuleHandle( TEXT( "kernel32" ) ), "GetLogicalProcessorInformation" ); + if ( getLogicalProcInfo == NULL ) + { + // no info + return; + } + PSYSTEM_LOGICAL_PROCESSOR_INFORMATION buf = NULL; + DWORD bufSize = 0; + while ( true ) + { + if ( getLogicalProcInfo( buf, &bufSize ) ) + { + break; + } + else + { + if ( GetLastError() == ERROR_INSUFFICIENT_BUFFER ) + { + if ( buf ) + { + free( buf ); + } + buf = (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION) malloc( bufSize ); + } + } + } + + int len = bufSize / sizeof( *buf ); + for ( int i = 0; i < len; ++i ) + { + PSYSTEM_LOGICAL_PROCESSOR_INFORMATION info = buf + i; + switch ( info->Relationship ) + { + case RelationNumaNode: + procInfo->numNumaNodes++; + break; + + case RelationProcessorCore: + procInfo->numCores++; + procInfo->numLogicalProcessors += countSetBits( info->ProcessorMask ); + break; + + case RelationCache: + if ( info->Cache.Level == 1 ) + { + procInfo->numL1Cache++; + } + else if ( info->Cache.Level == 2 ) + { + procInfo->numL2Cache++; + } + else if ( info->Cache.Level == 3 ) + { + procInfo->numL3Cache++; + // processors that share L3 cache are considered to be on the same team + // because they can more easily work together on the same data. + // Large performance penalties will occur if 2 or more threads from different + // teams attempt to frequently read and modify the same cache lines. + // + // On the AMD Ryzen 7 CPU for example, the 8 cores on the CPU are split into + // 2 CCX units of 4 cores each. Each CCX has a separate L3 cache, so if both + // CCXs are operating on the same data, many cycles will be spent keeping the + // two caches coherent. + if ( procInfo->numTeamMasks < btProcessorInfo::maxNumTeamMasks ) + { + procInfo->processorTeamMasks[ procInfo->numTeamMasks ] = info->ProcessorMask; + procInfo->numTeamMasks++; + } + } + break; + + case RelationProcessorPackage: + procInfo->numPhysicalPackages++; + break; + } + } + free( buf ); +} + + + +///btThreadSupportWin32 helps to initialize/shutdown libspe2, start/stop SPU tasks and communication +class btThreadSupportWin32 : public btThreadSupportInterface +{ +public: + struct btThreadStatus + { + int m_taskId; + int m_commandId; + int m_status; + + ThreadFunc m_userThreadFunc; + void* m_userPtr; //for taskDesc etc + void* m_lsMemory; //initialized using Win32LocalStoreMemorySetupFunc + + void* m_threadHandle; //this one is calling 'Win32ThreadFunc' + + void* m_eventStartHandle; + char m_eventStartHandleName[ 32 ]; + + void* m_eventCompleteHandle; + char m_eventCompleteHandleName[ 32 ]; + }; + +private: + btAlignedObjectArray m_activeThreadStatus; + btAlignedObjectArray m_completeHandles; + int m_numThreads; + DWORD_PTR m_startedThreadMask; + btProcessorInfo m_processorInfo; + + void startThreads( const ConstructionInfo& threadInfo ); + void stopThreads(); + int waitForResponse(); + +public: + + btThreadSupportWin32( const ConstructionInfo& threadConstructionInfo ); + virtual ~btThreadSupportWin32(); + + virtual int getNumWorkerThreads() const BT_OVERRIDE { return m_numThreads; } + virtual int getCacheFriendlyNumThreads() const BT_OVERRIDE { return countSetBits(m_processorInfo.processorTeamMasks[0]); } + + virtual void runTask( int threadIndex, void* userData ) BT_OVERRIDE; + virtual void waitForAllTasks() BT_OVERRIDE; + + virtual void* getThreadLocalMemory( int taskId ) BT_OVERRIDE + { + return m_activeThreadStatus[ taskId ].m_lsMemory; + } + + virtual btCriticalSection* createCriticalSection() BT_OVERRIDE; + virtual void deleteCriticalSection( btCriticalSection* criticalSection ) BT_OVERRIDE; +}; + + +btThreadSupportWin32::btThreadSupportWin32( const ConstructionInfo & threadConstructionInfo ) +{ + startThreads( threadConstructionInfo ); +} + + +btThreadSupportWin32::~btThreadSupportWin32() +{ + stopThreads(); +} + + +DWORD WINAPI win32threadStartFunc( LPVOID lpParam ) +{ + btThreadSupportWin32::btThreadStatus* status = ( btThreadSupportWin32::btThreadStatus* )lpParam; + + while ( 1 ) + { + WaitForSingleObject( status->m_eventStartHandle, INFINITE ); + void* userPtr = status->m_userPtr; + + if ( userPtr ) + { + btAssert( status->m_status ); + status->m_userThreadFunc( userPtr, status->m_lsMemory ); + status->m_status = 2; + SetEvent( status->m_eventCompleteHandle ); + } + else + { + //exit Thread + status->m_status = 3; + printf( "Thread with taskId %i with handle %p exiting\n", status->m_taskId, status->m_threadHandle ); + SetEvent( status->m_eventCompleteHandle ); + break; + } + } + printf( "Thread TERMINATED\n" ); + return 0; +} + + +void btThreadSupportWin32::runTask( int threadIndex, void* userData ) +{ + btThreadStatus& threadStatus = m_activeThreadStatus[ threadIndex ]; + btAssert( taskId >= 0 ); + btAssert( int( taskId ) < m_activeThreadStatus.size() ); + + threadStatus.m_commandId = 1; + threadStatus.m_status = 1; + threadStatus.m_userPtr = userData; + m_startedThreadMask |= DWORD_PTR( 1 ) << threadIndex; + + ///fire event to start new task + SetEvent( threadStatus.m_eventStartHandle ); +} + + +int btThreadSupportWin32::waitForResponse() +{ + btAssert( m_activeThreadStatus.size() ); + + int last = -1; + DWORD res = WaitForMultipleObjects( m_completeHandles.size(), &m_completeHandles[ 0 ], FALSE, INFINITE ); + btAssert( res != WAIT_FAILED ); + last = res - WAIT_OBJECT_0; + + btThreadStatus& threadStatus = m_activeThreadStatus[ last ]; + btAssert( threadStatus.m_threadHandle ); + btAssert( threadStatus.m_eventCompleteHandle ); + + //WaitForSingleObject(threadStatus.m_eventCompleteHandle, INFINITE); + btAssert( threadStatus.m_status > 1 ); + threadStatus.m_status = 0; + + ///need to find an active spu + btAssert( last >= 0 ); + m_startedThreadMask &= ~( DWORD_PTR( 1 ) << last ); + + return last; +} + + +void btThreadSupportWin32::waitForAllTasks() +{ + while ( m_startedThreadMask ) + { + waitForResponse(); + } +} + + +void btThreadSupportWin32::startThreads( const ConstructionInfo& threadConstructionInfo ) +{ + static int uniqueId = 0; + uniqueId++; + btProcessorInfo& procInfo = m_processorInfo; + getProcessorInformation( &procInfo ); + DWORD_PTR dwProcessAffinityMask = 0; + DWORD_PTR dwSystemAffinityMask = 0; + if ( !GetProcessAffinityMask( GetCurrentProcess(), &dwProcessAffinityMask, &dwSystemAffinityMask ) ) + { + dwProcessAffinityMask = 0; + } + ///The number of threads should be equal to the number of available cores - 1 + m_numThreads = btMin(procInfo.numLogicalProcessors, int(BT_MAX_THREAD_COUNT)) - 1; // cap to max thread count (-1 because main thread already exists) + + m_activeThreadStatus.resize( m_numThreads ); + m_completeHandles.resize( m_numThreads ); + m_startedThreadMask = 0; + + // set main thread affinity + if ( DWORD_PTR mask = dwProcessAffinityMask & getProcessorTeamMask( procInfo, 0 )) + { + SetThreadAffinityMask( GetCurrentThread(), mask ); + SetThreadIdealProcessor( GetCurrentThread(), 0 ); + } + + for ( int i = 0; i < m_numThreads; i++ ) + { + printf( "starting thread %d\n", i ); + + btThreadStatus& threadStatus = m_activeThreadStatus[ i ]; + + LPSECURITY_ATTRIBUTES lpThreadAttributes = NULL; + SIZE_T dwStackSize = threadConstructionInfo.m_threadStackSize; + LPTHREAD_START_ROUTINE lpStartAddress = &win32threadStartFunc; + LPVOID lpParameter = &threadStatus; + DWORD dwCreationFlags = 0; + LPDWORD lpThreadId = 0; + + threadStatus.m_userPtr = 0; + + sprintf( threadStatus.m_eventStartHandleName, "es%.8s%d%d", threadConstructionInfo.m_uniqueName, uniqueId, i ); + threadStatus.m_eventStartHandle = CreateEventA( 0, false, false, threadStatus.m_eventStartHandleName ); + + sprintf( threadStatus.m_eventCompleteHandleName, "ec%.8s%d%d", threadConstructionInfo.m_uniqueName, uniqueId, i ); + threadStatus.m_eventCompleteHandle = CreateEventA( 0, false, false, threadStatus.m_eventCompleteHandleName ); + + m_completeHandles[ i ] = threadStatus.m_eventCompleteHandle; + + HANDLE handle = CreateThread( lpThreadAttributes, dwStackSize, lpStartAddress, lpParameter, dwCreationFlags, lpThreadId ); + //SetThreadPriority( handle, THREAD_PRIORITY_HIGHEST ); + // highest priority -- can cause erratic performance when numThreads > numCores + // we don't want worker threads to be higher priority than the main thread or the main thread could get + // totally shut out and unable to tell the workers to stop + //SetThreadPriority( handle, THREAD_PRIORITY_BELOW_NORMAL ); + + { + int processorId = i + 1; // leave processor 0 for main thread + DWORD_PTR teamMask = getProcessorTeamMask( procInfo, processorId ); + if ( teamMask ) + { + // bind each thread to only execute on processors of it's assigned team + // - for single-socket Intel x86 CPUs this has no effect (only a single, shared L3 cache so there is only 1 team) + // - for multi-socket Intel this will keep threads from migrating from one socket to another + // - for AMD Ryzen this will keep threads from migrating from one CCX to another + DWORD_PTR mask = teamMask & dwProcessAffinityMask; + if ( mask ) + { + SetThreadAffinityMask( handle, mask ); + } + } + SetThreadIdealProcessor( handle, processorId ); + } + + threadStatus.m_taskId = i; + threadStatus.m_commandId = 0; + threadStatus.m_status = 0; + threadStatus.m_threadHandle = handle; + threadStatus.m_lsMemory = threadConstructionInfo.m_lsMemoryFunc(); + threadStatus.m_userThreadFunc = threadConstructionInfo.m_userThreadFunc; + + printf( "started %s thread %d with threadHandle %p\n", threadConstructionInfo.m_uniqueName, i, handle ); + } +} + +///tell the task scheduler we are done with the SPU tasks +void btThreadSupportWin32::stopThreads() +{ + for ( int i = 0; i < m_activeThreadStatus.size(); i++ ) + { + btThreadStatus& threadStatus = m_activeThreadStatus[ i ]; + if ( threadStatus.m_status > 0 ) + { + WaitForSingleObject( threadStatus.m_eventCompleteHandle, INFINITE ); + } + + delete threadStatus.m_lsMemory; + + threadStatus.m_userPtr = 0; + SetEvent( threadStatus.m_eventStartHandle ); + WaitForSingleObject( threadStatus.m_eventCompleteHandle, INFINITE ); + + CloseHandle( threadStatus.m_eventCompleteHandle ); + CloseHandle( threadStatus.m_eventStartHandle ); + CloseHandle( threadStatus.m_threadHandle ); + + } + + m_activeThreadStatus.clear(); + m_completeHandles.clear(); +} + + +class btWin32CriticalSection : public btCriticalSection +{ +private: + CRITICAL_SECTION mCriticalSection; + +public: + btWin32CriticalSection() + { + InitializeCriticalSection( &mCriticalSection ); + } + + ~btWin32CriticalSection() + { + DeleteCriticalSection( &mCriticalSection ); + } + + void lock() + { + EnterCriticalSection( &mCriticalSection ); + } + + void unlock() + { + LeaveCriticalSection( &mCriticalSection ); + } +}; + + +btCriticalSection* btThreadSupportWin32::createCriticalSection() +{ + unsigned char* mem = (unsigned char*) btAlignedAlloc( sizeof( btWin32CriticalSection ), 16 ); + btWin32CriticalSection* cs = new( mem ) btWin32CriticalSection(); + return cs; +} + +void btThreadSupportWin32::deleteCriticalSection( btCriticalSection* criticalSection ) +{ + criticalSection->~btCriticalSection(); + btAlignedFree( criticalSection ); +} + + +btThreadSupportInterface* btThreadSupportInterface::create( const ConstructionInfo& info ) +{ + return new btThreadSupportWin32( info ); +} + + + +#endif //defined(_WIN32) && BT_THREADSAFE + diff --git a/src/LinearMath/btThreads.cpp b/src/LinearMath/btThreads.cpp index 59a7ea36e..c037626ff 100644 --- a/src/LinearMath/btThreads.cpp +++ b/src/LinearMath/btThreads.cpp @@ -453,6 +453,33 @@ void btParallelFor( int iBegin, int iEnd, int grainSize, const btIParallelForBod #endif// #if BT_THREADSAFE } +btScalar btParallelSum( int iBegin, int iEnd, int grainSize, const btIParallelSumBody& body ) +{ +#if BT_THREADSAFE + +#if BT_DETECT_BAD_THREAD_INDEX + if ( !btThreadsAreRunning() ) + { + // clear out thread ids + for ( int i = 0; i < BT_MAX_THREAD_COUNT; ++i ) + { + gDebugThreadIds[ i ] = kInvalidThreadId; + } + } +#endif // #if BT_DETECT_BAD_THREAD_INDEX + + btAssert( gBtTaskScheduler != NULL ); // call btSetTaskScheduler() with a valid task scheduler first! + return gBtTaskScheduler->parallelSum( iBegin, iEnd, grainSize, body ); + +#else // #if BT_THREADSAFE + + // non-parallel version of btParallelSum + btAssert( !"called btParallelFor in non-threadsafe build. enable BT_THREADSAFE" ); + return body.sumLoop( iBegin, iEnd ); + +#endif //#else // #if BT_THREADSAFE +} + /// /// btTaskSchedulerSequential -- non-threaded implementation of task scheduler @@ -470,6 +497,11 @@ public: BT_PROFILE( "parallelFor_sequential" ); body.forLoop( iBegin, iEnd ); } + virtual btScalar parallelSum( int iBegin, int iEnd, int grainSize, const btIParallelSumBody& body ) BT_OVERRIDE + { + BT_PROFILE( "parallelSum_sequential" ); + return body.sumLoop( iBegin, iEnd ); + } }; @@ -514,11 +546,25 @@ public: #pragma omp parallel for schedule( static, 1 ) for ( int i = iBegin; i < iEnd; i += grainSize ) { - BT_PROFILE( "OpenMP_job" ); + BT_PROFILE( "OpenMP_forJob" ); body.forLoop( i, ( std::min )( i + grainSize, iEnd ) ); } btPopThreadsAreRunning(); } + virtual btScalar parallelSum( int iBegin, int iEnd, int grainSize, const btIParallelSumBody& body ) BT_OVERRIDE + { + BT_PROFILE( "parallelFor_OpenMP" ); + btPushThreadsAreRunning(); + btScalar sum = btScalar( 0 ); +#pragma omp parallel for schedule( static, 1 ) reduction(+:sum) + for ( int i = iBegin; i < iEnd; i += grainSize ) + { + BT_PROFILE( "OpenMP_sumJob" ); + sum += body.sumLoop( i, ( std::min )( i + grainSize, iEnd ) ); + } + btPopThreadsAreRunning(); + return sum; + } }; #endif // #if BT_USE_OPENMP && BT_THREADSAFE @@ -571,22 +617,21 @@ public: btResetThreadIndexCounter(); } } - struct BodyAdapter + struct ForBodyAdapter { const btIParallelForBody* mBody; + ForBodyAdapter( const btIParallelForBody* body ) : mBody( body ) {} void operator()( const tbb::blocked_range& range ) const { - BT_PROFILE( "TBB_job" ); + BT_PROFILE( "TBB_forJob" ); mBody->forLoop( range.begin(), range.end() ); } }; virtual void parallelFor( int iBegin, int iEnd, int grainSize, const btIParallelForBody& body ) BT_OVERRIDE { BT_PROFILE( "parallelFor_TBB" ); - // TBB dispatch - BodyAdapter tbbBody; - tbbBody.mBody = &body; + ForBodyAdapter tbbBody( &body ); btPushThreadsAreRunning(); tbb::parallel_for( tbb::blocked_range( iBegin, iEnd, grainSize ), tbbBody, @@ -594,6 +639,29 @@ public: ); btPopThreadsAreRunning(); } + struct SumBodyAdapter + { + const btIParallelSumBody* mBody; + btScalar mSum; + + SumBodyAdapter( const btIParallelSumBody* body ) : mBody( body ), mSum( btScalar( 0 ) ) {} + SumBodyAdapter( const SumBodyAdapter& src, tbb::split ) : mBody( src.mBody ), mSum( btScalar( 0 ) ) {} + void join( const SumBodyAdapter& src ) { mSum += src.mSum; } + void operator()( const tbb::blocked_range& range ) + { + BT_PROFILE( "TBB_sumJob" ); + mSum += mBody->sumLoop( range.begin(), range.end() ); + } + }; + virtual btScalar parallelSum( int iBegin, int iEnd, int grainSize, const btIParallelSumBody& body ) BT_OVERRIDE + { + BT_PROFILE( "parallelSum_TBB" ); + SumBodyAdapter tbbBody( &body ); + btPushThreadsAreRunning(); + tbb::parallel_deterministic_reduce( tbb::blocked_range( iBegin, iEnd, grainSize ), tbbBody ); + btPopThreadsAreRunning(); + return tbbBody.mSum; + } }; #endif // #if BT_USE_TBB && BT_THREADSAFE @@ -605,6 +673,7 @@ public: class btTaskSchedulerPPL : public btITaskScheduler { int m_numThreads; + concurrency::combinable m_sum; // for parallelSum public: btTaskSchedulerPPL() : btITaskScheduler( "PPL" ) { @@ -644,15 +713,16 @@ public: btResetThreadIndexCounter(); } } - struct BodyAdapter + struct ForBodyAdapter { const btIParallelForBody* mBody; int mGrainSize; int mIndexEnd; + ForBodyAdapter( const btIParallelForBody* body, int grainSize, int end ) : mBody( body ), mGrainSize( grainSize ), mIndexEnd( end ) {} void operator()( int i ) const { - BT_PROFILE( "PPL_job" ); + BT_PROFILE( "PPL_forJob" ); mBody->forLoop( i, ( std::min )( i + mGrainSize, mIndexEnd ) ); } }; @@ -660,10 +730,7 @@ public: { BT_PROFILE( "parallelFor_PPL" ); // PPL dispatch - BodyAdapter pplBody; - pplBody.mBody = &body; - pplBody.mGrainSize = grainSize; - pplBody.mIndexEnd = iEnd; + ForBodyAdapter pplBody( &body, grainSize, iEnd ); btPushThreadsAreRunning(); // note: MSVC 2010 doesn't support partitioner args, so avoid them concurrency::parallel_for( iBegin, @@ -673,6 +740,36 @@ public: ); btPopThreadsAreRunning(); } + struct SumBodyAdapter + { + const btIParallelSumBody* mBody; + concurrency::combinable* mSum; + int mGrainSize; + int mIndexEnd; + + SumBodyAdapter( const btIParallelSumBody* body, concurrency::combinable* sum, int grainSize, int end ) : mBody( body ), mSum(sum), mGrainSize( grainSize ), mIndexEnd( end ) {} + void operator()( int i ) const + { + BT_PROFILE( "PPL_sumJob" ); + mSum->local() += mBody->sumLoop( i, ( std::min )( i + mGrainSize, mIndexEnd ) ); + } + }; + static btScalar sumFunc( btScalar a, btScalar b ) { return a + b; } + virtual btScalar parallelSum( int iBegin, int iEnd, int grainSize, const btIParallelSumBody& body ) BT_OVERRIDE + { + BT_PROFILE( "parallelSum_PPL" ); + m_sum.clear(); + SumBodyAdapter pplBody( &body, &m_sum, grainSize, iEnd ); + btPushThreadsAreRunning(); + // note: MSVC 2010 doesn't support partitioner args, so avoid them + concurrency::parallel_for( iBegin, + iEnd, + grainSize, + pplBody + ); + btPopThreadsAreRunning(); + return m_sum.combine( sumFunc ); + } }; #endif // #if BT_USE_PPL && BT_THREADSAFE diff --git a/src/LinearMath/btThreads.h b/src/LinearMath/btThreads.h index cef542329..ecd5a19cf 100644 --- a/src/LinearMath/btThreads.h +++ b/src/LinearMath/btThreads.h @@ -107,6 +107,17 @@ public: virtual void forLoop( int iBegin, int iEnd ) const = 0; }; +// +// btIParallelSumBody -- subclass this to express work that can be done in parallel +// and produces a sum over all loop elements +// +class btIParallelSumBody +{ +public: + virtual ~btIParallelSumBody() {} + virtual btScalar sumLoop( int iBegin, int iEnd ) const = 0; +}; + // // btITaskScheduler -- subclass this to implement a task scheduler that can dispatch work to // worker threads @@ -122,6 +133,8 @@ public: virtual int getNumThreads() const = 0; virtual void setNumThreads( int numThreads ) = 0; virtual void parallelFor( int iBegin, int iEnd, int grainSize, const btIParallelForBody& body ) = 0; + virtual btScalar parallelSum( int iBegin, int iEnd, int grainSize, const btIParallelSumBody& body ) = 0; + virtual void sleepWorkerThreadsHint() {} // hint the task scheduler that we may not be using these threads for a little while // internal use only virtual void activate(); @@ -143,6 +156,9 @@ btITaskScheduler* btGetTaskScheduler(); // get non-threaded task scheduler (always available) btITaskScheduler* btGetSequentialTaskScheduler(); +// create a default task scheduler (Win32 or pthreads based) +btITaskScheduler* btCreateDefaultTaskScheduler(); + // get OpenMP task scheduler (if available, otherwise returns null) btITaskScheduler* btGetOpenMPTaskScheduler(); @@ -156,5 +172,9 @@ btITaskScheduler* btGetPPLTaskScheduler(); // (iterations may be done out of order, so no dependencies are allowed) void btParallelFor( int iBegin, int iEnd, int grainSize, const btIParallelForBody& body ); +// btParallelSum -- call this to dispatch work like a for-loop, returns the sum of all iterations +// (iterations may be done out of order, so no dependencies are allowed) +btScalar btParallelSum( int iBegin, int iEnd, int grainSize, const btIParallelSumBody& body ); + #endif From 06690e542b22b08c2c120d110ba8225211afb5ce Mon Sep 17 00:00:00 2001 From: Lunkhound Date: Tue, 27 Feb 2018 00:30:45 -0800 Subject: [PATCH 02/68] fix compile error for GCC --- src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp b/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp index bc840e889..a27350bf9 100644 --- a/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp +++ b/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp @@ -1113,7 +1113,7 @@ void btBatchedConstraints::setup( { if (constraints->size() >= minBatchSize*4) { - bool use2DGrid = batchingMethod == BatchingMethod::BATCHING_METHOD_SPATIAL_GRID_2D; + bool use2DGrid = batchingMethod == BATCHING_METHOD_SPATIAL_GRID_2D; setupSpatialGridBatchesMt( this, scratchMemory, constraints, bodies, minBatchSize, maxBatchSize, use2DGrid ); if (s_debugDrawBatches) { From d900a749392465e6bbadfdaa98635abcf30b30f4 Mon Sep 17 00:00:00 2001 From: Lunkhound Date: Tue, 27 Feb 2018 03:03:12 -0800 Subject: [PATCH 03/68] add new source files to setup.py to fix travis-ci build --- setup.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 664059460..bdf38bf27 100644 --- a/setup.py +++ b/setup.py @@ -134,6 +134,9 @@ sources = ["examples/pybullet/pybullet.c"]\ +["src/LinearMath/btConvexHullComputer.cpp"]\ +["src/LinearMath/btQuickprof.cpp"]\ +["src/LinearMath/btThreads.cpp"]\ ++["src/LinearMath/TaskScheduler/btTaskScheduler.cpp"]\ ++["src/LinearMath/TaskScheduler/btThreadSupportPosix.cpp"]\ ++["src/LinearMath/TaskScheduler/btThreadSupportWin32.cpp"]\ +["src/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp"]\ +["src/BulletCollision/BroadphaseCollision/btDbvt.cpp"]\ +["src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp"]\ @@ -233,6 +236,7 @@ sources = ["examples/pybullet/pybullet.c"]\ +["src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp"]\ +["src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp"]\ +["src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp"]\ ++["src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp"]\ +["src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp"]\ +["src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp"]\ +["src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp"]\ @@ -249,6 +253,7 @@ sources = ["examples/pybullet/pybullet.c"]\ +["src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp"]\ +["src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp"]\ +["src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp"]\ ++["src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp"]\ +["src/BulletDynamics/MLCPSolvers/btDantzigLCP.cpp"]\ +["src/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.cpp"]\ +["src/BulletDynamics/MLCPSolvers/btMLCPSolver.cpp"]\ @@ -479,4 +484,3 @@ setup( packages=[x for x in find_packages('examples/pybullet/gym')], package_data = { 'pybullet_data': need_files } ) - From 2348c6ba0ab5ffade17f37885b1d27d43f5bebe0 Mon Sep 17 00:00:00 2001 From: a Date: Mon, 5 Mar 2018 23:05:22 +0100 Subject: [PATCH 04/68] Fix for #1582 --- examples/Constraints/ConstraintDemo.cpp | 6 +++--- examples/Constraints/Dof6Spring2Setup.cpp | 8 ++++---- .../PhysicsServerCommandProcessor.cpp | 16 ++++------------ examples/Tutorial/Dof6ConstraintTutorial.cpp | 8 ++++---- .../ConstraintSolver/b3Generic6DofConstraint.cpp | 4 ++-- .../ConstraintSolver/b3Generic6DofConstraint.h | 2 +- .../ConstraintSolver/btGeneric6DofConstraint.cpp | 4 ++-- .../ConstraintSolver/btGeneric6DofConstraint.h | 2 +- .../btGeneric6DofSpring2Constraint.cpp | 8 ++++---- .../btGeneric6DofSpring2Constraint.h | 2 +- .../btGeneric6DofSpringConstraint.cpp | 4 ++-- 11 files changed, 28 insertions(+), 36 deletions(-) diff --git a/examples/Constraints/ConstraintDemo.cpp b/examples/Constraints/ConstraintDemo.cpp index 72ad1a8a6..cf7dc063d 100644 --- a/examples/Constraints/ConstraintDemo.cpp +++ b/examples/Constraints/ConstraintDemo.cpp @@ -356,7 +356,7 @@ void AllConstraintDemo::initPhysics() spSlider6Dof->getTranslationalLimitMotor()->m_enableMotor[0] = true; spSlider6Dof->getTranslationalLimitMotor()->m_targetVelocity[0] = -5.0f; - spSlider6Dof->getTranslationalLimitMotor()->m_maxMotorForce[0] = 0.1f; + spSlider6Dof->getTranslationalLimitMotor()->m_maxMotorForce[0] = 6.0f; m_dynamicsWorld->addConstraint(spSlider6Dof); @@ -431,7 +431,7 @@ void AllConstraintDemo::initPhysics() // pGen6DOF->getTranslationalLimitMotor()->m_enableMotor[0] = true; // pGen6DOF->getTranslationalLimitMotor()->m_targetVelocity[0] = 5.0f; -// pGen6DOF->getTranslationalLimitMotor()->m_maxMotorForce[0] = 0.1f; +// pGen6DOF->getTranslationalLimitMotor()->m_maxMotorForce[0] = 6.0f; // pGen6DOF->setAngularLowerLimit(btVector3(0., SIMD_HALF_PI*0.9, 0.)); @@ -662,7 +662,7 @@ void AllConstraintDemo::initPhysics() pGen6Dof->getTranslationalLimitMotor()->m_enableMotor[0] = true; pGen6Dof->getTranslationalLimitMotor()->m_targetVelocity[0] = 5.0f; - pGen6Dof->getTranslationalLimitMotor()->m_maxMotorForce[0] = 0.1f; + pGen6Dof->getTranslationalLimitMotor()->m_maxMotorForce[0] = 6.0f; } #endif diff --git a/examples/Constraints/Dof6Spring2Setup.cpp b/examples/Constraints/Dof6Spring2Setup.cpp index 89129f7a6..a3fd5e8f4 100644 --- a/examples/Constraints/Dof6Spring2Setup.cpp +++ b/examples/Constraints/Dof6Spring2Setup.cpp @@ -300,11 +300,11 @@ void Dof6Spring2Setup::initPhysics() #ifdef USE_6DOF2 constraint->enableMotor(5,true); constraint->setTargetVelocity(5,3.f); - constraint->setMaxMotorForce(5,10.f); + constraint->setMaxMotorForce(5,600.f); #else constraint->getRotationalLimitMotor(2)->m_enableMotor = true; constraint->getRotationalLimitMotor(2)->m_targetVelocity = 3.f; - constraint->getRotationalLimitMotor(2)->m_maxMotorForce = 10; + constraint->getRotationalLimitMotor(2)->m_maxMotorForce = 600.f; #endif constraint->setDbgDrawSize(btScalar(2.f)); m_dynamicsWorld->addConstraint(constraint, true); @@ -335,13 +335,13 @@ void Dof6Spring2Setup::initPhysics() #ifdef USE_6DOF2 constraint->enableMotor(5,true); constraint->setTargetVelocity(5,3.f); - constraint->setMaxMotorForce(5,10.f); + constraint->setMaxMotorForce(5,600.f); constraint->setServo(5,true); constraint->setServoTarget(5, M_PI_2); #else constraint->getRotationalLimitMotor(2)->m_enableMotor = true; constraint->getRotationalLimitMotor(2)->m_targetVelocity = 3.f; - constraint->getRotationalLimitMotor(2)->m_maxMotorForce = 10; + constraint->getRotationalLimitMotor(2)->m_maxMotorForce = 600.f; //servo motor is not implemented in 6dofspring constraint #endif constraint->setDbgDrawSize(btScalar(2.f)); diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp index 5c89ea86a..e29f2e7b9 100644 --- a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp +++ b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp @@ -4939,9 +4939,7 @@ bool PhysicsServerCommandProcessor::processSendDesiredStateCommand(const struct { con->enableMotor(3+limitAxis,true); con->setTargetVelocity(3+limitAxis, qdotTarget); - //this is max motor force impulse - btScalar torqueImpulse = torque*m_data->m_dynamicsWorld->getSolverInfo().m_timeStep; - con->setMaxMotorForce(3+limitAxis,torqueImpulse); + con->setMaxMotorForce(3+limitAxis, torque); } break; } @@ -4954,9 +4952,7 @@ bool PhysicsServerCommandProcessor::processSendDesiredStateCommand(const struct //next one is the maximum velocity to reach target position. //the maximum velocity is limited by maxMotorForce con->setTargetVelocity(3+limitAxis, 100); - //this is max motor force impulse - btScalar torqueImpulse = torque*m_data->m_dynamicsWorld->getSolverInfo().m_timeStep; - con->setMaxMotorForce(3+limitAxis,torqueImpulse); + con->setMaxMotorForce(3+limitAxis, torque); con->enableMotor(3+limitAxis,true); } break; @@ -4992,9 +4988,7 @@ bool PhysicsServerCommandProcessor::processSendDesiredStateCommand(const struct { con->enableMotor(limitAxis,true); con->setTargetVelocity(limitAxis, -qdotTarget); - //this is max motor force impulse - btScalar torqueImpulse = torque*m_data->m_dynamicsWorld->getSolverInfo().m_timeStep; - con->setMaxMotorForce(limitAxis,torqueImpulse); + con->setMaxMotorForce(limitAxis, torque); break; } case CONTROL_MODE_POSITION_VELOCITY_PD: @@ -5004,9 +4998,7 @@ bool PhysicsServerCommandProcessor::processSendDesiredStateCommand(const struct //next one is the maximum velocity to reach target position. //the maximum velocity is limited by maxMotorForce con->setTargetVelocity(limitAxis, 100); - //this is max motor force impulse - btScalar torqueImpulse = torque*m_data->m_dynamicsWorld->getSolverInfo().m_timeStep; - con->setMaxMotorForce(limitAxis,torqueImpulse); + con->setMaxMotorForce(limitAxis, torque); con->enableMotor(limitAxis,true); break; } diff --git a/examples/Tutorial/Dof6ConstraintTutorial.cpp b/examples/Tutorial/Dof6ConstraintTutorial.cpp index 125fd4e61..889182e11 100644 --- a/examples/Tutorial/Dof6ConstraintTutorial.cpp +++ b/examples/Tutorial/Dof6ConstraintTutorial.cpp @@ -313,11 +313,11 @@ void Dof6ConstraintTutorial::initPhysics() #ifdef USE_6DOF2 constraint->enableMotor(5,true); constraint->setTargetVelocity(5,3.f); - constraint->setMaxMotorForce(5,10.f); + constraint->setMaxMotorForce(5,600.f); #else constraint->getRotationalLimitMotor(2)->m_enableMotor = true; constraint->getRotationalLimitMotor(2)->m_targetVelocity = 3.f; - constraint->getRotationalLimitMotor(2)->m_maxMotorForce = 10; + constraint->getRotationalLimitMotor(2)->m_maxMotorForce = 600.f; #endif constraint->setDbgDrawSize(btScalar(2.f)); m_dynamicsWorld->addConstraint(constraint, true); @@ -348,13 +348,13 @@ void Dof6ConstraintTutorial::initPhysics() #ifdef USE_6DOF2 constraint->enableMotor(5,true); constraint->setTargetVelocity(5,3.f); - constraint->setMaxMotorForce(5,10.f); + constraint->setMaxMotorForce(5,600.f); constraint->setServo(5,true); constraint->setServoTarget(5, M_PI_2); #else constraint->getRotationalLimitMotor(2)->m_enableMotor = true; constraint->getRotationalLimitMotor(2)->m_targetVelocity = 3.f; - constraint->getRotationalLimitMotor(2)->m_maxMotorForce = 10; + constraint->getRotationalLimitMotor(2)->m_maxMotorForce = 600.f; //servo motor is not implemented in 6dofspring constraint #endif constraint->setDbgDrawSize(btScalar(2.f)); diff --git a/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.cpp b/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.cpp index 168a773d5..3ae2922e5 100644 --- a/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.cpp +++ b/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.cpp @@ -599,8 +599,8 @@ int b3Generic6DofConstraint::get_limit_motor_info2( tag_vel, info->fps * limot->m_stopERP); info->m_constraintError[srow] += mot_fact * limot->m_targetVelocity; - info->m_lowerLimit[srow] = -limot->m_maxMotorForce; - info->m_upperLimit[srow] = limot->m_maxMotorForce; + info->m_lowerLimit[srow] = -limot->m_maxMotorForce / info->fps; + info->m_upperLimit[srow] = limot->m_maxMotorForce / info->fps; } } if(limit) diff --git a/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.h b/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.h index 084d36055..169b1b94a 100644 --- a/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.h +++ b/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.h @@ -69,7 +69,7 @@ public: { m_accumulatedImpulse = 0.f; m_targetVelocity = 0; - m_maxMotorForce = 0.1f; + m_maxMotorForce = 6.0f; m_maxLimitForce = 300.0f; m_loLimit = 1.0f; m_hiLimit = -1.0f; diff --git a/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp b/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp index fa17254ec..c38b8353f 100644 --- a/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp +++ b/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp @@ -855,8 +855,8 @@ int btGeneric6DofConstraint::get_limit_motor_info2( tag_vel, info->fps * limot->m_stopERP); info->m_constraintError[srow] += mot_fact * limot->m_targetVelocity; - info->m_lowerLimit[srow] = -limot->m_maxMotorForce; - info->m_upperLimit[srow] = limot->m_maxMotorForce; + info->m_lowerLimit[srow] = -limot->m_maxMotorForce / info->fps; + info->m_upperLimit[srow] = limot->m_maxMotorForce / info->fps; } } if(limit) diff --git a/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h b/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h index bea8629c3..b2ad45f74 100644 --- a/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h +++ b/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h @@ -77,7 +77,7 @@ public: { m_accumulatedImpulse = 0.f; m_targetVelocity = 0; - m_maxMotorForce = 0.1f; + m_maxMotorForce = 6.0f; m_maxLimitForce = 300.0f; m_loLimit = 1.0f; m_hiLimit = -1.0f; diff --git a/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp b/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp index e2d3a6983..1720c78e7 100644 --- a/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp +++ b/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp @@ -719,8 +719,8 @@ int btGeneric6DofSpring2Constraint::get_limit_motor_info2( tag_vel, info->fps * limot->m_motorERP); info->m_constraintError[srow] = mot_fact * limot->m_targetVelocity; - info->m_lowerLimit[srow] = -limot->m_maxMotorForce; - info->m_upperLimit[srow] = limot->m_maxMotorForce; + info->m_lowerLimit[srow] = -limot->m_maxMotorForce / info->fps; + info->m_upperLimit[srow] = limot->m_maxMotorForce / info->fps; info->cfm[srow] = limot->m_motorCFM; srow += info->rowskip; ++count; @@ -769,8 +769,8 @@ int btGeneric6DofSpring2Constraint::get_limit_motor_info2( mot_fact = 0; } info->m_constraintError[srow] = mot_fact * targetvelocity * (rotational ? -1 : 1); - info->m_lowerLimit[srow] = -limot->m_maxMotorForce; - info->m_upperLimit[srow] = limot->m_maxMotorForce; + info->m_lowerLimit[srow] = -limot->m_maxMotorForce / info->fps; + info->m_upperLimit[srow] = limot->m_maxMotorForce / info->fps; info->cfm[srow] = limot->m_motorCFM; srow += info->rowskip; ++count; diff --git a/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h b/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h index 536e5af1b..fc2ed4f7a 100644 --- a/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h +++ b/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h @@ -107,7 +107,7 @@ public: m_motorCFM = 0.f; m_enableMotor = false; m_targetVelocity = 0; - m_maxMotorForce = 0.1f; + m_maxMotorForce = 6.0f; m_servoMotor = false; m_servoTarget = 0; m_enableSpring = false; diff --git a/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp b/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp index 6f765884e..3f875989e 100644 --- a/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp +++ b/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp @@ -131,7 +131,7 @@ void btGeneric6DofSpringConstraint::internalUpdateSprings(btConstraintInfo2* inf btScalar force = delta * m_springStiffness[i]; btScalar velFactor = info->fps * m_springDamping[i] / btScalar(info->m_numIterations); m_linearLimits.m_targetVelocity[i] = velFactor * force; - m_linearLimits.m_maxMotorForce[i] = btFabs(force) / info->fps; + m_linearLimits.m_maxMotorForce[i] = btFabs(force); } } for(i = 0; i < 3; i++) @@ -146,7 +146,7 @@ void btGeneric6DofSpringConstraint::internalUpdateSprings(btConstraintInfo2* inf btScalar force = -delta * m_springStiffness[i+3]; btScalar velFactor = info->fps * m_springDamping[i+3] / btScalar(info->m_numIterations); m_angularLimits[i].m_targetVelocity = velFactor * force; - m_angularLimits[i].m_maxMotorForce = btFabs(force) / info->fps; + m_angularLimits[i].m_maxMotorForce = btFabs(force); } } } From 45fd4acf6eb69389f9a600903a7b7bf8e813815f Mon Sep 17 00:00:00 2001 From: Lunkhound Date: Mon, 5 Mar 2018 20:05:38 -0800 Subject: [PATCH 05/68] dynamicsWorldMt: make island mgr aware of whether a parallel solver is present and make handoff from parallel solver to solver-pool more explicit --- .../CommonRigidBodyMTBase.cpp | 28 ++++- .../Dynamics/btDiscreteDynamicsWorldMt.cpp | 88 +++----------- .../Dynamics/btDiscreteDynamicsWorldMt.h | 4 +- .../Dynamics/btSimulationIslandManagerMt.cpp | 110 ++++++++++-------- .../Dynamics/btSimulationIslandManagerMt.h | 36 +++--- 5 files changed, 116 insertions(+), 150 deletions(-) diff --git a/examples/MultiThreadedDemo/CommonRigidBodyMTBase.cpp b/examples/MultiThreadedDemo/CommonRigidBodyMTBase.cpp index b11cd7691..f9e0c209a 100644 --- a/examples/MultiThreadedDemo/CommonRigidBodyMTBase.cpp +++ b/examples/MultiThreadedDemo/CommonRigidBodyMTBase.cpp @@ -200,11 +200,11 @@ public: /// /// myParallelIslandDispatch -- wrap default parallel dispatch for profiling and to get the number of simulation islands // -void myParallelIslandDispatch( btAlignedObjectArray* islandsPtr, btSimulationIslandManagerMt::IslandCallback* callback ) +void myParallelIslandDispatch( btAlignedObjectArray* islandsPtr, const btSimulationIslandManagerMt::SolverParams& solverParams) { ProfileHelper prof( Profiler::kRecordDispatchIslands ); gNumIslands = islandsPtr->size(); - btSimulationIslandManagerMt::parallelIslandDispatch( islandsPtr, callback ); + btSimulationIslandManagerMt::parallelIslandDispatch( islandsPtr, solverParams ); } @@ -239,9 +239,10 @@ public: MyDiscreteDynamicsWorld( btDispatcher* dispatcher, btBroadphaseInterface* pairCache, btConstraintSolverPoolMt* constraintSolver, + btSequentialImpulseConstraintSolverMt* constraintSolverMt, btCollisionConfiguration* collisionConfiguration ) : - btDiscreteDynamicsWorldMt( dispatcher, pairCache, constraintSolver, collisionConfiguration ) + btDiscreteDynamicsWorldMt( dispatcher, pairCache, constraintSolver, constraintSolverMt, collisionConfiguration ) { btSimulationIslandManagerMt* islandMgr = static_cast( m_islandManager ); islandMgr->setIslandDispatchFunction( myParallelIslandDispatch ); @@ -347,11 +348,12 @@ static btTaskSchedulerManager gTaskSchedulerMgr; #if BT_THREADSAFE static bool gMultithreadedWorld = true; static bool gDisplayProfileInfo = true; +static SolverType gSolverType = SOLVER_TYPE_SEQUENTIAL_IMPULSE_MT; #else static bool gMultithreadedWorld = false; static bool gDisplayProfileInfo = false; +static SolverType gSolverType = SOLVER_TYPE_SEQUENTIAL_IMPULSE; #endif -static SolverType gSolverType = SOLVER_TYPE_SEQUENTIAL_IMPULSE_MT; static int gSolverMode = SOLVER_SIMD | SOLVER_USE_WARMSTARTING | // SOLVER_RANDMIZE_ORDER | @@ -547,16 +549,28 @@ void CommonRigidBodyMTBase::createEmptyDynamicsWorld() btConstraintSolverPoolMt* solverPool; { + SolverType poolSolverType = m_solverType; + if (poolSolverType == SOLVER_TYPE_SEQUENTIAL_IMPULSE_MT) + { + // pool solvers shouldn't be parallel solvers, we don't allow that kind of + // nested parallelism because of performance issues + poolSolverType = SOLVER_TYPE_SEQUENTIAL_IMPULSE; + } btConstraintSolver* solvers[ BT_MAX_THREAD_COUNT ]; int maxThreadCount = BT_MAX_THREAD_COUNT; for ( int i = 0; i < maxThreadCount; ++i ) { - solvers[ i ] = createSolverByType( m_solverType ); + solvers[ i ] = createSolverByType( poolSolverType ); } solverPool = new btConstraintSolverPoolMt( solvers, maxThreadCount ); m_solver = solverPool; } - btDiscreteDynamicsWorld* world = new MyDiscreteDynamicsWorld( m_dispatcher, m_broadphase, solverPool, m_collisionConfiguration ); + btSequentialImpulseConstraintSolverMt* solverMt = NULL; + if ( m_solverType == SOLVER_TYPE_SEQUENTIAL_IMPULSE_MT ) + { + solverMt = new MySequentialImpulseConstraintSolverMt(); + } + btDiscreteDynamicsWorld* world = new MyDiscreteDynamicsWorld( m_dispatcher, m_broadphase, solverPool, solverMt, m_collisionConfiguration ); m_dynamicsWorld = world; m_multithreadedWorld = true; btAssert( btGetTaskScheduler() != NULL ); @@ -579,6 +593,8 @@ void CommonRigidBodyMTBase::createEmptyDynamicsWorld() SolverType solverType = m_solverType; if ( solverType == SOLVER_TYPE_SEQUENTIAL_IMPULSE_MT ) { + // using the parallel solver with the single-threaded world works, but is + // disabled here to avoid confusion solverType = SOLVER_TYPE_SEQUENTIAL_IMPULSE; } m_solver = createSolverByType( solverType ); diff --git a/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp b/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp index 330bccb87..d705bf238 100644 --- a/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp +++ b/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp @@ -50,63 +50,6 @@ subject to the following restrictions: #include "LinearMath/btSerializer.h" -struct InplaceSolverIslandCallbackMt : public btSimulationIslandManagerMt::IslandCallback -{ - btContactSolverInfo* m_solverInfo; - btConstraintSolver* m_solver; - btIDebugDraw* m_debugDrawer; - btDispatcher* m_dispatcher; - - InplaceSolverIslandCallbackMt( - btConstraintSolver* solver, - btStackAlloc* stackAlloc, - btDispatcher* dispatcher) - :m_solverInfo(NULL), - m_solver(solver), - m_debugDrawer(NULL), - m_dispatcher(dispatcher) - { - - } - - InplaceSolverIslandCallbackMt& operator=(InplaceSolverIslandCallbackMt& other) - { - btAssert(0); - (void)other; - return *this; - } - - SIMD_FORCE_INLINE void setup ( btContactSolverInfo* solverInfo, btIDebugDraw* debugDrawer) - { - btAssert(solverInfo); - m_solverInfo = solverInfo; - m_debugDrawer = debugDrawer; - } - - - virtual void processIsland( btCollisionObject** bodies, - int numBodies, - btPersistentManifold** manifolds, - int numManifolds, - btTypedConstraint** constraints, - int numConstraints, - int islandId - ) - { - m_solver->solveGroup( bodies, - numBodies, - manifolds, - numManifolds, - constraints, - numConstraints, - *m_solverInfo, - m_debugDrawer, - m_dispatcher - ); - } - -}; - /// /// btConstraintSolverPoolMt @@ -209,7 +152,12 @@ void btConstraintSolverPoolMt::reset() /// btDiscreteDynamicsWorldMt /// -btDiscreteDynamicsWorldMt::btDiscreteDynamicsWorldMt(btDispatcher* dispatcher, btBroadphaseInterface* pairCache, btConstraintSolverPoolMt* constraintSolver, btCollisionConfiguration* collisionConfiguration) +btDiscreteDynamicsWorldMt::btDiscreteDynamicsWorldMt(btDispatcher* dispatcher, + btBroadphaseInterface* pairCache, + btConstraintSolverPoolMt* constraintSolver, + btConstraintSolver* constraintSolverMt, + btCollisionConfiguration* collisionConfiguration +) : btDiscreteDynamicsWorld(dispatcher,pairCache,constraintSolver,collisionConfiguration) { if (m_ownsIslandManager) @@ -217,31 +165,18 @@ btDiscreteDynamicsWorldMt::btDiscreteDynamicsWorldMt(btDispatcher* dispatcher, b m_islandManager->~btSimulationIslandManager(); btAlignedFree( m_islandManager); } - { - void* mem = btAlignedAlloc(sizeof(InplaceSolverIslandCallbackMt),16); - m_solverIslandCallbackMt = new (mem) InplaceSolverIslandCallbackMt (m_constraintSolver, 0, dispatcher); - } { void* mem = btAlignedAlloc(sizeof(btSimulationIslandManagerMt),16); btSimulationIslandManagerMt* im = new (mem) btSimulationIslandManagerMt(); im->setMinimumSolverBatchSize( m_solverInfo.m_minimumSolverBatchSize ); m_islandManager = im; } + m_constraintSolverMt = constraintSolverMt; } btDiscreteDynamicsWorldMt::~btDiscreteDynamicsWorldMt() { - if (m_solverIslandCallbackMt) - { - m_solverIslandCallbackMt->~InplaceSolverIslandCallbackMt(); - btAlignedFree(m_solverIslandCallbackMt); - } - if (m_ownsConstraintSolver) - { - m_constraintSolver->~btConstraintSolver(); - btAlignedFree(m_constraintSolver); - } } @@ -249,12 +184,17 @@ void btDiscreteDynamicsWorldMt::solveConstraints(btContactSolverInfo& solverInfo { BT_PROFILE("solveConstraints"); - m_solverIslandCallbackMt->setup(&solverInfo, getDebugDrawer()); m_constraintSolver->prepareSolve(getCollisionWorld()->getNumCollisionObjects(), getCollisionWorld()->getDispatcher()->getNumManifolds()); /// solve all the constraints for this island btSimulationIslandManagerMt* im = static_cast(m_islandManager); - im->buildAndProcessIslands( getCollisionWorld()->getDispatcher(), getCollisionWorld(), m_constraints, m_solverIslandCallbackMt ); + btSimulationIslandManagerMt::SolverParams solverParams; + solverParams.m_solverPool = m_constraintSolver; + solverParams.m_solverMt = m_constraintSolverMt; + solverParams.m_solverInfo = &solverInfo; + solverParams.m_debugDrawer = m_debugDrawer; + solverParams.m_dispatcher = getCollisionWorld()->getDispatcher(); + im->buildAndProcessIslands( getCollisionWorld()->getDispatcher(), getCollisionWorld(), m_constraints, solverParams ); m_constraintSolver->allSolved(solverInfo, m_debugDrawer); } diff --git a/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h b/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h index a8cc22dd0..667fe5800 100644 --- a/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h +++ b/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h @@ -21,7 +21,6 @@ subject to the following restrictions: #include "btSimulationIslandManagerMt.h" #include "BulletDynamics/ConstraintSolver/btConstraintSolver.h" -struct InplaceSolverIslandCallbackMt; /// /// btConstraintSolverPoolMt - masquerades as a constraint solver, but really it is a threadsafe pool of them. @@ -88,7 +87,7 @@ private: ATTRIBUTE_ALIGNED16(class) btDiscreteDynamicsWorldMt : public btDiscreteDynamicsWorld { protected: - InplaceSolverIslandCallbackMt* m_solverIslandCallbackMt; + btConstraintSolver* m_constraintSolverMt; virtual void solveConstraints(btContactSolverInfo& solverInfo) BT_OVERRIDE; @@ -126,6 +125,7 @@ public: btDiscreteDynamicsWorldMt(btDispatcher* dispatcher, btBroadphaseInterface* pairCache, btConstraintSolverPoolMt* constraintSolver, // Note this should be a solver-pool for multi-threading + btConstraintSolver* constraintSolverMt, // single multi-threaded solver for large islands (or NULL) btCollisionConfiguration* collisionConfiguration ); virtual ~btDiscreteDynamicsWorldMt(); diff --git a/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp b/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp index 54ac39aaf..fc54f0ba6 100644 --- a/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp +++ b/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp @@ -276,7 +276,7 @@ btSimulationIslandManagerMt::Island* btSimulationIslandManagerMt::allocateIsland void btSimulationIslandManagerMt::buildIslands( btDispatcher* dispatcher, btCollisionWorld* collisionWorld ) { - BT_PROFILE("islandUnionFindAndQuickSort"); + BT_PROFILE("buildIslands"); btCollisionObjectArray& collisionObjects = collisionWorld->getCollisionObjectArray(); @@ -545,53 +545,58 @@ void btSimulationIslandManagerMt::mergeIslands() } -void btSimulationIslandManagerMt::serialIslandDispatch( btAlignedObjectArray* islandsPtr, IslandCallback* callback ) +void btSimulationIslandManagerMt::solveIsland(btConstraintSolver* solver, Island& island, const SolverParams& solverParams) +{ + btPersistentManifold** manifolds = island.manifoldArray.size() ? &island.manifoldArray[ 0 ] : NULL; + btTypedConstraint** constraintsPtr = island.constraintArray.size() ? &island.constraintArray[ 0 ] : NULL; + solver->solveGroup( &island.bodyArray[ 0 ], + island.bodyArray.size(), + manifolds, + island.manifoldArray.size(), + constraintsPtr, + island.constraintArray.size(), + *solverParams.m_solverInfo, + solverParams.m_debugDrawer, + solverParams.m_dispatcher + ); +} + + +void btSimulationIslandManagerMt::serialIslandDispatch( btAlignedObjectArray* islandsPtr, const SolverParams& solverParams ) { BT_PROFILE( "serialIslandDispatch" ); // serial dispatch btAlignedObjectArray& islands = *islandsPtr; + btConstraintSolver* solver = solverParams.m_solverMt ? solverParams.m_solverMt : solverParams.m_solverPool; for ( int i = 0; i < islands.size(); ++i ) { - Island* island = islands[ i ]; - btPersistentManifold** manifolds = island->manifoldArray.size() ? &island->manifoldArray[ 0 ] : NULL; - btTypedConstraint** constraintsPtr = island->constraintArray.size() ? &island->constraintArray[ 0 ] : NULL; - callback->processIsland( &island->bodyArray[ 0 ], - island->bodyArray.size(), - manifolds, - island->manifoldArray.size(), - constraintsPtr, - island->constraintArray.size(), - island->id - ); + solveIsland(solver, *islands[ i ], solverParams); } } + struct UpdateIslandDispatcher : public btIParallelForBody { - btAlignedObjectArray* islandsPtr; - btSimulationIslandManagerMt::IslandCallback* callback; + btAlignedObjectArray& m_islandsPtr; + const btSimulationIslandManagerMt::SolverParams& m_solverParams; + + UpdateIslandDispatcher(btAlignedObjectArray& islandsPtr, const btSimulationIslandManagerMt::SolverParams& solverParams) + : m_islandsPtr(islandsPtr), m_solverParams(solverParams) + {} void forLoop( int iBegin, int iEnd ) const BT_OVERRIDE { + btConstraintSolver* solver = m_solverParams.m_solverPool; for ( int i = iBegin; i < iEnd; ++i ) { - btSimulationIslandManagerMt::Island* island = ( *islandsPtr )[ i ]; - btPersistentManifold** manifolds = island->manifoldArray.size() ? &island->manifoldArray[ 0 ] : NULL; - btTypedConstraint** constraintsPtr = island->constraintArray.size() ? &island->constraintArray[ 0 ] : NULL; - callback->processIsland( &island->bodyArray[ 0 ], - island->bodyArray.size(), - manifolds, - island->manifoldArray.size(), - constraintsPtr, - island->constraintArray.size(), - island->id - ); + btSimulationIslandManagerMt::Island* island = m_islandsPtr[ i ]; + btSimulationIslandManagerMt::solveIsland( solver, *island, m_solverParams ); } } }; -void btSimulationIslandManagerMt::parallelIslandDispatch( btAlignedObjectArray* islandsPtr, IslandCallback* callback ) +void btSimulationIslandManagerMt::parallelIslandDispatch( btAlignedObjectArray* islandsPtr, const SolverParams& solverParams ) { BT_PROFILE( "parallelIslandDispatch" ); // @@ -617,24 +622,25 @@ void btSimulationIslandManagerMt::parallelIslandDispatch( btAlignedObjectArraysize()) + if (solverParams.m_solverMt) { - btSimulationIslandManagerMt::Island* island = (*islandsPtr)[ iBegin ]; - if (island->manifoldArray.size() < btSequentialImpulseConstraintSolverMt::s_minimumContactManifoldsForBatching) + while ( iBegin < islandsPtr->size() ) { - // OK to submit the rest of the array in parallel - break; + btSimulationIslandManagerMt::Island* island = ( *islandsPtr )[ iBegin ]; + if ( island->manifoldArray.size() < btSequentialImpulseConstraintSolverMt::s_minimumContactManifoldsForBatching ) + { + // OK to submit the rest of the array in parallel + break; + } + // serial dispatch to parallel solver for large islands (if any) + solveIsland(solverParams.m_solverMt, *island, solverParams); + ++iBegin; } - ++iBegin; } - // serial dispatch for large islands (if any) - dispatcher.forLoop(0, iBegin); - // parallel dispatch for rest + // parallel dispatch to sequential solvers for rest btParallelFor( iBegin, islandsPtr->size(), 1, dispatcher ); } @@ -643,15 +649,14 @@ void btSimulationIslandManagerMt::parallelIslandDispatch( btAlignedObjectArray& constraints, - IslandCallback* callback + const SolverParams& solverParams ) { + BT_PROFILE("buildAndProcessIslands"); btCollisionObjectArray& collisionObjects = collisionWorld->getCollisionObjectArray(); buildIslands(dispatcher,collisionWorld); - BT_PROFILE("processIslands"); - if(!getSplitIslands()) { btPersistentManifold** manifolds = dispatcher->getInternalManifoldPointer(); @@ -683,14 +688,17 @@ void btSimulationIslandManagerMt::buildAndProcessIslands( btDispatcher* dispatch } } btTypedConstraint** constraintsPtr = constraints.size() ? &constraints[ 0 ] : NULL; - callback->processIsland(&collisionObjects[0], - collisionObjects.size(), - manifolds, - maxNumManifolds, - constraintsPtr, - constraints.size(), - -1 - ); + btConstraintSolver* solver = solverParams.m_solverMt ? solverParams.m_solverMt : solverParams.m_solverPool; + solver->solveGroup(&collisionObjects[0], + collisionObjects.size(), + manifolds, + maxNumManifolds, + constraintsPtr, + constraints.size(), + *solverParams.m_solverInfo, + solverParams.m_debugDrawer, + solverParams.m_dispatcher + ); } else { @@ -710,6 +718,6 @@ void btSimulationIslandManagerMt::buildAndProcessIslands( btDispatcher* dispatch mergeIslands(); } // dispatch islands to solver - m_islandDispatch( &m_activeIslands, callback ); + m_islandDispatch( &m_activeIslands, solverParams ); } } diff --git a/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h b/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h index 31a2053b4..563577a6f 100644 --- a/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h +++ b/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h @@ -19,7 +19,9 @@ subject to the following restrictions: #include "BulletCollision/CollisionDispatch/btSimulationIslandManager.h" class btTypedConstraint; - +class btConstraintSolver; +struct btContactSolverInfo; +class btIDebugDraw; /// /// SimulationIslandManagerMt -- Multithread capable version of SimulationIslandManager @@ -45,22 +47,19 @@ public: void append( const Island& other ); // add bodies, manifolds, constraints to my own }; - struct IslandCallback + struct SolverParams { - virtual ~IslandCallback() {}; - - virtual void processIsland( btCollisionObject** bodies, - int numBodies, - btPersistentManifold** manifolds, - int numManifolds, - btTypedConstraint** constraints, - int numConstraints, - int islandId - ) = 0; + btConstraintSolver* m_solverPool; + btConstraintSolver* m_solverMt; + btContactSolverInfo* m_solverInfo; + btIDebugDraw* m_debugDrawer; + btDispatcher* m_dispatcher; }; - typedef void( *IslandDispatchFunc ) ( btAlignedObjectArray* islands, IslandCallback* callback ); - static void serialIslandDispatch( btAlignedObjectArray* islandsPtr, IslandCallback* callback ); - static void parallelIslandDispatch( btAlignedObjectArray* islandsPtr, IslandCallback* callback ); + static void solveIsland(btConstraintSolver* solver, Island& island, const SolverParams& solverParams); + + typedef void( *IslandDispatchFunc ) ( btAlignedObjectArray* islands, const SolverParams& solverParams ); + static void serialIslandDispatch( btAlignedObjectArray* islandsPtr, const SolverParams& solverParams ); + static void parallelIslandDispatch( btAlignedObjectArray* islandsPtr, const SolverParams& solverParams ); protected: btAlignedObjectArray m_allocatedIslands; // owner of all Islands btAlignedObjectArray m_activeIslands; // islands actively in use @@ -83,7 +82,11 @@ public: btSimulationIslandManagerMt(); virtual ~btSimulationIslandManagerMt(); - virtual void buildAndProcessIslands( btDispatcher* dispatcher, btCollisionWorld* collisionWorld, btAlignedObjectArray& constraints, IslandCallback* callback ); + virtual void buildAndProcessIslands( btDispatcher* dispatcher, + btCollisionWorld* collisionWorld, + btAlignedObjectArray& constraints, + const SolverParams& solverParams + ); virtual void buildIslands(btDispatcher* dispatcher,btCollisionWorld* colWorld); @@ -106,7 +109,6 @@ public: } }; -extern int gLargeIslandManifoldCount; #endif //BT_SIMULATION_ISLAND_MANAGER_H From eec478709afa8220da9ddbb8888f4fd64cf90e8e Mon Sep 17 00:00:00 2001 From: Lunkhound Date: Tue, 6 Mar 2018 02:28:23 -0800 Subject: [PATCH 06/68] parallel solver: small tweaks and fixes --- .../ConstraintSolver/btBatchedConstraints.cpp | 24 +++++-------- .../btSequentialImpulseConstraintSolverMt.cpp | 2 +- .../TaskScheduler/btTaskScheduler.cpp | 34 ++----------------- .../TaskScheduler/btThreadSupportWin32.cpp | 4 +-- 4 files changed, 14 insertions(+), 50 deletions(-) diff --git a/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp b/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp index a27350bf9..310601659 100644 --- a/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp +++ b/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp @@ -38,11 +38,10 @@ struct btBatchedConstraintInfo struct btBatchInfo { - int phaseId; int numConstraints; int mergeIndex; - btBatchInfo(int _phaseId = -1) : numConstraints(0), mergeIndex(-1), phaseId(_phaseId) {} + btBatchInfo() : numConstraints(0), mergeIndex(kNoMerge) {} }; @@ -728,7 +727,6 @@ struct AssignConstraintsToGridBatchesParams btIntVec3* bodyGridCoords; int numBodies; btBatchedConstraintInfo* conInfos; - char* constraintPhaseIds; int* constraintBatchIds; btIntVec3 gridChunkDim; int maxNumBatchesPerPhase; @@ -807,7 +805,6 @@ static void assignConstraintsToGridBatches(const AssignConstraintsToGridBatchesP } int iBatch = iPhase * params.maxNumBatchesPerPhase + chunkCoord[ 0 ] + chunkCoord[ 1 ] * gridChunkDim[ 0 ] + chunkCoord[ 2 ] * gridChunkDim[ 0 ] * gridChunkDim[ 1 ]; btAssert(iBatch >= 0 && iBatch < params.maxNumBatchesPerPhase*params.numPhases); - params.constraintPhaseIds[ iCon ] = iPhase; params.constraintBatchIds[ iCon ] = iBatch; } } @@ -834,8 +831,7 @@ struct AssignConstraintsToGridBatchesLoop : public btIParallelForBody /* Bodies are treated as 3D points at their center of mass. We only consider dynamic bodies at this stage, -kinematic and static bodies are dealt with at a later stage. Also we only consider constraints that -are between 2 dynamic bodies ("dynamic" constraints) -- constraints that involve a static or kinematic body are handled later +because only dynamic bodies are mutated when a constraint is solved, thus subject to race conditions. 1. Compute a bounding box around all dynamic bodies 2. Compute the maximum extent of all dynamic constraints. Each dynamic constraint is treated as a line segment, and we need the size of @@ -845,15 +841,16 @@ are between 2 dynamic bodies ("dynamic" constraints) -- constraints that involve so that no dynamic constraint can span more than 2 cells of our grid on any axis of the grid. The cell size should be adjusted larger in order to keep the total number of cells from being excessively high -Key idea: Given that each constraint spans 1 or 2 grid cells in each dimension, we can handle all dynamic constraints by processing +Key idea: Given that each constraint spans 1 or 2 grid cells in each dimension, we can handle all constraints by processing in chunks of 2x2x2 cells with 8 different 1-cell offsets ((0,0,0),(0,0,1),(0,1,0),(0,1,1),(1,0,0)...). For each of the 8 offsets, we create a phase, and for each 2x2x2 chunk with dynamic constraints becomes a batch in that phase. - Once all of the phases have been populated, if any of the phases end up with too few batches, they could possibly be merged with other phases. +4. Once the grid is established, we can calculate for each constraint which phase and batch it belongs in. - Finally, we handle all of the remaining (non-dynamic) constraints, these can be added to whichever phase is least populated to help - even things out +5. Do a merge small batches on the batches of each phase separately, to try to even out the sizes of batches +Optionally, we can "collapse" one dimension of our 3D grid to turn it into a 2D grid, which reduces the number of phases +to 4. With fewer phases, there are more constraints per phase and this makes it easier to create batches of a useful size. */ // static void setupSpatialGridBatchesMt( @@ -882,7 +879,6 @@ static void setupSpatialGridBatchesMt( btBatchInfo* batches = NULL; int* batchWork = NULL; btBatchedConstraintInfo* conInfos = NULL; - char* constraintPhaseIds = NULL; int* constraintBatchIds = NULL; int* constraintRowBatchIds = NULL; { @@ -893,7 +889,6 @@ static void setupSpatialGridBatchesMt( memHelper.addChunk( (void**) &batches, sizeof( btBatchInfo )* allocNumBatches ); memHelper.addChunk( (void**) &batchWork, sizeof( int )* allocNumBatches ); memHelper.addChunk( (void**) &conInfos, sizeof( btBatchedConstraintInfo ) * numConstraints ); - memHelper.addChunk( (void**) &constraintPhaseIds, sizeof( char ) * numConstraints ); memHelper.addChunk( (void**) &constraintBatchIds, sizeof( int ) * numConstraints ); memHelper.addChunk( (void**) &constraintRowBatchIds, sizeof( int ) * numConstraintRows ); size_t scratchSize = memHelper.getSizeToAllocate(); @@ -1010,7 +1005,7 @@ static void setupSpatialGridBatchesMt( for ( int iBatch = batchBegin; iBatch < batchEnd; ++iBatch ) { btBatchInfo& batch = batches[ iBatch ]; - batch = btBatchInfo( iPhase ); + batch = btBatchInfo(); } } @@ -1020,7 +1015,6 @@ static void setupSpatialGridBatchesMt( params.bodyGridCoords = bodyGridCoords; params.numBodies = bodies.size(); params.conInfos = conInfos; - params.constraintPhaseIds = constraintPhaseIds; params.constraintBatchIds = constraintBatchIds; params.gridChunkDim = gridChunkDim; params.maxNumBatchesPerPhase = maxNumBatchesPerPhase; @@ -1030,7 +1024,7 @@ static void setupSpatialGridBatchesMt( if (inParallel) { AssignConstraintsToGridBatchesLoop loop(params); - int grainSize = 500; + int grainSize = 250; btParallelFor(0, numConstraints, grainSize, loop); } else diff --git a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp index b09665b15..b9ad17a03 100644 --- a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp +++ b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp @@ -940,7 +940,7 @@ void btSequentialImpulseConstraintSolverMt::solveGroupCacheFriendlySplitImpulseI { int iPhase = batchedCons.m_phaseOrder[ iiPhase ]; const btBatchedConstraints::Range& phase = batchedCons.m_phases[ iPhase ]; - int grainSize = 8; + int grainSize = batchedCons.m_phaseGrainSize[iPhase]; leastSquaresResidual += btParallelSum( phase.begin, phase.end, grainSize, loop ); } } diff --git a/src/LinearMath/TaskScheduler/btTaskScheduler.cpp b/src/LinearMath/TaskScheduler/btTaskScheduler.cpp index e02458367..1aa7d44d4 100644 --- a/src/LinearMath/TaskScheduler/btTaskScheduler.cpp +++ b/src/LinearMath/TaskScheduler/btTaskScheduler.cpp @@ -17,42 +17,12 @@ typedef void* ( *btThreadLocalStorageFunc )(); -/// -/// getNumHardwareThreads() -/// -/// -/// https://stackoverflow.com/questions/150355/programmatically-find-the-number-of-cores-on-a-machine -/// -#if __cplusplus >= 201103L - -#include - -int getNumHardwareThreads() -{ - return std::thread::hardware_concurrency(); -} - -#elif defined( _WIN32 ) +#if defined( _WIN32 ) #define WIN32_LEAN_AND_MEAN #include -int getNumHardwareThreads() -{ - // caps out at 32 - SYSTEM_INFO info; - GetSystemInfo( &info ); - return info.dwNumberOfProcessors; -} - -#else - -int getNumHardwareThreads() -{ - return 0; // don't know -} - #endif @@ -581,7 +551,6 @@ public: // put the main thread to work on emptying the job queue and then wait for all workers to finish waitJobs(); - m_antiNestingLock.unlock(); // add up all the thread sums btScalar sum = btScalar(0); @@ -589,6 +558,7 @@ public: { sum += threadLocalSum[ iThread ].mSum; } + m_antiNestingLock.unlock(); return sum; } else diff --git a/src/LinearMath/TaskScheduler/btThreadSupportWin32.cpp b/src/LinearMath/TaskScheduler/btThreadSupportWin32.cpp index f77616337..de693590e 100644 --- a/src/LinearMath/TaskScheduler/btThreadSupportWin32.cpp +++ b/src/LinearMath/TaskScheduler/btThreadSupportWin32.cpp @@ -267,8 +267,8 @@ DWORD WINAPI win32threadStartFunc( LPVOID lpParam ) void btThreadSupportWin32::runTask( int threadIndex, void* userData ) { btThreadStatus& threadStatus = m_activeThreadStatus[ threadIndex ]; - btAssert( taskId >= 0 ); - btAssert( int( taskId ) < m_activeThreadStatus.size() ); + btAssert( threadIndex >= 0 ); + btAssert( int( threadIndex ) < m_activeThreadStatus.size() ); threadStatus.m_commandId = 1; threadStatus.m_status = 1; From e526e48df837d282f4a59554750769b21bbc2104 Mon Sep 17 00:00:00 2001 From: Lunkhound Date: Tue, 13 Mar 2018 04:19:02 -0700 Subject: [PATCH 07/68] parallel solver: slightly overallocate to reduce how often allocation is needed --- .../ConstraintSolver/btBatchedConstraints.cpp | 6 ++++++ .../btSequentialImpulseConstraintSolverMt.cpp | 20 +++++++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp b/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp index 310601659..84a00dc63 100644 --- a/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp +++ b/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp @@ -892,6 +892,12 @@ static void setupSpatialGridBatchesMt( memHelper.addChunk( (void**) &constraintBatchIds, sizeof( int ) * numConstraints ); memHelper.addChunk( (void**) &constraintRowBatchIds, sizeof( int ) * numConstraintRows ); size_t scratchSize = memHelper.getSizeToAllocate(); + // if we need to reallocate + if (scratchMemory->capacity() < scratchSize) + { + // allocate 6.25% extra to avoid repeated reallocs + scratchMemory->reserve( scratchSize + scratchSize/16 ); + } scratchMemory->resizeNoInitialize( scratchSize ); char* memPtr = &scratchMemory->at(0); memHelper.setChunkPointers( memPtr ); diff --git a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp index b9ad17a03..4ccf7b247 100644 --- a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp +++ b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp @@ -568,10 +568,22 @@ void btSequentialImpulseConstraintSolverMt::allocAllContactConstraints(btPersist } } } - m_tmpSolverContactConstraintPool.resizeNoInitialize(numContacts); - m_rollingFrictionIndexTable.resizeNoInitialize(numContacts); - m_tmpSolverContactFrictionConstraintPool.resizeNoInitialize(numContacts*m_numFrictionDirections); - m_tmpSolverContactRollingFrictionConstraintPool.resizeNoInitialize(numRollingFrictionConstraints); + { + BT_PROFILE( "allocPools" ); + if ( m_tmpSolverContactConstraintPool.capacity() < numContacts ) + { + // if we need to reallocate, reserve some extra so we don't have to reallocate again next frame + int extraReserve = numContacts / 16; + m_tmpSolverContactConstraintPool.reserve( numContacts + extraReserve ); + m_rollingFrictionIndexTable.reserve( numContacts + extraReserve ); + m_tmpSolverContactFrictionConstraintPool.reserve( ( numContacts + extraReserve )*m_numFrictionDirections ); + m_tmpSolverContactRollingFrictionConstraintPool.reserve( numRollingFrictionConstraints + extraReserve ); + } + m_tmpSolverContactConstraintPool.resizeNoInitialize( numContacts ); + m_rollingFrictionIndexTable.resizeNoInitialize( numContacts ); + m_tmpSolverContactFrictionConstraintPool.resizeNoInitialize( numContacts*m_numFrictionDirections ); + m_tmpSolverContactRollingFrictionConstraintPool.resizeNoInitialize( numRollingFrictionConstraints ); + } } { AllocContactConstraintsLoop loop(this, &cachedInfoArray[0]); From 04e0d57dc1272390eee711f354e3a6879855d7b2 Mon Sep 17 00:00:00 2001 From: Lunkhound Date: Fri, 16 Mar 2018 23:42:43 -0700 Subject: [PATCH 08/68] add premake option 'enable-multithreading' --- build3/premake4.lua | 8 ++++++++ src/LinearMath/premake4.lua | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/build3/premake4.lua b/build3/premake4.lua index a39e926e5..d49b9d440 100644 --- a/build3/premake4.lua +++ b/build3/premake4.lua @@ -182,6 +182,14 @@ end trigger = "audio", description = "Enable audio" } + newoption + { + trigger = "enable_multithreading", + description = "enable CPU multithreading for bullet2 libs" + } + if _OPTIONS["enable_multithreading"] then + defines {"BT_THREADSAFE=1"} + end if _OPTIONS["double"] then defines {"BT_USE_DOUBLE_PRECISION"} end diff --git a/src/LinearMath/premake4.lua b/src/LinearMath/premake4.lua index 5f0fda6bf..3765811a9 100644 --- a/src/LinearMath/premake4.lua +++ b/src/LinearMath/premake4.lua @@ -9,5 +9,7 @@ } files { "*.cpp", - "*.h" + "*.h", + "TaskScheduler/*.cpp", + "TaskScheduler/*.h" } From bdc3c2bafb2d51f954da3b203233bc27b9224959 Mon Sep 17 00:00:00 2001 From: Lunkhound Date: Fri, 16 Mar 2018 16:38:11 -0700 Subject: [PATCH 09/68] task scheduler: add multiple job queues to improve performance when there are many threads --- .../TaskScheduler/btTaskScheduler.cpp | 557 ++++++++++++------ .../TaskScheduler/btThreadSupportInterface.h | 9 +- .../TaskScheduler/btThreadSupportPosix.cpp | 11 +- .../TaskScheduler/btThreadSupportWin32.cpp | 14 +- 4 files changed, 386 insertions(+), 205 deletions(-) diff --git a/src/LinearMath/TaskScheduler/btTaskScheduler.cpp b/src/LinearMath/TaskScheduler/btTaskScheduler.cpp index 1aa7d44d4..02fe07ab1 100644 --- a/src/LinearMath/TaskScheduler/btTaskScheduler.cpp +++ b/src/LinearMath/TaskScheduler/btTaskScheduler.cpp @@ -7,16 +7,11 @@ #include -typedef void( *btThreadFunc )( void* userPtr, void* lsMemory ); -typedef void* ( *btThreadLocalStorageFunc )(); #if BT_THREADSAFE #include "btThreadSupportInterface.h" - - - #if defined( _WIN32 ) #define WIN32_LEAN_AND_MEAN @@ -26,6 +21,9 @@ typedef void* ( *btThreadLocalStorageFunc )(); #endif +typedef unsigned long long btU64; +static const int kCacheLineSize = 64; + void btSpinPause() { #if defined( _WIN32 ) @@ -46,6 +44,62 @@ struct WorkerThreadStatus }; +ATTRIBUTE_ALIGNED64(class) WorkerThreadDirectives +{ + static const int kMaxThreadCount = BT_MAX_THREAD_COUNT; + // directives for all worker threads packed into a single cacheline + char m_threadDirs[kMaxThreadCount]; + +public: + enum Type + { + kInvalid, + kGoToSleep, // go to sleep + kStayAwakeButIdle, // wait for not checking job queue + kScanForJobs, // actively scan job queue for jobs + }; + WorkerThreadDirectives() + { + for ( int i = 0; i < kMaxThreadCount; ++i ) + { + m_threadDirs[ i ] = 0; + } + } + + Type getDirective(int threadId) + { + btAssert(threadId < kMaxThreadCount); + return static_cast(m_threadDirs[threadId]); + } + + void setDirectiveByRange(int threadBegin, int threadEnd, Type dir) + { + btAssert( threadBegin < threadEnd ); + btAssert( threadEnd <= kMaxThreadCount ); + char dirChar = static_cast(dir); + for ( int i = threadBegin; i < threadEnd; ++i ) + { + m_threadDirs[ i ] = dirChar; + } + } +}; + +class JobQueue; + +ATTRIBUTE_ALIGNED64(struct) ThreadLocalStorage +{ + int m_threadId; + WorkerThreadStatus::Type m_status; + int m_numJobsFinished; + btSpinMutex m_mutex; + btScalar m_sumResult; + WorkerThreadDirectives * m_directive; + JobQueue* m_queue; + btClock* m_clock; + unsigned int m_cooldownTime; +}; + + struct IJob { virtual void executeJob(int threadId) = 0; @@ -53,88 +107,152 @@ struct IJob class ParallelForJob : public IJob { - const btIParallelForBody* mBody; - int mBegin; - int mEnd; + const btIParallelForBody* m_body; + int m_begin; + int m_end; public: ParallelForJob( int iBegin, int iEnd, const btIParallelForBody& body ) { - mBody = &body; - mBegin = iBegin; - mEnd = iEnd; + m_body = &body; + m_begin = iBegin; + m_end = iEnd; } virtual void executeJob(int threadId) BT_OVERRIDE { BT_PROFILE( "executeJob" ); // call the functor body to do the work - mBody->forLoop( mBegin, mEnd ); + m_body->forLoop( m_begin, m_end ); } }; -static const int kCacheLineSize = 64; - -struct ThreadLocalSum -{ - btScalar mSum; - char mCachePadding[ kCacheLineSize - sizeof( btScalar ) ]; -}; class ParallelSumJob : public IJob { - const btIParallelSumBody* mBody; - ThreadLocalSum* mSumArray; - int mBegin; - int mEnd; + const btIParallelSumBody* m_body; + ThreadLocalStorage* m_threadLocalStoreArray; + int m_begin; + int m_end; public: - ParallelSumJob( int iBegin, int iEnd, const btIParallelSumBody& body, ThreadLocalSum* sums ) + ParallelSumJob( int iBegin, int iEnd, const btIParallelSumBody& body, ThreadLocalStorage* tls ) { - mBody = &body; - mSumArray = sums; - mBegin = iBegin; - mEnd = iEnd; + m_body = &body; + m_threadLocalStoreArray = tls; + m_begin = iBegin; + m_end = iEnd; } virtual void executeJob( int threadId ) BT_OVERRIDE { BT_PROFILE( "executeJob" ); // call the functor body to do the work - btScalar val = mBody->sumLoop( mBegin, mEnd ); + btScalar val = m_body->sumLoop( m_begin, m_end ); +#if BT_PARALLEL_SUM_DETERMINISTISM // by truncating bits of the result, we can make the parallelSum deterministic (at the expense of precision) const float TRUNC_SCALE = float(1<<19); val = floor(val*TRUNC_SCALE+0.5f)/TRUNC_SCALE; // truncate some bits - mSumArray[threadId].mSum += val; +#endif + m_threadLocalStoreArray[threadId].m_sumResult += val; } }; -struct JobContext +ATTRIBUTE_ALIGNED64(class) JobQueue { - JobContext() - { - m_queueLock = NULL; - m_headIndex = 0; - m_tailIndex = 0; - m_workersShouldCheckQueue = false; - m_workersShouldSleep = false; - m_useSpinMutex = false; - m_coolDownTime = 1000; // 1000 microseconds - } + btThreadSupportInterface* m_threadSupport; btCriticalSection* m_queueLock; btSpinMutex m_mutex; - volatile bool m_workersShouldCheckQueue; - volatile bool m_workersShouldSleep; btAlignedObjectArray m_jobQueue; + char* m_jobMem; + int m_jobMemSize; bool m_queueIsEmpty; int m_tailIndex; int m_headIndex; + int m_allocSize; bool m_useSpinMutex; - unsigned int m_coolDownTime; - btClock m_clock; + btAlignedObjectArray m_neighborContexts; + char m_cachePadding[kCacheLineSize]; // prevent false sharing + void freeJobMem() + { + if ( m_jobMem ) + { + // free old + btAlignedFree(m_jobMem); + m_jobMem = NULL; + } + } + void resizeJobMem(int newSize) + { + if (newSize > m_jobMemSize) + { + freeJobMem(); + m_jobMem = static_cast(btAlignedAlloc(newSize, kCacheLineSize)); + m_jobMemSize = newSize; + } + } + +public: + + JobQueue() + { + m_jobMem = NULL; + m_jobMemSize = 0; + m_threadSupport = NULL; + m_queueLock = NULL; + m_headIndex = 0; + m_tailIndex = 0; + m_useSpinMutex = false; + } + ~JobQueue() + { + freeJobMem(); + if (m_queueLock && m_threadSupport) + { + m_threadSupport->deleteCriticalSection(m_queueLock); + m_queueLock = NULL; + } + } + void init(btThreadSupportInterface* threadSup, btAlignedObjectArray* contextArray) + { + m_threadSupport = threadSup; + if (threadSup) + { + m_queueLock = m_threadSupport->createCriticalSection(); + } + setupJobStealing(contextArray, contextArray->size()); + } + void setupJobStealing(btAlignedObjectArray* contextArray, int numActiveContexts) + { + btAlignedObjectArray& contexts = *contextArray; + int selfIndex = 0; + for (int i = 0; i < contexts.size(); ++i) + { + if ( this == &contexts[ i ] ) + { + selfIndex = i; + break; + } + } + int numNeighbors = btMin(2, contexts.size() - 1); + int neighborOffsets[ ] = {-1, 1, -2, 2, -3, 3}; + int numOffsets = sizeof(neighborOffsets)/sizeof(neighborOffsets[0]); + m_neighborContexts.reserve( numNeighbors ); + m_neighborContexts.resizeNoInitialize(0); + for (int i = 0; i < numOffsets && m_neighborContexts.size() < numNeighbors; i++) + { + int neighborIndex = selfIndex + neighborOffsets[i]; + if ( neighborIndex >= 0 && neighborIndex < numActiveContexts) + { + m_neighborContexts.push_back( &contexts[ neighborIndex ] ); + } + } + } + + bool isQueueEmpty() const {return m_queueIsEmpty;} void lockQueue() { if ( m_useSpinMutex ) @@ -157,24 +275,44 @@ struct JobContext m_queueLock->unlock(); } } - void clearQueue() + void clearQueue(int jobCount, int jobSize) { lockQueue(); m_headIndex = 0; m_tailIndex = 0; + m_allocSize = 0; m_queueIsEmpty = true; + int jobBufSize = jobSize * jobCount; + // make sure we have enough memory allocated to store jobs + if ( jobBufSize > m_jobMemSize ) + { + resizeJobMem( jobBufSize ); + } + // make sure job queue is big enough + if ( jobCount > m_jobQueue.capacity() ) + { + m_jobQueue.reserve( jobCount ); + } unlockQueue(); m_jobQueue.resizeNoInitialize( 0 ); } + void* allocJobMem(int jobSize) + { + btAssert(m_jobMemSize >= (m_allocSize + jobSize)); + void* jobMem = &m_jobMem[m_allocSize]; + m_allocSize += jobSize; + return jobMem; + } void submitJob( IJob* job ) { + btAssert( reinterpret_cast( job ) >= &m_jobMem[ 0 ] && reinterpret_cast( job ) < &m_jobMem[ 0 ] + m_allocSize ); m_jobQueue.push_back( job ); lockQueue(); m_tailIndex++; m_queueIsEmpty = false; unlockQueue(); } - IJob* consumeJob() + IJob* consumeJobFromOwnQueue() { if ( m_queueIsEmpty ) { @@ -186,6 +324,7 @@ struct JobContext if ( !m_queueIsEmpty ) { job = m_jobQueue[ m_headIndex++ ]; + btAssert( reinterpret_cast( job ) >= &m_jobMem[ 0 ] && reinterpret_cast( job ) < &m_jobMem[ 0 ] + m_allocSize ); if ( m_headIndex == m_tailIndex ) { m_queueIsEmpty = true; @@ -194,58 +333,78 @@ struct JobContext unlockQueue(); return job; } + IJob* consumeJob() + { + if (IJob* job = consumeJobFromOwnQueue()) + { + return job; + } + // own queue is empty, try to steal from neighbor + for (int i = 0; i < m_neighborContexts.size(); ++i) + { + JobQueue* otherContext = m_neighborContexts[ i ]; + if ( IJob* job = otherContext->consumeJobFromOwnQueue() ) + { + return job; + } + } + return NULL; + } }; -struct WorkerThreadLocalStorage -{ - int threadId; - WorkerThreadStatus::Type status; - int numJobsFinished; - btSpinMutex m_mutex; -}; - - -static void WorkerThreadFunc( void* userPtr, void* lsMemory ) +static void WorkerThreadFunc( void* userPtr ) { BT_PROFILE( "WorkerThreadFunc" ); - WorkerThreadLocalStorage* localStorage = (WorkerThreadLocalStorage*) lsMemory; - JobContext* jobContext = (JobContext*) userPtr; + ThreadLocalStorage* localStorage = (ThreadLocalStorage*) userPtr; + JobQueue* jobQueue = localStorage->m_queue; bool shouldSleep = false; + int threadId = localStorage->m_threadId; while (! shouldSleep) { // do work localStorage->m_mutex.lock(); - while ( IJob* job = jobContext->consumeJob() ) + while ( IJob* job = jobQueue->consumeJob() ) { - localStorage->status = WorkerThreadStatus::kWorking; - job->executeJob( localStorage->threadId ); - localStorage->numJobsFinished++; + localStorage->m_status = WorkerThreadStatus::kWorking; + job->executeJob( threadId ); + localStorage->m_numJobsFinished++; } - localStorage->status = WorkerThreadStatus::kWaitingForWork; + localStorage->m_status = WorkerThreadStatus::kWaitingForWork; localStorage->m_mutex.unlock(); - unsigned long long int clockStart = jobContext->m_clock.getTimeMicroseconds(); + btU64 clockStart = localStorage->m_clock->getTimeMicroseconds(); // while queue is empty, - while (jobContext->m_queueIsEmpty) + while (jobQueue->isQueueEmpty()) { // todo: spin wait a bit to avoid hammering the empty queue btSpinPause(); - if ( jobContext->m_workersShouldSleep ) + if ( localStorage->m_directive->getDirective(threadId) == WorkerThreadDirectives::kGoToSleep ) { shouldSleep = true; break; } // if jobs are incoming, - if (jobContext->m_workersShouldCheckQueue) + if ( localStorage->m_directive->getDirective( threadId ) == WorkerThreadDirectives::kScanForJobs ) { - clockStart = jobContext->m_clock.getTimeMicroseconds(); // reset clock + clockStart = localStorage->m_clock->getTimeMicroseconds(); // reset clock } else { + for ( int i = 0; i < 50; ++i ) + { + btSpinPause(); + btSpinPause(); + btSpinPause(); + btSpinPause(); + if (localStorage->m_directive->getDirective( threadId ) == WorkerThreadDirectives::kScanForJobs || !jobQueue->isQueueEmpty()) + { + break; + } + } // if no jobs incoming and queue has been empty for the cooldown time, sleep - unsigned long long int timeElapsed = jobContext->m_clock.getTimeMicroseconds() - clockStart; - if (timeElapsed > jobContext->m_coolDownTime) + btU64 timeElapsed = localStorage->m_clock->getTimeMicroseconds() - clockStart; + if (timeElapsed > localStorage->m_cooldownTime) { shouldSleep = true; break; @@ -254,77 +413,107 @@ static void WorkerThreadFunc( void* userPtr, void* lsMemory ) } } - // go idle + // go sleep localStorage->m_mutex.lock(); - localStorage->status = WorkerThreadStatus::kSleeping; + localStorage->m_status = WorkerThreadStatus::kSleeping; localStorage->m_mutex.unlock(); } -static void* WorkerThreadAllocFunc() -{ - return new WorkerThreadLocalStorage; -} - - - class btTaskSchedulerDefault : public btITaskScheduler { - JobContext m_jobContext; btThreadSupportInterface* m_threadSupport; - btAlignedObjectArray m_jobMem; - btAlignedObjectArray m_threadLocalMem; + WorkerThreadDirectives* m_workerDirective; + btAlignedObjectArray m_jobQueues; + btAlignedObjectArray m_perThreadJobQueues; + btAlignedObjectArray m_threadLocalStorage; btSpinMutex m_antiNestingLock; // prevent nested parallel-for + btClock m_clock; int m_numThreads; int m_numWorkerThreads; + int m_numActiveJobQueues; int m_maxNumThreads; int m_numJobs; + static const int kFirstWorkerThreadId = 1; public: btTaskSchedulerDefault() : btITaskScheduler("ThreadSupport") { m_threadSupport = NULL; + m_workerDirective = NULL; } virtual ~btTaskSchedulerDefault() { - shutdown(); + waitForWorkersToSleep(); + if (m_threadSupport) + { + delete m_threadSupport; + m_threadSupport = NULL; + } + if (m_workerDirective) + { + btAlignedFree(m_workerDirective); + m_workerDirective = NULL; + } } void init() { - btThreadSupportInterface::ConstructionInfo constructionInfo( "TaskScheduler", WorkerThreadFunc, WorkerThreadAllocFunc ); + btThreadSupportInterface::ConstructionInfo constructionInfo( "TaskScheduler", WorkerThreadFunc ); m_threadSupport = btThreadSupportInterface::create( constructionInfo ); + m_workerDirective = static_cast(btAlignedAlloc(sizeof(*m_workerDirective), 64)); m_numWorkerThreads = m_threadSupport->getNumWorkerThreads(); m_maxNumThreads = m_threadSupport->getNumWorkerThreads() + 1; m_numThreads = m_maxNumThreads; - m_jobContext.m_queueLock = m_threadSupport->createCriticalSection(); - for ( int i = 0; i < m_numWorkerThreads; i++ ) + // ideal to have one job queue for each physical processor (except for the main thread which needs no queue) + int numThreadsPerQueue = m_threadSupport->getLogicalToPhysicalCoreRatio(); + int numJobQueues = (numThreadsPerQueue == 1) ? (m_maxNumThreads-1) : (m_maxNumThreads / numThreadsPerQueue); + m_jobQueues.resize(numJobQueues); + m_numActiveJobQueues = numJobQueues; + for ( int i = 0; i < m_jobQueues.size(); ++i ) { - WorkerThreadLocalStorage* storage = (WorkerThreadLocalStorage*) m_threadSupport->getThreadLocalMemory( i ); - btAssert( storage ); - storage->threadId = i + 1; // workers start at 1 - storage->status = WorkerThreadStatus::kSleeping; + m_jobQueues[i].init( m_threadSupport, &m_jobQueues ); } - setWorkersActive( false ); // no work for them yet + m_perThreadJobQueues.resize(m_numThreads); + for ( int i = 0; i < m_numThreads; i++ ) + { + JobQueue* jq = NULL; + // only worker threads get a job queue + if (i > 0) + { + if (numThreadsPerQueue == 1) + { + // one queue per worker thread + jq = &m_jobQueues[ i - kFirstWorkerThreadId ]; + } + else + { + // 2 threads share each queue + jq = &m_jobQueues[ i / numThreadsPerQueue ]; + } + } + m_perThreadJobQueues[i] = jq; + } + m_threadLocalStorage.resize(m_numThreads); + for ( int i = 0; i < m_numThreads; i++ ) + { + ThreadLocalStorage& storage = m_threadLocalStorage[i]; + storage.m_threadId = i; + storage.m_directive = m_workerDirective; + storage.m_status = WorkerThreadStatus::kSleeping; + storage.m_cooldownTime = 1000; // 1000 microseconds, threads go to sleep after this long if they have nothing to do + storage.m_clock = &m_clock; + storage.m_queue = m_perThreadJobQueues[i]; + } + setWorkerDirectives( WorkerThreadDirectives::kGoToSleep ); // no work for them yet setNumThreads( m_threadSupport->getCacheFriendlyNumThreads() ); } - virtual void shutdown() + void setWorkerDirectives(WorkerThreadDirectives::Type dir) { - setWorkersActive( false ); - waitForWorkersToSleep(); - m_threadSupport->deleteCriticalSection( m_jobContext.m_queueLock ); - m_jobContext.m_queueLock = NULL; - - delete m_threadSupport; - m_threadSupport = NULL; - } - - void setWorkersActive( bool active ) - { - m_jobContext.m_workersShouldCheckQueue = active; + m_workerDirective->setDirectiveByRange(kFirstWorkerThreadId, m_numThreads, dir); } virtual int getMaxNumThreads() const BT_OVERRIDE @@ -341,38 +530,56 @@ public: { m_numThreads = btMax( btMin(numThreads, int(m_maxNumThreads)), 1 ); m_numWorkerThreads = m_numThreads - 1; + m_numActiveJobQueues = 0; + // if there is at least 1 worker, + if ( m_numWorkerThreads > 0 ) + { + // re-setup job stealing between queues to avoid attempting to steal from an inactive job queue + JobQueue* lastActiveContext = m_perThreadJobQueues[ m_numThreads - 1 ]; + int iLastActiveContext = lastActiveContext - &m_jobQueues[0]; + m_numActiveJobQueues = iLastActiveContext + 1; + for ( int i = 0; i < m_jobQueues.size(); ++i ) + { + m_jobQueues[ i ].setupJobStealing( &m_jobQueues, m_numActiveJobQueues ); + } + } + m_workerDirective->setDirectiveByRange(m_numThreads, BT_MAX_THREAD_COUNT, WorkerThreadDirectives::kGoToSleep); } void waitJobs() { BT_PROFILE( "waitJobs" ); - // have the main thread work until the job queue is empty + // have the main thread work until the job queues are empty int numMainThreadJobsFinished = 0; - while ( IJob* job = m_jobContext.consumeJob() ) + for ( int i = 0; i < m_numActiveJobQueues; ++i ) { - job->executeJob( 0 ); - numMainThreadJobsFinished++; + while ( IJob* job = m_jobQueues[i].consumeJob() ) + { + job->executeJob( 0 ); + numMainThreadJobsFinished++; + } } - // done with jobs for now, tell workers to rest - setWorkersActive( false ); - unsigned long long int clockStart = m_jobContext.m_clock.getTimeMicroseconds(); + // done with jobs for now, tell workers to rest (but not sleep) + setWorkerDirectives( WorkerThreadDirectives::kStayAwakeButIdle ); + + btU64 clockStart = m_clock.getTimeMicroseconds(); // wait for workers to finish any jobs in progress while ( true ) { int numWorkerJobsFinished = 0; - for ( int iWorker = 0; iWorker < m_numWorkerThreads; ++iWorker ) + for ( int iThread = kFirstWorkerThreadId; iThread < m_numThreads; ++iThread ) { - WorkerThreadLocalStorage* storage = static_cast( m_threadSupport->getThreadLocalMemory( iWorker ) ); + ThreadLocalStorage* storage = &m_threadLocalStorage[iThread]; storage->m_mutex.lock(); - numWorkerJobsFinished += storage->numJobsFinished; + numWorkerJobsFinished += storage->m_numJobsFinished; storage->m_mutex.unlock(); } if (numWorkerJobsFinished + numMainThreadJobsFinished == m_numJobs) { break; } - unsigned long long int timeElapsed = m_jobContext.m_clock.getTimeMicroseconds() - clockStart; + btU64 timeElapsed = m_clock.getTimeMicroseconds() - clockStart; btAssert(timeElapsed < 1000); if (timeElapsed > 100000) { @@ -385,25 +592,25 @@ public: void wakeWorkers(int numWorkersToWake) { BT_PROFILE( "wakeWorkers" ); - btAssert( m_jobContext.m_workersShouldCheckQueue ); + btAssert( m_workerDirective->getDirective(1) == WorkerThreadDirectives::kScanForJobs ); int numDesiredWorkers = btMin(numWorkersToWake, m_numWorkerThreads); int numActiveWorkers = 0; for ( int iWorker = 0; iWorker < m_numWorkerThreads; ++iWorker ) { // note this count of active workers is not necessarily totally reliable, because a worker thread could be // just about to put itself to sleep. So we may on occasion fail to wake up all the workers. It should be rare. - WorkerThreadLocalStorage* storage = static_cast( m_threadSupport->getThreadLocalMemory( iWorker ) ); - if (storage->status != WorkerThreadStatus::kSleeping) + ThreadLocalStorage& storage = m_threadLocalStorage[ kFirstWorkerThreadId + iWorker ]; + if (storage.m_status != WorkerThreadStatus::kSleeping) { numActiveWorkers++; } } for ( int iWorker = 0; iWorker < m_numWorkerThreads && numActiveWorkers < numDesiredWorkers; ++iWorker ) { - WorkerThreadLocalStorage* storage = static_cast( m_threadSupport->getThreadLocalMemory( iWorker ) ); - if (storage->status == WorkerThreadStatus::kSleeping) + ThreadLocalStorage& storage = m_threadLocalStorage[ kFirstWorkerThreadId + iWorker ]; + if (storage.m_status == WorkerThreadStatus::kSleeping) { - m_threadSupport->runTask( iWorker, &m_jobContext ); + m_threadSupport->runTask( iWorker, &storage ); numActiveWorkers++; } } @@ -412,13 +619,12 @@ public: void waitForWorkersToSleep() { BT_PROFILE( "waitForWorkersToSleep" ); - m_jobContext.m_workersShouldSleep = true; + setWorkerDirectives( WorkerThreadDirectives::kGoToSleep ); m_threadSupport->waitForAllTasks(); - for ( int i = 0; i < m_numWorkerThreads; i++ ) + for ( int i = kFirstWorkerThreadId; i < m_numThreads; i++ ) { - WorkerThreadLocalStorage* storage = static_cast( m_threadSupport->getThreadLocalMemory(i) ); - btAssert( storage ); - btAssert( storage->status == WorkerThreadStatus::kSleeping ); + ThreadLocalStorage& storage = m_threadLocalStorage[i]; + btAssert( storage.m_status == WorkerThreadStatus::kSleeping ); } } @@ -426,20 +632,19 @@ public: { BT_PROFILE( "sleepWorkerThreadsHint" ); // hint the task scheduler that we may not be using these threads for a little while - m_jobContext.m_workersShouldSleep = true; + setWorkerDirectives( WorkerThreadDirectives::kGoToSleep ); } void prepareWorkerThreads() { - for ( int iWorker = 0; iWorker < m_numWorkerThreads; ++iWorker ) + for ( int i = kFirstWorkerThreadId; i < m_numThreads; ++i ) { - WorkerThreadLocalStorage* storage = static_cast( m_threadSupport->getThreadLocalMemory( iWorker ) ); - storage->m_mutex.lock(); - storage->numJobsFinished = 0; - storage->m_mutex.unlock(); + ThreadLocalStorage& storage = m_threadLocalStorage[i]; + storage.m_mutex.lock(); + storage.m_numJobsFinished = 0; + storage.m_mutex.unlock(); } - m_jobContext.m_workersShouldSleep = false; - setWorkersActive( true ); + setWorkerDirectives( WorkerThreadDirectives::kScanForJobs ); } virtual void parallelFor( int iBegin, int iEnd, int grainSize, const btIParallelForBody& body ) BT_OVERRIDE @@ -455,32 +660,32 @@ public: m_numJobs = jobCount; btAssert( jobCount >= 2 ); // need more than one job for multithreading int jobSize = sizeof( JobType ); - int jobBufSize = jobSize * jobCount; - // make sure we have enough memory allocated to store jobs - if ( jobBufSize > m_jobMem.size() ) - { - m_jobMem.resize( jobBufSize ); - } - // make sure job queue is big enough - if ( jobCount > m_jobContext.m_jobQueue.capacity() ) - { - m_jobContext.m_jobQueue.reserve( jobCount ); - } - m_jobContext.clearQueue(); + for (int i = 0; i < m_numActiveJobQueues; ++i) + { + m_jobQueues[i].clearQueue( jobCount, jobSize ); + } // prepare worker threads for incoming work prepareWorkerThreads(); // submit all of the jobs int iJob = 0; - JobType* jobs = reinterpret_cast( &m_jobMem[ 0 ] ); + int iThread = kFirstWorkerThreadId; // first worker thread for ( int i = iBegin; i < iEnd; i += grainSize ) { btAssert( iJob < jobCount ); int iE = btMin( i + grainSize, iEnd ); - JobType& job = jobs[ iJob ]; - new ( (void*) &job ) ParallelForJob( i, iE, body ); // placement new - m_jobContext.submitJob( &job ); + JobQueue* jq = m_perThreadJobQueues[ iThread ]; + btAssert(jq); + btAssert((jq - &m_jobQueues[0]) < m_numActiveJobQueues); + void* jobMem = jq->allocJobMem(jobSize); + JobType* job = new ( jobMem ) ParallelForJob( i, iE, body ); // placement new + jq->submitJob( job ); iJob++; + iThread++; + if ( iThread >= m_numThreads ) + { + iThread = kFirstWorkerThreadId; // first worker thread + } } wakeWorkers( jobCount - 1 ); @@ -508,44 +713,38 @@ public: m_numJobs = jobCount; btAssert( jobCount >= 2 ); // need more than one job for multithreading int jobSize = sizeof( JobType ); - int jobBufSize = jobSize * jobCount; - // make sure we have enough memory allocated to store jobs - if ( jobBufSize > m_jobMem.size() ) + for (int i = 0; i < m_numActiveJobQueues; ++i) { - m_jobMem.resize( jobBufSize ); - } - // make sure job queue is big enough - if ( jobCount > m_jobContext.m_jobQueue.capacity() ) - { - m_jobContext.m_jobQueue.reserve( jobCount ); - } - // make sure thread local area is big enough - int threadLocalSize = m_numThreads * sizeof( ThreadLocalSum ); - if ( threadLocalSize > m_threadLocalMem.size() ) - { - m_threadLocalMem.resize( threadLocalSize ); - } - // initialize summation - ThreadLocalSum* threadLocalSum = reinterpret_cast( &m_threadLocalMem[ 0 ] ); - for ( int iThread = 0; iThread < m_numThreads; ++iThread ) - { - threadLocalSum[ iThread ].mSum = btScalar( 0 ); + m_jobQueues[i].clearQueue( jobCount, jobSize ); + } + + // initialize summation + for ( int iThread = 0; iThread < m_numThreads; ++iThread ) + { + m_threadLocalStorage[iThread].m_sumResult = btScalar(0); } - m_jobContext.clearQueue(); // prepare worker threads for incoming work prepareWorkerThreads(); // submit all of the jobs int iJob = 0; - JobType* jobs = reinterpret_cast( &m_jobMem[ 0 ] ); + int iThread = kFirstWorkerThreadId; // first worker thread for ( int i = iBegin; i < iEnd; i += grainSize ) { btAssert( iJob < jobCount ); int iE = btMin( i + grainSize, iEnd ); - JobType& job = jobs[ iJob ]; - new ( (void*) &job ) ParallelSumJob( i, iE, body, threadLocalSum ); // placement new - m_jobContext.submitJob( &job ); + JobQueue* jq = m_perThreadJobQueues[ iThread ]; + btAssert(jq); + btAssert((jq - &m_jobQueues[0]) < m_numActiveJobQueues); + void* jobMem = jq->allocJobMem(jobSize); + JobType* job = new ( jobMem ) ParallelSumJob( i, iE, body, &m_threadLocalStorage[0] ); // placement new + jq->submitJob( job ); iJob++; + iThread++; + if ( iThread >= m_numThreads ) + { + iThread = kFirstWorkerThreadId; // first worker thread + } } wakeWorkers( jobCount - 1 ); @@ -556,7 +755,7 @@ public: btScalar sum = btScalar(0); for ( int iThread = 0; iThread < m_numThreads; ++iThread ) { - sum += threadLocalSum[ iThread ].mSum; + sum += m_threadLocalStorage[ iThread ].m_sumResult; } m_antiNestingLock.unlock(); return sum; @@ -586,4 +785,4 @@ btITaskScheduler* btCreateDefaultTaskScheduler() return NULL; } -#endif // #else // #if BT_THREADSAFE \ No newline at end of file +#endif // #else // #if BT_THREADSAFE diff --git a/src/LinearMath/TaskScheduler/btThreadSupportInterface.h b/src/LinearMath/TaskScheduler/btThreadSupportInterface.h index d537d7095..a0ad802b1 100644 --- a/src/LinearMath/TaskScheduler/btThreadSupportInterface.h +++ b/src/LinearMath/TaskScheduler/btThreadSupportInterface.h @@ -37,34 +37,29 @@ public: virtual int getNumWorkerThreads() const = 0; // number of worker threads (total number of logical processors - 1) virtual int getCacheFriendlyNumThreads() const = 0; // the number of logical processors sharing a single L3 cache + virtual int getLogicalToPhysicalCoreRatio() const = 0; // the number of logical processors per physical processor (usually 1 or 2) virtual void runTask( int threadIndex, void* userData ) = 0; virtual void waitForAllTasks() = 0; virtual btCriticalSection* createCriticalSection() = 0; virtual void deleteCriticalSection( btCriticalSection* criticalSection ) = 0; - virtual void* getThreadLocalMemory( int taskId ) { return NULL; } - - typedef void( *ThreadFunc )( void* userPtr, void* lsMemory ); - typedef void* ( *MemorySetupFunc )( ); + typedef void( *ThreadFunc )( void* userPtr ); struct ConstructionInfo { ConstructionInfo( const char* uniqueName, ThreadFunc userThreadFunc, - MemorySetupFunc lsMemoryFunc, int threadStackSize = 65535 ) :m_uniqueName( uniqueName ), m_userThreadFunc( userThreadFunc ), - m_lsMemoryFunc( lsMemoryFunc ), m_threadStackSize( threadStackSize ) { } const char* m_uniqueName; ThreadFunc m_userThreadFunc; - MemorySetupFunc m_lsMemoryFunc; int m_threadStackSize; }; diff --git a/src/LinearMath/TaskScheduler/btThreadSupportPosix.cpp b/src/LinearMath/TaskScheduler/btThreadSupportPosix.cpp index 5521fc555..ccd7d1e12 100644 --- a/src/LinearMath/TaskScheduler/btThreadSupportPosix.cpp +++ b/src/LinearMath/TaskScheduler/btThreadSupportPosix.cpp @@ -73,7 +73,6 @@ public: ThreadFunc m_userThreadFunc; void* m_userPtr; //for taskDesc etc - void* m_lsMemory; //initialized using PosixLocalStoreMemorySetupFunc pthread_t thread; //each tread will wait until this signal to start its work @@ -103,17 +102,14 @@ public: virtual int getNumWorkerThreads() const BT_OVERRIDE { return m_numThreads; } // TODO: return the number of logical processors sharing the first L3 cache virtual int getCacheFriendlyNumThreads() const BT_OVERRIDE { return m_numThreads + 1; } + // TODO: detect if CPU has hyperthreading enabled + virtual int getLogicalToPhysicalCoreRatio() const BT_OVERRIDE { return 1; } virtual void runTask( int threadIndex, void* userData ) BT_OVERRIDE; virtual void waitForAllTasks() BT_OVERRIDE; virtual btCriticalSection* createCriticalSection() BT_OVERRIDE; virtual void deleteCriticalSection( btCriticalSection* criticalSection ) BT_OVERRIDE; - - virtual void* getThreadLocalMemory( int taskId ) BT_OVERRIDE - { - return m_activeThreadStatus[ taskId ].m_lsMemory; - } }; @@ -190,7 +186,7 @@ static void *threadFunction( void *argument ) if ( userPtr ) { btAssert( status->m_status ); - status->m_userThreadFunc( userPtr, status->m_lsMemory ); + status->m_userThreadFunc( userPtr ); status->m_status = 2; checkPThreadFunction( sem_post( status->m_mainSemaphore ) ); status->threadUsed++; @@ -292,7 +288,6 @@ void btThreadSupportPosix::startThreads( const ConstructionInfo& threadConstruct threadStatus.m_commandId = 0; threadStatus.m_status = 0; threadStatus.m_mainSemaphore = m_mainSemaphore; - threadStatus.m_lsMemory = threadConstructionInfo.m_lsMemoryFunc(); threadStatus.m_userThreadFunc = threadConstructionInfo.m_userThreadFunc; threadStatus.threadUsed = 0; diff --git a/src/LinearMath/TaskScheduler/btThreadSupportWin32.cpp b/src/LinearMath/TaskScheduler/btThreadSupportWin32.cpp index de693590e..00edac650 100644 --- a/src/LinearMath/TaskScheduler/btThreadSupportWin32.cpp +++ b/src/LinearMath/TaskScheduler/btThreadSupportWin32.cpp @@ -179,7 +179,6 @@ public: ThreadFunc m_userThreadFunc; void* m_userPtr; //for taskDesc etc - void* m_lsMemory; //initialized using Win32LocalStoreMemorySetupFunc void* m_threadHandle; //this one is calling 'Win32ThreadFunc' @@ -208,15 +207,11 @@ public: virtual int getNumWorkerThreads() const BT_OVERRIDE { return m_numThreads; } virtual int getCacheFriendlyNumThreads() const BT_OVERRIDE { return countSetBits(m_processorInfo.processorTeamMasks[0]); } + virtual int getLogicalToPhysicalCoreRatio() const BT_OVERRIDE { return m_processorInfo.numLogicalProcessors / m_processorInfo.numCores; } virtual void runTask( int threadIndex, void* userData ) BT_OVERRIDE; virtual void waitForAllTasks() BT_OVERRIDE; - virtual void* getThreadLocalMemory( int taskId ) BT_OVERRIDE - { - return m_activeThreadStatus[ taskId ].m_lsMemory; - } - virtual btCriticalSection* createCriticalSection() BT_OVERRIDE; virtual void deleteCriticalSection( btCriticalSection* criticalSection ) BT_OVERRIDE; }; @@ -246,7 +241,7 @@ DWORD WINAPI win32threadStartFunc( LPVOID lpParam ) if ( userPtr ) { btAssert( status->m_status ); - status->m_userThreadFunc( userPtr, status->m_lsMemory ); + status->m_userThreadFunc( userPtr ); status->m_status = 2; SetEvent( status->m_eventCompleteHandle ); } @@ -392,7 +387,6 @@ void btThreadSupportWin32::startThreads( const ConstructionInfo& threadConstruct threadStatus.m_commandId = 0; threadStatus.m_status = 0; threadStatus.m_threadHandle = handle; - threadStatus.m_lsMemory = threadConstructionInfo.m_lsMemoryFunc(); threadStatus.m_userThreadFunc = threadConstructionInfo.m_userThreadFunc; printf( "started %s thread %d with threadHandle %p\n", threadConstructionInfo.m_uniqueName, i, handle ); @@ -410,9 +404,7 @@ void btThreadSupportWin32::stopThreads() WaitForSingleObject( threadStatus.m_eventCompleteHandle, INFINITE ); } - delete threadStatus.m_lsMemory; - - threadStatus.m_userPtr = 0; + threadStatus.m_userPtr = NULL; SetEvent( threadStatus.m_eventStartHandle ); WaitForSingleObject( threadStatus.m_eventCompleteHandle, INFINITE ); From b0b7d89979680cff6a4730b0cdb7ab493c5b170e Mon Sep 17 00:00:00 2001 From: Lunkhound Date: Sun, 18 Mar 2018 23:10:34 -0700 Subject: [PATCH 10/68] readme: for premake the options must come before the 'gmake' or they are silently ignored --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 529f5b583..3bbc2e2c7 100644 --- a/README.md +++ b/README.md @@ -80,9 +80,9 @@ Depending on your system (Linux 32bit, 64bit or Mac OSX) use one of the followin Using premake: ``` cd build3 - ./premake4_linux gmake --double - ./premake4_linux64 gmake --double - ./premake4_osx gmake --double --enable_pybullet + ./premake4_linux --double gmake + ./premake4_linux64 --double gmake + ./premake4_osx --double --enable_pybullet gmake ``` Then ``` From c4f7b5eddff75b3b6ef0ce86616a2358c928bde8 Mon Sep 17 00:00:00 2001 From: alantrrs Date: Wed, 21 Mar 2018 18:52:59 -0700 Subject: [PATCH 11/68] Fix simple cloth example. Closes #1606 --- examples/ExtendedTutorials/SimpleCloth.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/ExtendedTutorials/SimpleCloth.cpp b/examples/ExtendedTutorials/SimpleCloth.cpp index ec0dd337c..0d62a2dc2 100644 --- a/examples/ExtendedTutorials/SimpleCloth.cpp +++ b/examples/ExtendedTutorials/SimpleCloth.cpp @@ -121,6 +121,7 @@ void SimpleClothExample::createSoftBody(const btScalar s, fixed,true); cloth->getCollisionShape()->setMargin(0.001f); + cloth->getCollisionShape()->setUserPointer((void*)cloth); cloth->generateBendingConstraints(2,cloth->appendMaterial()); cloth->setTotalMass(10); //cloth->m_cfg.citerations = 10; From a2e9ecd95724d0046c36dfca4642969fc09409dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Audren?= Date: Mon, 26 Mar 2018 18:40:42 +0900 Subject: [PATCH 12/68] Fix jacobian computation --- examples/pybullet/examples/jacobian.py | 46 +++++++++++++++++------- examples/pybullet/pybullet.c | 50 ++++++++++++++++++++++---- 2 files changed, 78 insertions(+), 18 deletions(-) diff --git a/examples/pybullet/examples/jacobian.py b/examples/pybullet/examples/jacobian.py index 17638bfb3..0596e95b3 100644 --- a/examples/pybullet/examples/jacobian.py +++ b/examples/pybullet/examples/jacobian.py @@ -8,6 +8,15 @@ def getJointStates(robot): joint_torques = [state[3] for state in joint_states] return joint_positions, joint_velocities, joint_torques +def getMotorJointStates(robot): + joint_states = p.getJointStates(robot, range(p.getNumJoints(robot))) + joint_infos = [p.getJointInfo(robot, i) for i in range(p.getNumJoints(robot))] + joint_states = [j for j, i in zip(joint_states, joint_infos) if i[3] > -1] + joint_positions = [state[0] for state in joint_states] + joint_velocities = [state[1] for state in joint_states] + joint_torques = [state[3] for state in joint_states] + return joint_positions, joint_velocities, joint_torques + def setJointPosition(robot, position, kp=1.0, kv=0.3): num_joints = p.getNumJoints(robot) zero_vec = [0.0] * num_joints @@ -20,47 +29,60 @@ def setJointPosition(robot, position, kp=1.0, kv=0.3): "Expected torque vector of " "length {}, got {}".format(num_joints, len(torque))) -def multiplyJacobian(jacobian, vector): +def multiplyJacobian(robot, jacobian, vector): result = [0.0, 0.0, 0.0] + i = 0 for c in range(len(vector)): - for r in range(3): - result[r] += jacobian[r][c] * vector[c] + if p.getJointInfo(robot, c)[3] > -1: + for r in range(3): + result[r] += jacobian[r][i] * vector[c] + i += 1 return result clid = p.connect(p.SHARED_MEMORY) if (clid<0): p.connect(p.DIRECT) + time_step = 0.001 gravity_constant = -9.81 p.resetSimulation() p.setTimeStep(time_step) p.setGravity(0.0, 0.0, gravity_constant) + p.loadURDF("plane.urdf",[0,0,-0.3]) -kukaId = p.loadURDF("kuka_iiwa/model.urdf",[0,0,0]) + +kukaId = p.loadURDF("TwoJointRobot_w_fixedJoints.urdf", useFixedBase=True) +#kukaId = p.loadURDF("TwoJointRobot_w_fixedJoints.urdf",[0,0,0]) +#kukaId = p.loadURDF("kuka_iiwa/model.urdf",[0,0,0]) +#kukaId = p.loadURDF("kuka_lwr/kuka.urdf",[0,0,0]) +#kukaId = p.loadURDF("humanoid/nao.urdf",[0,0,0]) p.resetBasePositionAndOrientation(kukaId,[0,0,0],[0,0,0,1]) -kukaEndEffectorIndex = 6 numJoints = p.getNumJoints(kukaId) -if (numJoints!=7): - exit() +kukaEndEffectorIndex = numJoints - 1 + # Set a joint target for the position control and step the sim. -setJointPosition(kukaId, [0.1] * p.getNumJoints(kukaId)) +setJointPosition(kukaId, [0.1] * numJoints) p.stepSimulation() + # Get the joint and link state directly from Bullet. pos, vel, torq = getJointStates(kukaId) +mpos, mvel, mtorq = getMotorJointStates(kukaId) + result = p.getLinkState(kukaId, kukaEndEffectorIndex, computeLinkVelocity=1, computeForwardKinematics=1) link_trn, link_rot, com_trn, com_rot, frame_pos, frame_rot, link_vt, link_vr = result # Get the Jacobians for the CoM of the end-effector link. # Note that in this example com_rot = identity, and we would need to use com_rot.T * com_trn. # The localPosition is always defined in terms of the link frame coordinates. -zero_vec = [0.0] * numJoints -jac_t, jac_r = p.calculateJacobian(kukaId, kukaEndEffectorIndex, com_trn, pos, zero_vec, zero_vec) + +zero_vec = [0.0] * len(mpos) +jac_t, jac_r = p.calculateJacobian(kukaId, kukaEndEffectorIndex, com_trn, mpos, zero_vec, zero_vec) print ("Link linear velocity of CoM from getLinkState:") print (link_vt) print ("Link linear velocity of CoM from linearJacobian * q_dot:") -print (multiplyJacobian(jac_t, vel)) +print (multiplyJacobian(kukaId, jac_t, vel)) print ("Link angular velocity of CoM from getLinkState:") print (link_vr) print ("Link angular velocity of CoM from angularJacobian * q_dot:") -print (multiplyJacobian(jac_r, vel)) +print (multiplyJacobian(kukaId, jac_r, vel)) diff --git a/examples/pybullet/pybullet.c b/examples/pybullet/pybullet.c index 4280fe50c..f4a316da4 100644 --- a/examples/pybullet/pybullet.c +++ b/examples/pybullet/pybullet.c @@ -8326,10 +8326,48 @@ static PyObject* pybullet_calculateJacobian(PyObject* self, PyObject* args, PyOb int szObVel = PySequence_Size(objVelocities); int szObAcc = PySequence_Size(objAccelerations); int numJoints = b3GetNumJoints(sm, bodyUniqueId); - if (numJoints && (szLoPos == 3) && (szObPos == numJoints) && - (szObVel == numJoints) && (szObAcc == numJoints)) + + int j=0; + int dofCountOrg = 0; + for (j=0;j Date: Tue, 27 Mar 2018 10:18:00 -0700 Subject: [PATCH 13/68] make the method not pure virtual (it breaks some internal code) --- examples/CommonInterfaces/CommonGUIHelperInterface.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/CommonInterfaces/CommonGUIHelperInterface.h b/examples/CommonInterfaces/CommonGUIHelperInterface.h index 916a82343..a9e273f02 100644 --- a/examples/CommonInterfaces/CommonGUIHelperInterface.h +++ b/examples/CommonInterfaces/CommonGUIHelperInterface.h @@ -94,8 +94,8 @@ struct GUIHelperInterface int* segmentationMaskBuffer, int segmentationMaskBufferSizeInPixels, int startPixelIndex, int destinationWidth, int destinationHeight, int* numPixelsCopied){} - virtual void setProjectiveTextureMatrices(const float viewMatrix[16], const float projectionMatrix[16])=0; - virtual void setProjectiveTexture(bool useProjectiveTexture)=0; + virtual void setProjectiveTextureMatrices(const float viewMatrix[16], const float projectionMatrix[16]){} + virtual void setProjectiveTexture(bool useProjectiveTexture){} virtual void autogenerateGraphicsObjects(btDiscreteDynamicsWorld* rbWorld) =0; From 6856334d4891f99642428cc6c38bbdfac3bc3bc8 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Tue, 27 Mar 2018 16:54:41 -0700 Subject: [PATCH 14/68] fixes: make argument names in header and cpp the same --- .../btSequentialImpulseConstraintSolver.h | 30 +++++++++---------- .../btSequentialImpulseConstraintSolverMt.cpp | 2 +- .../btSequentialImpulseConstraintSolverMt.h | 12 ++++---- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h index 8c9c67f85..c853aed77 100644 --- a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h +++ b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h @@ -4,8 +4,8 @@ Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. @@ -64,31 +64,31 @@ protected: void setupFrictionConstraint( btSolverConstraint& solverConstraint, const btVector3& normalAxis,int solverBodyIdA,int solverBodyIdB, btManifoldPoint& cp,const btVector3& rel_pos1,const btVector3& rel_pos2, - btCollisionObject* colObj0,btCollisionObject* colObj1, btScalar relaxation, + btCollisionObject* colObj0,btCollisionObject* colObj1, btScalar relaxation, const btContactSolverInfo& infoGlobal, btScalar desiredVelocity=0., btScalar cfmSlip=0.); void setupTorsionalFrictionConstraint( btSolverConstraint& solverConstraint, const btVector3& normalAxis,int solverBodyIdA,int solverBodyIdB, btManifoldPoint& cp,btScalar combinedTorsionalFriction, const btVector3& rel_pos1,const btVector3& rel_pos2, - btCollisionObject* colObj0,btCollisionObject* colObj1, btScalar relaxation, + btCollisionObject* colObj0,btCollisionObject* colObj1, btScalar relaxation, btScalar desiredVelocity=0., btScalar cfmSlip=0.); btSolverConstraint& addFrictionConstraint(const btVector3& normalAxis,int solverBodyIdA,int solverBodyIdB,int frictionIndex,btManifoldPoint& cp,const btVector3& rel_pos1,const btVector3& rel_pos2,btCollisionObject* colObj0,btCollisionObject* colObj1, btScalar relaxation, const btContactSolverInfo& infoGlobal, btScalar desiredVelocity=0., btScalar cfmSlip=0.); btSolverConstraint& addTorsionalFrictionConstraint(const btVector3& normalAxis,int solverBodyIdA,int solverBodyIdB,int frictionIndex,btManifoldPoint& cp,btScalar torsionalFriction, const btVector3& rel_pos1,const btVector3& rel_pos2,btCollisionObject* colObj0,btCollisionObject* colObj1, btScalar relaxation, btScalar desiredVelocity=0, btScalar cfmSlip=0.f); - - void setupContactConstraint(btSolverConstraint& solverConstraint, int solverBodyIdA, int solverBodyIdB, btManifoldPoint& cp, + + void setupContactConstraint(btSolverConstraint& solverConstraint, int solverBodyIdA, int solverBodyIdB, btManifoldPoint& cp, const btContactSolverInfo& infoGlobal,btScalar& relaxation, const btVector3& rel_pos1, const btVector3& rel_pos2); static void applyAnisotropicFriction(btCollisionObject* colObj,btVector3& frictionDirection, int frictionMode); - void setFrictionConstraintImpulse( btSolverConstraint& solverConstraint, int solverBodyIdA,int solverBodyIdB, + void setFrictionConstraintImpulse( btSolverConstraint& solverConstraint, int solverBodyIdA,int solverBodyIdB, btManifoldPoint& cp, const btContactSolverInfo& infoGlobal); ///m_btSeed2 is used for re-arranging the constraint rows. improves convergence/quality of friction unsigned long m_btSeed2; - + btScalar restitutionCurve(btScalar rel_vel, btScalar restitution, btScalar velocityThreshold); virtual void convertContacts(btPersistentManifold** manifoldPtr, int numManifolds, const btContactSolverInfo& infoGlobal); @@ -96,7 +96,7 @@ protected: void convertContact(btPersistentManifold* manifold,const btContactSolverInfo& infoGlobal); virtual void convertJoints(btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal); - void convertJoint(btSolverConstraint* destConstraintRow, btTypedConstraint* srcConstraint, const btTypedConstraint::btConstraintInfo1& info1, int solverBodyIdA, int solverBodyIdB, const btContactSolverInfo& infoGlobal); + void convertJoint(btSolverConstraint* currentConstraintRow, btTypedConstraint* constraint, const btTypedConstraint::btConstraintInfo1& info1, int solverBodyIdA, int solverBodyIdB, const btContactSolverInfo& infoGlobal); virtual void convertBodies(btCollisionObject** bodies, int numBodies, const btContactSolverInfo& infoGlobal); @@ -122,9 +122,9 @@ protected: { return m_resolveSplitPenetrationImpulse( bodyA, bodyB, contactConstraint ); } - + protected: - + void writeBackContacts(int iBegin, int iEnd, const btContactSolverInfo& infoGlobal); void writeBackJoints(int iBegin, int iEnd, const btContactSolverInfo& infoGlobal); void writeBackBodies(int iBegin, int iEnd, const btContactSolverInfo& infoGlobal); @@ -139,15 +139,15 @@ protected: public: BT_DECLARE_ALIGNED_ALLOCATOR(); - + btSequentialImpulseConstraintSolver(); virtual ~btSequentialImpulseConstraintSolver(); virtual btScalar solveGroup(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifold,int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& info, btIDebugDraw* debugDrawer,btDispatcher* dispatcher); - + ///clear internal cached data and reset random seed virtual void reset(); - + unsigned long btRand2(); int btRandInt2 (int n); @@ -161,7 +161,7 @@ public: return m_btSeed2; } - + virtual btConstraintSolverType getSolverType() const { return BT_SEQUENTIAL_IMPULSE_SOLVER; diff --git a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp index 4ccf7b247..82a719a3e 100644 --- a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp +++ b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp @@ -537,7 +537,7 @@ void btSequentialImpulseConstraintSolverMt::allocAllContactConstraints(btPersist BT_PROFILE( "allocAllContactConstraints" ); btAlignedObjectArray cachedInfoArray; // = m_manifoldCachedInfoArray; cachedInfoArray.resizeNoInitialize( numManifolds ); - if (false) + if (/* DISABLES CODE */ (false)) { // sequential internalCollectContactManifoldCachedInfo(&cachedInfoArray[ 0 ], manifoldPtr, numManifolds, infoGlobal); diff --git a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.h b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.h index 0577d8d2d..55d53474c 100644 --- a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.h +++ b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.h @@ -4,8 +4,8 @@ Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. @@ -127,7 +127,7 @@ protected: public: BT_DECLARE_ALIGNED_ALLOCATOR(); - + btSequentialImpulseConstraintSolverMt(); virtual ~btSequentialImpulseConstraintSolverMt(); @@ -136,11 +136,11 @@ public: btScalar resolveMultipleContactSplitPenetrationImpulseConstraints( const btAlignedObjectArray& consIndices, int batchBegin, int batchEnd ); btScalar resolveMultipleContactFrictionConstraints( const btAlignedObjectArray& consIndices, int batchBegin, int batchEnd ); btScalar resolveMultipleContactRollingFrictionConstraints( const btAlignedObjectArray& consIndices, int batchBegin, int batchEnd ); - btScalar resolveMultipleContactConstraintsInterleaved( const btAlignedObjectArray& consIndices, int batchBegin, int batchEnd ); + btScalar resolveMultipleContactConstraintsInterleaved( const btAlignedObjectArray& contactIndices, int batchBegin, int batchEnd ); - void internalCollectContactManifoldCachedInfo(btContactManifoldCachedInfo* cachedInfoArray, btPersistentManifold** manifold, int numManifolds, const btContactSolverInfo& infoGlobal); + void internalCollectContactManifoldCachedInfo(btContactManifoldCachedInfo* cachedInfoArray, btPersistentManifold** manifoldPtr, int numManifolds, const btContactSolverInfo& infoGlobal); void internalAllocContactConstraints(const btContactManifoldCachedInfo* cachedInfoArray, int numManifolds); - void internalSetupContactConstraints(int iContact, const btContactSolverInfo& infoGlobal); + void internalSetupContactConstraints(int iContactConstraint, const btContactSolverInfo& infoGlobal); void internalConvertBodies(btCollisionObject** bodies, int iBegin, int iEnd, const btContactSolverInfo& infoGlobal); void internalWriteBackContacts(int iBegin, int iEnd, const btContactSolverInfo& infoGlobal); void internalWriteBackJoints(int iBegin, int iEnd, const btContactSolverInfo& infoGlobal); From c547555848cbf242d068160fafc168115dc662b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Audren?= Date: Wed, 28 Mar 2018 10:40:55 +0900 Subject: [PATCH 15/68] Add a few jacobian tests --- examples/pybullet/unittests/unittests.py | 74 +++++++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) diff --git a/examples/pybullet/unittests/unittests.py b/examples/pybullet/unittests/unittests.py index 3975c44af..295403393 100644 --- a/examples/pybullet/unittests/unittests.py +++ b/examples/pybullet/unittests/unittests.py @@ -40,7 +40,79 @@ class TestPybulletMethods(unittest.TestCase): self.assertLess(vel[1][1],1e-10) self.assertLess(vel[1][2],1e-10) p.disconnect() - + +class TestPybulletJacobian(unittest.TestCase): + + def getMotorJointStates(self, robot): + import pybullet as p + joint_states = p.getJointStates(robot, range(p.getNumJoints(robot))) + joint_infos = [p.getJointInfo(robot, i) for i in range(p.getNumJoints(robot))] + joint_states = [j for j, i in zip(joint_states, joint_infos) if i[3] > -1] + joint_positions = [state[0] for state in joint_states] + joint_velocities = [state[1] for state in joint_states] + joint_torques = [state[3] for state in joint_states] + return joint_positions, joint_velocities, joint_torques + + def setJointPosition(self, robot, position, kp=1.0, kv=0.3): + import pybullet as p + num_joints = p.getNumJoints(robot) + zero_vec = [0.0] * num_joints + if len(position) == num_joints: + p.setJointMotorControlArray(robot, range(num_joints), p.POSITION_CONTROL, + targetPositions=position, targetVelocities=zero_vec, + positionGains=[kp] * num_joints, velocityGains=[kv] * num_joints) + + def testJacobian(self): + try: + import numpy as np + except ImportError: + return + import pybullet as p + + clid = p.connect(p.SHARED_MEMORY) + if (clid<0): + p.connect(p.DIRECT) + + time_step = 0.001 + gravity_constant = -9.81 + + urdfs = ["TwoJointRobot_w_fixedJoints.urdf", + "TwoJointRobot_w_fixedJoints.urdf", + "kuka_iiwa/model.urdf", + "kuka_lwr/kuka.urdf"] + for urdf in urdfs: + p.resetSimulation() + p.setTimeStep(time_step) + p.setGravity(0.0, 0.0, gravity_constant) + + robotId = p.loadURDF(urdf, useFixedBase=True) + p.resetBasePositionAndOrientation(robotId,[0,0,0],[0,0,0,1]) + numJoints = p.getNumJoints(robotId) + endEffectorIndex = numJoints - 1 + + # Set a joint target for the position control and step the sim. + self.setJointPosition(robotId, [0.1 * (i % 3) + for i in range(numJoints)]) + p.stepSimulation() + + # Get the joint and link state directly from Bullet. + mpos, mvel, mtorq = self.getMotorJointStates(robotId) + + result = p.getLinkState(robotId, endEffectorIndex, + computeLinkVelocity=1, computeForwardKinematics=1) + link_trn, link_rot, com_trn, com_rot, frame_pos, frame_rot, link_vt, link_vr = result + # Get the Jacobians for the CoM of the end-effector link. + # Note that in this example com_rot = identity, and we would need to use com_rot.T * com_trn. + # The localPosition is always defined in terms of the link frame coordinates. + + zero_vec = [0.0] * len(mpos) + jac_t, jac_r = p.calculateJacobian(robotId, endEffectorIndex, + com_trn, mpos, zero_vec, zero_vec) + + assert(np.allclose(np.array(jac_t).dot(mvel), link_vt)) + assert(np.allclose(np.array(jac_r).dot(mvel), link_vr)) + p.disconnect() + if __name__ == '__main__': unittest.main() From ec682904977d7c870ff53d6b82350fb9adc00c24 Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Wed, 28 Mar 2018 19:08:18 -0700 Subject: [PATCH 16/68] PyBullet createVisualShape/createVisualShapeArray: postpone visual shape conversion until we know the link inertial transform --- .../PhysicsServerCommandProcessor.cpp | 166 +++++++++++------- 1 file changed, 100 insertions(+), 66 deletions(-) diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp index 4352fd5ba..f1e1b057e 100644 --- a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp +++ b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp @@ -150,16 +150,16 @@ struct InternalVisualShapeData int m_tinyRendererVisualShapeIndex; int m_OpenGLGraphicsIndex; - UrdfVisual m_visualShape; - btTransform m_localInertiaFrame; - std::string m_pathPrefix; + b3AlignedObjectArray m_visualShapes; + + b3AlignedObjectArray m_pathPrefixes; void clear() { - m_tinyRendererVisualShapeIndex = 0; - m_OpenGLGraphicsIndex = 0; - m_localInertiaFrame.setIdentity(); - m_pathPrefix = ""; + m_tinyRendererVisualShapeIndex = -1; + m_OpenGLGraphicsIndex = -1; + m_visualShapes.clear(); + m_pathPrefixes.clear(); } }; @@ -1921,10 +1921,13 @@ struct ProgrammaticUrdfInterface : public URDFImporterInterface const InternalVisualShapeHandle* visHandle = m_data->m_userVisualShapeHandles.getHandle(m_createBodyArgs.m_linkVisualShapeUniqueIds[linkIndex]); if (visHandle) { - if (visHandle->m_visualShape.m_geometry.m_hasLocalMaterial) + for (int i=0;im_visualShapes.size();i++) { - matCol = visHandle->m_visualShape.m_geometry.m_localMaterial.m_matColor; - return true; + if (visHandle->m_visualShapes[i].m_geometry.m_hasLocalMaterial) + { + matCol = visHandle->m_visualShapes[i].m_geometry.m_localMaterial.m_matColor; + return true; + } } } } @@ -2092,39 +2095,91 @@ struct ProgrammaticUrdfInterface : public URDFImporterInterface b3Assert(0); } - ///quick hack: need to rethink the API/dependencies of this - virtual int convertLinkVisualShapes(int linkIndex, const char* pathPrefix, const btTransform& inertialFrame) const + virtual int convertLinkVisualShapes(int linkIndex, const char* pathPrefix, const btTransform& localInertiaFrame) const { + int graphicsIndex = -1; + double globalScaling = 1.f;//todo! + int flags=0; + BulletURDFImporter u2b(m_data->m_guiHelper, m_data->m_pluginManager.getRenderInterface(), globalScaling, flags); + u2b.setEnableTinyRenderer(m_data->m_enableTinyRenderer); + + btAlignedObjectArray vertices; + btAlignedObjectArray indices; + btTransform startTrans; startTrans.setIdentity(); + btAlignedObjectArray textures; + if (m_createBodyArgs.m_linkVisualShapeUniqueIds[linkIndex]>=0) { - const InternalVisualShapeHandle* visHandle = m_data->m_userVisualShapeHandles.getHandle(m_createBodyArgs.m_linkVisualShapeUniqueIds[linkIndex]); + InternalVisualShapeHandle* visHandle = m_data->m_userVisualShapeHandles.getHandle(m_createBodyArgs.m_linkVisualShapeUniqueIds[linkIndex]); if (visHandle) { - - return visHandle->m_OpenGLGraphicsIndex; + if (visHandle->m_OpenGLGraphicsIndex>=0) + { + //instancing. assume the inertial frame is identical + graphicsIndex = visHandle->m_OpenGLGraphicsIndex; + } else + { + for (int v = 0;vm_visualShapes.size();v++) + { + u2b.convertURDFToVisualShapeInternal(&visHandle->m_visualShapes[v], pathPrefix, localInertiaFrame.inverse()*visHandle->m_visualShapes[v].m_linkLocalFrame, vertices, indices, textures); + } + + if (vertices.size() && indices.size()) + { + if (1) + { + int textureIndex = -1; + if (textures.size()) + { + + textureIndex = m_data->m_guiHelper->registerTexture(textures[0].textureData1, textures[0].m_width, textures[0].m_height); + } + + { + B3_PROFILE("registerGraphicsShape"); + graphicsIndex = m_data->m_guiHelper->registerGraphicsShape(&vertices[0].xyzw[0], vertices.size(), &indices[0], indices.size(), B3_GL_TRIANGLES, textureIndex); + visHandle->m_OpenGLGraphicsIndex = graphicsIndex; + } + } + } + } } + } - return -1; + return graphicsIndex; } virtual void convertLinkVisualShapes2(int linkIndex, int urdfIndex, const char* pathPrefix, const btTransform& localInertiaFrame, class btCollisionObject* colObj, int bodyUniqueId) const { //if there is a visual, use it, otherwise convert collision shape back into UrdfCollision... - - - UrdfModel model;// = m_data->m_urdfParser.getModel(); UrdfLink link; - int colShapeUniqueId = m_createBodyArgs.m_linkCollisionShapeUniqueIds[urdfIndex]; - if (colShapeUniqueId>=0) + + if (m_createBodyArgs.m_linkVisualShapeUniqueIds[linkIndex]>=0) { - InternalCollisionShapeHandle* handle = m_data->m_userCollisionShapeHandles.getHandle(colShapeUniqueId); - if (handle) + const InternalVisualShapeHandle* visHandle = m_data->m_userVisualShapeHandles.getHandle(m_createBodyArgs.m_linkVisualShapeUniqueIds[linkIndex]); + if (visHandle) { - for (int i=0;im_urdfCollisionObjects.size();i++) + for (int i=0;im_visualShapes.size();i++) { - link.m_collisionArray.push_back(handle->m_urdfCollisionObjects[i]); + link.m_visualArray.push_back(visHandle->m_visualShapes[i]); + } + } + } + + if (link.m_visualArray.size()==0) + { + int colShapeUniqueId = m_createBodyArgs.m_linkCollisionShapeUniqueIds[urdfIndex]; + if (colShapeUniqueId>=0) + { + InternalCollisionShapeHandle* handle = m_data->m_userCollisionShapeHandles.getHandle(colShapeUniqueId); + if (handle) + { + for (int i=0;im_urdfCollisionObjects.size();i++) + { + link.m_collisionArray.push_back(handle->m_urdfCollisionObjects[i]); + } } } } @@ -3968,19 +4023,16 @@ bool PhysicsServerCommandProcessor::processCreateVisualShapeCommand(const struct u2b.setEnableTinyRenderer(m_data->m_enableTinyRenderer); btTransform localInertiaFrame; localInertiaFrame.setIdentity(); - btTransform childTrans; - childTrans.setIdentity(); + const char* pathPrefix = ""; - - btAlignedObjectArray vertices; - btAlignedObjectArray indices; - btTransform startTrans; startTrans.setIdentity(); - btAlignedObjectArray textures; + int visualShapeUniqueId = -1; + UrdfVisual visualShape; for (int userShapeIndex = 0; userShapeIndex< clientCmd.m_createUserShapeArgs.m_numUserShapes; userShapeIndex++) { - + btTransform childTrans; + childTrans.setIdentity(); visualShape.m_geometry.m_type = (UrdfGeomTypes)clientCmd.m_createUserShapeArgs.m_shapes[userShapeIndex].m_type; char relativeFileName[1024]; char pathPrefix[1024]; @@ -4106,41 +4158,23 @@ bool PhysicsServerCommandProcessor::processCreateVisualShapeCommand(const struct } - u2b.convertURDFToVisualShapeInternal(&visualShape, pathPrefix, localInertiaFrame.inverse()*childTrans, vertices, indices, textures); - - } - - if (vertices.size() && indices.size()) - { - if (1) + if (visualShapeUniqueId<0) { - int textureIndex = -1; - if (textures.size()) - { - - textureIndex = m_data->m_guiHelper->registerTexture(textures[0].textureData1, textures[0].m_width, textures[0].m_height); - } - int graphicsIndex = -1; - { - B3_PROFILE("registerGraphicsShape"); - graphicsIndex = m_data->m_guiHelper->registerGraphicsShape(&vertices[0].xyzw[0], vertices.size(), &indices[0], indices.size(), B3_GL_TRIANGLES, textureIndex); - if (graphicsIndex >= 0) - { - int visualShapeUniqueId = m_data->m_userVisualShapeHandles.allocHandle(); - InternalVisualShapeHandle* visualHandle = m_data->m_userVisualShapeHandles.getHandle(visualShapeUniqueId); - visualHandle->m_OpenGLGraphicsIndex = graphicsIndex; - visualHandle->m_tinyRendererVisualShapeIndex = -1; - //tinyrenderer doesn't separate shape versus instance, so create it when creating the multibody instance - //store needed info for tinyrenderer - visualHandle->m_localInertiaFrame = localInertiaFrame; - visualHandle->m_visualShape = visualShape; - visualHandle->m_pathPrefix = pathPrefix[0] ? pathPrefix : ""; - - serverStatusOut.m_createUserShapeResultArgs.m_userShapeUniqueId = visualShapeUniqueId; - serverStatusOut.m_type = CMD_CREATE_VISUAL_SHAPE_COMPLETED; - } - } + visualShapeUniqueId = m_data->m_userVisualShapeHandles.allocHandle(); } + InternalVisualShapeHandle* visualHandle = m_data->m_userVisualShapeHandles.getHandle(visualShapeUniqueId); + visualHandle->m_OpenGLGraphicsIndex = -1; + visualHandle->m_tinyRendererVisualShapeIndex = -1; + //tinyrenderer doesn't separate shape versus instance, so create it when creating the multibody instance + //store needed info for tinyrenderer + + visualShape.m_linkLocalFrame = childTrans; + visualHandle->m_visualShapes.push_back(visualShape); + visualHandle->m_pathPrefixes.push_back(pathPrefix[0] ? pathPrefix : ""); + + serverStatusOut.m_createUserShapeResultArgs.m_userShapeUniqueId = visualShapeUniqueId; + serverStatusOut.m_type = CMD_CREATE_VISUAL_SHAPE_COMPLETED; + } return hasStatus; From 14d37ecb434706da5c08344aa95a3e23238df514 Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Sat, 31 Mar 2018 21:15:27 -0700 Subject: [PATCH 17/68] first pass of updated minitaur quadruped environment --- .../quadruped/minitaur_derpy.urdf | 1073 +++++++++++++++++ .../quadruped/minitaur_rainbow_dash.urdf | 914 ++++++++++++++ .../quadruped/minitaur_rainbow_dash_v1.urdf | 980 +++++++++++++++ .../quadruped/minitaur_single_motor.urdf | 203 ++++ .../sphere_with_restitution.urdf | 33 + .../minitaur/envs/bullet_client.py | 50 + .../minitaur/envs/env_randomizer_base.py | 35 + ...initaur_alternating_legs_env_randomizer.py | 59 + .../minitaur_env_randomizer.py | 69 ++ .../minitaur_env_randomizer_config.py | 25 + .../minitaur_env_randomizer_from_config.py | 139 +++ .../minitaur_push_randomizer.py | 91 ++ .../minitaur_terrain_randomizer.py | 295 +++++ .../pybullet_envs/minitaur/envs/minitaur.py | 996 +++++++++++++++ .../envs/minitaur_alternating_legs_env.py | 244 ++++ .../minitaur_alternating_legs_env_example.py | 109 ++ .../minitaur/envs/minitaur_ball_gym_env.py | 147 +++ .../envs/minitaur_ball_gym_env_example.py | 34 + .../minitaur/envs/minitaur_derpy.py | 175 +++ .../envs/minitaur_four_leg_stand_env.py | 359 ++++++ .../minitaur_four_leg_stand_env_example.py | 69 ++ .../minitaur/envs/minitaur_gym_env.py | 601 +++++++++ .../minitaur/envs/minitaur_gym_env_example.py | 217 ++++ .../minitaur/envs/minitaur_logging.proto | 41 + .../minitaur/envs/minitaur_logging.py | 142 +++ .../minitaur/envs/minitaur_logging_pb2.py | 212 ++++ .../minitaur/envs/minitaur_rainbow_dash.py | 174 +++ .../minitaur_randomize_terrain_gym_env.py | 84 ++ ...itaur_randomize_terrain_gym_env_example.py | 83 ++ .../minitaur/envs/minitaur_reactive_env.py | 221 ++++ .../envs/minitaur_reactive_env_example.py | 55 + .../minitaur/envs/minitaur_stand_gym_env.py | 241 ++++ .../envs/minitaur_stand_gym_env_example.py | 35 + .../minitaur/envs/minitaur_trotting_env.py | 324 +++++ .../envs/minitaur_trotting_env_example.py | 41 + .../gym/pybullet_envs/minitaur/envs/motor.py | 144 +++ .../minitaur/envs/simple_ppo_agent.py | 101 ++ .../minitaur/envs/simple_ppo_agent_example.py | 69 ++ .../minitaur/envs/timestamp.proto | 18 + .../minitaur/envs/timestamp_pb2.py | 76 ++ .../pybullet_envs/minitaur/envs/vector.proto | 56 + .../pybullet_envs/minitaur/envs/vector_pb2.py | 430 +++++++ 42 files changed, 9464 insertions(+) create mode 100644 examples/pybullet/gym/pybullet_data/quadruped/minitaur_derpy.urdf create mode 100644 examples/pybullet/gym/pybullet_data/quadruped/minitaur_rainbow_dash.urdf create mode 100644 examples/pybullet/gym/pybullet_data/quadruped/minitaur_rainbow_dash_v1.urdf create mode 100644 examples/pybullet/gym/pybullet_data/quadruped/minitaur_single_motor.urdf create mode 100644 examples/pybullet/gym/pybullet_data/sphere_with_restitution.urdf create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/bullet_client.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizer_base.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_alternating_legs_env_randomizer.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer_config.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer_from_config.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_push_randomizer.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_terrain_randomizer.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_alternating_legs_env.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_alternating_legs_env_example.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_ball_gym_env.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_ball_gym_env_example.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_derpy.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_four_leg_stand_env.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_four_leg_stand_env_example.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env_example.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.proto create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging_pb2.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_rainbow_dash.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_randomize_terrain_gym_env.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_randomize_terrain_gym_env_example.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_reactive_env.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_reactive_env_example.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_stand_gym_env.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_stand_gym_env_example.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_trotting_env.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_trotting_env_example.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/motor.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/simple_ppo_agent.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/simple_ppo_agent_example.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/timestamp.proto create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/timestamp_pb2.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/vector.proto create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/vector_pb2.py diff --git a/examples/pybullet/gym/pybullet_data/quadruped/minitaur_derpy.urdf b/examples/pybullet/gym/pybullet_data/quadruped/minitaur_derpy.urdf new file mode 100644 index 000000000..a5fbcf033 --- /dev/null +++ b/examples/pybullet/gym/pybullet_data/quadruped/minitaur_derpy.urdf @@ -0,0 +1,1073 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/pybullet/gym/pybullet_data/quadruped/minitaur_rainbow_dash.urdf b/examples/pybullet/gym/pybullet_data/quadruped/minitaur_rainbow_dash.urdf new file mode 100644 index 000000000..744f086a0 --- /dev/null +++ b/examples/pybullet/gym/pybullet_data/quadruped/minitaur_rainbow_dash.urdf @@ -0,0 +1,914 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/pybullet/gym/pybullet_data/quadruped/minitaur_rainbow_dash_v1.urdf b/examples/pybullet/gym/pybullet_data/quadruped/minitaur_rainbow_dash_v1.urdf new file mode 100644 index 000000000..c69a224dc --- /dev/null +++ b/examples/pybullet/gym/pybullet_data/quadruped/minitaur_rainbow_dash_v1.urdf @@ -0,0 +1,980 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/pybullet/gym/pybullet_data/quadruped/minitaur_single_motor.urdf b/examples/pybullet/gym/pybullet_data/quadruped/minitaur_single_motor.urdf new file mode 100644 index 000000000..7911c6555 --- /dev/null +++ b/examples/pybullet/gym/pybullet_data/quadruped/minitaur_single_motor.urdf @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/pybullet/gym/pybullet_data/sphere_with_restitution.urdf b/examples/pybullet/gym/pybullet_data/sphere_with_restitution.urdf new file mode 100644 index 000000000..63a6682a5 --- /dev/null +++ b/examples/pybullet/gym/pybullet_data/sphere_with_restitution.urdf @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/bullet_client.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/bullet_client.py new file mode 100644 index 000000000..8fc1fcd5c --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/bullet_client.py @@ -0,0 +1,50 @@ +"""A wrapper for pybullet to manage different clients.""" +from __future__ import absolute_import +from __future__ import division +import functools +import inspect +import pybullet + + +class BulletClient(object): + """A wrapper for pybullet to manage different clients.""" + + def __init__(self, connection_mode=None): + """Creates a Bullet client and connects to a simulation. + + Args: + connection_mode: + `None` connects to an existing simulation or, if fails, creates a + new headless simulation, + `pybullet.GUI` creates a new simulation with a GUI, + `pybullet.DIRECT` creates a headless simulation, + `pybullet.SHARED_MEMORY` connects to an existing simulation. + """ + self._shapes = {} + + if connection_mode is None: + self._client = pybullet.connect(pybullet.SHARED_MEMORY) + if self._client >= 0: + return + else: + connection_mode = pybullet.DIRECT + self._client = pybullet.connect(connection_mode) + + def __del__(self): + """Clean up connection if not already done.""" + try: + pybullet.disconnect(physicsClientId=self._client) + except pybullet.error: + pass + + def __getattr__(self, name): + """Inject the client id into Bullet functions.""" + attribute = getattr(pybullet, name) + if inspect.isbuiltin(attribute): + if name not in [ + "invertTransform", "multiplyTransforms", "getMatrixFromQuaternion", + "getEulerFromQuaternion", "computeViewMatrixFromYawPitchRoll", + "computeProjectionMatrixFOV", "getQuaternionFromEuler", + ]: # A temporary hack for now. + attribute = functools.partial(attribute, physicsClientId=self._client) + return attribute diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizer_base.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizer_base.py new file mode 100644 index 000000000..8ab49b103 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizer_base.py @@ -0,0 +1,35 @@ +"""Abstract base class for environment randomizer.""" + +import abc + + +class EnvRandomizerBase(object): + """Abstract base class for environment randomizer. + + Randomizes physical parameters of the objects in the simulation and adds + perturbations to the stepping of the simulation. + """ + + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def randomize_env(self, env): + """Randomize the simulated_objects in the environment. + + Will be called at when env is reset. The physical parameters will be fixed + for that episode and be randomized again in the next environment.reset(). + + Args: + env: The Minitaur gym environment to be randomized. + """ + pass + + def randomize_step(self, env): + """Randomize simulation steps. + + Will be called at every timestep. May add random forces/torques to Minitaur. + + Args: + env: The Minitaur gym environment to be randomized. + """ + pass diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_alternating_legs_env_randomizer.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_alternating_legs_env_randomizer.py new file mode 100644 index 000000000..8dcb1f688 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_alternating_legs_env_randomizer.py @@ -0,0 +1,59 @@ +"""Randomize the minitaur_gym_alternating_leg_env when reset() is called. + +The randomization include swing_offset, extension_offset of all legs that mimics +bent legs, desired_pitch from user input, battery voltage and motor damping. +""" + +import numpy as np +import tensorflow as tf +from pybullet_envs.minitaur.minitaur.envs import env_randomizer_base + +# Absolute range. +NUM_LEGS = 4 +BATTERY_VOLTAGE_RANGE = (14.8, 16.8) +MOTOR_VISCOUS_DAMPING_RANGE = (0, 0.01) + + +class MinitaurAlternatingLegsEnvRandomizer( + env_randomizer_base.EnvRandomizerBase): + """A randomizer that changes the minitaur_gym_alternating_leg_env.""" + + def __init__(self, + perturb_swing_bound=0.1, + perturb_extension_bound=0.1, + perturb_desired_pitch_bound=0.01): + super(MinitaurAlternatingLegsEnvRandomizer, self).__init__() + self.perturb_swing_bound = perturb_swing_bound + self.perturb_extension_bound = perturb_extension_bound + self.perturb_desired_pitch_bound = perturb_desired_pitch_bound + + def randomize_env(self, env): + perturb_magnitude = np.random.uniform( + low=-self.perturb_swing_bound, + high=self.perturb_swing_bound, + size=NUM_LEGS) + env.set_swing_offset(perturb_magnitude) + tf.logging.info("swing_offset: {}".format(perturb_magnitude)) + + perturb_magnitude = np.random.uniform( + low=-self.perturb_extension_bound, + high=self.perturb_extension_bound, + size=NUM_LEGS) + env.set_extension_offset(perturb_magnitude) + tf.logging.info("extension_offset: {}".format(perturb_magnitude)) + + perturb_magnitude = np.random.uniform( + low=-self.perturb_desired_pitch_bound, + high=self.perturb_desired_pitch_bound) + env.set_desired_pitch(perturb_magnitude) + tf.logging.info("desired_pitch: {}".format(perturb_magnitude)) + + randomized_battery_voltage = np.random.uniform(BATTERY_VOLTAGE_RANGE[0], + BATTERY_VOLTAGE_RANGE[1]) + env.minitaur.SetBatteryVoltage(randomized_battery_voltage) + tf.logging.info("battery_voltage: {}".format(randomized_battery_voltage)) + + randomized_motor_damping = np.random.uniform(MOTOR_VISCOUS_DAMPING_RANGE[0], + MOTOR_VISCOUS_DAMPING_RANGE[1]) + env.minitaur.SetMotorViscousDamping(randomized_motor_damping) + tf.logging.info("motor_damping: {}".format(randomized_motor_damping)) diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer.py new file mode 100644 index 000000000..c0ce35faf --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer.py @@ -0,0 +1,69 @@ +"""Randomize the minitaur_gym_env when reset() is called.""" +import random + +import numpy as np +from pybullet_envs.minitaur.envs import env_randomizer_base + +# Relative range. +MINITAUR_BASE_MASS_ERROR_RANGE = (-0.2, 0.2) # 0.2 means 20% +MINITAUR_LEG_MASS_ERROR_RANGE = (-0.2, 0.2) # 0.2 means 20% +# Absolute range. +BATTERY_VOLTAGE_RANGE = (14.8, 16.8) # Unit: Volt +MOTOR_VISCOUS_DAMPING_RANGE = (0, 0.01) # Unit: N*m*s/rad (torque/angular vel) +MINITAUR_LEG_FRICTION = (0.8, 1.5) # Unit: dimensionless + + +class MinitaurEnvRandomizer(env_randomizer_base.EnvRandomizerBase): + """A randomizer that change the minitaur_gym_env during every reset.""" + + def __init__(self, + minitaur_base_mass_err_range=MINITAUR_BASE_MASS_ERROR_RANGE, + minitaur_leg_mass_err_range=MINITAUR_LEG_MASS_ERROR_RANGE, + battery_voltage_range=BATTERY_VOLTAGE_RANGE, + motor_viscous_damping_range=MOTOR_VISCOUS_DAMPING_RANGE): + self._minitaur_base_mass_err_range = minitaur_base_mass_err_range + self._minitaur_leg_mass_err_range = minitaur_leg_mass_err_range + self._battery_voltage_range = battery_voltage_range + self._motor_viscous_damping_range = motor_viscous_damping_range + + def randomize_env(self, env): + self._randomize_minitaur(env.minitaur) + + def _randomize_minitaur(self, minitaur): + """Randomize various physical properties of minitaur. + + It randomizes the mass/inertia of the base, mass/inertia of the legs, + friction coefficient of the feet, the battery voltage and the motor damping + at each reset() of the environment. + + Args: + minitaur: the Minitaur instance in minitaur_gym_env environment. + """ + base_mass = minitaur.GetBaseMassesFromURDF() + randomized_base_mass = random.uniform( + np.array(base_mass) * (1.0 + self._minitaur_base_mass_err_range[0]), + np.array(base_mass) * (1.0 + self._minitaur_base_mass_err_range[1])) + minitaur.SetBaseMasses(randomized_base_mass) + + leg_masses = minitaur.GetLegMassesFromURDF() + leg_masses_lower_bound = np.array(leg_masses) * ( + 1.0 + self._minitaur_leg_mass_err_range[0]) + leg_masses_upper_bound = np.array(leg_masses) * ( + 1.0 + self._minitaur_leg_mass_err_range[1]) + randomized_leg_masses = [ + np.random.uniform(leg_masses_lower_bound[i], leg_masses_upper_bound[i]) + for i in xrange(len(leg_masses)) + ] + minitaur.SetLegMasses(randomized_leg_masses) + + randomized_battery_voltage = random.uniform(BATTERY_VOLTAGE_RANGE[0], + BATTERY_VOLTAGE_RANGE[1]) + minitaur.SetBatteryVoltage(randomized_battery_voltage) + + randomized_motor_damping = random.uniform(MOTOR_VISCOUS_DAMPING_RANGE[0], + MOTOR_VISCOUS_DAMPING_RANGE[1]) + minitaur.SetMotorViscousDamping(randomized_motor_damping) + + randomized_foot_friction = random.uniform(MINITAUR_LEG_FRICTION[0], + MINITAUR_LEG_FRICTION[1]) + minitaur.SetFootFriction(randomized_foot_friction) diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer_config.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer_config.py new file mode 100644 index 000000000..53d5ad122 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer_config.py @@ -0,0 +1,25 @@ +"""A config file for parameters and their ranges in dynamics randomization.""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + + +PARAM_RANGE = { + # The following ranges are in percentage. e.g. 0.8 means 80%. + "mass": [0.8, 1.2], + "inertia": [0.5, 1.5], + "motor strength": [0.8, 1.2], + # The following ranges are the physical values, in SI unit. + "motor friction": [0, 0.05], # Viscous damping (Nm s/rad). + "control step": [0.003, 0.02], # Time inteval (s). + "latency": [0.0, 0.04], # Time inteval (s). + "lateral friction": [0.5, 1.25], # Friction coefficient (dimensionless). + "battery": [14.0, 16.8], # Voltage (V). + "joint friction": [0, 0.05], # Coulomb friction torque (Nm). +} + + +def all_params(): + """Randomize all the physical parameters.""" + return PARAM_RANGE diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer_from_config.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer_from_config.py new file mode 100644 index 000000000..d49cfafad --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer_from_config.py @@ -0,0 +1,139 @@ +"""An environment randomizer that randomizes physical parameters from config.""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import functools +import random + +import numpy as np +import tensorflow as tf +from pybullet_envs.minitaur.envs import env_randomizer_base +from pybullet_envs.minitaur.envs.env_randomizers import minitaur_env_randomizer_config + +SIMULATION_TIME_STEP = 0.001 + + +class MinitaurEnvRandomizerFromConfig(env_randomizer_base.EnvRandomizerBase): + """A randomizer that change the minitaur_gym_env during every reset.""" + + def __init__(self, config=None): + if config is None: + config = "all_params" + try: + config = getattr(minitaur_env_randomizer_config, config) + except AttributeError: + raise ValueError("Config {} is not found.".format(config)) + self._randomization_param_dict = config() + tf.logging.info("Randomization config is: {}".format( + self._randomization_param_dict)) + + def randomize_env(self, env): + """Randomize various physical properties of the environment. + + It randomizes the physical parameters according to the input configuration. + + Args: + env: A minitaur gym environment. + """ + self._randomization_function_dict = self._build_randomization_function_dict( + env) + for param_name, random_range in self._randomization_param_dict.iteritems(): + self._randomization_function_dict[param_name]( + lower_bound=random_range[0], upper_bound=random_range[1]) + + def _build_randomization_function_dict(self, env): + func_dict = {} + func_dict["mass"] = functools.partial( + self._randomize_masses, minitaur=env.minitaur) + func_dict["inertia"] = functools.partial( + self._randomize_inertia, minitaur=env.minitaur) + func_dict["latency"] = functools.partial( + self._randomize_latency, minitaur=env.minitaur) + func_dict["joint friction"] = functools.partial( + self._randomize_joint_friction, minitaur=env.minitaur) + func_dict["motor friction"] = functools.partial( + self._randomize_motor_friction, minitaur=env.minitaur) + func_dict["restitution"] = functools.partial( + self._randomize_contact_restitution, minitaur=env.minitaur) + func_dict["lateral friction"] = functools.partial( + self._randomize_contact_friction, minitaur=env.minitaur) + func_dict["battery"] = functools.partial( + self._randomize_battery_level, minitaur=env.minitaur) + func_dict["motor strength"] = functools.partial( + self._randomize_motor_strength, minitaur=env.minitaur) + # Settinmg control step needs access to the environment. + func_dict["control step"] = functools.partial( + self._randomize_control_step, env=env) + return func_dict + + def _randomize_control_step(self, env, lower_bound, upper_bound): + randomized_control_step = random.uniform(lower_bound, upper_bound) + env.set_time_step(randomized_control_step) + tf.logging.info("control step is: {}".format(randomized_control_step)) + + def _randomize_masses(self, minitaur, lower_bound, upper_bound): + base_mass = minitaur.GetBaseMassesFromURDF() + random_base_ratio = random.uniform(lower_bound, upper_bound) + randomized_base_mass = random_base_ratio * np.array(base_mass) + minitaur.SetBaseMasses(randomized_base_mass) + tf.logging.info("base mass is: {}".format(randomized_base_mass)) + + leg_masses = minitaur.GetLegMassesFromURDF() + random_leg_ratio = random.uniform(lower_bound, upper_bound) + randomized_leg_masses = random_leg_ratio * np.array(leg_masses) + minitaur.SetLegMasses(randomized_leg_masses) + tf.logging.info("leg mass is: {}".format(randomized_leg_masses)) + + def _randomize_inertia(self, minitaur, lower_bound, upper_bound): + base_inertia = minitaur.GetBaseInertiasFromURDF() + random_base_ratio = random.uniform(lower_bound, upper_bound) + randomized_base_inertia = random_base_ratio * np.array(base_inertia) + minitaur.SetBaseInertias(randomized_base_inertia) + tf.logging.info("base inertia is: {}".format(randomized_base_inertia)) + leg_inertia = minitaur.GetLegInertiasFromURDF() + random_leg_ratio = random.uniform(lower_bound, upper_bound) + randomized_leg_inertia = random_leg_ratio * np.array(leg_inertia) + minitaur.SetLegInertias(randomized_leg_inertia) + tf.logging.info("leg inertia is: {}".format(randomized_leg_inertia)) + + def _randomize_latency(self, minitaur, lower_bound, upper_bound): + randomized_latency = random.uniform(lower_bound, upper_bound) + minitaur.SetControlLatency(randomized_latency) + tf.logging.info("control latency is: {}".format(randomized_latency)) + + def _randomize_joint_friction(self, minitaur, lower_bound, upper_bound): + num_knee_joints = minitaur.GetNumKneeJoints() + randomized_joint_frictions = np.random.uniform( + [lower_bound] * num_knee_joints, [upper_bound] * num_knee_joints) + minitaur.SetJointFriction(randomized_joint_frictions) + tf.logging.info("joint friction is: {}".format(randomized_joint_frictions)) + + def _randomize_motor_friction(self, minitaur, lower_bound, upper_bound): + randomized_motor_damping = random.uniform(lower_bound, upper_bound) + minitaur.SetMotorViscousDamping(randomized_motor_damping) + tf.logging.info("motor friction is: {}".format(randomized_motor_damping)) + + def _randomize_contact_restitution(self, minitaur, lower_bound, upper_bound): + randomized_restitution = random.uniform(lower_bound, upper_bound) + minitaur.SetFootRestitution(randomized_restitution) + tf.logging.info("foot restitution is: {}".format(randomized_restitution)) + + def _randomize_contact_friction(self, minitaur, lower_bound, upper_bound): + randomized_foot_friction = random.uniform(lower_bound, upper_bound) + minitaur.SetFootFriction(randomized_foot_friction) + tf.logging.info("foot friction is: {}".format(randomized_foot_friction)) + + def _randomize_battery_level(self, minitaur, lower_bound, upper_bound): + randomized_battery_voltage = random.uniform(lower_bound, upper_bound) + minitaur.SetBatteryVoltage(randomized_battery_voltage) + tf.logging.info("battery voltage is: {}".format(randomized_battery_voltage)) + + def _randomize_motor_strength(self, minitaur, lower_bound, upper_bound): + randomized_motor_strength_ratios = np.random.uniform( + [lower_bound] * minitaur.num_motors, + [upper_bound] * minitaur.num_motors) + minitaur.SetMotorStrengthRatios(randomized_motor_strength_ratios) + tf.logging.info( + "motor strength is: {}".format(randomized_motor_strength_ratios)) diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_push_randomizer.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_push_randomizer.py new file mode 100644 index 000000000..0ebe4ed0d --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_push_randomizer.py @@ -0,0 +1,91 @@ +"""Adds random forces to the base of Minitaur during the simulation steps.""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import math +import numpy as np +from pybullet_envs.minitaur.envs import env_randomizer_base + +_PERTURBATION_START_STEP = 100 +_PERTURBATION_INTERVAL_STEPS = 200 +_PERTURBATION_DURATION_STEPS = 10 +_HORIZONTAL_FORCE_UPPER_BOUND = 120 +_HORIZONTAL_FORCE_LOWER_BOUND = 240 +_VERTICAL_FORCE_UPPER_BOUND = 300 +_VERTICAL_FORCE_LOWER_BOUND = 500 + + +class MinitaurPushRandomizer(env_randomizer_base.EnvRandomizerBase): + """Applies a random impulse to the base of Minitaur.""" + + def __init__( + self, + perturbation_start_step=_PERTURBATION_START_STEP, + perturbation_interval_steps=_PERTURBATION_INTERVAL_STEPS, + perturbation_duration_steps=_PERTURBATION_DURATION_STEPS, + horizontal_force_bound=None, + vertical_force_bound=None, + ): + """Initializes the randomizer. + + Args: + perturbation_start_step: No perturbation force before the env has advanced + this amount of steps. + perturbation_interval_steps: The step interval between applying + perturbation forces. + perturbation_duration_steps: The duration of the perturbation force. + horizontal_force_bound: The lower and upper bound of the applied force + magnitude when projected in the horizontal plane. + vertical_force_bound: The z component (abs value) bound of the applied + perturbation force. + """ + self._perturbation_start_step = perturbation_start_step + self._perturbation_interval_steps = perturbation_interval_steps + self._perturbation_duration_steps = perturbation_duration_steps + self._horizontal_force_bound = ( + horizontal_force_bound if horizontal_force_bound else + [_HORIZONTAL_FORCE_LOWER_BOUND, _HORIZONTAL_FORCE_UPPER_BOUND]) + self._vertical_force_bound = ( + vertical_force_bound if vertical_force_bound else + [_VERTICAL_FORCE_LOWER_BOUND, _VERTICAL_FORCE_UPPER_BOUND]) + + def randomize_env(self, env): + """Randomizes the simulation environment. + + Args: + env: The Minitaur gym environment to be randomized. + """ + pass + + def randomize_step(self, env): + """Randomizes simulation steps. + + Will be called at every timestep. May add random forces/torques to Minitaur. + + Args: + env: The Minitaur gym environment to be randomized. + """ + base_link_ids = env.minitaur.chassis_link_ids + if env.env_step_counter % self._perturbation_interval_steps == 0: + self._applied_link_id = base_link_ids[np.random.randint( + 0, len(base_link_ids))] + horizontal_force_magnitude = np.random.uniform( + self._horizontal_force_bound[0], self._horizontal_force_bound[1]) + theta = np.random.uniform(0, 2 * math.pi) + vertical_force_magnitude = np.random.uniform( + self._vertical_force_bound[0], self._vertical_force_bound[1]) + self._applied_force = horizontal_force_magnitude * np.array( + [math.cos(theta), math.sin(theta), 0]) + np.array( + [0, 0, -vertical_force_magnitude]) + + if (env.env_step_counter % self._perturbation_interval_steps < + self._perturbation_duration_steps) and (env.env_step_counter >= + self._perturbation_start_step): + env.pybullet_client.applyExternalForce( + objectUniqueId=env.minitaur.quadruped, + linkIndex=self._applied_link_id, + forceObj=self._applied_force, + posObj=[0.0, 0.0, 0.0], + flags=env.pybullet_client.LINK_FRAME) diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_terrain_randomizer.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_terrain_randomizer.py new file mode 100644 index 000000000..91cb52302 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_terrain_randomizer.py @@ -0,0 +1,295 @@ +"""Generates a random terrain at Minitaur gym environment reset.""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import itertools +import math +import enum +import numpy as np + +from pybullet_envs.minitaur.envs import env_randomizer_base + +_GRID_LENGTH = 15 +_GRID_WIDTH = 10 +_MAX_SAMPLE_SIZE = 30 +_MIN_BLOCK_DISTANCE = 0.7 +_MAX_BLOCK_LENGTH = _MIN_BLOCK_DISTANCE +_MIN_BLOCK_LENGTH = _MAX_BLOCK_LENGTH / 2 +_MAX_BLOCK_HEIGHT = 0.05 +_MIN_BLOCK_HEIGHT = _MAX_BLOCK_HEIGHT / 2 + + +class PoissonDisc2D(object): + """Generates 2D points using Poisson disk sampling method. + + Implements the algorithm described in: + http://www.cs.ubc.ca/~rbridson/docs/bridson-siggraph07-poissondisk.pdf + Unlike the uniform sampling method that creates small clusters of points, + Poisson disk method enforces the minimum distance between points and is more + suitable for generating a spatial distribution of non-overlapping objects. + """ + + def __init__(self, grid_length, grid_width, min_radius, max_sample_size): + """Initializes the algorithm. + + Args: + grid_length: The length of the bounding square in which points are + sampled. + grid_width: The width of the bounding square in which points are + sampled. + min_radius: The minimum distance between any pair of points. + max_sample_size: The maximum number of sample points around a active site. + See details in the algorithm description. + """ + self._cell_length = min_radius / math.sqrt(2) + self._grid_length = grid_length + self._grid_width = grid_width + self._grid_size_x = int(grid_length / self._cell_length) + 1 + self._grid_size_y = int(grid_width / self._cell_length) + 1 + self._min_radius = min_radius + self._max_sample_size = max_sample_size + + # Flattern the 2D grid as an 1D array. The grid is used for fast nearest + # point searching. + self._grid = [None] * self._grid_size_x * self._grid_size_y + + # Generate the first sample point and set it as an active site. + first_sample = np.array( + np.random.random_sample(2)) * [grid_length, grid_width] + self._active_list = [first_sample] + + # Also store the sample point in the grid. + self._grid[self._point_to_index_1d(first_sample)] = first_sample + + def _point_to_index_1d(self, point): + """Computes the index of a point in the grid array. + + Args: + point: A 2D point described by its coordinates (x, y). + + Returns: + The index of the point within the self._grid array. + """ + return self._index_2d_to_1d(self._point_to_index_2d(point)) + + def _point_to_index_2d(self, point): + """Computes the 2D index (aka cell ID) of a point in the grid. + + Args: + point: A 2D point (list) described by its coordinates (x, y). + + Returns: + x_index: The x index of the cell the point belongs to. + y_index: The y index of the cell the point belongs to. + """ + x_index = int(point[0] / self._cell_length) + y_index = int(point[1] / self._cell_length) + return x_index, y_index + + def _index_2d_to_1d(self, index2d): + """Converts the 2D index to the 1D position in the grid array. + + Args: + index2d: The 2D index of a point (aka the cell ID) in the grid. + + Returns: + The 1D position of the cell within the self._grid array. + """ + return index2d[0] + index2d[1] * self._grid_size_x + + def _is_in_grid(self, point): + """Checks if the point is inside the grid boundary. + + Args: + point: A 2D point (list) described by its coordinates (x, y). + + Returns: + Whether the point is inside the grid. + """ + return (0 <= point[0] < self._grid_length) and (0 <= point[1] < + self._grid_width) + + def _is_in_range(self, index2d): + """Checks if the cell ID is within the grid. + + Args: + index2d: The 2D index of a point (aka the cell ID) in the grid. + + Returns: + Whether the cell (2D index) is inside the grid. + """ + + return (0 <= index2d[0] < self._grid_size_x) and (0 <= index2d[1] < + self._grid_size_y) + + def _is_close_to_existing_points(self, point): + """Checks if the point is close to any already sampled (and stored) points. + + Args: + point: A 2D point (list) described by its coordinates (x, y). + + Returns: + True iff the distance of the point to any existing points is smaller than + the min_radius + """ + px, py = self._point_to_index_2d(point) + # Now we can check nearby cells for existing points + for neighbor_cell in itertools.product( + xrange(px - 1, px + 2), xrange(py - 1, py + 2)): + + if not self._is_in_range(neighbor_cell): + continue + + maybe_a_point = self._grid[self._index_2d_to_1d(neighbor_cell)] + if maybe_a_point is not None and np.linalg.norm( + maybe_a_point - point) < self._min_radius: + return True + + return False + + def sample(self): + """Samples new points around some existing point. + + Removes the sampling base point and also stores the new jksampled points if + they are far enough from all existing points. + """ + active_point = self._active_list.pop() + for _ in xrange(self._max_sample_size): + # Generate random points near the current active_point between the radius + random_radius = np.random.uniform(self._min_radius, 2 * self._min_radius) + random_angle = np.random.uniform(0, 2 * math.pi) + + # The sampled 2D points near the active point + sample = random_radius * np.array( + [np.cos(random_angle), np.sin(random_angle)]) + active_point + + if not self._is_in_grid(sample): + continue + + if self._is_close_to_existing_points(sample): + continue + + self._active_list.append(sample) + self._grid[self._point_to_index_1d(sample)] = sample + + def generate(self): + """Generates the Poisson disc distribution of 2D points. + + Although the while loop looks scary, the algorithm is in fact O(N), where N + is the number of cells within the grid. When we sample around a base point + (in some base cell), new points will not be pushed into the base cell + because of the minimum distance constraint. Once the current base point is + removed, all future searches cannot start from within the same base cell. + + Returns: + All sampled points. The points are inside the quare [0, grid_length] x [0, + grid_width] + """ + + while self._active_list: + self.sample() + + all_sites = [] + for p in self._grid: + if p is not None: + all_sites.append(p) + + return all_sites + + +class TerrainType(enum.Enum): + """The randomzied terrain types we can use in the gym env.""" + RANDOM_BLOCKS = 1 + TRIANGLE_MESH = 2 + + +class MinitaurTerrainRandomizer(env_randomizer_base.EnvRandomizerBase): + """Generates an uneven terrain in the gym env.""" + + def __init__( + self, + terrain_type=TerrainType.TRIANGLE_MESH, + mesh_filename="robotics/reinforcement_learning/minitaur/envs/testdata/" + "triangle_mesh_terrain/terrain9735.obj", + mesh_scale=None): + """Initializes the randomizer. + + Args: + terrain_type: Whether to generate random blocks or load a triangle mesh. + mesh_filename: The mesh file to be used. The mesh will only be loaded if + terrain_type is set to TerrainType.TRIANGLE_MESH. + mesh_scale: the scaling factor for the triangles in the mesh file. + """ + self._terrain_type = terrain_type + self._mesh_filename = mesh_filename + self._mesh_scale = mesh_scale if mesh_scale else [1.0, 1.0, 0.3] + + def randomize_env(self, env): + """Generate a random terrain for the current env. + + Args: + env: A minitaur gym environment. + """ + + if self._terrain_type is TerrainType.TRIANGLE_MESH: + self._load_triangle_mesh(env) + if self._terrain_type is TerrainType.RANDOM_BLOCKS: + self._generate_convex_blocks(env) + + def _load_triangle_mesh(self, env): + """Represents the random terrain using a triangle mesh. + + It is possible for Minitaur leg to stuck at the common edge of two triangle + pieces. To prevent this from happening, we recommend using hard contacts + (or high stiffness values) for Minitaur foot in sim. + + Args: + env: A minitaur gym environment. + """ + env.pybullet_client.removeBody(env.ground_id) + terrain_collision_shape_id = env.pybullet_client.createCollisionShape( + shapeType=env.pybullet_client.GEOM_MESH, + fileName=self._mesh_filename, + flags=1, + meshScale=self._mesh_scale) + env.ground_id = env.pybullet_client.createMultiBody( + baseMass=0, + baseCollisionShapeIndex=terrain_collision_shape_id, + basePosition=[0, 0, 0]) + + def _generate_convex_blocks(self, env): + """Adds random convex blocks to the flat ground. + + We use the Possion disk algorithm to add some random blocks on the ground. + Possion disk algorithm sets the minimum distance between two sampling + points, thus voiding the clustering effect in uniform N-D distribution. + + Args: + env: A minitaur gym environment. + + """ + + poisson_disc = PoissonDisc2D(_GRID_LENGTH, _GRID_WIDTH, _MIN_BLOCK_DISTANCE, + _MAX_SAMPLE_SIZE) + + block_centers = poisson_disc.generate() + + for center in block_centers: + # We want the blocks to be in front of the robot. + shifted_center = np.array(center) - [2, _GRID_WIDTH / 2] + + # Do not place blocks near the point [0, 0], where the robot will start. + if abs(shifted_center[0]) < 1.0 and abs(shifted_center[1]) < 1.0: + continue + half_length = np.random.uniform(_MIN_BLOCK_LENGTH, _MAX_BLOCK_LENGTH) / ( + 2 * math.sqrt(2)) + half_height = np.random.uniform(_MIN_BLOCK_HEIGHT, _MAX_BLOCK_HEIGHT) / 2 + box_id = env.pybullet_client.createCollisionShape( + env.pybullet_client.GEOM_BOX, + halfExtents=[half_length, half_length, half_height]) + env.pybullet_client.createMultiBody( + baseMass=0, + baseCollisionShapeIndex=box_id, + basePosition=[shifted_center[0], shifted_center[1], half_height]) diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur.py new file mode 100644 index 000000000..cd5749d22 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur.py @@ -0,0 +1,996 @@ +"""This file implements the functionalities of a minitaur using pybullet. + +""" +import collections +import copy +import math +import re + +import numpy as np +import motor + +INIT_POSITION = [0, 0, .2] +INIT_RACK_POSITION = [0, 0, 1] +INIT_ORIENTATION = [0, 0, 0, 1] +KNEE_CONSTRAINT_POINT_RIGHT = [0, 0.005, 0.2] +KNEE_CONSTRAINT_POINT_LEFT = [0, 0.01, 0.2] +OVERHEAT_SHUTDOWN_TORQUE = 2.45 +OVERHEAT_SHUTDOWN_TIME = 1.0 +LEG_POSITION = ["front_left", "back_left", "front_right", "back_right"] +MOTOR_NAMES = [ + "motor_front_leftL_joint", "motor_front_leftR_joint", + "motor_back_leftL_joint", "motor_back_leftR_joint", + "motor_front_rightL_joint", "motor_front_rightR_joint", + "motor_back_rightL_joint", "motor_back_rightR_joint" +] +_CHASSIS_NAME_PATTERN = re.compile(r"chassis\D*center") +_MOTOR_NAME_PATTERN = re.compile(r"motor\D*joint") +_KNEE_NAME_PATTERN = re.compile(r"knee\D*") +SENSOR_NOISE_STDDEV = (0.0, 0.0, 0.0, 0.0, 0.0) +TWO_PI = 2 * math.pi + + +def MapToMinusPiToPi(angles): + """Maps a list of angles to [-pi, pi]. + + Args: + angles: A list of angles in rad. + Returns: + A list of angle mapped to [-pi, pi]. + """ + mapped_angles = copy.deepcopy(angles) + for i in range(len(angles)): + mapped_angles[i] = math.fmod(angles[i], TWO_PI) + if mapped_angles[i] >= math.pi: + mapped_angles[i] -= TWO_PI + elif mapped_angles[i] < -math.pi: + mapped_angles[i] += TWO_PI + return mapped_angles + + +class Minitaur(object): + """The minitaur class that simulates a quadruped robot from Ghost Robotics. + + """ + + def __init__(self, + pybullet_client, + urdf_root="", + time_step=0.01, + action_repeat=1, + self_collision_enabled=False, + motor_velocity_limit=np.inf, + pd_control_enabled=False, + accurate_motor_model_enabled=False, + remove_default_joint_damping=False, + motor_kp=1.0, + motor_kd=0.02, + pd_latency=0.0, + control_latency=0.0, + observation_noise_stdev=SENSOR_NOISE_STDDEV, + torque_control_enabled=False, + motor_overheat_protection=False, + on_rack=False): + """Constructs a minitaur and reset it to the initial states. + + Args: + pybullet_client: The instance of BulletClient to manage different + simulations. + urdf_root: The path to the urdf folder. + time_step: The time step of the simulation. + action_repeat: The number of ApplyAction() for each control step. + self_collision_enabled: Whether to enable self collision. + motor_velocity_limit: The upper limit of the motor velocity. + pd_control_enabled: Whether to use PD control for the motors. + accurate_motor_model_enabled: Whether to use the accurate DC motor model. + remove_default_joint_damping: Whether to remove the default joint damping. + motor_kp: proportional gain for the accurate motor model. + motor_kd: derivative gain for the accurate motor model. + pd_latency: The latency of the observations (in seconds) used to calculate + PD control. On the real hardware, it is the latency between the + microcontroller and the motor controller. + control_latency: The latency of the observations (in second) used to + calculate action. On the real hardware, it is the latency from the motor + controller, the microcontroller to the host (Nvidia TX2). + observation_noise_stdev: The standard deviation of a Gaussian noise model + for the sensor. It should be an array for separate sensors in the + following order [motor_angle, motor_velocity, motor_torque, + base_roll_pitch_yaw, base_angular_velocity] + torque_control_enabled: Whether to use the torque control, if set to + False, pose control will be used. + motor_overheat_protection: Whether to shutdown the motor that has exerted + large torque (OVERHEAT_SHUTDOWN_TORQUE) for an extended amount of time + (OVERHEAT_SHUTDOWN_TIME). See ApplyAction() in minitaur.py for more + details. + on_rack: Whether to place the minitaur on rack. This is only used to debug + the walking gait. In this mode, the minitaur's base is hanged midair so + that its walking gait is clearer to visualize. + """ + self.num_motors = 8 + self.num_legs = int(self.num_motors / 2) + self._pybullet_client = pybullet_client + self._action_repeat = action_repeat + self._urdf_root = urdf_root + self._self_collision_enabled = self_collision_enabled + self._motor_velocity_limit = motor_velocity_limit + self._pd_control_enabled = pd_control_enabled + self._motor_direction = [-1, -1, -1, -1, 1, 1, 1, 1] + self._observed_motor_torques = np.zeros(self.num_motors) + self._applied_motor_torques = np.zeros(self.num_motors) + self._max_force = 3.5 + self._pd_latency = pd_latency + self._control_latency = control_latency + self._observation_noise_stdev = observation_noise_stdev + self._accurate_motor_model_enabled = accurate_motor_model_enabled + self._remove_default_joint_damping = remove_default_joint_damping + self._observation_history = collections.deque(maxlen=100) + self._control_observation = [] + self._chassis_link_ids = [-1] + self._leg_link_ids = [] + self._motor_link_ids = [] + self._foot_link_ids = [] + self._torque_control_enabled = torque_control_enabled + self._motor_overheat_protection = motor_overheat_protection + self._on_rack = on_rack + if self._accurate_motor_model_enabled: + self._kp = motor_kp + self._kd = motor_kd + self._motor_model = motor.MotorModel( + torque_control_enabled=self._torque_control_enabled, + kp=self._kp, + kd=self._kd) + elif self._pd_control_enabled: + self._kp = 8 + self._kd = 0.3 + else: + self._kp = 1 + self._kd = 1 + self.time_step = time_step + self._step_counter = 0 + # reset_time=-1.0 means skipping the reset motion. + # See Reset for more details. + self.Reset(reset_time=-1.0) + + def GetTimeSinceReset(self): + return self._step_counter * self.time_step + + def Step(self, action): + for _ in range(self._action_repeat): + self.ApplyAction(action) + self._pybullet_client.stepSimulation() + self.ReceiveObservation() + self._step_counter += 1 + + def Terminate(self): + pass + + def _RecordMassInfoFromURDF(self): + self._base_mass_urdf = [] + for chassis_id in self._chassis_link_ids: + self._base_mass_urdf.append( + self._pybullet_client.getDynamicsInfo(self.quadruped, chassis_id)[0]) + self._leg_masses_urdf = [] + for leg_id in self._leg_link_ids: + self._leg_masses_urdf.append( + self._pybullet_client.getDynamicsInfo(self.quadruped, leg_id)[0]) + for motor_id in self._motor_link_ids: + self._leg_masses_urdf.append( + self._pybullet_client.getDynamicsInfo(self.quadruped, motor_id)[0]) + + def _RecordInertiaInfoFromURDF(self): + """Record the inertia of each body from URDF file.""" + self._link_urdf = [] + num_bodies = self._pybullet_client.getNumJoints(self.quadruped) + for body_id in range(-1, num_bodies): # -1 is for the base link. + inertia = self._pybullet_client.getDynamicsInfo(self.quadruped, + body_id)[2] + self._link_urdf.append(inertia) + # We need to use id+1 to index self._link_urdf because it has the base + # (index = -1) at the first element. + self._base_inertia_urdf = [ + self._link_urdf[chassis_id + 1] for chassis_id in self._chassis_link_ids + ] + self._leg_inertia_urdf = [ + self._link_urdf[leg_id + 1] for leg_id in self._leg_link_ids + ] + self._leg_inertia_urdf.extend( + [self._link_urdf[motor_id + 1] for motor_id in self._motor_link_ids]) + + def _BuildJointNameToIdDict(self): + num_joints = self._pybullet_client.getNumJoints(self.quadruped) + self._joint_name_to_id = {} + for i in range(num_joints): + joint_info = self._pybullet_client.getJointInfo(self.quadruped, i) + self._joint_name_to_id[joint_info[1].decode("UTF-8")] = joint_info[0] + + def _BuildUrdfIds(self): + """Build the link Ids from its name in the URDF file.""" + num_joints = self._pybullet_client.getNumJoints(self.quadruped) + self._chassis_link_ids = [-1] + # the self._leg_link_ids include both the upper and lower links of the leg. + self._leg_link_ids = [] + self._motor_link_ids = [] + self._foot_link_ids = [] + for i in range(num_joints): + joint_info = self._pybullet_client.getJointInfo(self.quadruped, i) + joint_name = joint_info[1].decode("UTF-8") + joint_id = self._joint_name_to_id[joint_name] + if _CHASSIS_NAME_PATTERN.match(joint_name): + self._chassis_link_ids.append(joint_id) + elif _MOTOR_NAME_PATTERN.match(joint_name): + self._motor_link_ids.append(joint_id) + elif _KNEE_NAME_PATTERN.match(joint_name): + self._foot_link_ids.append(joint_id) + else: + self._leg_link_ids.append(joint_id) + self._leg_link_ids.extend(self._foot_link_ids) + self._chassis_link_ids.sort() + self._motor_link_ids.sort() + self._foot_link_ids.sort() + self._leg_link_ids.sort() + + def _RemoveDefaultJointDamping(self): + num_joints = self._pybullet_client.getNumJoints(self.quadruped) + for i in range(num_joints): + joint_info = self._pybullet_client.getJointInfo(self.quadruped, i) + self._pybullet_client.changeDynamics( + joint_info[0], -1, linearDamping=0, angularDamping=0) + + def _BuildMotorIdList(self): + self._motor_id_list = [ + self._joint_name_to_id[motor_name] for motor_name in MOTOR_NAMES + ] + + def IsObservationValid(self): + """Whether the observation is valid for the current time step. + + In simulation, observations are always valid. In real hardware, it may not + be valid from time to time when communication error happens between the + Nvidia TX2 and the microcontroller. + + Returns: + Whether the observation is valid for the current time step. + """ + return True + + def Reset(self, reload_urdf=True, default_motor_angles=None, reset_time=3.0): + """Reset the minitaur to its initial states. + + Args: + reload_urdf: Whether to reload the urdf file. If not, Reset() just place + the minitaur back to its starting position. + default_motor_angles: The default motor angles. If it is None, minitaur + will hold a default pose (motor angle math.pi / 2) for 100 steps. In + torque control mode, the phase of holding the default pose is skipped. + reset_time: The duration (in seconds) to hold the default motor angles. If + reset_time <= 0 or in torque control mode, the phase of holding the + default pose is skipped. + """ + if self._on_rack: + init_position = INIT_RACK_POSITION + else: + init_position = INIT_POSITION + if reload_urdf: + if self._self_collision_enabled: + self.quadruped = self._pybullet_client.loadURDF( + "%s/quadruped/minitaur.urdf" % self._urdf_root, + init_position, + useFixedBase=self._on_rack, + flags=self._pybullet_client.URDF_USE_SELF_COLLISION) + else: + self.quadruped = self._pybullet_client.loadURDF( + "%s/quadruped/minitaur.urdf" % self._urdf_root, + init_position, + useFixedBase=self._on_rack) + self._BuildJointNameToIdDict() + self._BuildUrdfIds() + if self._remove_default_joint_damping: + self._RemoveDefaultJointDamping() + self._BuildMotorIdList() + self._RecordMassInfoFromURDF() + self._RecordInertiaInfoFromURDF() + self.ResetPose(add_constraint=True) + else: + self._pybullet_client.resetBasePositionAndOrientation( + self.quadruped, init_position, INIT_ORIENTATION) + self._pybullet_client.resetBaseVelocity(self.quadruped, [0, 0, 0], + [0, 0, 0]) + self.ResetPose(add_constraint=False) + self._overheat_counter = np.zeros(self.num_motors) + self._motor_enabled_list = [True] * self.num_motors + self._step_counter = 0 + + # Perform reset motion within reset_duration if in position control mode. + # Nothing is performed if in torque control mode for now. + # TODO(jietan): Add reset motion when the torque control is fully supported. + self._observation_history.clear() + if not self._torque_control_enabled and reset_time > 0.0: + self.ReceiveObservation() + for _ in range(100): + self.ApplyAction([math.pi / 2] * self.num_motors) + self._pybullet_client.stepSimulation() + self.ReceiveObservation() + if default_motor_angles is not None: + num_steps_to_reset = int(reset_time / self.time_step) + for _ in range(num_steps_to_reset): + self.ApplyAction(default_motor_angles) + self._pybullet_client.stepSimulation() + self.ReceiveObservation() + self.ReceiveObservation() + + def _SetMotorTorqueById(self, motor_id, torque): + self._pybullet_client.setJointMotorControl2( + bodyIndex=self.quadruped, + jointIndex=motor_id, + controlMode=self._pybullet_client.TORQUE_CONTROL, + force=torque) + + def _SetDesiredMotorAngleById(self, motor_id, desired_angle): + self._pybullet_client.setJointMotorControl2( + bodyIndex=self.quadruped, + jointIndex=motor_id, + controlMode=self._pybullet_client.POSITION_CONTROL, + targetPosition=desired_angle, + positionGain=self._kp, + velocityGain=self._kd, + force=self._max_force) + + def _SetDesiredMotorAngleByName(self, motor_name, desired_angle): + self._SetDesiredMotorAngleById(self._joint_name_to_id[motor_name], + desired_angle) + + def ResetPose(self, add_constraint): + """Reset the pose of the minitaur. + + Args: + add_constraint: Whether to add a constraint at the joints of two feet. + """ + for i in range(self.num_legs): + self._ResetPoseForLeg(i, add_constraint) + + def _ResetPoseForLeg(self, leg_id, add_constraint): + """Reset the initial pose for the leg. + + Args: + leg_id: It should be 0, 1, 2, or 3, which represents the leg at + front_left, back_left, front_right and back_right. + add_constraint: Whether to add a constraint at the joints of two feet. + """ + knee_friction_force = 0 + half_pi = math.pi / 2.0 + knee_angle = -2.1834 + + leg_position = LEG_POSITION[leg_id] + self._pybullet_client.resetJointState( + self.quadruped, + self._joint_name_to_id["motor_" + leg_position + "L_joint"], + self._motor_direction[2 * leg_id] * half_pi, + targetVelocity=0) + self._pybullet_client.resetJointState( + self.quadruped, + self._joint_name_to_id["knee_" + leg_position + "L_link"], + self._motor_direction[2 * leg_id] * knee_angle, + targetVelocity=0) + self._pybullet_client.resetJointState( + self.quadruped, + self._joint_name_to_id["motor_" + leg_position + "R_joint"], + self._motor_direction[2 * leg_id + 1] * half_pi, + targetVelocity=0) + self._pybullet_client.resetJointState( + self.quadruped, + self._joint_name_to_id["knee_" + leg_position + "R_link"], + self._motor_direction[2 * leg_id + 1] * knee_angle, + targetVelocity=0) + if add_constraint: + self._pybullet_client.createConstraint( + self.quadruped, + self._joint_name_to_id["knee_" + leg_position + "R_link"], + self.quadruped, + self._joint_name_to_id["knee_" + leg_position + "L_link"], + self._pybullet_client.JOINT_POINT2POINT, [0, 0, 0], + KNEE_CONSTRAINT_POINT_RIGHT, KNEE_CONSTRAINT_POINT_LEFT) + + if self._accurate_motor_model_enabled or self._pd_control_enabled: + # Disable the default motor in pybullet. + self._pybullet_client.setJointMotorControl2( + bodyIndex=self.quadruped, + jointIndex=( + self._joint_name_to_id["motor_" + leg_position + "L_joint"]), + controlMode=self._pybullet_client.VELOCITY_CONTROL, + targetVelocity=0, + force=knee_friction_force) + self._pybullet_client.setJointMotorControl2( + bodyIndex=self.quadruped, + jointIndex=( + self._joint_name_to_id["motor_" + leg_position + "R_joint"]), + controlMode=self._pybullet_client.VELOCITY_CONTROL, + targetVelocity=0, + force=knee_friction_force) + + else: + self._SetDesiredMotorAngleByName( + "motor_" + leg_position + "L_joint", + self._motor_direction[2 * leg_id] * half_pi) + self._SetDesiredMotorAngleByName( + "motor_" + leg_position + "R_joint", + self._motor_direction[2 * leg_id + 1] * half_pi) + + self._pybullet_client.setJointMotorControl2( + bodyIndex=self.quadruped, + jointIndex=(self._joint_name_to_id["knee_" + leg_position + "L_link"]), + controlMode=self._pybullet_client.VELOCITY_CONTROL, + targetVelocity=0, + force=knee_friction_force) + self._pybullet_client.setJointMotorControl2( + bodyIndex=self.quadruped, + jointIndex=(self._joint_name_to_id["knee_" + leg_position + "R_link"]), + controlMode=self._pybullet_client.VELOCITY_CONTROL, + targetVelocity=0, + force=knee_friction_force) + + def GetBasePosition(self): + """Get the position of minitaur's base. + + Returns: + The position of minitaur's base. + """ + position, _ = ( + self._pybullet_client.getBasePositionAndOrientation(self.quadruped)) + return position + + def GetTrueBaseRollPitchYaw(self): + """Get minitaur's base orientation in euler angle in the world frame. + + Returns: + A tuple (roll, pitch, yaw) of the base in world frame. + """ + orientation = self.GetTrueBaseOrientation() + roll_pitch_yaw = self._pybullet_client.getEulerFromQuaternion(orientation) + return np.asarray(roll_pitch_yaw) + + def GetBaseRollPitchYaw(self): + """Get minitaur's base orientation in euler angle in the world frame. + + This function mimicks the noisy sensor reading and adds latency. + Returns: + A tuple (roll, pitch, yaw) of the base in world frame polluted by noise + and latency. + """ + delayed_orientation = np.array( + self._control_observation[3 * self.num_motors:3 * self.num_motors + 4]) + delayed_roll_pitch_yaw = self._pybullet_client.getEulerFromQuaternion( + delayed_orientation) + roll_pitch_yaw = self._AddSensorNoise( + np.array(delayed_roll_pitch_yaw), self._observation_noise_stdev[3]) + return roll_pitch_yaw + + def GetTrueMotorAngles(self): + """Gets the eight motor angles at the current moment, mapped to [-pi, pi]. + + Returns: + Motor angles, mapped to [-pi, pi]. + """ + motor_angles = [ + self._pybullet_client.getJointState(self.quadruped, motor_id)[0] + for motor_id in self._motor_id_list + ] + motor_angles = np.multiply(motor_angles, self._motor_direction) + return motor_angles + + def GetMotorAngles(self): + """Gets the eight motor angles. + + This function mimicks the noisy sensor reading and adds latency. The motor + angles that are delayed, noise polluted, and mapped to [-pi, pi]. + + Returns: + Motor angles polluted by noise and latency, mapped to [-pi, pi]. + """ + motor_angles = self._AddSensorNoise( + np.array(self._control_observation[0:self.num_motors]), + self._observation_noise_stdev[0]) + return MapToMinusPiToPi(motor_angles) + + def GetTrueMotorVelocities(self): + """Get the velocity of all eight motors. + + Returns: + Velocities of all eight motors. + """ + motor_velocities = [ + self._pybullet_client.getJointState(self.quadruped, motor_id)[1] + for motor_id in self._motor_id_list + ] + motor_velocities = np.multiply(motor_velocities, self._motor_direction) + return motor_velocities + + def GetMotorVelocities(self): + """Get the velocity of all eight motors. + + This function mimicks the noisy sensor reading and adds latency. + Returns: + Velocities of all eight motors polluted by noise and latency. + """ + return self._AddSensorNoise( + np.array( + self._control_observation[self.num_motors:2 * self.num_motors]), + self._observation_noise_stdev[1]) + + def GetTrueMotorTorques(self): + """Get the amount of torque the motors are exerting. + + Returns: + Motor torques of all eight motors. + """ + if self._accurate_motor_model_enabled or self._pd_control_enabled: + return self._observed_motor_torques + else: + motor_torques = [ + self._pybullet_client.getJointState(self.quadruped, motor_id)[3] + for motor_id in self._motor_id_list + ] + motor_torques = np.multiply(motor_torques, self._motor_direction) + return motor_torques + + def GetMotorTorques(self): + """Get the amount of torque the motors are exerting. + + This function mimicks the noisy sensor reading and adds latency. + Returns: + Motor torques of all eight motors polluted by noise and latency. + """ + return self._AddSensorNoise( + np.array( + self._control_observation[2 * self.num_motors:3 * self.num_motors]), + self._observation_noise_stdev[2]) + + def GetTrueBaseOrientation(self): + """Get the orientation of minitaur's base, represented as quaternion. + + Returns: + The orientation of minitaur's base. + """ + _, orientation = ( + self._pybullet_client.getBasePositionAndOrientation(self.quadruped)) + return orientation + + def GetBaseOrientation(self): + """Get the orientation of minitaur's base, represented as quaternion. + + This function mimicks the noisy sensor reading and adds latency. + Returns: + The orientation of minitaur's base polluted by noise and latency. + """ + return self._pybullet_client.getQuaternionFromEuler( + self.GetBaseRollPitchYaw()) + + def GetTrueBaseRollPitchYawRate(self): + """Get the rate of orientation change of the minitaur's base in euler angle. + + Returns: + rate of (roll, pitch, yaw) change of the minitaur's base. + """ + vel = self._pybullet_client.getBaseVelocity(self.quadruped) + return np.asarray([vel[1][0], vel[1][1], vel[1][2]]) + + def GetBaseRollPitchYawRate(self): + """Get the rate of orientation change of the minitaur's base in euler angle. + + This function mimicks the noisy sensor reading and adds latency. + Returns: + rate of (roll, pitch, yaw) change of the minitaur's base polluted by noise + and latency. + """ + return self._AddSensorNoise( + np.array(self._control_observation[3 * self.num_motors + 4: + 3 * self.num_motors + 7]), + self._observation_noise_stdev[4]) + + def GetActionDimension(self): + """Get the length of the action list. + + Returns: + The length of the action list. + """ + return self.num_motors + + def ApplyAction(self, motor_commands, motor_kps=None, motor_kds=None): + """Set the desired motor angles to the motors of the minitaur. + + The desired motor angles are clipped based on the maximum allowed velocity. + If the pd_control_enabled is True, a torque is calculated according to + the difference between current and desired joint angle, as well as the joint + velocity. This torque is exerted to the motor. For more information about + PD control, please refer to: https://en.wikipedia.org/wiki/PID_controller. + + Args: + motor_commands: The eight desired motor angles. + motor_kps: Proportional gains for the motor model. If not provided, it + uses the default kp of the minitaur for all the motors. + motor_kds: Derivative gains for the motor model. If not provided, it + uses the default kd of the minitaur for all the motors. + """ + if self._motor_velocity_limit < np.inf: + current_motor_angle = self.GetTrueMotorAngles() + motor_commands_max = ( + current_motor_angle + self.time_step * self._motor_velocity_limit) + motor_commands_min = ( + current_motor_angle - self.time_step * self._motor_velocity_limit) + motor_commands = np.clip(motor_commands, motor_commands_min, + motor_commands_max) + # Set the kp and kd for all the motors if not provided as an argument. + if motor_kps is None: + motor_kps = np.full(8, self._kp) + if motor_kds is None: + motor_kds = np.full(8, self._kd) + + if self._accurate_motor_model_enabled or self._pd_control_enabled: + q, qdot = self._GetPDObservation() + qdot_true = self.GetTrueMotorVelocities() + if self._accurate_motor_model_enabled: + actual_torque, observed_torque = self._motor_model.convert_to_torque( + motor_commands, q, qdot, qdot_true, motor_kps, motor_kds) + if self._motor_overheat_protection: + for i in range(self.num_motors): + if abs(actual_torque[i]) > OVERHEAT_SHUTDOWN_TORQUE: + self._overheat_counter[i] += 1 + else: + self._overheat_counter[i] = 0 + if (self._overheat_counter[i] > + OVERHEAT_SHUTDOWN_TIME / self.time_step): + self._motor_enabled_list[i] = False + + # The torque is already in the observation space because we use + # GetMotorAngles and GetMotorVelocities. + self._observed_motor_torques = observed_torque + + # Transform into the motor space when applying the torque. + self._applied_motor_torque = np.multiply(actual_torque, + self._motor_direction) + + for motor_id, motor_torque, motor_enabled in zip( + self._motor_id_list, self._applied_motor_torque, + self._motor_enabled_list): + if motor_enabled: + self._SetMotorTorqueById(motor_id, motor_torque) + else: + self._SetMotorTorqueById(motor_id, 0) + else: + torque_commands = -1 * motor_kps * ( + q - motor_commands) - motor_kds * qdot + + # The torque is already in the observation space because we use + # GetMotorAngles and GetMotorVelocities. + self._observed_motor_torques = torque_commands + + # Transform into the motor space when applying the torque. + self._applied_motor_torques = np.multiply(self._observed_motor_torques, + self._motor_direction) + + for motor_id, motor_torque in zip(self._motor_id_list, + self._applied_motor_torques): + self._SetMotorTorqueById(motor_id, motor_torque) + else: + motor_commands_with_direction = np.multiply(motor_commands, + self._motor_direction) + for motor_id, motor_command_with_direction in zip( + self._motor_id_list, motor_commands_with_direction): + self._SetDesiredMotorAngleById(motor_id, motor_command_with_direction) + + def ConvertFromLegModel(self, actions): + """Convert the actions that use leg model to the real motor actions. + + Args: + actions: The theta, phi of the leg model. + Returns: + The eight desired motor angles that can be used in ApplyActions(). + """ + motor_angle = copy.deepcopy(actions) + scale_for_singularity = 1 + offset_for_singularity = 1.5 + half_num_motors = int(self.num_motors / 2) + quater_pi = math.pi / 4 + for i in range(self.num_motors): + action_idx = int(i // 2) + forward_backward_component = (-scale_for_singularity * quater_pi * ( + actions[action_idx + half_num_motors] + offset_for_singularity)) + extension_component = (-1)**i * quater_pi * actions[action_idx] + if i >= half_num_motors: + extension_component = -extension_component + motor_angle[i] = ( + math.pi + forward_backward_component + extension_component) + return motor_angle + + def GetBaseMassesFromURDF(self): + """Get the mass of the base from the URDF file.""" + return self._base_mass_urdf + + def GetBaseInertiasFromURDF(self): + """Get the inertia of the base from the URDF file.""" + return self._base_inertia_urdf + + def GetLegMassesFromURDF(self): + """Get the mass of the legs from the URDF file.""" + return self._leg_masses_urdf + + def GetLegInertiasFromURDF(self): + """Get the inertia of the legs from the URDF file.""" + return self._leg_inertia_urdf + + def SetBaseMasses(self, base_mass): + """Set the mass of minitaur's base. + + Args: + base_mass: A list of masses of each body link in CHASIS_LINK_IDS. The + length of this list should be the same as the length of CHASIS_LINK_IDS. + Raises: + ValueError: It is raised when the length of base_mass is not the same as + the length of self._chassis_link_ids. + """ + if len(base_mass) != len(self._chassis_link_ids): + raise ValueError( + "The length of base_mass {} and self._chassis_link_ids {} are not " + "the same.".format(len(base_mass), len(self._chassis_link_ids))) + for chassis_id, chassis_mass in zip(self._chassis_link_ids, base_mass): + self._pybullet_client.changeDynamics( + self.quadruped, chassis_id, mass=chassis_mass) + + def SetLegMasses(self, leg_masses): + """Set the mass of the legs. + + A leg includes leg_link and motor. 4 legs contain 16 links (4 links each) + and 8 motors. First 16 numbers correspond to link masses, last 8 correspond + to motor masses (24 total). + + Args: + leg_masses: The leg and motor masses for all the leg links and motors. + + Raises: + ValueError: It is raised when the length of masses is not equal to number + of links + motors. + """ + if len(leg_masses) != len(self._leg_link_ids) + len(self._motor_link_ids): + raise ValueError("The number of values passed to SetLegMasses are " + "different than number of leg links and motors.") + for leg_id, leg_mass in zip(self._leg_link_ids, leg_masses): + self._pybullet_client.changeDynamics( + self.quadruped, leg_id, mass=leg_mass) + motor_masses = leg_masses[len(self._leg_link_ids):] + for link_id, motor_mass in zip(self._motor_link_ids, motor_masses): + self._pybullet_client.changeDynamics( + self.quadruped, link_id, mass=motor_mass) + + def SetBaseInertias(self, base_inertias): + """Set the inertias of minitaur's base. + + Args: + base_inertias: A list of inertias of each body link in CHASIS_LINK_IDS. + The length of this list should be the same as the length of + CHASIS_LINK_IDS. + Raises: + ValueError: It is raised when the length of base_inertias is not the same + as the length of self._chassis_link_ids and base_inertias contains + negative values. + """ + if len(base_inertias) != len(self._chassis_link_ids): + raise ValueError( + "The length of base_inertias {} and self._chassis_link_ids {} are " + "not the same.".format( + len(base_inertias), len(self._chassis_link_ids))) + for chassis_id, chassis_inertia in zip(self._chassis_link_ids, + base_inertias): + for inertia_value in chassis_inertia: + if (np.asarray(inertia_value) < 0).any(): + raise ValueError("Values in inertia matrix should be non-negative.") + self._pybullet_client.changeDynamics( + self.quadruped, chassis_id, localInertiaDiagonal=chassis_inertia) + + def SetLegInertias(self, leg_inertias): + """Set the inertias of the legs. + + A leg includes leg_link and motor. 4 legs contain 16 links (4 links each) + and 8 motors. First 16 numbers correspond to link inertia, last 8 correspond + to motor inertia (24 total). + + Args: + leg_inertias: The leg and motor inertias for all the leg links and motors. + + Raises: + ValueError: It is raised when the length of inertias is not equal to + the number of links + motors or leg_inertias contains negative values. + """ + + if len(leg_inertias) != len(self._leg_link_ids) + len(self._motor_link_ids): + raise ValueError("The number of values passed to SetLegMasses are " + "different than number of leg links and motors.") + for leg_id, leg_inertia in zip(self._leg_link_ids, leg_inertias): + for inertia_value in leg_inertias: + if (np.asarray(inertia_value) < 0).any(): + raise ValueError("Values in inertia matrix should be non-negative.") + self._pybullet_client.changeDynamics( + self.quadruped, leg_id, localInertiaDiagonal=leg_inertia) + + motor_inertias = leg_inertias[len(self._leg_link_ids):] + for link_id, motor_inertia in zip(self._motor_link_ids, motor_inertias): + for inertia_value in motor_inertias: + if (np.asarray(inertia_value) < 0).any(): + raise ValueError("Values in inertia matrix should be non-negative.") + self._pybullet_client.changeDynamics( + self.quadruped, link_id, localInertiaDiagonal=motor_inertia) + + def SetFootFriction(self, foot_friction): + """Set the lateral friction of the feet. + + Args: + foot_friction: The lateral friction coefficient of the foot. This value is + shared by all four feet. + """ + for link_id in self._foot_link_ids: + self._pybullet_client.changeDynamics( + self.quadruped, link_id, lateralFriction=foot_friction) + + # TODO(b/73748980): Add more API's to set other contact parameters. + def SetFootRestitution(self, foot_restitution): + """Set the coefficient of restitution at the feet. + + Args: + foot_restitution: The coefficient of restitution (bounciness) of the feet. + This value is shared by all four feet. + """ + for link_id in self._foot_link_ids: + self._pybullet_client.changeDynamics( + self.quadruped, link_id, restitution=foot_restitution) + + def SetJointFriction(self, joint_frictions): + for knee_joint_id, friction in zip(self._foot_link_ids, joint_frictions): + self._pybullet_client.setJointMotorControl2( + bodyIndex=self.quadruped, + jointIndex=knee_joint_id, + controlMode=self._pybullet_client.VELOCITY_CONTROL, + targetVelocity=0, + force=friction) + + def GetNumKneeJoints(self): + return len(self._foot_link_ids) + + def SetBatteryVoltage(self, voltage): + if self._accurate_motor_model_enabled: + self._motor_model.set_voltage(voltage) + + def SetMotorViscousDamping(self, viscous_damping): + if self._accurate_motor_model_enabled: + self._motor_model.set_viscous_damping(viscous_damping) + + def GetTrueObservation(self): + observation = [] + observation.extend(self.GetTrueMotorAngles()) + observation.extend(self.GetTrueMotorVelocities()) + observation.extend(self.GetTrueMotorTorques()) + observation.extend(self.GetTrueBaseOrientation()) + observation.extend(self.GetTrueBaseRollPitchYawRate()) + return observation + + def ReceiveObservation(self): + """Receive the observation from sensors. + + This function is called once per step. The observations are only updated + when this function is called. + """ + self._observation_history.appendleft(self.GetTrueObservation()) + self._control_observation = self._GetControlObservation() + + def _GetDelayedObservation(self, latency): + """Get observation that is delayed by the amount specified in latency. + + Args: + latency: The latency (in seconds) of the delayed observation. + Returns: + observation: The observation which was actually latency seconds ago. + """ + if latency <= 0 or len(self._observation_history) == 1: + observation = self._observation_history[0] + else: + n_steps_ago = int(latency / self.time_step) + if n_steps_ago + 1 >= len(self._observation_history): + return self._observation_history[-1] + remaining_latency = latency - n_steps_ago * self.time_step + blend_alpha = remaining_latency / self.time_step + observation = ( + (1.0 - blend_alpha) * np.array(self._observation_history[n_steps_ago]) + + blend_alpha * np.array(self._observation_history[n_steps_ago + 1])) + return observation + + def _GetPDObservation(self): + pd_delayed_observation = self._GetDelayedObservation(self._pd_latency) + q = pd_delayed_observation[0:self.num_motors] + qdot = pd_delayed_observation[self.num_motors:2 * self.num_motors] + return (np.array(q), np.array(qdot)) + + def _GetControlObservation(self): + control_delayed_observation = self._GetDelayedObservation( + self._control_latency) + return control_delayed_observation + + def _AddSensorNoise(self, sensor_values, noise_stdev): + if noise_stdev <= 0: + return sensor_values + observation = sensor_values + np.random.normal( + scale=noise_stdev, size=sensor_values.shape) + return observation + + def SetControlLatency(self, latency): + """Set the latency of the control loop. + + It measures the duration between sending an action from Nvidia TX2 and + receiving the observation from microcontroller. + + Args: + latency: The latency (in seconds) of the control loop. + """ + self._control_latency = latency + + def GetControlLatency(self): + """Get the control latency. + + Returns: + The latency (in seconds) between when the motor command is sent and when + the sensor measurements are reported back to the controller. + """ + return self._control_latency + + def SetMotorGains(self, kp, kd): + """Set the gains of all motors. + + These gains are PD gains for motor positional control. kp is the + proportional gain and kd is the derivative gain. + + Args: + kp: proportional gain of the motors. + kd: derivative gain of the motors. + """ + self._kp = kp + self._kd = kd + if self._accurate_motor_model_enabled: + self._motor_model.set_motor_gains(kp, kd) + + def GetMotorGains(self): + """Get the gains of the motor. + + Returns: + The proportional gain. + The derivative gain. + """ + return self._kp, self._kd + + def SetMotorStrengthRatio(self, ratio): + """Set the strength of all motors relative to the default value. + + Args: + ratio: The relative strength. A scalar range from 0.0 to 1.0. + """ + if self._accurate_motor_model_enabled: + self._motor_model.set_strength_ratios([ratio] * self.num_motors) + + def SetMotorStrengthRatios(self, ratios): + """Set the strength of each motor relative to the default value. + + Args: + ratios: The relative strength. A numpy array ranging from 0.0 to 1.0. + """ + if self._accurate_motor_model_enabled: + self._motor_model.set_strength_ratios(ratios) + + def SetTimeSteps(self, action_repeat, simulation_step): + """Set the time steps of the control and simulation. + + Args: + action_repeat: The number of simulation steps that the same action is + repeated. + simulation_step: The simulation time step. + """ + self.time_step = simulation_step + self._action_repeat = action_repeat + + @property + def chassis_link_ids(self): + return self._chassis_link_ids diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_alternating_legs_env.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_alternating_legs_env.py new file mode 100644 index 000000000..82d64b184 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_alternating_legs_env.py @@ -0,0 +1,244 @@ +"""This file implements the gym environment of minitaur alternating legs. + +""" +import math + +from gym import spaces +import numpy as np +import minitaur_gym_env + +INIT_EXTENSION_POS = 2.6 +INIT_SWING_POS = 0.0 +DESIRED_PITCH = 0 +NUM_LEGS = 4 +NUM_MOTORS = 2 * NUM_LEGS +STEP_PERIOD = 1.0 / 3.0 # Three steps per second. +STEP_AMPLITUDE = 0.75 + + +class MinitaurAlternatingLegsEnv(minitaur_gym_env.MinitaurGymEnv): + """The gym environment for the minitaur. + + It simulates the locomotion of a minitaur, a quadruped robot. The state space + include the angles, velocities and torques for all the motors and the action + space is the desired motor angle for each motor. The reward function is based + on how far the minitaur walks in 1000 steps and penalizes the energy + expenditure. + + """ + metadata = { + "render.modes": ["human", "rgb_array"], + "video.frames_per_second": 66 + } + + def __init__(self, + urdf_version=None, + control_time_step=0.006, + action_repeat=6, + control_latency=0, + pd_latency=0, + on_rack=False, + motor_kp=1.0, + motor_kd=0.02, + remove_default_joint_damping=False, + render=False, + num_steps_to_log=1000, + env_randomizer=None, + log_path=None): + """Initialize the minitaur alternating legs gym environment. + + Args: + urdf_version: [DEFAULT_URDF_VERSION, DERPY_V0_URDF_VERSION] are allowable + versions. If None, DEFAULT_URDF_VERSION is used. Refer to + minitaur_gym_env for more details. + control_time_step: The time step between two successive control signals. + action_repeat: The number of simulation steps that an action is repeated. + control_latency: The latency between get_observation() and the actual + observation. See minituar.py for more details. + pd_latency: The latency used to get motor angles/velocities used to + compute PD controllers. See minitaur.py for more details. + on_rack: Whether to place the minitaur on rack. This is only used to debug + the walking gait. In this mode, the minitaur's base is hung midair so + that its walking gait is clearer to visualize. + motor_kp: The P gain of the motor. + motor_kd: The D gain of the motor. + remove_default_joint_damping: Whether to remove the default joint damping. + render: Whether to render the simulation. + num_steps_to_log: The max number of control steps in one episode. If the + number of steps is over num_steps_to_log, the environment will still + be running, but only first num_steps_to_log will be recorded in logging. + env_randomizer: An instance (or a list) of EnvRanzomier(s) that can + randomize the environment during when env.reset() is called and add + perturbations when env._step() is called. + log_path: The path to write out logs. For the details of logging, refer to + minitaur_logging.proto. + """ + # _swing_offset and _extension_offset is to mimick the bent legs. + self._swing_offset = np.zeros(NUM_LEGS) + self._extension_offset = np.zeros(NUM_LEGS) + super(MinitaurAlternatingLegsEnv, self).__init__( + urdf_version=urdf_version, + accurate_motor_model_enabled=True, + motor_overheat_protection=True, + hard_reset=False, + motor_kp=motor_kp, + motor_kd=motor_kd, + remove_default_joint_damping=remove_default_joint_damping, + control_latency=control_latency, + pd_latency=pd_latency, + on_rack=on_rack, + render=render, + num_steps_to_log=num_steps_to_log, + env_randomizer=env_randomizer, + log_path=log_path, + control_time_step=control_time_step, + action_repeat=action_repeat) + + action_dim = 8 + action_high = np.array([0.1] * action_dim) + self.action_space = spaces.Box(-action_high, action_high) + + self._cam_dist = 1.0 + self._cam_yaw = 30 + self._cam_pitch = -30 + + def _reset(self): + self.desired_pitch = DESIRED_PITCH + # In this environment, the actions are + # [swing leg 1, swing leg 2, swing leg 3, swing leg 4, + # extension leg 1, extension leg 2, extension leg 3, extension leg 4] + init_pose = [ + INIT_SWING_POS + self._swing_offset[0], + INIT_SWING_POS + self._swing_offset[1], + INIT_SWING_POS + self._swing_offset[2], + INIT_SWING_POS + self._swing_offset[3], + INIT_EXTENSION_POS + self._extension_offset[0], + INIT_EXTENSION_POS + self._extension_offset[1], + INIT_EXTENSION_POS + self._extension_offset[2], + INIT_EXTENSION_POS + self._extension_offset[3] + ] + initial_motor_angles = self._convert_from_leg_model(init_pose) + super(MinitaurAlternatingLegsEnv, self)._reset( + initial_motor_angles=initial_motor_angles, reset_duration=0.5) + return self._get_observation() + + def _convert_from_leg_model(self, leg_pose): + motor_pose = np.zeros(NUM_MOTORS) + for i in range(NUM_LEGS): + motor_pose[2 * i] = leg_pose[NUM_LEGS + i] - (-1)**(i / 2) * leg_pose[i] + motor_pose[2 * i + + 1] = leg_pose[NUM_LEGS + i] + (-1)**(i / 2) * leg_pose[i] + return motor_pose + + def _signal(self, t): + initial_pose = np.array([ + INIT_SWING_POS, INIT_SWING_POS, INIT_SWING_POS, INIT_SWING_POS, + INIT_EXTENSION_POS, INIT_EXTENSION_POS, INIT_EXTENSION_POS, + INIT_EXTENSION_POS + ]) + amplitude = STEP_AMPLITUDE + period = STEP_PERIOD + extension = amplitude * (-1.0 + math.cos(2 * math.pi / period * t)) + ith_leg = int(t / period) % 2 + first_leg = np.array([0, 0, 0, 0, 0, extension, extension, 0]) + second_leg = np.array([0, 0, 0, 0, extension, 0, 0, extension]) + if ith_leg: + signal = initial_pose + second_leg + else: + signal = initial_pose + first_leg + return signal + + def _transform_action_to_motor_command(self, action): + # Add swing_offset and extension_offset to mimick the bent legs. + action[0:4] += self._swing_offset + action[4:8] += self._extension_offset + action += self._signal(self.minitaur.GetTimeSinceReset()) + action = self._convert_from_leg_model(action) + return action + + def is_fallen(self): + """Decide whether the minitaur has fallen. + + If the up directions between the base and the world is large (the dot + product is smaller than 0.85), the minitaur is considered fallen. + + Returns: + Boolean value that indicates whether the minitaur has fallen. + """ + orientation = self.minitaur.GetBaseOrientation() + rot_mat = self._pybullet_client.getMatrixFromQuaternion(orientation) + local_up = rot_mat[6:] + return np.dot(np.asarray([0, 0, 1]), np.asarray(local_up)) < 0.85 + + def _reward(self): + return 1.0 + + def _get_true_observation(self): + """Get the true observations of this environment. + + It includes the roll, the error between current pitch and desired pitch, + roll dot and pitch dot of the base. + + Returns: + The observation list. + """ + observation = [] + roll, pitch, _ = self.minitaur.GetTrueBaseRollPitchYaw() + roll_rate, pitch_rate, _ = self.minitaur.GetTrueBaseRollPitchYawRate() + observation.extend([roll, pitch, roll_rate, pitch_rate]) + observation[1] -= self.desired_pitch # observation[1] is the pitch + self._true_observation = np.array(observation) + return self._true_observation + + def _get_observation(self): + observation = [] + roll, pitch, _ = self.minitaur.GetBaseRollPitchYaw() + roll_rate, pitch_rate, _ = self.minitaur.GetBaseRollPitchYawRate() + observation.extend([roll, pitch, roll_rate, pitch_rate]) + observation[1] -= self.desired_pitch # observation[1] is the pitch + self._observation = np.array(observation) + return self._observation + + def _get_observation_upper_bound(self): + """Get the upper bound of the observation. + + Returns: + The upper bound of an observation. See GetObservation() for the details + of each element of an observation. + """ + upper_bound = np.zeros(self._get_observation_dimension()) + upper_bound[0:2] = 2 * math.pi # Roll, pitch, yaw of the base. + upper_bound[2:4] = 2 * math.pi / self._time_step # Roll, pitch, yaw rate. + return upper_bound + + def _get_observation_lower_bound(self): + lower_bound = -self._get_observation_upper_bound() + return lower_bound + + def set_swing_offset(self, value): + """Set the swing offset of each leg. + + It is to mimic the bent leg. + + Args: + value: A list of four values. + """ + self._swing_offset = value + + def set_extension_offset(self, value): + """Set the extension offset of each leg. + + It is to mimic the bent leg. + + Args: + value: A list of four values. + """ + self._extension_offset = value + + def set_desired_pitch(self, value): + """Set the desired pitch of the base, which is a user input. + + Args: + value: A scalar. + """ + self.desired_pitch = value diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_alternating_legs_env_example.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_alternating_legs_env_example.py new file mode 100644 index 000000000..aa467133c --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_alternating_legs_env_example.py @@ -0,0 +1,109 @@ +"""An example to run the minitaur environment of alternating legs. + +""" +import time + + +import numpy as np +import tensorflow as tf +import minitaur_alternating_legs_env +import minitaur_gym_env +from env_randomizers import minitaur_alternating_legs_env_randomizer as randomizer_lib + +#FLAGS = flags.FLAGS +#flags.DEFINE_string("log_path", None, "The directory to write the log file.") + + +def hand_tuned_agent(observation, timestamp): + """A hand tuned controller structure with vizier optimized parameters. + + Args: + observation: The observation of the environment. It includes the roll, pith + the speed of roll and pitch changes. + timestamp: The simulated time since the simulation reset. + Returns: + Delta desired motor angles to be added to the reference motion of + alternating legs for balance. + """ + roll = observation[0] + pitch = observation[1] + roll_dot = observation[2] + pitch_dot = observation[3] + + # The following gains are hand-tuned. These gains are + # designed according to traditional robotics techniques. These are linear + # feedback balance conroller. The idea is that when the base is tilting, + # the legs in the air should swing more towards the falling direction to catch + # up falling. At the same time, the legs in the air should extend more to + # touch ground earlier. + roll_gain = 1.0 + pitch_gain = 1.0 + roll_dot_gain = 0.1 + pitch_dot_gain = 0.1 + + roll_compensation = roll_gain * roll + roll_dot_gain * roll_dot + pitch_compensation = pitch_gain * pitch + pitch_dot_gain * pitch_dot + + first_leg = [ + 0, -pitch_compensation, -pitch_compensation, 0, 0, + -pitch_compensation - roll_compensation, + pitch_compensation + roll_compensation, 0 + ] + second_leg = [ + -pitch_compensation, 0, 0, -pitch_compensation, + pitch_compensation - roll_compensation, 0, 0, + -pitch_compensation + roll_compensation + ] + if (timestamp // minitaur_alternating_legs_env.STEP_PERIOD) % 2: + return second_leg + else: + return first_leg + + +def hand_tuned_balance_example(log_path=None): + """An example that the minitaur balances while alternating its legs. + + Args: + log_path: The directory that the log files are written to. If log_path is + None, no logs will be written. + """ + steps = 1000 + episodes = 5 + + randomizer = randomizer_lib.MinitaurAlternatingLegsEnvRandomizer() + environment = minitaur_alternating_legs_env.MinitaurAlternatingLegsEnv( + urdf_version=minitaur_gym_env.DERPY_V0_URDF_VERSION, + render=True, + num_steps_to_log=steps, + pd_latency=0.002, + control_latency=0.02, + remove_default_joint_damping=True, + on_rack=False, + env_randomizer=randomizer, + log_path=log_path) + np.random.seed(100) + avg_reward = 0 + for i in xrange(episodes): + sum_reward = 0 + observation = environment.reset() + for _ in xrange(steps): + # Sleep to prevent serial buffer overflow on microcontroller. + time.sleep(0.002) + action = hand_tuned_agent(observation, + environment.minitaur.GetTimeSinceReset()) + observation, reward, done, _ = environment.step(action) + sum_reward += reward + if done: + break + tf.logging.info("reward {}: {}".format(i, sum_reward)) + avg_reward += sum_reward + tf.logging.info("avg_reward: {}\n\n\n".format(avg_reward / episodes)) + + +def main(unused_argv): + hand_tuned_balance_example(log_path=FLAGS.log_path) + + +if __name__ == "__main__": + tf.logging.set_verbosity(tf.logging.INFO) + tf.app.run() diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_ball_gym_env.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_ball_gym_env.py new file mode 100644 index 000000000..46522b076 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_ball_gym_env.py @@ -0,0 +1,147 @@ +"""This file implements the gym environment of minitaur. + +""" +import math +import random + +from gym import spaces +import numpy as np +import minitaur_gym_env +import pybullet_data + +GOAL_DISTANCE_THRESHOLD = 0.8 +GOAL_REWARD = 1000.0 +REWARD_SCALING = 1e-3 +INIT_BALL_ANGLE = math.pi / 3 +INIT_BALL_DISTANCE = 5.0 +ACTION_EPS = 0.01 + + +class MinitaurBallGymEnv(minitaur_gym_env.MinitaurGymEnv): + """The gym environment for the minitaur and a ball. + + It simulates a minitaur (a quadruped robot) and a ball. The state space + includes the angle and distance of the ball relative to minitaur's base. + The action space is a steering command. The reward function is based + on how far the ball is relative to the minitaur's base. + + """ + + def __init__(self, + urdf_root=pybullet_data.getDataPath(), + self_collision_enabled=True, + pd_control_enabled=False, + leg_model_enabled=True, + on_rack=False, + render=False): + """Initialize the minitaur and ball gym environment. + + Args: + urdf_root: The path to the urdf data folder. + self_collision_enabled: Whether to enable self collision in the sim. + pd_control_enabled: Whether to use PD controller for each motor. + leg_model_enabled: Whether to use a leg motor to reparameterize the action + space. + on_rack: Whether to place the minitaur on rack. This is only used to debug + the walking gait. In this mode, the minitaur's base is hanged midair so + that its walking gait is clearer to visualize. + render: Whether to render the simulation. + """ + super(MinitaurBallGymEnv, self).__init__( + urdf_root=urdf_root, + self_collision_enabled=self_collision_enabled, + pd_control_enabled=pd_control_enabled, + leg_model_enabled=leg_model_enabled, + on_rack=on_rack, + render=render) + self._cam_dist = 2.0 + self._cam_yaw = -70 + self._cam_pitch = -30 + self.action_space = spaces.Box(np.array([-1]), np.array([1])) + self.observation_space = spaces.Box(np.array([-math.pi, 0]), + np.array([math.pi, 100])) + + def _reset(self): + self._ball_id = 0 + super(MinitaurBallGymEnv, self)._reset() + self._init_ball_theta = random.uniform(-INIT_BALL_ANGLE, INIT_BALL_ANGLE) + self._init_ball_distance = INIT_BALL_DISTANCE + self._ball_pos = [self._init_ball_distance * + math.cos(self._init_ball_theta), + self._init_ball_distance * + math.sin(self._init_ball_theta), 1] + self._ball_id = self._pybullet_client.loadURDF( + "%s/sphere_with_restitution.urdf" % self._urdf_root, self._ball_pos) + return self._get_observation() + + def _get_observation(self): + world_translation_minitaur, world_rotation_minitaur = ( + self._pybullet_client.getBasePositionAndOrientation( + self.minitaur.quadruped)) + world_translation_ball, world_rotation_ball = ( + self._pybullet_client.getBasePositionAndOrientation(self._ball_id)) + minitaur_translation_world, minitaur_rotation_world = ( + self._pybullet_client.invertTransform(world_translation_minitaur, + world_rotation_minitaur)) + minitaur_translation_ball, _ = ( + self._pybullet_client.multiplyTransforms(minitaur_translation_world, + minitaur_rotation_world, + world_translation_ball, + world_rotation_ball)) + distance = math.sqrt(minitaur_translation_ball[0]**2 + + minitaur_translation_ball[1]**2) + angle = math.atan2(minitaur_translation_ball[0], + minitaur_translation_ball[1]) + self._observation = [angle - math.pi / 2, distance] + return self._observation + + def _transform_action_to_motor_command(self, action): + if self._leg_model_enabled: + for i, action_component in enumerate(action): + if not (-self._action_bound - ACTION_EPS <= + action_component <= self._action_bound + ACTION_EPS): + raise ValueError("{}th action {} out of bounds.".format + (i, action_component)) + action = self._apply_steering_to_locomotion(action) + action = self.minitaur.ConvertFromLegModel(action) + return action + + def _apply_steering_to_locomotion(self, action): + # A hardcoded feedforward walking controller based on sine functions. + amplitude_swing = 0.5 + amplitude_extension = 0.5 + speed = 200 + steering_amplitude = 0.5 * action[0] + t = self.minitaur.GetTimeSinceReset() + a1 = math.sin(t * speed) * (amplitude_swing + steering_amplitude) + a2 = math.sin(t * speed + math.pi) * (amplitude_swing - steering_amplitude) + a3 = math.sin(t * speed) * amplitude_extension + a4 = math.sin(t * speed + math.pi) * amplitude_extension + action = [a1, a2, a2, a1, a3, a4, a4, a3] + return action + + def _distance_to_ball(self): + world_translation_minitaur, _ = ( + self._pybullet_client.getBasePositionAndOrientation( + self.minitaur.quadruped)) + world_translation_ball, _ = ( + self._pybullet_client.getBasePositionAndOrientation( + self._ball_id)) + distance = math.sqrt( + (world_translation_ball[0] - world_translation_minitaur[0])**2 + + (world_translation_ball[1] - world_translation_minitaur[1])**2) + return distance + + def _goal_state(self): + return self._observation[1] < GOAL_DISTANCE_THRESHOLD + + def _reward(self): + reward = -self._observation[1] + if self._goal_state(): + reward += GOAL_REWARD + return reward * REWARD_SCALING + + def _termination(self): + if self._goal_state(): + return True + return False diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_ball_gym_env_example.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_ball_gym_env_example.py new file mode 100644 index 000000000..b52b945ad --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_ball_gym_env_example.py @@ -0,0 +1,34 @@ +"""An example to run the gym environment that a minitaur follows a ball. + +""" + +import math + +import tensorflow as tf +import minitaur_ball_gym_env + + +def FollowBallManualPolicy(): + """An example of a minitaur following a ball.""" + env = minitaur_ball_gym_env.MinitaurBallGymEnv(render=True, + pd_control_enabled=True, + on_rack=False) + observation = env.reset() + sum_reward = 0 + steps = 100000 + for _ in range(steps): + action = [math.tanh(observation[0] * 4)] + observation, reward, done, _ = env.step(action) + sum_reward += reward + if done: + tf.logging.info("Return is {}".format(sum_reward)) + observation = env.reset() + sum_reward = 0 + + +def main(): + FollowBallManualPolicy() + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_derpy.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_derpy.py new file mode 100644 index 000000000..f7bf10dac --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_derpy.py @@ -0,0 +1,175 @@ +"""This file implements the functionalities of a minitaur derpy using pybullet. + +It is the result of first pass system identification for the derpy robot. The + + +""" +import math + +import numpy as np +import minitaur + +KNEE_CONSTRAINT_POINT_LONG = [0, 0.0055, 0.088] +KNEE_CONSTRAINT_POINT_SHORT = [0, 0.0055, 0.100] + + +class MinitaurDerpy(minitaur.Minitaur): + """The minitaur class that simulates a quadruped robot from Ghost Robotics. + + """ + + def Reset(self, reload_urdf=True, default_motor_angles=None, reset_time=3.0): + """Reset the minitaur to its initial states. + + Args: + reload_urdf: Whether to reload the urdf file. If not, Reset() just place + the minitaur back to its starting position. + default_motor_angles: The default motor angles. If it is None, minitaur + will hold a default pose (motor angle math.pi / 2) for 100 steps. In + torque control mode, the phase of holding the default pose is skipped. + reset_time: The duration (in seconds) to hold the default motor angles. If + reset_time <= 0 or in torque control mode, the phase of holding the + default pose is skipped. + """ + if self._on_rack: + init_position = minitaur.INIT_RACK_POSITION + else: + init_position = minitaur.INIT_POSITION + if reload_urdf: + if self._self_collision_enabled: + self.quadruped = self._pybullet_client.loadURDF( + "%s/quadruped/minitaur_derpy.urdf" % self._urdf_root, + init_position, + useFixedBase=self._on_rack, + flags=( + self._pybullet_client.URDF_USE_SELF_COLLISION_EXCLUDE_PARENT)) + else: + self.quadruped = self._pybullet_client.loadURDF( + "%s/quadruped/minitaur_derpy.urdf" % self._urdf_root, + init_position, + useFixedBase=self._on_rack) + self._BuildJointNameToIdDict() + self._BuildUrdfIds() + if self._remove_default_joint_damping: + self._RemoveDefaultJointDamping() + self._BuildMotorIdList() + self._RecordMassInfoFromURDF() + self._RecordInertiaInfoFromURDF() + self.ResetPose(add_constraint=True) + else: + self._pybullet_client.resetBasePositionAndOrientation( + self.quadruped, init_position, minitaur.INIT_ORIENTATION) + self._pybullet_client.resetBaseVelocity(self.quadruped, [0, 0, 0], + [0, 0, 0]) + self.ResetPose(add_constraint=False) + + self._overheat_counter = np.zeros(self.num_motors) + self._motor_enabled_list = [True] * self.num_motors + self._step_counter = 0 + + # Perform reset motion within reset_duration if in position control mode. + # Nothing is performed if in torque control mode for now. + # TODO(jietan): Add reset motion when the torque control is fully supported. + self._observation_history.clear() + if not self._torque_control_enabled and reset_time > 0.0: + self.ReceiveObservation() + for _ in range(100): + self.ApplyAction([math.pi / 2] * self.num_motors) + self._pybullet_client.stepSimulation() + self.ReceiveObservation() + if default_motor_angles is not None: + num_steps_to_reset = int(reset_time / self.time_step) + for _ in range(num_steps_to_reset): + self.ApplyAction(default_motor_angles) + self._pybullet_client.stepSimulation() + self.ReceiveObservation() + self.ReceiveObservation() + + def _ResetPoseForLeg(self, leg_id, add_constraint): + """Reset the initial pose for the leg. + + Args: + leg_id: It should be 0, 1, 2, or 3, which represents the leg at + front_left, back_left, front_right and back_right. + add_constraint: Whether to add a constraint at the joints of two feet. + """ + knee_friction_force = 0 + half_pi = math.pi / 2.0 + knee_angle = -2.1834 + + leg_position = minitaur.LEG_POSITION[leg_id] + self._pybullet_client.resetJointState( + self.quadruped, + self._joint_name_to_id["motor_" + leg_position + "L_joint"], + self._motor_direction[2 * leg_id] * half_pi, + targetVelocity=0) + self._pybullet_client.resetJointState( + self.quadruped, + self._joint_name_to_id["knee_" + leg_position + "L_joint"], + self._motor_direction[2 * leg_id] * knee_angle, + targetVelocity=0) + self._pybullet_client.resetJointState( + self.quadruped, + self._joint_name_to_id["motor_" + leg_position + "R_joint"], + self._motor_direction[2 * leg_id + 1] * half_pi, + targetVelocity=0) + self._pybullet_client.resetJointState( + self.quadruped, + self._joint_name_to_id["knee_" + leg_position + "R_joint"], + self._motor_direction[2 * leg_id + 1] * knee_angle, + targetVelocity=0) + if add_constraint: + if leg_id < 2: + self._pybullet_client.createConstraint( + self.quadruped, + self._joint_name_to_id["knee_" + leg_position + "R_joint"], + self.quadruped, + self._joint_name_to_id["knee_" + leg_position + "L_joint"], + self._pybullet_client.JOINT_POINT2POINT, [0, 0, 0], + KNEE_CONSTRAINT_POINT_SHORT, KNEE_CONSTRAINT_POINT_LONG) + else: + self._pybullet_client.createConstraint( + self.quadruped, + self._joint_name_to_id["knee_" + leg_position + "R_joint"], + self.quadruped, + self._joint_name_to_id["knee_" + leg_position + "L_joint"], + self._pybullet_client.JOINT_POINT2POINT, [0, 0, 0], + KNEE_CONSTRAINT_POINT_LONG, KNEE_CONSTRAINT_POINT_SHORT) + + if self._accurate_motor_model_enabled or self._pd_control_enabled: + # Disable the default motor in pybullet. + self._pybullet_client.setJointMotorControl2( + bodyIndex=self.quadruped, + jointIndex=( + self._joint_name_to_id["motor_" + leg_position + "L_joint"]), + controlMode=self._pybullet_client.VELOCITY_CONTROL, + targetVelocity=0, + force=knee_friction_force) + self._pybullet_client.setJointMotorControl2( + bodyIndex=self.quadruped, + jointIndex=( + self._joint_name_to_id["motor_" + leg_position + "R_joint"]), + controlMode=self._pybullet_client.VELOCITY_CONTROL, + targetVelocity=0, + force=knee_friction_force) + + else: + self._SetDesiredMotorAngleByName( + "motor_" + leg_position + "L_joint", + self._motor_direction[2 * leg_id] * half_pi) + self._SetDesiredMotorAngleByName( + "motor_" + leg_position + "R_joint", + self._motor_direction[2 * leg_id + 1] * half_pi) + + self._pybullet_client.setJointMotorControl2( + bodyIndex=self.quadruped, + jointIndex=(self._joint_name_to_id["knee_" + leg_position + "L_joint"]), + controlMode=self._pybullet_client.VELOCITY_CONTROL, + targetVelocity=0, + force=knee_friction_force) + self._pybullet_client.setJointMotorControl2( + bodyIndex=self.quadruped, + jointIndex=(self._joint_name_to_id["knee_" + leg_position + "R_joint"]), + controlMode=self._pybullet_client.VELOCITY_CONTROL, + targetVelocity=0, + force=knee_friction_force) diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_four_leg_stand_env.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_four_leg_stand_env.py new file mode 100644 index 000000000..12a792206 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_four_leg_stand_env.py @@ -0,0 +1,359 @@ +"""This file implements the gym environment of minitaur standing with four legs. + +""" +import math +import operator +import random +import time +from gym import spaces +import numpy as np +from pybullet_envs.minitaur.envs import minitaur_gym_env +from pybullet_envs.minitaur.envs import minitaur_logging + +INIT_EXTENSION_POS = 2.0 +INIT_SWING_POS = 0.0 +DESIRED_PITCH = 0 +NUM_LEGS = 4 +NUM_MOTORS = 2 * NUM_LEGS +STEP_PERIOD = 1.0 / 3.0 # Three steps per second. +STEP_AMPLITUDE = 0.75 +PERTURBATION_TOTAL_STEP = 100 +MOVING_FLOOR_TOTAL_STEP = 100 +DERPY_V0_URDF_VERSION = minitaur_gym_env.DERPY_V0_URDF_VERSION +RAINBOW_DASH_V0_URDF_VERSION = minitaur_gym_env.RAINBOW_DASH_V0_URDF_VERSION + + +class MinitaurFourLegStandEnv(minitaur_gym_env.MinitaurGymEnv): + """The gym environment for the minitaur. + + It simulates the a minitaur standing with four legs. The state space + include the orientation of the torso, and the action space is the desired + motor angle for each motor. The reward function is based on how close the + action to zero and the height of the robot base. It prefers a similar pose to + the signal while keeping balance. + """ + metadata = { + "render.modes": ["human", "rgb_array"], + "video.frames_per_second": 166 + } + + def __init__(self, + urdf_version=None, + hard_reset=True, + remove_default_joint_damping=True, + control_latency=0.0, + pd_latency=0.0, + on_rack=False, + motor_kp=1.0, + motor_kd=0.02, + render=False, + env_randomizer=None, + use_angular_velocity_in_observation=False, + use_motor_angle_in_observation=False, + control_time_step=0.006, + action_repeat=6, + log_path=None): + """Initialize the minitaur alternating legs gym environment. + + Args: + urdf_version: [DEFAULT_URDF_VERSION, DERPY_V0_URDF_VERSION, + RAINBOW_DASH_V0_URDF_VERSION] are allowable + versions. If None, DEFAULT_URDF_VERSION is used. DERPY_V0_URDF_VERSION + is the result of first pass system identification for derpy. + We will have a different URDF and related Minitaur class each time we + perform system identification. While the majority of the code of the + class remains the same, some code changes (e.g. the constraint location + might change). __init__() will choose the right Minitaur class from + different minitaur modules based on urdf_version. + hard_reset: Whether to wipe the simulation and load everything when reset + is called. If set to false, reset just place the minitaur back to start + position and set its pose to initial configuration. + remove_default_joint_damping: Whether to remove the default joint damping. + control_latency: It is the delay in the controller between when an + observation is made at some point, and when that reading is reported + back to the Neural Network. + pd_latency: latency of the PD controller loop. PD calculates PWM based on + the motor angle and velocity. The latency measures the time between when + the motor angle and velocity are observed on the microcontroller and + when the true state happens on the motor. It is typically (0.001- + 0.002s). + on_rack: Whether to place the minitaur on rack. This is only used to debug + the walking gait. In this mode, the minitaur's base is hung midair so + that its walking gait is clearer to visualize. + motor_kp: The P gain of the motor. + motor_kd: The D gain of the motor. + render: Whether to render the simulation. + env_randomizer: An instance (or a list) of EnvRanzomier(s) that can + randomize the environment during when env.reset() is called and add + perturbations when env._step() is called. + use_angular_velocity_in_observation: Whether to include roll_dot and + pitch_dot of the base in the observation. + use_motor_angle_in_observation: Whether to include motor angles in the + observation. + control_time_step: The time step between two successive control signals. + action_repeat: The number of simulation steps before actions are applied. + log_path: The path to write out logs. For the details of logging, refer to + minitaur_logging.proto. + """ + # _swing_offset and _extension_offset is to mimic the motor zero-calibration + # errors. + self._swing_offset = np.zeros(NUM_LEGS) + self._extension_offset = np.zeros(NUM_LEGS) + self._use_angular_velocity_in_observation = use_motor_angle_in_observation + self._use_motor_angle_in_observation = use_motor_angle_in_observation + super(MinitaurFourLegStandEnv, self).__init__( + urdf_version=urdf_version, + control_time_step=control_time_step, + action_repeat=action_repeat, + remove_default_joint_damping=remove_default_joint_damping, + accurate_motor_model_enabled=True, + motor_overheat_protection=True, + hard_reset=hard_reset, + motor_kp=motor_kp, + motor_kd=motor_kd, + control_latency=control_latency, + pd_latency=pd_latency, + on_rack=on_rack, + render=render, + env_randomizer=env_randomizer, + log_path=log_path) + + action_dim = 4 + action_low = np.array([-1.0] * action_dim) + action_high = -action_low + self.action_space = spaces.Box(action_low, action_high) + + self._cam_dist = 1.0 + self._cam_yaw = 30 + self._cam_pitch = -30 + self._perturbation_magnitude = 0.0 + self._sign = 1.0 + self._cur_ori = [0, 0, 0, 1] + self._goal_ori = [0, 0, 0, 1] + + def _reset(self): + self.desired_pitch = DESIRED_PITCH + # In this environment, the actions are + # [swing leg 1, swing leg 2, swing leg 3, swing leg 4, + # extension leg 1, extension leg 2, extension leg 3, extension leg 4] + init_pose = [ + INIT_SWING_POS + self._swing_offset[0], + INIT_SWING_POS + self._swing_offset[1], + INIT_SWING_POS + self._swing_offset[2], + INIT_SWING_POS + self._swing_offset[3], + INIT_EXTENSION_POS + self._extension_offset[0], + INIT_EXTENSION_POS + self._extension_offset[1], + INIT_EXTENSION_POS + self._extension_offset[2], + INIT_EXTENSION_POS + self._extension_offset[3] + ] + initial_motor_angles = self._convert_from_leg_model(init_pose) + self._pybullet_client.resetBasePositionAndOrientation( + 0, [0, 0, 0], [0, 0, 0, 1]) + super(MinitaurFourLegStandEnv, self)._reset( + initial_motor_angles=initial_motor_angles, reset_duration=0.5) + return self._get_observation() + + def _step(self, action): + """Step forward the simulation, given the action. + + Args: + action: A list of desired motor angles for eight motors. + + Returns: + observations: Roll, pitch of the base, and roll, pitch rate. + reward: The reward for the current state-action pair. + done: Whether the episode has ended. + info: A dictionary that stores diagnostic information. + + Raises: + ValueError: The action dimension is not the same as the number of motors. + ValueError: The magnitude of actions is out of bounds. + """ + if self._is_render: + # Sleep, otherwise the computation takes less time than real time, + # which will make the visualization like a fast-forward video. + time_spent = time.time() - self._last_frame_time + self._last_frame_time = time.time() + time_to_sleep = self.control_time_step - time_spent + if time_to_sleep > 0: + time.sleep(time_to_sleep) + base_pos = self.minitaur.GetBasePosition() + # Keep the previous orientation of the camera set by the user. + [yaw, pitch, + dist] = self._pybullet_client.getDebugVisualizerCamera()[8:11] + self._pybullet_client.resetDebugVisualizerCamera(dist, yaw, pitch, + base_pos) + action = self._transform_action_to_motor_command(action) + t = self._env_step_counter % MOVING_FLOOR_TOTAL_STEP + if t == 0: + self._seed() + orientation_x = random.uniform(-0.2, 0.2) + self._seed() + orientation_y = random.uniform(-0.2, 0.2) + _, self._cur_ori = self._pybullet_client.getBasePositionAndOrientation(0) + self._goal_ori = self._pybullet_client.getQuaternionFromEuler( + [orientation_x, orientation_y, 0]) + t = float(float(t) / float(MOVING_FLOOR_TOTAL_STEP)) + ori = map(operator.add, [x * (1.0 - t) for x in self._cur_ori], + [x * t for x in self._goal_ori]) + self._pybullet_client.resetBasePositionAndOrientation(0, [0, 0, 0], ori) + if self._env_step_counter % PERTURBATION_TOTAL_STEP == 0: + self._perturbation_magnitude = random.uniform(0.0, 0.0) + if self._sign < 0.5: + self._sign = 1.0 + else: + self._sign = 0.0 + self._pybullet_client.applyExternalForce( + objectUniqueId=1, + linkIndex=-1, + forceObj=[self._sign * self._perturbation_magnitude, 0.0, 0.0], + posObj=[0.0, 0.0, 0.0], + flags=self._pybullet_client.LINK_FRAME) + self.minitaur.Step(action) + self._env_step_counter += 1 + done = self._termination() + obs = self._get_true_observation() + reward = self._reward(action, obs) + if self._log_path is not None: + minitaur_logging.update_episode_proto(self._episode_proto, self.minitaur, + action, self._env_step_counter) + if done: + self.minitaur.Terminate() + return np.array(self._get_observation()), reward, done, {} + + def _convert_from_leg_model(self, leg_pose): + motor_pose = np.zeros(NUM_MOTORS) + for i in range(NUM_LEGS): + motor_pose[2 * i] = leg_pose[NUM_LEGS + i] - (-1)**(i / 2) * leg_pose[i] + motor_pose[2 * i + + 1] = leg_pose[NUM_LEGS + i] + (-1)**(i / 2) * leg_pose[i] + return motor_pose + + def _signal(self, t): + initial_pose = np.array([ + INIT_SWING_POS, INIT_SWING_POS, INIT_SWING_POS, INIT_SWING_POS, + INIT_EXTENSION_POS, INIT_EXTENSION_POS, INIT_EXTENSION_POS, + INIT_EXTENSION_POS + ]) + signal = initial_pose + return signal + + def _transform_action_to_motor_command(self, action): + # Add swing_offset and extension_offset to mimick the motor zero-calibration + # errors. + real_action = np.array([0.0] * 8) + real_action[4:8] = action + self._extension_offset + real_action[0:4] = self._swing_offset + real_action += self._signal(self.minitaur.GetTimeSinceReset()) + real_action = self._convert_from_leg_model(real_action) + return real_action + + def is_fallen(self): + """Decide whether the minitaur has fallen. + + # TODO(yunfeibai): choose the fallen option for force perturbation and + moving floor, and update the comments. + + If the up directions between the base and the world is large (the dot + product is smaller than 0.85), or the robot base is lower than 0.24, the + minitaur is considered fallen. + + Returns: + Boolean value that indicates whether the minitaur has fallen. + """ + orientation = self.minitaur.GetBaseOrientation() + rot_mat = self._pybullet_client.getMatrixFromQuaternion(orientation) + local_up = rot_mat[6:] + _, _, height = self.minitaur.GetBasePosition() + local_global_up_dot_product = np.dot( + np.asarray([0, 0, 1]), np.asarray(local_up)) + return local_global_up_dot_product < 0.85 or height < 0.15 + + def _reward(self, action, obs): + roll, pitch, _ = self.minitaur.GetBaseRollPitchYaw() + return 1.0 / (0.001 + math.fabs(roll) + math.fabs(pitch)) + + def _get_observation(self): + """Get the true observations of this environment. + + It includes the roll, pitch, roll dot, pitch dot of the base, and the motor + angles. + + Returns: + The observation list. + """ + roll, pitch, _ = self.minitaur.GetBaseRollPitchYaw() + observation = [roll, pitch] + if self._use_angular_velocity_in_observation: + roll_rate, pitch_rate, _ = self.minitaur.GetBaseRollPitchYawRate() + observation.extend([roll_rate, pitch_rate]) + if self._use_motor_angle_in_observation: + observation.extend(self.minitaur.GetMotorAngles().tolist()) + self._observation = np.array(observation) + return self._observation + + def _get_true_observation(self): + """Get the true observations of this environment. + + It includes the roll, pitch, roll dot, pitch dot of the base, and the motor + angles. + + Returns: + The observation list. + """ + roll, pitch, _ = self.minitaur.GetBaseRollPitchYaw() + observation = [roll, pitch] + if self._use_angular_velocity_in_observation: + roll_rate, pitch_rate, _ = self.minitaur.GetBaseRollPitchYawRate() + observation.extend([roll_rate, pitch_rate]) + if self._use_motor_angle_in_observation: + observation.extend(self.minitaur.GetMotorAngles().tolist()) + + self._observation = np.array(observation) + return self._observation + + def _get_observation_upper_bound(self): + """Get the upper bound of the observation. + + Returns: + The upper bound of an observation. See GetObservation() for the details + of each element of an observation. + """ + upper_bound = [2 * math.pi] * 2 # Roll, pitch the base. + if self._use_angular_velocity_in_observation: + upper_bound.extend([2 * math.pi / self._time_step] * 2) + if self._use_motor_angle_in_observation: + upper_bound.extend([2 * math.pi] * 8) + return np.array(upper_bound) + + def _get_observation_lower_bound(self): + lower_bound = -self._get_observation_upper_bound() + return lower_bound + + def set_swing_offset(self, value): + """Set the swing offset of each leg. + + It is to mimic the motor zero-calibration errors. + + Args: + value: A list of four values. + """ + self._swing_offset = value + + def set_extension_offset(self, value): + """Set the extension offset of each leg. + + It is to mimic the motor zero-calibration errors. + + Args: + value: A list of four values. + """ + self._extension_offset = value + + def set_desired_pitch(self, value): + """Set the desired pitch of the base, which is a user input. + + Args: + value: A scalar. + """ + self.desired_pitch = value diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_four_leg_stand_env_example.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_four_leg_stand_env_example.py new file mode 100644 index 000000000..4893c30f7 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_four_leg_stand_env_example.py @@ -0,0 +1,69 @@ +"""An example to run the minitaur environment of standing with four legs. + +""" +import numpy as np +import tensorflow as tf +from pybullet_envs.minitaur.envs import minitaur_four_leg_stand_env + + +FLAGS = tf.flags.FLAGS +tf.flags.DEFINE_string("log_path", None, "The directory to write the log file.") +NUM_LEGS = 4 +kroll = 3.0 +kpitch = 3.0 + + +def feed_forward_only_control_example(log_path=None): + """An example of hand-tuned controller for minitaur standing with four legs. + + Args: + log_path: The directory that the log files are written to. If log_path is + None, no logs will be written. + """ + steps = 1000 + episodes = 1 + + environment = minitaur_four_leg_stand_env.MinitaurFourLegStandEnv( + on_rack=False, + log_path=log_path, + urdf_version=minitaur_four_leg_stand_env.RAINBOW_DASH_V0_URDF_VERSION, + remove_default_joint_damping=True, + hard_reset=True, + motor_kp=1.0, + motor_kd=0.015, + control_latency=0.015, + pd_latency=0.003, + control_time_step=0.006, + action_repeat=6, + env_randomizer=None, + render=True) + + np.random.seed(100) + avg_reward = 0 + for i in xrange(episodes): + sum_reward = 0 + observation = environment.reset() + for _ in xrange(steps): + action = [0] * 4 + uroll = kroll * observation[0] + upitch = kpitch * observation[1] + action[0] = upitch - uroll + action[1] = -upitch - uroll + action[2] = upitch + uroll + action[3] = -upitch + uroll + observation, reward, done, _ = environment.step(action) + sum_reward += reward + if done: + break + tf.logging.info("reward {}: {}".format(i, sum_reward)) + avg_reward += sum_reward + tf.logging.info("avg_reward: {}\n\n\n".format(avg_reward / episodes)) + + +def main(unused_argv): + feed_forward_only_control_example(log_path=FLAGS.log_path) + + +if __name__ == "__main__": + tf.logging.set_verbosity(tf.logging.INFO) + tf.app.run() diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env.py new file mode 100644 index 000000000..189accae2 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env.py @@ -0,0 +1,601 @@ +"""This file implements the gym environment of minitaur. + +""" +import math +import time + +import gym +from gym import spaces +from gym.utils import seeding +import numpy as np +import pybullet +import bullet_client +import pybullet_data +import minitaur +import minitaur_derpy +import minitaur_logging +import minitaur_logging_pb2 +import minitaur_rainbow_dash +import motor + +NUM_MOTORS = 8 +MOTOR_ANGLE_OBSERVATION_INDEX = 0 +MOTOR_VELOCITY_OBSERVATION_INDEX = MOTOR_ANGLE_OBSERVATION_INDEX + NUM_MOTORS +MOTOR_TORQUE_OBSERVATION_INDEX = MOTOR_VELOCITY_OBSERVATION_INDEX + NUM_MOTORS +BASE_ORIENTATION_OBSERVATION_INDEX = MOTOR_TORQUE_OBSERVATION_INDEX + NUM_MOTORS +ACTION_EPS = 0.01 +OBSERVATION_EPS = 0.01 +RENDER_HEIGHT = 360 +RENDER_WIDTH = 480 +SENSOR_NOISE_STDDEV = minitaur.SENSOR_NOISE_STDDEV +DEFAULT_URDF_VERSION = "default" +DERPY_V0_URDF_VERSION = "derpy_v0" +RAINBOW_DASH_V0_URDF_VERSION = "rainbow_dash_v0" +NUM_SIMULATION_ITERATION_STEPS = 300 + +MINIATUR_URDF_VERSION_MAP = { + DEFAULT_URDF_VERSION: minitaur.Minitaur, + DERPY_V0_URDF_VERSION: minitaur_derpy.MinitaurDerpy, + RAINBOW_DASH_V0_URDF_VERSION: minitaur_rainbow_dash.MinitaurRainbowDash, +} + + +def convert_to_list(obj): + try: + iter(obj) + return obj + except TypeError: + return [obj] + + +class MinitaurGymEnv(gym.Env): + """The gym environment for the minitaur. + + It simulates the locomotion of a minitaur, a quadruped robot. The state space + include the angles, velocities and torques for all the motors and the action + space is the desired motor angle for each motor. The reward function is based + on how far the minitaur walks in 1000 steps and penalizes the energy + expenditure. + + """ + metadata = { + "render.modes": ["human", "rgb_array"], + "video.frames_per_second": 100 + } + + def __init__(self, + urdf_root=pybullet_data.getDataPath(), + urdf_version=None, + distance_weight=1.0, + energy_weight=0.005, + shake_weight=0.0, + drift_weight=0.0, + distance_limit=float("inf"), + observation_noise_stdev=SENSOR_NOISE_STDDEV, + self_collision_enabled=True, + motor_velocity_limit=np.inf, + pd_control_enabled=False, + leg_model_enabled=True, + accurate_motor_model_enabled=False, + remove_default_joint_damping=False, + motor_kp=1.0, + motor_kd=0.02, + control_latency=0.0, + pd_latency=0.0, + torque_control_enabled=False, + motor_overheat_protection=False, + hard_reset=True, + on_rack=False, + render=False, + num_steps_to_log=1000, + action_repeat=1, + control_time_step=None, + env_randomizer=None, + forward_reward_cap=float("inf"), + log_path=None): + """Initialize the minitaur gym environment. + + Args: + urdf_root: The path to the urdf data folder. + urdf_version: [DEFAULT_URDF_VERSION, DERPY_V0_URDF_VERSION, + RAINBOW_DASH_V0_URDF_VERSION] are allowable + versions. If None, DEFAULT_URDF_VERSION is used. DERPY_V0_URDF_VERSION + is the result of first pass system identification for derpy. + We will have a different URDF and related Minitaur class each time we + perform system identification. While the majority of the code of the + class remains the same, some code changes (e.g. the constraint location + might change). __init__() will choose the right Minitaur class from + different minitaur modules based on + urdf_version. + distance_weight: The weight of the distance term in the reward. + energy_weight: The weight of the energy term in the reward. + shake_weight: The weight of the vertical shakiness term in the reward. + drift_weight: The weight of the sideways drift term in the reward. + distance_limit: The maximum distance to terminate the episode. + observation_noise_stdev: The standard deviation of observation noise. + self_collision_enabled: Whether to enable self collision in the sim. + motor_velocity_limit: The velocity limit of each motor. + pd_control_enabled: Whether to use PD controller for each motor. + leg_model_enabled: Whether to use a leg motor to reparameterize the action + space. + accurate_motor_model_enabled: Whether to use the accurate DC motor model. + remove_default_joint_damping: Whether to remove the default joint damping. + motor_kp: proportional gain for the accurate motor model. + motor_kd: derivative gain for the accurate motor model. + control_latency: It is the delay in the controller between when an + observation is made at some point, and when that reading is reported + back to the Neural Network. + pd_latency: latency of the PD controller loop. PD calculates PWM based on + the motor angle and velocity. The latency measures the time between when + the motor angle and velocity are observed on the microcontroller and + when the true state happens on the motor. It is typically (0.001- + 0.002s). + torque_control_enabled: Whether to use the torque control, if set to + False, pose control will be used. + motor_overheat_protection: Whether to shutdown the motor that has exerted + large torque (OVERHEAT_SHUTDOWN_TORQUE) for an extended amount of time + (OVERHEAT_SHUTDOWN_TIME). See ApplyAction() in minitaur.py for more + details. + hard_reset: Whether to wipe the simulation and load everything when reset + is called. If set to false, reset just place the minitaur back to start + position and set its pose to initial configuration. + on_rack: Whether to place the minitaur on rack. This is only used to debug + the walking gait. In this mode, the minitaur's base is hanged midair so + that its walking gait is clearer to visualize. + render: Whether to render the simulation. + num_steps_to_log: The max number of control steps in one episode that will + be logged. If the number of steps is more than num_steps_to_log, the + environment will still be running, but only first num_steps_to_log will + be recorded in logging. + action_repeat: The number of simulation steps before actions are applied. + control_time_step: The time step between two successive control signals. + env_randomizer: An instance (or a list) of EnvRandomizer(s). An + EnvRandomizer may randomize the physical property of minitaur, change + the terrrain during reset(), or add perturbation forces during step(). + forward_reward_cap: The maximum value that forward reward is capped at. + Disabled (Inf) by default. + log_path: The path to write out logs. For the details of logging, refer to + minitaur_logging.proto. + Raises: + ValueError: If the urdf_version is not supported. + """ + # Set up logging. + self._log_path = log_path + self.logging = minitaur_logging.MinitaurLogging(log_path) + # PD control needs smaller time step for stability. + if control_time_step is not None: + self.control_time_step = control_time_step + self._action_repeat = action_repeat + self._time_step = control_time_step / action_repeat + else: + # Default values for time step and action repeat + if accurate_motor_model_enabled or pd_control_enabled: + self._time_step = 0.002 + self._action_repeat = 5 + else: + self._time_step = 0.01 + self._action_repeat = 1 + self.control_time_step = self._time_step * self._action_repeat + # TODO(b/73829334): Fix the value of self._num_bullet_solver_iterations. + self._num_bullet_solver_iterations = int( + NUM_SIMULATION_ITERATION_STEPS / self._action_repeat) + self._urdf_root = urdf_root + self._self_collision_enabled = self_collision_enabled + self._motor_velocity_limit = motor_velocity_limit + self._observation = [] + self._true_observation = [] + self._objectives = [] + self._objective_weights = [ + distance_weight, energy_weight, drift_weight, shake_weight + ] + self._env_step_counter = 0 + self._num_steps_to_log = num_steps_to_log + self._is_render = render + self._last_base_position = [0, 0, 0] + self._distance_weight = distance_weight + self._energy_weight = energy_weight + self._drift_weight = drift_weight + self._shake_weight = shake_weight + self._distance_limit = distance_limit + self._observation_noise_stdev = observation_noise_stdev + self._action_bound = 1 + self._pd_control_enabled = pd_control_enabled + self._leg_model_enabled = leg_model_enabled + self._accurate_motor_model_enabled = accurate_motor_model_enabled + self._remove_default_joint_damping = remove_default_joint_damping + self._motor_kp = motor_kp + self._motor_kd = motor_kd + self._torque_control_enabled = torque_control_enabled + self._motor_overheat_protection = motor_overheat_protection + self._on_rack = on_rack + self._cam_dist = 1.0 + self._cam_yaw = 0 + self._cam_pitch = -30 + self._forward_reward_cap = forward_reward_cap + self._hard_reset = True + self._last_frame_time = 0.0 + self._control_latency = control_latency + self._pd_latency = pd_latency + self._urdf_version = urdf_version + self._ground_id = None + self._env_randomizers = convert_to_list( + env_randomizer) if env_randomizer else [] + self._episode_proto = minitaur_logging_pb2.MinitaurEpisode() + if self._is_render: + self._pybullet_client = bullet_client.BulletClient( + connection_mode=pybullet.GUI) + else: + self._pybullet_client = bullet_client.BulletClient() + if self._urdf_version is None: + self._urdf_version = DEFAULT_URDF_VERSION + self._pybullet_client.setPhysicsEngineParameter(enableConeFriction=0) + self._seed() + self.reset() + observation_high = (self._get_observation_upper_bound() + OBSERVATION_EPS) + observation_low = (self._get_observation_lower_bound() - OBSERVATION_EPS) + action_dim = NUM_MOTORS + action_high = np.array([self._action_bound] * action_dim) + self.action_space = spaces.Box(-action_high, action_high) + self.observation_space = spaces.Box(observation_low, observation_high) + self.viewer = None + self._hard_reset = hard_reset # This assignment need to be after reset() + + def _close(self): + self.logging.save_episode(self._episode_proto) + self.minitaur.Terminate() + + def add_env_randomizer(self, env_randomizer): + self._env_randomizers.append(env_randomizer) + + def _reset(self, initial_motor_angles=None, reset_duration=1.0): + self._pybullet_client.configureDebugVisualizer( + self._pybullet_client.COV_ENABLE_RENDERING, 0) + self.logging.save_episode(self._episode_proto) + self._episode_proto = minitaur_logging_pb2.MinitaurEpisode() + minitaur_logging.preallocate_episode_proto(self._episode_proto, + self._num_steps_to_log) + if self._hard_reset: + self._pybullet_client.resetSimulation() + self._pybullet_client.setPhysicsEngineParameter( + numSolverIterations=int(self._num_bullet_solver_iterations)) + self._pybullet_client.setTimeStep(self._time_step) + self._ground_id = self._pybullet_client.loadURDF( + "%s/plane.urdf" % self._urdf_root) + self._pybullet_client.setGravity(0, 0, -10) + acc_motor = self._accurate_motor_model_enabled + motor_protect = self._motor_overheat_protection + if self._urdf_version not in MINIATUR_URDF_VERSION_MAP: + raise ValueError( + "%s is not a supported urdf_version." % self._urdf_version) + else: + self.minitaur = ( + MINIATUR_URDF_VERSION_MAP[self._urdf_version]( + pybullet_client=self._pybullet_client, + action_repeat=self._action_repeat, + urdf_root=self._urdf_root, + time_step=self._time_step, + self_collision_enabled=self._self_collision_enabled, + motor_velocity_limit=self._motor_velocity_limit, + pd_control_enabled=self._pd_control_enabled, + accurate_motor_model_enabled=acc_motor, + remove_default_joint_damping=self._remove_default_joint_damping, + motor_kp=self._motor_kp, + motor_kd=self._motor_kd, + control_latency=self._control_latency, + pd_latency=self._pd_latency, + observation_noise_stdev=self._observation_noise_stdev, + torque_control_enabled=self._torque_control_enabled, + motor_overheat_protection=motor_protect, + on_rack=self._on_rack)) + self.minitaur.Reset( + reload_urdf=False, + default_motor_angles=initial_motor_angles, + reset_time=reset_duration) + + # Loop over all env randomizers. + for env_randomizer in self._env_randomizers: + env_randomizer.randomize_env(self) + + self._pybullet_client.setPhysicsEngineParameter(enableConeFriction=0) + self._env_step_counter = 0 + self._last_base_position = [0, 0, 0] + self._objectives = [] + self._pybullet_client.resetDebugVisualizerCamera( + self._cam_dist, self._cam_yaw, self._cam_pitch, [0, 0, 0]) + self._pybullet_client.configureDebugVisualizer( + self._pybullet_client.COV_ENABLE_RENDERING, 1) + return self._get_observation() + + def _seed(self, seed=None): + self.np_random, seed = seeding.np_random(seed) + return [seed] + + def _transform_action_to_motor_command(self, action): + if self._leg_model_enabled: + for i, action_component in enumerate(action): + if not (-self._action_bound - ACTION_EPS <= action_component <= + self._action_bound + ACTION_EPS): + raise ValueError("{}th action {} out of bounds.".format( + i, action_component)) + action = self.minitaur.ConvertFromLegModel(action) + return action + + def _step(self, action): + """Step forward the simulation, given the action. + + Args: + action: A list of desired motor angles for eight motors. + + Returns: + observations: The angles, velocities and torques of all motors. + reward: The reward for the current state-action pair. + done: Whether the episode has ended. + info: A dictionary that stores diagnostic information. + + Raises: + ValueError: The action dimension is not the same as the number of motors. + ValueError: The magnitude of actions is out of bounds. + """ + self._last_base_position = self.minitaur.GetBasePosition() + + if self._is_render: + # Sleep, otherwise the computation takes less time than real time, + # which will make the visualization like a fast-forward video. + time_spent = time.time() - self._last_frame_time + self._last_frame_time = time.time() + time_to_sleep = self.control_time_step - time_spent + if time_to_sleep > 0: + time.sleep(time_to_sleep) + base_pos = self.minitaur.GetBasePosition() + # Keep the previous orientation of the camera set by the user. + [yaw, pitch, + dist] = self._pybullet_client.getDebugVisualizerCamera()[8:11] + self._pybullet_client.resetDebugVisualizerCamera(dist, yaw, pitch, + base_pos) + + for env_randomizer in self._env_randomizers: + env_randomizer.randomize_step(self) + + action = self._transform_action_to_motor_command(action) + self.minitaur.Step(action) + reward = self._reward() + done = self._termination() + if self._log_path is not None: + minitaur_logging.update_episode_proto(self._episode_proto, self.minitaur, + action, self._env_step_counter) + self._env_step_counter += 1 + if done: + self.minitaur.Terminate() + return np.array(self._get_observation()), reward, done, {} + + def _render(self, mode="rgb_array", close=False): + if mode != "rgb_array": + return np.array([]) + base_pos = self.minitaur.GetBasePosition() + view_matrix = self._pybullet_client.computeViewMatrixFromYawPitchRoll( + cameraTargetPosition=base_pos, + distance=self._cam_dist, + yaw=self._cam_yaw, + pitch=self._cam_pitch, + roll=0, + upAxisIndex=2) + proj_matrix = self._pybullet_client.computeProjectionMatrixFOV( + fov=60, + aspect=float(RENDER_WIDTH) / RENDER_HEIGHT, + nearVal=0.1, + farVal=100.0) + (_, _, px, _, _) = self._pybullet_client.getCameraImage( + width=RENDER_WIDTH, + height=RENDER_HEIGHT, + renderer=self._pybullet_client.ER_BULLET_HARDWARE_OPENGL, + viewMatrix=view_matrix, + projectionMatrix=proj_matrix) + rgb_array = np.array(px) + rgb_array = rgb_array[:, :, :3] + return rgb_array + + def get_minitaur_motor_angles(self): + """Get the minitaur's motor angles. + + Returns: + A numpy array of motor angles. + """ + return np.array( + self._observation[MOTOR_ANGLE_OBSERVATION_INDEX: + MOTOR_ANGLE_OBSERVATION_INDEX + NUM_MOTORS]) + + def get_minitaur_motor_velocities(self): + """Get the minitaur's motor velocities. + + Returns: + A numpy array of motor velocities. + """ + return np.array( + self._observation[MOTOR_VELOCITY_OBSERVATION_INDEX: + MOTOR_VELOCITY_OBSERVATION_INDEX + NUM_MOTORS]) + + def get_minitaur_motor_torques(self): + """Get the minitaur's motor torques. + + Returns: + A numpy array of motor torques. + """ + return np.array( + self._observation[MOTOR_TORQUE_OBSERVATION_INDEX: + MOTOR_TORQUE_OBSERVATION_INDEX + NUM_MOTORS]) + + def get_minitaur_base_orientation(self): + """Get the minitaur's base orientation, represented by a quaternion. + + Returns: + A numpy array of minitaur's orientation. + """ + return np.array(self._observation[BASE_ORIENTATION_OBSERVATION_INDEX:]) + + def is_fallen(self): + """Decide whether the minitaur has fallen. + + If the up directions between the base and the world is larger (the dot + product is smaller than 0.85) or the base is very low on the ground + (the height is smaller than 0.13 meter), the minitaur is considered fallen. + + Returns: + Boolean value that indicates whether the minitaur has fallen. + """ + orientation = self.minitaur.GetBaseOrientation() + rot_mat = self._pybullet_client.getMatrixFromQuaternion(orientation) + local_up = rot_mat[6:] + pos = self.minitaur.GetBasePosition() + return (np.dot(np.asarray([0, 0, 1]), np.asarray(local_up)) < 0.85 or + pos[2] < 0.13) + + def _termination(self): + position = self.minitaur.GetBasePosition() + distance = math.sqrt(position[0]**2 + position[1]**2) + return self.is_fallen() or distance > self._distance_limit + + def _reward(self): + current_base_position = self.minitaur.GetBasePosition() + forward_reward = current_base_position[0] - self._last_base_position[0] + # Cap the forward reward if a cap is set. + forward_reward = min(forward_reward, self._forward_reward_cap) + # Penalty for sideways translation. + drift_reward = -abs(current_base_position[1] - self._last_base_position[1]) + # Penalty for sideways rotation of the body. + orientation = self.minitaur.GetBaseOrientation() + rot_matrix = pybullet.getMatrixFromQuaternion(orientation) + local_up_vec = rot_matrix[6:] + shake_reward = -abs(np.dot(np.asarray([1, 1, 0]), np.asarray(local_up_vec))) + energy_reward = -np.abs( + np.dot(self.minitaur.GetMotorTorques(), + self.minitaur.GetMotorVelocities())) * self._time_step + objectives = [forward_reward, energy_reward, drift_reward, shake_reward] + weighted_objectives = [ + o * w for o, w in zip(objectives, self._objective_weights) + ] + reward = sum(weighted_objectives) + self._objectives.append(objectives) + return reward + + def get_objectives(self): + return self._objectives + + @property + def objective_weights(self): + """Accessor for the weights for all the objectives. + + Returns: + List of floating points that corresponds to weights for the objectives in + the order that objectives are stored. + """ + return self._objective_weights + + def _get_observation(self): + """Get observation of this environment, including noise and latency. + + The minitaur class maintains a history of true observations. Based on the + latency, this function will find the observation at the right time, + interpolate if necessary. Then Gaussian noise is added to this observation + based on self.observation_noise_stdev. + + Returns: + The noisy observation with latency. + """ + + observation = [] + observation.extend(self.minitaur.GetMotorAngles().tolist()) + observation.extend(self.minitaur.GetMotorVelocities().tolist()) + observation.extend(self.minitaur.GetMotorTorques().tolist()) + observation.extend(list(self.minitaur.GetBaseOrientation())) + self._observation = observation + return self._observation + + def _get_true_observation(self): + """Get the observations of this environment. + + It includes the angles, velocities, torques and the orientation of the base. + + Returns: + The observation list. observation[0:8] are motor angles. observation[8:16] + are motor velocities, observation[16:24] are motor torques. + observation[24:28] is the orientation of the base, in quaternion form. + """ + observation = [] + observation.extend(self.minitaur.GetTrueMotorAngles().tolist()) + observation.extend(self.minitaur.GetTrueMotorVelocities().tolist()) + observation.extend(self.minitaur.GetTrueMotorTorques().tolist()) + observation.extend(list(self.minitaur.GetTrueBaseOrientation())) + + self._true_observation = observation + return self._true_observation + + def _get_observation_upper_bound(self): + """Get the upper bound of the observation. + + Returns: + The upper bound of an observation. See GetObservation() for the details + of each element of an observation. + """ + upper_bound = np.zeros(self._get_observation_dimension()) + num_motors = self.minitaur.num_motors + upper_bound[0:num_motors] = math.pi # Joint angle. + upper_bound[num_motors:2 * num_motors] = ( + motor.MOTOR_SPEED_LIMIT) # Joint velocity. + upper_bound[2 * num_motors:3 * num_motors] = ( + motor.OBSERVED_TORQUE_LIMIT) # Joint torque. + upper_bound[3 * num_motors:] = 1.0 # Quaternion of base orientation. + return upper_bound + + def _get_observation_lower_bound(self): + """Get the lower bound of the observation.""" + return -self._get_observation_upper_bound() + + def _get_observation_dimension(self): + """Get the length of the observation list. + + Returns: + The length of the observation list. + """ + return len(self._get_observation()) + + def set_time_step(self, control_step, simulation_step=0.001): + """Sets the time step of the environment. + + Args: + control_step: The time period (in seconds) between two adjacent control + actions are applied. + simulation_step: The simulation time step in PyBullet. By default, the + simulation step is 0.001s, which is a good trade-off between simulation + speed and accuracy. + Raises: + ValueError: If the control step is smaller than the simulation step. + """ + if control_step < simulation_step: + raise ValueError( + "Control step should be larger than or equal to simulation step.") + self.control_time_step = control_step + self._time_step = simulation_step + self._action_repeat = int(round(control_step / simulation_step)) + self._num_bullet_solver_iterations = ( + NUM_SIMULATION_ITERATION_STEPS / self._action_repeat) + self._pybullet_client.setPhysicsEngineParameter( + numSolverIterations=self._num_bullet_solver_iterations) + self._pybullet_client.setTimeStep(self._time_step) + self.minitaur.SetTimeSteps( + action_repeat=self._action_repeat, simulation_step=self._time_step) + + @property + def pybullet_client(self): + return self._pybullet_client + + @property + def ground_id(self): + return self._ground_id + + @ground_id.setter + def ground_id(self, new_ground_id): + self._ground_id = new_ground_id + + @property + def env_step_counter(self): + return self._env_step_counter diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env_example.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env_example.py new file mode 100644 index 000000000..bfd116114 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env_example.py @@ -0,0 +1,217 @@ +"""An example to run of the minitaur gym environment with sine gaits. + +""" + +import csv +import math + +import argparse +import numpy as np +import tensorflow as tf +import minitaur_gym_env + + +#FLAGS = flags.FLAGS +#flags.DEFINE_enum( +# "example_name", "sine", ["sine", "reset", "stand", "overheat"], +# "The name of the example: sine, reset, stand, or overheat.") +#flags.DEFINE_string("output_filename", None, "The name of the output CSV file." +# "Each line in the CSV file will contain the action, the " +# "motor position, speed and torques.") +#flags.DEFINE_string("log_path", None, "The directory to write the log file.") + + +def WriteToCSV(filename, actions_and_observations): + """Write simulation data to file. + + Save actions and observed angles, angular velocities and torques for data + analysis. + + Args: + filename: The file to write. Can be locally or on CNS. + actions_and_observations: the interested simulation quantities to save. + """ + with tf.gfile.Open(filename, "wb") as csvfile: + csv_writer = csv.writer(csvfile, delimiter=",") + for row in actions_and_observations: + csv_writer.writerow(row) + + +def ResetPoseExample(log_path=None): + """An example that the minitaur stands still using the reset pose.""" + steps = 10000 + environment = minitaur_gym_env.MinitaurGymEnv( + urdf_version=minitaur_gym_env.DERPY_V0_URDF_VERSION, + render=True, + leg_model_enabled=False, + motor_velocity_limit=np.inf, + pd_control_enabled=True, + accurate_motor_model_enabled=True, + motor_overheat_protection=True, + hard_reset=False, + log_path=log_path) + action = [math.pi / 2] * 8 + for _ in range(steps): + _, _, done, _ = environment.step(action) + if done: + break + + +def MotorOverheatExample(log_path=None): + """An example of minitaur motor overheat protection is triggered. + + The minitaur is leaning forward and the motors are getting obove threshold + torques. The overheat protection will be triggered in ~1 sec. + + Args: + log_path: The directory that the log files are written to. If log_path is + None, no logs will be written. + """ + + environment = minitaur_gym_env.MinitaurGymEnv( + urdf_version=minitaur_gym_env.DERPY_V0_URDF_VERSION, + render=True, + leg_model_enabled=False, + motor_velocity_limit=np.inf, + motor_overheat_protection=True, + accurate_motor_model_enabled=True, + motor_kp=1.20, + motor_kd=0.00, + on_rack=False, + log_path=log_path) + + action = [2.0] * 8 + for i in range(8): + action[i] = 2.0 - 0.5 * (-1 if i % 2 == 0 else 1) * (-1 if i < 4 else 1) + + steps = 500 + actions_and_observations = [] + for step_counter in range(steps): + # Matches the internal timestep. + time_step = 0.01 + t = step_counter * time_step + current_row = [t] + current_row.extend(action) + + observation, _, _, _ = environment.step(action) + current_row.extend(observation.tolist()) + actions_and_observations.append(current_row) + + if FLAGS.output_filename is not None: + WriteToCSV(FLAGS.output_filename, actions_and_observations) + + +def SineStandExample(log_path=None): + """An example of minitaur standing and squatting on the floor. + + To validate the accurate motor model we command the robot and sit and stand up + periodically in both simulation and experiment. We compare the measured motor + trajectories, torques and gains. The results are at: + https://colab.corp.google.com/v2/notebook#fileId=0BxTIAnWh1hb_ZnkyYWtNQ1RYdkU&scrollTo=ZGFMl84kKqRx + + Args: + log_path: The directory that the log files are written to. If log_path is + None, no logs will be written. + """ + environment = minitaur_gym_env.MinitaurGymEnv( + urdf_version=minitaur_gym_env.RAINBOW_DASH_V0_URDF_VERSION, + render=True, + leg_model_enabled=False, + motor_velocity_limit=np.inf, + motor_overheat_protection=True, + accurate_motor_model_enabled=True, + motor_kp=1.20, + motor_kd=0.02, + on_rack=False, + log_path=log_path) + steps = 1000 + amplitude = 0.5 + speed = 3 + + actions_and_observations = [] + + for step_counter in range(steps): + # Matches the internal timestep. + time_step = 0.01 + t = step_counter * time_step + current_row = [t] + + action = [math.sin(speed * t) * amplitude + math.pi / 2] * 8 + current_row.extend(action) + + observation, _, _, _ = environment.step(action) + current_row.extend(observation.tolist()) + actions_and_observations.append(current_row) + + if FLAGS.output_filename is not None: + WriteToCSV(FLAGS.output_filename, actions_and_observations) + + +def SinePolicyExample(log_path=None): + """An example of minitaur walking with a sine gait. + + Args: + log_path: The directory that the log files are written to. If log_path is + None, no logs will be written. + """ + environment = minitaur_gym_env.MinitaurGymEnv( + urdf_version=minitaur_gym_env.DERPY_V0_URDF_VERSION, + render=True, + motor_velocity_limit=np.inf, + pd_control_enabled=True, + hard_reset=False, + on_rack=False, + log_path=log_path) + sum_reward = 0 + steps = 20000 + amplitude_1_bound = 0.5 + amplitude_2_bound = 0.5 + speed = 40 + + for step_counter in range(steps): + time_step = 0.01 + t = step_counter * time_step + + amplitude1 = amplitude_1_bound + amplitude2 = amplitude_2_bound + steering_amplitude = 0 + if t < 10: + steering_amplitude = 0.5 + elif t < 20: + steering_amplitude = -0.5 + else: + steering_amplitude = 0 + + # Applying asymmetrical sine gaits to different legs can steer the minitaur. + a1 = math.sin(t * speed) * (amplitude1 + steering_amplitude) + a2 = math.sin(t * speed + math.pi) * (amplitude1 - steering_amplitude) + a3 = math.sin(t * speed) * amplitude2 + a4 = math.sin(t * speed + math.pi) * amplitude2 + action = [a1, a2, a2, a1, a3, a4, a4, a3] + _, reward, done, _ = environment.step(action) + sum_reward += reward + if done: + tf.logging.info("Return is {}".format(sum_reward)) + environment.reset() + + + + +def main(): + parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) + parser.add_argument('--env', help='environment ID (0==sine, 1==stand, 2=reset, 3=overheat)',type=int, default=0) + args = parser.parse_args() + print("--env=" + str(args.env)) + + if (args.env == 0): + SinePolicyExample() + if (args.env == 1): + SineStandExample() + if (args.env == 2): + ResetPoseExample() + if (args.env == 3): + MotorOverheatExample() + +if __name__ == '__main__': + main() + diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.proto b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.proto new file mode 100644 index 000000000..79258352a --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.proto @@ -0,0 +1,41 @@ +syntax = "proto3"; +package robotics.reinforcement_learning.minitaur.envs; + +import "timestamp.proto"; +import "vector.proto"; + +message MinitaurEpisode { + // The state-action pair at each step of the log. + repeated MinitaurStateAction state_action = 1; +} + +message MinitaurMotorState { + // The current angle of the motor. + double angle = 1; + // The current velocity of the motor. + double velocity = 2; + // The current torque exerted at this motor. + double torque = 3; + // The action directed to this motor. The action is the desired motor angle. + double action = 4; +} + +message MinitaurStateAction { + // Whether the state/action information is valid. It is always true if the + // proto is from simulation. It might be false when communication error + // happens on minitaur hardware. + bool info_valid = 6; + // The time stamp of this step. It is computed since the reset of the + // environment. + google.protobuf.Timestamp time = 1; + // The position of the base of the minitaur. + robotics.messages.Vector3d base_position = 2; + // The orientation of the base of the minitaur. It is represented as (roll, + // pitch, yaw). + robotics.messages.Vector3d base_orientation = 3; + // The angular velocity of the base of the minitaur. It is the time derivative + // of (roll, pitch, yaw). + robotics.messages.Vector3d base_angular_vel = 4; + // The motor states (angle, velocity, torque, action) of eight motors. + repeated MinitaurMotorState motor_states = 5; +} diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py new file mode 100644 index 000000000..f7022b728 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py @@ -0,0 +1,142 @@ +"""A proto buffer based logging system for minitaur experiments. + +The logging system records the time since reset, base position, orientation, +angular velocity and motor information (joint angle, speed, and torque) into a +proto buffer. See minitaur_logging.proto for more details. The episode_proto is +updated per time step by the environment and saved onto disk for each episode. +""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import datetime +import os +import time + +import tensorflow as tf +import minitaur_logging_pb2 + +NUM_MOTORS = 8 + + +def _update_base_state(base_state, values): + base_state.x = values[0] + base_state.y = values[1] + base_state.z = values[2] + + +def preallocate_episode_proto(episode_proto, max_num_steps): + """Preallocate the memory for proto buffer. + + Dynamically allocating memory as the protobuf expands causes unexpected delay + that is not tolerable with locomotion control. + + Args: + episode_proto: The proto that holds the state/action data for the current + episode. + max_num_steps: The max number of steps that will be recorded in the proto. + The state/data over max_num_steps will not be stored in the proto. + """ + for _ in range(max_num_steps): + step_log = episode_proto.state_action.add() + step_log.info_valid = False + step_log.time.seconds = 0 + step_log.time.nanos = 0 + for _ in range(NUM_MOTORS): + motor_state = step_log.motor_states.add() + motor_state.angle = 0 + motor_state.velocity = 0 + motor_state.torque = 0 + motor_state.action = 0 + _update_base_state(step_log.base_position, [0, 0, 0]) + _update_base_state(step_log.base_orientation, [0, 0, 0]) + _update_base_state(step_log.base_angular_vel, [0, 0, 0]) + + +def update_episode_proto(episode_proto, minitaur, action, step): + """Update the episode proto by appending the states/action of the minitaur. + + Note that the state/data over max_num_steps preallocated + (len(episode_proto.state_action)) will not be stored in the proto. + Args: + episode_proto: The proto that holds the state/action data for the current + episode. + minitaur: The minitaur instance. See envs.minitaur for details. + action: The action applied at this time step. The action is an 8-element + numpy floating-point array. + step: The current step index. + """ + max_num_steps = len(episode_proto.state_action) + if step >= max_num_steps: + tf.logging.warning( + "{}th step is not recorded in the logging since only {} steps were " + "pre-allocated.".format(step, max_num_steps)) + return + step_log = episode_proto.state_action[step] + step_log.info_valid = minitaur.IsObservationValid() + time_in_seconds = minitaur.GetTimeSinceReset() + step_log.time.seconds = int(time_in_seconds) + step_log.time.nanos = int((time_in_seconds - int(time_in_seconds)) * 1e9) + + motor_angles = minitaur.GetMotorAngles() + motor_velocities = minitaur.GetMotorVelocities() + motor_torques = minitaur.GetMotorTorques() + for i in range(minitaur.num_motors): + step_log.motor_states[i].angle = motor_angles[i] + step_log.motor_states[i].velocity = motor_velocities[i] + step_log.motor_states[i].torque = motor_torques[i] + step_log.motor_states[i].action = action[i] + + _update_base_state(step_log.base_position, minitaur.GetBasePosition()) + _update_base_state(step_log.base_orientation, minitaur.GetBaseRollPitchYaw()) + _update_base_state(step_log.base_angular_vel, + minitaur.GetBaseRollPitchYawRate()) + + +class MinitaurLogging(object): + """A logging system that records the states/action of the minitaur.""" + + def __init__(self, log_path=None): + self._log_path = log_path + + # TODO(jietan): Consider using recordio to write the logs. + def save_episode(self, episode_proto): + """Save episode_proto to self._log_path. + + self._log_path is the directory name. A time stamp is the file name of the + log file. For example, when self._log_path is "/tmp/logs/", the actual + log file would be "/tmp/logs/yyyy-mm-dd-hh:mm:ss". + + Args: + episode_proto: The proto that holds the states/action for the current + episode that needs to be save to disk. + Returns: + The full log path, including the directory name and the file name. + """ + if not self._log_path or not episode_proto.state_action: + return self._log_path + if not tf.gfile.Exists(self._log_path): + tf.gfile.MakeDirs(self._log_path) + ts = time.time() + time_stamp = datetime.datetime.fromtimestamp(ts).strftime( + "%Y-%m-%d-%H:%M:%S") + log_path = os.path.join(self._log_path, + "minitaur_log_{}".format(time_stamp)) + with tf.gfile.Open(log_path, "w") as f: + f.write(episode_proto.SerializeToString()) + return log_path + + def restore_episode(self, log_path): + """Restore the episodic proto from the log path. + + Args: + log_path: The full path of the log file. + Returns: + The minitaur episode proto. + """ + with tf.gfile.Open(log_path) as f: + content = f.read() + episode_proto = minitaur_logging_pb2.MinitaurEpisode() + episode_proto.ParseFromString(content) + return episode_proto diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging_pb2.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging_pb2.py new file mode 100644 index 000000000..7ea35b0f6 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging_pb2.py @@ -0,0 +1,212 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: minitaur_logging.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +import timestamp_pb2 as timestamp__pb2 +import vector_pb2 as vector__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='minitaur_logging.proto', + package='robotics.reinforcement_learning.minitaur.envs', + syntax='proto3', + serialized_pb=_b('\n\x16minitaur_logging.proto\x12-robotics.reinforcement_learning.minitaur.envs\x1a\x0ftimestamp.proto\x1a\x0cvector.proto\"k\n\x0fMinitaurEpisode\x12X\n\x0cstate_action\x18\x01 \x03(\x0b\x32\x42.robotics.reinforcement_learning.minitaur.envs.MinitaurStateAction\"U\n\x12MinitaurMotorState\x12\r\n\x05\x61ngle\x18\x01 \x01(\x01\x12\x10\n\x08velocity\x18\x02 \x01(\x01\x12\x0e\n\x06torque\x18\x03 \x01(\x01\x12\x0e\n\x06\x61\x63tion\x18\x04 \x01(\x01\"\xce\x02\n\x13MinitaurStateAction\x12\x12\n\ninfo_valid\x18\x06 \x01(\x08\x12(\n\x04time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x32\n\rbase_position\x18\x02 \x01(\x0b\x32\x1b.robotics.messages.Vector3d\x12\x35\n\x10\x62\x61se_orientation\x18\x03 \x01(\x0b\x32\x1b.robotics.messages.Vector3d\x12\x35\n\x10\x62\x61se_angular_vel\x18\x04 \x01(\x0b\x32\x1b.robotics.messages.Vector3d\x12W\n\x0cmotor_states\x18\x05 \x03(\x0b\x32\x41.robotics.reinforcement_learning.minitaur.envs.MinitaurMotorStateb\x06proto3') + , + dependencies=[timestamp__pb2.DESCRIPTOR,vector__pb2.DESCRIPTOR,]) + + + + +_MINITAUREPISODE = _descriptor.Descriptor( + name='MinitaurEpisode', + full_name='robotics.reinforcement_learning.minitaur.envs.MinitaurEpisode', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='state_action', full_name='robotics.reinforcement_learning.minitaur.envs.MinitaurEpisode.state_action', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=104, + serialized_end=211, +) + + +_MINITAURMOTORSTATE = _descriptor.Descriptor( + name='MinitaurMotorState', + full_name='robotics.reinforcement_learning.minitaur.envs.MinitaurMotorState', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='angle', full_name='robotics.reinforcement_learning.minitaur.envs.MinitaurMotorState.angle', index=0, + number=1, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='velocity', full_name='robotics.reinforcement_learning.minitaur.envs.MinitaurMotorState.velocity', index=1, + number=2, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='torque', full_name='robotics.reinforcement_learning.minitaur.envs.MinitaurMotorState.torque', index=2, + number=3, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='action', full_name='robotics.reinforcement_learning.minitaur.envs.MinitaurMotorState.action', index=3, + number=4, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=213, + serialized_end=298, +) + + +_MINITAURSTATEACTION = _descriptor.Descriptor( + name='MinitaurStateAction', + full_name='robotics.reinforcement_learning.minitaur.envs.MinitaurStateAction', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='info_valid', full_name='robotics.reinforcement_learning.minitaur.envs.MinitaurStateAction.info_valid', index=0, + number=6, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='time', full_name='robotics.reinforcement_learning.minitaur.envs.MinitaurStateAction.time', index=1, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='base_position', full_name='robotics.reinforcement_learning.minitaur.envs.MinitaurStateAction.base_position', index=2, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='base_orientation', full_name='robotics.reinforcement_learning.minitaur.envs.MinitaurStateAction.base_orientation', index=3, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='base_angular_vel', full_name='robotics.reinforcement_learning.minitaur.envs.MinitaurStateAction.base_angular_vel', index=4, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='motor_states', full_name='robotics.reinforcement_learning.minitaur.envs.MinitaurStateAction.motor_states', index=5, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=301, + serialized_end=635, +) + +_MINITAUREPISODE.fields_by_name['state_action'].message_type = _MINITAURSTATEACTION +_MINITAURSTATEACTION.fields_by_name['time'].message_type = timestamp__pb2._TIMESTAMP +_MINITAURSTATEACTION.fields_by_name['base_position'].message_type = vector__pb2._VECTOR3D +_MINITAURSTATEACTION.fields_by_name['base_orientation'].message_type = vector__pb2._VECTOR3D +_MINITAURSTATEACTION.fields_by_name['base_angular_vel'].message_type = vector__pb2._VECTOR3D +_MINITAURSTATEACTION.fields_by_name['motor_states'].message_type = _MINITAURMOTORSTATE +DESCRIPTOR.message_types_by_name['MinitaurEpisode'] = _MINITAUREPISODE +DESCRIPTOR.message_types_by_name['MinitaurMotorState'] = _MINITAURMOTORSTATE +DESCRIPTOR.message_types_by_name['MinitaurStateAction'] = _MINITAURSTATEACTION +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +MinitaurEpisode = _reflection.GeneratedProtocolMessageType('MinitaurEpisode', (_message.Message,), dict( + DESCRIPTOR = _MINITAUREPISODE, + __module__ = 'minitaur_logging_pb2' + # @@protoc_insertion_point(class_scope:robotics.reinforcement_learning.minitaur.envs.MinitaurEpisode) + )) +_sym_db.RegisterMessage(MinitaurEpisode) + +MinitaurMotorState = _reflection.GeneratedProtocolMessageType('MinitaurMotorState', (_message.Message,), dict( + DESCRIPTOR = _MINITAURMOTORSTATE, + __module__ = 'minitaur_logging_pb2' + # @@protoc_insertion_point(class_scope:robotics.reinforcement_learning.minitaur.envs.MinitaurMotorState) + )) +_sym_db.RegisterMessage(MinitaurMotorState) + +MinitaurStateAction = _reflection.GeneratedProtocolMessageType('MinitaurStateAction', (_message.Message,), dict( + DESCRIPTOR = _MINITAURSTATEACTION, + __module__ = 'minitaur_logging_pb2' + # @@protoc_insertion_point(class_scope:robotics.reinforcement_learning.minitaur.envs.MinitaurStateAction) + )) +_sym_db.RegisterMessage(MinitaurStateAction) + + +# @@protoc_insertion_point(module_scope) diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_rainbow_dash.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_rainbow_dash.py new file mode 100644 index 000000000..4eef2b663 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_rainbow_dash.py @@ -0,0 +1,174 @@ +"""Implements the functionalities of a minitaur rainbow dash using pybullet. + +It is the result of first pass system identification for the rainbow dash robot. + +""" +import math + +import numpy as np +import minitaur + +KNEE_CONSTRAINT_POINT_LONG = [0, 0.0045, 0.088] +KNEE_CONSTRAINT_POINT_SHORT = [0, 0.0045, 0.100] + + +class MinitaurRainbowDash(minitaur.Minitaur): + """The minitaur class that simulates a quadruped robot from Ghost Robotics. + + """ + + def Reset(self, reload_urdf=True, default_motor_angles=None, reset_time=3.0): + """Reset the minitaur to its initial states. + + Args: + reload_urdf: Whether to reload the urdf file. If not, Reset() just place + the minitaur back to its starting position. + default_motor_angles: The default motor angles. If it is None, minitaur + will hold a default pose (motor angle math.pi / 2) for 100 steps. In + torque control mode, the phase of holding the default pose is skipped. + reset_time: The duration (in seconds) to hold the default motor angles. If + reset_time <= 0 or in torque control mode, the phase of holding the + default pose is skipped. + """ + if self._on_rack: + init_position = minitaur.INIT_RACK_POSITION + else: + init_position = minitaur.INIT_POSITION + if reload_urdf: + if self._self_collision_enabled: + self.quadruped = self._pybullet_client.loadURDF( + "%s/quadruped/minitaur_rainbow_dash.urdf" % self._urdf_root, + init_position, + useFixedBase=self._on_rack, + flags=( + self._pybullet_client.URDF_USE_SELF_COLLISION_EXCLUDE_PARENT)) + else: + self.quadruped = self._pybullet_client.loadURDF( + "%s/quadruped/minitaur_rainbow_dash.urdf" % self._urdf_root, + init_position, + useFixedBase=self._on_rack) + self._BuildJointNameToIdDict() + self._BuildUrdfIds() + if self._remove_default_joint_damping: + self._RemoveDefaultJointDamping() + self._BuildMotorIdList() + self._RecordMassInfoFromURDF() + self._RecordInertiaInfoFromURDF() + self.ResetPose(add_constraint=True) + else: + self._pybullet_client.resetBasePositionAndOrientation( + self.quadruped, init_position, minitaur.INIT_ORIENTATION) + self._pybullet_client.resetBaseVelocity(self.quadruped, [0, 0, 0], + [0, 0, 0]) + self.ResetPose(add_constraint=False) + + self._overheat_counter = np.zeros(self.num_motors) + self._motor_enabled_list = [True] * self.num_motors + self._step_counter = 0 + + # Perform reset motion within reset_duration if in position control mode. + # Nothing is performed if in torque control mode for now. + # TODO(jietan): Add reset motion when the torque control is fully supported. + self._observation_history.clear() + if not self._torque_control_enabled and reset_time > 0.0: + self.ReceiveObservation() + for _ in range(100): + self.ApplyAction([math.pi / 2] * self.num_motors) + self._pybullet_client.stepSimulation() + self.ReceiveObservation() + if default_motor_angles is not None: + num_steps_to_reset = int(reset_time / self.time_step) + for _ in range(num_steps_to_reset): + self.ApplyAction(default_motor_angles) + self._pybullet_client.stepSimulation() + self.ReceiveObservation() + self.ReceiveObservation() + + def _ResetPoseForLeg(self, leg_id, add_constraint): + """Reset the initial pose for the leg. + + Args: + leg_id: It should be 0, 1, 2, or 3, which represents the leg at + front_left, back_left, front_right and back_right. + add_constraint: Whether to add a constraint at the joints of two feet. + """ + knee_friction_force = 0 + half_pi = math.pi / 2.0 + knee_angle = -2.1834 + + leg_position = minitaur.LEG_POSITION[leg_id] + self._pybullet_client.resetJointState( + self.quadruped, + self._joint_name_to_id["motor_" + leg_position + "L_joint"], + self._motor_direction[2 * leg_id] * half_pi, + targetVelocity=0) + self._pybullet_client.resetJointState( + self.quadruped, + self._joint_name_to_id["knee_" + leg_position + "L_joint"], + self._motor_direction[2 * leg_id] * knee_angle, + targetVelocity=0) + self._pybullet_client.resetJointState( + self.quadruped, + self._joint_name_to_id["motor_" + leg_position + "R_joint"], + self._motor_direction[2 * leg_id + 1] * half_pi, + targetVelocity=0) + self._pybullet_client.resetJointState( + self.quadruped, + self._joint_name_to_id["knee_" + leg_position + "R_joint"], + self._motor_direction[2 * leg_id + 1] * knee_angle, + targetVelocity=0) + if add_constraint: + if leg_id < 2: + self._pybullet_client.createConstraint( + self.quadruped, + self._joint_name_to_id["knee_" + leg_position + "R_joint"], + self.quadruped, + self._joint_name_to_id["knee_" + leg_position + "L_joint"], + self._pybullet_client.JOINT_POINT2POINT, [0, 0, 0], + KNEE_CONSTRAINT_POINT_SHORT, KNEE_CONSTRAINT_POINT_LONG) + else: + self._pybullet_client.createConstraint( + self.quadruped, + self._joint_name_to_id["knee_" + leg_position + "R_joint"], + self.quadruped, + self._joint_name_to_id["knee_" + leg_position + "L_joint"], + self._pybullet_client.JOINT_POINT2POINT, [0, 0, 0], + KNEE_CONSTRAINT_POINT_LONG, KNEE_CONSTRAINT_POINT_SHORT) + + if self._accurate_motor_model_enabled or self._pd_control_enabled: + # Disable the default motor in pybullet. + self._pybullet_client.setJointMotorControl2( + bodyIndex=self.quadruped, + jointIndex=( + self._joint_name_to_id["motor_" + leg_position + "L_joint"]), + controlMode=self._pybullet_client.VELOCITY_CONTROL, + targetVelocity=0, + force=knee_friction_force) + self._pybullet_client.setJointMotorControl2( + bodyIndex=self.quadruped, + jointIndex=( + self._joint_name_to_id["motor_" + leg_position + "R_joint"]), + controlMode=self._pybullet_client.VELOCITY_CONTROL, + targetVelocity=0, + force=knee_friction_force) + + else: + self._SetDesiredMotorAngleByName( + "motor_" + leg_position + "L_joint", + self._motor_direction[2 * leg_id] * half_pi) + self._SetDesiredMotorAngleByName( + "motor_" + leg_position + "R_joint", + self._motor_direction[2 * leg_id + 1] * half_pi) + + self._pybullet_client.setJointMotorControl2( + bodyIndex=self.quadruped, + jointIndex=(self._joint_name_to_id["knee_" + leg_position + "L_joint"]), + controlMode=self._pybullet_client.VELOCITY_CONTROL, + targetVelocity=0, + force=knee_friction_force) + self._pybullet_client.setJointMotorControl2( + bodyIndex=self.quadruped, + jointIndex=(self._joint_name_to_id["knee_" + leg_position + "R_joint"]), + controlMode=self._pybullet_client.VELOCITY_CONTROL, + targetVelocity=0, + force=knee_friction_force) diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_randomize_terrain_gym_env.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_randomize_terrain_gym_env.py new file mode 100644 index 000000000..4b8056175 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_randomize_terrain_gym_env.py @@ -0,0 +1,84 @@ +"""Gym environment of minitaur which randomize the terrain at each reset.""" +import math +import os + +import numpy as np +#from google3.pyglib import flags +#from google3.pyglib import gfile +from pybullet_envs.minitaur.envs import minitaur +from pybullet_envs.minitaur.envs import minitaur_gym_env + +flags.DEFINE_string( + 'terrain_dir', '/cns/od-d/home/brain-minitaur/terrain_obj', + 'The directory which contains terrain obj files to be used.') +flags.DEFINE_string('storage_dir', '/tmp', + 'The full path to the temporary directory to be used.') + +FLAGS = flags.FLAGS + + +class MinitaurRandomizeTerrainGymEnv(minitaur_gym_env.MinitaurGymEnv): + """The gym environment for the minitaur with randomized terrain. + + It simulates a minitaur (a quadruped robot) on a randomized terrain. The state + space include the angles, velocities and torques for all the motors and the + action space is the desired motor angle for each motor. The reward function is + based on how far the minitaur walks in 1000 steps and penalizes the energy + expenditure. + + """ + + def _reset(self): + self._pybullet_client.resetSimulation() + self._pybullet_client.setPhysicsEngineParameter( + numSolverIterations=self._num_bullet_solver_iterations) + self._pybullet_client.setTimeStep(self._time_step) + terrain_visual_shape_id = -1 + terrain_mass = 0 + terrain_position = [0, 0, 0] + terrain_orientation = [0, 0, 0, 1] + terrain_file_name = self.load_random_terrain(FLAGS.terrain_dir) + terrain_collision_shape_id = self._pybullet_client.createCollisionShape( + shapeType=self._pybullet_client.GEOM_MESH, + fileName=terrain_file_name, + flags=1, + meshScale=[0.5, 0.5, 0.5]) + self._pybullet_client.createMultiBody(terrain_mass, + terrain_collision_shape_id, + terrain_visual_shape_id, + terrain_position, + terrain_orientation) + self._pybullet_client.setGravity(0, 0, -10) + self.minitaur = (minitaur.Minitaur( + pybullet_client=self._pybullet_client, + urdf_root=self._urdf_root, + time_step=self._time_step, + self_collision_enabled=self._self_collision_enabled, + motor_velocity_limit=self._motor_velocity_limit, + pd_control_enabled=self._pd_control_enabled, + on_rack=self._on_rack)) + self._last_base_position = [0, 0, 0] + for _ in xrange(100): + if self._pd_control_enabled: + self.minitaur.ApplyAction([math.pi / 2] * 8) + self._pybullet_client.stepSimulation() + return self._get_observation() + + def load_random_terrain(self, terrain_dir): + """Load a random terrain obj file. + + Args: + terrain_dir: The directory which contains terrain obj files to be used. + + Returns: + terrain_file_name_complete: The complete terrain obj file name in the + local directory. + """ + terrain_file_names_all = gfile.ListDir(terrain_dir) + terrain_file_name = np.random.choice(terrain_file_names_all) + asset_source = os.path.join(terrain_dir, terrain_file_name) + asset_destination = os.path.join(FLAGS.storage_dir, terrain_file_name) + gfile.Copy(asset_source, asset_destination, overwrite=True) + terrain_file_name_complete = os.path.join(FLAGS.storage_dir, + terrain_file_name) + return terrain_file_name_complete diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_randomize_terrain_gym_env_example.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_randomize_terrain_gym_env_example.py new file mode 100644 index 000000000..0e5638790 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_randomize_terrain_gym_env_example.py @@ -0,0 +1,83 @@ +"""An example to run minitaur gym environment with randomized terrain. + +""" + +import math + +import numpy as np +import tensorflow as tf +#from google3.pyglib import app +#from google3.pyglib import flags +from pybullet_envs.minitaur.envs import minitaur_randomize_terrain_gym_env + +FLAGS = flags.FLAGS + +flags.DEFINE_enum("example_name", "reset", ["sine", "reset"], + "The name of the example: sine or reset.") + + +def ResetTerrainExample(): + """An example showing resetting random terrain env.""" + num_reset = 10 + steps = 100 + env = minitaur_randomize_terrain_gym_env.MinitaurRandomizeTerrainGymEnv( + render=True, + leg_model_enabled=False, + motor_velocity_limit=np.inf, + pd_control_enabled=True) + action = [math.pi / 2] * 8 + for _ in xrange(num_reset): + env.reset() + for _ in xrange(steps): + _, _, done, _ = env.step(action) + if done: + break + + +def SinePolicyExample(): + """An example of minitaur walking with a sine gait.""" + env = minitaur_randomize_terrain_gym_env.MinitaurRandomizeTerrainGymEnv( + render=True, + motor_velocity_limit=np.inf, + pd_control_enabled=True, + on_rack=False) + sum_reward = 0 + steps = 200 + amplitude_1_bound = 0.5 + amplitude_2_bound = 0.5 + speed = 40 + + for step_counter in xrange(steps): + time_step = 0.01 + t = step_counter * time_step + + amplitude1 = amplitude_1_bound + amplitude2 = amplitude_2_bound + steering_amplitude = 0 + if t < 10: + steering_amplitude = 0.5 + elif t < 20: + steering_amplitude = -0.5 + else: + steering_amplitude = 0 + + # Applying asymmetrical sine gaits to different legs can steer the minitaur. + a1 = math.sin(t * speed) * (amplitude1 + steering_amplitude) + a2 = math.sin(t * speed + math.pi) * (amplitude1 - steering_amplitude) + a3 = math.sin(t * speed) * amplitude2 + a4 = math.sin(t * speed + math.pi) * amplitude2 + action = [a1, a2, a2, a1, a3, a4, a4, a3] + _, reward, _, _ = env.step(action) + sum_reward += reward + + +def main(unused_argv): + if FLAGS.example_name == "sine": + SinePolicyExample() + elif FLAGS.example_name == "reset": + ResetTerrainExample() + + +if __name__ == "__main__": + tf.logging.set_verbosity(tf.logging.INFO) + app.run() diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_reactive_env.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_reactive_env.py new file mode 100644 index 000000000..9f6f9b847 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_reactive_env.py @@ -0,0 +1,221 @@ +"""This file implements the gym environment of minitaur alternating legs. + +""" +import collections +import math +from gym import spaces +import numpy as np +import minitaur_gym_env + +INIT_EXTENSION_POS = 2.0 +INIT_SWING_POS = 0.0 +NUM_LEGS = 4 +NUM_MOTORS = 2 * NUM_LEGS + +MinitaurPose = collections.namedtuple( + "MinitaurPose", + "swing_angle_1, swing_angle_2, swing_angle_3, swing_angle_4, " + "extension_angle_1, extension_angle_2, extension_angle_3, " + "extension_angle_4") + + +class MinitaurReactiveEnv(minitaur_gym_env.MinitaurGymEnv): + """The gym environment for the minitaur. + + It simulates the locomotion of a minitaur, a quadruped robot. The state space + include the angles, velocities and torques for all the motors and the action + space is the desired motor angle for each motor. The reward function is based + on how far the minitaur walks in 1000 steps and penalizes the energy + expenditure. + + """ + metadata = { + "render.modes": ["human", "rgb_array"], + "video.frames_per_second": 166 + } + + def __init__(self, + urdf_version=None, + energy_weight=0.005, + control_time_step=0.006, + action_repeat=6, + control_latency=0.02, + pd_latency=0.003, + on_rack=False, + motor_kp=1.0, + motor_kd=0.015, + remove_default_joint_damping=True, + render=False, + num_steps_to_log=1000, + accurate_motor_model_enabled=True, + use_angle_in_observation=True, + hard_reset=False, + env_randomizer=None, + log_path=None): + """Initialize the minitaur trotting gym environment. + + Args: + urdf_version: [DEFAULT_URDF_VERSION, DERPY_V0_URDF_VERSION] are allowable + versions. If None, DEFAULT_URDF_VERSION is used. Refer to + minitaur_gym_env for more details. + energy_weight: The weight of the energy term in the reward function. Refer + to minitaur_gym_env for more details. + control_time_step: The time step between two successive control signals. + action_repeat: The number of simulation steps that an action is repeated. + control_latency: The latency between get_observation() and the actual + observation. See minituar.py for more details. + pd_latency: The latency used to get motor angles/velocities used to + compute PD controllers. See minitaur.py for more details. + on_rack: Whether to place the minitaur on rack. This is only used to debug + the walking gait. In this mode, the minitaur"s base is hung midair so + that its walking gait is clearer to visualize. + motor_kp: The P gain of the motor. + motor_kd: The D gain of the motor. + remove_default_joint_damping: Whether to remove the default joint damping. + render: Whether to render the simulation. + num_steps_to_log: The max number of control steps in one episode. If the + number of steps is over num_steps_to_log, the environment will still + be running, but only first num_steps_to_log will be recorded in logging. + accurate_motor_model_enabled: Whether to use the accurate motor model from + system identification. Refer to minitaur_gym_env for more details. + use_angle_in_observation: Whether to include motor angles in observation. + hard_reset: Whether hard reset (swipe out everything and reload) the + simulation. If it is false, the minitaur is set to the default pose + and moved to the origin. + env_randomizer: An instance (or a list) of EnvRanzomier(s) that can + randomize the environment during when env.reset() is called and add + perturbations when env._step() is called. + log_path: The path to write out logs. For the details of logging, refer to + minitaur_logging.proto. + """ + self._use_angle_in_observation = use_angle_in_observation + + super(MinitaurReactiveEnv, self).__init__( + urdf_version=urdf_version, + energy_weight=energy_weight, + accurate_motor_model_enabled=accurate_motor_model_enabled, + motor_overheat_protection=True, + motor_kp=motor_kp, + motor_kd=motor_kd, + remove_default_joint_damping=remove_default_joint_damping, + control_latency=control_latency, + pd_latency=pd_latency, + on_rack=on_rack, + render=render, + hard_reset=hard_reset, + num_steps_to_log=num_steps_to_log, + env_randomizer=env_randomizer, + log_path=log_path, + control_time_step=control_time_step, + action_repeat=action_repeat) + + action_dim = 8 + action_low = np.array([-0.5] * action_dim) + action_high = -action_low + self.action_space = spaces.Box(action_low, action_high) + self._cam_dist = 1.0 + self._cam_yaw = 30 + self._cam_pitch = -30 + + def _reset(self): + # TODO(b/73666007): Use composition instead of inheritance. + # (http://go/design-for-testability-no-inheritance). + init_pose = MinitaurPose( + swing_angle_1=INIT_SWING_POS, + swing_angle_2=INIT_SWING_POS, + swing_angle_3=INIT_SWING_POS, + swing_angle_4=INIT_SWING_POS, + extension_angle_1=INIT_EXTENSION_POS, + extension_angle_2=INIT_EXTENSION_POS, + extension_angle_3=INIT_EXTENSION_POS, + extension_angle_4=INIT_EXTENSION_POS) + # TODO(b/73734502): Refactor input of _convert_from_leg_model to namedtuple. + initial_motor_angles = self._convert_from_leg_model(list(init_pose)) + super(MinitaurReactiveEnv, self)._reset( + initial_motor_angles=initial_motor_angles, reset_duration=0.5) + return self._get_observation() + + def _convert_from_leg_model(self, leg_pose): + motor_pose = np.zeros(NUM_MOTORS) + for i in range(NUM_LEGS): + motor_pose[2 * i] = leg_pose[NUM_LEGS + i] - (-1)**(i / 2) * leg_pose[i] + motor_pose[2 * i + 1] = ( + leg_pose[NUM_LEGS + i] + (-1)**(i / 2) * leg_pose[i]) + return motor_pose + + def _signal(self, t): + initial_pose = np.array([ + INIT_SWING_POS, INIT_SWING_POS, INIT_SWING_POS, INIT_SWING_POS, + INIT_EXTENSION_POS, INIT_EXTENSION_POS, INIT_EXTENSION_POS, + INIT_EXTENSION_POS + ]) + return initial_pose + + def _transform_action_to_motor_command(self, action): + # Add the reference trajectory (i.e. the trotting signal). + action += self._signal(self.minitaur.GetTimeSinceReset()) + return self._convert_from_leg_model(action) + + def is_fallen(self): + """Decides whether the minitaur is in a fallen state. + + If the roll or the pitch of the base is greater than 0.3 radians, the + minitaur is considered fallen. + + Returns: + Boolean value that indicates whether the minitaur has fallen. + """ + roll, pitch, _ = self.minitaur.GetTrueBaseRollPitchYaw() + return math.fabs(roll) > 0.3 or math.fabs(pitch) > 0.3 + + def _get_true_observation(self): + """Get the true observations of this environment. + + It includes the roll, the pitch, the roll dot and the pitch dot of the base. + If _use_angle_in_observation is true, eight motor angles are added into the + observation. + + Returns: + The observation list, which is a numpy array of floating-point values. + """ + roll, pitch, _ = self.minitaur.GetTrueBaseRollPitchYaw() + roll_rate, pitch_rate, _ = self.minitaur.GetTrueBaseRollPitchYawRate() + observation = [roll, pitch, roll_rate, pitch_rate] + if self._use_angle_in_observation: + observation.extend(self.minitaur.GetMotorAngles().tolist()) + self._true_observation = np.array(observation) + return self._true_observation + + def _get_observation(self): + roll, pitch, _ = self.minitaur.GetBaseRollPitchYaw() + roll_rate, pitch_rate, _ = self.minitaur.GetBaseRollPitchYawRate() + observation = [roll, pitch, roll_rate, pitch_rate] + if self._use_angle_in_observation: + observation.extend(self.minitaur.GetMotorAngles().tolist()) + self._observation = np.array(observation) + return self._observation + + def _get_observation_upper_bound(self): + """Get the upper bound of the observation. + + Returns: + The upper bound of an observation. See _get_true_observation() for the + details of each element of an observation. + """ + upper_bound_roll = 2 * math.pi + upper_bound_pitch = 2 * math.pi + upper_bound_roll_dot = 2 * math.pi / self._time_step + upper_bound_pitch_dot = 2 * math.pi / self._time_step + upper_bound_motor_angle = 2 * math.pi + upper_bound = [ + upper_bound_roll, upper_bound_pitch, upper_bound_roll_dot, + upper_bound_pitch_dot + ] + + if self._use_angle_in_observation: + upper_bound.extend([upper_bound_motor_angle] * NUM_MOTORS) + return np.array(upper_bound) + + def _get_observation_lower_bound(self): + lower_bound = -self._get_observation_upper_bound() + return lower_bound diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_reactive_env_example.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_reactive_env_example.py new file mode 100644 index 000000000..41010d4b5 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_reactive_env_example.py @@ -0,0 +1,55 @@ +r"""An example to use simple_ppo_agent. + +blaze run -c opt \ +//robotics/reinforcement_learning/minitaur/envs:minitaur_reactive_env_example +""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import os +import time +import tensorflow as tf +from agents.scripts import utility +import simple_ppo_agent + +flags = tf.app.flags +FLAGS = tf.app.flags.FLAGS +LOG_DIR = ( + "testdata/minitaur_reactive_env_test") +CHECKPOINT = "model.ckpt-14000000" + + +def main(argv): + del argv # Unused. + config = utility.load_config(LOG_DIR) + policy_layers = config.policy_layers + value_layers = config.value_layers + env = config.env(render=True) + network = config.network + + with tf.Session() as sess: + agent = simple_ppo_agent.SimplePPOPolicy( + sess, + env, + network, + policy_layers=policy_layers, + value_layers=value_layers, + checkpoint=os.path.join(LOG_DIR, CHECKPOINT)) + + sum_reward = 0 + observation = env.reset() + while True: + action = agent.get_action([observation]) + observation, reward, done, _ = env.step(action[0]) + # This sleep is to prevent serial communication error on the real robot. + time.sleep(0.002) + sum_reward += reward + if done: + break + tf.logging.info("reward: %s", sum_reward) + + +if __name__ == "__main__": + tf.app.run(main) diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_stand_gym_env.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_stand_gym_env.py new file mode 100644 index 000000000..76fa9d2ba --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_stand_gym_env.py @@ -0,0 +1,241 @@ +"""This file implements the gym environment of minitaur. + +""" +import math +from operator import add +import time + +from gym import spaces +import numpy as np +from pybullet_envs.minitaur.envs import minitaur_gym_env + +ACTION_EPS = 0.01 +# RANGE_OF_LEG_MOTION defines how far legs can rotate in both directions +# (1.0 means rotation pi/2 (radians) in both directions). +RANGE_OF_LEG_MOTION = 0.7 +# LIMIT_FALLEN defines when to consider robot fallen to the ground. +# This is the vertical component of the robot's front vector (unit vector). +# 0.0 represents body of the robot being horizontal, 1.0 means vertical. +LIMIT_FALLEN = 0.7 + + +class MinitaurStandGymEnv(minitaur_gym_env.MinitaurGymEnv): + """The gym environment for the minitaur and a ball. + + It simulates the standing up behavior of a minitaur, a quadruped robot. The + state space include the angles, velocities and torques for all the motors and + the action space is the desired motor angle for each motor. The reward + function is based on how long the minitaur stays standing up. + + """ + metadata = { + "render.modes": ["human", "rgb_array"], + "video.frames_per_second": 50 + } + + def __init__(self, + urdf_root="third_party/bullet/data", + action_repeat=1, + observation_noise_stdev=minitaur_gym_env.SENSOR_NOISE_STDDEV, + self_collision_enabled=True, + motor_velocity_limit=np.inf, + pd_control_enabled=False, + render=False): + """Initialize the minitaur standing up gym environment. + + Args: + urdf_root: The path to the urdf data folder. + action_repeat: The number of simulation steps before actions are applied. + observation_noise_stdev: The standard deviation of observation noise. + self_collision_enabled: Whether to enable self collision in the sim. + motor_velocity_limit: The velocity limit of each motor. + pd_control_enabled: Whether to use PD controller for each motor. + render: Whether to render the simulation. + """ + super(MinitaurStandGymEnv, self).__init__( + urdf_root=urdf_root, + action_repeat=action_repeat, + observation_noise_stdev=observation_noise_stdev, + self_collision_enabled=self_collision_enabled, + motor_velocity_limit=motor_velocity_limit, + pd_control_enabled=pd_control_enabled, + accurate_motor_model_enabled=True, + motor_overheat_protection=True, + render=render) + # Set the action dimension to 1, and reset the action space. + action_dim = 1 + action_high = np.array([self._action_bound] * action_dim) + self.action_space = spaces.Box(-action_high, action_high) + + def _stand_up(self): + """Make the robot stand up to its two legs when started on 4 legs. + + This method is similar to the step function, but instead of using the action + provided, it uses a hand-coded policy to make the robot stand up to its + two legs. Once the robot is vertical enough it exits and leaves the + environment to the typical step function that uses agent's actions. + + Returns: + observations: The angles, velocities and torques of all motors. + reward: The reward for the current state-action pair. + done: Whether the episode has ended. + info: A dictionary that stores diagnostic information. + """ + for t in xrange(5000): + if self._is_render: + base_pos = self.minitaur.GetBasePosition() + self._pybullet_client.resetDebugVisualizerCamera( + self._cam_dist, self._cam_yaw, self._cam_pitch, base_pos) + state = self._get_true_observation() + action = self._policy_flip(t, state[24:28]) + self.minitaur.ApplyAction(action) + self._pybullet_client.stepSimulation() + self.minitaur.ReceiveObservation() + if self._is_render: + time.sleep(self._time_step) + self._env_step_counter += 1 + reward = self._reward() + if reward > 0.9: + break + done = self._termination() + return np.array(self._get_observation()), reward, done, {} + + def _step(self, action): + # At start, use policy_flip to lift the robot to its two legs. After the + # robot reaches the lift up stage, give control back to the agent by + # returning the current state and reward. + if self._env_step_counter < 1: + return self._stand_up() + return super(MinitaurStandGymEnv, self)._step(action) + + def _reward(self): + """Reward function for standing up pose. + + Returns: + reward: A number between -1 and 1 according to how vertical is the body of + the robot. + """ + orientation = self.minitaur.GetBaseOrientation() + rot_matrix = self._pybullet_client.getMatrixFromQuaternion(orientation) + local_front_vec = rot_matrix[6:9] + alignment = abs(np.dot(np.asarray([1, 0, 0]), np.asarray(local_front_vec))) + return alignment**4 + + def _termination(self): + if self._is_horizontal(): + return True + return False + + def _is_horizontal(self): + """Decide whether minitaur is almost parallel to the ground. + + This method is used in experiments where the robot is learning to stand up. + + Returns: + Boolean value that indicates whether the minitaur is almost parallel to + the ground. + """ + orientation = self.minitaur.GetBaseOrientation() + rot_matrix = self._pybullet_client.getMatrixFromQuaternion(orientation) + front_z_component = rot_matrix[6] + return abs(front_z_component) < LIMIT_FALLEN + + def _transform_action_to_motor_command(self, action): + """Method to transform the one dimensional action to rotate bottom two legs. + + Args: + action: A double between -1 and 1, where 0 means keep the legs parallel + to the body. + Returns: + actions: The angles for all motors. + Raises: + ValueError: The action dimension is not the same as the number of motors. + ValueError: The magnitude of actions is out of bounds. + """ + action = action[0] + # Scale the action from [-1 to 1] to [-range to +range] (angle in radians). + action *= RANGE_OF_LEG_MOTION + action_all_legs = [ + math.pi, # Upper leg pointing up. + 0, + 0, # Bottom leg pointing down. + math.pi, + 0, # Upper leg pointing up. + math.pi, + math.pi, # Bottom leg pointing down. + 0 + ] + action_all_legs = [angle - 0.7 for angle in action_all_legs] + + # Use the one dimensional action to rotate both bottom legs. + action_delta = [0, 0, -action, action, 0, 0, action, -action] + action_all_legs = map(add, action_all_legs, action_delta) + return action_all_legs + + def _policy_flip(self, time_step, orientation): + """Hand coded policy to make the minitaur stand up to its two legs. + + This method is the hand coded policy that uses sine waves and orientation + of the robot to make it stand up to its two legs. It is composed of these + behaviors: + - Rotate bottom legs to always point to the ground + - Rotate upper legs the other direction so that they point to the sky when + the robot is standing up, and they point to the ground when the robot is + horizontal. + - Shorten the bottom 2 legs + - Shorten the other two legs, then when the sine wave hits its maximum, + extend the legs pushing the robot up. + + Args: + time_step: The time (or frame number) used for sine function. + orientation: Quaternion specifying the orientation of the body. + + Returns: + actions: The angles for all motors. + """ + # Set the default behavior (stand on 4 short legs). + shorten = -0.7 + a0 = math.pi / 2 + shorten + a1 = math.pi / 2 + shorten + a2 = math.pi / 2 + shorten + a3 = math.pi / 2 + shorten + a4 = math.pi / 2 + shorten + a5 = math.pi / 2 + shorten + a6 = math.pi / 2 + shorten + a7 = math.pi / 2 + shorten + + # Rotate back legs to point to the ground independent of the orientation. + rot_matrix = self._pybullet_client.getMatrixFromQuaternion(orientation) + local_up = rot_matrix[6:] + multiplier = np.dot(np.asarray([0, 0, 1]), np.asarray(local_up)) + a2 -= (1 - multiplier) * (math.pi / 2) + a3 += (1 - multiplier) * (math.pi / 2) + a6 += (1 - multiplier) * (math.pi / 2) + a7 -= (1 - multiplier) * (math.pi / 2) + + # Rotate front legs the other direction, so that it points up when standing. + a0 += (1 - multiplier) * (math.pi / 2) + a1 -= (1 - multiplier) * (math.pi / 2) + a4 -= (1 - multiplier) * (math.pi / 2) + a5 += (1 - multiplier) * (math.pi / 2) + + # Periodically push the upper legs to stand up. + speed = 0.01 + intensity = 1.9 + # Lower the signal a little, so that it becomes positive only for a short + # amount time. + lower_signal = -0.94 + signal_unit = math.copysign(intensity, + math.sin(time_step * speed) + lower_signal) + # Only extend the leg, don't shorten. + if signal_unit < 0: + signal_unit = 0 + + # Only apply it after some time. + if time_step * speed > math.pi: + a0 += signal_unit + a1 += signal_unit + a4 += signal_unit + a5 += signal_unit + joint_values = [a0, a1, a2, a3, a4, a5, a6, a7] + return joint_values diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_stand_gym_env_example.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_stand_gym_env_example.py new file mode 100644 index 000000000..ff7ed2948 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_stand_gym_env_example.py @@ -0,0 +1,35 @@ +"""An example to run of the minitaur gym environment with standing up goal. + +""" + +import math + +import numpy as np +import tensorflow as tf + +from pybullet_envs.minitaur.envs import minitaur_stand_gym_env + + +def StandUpExample(): + """An example that the minitaur stands up.""" + steps = 1000 + environment = minitaur_stand_gym_env.MinitaurStandGymEnv( + render=True, + motor_velocity_limit=np.inf) + action = [0.5] + _, _, done, _ = environment.step(action) + for t in xrange(steps): + # A policy that oscillates between -1 and 1 + action = [math.sin(t * math.pi * 0.01)] + _, _, done, _ = environment.step(action) + if done: + break + + +def main(unused_argv): + StandUpExample() + + +if __name__ == "__main__": + tf.logging.set_verbosity(tf.logging.INFO) + app.run() diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_trotting_env.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_trotting_env.py new file mode 100644 index 000000000..3b5ff9e83 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_trotting_env.py @@ -0,0 +1,324 @@ +"""Implements the gym environment of minitaur moving with trotting style. +""" +import math + +from gym import spaces +import numpy as np +from pybullet_envs.minitaur.envs import minitaur_gym_env + +# TODO(tingnan): These constants should be moved to minitaur/minitaur_gym_env. +NUM_LEGS = 4 +NUM_MOTORS = 2 * NUM_LEGS + + +class MinitaurTrottingEnv(minitaur_gym_env.MinitaurGymEnv): + """The trotting gym environment for the minitaur. + + In this env, Minitaur performs a trotting style locomotion specified by + extension_amplitude, swing_amplitude, and step_frequency. Each diagonal pair + of legs will move according to the reference trajectory: + extension = extsion_amplitude * cos(2 * pi * step_frequency * t + phi) + swing = swing_amplitude * sin(2 * pi * step_frequency * t + phi) + And the two diagonal leg pairs have a phase (phi) difference of pi. The + reference signal may be modified by the feedback actions from a balance + controller (e.g. a neural network). + + """ + metadata = { + "render.modes": ["human", "rgb_array"], + "video.frames_per_second": 166 + } + + def __init__(self, + urdf_version=None, + control_time_step=0.006, + action_repeat=6, + control_latency=0.02, + pd_latency=0.003, + on_rack=False, + motor_kp=1.0, + motor_kd=0.015, + remove_default_joint_damping=True, + render=False, + num_steps_to_log=1000, + accurate_motor_model_enabled=True, + use_signal_in_observation=False, + use_angle_in_observation=False, + hard_reset=False, + env_randomizer=None, + log_path=None, + init_extension=2.0, + init_swing=0.0, + step_frequency=2.0, + extension_amplitude=0.35, + swing_amplitude=0.3): + """Initialize the minitaur trotting gym environment. + + Args: + urdf_version: [DEFAULT_URDF_VERSION, DERPY_V0_URDF_VERSION, + RAINBOW_DASH_V0_URDF_VERSION] are allowable versions. If None, + DEFAULT_URDF_VERSION is used. Refer to minitaur_gym_env for more + details. + control_time_step: The time step between two successive control signals. + action_repeat: The number of simulation steps that an action is repeated. + control_latency: The latency between get_observation() and the actual + observation. See minituar.py for more details. + pd_latency: The latency used to get motor angles/velocities used to + compute PD controllers. See minitaur.py for more details. + on_rack: Whether to place the minitaur on rack. This is only used to debug + the walking gait. In this mode, the minitaur's base is hung midair so + that its walking gait is clearer to visualize. + motor_kp: The P gain of the motor. + motor_kd: The D gain of the motor. + remove_default_joint_damping: Whether to remove the default joint damping. + render: Whether to render the simulation. + num_steps_to_log: The max number of control steps in one episode. If the + number of steps is over num_steps_to_log, the environment will still + be running, but only first num_steps_to_log will be recorded in logging. + accurate_motor_model_enabled: Uses the nonlinear DC motor model if set to + True. + use_signal_in_observation: Includes the reference motor angles in the + observation vector. + use_angle_in_observation: Includes the measured motor angles in the + observation vector. + hard_reset: Whether to reset the whole simulation environment or just + reposition the robot. + env_randomizer: A list of EnvRandomizers that can randomize the + environment during when env.reset() is called and add perturbation + forces when env._step() is called. + log_path: The path to write out logs. For the details of logging, refer to + minitaur_logging.proto. + init_extension: The initial reset length of the leg. + init_swing: The initial reset swing position of the leg. + step_frequency: The desired leg stepping frequency. + extension_amplitude: The maximum leg extension change within a locomotion + cycle. + swing_amplitude: The maximum leg swing change within a cycle. + """ + + # _swing_offset and _extension_offset is to mimick the bent legs. The + # offsets will be added when applying the motor commands. + self._swing_offset = np.zeros(NUM_LEGS) + self._extension_offset = np.zeros(NUM_LEGS) + + # The reset position. + self._init_pose = [ + init_swing, init_swing, init_swing, init_swing, init_extension, + init_extension, init_extension, init_extension + ] + + self._step_frequency = step_frequency + self._extension_amplitude = extension_amplitude + self._swing_amplitude = swing_amplitude + self._use_signal_in_observation = use_signal_in_observation + self._use_angle_in_observation = use_angle_in_observation + super(MinitaurTrottingEnv, self).__init__( + urdf_version=urdf_version, + accurate_motor_model_enabled=accurate_motor_model_enabled, + motor_overheat_protection=True, + motor_kp=motor_kp, + motor_kd=motor_kd, + remove_default_joint_damping=remove_default_joint_damping, + control_latency=control_latency, + pd_latency=pd_latency, + on_rack=on_rack, + render=render, + hard_reset=hard_reset, + num_steps_to_log=num_steps_to_log, + env_randomizer=env_randomizer, + log_path=log_path, + control_time_step=control_time_step, + action_repeat=action_repeat) + + action_dim = NUM_LEGS * 2 + action_high = np.array([0.25] * action_dim) + self.action_space = spaces.Box(-action_high, action_high) + + # For render purpose. + self._cam_dist = 1.0 + self._cam_yaw = 30 + self._cam_pitch = -30 + + def _reset(self): + # In this environment, the actions are + # [swing leg 1, swing leg 2, swing leg 3, swing leg 4, + # extension leg 1, extension leg 2, extension leg 3, extension leg 4] + initial_motor_angles = self._convert_from_leg_model(self._init_pose) + super(MinitaurTrottingEnv, self)._reset( + initial_motor_angles=initial_motor_angles, reset_duration=0.5) + return self._get_observation() + + def _convert_from_leg_model(self, leg_pose): + """Converts leg space action into motor commands. + + Args: + leg_pose: A numpy array. leg_pose[0:NUM_LEGS] are leg swing angles + and leg_pose[NUM_LEGS:2*NUM_LEGS] contains leg extensions. + + Returns: + A numpy array of the corresponding motor angles for the given leg pose. + """ + motor_pose = np.zeros(NUM_MOTORS) + for i in range(NUM_LEGS): + motor_pose[2 * i] = leg_pose[NUM_LEGS + i] - (-1)**(i / 2) * leg_pose[i] + motor_pose[2 * i + + 1] = leg_pose[NUM_LEGS + i] + (-1)**(i / 2) * leg_pose[i] + return motor_pose + + def _gen_signal(self, t, phase): + """Generates a sinusoidal reference leg trajectory. + + The foot (leg tip) will move in a ellipse specified by extension and swing + amplitude. + + Args: + t: Current time in simulation. + phase: The phase offset for the periodic trajectory. + + Returns: + The desired leg extension and swing angle at the current time. + """ + period = 1 / self._step_frequency + extension = self._extension_amplitude * math.cos( + 2 * math.pi / period * t + phase) + swing = self._swing_amplitude * math.sin(2 * math.pi / period * t + phase) + return extension, swing + + def _signal(self, t): + """Generates the trotting gait for the robot. + + Args: + t: Current time in simulation. + + Returns: + A numpy array of the reference leg positions. + """ + # Generates the leg trajectories for the two digonal pair of legs. + ext_first_pair, sw_first_pair = self._gen_signal(t, 0) + ext_second_pair, sw_second_pair = self._gen_signal(t, math.pi) + + trotting_signal = np.array([ + sw_first_pair, sw_second_pair, sw_second_pair, sw_first_pair, + ext_first_pair, ext_second_pair, ext_second_pair, ext_first_pair + ]) + signal = np.array(self._init_pose) + trotting_signal + return signal + + def _transform_action_to_motor_command(self, action): + """Generates the motor commands for the given action. + + Swing/extension offsets and the reference leg trajectory will be added on + top of the inputs before the conversion. + + Args: + action: A numpy array contains the leg swings and extensions that will be + added to the reference trotting trajectory. action[0:NUM_LEGS] are leg + swing angles, and action[NUM_LEGS:2*NUM_LEGS] contains leg extensions. + + Returns: + A numpy array of the desired motor angles for the given leg space action. + """ + # Add swing_offset and extension_offset to mimick the bent legs. + action[0:NUM_LEGS] += self._swing_offset + action[NUM_LEGS:2 * NUM_LEGS] += self._extension_offset + + # Add the reference trajectory (i.e. the trotting signal). + action += self._signal(self.minitaur.GetTimeSinceReset()) + return self._convert_from_leg_model(action) + + def is_fallen(self): + """Decide whether the minitaur has fallen. + + Returns: + Boolean value that indicates whether the minitaur has fallen. + """ + roll, pitch, _ = self.minitaur.GetTrueBaseRollPitchYaw() + is_fallen = math.fabs(roll) > 0.3 or math.fabs(pitch) > 0.3 + return is_fallen + + def _get_true_observation(self): + """Get the true observations of this environment. + + It includes the true roll, pitch, roll dot and pitch dot of the base. Also + includes the disired/observed motor angles if the relevant flags are set. + + Returns: + The observation list. + """ + observation = [] + roll, pitch, _ = self.minitaur.GetTrueBaseRollPitchYaw() + roll_rate, pitch_rate, _ = self.minitaur.GetTrueBaseRollPitchYawRate() + observation.extend([roll, pitch, roll_rate, pitch_rate]) + if self._use_signal_in_observation: + observation.extend(self._transform_action_to_motor_command([0] * 8)) + if self._use_angle_in_observation: + observation.extend(self.minitaur.GetMotorAngles().tolist()) + self._true_observation = np.array(observation) + return self._true_observation + + def _get_observation(self): + """Get observations of this environment. + + It includes the base roll, pitch, roll dot and pitch dot which may contain + noises, bias, and latency. Also includes the disired/observed motor angles + if the relevant flags are set. + + Returns: + The observation list. + """ + observation = [] + roll, pitch, _ = self.minitaur.GetBaseRollPitchYaw() + roll_rate, pitch_rate, _ = self.minitaur.GetBaseRollPitchYawRate() + observation.extend([roll, pitch, roll_rate, pitch_rate]) + if self._use_signal_in_observation: + observation.extend(self._transform_action_to_motor_command([0] * 8)) + if self._use_angle_in_observation: + observation.extend(self.minitaur.GetMotorAngles().tolist()) + self._observation = np.array(observation) + return self._observation + + def _get_observation_upper_bound(self): + """Get the upper bound of the observation. + + Returns: + A numpy array contains the upper bound of an observation. See + GetObservation() for the details of each element of an observation. + """ + upper_bound = [] + upper_bound.extend([2 * math.pi] * 2) # Roll, pitch, yaw of the base. + upper_bound.extend( + [2 * math.pi / self._time_step] * 2) # Roll, pitch, yaw rate. + if self._use_signal_in_observation: + upper_bound.extend([2 * math.pi] * NUM_MOTORS) # Signal + if self._use_angle_in_observation: + upper_bound.extend([2 * math.pi] * NUM_MOTORS) # Motor angles + return np.array(upper_bound) + + def _get_observation_lower_bound(self): + """Get the lower bound of the observation. + + Returns: + The lower bound of an observation (the reverse of the upper bound). + """ + lower_bound = -self._get_observation_upper_bound() + return lower_bound + + def set_swing_offset(self, value): + """Set the swing offset of each leg. + + It is to mimic the bent leg. + + Args: + value: A list of four values. + """ + self._swing_offset = value + + def set_extension_offset(self, value): + """Set the extension offset of each leg. + + It is to mimic the bent leg. + + Args: + value: A list of four values. + """ + self._extension_offset = value diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_trotting_env_example.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_trotting_env_example.py new file mode 100644 index 000000000..1edba8727 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_trotting_env_example.py @@ -0,0 +1,41 @@ +"""An example to run the minitaur environment of trotting gait. + +""" +import time + +import numpy as np +import tensorflow as tf +from pybullet_envs.minitaur.envs import minitaur_gym_env +from pybullet_envs.minitaur.envs import minitaur_trotting_env + +#FLAGS = tf.flags.FLAGS +#tf.flags.DEFINE_string("log_path", None, "The directory to write the log file.") + + +def main(unused_argv): + environment = minitaur_trotting_env.MinitaurTrottingEnv( + urdf_version=minitaur_gym_env.RAINBOW_DASH_V0_URDF_VERSION, + use_signal_in_observation=False, + use_angle_in_observation=False, + render=True, + log_path=FLAGS.log_path) + + np.random.seed(100) + sum_reward = 0 + environment.reset() + + steps = 5000 + for _ in xrange(steps): + # Sleep to prevent serial buffer overflow on microcontroller. + time.sleep(0.002) + action = [0] * 8 + _, reward, done, _ = environment.step(action) + sum_reward += reward + if done: + break + tf.logging.info("reward: {}".format(sum_reward)) + + +if __name__ == "__main__": + tf.logging.set_verbosity(tf.logging.INFO) + tf.app.run() diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/motor.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/motor.py new file mode 100644 index 000000000..20e271e1b --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/motor.py @@ -0,0 +1,144 @@ +"""This file implements an accurate motor model.""" + +import numpy as np +VOLTAGE_CLIPPING = 50 +# TODO(b/73728631): Clamp the pwm signal instead of the OBSERVED_TORQUE_LIMIT. +OBSERVED_TORQUE_LIMIT = 5.7 +MOTOR_VOLTAGE = 16.0 +MOTOR_RESISTANCE = 0.186 +MOTOR_TORQUE_CONSTANT = 0.0954 +MOTOR_VISCOUS_DAMPING = 0 +MOTOR_SPEED_LIMIT = MOTOR_VOLTAGE / ( + MOTOR_VISCOUS_DAMPING + MOTOR_TORQUE_CONSTANT) +NUM_MOTORS = 8 + + +class MotorModel(object): + """The accurate motor model, which is based on the physics of DC motors. + + The motor model support two types of control: position control and torque + control. In position control mode, a desired motor angle is specified, and a + torque is computed based on the internal motor model. When the torque control + is specified, a pwm signal in the range of [-1.0, 1.0] is converted to the + torque. + + The internal motor model takes the following factors into consideration: + pd gains, viscous friction, back-EMF voltage and current-torque profile. + """ + + def __init__(self, torque_control_enabled=False, kp=1.2, kd=0): + self._torque_control_enabled = torque_control_enabled + self._kp = kp + self._kd = kd + self._resistance = MOTOR_RESISTANCE + self._voltage = MOTOR_VOLTAGE + self._torque_constant = MOTOR_TORQUE_CONSTANT + self._viscous_damping = MOTOR_VISCOUS_DAMPING + self._current_table = [0, 10, 20, 30, 40, 50, 60] + self._torque_table = [0, 1, 1.9, 2.45, 3.0, 3.25, 3.5] + self._strength_ratios = [1.0] * NUM_MOTORS + + def set_strength_ratios(self, ratios): + """Set the strength of each motors relative to the default value. + + Args: + ratios: The relative strength of motor output. A numpy array ranging from + 0.0 to 1.0. + """ + self._strength_ratios = np.array(ratios) + + def set_motor_gains(self, kp, kd): + """Set the gains of all motors. + + These gains are PD gains for motor positional control. kp is the + proportional gain and kd is the derivative gain. + + Args: + kp: proportional gain of the motors. + kd: derivative gain of the motors. + """ + self._kp = kp + self._kd = kd + + def set_voltage(self, voltage): + self._voltage = voltage + + def get_voltage(self): + return self._voltage + + def set_viscous_damping(self, viscous_damping): + self._viscous_damping = viscous_damping + + def get_viscous_dampling(self): + return self._viscous_damping + + def convert_to_torque(self, + motor_commands, + motor_angle, + motor_velocity, + true_motor_velocity, + kp=None, + kd=None): + """Convert the commands (position control or torque control) to torque. + + Args: + motor_commands: The desired motor angle if the motor is in position + control mode. The pwm signal if the motor is in torque control mode. + motor_angle: The motor angle observed at the current time step. It is + actually the true motor angle observed a few milliseconds ago (pd + latency). + motor_velocity: The motor velocity observed at the current time step, it + is actually the true motor velocity a few milliseconds ago (pd latency). + true_motor_velocity: The true motor velocity. The true velocity is used + to compute back EMF voltage and viscous damping. + kp: Proportional gains for the motors' PD controllers. If not provided, it + uses the default kp of the minitaur for all the motors. + kd: Derivative gains for the motors' PD controllers. If not provided, it + uses the default kp of the minitaur for all the motors. + + Returns: + actual_torque: The torque that needs to be applied to the motor. + observed_torque: The torque observed by the sensor. + """ + if self._torque_control_enabled: + pwm = motor_commands + else: + if kp is None: + kp = np.full(NUM_MOTORS, self._kp) + if kd is None: + kd = np.full(NUM_MOTORS, self._kd) + pwm = -1 * kp * (motor_angle - motor_commands) - kd * motor_velocity + + pwm = np.clip(pwm, -1.0, 1.0) + return self._convert_to_torque_from_pwm(pwm, true_motor_velocity) + + def _convert_to_torque_from_pwm(self, pwm, true_motor_velocity): + """Convert the pwm signal to torque. + + Args: + pwm: The pulse width modulation. + true_motor_velocity: The true motor velocity at the current moment. It is + used to compute the back EMF voltage and the viscous damping. + Returns: + actual_torque: The torque that needs to be applied to the motor. + observed_torque: The torque observed by the sensor. + """ + observed_torque = np.clip( + self._torque_constant * + (np.asarray(pwm) * self._voltage / self._resistance), + -OBSERVED_TORQUE_LIMIT, OBSERVED_TORQUE_LIMIT) + + # Net voltage is clipped at 50V by diodes on the motor controller. + voltage_net = np.clip( + np.asarray(pwm) * self._voltage - + (self._torque_constant + self._viscous_damping) * + np.asarray(true_motor_velocity), -VOLTAGE_CLIPPING, VOLTAGE_CLIPPING) + current = voltage_net / self._resistance + current_sign = np.sign(current) + current_magnitude = np.absolute(current) + # Saturate torque based on empirical current relation. + actual_torque = np.interp(current_magnitude, self._current_table, + self._torque_table) + actual_torque = np.multiply(current_sign, actual_torque) + actual_torque = np.multiply(self._strength_ratios, actual_torque) + return actual_torque, observed_torque diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/simple_ppo_agent.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/simple_ppo_agent.py new file mode 100644 index 000000000..e3c4b4ed3 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/simple_ppo_agent.py @@ -0,0 +1,101 @@ +"""An agent that can restore and run a policy learned by PPO.""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + + +import tensorflow as tf +from pybullet_envs.agents.ppo import normalize +from pybullet_envs.agents import utility + + +class SimplePPOPolicy(object): + """A simple PPO policy that is independent to the PPO infrastructure. + + This class restores the policy network from a tensorflow checkpoint that was + learned from PPO training. The purpose of this class is to conveniently + visualize a learned policy or deploy the learned policy on real robots without + need to change the PPO evaluation infrastructure: + https://cs.corp.google.com/piper///depot/google3/robotics/reinforcement_learning/agents/scripts/visualize.py. + """ + + def __init__(self, sess, env, network, policy_layers, value_layers, + checkpoint): + self.env = env + self.sess = sess + observation_size = len(env.observation_space.low) + action_size = len(env.action_space.low) + self.observation_placeholder = tf.placeholder( + tf.float32, [None, observation_size], name="Input") + self._observ_filter = normalize.StreamingNormalize( + self.observation_placeholder[0], + center=True, + scale=True, + clip=5, + name="normalize_observ") + self._restore_policy( + network, + policy_layers=policy_layers, + value_layers=value_layers, + action_size=action_size, + checkpoint=checkpoint) + + def _restore_policy(self, network, policy_layers, value_layers, action_size, + checkpoint): + """Restore the PPO policy from a TensorFlow checkpoint. + + Args: + network: The neural network definition. + policy_layers: A tuple specify the number of layers and number of neurons + of each layer for the policy network. + value_layers: A tuple specify the number of layers and number of neurons + of each layer for the value network. + action_size: The dimension of the action space. + checkpoint: The checkpoint path. + """ + observ = self._observ_filter.transform(self.observation_placeholder) + with tf.variable_scope("network/rnn"): + self.network = network( + policy_layers=policy_layers, + value_layers=value_layers, + action_size=action_size) + + with tf.variable_scope("temporary"): + self.last_state = tf.Variable( + self.network.zero_state(1, tf.float32), False) + self.sess.run(self.last_state.initializer) + + with tf.variable_scope("network"): + (mean_action, _, _), new_state = tf.nn.dynamic_rnn( + self.network, + observ[:, None], + tf.ones(1), + self.last_state, + tf.float32, + swap_memory=True) + self.mean_action = mean_action + self.update_state = self.last_state.assign(new_state) + + saver = utility.define_saver(exclude=(r"temporary/.*",)) + saver.restore(self.sess, checkpoint) + + def get_action(self, observation): + normalized_observation = self._normalize_observ(observation) + normalized_action, _ = self.sess.run( + [self.mean_action, self.update_state], + feed_dict={self.observation_placeholder: normalized_observation}) + action = self._denormalize_action(normalized_action) + return action[:, 0] + + def _denormalize_action(self, action): + min_ = self.env.action_space.low + max_ = self.env.action_space.high + action = (action + 1) / 2 * (max_ - min_) + min_ + return action + + def _normalize_observ(self, observ): + min_ = self.env.observation_space.low + max_ = self.env.observation_space.high + observ = 2 * (observ - min_) / (max_ - min_) - 1 + return observ diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/simple_ppo_agent_example.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/simple_ppo_agent_example.py new file mode 100644 index 000000000..0d6f6f807 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/simple_ppo_agent_example.py @@ -0,0 +1,69 @@ +r"""An example to use simple_ppo_agent. + +A galloping example: +blaze run -c opt \ +//robotics/reinforcement_learning/minitaur/agents:simple_ppo_agent_example -- \ +--logdir=/cns/ij-d/home/jietan/experiment/minitaur_vizier_study_ppo/\ +minreact_nonexp_nr_01_186515603_186518344/15/ \ +--checkpoint=model.ckpt-14000000 + +A trotting example: +blaze run -c opt \ +//robotics/reinforcement_learning/minitaur/agents:simple_ppo_agent_example -- \ +--logdir=/cns/ij-d/home/jietan/experiment/minitaur_vizier_study_ppo/\ +mintrot_nonexp_rd_01_186515603_186518344/24/ \ +--checkpoint=model.ckpt-14000000 + +""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import os +import time + +import tensorflow as tf +from pybullet_envs.agents import utility +from pybullet_envs.minitaur.agents import simple_ppo_agent + +flags = tf.app.flags +FLAGS = tf.app.flags.FLAGS +flags.DEFINE_string("logdir", None, + "The directory that contains checkpoint and config.") +flags.DEFINE_string("checkpoint", None, "The checkpoint file path.") +flags.DEFINE_string("log_path", None, "The output path to write log.") + + +def main(argv): + del argv # Unused. + config = utility.load_config(FLAGS.logdir) + policy_layers = config.policy_layers + value_layers = config.value_layers + env = config.env(render=True, log_path=FLAGS.log_path, env_randomizer=None) + network = config.network + + with tf.Session() as sess: + agent = simple_ppo_agent.SimplePPOPolicy( + sess, + env, + network, + policy_layers=policy_layers, + value_layers=value_layers, + checkpoint=os.path.join(FLAGS.logdir, FLAGS.checkpoint)) + + sum_reward = 0 + observation = env.reset() + while True: + action = agent.get_action([observation]) + observation, reward, done, _ = env.step(action[0]) + # This sleep is to prevent serial communication error on the real robot. + time.sleep(0.002) + sum_reward += reward + if done: + break + tf.logging.info("reward: {}".format(sum_reward)) + + +if __name__ == "__main__": + tf.app.run(main) diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/timestamp.proto b/examples/pybullet/gym/pybullet_envs/minitaur/envs/timestamp.proto new file mode 100644 index 000000000..b67072deb --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/timestamp.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; + +package google.protobuf; + +message Timestamp { + + // Represents seconds of UTC time since Unix epoch + // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + // 9999-12-31T23:59:59Z inclusive. + int64 seconds = 1; + + // Non-negative fractions of a second at nanosecond resolution. Negative + // second values with fractions must still have non-negative nanos values + // that count forward in time. Must be from 0 to 999,999,999 + // inclusive. + int32 nanos = 2; +} + diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/timestamp_pb2.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/timestamp_pb2.py new file mode 100644 index 000000000..25e3a230d --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/timestamp_pb2.py @@ -0,0 +1,76 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: timestamp.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='timestamp.proto', + package='google.protobuf', + syntax='proto3', + serialized_pb=_b('\n\x0ftimestamp.proto\x12\x0fgoogle.protobuf\"+\n\tTimestamp\x12\x0f\n\x07seconds\x18\x01 \x01(\x03\x12\r\n\x05nanos\x18\x02 \x01(\x05\x62\x06proto3') +) + + + + +_TIMESTAMP = _descriptor.Descriptor( + name='Timestamp', + full_name='google.protobuf.Timestamp', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='seconds', full_name='google.protobuf.Timestamp.seconds', index=0, + number=1, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='nanos', full_name='google.protobuf.Timestamp.nanos', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=36, + serialized_end=79, +) + +DESCRIPTOR.message_types_by_name['Timestamp'] = _TIMESTAMP +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +Timestamp = _reflection.GeneratedProtocolMessageType('Timestamp', (_message.Message,), dict( + DESCRIPTOR = _TIMESTAMP, + __module__ = 'timestamp_pb2' + # @@protoc_insertion_point(class_scope:google.protobuf.Timestamp) + )) +_sym_db.RegisterMessage(Timestamp) + + +# @@protoc_insertion_point(module_scope) diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/vector.proto b/examples/pybullet/gym/pybullet_envs/minitaur/envs/vector.proto new file mode 100644 index 000000000..c12fa3bba --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/vector.proto @@ -0,0 +1,56 @@ +syntax = "proto3"; + +package robotics.messages; + +// A four-dimensional double precision vector. +message Vector4d { + double x = 1; + double y = 2; + double z = 3; + double w = 4; +} + +// A four-dimensional single precision vector. +message Vector4f { + float x = 1; + float y = 2; + float z = 3; + float w = 4; +} + +// A three-dimensional double precision vector. +message Vector3d { + double x = 1; + double y = 2; + double z = 3; +} + +// A three-dimensional single precision vector. +message Vector3f { + float x = 1; + float y = 2; + float z = 3; +} + +// A two-dimensional double precision vector. +message Vector2d { + double x = 1; + double y = 2; +} + +// A two-dimensional single precision vector. +message Vector2f { + float x = 1; + float y = 2; +} + +// Double precision vector of arbitrary size. +message Vectord { + repeated double data = 1 [packed = true]; +} + +// Single precision vector of arbitrary size. +message Vectorf { + repeated float data = 1 [packed = true]; +} + diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/vector_pb2.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/vector_pb2.py new file mode 100644 index 000000000..67bacb9cd --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/vector_pb2.py @@ -0,0 +1,430 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: vector.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='vector.proto', + package='robotics.messages', + syntax='proto3', + serialized_pb=_b('\n\x0cvector.proto\x12\x11robotics.messages\"6\n\x08Vector4d\x12\t\n\x01x\x18\x01 \x01(\x01\x12\t\n\x01y\x18\x02 \x01(\x01\x12\t\n\x01z\x18\x03 \x01(\x01\x12\t\n\x01w\x18\x04 \x01(\x01\"6\n\x08Vector4f\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\x12\t\n\x01w\x18\x04 \x01(\x02\"+\n\x08Vector3d\x12\t\n\x01x\x18\x01 \x01(\x01\x12\t\n\x01y\x18\x02 \x01(\x01\x12\t\n\x01z\x18\x03 \x01(\x01\"+\n\x08Vector3f\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\" \n\x08Vector2d\x12\t\n\x01x\x18\x01 \x01(\x01\x12\t\n\x01y\x18\x02 \x01(\x01\" \n\x08Vector2f\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\"\x1b\n\x07Vectord\x12\x10\n\x04\x64\x61ta\x18\x01 \x03(\x01\x42\x02\x10\x01\"\x1b\n\x07Vectorf\x12\x10\n\x04\x64\x61ta\x18\x01 \x03(\x02\x42\x02\x10\x01\x62\x06proto3') +) + + + + +_VECTOR4D = _descriptor.Descriptor( + name='Vector4d', + full_name='robotics.messages.Vector4d', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='x', full_name='robotics.messages.Vector4d.x', index=0, + number=1, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='y', full_name='robotics.messages.Vector4d.y', index=1, + number=2, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='z', full_name='robotics.messages.Vector4d.z', index=2, + number=3, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='w', full_name='robotics.messages.Vector4d.w', index=3, + number=4, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=35, + serialized_end=89, +) + + +_VECTOR4F = _descriptor.Descriptor( + name='Vector4f', + full_name='robotics.messages.Vector4f', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='x', full_name='robotics.messages.Vector4f.x', index=0, + number=1, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='y', full_name='robotics.messages.Vector4f.y', index=1, + number=2, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='z', full_name='robotics.messages.Vector4f.z', index=2, + number=3, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='w', full_name='robotics.messages.Vector4f.w', index=3, + number=4, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=91, + serialized_end=145, +) + + +_VECTOR3D = _descriptor.Descriptor( + name='Vector3d', + full_name='robotics.messages.Vector3d', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='x', full_name='robotics.messages.Vector3d.x', index=0, + number=1, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='y', full_name='robotics.messages.Vector3d.y', index=1, + number=2, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='z', full_name='robotics.messages.Vector3d.z', index=2, + number=3, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=147, + serialized_end=190, +) + + +_VECTOR3F = _descriptor.Descriptor( + name='Vector3f', + full_name='robotics.messages.Vector3f', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='x', full_name='robotics.messages.Vector3f.x', index=0, + number=1, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='y', full_name='robotics.messages.Vector3f.y', index=1, + number=2, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='z', full_name='robotics.messages.Vector3f.z', index=2, + number=3, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=192, + serialized_end=235, +) + + +_VECTOR2D = _descriptor.Descriptor( + name='Vector2d', + full_name='robotics.messages.Vector2d', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='x', full_name='robotics.messages.Vector2d.x', index=0, + number=1, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='y', full_name='robotics.messages.Vector2d.y', index=1, + number=2, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=237, + serialized_end=269, +) + + +_VECTOR2F = _descriptor.Descriptor( + name='Vector2f', + full_name='robotics.messages.Vector2f', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='x', full_name='robotics.messages.Vector2f.x', index=0, + number=1, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='y', full_name='robotics.messages.Vector2f.y', index=1, + number=2, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=271, + serialized_end=303, +) + + +_VECTORD = _descriptor.Descriptor( + name='Vectord', + full_name='robotics.messages.Vectord', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='data', full_name='robotics.messages.Vectord.data', index=0, + number=1, type=1, cpp_type=5, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\020\001')), file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=305, + serialized_end=332, +) + + +_VECTORF = _descriptor.Descriptor( + name='Vectorf', + full_name='robotics.messages.Vectorf', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='data', full_name='robotics.messages.Vectorf.data', index=0, + number=1, type=2, cpp_type=6, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\020\001')), file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=334, + serialized_end=361, +) + +DESCRIPTOR.message_types_by_name['Vector4d'] = _VECTOR4D +DESCRIPTOR.message_types_by_name['Vector4f'] = _VECTOR4F +DESCRIPTOR.message_types_by_name['Vector3d'] = _VECTOR3D +DESCRIPTOR.message_types_by_name['Vector3f'] = _VECTOR3F +DESCRIPTOR.message_types_by_name['Vector2d'] = _VECTOR2D +DESCRIPTOR.message_types_by_name['Vector2f'] = _VECTOR2F +DESCRIPTOR.message_types_by_name['Vectord'] = _VECTORD +DESCRIPTOR.message_types_by_name['Vectorf'] = _VECTORF +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +Vector4d = _reflection.GeneratedProtocolMessageType('Vector4d', (_message.Message,), dict( + DESCRIPTOR = _VECTOR4D, + __module__ = 'vector_pb2' + # @@protoc_insertion_point(class_scope:robotics.messages.Vector4d) + )) +_sym_db.RegisterMessage(Vector4d) + +Vector4f = _reflection.GeneratedProtocolMessageType('Vector4f', (_message.Message,), dict( + DESCRIPTOR = _VECTOR4F, + __module__ = 'vector_pb2' + # @@protoc_insertion_point(class_scope:robotics.messages.Vector4f) + )) +_sym_db.RegisterMessage(Vector4f) + +Vector3d = _reflection.GeneratedProtocolMessageType('Vector3d', (_message.Message,), dict( + DESCRIPTOR = _VECTOR3D, + __module__ = 'vector_pb2' + # @@protoc_insertion_point(class_scope:robotics.messages.Vector3d) + )) +_sym_db.RegisterMessage(Vector3d) + +Vector3f = _reflection.GeneratedProtocolMessageType('Vector3f', (_message.Message,), dict( + DESCRIPTOR = _VECTOR3F, + __module__ = 'vector_pb2' + # @@protoc_insertion_point(class_scope:robotics.messages.Vector3f) + )) +_sym_db.RegisterMessage(Vector3f) + +Vector2d = _reflection.GeneratedProtocolMessageType('Vector2d', (_message.Message,), dict( + DESCRIPTOR = _VECTOR2D, + __module__ = 'vector_pb2' + # @@protoc_insertion_point(class_scope:robotics.messages.Vector2d) + )) +_sym_db.RegisterMessage(Vector2d) + +Vector2f = _reflection.GeneratedProtocolMessageType('Vector2f', (_message.Message,), dict( + DESCRIPTOR = _VECTOR2F, + __module__ = 'vector_pb2' + # @@protoc_insertion_point(class_scope:robotics.messages.Vector2f) + )) +_sym_db.RegisterMessage(Vector2f) + +Vectord = _reflection.GeneratedProtocolMessageType('Vectord', (_message.Message,), dict( + DESCRIPTOR = _VECTORD, + __module__ = 'vector_pb2' + # @@protoc_insertion_point(class_scope:robotics.messages.Vectord) + )) +_sym_db.RegisterMessage(Vectord) + +Vectorf = _reflection.GeneratedProtocolMessageType('Vectorf', (_message.Message,), dict( + DESCRIPTOR = _VECTORF, + __module__ = 'vector_pb2' + # @@protoc_insertion_point(class_scope:robotics.messages.Vectorf) + )) +_sym_db.RegisterMessage(Vectorf) + + +_VECTORD.fields_by_name['data'].has_options = True +_VECTORD.fields_by_name['data']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\020\001')) +_VECTORF.fields_by_name['data'].has_options = True +_VECTORF.fields_by_name['data']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\020\001')) +# @@protoc_insertion_point(module_scope) From 507d024f255347cfbf9b8f13a3ffa01f578a0d2b Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Sun, 1 Apr 2018 15:55:32 -0700 Subject: [PATCH 18/68] add example of a free moving sphere controlled by external torque add some toy shape sorter cube (not finished yet) --- data/mjcf/sphere.xml | 11 + data/toys/cube.mtl | 11 + data/toys/cube.obj | 64 +++ data/toys/cylinder.mtl | 11 + data/toys/cylinder.obj | 282 ++++++++++++ data/toys/prism.mtl | 11 + data/toys/prism.obj | 45 ++ data/toys/shape_sorter.mtl | 21 + data/toys/shape_sorter.obj | 400 ++++++++++++++++++ .../externalTorqueControlledSphere.py | 61 +++ 10 files changed, 917 insertions(+) create mode 100644 data/mjcf/sphere.xml create mode 100644 data/toys/cube.mtl create mode 100644 data/toys/cube.obj create mode 100644 data/toys/cylinder.mtl create mode 100644 data/toys/cylinder.obj create mode 100644 data/toys/prism.mtl create mode 100644 data/toys/prism.obj create mode 100644 data/toys/shape_sorter.mtl create mode 100644 data/toys/shape_sorter.obj create mode 100644 examples/pybullet/examples/externalTorqueControlledSphere.py diff --git a/data/mjcf/sphere.xml b/data/mjcf/sphere.xml new file mode 100644 index 000000000..6563fa1d4 --- /dev/null +++ b/data/mjcf/sphere.xml @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/data/toys/cube.mtl b/data/toys/cube.mtl new file mode 100644 index 000000000..c221299b1 --- /dev/null +++ b/data/toys/cube.mtl @@ -0,0 +1,11 @@ +# Blender MTL File: 'shape_sort.blend' +# Material Count: 1 + +newmtl Material.002 +Ns 96.078431 +Ka 0.000000 0.000000 0.000000 +Kd 0.017444 0.640000 0.032216 +Ks 0.034126 0.500000 0.031333 +Ni 1.000000 +d 1.000000 +illum 2 diff --git a/data/toys/cube.obj b/data/toys/cube.obj new file mode 100644 index 000000000..c2849fe05 --- /dev/null +++ b/data/toys/cube.obj @@ -0,0 +1,64 @@ +# Blender v2.71 (sub 0) OBJ File: 'shape_sort.blend' +# www.blender.org +mtllib cube.mtl +o Cube.001_Cube.002 +v -0.231854 0.040516 -0.056463 +v -0.231854 0.040516 -0.121937 +v -0.144556 0.040516 -0.121937 +v -0.144556 0.040516 -0.056463 +v -0.231854 0.127815 -0.056463 +v -0.231854 0.127815 -0.121937 +v -0.144556 0.127815 -0.121937 +v -0.144556 0.127815 -0.056463 +v -0.231854 0.040516 -0.056463 +v -0.231854 0.040516 -0.121937 +v -0.144556 0.040516 -0.121937 +v -0.144556 0.040516 -0.056463 +v -0.231854 0.127815 -0.056463 +v -0.231854 0.127815 -0.121937 +v -0.144556 0.127815 -0.121937 +v -0.144556 0.127815 -0.056463 +vt 1.044600 0.042083 +vt 1.044600 -0.957917 +vt 0.044600 -0.957917 +vt 1.905897 0.042083 +vt 1.905897 -0.957917 +vt 0.905898 -0.957917 +vt -0.955400 0.042083 +vt -0.955400 -0.957917 +vt -0.094102 0.042083 +vt -0.094102 -0.957917 +vt 0.905898 1.044600 +vt 1.905897 1.044600 +vt 1.905897 0.044600 +vt -0.094102 1.044600 +vt -0.094102 0.044600 +vt 0.044600 0.042083 +vt 0.905898 0.042083 +vt 0.905898 0.044600 +usemtl Material.002 +s off +f 6/1 2/2 1/3 +f 7/4 3/5 2/6 +f 8/7 4/8 3/3 +f 5/9 1/10 4/6 +f 2/11 3/12 4/13 +f 7/11 6/14 5/15 +f 14/1 10/2 9/3 +f 15/4 11/5 10/6 +f 16/7 12/8 11/3 +f 13/9 9/10 12/6 +f 10/11 11/12 12/13 +f 15/11 14/14 13/15 +f 5/16 6/1 1/3 +f 6/17 7/4 2/6 +f 7/16 8/7 3/3 +f 8/17 5/9 4/6 +f 1/18 2/11 4/13 +f 8/18 7/11 5/15 +f 13/16 14/1 9/3 +f 14/17 15/4 10/6 +f 15/16 16/7 11/3 +f 16/17 13/9 12/6 +f 9/18 10/11 12/13 +f 16/18 15/11 13/15 diff --git a/data/toys/cylinder.mtl b/data/toys/cylinder.mtl new file mode 100644 index 000000000..3efd48560 --- /dev/null +++ b/data/toys/cylinder.mtl @@ -0,0 +1,11 @@ +# Blender MTL File: 'shape_sort.blend' +# Material Count: 1 + +newmtl Material.001 +Ns 96.078431 +Ka 0.000000 0.000000 0.000000 +Kd 0.013473 0.018536 0.640000 +Ks 0.500000 0.500000 0.500000 +Ni 1.000000 +d 1.000000 +illum 2 diff --git a/data/toys/cylinder.obj b/data/toys/cylinder.obj new file mode 100644 index 000000000..b2abf963d --- /dev/null +++ b/data/toys/cylinder.obj @@ -0,0 +1,282 @@ +# Blender v2.71 (sub 0) OBJ File: 'shape_sort.blend' +# www.blender.org +mtllib cylinder.mtl +o Cylinder.001 +v -0.291246 0.045696 0.165546 +v -0.214241 0.045696 0.165546 +v -0.291246 0.034429 0.166100 +v -0.214241 0.034429 0.166100 +v -0.291246 0.023595 0.167744 +v -0.214241 0.023595 0.167744 +v -0.291246 0.013610 0.170412 +v -0.214241 0.013610 0.170412 +v -0.291246 0.004859 0.174003 +v -0.214241 0.004858 0.174003 +v -0.291246 -0.002324 0.178379 +v -0.214241 -0.002324 0.178379 +v -0.291246 -0.007661 0.183372 +v -0.214241 -0.007661 0.183372 +v -0.291246 -0.010947 0.188789 +v -0.214241 -0.010947 0.188789 +v -0.291246 -0.012057 0.194422 +v -0.214241 -0.012057 0.194422 +v -0.291246 -0.010947 0.200056 +v -0.214241 -0.010947 0.200056 +v -0.291246 -0.007661 0.205473 +v -0.214241 -0.007661 0.205473 +v -0.291246 -0.002324 0.210465 +v -0.214241 -0.002324 0.210465 +v -0.291246 0.004859 0.214841 +v -0.214241 0.004858 0.214841 +v -0.291246 0.013610 0.218432 +v -0.214241 0.013610 0.218432 +v -0.291246 0.023595 0.221101 +v -0.214241 0.023595 0.221101 +v -0.291246 0.034429 0.222744 +v -0.214241 0.034429 0.222744 +v -0.291246 0.045696 0.223299 +v -0.214241 0.045696 0.223299 +v -0.291246 0.056963 0.222744 +v -0.214241 0.056963 0.222744 +v -0.291246 0.067797 0.221101 +v -0.214241 0.067797 0.221101 +v -0.291246 0.077782 0.218432 +v -0.214241 0.077782 0.218432 +v -0.291246 0.086534 0.214841 +v -0.214241 0.086534 0.214841 +v -0.291246 0.093716 0.210465 +v -0.214241 0.093716 0.210465 +v -0.291246 0.099053 0.205473 +v -0.214241 0.099053 0.205473 +v -0.291246 0.102340 0.200056 +v -0.214241 0.102340 0.200056 +v -0.291246 0.103449 0.194422 +v -0.214241 0.103449 0.194422 +v -0.291246 0.102340 0.188789 +v -0.214241 0.102340 0.188789 +v -0.291246 0.099053 0.183371 +v -0.214241 0.099053 0.183371 +v -0.291246 0.093716 0.178379 +v -0.214241 0.093716 0.178379 +v -0.291246 0.086534 0.174003 +v -0.214241 0.086534 0.174003 +v -0.291246 0.077782 0.170412 +v -0.214241 0.077782 0.170412 +v -0.291246 0.067797 0.167744 +v -0.214241 0.067797 0.167744 +v -0.291246 0.056963 0.166100 +v -0.214241 0.056963 0.166100 +vt 0.306049 0.488177 +vt 0.092448 0.519423 +vt 0.067655 0.516411 +vt 0.270128 0.485165 +vt 0.049219 0.513369 +vt 0.232794 0.482123 +vt 0.034123 0.510414 +vt 0.020864 0.507658 +vt 0.163092 0.476412 +vt 0.008587 0.505209 +vt 0.133302 0.473963 +vt 1.008587 0.505209 +vt 0.996728 0.503160 +vt 1.106812 0.471914 +vt 0.984865 0.501590 +vt 1.082707 0.470344 +vt 0.972628 0.500559 +vt 0.959652 0.500107 +vt 1.036012 0.468861 +vt 0.945535 0.500252 +vt 1.008811 0.469006 +vt 0.929810 0.500987 +vt 0.972352 0.469741 +vt 0.911918 0.502285 +vt 0.913273 0.471038 +vt 0.891203 0.504095 +vt 0.866959 0.506348 +vt 0.698338 0.475102 +vt 0.838607 0.508958 +vt 0.630535 0.477711 +vt 0.806049 0.511823 +vt 0.592448 0.480577 +vt 0.770128 0.514835 +vt 0.732794 0.517877 +vt 0.549219 0.486631 +vt 0.696491 0.520833 +vt 0.534123 0.489586 +vt 0.663092 0.523588 +vt 0.520864 0.492342 +vt 0.633302 0.526037 +vt 0.508586 0.494791 +vt 0.606812 0.528086 +vt 0.496728 0.496840 +vt 0.582707 0.529656 +vt 0.559695 0.530687 +vt 0.472628 0.499441 +vt 0.536012 0.531139 +vt 0.459652 0.499893 +vt 0.508810 0.530994 +vt 0.445535 0.499748 +vt 0.472352 0.530259 +vt 0.413273 0.528962 +vt 0.411918 0.497715 +vt 0.310810 0.527152 +vt 0.391202 0.495905 +vt 0.198337 0.524898 +vt 1.020864 0.507658 +vt 1.034123 0.510414 +vt 0.130535 0.522289 +vt 0.366959 0.493652 +vt 1.391202 0.495905 +vt 0.196491 0.479167 +vt 1.133302 0.473963 +vt 1.059695 0.469313 +vt 0.810811 0.472848 +vt 0.567655 0.483589 +vt 0.484865 0.498410 +vt 0.429810 0.499013 +vt 1.092448 0.519423 +vt 1.067655 0.516411 +vt 1.198337 0.524898 +vt 1.413273 0.528962 +vt 1.310810 0.527152 +vt 1.472352 0.530259 +vt 1.130535 0.522289 +vt 1.049219 0.513369 +vt 0.338607 0.491042 +vt 1.270128 0.485165 +vt 1.306049 0.488177 +vt 1.196491 0.479167 +vt 1.232794 0.482123 +vt 1.163092 0.476412 +vt 1.366959 0.493652 +vt 1.338607 0.491042 +vt 1.429810 0.499013 +vt 1.411918 0.497715 +vt 1.445535 0.499748 +vt 1.459652 0.499893 +usemtl Material.001 +s off +f 1/1 2/2 4/3 +f 3/4 4/3 6/5 +f 5/6 6/5 8/7 +f 8/7 10/8 9/9 +f 10/8 12/10 11/11 +f 12/12 14/13 13/14 +f 14/13 16/15 15/16 +f 15/16 16/15 18/17 +f 18/17 20/18 19/19 +f 20/18 22/20 21/21 +f 22/20 24/22 23/23 +f 24/22 26/24 25/25 +f 25/25 26/24 28/26 +f 28/26 30/27 29/28 +f 30/27 32/29 31/30 +f 32/29 34/31 33/32 +f 33/32 34/31 36/33 +f 36/33 38/34 37/35 +f 38/34 40/36 39/37 +f 40/36 42/38 41/39 +f 42/38 44/40 43/41 +f 44/40 46/42 45/43 +f 45/43 46/42 48/44 +f 48/44 50/45 49/46 +f 50/45 52/47 51/48 +f 52/47 54/49 53/50 +f 53/50 54/49 56/51 +f 56/51 58/52 57/53 +f 58/52 60/54 59/55 +f 59/55 60/54 62/56 +f 26/24 10/57 8/58 +f 64/59 2/2 1/1 +f 61/60 62/56 64/59 +f 37/35 39/37 59/61 +f 3/4 1/1 4/3 +f 5/6 3/4 6/5 +f 7/62 5/6 8/7 +f 7/62 8/7 9/9 +f 9/9 10/8 11/11 +f 11/63 12/12 13/14 +f 13/14 14/13 15/16 +f 17/64 15/16 18/17 +f 17/64 18/17 19/19 +f 19/19 20/18 21/21 +f 21/21 22/20 23/23 +f 23/23 24/22 25/25 +f 27/65 25/25 28/26 +f 27/65 28/26 29/28 +f 29/28 30/27 31/30 +f 31/30 32/29 33/32 +f 35/66 33/32 36/33 +f 35/66 36/33 37/35 +f 37/35 38/34 39/37 +f 39/37 40/36 41/39 +f 41/39 42/38 43/41 +f 43/41 44/40 45/43 +f 47/67 45/43 48/44 +f 47/67 48/44 49/46 +f 49/46 50/45 51/48 +f 51/48 52/47 53/50 +f 55/68 53/50 56/51 +f 55/68 56/51 57/53 +f 57/53 58/52 59/55 +f 61/60 59/55 62/56 +f 2/69 34/31 4/70 +f 38/34 36/33 62/71 +f 58/72 40/36 60/73 +f 54/49 44/40 56/74 +f 50/45 48/44 52/47 +f 46/42 54/49 48/44 +f 14/13 22/20 20/18 +f 12/12 10/57 24/22 +f 2/69 64/75 34/31 +f 30/27 6/76 32/29 +f 26/24 8/58 28/26 +f 63/77 61/60 64/59 +f 64/75 36/33 34/31 +f 14/13 20/18 16/15 +f 44/40 42/38 56/74 +f 40/36 38/34 60/73 +f 38/34 62/71 60/73 +f 10/57 26/24 24/22 +f 48/44 54/49 52/47 +f 34/31 32/29 4/70 +f 8/58 6/76 28/26 +f 54/49 46/42 44/40 +f 20/18 18/17 16/15 +f 42/38 58/72 56/74 +f 63/77 64/59 1/1 +f 32/29 6/76 4/70 +f 12/12 24/22 14/13 +f 58/72 42/38 40/36 +f 36/33 64/75 62/71 +f 24/22 22/20 14/13 +f 6/76 30/27 28/26 +f 3/78 31/30 1/79 +f 7/80 29/28 5/81 +f 11/63 23/23 9/82 +f 15/16 21/21 13/14 +f 15/16 17/64 19/19 +f 61/83 63/84 35/66 +f 27/65 7/80 25/25 +f 41/39 55/85 57/86 +f 35/66 63/84 33/32 +f 53/87 55/85 43/41 +f 43/41 55/85 41/39 +f 47/67 53/87 45/43 +f 47/67 49/46 51/88 +f 59/61 39/37 57/86 +f 29/28 31/30 5/81 +f 7/80 27/65 29/28 +f 45/43 53/87 43/41 +f 47/67 51/88 53/87 +f 61/83 37/35 59/61 +f 31/30 3/78 5/81 +f 15/16 19/19 21/21 +f 21/21 23/23 13/14 +f 39/37 41/39 57/86 +f 7/80 9/82 25/25 +f 1/79 31/30 33/32 +f 23/23 11/63 13/14 +f 9/82 23/23 25/25 +f 37/35 61/83 35/66 +f 63/84 1/79 33/32 diff --git a/data/toys/prism.mtl b/data/toys/prism.mtl new file mode 100644 index 000000000..ed3e8a1ae --- /dev/null +++ b/data/toys/prism.mtl @@ -0,0 +1,11 @@ +# Blender MTL File: 'shape_sort.blend' +# Material Count: 1 + +newmtl Material.003 +Ns 96.078431 +Ka 0.000000 0.000000 0.000000 +Kd 0.640000 0.007339 0.006282 +Ks 0.500000 0.500000 0.500000 +Ni 1.000000 +d 1.000000 +illum 2 diff --git a/data/toys/prism.obj b/data/toys/prism.obj new file mode 100644 index 000000000..b8b0d6f0f --- /dev/null +++ b/data/toys/prism.obj @@ -0,0 +1,45 @@ +# Blender v2.71 (sub 0) OBJ File: 'shape_sort.blend' +# www.blender.org +mtllib prism.mtl +o Cube.002_Cube.005 +v -0.233641 -0.103557 0.060897 +v -0.233641 -0.103557 -0.057063 +v -0.149383 -0.103557 -0.057063 +v -0.149383 -0.103557 0.060897 +v -0.233013 -0.039217 0.035115 +v -0.233013 -0.039217 -0.031280 +v -0.150011 -0.039217 -0.031280 +v -0.150011 -0.039217 0.035115 +vt 0.780473 0.523151 +vt 0.999041 -0.022288 +vt -0.000959 -0.022288 +vt 1.896793 0.523151 +vt 1.904244 -0.022288 +vt 0.904244 -0.022288 +vt 0.217610 0.523151 +vt -0.088305 0.523151 +vt -0.095756 -0.022288 +vt 0.904244 1.999041 +vt 1.904244 1.999041 +vt 1.904244 0.999041 +vt 0.896793 0.780473 +vt -0.088305 0.780473 +vt -0.088305 0.217610 +vt 0.911695 0.523151 +vt 0.896793 0.523151 +vt 0.904244 0.999041 +vt 0.896793 0.217610 +usemtl Material.003 +s off +f 6/1 2/2 1/3 +f 7/4 3/5 2/6 +f 8/7 4/3 3/2 +f 5/8 1/9 4/6 +f 2/10 3/11 4/12 +f 7/13 6/14 5/15 +f 5/7 6/1 1/3 +f 6/16 7/4 2/6 +f 7/1 8/7 3/2 +f 8/17 5/8 4/6 +f 1/18 2/10 4/12 +f 8/19 7/13 5/15 diff --git a/data/toys/shape_sorter.mtl b/data/toys/shape_sorter.mtl new file mode 100644 index 000000000..4e5935766 --- /dev/null +++ b/data/toys/shape_sorter.mtl @@ -0,0 +1,21 @@ +# Blender MTL File: 'shape_sort.blend' +# Material Count: 2 + +newmtl Material.004 +Ns 96.078431 +Ka 0.000000 0.000000 0.000000 +Kd 0.640000 0.640000 0.640000 +Ks 0.500000 0.500000 0.500000 +Ni 1.000000 +d 1.000000 +illum 2 +map_Kd E:\develop\bullet3\data\table\table.png + +newmtl Material.004_NONE +Ns 96.078431 +Ka 0.000000 0.000000 0.000000 +Kd 0.640000 0.640000 0.640000 +Ks 0.500000 0.500000 0.500000 +Ni 1.000000 +d 1.000000 +illum 2 diff --git a/data/toys/shape_sorter.obj b/data/toys/shape_sorter.obj new file mode 100644 index 000000000..a8b6dfd84 --- /dev/null +++ b/data/toys/shape_sorter.obj @@ -0,0 +1,400 @@ +# Blender v2.71 (sub 0) OBJ File: 'shape_sort.blend' +# www.blender.org +mtllib shape_sorter.mtl +o Cube +v -0.200000 0.200000 -0.200000 +v -0.200000 -0.200000 -0.200000 +v -0.200000 0.037707 -0.055248 +v -0.200000 0.037707 -0.124929 +v -0.200000 0.130615 -0.124929 +v -0.200000 0.130615 -0.055248 +v -0.200000 -0.200000 0.200000 +v -0.200000 0.014752 0.076444 +v -0.200000 -0.109627 0.071917 +v -0.200000 -0.109627 -0.068083 +v -0.200000 -0.033266 -0.037483 +v -0.200000 -0.033266 0.041318 +v -0.200000 0.015905 0.070592 +v -0.200000 0.019320 0.064964 +v -0.200000 0.024864 0.059777 +v -0.200000 0.032326 0.055231 +v -0.200000 0.041418 0.051500 +v -0.200000 0.051791 0.048728 +v -0.200000 0.063047 0.047021 +v -0.200000 0.074753 0.046444 +v -0.200000 0.086458 0.047021 +v -0.200000 0.097713 0.048728 +v -0.200000 0.108087 0.051500 +v -0.200000 0.117179 0.055231 +v -0.200000 0.124641 0.059777 +v -0.200000 0.130185 0.064964 +v -0.200000 0.133600 0.070592 +v -0.200000 0.200000 0.200000 +v 0.200000 0.200000 -0.200000 +v 0.200000 -0.200000 -0.200000 +v -0.179938 0.037707 -0.055248 +v -0.179938 0.037707 -0.124929 +v -0.179938 0.130615 -0.124929 +v -0.179938 0.130615 -0.055248 +v -0.179938 0.200000 0.179938 +v -0.179938 0.200000 -0.179938 +v 0.179938 0.200000 -0.179938 +v 0.200000 -0.200000 0.200000 +v -0.200000 0.134752 0.076444 +v -0.200000 0.133600 0.082297 +v -0.200000 0.130185 0.087925 +v -0.200000 0.124641 0.093111 +v -0.200000 0.117179 0.097657 +v -0.200000 0.108087 0.101388 +v -0.200000 0.097714 0.104161 +v -0.200000 0.086458 0.105868 +v -0.200000 0.074753 0.106444 +v -0.200000 0.063047 0.105868 +v -0.200000 0.051792 0.104161 +v -0.200000 0.041418 0.101388 +v -0.200000 0.032326 0.097657 +v -0.200000 0.024864 0.093111 +v -0.200000 0.019320 0.087925 +v -0.200000 0.015905 0.082297 +v -0.179938 0.014752 0.076444 +v -0.179938 0.015905 0.070592 +v -0.179938 0.019320 0.064964 +v -0.179938 0.024864 0.059777 +v -0.179938 0.032326 0.055231 +v -0.179938 0.041418 0.051500 +v -0.179938 0.051791 0.048728 +v -0.179938 0.063047 0.047021 +v -0.179938 0.074752 0.046444 +v -0.179938 0.086458 0.047021 +v -0.179938 0.097713 0.048728 +v -0.179938 0.108087 0.051500 +v -0.179938 0.117179 0.055231 +v -0.179938 0.124641 0.059777 +v -0.179938 0.130185 0.064964 +v -0.179938 0.133600 0.070592 +v 0.200000 0.200000 0.200000 +v -0.179938 -0.185168 -0.179938 +v 0.179938 0.200000 0.179938 +v -0.179938 -0.185168 0.179938 +v -0.179938 0.015905 0.082297 +v -0.179938 0.019320 0.087925 +v -0.179938 0.024864 0.093111 +v -0.179938 0.032326 0.097657 +v -0.179938 0.041418 0.101388 +v -0.179938 0.051791 0.104161 +v -0.179938 0.063047 0.105868 +v -0.179938 0.074753 0.106444 +v -0.179938 0.086458 0.105868 +v -0.179938 0.097714 0.104161 +v -0.179938 0.108087 0.101388 +v -0.179938 0.117179 0.097657 +v -0.179938 0.124641 0.093111 +v -0.179938 0.130185 0.087925 +v -0.179938 0.133600 0.082297 +v -0.179938 0.134752 0.076444 +v 0.179938 -0.185168 -0.179938 +v -0.179938 -0.109627 0.071917 +v -0.179938 -0.033266 0.041318 +v -0.179938 -0.033266 -0.037483 +v -0.179938 -0.109627 -0.068083 +v 0.179938 -0.185168 0.179938 +vt 0.337529 0.596545 +vt 0.387821 0.596545 +vt 0.283346 0.663317 +vt 0.379674 0.386434 +vt 0.283346 0.278382 +vt 0.572047 0.278383 +vt 0.387821 0.507137 +vt 0.461218 0.542787 +vt 0.461634 0.554051 +vt 0.372847 0.595850 +vt 0.372847 0.369934 +vt 0.391646 0.506894 +vt 0.343069 0.506894 +vt 0.337529 0.507137 +vt 0.343069 0.593253 +vt 0.391646 0.593253 +vt 0.304720 0.657748 +vt 0.378834 0.597878 +vt 0.542284 0.369934 +vt 0.572047 0.663317 +vt 0.504523 0.542787 +vt 0.504107 0.531523 +vt 0.482871 0.485047 +vt 0.483455 0.485557 +vt 0.479374 0.486628 +vt 0.478646 0.486156 +vt 0.475451 0.489802 +vt 0.474584 0.489442 +vt 0.471835 0.494956 +vt 0.467560 0.501959 +vt 0.470841 0.494778 +vt 0.468666 0.501892 +vt 0.466065 0.510343 +vt 0.462866 0.520691 +vt 0.464867 0.510708 +vt 0.461634 0.531522 +vt 0.464132 0.519985 +vt 0.462942 0.530448 +vt 0.462540 0.541328 +vt 0.462942 0.552208 +vt 0.462866 0.564883 +vt 0.464132 0.562671 +vt 0.466065 0.572313 +vt 0.467560 0.583615 +vt 0.464867 0.574866 +vt 0.468666 0.580764 +vt 0.471835 0.587700 +vt 0.474584 0.596132 +vt 0.470841 0.590796 +vt 0.475451 0.592854 +vt 0.479374 0.596028 +vt 0.542284 0.595850 +vt 0.304720 0.299726 +vt 0.555605 0.657748 +vt 0.504369 0.541328 +vt 0.503967 0.552209 +vt 0.378834 0.375736 +vt 0.383150 0.371876 +vt 0.555605 0.299726 +vt 0.478646 0.599418 +vt 0.483455 0.597099 +vt 0.482870 0.600527 +vt 0.487535 0.596028 +vt 0.487095 0.599418 +vt 0.491458 0.592854 +vt 0.491157 0.596132 +vt 0.495074 0.587700 +vt 0.494900 0.590796 +vt 0.498243 0.580764 +vt 0.498181 0.583615 +vt 0.500844 0.572313 +vt 0.502875 0.564883 +vt 0.500874 0.574866 +vt 0.502777 0.562671 +vt 0.504107 0.554052 +vt 0.503967 0.530448 +vt 0.502777 0.519985 +vt 0.502875 0.520691 +vt 0.500844 0.510343 +vt 0.500874 0.510708 +vt 0.498243 0.501892 +vt 0.498181 0.501959 +vt 0.495074 0.494956 +vt 0.494900 0.494778 +vt 0.491458 0.489802 +vt 0.491157 0.489442 +vt 0.487535 0.486628 +vt 0.487095 0.486156 +vt 0.534501 0.375736 +vt 0.534501 0.597878 +vt 0.478009 0.388189 +vt 0.400119 0.458779 +vt 0.457642 0.460616 +vt 0.480077 0.374691 +vt 0.459415 0.445604 +vt 0.404578 0.442049 +vt 0.000000 0.000000 +usemtl Material.004 +s off +f 5/1 6/2 1/3 +f 10/4 2/5 7/6 +f 3/7 20/8 21/9 +f 29/10 30/11 2/5 +f 3/7 31/12 32/13 +f 4/14 32/13 33/15 +f 34/16 6/2 5/1 +f 36/17 37/18 29/10 +f 31/12 3/7 6/2 +f 2/5 30/11 38/19 +f 28/20 47/21 48/22 +f 8/23 55/24 56/25 +f 13/26 56/25 57/27 +f 14/28 57/27 58/29 +f 16/30 15/31 58/29 +f 16/30 59/32 60/33 +f 18/34 17/35 60/33 +f 19/36 18/34 61/37 +f 20/8 19/36 62/38 +f 20/8 63/39 64/40 +f 22/41 21/9 64/40 +f 22/41 65/42 66/43 +f 24/44 23/45 66/43 +f 24/44 67/46 68/47 +f 26/48 25/49 68/47 +f 26/48 69/50 70/51 +f 71/52 38/19 30/11 +f 32/13 31/12 72/53 +f 71/52 29/10 37/18 +f 35/54 82/55 83/56 +f 36/17 72/53 91/57 +f 62/38 61/37 31/12 +f 95/58 74/59 72/53 +f 28/20 7/6 38/19 +f 27/60 70/51 90/61 +f 39/62 90/61 89/63 +f 40/64 89/63 88/65 +f 41/66 88/65 87/67 +f 42/68 87/67 86/69 +f 43/70 86/69 85/71 +f 45/72 44/73 85/71 +f 45/72 84/74 83/56 +f 46/75 83/56 82/55 +f 47/21 82/55 81/76 +f 48/22 81/76 80/77 +f 49/78 80/77 79/79 +f 50/80 79/79 78/81 +f 51/82 78/81 77/83 +f 52/84 77/83 76/85 +f 53/86 76/85 75/87 +f 54/88 75/87 55/24 +f 37/18 91/57 96/89 +f 73/90 96/89 74/59 +f 74/59 96/89 91/57 +f 2/5 3/7 4/14 +f 7/6 8/23 9/91 +f 1/3 2/5 4/14 +f 1/3 4/14 5/1 +f 10/4 11/92 3/7 +f 9/91 10/4 7/6 +f 10/4 3/7 2/5 +f 12/93 16/30 11/92 +f 28/20 1/3 6/2 +f 12/93 9/91 8/23 +f 27/60 28/20 6/2 +f 14/28 15/31 12/93 +f 12/93 8/23 13/26 +f 26/48 27/60 6/2 +f 12/93 13/26 14/28 +f 25/49 26/48 6/2 +f 1/3 29/10 2/5 +f 24/44 25/49 6/2 +f 3/7 16/30 17/35 +f 23/45 24/44 6/2 +f 3/7 17/35 18/34 +f 22/41 23/45 6/2 +f 3/7 18/34 19/36 +f 21/9 22/41 6/2 +f 16/30 3/7 11/92 +f 6/2 3/7 21/9 +f 12/93 15/31 16/30 +f 4/14 3/7 32/13 +f 3/7 19/36 20/8 +f 5/1 4/14 33/15 +f 33/15 34/16 5/1 +f 1/3 28/20 35/54 +f 34/16 31/12 6/2 +f 1/3 35/54 36/17 +f 36/17 29/10 1/3 +f 7/6 2/5 38/19 +f 28/20 27/60 39/62 +f 54/88 8/23 7/6 +f 28/20 39/62 40/64 +f 53/86 54/88 7/6 +f 28/20 40/64 41/66 +f 52/84 53/86 7/6 +f 28/20 41/66 42/68 +f 51/82 52/84 7/6 +f 28/20 42/68 43/70 +f 50/80 51/82 7/6 +f 28/20 43/70 44/73 +f 49/78 50/80 7/6 +f 44/73 45/72 28/20 +f 7/6 28/20 49/78 +f 28/20 45/72 46/75 +f 14/28 13/26 57/27 +f 13/26 8/23 56/25 +f 28/20 48/22 49/78 +f 28/20 46/75 47/21 +f 15/31 14/28 58/29 +f 59/32 16/30 58/29 +f 17/35 16/30 60/33 +f 61/37 18/34 60/33 +f 62/38 19/36 61/37 +f 63/39 20/8 62/38 +f 21/9 20/8 64/40 +f 65/42 22/41 64/40 +f 23/45 22/41 66/43 +f 67/46 24/44 66/43 +f 25/49 24/44 68/47 +f 69/50 26/48 68/47 +f 27/60 26/48 70/51 +f 29/10 71/52 30/11 +f 36/17 34/16 33/15 +f 35/54 28/20 71/52 +f 33/15 32/13 36/17 +f 74/59 55/24 75/87 +f 32/13 72/53 36/17 +f 73/90 35/54 71/52 +f 71/52 37/18 73/90 +f 36/17 35/54 34/16 +f 74/59 75/87 76/85 +f 31/12 63/39 62/38 +f 74/59 76/85 77/83 +f 35/54 90/61 34/16 +f 74/59 77/83 78/81 +f 88/65 89/63 35/54 +f 78/81 79/79 74/59 +f 87/67 88/65 35/54 +f 74/59 79/79 80/77 +f 86/69 87/67 35/54 +f 35/54 74/59 80/77 +f 85/71 86/69 35/54 +f 35/54 80/77 81/76 +f 84/74 85/71 35/54 +f 35/54 81/76 82/55 +f 83/56 84/74 35/54 +f 37/18 36/17 91/57 +f 35/54 89/63 90/61 +f 34/16 90/61 70/51 +f 92/94 93/95 55/24 +f 92/94 55/24 74/59 +f 34/16 70/51 69/50 +f 59/32 94/96 31/12 +f 34/16 69/50 68/47 +f 31/12 34/16 64/40 +f 34/16 68/47 67/46 +f 93/95 57/27 56/25 +f 34/16 67/46 66/43 +f 93/95 58/29 57/27 +f 34/16 66/43 65/42 +f 93/95 59/32 58/29 +f 34/16 65/42 64/40 +f 93/95 94/96 59/32 +f 63/39 31/12 64/40 +f 61/37 60/33 31/12 +f 93/95 56/25 55/24 +f 94/96 95/58 31/12 +f 60/33 59/32 31/12 +f 39/62 27/60 90/61 +f 95/58 92/94 74/59 +f 71/52 28/20 38/19 +f 95/58 72/53 31/12 +f 40/64 39/62 89/63 +f 41/66 40/64 88/65 +f 42/68 41/66 87/67 +f 43/70 42/68 86/69 +f 44/73 43/70 85/71 +f 84/74 45/72 85/71 +f 46/75 45/72 83/56 +f 47/21 46/75 82/55 +f 48/22 47/21 81/76 +f 49/78 48/22 80/77 +f 50/80 49/78 79/79 +f 51/82 50/80 78/81 +f 52/84 51/82 77/83 +f 53/86 52/84 76/85 +f 54/88 53/86 75/87 +f 8/23 54/88 55/24 +f 73/90 37/18 96/89 +f 35/54 73/90 74/59 +f 72/53 74/59 91/57 +usemtl Material.004_NONE +f 10/97 95/97 94/97 +f 93/97 12/97 11/97 +f 10/97 9/97 92/97 +f 92/97 9/97 12/97 +f 11/97 10/97 94/97 +f 94/97 93/97 11/97 +f 95/97 10/97 92/97 +f 93/97 92/97 12/97 diff --git a/examples/pybullet/examples/externalTorqueControlledSphere.py b/examples/pybullet/examples/externalTorqueControlledSphere.py new file mode 100644 index 000000000..1beddc7b7 --- /dev/null +++ b/examples/pybullet/examples/externalTorqueControlledSphere.py @@ -0,0 +1,61 @@ +import pybullet as p +import pybullet_data +import time + +p.connect(p.GUI) +p.setAdditionalSearchPath(pybullet_data.getDataPath()) +p.loadSDF("stadium.sdf") +p.setGravity(0,0,-10) +objects = p.loadMJCF("mjcf/sphere.xml") +sphere = objects[0] +p.resetBasePositionAndOrientation(sphere,[0,0,1],[0,0,0,1]) +p.changeDynamics(sphere,-1,linearDamping=0.9) +p.changeVisualShape(sphere,-1,rgbaColor=[1,0,0,1]) +forward = 0 +turn = 0 + + +forwardVec = [2,0,0] +cameraDistance = 1 +cameraYaw = 35 +cameraPitch = -35 + +while (1): + + spherePos, orn = p.getBasePositionAndOrientation(sphere) + + cameraTargetPosition = spherePos + p.resetDebugVisualizerCamera(cameraDistance,cameraYaw,cameraPitch,cameraTargetPosition) + camInfo = p.getDebugVisualizerCamera() + camForward = camInfo[5] + + + keys = p.getKeyboardEvents() + for k,v in keys.items(): + + if (k == p.B3G_RIGHT_ARROW and (v&p.KEY_WAS_TRIGGERED)): + turn = -0.5 + if (k == p.B3G_RIGHT_ARROW and (v&p.KEY_WAS_RELEASED)): + turn = 0 + if (k == p.B3G_LEFT_ARROW and (v&p.KEY_WAS_TRIGGERED)): + turn = 0.5 + if (k == p.B3G_LEFT_ARROW and (v&p.KEY_WAS_RELEASED)): + turn = 0 + + if (k == p.B3G_UP_ARROW and (v&p.KEY_WAS_TRIGGERED)): + forward=1 + if (k == p.B3G_UP_ARROW and (v&p.KEY_WAS_RELEASED)): + forward=0 + if (k == p.B3G_DOWN_ARROW and (v&p.KEY_WAS_TRIGGERED)): + forward=-1 + if (k == p.B3G_DOWN_ARROW and (v&p.KEY_WAS_RELEASED)): + forward=0 + + force = [forward*camForward[0],forward*camForward[1],0] + cameraYaw = cameraYaw+turn + + if (forward): + p.applyExternalForce(sphere,-1, force , spherePos, flags = p.WORLD_FRAME ) + + p.stepSimulation() + time.sleep(1./240.) \ No newline at end of file From 5ff2a1d6c8818201f9cd8119a5d45d59268ac62b Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Mon, 2 Apr 2018 22:31:22 -0700 Subject: [PATCH 19/68] Update env_bases.py --- examples/pybullet/gym/pybullet_envs/env_bases.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/pybullet/gym/pybullet_envs/env_bases.py b/examples/pybullet/gym/pybullet_envs/env_bases.py index c03f0e608..bfc2c2ccc 100644 --- a/examples/pybullet/gym/pybullet_envs/env_bases.py +++ b/examples/pybullet/gym/pybullet_envs/env_bases.py @@ -70,7 +70,7 @@ class MJCFBaseBulletEnv(gym.Env): self.potential = self.robot.calc_potential() return s - def _render(self, mode, close): + def _render(self, mode, close=False): if (mode=="human"): self.isRender = True if mode != "rgb_array": From 00affd62ac928de2e5a5e3fe84b17c67df47a90a Mon Sep 17 00:00:00 2001 From: Ju-Hyung Lee Date: Wed, 4 Apr 2018 12:31:52 +0900 Subject: [PATCH 20/68] Fix to support different kind of wheel axis --- .../Vehicle/btRaycastVehicle.cpp | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp b/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp index 47a0417d0..f299aa34e 100644 --- a/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp +++ b/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp @@ -121,12 +121,19 @@ void btRaycastVehicle::updateWheelTransform( int wheelIndex , bool interpolatedT btQuaternion rotatingOrn(right,-wheel.m_rotation); btMatrix3x3 rotatingMat(rotatingOrn); - btMatrix3x3 basis2( - right[0],fwd[0],up[0], - right[1],fwd[1],up[1], - right[2],fwd[2],up[2] - ); - + btMatrix3x3 basis2; + basis2[0][m_indexRightAxis] = -right[0]; + basis2[1][m_indexRightAxis] = -right[1]; + basis2[2][m_indexRightAxis] = -right[2]; + + basis2[0][m_indexUpAxis] = up[0]; + basis2[1][m_indexUpAxis] = up[1]; + basis2[2][m_indexUpAxis] = up[2]; + + basis2[0][m_indexForwardAxis] = fwd[0]; + basis2[1][m_indexForwardAxis] = fwd[1]; + basis2[2][m_indexForwardAxis] = fwd[2]; + wheel.m_worldTransform.setBasis(steeringMat * rotatingMat * basis2); wheel.m_worldTransform.setOrigin( wheel.m_raycastInfo.m_hardPointWS + wheel.m_raycastInfo.m_wheelDirectionWS * wheel.m_raycastInfo.m_suspensionLength @@ -567,7 +574,7 @@ void btRaycastVehicle::updateFriction(btScalar timeStep) const btTransform& wheelTrans = getWheelTransformWS( i ); btMatrix3x3 wheelBasis0 = wheelTrans.getBasis(); - m_axle[i] = btVector3( + m_axle[i] = -btVector3( wheelBasis0[0][m_indexRightAxis], wheelBasis0[1][m_indexRightAxis], wheelBasis0[2][m_indexRightAxis]); From 7c163f216372dbf3711ae00a2cca0737f2a7fa26 Mon Sep 17 00:00:00 2001 From: Igor Kalevatykh Date: Thu, 5 Apr 2018 00:14:08 +0200 Subject: [PATCH 21/68] Add VR/OpenVR support on Linux --- examples/SharedMemory/CMakeLists.txt | 78 ++++++++++++++++++- .../StandaloneMain/hellovr_opengl_main.cpp | 12 +-- .../openvr/samples/shared/strtools.cpp | 6 ++ 3 files changed, 90 insertions(+), 6 deletions(-) diff --git a/examples/SharedMemory/CMakeLists.txt b/examples/SharedMemory/CMakeLists.txt index 63f61ebaa..9df0054d6 100644 --- a/examples/SharedMemory/CMakeLists.txt +++ b/examples/SharedMemory/CMakeLists.txt @@ -214,7 +214,7 @@ IF (INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES) ENDIF(INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES) -#VR/OpenVR only on Windows and Mac OSX for now +#VR/OpenVR on Windows and Mac OSX IF (WIN32 OR APPLE) INCLUDE_DIRECTORIES( @@ -328,4 +328,80 @@ IF (INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES) SET_TARGET_PROPERTIES(App_PhysicsServer_SharedMemory_VR PROPERTIES RELWITHDEBINFO_POSTFIX "_RelWithDebugInfo") ENDIF(INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES) +#VR/OpenVR on Linux +ELSE(WIN32 OR APPLE) + IF(CMAKE_SIZEOF_VOID_P MATCHES 8) + LINK_DIRECTORIES(${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs/openvr/bin/linux64) + ELSE() + LINK_DIRECTORIES(${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs/openvr/bin/linux32) + ENDIF() + + ADD_EXECUTABLE(App_PhysicsServer_SharedMemory_VR + ${SharedMemory_SRCS} + ../StandaloneMain/hellovr_opengl_main.cpp + ../ExampleBrowser/OpenGLGuiHelper.cpp + ../ExampleBrowser/GL_ShapeDrawer.cpp + ../ExampleBrowser/CollisionShape2TriangleMesh.cpp + ../RenderingExamples/TinyVRGui.cpp + ../RenderingExamples/TinyVRGui.h + ../RenderingExamples/TimeSeriesCanvas.cpp + ../RenderingExamples/TimeSeriesFontData.cpp + ../MultiThreading/b3PosixThreadSupport.cpp + ../MultiThreading/b3PosixThreadSupport.h + ../ThirdPartyLibs/openvr/samples/shared/lodepng.cpp + ../ThirdPartyLibs/openvr/samples/shared/lodepng.h + ../ThirdPartyLibs/openvr/samples/shared/Matrices.cpp + ../ThirdPartyLibs/openvr/samples/shared/Matrices.h + ../ThirdPartyLibs/openvr/samples/shared/pathtools.cpp + ../ThirdPartyLibs/openvr/samples/shared/pathtools.h + ../ThirdPartyLibs/openvr/samples/shared/strtools.cpp + ../ThirdPartyLibs/openvr/samples/shared/strtools.h + ../ThirdPartyLibs/openvr/samples/shared/Vectors.h + ) + + target_include_directories(App_PhysicsServer_SharedMemory_VR PRIVATE + ${BULLET_PHYSICS_SOURCE_DIR}/src + ${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs + ${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs/Glew + ${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs/openvr/headers + ${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs/openvr/samples + ${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs/openvr/samples/shared + ) + + target_compile_definitions(App_PhysicsServer_SharedMemory_VR PRIVATE + POSIX + LINUX + BT_ENABLE_VR + GLEW_STATIC + GLEW_INIT_OPENGL11_FUNCTIONS=1 + GLEW_DYNAMIC_LOAD_ALL_GLX_FUNCTIONS=1 + ) + + target_compile_options(App_PhysicsServer_SharedMemory_VR PRIVATE + -std=c++11 + ) + + target_link_libraries(App_PhysicsServer_SharedMemory_VR PRIVATE + openvr_api + pthread + ${DL} + ${OPENGL_gl_LIBRARY} + ${OPENGL_glu_LIBRARY} + Bullet3Common + BulletWorldImporter + BulletInverseDynamicsUtils + BulletInverseDynamics + BulletDynamics + BulletCollision + LinearMath + BussIK + OpenGLWindow + ) + + IF (INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES) + SET_TARGET_PROPERTIES(App_PhysicsServer_SharedMemory_VR PROPERTIES DEBUG_POSTFIX "_Debug") + SET_TARGET_PROPERTIES(App_PhysicsServer_SharedMemory_VR PROPERTIES MINSIZEREL_POSTFIX "_MinsizeRel") + SET_TARGET_PROPERTIES(App_PhysicsServer_SharedMemory_VR PROPERTIES RELWITHDEBINFO_POSTFIX "_RelWithDebugInfo") + ENDIF(INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES) + ENDIF(WIN32 OR APPLE) diff --git a/examples/StandaloneMain/hellovr_opengl_main.cpp b/examples/StandaloneMain/hellovr_opengl_main.cpp index 0b444fe73..c3edbcdf8 100644 --- a/examples/StandaloneMain/hellovr_opengl_main.cpp +++ b/examples/StandaloneMain/hellovr_opengl_main.cpp @@ -59,6 +59,9 @@ static vr::VRControllerState_t sPrevStates[vr::k_unMaxTrackedDeviceCount] = { 0 #ifdef _WIN32 #include #endif +#ifdef __linux__ +#define APIENTRY +#endif void ThreadSleep( unsigned long nMilliseconds ) { @@ -1804,13 +1807,11 @@ void CMainApplication::RenderStereoTargets() } glBindFramebuffer( GL_FRAMEBUFFER, leftEyeDesc.m_nRenderFramebufferId ); - glViewport(0, 0, m_nRenderWidth, m_nRenderHeight ); - - m_app->m_window->startRendering(); - + glViewport(0, 0, m_nRenderWidth, m_nRenderHeight ); + RenderScene( vr::Eye_Left ); @@ -1863,9 +1864,9 @@ void CMainApplication::RenderStereoTargets() } glBindFramebuffer( GL_FRAMEBUFFER, rightEyeDesc.m_nRenderFramebufferId ); - glViewport(0, 0, m_nRenderWidth, m_nRenderHeight ); m_app->m_window->startRendering(); + glViewport(0, 0, m_nRenderWidth, m_nRenderHeight ); RenderScene( vr::Eye_Right ); @@ -2081,6 +2082,7 @@ void CMainApplication::UpdateHMDMatrixPose() case vr::TrackedDeviceClass_HMD: m_rDevClassChar[nDevice] = 'H'; break; case vr::TrackedDeviceClass_Invalid: m_rDevClassChar[nDevice] = 'I'; break; case vr::TrackedDeviceClass_TrackingReference: m_rDevClassChar[nDevice] = 'T'; break; + case vr::TrackedDeviceClass_GenericTracker: m_rDevClassChar[nDevice] = 'G'; break; default: m_rDevClassChar[nDevice] = '?'; break; } } diff --git a/examples/ThirdPartyLibs/openvr/samples/shared/strtools.cpp b/examples/ThirdPartyLibs/openvr/samples/shared/strtools.cpp index 6166db483..d47519224 100644 --- a/examples/ThirdPartyLibs/openvr/samples/shared/strtools.cpp +++ b/examples/ThirdPartyLibs/openvr/samples/shared/strtools.cpp @@ -4,6 +4,12 @@ #include #include +#ifdef __linux__ +#define stricmp strcasecmp +#define strnicmp strncasecmp +#endif + + //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- From 380e59be6a0f03b781d866c9f29f654498903737 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Wed, 4 Apr 2018 16:34:28 -0700 Subject: [PATCH 22/68] explicit cast from double to float in TinyRendererVisualShapeConverter plugin --- .../tinyRendererPlugin/TinyRendererVisualShapeConverter.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/SharedMemory/plugins/tinyRendererPlugin/TinyRendererVisualShapeConverter.cpp b/examples/SharedMemory/plugins/tinyRendererPlugin/TinyRendererVisualShapeConverter.cpp index c399a2c65..90ddbb4d8 100644 --- a/examples/SharedMemory/plugins/tinyRendererPlugin/TinyRendererVisualShapeConverter.cpp +++ b/examples/SharedMemory/plugins/tinyRendererPlugin/TinyRendererVisualShapeConverter.cpp @@ -593,7 +593,7 @@ void TinyRendererVisualShapeConverter::convertVisualShapes( colorIndex &=3; btVector4 color; color = sColors[colorIndex]; - float rgbaColor[4] = {color[0],color[1],color[2],color[3]}; + float rgbaColor[4] = {(float)color[0],(float)color[1],(float)color[2],(float)color[3]}; //if (colObj->getCollisionShape()->getShapeType()==STATIC_PLANE_PROXYTYPE) //{ // color.setValue(1,1,1,1); @@ -773,7 +773,7 @@ void TinyRendererVisualShapeConverter::changeRGBAColor(int bodyUniqueId, int lin TinyRendererObjectArray** ptrptr = m_data->m_swRenderInstances.getAtIndex(i); if (ptrptr && *ptrptr) { - float rgba[4] = {rgbaColor[0], rgbaColor[1], rgbaColor[2], rgbaColor[3]}; + float rgba[4] = {(float)rgbaColor[0], (float)rgbaColor[1], (float)rgbaColor[2], (float)rgbaColor[3]}; TinyRendererObjectArray* visuals = *ptrptr; if ((bodyUniqueId == visuals->m_objectUniqueId) && (linkIndex == visuals->m_linkIndex)) { From 698836d54e8e1fce0bf966cde8b2a272d186d41f Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Sun, 8 Apr 2018 21:10:03 -0700 Subject: [PATCH 23/68] Preparation to add signed distance field collision detection. btMiniSDF is based on https://github.com/InteractiveComputerGraphics/Discregrid --- .../CollisionShape2TriangleMesh.cpp | 8 +- .../BroadphaseCollision/btBroadphaseProxy.h | 1 + .../btConvexConcaveCollisionAlgorithm.cpp | 79 ++- .../CollisionShapes/btMiniSDF.cpp | 521 ++++++++++++++++++ .../CollisionShapes/btMiniSDF.h | 134 +++++ .../CollisionShapes/btSdfCollisionShape.cpp | 99 ++++ .../CollisionShapes/btSdfCollisionShape.h | 30 + 7 files changed, 858 insertions(+), 14 deletions(-) create mode 100644 src/BulletCollision/CollisionShapes/btMiniSDF.cpp create mode 100644 src/BulletCollision/CollisionShapes/btMiniSDF.h create mode 100644 src/BulletCollision/CollisionShapes/btSdfCollisionShape.cpp create mode 100644 src/BulletCollision/CollisionShapes/btSdfCollisionShape.h diff --git a/examples/ExampleBrowser/CollisionShape2TriangleMesh.cpp b/examples/ExampleBrowser/CollisionShape2TriangleMesh.cpp index 868d25529..a4f4b9b3a 100644 --- a/examples/ExampleBrowser/CollisionShape2TriangleMesh.cpp +++ b/examples/ExampleBrowser/CollisionShape2TriangleMesh.cpp @@ -185,7 +185,13 @@ void CollisionShape2TriangleMesh(btCollisionShape* collisionShape, const btTrans } } else { - btAssert(0); + if (collisionShape->getShapeType()==SDF_SHAPE_PROXYTYPE) + { + //not yet + } else + { + btAssert(0); + } } } diff --git a/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h b/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h index adaf083a2..f6e1202a6 100644 --- a/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h +++ b/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h @@ -66,6 +66,7 @@ CONCAVE_SHAPES_START_HERE, EMPTY_SHAPE_PROXYTYPE, STATIC_PLANE_PROXYTYPE, CUSTOM_CONCAVE_SHAPE_TYPE, + SDF_SHAPE_PROXYTYPE=CUSTOM_CONCAVE_SHAPE_TYPE, CONCAVE_SHAPES_END_HERE, COMPOUND_SHAPE_PROXYTYPE, diff --git a/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp b/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp index 39ff7934d..d2331f5df 100644 --- a/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp +++ b/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp @@ -27,6 +27,7 @@ subject to the following restrictions: #include "LinearMath/btIDebugDraw.h" #include "BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h" #include "BulletCollision/CollisionDispatch/btCollisionObjectWrapper.h" +#include "BulletCollision/CollisionShapes/btSdfCollisionShape.h" btConvexConcaveCollisionAlgorithm::btConvexConcaveCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap,const btCollisionObjectWrapper* body1Wrap,bool isSwapped) : btActivatingCollisionAlgorithm(ci,body0Wrap,body1Wrap), @@ -202,26 +203,78 @@ void btConvexConcaveCollisionAlgorithm::processCollision (const btCollisionObjec if (triBodyWrap->getCollisionShape()->isConcave()) { - - - - const btConcaveShape* concaveShape = static_cast( triBodyWrap->getCollisionShape()); - - if (convexBodyWrap->getCollisionShape()->isConvex()) + if (triBodyWrap->getCollisionShape()->getShapeType()==SDF_SHAPE_PROXYTYPE) { - btScalar collisionMarginTriangle = concaveShape->getMargin(); + btSdfCollisionShape* sdfShape = (btSdfCollisionShape*)triBodyWrap->getCollisionShape(); + if (convexBodyWrap->getCollisionShape()->isConvex()) + { + + btConvexShape* convex = (btConvexShape*)convexBodyWrap->getCollisionShape(); + btAlignedObjectArray queryVertices; + + if (convex->isPolyhedral()) + { + btPolyhedralConvexShape* poly = (btPolyhedralConvexShape*) convex; + for (int v=0;vgetNumVertices();v++) + { + btVector3 vtx; + poly->getVertex(v,vtx); + queryVertices.push_back(vtx); + } + } + if (convex->getShapeType()==SPHERE_SHAPE_PROXYTYPE) + { + queryVertices.push_back(btVector3(0,0,0)); - resultOut->setPersistentManifold(m_btConvexTriangleCallback.m_manifoldPtr); - m_btConvexTriangleCallback.setTimeStepAndCounters(collisionMarginTriangle,dispatchInfo,convexBodyWrap,triBodyWrap,resultOut); + } + if (queryVertices.size()) + { + resultOut->setPersistentManifold(m_btConvexTriangleCallback.m_manifoldPtr); + //m_btConvexTriangleCallback.m_manifoldPtr->clearManifold(); - m_btConvexTriangleCallback.m_manifoldPtr->setBodies(convexBodyWrap->getCollisionObject(),triBodyWrap->getCollisionObject()); + btPolyhedralConvexShape* poly = (btPolyhedralConvexShape*) convex; + for (int v=0;vgetWorldTransform()*vtx; + btVector3 vtxInSdf = triBodyWrap->getWorldTransform().invXform(vtxWorldSpace); - concaveShape->processAllTriangles( &m_btConvexTriangleCallback,m_btConvexTriangleCallback.getAabbMin(),m_btConvexTriangleCallback.getAabbMax()); + btVector3 normalLocal; + btScalar dist; + if (sdfShape->queryPoint(vtxInSdf,dist, normalLocal)) + { + if (dist<=SIMD_EPSILON) + { + normalLocal.safeNormalize(); + btVector3 normal = triBodyWrap->getWorldTransform().getBasis()*normalLocal; + resultOut->addContactPoint(normal,vtxWorldSpace-normal*dist, dist); + } + } + } + resultOut->refreshContactPoints(); + } + + } + } else + { + const btConcaveShape* concaveShape = static_cast( triBodyWrap->getCollisionShape()); + + if (convexBodyWrap->getCollisionShape()->isConvex()) + { + btScalar collisionMarginTriangle = concaveShape->getMargin(); + + resultOut->setPersistentManifold(m_btConvexTriangleCallback.m_manifoldPtr); + m_btConvexTriangleCallback.setTimeStepAndCounters(collisionMarginTriangle,dispatchInfo,convexBodyWrap,triBodyWrap,resultOut); + + m_btConvexTriangleCallback.m_manifoldPtr->setBodies(convexBodyWrap->getCollisionObject(),triBodyWrap->getCollisionObject()); + + concaveShape->processAllTriangles( &m_btConvexTriangleCallback,m_btConvexTriangleCallback.getAabbMin(),m_btConvexTriangleCallback.getAabbMax()); - resultOut->refreshContactPoints(); + resultOut->refreshContactPoints(); - m_btConvexTriangleCallback.clearWrapperData(); + m_btConvexTriangleCallback.clearWrapperData(); + } } } diff --git a/src/BulletCollision/CollisionShapes/btMiniSDF.cpp b/src/BulletCollision/CollisionShapes/btMiniSDF.cpp new file mode 100644 index 000000000..f11daee12 --- /dev/null +++ b/src/BulletCollision/CollisionShapes/btMiniSDF.cpp @@ -0,0 +1,521 @@ +#include "btMiniSDF.h" + + +#include "LinearMath/btAlignedObjectArray.h" + + +struct btSdfDataStream +{ + const char* m_data; + int m_size; + + int m_currentOffset; + + btSdfDataStream(const char* data, int size) + :m_data(data), + m_size(size), + m_currentOffset(0) + { + + } + + template bool read(T& val) + { + int bytes = sizeof(T); + if (m_currentOffset+bytes<=m_size) + { + char* dest = (char*)&val; + memcpy(dest,&m_data[m_currentOffset],bytes); + m_currentOffset+=bytes; + return true; + } + btAssert(0); + return false; + } +}; + + +bool btMiniSDF::load(const char* data, int size) +{ + int fileSize = -1; + + btSdfDataStream ds(data,size); + { + double buf[6]; + ds.read(buf); + m_domain.m_min[0] = buf[0]; + m_domain.m_min[1] = buf[1]; + m_domain.m_min[2] = buf[2]; + m_domain.m_min[3] = 0; + m_domain.m_max[0] = buf[3]; + m_domain.m_max[1] = buf[4]; + m_domain.m_max[2] = buf[5]; + m_domain.m_max[3] = 0; + } + { + unsigned int buf2[3]; + ds.read(buf2); + m_resolution[0] = buf2[0]; + m_resolution[1] = buf2[1]; + m_resolution[2] = buf2[2]; + } + { + double buf[3]; + ds.read(buf); + m_cell_size[0] = buf[0]; + m_cell_size[1] = buf[1]; + m_cell_size[2] = buf[2]; + } + { + double buf[3]; + ds.read(buf); + m_inv_cell_size[0] = buf[0]; + m_inv_cell_size[1] = buf[1]; + m_inv_cell_size[2] = buf[2]; + } + { + unsigned long long int cells; + ds.read(cells); + m_n_cells = cells; + } + { + unsigned long long int fields; + ds.read(fields); + m_n_fields = fields; + } + + + unsigned long long int nodes0; + std::size_t n_nodes0; + ds.read(nodes0); + n_nodes0 = nodes0; + + m_nodes.resize(n_nodes0); + for (unsigned int i=0;i& nodes = m_nodes[i]; + nodes.resize(n_nodes1); + for ( int j=0;j& cells = m_cells[i]; + ds.read(n_cells1); + cells.resize(n_cells1); + for (int j=0;j& cell_maps = m_cell_map[i]; + ds.read(n_cell_maps1); + cell_maps.resize(n_cell_maps1); + for (int j=0;j().eval(); + unsigned int mi[3] = {(unsigned int )tmpmi[0],(unsigned int )tmpmi[1],(unsigned int )tmpmi[2]}; + if (mi[0] >= m_resolution[0]) + mi[0] = m_resolution[0]-1; + if (mi[1] >= m_resolution[1]) + mi[1] = m_resolution[1]-1; + if (mi[2] >= m_resolution[2]) + mi[2] = m_resolution[2]-1; + btMultiIndex mui; + mui.ijk[0] = mi[0]; + mui.ijk[1] = mi[1]; + mui.ijk[2] = mi[2]; + int i = multiToSingleIndex(mui); + unsigned int i_ = m_cell_map[field_id][i]; + if (i_ == UINT_MAX) + return false; + + btAlignedBox3d sd = subdomain(i); + i = i_; + btVector3 d = sd.m_max-sd.m_min;//.diagonal().eval(); + + btVector3 denom = (sd.max() - sd.min()); + btVector3 c0 = btVector3(2.0,2.0,2.0)/denom; + btVector3 c1 = (sd.max() + sd.min())/denom; + btVector3 xi = (c0*x - c1); + + btCell32 const& cell = m_cells[field_id][i]; + if (!gradient) + { + //auto phi = m_coefficients[field_id][i].dot(shape_function_(xi, nullptr)); + double phi = 0.0; + btShapeMatrix N = shape_function_(xi, nullptr); + for (unsigned int j = 0u; j < 32u; ++j) + { + unsigned int v = cell.m_cells[j]; + double c = m_nodes[field_id][v]; + if (c == DBL_MAX) + { + return false;; + } + phi += c * N[j]; + } + + dist = phi; + return true; + } + + btShapeGradients dN; + btShapeMatrix N = shape_function_(xi, &dN); + + double phi = 0.0; + gradient->setZero(); + for (unsigned int j = 0u; j < 32u; ++j) + { + unsigned int v = cell.m_cells[j]; + double c = m_nodes[field_id][v]; + if (c == DBL_MAX) + { + gradient->setZero(); + return false; + } + phi += c * N[j]; + (*gradient)[0] += c * dN(j, 0); + (*gradient)[1] += c * dN(j, 1); + (*gradient)[2] += c * dN(j, 2); + } + (*gradient) *= c0; + dist = phi; + return true; +} + diff --git a/src/BulletCollision/CollisionShapes/btMiniSDF.h b/src/BulletCollision/CollisionShapes/btMiniSDF.h new file mode 100644 index 000000000..221b3494e --- /dev/null +++ b/src/BulletCollision/CollisionShapes/btMiniSDF.h @@ -0,0 +1,134 @@ +#ifndef MINISDF_H +#define MINISDF_H + +#include "LinearMath/btVector3.h" +#include "LinearMath/btAabbUtil2.h" +#include "Linearmath/btAlignedObjectArray.h" + + +struct btMultiIndex +{ + unsigned int ijk[3]; +}; + +struct btAlignedBox3d +{ + btVector3 m_min; + btVector3 m_max; + + const btVector3& min() const + { + return m_min; + } + + const btVector3& max() const + { + return m_max; + } + + + bool contains(const btVector3& x) const + { + return TestPointAgainstAabb2(m_min, m_max, x); + } + + btAlignedBox3d(const btVector3& mn, const btVector3& mx) + :m_min(mn), + m_max(mx) + { + } + + btAlignedBox3d() + { + } +}; + +struct btShapeMatrix +{ + double m_vec[32]; + + inline double& operator[](int i) + { + return m_vec[i]; + } + + inline const double& operator[](int i) const + { + return m_vec[i]; + } + +}; + +struct btShapeGradients +{ + btVector3 m_vec[32]; + + void topRowsDivide(int row, double denom) + { + for (int i=0;i > m_nodes; + btAlignedObjectArray > m_cells; + btAlignedObjectArray > m_cell_map; + + btMiniSDF() + :m_isValid(false) + { + } + bool load(const char* data, int size); + bool isValid() const + { + return m_isValid; + } + unsigned int multiToSingleIndex(btMultiIndex const & ijk) const; + + btAlignedBox3d subdomain(btMultiIndex const& ijk) const; + + btMultiIndex singleToMultiIndex(unsigned int l) const; + + btAlignedBox3d subdomain(unsigned int l) const; + + + btShapeMatrix + shape_function_(btVector3 const& xi, btShapeGradients* gradient = 0) const; + + bool interpolate(unsigned int field_id, double& dist, btVector3 const& x, btVector3* gradient) const; +}; + + +#endif //MINISDF_H diff --git a/src/BulletCollision/CollisionShapes/btSdfCollisionShape.cpp b/src/BulletCollision/CollisionShapes/btSdfCollisionShape.cpp new file mode 100644 index 000000000..828acda47 --- /dev/null +++ b/src/BulletCollision/CollisionShapes/btSdfCollisionShape.cpp @@ -0,0 +1,99 @@ +#include "btSdfCollisionShape.h" +#include "btMiniSDF.h" +#include "LinearMath/btAabbUtil2.h" + +struct btSdfCollisionShapeInternalData +{ + btVector3 m_localScaling; + btScalar m_margin; + btMiniSDF m_sdf; + + btSdfCollisionShapeInternalData() + :m_localScaling(1,1,1), + m_margin(0) + { + + } +}; + +bool btSdfCollisionShape::initializeSDF(const char* sdfData, int sizeInBytes) +{ + bool valid = m_data->m_sdf.load(sdfData, sizeInBytes); + return valid; +} +btSdfCollisionShape::btSdfCollisionShape() +{ + m_shapeType = SDF_SHAPE_PROXYTYPE; + m_data = new btSdfCollisionShapeInternalData(); + + + + //"E:/develop/bullet3/data/toys/ground_hole64_64_8.cdf");//ground_cube.cdf"); + /*unsigned int field_id=0; + Eigen::Vector3d x (1,10,1); + Eigen::Vector3d gradient; + double dist = m_data->m_sdf.interpolate(field_id, x, &gradient); + printf("dist=%g\n", dist); + */ + +} +btSdfCollisionShape::~btSdfCollisionShape() +{ + delete m_data; +} + +void btSdfCollisionShape::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const +{ + btAssert(m_data->m_sdf.isValid()); + btVector3 localAabbMin = m_data->m_sdf.m_domain.m_min; + btVector3 localAabbMax = m_data->m_sdf.m_domain.m_max; + btScalar margin(0); + btTransformAabb(localAabbMin,localAabbMax,margin,t,aabbMin,aabbMax); + +} + + +void btSdfCollisionShape::setLocalScaling(const btVector3& scaling) +{ + m_data->m_localScaling = scaling; +} +const btVector3& btSdfCollisionShape::getLocalScaling() const +{ + return m_data->m_localScaling; +} +void btSdfCollisionShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const +{ + inertia.setValue(0,0,0); +} +const char* btSdfCollisionShape::getName()const +{ + return "btSdfCollisionShape"; +} +void btSdfCollisionShape::setMargin(btScalar margin) +{ + m_data->m_margin = margin; +} +btScalar btSdfCollisionShape::getMargin() const +{ + return m_data->m_margin; +} + +void btSdfCollisionShape::processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const +{ + //not yet +} + + +bool btSdfCollisionShape::queryPoint(const btVector3& ptInSDF, btScalar& distOut, btVector3& normal) +{ + int field = 0; + btVector3 grad; + double dist; + bool hasResult = m_data->m_sdf.interpolate(field,dist, ptInSDF,&grad); + if (hasResult) + { + normal.setValue(grad[0],grad[1],grad[2]); + distOut= dist; + } + return hasResult; +} diff --git a/src/BulletCollision/CollisionShapes/btSdfCollisionShape.h b/src/BulletCollision/CollisionShapes/btSdfCollisionShape.h new file mode 100644 index 000000000..6e32db9cd --- /dev/null +++ b/src/BulletCollision/CollisionShapes/btSdfCollisionShape.h @@ -0,0 +1,30 @@ +#ifndef BT_SDF_COLLISION_SHAPE_H +#define BT_SDF_COLLISION_SHAPE_H + +#include "btConcaveShape.h" + +class btSdfCollisionShape : public btConcaveShape +{ + struct btSdfCollisionShapeInternalData* m_data; + +public: + + btSdfCollisionShape(); + virtual ~btSdfCollisionShape(); + + bool initializeSDF(const char* sdfData, int sizeInBytes); + + virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; + virtual void setLocalScaling(const btVector3& scaling); + virtual const btVector3& getLocalScaling() const; + virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; + virtual const char* getName()const; + virtual void setMargin(btScalar margin); + virtual btScalar getMargin() const; + + virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const; + + bool queryPoint(const btVector3& ptInSDF, btScalar& distOut, btVector3& normal); +}; + +#endif //BT_SDF_COLLISION_SHAPE_H From 9ab03057eacb05f593339263fb2630a37443dd33 Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Sun, 8 Apr 2018 21:25:38 -0700 Subject: [PATCH 24/68] add btMiniSDF and btSdfCollisionShape to CMakeLists.txt --- src/BulletCollision/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/BulletCollision/CMakeLists.txt b/src/BulletCollision/CMakeLists.txt index 85c5fc8b6..f5d725562 100644 --- a/src/BulletCollision/CMakeLists.txt +++ b/src/BulletCollision/CMakeLists.txt @@ -56,12 +56,14 @@ SET(BulletCollision_SRCS CollisionShapes/btCylinderShape.cpp CollisionShapes/btEmptyShape.cpp CollisionShapes/btHeightfieldTerrainShape.cpp + CollisionShapes/btMiniSDF.cpp CollisionShapes/btMinkowskiSumShape.cpp CollisionShapes/btMultimaterialTriangleMeshShape.cpp CollisionShapes/btMultiSphereShape.cpp CollisionShapes/btOptimizedBvh.cpp CollisionShapes/btPolyhedralConvexShape.cpp CollisionShapes/btScaledBvhTriangleMeshShape.cpp + CollisionShapes/btSdfCollisionShape.cpp CollisionShapes/btShapeHull.cpp CollisionShapes/btSphereShape.cpp CollisionShapes/btStaticPlaneShape.cpp From 7949f31c3e2cb043d9d5012ee6ee70886e74d96a Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Sun, 8 Apr 2018 21:30:06 -0700 Subject: [PATCH 25/68] fixes in btMiniSDF --- src/BulletCollision/CollisionShapes/btMiniSDF.cpp | 2 +- src/BulletCollision/CollisionShapes/btMiniSDF.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/BulletCollision/CollisionShapes/btMiniSDF.cpp b/src/BulletCollision/CollisionShapes/btMiniSDF.cpp index f11daee12..968830062 100644 --- a/src/BulletCollision/CollisionShapes/btMiniSDF.cpp +++ b/src/BulletCollision/CollisionShapes/btMiniSDF.cpp @@ -2,7 +2,7 @@ #include "LinearMath/btAlignedObjectArray.h" - +#include //memcpy struct btSdfDataStream { diff --git a/src/BulletCollision/CollisionShapes/btMiniSDF.h b/src/BulletCollision/CollisionShapes/btMiniSDF.h index 221b3494e..51985d33b 100644 --- a/src/BulletCollision/CollisionShapes/btMiniSDF.h +++ b/src/BulletCollision/CollisionShapes/btMiniSDF.h @@ -79,7 +79,7 @@ struct btShapeGradients } } - inline double& operator()(int i, int j) + inline btScalar& operator()(int i, int j) { return m_vec[i][j]; } From 5747b1a6899f0aceb6e2a0a2e6bb6e4cb2ba7fa1 Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Mon, 9 Apr 2018 20:57:36 -0700 Subject: [PATCH 26/68] fix case sensitive header include --- src/BulletCollision/CollisionShapes/btMiniSDF.cpp | 2 +- src/BulletCollision/CollisionShapes/btMiniSDF.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/BulletCollision/CollisionShapes/btMiniSDF.cpp b/src/BulletCollision/CollisionShapes/btMiniSDF.cpp index 968830062..1326123e0 100644 --- a/src/BulletCollision/CollisionShapes/btMiniSDF.cpp +++ b/src/BulletCollision/CollisionShapes/btMiniSDF.cpp @@ -1,7 +1,7 @@ #include "btMiniSDF.h" -#include "LinearMath/btAlignedObjectArray.h" + #include //memcpy struct btSdfDataStream diff --git a/src/BulletCollision/CollisionShapes/btMiniSDF.h b/src/BulletCollision/CollisionShapes/btMiniSDF.h index 51985d33b..3de90e4f8 100644 --- a/src/BulletCollision/CollisionShapes/btMiniSDF.h +++ b/src/BulletCollision/CollisionShapes/btMiniSDF.h @@ -3,7 +3,7 @@ #include "LinearMath/btVector3.h" #include "LinearMath/btAabbUtil2.h" -#include "Linearmath/btAlignedObjectArray.h" +#include "LinearMath/btAlignedObjectArray.h" struct btMultiIndex From 103f16c64a5b963138f30778ca140abe51430ed5 Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Mon, 9 Apr 2018 20:59:16 -0700 Subject: [PATCH 27/68] UINT_MAX requires #include --- src/BulletCollision/CollisionShapes/btMiniSDF.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BulletCollision/CollisionShapes/btMiniSDF.cpp b/src/BulletCollision/CollisionShapes/btMiniSDF.cpp index 1326123e0..be82235ff 100644 --- a/src/BulletCollision/CollisionShapes/btMiniSDF.cpp +++ b/src/BulletCollision/CollisionShapes/btMiniSDF.cpp @@ -1,7 +1,7 @@ #include "btMiniSDF.h" - +#include #include //memcpy struct btSdfDataStream From 759d8b5317dcdaead5fd560506b4b8a0548aa1ff Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Mon, 9 Apr 2018 21:28:29 -0700 Subject: [PATCH 28/68] nullptr -> 0 (no C++11) --- src/BulletCollision/CollisionShapes/btMiniSDF.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/BulletCollision/CollisionShapes/btMiniSDF.cpp b/src/BulletCollision/CollisionShapes/btMiniSDF.cpp index be82235ff..e2d8b9147 100644 --- a/src/BulletCollision/CollisionShapes/btMiniSDF.cpp +++ b/src/BulletCollision/CollisionShapes/btMiniSDF.cpp @@ -477,9 +477,9 @@ bool btMiniSDF::interpolate(unsigned int field_id, double& dist, btVector3 const btCell32 const& cell = m_cells[field_id][i]; if (!gradient) { - //auto phi = m_coefficients[field_id][i].dot(shape_function_(xi, nullptr)); + //auto phi = m_coefficients[field_id][i].dot(shape_function_(xi, 0)); double phi = 0.0; - btShapeMatrix N = shape_function_(xi, nullptr); + btShapeMatrix N = shape_function_(xi, 0; for (unsigned int j = 0u; j < 32u; ++j) { unsigned int v = cell.m_cells[j]; From f37e22bfbabf2cb1d54f641acdb52d31fe6936c5 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Tue, 10 Apr 2018 15:29:31 -0700 Subject: [PATCH 29/68] fix syntax error --- src/BulletCollision/CollisionShapes/btMiniSDF.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BulletCollision/CollisionShapes/btMiniSDF.cpp b/src/BulletCollision/CollisionShapes/btMiniSDF.cpp index e2d8b9147..c57673381 100644 --- a/src/BulletCollision/CollisionShapes/btMiniSDF.cpp +++ b/src/BulletCollision/CollisionShapes/btMiniSDF.cpp @@ -479,7 +479,7 @@ bool btMiniSDF::interpolate(unsigned int field_id, double& dist, btVector3 const { //auto phi = m_coefficients[field_id][i].dot(shape_function_(xi, 0)); double phi = 0.0; - btShapeMatrix N = shape_function_(xi, 0; + btShapeMatrix N = shape_function_(xi, 0); for (unsigned int j = 0u; j < 32u; ++j) { unsigned int v = cell.m_cells[j]; From 0832d3fd22e3a25b9ccb9280418f9e29de0f6396 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Tue, 10 Apr 2018 17:21:14 -0700 Subject: [PATCH 30/68] disable velocity clamp (maxVelocity) in velocity control mode, remove some warnings --- .../PhysicsServerCommandProcessor.cpp | 43 ++++++++++--------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp index f1e1b057e..f40fb2fa5 100644 --- a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp +++ b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp @@ -482,10 +482,10 @@ struct CommandLogPlayback SharedMemoryCommand unused; #endif//BACKWARD_COMPAT bool result = false; - + size_t s = 0; if (m_file) { - size_t s = 0; + int commandType = -1; if (m_fileIs64bit) @@ -518,8 +518,8 @@ struct CommandLogPlayback #ifdef BACKWARD_COMPAT cmd->m_mjcfArguments = unused.m_mjcfArguments; #else - fread(&cmd->m_updateFlags,sizeof(int),1,m_file); - fread(&cmd->m_mjcfArguments,sizeof(MjcfArgs),1,m_file); + s=fread(&cmd->m_updateFlags,sizeof(int),1,m_file); + s = fread(&cmd->m_mjcfArguments,sizeof(MjcfArgs),1,m_file); #endif result=true; break; @@ -529,8 +529,8 @@ struct CommandLogPlayback #ifdef BACKWARD_COMPAT cmd->m_sdfRequestInfoArgs = unused.m_sdfRequestInfoArgs; #else - fread(&cmd->m_updateFlags,sizeof(int),1,m_file); - fread(&cmd->m_sdfRequestInfoArgs,sizeof(SdfRequestInfoArgs),1,m_file); + s = fread(&cmd->m_updateFlags,sizeof(int),1,m_file); + s = fread(&cmd->m_sdfRequestInfoArgs,sizeof(SdfRequestInfoArgs),1,m_file); #endif result=true; break; @@ -540,8 +540,8 @@ struct CommandLogPlayback #ifdef BACKWARD_COMPAT cmd->m_requestVisualShapeDataArguments = unused.m_requestVisualShapeDataArguments; #else - fread(&cmd->m_updateFlags,sizeof(int),1,m_file); - fread(&cmd->m_requestVisualShapeDataArguments,sizeof(RequestVisualShapeDataArgs),1,m_file); + s = fread(&cmd->m_updateFlags,sizeof(int),1,m_file); + s = fread(&cmd->m_requestVisualShapeDataArguments,sizeof(RequestVisualShapeDataArgs),1,m_file); #endif result=true; break; @@ -551,8 +551,8 @@ struct CommandLogPlayback #ifdef BACKWARD_COMPAT cmd->m_urdfArguments = unused.m_urdfArguments; #else - fread(&cmd->m_updateFlags,sizeof(int),1,m_file); - fread(&cmd->m_urdfArguments,sizeof(UrdfArgs),1,m_file); + s = fread(&cmd->m_updateFlags,sizeof(int),1,m_file); + s = fread(&cmd->m_urdfArguments,sizeof(UrdfArgs),1,m_file); #endif result=true; break; @@ -562,8 +562,8 @@ struct CommandLogPlayback #ifdef BACKWARD_COMPAT cmd->m_initPoseArgs = unused.m_initPoseArgs; #else - fread(&cmd->m_updateFlags,sizeof(int),1,m_file); - fread(&cmd->m_initPoseArgs,sizeof(InitPoseArgs),1,m_file); + s = fread(&cmd->m_updateFlags,sizeof(int),1,m_file); + s = fread(&cmd->m_initPoseArgs,sizeof(InitPoseArgs),1,m_file); #endif result=true; @@ -574,8 +574,8 @@ struct CommandLogPlayback #ifdef BACKWARD_COMPAT cmd->m_requestActualStateInformationCommandArgument = unused.m_requestActualStateInformationCommandArgument; #else - fread(&cmd->m_updateFlags,sizeof(int),1,m_file); - fread(&cmd->m_requestActualStateInformationCommandArgument,sizeof(RequestActualStateArgs),1,m_file); + s = fread(&cmd->m_updateFlags,sizeof(int),1,m_file); + s = fread(&cmd->m_requestActualStateInformationCommandArgument,sizeof(RequestActualStateArgs),1,m_file); #endif result=true; break; @@ -585,8 +585,8 @@ struct CommandLogPlayback #ifdef BACKWARD_COMPAT cmd->m_sendDesiredStateCommandArgument = unused.m_sendDesiredStateCommandArgument; #else - fread(&cmd->m_updateFlags,sizeof(int),1,m_file); - fread(&cmd->m_sendDesiredStateCommandArgument ,sizeof(SendDesiredStateArgs),1,m_file); + s = fread(&cmd->m_updateFlags,sizeof(int),1,m_file); + s = fread(&cmd->m_sendDesiredStateCommandArgument ,sizeof(SendDesiredStateArgs),1,m_file); #endif result = true; @@ -597,8 +597,8 @@ struct CommandLogPlayback #ifdef BACKWARD_COMPAT cmd->m_physSimParamArgs = unused.m_physSimParamArgs; #else - fread(&cmd->m_updateFlags,sizeof(int),1,m_file); - fread(&cmd->m_physSimParamArgs ,sizeof(b3PhysicsSimulationParameters),1,m_file); + s= s = fread(&cmd->m_updateFlags,sizeof(int),1,m_file); + s = fread(&cmd->m_physSimParamArgs ,sizeof(b3PhysicsSimulationParameters),1,m_file); #endif result = true; @@ -609,8 +609,8 @@ struct CommandLogPlayback #ifdef BACKWARD_COMPAT cmd->m_requestContactPointArguments = unused.m_requestContactPointArguments; #else - fread(&cmd->m_updateFlags,sizeof(int),1,m_file); - fread(&cmd->m_requestContactPointArguments ,sizeof(RequestContactDataArgs),1,m_file); + s = fread(&cmd->m_updateFlags,sizeof(int),1,m_file); + s = fread(&cmd->m_requestContactPointArguments ,sizeof(RequestContactDataArgs),1,m_file); #endif result = true; @@ -4794,6 +4794,9 @@ bool PhysicsServerCommandProcessor::processSendDesiredStateCommand(const struct } if (hasDesiredVelocity) { + //disable velocity clamp in velocity mode + motor->setRhsClamp(SIMD_INFINITY); + btScalar maxImp = 1000000.f*m_data->m_physicsDeltaTime; if ((clientCmd.m_sendDesiredStateCommandArgument.m_hasDesiredStateFlags[dofIndex]&SIM_DESIRED_STATE_HAS_MAX_FORCE)!=0) { From 7fa5e91cbde9f6d3c96074197f16b031622284dd Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Tue, 10 Apr 2018 19:55:26 -0700 Subject: [PATCH 31/68] replace green stadium with blue checkered Bullet plane add missing files to pybullet setup.pu --- examples/pybullet/gym/pybullet_data/plane100.urdf | 4 ++-- .../pybullet/gym/pybullet_envs/scene_stadium.py | 13 ++++++++----- setup.py | 2 ++ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/examples/pybullet/gym/pybullet_data/plane100.urdf b/examples/pybullet/gym/pybullet_data/plane100.urdf index f83006900..a6c827a1d 100644 --- a/examples/pybullet/gym/pybullet_data/plane100.urdf +++ b/examples/pybullet/gym/pybullet_data/plane100.urdf @@ -1,6 +1,6 @@ - - + + diff --git a/examples/pybullet/gym/pybullet_envs/scene_stadium.py b/examples/pybullet/gym/pybullet_envs/scene_stadium.py index d592e9116..2b30ec48b 100644 --- a/examples/pybullet/gym/pybullet_envs/scene_stadium.py +++ b/examples/pybullet/gym/pybullet_envs/scene_stadium.py @@ -24,15 +24,18 @@ class StadiumScene(Scene): # stadium_pose = cpp_household.Pose() # if self.zero_at_running_strip_start_line: # stadium_pose.set_xyz(27, 21, 0) # see RUN_STARTLINE, RUN_RAD constants - filename = os.path.join(pybullet_data.getDataPath(),"stadium_no_collision.sdf") - self.ground_plane_mjcf = p.loadSDF(filename) + filename = os.path.join(pybullet_data.getDataPath(),"plane_stadium.sdf") + self.ground_plane_mjcf=p.loadSDF(filename) + #filename = os.path.join(pybullet_data.getDataPath(),"stadium_no_collision.sdf") + #self.ground_plane_mjcf = p.loadSDF(filename) + # for i in self.ground_plane_mjcf: p.changeDynamics(i,-1,lateralFriction=0.8, restitution=0.5) - for j in range(p.getNumJoints(i)): - p.changeDynamics(i,j,lateralFriction=0) + # for j in range(p.getNumJoints(i)): + # p.changeDynamics(i,j,lateralFriction=0) #despite the name (stadium_no_collision), it DID have collision, so don't add duplicate ground - + class SinglePlayerStadiumScene(StadiumScene): "This scene created by environment, to work in a way as if there was no concept of scene visible to user." multiplayer = False diff --git a/setup.py b/setup.py index e31557fda..4f1419039 100644 --- a/setup.py +++ b/setup.py @@ -219,6 +219,8 @@ sources = ["examples/pybullet/pybullet.c"]\ +["src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp"]\ +["src/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp"]\ +["src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp"]\ ++["src/BulletCollision/CollisionShapes/btSdfCollisionShape.cpp"]\ ++["src/BulletCollision/CollisionShapes/btMiniSDF.cpp"]\ +["src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp"]\ +["src/BulletCollision/Gimpact/btContactProcessing.cpp"]\ +["src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp"]\ From 39edcf699c75f5ce557049c701d20ba0d2f60a4c Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Tue, 10 Apr 2018 22:59:53 -0700 Subject: [PATCH 32/68] bump up pybullet version, add missing sdf file --- .../gym/pybullet_data/plane_stadium.sdf | 44 +++++++++++++++++++ setup.py | 2 +- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 examples/pybullet/gym/pybullet_data/plane_stadium.sdf diff --git a/examples/pybullet/gym/pybullet_data/plane_stadium.sdf b/examples/pybullet/gym/pybullet_data/plane_stadium.sdf new file mode 100644 index 000000000..8d7152860 --- /dev/null +++ b/examples/pybullet/gym/pybullet_data/plane_stadium.sdf @@ -0,0 +1,44 @@ + + + 0 0 -9.8 + + 1 + 0 0 0 0 0 0 + + + 0 + + 0.166667 + 0 + 0 + 0.166667 + 0 + 0.166667 + + + + + + 0 0 1 + 100 100 + + + + + + + 1 1 1 + plane100.obj + + + + 1 1 1 1 + 1 1 1 1 + .5 .5 .5 1 + 0 0 0 0 + + + + + + diff --git a/setup.py b/setup.py index 4f1419039..1f3da854b 100644 --- a/setup.py +++ b/setup.py @@ -453,7 +453,7 @@ print("-----") setup( name = 'pybullet', - version='1.9.3', + version='1.9.4', description='Official Python Interface for the Bullet Physics SDK specialized for Robotics Simulation and Reinforcement Learning', long_description='pybullet is an easy to use Python module for physics simulation, robotics and deep reinforcement learning based on the Bullet Physics SDK. With pybullet you can load articulated bodies from URDF, SDF and other file formats. pybullet provides forward dynamics simulation, inverse dynamics computation, forward and inverse kinematics and collision detection and ray intersection queries. Aside from physics simulation, pybullet supports to rendering, with a CPU renderer and OpenGL visualization and support for virtual reality headsets.', url='https://github.com/bulletphysics/bullet3', From 6f90216dd09c50d73f0d6b98276f8d8d439a16b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Audren?= Date: Wed, 11 Apr 2018 16:58:58 +0900 Subject: [PATCH 33/68] Remove numpy dependency --- examples/pybullet/unittests/unittests.py | 10 ++++------ examples/pybullet/unittests/utils.py | 7 +++++++ 2 files changed, 11 insertions(+), 6 deletions(-) create mode 100644 examples/pybullet/unittests/utils.py diff --git a/examples/pybullet/unittests/unittests.py b/examples/pybullet/unittests/unittests.py index 295403393..469234998 100644 --- a/examples/pybullet/unittests/unittests.py +++ b/examples/pybullet/unittests/unittests.py @@ -2,6 +2,8 @@ import unittest import pybullet import time +from utils import allclose, dot + class TestPybulletMethods(unittest.TestCase): def test_import(self): @@ -63,10 +65,6 @@ class TestPybulletJacobian(unittest.TestCase): positionGains=[kp] * num_joints, velocityGains=[kv] * num_joints) def testJacobian(self): - try: - import numpy as np - except ImportError: - return import pybullet as p clid = p.connect(p.SHARED_MEMORY) @@ -109,8 +107,8 @@ class TestPybulletJacobian(unittest.TestCase): jac_t, jac_r = p.calculateJacobian(robotId, endEffectorIndex, com_trn, mpos, zero_vec, zero_vec) - assert(np.allclose(np.array(jac_t).dot(mvel), link_vt)) - assert(np.allclose(np.array(jac_r).dot(mvel), link_vr)) + assert(allclose(dot(jac_t, mvel), link_vt)) + assert(allclose(dot(jac_r, mvel), link_vr)) p.disconnect() if __name__ == '__main__': diff --git a/examples/pybullet/unittests/utils.py b/examples/pybullet/unittests/utils.py new file mode 100644 index 000000000..b3e5f68fe --- /dev/null +++ b/examples/pybullet/unittests/utils.py @@ -0,0 +1,7 @@ +def dot(A, b): + """Dot product between a 2D matrix and a 1D vector""" + return [sum([aij*bj for aij, bj in zip(ai, b)]) for ai in A] + +def allclose(a, b, tol=1e-7): + """Are all elements of a vector close to one another""" + return all([abs(ai - bi) < tol for ai, bi in zip(a,b)]) From ffc808784b6e140cff62ea22a6bde2c845fe6f19 Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Wed, 11 Apr 2018 01:03:36 -0700 Subject: [PATCH 34/68] PyBullet: add planar reflection example, See examples/pybullet/examples/addPlanarReflection.py --- data/plane_transparent.mtl | 2 +- data/plane_transparent.obj | 6 +- data/plane_transparent.urdf | 2 +- .../CommonInterfaces/CommonRenderInterface.h | 3 + examples/ExampleBrowser/OpenGLGuiHelper.cpp | 4 + .../OpenGLWindow/GLInstancingRenderer.cpp | 65 ++++++++++++++-- examples/OpenGLWindow/GLInstancingRenderer.h | 4 + examples/SharedMemory/SharedMemoryPublic.h | 1 + .../pybullet/examples/addPlanarReflection.py | 75 +++++++++++++++++++ .../pybullet/examples/createVisualShape.py | 6 +- examples/pybullet/pybullet.c | 2 + 11 files changed, 155 insertions(+), 15 deletions(-) create mode 100644 examples/pybullet/examples/addPlanarReflection.py diff --git a/data/plane_transparent.mtl b/data/plane_transparent.mtl index 6b700a066..8ce3f6b30 100644 --- a/data/plane_transparent.mtl +++ b/data/plane_transparent.mtl @@ -9,6 +9,6 @@ newmtl Material Kd 0.5880 0.5880 0.5880 Ks 0.0000 0.0000 0.0000 Ke 0.0000 0.0000 0.0000 - map_Kd tex4x4.png + map_Kd checker_blue.png diff --git a/data/plane_transparent.obj b/data/plane_transparent.obj index b1317066e..02e572bcc 100644 --- a/data/plane_transparent.obj +++ b/data/plane_transparent.obj @@ -7,9 +7,9 @@ v 15.000000 15.000000 0.000000 v -15.000000 15.000000 0.000000 v -15.000000 -15.000000 0.000000 -vt 1.000000 0.000000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 +vt 15.000000 0.000000 +vt 15.000000 15.000000 +vt 0.000000 15.000000 vt 0.000000 0.000000 usemtl Material diff --git a/data/plane_transparent.urdf b/data/plane_transparent.urdf index 1634fd4b7..15deeac4a 100644 --- a/data/plane_transparent.urdf +++ b/data/plane_transparent.urdf @@ -12,7 +12,7 @@ - + diff --git a/examples/CommonInterfaces/CommonRenderInterface.h b/examples/CommonInterfaces/CommonRenderInterface.h index a64fe7dde..4401f96e7 100644 --- a/examples/CommonInterfaces/CommonRenderInterface.h +++ b/examples/CommonInterfaces/CommonRenderInterface.h @@ -16,6 +16,7 @@ enum B3_CREATE_SHADOWMAP_RENDERMODE, B3_USE_SHADOWMAP_RENDERMODE, B3_USE_SHADOWMAP_RENDERMODE_REFLECTION, + B3_USE_SHADOWMAP_RENDERMODE_REFLECTION_PLANE, B3_USE_PROJECTIVE_TEXTURE_RENDERMODE, }; @@ -77,6 +78,8 @@ struct CommonRenderInterface virtual void replaceTexture(int shapeIndex, int textureIndex){}; virtual void removeTexture(int textureIndex) = 0; + virtual void setPlaneReflectionShapeIndex(int index) {} + virtual int getShapeIndexFromInstance(int srcIndex) {return -1;} virtual bool readSingleInstanceTransformToCPU(float* position, float* orientation, int srcIndex)=0; diff --git a/examples/ExampleBrowser/OpenGLGuiHelper.cpp b/examples/ExampleBrowser/OpenGLGuiHelper.cpp index 71970893a..b21aae329 100644 --- a/examples/ExampleBrowser/OpenGLGuiHelper.cpp +++ b/examples/ExampleBrowser/OpenGLGuiHelper.cpp @@ -1026,6 +1026,10 @@ void OpenGLGuiHelper::setVisualizerFlagCallback(VisualizerFlagCallback callback) void OpenGLGuiHelper::setVisualizerFlag(int flag, int enable) { + if (getRenderInterface() && flag==16)//COV_ENABLE_PLANAR_REFLECTION + { + getRenderInterface()->setPlaneReflectionShapeIndex(enable); + } if (m_data->m_visualizerFlagCallback) (m_data->m_visualizerFlagCallback)(flag,enable); } diff --git a/examples/OpenGLWindow/GLInstancingRenderer.cpp b/examples/OpenGLWindow/GLInstancingRenderer.cpp index 5d91a3bb6..7ac53b636 100644 --- a/examples/OpenGLWindow/GLInstancingRenderer.cpp +++ b/examples/OpenGLWindow/GLInstancingRenderer.cpp @@ -361,7 +361,8 @@ GLInstancingRenderer::GLInstancingRenderer(int maxNumObjectCapacity, int maxShap m_textureinitialized(false), m_screenWidth(0), m_screenHeight(0), - m_upAxis(1) + m_upAxis(1), + m_planeReflectionShapeIndex(-1) { m_data = new InternalDataRenderer; @@ -1597,13 +1598,44 @@ void GLInstancingRenderer::renderScene() { renderSceneInternal(B3_CREATE_SHADOWMAP_RENDERMODE); - //glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - //renderSceneInternal(B3_USE_SHADOWMAP_RENDERMODE_REFLECTION); + glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT); + + if (m_planeReflectionShapeIndex>=0) + { + /* Don't update color or depth. */ + glDisable(GL_DEPTH_TEST); + glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); + + /* Draw 1 into the stencil buffer. */ + glEnable(GL_STENCIL_TEST); + glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE); + glStencilFunc(GL_ALWAYS, 1, 0xffffffff); + + /* Now render floor; floor pixels just get their stencil set to 1. */ + renderSceneInternal(B3_USE_SHADOWMAP_RENDERMODE_REFLECTION_PLANE); + + /* Re-enable update of color and depth. */ + glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + glEnable(GL_DEPTH_TEST); + + /* Now, only render where stencil is set to 1. */ + glStencilFunc(GL_EQUAL, 1, 0xffffffff); /* draw if ==1 */ + glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); + + //draw the reflection objects + renderSceneInternal(B3_USE_SHADOWMAP_RENDERMODE_REFLECTION); + + glDisable(GL_STENCIL_TEST); + } + renderSceneInternal(B3_USE_SHADOWMAP_RENDERMODE); + + } else if (m_data->m_useProjectiveTexture) { + renderSceneInternal(B3_USE_PROJECTIVE_TEXTURE_RENDERMODE); } else @@ -2040,6 +2072,13 @@ void GLInstancingRenderer::renderSceneInternal(int orgRenderMode) { int renderMode=orgRenderMode; bool reflectionPass = false; + bool reflectionPlanePass = false; + + if (orgRenderMode==B3_USE_SHADOWMAP_RENDERMODE_REFLECTION_PLANE) + { + reflectionPlanePass = true; + renderMode = B3_USE_SHADOWMAP_RENDERMODE; + } if (orgRenderMode==B3_USE_SHADOWMAP_RENDERMODE_REFLECTION) { reflectionPass = true; @@ -2085,8 +2124,8 @@ void GLInstancingRenderer::renderSceneInternal(int orgRenderMode) //GLfloat depthModelViewMatrix2[4][4]; // For projective texture mapping - float textureProjectionMatrix[4][4]; - GLfloat textureModelViewMatrix[4][4]; + //float textureProjectionMatrix[4][4]; + //GLfloat textureModelViewMatrix[4][4]; // Compute the MVP matrix from the light's point of view if (renderMode==B3_CREATE_SHADOWMAP_RENDERMODE) @@ -2254,6 +2293,7 @@ b3Assert(glGetError() ==GL_NO_ERROR); for (int obj=0;objm_numGraphicsInstances) { SortableTransparentInstance inst; @@ -2300,9 +2340,13 @@ b3Assert(glGetError() ==GL_NO_ERROR); { for (int i=0;im_defaultTexturehandle; } - //disable lazy evaluation, it just leads to bugs + //disable lazy evaluation, it just leads to bugs //if (lastBindTexture != curBindTexture) { glBindTexture(GL_TEXTURE_2D,curBindTexture); @@ -2503,6 +2547,8 @@ b3Assert(glGetError() ==GL_NO_ERROR); float MVP[16]; if (reflectionPass) { + //todo: create an API to select this reflection matrix, to allow + //reflection planes different from Z-axis up through (0,0,0) float tmp[16]; float reflectionMatrix[16] = {1,0,0,0, 0,1,0,0, @@ -2669,6 +2715,11 @@ void GLInstancingRenderer::CleanupShaders() { } +void GLInstancingRenderer::setPlaneReflectionShapeIndex(int index) +{ + m_planeReflectionShapeIndex = index; +} + void GLInstancingRenderer::enableShadowMap() { glActiveTexture(GL_TEXTURE0); diff --git a/examples/OpenGLWindow/GLInstancingRenderer.h b/examples/OpenGLWindow/GLInstancingRenderer.h index 310d4f03f..b376cdd8d 100644 --- a/examples/OpenGLWindow/GLInstancingRenderer.h +++ b/examples/OpenGLWindow/GLInstancingRenderer.h @@ -39,6 +39,8 @@ class GLInstancingRenderer : public CommonRenderInterface int m_screenHeight; int m_upAxis; + + int m_planeReflectionShapeIndex; int registerGraphicsInstanceInternal(int shapeIndex, const float* position, const float* quaternion, const float* color, const float* scaling); @@ -151,6 +153,8 @@ public: virtual int getTotalNumInstances() const; virtual void enableShadowMap(); + + virtual void setPlaneReflectionShapeIndex(int index); virtual void clearZBuffer(); diff --git a/examples/SharedMemory/SharedMemoryPublic.h b/examples/SharedMemory/SharedMemoryPublic.h index c1b3b96c3..22623a93f 100644 --- a/examples/SharedMemory/SharedMemoryPublic.h +++ b/examples/SharedMemory/SharedMemoryPublic.h @@ -648,6 +648,7 @@ enum b3ConfigureDebugVisualizerEnum COV_ENABLE_RGB_BUFFER_PREVIEW, COV_ENABLE_DEPTH_BUFFER_PREVIEW, COV_ENABLE_SEGMENTATION_MARK_PREVIEW, + COV_ENABLE_PLANAR_REFLECTION, }; diff --git a/examples/pybullet/examples/addPlanarReflection.py b/examples/pybullet/examples/addPlanarReflection.py new file mode 100644 index 000000000..419789e90 --- /dev/null +++ b/examples/pybullet/examples/addPlanarReflection.py @@ -0,0 +1,75 @@ +import pybullet as p +import time +import math + +def getRayFromTo(mouseX,mouseY): + width, height, viewMat, projMat, cameraUp, camForward, horizon,vertical, _,_,dist, camTarget = p.getDebugVisualizerCamera() + camPos = [camTarget[0] - dist*camForward[0],camTarget[1] - dist*camForward[1],camTarget[2] - dist*camForward[2]] + farPlane = 10000 + rayForward = [(camTarget[0]-camPos[0]),(camTarget[1]-camPos[1]),(camTarget[2]-camPos[2])] + invLen = farPlane*1./(math.sqrt(rayForward[0]*rayForward[0]+rayForward[1]*rayForward[1]+rayForward[2]*rayForward[2])) + rayForward = [invLen*rayForward[0],invLen*rayForward[1],invLen*rayForward[2]] + rayFrom = camPos + oneOverWidth = float(1)/float(width) + oneOverHeight = float(1)/float(height) + dHor = [horizon[0] * oneOverWidth,horizon[1] * oneOverWidth,horizon[2] * oneOverWidth] + dVer = [vertical[0] * oneOverHeight,vertical[1] * oneOverHeight,vertical[2] * oneOverHeight] + rayToCenter=[rayFrom[0]+rayForward[0],rayFrom[1]+rayForward[1],rayFrom[2]+rayForward[2]] + rayTo = [rayFrom[0]+rayForward[0] - 0.5 * horizon[0] + 0.5 * vertical[0]+float(mouseX)*dHor[0]-float(mouseY)*dVer[0], + rayFrom[1]+rayForward[1] - 0.5 * horizon[1] + 0.5 * vertical[1]+float(mouseX)*dHor[1]-float(mouseY)*dVer[1], + rayFrom[2]+rayForward[2] - 0.5 * horizon[2] + 0.5 * vertical[2]+float(mouseX)*dHor[2]-float(mouseY)*dVer[2]] + return rayFrom,rayTo + +cid = p.connect(p.SHARED_MEMORY) +if (cid<0): + p.connect(p.GUI) +p.setPhysicsEngineParameter(numSolverIterations=10) +p.setTimeStep(1./120.) +logId = p.startStateLogging(p.STATE_LOGGING_PROFILE_TIMINGS, "visualShapeBench.json") +#useMaximalCoordinates is much faster then the default reduced coordinates (Featherstone) +p.loadURDF("plane_transparent.urdf", useMaximalCoordinates=True) +#disable rendering during creation. +p.configureDebugVisualizer(p.COV_ENABLE_RENDERING,0) +p.configureDebugVisualizer(p.COV_ENABLE_PLANAR_REFLECTION,1) + +p.configureDebugVisualizer(p.COV_ENABLE_GUI,0) +#disable tinyrenderer, software (CPU) renderer, we don't use it here +p.configureDebugVisualizer(p.COV_ENABLE_TINY_RENDERER,0) + +shift = [0,-0.02,0] +meshScale=[0.1,0.1,0.1] +#the visual shape and collision shape can be re-used by all createMultiBody instances (instancing) +visualShapeId = p.createVisualShape(shapeType=p.GEOM_MESH,fileName="duck.obj", rgbaColor=[1,1,1,1], specularColor=[0.4,.4,0], visualFramePosition=shift, meshScale=meshScale) +collisionShapeId = p.createCollisionShape(shapeType=p.GEOM_MESH, fileName="duck_vhacd.obj", collisionFramePosition=shift,meshScale=meshScale) + +rangex = 3 +rangey = 3 +for i in range (rangex): + for j in range (rangey ): + p.createMultiBody(baseMass=1,baseInertialFramePosition=[0,0,0],baseCollisionShapeIndex=collisionShapeId, baseVisualShapeIndex = visualShapeId, basePosition = [((-rangex/2)+i)*meshScale[0]*2,(-rangey/2+j)*meshScale[1]*2,1], useMaximalCoordinates=True) +p.configureDebugVisualizer(p.COV_ENABLE_RENDERING,1) +p.stopStateLogging(logId) +p.setGravity(0,0,-10) +p.setRealTimeSimulation(1) + +colors = [[1,0,0,1],[0,1,0,1],[0,0,1,1],[1,1,1,1]] +currentColor = 0 + +while (1): + mouseEvents = p.getMouseEvents() + for e in mouseEvents: + if ((e[0] == 2) and (e[3]==0) and (e[4]& p.KEY_WAS_TRIGGERED)): + mouseX = e[1] + mouseY = e[2] + rayFrom,rayTo=getRayFromTo(mouseX,mouseY) + rayInfo = p.rayTest(rayFrom,rayTo) + #p.addUserDebugLine(rayFrom,rayTo,[1,0,0],3) + for l in range(len(rayInfo)): + hit = rayInfo[l] + objectUid = hit[0] + if (objectUid>=1): + #p.removeBody(objectUid) + p.changeVisualShape(objectUid,-1,rgbaColor=colors[currentColor]) + currentColor+=1 + if (currentColor>=len(colors)): + currentColor=0 diff --git a/examples/pybullet/examples/createVisualShape.py b/examples/pybullet/examples/createVisualShape.py index 6e13b6c28..2d08ccdef 100644 --- a/examples/pybullet/examples/createVisualShape.py +++ b/examples/pybullet/examples/createVisualShape.py @@ -40,8 +40,8 @@ meshScale=[0.1,0.1,0.1] visualShapeId = p.createVisualShape(shapeType=p.GEOM_MESH,fileName="duck.obj", rgbaColor=[1,1,1,1], specularColor=[0.4,.4,0], visualFramePosition=shift, meshScale=meshScale) collisionShapeId = p.createCollisionShape(shapeType=p.GEOM_MESH, fileName="duck_vhacd.obj", collisionFramePosition=shift,meshScale=meshScale) -rangex = 32 -rangey = 32 +rangex = 5 +rangey = 5 for i in range (rangex): for j in range (rangey ): p.createMultiBody(baseMass=1,baseInertialFramePosition=[0,0,0],baseCollisionShapeIndex=collisionShapeId, baseVisualShapeIndex = visualShapeId, basePosition = [((-rangex/2)+i)*meshScale[0]*2,(-rangey/2+j)*meshScale[1]*2,1], useMaximalCoordinates=True) @@ -65,7 +65,7 @@ while (1): for l in range(len(rayInfo)): hit = rayInfo[l] objectUid = hit[0] - if (objectUid>=0): + if (objectUid>=1): #p.removeBody(objectUid) p.changeVisualShape(objectUid,-1,rgbaColor=colors[currentColor]) currentColor+=1 diff --git a/examples/pybullet/pybullet.c b/examples/pybullet/pybullet.c index 3907a3938..2c86daef8 100644 --- a/examples/pybullet/pybullet.c +++ b/examples/pybullet/pybullet.c @@ -9152,6 +9152,8 @@ initpybullet(void) PyModule_AddIntConstant(m, "COV_ENABLE_RGB_BUFFER_PREVIEW", COV_ENABLE_RGB_BUFFER_PREVIEW); PyModule_AddIntConstant(m, "COV_ENABLE_DEPTH_BUFFER_PREVIEW", COV_ENABLE_DEPTH_BUFFER_PREVIEW); PyModule_AddIntConstant(m, "COV_ENABLE_SEGMENTATION_MARK_PREVIEW", COV_ENABLE_SEGMENTATION_MARK_PREVIEW); + PyModule_AddIntConstant(m, "COV_ENABLE_PLANAR_REFLECTION", COV_ENABLE_PLANAR_REFLECTION); + PyModule_AddIntConstant(m, "ER_TINY_RENDERER", ER_TINY_RENDERER); PyModule_AddIntConstant(m, "ER_BULLET_HARDWARE_OPENGL", ER_BULLET_HARDWARE_OPENGL); From 1f756cfb8d2e17b0d11de15307c84ab83eebc161 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Wed, 11 Apr 2018 01:21:57 -0700 Subject: [PATCH 35/68] bump up pybullet version to 1.9.5 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 1f3da854b..9e488b97e 100644 --- a/setup.py +++ b/setup.py @@ -453,7 +453,7 @@ print("-----") setup( name = 'pybullet', - version='1.9.4', + version='1.9.5', description='Official Python Interface for the Bullet Physics SDK specialized for Robotics Simulation and Reinforcement Learning', long_description='pybullet is an easy to use Python module for physics simulation, robotics and deep reinforcement learning based on the Bullet Physics SDK. With pybullet you can load articulated bodies from URDF, SDF and other file formats. pybullet provides forward dynamics simulation, inverse dynamics computation, forward and inverse kinematics and collision detection and ray intersection queries. Aside from physics simulation, pybullet supports to rendering, with a CPU renderer and OpenGL visualization and support for virtual reality headsets.', url='https://github.com/bulletphysics/bullet3', From c2869e0a3c10f820f52082fe70022badd5bb8dfe Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Wed, 11 Apr 2018 08:50:29 -0700 Subject: [PATCH 36/68] enable planar reflection in minitaur_gym_env.py and locomotion scenes --- .../OpenGLWindow/GLInstancingRenderer.cpp | 27 +- .../pybullet_envs/bullet/minitaur_gym_env.py | 14 +- ..._TF_HumanoidFlagrunBulletEnv_v0_2017may.py | 523 ----------------- ...manoidFlagrunHarderBulletEnv_v0_2017may.py | 526 ------------------ .../gym/pybullet_envs/scene_stadium.py | 3 + 5 files changed, 40 insertions(+), 1053 deletions(-) delete mode 100644 examples/pybullet/gym/pybullet_envs/examples/enjoy_TF_HumanoidFlagrunBulletEnv_v0_2017may.py delete mode 100644 examples/pybullet/gym/pybullet_envs/examples/enjoy_TF_HumanoidFlagrunHarderBulletEnv_v0_2017may.py diff --git a/examples/OpenGLWindow/GLInstancingRenderer.cpp b/examples/OpenGLWindow/GLInstancingRenderer.cpp index 7ac53b636..26d765536 100644 --- a/examples/OpenGLWindow/GLInstancingRenderer.cpp +++ b/examples/OpenGLWindow/GLInstancingRenderer.cpp @@ -509,6 +509,16 @@ void GLInstancingRenderer::writeSingleInstanceColorToCPU(const double* color, in b3Assert(pg); int srcIndex = pg->m_internalInstanceIndex; + int shapeIndex = pg->m_shapeIndex; + b3GraphicsInstance* gfxObj = m_graphicsInstances[shapeIndex]; + if (color[3]<1) + { + gfxObj->m_flags |= eGfxTransparency; + } else + { + gfxObj->m_flags &= ~eGfxTransparency; + } + m_data->m_instance_colors_ptr[srcIndex*4+0]=float(color[0]); m_data->m_instance_colors_ptr[srcIndex*4+1]=float(color[1]); m_data->m_instance_colors_ptr[srcIndex*4+2]=float(color[2]); @@ -520,6 +530,16 @@ void GLInstancingRenderer::writeSingleInstanceColorToCPU(const float* color, int b3PublicGraphicsInstance* pg = m_data->m_publicGraphicsInstances.getHandle(srcIndex2); b3Assert(pg); int srcIndex = pg->m_internalInstanceIndex; + int shapeIndex = pg->m_shapeIndex; + b3GraphicsInstance* gfxObj = m_graphicsInstances[shapeIndex]; + + if (color[3]<1) + { + gfxObj->m_flags |= eGfxTransparency; + } else + { + gfxObj->m_flags &= ~eGfxTransparency; + } m_data->m_instance_colors_ptr[srcIndex*4+0]=color[0]; m_data->m_instance_colors_ptr[srcIndex*4+1]=color[1]; @@ -2344,8 +2364,11 @@ b3Assert(glGetError() ==GL_NO_ERROR); int shapeIndex = transparentInstances[i].m_shapeIndex; //during a reflectionPlanePass, only draw the plane, nothing else - if ((shapeIndex!=m_planeReflectionShapeIndex) && reflectionPlanePass) - continue; + if (reflectionPlanePass) + { + if (shapeIndex!=m_planeReflectionShapeIndex) + continue; + } b3GraphicsInstance* gfxObj = m_graphicsInstances[shapeIndex]; diff --git a/examples/pybullet/gym/pybullet_envs/bullet/minitaur_gym_env.py b/examples/pybullet/gym/pybullet_envs/bullet/minitaur_gym_env.py index d82774d14..2aba7af7a 100644 --- a/examples/pybullet/gym/pybullet_envs/bullet/minitaur_gym_env.py +++ b/examples/pybullet/gym/pybullet_envs/bullet/minitaur_gym_env.py @@ -177,7 +177,9 @@ class MinitaurBulletEnv(gym.Env): self._pybullet_client.setPhysicsEngineParameter( numSolverIterations=int(self._num_bullet_solver_iterations)) self._pybullet_client.setTimeStep(self._time_step) - self._pybullet_client.loadURDF("%s/plane.urdf" % self._urdf_root) + plane = self._pybullet_client.loadURDF("%s/plane.urdf" % self._urdf_root) + self._pybullet_client.changeVisualShape(plane,-1,rgbaColor=[1,1,1,0.9]) + self._pybullet_client.configureDebugVisualizer(self._pybullet_client.COV_ENABLE_PLANAR_REFLECTION,0) self._pybullet_client.setGravity(0, 0, -10) acc_motor = self._accurate_motor_model_enabled motor_protect = self._motor_overheat_protection @@ -252,8 +254,16 @@ class MinitaurBulletEnv(gym.Env): if time_to_sleep > 0: time.sleep(time_to_sleep) base_pos = self.minitaur.GetBasePosition() + camInfo = self._pybullet_client.getDebugVisualizerCamera() + curTargetPos = camInfo[11] + distance=camInfo[10] + yaw = camInfo[8] + pitch=camInfo[9] + targetPos = [0.95*curTargetPos[0]+0.05*base_pos[0],0.95*curTargetPos[1]+0.05*base_pos[1],curTargetPos[2]] + + self._pybullet_client.resetDebugVisualizerCamera( - self._cam_dist, self._cam_yaw, self._cam_pitch, base_pos) + distance, yaw, pitch, base_pos) action = self._transform_action_to_motor_command(action) for _ in range(self._action_repeat): self.minitaur.ApplyAction(action) diff --git a/examples/pybullet/gym/pybullet_envs/examples/enjoy_TF_HumanoidFlagrunBulletEnv_v0_2017may.py b/examples/pybullet/gym/pybullet_envs/examples/enjoy_TF_HumanoidFlagrunBulletEnv_v0_2017may.py deleted file mode 100644 index fb9018afa..000000000 --- a/examples/pybullet/gym/pybullet_envs/examples/enjoy_TF_HumanoidFlagrunBulletEnv_v0_2017may.py +++ /dev/null @@ -1,523 +0,0 @@ -#add parent dir to find package. Only needed for source code build, pip install doesn't need it. -import os, inspect -currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) -parentdir = os.path.dirname(os.path.dirname(currentdir)) -os.sys.path.insert(0,parentdir) - -import gym -import numpy as np -import pybullet as p -import pybullet_envs -import time - -def relu(x): - return np.maximum(x, 0) - -class SmallReactivePolicy: - "Simple multi-layer perceptron policy, no internal state" - def __init__(self, observation_space, action_space): - assert weights_dense1_w.shape == (observation_space.shape[0], 256) - assert weights_dense2_w.shape == (256, 128) - assert weights_final_w.shape == (128, action_space.shape[0]) - - def act(self, ob): - ob[0] += -1.4 + 0.8 - x = ob - x = relu(np.dot(x, weights_dense1_w) + weights_dense1_b) - x = relu(np.dot(x, weights_dense2_w) + weights_dense2_b) - x = np.dot(x, weights_final_w) + weights_final_b - return x - -def main(): - env = gym.make("HumanoidFlagrunBulletEnv-v0") - env.render(mode="human") - pi = SmallReactivePolicy(env.observation_space, env.action_space) - - env.reset() - torsoId = -1 - for i in range (p.getNumBodies()): - print(p.getBodyInfo(i)) - if (p.getBodyInfo(i)[0].decode() == "torso"): - torsoId=i - print("found humanoid torso") - - while 1: - frame = 0 - score = 0 - restart_delay = 0 - obs = env.reset() - - while 1: - a = pi.act(obs) - obs, r, done, _ = env.step(a) - score += r - frame += 1 - distance=5 - yaw = 0 - humanPos, humanOrn = p.getBasePositionAndOrientation(torsoId) - time.sleep(1./60.) - #print("frame=",frame) - camInfo = p.getDebugVisualizerCamera() - curTargetPos = camInfo[11] - distance=camInfo[10] - yaw = camInfo[8] - pitch=camInfo[9] - targetPos = [0.95*curTargetPos[0]+0.05*humanPos[0],0.95*curTargetPos[1]+0.05*humanPos[1],curTargetPos[2]] - p.resetDebugVisualizerCamera(distance,yaw,pitch,targetPos); - - still_open = env.render("human") - if still_open==False: - return - if not done: continue - if restart_delay==0: - print("score=%0.2f in %i frames" % (score, frame)) - restart_delay = 60*2 # 2 sec at 60 fps - else: - restart_delay -= 1 - if restart_delay==0: break - -weights_dense1_w = np.array([ -[ +0.6293, +0.1944, -0.3318, +0.8966, +0.0655, -0.3388, +0.1145, +0.2309, -0.2066, -0.2114, +0.2922, -0.1074, +0.6659, +0.0561, -0.0939, +0.3787, -0.0582, +0.2339, +0.1684, +0.0055, +0.0802, +0.5042, +0.2928, -0.2893, -0.4046, +0.3344, +0.4803, +0.2703, +0.1568, +0.6856, -0.0352, -0.1541, +0.4727, +0.4409, -0.2967, +0.5418, -0.0615, +0.2437, -0.1398, -0.3062, -0.4115, +0.6076, -0.0041, +0.1807, +0.0225, -0.4615, +0.5165, -0.1249, +0.0009, +0.1327, +0.1902, +0.0513, -0.0115, -0.0080, -0.0103, +0.0270, +0.5980, -0.2958, -0.1757, -0.2113, -0.1083, -0.3794, +0.5236, +0.2124, -0.1106, -0.4137, -0.2781, +0.1166, +0.5296, +0.1931, +0.0253, +0.2449, +0.2255, -0.3522, -0.3278, +0.1543, -0.0932, +0.0189, -0.4094, +0.4835, -0.0988, +0.3964, +0.1686, +0.3544, +0.1795, +0.2838, +0.4824, -0.4920, +0.0149, -0.2411, +0.3482, +0.0317, -0.5071, -0.0767, -0.0224, -0.0636, -0.0820, +0.4650, +0.1536, +0.4940, +0.5601, -0.4318, +0.5429, +0.5845, +0.0671, -0.0446, -0.3002, +0.1834, +0.2684, +0.1650, +0.5360, +0.0233, +0.2802, +0.0193, +0.1958, -0.0486, +0.1825, +0.1564, +0.5119, +0.4098, +0.1746, -0.0387, -0.4545, -0.2710, -0.1199, +0.2477, +0.6347, -0.0631, +0.3266, -0.6084, +0.1375, -0.4248, +0.2457, +0.1121, -0.0581, -0.0917, -0.1033, +0.2659, -0.1561, -0.0799, +0.2151, +1.1114, +0.1515, +0.4619, +0.1588, -0.0363, +0.3526, +0.6074, -0.2552, -0.1694, -0.0231, +0.1824, +0.1416, -0.3579, +0.2747, -0.3438, -0.3253, -0.1949, +0.1017, -0.5024, +0.0340, +0.7160, +0.0002, +0.0094, +0.6571, -0.0398, +0.0673, -0.1068, -0.0332, -0.2273, +0.2987, +0.1597, -0.0149, +0.1848, +0.1507, -0.0720, +0.2599, -0.1457, -0.1895, +0.4123, +0.1671, +0.1840, +0.1595, +0.1860, -0.1665, +0.5634, +0.2212, +0.0716, -0.0079, +0.3658, +0.3006, +0.3405, +0.2128, +0.0580, -0.0020, +0.1888, +0.4359, +0.0943, -0.4037, +0.1177, -0.6331, -0.4176, -0.0592, +0.7643, +0.4814, -0.1330, +0.5979, +0.1201, +1.0343, +0.0626, -0.4150, +0.4837, -0.5414, +0.7861, -0.1490, -0.3456, -0.0864, -0.1023, +0.1685, +0.4364, +0.2712, +0.4190, -0.0043, -0.0345, +0.0220, +0.4268, -0.2220, +0.1103, +0.1080, +0.2434, -0.2150, +0.1020, -0.1036, +0.0668, +0.6476, -0.1680, -0.6341, -0.0355, +0.2609, -0.0654, -0.2266, -0.0602, -0.4999, +0.0095, +0.4658, +0.2348, +0.5519, +0.5272, +0.5369, +0.2235, +0.1749, -0.2303, -0.3953, +0.0786, +0.0392, +0.4220], -[ -0.1328, -0.1606, -0.5328, -0.1714, +0.0798, +0.1607, +0.5345, +0.4926, +0.0454, +0.3098, +0.3165, -0.3178, -0.4265, -0.1685, -0.2407, -0.1614, -0.4565, -0.1485, +0.3415, +0.4815, +0.0540, +0.3653, -0.3131, -0.0677, +0.1913, +0.1092, +0.0475, +0.1552, -0.4596, -0.0515, +0.0605, -0.0343, -0.2491, +0.1436, +0.3888, +0.3832, +0.1366, -0.3830, +0.0979, -0.6161, +0.1288, -0.0175, +0.2333, +0.1926, +0.2283, +0.1058, +0.4270, -0.0245, -0.3222, -0.0520, -0.0490, +0.2070, -0.2569, +0.5236, -0.0205, +0.4042, -0.0124, -0.1895, +0.0883, +0.2288, +0.0899, -0.4151, -0.2561, -0.0085, +0.0580, -0.0653, -0.2466, +0.4387, +0.3449, -0.1397, +0.2822, -0.0421, +0.0436, +0.3260, +0.1063, +0.0075, +0.2965, -0.2654, -0.5248, +0.3158, +0.2857, -0.1577, +0.0051, -0.0385, +0.3359, -0.3426, +0.3114, +0.0723, -0.3686, -0.3469, -0.1641, -0.3692, +0.1128, -0.4488, -0.2486, +0.1548, -0.1178, +0.0463, +0.0702, +0.0241, -0.6284, +0.0075, +0.1511, +0.2782, -0.4123, +0.9291, -0.1091, +0.0855, -0.1492, +0.3177, -0.4085, -0.1947, -0.2322, +0.0332, +0.5842, -0.3053, +0.0257, +0.0100, -0.2431, -0.4065, +0.5836, -0.4555, +0.2640, -0.2583, -0.2102, -0.1647, +0.3289, +0.4032, -0.3753, +0.7903, +0.1497, +0.3413, -0.3214, -0.2844, -0.0714, -0.2065, -0.1345, -0.2788, +0.1493, +0.3718, -0.0986, +0.4025, -0.0977, -0.5767, -0.0381, +0.7644, +0.2361, +0.1323, +0.1403, -0.2588, +0.5336, -0.0563, +0.2527, +0.2719, +0.7449, +0.2638, -0.2394, +0.0762, +0.0298, +0.5269, -0.3359, +0.2320, -0.7261, +0.1083, -0.3753, +0.3203, -0.0917, +0.3447, +0.1378, +0.6644, -0.1918, -0.0294, -0.1627, -0.1286, -0.1075, -0.0030, +0.4697, +0.2741, +0.1766, +0.0192, -0.4330, +0.1567, -0.0318, +0.0954, +0.0740, -0.1572, +0.5720, -0.1338, -0.3160, -0.0764, -0.3246, -0.1118, +0.6287, +0.8194, -0.1309, -0.1432, +0.2214, -0.0949, +0.1593, +0.0906, +0.7504, +0.1575, -0.2944, -0.4333, +0.0835, -0.1874, -0.2915, +0.1207, +0.1382, +0.6302, -0.4901, -0.0213, +0.1370, +0.0727, -0.2363, +0.0253, -0.1981, -0.0936, +0.3603, -0.3047, +0.4927, -0.3511, +0.3201, -0.3573, +0.3901, -0.5445, -0.0432, +0.1748, -0.2054, +0.3963, -0.0982, -0.2480, -0.2167, +0.0575, +0.0609, -0.0247, +0.3744, -0.0294, -0.4537, +0.2662, +0.1316, +0.2317, +0.2936, +0.0489, +0.9492, +0.2136, +0.2650, -0.3814, +0.2094, -0.0880, +0.0176, -0.2509, -0.1303, +0.6557, -0.1558, -0.1399], -[ -0.0984, -0.1143, -0.0568, +0.2701, +0.1711, +0.0412, -0.1802, +0.2965, +0.2585, +0.0978, +0.3736, +0.2381, -0.7357, +0.2574, -0.2989, +0.4127, +0.3923, +0.3730, +0.4396, +0.2577, -0.3004, +0.1348, -0.1000, +0.0118, -0.4980, -0.1106, +0.3171, -0.6051, -0.2971, -0.1730, -0.0734, -0.1533, -0.3973, +0.2212, -0.5631, +0.3802, -0.1296, +0.1852, +0.3861, -0.4434, -0.1935, +0.1340, +0.0676, +0.0023, -0.5977, +0.0714, -0.4679, -0.5183, +0.3058, -0.1173, +0.0947, +0.2647, -0.5626, +0.2013, +0.2880, -0.3705, +0.3122, +0.3962, +0.0887, +0.1622, +0.0530, -0.1027, -0.4485, +0.3277, -0.4867, +0.3816, -0.1824, -0.1180, -0.3772, +0.1168, +0.8935, +0.2016, -0.2653, -0.1203, -0.5580, -0.0019, +0.0538, +0.2243, +0.0068, -0.3368, +0.7855, -0.4103, -0.0804, -0.5134, +0.2393, -0.1550, -0.3631, -0.6673, +0.3200, -0.7989, +0.1275, +0.3344, -0.1412, +0.2625, -0.4791, +0.2128, -0.0239, -0.2222, +0.2194, -0.2840, -0.0803, +0.0983, -0.7406, +0.1403, -0.2328, +0.2757, +0.0280, -0.1440, +0.2293, +0.3104, +0.1276, -0.4159, -0.3666, -0.0277, +0.7478, -0.0281, -0.2220, +0.1125, -0.1913, +0.6250, +0.0770, +0.1413, -0.0581, +0.5343, +0.3278, +0.0996, +0.3433, -0.0083, -0.1901, +0.0975, +0.1020, -0.1158, -0.1413, +0.3471, -0.3284, +0.3613, -0.1883, +0.1193, -0.0673, +0.3432, +0.1606, +0.1897, +0.4076, +0.4197, -0.2615, -0.4023, -0.3885, -0.3690, +0.2108, -0.2316, +0.2313, +0.1184, +0.2947, -0.2582, -0.3609, -0.5461, -0.2391, -0.0060, -0.2563, -0.0914, -0.4549, -0.4851, +0.0705, -0.1218, +0.5126, +0.1872, +0.2077, +0.2358, -0.4139, -0.0076, +0.2694, +0.0680, +0.3522, -0.2242, -0.1307, +0.3949, -0.3668, -0.3229, -0.1409, +0.5105, -0.4326, +0.2261, -0.1710, -0.1600, -0.3146, +0.3828, +0.5501, -0.4510, +0.1724, -0.3460, +0.3105, -0.3545, +0.0933, -0.0448, -0.2754, -0.4541, -0.0048, +0.4036, +0.0478, -0.2130, +0.1463, -0.1376, +0.2474, -0.1908, -0.1526, +0.0248, +0.1087, -0.3266, +0.0700, +0.6442, -0.2034, -0.1114, +0.4092, -0.7247, -0.7350, +0.0326, -0.1669, +0.0638, +0.0375, +0.1022, +0.2376, -0.0539, -0.1628, -0.0181, -0.0237, +0.1998, -0.2722, -0.1257, -0.2545, -0.0973, +0.5775, -0.4024, -0.1480, +0.1261, +0.0179, -0.1586, +0.1018, +0.2922, -0.1986, +0.1408, +0.0344, +0.1816, -0.0893, -0.0468, +0.0822, -0.1700, +0.0070, -0.1332, -0.1521, -0.5118, +0.3102, -0.0233, -0.1601, -0.2996, +0.1325, -0.4660], -[ +0.1476, +0.2408, -0.8837, -0.8372, -0.6100, -1.6603, -0.7113, +0.8536, -0.4598, +0.3854, +0.3687, -0.4677, +0.2247, -0.8504, +1.0698, -0.1136, -0.9883, -0.7756, -0.5258, +0.4142, -0.7328, -0.7947, -0.1415, +0.0440, +0.9019, +0.6013, +0.1260, +0.2734, -0.0999, -1.3446, -0.1065, -1.7844, +0.0730, +0.1714, +0.0003, +0.4161, -0.2402, -0.3192, +0.3874, +0.0281, +0.6471, +0.0241, -0.2022, -0.2028, -1.0134, +0.2548, +0.2793, -0.2122, +0.7755, -0.1329, -0.4797, -0.7107, -0.6883, -0.5054, -0.1803, -0.1423, -0.1813, +0.0072, +0.3282, -0.0127, -0.1876, +0.1987, -0.1163, +0.4008, +0.9131, -0.5351, -0.5637, +0.3708, +1.1073, +0.8181, -0.2068, -0.0078, +0.4774, +0.1131, -0.5499, +0.1913, +0.1978, -0.3026, +0.0644, +0.1480, +0.0729, +0.2811, +0.1602, -1.2949, +0.7348, -0.0077, -0.1074, -0.9786, -0.1688, +0.6900, -0.2823, -0.6036, -0.4627, -0.0042, +0.5914, +0.6833, -0.8218, +0.2039, +0.7445, +0.0303, +0.3302, -0.1476, -0.2420, -0.0859, +0.2661, +0.1809, +0.4077, -0.2817, +0.4979, -1.0206, +0.0657, +0.1198, +0.6439, +0.3367, -0.1934, +1.0984, +0.4930, +0.3909, +1.2366, -1.3754, -0.3193, -0.8763, -0.1064, -1.8681, +0.6180, -0.6428, +0.0936, +0.9666, -0.3576, +0.1122, -1.1636, +0.4422, +0.6730, -0.0175, -0.4387, -0.7232, +0.3081, -0.6139, +0.0517, -0.3823, +0.1138, +0.1620, -0.2682, +0.0615, +0.3548, +0.1455, -0.5705, +0.1040, +0.8630, -0.1137, -0.9105, +0.0464, -0.4627, -0.7675, +0.1269, +0.7108, -0.2871, -0.1288, -0.4742, +1.0273, -0.3258, -0.1654, -0.3153, -0.7432, +0.0381, +0.2925, -0.4688, -0.0912, +0.4136, +0.3478, +0.5605, -0.0847, +0.3947, -0.5349, +0.0403, -0.0192, -0.8613, -1.1852, +0.3444, -1.0244, +0.3215, +0.1255, +0.0551, +0.3256, -0.3785, +0.3339, -1.0502, -0.2007, -0.6527, +0.3958, -0.0985, -0.0841, -0.1753, +0.0321, -0.0194, +0.1305, +1.1641, +0.0975, +0.5357, -1.3724, +0.7433, +1.0143, +0.1676, +0.1955, -0.4320, +0.0109, +0.4693, +0.2526, +0.2676, -1.0573, -0.1782, -0.3294, -0.1449, +0.6132, -0.0355, +0.0718, +0.0172, +0.4578, -0.4996, +0.5466, -0.1448, +0.4026, -0.1309, +0.0098, -0.2261, +0.3001, +0.7544, -0.0670, +0.4499, +0.6383, -0.2709, +0.2645, +0.4115, -0.3349, +0.6905, +1.2611, +0.7440, -0.0308, -1.4592, +0.2986, -0.6710, +0.0334, -0.0357, -0.2904, +0.0112, +0.1948, +0.4449, +0.5552, +0.0936, -0.2478, +0.1914, +0.4363, -0.0493, -0.1420, -1.6122, +0.7505], -[ +0.3558, +0.2472, -0.0503, +0.3785, -0.4359, +0.1631, -0.6651, +0.5112, -0.0500, +1.3875, +0.0295, +0.4020, +0.1590, +0.1957, +0.7626, +0.2027, -0.0796, +0.0961, -0.2059, +0.3622, -0.0283, +0.4350, -0.2250, +0.2964, -0.2442, -0.0374, -0.3842, -0.1070, +0.0839, -0.0020, -0.7147, +0.5910, +0.8749, +0.4328, -0.2621, +1.4478, -0.1362, +0.4519, +0.2278, -0.2963, +0.1033, -0.3366, +0.7587, +0.2013, -0.6618, -0.6878, +0.4344, -0.1579, +0.7666, -0.0029, +0.1198, -0.4277, +0.5496, -0.4465, -0.3619, -0.4321, -0.4785, -0.5018, +0.2375, -0.2706, +0.4049, +0.0615, +0.4649, -0.2279, +0.2280, -0.3012, -0.7992, -0.4667, +1.1769, +0.0398, +0.3046, -0.3065, -0.0700, -0.7862, -0.1387, -0.8609, -0.4411, -0.3187, +0.5316, -0.3003, +0.3963, +0.5955, -0.0765, +0.3956, +0.3707, +0.1293, -0.1717, -0.3856, +0.5104, +1.6620, -0.1812, +0.2170, -0.0908, +0.3495, +0.1919, +0.3210, -0.7772, -0.3280, +0.5154, -0.1817, -0.0689, -0.2585, +0.4191, +0.7375, -0.1031, -0.6414, +0.9916, -0.0679, +0.5039, -0.3997, -0.4799, +0.0175, +0.5604, +0.4043, +0.9896, +0.0661, +0.2647, +0.1726, +0.8634, -0.1245, -0.4779, -0.1559, -0.8660, -0.4608, +0.9394, +0.4540, +0.4111, +0.3497, +0.5362, -0.5217, +0.1381, +0.7612, +0.7698, +0.0308, +0.0273, -0.5877, +0.6987, +0.6451, -0.0201, +0.7807, +0.2252, -0.1704, +0.1202, +0.5792, -0.5045, +0.2701, -0.3337, +0.5408, -0.2252, +0.2319, -0.3777, +0.4021, -0.0825, +0.1170, -0.3622, +0.1536, -0.2138, -0.6026, -0.3708, -0.0749, +0.6073, -0.0008, -0.3006, -0.1596, +0.2588, -0.5936, -0.1238, -0.6407, +0.4157, -0.2740, +0.7902, -0.4399, +0.4683, -0.2380, +1.1617, -0.1711, -0.3893, +0.5963, +0.1831, +0.4258, +0.1688, +0.0797, +1.2159, +0.0588, -0.0955, +0.2973, -0.1989, -0.0572, +0.2574, +0.2408, -0.5229, -0.6137, +0.5714, +0.0512, +0.1215, -0.2775, +0.2418, -0.1763, +0.2388, +0.0369, -0.7976, +0.4770, -0.4917, +0.4904, +0.1947, +0.0302, -0.0689, -0.0290, -0.6401, -0.2468, -0.5350, -0.8553, +0.0987, +0.1559, -0.0623, -0.5656, -0.6517, +0.4739, -0.1820, -0.0202, -0.7637, +0.4191, -0.3833, +0.0363, -0.6930, +0.1653, +0.1900, +0.0582, -0.2153, -0.4953, -0.4286, +0.6121, +0.1992, +0.5115, +0.1231, -0.2156, +0.5073, +0.3873, +0.3876, -0.5235, -0.9123, -0.2764, +0.0371, -0.3539, +1.0197, -0.9205, -0.0143, -0.1044, +1.7223, -0.3217, +0.1584, +0.1801, +0.5403, -0.3945, +0.5041, +1.0862], -[ +0.5328, +0.2565, -0.5797, +0.7707, +0.6617, +0.1126, -0.1793, +0.1045, +0.4912, -0.0139, -0.4850, +0.0092, +0.5458, -0.4582, -0.1920, +1.0246, +0.0662, -0.3587, -0.0841, -0.3408, +0.4551, +0.6656, -0.2599, -0.4903, -0.7559, +1.6542, -0.1973, +0.0546, +0.0055, +0.6518, -0.8668, +0.9520, +0.7630, -0.2955, +0.3021, +0.1893, +0.1883, +0.4109, -0.7866, +0.7819, -0.8285, -0.1209, -0.6233, +0.1019, +0.6371, -0.3301, -0.4733, -0.8125, +0.6082, +0.7140, +0.1117, +0.7863, -0.1971, +0.3625, +0.1350, +1.0125, -0.2734, +0.9259, -0.2717, -0.0078, -0.0235, -1.1129, +1.0804, -0.0854, -0.0217, +0.4382, -0.6608, +0.0574, -0.0950, -0.2566, -0.2756, +0.2860, +0.6629, -0.0268, +0.3180, +0.3869, -0.6442, +0.3566, +0.2683, -0.2991, -0.4265, +0.0772, +0.3762, +1.0248, -0.3097, +0.2869, +0.7118, -0.1791, -0.7150, -0.7303, -0.0287, -0.1958, -0.6253, -0.4105, -0.2762, +0.5575, -0.2738, -0.0076, +1.1024, +0.2085, +0.3222, -0.8980, -0.0260, -0.1284, +0.1156, -0.0922, +0.3350, +0.8885, -0.5309, -0.1861, +0.9000, +0.3548, +0.3249, +0.6099, +0.0325, -0.2521, +0.4319, -0.1786, -0.2173, +0.1392, -0.0928, -0.3172, -0.9990, +0.0039, -1.2678, +0.8054, +0.5785, -1.1804, -0.5891, -0.1927, +0.2795, -0.5659, -0.1068, +0.1317, -0.5248, -0.3118, +0.0533, +0.8157, -0.5083, +0.1627, -0.1479, +0.4841, -0.1300, +0.5819, +0.1716, -0.2322, +0.1315, +0.2597, +0.0334, +0.0399, -0.0150, +0.5659, +0.8546, -0.6720, +0.4571, -1.5464, +0.4355, -0.4222, +0.2526, -0.4001, -1.3997, +0.5911, -0.5839, -0.3489, +0.8417, -0.6559, +0.2712, +0.0676, -0.0879, -0.4659, +0.8032, +0.1606, +0.6031, +0.1949, -0.6903, -0.3795, +0.1617, -0.1196, -0.0722, -0.2502, +1.4607, -0.5077, +0.4784, -0.2384, -0.2078, +0.0690, +1.2473, +0.2514, -0.2076, +1.0321, +0.8164, +0.0893, +1.1411, -0.6874, -0.3049, +0.2537, -0.1452, +0.7863, -1.0557, +0.1657, -1.0599, -0.1020, -0.8009, +1.4788, +0.5830, -0.7151, -0.2346, +0.0419, +1.0105, +0.7199, -0.7970, -0.0304, -0.2309, +1.0292, +0.2766, -0.1246, -0.8890, -0.4774, -0.5043, +0.7662, -0.1927, +0.5934, +0.3826, +0.6042, -0.8475, +0.0834, -1.1040, -0.0675, +0.1748, -0.4587, -0.6067, +0.1985, +0.0085, +0.3383, +1.1255, -0.4700, -1.0695, -0.0455, +0.2033, -0.0716, -0.1294, +0.8821, -1.4905, +0.1311, +0.5449, +0.0187, +1.1074, +0.2369, +0.8664, +0.1064, +0.0638, -0.6036, -0.7281, +0.3588, +0.4971, +0.1831], -[ +0.0780, -0.4162, +0.2811, +0.0296, -0.2766, +0.2107, +0.8077, -0.1461, +0.6808, +0.1724, -0.2050, -0.1724, -0.7991, -0.4908, +0.1674, -0.4160, -0.0231, +0.0761, +0.0509, -0.0511, -0.0524, -0.3566, +0.4945, +0.0689, +0.5109, +0.0369, +0.3718, -0.9403, -0.1180, +0.2127, +0.2691, -0.2562, -0.4479, +0.1692, +0.3613, -0.4799, -0.3771, +0.3166, +0.3280, +0.2413, +0.0589, -0.2935, -0.6103, -0.5997, -0.4132, +0.3384, -0.0931, +0.2155, -0.0466, -0.0128, -0.2486, +0.2293, +0.1842, +0.7497, -0.0994, -0.1846, +0.0144, +0.2606, +0.1249, +0.0581, -0.1773, +0.2502, -0.4147, -0.1239, -0.9816, +0.8229, +0.5173, +0.1959, -0.3794, -0.4961, -0.2785, +0.1111, +0.2060, +0.1899, -0.5539, -0.0447, +0.0036, -0.2799, -0.1498, -0.1094, -0.4440, +0.4818, +0.6880, +0.2356, -0.5496, -0.2113, -0.1703, -0.2921, +0.0683, -1.0953, -0.1002, +0.0553, +0.3161, -0.3458, +0.3186, -0.1684, +0.4026, -0.4248, -0.4036, -0.3289, +0.2370, +0.1387, -0.0649, -0.0022, -0.4759, -0.4359, -0.3353, +0.0903, -0.0250, +0.3468, -0.2059, +0.2002, -0.9904, -0.0715, -0.3124, +0.3770, -0.0276, -0.2918, -0.1492, -0.0852, -0.0889, +0.2950, +0.8695, -0.0228, -0.0944, -0.1836, -0.7362, +0.1632, +0.2117, +0.6435, -0.2002, -0.1288, +0.0164, -0.1460, +0.0644, +0.0198, -0.2793, -0.7950, -0.0483, +0.1474, +0.1894, -0.8037, +0.2974, +0.0615, -0.4263, -0.4785, +0.1743, +0.2593, -0.1858, +0.2178, -0.1926, -0.3556, -0.2432, +0.2046, -0.5820, +0.2879, -0.4708, +0.8509, +0.3577, +0.2550, +0.3413, -1.0569, +0.2879, +0.0232, -0.7556, +0.5073, +0.1619, -0.0360, -0.0102, -0.5719, +0.3550, +0.4012, -1.0293, -0.3025, +0.0936, -0.0012, +0.1350, +0.1772, -0.1827, +0.1079, -0.4672, -0.0252, -0.1018, +0.1849, -0.1556, -0.1201, -0.3428, -0.3903, -0.2566, +0.8372, +0.3132, +0.1843, -0.6255, +0.3140, +0.1798, +0.1869, -0.2502, +0.4388, +1.1568, -0.4014, +0.2631, -0.3173, +0.0142, -0.2939, -0.1106, +0.3030, -0.5170, +0.2856, +0.4289, -0.3299, +0.7534, +0.5816, -0.2564, +0.5070, +0.4852, +0.2623, +0.1970, +0.3616, -0.6193, -0.1793, +0.0210, -0.2293, -0.1718, +0.0807, +0.6350, -0.3227, +0.0356, -0.3813, +0.6323, +0.3652, -0.8743, -0.5223, -0.1742, +0.1938, +0.3436, -0.5119, -0.5849, -0.4036, -0.0233, -0.3904, +0.1200, -0.0818, +0.1990, +0.0459, -0.0539, +0.9398, -0.0045, -0.0698, -0.4343, -0.0781, +0.0060, -0.2196, -0.4016, -0.6070, +0.0562, -0.7691], -[ -0.3860, +0.0791, -0.3898, -0.5043, -0.4549, -0.6375, -0.2157, +0.2738, -0.7894, +0.0813, +0.1801, +0.0214, +0.2810, +0.2822, +0.5982, -0.0565, +0.1509, +0.5034, -0.3431, +0.3426, -0.7581, +0.1471, +0.1432, +0.3965, +0.2289, +0.4660, -0.2454, +0.2353, -0.1525, +0.2397, -0.5659, -0.1843, +0.2855, +0.4170, -0.3937, +0.3418, +0.1446, -0.6249, +0.1890, -0.6094, +0.1218, +0.1057, -0.7992, +0.1085, +0.1285, -0.5628, -0.2180, -0.1600, +0.1030, -0.1063, -0.4119, -0.0105, -0.4171, +0.3092, +0.0484, -0.0898, +0.5886, -0.0764, +0.3808, -0.0798, -0.3437, +0.0970, +0.4133, -0.2516, -0.3865, -0.7970, -0.0801, +0.4444, +0.2776, +0.3863, -0.2188, +0.0038, +0.0669, +0.3210, -0.1873, +0.2938, -0.1219, -0.2582, -0.1280, -0.4652, -0.0100, +0.2850, -0.2579, -0.1508, -0.7712, -0.1309, -0.2088, +0.0910, -0.2283, +0.2323, -0.7601, -0.5738, -0.1597, -0.2803, -0.1103, -0.0360, -0.0508, -0.0276, +0.3678, +0.0276, +0.2942, +0.2701, -0.5376, +0.3828, +0.1981, -0.1043, +0.2363, -0.5346, +0.1067, -0.0331, +0.0019, +0.0576, +0.2378, +0.0604, -0.1174, +0.4285, +0.3119, -0.3825, +0.4253, -0.2359, -0.3904, -0.6871, -0.1475, -0.5278, +0.1583, +0.1035, -0.4274, -0.0762, -0.2780, -0.2022, -0.1799, +0.0676, -0.0396, -0.0494, -0.0205, -0.7031, -0.0131, +0.5255, +0.0344, -0.5309, +0.3199, +0.4990, -0.2665, -0.5841, +0.3605, -0.3052, +0.2339, +0.5482, -0.2090, -0.4799, -0.5788, +0.0693, -0.5827, -0.6693, -0.1209, +0.0051, +0.3364, +0.7258, +0.0469, +0.0422, +0.1166, -0.2848, +0.1417, +0.1901, +0.5696, +0.1524, -0.5883, +0.0395, -0.1056, +0.0025, +0.5005, -0.0367, +0.1368, -0.0481, +0.0874, -0.0182, -0.1565, -1.0415, -0.6076, -0.7494, +0.2299, +0.1756, +0.3119, +0.6301, -0.1121, -0.0148, -0.3940, +0.2079, -0.3014, +0.5987, -0.3975, -0.6104, +0.0045, -0.1189, -0.1511, -0.1999, -0.2634, +0.1380, +1.0944, -0.9428, -0.0394, +0.5239, +0.4029, -0.0221, +0.3607, -0.5516, -0.4142, +0.2815, -0.3676, -0.3439, -0.2217, -0.7357, +0.1000, +0.3033, -0.2043, +0.0236, -0.2583, -0.3035, -0.3942, +0.5926, +0.0954, -0.0237, -0.2574, +0.0850, -0.6190, +0.3560, -0.0584, +0.1168, +0.1846, +0.4138, -0.3106, +0.2316, +0.0216, +0.0137, +0.5665, +0.5562, +0.6883, -0.0115, -0.6647, +0.1450, -0.2434, -0.5387, +0.1876, -0.2866, +0.0605, +0.6689, -0.0915, +0.0917, +0.1052, +0.0363, -0.0319, -0.6879, -0.0675, +0.2310, -0.8089, +0.3723], -[ +0.4229, +0.4270, +0.2356, -0.3484, -0.2237, +0.1307, -0.1046, +0.3598, +0.3394, +0.3115, +0.3101, +0.0228, +0.2840, +0.0049, +0.6052, +0.3336, -0.1461, -0.0182, +0.2736, +0.1735, +0.0480, -0.5336, -0.0877, +0.6291, +0.0282, +0.0031, +0.2290, +0.9687, +0.4204, +0.3388, +0.5619, +0.2208, -0.3231, -0.1614, -0.1595, -0.5024, +0.1686, -0.0894, -0.2752, +0.6189, -0.1513, -0.0728, +0.2208, -0.0725, +0.1792, +0.4352, -0.6813, -0.0216, -0.1648, -0.2070, -0.1949, +0.2296, -0.2856, -0.1402, +0.0719, +0.2242, +0.1232, +0.4646, -0.0669, -0.2826, -0.1773, +0.0822, -0.0422, +0.1031, +0.2935, -0.0472, +0.1299, +0.0059, -0.4813, -0.4058, -0.0748, +0.0808, +0.1166, +0.1067, -0.1776, +0.3112, +0.2677, +0.4499, +0.0079, -0.0916, +0.6787, -0.0487, -0.1712, +0.2296, +0.1772, +0.0146, -0.0895, +0.1409, -0.1815, -0.1577, -0.2368, -0.2535, +0.1149, +0.6495, +0.1872, -0.0507, -0.1135, +0.5599, -0.2513, +0.0116, -0.0585, +0.1748, -0.2764, -0.1890, +0.3186, +0.1618, -0.3876, +0.1136, -0.1743, -0.1867, -0.2633, -0.1010, +0.5272, +0.5588, -0.1531, +0.0348, +0.1548, -0.2427, -0.4583, -0.0931, +0.1779, +0.2093, -0.1560, -0.0951, -0.0959, +0.0090, -0.1659, +0.2497, +0.2468, +0.4089, -0.1669, +0.0661, -0.2054, +0.2111, +0.2439, +0.4013, +0.1074, +0.2443, +0.1028, -0.3377, -0.0306, -0.1195, -0.0316, -0.2605, +0.2245, +0.1551, +0.5827, -0.5758, +0.2664, +0.0462, +0.3763, -0.2541, -0.2403, +0.0669, +0.4184, +0.0687, +1.1019, +0.0924, +0.0844, -0.0397, -0.0859, -0.4353, -0.0096, -0.1661, +0.1271, +0.2761, +0.0942, -0.1725, -0.2007, +0.2007, -0.1445, -0.1014, +0.1968, +0.2293, -0.0267, +0.3649, -0.0158, -0.0991, +0.1588, -0.0034, +0.2055, -0.3640, -0.1623, -0.2759, -0.2000, +0.1551, +0.0186, -0.0121, -0.5185, -0.2025, +0.1041, +0.5626, +0.1605, -0.4291, +0.2443, +0.0866, -0.2467, -0.0583, +0.2371, +0.2538, +0.2707, +0.2579, +0.3590, -0.1732, -0.1941, -0.2951, +0.4654, +0.1198, +0.0254, +0.0650, +0.2303, -0.1185, -0.0746, +0.0405, +0.0594, -0.1395, -0.1391, +0.1186, +0.5332, -0.1432, -0.0652, -0.1945, +0.2857, +0.4579, +0.1618, -0.5401, +0.1456, +0.3423, +0.0037, +0.0642, +0.3336, -0.3045, -0.3401, -0.0396, +0.3675, +0.2427, -0.0003, +0.2544, +0.0092, +0.1238, +0.3813, +0.1079, -0.2133, +0.0266, +0.0564, -0.2495, +0.5893, -0.2187, -0.0363, +0.4992, -0.0245, +0.1889, -0.1868, +0.0343, +0.0021, -0.4295], -[ +0.5624, +0.5244, +1.1537, -0.3811, +0.2929, -0.4693, -0.2401, +0.1836, +0.0468, -0.2819, +0.3010, -0.0939, +0.2295, -0.3802, +0.1431, -0.5094, -0.3139, -0.7033, +0.1794, -0.3107, -0.0280, -0.3516, +0.0463, +0.1379, -0.1570, -0.4129, +0.1580, +0.1719, +0.1194, +0.0970, +0.1049, +0.2108, +0.0114, -0.8098, -0.2840, +0.2364, -0.1820, -0.6280, +0.0534, -0.1084, +0.8025, +0.1524, -0.1555, -0.7489, -0.1177, +0.5430, +0.4334, -0.2143, -0.5367, -0.0785, -0.2689, -0.4543, +0.0527, +0.3577, -0.1779, -0.2836, +0.8765, -0.1937, +0.3911, -0.1291, -0.0954, +0.0156, -0.5684, -0.0410, -0.1403, -0.4817, -0.3337, -0.0847, -0.2622, +0.1174, -0.1269, +0.5907, +0.3469, -0.3825, -0.6290, +0.0742, -0.2097, +0.4888, -0.0936, -0.2703, -0.0956, -0.4033, -0.2361, +0.5223, -0.2553, -0.0538, -0.3152, +0.6726, +0.1216, -0.1680, -0.0066, +0.3602, +0.6010, +0.9734, +0.2522, +0.3680, -0.2906, +1.0990, +0.3866, +0.0715, +0.1100, +0.3074, +0.3532, -0.5895, +0.2867, -0.2685, -0.0029, +0.1792, +0.1617, -0.6058, -0.0048, -0.5717, +0.4372, -0.0204, -0.1151, +0.0124, +0.0027, -0.3694, -0.4507, +0.0552, +0.1964, +0.4374, -0.1422, +0.0491, -0.0341, -0.1115, +0.0511, +0.3014, -0.4342, +0.6064, +0.3295, +0.4313, -0.2629, -0.5352, -0.2052, -0.3167, +0.4702, +0.2742, +0.0134, -0.4007, +0.5050, -0.2813, +0.1980, -0.6544, +0.0826, +0.1806, -0.0648, +0.1827, +0.3590, +0.3368, -0.6408, +0.3966, +0.1512, +0.8573, +0.4235, +0.3146, -0.5076, -0.2190, -0.8601, +0.1152, +0.2164, -0.3868, -0.3902, -0.1044, -0.5915, +0.6380, +0.5943, +0.1447, +0.0521, -0.0816, +0.7581, -0.4140, +0.4961, -0.7968, +0.3954, -0.0736, +0.0766, +0.2917, -0.8580, +0.3801, -0.0187, -0.4229, -0.4230, -0.1170, -0.1522, +0.8434, +0.7469, +0.2187, -0.0908, +0.0212, -0.4522, -0.0893, -0.1505, +0.5252, -0.1451, -0.2759, -0.0012, -0.6781, -0.2071, +0.2403, -0.7187, +0.0990, -0.2661, -0.3666, -0.2372, +0.8656, -0.2389, -0.4868, -0.4217, -1.1268, +0.1114, +0.2025, -0.3469, -0.2646, -0.1757, -0.1538, +0.1070, +0.2120, +0.2543, -0.4064, +0.1545, -0.3761, -0.6566, -0.7240, -0.5681, +0.0797, -0.2896, +0.0101, +0.2762, +0.4879, +0.0963, +0.2626, -0.2179, +0.3526, +0.1730, -0.1817, +0.3930, +0.6529, +0.1045, +0.5078, +0.0067, +0.6965, +0.3727, +0.1999, +0.3009, +0.0907, -0.1314, +0.1022, -0.2083, +0.1748, -0.6207, -0.0545, +0.4149, -0.2202, -0.0126, -0.6584], -[ -0.1105, -0.5066, -0.1217, -0.0219, -0.2314, -0.2440, +0.4250, -0.3662, +0.3685, -0.0559, +0.2887, -0.1495, +0.4173, +0.0648, -0.0058, -0.7469, -0.0033, +0.1363, +0.3883, +0.0311, -0.6497, -0.4902, -0.0624, -0.1811, +0.1070, +0.0974, -0.2846, +0.3577, +0.1700, +0.3717, -0.4609, -0.2972, +0.4031, -0.4543, -0.1977, -0.2747, +0.1575, -0.6692, -0.1665, -0.1307, +0.2319, -0.4131, -0.5942, -0.4655, -0.1014, +0.2418, +0.3632, +0.8029, -0.0438, -0.5171, -0.3341, +0.4749, -0.0664, +0.3057, -0.0419, +0.4745, +0.5217, -0.0090, -0.0151, -0.0190, -0.3448, +0.1106, -0.7008, +0.1401, -0.3495, -0.4479, +0.2287, +0.3353, +0.0307, +1.1375, -0.1786, -0.0580, +0.1897, -0.3468, +0.2751, +0.2050, -0.1751, +0.2926, +0.0314, -0.2133, -0.2024, -0.1830, -0.1784, +0.3203, -0.3529, +0.0269, +0.0485, +0.0193, +0.0264, -0.0745, -0.6520, -0.7134, -0.2424, +1.0312, +0.2442, +0.0229, +0.1031, +0.0878, -0.4252, +0.2509, +0.2517, +0.1963, +0.1731, +0.2674, +0.5727, +0.4801, -0.5700, -0.6766, -0.4320, -0.7583, +0.1604, -0.0305, -0.0355, -0.0827, -0.5214, +0.2472, +0.3546, +0.2406, -0.2791, -0.3123, -0.2282, -0.2957, +0.8782, +0.3605, +0.0451, -0.1779, -0.5970, -0.1427, -0.0945, -0.1835, -0.5541, -0.2714, -0.0487, -0.2444, +0.3752, -0.7489, -0.2075, +1.0235, +0.5595, +0.3396, -0.2233, +0.9751, +0.0460, -0.3594, +0.3362, +0.1526, -0.3554, +0.1170, +0.1031, +0.3312, +0.6230, +0.0377, -0.1909, +0.5269, +0.0805, -0.0592, -0.3201, +1.1914, -0.5249, +0.1738, -0.2607, -0.4993, -0.0790, +0.4683, +0.2567, +0.2648, -0.5198, +0.2438, -0.2771, -0.0727, -0.3261, -0.3343, +0.4714, +0.2741, -0.6409, +0.1190, +0.0507, +0.0453, +0.2122, -0.2980, -0.2268, -0.2632, -0.7114, +0.8488, +0.0100, +0.0536, +0.2984, -0.5778, +0.0875, +0.5298, -0.2555, -1.0361, +0.0076, +0.2211, +0.2614, +0.2530, +0.2813, +0.2437, +0.8208, -0.3949, -0.2448, -0.4847, -0.0434, -0.1059, -0.0409, +0.3933, +0.5554, +0.0841, -0.2882, +0.2818, -0.2483, -0.1913, -0.2814, -0.4909, -0.2641, +0.7293, +0.1313, +0.4198, +0.0230, +0.2367, +0.0933, +0.0781, +0.3087, -0.2821, +0.1750, -0.5785, +0.1730, -0.4712, +0.2571, +0.8931, -0.0354, +0.1931, +0.5158, +0.7550, +0.5455, -0.1871, -0.1279, +0.0353, +0.1093, +0.1826, +0.0284, +0.1856, +0.5296, -0.0375, -0.2646, +0.2584, -0.1953, +0.4137, +0.4904, +0.4584, +0.0131, -0.5162, +0.4111, -0.2994, -0.2410, +0.6386], -[ -0.0529, -0.0337, -0.0008, -0.0969, +0.3042, -0.0727, +0.2463, -0.2513, +0.1415, +0.0340, -0.2776, +0.4820, -0.5910, +0.1575, -0.3979, -0.5543, +0.5850, +0.0275, +0.7907, -0.2118, -0.5613, -0.7892, +0.0597, -0.6083, -0.3940, +0.2998, -0.4040, +0.2687, +0.2786, +0.0835, -0.4674, +0.6028, -0.2207, -0.6619, -0.2012, -0.7794, -0.2553, +0.2305, -0.5068, -0.3434, +0.0368, +0.0844, -0.0747, +0.5436, -0.3218, +0.8670, -0.1575, -0.1187, +0.5184, -0.1424, +0.4724, -0.3528, +0.5929, -0.5555, -0.3594, +0.1229, -0.3187, -0.2588, +0.4644, +0.7221, -0.4024, -0.6459, -0.1477, -0.6202, +0.1348, -0.6919, +0.1328, +0.0213, -0.4582, +0.5509, +0.2543, -0.0944, -0.5059, +0.1311, -0.1147, -0.3212, +0.2962, +0.7153, +0.8564, +0.2782, +0.5192, +0.0646, +0.5851, -0.0685, +0.0947, +0.6730, +0.3049, +0.4542, +0.4048, -0.2100, -0.4074, +0.2691, +0.7875, +0.2767, -0.7385, -0.1959, +0.4533, -0.0623, +0.4262, -0.2231, -0.0451, -0.2309, +0.0035, +0.3236, +1.2310, +0.2735, +0.1851, -0.2490, +0.1693, -0.1645, -0.0551, +0.0283, +0.3653, -0.2211, +0.5787, -0.2694, -0.2530, -0.2490, -0.1417, -0.8537, -0.2393, -0.0663, +0.6025, -0.2388, +0.0623, +0.0263, +0.2946, -0.2239, -0.6176, +0.2180, -0.2331, +0.6327, +1.0505, +0.5110, +0.6078, -0.6245, -0.0374, -0.2031, -0.0518, -0.1839, -0.2437, -0.2380, +0.0742, +0.6278, +0.4345, +0.2395, -0.2263, +0.2927, -0.0953, +0.0038, +0.3625, -0.1873, +0.1451, +0.2754, -0.6118, +0.3579, +0.0852, +0.2393, +0.1032, +0.3982, -0.0807, +0.4287, +0.2912, +0.6175, -0.3558, +0.0829, -0.3103, +0.2046, +1.0141, -0.0623, -0.6440, +0.0253, +0.1550, +0.0342, -0.3978, +0.4109, -0.1687, +0.0461, -0.5398, +0.0486, +0.0490, -0.1721, -0.3378, +0.6468, -0.0889, -0.6319, -0.4637, -0.5414, +0.5585, -0.0529, +0.1803, +0.1396, -0.0908, +0.1601, +0.1543, +0.6017, +0.0443, -0.3548, -0.1201, -0.0943, -0.4511, -0.1699, -0.3429, -0.1585, -0.0633, -0.1315, +0.1835, -0.1221, -0.4423, +0.8834, -0.6186, +0.1607, +0.3044, +0.7339, +0.4527, +0.3987, +0.3763, -0.7825, -0.2901, -0.0850, +0.2857, -0.5259, +0.2818, +0.1929, +0.0291, -0.0911, +0.4416, +0.6494, +0.0383, +0.3328, +0.1512, +0.7562, +0.0755, +0.8561, +0.2323, +0.1669, -0.4790, -0.5652, -0.1829, +0.4719, +0.6092, -0.2017, +0.5142, +0.4980, +0.0881, -0.3568, +0.2365, +0.1395, +0.1212, +0.6318, +0.0359, +0.3403, +0.4685, -0.1878, +0.2517, +0.1493], -[ -0.2083, -0.0260, +0.3258, +0.5066, +0.2863, +0.4052, +0.0123, +0.2563, +0.2309, -0.4768, +0.0516, +0.1192, +0.1084, -0.1249, +0.4532, +0.2843, -0.1831, +0.2422, -0.2381, +0.0726, +0.2741, +0.0462, -0.1886, +0.1012, +0.1008, -0.1264, +0.6632, -0.1625, -0.5147, +0.4624, +0.1803, -0.5161, -0.4128, -0.4288, +0.2806, -0.3336, -0.2497, +0.0410, +0.0038, +0.2044, +0.2325, +0.0213, +0.0045, +0.2598, +0.0346, -0.4036, -0.2378, -0.1785, -0.3607, +0.1106, +0.7177, -0.6982, +0.0688, +0.1104, -0.0588, -0.1636, -0.0994, -0.3676, -0.3996, -0.0536, +0.3390, -0.6933, -0.0836, +0.2059, +0.4945, +0.1586, +0.0585, +0.0863, -0.4267, +0.1488, -0.1077, +0.1668, +0.1835, +0.1906, +0.2866, +0.3144, +0.2790, +0.0157, -0.2182, +0.2657, +0.2167, -0.0947, -0.0441, -0.6464, -0.7954, -0.0525, +0.3208, -0.0253, -0.1827, -0.4254, +0.4338, +0.5329, +0.4580, +0.2150, +0.3997, +0.3875, +0.1940, -0.4437, -0.3042, -1.1878, -0.0434, +0.1168, +0.0182, +0.1048, +0.3899, +0.0648, -0.1274, -0.2634, -0.2307, -0.9761, -0.1663, -0.3038, -0.2160, -0.1402, +0.5385, -0.2553, -0.3086, +0.0439, -0.6532, -0.0745, +0.3541, +0.2419, -0.7523, -0.1568, +0.2162, +0.2972, +0.0383, +0.3682, -0.1722, -0.1868, -0.0845, -0.0579, -0.4129, +0.1440, +0.1542, +0.0358, -0.1783, -0.3135, -0.1017, +0.4665, +0.2828, -0.2015, -0.2503, +0.2889, +0.3026, +0.3963, +0.0778, -0.1835, -0.4246, +0.5069, +0.2574, -0.6178, +0.3029, -0.5096, +0.7308, -0.2634, +0.4584, +0.5034, -0.1447, +0.2603, +0.2018, -0.4723, -0.4095, +0.6576, -0.4250, -0.0264, +0.0042, -0.3867, -0.1968, -0.2334, -0.0391, -0.1916, +0.1914, -0.4232, +0.0837, -0.1897, -0.0250, +0.1934, +0.2157, +0.7568, +0.0169, -0.2779, +0.3178, -0.1964, -0.0333, -1.0288, -0.1107, +0.4312, -0.0084, -0.1897, -0.5597, -0.0022, +0.0318, -0.2542, +0.4894, -0.5805, +0.2707, +0.0560, -0.3755, +0.5434, -0.1594, +0.2371, -0.0891, -0.0943, -0.2127, -0.1299, +0.1543, -0.1153, +0.0692, +0.0380, -0.6538, +0.2330, -0.0665, +0.4026, -0.1005, +0.1168, +0.4216, -0.1773, +0.0785, +0.1808, -0.1378, +0.3056, -0.2036, +0.0162, +0.4880, -0.2116, +0.4037, -0.2036, -0.0800, +0.5562, +0.3879, -0.5192, -0.1416, +0.0533, +0.1020, -0.1456, -0.1355, +0.3385, -0.5058, -0.4032, +0.3493, -0.4411, -0.0139, +0.2807, -0.1837, +0.0671, -0.6119, +0.0736, +0.3606, -0.2410, +0.0749, -0.0157, -0.3343, +0.3554, +0.1979, +0.2030], -[ -0.1630, +0.8033, -0.2517, +0.4036, +0.3533, +0.3641, -0.0190, +0.6133, -0.2718, +0.2941, -0.5713, +0.0361, +0.3658, +0.0323, -0.1720, +0.3743, -0.1167, -0.3882, -0.0042, -0.1993, +0.0256, +0.3965, -0.0961, -0.4982, -0.3928, -0.6158, +0.0410, +0.4310, -0.4115, +0.1456, -0.0019, +0.2790, -0.2709, -0.4058, -0.0687, -0.3264, +0.3198, +0.0474, +0.1652, -0.0713, -0.3119, +0.1937, -0.2375, -0.5965, +0.1654, +0.0844, -0.9814, -0.4059, -0.4492, -0.2002, +0.0872, +0.2544, +0.0879, -0.2091, -0.3545, -0.1401, -0.0453, +0.2282, -0.2122, -0.0747, -0.0418, +0.0138, -0.5893, +0.1114, -0.5020, +0.0668, +0.3154, +0.0069, +0.2654, -0.4152, -0.2947, +0.2258, +0.7437, +0.3427, +0.4182, +0.5325, +0.1291, +0.1909, +0.5678, -0.3805, -0.0421, +0.2424, +0.2749, +0.5621, +0.1377, -0.0221, +0.4114, -0.1261, -0.1624, -0.6155, +0.4752, -0.2507, +0.1536, +0.7439, +0.0714, -0.4068, -0.2027, +0.2450, -0.2482, -1.2059, +0.1134, +0.3696, -0.0129, +0.6222, +0.1096, -0.6353, +0.0354, -0.5319, -0.0294, +0.2395, -0.2834, -0.8008, +0.1279, +0.3035, +0.5145, -0.5900, +0.2664, -0.9317, -0.6036, +0.1441, +0.3434, +0.1115, -0.4732, +0.3431, +0.0302, +0.2419, -0.2887, +0.4316, +0.3958, -0.2476, -0.6515, -0.0535, -0.0818, +0.7593, +0.2052, -0.0848, +0.6733, +0.1807, -0.0344, +0.4157, +0.6392, +0.0160, -0.2128, +0.2152, -0.2498, -0.1442, -0.1466, +0.4211, -0.1174, +0.0688, -0.0343, -0.2996, -0.2390, -0.1482, -0.1236, -0.5340, +0.4127, +0.3404, -0.0271, +0.0362, +0.3076, -0.5510, -0.5605, +0.3985, -0.3112, +0.5644, +0.1053, +0.0224, -0.3328, -0.1248, +0.4258, +0.0425, +0.2908, -0.7342, +0.1442, -0.3422, -0.1424, -0.0024, +0.4707, -0.1100, -0.2919, -0.3181, +0.2676, +0.0720, -0.2861, +0.5424, +0.3398, -0.7202, +0.2625, -0.1575, -0.5846, +0.1372, -0.6338, +0.7932, +0.3278, +0.0454, +0.9399, -0.6666, +0.4108, -0.0999, -0.1583, -0.3266, -0.0743, -0.8118, -0.0114, -0.0114, +0.1483, -0.0822, +0.1590, -0.0164, -0.4225, +0.0296, +0.0376, +0.1332, +0.8777, -0.2784, +0.1108, +0.4284, +0.2080, +0.5937, -0.0762, +0.1321, -0.7058, +0.2642, -0.1766, -0.2328, +0.2267, -0.6154, +0.0222, +0.0358, +0.1609, -0.5507, -0.3027, -0.0953, +0.2567, -0.0089, -0.0134, +0.0098, -0.3628, +0.4511, +0.4691, -1.2691, +0.0027, -0.0902, -0.1027, -0.1560, -0.1749, -0.6574, -0.1820, -0.3448, +0.2449, +0.4351, +0.6435, +0.9319, -0.0110, +0.3945], -[ -0.0604, -0.0385, +0.0243, -0.1740, +0.2684, -0.3045, +0.1633, +0.0282, +0.0713, +0.3109, +0.0960, -0.2967, +0.4778, -0.1559, +0.1561, -0.1114, -0.0658, +0.1172, -0.2801, -0.0451, -0.1789, -0.0529, +0.8067, -0.4150, -0.0938, -0.2261, +0.2468, -0.2768, +0.5292, -0.2012, +0.2241, +0.1547, -0.1711, +0.2312, +0.0224, -0.1518, -0.0054, -0.4397, +0.0793, +0.0912, +0.1083, +0.3161, +0.0935, +0.1262, +0.0558, -0.0080, -0.4804, +0.1260, -0.1354, -0.4145, -0.2923, -0.0976, -0.1065, -0.0519, -0.0109, +0.2884, -0.3268, -0.4811, -0.2083, +0.0850, -0.0163, -0.6505, -0.2414, +0.0594, +0.2055, -0.1450, +0.2372, +0.0414, +0.0474, +0.1908, +0.0197, -0.2515, -0.0419, +0.1814, +0.2180, +0.1368, +0.4112, +0.0371, -0.1692, -0.4337, -0.5587, +0.1331, -0.6489, -0.5467, -0.0961, -0.2172, +0.2892, -0.0209, -0.7607, -0.0613, -0.2177, +0.0493, +0.0452, +0.1367, -0.0477, -0.2702, +0.0025, +0.3206, -0.2391, +0.0915, -0.5723, +0.0486, +0.5213, +0.1434, -0.0086, +0.0119, -0.0611, -0.0223, -0.3824, -0.2735, +0.0548, -0.3383, +0.2858, -0.2642, -0.6494, -0.1994, +0.2605, +0.4981, -0.0956, +0.1640, +0.2705, -0.0956, -0.1104, +0.1114, -0.0218, +0.1701, -0.2669, +0.1931, -0.1470, -0.8580, -0.2269, -0.1279, +0.5057, -0.0245, +0.2433, -0.1467, -0.0408, -0.1256, +0.1211, -0.3296, -0.1126, +0.1363, -0.0783, +0.2219, +0.0648, +0.3890, -0.1438, -0.1328, -0.3657, +0.1551, -0.3024, -0.0234, +0.4377, +0.2117, -0.4388, +0.1549, -0.1612, -0.0293, +0.2806, -0.2439, +0.0535, -0.1209, +0.1372, +0.0549, -0.2845, -0.0726, +0.1879, -0.3530, +0.3136, +0.1077, -0.2958, +0.0791, +0.3595, +0.1252, -0.0057, +0.1002, +0.1576, -0.5525, -0.0350, +0.1458, +0.3010, +0.0701, -0.2818, -0.1183, +0.3084, -0.0824, +0.4187, -0.2877, -0.6282, +0.2426, +0.2802, +0.3640, -0.1883, -0.0443, -0.0038, +0.0813, +0.0292, -0.3175, -0.0342, +0.0518, +0.1788, +0.2528, +0.0189, +0.2577, -0.1041, -0.2487, -0.6943, -0.0998, +0.4287, +0.0941, -0.1344, -0.0768, -0.2382, -0.1641, -0.5442, +0.2229, -0.1263, +0.1399, -0.1417, -0.4574, +0.0283, -0.1544, +0.7034, -0.2571, -0.0166, +0.0217, +0.0914, -0.1344, -0.0211, -0.2888, +0.1791, -0.1054, +0.0183, -0.3395, +0.0667, -0.0042, -0.0098, +0.1453, +0.1781, +0.1300, +0.2760, +0.4961, +0.0581, +0.1608, +0.2780, -0.3235, +0.0719, +0.0698, -0.1460, -0.0347, -0.1639, +0.2954, -0.1104, -0.2490, -0.1392, -0.0087], -[ -0.3873, -0.1086, +0.2818, +0.6089, +0.5552, -0.5349, -0.4191, +0.4252, +0.0934, -0.9037, +0.1787, -0.2919, -0.2846, +0.4180, -0.4215, -0.5845, +0.2762, -0.1890, -0.2204, -0.2292, -0.1561, -0.2889, +0.5721, +0.2256, -0.3629, -0.2072, -0.2430, +0.0982, -0.6797, +0.0817, +0.2831, -0.0412, -0.1841, +0.5098, -0.4321, -0.5305, +0.0957, -0.0409, +0.7618, -0.0843, -0.2969, +0.0132, -0.5480, +0.2721, +0.3925, -0.1087, -0.5450, -0.1698, +0.0314, -0.5032, +0.4958, -0.1937, +0.4468, -0.2818, -0.0676, -0.0824, -0.5812, +0.0977, +0.4011, -0.2376, +0.1616, -0.4104, -0.5350, -0.6448, +0.2401, +0.3156, +0.1719, -0.0670, -0.2020, +0.0062, -0.8353, -0.5981, +0.0855, +0.4144, -0.1439, +0.1614, +0.1421, -0.2431, +0.4887, +0.1487, -0.5455, +0.6469, +0.0729, +0.4778, -0.3328, +0.1526, +0.2894, +0.2329, -0.6997, +0.3250, -0.0956, -0.2460, -0.3948, +0.6003, +0.0883, +0.2300, -0.0257, -0.1697, -0.7986, -0.3919, -0.2691, +0.9123, +0.3895, -0.2259, +0.7632, -0.0059, +0.2576, -0.3932, +0.1147, +0.5811, -0.2835, +0.1391, +0.4620, +0.4002, +0.1610, -0.2132, +0.4510, +0.8536, +0.1313, +0.0734, -0.0638, -0.2237, +0.0366, -1.1905, +0.0877, -0.0866, +0.3330, +0.6648, +0.1260, -0.1443, -0.1309, +0.0328, +0.3587, +0.5146, -0.3491, -0.0683, +0.1027, +0.5340, +0.9418, +1.1656, +0.7438, -0.0251, -0.3482, -0.1106, -0.1757, -0.2750, -0.2914, +0.6366, +0.3000, +0.5684, -0.8142, -0.5114, +0.8020, -0.4726, +0.0972, +0.1371, -0.5818, +0.1902, -0.1773, -0.6902, -0.2600, -0.0559, +0.5165, -0.9283, -0.1847, +1.1466, -0.1085, -0.0942, +0.1068, -0.1707, +0.2687, -0.5010, -0.0259, -0.7022, +0.1907, +0.4933, -0.7855, +0.7699, -0.4488, +0.5000, -0.0920, +0.1106, -0.2690, +0.0378, -0.6596, -0.0999, +0.2606, +0.5119, +0.7676, +0.0506, -0.3632, -0.3758, +0.4912, +0.5948, +0.7927, -0.0793, +0.3817, +0.4105, -0.1519, +0.1110, +0.4474, +0.2290, +0.2596, -0.3288, -0.0206, +0.0363, -0.9011, +0.0482, -0.0441, +0.1798, +0.4861, +0.0678, +0.8799, -0.0102, +0.3364, -0.3373, +0.3512, +0.3915, -0.2318, -1.4868, +0.1940, -0.4263, +0.8845, +0.2389, +0.0456, -0.7254, +0.2828, +0.0455, -0.0071, -0.0098, -0.2452, -0.5783, +0.0624, -0.5328, -0.0060, -0.3435, +0.4397, -0.3391, -0.2034, -0.4274, +0.3980, +0.4091, -0.0007, +0.8107, +0.0757, -0.0889, +0.2736, +0.2013, -0.4045, -0.2994, +0.0547, +0.1567, +0.3037, +0.6441, -0.5334, +0.1535], -[ +0.1928, -0.1910, +0.2713, +0.0049, +0.0775, +0.4567, -0.3339, -0.1290, +0.1932, -0.2040, +0.1501, +0.0079, -0.4873, +0.6340, +0.0517, +0.0759, -0.1794, -0.2384, +0.6358, -0.2237, -0.1099, +0.0655, -0.4597, -0.0940, +0.0528, +0.3543, -0.1020, -0.1509, -0.3177, +0.0434, -0.0781, -0.2168, -0.0883, -1.0436, -0.5383, -0.4322, +0.4197, -0.0410, -0.3046, -0.7166, -0.1210, -0.2591, +0.0363, -0.2925, +0.1355, +0.0681, -0.5321, -0.1770, -0.0506, +0.0851, -0.3116, -0.1591, -0.4078, -0.0626, -0.4662, -0.0668, +0.1101, -0.0240, +0.4621, -0.5002, +0.1425, -0.2850, -0.0427, +0.4929, +0.0113, -0.0626, +0.5480, +0.0529, +0.3269, -0.2829, -0.1751, -0.2590, -0.2030, -0.4138, -0.3995, +0.6988, +0.5789, +0.0002, +0.1445, -0.5887, +0.3048, -0.3870, -0.2476, +0.1640, +0.2621, +0.6579, +0.4962, -0.1494, +0.3063, -0.0666, -0.0437, +0.2073, +0.5964, +0.2130, -0.0798, +0.2132, -0.0249, +0.4158, +0.0478, +0.0410, -0.0209, +0.4710, +0.0068, +0.1451, +0.0999, +0.2611, -0.6950, +0.1306, -0.0499, -0.3194, -0.0743, +0.2144, -0.2532, +0.0947, -0.1323, +0.2313, +0.1355, +0.2282, -0.1157, -0.0998, +0.0490, -0.0298, +0.0882, -0.2354, +0.4079, +0.1537, -0.5582, +0.0155, -0.2538, -0.1454, -0.0148, +0.0316, -0.0314, -1.0121, -0.3445, -0.0046, -0.0597, +0.5041, -0.2050, -0.2013, -0.1010, +0.3640, -1.0873, -0.0334, +0.0012, -0.3792, -0.3749, +0.1540, +0.2899, +0.2249, -0.0404, +0.0590, +0.0859, +0.0619, -0.0712, -0.0612, +0.1390, +0.0426, -0.6289, -0.6963, -0.7151, -0.2765, -0.3043, -0.5578, -0.1351, -0.2165, +0.2490, -0.0932, -0.6758, +0.4894, -0.0261, -0.1060, -0.1932, +0.4126, -0.1046, +0.1175, +0.0711, -0.5317, +0.3764, +0.1392, +0.1793, -0.0323, -0.2263, -0.0630, -0.0412, +0.2665, -0.1706, -0.2077, +0.0045, -0.3385, -0.0367, -0.1971, +0.5335, -0.4926, +0.2996, -0.7348, +0.1082, -0.0974, -0.2684, +0.0428, -0.3019, -0.2457, -0.2448, -0.0845, -0.5336, -0.4941, +0.3685, -0.1783, -0.0896, +0.0778, -0.0586, -0.1036, -0.0844, -0.3121, +0.3672, +0.3423, +0.0949, -0.5845, -0.3927, -0.9095, +0.0928, -0.0411, -0.6806, +0.2227, +0.3633, +0.1432, +0.4557, -0.5762, -0.0199, -0.0722, -0.3217, +0.0397, -0.1140, -0.1892, -0.0874, -0.1499, -0.0379, -0.1033, +0.1424, +0.2440, -0.3876, +0.3792, -0.0048, -0.0211, -0.1885, -0.4298, -0.3049, -0.2267, +0.2340, -0.2214, +0.2842, -0.1642, -0.2099, -0.3436, +0.3513, -0.0878], -[ +0.3072, -0.0547, +0.3483, -0.4340, +0.3283, +0.2137, -0.1034, +0.1982, +0.5060, -0.4595, +0.2966, -0.2420, -0.2981, +1.2919, -0.0165, +0.1176, +0.3250, -0.0004, -0.4600, -0.6616, -0.1650, -0.1192, -0.0537, +0.0913, -0.0903, +0.1295, +0.1568, +0.1669, -0.0651, -0.1866, -0.3209, -0.3178, +0.2232, -0.6816, -0.7092, +0.1485, -0.4370, -0.3723, +0.5470, -0.7707, +0.2090, -0.2902, +0.0992, -0.2133, +0.2717, -0.3028, -0.6999, -0.2038, -0.0038, +0.2010, -0.0260, +0.0734, -0.1715, +0.3141, +0.0077, +0.8627, +0.3253, -0.5952, -0.0898, -0.7904, -0.0460, +0.6855, -0.1028, +0.6134, -0.2765, -0.1757, -0.1567, +0.1514, +0.3166, -0.5042, +0.1964, +0.3042, -0.4995, -0.3853, +0.6321, -0.0750, +0.2913, -0.4436, -0.3940, +0.3038, -0.0940, -0.1147, -0.0359, +0.2774, +0.4768, -0.1198, +0.1693, +0.8125, -0.4381, -0.3993, -0.2734, +0.4975, +0.3375, +0.2229, +0.0757, -0.4655, -0.1243, -0.0942, +0.4416, +0.1345, +0.5677, +0.4047, +0.2563, +0.5206, +0.5387, -0.0975, -0.2977, +0.6186, -0.0666, -0.0302, +0.2397, +0.0478, -0.0548, +0.3686, +0.2249, +0.2032, +0.5494, -0.3635, -0.2614, +0.4654, +0.0797, -0.0060, +0.3418, -0.3745, +0.1590, +0.3155, +0.0844, -0.0233, -0.1994, -0.0868, -0.3165, -0.0285, -0.4171, -0.1908, -0.0647, +0.0533, -0.1332, -0.0958, +0.3082, -0.4095, -0.5597, +0.0217, -0.3498, -0.4610, +0.5215, +0.3392, +0.7356, +0.2266, -0.9680, +0.4634, +0.0951, +0.2808, -0.2277, -0.5593, -0.1764, -0.4385, +0.4954, -0.2478, +0.0605, -0.5160, +0.1327, +0.2336, +0.0484, -0.2347, +0.0842, +0.2654, +0.4756, +0.4406, -0.1713, -0.1365, -0.1804, +0.0216, -0.1850, -0.2467, +0.4316, +0.1420, +0.0906, -0.5287, +0.0439, +0.3154, +0.1070, +0.1547, +0.0180, -0.1193, -0.0015, -0.2823, +0.0313, +0.4792, +0.5320, +0.2673, -0.1636, -0.1906, -0.3274, -0.0464, -0.6293, -0.0710, +0.0461, -0.1440, -0.0307, +0.0972, -0.3520, +0.4878, -0.3575, -0.4695, -0.1821, -0.3621, +0.6874, -0.9189, +0.2046, -0.1966, -0.6270, +0.0135, +0.7724, -0.0125, -0.5699, -0.1082, -0.3355, -0.7369, -0.7858, +0.1086, -0.0776, -0.0166, -0.2090, +0.1518, -0.1928, -0.3897, -0.3940, -0.8580, -0.1063, +0.3519, -0.6698, -0.3029, -0.2830, +0.0967, +0.0923, +0.0100, -0.0527, +0.3101, +0.3103, -0.1208, -0.2935, -0.2899, +0.3867, +0.1209, -0.0489, +0.0440, -0.3510, +0.3300, +0.4593, -0.1032, -0.3500, -0.0078, +0.2249, -0.1392, +0.0627, -0.1944], -[ +0.5184, +0.0803, -0.0083, -0.6594, -0.0864, +0.3342, +0.0566, +0.4968, +0.2252, -0.2162, -0.0203, -0.1670, +0.4793, +0.1273, -0.1972, +0.0865, -0.1937, +0.0089, +0.1171, -0.9659, -0.3761, -0.2069, +0.1514, +0.2510, +0.6319, +0.2450, +0.2039, +0.4268, -0.7345, +0.8471, -0.0435, -0.2117, -0.0326, -0.5179, -0.0486, -0.5846, -0.9817, +0.5452, +0.1498, +0.4524, +0.4468, -0.5671, -0.2119, +0.3012, -0.5041, +0.0920, -0.0407, +0.1181, -0.4162, +0.0791, -0.2751, +0.0910, +0.4562, +0.3738, -0.4983, +0.1651, -0.1844, -0.2545, -0.6289, +0.1296, -0.9014, +0.0820, -0.5864, -0.1231, +0.0232, +0.0018, -0.5174, +0.5712, -0.7105, -0.6629, +0.1748, +0.0046, -0.5845, -0.1086, -0.3092, -0.3123, -1.0809, +0.0899, -0.4014, -0.7976, -0.0391, +0.0982, -0.4697, +0.3923, +0.1476, +0.3807, -0.4648, +0.0851, +0.5702, -0.0634, -0.1055, -0.6713, -0.7480, +0.3283, -0.3679, -0.2150, +0.5351, -0.2221, -0.5280, -0.4912, +0.0485, -0.3612, +0.4202, -0.1554, -0.0430, -0.3974, +0.5817, -0.5155, -0.2503, +0.1196, -0.7917, +0.2273, -0.4281, -1.4245, -0.5389, +0.5352, -0.7401, -0.0978, +0.1023, -1.0318, -1.3197, -1.2666, +0.4792, +0.1475, -0.0524, -0.2842, -0.3106, +0.2019, -0.0278, -0.3442, -0.5532, +0.5727, +0.0597, -0.2071, +0.2186, +0.0903, +0.1526, -0.3003, +0.3247, -0.4612, -0.1933, +0.3902, +0.0040, -0.2775, +0.4955, -0.1352, +0.1498, -0.4555, -0.3665, -1.0444, -0.5788, +0.3050, -1.5432, +0.0541, -0.2057, -0.6964, -0.3497, +0.1619, -0.3184, -0.1602, -0.0760, -0.2112, +0.0975, -0.1981, -0.1886, -0.3812, +0.0375, -0.9694, -0.1360, +0.0692, -0.5324, +0.5120, -0.4954, +0.4886, +0.2955, -0.3090, +0.4251, +0.0841, +0.1396, -1.0909, -0.5679, +0.1993, -0.0447, +0.5872, -0.3511, -0.5397, -0.3144, -0.4000, +0.0563, -0.1300, +0.4613, -0.2609, -0.0584, -0.5064, +0.1912, -0.9083, +0.0108, +0.3576, -0.0398, -0.0622, +0.1114, +0.1264, +0.2604, +0.1176, -0.4072, -1.0169, +0.0539, +0.0163, +0.3499, -0.1969, +0.5089, +0.2630, +0.1633, +0.0779, -0.7969, -0.0901, +0.2312, -0.5240, +0.6084, -0.4783, +0.5162, +0.0821, +0.2951, -0.7942, -0.2078, -0.5095, +0.0167, +0.2112, -0.1926, +0.3185, -0.0681, +0.2800, +0.4140, -0.3380, +0.2233, -0.5468, -0.3441, +0.0148, +0.2157, +0.3657, -0.1376, +0.2605, -0.2032, -0.1215, +0.4585, +0.7334, -0.6712, +0.1535, +0.3685, -0.5825, -0.2767, -0.2197, -0.7429, -0.1993, -0.1464, +0.0735], -[ -0.7965, +0.2629, -0.3641, -0.0626, -0.0429, +0.5894, -0.0266, +0.0202, +0.3595, +0.2567, -0.5254, +0.2279, -0.1807, +0.0374, -0.1798, -0.0248, -0.1697, +0.7554, +0.3027, -0.3142, -0.5842, +0.2756, +0.0850, +0.6091, +0.1871, +0.1744, +0.2162, -0.1842, -0.0896, +0.4951, +0.0555, +0.2170, -0.3822, -0.0852, -0.4407, -0.3642, -0.1595, +0.1308, -0.4574, -0.4443, +0.3187, -0.5393, -0.3358, +0.0061, +0.1515, +0.3339, -0.0338, -0.1077, -0.1904, +0.2343, -0.4787, +0.4045, +0.3367, +0.1810, +0.1198, +0.2085, +0.1171, +0.1410, -0.4175, -0.0777, -0.0162, -0.2418, -0.4404, +0.1182, -0.1484, -0.3837, -0.2716, +0.9192, -0.5980, +0.0164, -0.0676, +0.1445, -0.4289, +0.3698, -0.0916, -0.2299, -0.4889, +0.0221, -0.1522, -0.2114, -0.3194, +0.1000, +0.4856, +0.6702, +0.5378, +0.5476, -0.5158, +0.3501, +0.3193, +0.0048, +0.0979, +0.5666, +0.1881, +0.4641, -0.3140, +0.0569, -0.3550, -0.1549, -0.5644, -0.4590, +0.2496, -0.1924, +0.1212, -0.1491, +0.0540, +0.0642, +0.0373, +0.5172, -0.3301, -0.0700, -0.2263, -0.6373, -0.2441, +0.0696, +0.0212, -0.1843, -0.1400, -0.1433, +0.3976, -0.1841, -0.5983, -0.0924, +0.1833, +0.2221, -0.2174, -0.6898, -0.1900, +0.2157, -0.4985, +0.2790, -0.1558, +0.4142, -0.2368, +0.4029, +0.1495, +0.0234, +0.4369, +0.0044, +0.4147, +0.3862, +0.0812, +0.3121, -0.2023, +0.1794, +0.1479, +0.0373, -0.2834, -0.2594, +0.3424, -0.8541, +0.1782, +0.1617, -0.5495, +0.0406, +0.2994, +0.2560, -0.2585, -0.3135, +0.2067, +0.5947, +0.3801, -0.4504, -0.2577, -0.3943, -0.4763, +0.1398, -0.0359, +0.1908, -0.5668, +0.3558, -0.3180, +0.4955, +0.2839, +0.6498, +0.1098, +0.4782, +0.3244, +0.2254, +0.5747, -0.4656, -0.1461, -0.4692, +0.5830, +0.2749, +0.6163, -0.4600, -0.0413, -0.0588, -0.0158, -0.0683, +0.3214, +0.0578, +0.0239, -0.5602, +0.5065, -0.1712, -0.0228, +0.1343, +0.1291, -0.0758, -0.1619, -0.0224, +0.2445, -0.0252, -0.4415, -0.6900, -0.2795, +0.1341, +0.0613, -0.0373, +0.4260, +0.4599, +0.3407, +0.5489, -0.3008, +0.1931, +0.0749, +0.2871, +0.4078, -0.0986, +0.3080, -0.0051, -0.2283, +0.2836, -0.3693, -0.0614, +0.1109, -0.3100, -0.0806, +0.3147, -0.3219, +0.7905, +0.0798, -0.1535, -0.2498, +0.7941, -0.0327, +0.5824, +0.0160, +0.1549, +0.2620, -0.1596, +0.7257, +0.1044, +0.3187, +0.1343, -0.0669, +0.4054, -0.0455, -0.4084, -0.3878, -0.0166, +0.6921, -0.0285, +0.9433, -0.1218], -[ -0.0512, +0.0813, +0.4708, -0.3807, -0.1075, -0.2969, +0.1244, -0.4295, -0.6512, -0.1033, +0.2096, -0.5352, +0.0641, -0.3035, -0.3002, +0.2516, -0.2006, +0.3494, -0.1794, +0.1827, +0.0804, -0.2921, -0.8113, -0.8660, -1.5848, -0.1149, +0.0052, +0.0071, +0.0806, +0.7455, -0.1776, -0.6564, +0.1212, -0.0602, -0.4846, -0.1473, -0.2380, +0.2093, -0.1107, -0.4431, -0.4171, -0.0757, +0.4729, +0.1571, -0.0820, -0.5924, -0.3835, -1.1837, +0.5988, -0.6526, +0.1861, -0.2534, -0.0159, +0.1548, +0.5634, -0.0978, -0.3178, -0.4804, -0.6190, -0.1990, -0.7623, -0.3412, -0.9979, -0.2019, -0.3185, -0.1861, +0.1824, -0.6728, -0.3508, -0.6818, -0.3116, +0.1857, +0.4084, -0.4700, -0.2091, +0.2139, +0.1525, +0.2331, -0.5988, +0.0196, -0.3960, -0.0284, -0.6960, -0.2648, +0.1491, -0.1785, -0.3015, -0.8685, +0.0161, +0.1921, -0.3260, +0.0715, -0.1358, -0.3461, -0.2791, -0.2241, +0.0235, +0.0488, +0.2166, +0.0288, -0.2761, -0.7284, +0.1539, -0.3243, -0.5957, +0.4437, -0.3843, +0.3174, +0.8469, -0.0987, +0.9732, +0.2113, -0.3573, -0.0116, -0.1063, -0.0296, -0.2653, -0.3778, -0.0802, +0.0755, +0.4539, +0.0199, -0.2721, +0.2723, +0.0563, -0.3136, +0.2024, -0.1444, -1.2621, -0.1884, +0.0155, +0.1168, +0.1380, -0.4617, -0.1883, -0.7027, -0.5478, -0.2531, -0.1464, -0.1428, +0.1791, -0.0393, -0.8426, +0.1328, -0.3116, -0.1212, +0.0891, -0.1139, -1.0734, +0.6867, -0.1338, -0.6758, +0.6063, -0.6165, -0.0262, -0.1919, -0.0840, -0.3210, +0.0990, +0.0029, -0.3509, +0.6635, -0.3356, -0.1571, -0.1505, +0.4992, -0.0436, -0.9540, -0.1849, -0.8980, +0.1098, -0.4571, -0.7430, -0.3077, +0.0346, -0.2438, -0.0445, +0.2808, +0.0045, +0.2476, -0.7362, -0.2731, +0.1503, -0.1997, +0.0908, -0.0353, +0.2622, +0.0479, -0.6877, +0.6656, +0.1923, +0.6549, -0.2203, -0.4948, -0.5117, -0.2136, +0.2236, -0.3711, +0.4535, -0.1486, -0.5075, +0.0765, -0.2729, +0.4649, +0.4591, -0.3733, -0.1922, -0.2590, +0.1622, -0.2551, +0.3560, +0.2112, -0.6975, -0.0002, +0.2699, -0.4207, +0.1049, -0.5082, +0.2554, +0.0068, -1.2014, +0.1627, +0.0313, -0.1359, -0.2246, -0.8277, -0.9365, -0.3970, +0.1318, -0.2909, -0.0411, -0.1478, -0.1350, +0.0649, +0.5424, -0.5414, -0.3245, -0.3701, +0.5552, -1.1452, -0.4327, -0.1140, -0.5944, +0.0757, +0.2291, +0.0806, -0.0324, -0.6310, -0.0078, +0.8898, -0.2486, -0.3375, -0.4206, -0.4602, +0.0102, -0.0729], -[ +0.2231, +0.3173, -0.0702, -0.1413, +0.3630, +0.0478, -0.2829, -0.3525, -0.4640, -0.6596, +0.6059, +0.2922, -0.0951, -0.4636, +0.1949, +0.0845, +0.2330, +0.4575, -0.5897, +0.4094, +0.4541, -0.5243, +0.0315, -0.5415, -0.1056, -0.1441, +0.2472, +0.5429, -0.6499, -0.0498, -0.1821, +0.1782, +0.2881, +0.0893, -0.0683, +0.4504, +0.0474, -0.2768, +0.4885, +0.3597, -0.0372, -0.0298, -0.4024, +0.1947, +0.3832, -0.1270, -0.3843, -0.0161, -0.0555, +0.0254, +0.3661, +0.2531, -0.0127, +0.0341, +0.0446, -0.0797, -0.2388, -0.4859, -0.6212, +0.4788, +0.2570, -0.5957, -0.0312, -0.1559, +0.5009, +0.0624, +0.4179, -0.4131, -0.1276, +0.1625, +0.2163, +0.8920, +0.5055, -0.0280, -0.2696, +0.2273, -0.0684, -0.0705, -0.2392, -0.2574, +0.2450, +0.0174, -0.5111, -0.1996, +0.2828, +0.5778, +0.3985, +0.5622, +0.0952, -0.2706, -0.3987, -0.1670, +0.1039, -0.0357, +0.0421, +0.1834, +0.0575, -0.1379, +0.2255, +0.5537, -0.0457, +0.1809, -0.0600, +0.2121, -0.3457, -0.5309, -0.3005, +0.1737, +0.6471, -0.2727, +0.0922, -0.0341, +0.3028, -0.6708, -0.7573, +0.1604, -0.0985, +0.1403, +0.1524, -0.2359, +0.1509, -0.1184, -0.1708, +0.2405, +0.1952, -0.1873, -0.0322, +0.0600, +0.2269, +0.2563, +0.1669, +0.1011, -0.1165, +0.2702, +0.2584, -0.2787, -0.6225, -0.0692, +0.6966, +0.2593, -0.0347, +0.1093, -0.1492, +0.0828, +0.0884, -0.1782, +0.2816, +0.1541, +0.1549, +0.5712, +0.3360, -0.2116, +0.3689, +0.0701, +0.3623, -0.4735, +0.2300, +0.0562, +0.1613, -0.0611, +0.3147, +0.5273, -0.2332, +0.2123, -0.0864, +0.6972, +0.0064, +0.2382, -0.1302, -0.0954, +0.2197, -0.3143, +0.3939, -0.6717, -0.1365, -0.2402, -0.3721, -0.3682, +0.5175, +0.1968, -0.2817, -0.2128, +0.1979, -0.0096, +0.0705, -0.5336, -0.2215, -0.1843, -0.4587, -0.0453, -0.0791, -0.0651, +0.5663, -0.4257, -0.5931, -0.1239, +0.0500, -0.1164, +0.1246, +0.1341, -0.3892, +0.7515, -0.4242, +0.0581, +0.4249, +0.1211, +0.3171, +0.2212, +0.1332, +0.7268, -0.1078, -0.3145, +0.3934, +0.4874, -0.6525, -0.0661, +0.1070, +0.7895, +0.1197, +0.2029, -0.5007, +0.0442, -0.1394, +0.4720, +0.4866, -0.2555, -0.3168, -0.5696, -0.1688, -0.3181, -0.2915, -0.3881, -0.0265, -0.2200, +0.1404, -0.6199, -0.3604, -0.0700, +0.0408, -0.3860, -0.3302, +0.3118, -0.1705, +0.1135, -0.1005, +0.0690, +0.5005, -0.6298, +0.1497, -0.1779, +0.2164, -0.2882, +0.3715, +0.0424, -0.7261, +0.4560], -[ +0.2322, -0.2758, +0.0709, +0.1385, -0.1187, -0.5441, +0.1750, -0.2239, +0.0830, +0.6355, +0.2726, +0.6189, +0.2499, -0.5861, +0.0346, +0.0256, -0.3085, -0.1532, -0.1909, +0.0262, +0.4408, +0.2257, +0.3357, -0.5331, -0.1058, -0.0291, -0.2486, +0.3583, -0.2116, +0.1909, +0.0254, +0.1620, +0.0087, +0.0194, -0.3015, -0.0700, -0.4656, -0.0933, +0.0160, +0.1196, +0.0194, +0.0149, +0.0471, +0.2329, -0.1705, -0.2822, +0.6177, -0.2997, +0.1897, +0.0528, +0.0566, +0.1176, -1.0460, -0.5836, -0.3611, -0.4724, +0.5375, +0.1632, -0.3486, -0.1955, +0.3493, -0.0579, -0.1854, -0.0862, -0.6508, +0.5522, +0.2617, +0.0090, +0.1979, -0.2089, -0.1248, +0.0588, +0.1160, +0.0723, +0.5377, +0.0316, +0.0187, -0.0116, +0.3282, -0.3135, -0.0899, +0.0020, +0.2947, -0.2938, -0.3719, -0.0559, -0.2248, +0.0063, -0.3026, +0.2084, -0.0464, -0.1268, +0.2522, -0.3625, -0.0815, -0.1356, +0.5848, -0.0358, -0.1609, +0.3258, +0.0518, +0.3047, -0.0896, +0.6809, +0.0077, -0.1241, +0.1300, +0.4384, -0.2019, -0.7854, +0.1183, +0.0934, +0.6690, +0.0912, -0.5599, +0.2684, -0.0450, +0.4075, -0.0458, -0.2327, -0.0127, -0.0785, -0.1523, -0.2365, +0.0860, +0.1999, +0.4238, +0.4354, +0.8091, -0.1767, +0.1120, +0.0995, -0.1299, -0.3440, +0.2967, -0.0342, +0.0676, +0.2705, +0.1131, +0.3636, -0.1820, +0.3721, +0.0245, -0.3871, +0.2113, -0.1713, -0.1709, -0.1039, +0.2245, -0.1598, +0.4998, +0.0797, +0.0327, -0.1876, -0.7767, +0.3001, -0.2543, -0.0938, -0.1137, +0.2751, +0.1071, +0.4516, +0.0564, -0.3067, +0.1288, -0.1163, +0.0461, -0.2802, -0.5917, +0.0659, -0.4097, -0.0943, +0.3666, -0.2275, -0.0026, +0.3434, +0.0345, +0.0390, +0.1610, +0.1868, +0.4751, -0.2440, +0.4351, +0.0026, +0.3794, +0.2849, -0.5707, -0.3532, +0.4129, -0.1021, +0.0800, -0.3635, +0.1338, +0.0106, -0.5532, +0.6175, +0.0009, -0.1875, -0.0822, -0.0538, -0.3654, -0.4581, -0.2434, -0.4949, +0.0284, -0.0475, -0.1194, +0.2270, +0.1506, -0.3566, +0.2617, -0.0562, +0.0744, -0.1249, +0.3564, +0.2944, +0.0035, -0.4801, -0.2556, -0.2546, -0.1982, -0.0049, +0.2592, +0.0812, -0.1521, +0.1196, -0.1530, -0.3925, +0.2387, +0.1878, +0.3777, -0.0325, +0.0422, +0.2319, -0.2099, +0.2054, -0.0725, +0.0274, +0.5655, -0.3355, +0.1815, -0.2760, -0.1464, +0.0592, -0.2714, -0.0079, -0.3214, +0.0113, -0.0285, +0.0884, +0.0096, -0.1658, -0.4350, -0.1602, -0.1502, +0.0049], -[ +0.2578, -0.2151, -0.0484, -0.4220, +0.2895, -0.1153, +0.3661, +0.1997, -0.2032, +0.5744, +0.0025, -0.0264, -0.3569, +0.1683, +0.3743, +0.1954, -0.2521, -0.2803, -0.2351, +0.2497, +0.1904, +0.1875, +0.0503, -0.8046, -0.1465, +0.2836, -0.2984, +0.2776, +0.0907, +0.1161, +0.5081, -0.5098, +0.0090, -0.3628, +0.4225, +0.1453, +0.8913, -0.0169, +0.3739, +0.4506, +0.3537, +0.1990, -0.2703, +0.0100, -0.2971, +0.2740, +0.1234, +0.7226, +0.3892, +0.3845, +0.1433, +0.3106, -0.0412, -0.1564, +0.4518, +0.0029, +0.1794, +0.2916, -0.3304, +0.4086, +0.4175, -0.3042, -0.3911, -0.1413, -0.4538, -0.1822, +0.3785, -0.1094, -0.3386, -0.3952, -0.5305, -0.1487, -0.0467, -0.6590, +0.4045, -0.3466, +0.0285, +0.6080, +0.2785, -0.2534, +0.3569, +1.5359, -0.7934, -0.2072, -0.1672, +0.0569, +0.4661, -0.4456, -0.6130, +0.3331, -0.2174, -0.0829, +0.3910, +0.1475, +0.2547, -0.1320, -0.2519, -0.6075, -0.3935, +0.0064, +0.4444, +0.5184, -0.7840, +0.3668, -0.3571, +0.4174, -0.1454, +0.5925, +0.2831, +0.1834, -0.5015, +0.4151, +0.0352, +0.2168, +0.2842, -0.0533, -0.0841, +0.5367, +0.2866, +0.6917, -0.4440, -0.3789, +0.4334, -0.2247, +0.3120, +0.0973, -0.2329, +0.0259, -0.0148, +0.3054, +0.6109, +0.8870, -0.1356, +0.0374, -0.3931, +0.3006, -0.2096, -0.0338, -0.2468, +0.2071, -0.2958, -0.2882, +0.0034, +0.0454, +0.6936, -0.1251, +0.3636, +0.3131, +0.2639, +0.1820, -0.0054, +0.0818, +0.7231, -0.5507, -0.6314, +0.2751, +0.3468, -0.3488, +0.2031, -0.7318, -0.2352, -0.2291, +0.6734, -0.1190, -0.8416, +0.2178, +0.1588, +0.6340, -0.4323, -0.0958, -0.1881, -0.5349, +0.0063, +0.2842, +1.1198, +0.8661, -0.1721, -0.3184, +0.1608, -0.2824, +0.5032, +0.0365, +0.7645, -0.0876, +0.3774, -0.5191, -0.1691, -0.2192, -0.1696, +0.0054, -0.2725, -0.0014, +0.0414, +0.9709, -0.1692, +0.7667, +0.1603, +0.4346, -0.1098, +0.0930, +0.4456, -0.0648, +0.1824, -0.4276, -0.2995, -0.4359, +0.2410, -0.3211, -0.2445, -0.4564, -0.5370, +0.1444, +0.0235, -0.3045, -0.3147, +0.5138, +0.0223, +0.2390, -0.0600, -0.2841, -0.3721, -0.3381, -0.2307, -0.5700, +0.1522, -0.3587, -0.1330, -0.6048, +0.0349, -0.3733, +0.3265, +0.0018, +0.7519, +0.0522, -0.1438, -0.3233, +0.3648, -0.8636, +0.8459, -0.7191, -0.5285, -0.3889, +0.0892, -0.1845, -0.2511, +0.0409, +0.4088, -0.0646, +0.3481, -0.5509, -0.6002, -0.5183, -0.6377, -0.9446, -0.3485, -0.0470], -[ +0.3470, +0.0236, -0.0703, +0.1274, +0.1734, +0.0002, -0.6194, +0.3809, -0.0985, -1.2326, -0.4998, -0.6699, -0.5347, +0.1464, +0.3552, +0.0845, -0.1162, +0.3465, +0.6799, -0.2893, -0.2084, +0.5731, -0.3312, -0.4604, +0.2431, +0.0187, -0.6770, +0.8163, +0.4313, -0.1553, -0.3354, -0.2629, -0.1673, -0.1285, -0.3568, +0.2234, -0.0713, -0.1412, +0.0807, +0.3686, -0.0584, -0.0241, -0.0307, +0.0999, -0.4389, -0.2146, -0.0955, -0.0842, -0.5894, +0.2997, +0.2290, -0.1521, +0.7748, -0.2928, -0.2379, +0.3737, +0.4528, +0.7111, -0.3283, -0.5653, -0.1739, -0.0374, +0.2264, +0.4571, +0.3407, +0.4246, -0.2616, +0.0789, -0.0771, -0.1781, +0.1589, -0.8876, +0.0692, +0.1536, +0.0035, +0.0854, +0.1455, +0.1144, -0.1078, +0.0869, -0.5083, -0.0665, +0.0151, +0.4100, -0.0138, -0.3560, +0.1018, -0.3057, -0.1453, -0.3190, +0.1837, +0.4635, -0.2481, -0.1568, -0.0501, +0.1732, -0.7368, +0.2648, -0.3914, +0.1134, +0.1963, -0.5650, +0.1084, -0.5680, -0.2949, -0.0116, +0.4088, +0.2206, +0.0896, +0.5785, +0.4454, +0.0860, +0.6163, -0.0074, -0.7788, -0.4091, +0.0233, -0.5666, -0.0246, +0.1741, +0.0199, +0.3369, +0.2232, -0.3971, -0.0120, -0.5522, +0.3731, +0.4087, -0.0312, +0.7606, -0.1714, -0.1703, -0.3943, +0.4571, +0.6376, -0.0340, -0.4094, +0.1140, -0.2268, -0.3003, -0.0416, +0.1203, -0.2508, -0.0658, -0.3760, +0.0472, -0.0793, -0.1992, -0.3085, +0.0640, -0.9093, -0.4170, +0.1747, -0.4765, -0.0050, +0.5477, -0.7950, -0.0930, -0.2685, -0.1157, +0.7549, -0.1311, -0.0468, -1.2142, +0.2512, -0.1882, -0.3403, +0.3933, -0.1278, -0.0440, +0.5297, +0.8744, +0.1344, +0.1213, -1.0137, -0.4229, -0.2376, -0.2275, -0.2898, +0.0556, -0.4839, +0.1628, +0.2260, +0.1301, -0.1156, -0.1424, +0.1184, -0.3107, +0.0865, +0.3021, -1.6314, +0.3085, -0.2803, +0.2075, -1.0784, +0.7115, +0.4029, +0.0213, +0.2576, +0.2941, -0.8401, -0.2649, +0.7080, +0.6384, +0.3846, +0.5345, +0.3249, +0.0809, +0.4128, +0.0475, -0.3442, -0.1171, +0.0976, -0.3726, +0.1276, +0.2890, +0.4393, -0.3672, +0.5297, +0.0899, +0.6016, -0.2352, -0.1026, +0.0188, +0.4128, +0.1812, -0.0004, +0.5140, -0.4177, +0.0561, -0.7804, -0.2100, -0.0284, +0.0548, +0.3153, +0.2281, -0.3679, +0.2286, -0.8541, -0.0629, +0.1990, -0.0952, -0.0994, -0.3352, -0.6629, -0.1386, +0.0212, +0.5544, -0.0299, -0.6000, +0.1283, +0.2294, -0.1090, -0.7048, +0.3655, +0.1906], -[ +0.4614, +0.1244, -0.2254, +0.0849, +0.0238, +0.1363, +0.4321, +0.3284, +0.2506, -0.3205, -0.3982, -0.0733, -0.7915, +0.5299, -0.2234, -0.4117, +0.1365, +0.2549, +0.1042, -0.1080, +0.1016, -0.0297, +0.0800, -0.1427, -0.1717, -0.2678, -0.1964, +0.7200, -0.7181, +0.0003, -0.3467, -0.1888, -0.0331, +0.0246, -0.1097, -0.0526, +0.3527, +0.0309, +0.3776, -0.3092, +0.1089, -0.3447, +0.2087, +0.3543, +0.0975, -1.0214, +0.2059, +0.2187, +0.1224, +0.7836, +0.3679, +0.0909, +0.0226, -0.4494, +0.1137, +0.5117, -0.5085, +0.0655, -0.3778, -0.1702, -0.0921, +0.0665, -0.2734, +0.2683, +0.6687, -0.5825, -0.0654, +0.0567, +0.3831, +0.0977, -0.1744, -0.0056, -0.4966, +0.1574, -0.0601, +0.3370, -0.1972, -0.1924, +0.3723, +0.0843, -0.9853, -0.9591, +0.0051, -0.3834, -0.0472, -0.1511, -0.2811, -0.1401, +0.1633, +0.4066, +0.0935, -0.2130, -0.1155, -0.1052, +0.0680, -0.4113, -0.2239, +0.1563, +0.4855, -0.5805, +0.4190, -0.1257, -0.2717, -0.2551, +0.1860, -0.0433, -0.0878, -0.2402, -0.1551, +0.1975, +0.4538, +0.0888, -0.0738, -0.2888, -0.3898, -0.3324, -0.4203, -0.0684, -0.1386, +0.4527, +0.3098, -0.0484, +0.0553, +0.5583, -0.0933, +0.7588, +0.3829, -0.0817, -0.3145, -0.0538, -0.1090, -0.0618, +0.2205, +0.1486, +0.2595, -0.2595, -0.5699, +0.2871, -0.3156, +0.0720, +0.0585, +0.4955, +0.2350, +0.1939, +0.0535, +0.4805, +0.5479, -0.1704, +0.5429, +0.1054, +0.0403, -0.0070, -0.2445, -0.7055, +0.0093, +0.3051, +0.6282, +0.2099, -0.2567, +0.3533, -0.4038, +0.0487, -0.3722, -0.4337, +0.1436, -0.1472, -0.1534, +0.6739, +0.6938, -0.4781, -0.0146, +0.8101, +0.0512, +0.1298, -0.5129, -0.2966, +0.2577, +0.2921, -0.0191, -0.1458, -0.0041, -0.1298, +0.6387, -0.1128, -0.1603, +0.3248, -0.3078, -0.1514, +0.2056, +0.1900, +0.0394, +0.3364, +0.2788, -0.5606, +0.0048, -0.1431, +0.1906, -0.1030, +0.1312, -0.0208, +0.2726, -0.1126, -0.2169, +0.3120, +0.0533, -0.2043, -0.5326, +0.1451, +0.3551, -0.1062, -0.0664, -0.4895, +0.3986, -0.0967, +0.5868, +0.0180, -0.2444, -0.4126, +0.2805, +0.1537, +0.3417, -0.1018, -0.3135, -0.2126, +0.1346, +0.0770, +0.0631, +0.3710, -0.0147, +0.3323, -0.3385, +0.0356, -0.3499, +0.1794, +0.0727, +0.1667, -0.1528, -0.2611, -0.2323, +0.0985, +0.1386, -0.2214, -0.1070, +0.6617, -0.5724, -0.1000, +0.4045, +0.1668, +0.3108, -0.0460, +0.5771, +0.2125, -0.7659, -0.5090, +0.1979, +0.1970], -[ -0.1494, -0.0074, -0.2486, -0.0619, -0.2601, -0.0342, -0.1412, -0.2597, -0.2441, -0.1161, +0.0024, +0.0157, -0.2004, -0.2860, -0.0830, -0.5226, -0.1684, -0.3521, +0.0000, -0.0436, +0.0362, -0.3866, -0.1068, +0.0758, +0.2663, -0.2531, -0.0892, -0.2260, -0.0599, -0.2068, -0.0168, +0.2437, -0.1488, -0.1798, -0.0402, +0.1860, +0.5077, -0.5751, -0.0809, -0.1923, +0.0066, +0.0772, -0.1960, -0.1024, -0.1667, +0.0242, +0.1886, -0.0812, -0.0244, -0.0643, +0.0677, -0.1468, -0.0780, -0.3370, -0.2954, -0.0989, +0.2775, -0.0226, -0.0475, +0.2101, +0.2209, -0.6080, +0.1872, -0.1776, -0.4992, -0.2945, -0.3344, -0.0845, -0.3606, +0.0126, -0.0688, +0.0342, -0.0649, +0.1540, -0.0778, +0.0253, -0.0490, -0.2337, +0.1354, +0.0149, -0.4493, -0.2696, +0.1376, +0.2461, +0.0446, +0.1475, -0.1516, -0.2356, +0.1296, -0.1316, -0.2448, -0.0931, +0.2260, -0.1627, -0.0310, -0.5173, -0.0762, +0.4318, -0.2203, -0.0267, -0.0521, +0.1225, +0.0412, -0.3014, -0.1796, -0.3850, -0.3181, -0.4445, +0.0253, -0.1572, -0.1225, +0.0927, -0.3195, -0.0043, -0.0820, -0.4450, -0.0957, -0.2946, -0.0323, +0.1183, +0.1699, +0.1888, +0.0658, -0.6543, -0.3006, -0.2522, +0.4382, -0.3205, +0.3795, +0.0849, +0.1059, +0.0357, -0.4126, -0.0928, +0.1669, +0.1427, +0.0095, +0.3791, -0.2461, -0.2229, -0.1146, +0.2011, +0.1071, -0.0279, -0.0277, +0.0687, -0.2531, -0.2150, +0.1363, +0.2107, -0.4138, -0.0100, +0.0845, -0.0646, +0.0416, -0.4556, -0.0460, -0.2249, -0.1669, -0.0137, -0.1808, -0.2762, -0.3605, +0.1372, +0.6296, -0.2529, -0.1264, -0.0806, +0.0142, -0.1760, -0.0278, -0.1505, +0.1517, +0.2794, -0.0259, -0.4659, +0.1712, +0.1465, -0.8625, +0.0120, +0.1523, -0.2759, -0.4592, +0.4723, -0.3186, -0.0459, -0.1605, -0.5290, -0.2515, -0.3380, -0.0810, -0.1196, -0.1668, +0.2977, -0.1318, -0.0039, +0.0339, -0.3300, -0.0198, -0.0473, +0.2448, -0.1608, -0.3963, -0.3009, -0.1562, -0.2508, -0.4875, +0.2240, -0.3448, -0.2595, -0.5280, -0.2364, -0.2395, -0.4139, -0.1633, -0.4250, -0.1189, -0.0741, +0.0460, -0.0644, +0.0342, +0.0683, -0.5296, -0.1418, -0.3667, -0.1310, -0.2000, -0.0067, -0.1744, -0.1850, -0.1586, -0.3130, +0.2283, +0.4354, -0.0553, -0.3837, -0.1445, -0.0155, -0.0589, +0.3434, +0.2122, -0.2780, +0.0918, -0.1053, -0.1764, -0.1750, +0.1941, -0.2997, +0.3181, +0.0495, -0.1801, +0.4192, +0.0653, +0.1235, +0.0761, +0.0532], -[ -0.1733, -0.3099, +0.1334, -0.4379, -0.5440, -0.2204, +0.0112, -0.1119, -0.9754, +0.2391, +0.5680, +0.7700, -0.6843, +0.1358, +0.6131, -0.1825, +0.1277, -0.7265, -0.5487, -0.0797, +0.7555, -0.7688, -1.2999, +0.1691, +0.0426, -0.3087, -0.6255, -0.2799, +0.8496, -0.6167, -0.2323, -0.3491, -0.1348, -0.1602, -0.2058, -0.6904, +0.1864, -0.1037, +0.3334, -0.3396, +0.3347, +0.5756, -0.3487, -0.3210, -0.3064, +0.3238, +0.2061, -0.2080, -0.5619, -0.7243, +0.0951, -0.6572, +0.3207, -0.2600, -0.2519, +0.0627, +0.0220, -0.8584, +0.2993, +0.9612, +0.1269, -0.2133, +0.5012, +0.5991, -0.6357, -0.3690, -0.1750, -0.8718, -0.3143, +0.2718, -0.1715, -0.6022, -0.1628, +0.4620, +0.3210, +0.3082, +0.1325, +0.1648, +0.7221, +0.2690, -0.5871, -0.1823, +0.2055, +0.4005, -0.4414, -0.3821, +0.1012, -0.7868, -0.2292, +0.4885, -0.4301, +0.2379, +0.4592, -0.0894, +0.2064, +0.7584, +0.2391, +0.1947, +0.7335, -0.1394, -0.3035, +0.1886, -0.5591, -1.1044, -0.7926, +0.6704, -0.1361, -0.1614, +0.1420, -0.2682, +0.1931, +0.5194, -0.2239, -0.8155, -0.0111, +0.1564, +0.1142, -0.2085, -0.4739, -0.3238, +0.3031, +0.2838, +0.2723, +0.6445, -0.2792, +0.0789, +0.7072, -0.7781, +0.0003, -0.6616, -0.3762, +0.5568, -0.0036, +0.4662, -0.2989, -0.3946, -0.4024, +0.3801, +0.0292, -0.1805, -0.5821, +0.3146, +0.0507, +0.1874, +0.5570, +0.9825, +0.6936, -0.5647, +0.4156, +0.4233, -0.3316, -0.0044, +0.4042, +0.2139, -0.6874, +0.3974, +0.3743, +0.3222, +0.3958, +0.4023, +0.0368, +0.5385, -0.3811, +0.4015, +0.2308, +0.3310, -0.3009, -0.4256, +0.0450, +0.6367, +0.2608, -0.1301, -0.0058, -0.6065, -0.4536, +0.6898, -0.3143, -0.0573, -0.2756, +0.1989, +0.2822, +0.0952, +0.4866, +0.5874, -0.6634, -0.1995, -1.2794, -1.1322, +0.0302, +0.4904, -0.4773, +0.2217, -1.1153, +0.2464, -0.4968, -0.1647, -0.0397, -0.0059, -0.1705, -0.4252, -0.0054, -0.0629, +0.4485, +0.5599, -0.1857, -0.3878, -0.3499, +0.1577, -0.2928, -0.1712, -0.3119, +0.2417, +0.4235, +0.9101, +0.5335, +0.4842, -0.3326, +0.6003, +0.1091, -0.4364, -0.3208, -0.2328, +0.4226, -0.6342, +0.1291, +0.0972, -0.1952, -0.0576, +0.5380, +0.2657, -0.6526, -0.2199, +0.2124, +0.9879, -0.0651, -0.6558, -0.5852, +0.2433, -0.3553, +0.3270, +0.2552, +0.1533, -0.3375, +0.2656, -0.3496, -0.4254, +0.1945, +0.3905, +0.3987, +0.1434, +0.3354, +1.3399, -0.5902, +0.3367, -0.7169, -0.1113], -[ -0.0522, +0.0749, -0.1948, -0.0576, -0.1452, -0.3926, -0.3979, -0.4067, -0.2218, +0.1346, -0.0353, -0.2536, -0.2255, -0.4559, -0.1121, -0.0297, -0.2759, +0.0992, -0.3160, +0.5370, +0.1210, +0.2116, +0.1465, -0.4094, -0.1759, +0.1335, +0.3823, -0.0989, -0.3462, -0.0686, +0.2673, -0.2791, +0.3711, +0.1900, +0.0121, +0.1904, +0.0738, +0.4595, -0.3506, -0.3047, -0.2056, -0.2647, +0.0579, -0.2468, +0.1791, -0.4010, -0.0366, +0.0650, -0.4809, +0.3596, -0.1573, +0.1980, -0.2555, +0.0458, -0.0152, -0.5610, +0.0938, +0.4369, -0.1906, -0.0692, -0.2466, -0.3620, -0.1047, +0.1867, -0.7085, -0.0923, -0.0763, +0.5301, +0.3682, -0.2773, -0.3573, -0.2320, -0.0958, -0.2935, -0.4592, -0.4119, -0.5022, -0.1067, -0.4148, +0.0747, -0.2146, -0.1750, -0.1532, +0.0859, -0.0194, -0.6582, +0.2327, -0.6181, -0.4285, +0.1799, +0.4567, -0.1185, -0.3542, -0.1146, -0.1077, +0.0226, -0.5222, +0.0445, -0.0621, +0.0038, -0.1199, +0.0319, -0.0226, -0.4800, -0.2098, -0.5220, -0.8088, +0.2286, -0.6296, -0.3670, +0.2378, -0.6727, +0.0123, +0.6555, -0.0135, +0.0225, +0.3556, +0.0240, -0.2004, -0.3761, +0.0391, -0.1282, -0.2271, +0.0977, -0.7212, +0.0903, -0.1316, -0.7634, +0.0132, -0.5483, +0.2289, -0.3918, +0.3746, -0.1528, -0.1935, +0.0649, +0.2094, -0.0387, +0.0378, +0.1150, +0.2043, +0.2351, +0.1216, -0.2713, +0.0587, -0.4068, -0.3182, -0.0546, -0.1969, -0.0932, +0.6839, -0.3287, -0.1070, +0.4961, +0.2748, -0.2509, +0.0170, -0.0119, -0.2525, -0.2994, +0.0267, +0.1139, +0.2457, +0.1394, -0.2091, -0.2575, +0.4638, -0.1481, -0.0114, -0.2528, -0.4516, -0.2808, +0.2608, -0.2778, -0.2919, +0.1247, -0.3770, -0.4415, -0.6091, +0.2348, -0.0095, -0.5020, -0.3438, -0.6165, -0.4142, +0.1788, -0.1336, -0.0370, +0.0103, -0.1020, -0.3011, -0.2074, +0.1328, +0.1979, +0.2041, +0.1586, -0.2257, +0.4309, -0.1901, +0.1487, -0.3814, -0.3200, -0.2691, -0.2505, +0.2478, -0.3150, -0.0530, -0.1155, +0.2691, +0.0888, -0.1430, +0.5245, -0.6309, -0.3005, -0.0914, -0.0340, -0.0943, +0.0669, -0.5774, +0.1006, +0.2070, +0.0288, -0.0315, -0.0734, +0.1869, -0.2744, -0.4600, +0.0847, +0.0674, -0.1809, -0.3319, +0.1834, -0.7156, -0.0942, +0.1443, +0.2181, -0.4280, -0.2609, -0.0947, -0.0040, -0.3331, -0.4528, -0.3408, -0.1499, +0.2408, -0.1694, -0.0112, -0.1242, -0.1479, +0.0361, +0.0137, -0.2167, +0.1692, +0.1449, -0.0152, -0.3637], -[ +0.4609, +0.4973, +0.3307, -0.0988, +0.1987, -0.1389, -0.1791, -0.3746, -0.2929, -0.1272, -0.0960, +0.3150, +0.2584, -0.5723, +0.1043, +0.2004, +0.6648, +0.4995, -0.0043, +0.6453, -0.4124, +0.0971, +0.4109, +0.2949, -0.3463, +0.2143, -0.0300, +0.4983, -0.5701, +0.3624, +0.0052, +0.5511, +0.3189, -0.3408, +0.0992, +0.0798, -0.3854, +0.0549, +0.0622, +0.3307, -0.1401, -0.2774, -0.0753, -0.2243, +0.2118, -0.3820, -0.4723, +0.1457, -0.3691, +0.7127, +0.0844, -0.1668, +0.6801, +0.1391, -0.1714, +0.4738, +0.2232, +0.9034, +0.2628, +0.3406, -0.0911, +0.1640, +0.0429, -0.7307, -0.7418, +0.0461, -0.1796, +0.5751, -0.1606, -0.0764, -0.3161, +0.4885, -0.1520, +0.3881, -0.2386, -0.1066, -0.2651, +0.0431, -0.4022, +0.4025, +0.6519, +0.6172, -0.2776, +0.4548, +0.2564, -0.5354, +0.3651, -0.5620, -0.1692, -0.2334, +0.3685, +0.0569, -0.0052, -0.1866, +0.5608, -0.4856, -0.3394, -0.3276, -0.3217, +0.4911, +0.1259, +0.0675, +0.1713, -0.2035, -0.0191, -0.5426, +0.0971, +0.3616, +0.0472, +0.1033, +0.0903, -0.3694, +0.5020, -0.2848, -0.1136, +0.4214, -0.2146, +0.4534, +0.0440, +0.2719, -0.0163, +0.0720, -0.2797, +0.6593, -0.2500, +0.1932, -0.2689, +0.1341, -0.4562, -0.4490, -0.6248, -0.0397, +0.1256, -0.0360, -0.2689, +0.0008, +0.2862, -0.1358, +0.3047, -0.3346, +0.8857, +0.1398, +0.4095, -0.0844, -0.3719, -0.0429, -0.8264, -0.1790, +0.0563, -0.2455, -0.2609, -0.0703, -0.2060, -0.3252, +0.0511, -0.6232, +0.4740, +0.0351, +0.1390, -0.0587, -0.1078, +0.0788, -0.0848, -0.0472, -0.4097, +0.1644, +0.2914, +0.0228, -0.6242, +0.8527, -0.0794, +0.0981, +0.4766, +0.3430, -0.4821, -0.7128, +0.0331, +0.0206, -0.0470, +0.1688, -0.4564, +0.0463, -0.1390, -0.4252, -0.0319, +0.3996, +0.4145, -0.3182, +0.3373, -0.2984, +0.0040, -0.3554, -0.0264, -0.1834, -0.2077, -0.2816, +0.4154, -0.2558, +0.4614, +0.2225, -0.0588, +0.8450, -0.0497, -0.1949, +0.2982, +0.4984, -0.7147, -0.0006, -0.0262, +0.3544, +0.2482, -0.3662, -0.1473, -0.0448, +0.2256, -0.0478, -0.2083, -0.5149, -0.8000, -0.2323, +0.0022, +0.4187, +0.4536, -0.1452, +0.2385, +0.0423, -0.2808, +0.3578, +0.1155, -0.0172, -0.1248, +0.6660, -0.5671, -0.1860, +0.1106, +0.1879, +0.4573, -0.4262, -0.2867, +0.1216, -0.2313, +0.0281, +0.1500, -0.4915, -0.1359, +0.1732, -0.3180, -0.1147, -0.5960, +0.1497, +0.0402, -0.6748, -0.1802, -0.0042, +0.0301, -0.5793], -[ -0.5448, +0.6276, -0.3676, -0.0213, +0.0381, -0.0591, +0.1668, +0.1909, -0.0016, +0.1368, -0.3459, +0.0419, -0.1887, +0.1576, -0.0037, -0.2785, -0.0993, +0.1978, +0.1916, -0.2636, +0.1032, -0.0536, -0.6819, +0.3311, -0.4134, +0.1290, -0.1772, +0.4112, -0.3931, -0.0256, +0.2944, +0.2324, -0.0142, -0.0009, +0.3130, -0.0683, -0.4951, -0.2647, -0.2144, +0.4581, +0.0649, -0.0890, -0.1031, -0.5112, +0.0401, -0.1579, -0.4367, -0.0474, -0.0509, -0.0822, +0.0775, -0.2251, -0.1946, -0.1833, -0.2938, +0.3816, -0.2435, +0.2252, +0.4668, -0.0095, +0.0319, -0.0327, -0.0088, +0.3350, +0.0195, -0.3400, -0.2097, +0.0019, +0.0903, +0.2507, -0.2788, +0.0517, -0.4184, -0.3254, +0.3744, -0.2706, -0.0821, -0.4302, +0.2330, +0.1593, -0.1244, -0.5216, -0.4658, +0.1896, +0.4824, -0.0368, +0.0836, -0.1027, +0.0337, -0.3111, -0.1281, -0.0872, -0.1686, +0.0010, -0.0085, -0.1793, -0.4524, -0.2057, +0.0118, +0.0981, -0.2322, -0.2261, -0.2071, -0.2309, -0.1682, +0.0994, +0.0321, +0.1503, +0.1016, -0.5669, -0.3556, +0.1198, +0.1040, -0.1735, +0.0976, +0.0604, -0.1074, +0.2037, +0.1371, -0.4665, +0.0375, -0.0609, +0.1692, -0.1694, +0.1450, -0.0499, -0.0731, -0.4864, -0.0193, -0.1190, +0.2186, -0.2553, +0.3666, +0.0280, +0.4568, +0.0260, +0.2185, +0.0980, -0.0486, -0.1653, -0.0936, -0.6662, -0.0827, -0.4977, -0.0913, +0.1309, -0.0973, +0.1578, +0.0051, +0.1655, +0.0652, +0.1608, +0.3096, -0.3688, -0.7718, -0.3221, +0.6079, -0.0514, +0.1934, +0.3070, -0.4531, -0.2471, -0.0934, +0.0740, -0.1805, +0.2102, -0.2019, -0.0823, -0.1200, -0.0351, -0.2867, -0.1201, -0.0922, -0.2067, -0.0089, -0.1212, -0.6037, +0.4882, +0.4936, -0.3733, -0.1052, +0.4188, +0.0080, -0.0994, +0.2315, -0.1722, +0.0554, -0.1736, -0.1960, -0.1542, -0.0089, -0.0707, -0.8434, -0.1227, -0.0577, +0.2902, -0.0792, +0.3341, -0.5379, +0.1294, -0.1703, -0.4620, -0.1669, +0.0027, +0.0215, -0.2757, -0.1580, -0.0578, -0.2804, -0.1695, +0.0628, -0.6461, -0.3262, +0.0863, +0.1720, +0.1547, +0.0292, -0.2541, +0.0831, +0.0806, -0.0435, +0.1032, -0.1619, -0.0830, -0.1597, -0.2496, +0.2038, -0.3859, -0.1650, +0.2441, +0.0774, +0.0069, +0.2168, +0.2759, +0.1906, +0.0621, -0.4262, -0.4940, -0.2814, -0.1026, +0.1833, -0.3455, +0.1774, +0.2185, +0.0874, -0.0568, +0.0317, +0.0534, -0.2478, +0.2568, +0.4760, +0.1896, -0.0966, -0.0038, +0.2720, +0.2453], -[ -0.1411, -0.6777, -0.4034, -0.7729, +0.3079, -0.0249, +0.9158, +0.2994, -0.2749, -0.1184, -0.4710, +0.0472, -0.6081, -1.1038, +0.0603, -0.6534, +0.3702, -0.1824, -0.2578, +0.7329, +0.3609, -0.1107, -0.4722, +0.0314, -0.4225, +0.5052, +0.0510, +0.1278, -0.4643, +0.2082, +0.6418, +0.3817, +0.1976, +0.0362, -0.1896, +0.2774, -1.0800, +0.8023, -1.3536, +0.2925, -0.3399, +0.4582, +0.4134, -0.6335, -0.0554, -0.5878, -0.1542, -0.6533, -0.3535, +0.2078, -0.1261, -0.7212, +0.4865, -0.2180, -0.1789, +0.3928, -0.2752, +0.0054, +0.4517, -0.5406, -0.5323, -1.4308, -0.1591, -0.2728, -0.1194, -0.2742, -0.3373, +0.1424, +0.3109, +0.3125, +0.8763, -0.2209, +0.2180, +0.8524, +0.6204, -0.5567, +0.0792, +1.2608, +0.4023, -0.5194, -0.9264, +0.0488, -1.5262, +0.4979, -0.3235, -0.8869, +0.6979, +0.4639, -0.4637, -0.3964, -0.9878, +0.4001, +0.4049, +0.6470, +0.8491, -0.9166, -0.5593, +0.3349, -0.3942, -0.2452, +0.3118, -0.4948, +0.6334, +0.1862, +0.6799, -0.1251, -0.6644, -0.6189, -0.3395, -0.8315, +0.2711, -0.1562, -0.2209, +1.4952, +0.1903, +0.0510, -1.1884, -0.3049, +0.7247, +0.7510, +0.3857, +0.3596, +0.5255, -0.9929, +0.8617, -0.4957, +0.3045, -0.1206, -0.1408, +0.1588, -1.3486, +0.5836, -0.8441, +0.3619, +0.2391, +1.0032, -0.0064, -0.0552, +0.2677, +0.0375, -0.9855, +0.3611, +0.1018, -0.3835, -0.4597, +0.2885, +0.2738, -0.0136, -0.7909, +0.5018, +0.0068, -0.3529, +0.0517, -0.7047, +0.0401, -0.5583, +0.2285, +0.2380, -0.7519, -0.4384, -0.5398, +0.0477, +0.2601, -0.0781, -0.6392, +0.2084, -0.7718, +0.8399, -0.3541, +0.2522, +0.3224, +0.7689, +0.5392, -0.4212, +0.4227, +0.8039, +0.2355, +0.6360, +1.0878, +0.4653, +0.1442, +1.1615, -0.3781, +0.2368, +0.3590, +0.4289, +0.9254, -0.4347, +0.0143, -1.3782, +0.5827, +0.3748, +0.3293, +0.5236, -0.1945, +0.5976, -1.0386, +0.6430, -0.3957, -0.4179, +0.5005, +0.2065, -0.4055, +0.0393, -1.0550, +0.6823, +0.2514, -0.7972, -0.0325, +0.2896, -0.9732, -0.4169, +0.4563, +0.6282, -0.2595, +0.1765, -0.6172, -0.5078, -0.8933, +0.5237, -0.4243, +0.4378, +0.2404, +0.2388, -0.2571, +0.5621, +0.0783, -0.3485, +0.2854, +0.8475, +0.2046, -0.0799, +0.0031, +0.9129, -0.0834, -0.1296, -0.0057, +0.1873, +0.3099, -0.2106, +0.5875, +0.6426, -0.8971, +0.4954, -0.6098, +1.1746, +0.2256, -0.2901, +0.2344, -0.3592, +0.8136, +0.5582, +0.6943, +0.2532, -0.0194, +0.7237], -[ +0.0898, +0.2814, -0.2989, -0.0620, -0.1487, -0.4023, -0.8167, +0.0257, -0.0112, +0.6097, +0.2460, -0.8560, +0.0615, +0.2626, -0.0462, -0.1121, -0.2525, -0.2026, -0.0422, -0.3186, -0.2594, -0.8167, -0.1022, -0.0064, -0.4489, -0.1899, -0.2735, +0.3154, -0.0330, +0.1199, -0.3000, -0.1339, -0.3220, +0.4095, -0.2959, +0.4470, -0.6548, -0.3323, -0.3920, -0.1138, -0.7285, +0.3050, -0.5934, -0.7703, +0.3777, +0.1401, +0.6838, +0.4427, -0.0609, -0.4235, -0.2793, +0.0919, -0.0640, +0.2750, +0.4639, -0.2000, -0.1377, -0.7851, -0.2698, -0.3424, +0.1546, +0.4358, +0.4260, +0.1365, +0.2578, -0.1762, +0.3335, +0.2067, -0.1400, -0.0937, -0.2849, -0.1729, +0.1615, -0.5510, +0.0237, +0.0614, +0.1298, +0.4147, -0.1741, -0.3661, -1.0133, +0.4604, +0.5290, -0.0076, -0.4068, -0.0254, +0.0387, -0.3190, +0.2132, -0.0229, +0.0945, -0.1160, +0.2921, -0.0465, -0.0642, +0.4319, -0.4230, -0.3344, -0.0507, +0.5195, -0.4356, -0.4423, +0.0736, +0.3762, +0.0873, +0.0746, -0.4076, -0.5109, +0.3014, -0.5455, +0.0056, +0.0341, -0.3003, -0.1486, +0.1853, +0.3671, -0.1510, -0.5992, +0.1085, +0.3382, +0.1642, -0.0321, +0.0327, -0.3815, -0.3326, +0.2356, +0.0689, +0.0654, +0.1831, -0.4257, +0.1533, -0.5523, -0.2213, +0.5356, +0.2889, +0.6192, +0.1213, +0.1778, +0.5093, +0.3230, +0.0057, -0.5385, +0.1216, +0.1938, +0.7202, -0.5948, +0.0400, -0.0744, +0.1229, -0.4405, +0.3672, -0.4505, -0.3969, -0.4923, +0.7956, -0.1743, +0.5352, +0.0891, -0.0082, -0.5881, +0.0309, +0.3316, -0.4269, +0.2281, +0.0747, +0.1375, -0.4136, -0.1958, +0.3351, +0.0005, -0.1543, -0.2250, -1.0389, +0.2862, -0.1588, -0.4304, +0.1732, -0.4966, +0.1103, +0.1788, +0.2413, -0.0692, -0.1246, -0.2989, +0.0958, -0.4047, -0.7977, +0.0219, -0.7002, -0.2741, -0.3357, -0.1266, -0.7576, +0.3900, -0.2525, +0.3719, -0.0731, -1.0456, +0.0415, +0.0171, +0.0534, +0.0561, -0.0971, +0.0287, -0.0535, -0.7304, +0.0318, +0.2723, -0.3060, -0.3112, +0.0044, -0.5254, +0.4290, -0.0092, -0.4378, -0.1519, +0.0060, +0.2866, -0.7212, -0.0932, -0.0579, -0.4465, -0.7871, +0.0351, -0.0238, -0.2882, -0.0468, -0.1247, -0.3002, -0.0383, +0.2010, +0.0270, +0.0980, -0.0904, +0.0150, -0.0607, +0.1041, -0.4606, +0.1717, -0.4064, -0.0482, +0.7136, +0.3695, +0.8418, -0.3601, -0.1259, +0.8040, +0.1260, +0.0436, +0.6178, +0.2924, -0.1866, -0.3586, -0.3475, +0.0530, +0.1153], -[ -0.1739, +0.3620, -0.5746, -0.8648, -0.0095, -0.0139, -0.8397, -0.5851, -0.7841, -0.5849, +0.3825, +0.5472, +0.1205, +0.2297, +0.5751, -0.0161, -0.4402, +0.4953, +0.8544, -0.3191, -1.0156, -0.3819, -0.3726, +0.0503, -0.4238, -0.3059, -0.0679, +0.2942, +0.5847, -0.0286, -0.0655, +0.0985, -0.0422, +0.4688, +0.0940, +0.1260, -0.1712, -0.1085, +0.2488, -0.2784, +0.4477, +0.4927, -0.3696, +0.0150, -0.0316, +0.0475, +0.3907, +1.2208, +0.1099, +0.5760, -0.1892, -0.3129, +0.3225, +0.2658, -1.7684, +0.2115, +0.2572, -0.4594, -0.0328, -0.5819, +0.4556, +0.0864, +0.0635, +0.0546, +0.3696, +0.3095, +0.4182, +0.0779, -0.1330, +0.5025, -0.1854, +0.1150, +0.1825, -0.3036, +0.7315, -0.0371, -0.1050, +1.0401, -0.2886, -1.1061, -0.6525, -0.0580, +0.6417, -0.0865, +0.4673, +0.1149, -0.1142, +0.7489, -0.6138, -0.1131, +0.3908, -0.4663, +0.0859, +0.0301, +0.0968, -0.2431, +0.3255, -0.5186, +0.0056, +0.3681, -0.0691, -0.6199, -0.5957, +0.2569, +0.1848, -0.5381, +0.5184, +0.3030, +0.0777, -0.4538, +0.4875, +0.5021, -0.1455, +0.0591, +0.3836, +0.1235, +0.2424, -0.0860, -0.0537, +0.8306, +0.3281, +0.0754, +0.0777, -0.1180, +0.3717, +0.9068, +0.3882, +0.3269, -1.3368, +0.5356, +0.2413, -0.3008, -0.0354, -0.0278, -0.5036, +0.0942, +0.8364, -0.3439, -0.0000, +0.5917, -0.3635, +0.5566, +0.1247, +0.7113, +0.0864, -0.3963, +0.9050, +0.3730, -0.5857, -0.3610, -0.8018, -0.8122, -0.0336, -0.1547, +0.1578, -0.1009, +0.1209, -0.2691, -0.0941, -0.3603, -0.0894, -0.1301, +0.2096, +0.9065, -0.3411, +0.5290, -0.4815, +0.4846, +0.5965, +0.4591, -0.0223, -0.0891, +0.0884, -0.2254, +0.5421, +0.6808, +1.0049, -0.2812, -0.7904, +0.1642, +0.1226, -0.1613, -0.5226, -0.8417, +0.3305, -0.2947, +0.7293, +0.4473, +0.2967, -0.6241, +0.0757, -0.6296, -0.2215, -0.1589, -0.6007, -1.3869, -0.7078, +0.0544, -0.0764, -0.2246, -0.2714, +0.3555, -0.6003, +0.3304, -0.0710, +0.7828, +0.9246, +0.3818, -0.0763, +0.0520, +0.2366, -0.3115, +0.8131, +0.5344, +0.2330, -0.3058, -0.0123, -0.6914, -0.2860, +0.2311, -0.3823, -0.1468, -1.1638, -0.3352, +0.0701, -0.3382, +0.2880, -0.9435, -0.4333, +0.1282, -1.0451, -0.7593, +0.2895, +0.0457, +0.7931, +0.0635, +0.4863, -1.4443, +0.0052, +0.3318, +0.4936, -0.0029, +0.5186, +1.0487, -0.3259, -0.0487, +0.0366, +0.5297, -0.0074, +0.6409, +0.1104, +0.5766, +0.1646, -0.3991, -0.2785, +0.1929], -[ -0.2519, +0.1615, -0.0354, -0.5042, +0.2805, +0.2252, -0.6276, +0.0728, -0.2050, -0.4335, -0.6654, -0.1615, -0.2054, -0.6877, +0.0487, +0.0483, +0.5671, +0.1993, +0.3158, +0.1469, -0.1215, -0.3407, -0.0175, +0.2332, -0.2175, +0.1089, -0.3410, +0.3776, -0.0933, +0.0617, +0.0209, +0.2150, +0.2869, -0.2463, +0.1943, +0.4465, +0.2896, +0.3576, -0.0006, +0.3674, -0.2265, -0.0429, +0.3956, -0.5037, -0.2102, +0.1509, -0.7234, -0.2695, -0.4491, +0.1688, -0.2201, -0.8168, -0.0059, +0.0678, +0.0323, -0.2453, +0.0787, -0.0218, +0.4152, -0.2749, -0.0667, +0.1380, -0.2012, -0.1045, -0.3629, +0.2560, +0.0124, -0.1782, -0.0466, -0.2525, +0.4446, -0.2157, -0.0357, +0.0674, -0.4529, +0.4434, -0.0460, +0.1983, +0.2154, -0.1045, -0.5258, +0.2928, -0.0987, +0.0460, -0.0937, +0.2710, -0.2722, -0.4195, -0.1106, -0.1830, +0.1444, -0.0402, +0.2605, +0.0760, -0.1693, +0.3962, +0.0568, -0.1773, -0.0784, -0.1226, +0.7430, +0.0156, +0.0691, -0.0980, -0.6041, -0.9273, +0.3408, +0.0676, +0.1076, -0.2494, -0.2421, -0.0987, +0.0671, -0.1980, -0.5362, -0.2876, +0.6149, +0.0396, -0.0521, +0.1155, -0.0476, +0.0746, +0.1568, -0.0114, -0.3647, +0.4817, -0.3764, +0.0290, -0.1301, -0.5453, +0.2561, -0.8103, +0.0312, -0.2461, -0.5387, -0.1135, +0.1276, +0.0557, -0.6939, +0.8499, -0.4261, -0.2526, -0.0231, -0.0725, +0.2422, +0.1192, +0.0090, -0.0870, +0.1128, +0.0648, -0.3450, -0.1368, -0.0312, +0.0330, +0.3826, -0.0856, -0.0805, +0.0837, +0.0410, +0.0966, +0.0597, +0.1295, +0.6137, +0.1090, +0.2083, -0.2533, +0.0406, -0.1318, +0.3499, -0.3823, -0.1508, -0.3004, -0.0117, +0.1244, -0.2433, +0.0353, +0.0731, -0.1912, +0.2573, +0.3121, +0.0047, -0.2152, +0.0152, +0.0401, -0.0494, +0.4064, -0.1207, +0.6339, -0.2476, -0.0191, -0.1586, +0.3895, +0.7410, +0.2320, +0.1163, -0.4128, +0.0592, +0.0203, -0.3586, -0.3339, +0.2160, +0.1081, -0.4765, -0.4441, +0.0268, +0.5133, -0.0753, +0.0583, -0.2457, -0.2704, -0.3332, +0.4198, +0.0573, -0.6016, +0.0425, +0.1275, +0.2150, -0.5229, -0.1570, -0.2055, -0.0529, +0.2533, -0.4725, -0.5603, +0.1864, +0.2289, -0.3330, -0.1068, +0.5776, -0.1080, +0.0880, -0.0177, +0.3387, -0.2351, +0.2631, +0.2340, +0.0230, -0.0799, -0.4359, -0.1260, +0.2002, -0.3889, -0.0956, -0.5239, +0.0358, -0.0314, +0.1496, +0.5673, +0.1063, -0.2697, +0.0409, -0.2002, +0.0679, +0.0652, +0.1502, -0.2152], -[ -0.5846, +0.1398, +0.0653, -0.0499, +0.5349, -0.2453, -0.3215, -0.4273, -0.4178, -0.4183, -0.6044, -0.3295, +0.4642, +0.4880, +0.1602, -0.3126, +0.6677, +0.0095, +0.2843, -0.1145, +0.0737, +0.2226, +0.1807, -0.2833, +0.1323, -0.1462, -0.3478, +0.5512, +0.1452, -0.2378, +0.0662, -0.0176, -0.3222, +0.3704, -0.1932, -0.5103, +0.2721, -0.0287, -0.2276, -0.0140, -0.0924, -0.1118, +0.5218, -0.9812, +0.1526, +0.2199, -0.1024, -0.2944, +0.1035, -0.4761, -0.2420, +0.3282, +0.2856, -0.5223, -0.0638, -0.3711, +0.6502, -0.2021, +0.3057, -0.2163, +0.0174, +0.5527, +0.4393, +0.0213, -0.6142, -0.4316, -0.1220, -0.0004, -0.1136, +0.2386, -0.1869, +0.5265, -0.2247, +0.0370, +0.0232, -0.1226, +0.1067, -0.1572, +0.1894, -0.4778, +0.1373, -0.0399, +0.0554, -0.1099, +0.1958, +0.0916, -0.0918, -0.1291, +0.3402, -0.1269, +0.1542, +0.0052, -0.0130, +0.1377, +0.0803, +0.5495, +0.0923, -0.1367, -0.0859, +0.0381, +0.2892, -0.0225, -0.0196, -0.1783, -0.2779, +0.2774, -0.1335, -0.1172, +0.0746, -0.7017, -0.0340, -0.3177, -0.1499, -0.2498, +0.1048, -0.1210, +0.0963, -0.1148, -0.2851, +0.1945, +0.0322, -0.0270, +0.0151, -0.3560, -0.0038, +0.1180, +0.2611, +0.4471, -0.4957, +0.0976, +0.5085, -0.0167, +0.0233, +0.0259, +0.0596, -0.1056, +0.0076, +0.4547, -0.8601, +0.1322, -0.0743, +0.0095, -0.4745, +0.5874, +0.2554, -0.2113, +0.3039, +0.1968, +0.4468, -0.0700, +0.4433, -0.0537, -0.1331, +0.0397, -0.4836, -0.4559, -0.5134, -0.2796, +0.2436, -0.2060, +0.0425, +0.3474, +0.1117, -0.1673, -0.5052, -0.0024, +0.2582, -0.5490, -0.0392, -0.0837, +0.1815, -0.1968, -0.1945, -0.0443, -0.0404, -0.6800, -0.0221, +0.2698, -0.2285, +0.0266, +0.1175, +0.5800, +0.4033, -0.2015, -0.0370, -0.3882, +0.1432, -0.2470, +0.2583, +0.3708, -0.3727, -0.1186, -0.3019, +0.3251, +0.3807, -0.0160, -0.2042, +0.0224, -0.2229, -0.1960, -0.0551, -0.0585, +0.1737, -0.1500, +0.0538, -0.1393, +0.3167, -0.5961, +0.0267, +0.3917, -0.3515, -0.5620, +0.1481, -0.0466, -0.4397, -0.0113, -0.0100, +0.3046, +0.2582, +0.3314, +0.0030, -0.0490, +0.1000, -0.1976, +0.2394, -0.0794, -0.7060, +0.6328, +0.4661, +0.1755, +0.0973, +0.0759, +0.2469, -0.0196, +0.1504, +0.1870, -0.0267, -0.4867, -0.2467, +0.0014, +0.1642, -0.0444, +0.0466, +0.1670, +0.1163, +0.1948, +0.3014, -0.0040, -0.1931, -0.0833, +0.0773, +0.0889, -0.0685, +0.6939, -0.0519, +0.0578], -[ +0.1019, +0.1191, +0.0792, -0.0381, -0.0994, -0.3215, +0.0184, -0.2059, -0.5220, +0.1683, -0.1330, +0.2624, -0.1210, +0.4433, -0.0004, +0.2831, +0.1150, +0.2504, -0.4019, +0.1535, +0.1815, -0.0125, +0.0967, +0.2785, +0.1030, -0.0185, +0.1648, +0.1824, +0.2339, +0.2356, -0.0532, -0.2985, -0.0711, -0.2170, -0.3055, +0.3927, -0.1663, -0.3577, -0.0721, +0.0949, -0.1085, +0.0625, +0.1838, +0.0338, -0.1551, +0.0452, +0.3240, -0.5433, +0.0480, +0.1253, -0.0417, -0.0262, +0.2491, +0.0560, +0.2076, -0.2937, +0.2309, +0.1313, +0.2199, +0.2048, +0.1525, -0.1216, -0.0192, +0.5225, +0.1168, +0.3531, -0.0782, +0.1751, -0.1979, +0.1752, -0.0833, +0.2219, -0.3223, -0.3394, +0.3271, +0.1654, +0.0680, +0.5830, +0.3496, +0.0011, -0.2475, +0.2752, -0.1074, +0.2762, +0.5766, -0.0903, +0.0872, +0.0231, +0.4259, +0.5411, -0.0132, -0.0674, +0.1642, +0.1975, -0.0164, -0.2172, +0.0889, +0.0350, +0.1047, +0.0698, -0.3606, +0.2080, +0.4037, +0.4139, -0.1566, +0.1401, +0.2096, -0.1650, -0.1234, +0.2850, +0.4133, +0.0975, -0.1182, +0.1244, +0.2671, +0.2675, +0.1199, +0.1382, -0.1355, +0.0236, -0.1842, -0.3614, +0.1454, +0.4130, +0.0934, -0.1116, -0.0254, +0.0561, +0.1609, +0.1716, +0.0208, -0.1548, +0.4356, +0.1166, -0.0751, -0.2033, +0.0504, -0.0123, +0.0498, +0.2252, +0.2336, +0.5384, -0.4082, +0.3234, -0.1965, -0.2202, +0.2193, +0.2740, -0.0726, +0.2126, -0.2909, -0.6012, +0.0734, +0.0863, +0.4416, +0.0487, +0.4869, +0.0955, -0.1152, -0.0777, +0.1958, +0.0071, +0.1443, +0.1600, +0.3588, +0.0886, -0.1720, +0.1525, -0.0123, +0.0016, +0.2473, +0.0288, +0.0332, -0.0154, +0.1491, -0.2420, +0.1912, -0.1959, +0.0991, +0.4033, +0.2745, +0.4137, +0.5964, -0.0574, +0.0729, +0.0983, +0.0776, -0.2024, +0.0151, -0.0226, +0.0652, -0.2855, +0.3693, +0.4861, +0.3018, +0.2127, +0.0685, +0.3818, +0.3541, -0.3794, +0.0683, +0.2490, -0.0388, -0.2293, +0.2072, -0.0111, +0.1507, -0.0823, -0.1138, +0.5531, +0.0147, +0.1168, +0.1346, +0.1948, +0.3143, +0.3849, +0.1126, +0.0865, +0.2892, +0.0673, +0.0774, +0.0973, +0.0489, -0.0628, -0.2417, +0.4764, +0.1525, +0.4720, -0.1355, -0.0564, +0.2704, -0.0758, -0.2017, -0.2503, -0.3390, -0.0443, -0.2390, +0.1069, +0.0030, +0.1611, +0.0035, +0.2266, -0.0511, +0.0578, -0.1369, +0.2542, -0.1619, -0.3250, +0.1430, -0.3252, +0.1302, +0.1430, +0.0436, -0.0501, -0.0540, +0.3217], -[ +0.4392, +0.4482, -0.3237, +0.0175, -0.8111, -0.1456, -0.7031, +0.5533, -0.4008, +1.2027, -1.6940, +0.1012, +0.9082, -0.0219, -0.1958, +1.3318, +1.0975, +0.8437, -0.5599, -0.2587, -0.3379, -1.1789, +0.0990, -0.8325, -0.0061, +0.3593, +0.5137, -0.4197, +1.3066, -0.0766, -0.5484, -0.7634, -0.9896, -0.1935, -0.7306, +0.1019, -0.3939, -0.3994, -0.3192, +0.2408, -0.9262, -0.7145, +0.7491, -0.3903, -0.8363, -0.0184, -0.6157, -0.2925, -0.6928, -0.5204, +0.0050, -0.8918, +0.3697, +1.0123, +0.0754, -0.6525, +0.6888, -0.6832, +0.6993, +0.5819, +1.0261, -0.8422, -0.3654, -0.1425, -0.9311, -0.2577, +0.2206, -0.5171, +0.1982, -0.3010, -1.5814, -0.9813, -1.2442, +0.7295, -1.0818, -0.0138, -0.8190, -0.0614, +0.2389, +0.4656, -1.0095, +0.0583, -1.2969, +0.3752, +0.8724, +0.2101, +0.7315, +0.0324, +0.0678, +0.6772, -0.2207, -1.2835, +0.9571, +0.4842, +1.9576, +0.8638, -1.0886, +0.9274, +0.2779, +1.3725, -0.6312, -0.0341, +0.0316, +0.8501, -0.2534, -0.7733, -0.0998, +0.0387, +0.2484, +0.5080, -0.0732, -0.1158, +1.0466, +0.2991, +0.3146, -0.3719, +0.2442, +0.3482, -1.2463, -0.1302, +0.0784, -0.6157, -0.0331, +0.2835, -0.1884, -0.4882, +0.6340, +0.1501, +0.2545, +0.2030, -0.7691, +0.1398, -0.4164, +0.7913, -0.2845, +0.1204, +0.4289, -0.6794, -0.5217, -0.9986, +2.3292, +0.0171, -0.0237, -1.6268, +0.7687, -0.8807, -0.9120, +0.2033, -0.1705, -0.3488, +0.7677, -0.5705, -0.5033, -0.1865, -0.5957, -0.3330, -0.0293, +0.2885, -0.0975, +0.7935, -1.1451, +0.1985, +0.2350, -0.2509, -0.1865, +0.3087, +1.2247, +0.4410, +0.2926, +0.6235, +0.5445, -0.3252, -1.2071, -1.0022, +0.4754, -1.2060, +0.9002, -0.8377, -0.5545, -0.0141, -0.4090, +0.3915, +0.2355, +0.0559, +0.7571, +0.2540, -0.3896, -0.5371, -0.2582, +0.2171, +0.0041, -0.2296, -1.0514, +0.4592, +0.8090, -0.3452, -0.1484, -0.0548, +0.0441, -0.0408, -0.3875, -1.0764, -1.3752, +0.0370, -0.6220, -0.4826, +1.4517, +0.0424, +0.8665, -0.0957, +0.5537, -0.1898, -0.7124, -0.2892, +0.3772, +0.6168, +1.6949, -0.8080, -0.2959, +0.6167, -0.2756, +0.9585, -0.5433, +1.0853, -0.4252, -0.0748, +0.8777, +0.4223, -1.3848, -0.4698, +0.8196, +0.2945, -0.1614, +0.3605, -0.8518, +1.0226, -0.6916, +1.1022, +0.4680, +0.4639, -0.6019, +0.3513, -0.8613, +0.0220, +0.3718, -0.3883, -0.0983, +0.5213, +0.8184, +0.6587, +0.7884, +0.3811, +0.6647, -0.0553, -0.3458, +0.9068], -[ -0.6225, -0.2730, -0.0359, +0.0518, +0.6668, +0.1913, -0.5040, -0.2648, -0.1907, +0.1833, +0.5696, +0.1156, -0.1387, +0.3780, +0.3622, +0.5768, -0.0549, +0.4170, +0.4187, +0.5073, +0.2905, +0.3734, +0.3156, -0.5478, +0.4851, -0.0140, +0.0556, +0.5651, +1.3916, +0.2600, -0.1820, +0.2235, -0.0081, -0.1666, +0.7125, -0.1622, +0.0587, -0.2746, +0.3165, +0.0335, +0.3907, -0.0651, +0.0580, +0.8943, -0.2999, -0.0884, -0.2716, -0.4894, +0.5985, +0.7638, -0.0658, +0.0731, -0.6869, +0.1171, -0.1250, -0.2498, +0.1003, +0.5502, -0.0804, -0.2434, -0.2781, -0.5337, -0.1223, -0.1557, +0.1693, -0.2545, +0.2374, -0.1923, +0.1244, -0.0216, +0.0903, -0.0558, -0.1328, +0.3223, -0.2164, +0.1834, -0.1352, -0.1172, +0.1227, -0.4432, -0.6500, -0.5670, +0.0053, -0.3212, +0.0803, +0.0370, +0.4531, -0.1750, +0.0630, +0.7183, +0.2433, -0.1519, +0.3377, -0.1174, -0.5783, -0.0467, +0.0522, +0.1881, +0.0813, +0.3168, +0.1547, +0.0880, -0.0611, +0.4697, +0.1032, +0.0199, +0.0636, +0.0756, -0.0310, +0.7728, +0.0727, +0.1042, +0.4426, -0.0449, -0.1591, +0.2324, +0.5045, +0.2306, +0.2334, +0.8407, -0.0563, -0.1886, +0.2408, +0.4081, -0.3410, +0.0642, +0.4591, -0.4071, -0.0287, +0.1261, +0.8566, +0.4442, +0.0679, +0.5044, +0.3322, +0.3745, -0.1328, -0.2375, -0.0721, -0.0879, +0.8389, -0.2426, -0.0555, -0.5393, -0.3596, +0.1362, -0.1539, -0.4648, -0.1451, +0.3881, +0.4943, -0.0848, +0.2693, +0.6373, +0.0161, -0.5154, +0.2403, -0.2217, -0.2002, +0.2152, -0.3446, +0.1626, +0.3683, +0.2874, -0.1065, -0.5365, -0.0795, +0.5900, -0.4167, -0.0478, -0.0898, +0.1128, +0.0332, +0.1386, +0.2899, -0.1584, -0.4569, +0.1345, -0.1372, -0.2054, +0.3437, +0.0967, +0.0414, +0.0286, -0.4404, +0.1389, +0.1305, -0.0330, -0.2922, +0.2262, +0.0983, +0.4129, -0.5639, +0.2851, +0.5969, -0.1326, +0.3199, +0.2057, +0.5031, -0.8275, +0.1899, -0.1369, +0.0908, +0.0123, -0.4922, +0.4879, -0.3369, +0.5233, -0.1505, -0.4429, +0.4837, +0.3687, -0.4452, -0.4787, +0.2844, +0.1614, +0.1034, -0.1473, -0.1986, +0.3591, +0.2906, +0.3389, +0.1003, -0.1597, -0.3453, -0.2059, +0.1004, +0.1285, +0.0725, +0.3602, +0.0532, -0.3164, +0.1717, +0.0842, -0.0063, -0.0661, +0.2050, +0.0689, -0.3259, -0.5374, -0.3165, -0.3265, +0.0766, -0.3596, -0.0312, +0.2902, -0.0852, +0.0416, +0.6610, +0.1364, +0.3197, +0.1008, +1.2370, -0.2841, +0.2140, +0.0696], -[ +0.2933, +0.4143, -0.2391, -0.8458, +0.8756, +0.3482, -0.2335, +0.1139, -0.6489, -0.4992, +0.1903, -0.3144, -0.2100, -0.3126, -0.4971, -0.7744, -0.9697, -0.1122, -0.1993, +0.1043, +0.1674, -0.5756, -0.0644, -0.4437, -0.1500, -0.1168, -0.4776, -0.0796, +0.9774, +0.3278, +0.1883, -0.1740, -0.1854, -0.5093, +1.4254, +0.0032, +0.4407, +0.5096, -0.0779, -0.4645, +0.8090, -0.2139, +0.3138, -0.3919, +0.0181, -0.3751, -0.4313, +0.4807, +0.4309, +0.0312, -0.2652, -1.0874, +0.5050, -0.2212, -0.5174, -0.4647, -0.0500, +0.6469, +0.2956, -0.3006, -0.2589, -0.2100, +0.3674, +0.0401, -0.2560, -0.1629, +0.3675, -0.1115, +0.6657, -0.0407, -0.0407, -0.1880, -0.4843, +0.2248, -0.3289, -0.3690, -0.3852, -1.4067, +1.0203, -0.8588, -0.3852, +1.4134, +0.8019, -0.6120, -1.0106, -0.4672, +0.1067, -0.1053, +0.4014, -0.0277, +0.0678, +0.1513, -0.1888, +0.6473, -0.1137, +1.2021, +0.1824, +0.8788, -0.2244, -0.5089, -0.3938, -0.2077, -1.0448, +0.3649, +0.4209, +0.5229, -0.1107, +0.0391, -0.2115, -0.7155, -0.2865, -0.7026, +0.5095, -1.1121, -0.0886, +0.4621, +0.0071, -0.1138, +0.1124, -0.1594, -0.4959, -0.1211, +0.5327, -0.0051, -0.1885, +0.8001, +0.3515, -0.4376, +0.2016, +0.0345, +0.4240, -0.2471, -0.0564, -0.3547, +0.7510, +0.1377, +0.1048, -0.3598, -0.3715, -0.1754, -0.1080, +0.4443, +0.3913, -0.1986, -0.7370, +1.0916, +0.6689, -0.5093, -0.1496, +0.2929, +0.6375, -0.2597, +0.3372, -0.9677, +0.3802, -0.2462, -0.1875, -0.1333, +0.4545, -0.1189, +0.0521, +0.1056, -0.0232, -0.8407, +0.5821, +0.7549, +0.3899, +0.3906, +0.4798, +0.2074, +0.4463, -0.3234, +0.3635, +0.5090, +0.6481, -0.5033, -0.1408, -0.3488, +0.4259, +0.4499, +0.2977, -0.5789, -0.2770, +0.1882, -0.6392, -0.7620, -0.3637, -0.6926, +0.2714, +0.9258, +0.6962, +0.1969, +0.2505, +0.1603, -0.1708, +0.7288, +0.1556, +0.1395, +0.0201, -1.0403, +0.4918, -0.3133, -0.0967, +0.8428, -0.1643, +0.8144, +1.2503, +0.8284, +0.5561, +0.4810, -0.8781, +0.5398, +0.7532, -0.7582, +0.6769, +0.4447, +0.0327, +1.1997, +0.3706, +0.1100, -0.1299, +0.2202, +0.3640, +0.9135, +0.0535, -0.4671, -0.6503, +0.5543, +0.5576, +0.1362, +0.3495, -0.3628, -0.0455, -0.2410, -0.5344, -0.3916, -0.1989, +0.2408, -0.3478, -0.0205, -0.3758, +0.4236, -0.3343, +0.0322, +0.3310, +0.5367, -1.2218, +0.0215, -0.3815, -0.3284, +1.0726, +0.5354, +0.3117, -0.0998, +0.5409, -0.3091], -[ +0.2761, +0.3903, +0.1282, +0.7685, +0.1542, -0.0852, -0.2303, +0.0728, +0.2189, -0.2970, -0.2295, +0.7777, -0.1337, -0.7166, -0.5420, +0.4309, +0.3464, +0.1402, -0.3878, +0.4748, +0.1446, -0.2587, +0.0823, +0.1915, +0.2379, +0.1823, +0.1937, -0.0398, -0.6437, -0.1574, +0.0294, -0.2234, +0.1485, -0.1981, -0.1684, -0.3047, +0.1818, -0.6846, -0.2022, +0.4432, -0.0010, +0.3117, -0.0177, -0.4930, +0.0405, -0.2740, -0.0511, -0.0360, +0.3225, -0.1678, +0.3447, +0.0595, -0.7388, +0.1764, +0.0845, +0.1344, +0.0758, -0.2097, -0.0764, -0.7264, -0.1542, +0.0554, -0.1526, -0.0322, +0.4633, +0.0102, +0.1454, -0.0868, -0.5267, -0.2947, +0.1590, -0.0261, -0.1271, +0.1539, -0.1399, +0.1569, -0.0031, +0.4855, -0.1611, -0.2308, -0.2513, -0.5678, +0.4215, +0.0256, +0.1512, -0.5568, -0.0987, -0.0857, +0.4346, +0.1397, +0.0102, -0.1232, -0.0921, +0.4349, +0.1922, -0.2404, -0.2037, +0.2438, -0.0337, +0.0607, +0.0277, -0.0229, +0.1806, +0.8236, +0.1282, -0.4797, +0.2185, +0.0755, -0.0941, -0.0490, -0.2207, -0.0454, +0.0460, -0.2074, +0.0076, +0.0424, +0.2972, +0.1422, +0.2019, -0.3910, -0.0010, -0.0207, +0.0645, -0.2821, -0.2102, +0.2113, -0.0395, -0.8104, -0.7765, +0.5705, +0.0648, +0.3167, -0.4876, +1.0059, -0.5416, -0.1828, +0.2206, -0.9461, -0.1916, +0.0664, +0.2003, +0.0609, +0.1627, +0.0381, -0.2452, +0.1161, +0.5399, +0.4576, -0.6269, -0.0550, +0.0407, +0.1479, +0.0415, -0.3973, -0.2476, +0.0373, +0.0483, +0.1186, +0.3281, +0.1933, +0.5347, -0.5033, +0.4079, -0.1036, -0.0233, -0.0380, -0.8169, -0.8266, -0.4775, +0.1329, +0.0916, -0.1962, +0.0254, -0.2521, -0.1956, -0.4807, +0.2150, -0.5251, -0.1785, +0.2504, +0.1153, +0.1309, -0.2423, -0.0798, +0.3404, -0.0671, -0.7607, -0.0215, -0.0325, -0.2565, -0.3336, -0.3798, +0.5494, +0.0272, +0.0216, +0.3479, +0.0308, -0.1304, +0.1808, -0.4384, -0.0987, -0.2953, -0.1624, +0.1003, +0.0338, +0.0490, -0.0913, +0.1440, +0.0871, -0.2656, -0.1951, +0.5826, -0.0477, -0.1095, -0.0349, +0.3151, -0.2938, -0.3551, +0.2717, -0.3146, -0.0251, -0.1136, +0.3273, +0.2753, +0.1327, -0.1642, -0.1003, -0.6193, -0.2549, +0.1832, -0.3158, +0.2305, +0.0941, +0.0060, -0.0772, +0.0895, +0.4227, +0.4375, +0.3217, -0.4440, +0.0618, -0.1553, -0.0062, -0.0904, -0.3478, +0.0028, +0.1030, +0.2335, -0.2182, +0.1332, +0.0207, +0.2737, +0.3697, -0.4616, +0.2152, -0.2821], -[ -0.0325, +0.1253, -0.0580, -0.0331, -0.2830, +0.2926, +0.6397, +0.5564, -0.2056, -0.4137, +0.2071, +0.4100, -0.2723, -0.1244, +0.1542, +0.8429, +0.3036, +0.1150, +0.0314, -0.0619, +0.2528, -0.1524, -0.1242, +0.0539, +0.1839, -0.0055, -0.1947, +0.2376, -0.6426, -0.0117, -0.0182, +0.0855, +0.4225, -0.2056, -0.2764, -0.1898, +0.1168, -0.0761, +0.1804, +0.1348, -0.0861, +0.3499, +0.0916, +0.0970, +0.0773, +0.8263, +0.0415, +0.1965, +0.2355, -0.5315, +0.1988, -0.1446, +0.0367, +0.0406, -0.6945, -0.1425, +0.0886, -0.0570, -0.4030, +0.0895, -0.2824, -0.0246, -0.7064, -0.2446, -0.1142, -0.0633, -0.1132, +0.0110, +0.0242, -0.0157, -0.1690, +0.3189, -0.2519, -0.3051, -0.3628, -0.0267, -0.0941, -0.2756, -0.3472, +0.0815, -0.3415, -0.0063, -0.2362, -0.2154, -0.2431, -0.6428, -0.2525, +0.1530, +0.2774, -0.1358, +0.1789, -0.3650, +0.4205, +0.1829, -0.3298, -0.2505, +0.0417, -0.4090, +0.1427, -0.4138, -0.0246, -0.0155, -0.0108, -0.4110, -0.0475, +0.4939, +0.1396, +0.0172, -0.1164, -0.4277, -0.2403, -0.1514, -0.3341, +0.0275, -0.2222, -0.1627, -0.2517, +0.0258, -0.0443, -0.5248, +0.0665, -0.0691, +0.0189, -0.0508, -0.1779, -0.1436, +0.2963, +0.0813, +0.1930, +0.3296, -0.2460, -0.1461, -0.5603, -0.1810, -0.2581, -0.2436, -0.0843, +0.5100, +0.2761, -0.3765, -0.0106, -0.2290, -0.0690, +0.2012, +0.1046, +0.2561, -0.1044, +0.1021, -0.0679, -0.1568, -0.1762, +0.1130, -0.0063, -0.4383, +0.3758, -0.0209, -0.0874, +0.0876, +0.2062, -0.1465, +0.0481, +0.2485, -0.2862, -0.1775, -0.0964, -0.1709, -0.1240, +0.2065, -0.0682, +0.3673, +0.2061, +0.1768, +0.4223, +0.2779, -0.4110, +0.3216, +0.0303, -0.1087, -0.0289, +0.2141, -0.0892, +0.0724, +0.1493, -0.1222, +0.4888, +0.2078, -0.5587, +0.0690, +0.5192, +0.2602, -0.3714, -0.0536, +0.4019, -0.3338, +0.3480, +0.4706, +0.1542, +0.0386, -0.0184, -0.1234, -0.1620, -0.4661, +0.6079, -0.1953, -0.0325, -0.0840, -0.8175, +0.5745, -0.0440, -0.2864, +0.3301, -0.2557, -0.7061, -0.0560, -0.0798, +0.2381, +0.0454, -0.3209, -0.8235, -0.2107, -0.0132, +0.1575, +0.0517, +0.5372, -0.4524, -0.0897, -0.1099, +0.1534, -0.0826, -0.0479, -0.1341, +0.0200, +0.3428, -0.2052, -0.0708, +0.2517, +0.0383, +0.2680, +0.1878, -0.1632, +0.0741, +0.3131, -0.1080, +0.0636, +0.1509, +0.2733, +0.0808, -0.3193, -0.3360, +0.3522, -0.1549, -0.0083, +0.0331, +0.2133, -0.0805, -0.0192], -[ -0.0090, -0.7190, +0.0287, -0.1157, +0.0745, +0.3667, -0.5998, -0.0310, -0.2630, -0.3131, +0.3447, -0.4504, -0.5418, +0.0815, +0.5551, +0.0454, +0.2244, -0.7820, -0.0551, +0.3348, -0.3291, -0.3404, +0.1089, +0.4196, +0.1245, -0.2226, -0.8805, -0.2618, +0.3954, -0.0636, +0.1052, +0.6942, +0.2351, +0.0717, +0.0087, -0.5369, -0.4536, -0.4508, -0.2575, +0.1384, -0.4807, -0.8570, +0.1489, +0.4082, +0.3532, +0.6214, -0.6171, -0.4486, -0.0222, -0.3481, -0.3923, +0.2630, -0.4009, +0.1423, +0.0492, +0.3249, -0.5461, -0.0477, -0.4203, -0.0546, +0.4775, +0.1350, -0.3938, -0.2880, -0.1900, -0.2450, +0.0991, -0.2935, -0.0173, +0.0553, -0.6210, +0.0606, +0.1558, -0.0967, -0.0440, +0.1492, +0.2928, +0.4220, +0.1469, -0.2017, -0.1793, -0.0098, +0.0885, -0.0230, -0.7109, -0.4101, -0.0837, +0.6580, -0.9717, -0.2121, +0.2832, -0.3741, +0.0061, +0.2609, +0.0210, -0.1232, +0.0118, -0.0750, +0.2077, +0.3313, -0.2516, +0.2478, +0.1322, -0.1621, -0.1052, -0.2867, +0.3331, -0.0031, +0.2268, +0.1272, +0.1227, +0.2216, +0.3715, +0.2280, +0.0760, +0.2323, -0.0799, -0.2453, -0.0374, +0.2428, +0.0618, -0.1455, +0.1584, +0.3443, -0.3099, -0.1180, -0.4679, +0.0437, -0.6733, -0.0182, -0.9888, -0.0305, +0.2637, +0.1871, -0.3583, +0.1012, -0.1439, -0.4020, -0.5956, -0.0684, -0.1067, -1.4224, -0.3761, -0.0627, -0.5443, -0.1520, +0.3699, +0.0504, -0.2920, -0.2087, +0.2902, +0.0530, -0.2147, +0.3068, -0.2544, -0.0594, +0.2886, +0.1204, -0.2298, -0.3535, +0.1523, -0.5625, -0.2414, -0.1771, -0.2475, +0.1122, -0.2257, +0.6740, +0.0547, +0.2715, +0.3325, +0.2092, -0.2073, +0.2023, +0.0609, -0.0707, -0.2632, +0.5914, +0.2079, -0.2039, -0.0962, +0.3187, -0.1177, +0.0178, -0.5277, +0.2072, +0.0490, +0.4128, -0.3430, +0.2126, -0.3023, -0.8172, -0.0574, +0.3243, +0.1318, +0.1318, +0.3273, +0.1659, -0.0302, +0.1821, -0.0471, +0.4006, -0.5557, -0.0048, +0.2773, +0.4528, +0.1312, +0.1157, -0.1914, +0.2782, -0.4504, -0.5821, -0.3724, -0.7419, -0.0563, -0.3718, -0.2825, +0.1941, -0.4512, +0.0055, +0.1568, -0.0388, +0.0611, +0.2967, -0.0265, -0.1912, -0.0010, -1.1829, +0.3570, +0.4400, +0.2548, +0.2159, -0.0028, -0.1177, -0.1932, -0.0370, -0.1323, +0.1036, +0.2015, -0.2162, +0.1433, -0.0311, +0.4593, -0.2720, -0.2148, -0.3684, +0.2503, -0.2008, -0.7100, -0.1473, +0.2541, -0.0741, -0.4764, -0.0769, +0.0138, +0.1996], -[ -0.0196, -0.0188, +0.2341, -0.1657, -0.2010, +0.1802, -0.3254, -0.0962, +0.2681, -0.4074, -1.9693, +0.2274, -1.3948, -0.4150, -0.3552, -0.1164, +0.0279, +0.0370, -0.0082, -0.0993, +0.0399, -0.2063, +0.1688, -0.3988, -0.0103, +0.1511, +0.0125, -0.0424, +0.5928, -0.0874, -0.0476, +0.1005, +0.0105, -0.4740, +0.0977, -0.1555, -0.4525, -0.5604, -0.2311, -0.0476, -0.1259, -0.1425, +0.3829, +0.0580, -0.1037, -0.5464, +0.2239, +0.0397, +0.4490, +0.0970, +0.3116, -0.3147, -1.0318, -0.3085, +0.3552, -0.7662, -0.2201, -0.0856, -0.4996, +0.2374, -0.2240, +0.4668, -0.7254, -0.3186, -0.3280, -0.2789, +0.0166, +0.2869, -0.2303, -0.0382, +0.2701, +0.1827, +0.3363, +0.1141, +0.3349, +0.1940, -0.2430, +0.5515, +0.4664, +0.2592, +0.0179, +0.1718, +0.3899, +0.0513, -0.0009, -0.2677, -0.0332, +0.0347, -0.9532, +0.4455, +0.1301, -0.7859, +0.1240, -1.2113, +0.2404, +0.2148, +0.2536, -0.3189, -0.2052, +0.0741, +0.0962, -0.0216, -0.4901, -0.3166, -0.1078, +0.7157, +0.1361, -0.1401, +0.0713, +0.0949, -0.0446, -0.1113, +0.1078, -0.3320, -0.9390, +0.1392, +0.1523, -0.6291, -0.0874, +0.1460, +0.0767, +0.2041, +0.0262, -0.8102, +0.2982, -0.1949, +0.0687, +0.1443, +0.1636, +0.1299, +0.1927, +0.1438, -0.4358, +0.1223, +0.3233, +0.0744, +0.0673, -0.2689, +0.3514, -0.0766, -0.1786, -0.8467, +0.5013, -0.6600, -0.0456, -0.1952, +0.2180, -0.2169, +0.3538, -0.2836, +0.1376, +0.1799, -0.1232, +0.2084, -0.0228, +0.3845, -0.6862, -0.1533, +0.2055, +0.2896, -0.3843, +0.1931, -0.5168, -1.0422, -0.4716, +0.1829, -0.0586, -0.6187, +0.1885, +0.4505, -0.0169, +0.0049, -0.3754, -0.1109, +0.0390, +0.3732, +0.1102, +0.1870, +0.1913, -0.2967, +0.1527, -1.1695, +0.1227, -0.2503, +0.4779, -0.1975, +0.1673, -0.1532, +0.1910, +0.0776, +0.2998, -0.1489, -0.1219, -0.0566, +0.1296, -0.3611, +0.1128, +0.1012, -0.2710, -0.4229, -0.4405, -0.3334, +0.1844, -0.0502, +0.3560, +0.6672, -0.0753, -0.0141, -0.0018, +0.5795, -1.5657, -0.4340, +0.4236, +0.3847, -0.1325, +0.2281, -0.0183, +0.2106, +0.0839, +0.2430, -0.1333, +0.2807, -0.0217, -0.2005, -0.0998, -0.5069, +0.4379, +0.0184, +0.0136, -0.1791, -0.7820, -0.0216, -0.1920, +0.0127, -0.0873, +0.0872, +0.3602, -0.3908, +0.2011, +0.0297, -0.0171, +0.0149, +0.0277, +0.0486, -0.2415, +0.2183, +0.5177, +0.2203, +0.5796, -0.0882, -0.1621, -0.2704, -0.1740, -0.5331, -0.0266, -0.3008] -]) - -weights_dense1_b = np.array([ -0.0535, -0.1881, -0.2367, -0.0665, -0.2292, -0.0436, -0.1325, -0.2096, -0.0220, -0.1488, -0.0667, -0.1814, +0.1224, +0.0191, -0.0999, +0.1016, -0.1859, -0.1414, -0.2058, -0.0210, +0.1200, -0.0695, -0.1440, +0.0429, -0.0534, -0.1647, +0.0366, -0.1558, -0.0095, -0.1070, +0.0364, -0.0388, -0.1198, -0.0477, +0.0260, -0.2163, +0.0295, +0.0218, -0.1245, -0.0666, -0.1102, -0.0474, -0.0690, -0.1831, -0.1399, -0.0774, +0.1181, -0.0459, -0.0515, -0.1858, -0.1730, -0.0928, -0.0838, -0.1467, -0.0690, -0.1810, -0.1777, -0.1549, -0.0153, +0.0095, -0.0429, -0.0783, -0.0925, -0.1335, -0.1432, -0.0262, -0.2227, -0.1934, -0.0087, -0.0814, -0.1344, -0.1163, -0.1578, -0.2197, -0.1538, -0.2301, -0.0731, -0.2235, +0.0170, -0.0218, +0.0363, -0.1511, -0.0765, -0.1926, -0.0221, -0.0173, -0.2494, +0.0106, +0.0641, -0.0861, -0.0671, -0.0483, -0.0965, +0.0223, -0.1832, -0.0337, -0.0910, -0.0865, -0.2115, -0.0737, +0.0123, -0.1876, -0.2822, -0.1370, -0.1365, -0.0368, -0.2335, +0.0270, -0.0914, -0.2372, -0.1791, -0.1821, -0.1231, +0.1192, -0.0862, -0.2162, -0.1183, -0.1097, -0.0892, -0.0716, -0.0727, -0.0311, -0.1978, -0.0541, -0.0775, -0.1638, +0.0750, -0.2575, -0.0092, -0.0824, -0.0639, -0.1631, -0.2352, +0.0217, -0.2325, +0.0827, -0.0632, -0.1640, -0.3099, -0.0224, -0.1197, -0.1580, -0.1036, -0.1479, -0.1737, +0.0168, -0.2041, -0.0803, -0.1364, -0.0991, +0.0887, -0.0670, -0.0176, +0.0470, -0.0487, -0.0351, -0.1180, -0.2644, -0.1581, -0.0512, -0.1624, +0.0323, -0.0116, -0.0532, +0.0863, -0.2451, +0.1461, -0.0204, -0.1544, -0.2076, -0.0627, -0.1614, -0.0867, +0.0102, -0.1335, -0.2164, +0.0922, -0.0468, -0.0287, +0.0582, +0.0186, -0.2668, -0.2536, -0.0426, -0.0913, -0.1526, -0.0267, -0.1609, -0.0818, -0.2684, -0.1280, +0.1789, -0.1946, -0.0554, -0.1214, -0.1353, -0.2240, -0.1856, -0.1216, +0.1116, -0.0246, -0.2914, -0.1981, -0.1726, -0.1546, -0.1183, -0.1454, -0.0956, -0.2058, -0.2068, -0.0797, +0.0067, -0.1278, -0.1931, -0.0938, -0.1422, -0.1986, -0.0956, -0.1910, -0.0589, +0.0591, -0.1888, -0.1300, -0.2354, -0.1112, -0.0869, -0.0594, -0.0394, -0.2731, -0.1184, -0.0872, -0.0277, -0.0807, -0.0126, -0.2975, -0.0693, -0.0756, -0.1037, -0.2700, +0.0331, +0.0207, -0.1593, -0.1339, -0.1222, -0.0481, -0.1740, -0.1421, -0.1853, -0.0356, -0.0469, -0.2273, +0.0541, +0.0115, -0.0053, +0.0456, -0.1751]) - -weights_dense2_w = np.array([ -[ +0.0857, -0.1668, +0.2606, +0.1002, -0.1879, +0.5984, +0.3623, -0.3853, -0.0730, -0.2229, -0.1860, +0.2448, -0.0884, -0.2199, -0.6824, -0.1855, -0.1010, -0.3409, -0.7248, -0.4015, -0.4604, +0.1589, +0.3950, +0.2008, -0.3577, +0.0245, -0.2102, +0.2381, +0.2535, -0.4307, -0.1578, +0.2096, -0.0904, +0.1407, -0.3636, +0.2360, -0.3047, +0.5790, -0.5051, +0.7776, -0.0728, +0.5122, -0.3221, -0.0274, -0.2659, -0.1000, -0.3058, -0.2609, +0.2546, +0.0317, +0.1105, -0.0956, -0.1104, +0.1518, +0.1501, -0.0880, -0.1735, +0.0124, +0.6686, -0.3322, -0.6350, -0.9975, +0.0317, -0.4829, -0.1455, -0.2920, +0.0932, +0.2845, -0.2700, -0.3145, -0.1171, -0.5620, +0.2704, -0.0393, +0.3000, -0.0748, +0.2540, -0.6390, -0.7323, -0.1075, -0.3915, -0.3137, +0.0241, -0.2076, -0.6196, +0.1602, +0.4094, -0.1694, +0.0703, -0.0654, -0.1646, +0.1227, -0.4635, -0.1667, +0.1948, -0.1697, -0.4651, -0.0035, -0.5585, +0.3503, +0.3103, -0.1918, +0.0609, -0.2813, -0.0238, -0.0586, +0.2387, +0.1169, +0.0430, +0.4160, +0.0326, +0.3422, -0.6123, +0.3280, -0.4876, -0.6119, -0.3321, -0.2852, -0.0540, -0.1323, +0.4282, -0.0819, -0.1481, +0.1840, +0.1308, -0.3705, -0.1021, -0.2169], -[ -0.1941, -0.3040, +0.0942, -0.0536, -0.6547, +0.0816, -0.0406, -0.3756, -0.0102, +0.1274, -0.2535, +0.6866, +0.0149, -0.0957, -0.1697, +0.1097, -0.8035, -0.2014, -0.0639, +0.4055, -0.6464, -0.3623, +0.4539, -0.2600, -0.4349, -0.1334, -0.0595, -0.2838, +0.1774, -0.1420, +0.0498, +0.3646, -0.2849, -0.2762, -0.4011, +0.1259, -0.4568, -0.0895, -0.2066, -0.0959, +0.1850, +0.2017, -0.5322, +0.1286, +0.3285, +0.0661, +0.0789, -0.5247, +0.2061, -0.2369, +0.3820, -0.0342, -0.0803, -0.3518, +0.3262, -0.0648, +0.0578, -0.5455, -0.1103, -0.2154, -0.0767, -0.2390, -0.2482, -0.5708, -0.0818, -0.0905, -0.1595, -0.1521, -0.3207, -0.0593, -0.3040, -0.0328, +0.1579, -0.1218, +0.1965, -0.2167, +0.2392, +0.0553, +0.2176, -0.0308, +0.0580, -0.3748, +0.0740, +0.3837, +0.2267, -0.3452, +0.1886, -0.1335, -0.4399, -0.1497, +0.0150, +0.2612, +0.1256, -0.2791, -0.2911, -0.0672, -0.1288, +0.3678, -0.2479, +0.0268, +0.2078, -0.8300, +0.2676, -0.0739, +0.1101, +0.1345, +0.2237, +0.0201, -0.1757, -0.0697, +0.4635, -0.1180, +0.3829, -0.2999, -0.1782, -0.2938, -0.0696, +0.1201, +0.1991, -0.4390, +0.2369, +0.0006, -0.1359, -0.6613, -0.0549, +0.2403, -0.3625, -0.4972], -[ -0.1520, +0.0936, +0.2959, -0.5023, +0.0863, -0.6149, -0.1856, -0.1523, -0.1060, -0.0232, -0.1076, -1.1325, -0.1899, +0.0684, -0.4843, +0.3596, +0.2417, +0.0180, -0.3997, -0.1037, -0.0660, -0.2849, -0.8432, +0.1968, -0.1094, +0.1066, -0.4151, +0.0720, -0.3152, +0.1132, +0.0300, -0.3450, +0.0425, -0.5583, +0.0072, +0.0313, -0.0610, -0.6147, -0.0163, +0.0889, -0.1892, -0.3184, -0.2395, -0.8955, +0.2148, -0.6412, -0.5100, +0.3033, +0.1503, +0.2175, +0.4271, +0.1598, +0.1455, -0.1108, -0.2897, +0.0305, +0.2360, -0.0406, +0.1749, +0.0671, +0.3842, -0.1216, -0.0327, +0.0550, -0.4009, -0.2535, -0.2293, -0.3931, -0.0271, -0.0718, -0.3966, +0.1172, +0.0164, -0.1355, -0.0720, -0.2698, +0.3188, -0.2551, +0.3593, +0.2075, +0.0433, -0.1682, -0.5461, +0.0568, -0.2729, -0.3512, -0.3833, +0.2837, -0.9007, +0.2187, +0.3668, +0.0921, -0.0846, -0.4195, +0.0291, +0.0343, -0.1137, +0.0387, -0.0822, -0.1188, -0.0515, +0.0168, +0.3851, -0.0682, -0.0193, -0.1167, -0.2538, -0.2041, +0.0918, +0.1097, +0.2945, +0.0075, +0.1421, -0.2212, +0.0587, +0.1233, -0.2948, -0.1702, +0.1989, +0.2860, +0.3146, +0.2437, +0.0036, +0.3910, -0.8099, -0.1816, -0.1607, +0.2463], -[ +0.2130, +0.5568, -0.1947, -0.3108, +0.1336, +0.4051, -0.0285, -0.8029, -0.1213, -0.2833, -0.2795, -0.7607, +0.1473, -0.3583, +0.1520, -0.5148, -0.1111, -0.5543, -0.0642, -0.8136, -0.1361, +0.3906, +0.5140, +0.0306, -0.5411, -0.1297, -0.0763, -0.1990, -0.2482, -0.2149, -0.1017, -0.4252, +0.2098, -0.0574, +0.7323, +0.1897, -0.2011, +0.3414, -0.6729, -0.0209, -0.1553, +0.8606, -0.5401, +0.0612, +0.0037, +0.3865, +0.1892, -0.2147, -0.2894, +0.0592, +0.0688, -0.9835, -0.6681, -0.2927, +0.0160, +0.0148, -0.0824, +0.0453, +0.1154, +0.1604, +0.1496, +0.2712, -0.3715, -0.0791, +0.2089, +0.4708, +0.1995, -0.4699, -0.0032, +0.3583, +0.0253, -0.1829, +0.2438, -0.1894, -0.6303, +0.1847, -0.3924, +0.0469, +0.1973, -0.1183, -0.1261, +0.0904, +0.0938, +0.0010, -0.1558, +0.4179, +0.3052, -0.0362, -0.2847, +0.4197, +0.0406, -0.3099, +0.1290, -0.4241, +0.3164, +0.0805, -0.6801, -0.2793, +0.2581, +0.2949, -0.5835, +0.0695, -0.3612, -0.3121, +0.1134, +0.0536, -0.0335, -0.0652, +0.2348, +0.4012, -0.1115, +0.1961, -0.0475, +0.1594, +0.3644, -0.7306, +0.0752, +0.2627, +0.3982, -0.0148, -0.2198, +0.1840, -0.4194, -0.5499, +0.1468, -0.4378, +0.0297, +0.4779], -[ +0.0796, -0.2702, +0.3210, +0.1179, +0.0714, +0.0869, -0.2399, +0.2301, +0.1074, -0.0955, +0.0745, +0.0057, -0.3088, -0.1712, +0.3103, -0.1934, +0.2365, -0.0946, -0.1563, +0.3947, +0.0539, +0.1453, +0.1149, +0.0773, +0.2066, +0.1365, +0.0931, -0.3960, -0.2572, +0.3873, -0.1077, +0.3315, -0.1924, -0.2762, +0.1086, -0.1207, -0.0510, -0.1581, -0.0567, +0.2884, -0.3004, -0.1362, +0.1527, -0.1706, +0.4896, -0.1575, -0.6330, +0.1966, +0.1827, -0.0742, +0.2243, -0.1621, -0.3765, -1.4214, -0.2088, -0.0144, -0.3354, -0.1249, +0.0601, -0.3532, -0.0308, +0.0562, +0.1908, +0.3416, +0.1404, -0.1765, +0.2053, +0.0843, +0.0312, -0.2173, +0.0251, -0.2912, -0.3454, -0.2762, +0.3500, -0.3968, -0.8007, -0.0359, +0.2290, -0.1432, +0.2643, -0.1380, +0.2801, +0.0308, +0.1131, -0.1250, -0.1067, -0.0566, -0.0115, +0.0354, -0.8223, +0.0005, -0.2561, -0.0743, -0.3412, +0.1623, +0.1382, -0.3215, +0.2008, +0.1856, +0.4157, +0.1399, +0.0455, -0.0312, -0.6037, +0.0124, -0.1213, -0.0059, -0.1025, +0.1711, +0.1829, +0.1860, +0.0446, -0.1353, -0.2107, -0.8695, -0.0417, -0.0247, -0.1820, -0.1703, -0.1238, -0.4736, -0.3786, -0.3072, -0.7950, -0.0643, -0.5176, -0.4931], -[ +0.0527, +0.0760, -0.2100, +0.1037, +0.1423, -0.5246, +0.1239, +0.1397, +0.1779, +0.1441, -0.3865, -0.6069, -0.0719, -0.2568, -0.4402, -0.1780, -0.0611, -0.0784, +0.1059, -0.2282, +0.4960, +0.3684, +0.7409, +0.0554, -0.3028, +0.4585, -0.6557, -0.5486, -0.1697, -0.0494, +0.0409, -0.2620, -0.1967, -0.3764, +0.4115, -0.0255, +0.1703, -0.3032, +0.2506, -0.5227, +0.3101, +0.1530, +0.0942, -0.5197, +0.3909, -0.0767, -0.6951, -0.3573, -0.1204, -0.3780, -0.6518, -0.0203, +0.3363, +0.3798, -0.0839, -0.1224, +0.0670, -0.2128, -0.1721, -0.3203, +0.0945, -0.0175, -0.6467, +0.3769, -0.1439, -0.0752, -0.5241, -0.0268, +0.5663, -0.0761, +0.0623, -0.0937, -0.2230, -0.0082, -1.3069, +0.1953, +0.3560, +0.2586, -0.3082, -0.7847, +0.0890, +0.0389, -0.3137, -0.4273, -0.6198, +0.2330, +0.2251, -0.0892, +0.2979, -0.1869, +0.3158, -0.0154, +0.3934, -0.0284, +0.0294, +0.2361, +0.2289, -0.4907, -0.0738, -0.2074, -0.1775, +0.2006, +0.1215, +0.3072, +0.1712, -0.0756, -0.0651, -0.1566, -0.5045, -0.0006, -0.0226, +0.1020, -0.1156, -1.2738, -0.2422, +0.1422, +0.3665, -0.2217, -0.1637, +0.2061, -0.0812, -0.8075, -0.4533, -0.0817, -0.2194, +0.3882, +0.2789, +0.3449], -[ +0.0429, -0.1152, +0.3501, -0.4959, -0.8077, +0.0314, -0.1710, +0.9532, -0.4466, -0.2559, -0.6596, +0.2621, +0.0090, -0.2646, -0.5293, -0.1510, -0.2704, -0.2225, +0.2518, -0.3173, -0.2639, -0.0956, -0.6198, +0.2039, -0.1395, -0.0150, -0.5768, +0.2091, +0.2578, -0.5820, +0.0961, +0.0112, +0.0059, -0.4075, +0.3521, -0.0594, +0.2667, -0.4213, -0.2667, +0.2399, -0.0333, -0.3042, -0.9125, -0.1376, +0.1823, -0.4083, -0.0736, -0.4927, -0.2113, -0.1492, +0.3525, +0.1537, -0.9909, +0.1043, -0.2320, -0.1689, -1.2174, -0.2341, +0.1482, +0.0671, +0.0247, -0.2840, -1.0936, -0.3989, -0.0483, +0.1806, +0.4184, -0.5290, -0.1334, +0.4845, -0.7723, -0.1102, -0.2677, +0.2936, -0.1871, +0.0119, -0.9323, +0.1542, +0.0932, -0.0329, -0.3368, -0.2050, +0.1694, -0.1356, -0.3178, -0.2481, +0.5048, -0.2407, +0.1691, +0.0708, -0.4465, -0.1522, -0.3245, -0.1953, +0.2167, +0.3609, +0.3411, -0.3874, -0.5384, -0.4864, -0.9853, -0.2584, +0.2875, -0.2614, -0.0072, +0.7372, +0.2221, -0.1266, -0.0809, -0.1685, -0.0255, +0.2897, +0.2083, -0.3754, -0.6355, -0.3920, +0.0862, -0.0561, -0.0339, +0.1090, -0.6115, +0.1937, -0.2425, -0.1524, -0.3936, -0.0924, +0.3846, +0.2991], -[ -0.0140, +0.0109, -0.0012, -0.3259, +0.3120, +0.0089, -0.1670, -0.2373, +0.1888, +0.1814, -0.2391, -0.0922, -0.0246, +0.0249, -0.2565, -0.4487, +0.0426, -0.5524, -0.1537, +0.0238, -0.2219, +0.0341, -0.0686, -0.0111, +0.2066, +0.2401, -0.2978, -0.3422, -0.3453, +0.1933, +0.4172, +0.2099, +0.1733, +0.1754, -0.5520, +0.3104, -0.2823, -0.1089, -0.4502, -0.7780, +0.0566, -0.1865, +0.3599, +0.0508, -0.2145, +0.4122, -0.6397, -0.4295, -0.1577, +0.0817, +0.2797, -0.2887, -0.3108, +0.1983, -0.0242, -0.3960, +0.1422, +0.0319, -0.1301, -0.6896, +0.4770, -0.4622, -0.0341, -0.1788, +0.4511, -0.2212, +0.0152, -0.0861, -0.0501, +0.2241, +0.2745, +0.2555, -0.2256, +0.1776, +0.3860, +0.1192, -0.2219, +0.1187, -0.1496, +0.2286, +0.1309, -0.6818, -0.0176, -0.8467, -0.4837, -0.4338, -0.3126, +0.1883, +0.1554, -1.1608, -0.1652, +0.0471, -0.1202, +0.1916, -0.3461, +0.2276, -0.2724, +0.2886, -0.4907, +0.1417, -0.0976, -0.0766, -0.0081, -0.0833, -0.2504, +0.0466, +0.6725, -0.4275, -0.0300, -0.3165, +0.3372, +0.5080, +0.0877, -0.0177, -0.4271, +0.0862, -0.1680, -0.2082, -0.4222, -0.4812, -0.1703, -0.6065, -0.1772, +0.1895, +0.1171, -0.3720, -0.3902, -0.1912], -[ +0.0629, -0.0765, -0.0300, +0.4872, -0.6299, -0.8848, -0.0917, +0.0862, +0.0267, -0.0297, +0.1314, -0.1630, +0.2792, +0.2970, -0.9907, -0.8020, -0.1708, -0.0815, -0.2293, -0.0168, -0.3089, -0.0762, -0.0558, +0.3536, -0.2817, +0.0962, -0.2387, -0.4101, -0.3517, -0.4580, -0.1307, +0.2669, -0.0004, +0.0163, +0.3731, -0.1904, +0.4087, +0.6842, +0.4637, -0.0729, +0.1968, -0.4190, -0.2859, -0.4249, -0.0892, -0.4015, -0.4811, -0.2119, +0.5701, -0.0587, +0.4816, -0.5695, -0.4443, -0.2712, +0.1499, +0.3340, -0.1391, -0.1926, +0.1582, -0.4504, -0.2139, +0.0691, -0.0943, +0.0224, -0.2985, -0.0357, +0.2535, +0.1003, +0.1476, -0.0045, +0.0155, -0.0458, +0.2135, +0.3966, -0.0181, +0.0306, +0.0513, +0.0175, +0.1491, +0.2259, +0.1198, +0.4582, +0.1454, -0.0789, +0.0630, +0.4167, -0.1462, +0.1713, +0.0439, -0.5219, +0.1303, -0.4948, +0.1036, -0.6343, -0.0147, -0.0041, -0.0625, +0.1217, -0.2076, +0.2300, +0.0921, -0.0606, -0.4275, +0.3643, -0.0406, +0.1658, -0.6828, +0.2862, +0.1540, +0.1130, +0.0141, -0.2462, -0.1795, +0.0809, -0.1052, -0.5909, -0.7683, +0.1743, -0.1477, -0.3604, +0.0273, -0.1109, -0.8656, -0.6392, +0.3847, -0.0871, +0.2598, +0.5191], -[ -0.2562, +0.3383, +0.0312, -0.8109, -0.0756, -0.4373, -0.0498, -0.3726, +0.0021, -0.0504, -0.1000, -0.3619, -0.5657, -0.2635, -1.1345, +0.2822, +0.6582, +0.1538, -0.4721, -0.1400, -0.0321, +0.3481, +0.5078, -0.2154, -0.2340, -0.2320, +0.2569, -0.8570, +0.1210, +0.3845, -0.7771, +0.3669, +0.3785, +0.0973, +0.4370, -1.0284, +0.1307, -0.2318, +0.1093, -0.5822, +0.3701, +0.2302, -0.4668, +0.0757, +0.1067, -0.4919, +0.1157, +0.2219, +0.0602, -0.0120, -0.6260, -0.0101, +0.9644, -0.4675, +0.0352, +0.9360, +0.2236, -0.3142, +0.2893, -0.4575, -0.2257, -0.0018, +0.1273, +0.0132, -0.2427, -0.1711, +0.1802, -0.5057, +0.7808, +0.5013, +0.4321, +0.3743, +0.3345, -0.4583, +0.4345, -0.5489, -0.4228, +0.2005, -0.1782, -0.3014, -0.1750, +0.2406, -0.0775, +0.5415, -0.1729, -0.0536, +0.4178, +0.2228, +0.4514, +0.2258, +0.2780, +0.2287, -0.3723, +0.3971, +0.1519, -0.8934, +0.1871, -0.9681, -0.8488, -0.1048, -0.3867, +0.1000, +0.1234, +0.5811, -0.0081, -0.0856, -0.6957, +0.3636, -0.0895, +0.0018, -0.0571, -0.6239, +0.1585, -0.1213, +0.3008, +0.1024, +0.0288, +0.3868, -0.5949, -0.6411, -0.4002, -0.3821, +0.0096, -0.3292, -0.1766, -0.0922, -0.1406, +0.1767], -[ +0.3114, -0.3274, -0.2979, -0.4965, -0.3297, -0.2428, -0.0026, -0.0907, -0.0840, +0.1071, +0.0742, +0.4061, +0.2837, +0.1820, +0.3979, +0.7943, +0.1378, -0.1349, -0.7086, +0.0091, +0.3992, +0.4336, +0.0625, +0.0044, +0.0456, +0.1380, -0.2838, -0.4480, +0.3146, +0.3884, -0.4415, -0.1811, +0.1513, -0.4423, -0.0160, -0.1927, -0.2991, +0.0634, +0.1529, -0.4339, +0.0005, +0.3344, -0.3320, -0.0757, +0.4477, +0.3606, +0.0590, -0.1131, -0.4696, +0.3080, +0.2494, +0.1095, -0.1100, -1.1904, -0.0363, -0.1727, +0.5882, +0.2833, -0.3499, +0.2019, +0.1493, +0.1002, -0.4541, +0.0148, -0.2620, -0.0336, -0.0983, +0.3023, +0.3599, -0.6438, -0.5244, +0.3156, +0.4523, -0.4692, -0.2329, -0.0327, +0.0248, -0.2189, -0.4825, +0.3356, -0.1994, +0.6375, +0.3610, -0.3464, +0.3493, +0.0402, +0.4349, -0.5046, -0.0120, +0.0622, +0.2398, -0.2450, -0.0645, +0.4515, -0.0101, -0.2271, +0.3843, -0.1519, -0.0821, -0.3992, +0.2309, +0.4258, -0.3181, +0.0863, +0.2141, +0.2736, -0.0786, -0.5809, +0.6236, -0.1726, -0.0046, -0.6708, -0.1448, +0.2086, -0.5404, +0.3859, -0.4182, -0.2954, +0.1882, +0.0654, -0.2260, +0.2503, +0.2504, -0.3144, +0.4998, -0.0548, -0.2754, -0.7438], -[ -0.0175, -0.3359, +0.0437, -0.7023, +0.2608, -0.1289, +0.1146, -0.0293, -0.0623, +0.4295, +0.1560, -0.9575, -0.0612, -0.1959, +0.0975, -0.4029, -1.0499, +0.1301, +0.0280, +0.0232, -0.6508, +0.3080, -1.1975, +0.3680, +0.0194, -0.0086, -0.1018, +0.2430, -0.6217, -0.2293, +0.0722, +0.0102, +0.1516, +0.1115, -0.9611, -0.1523, +0.4333, -0.0136, +0.0235, -0.0957, -0.0771, +0.3077, +0.1020, -0.0192, -0.2438, +0.0294, +0.0726, +0.1068, -0.5350, +0.0985, +0.0475, -0.2803, +0.3248, +0.3304, -0.2819, +0.1137, +0.0151, +0.0149, -0.1982, +0.2837, -0.4962, -0.1637, -0.6334, +0.0375, -0.1627, -0.0907, +0.4035, -0.1582, -0.0368, +0.4663, -0.1364, +0.2106, -0.0439, -0.2418, -0.7679, +0.1843, -0.3715, -0.2045, -0.6804, +0.1926, -0.1867, -0.7135, -0.2860, +0.0563, -0.0906, +0.1097, -0.6302, +0.2281, -0.3840, +0.1180, -0.2266, +0.5470, +0.1721, -0.0713, -0.3283, +0.0870, -0.7469, -0.4155, -1.0454, +0.1519, +0.0992, +0.1055, -1.3218, +0.1476, -0.2353, -0.1808, -0.2815, +0.0524, +0.1065, -0.0639, +0.1966, -0.7751, +0.3786, +0.1376, +0.0211, -0.1344, -0.2210, -0.3811, -0.5303, +0.1972, +0.1607, +0.2388, +0.1817, +0.0931, +0.3530, -0.5581, +0.2062, +0.2783], -[ -0.3536, -0.0604, -0.2473, +0.3317, +0.4868, +0.0279, -0.1298, +0.2844, -0.2414, +0.0836, +0.2427, +0.2451, -0.2156, +0.1290, -0.3581, -0.6924, -0.1400, -0.1105, -0.4244, +0.0492, -0.2343, +0.4442, -0.0260, +0.0716, +0.3857, -0.1294, -0.5283, +0.4818, -0.2139, -0.1976, +0.5176, -0.0623, +0.0803, +0.2217, -0.0030, +0.1318, -0.4373, -0.4541, -0.4413, -0.7843, +0.1601, +0.3418, +0.1919, -0.0690, +0.0524, -0.1688, -0.5165, +0.1112, +0.4808, -0.4284, -0.2238, +0.0805, -0.6973, +0.5122, +0.2508, -0.0094, -0.5009, -0.0021, -0.3272, -0.5562, -0.9898, -0.1963, -0.0401, -0.3134, +0.3647, -0.0881, -0.0618, +0.0349, -0.0639, +0.5664, +0.3557, +0.0893, +0.3043, +0.2526, -0.6490, -0.1020, +0.3732, -0.9290, -0.2058, -0.1425, -0.1443, +0.4688, +0.1476, -0.2406, -0.5160, +0.7629, +0.0232, +0.0182, -0.3005, +0.1796, -0.0120, -0.0260, -0.5702, +0.3196, +0.4420, -0.1863, -1.1981, +0.3321, +0.3932, -1.3889, -0.0311, +0.0110, +0.3965, -0.5943, +0.0278, -0.1171, -0.0963, +0.4477, -0.1554, +0.2592, -0.1729, +0.0516, +0.3865, -0.6071, +0.2670, +0.3914, +0.0755, +0.2875, -0.3606, -0.5572, -0.8153, +0.3052, -0.2506, -0.4909, -0.2697, +0.3484, -0.0073, +0.3712], -[ +0.5170, +0.0301, +0.2401, +0.0751, +0.2915, -0.0875, +0.0918, -0.4703, +0.1752, -0.7646, -0.0489, +0.2456, -0.6209, +0.0215, -0.5240, +0.1400, +0.1827, -0.8322, -0.0270, -0.7514, +0.5079, +0.1733, -0.5456, +0.1732, +0.4528, -0.1199, -0.9521, -0.7495, +0.4784, -0.2975, +0.1247, -0.3716, -0.3972, -0.2679, +0.0545, -0.3006, +0.3090, -0.4706, +0.1423, -0.0914, +0.3911, -0.2026, +0.5988, +0.1447, +0.0321, -0.3293, -0.3275, -0.2388, -0.1381, -0.4301, -0.2079, -0.8244, -0.2315, -0.4377, -0.5176, +0.1056, +0.1802, -0.0612, -0.3992, -0.8671, +0.1671, +0.2401, -0.3639, +0.0139, -0.1405, +0.0859, -0.1122, +0.1348, -1.1674, -0.4996, -0.9667, -0.1564, -0.5599, -0.1649, -0.0984, +0.5221, +0.4954, -0.4913, +0.3808, -0.1584, -0.5354, +0.0556, -0.6382, -0.3985, -0.2281, +0.1424, -0.0359, -0.1596, +0.3363, -0.4608, -0.7792, -0.3444, +0.2777, +0.0127, -0.1914, -0.0143, -0.3642, -0.0907, +0.3712, -0.6014, -0.4139, -0.3083, -0.2401, -0.4343, -0.9534, -1.0380, +0.1850, -0.4850, -0.2386, -0.1424, -0.0951, -0.7309, -0.3331, +0.1808, +0.0578, +0.1838, +0.6637, +0.1878, -0.2951, +0.0632, -0.2253, -0.5503, +0.2403, -0.2445, -0.0956, +0.0100, +0.3497, -0.1902], -[ +0.1219, +0.2674, -0.1566, +0.1593, +0.0953, +0.2503, +0.1030, +0.2466, +0.1236, +0.2847, +0.1147, -0.4943, -0.5501, +0.4503, +0.0655, +0.1192, -0.0744, -0.8878, +0.2747, +0.1760, -0.1174, -0.7014, -0.3748, -0.0805, -0.2218, +0.0858, -0.4561, -0.7933, +0.0765, +0.0064, +0.3576, -0.0616, +0.0103, +0.3949, -0.3057, +0.2056, -0.0661, +0.1154, -0.0525, +0.0387, -0.5584, +0.2365, -1.0836, -0.3207, +0.2477, +0.2499, -0.2232, +0.3728, -0.4090, +0.3131, +0.1025, +0.4524, +0.2612, +0.1559, -0.4404, +0.1467, -0.5969, -0.5354, +0.0563, +0.5202, +0.0053, -0.1988, +0.2881, -0.0519, -0.0843, +0.5012, -0.0385, -0.2320, -0.8725, +0.3250, -0.6273, -0.3223, +0.6626, +0.2181, -0.2396, +0.1913, +0.0362, -0.0341, -0.9004, +0.0524, +0.1077, -0.8517, -0.3047, -0.4573, +0.2237, -0.0061, +0.0019, +0.0958, -0.3559, +0.0978, +0.1043, +0.1607, -0.3533, +0.2019, +0.1355, +0.1071, -0.1164, +0.3726, -0.6191, -0.0727, +0.1496, -0.4223, -0.1923, -0.2907, +0.0553, -0.1684, +0.0583, +0.1111, -0.3522, +0.0629, +0.0721, -0.0273, -0.2303, +0.3407, +0.2592, +0.0866, -0.0317, -0.6056, -0.0520, +0.0148, +0.4504, -0.5386, +0.0436, +0.1461, -0.0206, +0.1950, +0.2122, -0.4243], -[ -0.2876, -0.1778, +0.1615, +0.2923, -0.3257, -0.0281, +0.4096, -0.1853, -0.1244, +0.1315, -0.5552, +0.2989, +0.9514, -0.5084, -0.6420, +0.1451, -0.4794, -0.2350, -0.2577, +0.0440, -0.6412, +0.2713, +0.2498, +0.1094, +0.2599, -0.1253, -0.1720, +0.2178, -0.3366, -0.1460, -0.0054, +0.1145, -0.4066, +0.0298, -0.3103, -0.6294, +0.0776, -0.0711, -0.2040, -0.1166, -0.0112, -0.5098, -0.3324, -0.1542, +0.0908, +0.1674, +0.1948, -0.2092, -0.1765, -0.7508, +0.1311, +0.1621, +0.4139, -0.0584, -0.6157, -0.4592, -0.1106, +0.0611, -0.0277, -0.4044, +0.0435, +0.3812, -0.3477, -0.0413, +0.0726, +0.1308, -0.1875, -0.5073, +0.5653, -0.0042, +0.3902, -0.5392, -0.0521, +0.0528, -0.5696, -0.1445, +0.1190, +0.2533, -0.5400, -0.4121, +0.0246, -0.3370, +0.0226, +0.4284, +0.0573, +0.2977, -0.6372, -0.2227, +0.3662, -0.1842, +0.1124, -0.3655, -0.2793, +0.2069, -0.1218, -0.7067, -0.0936, -0.0808, -0.4891, -0.0886, -0.2139, +0.2555, -0.6631, -0.1855, -0.0064, +0.3501, -0.4225, -0.4901, +0.3438, +0.5165, -0.0012, -0.2649, +0.4944, -0.8174, +0.0840, +0.0379, +0.6452, +0.0023, +0.2210, +0.1019, -0.2371, -0.4670, -0.0202, -0.5506, -0.2770, +0.3471, +0.2847, +0.0895], -[ -0.0469, -0.1852, -0.1668, -0.2103, +0.4217, -1.3736, -0.0461, +0.3991, +0.0712, +0.0369, -0.0525, +0.3216, -0.6789, -0.1764, +0.0371, +0.0763, -0.1906, +0.2322, +0.0172, -1.2461, +0.2773, +0.0296, -0.0315, +0.1600, -0.1864, -0.0964, +0.0427, +0.0860, +0.3156, +0.3071, +0.3340, -0.1637, -0.3039, -0.1696, -0.3151, -0.6053, +0.1559, +0.1931, +0.1396, +0.0350, +0.1112, -0.3301, -0.0743, -0.1839, +0.0295, +0.0674, -0.3233, +0.1423, -0.3141, +0.0835, +0.0960, -0.2271, +0.1765, +0.0269, +0.2265, +0.2886, +0.5238, +0.3276, +0.2366, +0.0281, -0.1378, +0.1619, +0.0366, -0.0971, +0.1171, +0.4807, -0.1961, -0.1241, -0.3961, +0.2012, -0.2712, -0.7503, -0.1066, +0.2944, +0.2556, +0.0631, +0.0038, +0.1954, -0.4612, +0.0564, +0.1614, -0.5924, -0.0648, +0.0848, -0.3261, -0.1842, -0.4529, -0.3923, -1.0519, -0.7599, +0.3735, -0.0655, -0.7274, -0.2717, +0.0014, +0.5650, +0.1147, -0.8312, -0.7534, -0.0848, -0.0104, +0.0003, -0.2288, +0.0158, -0.0177, -0.3910, +0.0902, +0.2897, +0.3158, -0.4837, -0.1995, +0.3558, +0.2969, -0.7311, -0.0486, +0.0324, -0.6528, -0.1050, +0.0937, -0.1540, +0.0290, +0.1526, -0.0555, +0.0237, +0.0675, -0.1629, +0.1106, -0.1542], -[ +0.2534, +0.0963, -0.5818, -0.0211, -0.0985, +0.2304, -0.0824, -0.8504, -0.0936, -0.4461, -0.1223, -0.0289, +0.3065, -0.0240, -0.0625, +0.1740, -0.0168, +0.1596, +0.2237, +0.1848, +0.1332, +0.1160, -0.1455, -0.4701, -0.2429, -0.0346, -0.0133, -0.5247, +0.2473, -0.3191, -0.1249, +0.0780, -0.6534, -0.2170, -0.0603, +0.3960, +0.0142, -0.6253, +0.4018, -0.0866, +0.0927, +0.3550, -0.0906, -0.5809, +0.4616, +0.0300, -0.3670, +0.1015, -0.4401, +0.1961, +0.1231, -0.2146, +0.1548, +0.2297, -0.2068, +0.0484, -0.1850, -0.2586, -0.0523, -0.1136, -0.3241, -0.1117, -0.1497, -0.2188, +0.0858, +0.2453, -0.3556, +0.0595, +0.5645, -0.6295, -0.0988, -0.5802, -0.5004, -0.2107, +0.2119, -0.4395, -0.9768, -0.2228, -0.4177, +0.0051, +0.1458, +0.2906, +0.1274, -0.0190, +0.1312, -0.0388, +0.0466, -0.8377, +0.0538, -0.3747, +0.1163, -0.0405, -0.0204, -0.3639, +0.0445, -0.1422, +0.0005, -0.3388, -0.0515, +0.0867, -0.2379, -0.3695, -0.1779, +0.3638, +0.3899, +0.1553, +0.1993, +0.3115, -0.2584, +0.0983, +0.2612, +0.1874, +0.2690, -0.9353, -0.2074, -0.1897, +0.1114, -0.2484, +0.2673, -0.2438, -0.4146, +0.0369, -0.1223, +0.0927, +0.3295, -0.2599, -0.1334, -0.4441], -[ -0.2435, +0.4870, +0.0615, -0.0662, -0.6893, -0.2363, -0.0255, -0.5606, +0.0610, -0.0067, +0.2147, -0.6657, +0.0547, +0.3910, +0.0893, -0.4797, +0.2195, -0.3762, -0.0855, +0.1547, -0.1024, -0.0359, +0.0272, +0.4790, -0.2148, -0.0181, -0.3751, -0.7640, -0.1538, +0.1052, -0.4664, +0.3907, +0.3071, +0.4268, -0.5326, -0.0920, -0.2631, +0.0042, -0.8023, +0.2059, -0.1189, +0.1186, +0.0460, +0.3214, +0.0808, +0.0350, +0.1855, -0.7718, +0.1417, +0.3701, -0.5032, +0.0348, -0.9121, -0.0706, +0.2523, +0.2001, +0.1971, +0.4037, +0.1248, -0.0801, -0.0442, -0.4124, -0.0858, -0.0419, -0.1693, -0.0366, +0.2528, -0.8153, -0.4088, +0.4095, +0.2173, +0.0289, -0.4361, -0.1825, -0.0423, -0.0242, -0.9741, -0.0413, -0.2366, -0.2648, -0.1904, +0.0714, +0.1184, -0.5468, +0.2440, +0.2617, +0.4520, +0.0630, -0.1715, +0.2513, -0.3881, -0.2124, +0.1076, -0.0285, -0.4007, +0.3317, -0.3943, +0.2222, -0.6484, -0.1373, -0.1697, +0.1876, -0.3513, -0.8360, +0.3651, -0.4250, -0.0973, -0.0996, -0.5070, -0.0043, -0.2816, -0.4310, +0.1190, +0.1413, -0.4121, +0.0511, +0.1329, -0.1483, +0.5041, +0.5654, +0.3544, +0.1334, -0.1011, +0.0551, -0.6067, +0.4311, -0.0641, -0.0586], -[ +0.1281, +0.0065, +0.5766, -0.7616, -0.1693, -0.6902, +0.0404, +0.1096, +0.1226, -0.3426, -0.3377, +0.1376, +0.3418, +0.1503, +0.3650, -0.3574, +0.3534, +0.0113, +0.0525, -0.2881, -0.0320, -0.0097, +0.1912, -0.2184, -0.2189, +0.0774, -0.0057, -0.1391, +0.2583, -0.1799, -0.0371, -0.1447, +0.0466, +0.2715, -0.4362, +0.1932, -0.1659, -0.7607, -0.5682, -0.0223, +0.2383, +0.3003, -0.1072, -0.2870, -0.0134, -0.1615, -0.2152, -0.6327, -0.0720, -0.1161, +0.2410, +0.2779, +0.0452, +0.3726, -0.0459, +0.1372, -0.3682, +0.2564, -0.2470, +0.2093, -0.2629, -0.0706, +0.0648, -0.0603, -0.0330, -0.0360, +0.1973, -0.0011, +0.0355, -0.2543, +0.0327, -0.2264, -0.1007, -0.2757, -0.0124, -0.2210, -0.1483, +0.2083, +0.3049, -0.2679, +0.3684, -0.2766, +0.2848, +0.0494, -0.0015, +0.0265, -0.4313, -0.0023, +0.1030, -0.2612, -0.4339, +0.3988, -0.0081, +0.5297, +0.4353, -0.3518, +0.2857, -0.1558, -0.8816, -0.3765, -0.1108, +0.3519, -0.2681, +0.1524, +0.1198, -0.4833, -0.2095, -0.5721, -0.2486, +0.0048, -0.8008, +0.1164, +0.3337, +0.3733, +0.1415, -0.1868, -0.4591, +0.3934, -0.3426, -0.1450, +0.0650, +0.2709, +0.1629, -0.0894, -0.4749, -0.1489, -0.0992, +0.0931], -[ -0.1420, +0.2299, +0.5438, -0.0455, -0.0940, +0.1170, -0.1450, -0.0670, +0.1571, -0.1534, +0.3441, -0.2118, +0.2042, -0.4402, +0.3748, -0.1581, -0.7989, -0.4906, +0.1816, -0.0552, +0.2895, +0.0267, +0.4102, -0.0191, -0.5091, +0.0338, +0.2845, +0.1428, +0.0989, -0.4809, -0.2680, +0.2298, -0.0080, -0.5988, +0.1357, -0.3771, +0.4391, +0.2550, -0.0228, +0.1442, +0.4848, +0.4315, -0.3453, -0.1571, -0.5037, +0.1301, -0.4498, -0.1293, -0.7689, -0.2522, +0.1438, -0.5905, -0.0796, -0.0608, +0.0380, -0.4394, +0.1248, -0.2652, +0.2343, +0.1948, -0.0808, +0.0302, -0.4801, -0.5965, +0.0656, -0.7039, +0.2659, +0.6442, +0.2645, -0.3056, -0.5653, +0.1864, +0.5070, +0.4753, +0.0314, -0.1222, +0.2084, -0.0066, +0.1110, -0.1414, +0.2424, -0.3082, -0.2306, -0.0033, -0.2760, +0.1494, -0.2074, -0.4644, +0.1833, +0.0999, -0.1853, +0.2851, -0.2356, -0.1034, -0.0163, -0.5170, -0.2665, +0.3715, +0.1909, +0.4170, +0.2192, -0.2944, +0.0663, -0.0060, -0.3377, +0.0264, -0.1075, +0.5408, +0.0005, +0.1049, -0.0318, +0.1621, +0.1601, +0.3422, -0.4223, +0.3006, +0.1138, +0.5133, +0.4234, +0.2023, +0.4786, +0.2804, -0.3446, -0.7204, +0.0389, -0.2481, +0.1625, +0.3145], -[ +0.0259, -0.0157, -0.0434, +0.6363, -0.5086, +0.0688, -0.3139, +0.1557, -0.2111, -0.1314, -0.0401, -0.0637, +0.0197, -0.2405, -0.2010, -0.2409, +0.7841, +0.3490, -0.3362, -0.5915, -0.3189, +0.3792, -0.5252, -0.0473, -0.1867, +0.1106, +0.2234, +0.3962, -0.1294, -0.5706, -0.3736, +0.0571, -0.1207, -0.0926, -0.7468, -0.4722, -0.2436, +0.3380, +0.0598, +0.1472, +0.5347, -0.1874, -0.0472, +0.3377, +0.0464, -0.1319, -0.7262, +0.4229, +0.2470, -0.1082, -0.1781, -0.0220, +0.4231, -0.5109, -0.4435, -0.2218, -0.2107, +0.1247, -0.2163, -0.3671, -0.1735, +0.0669, -0.2320, -0.1604, -0.3759, -0.4017, -0.1201, -0.3439, +0.2868, -0.4037, -0.0405, -0.0419, +0.4548, -0.2146, +0.2138, -0.7843, -0.2785, +0.6067, -0.0022, -0.0799, +0.0147, -0.2827, -0.0884, -0.0450, -0.1143, -0.7701, -0.1561, -0.2048, +0.1158, +0.2876, -0.0976, +0.1620, +0.1073, -0.3890, +0.0010, -0.3252, +0.0807, +0.0013, +0.0202, +0.3893, -0.5455, -0.4685, -0.8768, +0.1983, -0.3094, +0.3132, +0.3707, -0.0912, +0.2652, +0.1110, -0.0771, +0.1969, +0.2508, -0.4597, -0.2041, -0.1276, -0.5087, +0.4819, +0.1006, +0.2146, -0.0581, +0.0376, -0.0279, -0.6799, -0.6857, +0.2542, -0.2275, -0.1752], -[ -0.0739, +0.0433, -0.9317, +0.0601, -0.4179, -0.0146, +0.0491, -0.4578, +0.0328, -0.2294, +0.1661, -0.1066, -0.3638, +0.2882, -0.1583, -0.0199, +0.4333, +0.4389, +0.0327, -0.8935, +0.1584, -0.7280, -0.0829, +0.1080, -0.0923, +0.1853, +0.0194, +0.4059, -0.1603, -0.1639, +0.2590, +0.5138, +0.0099, -0.0260, +0.2513, -0.2168, -0.1282, +0.0356, -0.7215, -0.8690, -0.1317, +0.0896, -0.2177, -0.5635, +0.0830, -0.4635, -0.3931, -0.3093, -0.3061, -0.1657, -0.1595, -0.0219, -0.0207, -0.3079, -0.1368, +0.0961, +0.2540, +0.1606, -0.5060, -0.1663, -0.3062, -0.0390, +0.3333, -0.2849, -0.4348, +0.2314, -0.0569, -0.4526, -0.5299, -0.0163, -0.1588, -0.6393, +0.2549, -0.0809, -0.1370, +0.4346, +0.1825, +0.4104, -0.0944, -0.0500, +0.2583, -0.3949, +0.3472, -0.1377, +0.0357, -0.0608, +0.1319, +0.1863, +0.1430, -0.1217, -0.2945, +0.3378, -0.7206, +0.1893, -0.0788, +0.2053, +0.3089, -0.1269, -0.1826, +0.1480, -0.2335, +0.3554, -0.3358, -0.1318, +0.0484, -0.6928, -0.3757, +0.3422, -0.1975, +0.1449, -0.1118, -0.0458, +0.1293, +0.0565, +0.0209, +0.3019, +0.1489, -0.2438, -0.1822, +0.1466, -0.1358, -0.2066, +0.0013, +0.1844, -0.6298, +0.2307, -0.2847, +0.6935], -[ -0.0771, +0.1459, -0.3851, -0.8656, -0.1535, -0.6925, -0.5462, -0.2061, +0.2002, +0.0874, -0.3099, -1.1738, -1.3657, -0.0502, -0.1134, -0.1872, +0.1037, -0.0860, +0.1643, -0.0793, +0.0103, +0.2601, -0.1006, -0.6636, -0.0258, +0.2860, +0.5668, -0.6707, -0.2856, +0.3466, +0.0520, -0.2462, -0.1669, -0.3312, +0.3975, +0.5308, -0.2453, -0.0517, -0.0810, +0.6667, +0.2031, -0.1703, +0.5038, -0.4707, -0.2173, -0.1232, +0.4301, -0.0719, +0.5156, -0.1638, +0.0886, -0.1686, +0.0128, +0.5333, +0.1285, -0.1654, -0.1349, -0.7213, +0.2281, -0.3439, +0.0007, -0.0685, -0.2852, +0.0493, -0.1308, -0.0639, +0.0115, +0.2218, -0.2992, +0.3014, -0.1462, -0.1398, +0.1566, +0.3013, -0.2620, -0.1706, -0.2185, +0.1100, -0.2358, +0.1164, +0.1407, -0.6669, -0.9306, +0.0147, -0.6511, -0.1843, -0.3696, -0.5162, +0.0942, +0.1643, -0.8506, -0.1455, +0.0201, -1.2008, +0.4528, -0.3093, -0.4097, +0.0818, -0.4275, -0.1526, +0.1587, -0.7751, -0.2342, -0.2256, -0.7288, +0.3524, +0.0942, -0.2843, -0.0502, +0.2488, -0.1667, +0.1266, -0.0120, -0.0868, +0.1270, -0.4305, -1.1901, -0.6455, +0.1158, -0.1293, -0.0052, -0.3047, +0.0997, +0.3938, -0.1785, -0.1640, -0.3158, -0.2934], -[ +0.2044, +0.1688, +0.2473, -0.8854, +0.2982, -0.2355, +0.2406, -0.0029, +0.6568, +0.4842, -0.2357, -0.0047, -0.2946, +0.1526, -0.0402, +0.4344, -0.3040, +0.3692, +0.3057, +0.1624, +0.0641, -0.1701, +0.2140, +0.0684, +0.4556, +0.2139, +0.1284, -0.1580, -0.3065, -0.5219, -0.1053, -0.3617, +0.1784, -0.3136, +0.0086, -0.5364, +0.0465, +0.0037, -0.5680, -0.5292, +0.2427, +0.0050, -0.5922, +0.2781, +0.2054, +0.2611, -0.1309, +0.0045, -0.4683, +0.2240, +0.0735, -0.1499, +0.3741, +0.0017, +0.2052, -0.2982, -0.4459, +0.2594, +0.0316, -0.1171, -0.1438, -0.2453, -0.4145, +0.3731, -0.4131, +0.0112, -0.1650, +0.0418, -0.3267, -0.2189, -0.1111, +0.0416, +0.0121, +0.0385, -0.2377, +0.1326, -0.0483, -0.1185, -0.2083, +0.4946, +0.1521, -0.6150, -0.2569, -0.3635, -0.2816, -0.9077, -0.2880, -0.5801, +0.2855, +0.1231, -0.6642, +0.2791, +0.4155, +0.1143, -0.5967, -0.5149, +0.2942, -0.4874, -0.2422, -0.1937, -0.1725, -0.1124, -0.1250, +0.0194, -0.2272, -0.5374, -0.2988, +0.0012, +0.0566, +0.1537, -0.0512, +0.4352, -0.4030, -0.3648, +0.3361, +0.0048, -0.0699, -0.2693, -0.2812, -0.4646, +0.0547, -0.0962, -0.0963, -0.3755, +0.1235, +0.0026, +0.1823, -0.5260], -[ +0.0812, -0.0118, -0.0779, +0.0797, -0.0844, -0.1186, +0.1453, +0.3392, -0.0208, +0.2493, +0.1468, +0.0626, -0.6906, -0.2404, +0.1501, -0.6556, -0.0487, -0.1034, -0.2108, +0.0537, +0.0645, +0.5164, -0.1882, -0.0700, +0.0505, -0.2243, -0.4056, +0.2187, -0.1867, -0.5927, -0.2160, -0.0084, +0.1024, +0.1589, -0.2622, -0.1478, +0.0770, -0.0275, +0.0230, +0.0401, +0.0136, -0.6108, -0.1248, -0.1600, -0.1898, +0.2341, +0.1501, +0.1051, +0.3045, -0.0990, +0.0143, -0.1087, -0.1133, +0.0560, +0.2272, -0.5773, -0.0608, +0.0662, +0.2979, +0.0818, +0.1543, -0.2238, -0.6344, +0.0510, +0.1181, +0.0766, +0.0318, -0.0138, -0.2770, -0.2499, -0.2201, +0.0913, -0.5832, -0.2373, -0.5075, -0.3386, +0.0997, -0.1384, +0.1047, +0.0021, +0.2235, +0.1455, +0.1789, -0.0496, -0.0266, -0.2336, +0.1629, -0.0460, +0.3656, -0.0439, +0.0878, +0.1561, -0.2523, -0.0066, -0.2964, +0.1481, -0.0420, -0.0931, -0.8571, +0.4311, +0.3576, -0.2559, -0.4442, -0.5156, +0.3370, +0.1202, +0.1619, -0.0298, -0.1345, +0.1956, -0.0291, -0.4071, +0.0500, +0.3018, -0.0604, -0.0625, -0.1851, +0.0131, -0.0487, -0.0910, +0.0159, +0.0161, +0.2486, +0.3344, +0.1847, +0.0324, +0.1887, +0.1937], -[ -0.2084, -0.0737, -0.2970, +0.0678, -0.2632, -0.0511, +0.2434, -0.7216, -0.2424, +0.0375, -0.1859, -0.0793, +0.2765, +0.3250, +0.3824, +0.1448, +0.1494, +0.3305, +0.1218, -0.1463, +0.0666, +0.0456, -0.2553, +0.1560, +0.1960, -0.0944, +0.1903, -0.2667, +0.1441, -0.4169, +0.2193, +0.0703, -0.1838, -0.1021, -0.2275, +0.1884, -0.2590, +0.1218, -0.0665, +0.2650, +0.1632, +0.0624, +0.2004, -0.0952, -0.2928, -0.1539, +0.2610, -0.5770, +0.2321, -0.0623, +0.2805, -0.0199, -0.3096, +0.4310, +0.3013, +0.0290, +0.1963, +0.2685, -0.2275, -0.0260, +0.1228, +0.1380, -0.9674, +0.2524, +0.0553, +0.2227, -0.0670, +0.0159, -0.3883, -0.1514, +0.1307, +0.3648, +0.0501, +0.2290, +0.0398, +0.0631, -0.2287, -0.3009, +0.4761, +0.0713, -0.1162, -0.0114, -0.1478, -0.0980, -0.3110, +0.3811, +0.2914, -0.5679, -0.8218, -0.8588, -0.4507, +0.4072, -0.0394, -0.6880, -0.1498, -0.4267, -0.2241, -0.0703, +0.3425, +0.2328, +0.0983, -0.0637, -0.3926, +0.5129, +0.1014, +0.4846, +0.0874, +0.5833, +0.4633, +0.3576, -0.0443, +0.1894, -0.1788, -0.2607, +0.0250, -0.0056, -0.0399, -0.1628, +0.1324, +0.3420, +0.3104, +0.0720, -0.3768, +0.1331, +0.3111, +0.2654, +0.1488, -0.0194], -[ -0.5461, +0.4031, -0.5901, +0.3320, -0.7554, -0.0170, -0.3387, +0.3078, -0.1421, -0.1809, +0.4944, +0.1056, -0.0915, -0.3112, +0.2919, -0.4498, +0.1075, -0.0066, -0.3514, +0.1892, -1.0209, +0.3896, +0.2191, +0.4765, -0.5653, +0.4248, +0.1892, -0.1883, +0.0421, +0.6585, -0.3444, +0.2424, -0.9283, +0.5115, -0.1036, +0.1610, -0.2717, +0.1493, -0.4071, -0.1141, +0.1760, -0.2570, +0.7204, +0.4813, -0.5784, -0.4724, -0.2705, +0.0369, +0.4404, -0.4710, +0.3176, -0.8990, -0.0459, -0.5584, -0.4834, +0.0150, +0.3504, +0.5223, -0.4228, -0.0997, +0.2658, -0.2593, -0.0555, -0.5445, +0.1914, -0.4020, -0.2047, +0.2962, -0.5900, -0.4916, +0.1333, +0.1892, -0.5128, -0.0487, +0.0407, -0.0451, -0.3563, -0.0183, -0.8080, -0.1948, -0.2844, -0.8176, -0.6454, -0.0854, +0.2280, -0.0788, -1.6756, +0.0575, +0.5596, -1.0471, +0.0512, +0.1614, +0.2484, -0.7875, +0.0503, -0.2164, +0.1077, -0.7893, -0.0857, +0.2004, +0.2574, -0.0892, -0.5307, +0.0044, -0.1482, -0.4618, +0.0240, -0.6916, -0.1745, +0.1911, -0.2820, -0.3745, -0.1154, +0.2176, -0.7476, -0.3500, +0.2481, +0.3813, +0.1696, +0.1178, -0.1229, +0.2467, -0.3576, -1.5177, -0.3848, -0.8915, -0.1041, +0.3985], -[ -0.0419, -0.2270, +0.3943, +0.2425, -0.3093, +0.2605, -1.1407, +0.0909, -0.4465, +0.8442, -0.0652, -0.4950, +0.7787, -0.2507, +1.0793, +0.3261, -0.2734, +0.7128, +0.4235, -0.0694, -0.4429, -1.6262, -0.9732, +1.0202, +0.5942, +0.6617, +0.0757, +0.0774, +0.7612, -0.6036, -0.2889, -0.6337, +0.1135, -0.2363, +0.5670, -0.2878, -0.5009, -0.0415, +0.5216, +0.3156, +0.0589, -0.0447, +0.5985, +0.5572, -0.2060, +0.5303, -1.5346, +0.4502, -0.1030, -0.0926, +0.5704, -0.4795, +0.2932, -0.5421, +0.2131, -0.2813, +0.9006, -0.0270, +0.0527, -1.2602, -0.7331, -0.1775, -0.5227, +0.0795, -0.0918, -0.5923, -0.1106, -0.1069, -0.2620, +0.0165, +0.4431, +0.1981, +0.2494, +0.4987, -0.4047, -0.2393, -0.5697, -0.6940, -0.6475, +0.0107, -0.2457, -0.0909, +0.6267, -0.1253, -0.3202, -0.0502, -0.1804, +0.1901, -0.0727, +0.3630, -0.9840, +0.4515, -0.4721, -0.0875, -1.0617, +0.4238, -0.0606, -1.0692, -0.7265, +0.3438, +0.1332, +0.1898, -0.2003, -0.1595, -1.0267, +0.4787, -0.1241, +0.4505, +0.6178, -0.2556, -0.3830, -0.1416, -0.0348, -0.5581, +0.2223, +0.2251, -0.1631, -0.9616, +0.1075, -0.8054, +0.1504, +0.8180, -0.2416, +0.5183, -0.7119, -0.0125, +0.1692, -0.1044], -[ -0.3496, +0.3863, -0.1244, +0.1842, -0.0524, +0.0874, -0.6327, -0.6498, -0.4995, -0.3207, -0.2453, +0.1468, +0.2474, +0.4465, -0.4606, -0.0990, +0.0245, +0.1937, -0.0958, -0.1789, +0.5551, -0.3651, -0.9551, -0.0997, -0.0499, -0.0961, +0.3396, -0.4789, -0.0004, -0.6379, +0.1448, -1.0094, -0.0932, -0.0286, +0.0244, -0.4879, +0.1559, +0.2207, -0.2177, +0.1818, +0.2008, -0.5522, +0.2881, +0.5045, -0.2426, +0.0569, -0.2040, -0.0808, -0.2931, -1.2060, -0.1567, -0.2931, +0.5201, -0.4283, +0.1188, +0.0372, +0.2443, +0.0736, -0.2585, -0.1486, -0.6482, +0.1754, +0.0279, -0.1101, +0.0140, -0.6403, +0.2395, -0.0928, -0.4541, -0.5115, +0.2867, +0.4037, +0.0951, -0.0202, +0.1539, -0.2125, -0.5449, +0.0333, +0.1428, +0.0738, -0.0782, -0.3488, -0.2883, -0.2156, +0.0275, -0.0739, -0.3568, -0.0112, +0.0074, +0.1373, -0.0685, -0.3078, +0.4737, +0.1289, -0.2211, +0.0438, +0.0738, -0.1081, +0.0568, -0.0383, -0.0923, +0.0137, +0.2230, -0.1416, -0.3280, +0.1892, +0.4939, +0.1020, -0.5284, +0.3331, -0.2551, -0.1851, -0.0048, -0.5180, +0.4109, +0.0512, +0.4169, +0.2517, -0.9540, -0.0811, -0.2291, +0.0532, +0.1134, -0.0445, +0.3328, -0.0413, -0.2024, -0.4981], -[ +0.2165, -0.3989, -0.2774, -0.5690, +0.1108, -0.2075, -0.2529, -0.1369, +0.4338, +0.1607, -0.0192, -0.3048, -0.3156, -0.1392, +0.1391, +0.1612, +0.0251, +0.3015, -0.2174, -0.0597, -0.0642, -0.4585, -0.4812, -0.0128, -0.1212, -0.1608, +0.1563, +0.2600, +0.3708, +0.3002, +0.2363, +0.1560, +0.1515, +0.1640, -0.0743, +0.0994, +0.0290, +0.0047, -0.2195, +0.0238, -0.5114, -0.0299, +0.2277, -0.7670, +0.0526, -0.0083, -0.0191, +0.1939, +0.0965, -0.0027, +0.3798, +0.0349, -0.2451, +0.1038, +0.3614, -0.2420, +0.1519, +0.4006, +0.0534, +0.0982, -0.3175, +0.2078, +0.2751, +0.5437, +0.1555, +0.0988, +0.1327, -0.0978, +0.3495, +0.1380, -0.1301, +0.0901, +0.7150, -0.0375, -0.4402, +0.1082, +0.0426, -0.2939, -0.1342, -0.0059, +0.1535, -0.0204, -0.5021, +0.1537, +0.0651, +0.3497, -0.0747, +0.1512, +0.0426, -0.0904, -0.1523, -0.0410, -0.2452, +0.2803, -0.1954, +0.1985, +0.2679, -0.1062, +0.0238, -0.2056, +0.0501, +0.0602, -0.2982, +0.4482, +0.1381, +0.2461, +0.0406, +0.4523, +0.1238, -0.0613, -0.4146, +0.0383, -0.0470, -0.1468, -0.1308, -0.3235, +0.3130, +0.1120, -0.0742, -0.1152, +0.0425, +0.1477, +0.0949, -0.2083, -0.1669, +0.0512, +0.2535, +0.0169], -[ +0.2037, -0.0946, -0.5015, -0.3037, +0.3991, +0.2307, +0.1848, +0.6447, +0.5938, -0.6254, +0.0766, -0.1770, -0.3066, +0.5448, -0.2207, -0.2778, -0.2080, -0.3773, -0.0237, +0.6693, +0.3159, -0.0195, +0.3682, -0.1375, +0.2766, +0.1381, -0.0548, -0.2191, +0.0643, +0.1993, +0.1388, -0.2144, +0.2615, +0.0799, -0.4073, +0.2606, +0.1530, -0.3463, -0.0113, +0.1820, +0.0466, -0.1804, -0.1553, -1.4550, +0.0696, -0.4299, -0.1231, +0.2234, +0.4043, -0.6288, -0.3373, +0.3483, -0.0005, -0.3611, -0.2050, +0.5561, -0.3670, -0.0729, +0.4676, +0.3380, +0.1639, +0.2476, +0.0487, +0.2509, -0.5067, -0.1817, +0.2404, +0.0487, +0.4762, -0.3640, -0.4215, -0.5521, +0.3174, -0.7944, +0.0013, -0.3919, -0.7885, -0.2861, -0.1614, -0.4655, +0.1721, +0.3910, +0.0595, -0.0015, +0.1070, -0.4993, -0.4758, -0.1264, +0.1493, -0.0353, +0.2882, -0.0751, +0.0263, -0.7881, -0.0504, -0.0231, -0.0780, +0.4312, -1.0142, +0.3113, +0.1385, +0.2470, +0.5878, +0.0706, +0.1169, +0.0933, +0.0134, -0.6582, -0.7285, +0.1539, +0.2382, +0.5425, +0.0708, -0.7844, -0.3071, +0.1266, -0.1425, -0.2126, -0.3433, +0.1530, -0.0257, -0.5261, +0.0270, +0.2398, +0.0672, +0.2687, +0.0150, -0.1901], -[ +0.3599, -0.3294, +0.2874, -0.1359, +0.0095, -0.1080, +0.1802, -0.1393, -0.3102, -0.0069, -0.6584, -0.1750, -0.4351, -0.3578, +0.2320, +0.0079, -0.6770, -0.3735, +0.1861, +0.2639, -0.1356, +0.2304, +0.0059, -0.0170, +0.3743, -0.1835, -0.2029, -0.0465, -0.0241, -0.0427, +0.1038, +0.3508, +0.0091, -0.4708, -0.0688, +0.2308, -0.1963, +0.1672, -0.1410, -0.4705, +0.0816, +0.2469, -0.1322, +0.1265, +0.0195, +0.0350, +0.0177, -0.1065, +0.2582, -0.2078, -0.0572, +0.1110, +0.1013, +0.2057, -0.2691, +0.2740, +0.2366, -0.4943, -0.1420, -0.2434, +0.0121, -0.3502, -0.1419, -0.2295, +0.1038, -0.0423, -0.1706, -0.2690, +0.2648, -0.4035, +0.0457, -0.1367, -0.2596, -0.4476, -0.3780, -0.0585, +0.1109, +0.0085, -0.7957, +0.0849, +0.1403, -0.2596, +0.1663, +0.0521, -0.6469, +0.1431, +0.1064, -1.0038, -0.0752, -0.4941, -0.0754, -0.2762, +0.2822, -0.2195, +0.1903, -0.0994, -0.0616, +0.0909, +0.0025, +0.0496, +0.2091, -0.3194, -0.4390, -0.1524, +0.3944, +0.1679, -0.4535, -0.1401, +0.1865, -0.1138, +0.0190, -0.0855, -0.1195, +0.1218, -0.0985, +0.1188, -0.1892, -0.2951, +0.2493, -0.6776, -0.4330, -0.1190, +0.1457, -0.5186, -0.3623, -0.0362, +0.0490, +0.0087], -[ +0.3017, +0.1661, +0.1625, -0.0604, -0.1499, -0.1333, -0.0404, -0.0579, +0.1684, -0.2978, -0.1669, -0.3583, +0.0541, -0.4609, -0.0834, +0.0536, -0.0325, -0.2289, +0.2985, +0.3900, -0.0867, -0.4610, -0.1199, -0.1346, +0.0693, +0.1036, +0.1874, +0.4472, +0.5731, -0.0143, -0.3921, +0.0279, +0.2523, +0.3843, -0.2509, -0.1254, +0.2268, +0.6070, -1.0435, -0.0396, +0.2316, -0.1911, +0.2813, -0.0985, -0.0804, +0.1301, +0.1335, +0.1948, +0.6062, -0.3210, -0.1683, +0.5632, +0.1107, +0.2630, -0.3853, +0.3729, +0.0139, +0.4616, -0.4799, +0.0245, +0.0704, -0.3186, -0.6023, -0.2397, +0.4334, +0.0460, +0.0562, -0.1278, -0.1007, +0.1826, +0.2161, -0.5156, -0.0628, -0.4553, -0.1143, -0.1052, -0.2186, +0.0354, +0.0589, +0.3454, +0.1465, +0.0453, -0.5128, -0.4953, -0.1473, +0.1299, +0.3571, +0.1535, -0.2600, -0.3753, -0.0699, -0.0639, +0.0418, +0.0615, -0.7754, -0.7497, -0.0454, -0.3136, -0.0210, -0.3604, -1.0401, +0.0363, -0.1207, +0.1425, -0.1358, -0.3830, -1.0450, -0.1491, +0.2065, -0.0293, -0.1803, -0.0995, +0.3538, -0.2117, -0.0773, +0.1862, +0.3277, -0.3959, +0.2013, +0.2035, -0.1230, +0.1772, -0.2661, +0.0415, -0.5062, -0.2219, -1.1298, -0.4608], -[ +0.1048, +0.3289, -0.4971, -0.2858, -0.0172, +0.1603, -0.0370, -0.3605, +0.3183, -0.7064, +0.0718, -0.3395, -0.1275, -1.0658, -0.3872, -0.6548, -0.1572, +0.0905, +0.1945, -0.0280, -0.0267, -0.0066, -0.1432, +0.1329, -0.1501, -0.0705, +0.1607, -0.2347, +0.2359, +0.0167, -0.0060, -0.0564, +0.1052, -0.1247, +0.0035, -0.1956, -0.1031, +0.0846, +0.0721, -0.2119, -0.1845, +0.2964, +0.0669, -0.1422, +0.1069, -0.2310, -0.4372, -0.2173, +0.1449, -0.4055, -0.1133, +0.2074, +0.1086, -0.1461, -0.0060, -0.3703, -0.2980, -0.0733, -0.1907, -0.5261, +0.2057, -0.2610, -0.5020, +0.0424, +0.1901, -0.8369, +0.4491, +0.0883, +0.1863, +0.0176, +0.5137, +0.1733, -0.0208, -0.2104, -0.3753, +0.0297, -0.0527, -0.6089, -0.7422, +0.0931, +0.3194, +0.2459, -0.0110, +0.0035, +0.0643, +0.1636, -1.3318, +0.0537, +0.4666, -0.4031, -0.3901, +0.1140, +0.2757, +0.2290, -0.8089, -0.1035, -0.1982, +0.0230, -0.1374, +0.0955, -0.0246, -0.6987, -0.2612, -0.4730, -0.9802, -0.5658, +0.1730, +0.1286, -0.2056, +0.3629, -0.2792, -0.4695, +0.1782, -0.0999, -0.1683, -0.2033, -0.2131, -0.2665, +0.5179, -1.3946, +0.2463, +0.0309, -0.0544, +0.0283, -0.1548, -0.4202, +0.2688, -0.0357], -[ +0.0307, +0.2291, -0.0374, +0.2801, +0.2268, -0.0846, -1.1089, +0.4342, -0.2639, +0.0934, -0.0402, +0.2000, -0.4876, -1.1221, -0.5257, -0.9167, +0.0005, +0.1937, +0.2740, +0.1497, +0.0161, -0.2963, -0.2250, -1.6728, -0.6268, +0.4545, +0.2023, +0.0085, +0.1054, -0.1781, -0.5855, +0.4019, -0.4102, -0.2002, -0.2450, +0.0365, -0.3374, +0.1650, +0.2094, +0.6056, -0.2494, +0.2740, -0.1624, +0.0306, +0.1205, -0.0635, +0.5081, +0.1157, +0.0064, -0.6514, +0.3873, -0.2303, -0.0226, -0.0001, -0.2236, +0.9274, +0.1570, +0.0254, +0.0966, -1.1585, -0.2801, +0.2961, -0.1865, -0.2878, +0.1531, -0.5633, -0.5523, +0.0205, +0.4057, +0.5303, +0.1621, -0.2215, -0.2336, -0.7695, +0.2079, +0.5388, +0.1397, -0.0083, +0.0329, +0.2679, +0.5113, +0.5100, +0.4780, -0.2473, +0.0271, +0.0768, +0.1783, +0.3365, -0.3012, +0.1041, -1.0967, -0.2619, +0.2410, +0.1762, +0.0434, +0.0442, +0.3826, +0.3763, -0.0380, +0.1044, -0.1001, -0.9855, -0.2964, -0.6401, -0.2947, +0.0013, -1.0013, -0.5463, -0.4700, -0.5199, +0.2536, -0.0102, -0.0381, -0.0373, -0.1044, -0.3048, +0.2602, -0.1772, -0.0610, -0.9955, +0.3698, +0.5608, -0.2289, +0.0564, -0.1312, -0.1802, -0.9274, -0.2402], -[ -0.1186, -0.2677, -0.7438, +0.1170, -0.2271, -0.4016, +0.3022, +0.0397, +0.1385, +0.3185, -0.3375, -0.6206, -0.1719, -0.0127, +0.1688, -0.0863, +0.0973, -0.5498, +0.0169, +0.1458, -0.1036, -0.1288, +0.2533, -0.0033, +0.0225, +0.1080, -0.2355, -1.6928, -0.9548, +0.5731, +0.3193, +0.3393, +0.1945, +0.2795, -0.0477, +0.3195, +0.1532, +0.4435, -0.0368, -0.1125, -0.3415, +0.1569, -0.9730, -0.1893, -0.0200, -0.6512, -0.1638, -0.2239, -0.6995, -0.0228, -0.0564, -0.4687, -0.1355, +0.3694, -0.1208, +0.2762, -0.5653, +0.1657, -0.1052, -0.2700, +0.2105, +0.3963, +0.0100, +0.1882, +0.0335, +0.2592, -1.0189, -0.4576, -0.0136, -0.1180, +0.6123, -0.0913, +0.0709, -0.0770, +0.3570, +0.3122, +0.0214, +0.0045, -0.5516, -0.0293, -0.3318, +0.1073, +0.0704, +0.0949, +0.0746, -0.2095, -0.4784, -0.1099, -0.9608, +0.0545, -0.0534, +0.4139, -0.1544, +0.1814, -0.4359, +0.0487, +0.0407, +0.3240, +0.3096, +0.3082, +0.0914, -0.1692, -0.4217, +0.3241, -0.1918, -0.6123, +0.2968, +0.0350, -0.3252, +0.0175, +0.1341, +0.0647, +0.0263, -1.3301, -0.0079, +0.2294, -0.6864, -0.0972, +0.2657, -0.1778, +0.1398, -0.0631, +0.2106, -0.5203, +0.3763, -0.2318, +0.0373, +0.1289], -[ +0.3338, -0.7170, +0.1828, -0.0732, -0.6102, +0.1158, +0.0037, -0.2886, -0.4158, -0.4671, -0.0458, -0.0353, -0.4204, -0.1532, -0.0941, +0.0273, +0.0760, -0.2606, -0.3477, +0.0411, +0.0780, +0.1004, -0.0799, +0.3044, +0.3382, -0.0538, -0.4413, -0.5029, +0.3993, -1.1658, +0.1150, +0.1101, +0.2002, -0.8394, +0.7230, -0.0065, +0.1596, -0.6822, -0.0145, -0.5331, -0.6797, +0.0392, +0.0619, -0.4870, -0.1006, -0.3687, +0.0775, -0.0900, +0.4150, -0.3705, -0.2163, -0.0777, -0.1908, -0.3108, -0.6364, -0.7803, -0.1180, +0.1251, -0.0758, -0.2954, -0.5630, +0.0283, -0.2728, -0.1877, -1.2661, -0.0733, +0.0163, -0.0904, +0.6843, -0.2032, -0.1146, +0.0813, -0.1620, +0.3982, +0.2662, -0.6202, -0.8009, +0.2255, +0.1713, -0.1299, -0.3438, +0.0466, +0.1059, +0.1203, -0.6038, -0.2279, -0.2747, +0.0697, +0.2457, +0.1617, -0.2644, -0.2921, -0.6348, -0.1643, -0.0884, -0.0096, +0.5085, -0.3419, -0.9479, +0.2705, +0.1671, +0.4417, +0.0998, +0.0176, -0.0734, +0.0713, +0.1555, +0.1696, +0.0397, +0.0030, -0.7115, -0.5252, -0.0842, -0.1060, +0.2003, -0.3142, +0.1905, -0.1934, -0.1965, +0.1904, +0.1476, +0.1894, +0.0077, -0.4453, +0.1193, +0.0613, +0.5078, -0.4845], -[ -0.1554, -0.1636, +0.2759, -0.4640, +0.4769, +0.3193, -0.4092, -0.4247, +0.0881, -0.4100, +0.2072, -0.2460, +0.0728, +0.0768, -0.1571, -0.0072, -0.8176, -0.1453, +0.4076, +0.1331, +0.2510, +0.0298, +0.0089, -0.0782, +0.2887, +0.1544, -0.0038, +0.5479, -0.0212, +0.1259, -0.0913, +0.1022, -0.2294, +0.1323, -0.2171, +0.0313, +0.0410, -0.0108, +0.1555, +0.0201, +0.4169, +0.0993, -0.2144, +0.1460, -0.2359, +0.1811, +0.0888, +0.2538, +0.1799, -0.0007, +0.1654, -0.0296, -0.5582, -0.3802, +0.0109, +0.3294, +0.0995, -0.3229, -0.0526, +0.0007, -0.1422, -0.6744, +0.0187, +0.0122, -0.4118, -0.2904, -0.0624, +0.3412, -0.1451, -0.3132, +0.2048, +0.2411, +0.0259, -0.1764, -0.2119, -0.1296, +0.5601, +0.3573, +0.3636, +0.1948, -0.1532, +0.3355, +0.0252, -0.1542, +0.3213, +0.1491, -0.1999, +0.2707, +0.0434, -0.2352, -0.1431, +0.1265, +0.0750, +0.3182, -0.3331, -0.2290, +0.2353, -0.3279, +0.2886, +0.3578, -0.2497, -0.5928, +0.0151, -0.0495, -1.1155, -0.1835, -0.6949, -0.2383, -0.0327, -0.0480, +0.5520, +0.2849, -0.0697, +0.0289, -0.0747, +0.0656, -0.2730, -0.0987, +0.1091, +0.0776, -0.0982, -0.3216, -0.1370, -0.1223, -0.1058, +0.0128, -1.0134, +0.3093], -[ -0.2611, -0.0061, +0.0394, -0.2912, -0.4886, -0.0207, -0.6440, +0.0639, +0.0742, -0.1998, +0.3720, -0.0896, +0.2300, -0.6556, -0.0843, -0.0360, -1.2487, +0.0149, +0.0012, -0.5021, +0.1071, -0.5202, +0.2912, -0.2393, -0.5147, -0.3164, +0.2540, -0.5187, +0.2048, +0.3200, +0.1712, +0.5901, -0.0355, +0.1625, -1.2279, +0.3633, -0.5330, -0.1517, -0.3772, +0.3307, +0.1232, +0.0714, +0.0405, +0.1294, -0.2035, -0.3398, -0.0110, -0.0948, +0.0675, -0.6156, +0.1445, -0.1311, +0.1184, -0.3454, -0.4319, +0.1011, +0.1140, -0.2305, -0.0189, +0.2715, -0.4460, -0.6202, +0.5954, -0.1706, -0.4674, -0.1676, +0.1663, +0.2784, -0.4385, +0.0469, -0.6702, -0.5625, +0.5531, -0.1762, -0.4106, -0.3207, +0.4973, +0.2892, -0.4559, -0.0388, -0.0447, -0.0178, +0.1265, -0.4991, +0.2694, +0.0525, -0.1524, -0.5484, -1.1890, -0.2396, -0.3151, +0.1703, -0.6998, -0.1018, -0.0325, -0.2602, -0.3870, -0.0154, -0.4199, -0.1553, -0.5026, -0.8282, -0.8049, +0.0314, -0.0105, +0.1096, -0.1641, -0.2093, -0.5040, +0.1432, -0.1484, -0.0920, +0.2138, -0.3241, -0.7061, +0.4774, +0.0680, -0.3220, -0.4487, -0.2676, +0.0249, +0.2319, -0.0293, -0.2372, -0.3420, +0.3282, -0.6239, +0.0174], -[ +0.0967, -0.1669, -0.4411, +0.2107, -0.0466, -0.0666, +0.3092, -0.4177, +0.2429, -0.0394, +0.1068, +0.2241, -0.2268, +0.0930, -0.0924, -0.1454, -1.0327, +0.3253, +0.0978, +0.1936, -0.1853, -0.3444, +0.3543, +0.2653, +0.1905, +0.3267, +0.0613, -0.2567, +0.1181, -0.1012, +0.1958, -0.0057, +0.1375, -0.0879, -0.3351, +0.1172, -0.1049, -0.2953, +0.1538, -0.0609, +0.2952, +0.1125, -0.0608, +0.1609, +0.2596, +0.3976, +0.0923, +0.3731, -0.7947, +0.2200, -0.0241, -0.0695, +0.0208, -0.4256, +0.2399, -0.0137, +0.0485, -0.1554, -0.1746, -0.6388, -0.2253, +0.1314, -0.1824, -0.1048, -0.0478, -0.2745, -0.2497, +0.2504, -0.3488, +0.2276, -0.6809, +0.3286, +0.2116, +0.1923, +0.3433, -0.2071, -0.2172, -0.2051, -0.1482, +0.2467, +0.0876, -0.1762, +0.0529, -0.3677, -0.0998, -0.1002, -0.1567, -0.1504, -0.7856, -0.2409, +0.1729, -0.1664, +0.1262, +0.1509, -1.1225, +0.4460, +0.0916, -0.4200, +0.0799, -0.1296, -0.0524, -0.8115, -0.1374, +0.1427, -0.6484, -0.0925, +0.0095, +0.0248, -0.2239, +0.0464, +0.2504, +0.1728, +0.0944, +0.0876, -0.1506, -0.3883, -0.0468, -0.3648, -0.2143, +0.1217, -0.0212, -0.2071, +0.0702, -0.1463, -0.1280, -0.1611, +0.2178, -0.0584], -[ +0.1083, -0.5946, +0.1347, +0.0467, +0.0303, +0.0343, +0.0374, -0.8634, -0.0359, -0.2730, +0.2708, -0.4057, -0.2469, +0.0723, +0.1575, -0.3305, +0.1629, -0.4555, +0.1121, -0.1879, +0.2596, +0.4521, -0.6408, +0.3766, +0.2796, +0.2640, -0.7838, +0.2871, +0.2719, +0.0270, +0.0683, +0.2070, +0.2075, +0.0374, -1.1778, -0.2274, -0.2025, +0.0715, +0.3965, -0.3327, -0.0423, +0.3019, -0.2637, +0.4383, -0.1079, +0.0300, +0.2976, -0.2401, -0.1806, -0.0681, +0.1000, +0.6485, +0.1436, -0.3705, +0.0533, -0.0298, -0.0420, -0.1630, +0.2151, +0.2009, -0.2583, +0.1048, +0.0503, +0.0470, +0.1348, -0.2439, +0.2189, +0.1981, -0.4842, -1.2423, +0.0170, -0.0057, -0.1503, +0.0352, +0.4353, -0.1815, +0.3133, +0.2231, -0.2900, -0.3240, +0.1369, -0.0540, +0.0765, -0.3765, +0.2622, +0.0397, -0.5271, +0.0590, -0.2630, +0.2793, -0.1580, -0.0224, -0.2263, -0.3570, -0.5162, -0.5978, +0.0378, +0.1681, +0.0343, -0.1733, -0.0854, +0.1348, -0.0336, +0.0622, -0.6317, +0.3090, -0.5882, +0.0897, -0.2427, +0.0600, +0.0726, -0.0900, -0.1139, +0.1353, +0.0776, +0.0651, -0.4134, -0.1537, +0.1394, -0.1339, -0.0652, -0.1425, -0.3886, -0.3121, -0.2724, +0.3162, -0.6729, -0.1616], -[ -0.4130, +0.0457, +0.5038, -0.0480, -0.2384, -0.5664, -0.0822, -0.6293, +0.0160, -0.0863, -0.4882, -0.0746, -0.0767, -0.2557, +0.4798, +1.0831, -0.2601, +0.0900, +0.2595, -0.4398, +0.4080, -0.2810, +0.1968, +0.2670, +0.0777, +0.1199, +0.3683, -0.5874, +0.0478, +0.1179, -0.3348, +0.1161, -0.0470, -0.0225, -0.1640, -0.2887, +0.0852, -0.4912, +0.6066, +0.0114, -0.7221, +0.4684, +0.0314, -0.6131, -0.1173, -0.2882, -0.1298, +0.0487, -0.1997, -0.4229, +0.0766, -0.1184, +0.4089, -0.2410, -0.2808, +0.2303, +0.2848, +0.1106, +0.4396, -0.0641, +0.0369, +0.0666, +0.0627, -0.8165, -0.4173, -0.1773, -0.5374, -0.0921, -0.0708, +0.4641, -0.1358, +0.1037, +0.0186, +0.3120, +0.0925, +0.2431, -0.1840, -0.0065, -0.0294, -0.1989, -0.4719, -0.2528, -0.2936, +0.2015, +0.4753, -0.4068, +0.0428, -0.1427, -0.2538, -0.1867, +0.1130, -0.1723, -0.7266, -0.0326, -0.4270, +0.0129, -0.2391, -0.2124, -0.1664, -0.0934, +0.0103, -0.2655, +0.2918, -0.3716, +0.1539, -0.4881, +0.2543, -0.3046, -0.0606, -0.4590, -0.3253, +0.2778, +0.0472, +0.5659, -0.5070, +0.1127, -0.0511, -0.2746, +0.2792, -0.0143, -0.1090, -0.1151, +0.1821, -0.1905, +0.0384, -0.1359, +0.0598, +0.3381], -[ -0.0727, +0.3899, +0.1057, -0.3614, -0.1864, +0.2400, +0.7040, -0.0453, -0.2078, +0.2359, +0.0282, +0.2015, +0.4824, +0.6390, -0.2564, +0.0929, -0.3456, -0.3711, -0.4742, +0.1757, +0.1015, +0.0254, -0.1588, -0.4058, -0.2930, +0.2437, -0.0651, -0.0315, +0.0975, -0.0129, +0.3204, +0.1450, +0.1163, +0.2611, -0.2720, -0.5075, -0.3826, +0.3208, -0.0044, -0.2767, -0.0319, -0.1246, -0.3725, +0.0658, +0.1211, -0.2837, +0.1134, +0.1556, +0.1667, -0.3756, -0.0964, -0.2651, -0.2474, -0.3723, +0.2620, -0.8560, +0.2841, -0.0408, -0.1417, -0.4801, +0.4842, +0.2610, -0.3244, +0.4704, -0.4677, -0.0320, +0.0657, +0.0786, -0.0369, +0.0459, +0.5634, -0.2955, -0.1977, -0.2537, -0.1736, -0.0582, -0.0957, -0.2069, -0.1714, +0.1820, -0.0239, -0.7834, +0.3541, +0.2232, -0.0246, -0.2950, +0.1728, -0.3947, +0.0336, -0.4871, -0.3988, +0.0034, -0.0632, -0.4687, -0.6703, +0.3568, -0.5672, +0.0687, -0.4968, +0.3449, -0.4237, -0.0608, -0.6063, +0.6679, +0.4069, -0.2744, -0.1171, +0.4994, -0.0657, -0.0349, -0.0818, -1.0649, +0.0151, -0.2791, +0.2422, -0.5301, +0.0422, -0.9615, +0.0897, +0.1144, -0.0176, +0.4169, +0.3486, +0.0016, +0.2271, -0.1929, -0.5996, -0.3030], -[ +0.3222, +0.1427, -0.3419, +0.2046, +0.1674, +0.3833, +0.2412, -0.3432, +0.1220, +0.0191, -0.1141, -0.1135, +0.2063, -0.2968, -0.2252, -0.0638, -0.3665, -0.1529, -0.4825, -0.1285, +0.4063, -0.3559, +0.0610, +0.1835, +0.0512, -0.4393, -0.3418, -0.1425, -0.6575, -0.2136, -0.1411, -0.0390, +0.0551, -0.3035, -0.3323, +0.0485, -0.0109, +0.1054, -0.1038, +0.2707, -0.2431, -1.6714, +0.1079, -0.5438, -0.1763, -0.4167, -0.4470, -0.6966, +0.0941, +0.3450, -0.0328, +0.2714, +0.1048, +0.3496, -0.0872, +0.0233, +0.2350, +0.0684, -0.0864, +0.1439, -0.6619, +0.1952, +0.0285, +0.3649, +0.3457, -0.1322, -0.3018, +0.0280, +0.1835, +0.1542, +0.1552, -0.4878, +0.1241, -0.1316, +0.0529, +0.3043, -0.1182, +0.3903, +0.0306, -0.0079, +0.2124, -0.1929, +0.0076, +0.2740, -0.2875, -0.3055, -0.0077, +0.1018, +0.2181, +0.0533, -0.4145, -0.0535, +0.1038, +0.0132, +0.1602, -0.1600, -0.2152, +0.0501, +0.0912, -0.0379, +0.2292, +0.1286, -0.0984, +0.2916, +0.0167, +0.2802, -0.3302, -0.2168, +0.2090, -0.2757, -0.3015, +0.0656, -0.0121, -1.1674, -0.0914, -0.3558, -0.3390, +0.1557, +0.1216, -0.2284, +0.0267, -0.0925, -0.3167, -0.4303, -0.1100, +0.4057, -0.4096, -0.1926], -[ -0.0390, -0.6861, -1.3361, -0.7870, -0.3187, -0.7475, -0.4057, -0.4694, +0.3755, +0.4669, -0.3619, -0.0499, -0.1010, +0.2617, +0.0015, +0.0455, -0.9131, +0.2671, -0.1168, -0.0012, +0.2098, -0.6725, -0.4084, -0.3482, +0.1182, -0.0556, +0.0238, +0.4869, -0.1972, -0.3498, -0.0416, -0.1464, +0.0741, -0.3366, +0.0531, -0.7779, +0.0836, -0.0655, -0.8831, -0.1758, -0.4793, -0.8277, +0.3081, +0.0065, -0.1219, -0.8809, -0.2184, +0.1592, -1.3647, -0.1284, -0.6198, +0.2708, +0.1651, +0.0296, +0.0042, +0.0805, -0.3371, +0.2457, -0.0800, -0.5117, +0.2519, -0.3766, +0.0318, -0.0240, -0.2537, +0.1280, -0.1926, -0.3432, +0.1401, -0.0890, -0.0609, +0.7078, -0.0988, -0.9501, -0.3850, +0.0988, -0.6649, +0.3692, +0.2201, -0.5293, -0.1585, +0.0539, -0.3763, -0.0604, -0.0963, -0.4451, -0.1532, +0.2377, -0.0231, +0.5394, +0.1190, -0.7943, -0.9628, +0.1148, +0.4267, -0.2371, +0.1691, +0.3429, -0.8566, +0.3791, -0.2081, +0.1594, +0.3486, -0.1683, +0.3038, -0.6367, -0.0057, +0.3137, +0.2149, +0.1810, -0.4951, -1.5763, -0.1050, +0.1020, +0.1928, -0.5461, -0.0338, +0.2292, -0.7798, -0.0550, +0.1347, -0.3152, -0.1667, -0.0511, +0.0597, +0.0787, +0.0067, -0.3090], -[ -0.0024, -0.6920, +0.0473, +0.2020, -0.4650, -0.3136, -0.4520, +0.6100, -0.2460, -0.0369, -0.0480, +0.4220, +0.3287, +0.4169, -0.3274, -0.0014, -0.2753, -0.0574, -0.0113, +0.0216, -0.5983, +0.1415, -0.7852, -0.2397, +0.4349, +0.2865, -0.1321, +0.5555, -0.0316, -0.4100, -0.0862, +0.2537, -0.0353, +0.3356, -0.0973, -1.4440, -0.2331, +0.1615, -0.5842, -0.0035, +0.3152, +0.3130, -0.0246, +0.2573, -0.4099, +0.2327, -0.4398, +0.1416, -0.1285, +0.1522, -0.4137, -0.0981, +0.0527, -1.0693, -0.0818, +0.2490, -0.4881, +0.1935, +0.1805, -1.1394, +0.0535, -0.2440, -0.2846, -0.3371, -0.4041, -0.3721, -0.1862, +0.0753, -0.0228, +0.1826, +0.0563, -0.2728, +0.4819, -0.0337, +0.4913, -0.7240, +0.0240, +0.2903, -0.4210, -0.0585, +0.3631, +0.1692, -0.1574, -0.0097, +0.4215, -0.9460, +0.1174, -0.3562, -0.5935, +0.3545, +0.5276, +0.0948, -0.1796, -0.5312, -0.0700, +0.1393, -0.3542, -0.3011, -1.2969, -0.4716, +0.3122, +0.1524, -0.4361, +0.4439, -0.4421, +0.0595, +0.6220, +0.0341, -0.1615, -0.2184, -0.6699, -0.0815, -0.2890, -0.0755, -0.0948, +0.1937, -0.3165, -0.6825, -0.2894, -0.4540, -0.0973, -0.1039, -0.5885, -0.3683, -0.7345, +0.3583, +0.8213, +0.6933], -[ +0.1040, -0.1799, -0.0668, +0.1603, -0.0610, +0.4612, +0.0183, -0.5639, +0.3967, -0.1703, -0.2872, +0.3328, +0.3655, -0.0330, +0.3043, +0.0721, -0.6174, -0.1288, +0.1301, +0.1104, +0.0568, -0.4862, +0.4601, -0.2655, +0.4104, -0.3816, -0.7847, -0.3708, -0.6825, +0.0779, +0.1282, -0.2665, +0.0552, -0.2403, +0.3443, +0.0101, -0.1618, -0.5911, -0.6688, -0.2346, +0.3670, +0.0764, -1.4203, -0.0623, +0.1672, -0.4355, +0.3571, -0.6250, +0.2858, -0.1725, -0.0967, -1.2490, -0.3121, -0.0567, +0.0466, +0.1192, -0.5474, +0.2749, +0.1019, -0.0930, +0.0724, -0.0005, -0.2416, +0.2528, +0.1882, -0.0291, +0.1782, -0.8229, -0.0138, -0.1743, -0.7601, -0.3089, -0.0995, +0.3884, -0.0084, -0.0738, -0.3212, +0.1195, -0.7481, +0.1597, -0.1546, +0.4528, -0.0727, -0.0357, -0.0825, +0.0385, +0.4845, -0.5361, +0.2904, +0.9141, -0.0832, -0.0137, +0.1787, -0.3058, +0.0353, -0.0800, -0.0826, -0.0970, -0.3600, -0.3419, +0.1091, -0.5432, +0.2520, -0.1204, -0.2271, -0.3600, -0.8378, +0.0582, -0.6662, +0.2033, +0.1993, -0.1090, -0.0002, +0.1035, +0.1072, +0.1741, +0.2701, +0.1183, +0.0955, +0.3137, +0.1042, -0.5748, +0.1485, -0.4739, +0.4864, -0.8468, +0.0804, -0.3254], -[ +0.2852, +0.0650, -0.4046, -0.0410, +0.3563, +0.5262, -0.0465, +0.3369, -0.3525, -0.2342, +0.2992, -0.4242, +0.0176, -0.0309, +0.3826, -0.1557, +0.3173, -0.2153, +0.0352, +0.3159, -0.3772, +0.1912, +0.0074, -0.2405, +0.0474, -0.2017, -0.0722, -0.3181, +0.4134, +0.0678, +0.2634, +0.2413, +0.0343, +0.4001, -0.6293, -0.0741, -0.0830, -0.0991, +0.0248, +0.2154, +0.3908, -0.7304, +0.2384, +0.0118, -0.1422, +0.0366, +0.3011, -0.0405, +0.1982, -0.2201, -0.2009, -0.5496, -0.5952, -0.6040, -0.5098, -0.2027, -0.0808, +0.2030, +0.4185, +0.1084, +0.2010, -0.1485, +0.0299, -0.1011, -0.0420, -0.3351, +0.2986, -0.1346, +0.0136, -0.0584, -0.0690, +0.0022, -0.4366, -0.6675, +0.0605, +0.0047, -0.0209, +0.1088, +0.1159, -0.2760, +0.0806, -0.1637, +0.1716, -0.2606, +0.0663, +0.1145, -0.3959, -0.5436, +0.5254, -0.1368, -0.2768, +0.2059, -1.0500, +0.2169, -0.2261, +0.0291, +0.1578, -0.4764, -0.1460, +0.0323, -0.0588, -0.0262, +0.7533, +0.4148, -0.3930, -0.2851, +0.1450, -0.3656, -0.0477, +0.0874, +0.1362, +0.2048, -0.1127, -0.3357, +0.1661, -0.7736, -0.1833, +0.4022, +0.2722, +0.0431, -0.2749, +0.1997, +0.3505, -0.0905, -0.8605, -0.3396, -0.2685, +0.2672], -[ -0.0457, -0.2544, +0.5612, +0.1131, -0.5686, -0.1270, +0.2568, -0.4067, +0.1829, -0.1256, +0.0917, +0.2335, +0.0867, +0.3751, -0.1819, -0.0624, -0.3577, +0.3617, -0.1829, +0.2440, +0.2330, -0.0266, +0.0099, -1.2334, +0.1716, -0.0230, +0.0991, +0.1960, -0.3701, +0.1549, -0.2117, -0.7460, +0.2972, +0.3736, -0.1326, +0.0593, +0.0245, -0.3894, +0.2303, -0.3874, +0.1074, +0.4580, -1.4380, +0.1048, -0.0352, -0.3006, +0.4686, -0.2047, +0.1246, +0.2052, +0.1731, -0.2484, +0.2391, -0.4333, -0.0974, +0.0366, -0.3534, -0.4187, -0.0317, -0.5117, -0.0781, -0.2474, -0.2713, -0.3208, -0.0910, +0.1669, +0.3225, +0.2037, +0.5154, +0.2018, -0.5185, +0.1937, -0.0293, -0.3480, -0.7586, -0.0486, +0.1165, -0.3322, -0.5149, -0.0077, +0.3981, -0.0252, -0.2814, +0.0690, +0.4671, -0.0570, -0.4256, +0.2626, +0.2252, +0.1383, -0.0946, -0.5523, +0.2692, -0.2524, -0.0297, -0.1902, -0.1794, -0.3381, +0.0350, +0.0975, +0.4885, -0.6079, +0.1672, -0.1611, -0.5669, +0.2301, -0.1902, +0.3709, -0.2569, +0.1002, -0.0489, -0.5367, +0.1290, +0.0571, -0.1912, -0.0249, -0.1702, -0.2788, +0.0100, +0.1146, +0.3798, +0.1380, +0.0947, -0.0003, +0.1358, +0.4120, +0.0599, -0.3834], -[ -0.0957, +0.0746, +0.0549, -0.1972, -0.4051, -0.0102, -0.2582, -0.3012, -0.2088, -0.5915, -0.0986, -0.2839, +0.0174, -0.0569, +0.2171, -0.0135, -0.4276, -0.4998, +0.0054, +0.1743, -0.5811, -0.0007, -0.1431, +0.0994, -0.2734, +0.0117, -0.0387, +0.1688, -0.3799, -0.0078, -0.1324, -0.0458, -0.2499, -0.3731, -0.2441, -0.1489, +0.1862, -0.2116, +0.4321, -0.0751, +0.0966, -0.2415, +0.2784, +0.0678, +0.1466, -0.1949, +0.0702, +0.5116, -0.4386, -0.2144, +0.2157, -0.2564, +0.2284, +0.0894, -0.1578, -0.0691, +0.2078, +0.0870, +0.0064, +0.3523, -0.0704, -0.0062, +0.0225, +0.0977, -0.0496, -0.4115, +0.3141, +0.2854, +0.0098, -0.5195, +0.3528, -0.0377, +0.2864, -0.1467, +0.2013, +0.1114, -0.4577, -0.4305, -0.0252, -0.3189, -0.2965, +0.1528, +0.3387, -0.0420, +0.1313, +0.0209, -0.7927, -0.0466, -1.1038, -0.6729, +0.1886, +0.2236, +0.2766, -0.2899, -0.0789, -0.7857, -0.7630, +0.1711, +0.0742, +0.2387, +0.0602, +0.0143, +0.0380, +0.0287, -0.8767, +0.1205, -0.6100, +0.1826, +0.1301, -0.1962, +0.1993, +0.1745, +0.0914, -0.1309, +0.1060, +0.3320, -0.4166, -0.0477, +0.2379, +0.2541, +0.0867, +0.1540, -0.3103, +0.1480, +0.1539, -0.9090, -0.7940, -0.2871], -[ +0.0438, +0.1690, -0.0390, -0.6218, +0.1696, -0.0356, +0.1485, -0.1290, -0.0136, -0.0166, -0.3678, -0.0782, -0.2829, -0.0539, -0.0622, +0.3339, +0.4107, -0.1303, -0.5669, -0.6217, +0.2226, -0.5232, -0.6096, -0.3187, -0.1066, +0.6155, +0.1980, -0.2827, +0.3140, -0.3035, +0.4445, -0.3210, +0.0231, -0.1611, +0.3906, +0.2934, +0.0214, +0.2070, -0.0585, +0.1506, -0.3111, -1.5625, -0.1380, -0.0172, -0.1670, -1.0634, +0.2766, +0.1149, -0.4503, -0.5720, -0.0849, -0.3100, -0.9916, +0.1169, -0.4010, -0.6242, +0.1812, -0.4798, +0.0845, +0.1475, -0.1797, -0.2646, +0.3237, -0.1236, -0.4647, -0.5154, -0.4227, -0.2688, -0.4535, +0.1397, +0.0696, -0.2291, +0.0418, -0.9012, -0.6562, +0.0584, -0.5921, +0.0821, +0.2437, -0.2824, -0.1078, +0.4541, +0.0519, -0.0203, -0.5509, +0.0610, -0.8455, -0.2368, -0.6285, +0.0864, -0.0912, -0.2251, -0.5244, +0.1679, +0.0450, -0.0628, -0.4613, -0.3134, +0.3220, +0.1650, +0.0188, -0.4049, +0.2717, -0.3800, +0.0085, +0.1476, -0.4356, +0.1729, -0.1681, -0.1341, -0.0939, -0.1184, -0.3849, -0.0232, -0.2756, -0.9725, -0.4900, -0.0543, +0.1262, -0.1287, -0.0382, -0.2681, +0.3242, -0.1906, -0.0769, +0.0115, -0.0461, -0.0968], -[ -0.4467, -0.1907, +0.0789, -0.0306, -0.2224, -1.3100, +0.0713, -0.5427, +0.1644, +0.1918, -0.0342, -0.4009, -0.5189, +0.5934, +0.0764, -0.4943, -0.0916, -0.4666, -0.7088, +0.0687, -0.8363, -0.0212, -0.2635, +0.2057, -1.0673, -0.0535, +0.7074, -0.2494, -0.1010, +0.3964, +0.4285, +0.4033, -0.3284, +0.3887, +0.1890, -0.3385, -0.2039, -0.0618, -1.4201, +0.2193, -0.7580, -0.2943, +0.2040, -0.5500, +0.0796, +0.3271, +0.1498, -0.1376, -0.3479, +0.1129, +0.4300, -0.7348, -1.0220, +0.3073, -0.4509, +0.7326, +0.4828, -0.5367, -0.0190, +0.4265, +0.1353, +0.0536, +0.3988, +0.0989, -0.0026, -0.0925, -0.4703, +0.2793, -0.6197, -0.5210, -0.3933, -1.5152, -0.3367, +0.1193, -0.6100, +0.2279, -0.0208, -0.5211, +0.3872, +0.5127, +0.1181, -0.6134, -0.4416, -0.0056, -0.2678, -0.0772, +0.2592, +0.2153, -0.7249, -0.3849, +0.5555, -0.7342, +0.0504, +0.1981, -0.1084, -0.1050, -0.5777, +0.1693, -0.0051, +0.0872, +0.4849, +0.1810, +0.2715, -0.1892, +0.1887, -0.1270, +0.2607, +0.1067, -0.3054, -0.5372, +0.1505, -0.1397, +0.0679, -1.0192, -0.3200, +0.2640, +0.3306, +0.2625, +0.1092, -0.8822, -0.3452, +0.2943, -0.6271, +0.3365, -0.0625, +0.0072, -0.5050, +0.6790], -[ +0.0487, -0.3578, -0.2875, +0.1015, -0.3690, +0.2796, -0.0901, -0.2163, -0.2050, +0.3686, +0.1682, -0.0291, -0.1193, -0.5762, -0.0334, -0.2595, -0.6690, +0.3490, -0.0537, -0.7148, +0.1231, -0.0480, -0.3054, -0.1752, +0.1379, -0.2147, -0.1212, +0.0216, -0.3013, +0.1300, +0.2126, -0.4448, -0.1901, +0.7794, -0.2314, -0.4610, -0.1921, -0.2015, +0.1861, -0.3399, +0.3899, +0.0097, -0.3466, +0.0511, -0.6707, -0.3211, +0.1733, -0.3421, +0.1863, -0.1024, -0.6412, +0.2342, +0.2793, +0.1537, -0.2995, -0.3649, -0.0103, +0.2303, -0.5645, +0.0124, +0.0752, +0.0627, -0.6416, +0.1803, +0.1265, +0.2702, -0.2243, -0.7038, +0.3296, +0.1472, -0.0586, -0.2839, -0.1057, +0.3698, -0.1487, +0.3450, +0.4369, -0.2360, -0.0935, -0.0520, +0.4106, +0.2246, +0.2601, -0.0463, -0.0210, +0.2574, +0.3600, -0.1405, +0.1916, +0.2448, -0.5352, -0.3433, +0.0379, +0.2181, +0.1157, -0.2556, +0.1415, +0.1027, -0.8388, +0.1148, +0.0923, +0.1737, +0.2844, -0.0386, -0.6678, +0.1242, -0.3129, +0.2761, +0.0454, -0.1793, -0.0559, +0.5229, -0.3196, +0.5422, +0.0969, -0.2417, -0.0739, +0.3105, -0.1751, -0.2754, +0.0388, +0.2980, +0.3639, +0.0312, -0.0632, -0.1337, -0.3319, +0.0264], -[ -0.3329, +0.2001, -0.1018, -0.0332, -0.2618, -1.0345, -0.6665, -0.2659, -0.1112, -0.0706, -0.1294, +0.0483, +0.0542, +0.3797, +0.2222, -0.3157, +0.3382, +0.5759, +0.1892, -0.3146, +0.1361, -0.1517, -0.1341, +0.8167, -0.2930, +0.1017, -0.8172, -0.7391, +0.3708, +0.1529, -0.1475, -0.1251, -0.1582, +0.1318, -0.0559, -0.1044, +0.2933, +0.3761, +0.2041, +0.2554, +0.2889, -0.8886, -0.1129, -0.4797, -0.1541, -0.1532, -0.0002, -0.1554, -0.5155, +0.0607, +0.1255, -0.1622, +0.0208, +0.1014, -0.4129, -0.2537, +0.5528, +0.0979, +0.5693, -0.2485, -0.4528, -0.1933, -1.2047, -0.1784, +0.1321, +0.2971, -0.0007, +0.4791, +0.4532, -0.0188, -0.6403, -0.5044, -0.4069, -0.0128, +0.2397, -0.0531, -0.2571, -0.4100, -0.1668, -0.2249, -0.0907, +0.4366, -0.1471, +0.3644, -1.2158, +0.3451, -0.1316, +0.1720, -0.0835, -0.0792, +0.1757, -0.0046, +0.1541, -0.3350, +0.2099, +0.0284, -0.0430, -0.4491, -0.2807, +0.3569, -0.0746, -0.1124, -0.4830, +0.3496, +0.2044, -0.3464, +0.0929, -0.2280, -0.1951, +0.4076, +0.0892, +0.3277, -0.0852, +0.4546, -0.1161, +0.0528, -0.3776, -0.2205, +0.2348, -0.5076, -0.2157, -0.1766, +0.0881, -0.1158, +0.2963, +0.1560, +0.2512, -0.4443], -[ -0.0591, +0.6365, -0.6604, -0.5777, +0.4297, +0.2915, -0.2003, -0.0748, +0.0539, -0.0238, -0.1175, -0.0962, -0.0981, -0.1969, -0.1145, -0.0706, -0.0170, +0.0346, -0.5033, -0.1837, -0.3331, -0.0309, -0.4883, +0.5078, -0.0339, +0.1513, +0.0832, -0.2798, -0.5008, -0.1269, +0.0534, +0.3498, +0.0763, +0.7703, +0.1473, +0.4712, +0.1585, -0.7716, -0.1251, +0.0369, -0.4092, -0.0662, -0.6519, +0.2352, +0.2674, +0.0743, -0.5990, +0.4609, +0.0960, -0.2990, -0.0168, +0.0525, -0.0273, -0.0504, -0.1409, +0.0144, +0.3043, +0.3271, -0.1989, +0.2905, -0.1949, +0.2392, -0.5079, -0.0157, +0.0602, +0.6137, -0.7877, +0.0595, +0.1441, +0.1946, -0.2701, -0.6838, -0.0930, -0.0484, -0.4407, -0.2293, -0.0231, -0.2822, -0.4751, -0.1561, +0.2141, +0.3742, -0.1936, -0.2649, -0.5294, +0.0458, -0.0604, -0.1872, +0.1022, +0.1503, +0.3715, +0.4891, +0.1384, -0.1806, -0.1894, -0.3388, -0.0424, -0.5141, +0.0134, -0.1254, -0.0630, -0.1437, +0.2265, -0.6808, -0.3244, -0.1294, -0.2861, -0.0383, -0.1055, +0.0556, +0.0235, -0.0685, -0.1476, +0.0199, +0.0480, -0.2702, -0.3092, -0.6406, -0.0369, +0.6013, +0.1623, -0.1966, +0.2106, -0.4871, +0.1613, -0.2749, +0.1607, +0.0295], -[ -0.0746, -0.1010, +0.0829, +0.0371, -0.1816, +0.3417, +0.3969, +0.2765, +0.0710, +0.1346, +0.0748, +0.1967, -0.2908, +0.2573, -0.2739, +0.2398, -0.5031, +0.2282, +0.0523, -0.0047, -0.0211, +0.2513, +0.1788, -0.0081, +0.0697, +0.0566, +0.0674, +0.1561, -0.1612, -0.2551, +0.0191, +0.1670, -0.1783, +0.1492, -0.4613, +0.5611, -0.1782, -0.8709, +0.2531, -0.2022, -0.0005, +0.0579, -0.6650, -0.1624, +0.0122, -0.8366, -0.2683, +0.1218, -0.2064, +0.7420, +0.0135, +0.1574, +0.1924, -0.5573, +0.3288, +0.2496, -0.6377, +0.3252, +0.3587, +0.2081, -0.6152, +0.2222, -0.2707, -0.1730, -0.3407, +0.0409, -0.2115, +0.3092, -0.3252, -0.5720, -0.1239, +0.2460, -0.0643, +0.0358, -0.8086, +0.0139, +0.1600, -0.0198, +0.1545, +0.0019, +0.4228, -0.2774, -0.0658, +0.3781, -0.1413, -0.0731, -0.3226, +0.3468, -0.4099, -0.2474, -0.0584, -0.1699, +0.1492, -0.3590, -0.3570, -0.7044, -0.4325, -0.0718, -0.1551, -0.1174, +0.3878, +0.2137, -0.4167, +0.2598, -0.1587, +0.1901, +0.1383, -0.2590, -0.2300, +0.2702, +0.2528, +0.2340, +0.0705, +0.0787, +0.4455, +0.0738, -0.8727, -0.2060, -0.3776, +0.3055, -0.1337, +0.2158, +0.2192, -0.1230, +0.0634, +0.0890, +0.2781, +0.1984], -[ +0.1212, +0.0244, +0.0478, +0.0404, +0.0715, +0.3470, -0.3078, +0.1471, +0.0418, -0.2702, +0.2111, +0.0008, -0.1095, +0.0332, +0.2971, -0.1631, +0.0450, +0.2303, +0.1823, +0.1875, -0.8769, +0.1098, +0.0319, +0.3469, -0.7035, +0.0039, -0.4783, -0.4755, +0.0507, +0.2590, +0.2788, +0.2275, -0.0090, +0.2626, -0.3529, -0.2270, +0.0739, -0.2655, -0.6101, -0.0939, -0.3659, -0.0796, -0.2276, +0.0054, +0.1497, -0.0554, -0.6737, -0.1346, +0.3322, +0.0097, -0.1419, -0.1943, -0.3313, -0.0284, -0.0779, +0.0379, +0.0001, +0.0632, -0.2524, +0.2057, +0.3673, -0.1813, -0.2926, +0.3499, -0.2375, -0.3478, +0.3519, -0.4751, -0.4260, +0.1274, -0.1144, -0.1232, -0.0040, +0.2648, -0.0788, +0.1790, +0.0057, -0.5072, +0.0687, -0.0289, +0.4505, -0.8732, +0.0386, -0.2400, +0.1467, -0.3554, -0.3115, +0.1557, -0.4686, +0.4106, -0.7514, +0.7965, -0.3954, -0.1757, -0.6456, -0.8024, +0.1248, -0.5114, -0.8081, +0.4372, +0.1382, -0.5683, -0.2441, -0.0404, -0.0352, +0.0132, +0.2192, -0.1081, +0.1875, +0.2809, -0.2590, -0.2690, -0.3316, -0.0513, +0.0394, -0.8655, +0.1262, +0.1107, -0.1361, -0.7354, +0.0191, +0.2605, +0.2049, -0.1145, -0.2065, +0.1340, +0.2048, -0.5805], -[ -0.5049, +0.3862, -2.0143, -0.1980, +0.0694, -1.1912, +0.0944, +0.0283, -0.0311, +0.4763, -0.3454, -0.5189, -0.3870, +0.2180, +0.2014, +0.1885, -0.6140, +0.0419, +0.1142, -0.3056, -0.1734, -0.3116, -1.2663, -0.3401, -0.3658, +0.0784, +0.1789, +0.0318, -0.1975, -0.0001, +0.1626, +0.1453, +0.3953, +0.0043, -1.0449, +0.5650, +0.0852, -0.2894, -0.0195, -0.0412, -0.3242, -0.2417, -0.3364, +0.2182, +0.0896, +0.2475, -0.3900, +0.0718, -0.3731, +0.2662, -0.0925, -0.2756, -0.1751, +0.1170, +0.0736, -0.2000, +0.4007, +0.1848, +0.2119, +0.1590, -0.4206, -0.6382, -0.0407, +0.0949, -0.2281, +0.2249, +0.2994, -0.2870, -0.0277, -0.2048, -0.0667, +0.0876, -0.0163, +0.1745, +0.3986, +0.2667, +0.1617, +0.0901, +0.1083, +0.0676, +0.4309, -0.7356, -0.1926, +0.3301, -0.1852, -0.1060, -0.7363, -0.1941, -0.0962, +0.1977, -0.7453, -0.1633, -0.2512, +0.0007, -0.0535, +0.6645, -0.1550, -0.2529, -0.5907, +0.0099, +0.2487, -0.1590, -0.2591, -0.6604, +0.2674, +0.3896, -0.3264, +0.0505, -0.3169, +0.0701, -0.1911, -0.3122, -0.1822, +0.0957, +0.3922, -0.3231, -0.0732, -0.8894, -0.1144, -1.0238, -0.3230, -0.1618, +0.2704, +0.1004, -0.7305, -0.1985, +0.1691, +0.2758], -[ -0.1859, -0.1090, -0.5654, -0.3175, -0.0416, -0.4707, -0.2882, -0.5900, -0.0241, -0.1883, -0.1620, -0.4204, +0.1921, +0.2782, +0.1316, -0.3351, +0.2503, -0.1699, -0.0007, +0.0957, +0.3086, -0.5662, -0.1920, +0.4658, -0.2888, -0.3174, +0.1927, -0.0208, -0.9864, +0.1326, -0.0153, +0.1862, +0.2786, +0.0627, +0.1802, -0.1153, -0.1632, -0.1110, +0.0334, +0.0713, +0.0467, +0.1134, +0.1913, -0.2650, -0.0207, +0.1905, +0.4855, -0.0394, +0.1126, -0.1154, -0.1648, -0.1098, +0.0351, -0.1741, -0.3062, +0.2602, -0.5269, -0.2375, -0.0810, +0.1582, -0.1622, -0.1258, -0.5832, -0.1968, -0.2833, -0.2064, -0.3045, +0.0314, -0.1682, +0.1939, -0.7215, -0.2661, -0.1594, +0.0799, -0.0980, -0.1717, -0.1081, +0.6317, +0.1113, +0.1363, -0.1393, -0.0131, +0.2368, +0.0580, -0.4013, +0.5063, -0.7446, +0.0586, +0.2005, +0.0679, +0.5226, -0.2288, +0.1434, +0.0873, -0.5555, -0.0817, -0.4680, +0.5468, +0.3035, +0.0845, -0.3979, +0.0931, -0.3550, -0.1759, +0.3457, +0.0123, -0.0932, +0.2215, -0.0401, +0.3866, +0.0862, -0.3436, -0.1709, -0.4965, +0.0217, +0.1127, -0.3566, -0.1600, -0.0198, -0.7186, +0.3130, +0.0783, +0.2853, +0.1605, -0.0934, -0.2326, -0.2804, -0.3361], -[ +0.0852, +0.3011, +0.0605, +0.4092, -0.3179, +0.0330, -0.1687, +0.3456, +0.4223, -0.0762, -0.3286, -0.0042, -0.4330, -0.0194, -0.5901, +0.0259, +0.4083, +0.0102, +0.1966, -0.2660, +0.1665, -0.1488, +0.1055, -0.4549, +0.1209, -0.1558, -0.0885, +0.4229, +0.0050, +0.2138, +0.1204, +0.0336, +0.0248, -1.0032, +0.1746, -0.3238, +0.1207, +0.3489, +0.3282, -0.2009, +0.1391, +0.2350, +0.2998, -0.4915, -0.3383, -0.0969, +0.2912, +0.2151, -0.1616, -0.1539, -0.2304, +0.0015, -0.1087, +0.0265, -0.4491, -0.2401, +0.1927, +0.1576, -0.1130, +0.2541, +0.1908, +0.1141, +0.0607, +0.5112, +0.0212, -0.0662, +0.2512, -0.2038, -0.4916, -0.1292, -0.4905, -0.1817, +0.1616, -0.2072, -0.0199, +0.0827, -0.0106, -0.3033, -0.1705, -0.3853, -0.1809, +0.1470, -0.1519, +0.2359, -0.2254, -0.0848, +0.1520, +0.3159, -0.2144, +0.2073, +0.0747, +0.3175, +0.6858, +0.0580, +0.1895, +0.1367, +0.0880, +0.2082, +0.2874, -0.3443, +0.0431, -0.6908, -0.5574, -0.5695, +0.0715, +0.3659, -0.3155, -0.4948, +0.1657, +0.1583, +0.2811, -0.2806, +0.3598, -0.9211, -0.0374, -0.7113, -0.9234, -0.2680, -0.0777, +0.2850, +0.0961, -0.2559, +0.3749, +0.4503, +0.1549, +0.2486, -0.1293, -0.1448], -[ -0.0800, -0.0033, -0.2152, -0.0751, -0.0347, -0.8457, -0.4773, -0.1579, +0.2995, +0.0971, -0.2131, +0.4749, -1.7860, -0.0042, +0.2787, +0.2949, -0.0990, +0.5527, +0.1178, -0.4048, +0.4386, -0.2373, -0.6817, -0.4574, -0.4896, +0.1736, -0.3810, -0.2987, -0.3720, -0.3774, -0.1082, +0.1250, +0.1479, -0.1955, +0.0637, -0.7704, +0.1948, -0.0506, -0.9801, +0.4920, +0.5679, +0.1852, +0.1145, -0.2157, -0.5265, -0.0114, -0.7002, -0.0011, +0.2444, +0.3781, -0.0256, -0.1765, -0.7703, -0.2942, -0.1707, -0.2482, -0.1208, +0.0638, +0.0816, +0.1899, -0.1724, +0.0768, +0.2270, -0.8724, +0.1919, -0.2274, -0.5117, +0.0668, +0.3523, -0.3234, +0.0415, -0.4412, -0.2098, -0.2124, -0.4756, -0.0099, +0.0421, +0.5202, +0.1883, +0.1116, +0.0651, -0.0953, +0.3157, +0.3053, -0.1018, +0.4284, -0.7076, -0.0188, -0.0763, -0.1226, +0.4188, -0.1934, +0.0083, +0.1995, -0.2701, -1.1226, +0.0818, -0.6830, +0.3446, -0.3724, -0.1494, -0.2735, +0.3572, +0.3262, -0.3745, +0.5134, +0.2046, -0.5650, -0.4223, +0.1517, -0.4731, -0.4351, -0.6753, -0.3919, -0.4245, -0.1740, +0.4795, +0.0911, -0.1686, -0.2137, +0.0823, -0.9572, +0.0064, -0.0924, +0.4471, -0.2389, -0.0176, -0.1888], -[ +0.0560, +0.0499, +0.1917, -0.0189, +0.0527, +0.1222, +0.0304, +0.1860, -0.0595, +0.1786, -0.2247, +0.2007, -0.3999, +0.0493, -0.1737, +0.4064, -0.2552, +0.2699, +0.0986, -0.3624, +0.0125, -0.1008, +0.3273, +0.4819, -0.3561, +0.5728, -0.2862, +0.0619, -0.4506, -0.3714, -0.0775, -0.7150, -0.0030, -0.3618, -0.8042, -0.6767, +0.0675, -0.3882, -0.9946, -0.7640, +0.2282, +0.0049, -0.6598, +0.2918, +0.2124, -0.6043, +0.5807, -0.1937, -0.5767, +0.3075, -0.7831, +0.2383, -0.1433, +0.1311, -0.7248, +0.5150, +0.6220, +0.3480, +0.2268, +0.2643, +0.7769, -0.0924, -0.3221, -0.0498, -0.2351, +0.2384, -0.2704, -0.3960, -0.1383, -0.5426, -0.0189, -1.0309, +0.0507, -0.3962, -0.4689, -0.3109, +0.2039, +0.5322, +0.3702, -0.2054, +0.3495, -0.3045, -0.0435, +0.5718, -0.1252, -0.0037, -0.5993, +0.1214, +0.2744, +0.4827, -0.7681, -0.1123, +0.1878, +0.1816, -1.4101, -0.3290, -0.5833, +0.2723, -0.0343, -0.1726, -0.2720, -0.1204, +0.2720, -0.3203, -0.1280, -0.0080, +0.4957, +0.0798, -0.2449, +0.4436, -0.2655, -1.4778, +0.0331, -0.1479, -0.0372, -0.0584, +0.1862, -0.0660, +0.3472, -0.3830, +0.2451, +0.0890, -0.6819, +0.3471, -0.7981, +0.4359, +0.2936, -0.4796], -[ +0.1922, -0.2736, +0.1069, +0.2755, +0.0534, +0.1214, +0.1385, +0.1630, +0.0153, -0.1914, -0.0470, -0.0928, +0.0944, -0.0082, -0.6543, -0.0155, -0.0299, +0.1334, -0.0954, +0.0947, -0.3354, -0.1955, -0.0264, -0.3043, -0.5810, +0.0317, +0.2773, -0.0152, +0.2632, +0.0134, -0.0252, -0.5218, +0.2304, +0.0781, -0.3401, -0.6580, -0.0906, -0.0210, -0.0286, -0.2475, -0.1412, +0.2302, -0.0932, +0.3287, -0.1356, -0.0349, +0.0778, -0.2792, -0.1280, -0.0526, +0.0973, -0.6381, -0.0141, -0.0953, +0.0462, -0.5889, -0.3823, +0.2547, -0.0884, -0.0277, +0.3142, +0.1462, -0.0712, +0.0212, -0.0521, +0.3009, +0.0107, +0.3797, -0.0111, +0.0276, -0.1128, +0.3343, -0.1956, -0.1075, -0.0429, -0.0595, +0.1583, -0.1392, +0.4273, -0.0157, -0.0875, +0.4082, +0.2728, +0.1338, +0.1450, +0.3939, -0.2300, +0.2231, -0.0796, -0.7845, -0.4527, +0.1725, -0.2861, +0.3810, +0.1237, +0.2710, +0.0242, -0.2934, -0.0066, -0.1402, +0.1467, -0.0617, -0.1989, +0.0142, +0.4296, -0.0489, -0.4346, -0.2574, -0.0680, -0.4272, +0.0768, -0.0151, -0.1824, -1.3245, -0.2511, -0.1317, -0.9616, -0.1092, -0.4683, +0.4674, -0.0729, -0.0477, -0.2741, +0.1787, +0.2481, -0.2755, +0.0972, +0.0552], -[ -0.0095, -0.2845, +0.4998, +0.1540, +0.7978, -0.4744, -0.8287, +0.2388, +0.1272, -0.1180, -1.2391, -0.3192, -1.3045, -0.1679, -0.3045, -0.0575, +0.6688, -0.5246, -0.0212, +0.6006, -0.3041, -0.7936, -0.1519, +0.0230, +0.4472, -0.0782, -0.0154, +0.6178, +0.2541, +0.4556, +0.3152, +0.3001, -0.0371, -0.1685, +0.2356, -0.4981, -0.0986, +0.3903, +0.4831, -0.4485, -0.3253, -1.0321, +0.2398, +0.3416, -0.8557, +0.3275, -0.1588, -0.8290, +0.0214, -0.1824, +0.2622, -0.4643, -0.1699, -0.3576, -0.1512, +0.1095, -1.2559, -0.6752, +0.1400, -0.5370, -0.2294, -0.0415, -0.4879, +0.2528, -0.0183, -0.0563, -0.1239, -0.8707, -0.1144, +0.1004, +0.3807, +0.5587, +0.6638, -0.3331, +0.3353, -0.2223, +0.2768, -0.4641, -0.9961, +0.4722, -0.6717, -0.5517, +0.0399, +0.1920, -0.3166, +0.2729, +0.6895, +0.4694, -0.6369, -0.2060, -0.2736, -0.2470, -0.5386, -1.1813, -0.0665, -0.0088, +0.1532, -0.2087, -0.1095, +0.1266, -0.2009, -1.1814, -0.1450, +0.3209, +0.3279, -0.4347, -0.1307, +0.1494, -0.1119, -0.6165, +0.1214, +0.1749, +0.1095, +0.1939, -0.2980, -0.1339, -0.3191, +0.3997, -0.0301, +0.4220, +0.1283, +0.3909, -0.2637, -0.9476, +0.5444, +0.2500, +0.3261, +0.2787], -[ -0.0972, -0.7335, -0.2075, -0.3408, -0.5705, -0.3740, -0.5796, +0.0415, +0.3678, +0.1503, -0.0573, +0.0182, -0.2437, +0.1005, +0.1036, -0.6915, +0.0122, -0.4279, -0.0131, -0.2961, +0.1742, -0.0644, +0.1843, -0.2601, +0.1334, +0.0161, +0.0071, -0.6396, -0.2482, +0.6926, +0.0568, -0.2996, -0.0126, -0.1666, -0.4634, +0.0709, +0.3667, +0.1533, -0.6978, -0.3115, +0.3901, -0.4979, -0.6568, -0.0575, -0.0162, +0.1551, -0.1325, -0.1006, -0.0166, -0.2539, +0.2460, -0.3677, -0.2157, +0.2438, +0.2288, -0.1888, +0.2302, +0.2303, -0.1928, +0.3975, -0.0671, -0.5998, +0.3436, -0.3959, +0.7534, -0.1688, +0.0431, +0.0909, -0.2053, -0.0105, +0.2207, +0.3224, +0.1138, -0.2533, +0.0171, -0.0179, -0.0748, -0.0052, -0.2844, +0.0168, +0.1670, +0.3902, -0.3106, -0.1502, +0.1411, -0.2250, -0.4160, +0.4257, -0.1572, -0.1094, -0.0055, -0.2133, -0.6188, -0.1859, -0.3205, -0.3298, -0.4951, +0.5880, -0.4076, +0.2535, -0.0653, -0.3401, +0.1066, -0.0090, -0.2624, -0.2505, +0.2825, +0.0174, +0.1151, -0.1366, -0.1934, +0.2922, +0.1067, -0.4057, -0.0278, +0.0369, -0.3803, -0.0952, -0.0392, -0.0543, +0.1167, -0.0311, -0.1064, +0.1562, +0.5315, +0.5095, +0.6973, +0.1510], -[ +0.3804, +0.0940, -0.7328, -0.2069, -0.0679, -0.0715, -0.2016, -0.0032, +0.1102, +0.2051, -0.2870, -0.7165, -0.1163, -0.1598, -0.0683, +0.0420, +0.2357, -0.0510, -0.3709, +0.2772, +0.1352, +0.3005, +0.0918, +0.0321, -0.7731, +0.0283, -0.0969, +0.1025, -0.0975, +0.0312, +0.0964, +0.6051, +0.0328, -0.9023, -0.0239, +0.2280, +0.1263, +0.1540, -0.3312, -0.2880, -0.1591, +0.2841, +0.1945, -0.8412, +0.0504, -0.0072, +0.0590, -0.6012, -0.0784, +0.0955, +0.0946, -0.1844, -0.0730, -0.2811, -0.0541, -0.3441, +0.1145, -0.1261, -0.0256, +0.0912, -0.8545, +0.1075, +0.3677, +0.1355, +0.3984, -0.3418, -0.4237, -1.4044, +0.0537, +0.2198, -0.3516, -0.6238, -0.3209, -0.1777, -0.0547, +0.4564, +0.2766, -0.1060, +0.1625, +0.1857, +0.1386, +0.0073, -0.2658, +0.6142, +0.0753, +0.1106, +0.0405, +0.0568, -0.1165, -0.1687, +0.0040, -0.0971, +0.0269, +0.2213, +0.1253, +0.2816, +0.3247, +0.0342, -0.2025, -0.0500, -0.2421, +0.1608, -0.7670, +0.0017, -0.5164, +0.1186, +0.0871, -0.0641, +0.1109, -0.2786, -0.0122, -0.3183, -0.0851, +0.1388, +0.0000, +0.1205, -0.1665, +0.1243, -0.1227, +0.0022, -0.2956, +0.0225, +0.3289, +0.1358, -0.3015, -0.0797, +0.0361, -0.0357], -[ +0.3927, -0.0417, -0.4103, -0.0042, +0.2459, +0.2267, +0.4572, +0.0084, +0.3403, +0.1848, +0.5619, -0.1777, +0.1038, -0.0038, -0.1106, -0.0130, -0.6366, +0.1297, -0.5804, +0.1100, -0.1452, +0.0339, -0.4200, -0.2728, +0.1463, -0.3454, -0.2624, +0.2520, +0.1228, -0.0141, -0.1040, +0.1023, +0.1169, +0.3359, -0.0791, -0.1889, -0.0558, -0.0797, +0.1902, +0.0248, +0.1316, -0.2287, +0.2900, +0.2045, +0.3108, +0.1323, +0.0046, +0.1927, +0.3057, +0.0789, +0.0929, +0.1268, -0.1733, -0.2915, +0.5293, -0.1321, -0.1295, +0.2436, -0.8270, +0.0055, +0.0287, -0.4030, -0.4196, +0.2020, +0.0807, +0.4037, +0.0121, -0.2481, +0.0725, +0.3171, -0.1350, -0.1499, -0.3555, -0.3203, -0.1943, -0.2719, -0.1714, -0.3603, +0.0342, +0.3861, -0.1894, -0.2963, +0.3344, -0.0925, -0.2639, -0.4436, -0.0089, +0.1370, +0.4894, -0.0357, +0.3167, +0.0306, -0.2671, -0.1820, +0.0007, +0.0722, +0.4001, +0.0396, -0.0912, +0.1325, +0.2969, -0.2219, -0.5335, +0.1190, +0.1163, +0.1637, -0.0392, +0.1258, +0.1497, +0.1803, +0.0248, -0.0622, -0.4752, -0.1344, -0.1519, -1.0671, +0.0027, -0.2371, -1.0533, -0.3315, +0.4583, -0.5621, +0.3233, +0.2108, -0.1948, +0.2766, -0.0931, -0.2301], -[ +0.3541, +0.3016, +0.1467, -0.0182, -0.1674, +0.2801, -0.1002, -0.5819, -0.3709, +0.0857, -0.6014, -0.7983, +0.0286, +0.0252, +0.0580, -1.4793, -0.1692, -0.0354, -0.0760, +0.4248, +0.0226, +0.2240, +0.2970, -0.5292, +0.2354, +0.0286, +0.0212, +0.1491, -0.6715, +0.1734, -0.1354, -0.1749, +0.2034, -0.2951, +0.3904, +0.1798, -0.4691, +0.5488, -0.0631, -0.0629, -0.1340, -0.1988, -1.1983, -0.2366, +0.1784, +0.6928, -0.2310, -0.2563, -1.1005, -0.1786, -0.3344, -0.2564, +0.1149, -0.0776, -0.0655, +0.0054, +0.1859, -0.3503, -0.6067, +0.0367, -0.3959, -0.0585, +0.1986, -0.2523, +0.1268, +0.0193, -0.1163, +0.0630, -1.5885, +0.2855, -0.0402, +0.0373, -0.1474, -0.1851, +0.1062, +0.3677, -0.0916, -0.1997, +0.1572, -0.2778, -0.4878, -0.7637, -0.0132, +0.0650, -0.7715, +0.1761, +0.3435, -0.0386, -0.1258, +0.3314, +0.1855, -0.0653, -0.0693, -0.0376, -0.1701, -0.3152, +0.3017, +0.0222, +0.3113, -0.2870, +0.3989, -0.2712, -0.2139, -0.5037, -0.4028, -0.3592, +0.0614, -0.7067, +0.6016, +0.0875, -0.0679, -0.0511, -0.1025, +0.2760, +0.1069, -0.4451, -0.6260, +0.1939, -0.3595, +0.0636, +0.1196, -0.0955, -0.0970, +0.0328, +0.1560, -0.5546, +0.4495, +0.1885], -[ +0.0827, +0.0139, +0.0289, -0.5846, -0.9436, +0.1116, +0.4557, -0.5269, -0.0620, -0.2253, +0.2417, +0.1810, -0.0710, +0.5000, +0.2829, +0.0921, -0.1529, +0.1285, -0.0334, +0.1353, +0.2257, +0.1933, +0.0464, +0.4685, -0.5687, -0.1148, +0.0124, +0.1136, +0.3790, -0.2185, -0.0267, -0.1314, +0.3274, -0.4605, -0.0072, +0.3017, -0.2368, +0.2310, -0.3744, +0.1181, +0.4516, +0.0717, +0.2878, +0.5273, -0.0349, +0.3909, -0.0201, +0.3845, -0.0940, -0.0345, -0.3327, +0.1043, +0.0423, -0.2319, +0.2231, +0.4790, -0.2178, -0.9516, -0.0217, +0.0694, -0.0321, -0.1722, -0.4971, -0.1546, +0.0668, -0.3998, +0.0728, -0.2825, +0.3636, +0.0301, -0.5808, +0.2194, -0.0847, +0.3474, +0.3931, -0.2488, -0.3129, +0.1006, -0.0711, +0.3030, -0.1156, -0.8306, +0.1482, +0.1389, -0.0269, -0.0736, +0.0082, +0.0165, +0.0816, +0.1391, -0.1891, +0.0192, -0.9129, -0.3168, -0.0187, -0.1183, -0.5267, -0.4409, +0.2685, -0.1845, +0.2683, +0.7606, +0.0894, +0.2039, -0.4053, -0.3044, -0.4087, -0.1584, +0.1847, -0.2912, -0.1660, +0.0092, +0.1000, -0.2822, -0.0758, -0.3606, -0.2925, -0.1748, -0.0200, -0.0952, +0.2238, -0.1230, +0.4075, +0.3206, -1.1546, +0.0873, +0.0052, +0.0368], -[ +0.3316, +0.2136, +0.1071, -0.1885, +0.1960, -0.8213, -1.0617, -0.0536, +0.1878, -0.6165, +0.3842, +0.0457, +0.1044, +0.0096, -0.1278, +0.1627, +0.4803, -0.3750, +0.3133, -0.1449, +0.2776, +0.2190, -0.0943, -0.1770, +0.3877, +0.2207, -0.3937, -0.3133, +0.0569, -1.1298, -0.0475, +0.1438, +0.4622, -0.1096, +0.0558, -0.0875, +0.0464, -0.3102, -0.2482, -0.5790, -0.0061, +0.0146, +0.0032, +0.2280, -0.0699, +0.2899, +0.0884, -0.3343, +0.0812, +0.6934, +0.1643, -0.1890, +0.3480, -0.2825, +0.0037, -0.1121, +0.1208, -0.5101, +0.2441, -0.5552, +0.1917, -0.6013, +0.3514, +0.0270, +0.0930, +0.0614, -0.0612, -0.0326, +0.0794, -0.4726, -0.1339, +0.2069, +0.3544, -0.2535, +0.2110, +0.1938, -0.6503, +0.1934, +0.3573, +0.1160, +0.2192, -0.0390, -0.0105, +0.0481, +0.4033, -0.2801, +0.1468, +0.3347, -0.2370, -0.0412, -0.2914, -0.1973, +0.5844, +0.1245, +0.2956, -0.3428, -0.2584, +0.3554, -0.7687, +0.0971, -0.1356, -0.1370, -0.3593, -0.3044, +0.0402, +0.2568, +0.3026, +0.0871, -0.4578, -0.5332, +0.1596, -0.2950, -0.0357, -0.0495, -0.2235, +0.2229, +0.1184, -0.0247, +0.0552, +0.2114, -0.0927, +0.0764, -0.1746, -0.4272, +0.1603, -0.0359, -1.0266, -0.0272], -[ -0.3980, -0.3638, -0.3046, -0.4511, +0.2547, -0.0763, -0.2849, -0.2054, -0.1001, -0.1077, +0.0004, +0.0799, +0.3965, -0.6733, -0.0339, +0.0424, +0.2191, +0.3432, +0.1130, -0.0351, -0.1891, -0.3961, -0.2862, +0.2476, +0.2908, -0.2848, -0.0025, -0.2018, -0.5114, -0.0557, +0.0722, -0.4354, -0.1194, -0.0933, -0.7746, +0.3006, -0.2502, -0.0446, +0.1376, +0.1970, -0.0338, -0.4653, -0.0668, -0.6313, -0.4635, -0.1005, -0.5535, -0.2467, +0.0598, +0.1983, +0.1864, +0.2988, -0.3160, -0.3349, -0.1481, +0.4429, +0.2648, +0.3864, -0.4193, +0.0606, -0.0107, -0.0992, +0.3035, +0.1546, -0.2766, +0.0576, -0.5117, +0.0213, -0.6042, -0.0766, -0.1915, -0.1729, +0.0352, -0.3515, +0.2485, -0.2744, -1.6697, -0.0268, -0.0085, +0.1501, +0.0970, +0.3903, +0.1254, +0.0531, -0.1093, +0.1927, -0.3395, -0.1810, -0.1212, -0.0774, +0.1301, +0.1169, -0.3724, -0.2508, -0.1324, -0.0313, +0.7331, -0.1221, +0.3488, -0.1913, +0.2215, -0.6235, +0.0682, -0.1721, +0.2705, -0.0075, -0.1238, +0.1662, +0.2523, -0.1268, +0.0147, -0.0807, +0.2745, -0.1909, +0.3504, -0.1056, -0.2716, -0.1164, +0.0764, -0.1824, -0.1287, -0.3374, +0.2056, +0.0505, -0.2676, -0.1214, +0.2848, +0.0470], -[ +0.1957, -0.2688, -0.4002, -0.3058, -0.3061, +0.1285, -0.2855, -0.0724, -0.0671, -0.2537, -0.0745, +0.1536, -0.3178, -0.0110, +0.1545, -0.0908, +0.4142, +0.0554, -0.1754, -0.0019, +0.1252, -0.1321, -0.3737, -0.4874, +0.3324, +0.0221, -0.2190, -0.0302, -0.3393, -0.8583, -0.2229, +0.2750, +0.2825, +0.4432, -0.3146, +0.1257, -0.2900, -0.1266, -0.4493, -0.0109, +0.4413, -0.2497, -0.3403, -0.2049, +0.2776, -0.2879, +0.2174, -0.2783, +0.1817, -0.0372, +0.2753, +0.2465, +0.2213, +0.2066, +0.0901, +0.0092, -0.0027, -0.6841, +0.1369, -0.0938, +0.0851, +0.0855, +0.0963, -0.0777, +0.4162, +0.2238, -0.2468, +0.3236, -0.3868, -0.0550, +0.0409, -0.0550, -0.0496, -0.5109, -0.4432, +0.1125, +0.2121, +0.1481, +0.1979, +0.0260, +0.1939, -0.2326, +0.0475, -0.1926, -0.2660, +0.2647, -1.1046, +0.2349, -0.0465, +0.2732, +0.1752, +0.1477, +0.1855, -0.0308, -0.5034, -0.3872, -0.0483, +0.1079, +0.1470, -0.3639, +0.1550, +0.2552, -0.8236, -0.2826, -0.1908, -0.0745, -0.3829, -0.0906, +0.0063, -0.1327, -0.2500, -0.9950, +0.3048, -0.1851, -0.3612, +0.3614, +0.1568, -0.0886, +0.2193, -0.2342, +0.4102, -0.1066, -0.0724, -0.0411, -0.4304, -0.1271, +0.2661, -0.5673], -[ +0.0844, +0.2620, +0.0360, -0.2738, -0.2829, -0.0211, +0.1960, -0.3718, +0.1876, +0.0430, +0.3185, -0.6092, -0.2403, +0.1072, +0.6316, +0.2559, +0.0762, +0.1983, -0.1512, -0.6322, +0.1368, -0.2465, -0.1396, -0.4147, +0.2687, +0.0620, -0.6532, +0.0854, -0.0616, +0.0899, +0.2865, -0.2229, -0.1427, -0.1177, -0.1446, -0.3250, +0.0860, -0.2540, +0.0868, -0.3380, +0.1654, +0.1332, -0.2496, -0.0137, +0.0148, -0.1349, +0.0185, -0.5221, +0.0758, -0.0094, -0.0491, +0.1492, -0.0551, -0.0573, -0.1373, -0.1820, -0.0660, -0.0067, +0.0128, +0.1170, +0.0516, -0.3393, -1.8688, -0.2175, -0.0203, -0.2192, -0.0000, -0.1182, -0.0858, +0.1349, -1.1961, +0.1466, +0.1172, +0.1759, -0.5122, +0.0870, -0.6384, -0.0751, +0.1804, -0.0395, +0.1517, -0.2101, -0.1074, -0.0684, -0.1323, -0.4254, -0.1665, +0.0090, -0.1243, -0.1045, -0.8921, +0.0955, +0.0874, -0.2023, -0.3269, -0.1450, +0.1073, -0.2957, +0.2165, +0.0056, -0.4206, -0.5206, +0.3066, +0.1800, -0.3856, -0.0186, +0.0366, -0.0791, -0.0109, -0.1701, +0.2094, -0.1623, +0.0951, +0.1703, -0.0828, -0.0396, +0.0432, +0.0652, +0.0589, -0.9019, +0.0897, -0.0154, -0.1211, -0.0371, +0.0392, +0.2752, -0.1939, -0.5073], -[ +0.2204, -0.6372, -0.0044, +0.0363, -0.0423, -0.1332, -0.2375, -0.0229, -0.0726, -0.0715, -0.9531, -1.2344, +0.3726, -0.3074, -0.4487, -0.2109, -0.3642, +0.3951, +0.0739, -0.0500, -0.3258, +0.0418, -0.1577, -0.1583, -0.2069, +0.0830, -0.0890, -0.2901, -0.3194, -0.5358, -0.4313, +0.2725, +0.3682, -0.2112, -0.8514, +0.4140, -0.1824, +0.1000, -0.6168, -0.0468, +0.1935, +0.1672, +0.3804, +0.1266, +0.3829, -0.0034, -0.2297, +0.2467, +0.0611, +0.3742, -0.2264, +0.2116, +0.1853, +0.7834, +0.1554, -0.0062, +0.1455, -0.1824, +0.1464, -0.2172, +0.2491, -0.1876, +0.2106, +0.1687, -0.4337, -0.6470, -0.1668, -0.0799, -0.5715, -0.2431, +0.3025, -0.0617, -0.1320, -0.4675, -0.4277, +0.0947, -0.0721, -0.1367, -0.4327, +0.2759, -0.3330, -0.3559, +0.2989, -0.0152, -0.4572, -0.1786, -0.3366, -0.1363, +0.2827, +0.2272, +0.2174, +0.1590, +0.0164, -0.2489, +0.2039, -0.5149, -0.0669, +0.1318, +0.0782, -0.6210, -0.5321, -0.1711, +0.3159, +0.1939, -1.0895, -0.2026, -0.3565, -0.0112, +0.1257, -0.2741, +0.1407, -0.4656, -0.0849, -0.6984, -0.4142, -0.3425, +0.0246, +0.2164, +0.1577, -0.3254, -0.4082, +0.1925, +0.2962, +0.0379, -0.3981, -0.3641, -0.1129, +0.0552], -[ +0.2880, -0.0412, -0.3346, -0.3046, -0.1002, +0.3496, +0.0166, +0.1018, +0.1843, +0.3091, +0.1594, -0.8401, -0.1665, -0.1033, +0.0236, -0.0301, -0.1726, -0.1038, -0.2883, -0.5542, -0.1604, +0.1031, -0.2281, -0.0555, -0.1745, -0.0943, -0.0608, -0.4502, -0.8684, -0.0175, -0.0211, +0.5279, -0.1604, -0.3918, -1.0085, -0.0138, +0.4319, +0.1072, +0.0448, -0.2276, -0.2544, -0.1823, -0.1668, -0.0920, +0.1806, +0.2086, -0.3466, -0.0122, -0.2246, -0.1026, +0.2042, +0.1635, +0.0616, -0.0859, -0.2384, -0.1133, -0.0564, -0.2303, -0.1977, +0.3438, -0.2942, +0.1513, +0.1621, -0.1265, +0.0997, +0.0522, -0.3177, -0.1749, +0.2504, -0.0739, -1.0580, -0.0372, +0.2008, -0.3333, -0.6340, +0.3544, -0.0272, -0.4933, -0.0306, +0.2945, -0.2928, -0.3872, +0.1419, +0.1412, -0.3087, -0.1156, -0.5552, +0.0968, -0.2138, -0.1501, +0.1731, +0.1339, +0.0489, -0.2116, +0.0577, +0.3522, +0.0235, +0.2605, +0.2060, +0.1186, +0.2241, +0.2169, -0.0340, +0.0169, -0.0263, +0.1338, +0.3219, +0.3856, +0.1095, -0.3713, +0.1239, -0.4208, +0.0878, -0.3879, -0.3179, +0.2163, +0.2611, +0.2173, +0.0480, -0.1347, -0.1715, -0.0040, +0.0672, -0.3191, -0.2016, +0.2960, +0.0305, +0.2477], -[ -0.1818, +0.1632, +0.3318, +0.0742, -0.1904, +0.4803, -0.4401, -0.1522, -0.0731, -0.7440, -0.1373, -0.0849, -0.1804, +0.3678, -0.4583, -0.2080, -0.0705, -0.1990, -0.5845, -0.1750, -0.1265, +0.3743, +0.0708, +0.3337, -0.0513, -0.0457, +0.5152, -0.1847, -0.3042, -0.5624, +0.1958, +0.1784, +0.1651, -0.2631, -0.0918, -0.3000, +0.1912, -0.0061, +0.0646, -0.7671, -1.1286, -0.0506, +0.1685, +0.0350, +0.3390, -0.1432, +0.0347, +0.4135, -0.1074, -0.2724, +0.3031, -0.3621, -0.1271, -0.1488, +0.0179, -0.2570, -0.4868, +0.1053, +0.3376, +0.3093, +0.0499, +0.2931, +0.4164, +0.0948, +0.3380, +0.2455, +0.0983, -0.0748, +0.2146, -0.4183, +0.2629, -0.0846, +0.1016, +0.1277, -0.5987, +0.0551, -0.2709, +0.1679, -0.0466, +0.0146, -0.6978, +0.0202, -0.2257, +0.1591, +0.2484, -0.1869, -0.4338, +0.1857, -0.2493, +0.1099, +0.3504, +0.2508, -0.1500, +0.2334, +0.1748, -0.3251, +0.2943, -0.1541, -0.2068, -0.3274, -0.0284, -0.2226, -0.7720, -0.0758, +0.2415, +0.2468, +0.0602, +0.0709, -0.0653, -0.1981, +0.2391, -0.0495, -0.1361, +0.1654, +0.1076, +0.2564, -1.0110, +0.0648, +0.1649, +0.0347, -0.0837, -0.0501, +0.2716, -0.2064, -0.0743, +0.2097, +0.0813, -0.2599], -[ +0.2996, +0.3009, +0.0437, -0.0015, +0.2981, +0.3571, -0.2640, +0.4005, -0.1199, -0.4002, -0.1342, +0.0947, -0.1451, -0.8596, +0.2964, -0.2676, -0.2636, -0.2562, -0.1262, -0.3291, -0.3132, +0.2393, -0.5606, -0.4309, +0.0571, -0.5088, -0.4093, -0.1497, -0.3532, +0.4087, +0.0666, +0.1872, +0.2352, -0.3593, -0.1425, +0.1205, -0.2395, -0.1666, +0.0326, -0.3578, -0.1019, -0.2562, +0.6277, -0.0565, +0.1088, +0.7536, -0.0564, -0.1651, -0.0999, -0.3547, +0.2413, -0.4467, +0.0760, +0.0189, -0.1700, -0.0412, -0.3153, -0.0021, -0.5286, -0.3263, +0.3458, -0.1305, +0.0676, -0.1704, -0.1400, -0.5120, -0.3886, -1.0551, -0.1510, +0.2112, +0.1880, -0.6776, -0.2089, -0.1477, +0.5812, -0.6664, +0.1001, +0.2200, +0.0668, -0.3877, -0.3586, +0.2876, -0.4994, +0.0644, -0.7462, -0.0512, +0.0266, -0.4382, -0.3843, +0.6815, +0.2887, -0.0428, +0.2924, -0.1152, +0.0752, +0.0133, -0.7714, -0.0165, +0.1903, -0.8201, -0.0661, -0.0655, +0.1349, -0.0339, -0.4993, +0.3313, -0.1071, +0.0361, -0.7342, +0.4362, -0.2886, -0.7079, +0.1626, -1.1139, -0.1648, +0.3737, +0.0501, -0.3816, -0.1764, -0.3814, -0.2828, +0.4282, -0.7135, +0.6268, -0.0251, -0.0978, -0.0044, -0.4145], -[ -0.0987, +0.2674, -0.2160, +0.1872, +0.0086, -0.1019, +0.0317, +0.3832, +0.0535, -0.1462, +0.2453, -0.5566, +0.2181, -0.2850, -0.1944, -0.0749, +0.4523, +0.2200, +0.2370, +0.0191, -0.5384, -0.2750, +0.0669, -0.2164, -0.2198, +0.1911, -0.1869, +0.2440, -0.3689, -0.4102, +0.0968, +0.0577, +0.3747, +0.3020, +0.5376, -0.9227, -0.1161, -0.0193, -0.2609, +0.2430, +0.4291, -0.0324, +0.0647, -0.1492, -0.3373, +0.0507, +0.3093, -0.3894, -0.2007, -0.3634, -0.0260, +0.0581, -0.0299, -0.1538, -0.5709, +0.5232, -0.6882, -0.2010, +0.0049, -0.4697, +0.0045, -0.0500, +0.1824, +0.0013, -0.1099, -0.6229, +0.0258, +0.2637, +0.1650, -0.0959, +0.1666, +0.1098, -0.0458, +0.3258, -0.6551, +0.0607, +0.4416, -0.3444, -0.5051, -0.0358, -0.3262, +0.2155, +0.2457, +0.0737, +0.7395, +0.3358, +0.1713, +0.1174, -1.5885, -0.1310, -0.6417, +0.3000, -0.3080, -0.3223, -0.2565, -0.1615, +0.0120, +0.1411, +0.0915, -0.2378, -0.0691, -0.1939, +0.4339, +0.0045, -0.1542, -0.4939, +0.3636, +0.1296, -0.0518, +0.1643, +0.0932, -0.2616, +0.2948, -0.1984, -0.3448, -0.1132, +0.2793, +0.2134, +0.2061, -0.2311, +0.2093, -0.4282, -0.1648, -0.2658, -0.0393, -0.0759, -0.1540, -0.0821], -[ +0.0855, -0.1661, +0.1748, +0.2479, -0.6137, -0.4540, +0.1851, +0.2979, +0.0843, -0.1253, +0.6341, -0.2610, -0.4348, -0.2795, +0.0338, +0.0822, -0.1744, -0.1645, +0.3188, -0.3047, -0.1507, +0.1333, +0.4128, +0.5326, +0.1619, -0.3291, +0.3029, +0.1314, -0.4557, +0.1121, -0.0476, -0.3173, +0.2301, +0.2594, -0.0850, -0.6117, -0.2207, -0.2537, -0.0303, +0.4390, +0.1587, -0.2925, -0.2673, +0.4223, -0.0714, -0.3651, +0.1497, -0.1008, -0.3399, +0.3476, +0.1025, -0.6270, +0.0571, +0.2130, -0.1124, +0.0785, -0.6103, +0.1486, +0.2588, -0.0354, +0.4133, -0.4644, +0.0148, +0.2864, +0.3836, +0.3227, -0.1079, -0.4710, -0.0561, -0.5637, +0.3888, -0.0048, -0.3661, -0.0794, +0.1148, +0.1858, -0.6130, +0.2262, -0.0126, -0.0375, -0.0683, +0.2084, +0.2899, +0.2507, -0.6711, +0.1578, +0.1652, -0.4802, +0.1245, +0.2711, -0.1964, +0.0538, +0.7223, -0.0240, +0.0983, -0.1290, -0.2713, +0.1817, -0.2751, -0.0149, -0.0204, -0.2269, -0.4010, -0.1998, -0.0681, -0.1768, -0.6251, +0.1238, -0.0441, -0.3551, -0.0768, +0.2926, -0.3169, +0.1367, -0.1206, +0.0131, -1.5906, -0.7297, +0.3032, -0.5464, -0.0108, -0.3236, -0.3622, +0.4526, +0.1540, -0.0096, +0.1888, +0.5511], -[ -0.3135, +0.5004, +0.1293, -1.0312, -0.3854, -0.6148, -0.1112, +0.3740, -0.3191, -0.2813, -0.9932, -0.1299, -0.5854, +0.6288, -0.6623, -0.0713, -0.6482, -0.3977, -0.4687, +0.3215, -0.5381, +0.3485, -0.0902, +0.0789, -0.2022, -0.3658, +0.1556, -0.4441, -1.0079, +0.1818, +0.2581, +0.6417, +0.0763, -0.3306, +0.1347, -0.2296, -0.0952, -0.9034, -1.1322, -0.6237, -0.2122, -0.0468, +0.1231, -0.4308, +0.0720, -0.0146, +0.0886, +0.3128, +0.2208, +0.0443, +0.1595, -0.0058, -0.6215, +0.4890, -0.1322, -1.3189, -0.6667, -0.1083, -0.0437, +0.4276, +0.2354, +0.4587, +0.1889, +0.1600, -0.6431, +0.2176, -0.3958, +0.1826, +0.1664, -0.0999, -0.3960, +0.2822, +0.0199, +0.1779, -0.0247, -0.1328, +0.3310, -0.6100, +0.0551, +0.2991, -0.4986, -0.6895, -0.0339, +0.2767, -0.0204, -0.0092, -0.1076, +0.2971, -0.1094, -1.2150, +0.3127, +0.1839, -0.2254, -0.1199, +1.1300, -0.4086, +0.2921, -0.0352, +0.0173, +0.0212, +0.1541, -0.4993, +0.5547, -0.5354, +0.2132, -0.8331, +0.3549, +0.1181, +0.1484, -0.4055, -0.3173, +0.7147, +0.2730, +0.4609, -0.1541, +0.2393, -0.4557, +0.6216, +0.0961, -0.4131, +0.1502, -0.1230, +0.2649, +0.1177, +0.3781, -0.1184, -0.2452, -1.1050], -[ -0.0069, +0.2335, +0.0863, -0.5341, +0.3261, +1.0243, -0.3323, -0.4629, -0.1731, -0.1652, -0.0381, -0.9598, -0.9100, +0.7421, -0.2023, +0.1591, +0.1503, -0.3960, -0.1951, +0.0756, +0.0885, -0.3814, -0.4443, -0.1532, +0.5540, -0.5538, -0.6663, -0.4584, -0.0317, +0.4142, -0.7078, -0.2563, -0.1349, -0.5539, +0.4112, -0.1135, -0.3100, -0.3885, +0.4395, -0.6350, -0.0396, +0.3496, -0.9601, +0.0391, -0.3779, -0.0114, -0.6799, +0.5111, -0.6065, -0.0328, -0.1730, +0.2856, -0.3677, -0.7591, -0.0089, +0.1272, -0.3130, -0.5324, -0.0119, -0.5479, +0.0845, -0.0289, -0.5036, -0.2767, -0.3052, +0.0464, +0.0539, -0.1295, +0.4708, +0.3982, +0.0989, +0.3016, +0.5460, +0.5316, +0.0630, +0.0437, -0.2027, -0.0993, -0.0384, +0.2345, +0.1780, +0.5759, -0.2591, +0.1339, +0.3955, -0.4956, -0.2081, -0.2749, -0.5288, +0.0091, -0.6433, -0.4148, -0.1818, -0.2985, -0.1746, -0.1614, -0.0032, +0.3567, -0.0348, -0.3380, +0.0351, +0.4742, +0.2256, -0.1004, -0.4727, -0.0405, -0.9860, -0.0213, -0.0810, -0.3812, -0.0984, -0.9133, +0.5624, +0.6360, -0.1799, +0.1861, +0.0866, -0.6603, -0.1155, +0.7481, -0.6336, -0.1272, +0.0349, -0.3066, +0.0821, -0.1234, +0.1727, -0.1712], -[ -0.3053, -0.3877, +0.4913, -0.0323, +0.3762, +0.4759, +0.1078, +0.0330, -0.0426, +0.2341, +0.4257, -0.6515, +0.4868, -0.3980, -0.6277, +0.0966, -0.1764, -0.4243, -0.1668, +0.0328, -0.0405, -0.2713, +0.3050, -0.8204, +0.3431, +0.2509, -1.0262, +0.2385, +0.0694, +0.2273, -0.0477, +0.1081, +0.1892, +0.3965, -0.0420, -0.5953, -0.0445, -0.1124, +0.3674, -0.8070, +0.0018, +0.1623, +0.1058, -0.2127, +0.2416, -0.3837, +0.0269, -0.5531, +0.4954, +0.0358, -0.3548, -0.5927, -0.2086, +0.0367, -0.4892, +0.4365, -0.7894, -0.0133, +0.2046, -0.3613, -0.0207, -0.2376, +0.0128, +0.3375, +0.3697, -0.0907, +0.2714, -0.1293, -0.2909, +0.0404, -0.5364, +0.1591, -0.1819, -0.5701, -0.4787, -0.2546, +0.2451, -0.7130, -0.0074, -0.1138, +0.3927, +0.3275, -0.0470, -0.1074, -0.3547, -0.1584, -0.1751, +0.1766, -0.2425, +0.2665, -0.2064, -0.6900, +0.1044, -0.8620, -0.7028, -0.3366, -0.2598, +0.0920, +0.4247, -0.1863, -0.1451, +0.2981, +0.1632, +0.3578, -0.3921, +0.3973, -0.1386, -0.2804, -0.2156, +0.4567, +0.0002, -0.2784, +0.1613, -0.7393, -0.3691, +0.0022, +0.2284, +0.1287, +0.0200, -0.1419, -0.1028, -0.9109, +0.0402, -0.4576, +0.2729, -1.2170, -0.0748, +0.2157], -[ -0.4986, -0.4992, -1.0543, +0.3028, +0.2130, +0.0050, -0.1392, +0.6254, +0.2948, -0.2618, -0.1794, -0.0230, -0.4411, +0.6131, +0.2474, +0.1830, +0.1710, -0.3749, -0.6262, -0.8740, +0.2141, -0.2517, -0.5623, +0.7863, -0.1896, +0.4155, -0.2581, -0.5449, -0.2081, -0.2609, -0.1993, -0.2221, -0.0333, -0.2002, +0.2514, +0.1704, +0.1394, -0.4499, -0.2012, -0.3099, +0.9291, -0.0306, -0.1050, -0.0786, -0.5074, -0.6565, +0.2989, -0.2651, -0.0134, -0.2723, -0.0017, +0.0539, -0.1487, +0.3852, +0.0727, +0.2403, -0.1742, -0.0617, +0.0770, -0.4663, -0.4106, -0.0372, +0.2398, +0.3578, -0.1533, +0.2991, -0.1024, +0.1087, -0.2537, -0.2953, +0.4435, -0.2339, +0.1022, -0.1479, -0.8931, -0.5502, -0.7020, +0.1425, -0.2412, +0.0431, +0.0828, +0.0355, -0.0083, -0.3063, +0.2668, -0.3544, +0.1131, -0.1124, -0.2303, -0.4249, +0.3362, -0.6800, +0.0817, -0.4585, -0.0648, -0.1510, -0.0524, +0.0447, -0.2320, +0.1755, +0.2929, +0.3322, -0.1525, +0.2238, -0.1467, -0.5119, +0.3622, +0.2749, -0.1438, -0.0390, -0.0182, -0.4908, -0.2155, -0.2768, +0.4273, +0.1908, -0.0465, +0.4445, +0.0803, -0.8608, -0.6062, -0.8983, -0.0131, -0.2509, -0.3228, +0.2280, +0.1630, -0.5853], -[ -1.0828, +0.0945, +0.1864, +0.1764, -0.3526, +0.1083, +0.0869, +0.1116, -0.0311, +0.6691, -0.0296, +0.1582, -0.1679, -0.4266, -0.3119, +0.2469, -0.0359, +0.3630, -0.5810, +0.3913, -0.0095, -0.4073, -0.0122, -0.6387, +0.0046, -0.3912, +0.0846, +0.1938, -0.4806, +0.1991, +0.1881, +0.1514, +0.2467, -0.3574, -0.1889, -0.6013, -0.5016, -0.8978, +0.2637, +0.1651, -0.0536, +0.1848, -0.0280, -0.2887, -0.2754, -0.6407, -0.2489, -0.1285, -0.0150, +0.0631, +0.3443, -0.1988, -0.0986, -0.0653, -0.5491, -0.6708, -0.5546, -0.1954, +0.3567, -0.0926, +0.1009, -0.0038, -0.4010, +0.0387, -0.7228, -0.0160, -0.0417, +0.0884, +0.0611, -0.1085, +0.0933, -0.1851, -0.4952, -0.1633, +0.0386, -0.7519, -0.5049, -0.0750, +0.1690, -0.8052, -0.1027, +0.0034, -0.3008, -0.2844, -0.2180, +0.2149, +0.0134, -0.1346, +0.0564, -0.2118, +0.2175, -0.3198, +0.1094, +0.2446, +0.1664, +0.1410, -0.1228, -0.0526, -0.8458, +0.3513, -0.5610, -0.2658, +0.4010, +0.2118, +0.0410, +0.1934, +0.0523, -0.9690, +0.3700, +0.0300, +0.1061, -0.2072, +0.2971, -0.0709, +0.2087, -0.2407, -0.6535, +0.0144, +0.3537, +0.0607, -0.2574, -0.4210, -0.0850, +0.2044, +0.4227, -0.1590, +0.1838, -0.3064], -[ +0.1247, -0.4777, +0.3030, -0.2477, -0.0811, +0.4303, -0.1675, -0.1791, -0.3280, +0.1602, -0.1321, +0.2970, -0.2283, +0.1131, -0.7479, -0.8094, +0.5652, +0.0876, +0.2180, +0.2287, +0.1648, -0.4248, +0.2704, -0.1189, +0.0594, +0.0389, -0.1906, -0.1302, -0.2194, -0.0537, +0.0071, -0.2794, +0.3415, -0.0562, -0.4384, -0.1595, +0.3295, -0.0328, +0.2724, +0.0381, +0.0122, -1.6885, -0.0182, -0.1044, -0.2957, -0.0800, +0.1519, -0.1918, +0.1668, -0.6419, -0.0100, -0.2637, -0.5003, +0.3090, +0.2536, +0.3785, -0.3613, -0.1876, +0.0676, -0.3658, +0.0892, +0.2979, -0.1624, +0.1077, +0.1299, +0.1429, +0.0559, -0.0113, -0.8297, -0.2675, +0.1754, -0.0942, +0.3856, -0.0472, -1.0600, -0.2916, -0.0832, -0.3195, -0.4027, +0.3508, -0.1457, +0.1273, -0.2167, +0.3391, -0.7908, -0.4848, +0.0688, +0.2940, -0.1529, +0.2468, -0.4441, +0.1053, -0.4333, -0.0293, +0.0611, +0.3788, -0.6811, -0.0483, +0.0999, +0.6715, +0.3624, -1.5082, -0.0570, -0.5068, -0.0016, -0.1867, -0.1632, -0.5381, -0.2398, -0.0807, -0.2550, -0.1928, +0.0287, -1.2219, +0.3683, -0.4776, +0.3467, -0.5773, -0.2765, +0.2993, +0.1908, -0.1251, -0.2674, -0.2039, -0.2327, +0.2283, -0.0108, -0.3120], -[ -0.0619, +0.2048, +0.1697, +0.0564, +0.3351, -0.0579, +0.2724, +0.1143, -0.0598, -0.5683, -0.3940, -0.5658, -0.0576, +0.2786, -0.1531, -0.0178, -0.3646, -0.2133, +0.2092, -0.5139, +0.0476, -0.5683, +0.3182, -0.9030, -0.3863, -0.2339, +0.0720, -0.2582, -0.8594, -0.7687, +0.1789, +0.1331, +0.1966, +0.3295, -0.1031, +0.0174, +0.1579, -0.2773, +0.3004, +0.0467, -0.1602, -0.3853, +0.4857, -0.1011, +0.0811, -0.5747, -0.9699, +0.0016, +0.2754, +0.1080, -0.1822, +0.2270, +0.1843, -0.1150, +0.0334, -0.3233, -0.6047, -0.1341, -0.3641, +0.2752, -0.2260, -0.1117, +0.2263, +0.0171, +0.4387, -0.1374, -0.4297, +0.3236, +0.4360, -0.0542, -0.1898, +0.0818, +0.0146, +0.4793, -0.6815, +0.2600, -0.6377, -0.5309, -0.1070, -0.5272, -0.1205, +0.1783, +0.2413, +0.1172, -0.2019, +0.4478, -0.5530, +0.0462, -0.0644, +0.0776, -0.0410, +0.2392, +0.0680, +0.0801, +0.1857, -0.3183, +0.0647, +0.2137, -0.0793, -0.0727, -0.2171, -0.0778, +0.5203, -0.1325, -0.0846, -0.0645, -0.0888, +0.1024, +0.3867, +0.3815, +0.0987, +0.1050, -0.0406, -0.6686, -0.0505, +0.0392, -0.2152, -0.0242, +0.2560, -0.0551, -0.1890, +0.3802, -0.0576, -0.0609, -0.3537, +0.1590, -0.0193, -0.2706], -[ -0.0766, +0.1033, -1.2539, +0.3586, -0.1427, -0.4546, +0.0406, -0.8355, -0.3546, -0.1381, +0.4524, +0.3964, +0.0199, -0.1233, -0.7005, +0.3672, +0.1107, -0.1755, +0.0700, -0.6754, -0.1263, +0.2096, +0.1610, -0.0158, -0.2518, -0.1918, +0.4008, +0.1254, +0.4369, -0.4940, +0.0934, -0.0910, +0.0841, +0.1790, +0.2941, +0.3857, -0.6771, -0.3685, -0.2613, -0.0021, -0.3712, -0.2344, -0.2581, -0.0164, +0.4515, -1.2933, +0.1027, +0.1899, -0.0114, +0.2483, -0.6147, -0.0592, -0.3226, -0.4047, +0.1472, +0.3787, +0.0034, -1.0464, -0.3565, +0.3298, -0.2410, +0.1609, +0.1172, +0.2067, -0.4498, +0.0469, -0.8520, -0.0263, +0.3291, +0.2913, -0.1347, -0.6364, +0.4281, -0.9423, -0.2514, -0.1193, -0.4274, +0.4733, -0.5947, -0.5083, +0.1445, +0.0754, -0.0689, +0.0264, +0.6137, -0.4907, +0.3132, -0.1753, -0.2043, +0.0353, -0.1776, -0.6320, +0.0530, -0.0785, +0.1012, -0.4843, -0.0438, -0.0162, -0.9216, -0.2999, +0.1542, +0.4960, +0.2786, +0.1195, -0.1055, +0.2672, -0.5464, -0.9306, -0.0464, -0.2609, -0.3125, -0.6088, -0.2874, -0.2519, +0.0083, +0.0186, -0.7589, +0.2619, -0.2209, -1.0670, -0.0987, -0.3169, +0.1449, -0.0010, +0.5902, -0.0038, -0.0798, +0.3907], -[ -1.2040, -0.7819, -0.0811, +0.0175, +0.1808, +0.2200, +0.2532, -0.8634, +0.1285, -0.4261, +0.0450, +0.2785, -0.2460, +0.1786, -0.1828, -0.1394, +0.2602, +0.1941, +0.1015, -0.4054, +0.4634, -0.3441, -0.4125, +0.0557, -0.0477, +0.0150, -0.0269, -0.7722, +0.0007, -0.3162, -0.1168, -0.5293, +0.0132, +0.1011, -0.1914, +0.5658, -0.1578, +0.1543, -0.6056, +0.1105, -0.2549, -0.0158, +0.2448, +0.0780, -0.0671, +0.4551, -0.2950, +0.3120, +0.0851, +0.3899, -0.1411, -0.1920, +0.4782, -0.8193, -0.2408, +0.7494, -0.0226, +0.1705, +0.1244, +0.1227, +0.5091, +0.1689, -0.4802, +0.5006, -0.0168, +0.0017, -0.1689, +0.1483, +0.0912, -0.4811, +0.0092, -0.1756, +0.1300, +0.0097, +0.2151, -0.0120, -1.2281, -0.3219, +0.1903, -0.2458, +0.0713, +0.2158, +0.0249, -0.3766, +0.3686, +0.3202, -0.6587, -0.3300, -0.0954, -0.2153, +0.3013, -0.0427, -0.0637, -0.6502, -0.3099, +0.3579, -0.8102, +0.2789, -0.7376, -0.3630, -0.1216, -0.3400, -0.0764, -0.4207, +0.2997, +0.0314, -0.1457, -0.5389, -0.4908, -0.3686, +0.0786, -0.4781, -0.2968, -0.4168, -0.2239, -0.0946, +0.0472, +0.0396, +0.0185, +0.0476, -0.2927, -0.0181, -0.8590, -1.9980, -0.1753, -0.3137, -0.3092, +0.1358], -[ +0.2154, +0.0057, +0.0875, -0.3385, +0.2415, +0.1814, -0.0018, -0.1970, -0.2342, -1.0941, -0.2388, -0.6580, -0.3749, -0.0409, -0.4869, +0.3409, -0.3428, -0.2809, -0.3732, -0.3823, -0.1267, +0.2177, +0.3041, +0.1983, +0.1500, -0.2494, +0.1150, +0.4526, -0.4982, -0.8186, -0.1475, -0.1802, +0.0875, -0.6757, +0.1836, -0.5859, +0.0928, +0.1693, -0.4158, -0.2417, -0.1745, -0.8506, +0.0913, -0.4021, +0.4664, +0.0735, -0.3440, +0.2276, -0.1497, +0.0848, -0.5533, -0.9459, -0.0197, +0.4967, +0.0077, -0.1536, +0.0674, -0.7886, -0.4311, -0.3894, -0.1126, -0.1631, -0.1380, -0.8779, -0.8309, +0.1469, +0.0920, -0.5275, -0.2455, +0.1810, -0.1068, +0.1222, -0.1013, -0.4019, +0.0063, -0.5060, -0.1094, -0.4448, -0.9039, -0.3922, -0.5493, +0.2508, -0.1082, -0.4121, +0.1753, -0.3037, +0.5326, -0.1399, -0.3793, -0.2014, -0.4323, -0.5197, -0.2515, +0.0042, +0.4259, -0.5923, +0.0347, +0.1103, +0.3065, +0.3161, -0.5666, -1.6456, -0.8859, -0.0388, +0.4017, -0.4571, -0.1048, +0.0499, -0.3386, -0.0862, -0.1535, -0.2141, -0.2909, -0.8509, -0.0920, -0.1075, -0.0237, +0.3082, -0.2629, -0.0117, +0.0559, +0.3365, -0.8576, -0.4540, -0.0727, -0.2737, +0.2601, +0.3092], -[ +0.1228, -0.1074, -0.0113, -0.2208, +0.1064, -0.3667, -0.2364, -0.1197, +0.1721, -0.3505, +0.2012, +0.0756, +0.0308, +0.0454, -0.1102, +0.3765, -0.4342, +0.0539, +0.0423, -0.2579, -0.6105, +0.4123, +0.1632, +0.2716, +0.2361, -0.0185, -0.1219, -0.0996, -0.2874, -0.0035, +0.0156, -0.5462, +0.0708, +0.0920, +0.1504, -0.1360, +0.0016, -0.0760, +0.0054, -0.4972, +0.1761, +0.2944, +0.0523, -0.3696, -0.2646, -0.0866, -0.3125, +0.1080, +0.2741, +0.0637, +0.2047, +0.0386, +0.3544, +0.2965, -0.2353, -0.5064, -0.8049, -0.0083, -0.2692, +0.2301, -0.2796, +0.6045, -0.0661, -0.0737, -0.4219, -0.0839, +0.0878, +0.1640, +0.3946, -0.0783, +0.0185, -0.3582, -0.0830, +0.0119, +0.1835, +0.2062, -0.0179, +0.0051, +0.0322, -0.1494, +0.0974, -0.3383, -0.0210, -0.0072, -0.6772, -0.2884, +0.1508, -0.0055, -0.0734, +0.0796, +0.2263, -0.2448, -0.2474, -0.2528, +0.2146, +0.1714, -0.2386, +0.0899, +0.1258, +0.3673, -0.0303, +0.0330, -0.0434, +0.3154, -0.4800, +0.1159, +0.0394, -0.1338, -0.2060, -0.0832, +0.0165, -0.0563, -0.4210, -0.0471, -0.0886, +0.0056, +0.0254, -0.4052, +0.5564, -0.5210, +0.2491, +0.1555, -0.1856, -0.1803, +0.5265, -0.2599, +0.1829, +0.0948], -[ -0.1578, +0.0414, -0.5770, +0.2735, -0.0528, -0.0827, -0.7041, +0.0471, +0.1491, -0.0172, -0.1091, +0.0864, +0.0600, +0.1653, +0.0450, +0.2026, -0.1939, -0.0182, -0.1469, +0.3097, +0.1608, -0.0791, -0.0852, -0.1613, +0.0180, -0.4521, +0.1459, +0.1050, -0.4254, -0.1800, -0.3502, -0.2898, +0.3000, +0.1019, +0.4407, -1.4520, +0.0761, -0.0372, +0.1983, +0.1018, -0.0403, +0.1188, -0.3377, +0.0866, +0.0056, -0.9741, +0.4327, +0.6897, +0.1146, -0.9361, -0.0454, -0.4181, -0.4425, -0.5448, -0.3121, -0.1381, +0.4133, +0.2980, +0.0981, +0.0901, +0.1502, +0.0323, -0.2877, +0.1571, -0.3346, +0.1444, -0.2602, +0.2369, -0.0753, -0.2836, -0.1332, -0.1041, +0.0501, -0.2140, +0.3666, +0.0665, -0.1596, -1.2162, -0.2716, +0.1477, -0.4680, -0.5498, -0.5844, -0.1602, -0.1749, -0.0764, +0.0967, -0.1706, +0.7354, +0.0215, +0.0331, -0.1661, -0.2309, -0.0922, +0.0951, -0.0654, +0.2332, -0.2618, +0.1725, -0.1450, +0.1211, -0.6754, -0.5229, +0.5277, +0.3650, +0.1412, -0.1320, -0.0962, -0.0087, +0.1131, +0.1204, +0.2923, -0.1549, +0.5818, +0.0998, -0.7167, -0.2835, -0.0664, +0.1760, +0.0489, -0.0083, +0.1069, +0.0120, -0.2719, +0.1709, +0.0208, -0.1453, -0.5245], -[ -0.1971, -0.2795, -0.1135, -0.5933, +0.0594, -0.8393, -0.2613, -0.6433, +0.4045, -0.2790, -0.7054, -0.6780, -0.3864, -0.7163, -0.1297, +0.2422, -0.7860, +0.0879, +0.0002, -0.0618, -0.2157, -0.0057, -0.2412, +0.1371, +0.1209, +0.1630, -0.1426, -0.0845, +0.2105, +0.1452, +0.1447, +0.0408, +0.2273, +0.0666, +0.4510, -0.4178, +0.4022, +0.4039, -0.2117, +0.3104, +0.2190, +0.3036, -0.2272, -0.1514, -0.1137, +0.1013, -0.3844, -0.3572, -0.5344, +0.2142, +0.4122, +0.0084, +0.2375, -0.3727, +0.1276, -0.4551, -0.2564, +0.4687, +0.3132, +0.1562, +0.1186, -0.0954, -0.0872, +0.1561, -0.1560, -0.5751, -0.3174, -0.3970, -0.2115, -0.1938, -0.1112, +0.3591, +0.2255, +0.5503, -0.2513, -0.1890, -0.4688, -0.0833, +0.2945, +0.0376, -0.3546, -0.0547, +0.0163, +0.1427, -0.0620, +0.0970, -0.0078, +0.1433, +0.1330, -0.3000, -0.3365, -0.1716, -0.1775, -0.2134, -0.2021, -0.0123, +0.1791, +0.2074, -0.0519, -0.0075, +0.0732, -0.2587, +0.0332, +0.0528, +0.2134, -0.2475, +0.0631, +0.1316, +0.1610, +0.2622, +0.3665, -0.8318, +0.0789, -0.0003, -0.0299, +0.2521, -0.2184, -0.0584, +0.2193, +0.0982, -0.0389, -0.1660, +0.3398, -0.1349, +0.0952, -0.2999, -0.2683, -0.3124], -[ +0.1966, -0.6537, -0.4881, -0.5028, +0.1000, -0.4304, +0.2304, -0.1480, +0.2045, +0.2217, +0.4454, +0.0169, -0.3011, +0.7510, +0.2180, +0.0032, -0.4289, -0.1455, -0.2667, +0.4070, -0.0695, -0.0801, +0.0586, -0.0906, -0.1705, +0.0419, +0.5005, -0.1421, -0.0322, +0.6062, -0.0983, -0.1279, +0.2903, +0.2912, +0.2392, +0.0721, -0.6562, -0.2416, +0.4099, +0.3682, +0.3920, -0.0422, +0.1909, -0.1534, -0.6345, +0.4675, +0.1753, -0.6971, -0.2424, +0.0489, -0.5185, +0.6835, -1.0421, -0.7083, -1.0306, -0.6528, +0.2815, -0.3909, -0.8142, -0.3753, -0.6762, +0.0310, +0.0607, -0.3925, -0.2796, -0.0099, -0.0628, -0.0428, -0.0163, +0.0645, -0.0160, +0.0109, -0.4291, +0.1017, -0.5100, +0.0541, -0.4278, +0.1048, +0.1796, +0.0022, +0.2530, +0.3815, -0.0020, +0.0260, +0.6718, -0.0421, +0.3502, -0.3987, -0.1326, -0.2213, -0.3872, +0.0863, -0.2128, -0.0385, -0.1139, +0.3526, -0.0357, -0.8101, -0.5922, -0.1090, -0.2406, -0.2365, -0.4474, -0.0404, +0.2082, -0.3036, -0.0640, -0.2445, -0.0032, -0.0421, +0.0546, +0.1031, -0.2439, -0.3901, -0.0586, +0.2828, +0.6191, +0.5765, -0.6628, +0.3741, +0.1548, -0.6310, -0.3252, +0.3806, +0.5682, -0.1844, -0.0235, -0.5235], -[ +0.0747, +0.2136, -0.4139, +0.0957, +0.0946, +0.1599, +0.3843, +0.0635, +0.1697, +0.0077, +0.4159, -0.7712, +0.2322, -0.2143, +0.2748, -0.0735, -0.0529, +0.4392, +0.1642, -0.0772, +0.2053, +0.0912, +0.3218, -0.6264, -0.1811, -0.1505, +0.3620, -0.2504, -0.3748, +0.0859, -0.0990, +0.2150, -0.1678, -0.4589, -0.7028, -0.0985, -0.4298, +0.0273, -0.3183, -0.0130, +0.1539, -0.2115, -0.1709, +0.3535, +0.1370, +0.2755, -0.0638, -0.0304, -0.1311, +0.0565, +0.1142, -0.5630, +0.5124, -0.1345, -0.3474, -0.1486, -0.4546, +0.5678, -0.1250, -0.1030, -0.1466, -0.1441, -0.6595, -0.1193, +0.1989, -0.2086, -0.1130, -0.0301, -0.1137, +0.0070, +0.0963, -0.2589, +0.2825, -0.0821, -0.0738, -0.0419, +0.0098, +0.1455, -0.7422, -0.0873, -0.0360, +0.3760, -0.1362, +0.2294, -0.6303, +0.1197, -0.4602, +0.4388, -0.1197, +0.1429, +0.2193, -0.0661, -0.1653, -0.2093, +0.1542, -0.3182, +0.1902, +0.0397, -0.1932, -0.1687, -0.2283, -0.2995, -0.0287, +0.1728, -0.3893, -0.1087, +0.1339, -0.1842, +0.0499, +0.0671, -0.0184, +0.2206, +0.2464, -0.1246, +0.0925, +0.1998, -0.0083, -0.4888, +0.1103, -0.8561, +0.2849, +0.2146, -0.1107, +0.1371, -0.4404, +0.4144, +0.1337, -0.0214], -[ -0.3442, +0.1922, +0.1332, -0.5396, +0.6717, +0.5095, -0.1117, -0.0723, -0.0322, -0.1416, +0.1763, -0.5758, -0.0962, -0.7503, +0.0997, +0.2032, +0.1631, +0.1437, +0.0938, +0.0021, -0.6735, -0.6006, +0.6062, +0.0485, +0.1088, -0.1683, +0.1616, +0.0023, +0.3173, +0.2970, -0.4440, -0.1759, +0.0177, -0.4749, -0.2597, +0.3448, -0.0488, -0.1826, -0.1254, -0.4899, -0.6680, +0.2331, -0.1539, -0.0345, +0.2284, +0.1885, -0.3687, -0.3705, -0.0579, -0.2690, +0.0674, -0.1289, +0.0957, -0.1405, -0.3794, -0.3846, +0.0118, -0.3016, -0.3885, +0.4824, -0.2025, +0.1711, -0.1008, +0.0711, -0.5970, -0.0635, +0.1531, +0.3937, -0.2937, -0.1638, -0.2170, -0.4614, -0.0841, -0.5419, -0.0781, -0.0962, +0.3222, -0.2978, -0.1566, +0.2304, -0.3227, -0.0558, +0.1677, +0.1239, -0.0129, +0.0917, +0.6092, -0.4068, +0.0870, +0.0645, -0.1848, -0.3266, +0.0865, +0.1784, -0.9727, +0.0674, -0.1194, +0.1586, +0.2191, +0.0081, +0.3108, -0.6323, -0.0032, -0.2921, -0.3246, -0.6050, +0.2450, +0.3133, -0.1004, +0.0568, -0.1818, -0.0303, +0.0229, -0.1089, +0.0471, +0.4768, +0.0619, -0.0055, -0.1825, +0.0732, -0.4465, +0.1049, -0.0987, -0.0118, +0.0368, -0.2177, -0.0270, +0.2049], -[ -0.4629, -0.4698, +0.1177, +0.1217, +0.1075, +0.2779, -0.1294, -0.1358, -0.3438, +0.1163, -0.4899, +0.0447, +0.2755, -0.6192, +0.0346, +0.1603, -0.1408, -0.4314, +0.0439, +0.0609, -0.6541, +0.0431, -0.4409, +0.2356, +0.5561, -0.0801, +0.1110, -0.0406, -0.3723, -0.3396, -0.6569, -0.1829, +0.1102, +0.0687, -0.2712, -0.1842, -0.1108, -0.3326, -0.1246, -0.2183, -0.1781, +0.0413, +0.1887, -0.1493, +0.0445, +0.3419, -0.3329, +0.1561, +0.0756, +0.1378, -0.0350, -0.2761, -0.4500, +0.0477, +0.0914, -0.1666, -0.0152, -0.0177, +0.0741, -0.3052, +0.3316, +0.2360, +0.2004, -0.1567, -0.2851, +0.3804, +0.2606, +0.4313, -0.5954, -0.6964, +0.1039, -0.1266, -0.2155, -0.0962, -0.3772, -0.1468, +0.3084, +0.0695, -0.4485, +0.1846, -0.2929, +0.1663, -0.0814, +0.0124, -0.0588, +0.1307, -0.1970, +0.1607, -0.2944, -0.1329, +0.0800, +0.0308, -0.4374, -0.3497, -0.6608, +0.3275, -0.2094, +0.4347, +0.2585, -0.1395, -0.2370, -0.2596, -0.3090, -0.0191, -0.5725, -0.3996, -0.0330, +0.3881, -0.0862, +0.4470, -0.1969, +0.1144, +0.2110, -0.2938, -0.6319, +0.5393, -0.2143, +0.2258, -0.3809, -0.1328, -0.4832, +0.2016, -0.0559, -0.4510, -0.1970, +0.2721, +0.3261, +0.2899], -[ -0.1290, +0.1135, +0.0518, +0.2124, -0.4690, -0.3126, +0.0495, -0.2375, +0.1022, +0.3207, +0.2361, -0.1628, -0.0919, +0.1433, +0.4280, +0.0017, -0.2304, +0.1456, +0.2707, +0.0248, -0.4262, +0.1094, -0.0214, +0.0889, -0.2344, +0.3428, -0.1974, -0.2421, -0.1351, +0.1855, +0.3371, +0.2551, -0.0432, -0.5607, -0.3386, +0.0633, -0.5578, +0.1510, -0.3293, -0.6632, -0.2890, -0.4259, +0.5204, -0.0017, -0.6644, +0.3037, -0.2927, -0.4238, +0.1078, -0.3801, -0.0480, +0.3670, +0.7781, +0.2793, +0.3567, +0.2807, -0.0266, -0.0806, +0.3238, +0.3428, +0.5940, +0.1931, -0.5308, -0.1833, +0.0114, +0.2452, -0.6829, +0.1385, -0.0015, +0.1062, -0.3477, +0.0718, +0.0209, -0.4900, -0.4868, +0.3708, +0.2481, +0.0488, +0.1345, -0.1698, -0.3651, +0.3355, -0.3003, -0.1944, -0.1586, -0.1578, -0.1033, -0.2571, -0.5126, -0.1804, +0.1263, -0.0254, +0.2603, +0.1878, -0.0849, -0.5156, +0.3136, -0.0209, -0.1680, +0.1696, -0.0070, -0.4613, +0.1018, +0.2978, +0.1670, +0.0391, -0.3372, -0.0449, -0.2165, -0.0897, +0.1725, -0.1164, +0.0542, -0.0924, -0.0774, +0.4231, -0.1855, -0.3540, -0.1924, +0.0585, +0.6631, +0.1973, -0.5638, -0.2192, +0.0848, +0.2070, -0.0681, +0.2896], -[ +0.1033, -0.2728, -0.1799, +0.0509, -0.0639, -0.3235, +0.1877, +0.0196, -0.0614, -0.0023, -0.1228, -0.6093, -0.6981, -0.3231, +0.2958, +0.1529, -0.4440, -0.3805, -0.0193, -0.1239, +0.0349, +0.1550, +0.5155, -0.0179, -0.1150, +0.0070, +0.1730, -0.3609, +0.7352, +0.0245, -0.0037, -0.4667, -0.1063, -0.5199, +0.3332, -0.1144, -0.3337, +0.3655, -0.1146, +0.2752, -0.0850, -0.0751, -0.0868, +0.1797, -0.4720, -0.0814, -0.1375, -0.3541, +0.1952, -0.0885, -0.3739, +0.0097, +0.7544, -0.1816, -0.3823, -0.1336, -0.1879, -0.7855, +0.0490, -0.2660, -0.0816, -0.1110, +0.3020, +0.0396, +0.3023, +0.0061, -0.2788, -0.1143, -0.7482, -0.1788, -0.5179, +0.3206, -0.2566, -0.1503, +0.5131, -0.2743, +0.2491, -0.0346, -0.0284, -0.3635, -0.1184, -1.0271, +0.4408, -0.2149, +0.2100, +0.1868, -0.0170, -0.0212, +0.2112, +0.5489, +0.0225, -0.0035, +0.3180, -0.1142, -0.1002, +0.3734, +0.2105, -0.3831, +0.3830, -0.3126, +0.0974, -0.0950, +0.2262, -0.0591, +0.2005, +0.1610, +0.2246, -0.1228, -0.3039, -0.0079, -0.0971, -0.5681, -0.1672, -0.3097, +0.0558, -0.3702, -0.3543, -0.9684, +0.0934, -0.0570, +0.3296, +0.1079, +0.2727, -0.1462, +0.0687, -0.8011, +0.1137, -0.0125], -[ -0.2473, +0.0271, -0.1177, +0.2639, +0.6882, -0.4036, -0.1634, +0.2032, -0.1980, +0.3196, -0.1471, +0.3358, +0.0710, +0.2009, +0.0766, +0.2207, -0.5244, +0.2271, +0.3121, -0.8348, +0.4362, +0.0652, -0.0013, -0.2389, -0.2523, -0.2838, -0.1826, -0.5030, -0.1291, -0.8577, +0.4251, +0.2845, +0.2417, +0.1641, -0.4435, -0.6537, +0.2093, +0.0736, +0.2841, +0.4320, +0.4753, +0.2001, +0.1250, -0.2311, -0.7821, -0.2896, -0.8296, +0.4704, -0.1019, -0.2806, -0.3629, +0.1361, +0.3379, +0.0488, +0.2549, -0.3225, -0.2078, -0.0213, -0.0713, -0.2010, -0.0295, +0.2886, +0.3936, +0.2606, +0.0652, +0.5538, -0.3385, +0.5259, -0.1680, +0.2828, +0.0020, -0.4732, -0.3965, +0.5709, -0.3102, -0.1722, +0.0301, -0.1022, -0.0164, -0.0462, -0.0774, -0.2797, -0.1387, +0.1018, +0.3043, +0.1797, +0.1839, -0.0286, +0.3565, +0.2152, +0.1912, -0.6491, +0.0102, +0.1268, -0.0056, -0.5118, +0.0609, -0.3844, -0.5220, -0.2627, -0.1445, -0.3179, -0.6190, -0.7317, +0.0198, +0.1219, -0.5864, -0.8738, -0.3585, -0.0532, -0.2037, +0.1149, +0.1169, +0.1765, -0.1236, -0.0641, +0.3169, +0.1885, +0.1942, +0.6126, +0.3584, +0.0250, +0.0642, -0.0885, -0.5887, -0.0682, -0.8170, -0.6889], -[ +0.1779, +0.0879, -0.3189, -0.2178, -0.1649, -0.5647, -0.1484, -0.1087, +0.0041, +0.0290, +0.2892, -0.3580, -0.3924, +0.2314, -0.0097, +0.5028, -0.4605, +0.0833, +0.3161, +0.3252, -0.2219, +0.2651, -0.0593, -0.1993, -0.2455, -0.2912, -0.0631, -0.0626, -0.0980, -0.1119, +0.1331, -0.0648, -0.0120, +0.2684, +0.9917, +0.1041, +0.5162, +0.2498, +0.3385, +0.1748, -0.0546, +0.1097, -0.1251, +0.0255, +0.3142, +0.1242, +0.4976, +0.0624, -0.6175, +0.1821, +0.1427, -0.0226, +0.2517, +0.2453, -0.7226, +0.0124, -0.2533, +0.3121, +0.0410, +0.2840, -0.4722, +0.1940, -0.2242, -0.1537, -0.0878, +0.0302, -0.0433, +0.0858, -0.3085, +0.0509, +0.0147, -0.2365, -0.0260, +0.2051, -0.4025, -0.1066, +0.0718, -0.1960, -0.0558, +0.2407, -0.0474, -0.1226, -0.1148, -0.0165, -0.3767, -0.1014, -0.2366, -0.1547, -0.3817, -0.1710, -0.7634, -0.1959, +0.1433, -0.1154, +0.0396, -0.1886, -0.0592, -0.4102, +0.0420, +0.0397, +0.2155, -0.0931, +0.5973, -0.1503, -0.1649, +0.1716, -0.0316, +0.4005, +0.0360, -0.1343, -0.3474, +0.0199, -0.0473, +0.0579, +0.0003, -0.2195, +0.2198, +0.4954, -0.1286, -0.0379, -0.1023, -0.2099, +0.0090, +0.0555, +0.0277, -0.2778, +0.1809, +0.1463], -[ -0.0355, +0.0698, +0.0195, -0.0634, -0.3115, +0.0320, -0.1032, -0.1473, +0.4754, +0.0753, -0.0566, -0.9424, +0.0202, +0.1696, -0.0608, -0.1067, -0.1598, -0.3129, +0.0236, -0.0753, -0.1926, -0.1523, +0.0974, -0.1705, -0.2708, -0.3712, +0.3564, +0.2886, -0.1755, +0.0634, +0.0624, +0.5112, +0.2242, -0.2166, -0.3526, -0.2180, +0.2368, +0.4959, -0.1471, -0.4290, -0.3594, -0.8268, -0.2614, +0.0429, +0.3223, -0.0500, -0.0268, -0.2511, -0.2653, -0.0045, -0.2783, -0.6703, -0.0104, +0.2068, +0.4566, -0.3199, +0.0805, -0.0737, +0.0616, +0.1432, -0.2747, -0.0676, -0.3042, +0.1613, +0.2806, +0.2254, +0.3442, -0.0525, -0.1311, +0.0374, +0.3724, +0.1393, +0.1128, +0.1849, -0.2241, +0.3545, +0.4690, +0.1975, +0.1571, -0.1540, -0.5133, -0.1343, -0.1148, +0.0856, -0.0844, -0.0840, -0.3765, +0.1468, -0.0223, +0.1559, -0.2255, +0.1952, -0.5684, +0.0877, +0.4227, +0.0891, +0.2860, -0.2948, +0.2241, +0.0158, +0.2436, -0.2257, -0.0083, +0.0989, -0.4017, -0.0187, -0.1591, -0.0107, +0.3500, -0.3215, +0.1336, -0.0306, -0.1365, -0.0872, +0.0664, -0.2443, -0.3764, +0.3399, -0.5636, -0.2128, +0.0297, +0.0424, +0.3181, -0.1319, -0.1418, +0.0974, -0.0500, +0.3084], -[ -0.1418, -0.3623, -0.3949, -0.0565, +0.2593, -0.0833, +0.0324, -0.3069, +0.0091, +0.2464, +0.1217, +0.0871, +0.2230, +0.3048, +0.2392, +0.1887, +0.1345, -0.3742, +0.1527, -0.4298, +0.0176, +0.5864, -0.6058, +0.0032, -0.1280, +0.2142, +0.2851, -0.2853, +0.2811, -0.6643, +0.2731, -0.3549, +0.2529, +0.0760, -0.3867, -0.3476, +0.5234, -0.0371, +0.3418, -0.4791, +0.5272, -0.4855, -0.3719, +0.1377, -0.4250, -0.1923, -0.1712, +0.2878, +0.1634, +0.4923, -0.0308, +0.0340, +0.2948, +0.2975, -0.2698, -0.0173, -0.0733, +0.0676, -0.8467, +0.2599, -0.3047, +0.0446, -0.1429, -0.0762, -0.5844, -0.0764, -0.1103, -0.0119, +0.0557, -0.1765, +0.0967, +0.0742, -0.4177, -0.3845, -0.1151, -0.2049, -0.1749, -0.1581, -0.1983, +0.3324, -0.0053, +0.1542, +0.3200, -0.1606, +0.1471, -0.4801, -0.3544, -0.1534, -0.0824, +0.6304, +0.0400, -0.0945, +0.1618, +0.2113, +0.2097, -0.4164, -0.2998, +0.0546, +0.2910, -1.0486, -0.0951, -1.5611, +0.5890, -0.0472, +0.3942, +0.1196, +0.0715, -0.4732, +0.2325, +0.0942, +0.2490, -0.3831, +0.1954, +0.5827, -0.1845, +0.0347, +0.0636, -0.1544, +0.3190, -0.3421, +0.2225, -0.1138, -0.0816, -0.8679, -0.2154, +0.0858, -0.2895, +0.0241], -[ +0.3117, -0.5125, -0.5342, -0.3703, -0.1273, -0.0673, -0.0047, +0.3869, +0.0807, +0.2733, +0.1810, -0.6104, +0.2035, -0.1212, +0.2681, +0.2544, -0.0488, +0.2087, -0.0017, -0.3007, -0.2467, -0.3167, +0.2851, -0.1717, +0.0242, -0.0714, -0.3074, +0.0292, +0.0659, -0.4450, +0.0033, -0.0718, +0.0498, -0.7696, -0.5269, -0.7857, -0.1534, -0.4069, -0.3074, +0.0770, +0.1102, -0.0890, +0.3187, +0.3217, -0.6396, -0.7493, +0.1313, -0.6570, +0.0021, -0.8540, +0.0360, -0.3197, -0.6418, -0.4918, +0.3379, +0.2329, +0.1049, -0.3979, -0.0629, -0.1717, +0.0878, -0.0601, -0.1044, -0.5580, +0.0352, +0.1277, -0.0589, -1.0717, -0.5743, -0.2047, +0.1760, +0.1150, -0.5919, -1.0511, +0.4008, -0.0757, -0.6418, +0.2912, +0.2031, -0.0661, -0.7545, +0.1605, +0.1790, -0.5141, -0.1411, -0.1837, -0.3841, -0.4175, -0.1902, -0.1967, +0.2413, +0.0303, +0.3495, -0.2527, +0.4902, -0.2951, +0.0110, -0.3147, -0.8649, +0.0422, -0.0369, -1.0616, -0.3136, +0.1688, -0.1269, -0.0052, -1.4782, -0.4179, +0.3261, +0.1093, +0.4190, +0.0164, +0.2607, -0.7514, -0.9417, +0.3365, -0.5066, -0.1008, +0.4305, +0.1439, +0.0437, -0.2830, -0.5966, +0.3161, -0.5026, +0.1610, -0.7176, +0.1841], -[ -0.0045, +0.2502, +0.0899, +0.3954, +0.1890, -0.0298, +0.1928, -0.1126, +0.0322, -0.6872, +0.0922, -0.6145, +0.0750, +0.0420, -0.4699, -0.4989, -0.7383, -0.5537, +0.2657, +0.3089, -0.4053, +0.2257, +0.2373, +0.0935, -0.1784, -0.5813, -0.6014, +0.1293, -0.1381, +0.2261, +0.3372, -0.0007, +0.2780, -0.5827, -0.2772, -0.2833, +0.1094, +0.3855, +0.0374, +0.2421, +0.3835, -0.2687, +0.0764, +0.1444, +0.0827, -0.0414, +0.2367, +0.2446, +0.2274, +0.2697, +0.0541, +0.1109, +0.2857, -0.4596, +0.0830, +0.3729, -0.4475, +0.3705, -0.1438, +0.1895, -0.0441, -0.1627, +0.3379, -0.1992, +0.0316, +0.2649, +0.2543, +0.2005, +0.1405, -0.4162, -0.3944, -0.3475, +0.0513, +0.1210, +0.1352, +0.1321, +0.1587, -1.3165, -0.5205, -0.0989, -0.5171, +0.2070, -0.0457, -0.4311, -0.2682, +0.2883, -0.5199, -0.8109, +0.2300, -0.0530, +0.4862, -0.0330, -0.8250, -0.4067, -0.1775, -0.1040, +0.2721, +0.2031, +0.0975, +0.1856, +0.3594, +0.1770, +0.5234, -0.4376, -0.3700, +0.0975, -0.0439, -0.1549, +0.0141, +0.1809, +0.0017, -0.3529, -0.1675, -0.0858, +0.2275, -0.8446, -0.3430, -0.6316, -0.0866, +0.1000, -0.2791, -0.0670, +0.1592, +0.0464, +0.3969, -0.4958, -0.2450, -0.1165], -[ -0.5913, +0.2330, -0.3518, +0.4321, +0.0168, -0.2777, +0.3083, -0.3892, -0.2074, +0.0581, -0.0518, -0.5500, -0.3667, +0.2469, -0.3276, +0.6467, +0.6754, +0.0802, +0.1081, +0.0024, -0.0541, -0.4414, -0.5507, -0.9510, +0.1676, -0.1227, -0.0910, +0.3540, +0.0312, -0.0167, -0.0189, -0.3735, +0.4433, +0.0174, +0.6065, +0.3574, -0.1230, +0.0301, +0.0423, -0.3745, +0.1791, -1.3206, +0.1496, +0.2250, -0.1920, +0.2075, +0.2008, -0.0748, +0.4649, +0.0419, +0.0481, -0.7442, +0.3006, -0.2340, -0.0473, -0.1789, +0.1390, -0.6779, +0.4615, -0.0146, +0.1853, +0.2947, -0.4064, -0.4294, -0.1512, -0.0558, +0.1846, -0.0336, +0.1699, -0.2046, -1.4053, -0.3233, +0.0399, -0.6005, -0.2343, +0.4668, -0.1241, +0.1338, -0.0169, +0.2481, -0.4400, -0.0449, +0.1279, +0.6769, -0.3910, -1.4563, +0.0281, +0.4961, -0.0060, -0.4599, -0.3725, +0.5874, +0.3127, -1.4656, +0.1029, +0.1950, -0.3495, +0.0904, +0.1695, -0.1224, -0.1652, -0.4295, -0.3502, -0.8206, -0.0751, +0.4111, -0.2993, -0.0922, -0.3687, -1.3477, +0.0839, -0.2373, +0.3111, -1.1115, +0.1985, +0.1438, -0.8580, -0.0619, -0.0774, -0.0308, +0.6107, -0.0962, -0.1134, -0.0513, -0.1476, -0.3713, -0.0813, +0.1956], -[ -0.4571, -0.4440, -0.0398, -0.1093, -0.4828, +0.0653, -0.4367, +0.0980, -0.0505, +0.4887, -0.2868, -0.0689, +0.4776, -0.2174, +0.0525, +0.1213, -0.1747, +0.1233, +0.0429, -0.0733, -0.0465, +0.2501, +0.1714, +0.0255, +0.1551, +0.3921, +0.3742, -0.4435, +0.3133, -0.4289, +0.1178, -0.0116, -0.2571, +0.1684, -0.5823, -0.1844, -0.7704, +0.3593, -2.1125, -0.7660, -0.5029, +0.0853, +0.0964, -0.0825, +0.0030, -0.0500, -0.3250, -0.0512, -0.2044, -0.1278, -0.1920, +0.1899, -0.8275, +0.1885, -0.1042, +0.3500, +0.3378, +0.0781, +0.2616, -0.1737, +0.1510, +0.1737, +0.1908, -0.5530, -0.1219, -0.0810, -0.4113, +0.0664, -0.1798, +0.2443, -0.0671, +0.1390, -0.0823, +0.4324, -0.9073, +0.3209, -0.3121, -0.1235, -0.3857, +0.0517, -0.2929, +0.3392, -0.2791, -0.2324, +0.0899, -0.2001, +0.0651, -0.0496, -0.1210, -0.3717, +0.2325, -0.0735, -0.0214, +0.0970, +0.0035, +0.5062, -0.5189, +0.0723, +0.5775, -0.1828, +0.0527, -0.5472, +0.1047, +0.3504, -0.1028, +0.0081, -0.2993, +0.2379, +0.1208, -0.3376, +0.2188, +0.4935, -0.1316, +0.4914, -0.3991, -0.2912, +0.4479, +0.0564, +0.0783, -0.5307, -0.2701, -0.4556, +0.3418, -0.1904, +0.0871, -0.3001, -0.5363, -0.5927], -[ -0.2785, +0.2936, +0.1411, +0.2498, -0.0658, -0.7366, -0.7780, -0.2020, -0.2214, -0.1950, +0.0270, +0.3702, -0.0942, +0.1663, +0.2049, +0.3045, -0.2223, +0.0265, +0.0655, -0.3629, +0.1875, +0.3080, +0.1269, +0.4481, +0.0799, -0.0850, -0.1614, +0.0973, +0.2907, -0.2361, -0.1323, +0.2393, -0.2736, -0.3503, -0.2211, -0.0778, +0.0557, +0.1742, +0.1298, +0.1346, +0.0447, -0.2764, +0.2377, -0.1305, -0.1377, +0.0498, +0.1378, +0.5335, -0.2936, -0.2957, -0.0081, +0.0161, -0.1361, -0.4173, -0.3203, -0.3093, +0.2834, -0.0927, -0.2590, +0.0470, -0.2382, +0.1163, -0.8564, +0.6411, +0.1466, -0.1762, +0.3052, +0.4286, -0.1748, +0.0916, -0.1090, -0.3860, -0.5369, -0.3438, -0.4584, -0.0799, +0.1328, -0.3285, +0.3244, +0.0928, +0.0606, +0.2439, -0.3261, -0.0051, -0.1856, -0.4177, +0.1848, -0.0390, +0.1291, +0.2439, -0.1961, -0.2843, +0.0637, -0.2079, -0.8945, -0.1922, -0.5456, +0.4008, -0.4390, +0.2268, +0.1746, +0.0497, +0.0913, -0.1676, +0.3194, +0.1001, -0.2892, -0.5211, -0.5990, +0.0227, +0.1029, -0.0892, -0.3414, +0.0663, -0.2934, -0.9448, -0.0314, +0.0542, -0.0783, +0.2729, +0.2710, +0.4071, +0.1148, +0.1922, +0.1558, -0.2501, +0.0877, +0.1586], -[ -0.1933, +0.1157, +0.4997, +0.1499, -0.0435, -0.9028, -0.8311, +0.2270, -0.3042, +0.3819, -0.1734, +0.0167, +0.0856, -0.2278, +0.0920, -0.2677, +0.2336, -0.4104, +0.4432, +0.1196, +0.2121, +0.1842, +0.0511, +0.3463, +0.0711, +0.3803, +0.0333, -0.2522, +0.0186, -0.2498, -0.5287, -0.2318, -0.0049, +0.0052, -0.0805, +0.4586, -0.0683, +0.0623, -0.1626, +0.3454, -0.0535, +0.3347, +0.0405, +0.0144, +0.1442, +0.2444, +0.1777, +0.1314, +0.2893, +0.0829, +0.2244, +0.3016, +0.0435, +0.2067, -0.2432, -0.1170, -0.1212, +0.1946, +0.5193, +0.0917, +0.0219, +0.1514, +0.1075, -0.4876, -0.1196, -0.2050, -0.2188, -0.0879, +0.1811, +0.6588, +0.1388, +0.3267, +0.0541, -0.0471, -0.0652, +0.0663, +0.2178, -0.0186, +0.0420, +0.0179, -0.2405, +0.1934, -0.0701, -0.1086, +0.0320, -0.1687, -0.0795, +0.0737, +0.1655, +0.2532, -0.2309, -0.0483, -0.0900, +0.1865, -0.1476, +0.3244, -0.3288, -0.1814, +0.3447, -0.1515, -0.2520, +0.0144, +0.4248, +0.0954, +0.1488, -0.5801, -0.1987, -0.4187, -0.4490, -0.3278, +0.3428, -0.1226, +0.3360, +0.0393, -0.0841, +0.3810, -0.1047, +0.3217, +0.1319, -0.1314, -0.1962, +0.0032, +0.4269, +0.2462, -0.0435, -0.1176, -0.0225, -0.3816], -[ -0.1662, -0.8065, -0.1084, +0.0352, -0.1338, +0.1330, -1.0035, -0.3178, -0.2195, -0.0783, +0.3302, -0.2743, -0.6485, +0.4705, -0.3175, +0.7703, +0.4357, -0.7640, -0.0592, -0.1781, +0.2525, -0.0435, -0.1466, +0.2404, +0.1699, +0.3586, -0.4085, -0.0119, +0.2670, -0.0901, +0.6687, +0.2643, +0.0495, -0.0484, +0.1253, +0.1941, -0.2098, +0.3150, +0.6965, +0.1600, +0.2606, +0.1989, +0.1314, +0.1374, +0.2498, -0.0614, +0.1720, -0.5702, +0.1467, -1.2379, -1.0837, +0.5437, -0.6020, -0.4136, -0.4715, -0.2447, +0.3924, +0.3446, -0.4350, -0.7042, -0.3193, -0.3448, +0.4625, +0.0348, +0.2618, +0.0607, +0.0317, -0.5869, -0.1349, +0.0770, -0.2633, -0.4003, +0.0122, +0.1976, +0.5122, -0.3844, -0.0528, -0.1920, -0.0807, +0.5820, -0.1495, -0.0929, +0.0430, +0.2708, -0.2615, -0.5070, +0.6261, +0.4388, +0.1796, +0.1999, +0.0843, -0.1002, -0.5323, -0.5208, +0.5175, -0.7600, -0.3167, -0.0367, +0.0281, +0.2741, -0.3451, -0.0325, -0.4062, -1.3926, -0.1281, -0.0906, -0.0998, +0.1961, +0.2554, -0.3211, +0.0584, -0.3769, -0.2998, +0.1819, +0.0179, -0.2373, -0.4815, -0.7050, +0.5233, +0.4598, -0.2163, -0.2615, -0.0795, -0.2149, -0.1300, +0.3566, +0.2492, -0.6573], -[ +0.2722, +0.4203, +0.0600, -0.0771, -0.1801, +0.0769, -0.2158, -0.0887, -0.4414, -0.1574, +0.0803, -0.1842, -0.0287, +0.2126, -0.1159, +0.3488, -0.3552, +0.2241, -0.0120, -0.0628, +0.0373, +0.0345, +0.3461, +0.0524, -0.3002, +0.0365, -0.0317, -0.0758, +0.3667, -0.2575, -0.5464, +0.4293, +0.2572, +0.1168, -0.5545, -0.1604, +0.0889, -0.2276, +0.2864, +0.5480, -0.2321, -0.0830, +0.2598, -0.0943, +0.1462, -0.0472, +0.1758, -0.4855, +0.0057, +0.1373, +0.0664, +0.4205, +0.2604, +0.2136, +0.0906, +0.3349, +0.0552, -0.3758, +0.2074, -0.3683, -0.1980, -0.4425, -0.0866, -0.0678, -0.0096, +0.2133, -0.2016, -0.4414, -0.1824, -0.0197, +0.1393, -0.1538, +0.0948, +0.2323, +0.2964, -0.2309, +0.1571, +0.1991, -0.0269, -0.3070, -0.0169, +0.0072, -0.1272, -0.0198, +0.4404, -0.2084, -0.5469, +0.3555, +0.1278, -0.2427, +0.3696, +0.3422, -0.4909, +0.4693, -0.4772, -0.4059, -0.0315, -0.2793, +0.0337, -0.2735, +0.0481, +0.1830, +0.3228, +0.2563, +0.0324, -0.2882, +0.0164, +0.0647, +0.1317, -0.5622, -0.3158, -0.2061, +0.1551, +0.3822, +0.3751, +0.1207, +0.2675, -0.5482, +0.2076, +0.0946, +0.1112, +0.4679, -0.1768, +0.1612, -0.1093, +0.7851, +0.0529, -0.3315], -[ +0.0295, +0.4468, -0.2727, +0.3880, +0.2209, +0.1564, +0.1608, +0.0948, -0.1666, +0.2994, -0.5221, -0.5777, +0.2382, +0.1598, -0.0160, -0.1983, +0.0880, +0.3982, +0.3479, +0.1633, -0.0583, -0.0394, -0.0918, +0.0474, -0.1221, +0.0610, +0.3819, +0.0941, +0.0856, -0.6761, -0.2674, -0.0551, +0.0020, -0.1373, +0.2238, -0.0479, +0.1828, +0.2984, -0.4285, +0.2378, +0.1928, -0.1783, -0.6386, +0.5077, -0.2698, -0.0861, -0.2967, -0.1393, -0.1760, -0.3233, +0.0065, -0.0033, -0.1687, +0.3192, +0.2147, +0.1239, +0.2135, -0.0677, +0.1679, +0.0495, -0.0576, +0.0049, +0.3304, +0.0493, +0.2113, -0.4063, -0.4471, +0.0611, -0.1777, -0.3126, -0.0133, +0.0237, -0.3662, +0.1139, +0.1418, -0.5625, +0.1224, +0.0747, -0.1486, +0.1771, -0.1405, -0.2179, -0.2718, -0.1245, -0.2792, +0.1918, +0.1433, +0.7658, +0.0809, -0.1862, -0.6563, -0.5417, +0.3654, +0.0878, +0.1270, -0.1261, -0.2041, +0.2002, +0.0820, -0.0076, +0.1207, -0.1178, -0.0011, -0.2267, +0.0722, -0.3636, -0.0887, +0.1599, -0.0862, -0.1556, +0.1465, -0.0495, -0.0661, +0.4039, +0.2420, -0.2068, +0.1620, +0.0559, -0.0062, +0.5916, -0.1396, +0.3972, +0.2244, -0.1688, -0.0222, +0.4953, +0.4722, +0.0415], -[ +0.1458, +0.3235, -0.3397, -0.5743, -0.6422, -0.3349, -0.0582, +0.1359, +0.2161, +0.6065, +0.1785, -0.6882, +0.4939, -0.3184, -0.5258, +0.1757, +0.3437, +0.3903, +0.2368, +0.0399, +0.0501, +0.0203, -0.4570, +0.3723, +0.5650, +0.0516, +0.1265, -0.7512, -0.0621, +0.4964, +0.0747, +0.1489, +0.0747, -0.2905, -1.2786, -0.2751, -0.0569, +0.2188, -0.2803, +0.2006, -0.0542, -1.0625, -0.0394, +0.3830, +0.0198, -0.2408, -0.2286, -0.1737, -0.2992, -0.4720, +0.1466, +0.3680, +0.0140, +0.3855, +0.4817, -0.0982, -0.2374, -1.1624, -0.0580, -0.3708, +0.0056, -0.1242, +0.1213, -0.3337, -0.4304, +0.0267, +0.0304, -0.4077, -0.8496, +0.0961, +0.2117, +0.0474, +0.3191, +0.6382, -0.0925, -0.1608, -0.0535, +0.2639, -0.2138, -0.0076, -0.3662, -0.4852, +0.3121, -0.1496, -0.1512, +0.4992, +0.0715, -0.1110, -0.7813, -0.0702, -0.0630, -0.4740, -0.0818, -0.1539, -0.0701, -0.1612, +0.1158, -0.1091, +0.4632, +0.3866, +0.2617, -0.6073, +0.1279, -0.1279, -0.2974, +0.1524, -0.1587, +0.1888, -0.5430, +0.1464, +0.0739, -0.5006, -0.0430, +0.4417, -0.3875, -0.3493, -0.1261, +0.3013, +0.1460, -0.7139, +0.0455, +0.0325, +0.3675, -0.0797, -0.0417, -0.7370, -1.2163, +0.2800], -[ -0.1233, -0.0417, +0.1268, -0.0052, -0.0932, -0.1661, -0.1520, -0.0681, +0.1715, -0.3351, -0.6801, -0.1078, +0.0173, -0.0461, -0.2788, -0.2542, +0.5185, -0.1368, -0.4415, +0.1219, +0.0780, +0.0578, +0.3670, -0.1478, +0.0828, -0.0884, +0.6820, -0.4285, -0.1745, -0.2916, +0.1254, -0.1222, +0.2770, -0.1185, -0.1420, +0.0699, +0.0075, -0.3228, -0.3582, +0.1524, +0.2820, +0.0877, -0.3333, -0.2898, +0.0612, -0.2141, -1.4561, -0.2879, +0.1853, -0.0556, -0.1459, -0.8173, +0.4340, -0.2055, +0.2919, +0.2122, -1.3043, +0.1095, +0.3900, +0.0653, +0.5068, -0.4347, -0.1227, +0.2802, +0.1653, +0.1090, +0.0109, -0.3724, -0.1096, -0.5790, -0.0020, -0.0732, -0.2286, -0.2631, +0.1135, -0.3679, -0.0111, -0.0578, +0.4118, +0.0045, -0.8534, -0.5130, -0.3349, -0.0179, +0.4565, +0.4162, -0.0457, +0.3379, -0.2698, -0.6763, -0.4077, +0.4007, -0.0448, +0.2971, +0.2348, -1.0786, -0.1347, +0.3482, +0.0537, +0.3471, +0.0560, -0.1916, -0.6905, +0.5141, -0.4315, +0.2378, -0.2295, -0.2961, +0.2270, -0.1901, -0.0545, -0.2097, -0.3081, -0.9464, -0.0667, -0.9400, +0.6604, -0.1280, -0.0858, -0.0092, -0.5188, -0.3982, +0.0419, -0.0915, -0.0301, -0.0906, +0.1364, +0.0681], -[ -0.1762, +0.3810, -0.0003, +0.4078, -0.6231, -0.3402, +0.0950, -0.3785, -0.2338, -0.0471, +0.3772, -0.6831, +0.2551, +0.4371, -0.0748, -0.0607, -0.5073, -0.2675, -0.4360, -0.3592, -0.0003, +0.1273, +0.0527, -0.3693, -0.4899, -0.0793, -0.4369, -0.1334, +0.6298, +0.1869, +0.1576, +0.8447, +0.2280, +0.1305, -0.0922, -0.1524, -0.8979, +0.1836, -0.8624, -0.1871, -0.4783, -0.0806, +0.2218, -0.5717, +0.1296, +0.0720, -0.4219, -0.5415, +0.2436, -0.2380, +0.3251, -0.9715, -0.2487, -0.4394, -0.4457, -0.1158, -0.1416, -0.0742, -0.1566, -0.5819, +0.2438, -0.1401, +0.5188, +0.2318, -0.1535, -0.8246, +0.2585, -0.0723, -0.5596, -0.1261, -0.4556, +0.2616, +0.4719, -0.1232, +0.0117, +0.4220, -0.2144, -0.1639, +0.4443, +0.0798, +0.0533, -0.1921, +0.0797, -0.2074, -0.7632, -0.4639, -0.3599, -0.2675, -0.1261, -0.0638, -0.0509, -0.8225, -0.0637, +0.3445, -0.0276, +0.2508, -0.1427, +0.3368, -0.8166, -0.1796, -0.3005, -0.4487, -0.3731, +0.7951, -0.3089, +0.2798, +0.5624, +0.0936, -0.4759, -0.9736, +0.5240, -0.2578, +0.0829, -0.6454, +0.3836, -0.0621, -0.3518, +0.6826, +0.1633, +0.2453, +0.2332, +0.5836, -0.1144, +0.0460, -0.0286, -0.1045, +0.3004, +0.1236], -[ -0.0649, +0.2079, -0.0197, -0.7266, +0.1123, -0.2148, +0.1546, -0.3019, -0.3612, +0.3594, +0.0398, -0.0420, +0.0114, -0.1376, -0.0108, +0.1526, -0.2634, -0.4635, +0.1052, +0.4864, -0.0434, +0.0395, +0.1694, -0.4013, -0.0048, +0.2993, -0.7979, +0.0302, -0.1028, -1.0888, -0.0640, -0.2154, +0.0690, -0.1557, +0.1645, -0.0737, -0.2052, +0.3920, -0.2530, +0.0169, -0.4113, -0.2338, +0.1363, +0.2417, +0.2476, +0.0788, -0.1476, -0.1305, -0.0350, +0.0060, +0.0886, +0.3149, -0.7480, +0.0736, +0.1825, -0.0427, +0.1154, -0.0026, -0.0098, +0.2227, +0.0135, -0.2449, -0.0404, -0.1600, +0.3450, -0.3398, -0.2394, +0.1858, -0.4590, +0.0959, +0.2786, +0.1703, -0.4102, +0.1619, -0.0991, -0.1059, +0.3630, -0.1709, -0.5823, +0.2817, +0.0205, +0.1693, +0.2894, -0.1108, -0.1801, -0.5663, -0.0596, -0.2110, -0.0684, +0.4600, +0.3602, -0.0059, -0.5059, +0.2997, -0.9941, -0.0266, +0.2247, -0.0584, +0.0434, +0.0410, +0.0152, +0.0707, -0.0275, +0.2795, -0.0638, +0.0700, -0.1546, -0.2455, +0.1504, -0.1717, -0.1367, -0.1313, -0.2764, -0.0194, +0.2426, -0.0867, -0.3779, +0.0411, -0.7471, -0.0000, +0.1637, -0.3761, -0.1669, +0.2689, -0.2389, -0.0926, -0.6091, -0.6826], -[ -0.3216, -0.1810, +0.1202, -0.5763, +0.1225, +0.4635, +0.1629, -0.0662, -0.1562, -0.3393, +0.0530, -0.0362, -0.0732, +0.2359, -0.1860, -0.1699, +0.0803, -0.1697, -0.0370, -0.1181, +0.0191, -0.6153, -0.1820, -0.3713, +0.4080, +0.0224, -0.5235, +0.1485, -0.1488, -0.0800, -0.2105, -0.2131, +0.1605, +0.4147, -0.7315, +0.1299, +0.1721, -0.7864, +0.2602, -0.2220, -0.5652, +0.1480, -0.5272, +0.0184, -0.4193, -0.6828, -0.2686, +0.1098, -0.2191, +0.2243, +0.0037, +0.0635, +0.1102, -0.6846, +0.2930, -0.0739, -0.4766, -0.2158, +0.0456, +0.0997, -0.3559, +0.3499, -0.1164, -0.1092, +0.0259, +0.0629, -0.3285, -0.0067, -0.1366, -0.2122, -0.5967, -0.3715, -0.2102, -0.8052, -0.4046, -0.1978, -0.0523, +0.0464, -0.2676, -0.1331, -0.1599, -0.0661, +0.0259, +0.2070, -0.0033, +0.0171, -0.6838, -0.0612, -0.2560, +0.0723, -0.0221, -0.4177, -0.0398, +0.0474, +0.1261, -0.9087, +0.2088, -0.1833, +0.1988, +0.1392, +0.1395, -0.3327, -0.0104, -0.5138, -0.4047, +0.2141, +0.0562, +0.2056, -0.1188, -0.4816, +0.0748, -0.1737, +0.0809, -0.1172, +0.0983, -0.1340, +0.1266, -0.2784, +0.0213, -0.1166, -0.1721, +0.0272, +0.1096, +0.1409, -1.3017, +0.3725, +0.2029, +0.1298], -[ -0.1076, +0.1970, +0.0385, -0.2965, +0.1336, +0.3118, -0.0495, -0.0463, +0.0523, +0.2472, +0.1369, -0.6921, -0.0219, +0.0764, +0.3334, -0.2328, -0.4946, -0.2191, -0.3322, -0.5613, -0.0853, +0.4960, -0.3873, +0.2762, +0.2128, +0.0532, -0.0052, -0.0236, +0.5384, +0.0502, -0.4258, +0.0327, +0.1507, -0.1364, +0.3664, +0.1606, +0.1238, -0.1096, -0.1267, -0.1601, -0.5230, +0.0040, -0.1256, +0.1701, -0.0932, -0.1528, -1.0906, -0.5199, -0.5099, +0.0473, -0.0956, -0.2264, -1.2143, -0.2649, +0.5164, +0.0399, +0.0207, -0.3494, +0.2941, +0.1022, -0.1820, +0.0752, +0.2997, -0.0778, -0.1651, +0.0389, +0.1885, -0.8787, +0.0549, -0.1889, -0.0545, +0.1444, -0.1439, -0.0132, -0.3534, -0.2308, -0.0505, -0.1162, +0.2174, +0.0972, -0.1510, +0.0560, -0.1804, -0.1875, +0.3296, +0.4129, +0.2343, +0.1741, -0.4337, -0.2084, -0.0032, +0.0055, -0.4097, +0.5726, -0.6164, +0.0249, -0.5291, +0.0450, -0.7172, -0.0447, -0.1639, +0.2194, +0.0014, +0.0132, -0.1845, -0.0922, -0.5115, -0.4242, +0.0358, -0.2849, -0.3398, +0.1131, +0.3062, +0.2397, +0.1139, +0.2329, -0.4656, -0.2092, -0.1645, +0.0161, -0.1480, +0.3507, -0.3801, +0.2743, -0.0159, -0.3754, -0.3563, -0.0094], -[ +0.2875, +0.2765, -0.1287, +0.0560, +0.0246, -0.2242, -0.1220, +0.3337, -0.1571, +0.2655, +0.2131, -0.2225, +0.4424, -0.1847, -0.1815, -0.1832, +0.0696, -0.4357, +0.3442, +0.3312, +0.2386, -0.1044, +0.1505, -0.6845, +0.1250, +0.5156, +0.0663, -0.6905, +0.3805, -0.1107, -0.1529, -0.1487, +0.0493, -0.9554, -0.0095, +0.0939, -0.3840, +0.5094, +0.0290, -0.2036, +0.5089, -0.4455, -0.2081, +0.0676, +0.0386, +0.0931, +0.2255, +0.0616, -0.7881, +0.3586, -0.2540, +0.5038, -0.1318, -0.1482, -0.2311, -0.1233, -0.0131, -0.7379, +0.0628, +0.0382, +0.0407, +0.0908, +0.0931, -0.1010, -0.0458, -0.3309, +0.5584, -0.7280, -0.4295, +0.5820, -0.1139, -0.1463, -0.0045, -0.6049, -0.6000, -0.3392, -0.0337, +0.0310, -0.2140, -0.2493, +0.0519, -0.3223, -0.1008, -0.4418, +0.0752, -0.3079, -0.5557, -0.1781, +0.2709, +0.1490, -0.2725, +0.0639, +0.0276, +0.1120, -0.9050, -0.0860, +0.2067, -0.3611, +0.0798, -0.0247, -0.2482, -0.7998, -0.1562, +0.1261, +0.4380, -0.1332, -0.2895, -0.5469, +0.0557, +0.1946, -0.0793, +0.1276, +0.1475, -0.2134, -0.0218, -0.3200, -0.1057, +0.2447, -0.5003, +0.3688, -0.2116, +0.1278, +0.0236, +0.2391, -0.5040, +0.0270, +0.2200, -0.1973], -[ +0.0942, -0.3176, +0.0782, +0.1874, -0.2619, -0.0359, -0.8086, +0.1520, +0.1999, +0.4366, -0.5978, -0.0603, -0.3418, -0.8177, +0.5558, +0.3281, -0.5794, +0.3664, -0.2584, -0.3105, -0.6317, -0.7018, -0.4807, +0.5527, +0.3341, -0.4272, -1.0704, -1.0052, +0.2776, -0.0309, +0.1271, +0.1780, -0.2426, +0.1552, -0.2197, +0.0455, +0.0932, -1.5123, -0.4947, -0.2455, -0.0425, -0.1437, -0.4122, -0.0439, -0.1132, -0.0654, -0.6881, +0.2292, -0.3241, +0.3788, -0.2902, -0.6718, +0.3164, -0.0914, -0.7097, -0.0465, -0.4635, +0.6747, -0.0944, -0.7869, +0.4278, -0.1168, -0.6643, -0.1953, -0.3261, +0.0640, -0.3394, +0.0322, -0.0378, -0.0796, +0.6886, +0.4367, -0.0511, +0.2267, -0.1992, +0.0192, -0.3580, +0.3271, -0.1430, -0.5037, -0.0193, -0.1235, -0.0736, -0.0904, +0.5835, +0.2756, +0.0577, +0.1993, +0.1816, -0.1101, -0.6201, -0.6578, +0.0443, +0.1273, +0.1882, -0.2610, -0.0919, -0.6476, +0.3926, -0.1031, -0.2353, +0.2043, -0.3920, +0.4151, -0.0232, -0.3598, +0.1587, -0.4841, +0.4515, -0.1698, +0.0231, -0.0429, +0.0685, +0.2553, +0.1932, +0.0684, -0.5067, -0.2401, -0.0885, +0.1213, -0.0262, -0.1826, +0.1594, -0.0765, +0.2737, +0.0380, +0.2093, +0.2785], -[ -0.0026, +0.0684, +0.2842, -0.2642, -0.1100, -0.0648, -0.1304, -0.0806, -0.0051, -1.4984, -0.3893, +0.1660, +0.5217, -0.1720, -0.0202, -0.1608, +0.1370, +0.1021, -0.0757, +0.0168, +0.0453, -0.0727, +0.1369, +0.0942, -0.0770, -0.1722, +0.2590, +0.2428, -0.9083, -0.0370, +0.3048, +0.2126, -0.1623, +0.2514, -0.6736, -0.2845, -0.3294, -0.7101, +0.1434, +0.2283, -0.5717, +0.1970, +0.0047, -0.0409, -0.2460, +0.2023, -0.1303, +0.1674, -0.2771, +0.0435, +0.3207, +0.0067, +0.0831, +0.0463, +0.0127, +0.2776, +0.0619, +0.0424, +0.2553, -0.1037, -0.0386, +0.2673, -0.5729, -0.4173, +0.2766, +0.2063, +0.3164, +0.2244, -0.1922, -0.2117, -0.1064, -0.2170, +0.0011, -0.1017, +0.1504, +0.2611, -0.0605, +0.2362, +0.3870, -0.2815, +0.1921, -0.0275, -0.1208, +0.1780, -0.3254, +0.1644, +0.3921, +0.3130, +0.1196, -0.2892, -0.0153, +0.6441, +0.2004, -0.1881, +0.0170, +0.1644, +0.3076, +0.0827, -0.4298, -0.2437, +0.0248, +0.4239, +0.1206, +0.2534, +0.3453, -0.7247, -0.1261, +0.2597, +0.1372, -0.4566, +0.0499, -0.0831, -0.0305, +0.2304, +0.2194, -0.0049, -0.2803, -0.0383, +0.7639, +0.1869, -0.0468, -0.0844, +0.0079, -0.0100, -0.4543, +0.3601, -0.3602, +0.0538], -[ +0.0767, +0.0104, +0.4630, -0.5234, +0.1340, -0.6706, -0.6157, -0.3874, -0.1801, +0.0479, -0.1919, -0.1805, -0.1195, +0.1370, +0.1474, +0.3051, +0.0257, -0.0770, +0.2140, +0.2419, +0.2521, -0.3908, -0.1791, -0.1635, -0.2093, -0.0282, -0.1199, -0.2184, -0.5714, +0.3077, -0.2232, -0.4366, +0.4233, +0.0389, +0.0146, -0.2375, +0.2144, +0.1431, +0.2150, +0.2727, +0.0924, +0.1284, +0.0232, +0.0473, +0.2797, -0.1364, +0.1962, -0.2859, +0.0322, +0.2503, +0.2374, -0.5242, +0.0801, -0.0567, -0.1994, +0.0820, +0.2869, +0.0379, +0.3225, +0.1117, -0.4420, +0.1218, -0.3159, +0.0191, +0.0644, +0.0629, -0.1297, +0.0375, +0.2405, -0.6754, -1.3728, -0.3470, +0.4317, +0.2052, -0.1665, -0.0042, -0.2802, +0.1344, +0.0647, -0.6240, +0.0128, +0.2737, -0.3233, +0.3145, +0.1829, +0.2266, +0.1439, -0.2475, -0.0156, +0.3071, -0.3054, +0.0441, -0.0320, -0.1413, +0.3829, +0.0887, -0.2029, +0.3301, +0.2409, -0.2107, +0.0884, -0.1678, -0.7813, +0.2651, -0.1359, -0.0988, +0.3621, +0.2569, +0.2253, -0.1192, -0.0882, +0.0417, +0.3620, +0.2520, +0.1967, -0.2580, +0.2775, -0.0856, +0.4230, -0.2594, +0.1717, +0.1789, -0.1344, -0.2202, -0.2042, -0.2919, +0.0743, -0.2040], -[ +0.3393, +0.0316, -0.1054, +0.2944, -0.1041, +0.5634, +0.1573, +0.1301, -0.0855, -0.2406, -0.0075, -0.0804, -0.3119, +0.3608, -0.3199, -0.0320, -0.0950, +0.1446, +0.0252, -0.0853, +0.0038, -0.7494, -0.1157, -0.6526, -0.2173, -0.1606, +0.1747, -0.4400, +0.1640, -0.3982, +0.6583, -0.3955, -0.0354, -0.4890, -0.0404, -0.2342, +0.1446, -0.2916, -1.0307, -0.0407, +0.3046, -0.3136, -0.2287, +0.1535, -0.5447, -0.6074, -0.0492, -0.6949, -0.1783, +0.2171, -0.7065, +0.1458, +0.2375, -0.5171, +0.0938, +0.3074, -0.0408, -0.1089, -0.3521, -0.4622, -0.5358, +0.2998, -0.0861, +0.0394, -0.1656, -0.1416, -0.2677, -1.1958, +0.1310, -0.1077, -0.3039, +0.2267, -0.2105, +0.0688, -0.6953, -0.5333, -0.1300, -0.2125, -0.0613, -0.6060, +0.2311, +0.4141, +0.5809, +0.1692, +0.3939, +0.0644, -0.0119, +0.0334, +0.0410, -0.5407, +0.3146, -0.4876, -0.4959, +0.4325, +0.2086, +0.1985, +0.2057, -0.4902, +0.0433, +0.1094, +0.3341, +0.3148, +0.0684, -0.1620, -0.2518, -1.0349, +0.0172, +0.0998, -0.3324, -0.1275, -0.4787, -0.4087, -0.4672, -0.4458, +0.1964, +0.2775, +0.1269, +0.1461, +0.0257, -0.4272, +0.1005, -0.5097, +0.1803, +0.0371, -0.3015, -0.0212, +0.0468, -0.1736], -[ -0.2290, +0.1424, +0.1950, +0.2848, -0.6331, -0.3357, -0.2786, -0.3643, -0.7014, -0.0511, +0.1047, -0.2076, -0.1119, +0.2063, -0.8124, +0.1355, +0.1350, -0.0200, -1.0249, +0.1535, -0.2941, -1.1415, +0.0742, +0.1124, -0.2693, +0.0852, -0.0906, -0.4923, -0.1392, -0.6800, +0.0215, +0.2836, +0.6111, +0.3184, +0.3904, +0.1481, -0.5433, -0.3738, +0.3370, -0.5384, +0.0934, -0.6526, -0.7402, -0.0548, +0.2725, -0.0283, +0.1765, +0.1841, +0.1828, -0.8701, -0.1738, +0.4337, -1.2523, -0.0722, +0.0560, +0.0001, -0.2492, -0.3222, -0.4500, -1.2627, -0.3141, -1.0477, -0.2204, +0.0910, -0.4728, +0.1428, -0.1196, +0.2558, -0.5368, -0.1944, -0.0736, -0.4579, -0.0033, +0.1582, -0.0637, -0.0873, +0.7392, +0.0894, +0.3562, +0.2264, -0.3975, -0.6788, -0.6993, -0.0371, +0.2566, -0.3619, -0.6017, -0.5081, -0.5645, -0.0457, -0.8628, -0.8100, -0.4160, +0.4837, -0.3005, +0.0087, -1.2422, -0.0091, -1.2143, +0.0742, +0.0273, +0.4299, -0.0383, -0.1548, -0.8926, -0.0573, +0.0355, +0.1138, -0.2919, -0.0719, -0.1562, +0.5553, -0.3319, +0.0647, -0.1041, +0.0972, +0.0093, -0.4490, -0.1170, -0.2157, -0.1110, +0.0166, -0.1201, +0.0869, +0.1223, +0.0014, +0.1763, -0.0910], -[ +0.0659, +0.0446, +0.1167, +0.3472, +0.2167, +0.3700, +0.0019, +0.0738, -0.0373, -0.1517, +0.2175, +0.1918, +0.2277, -0.0675, -0.1497, -0.2206, -0.0985, +0.2598, +0.0125, +0.0495, +0.1670, -0.0137, -0.1254, -0.5212, +0.0510, +0.5169, -0.3640, +0.0891, +0.1888, -0.4820, -0.1262, -0.5573, +0.3020, -0.3506, -0.4068, -0.0545, -0.1262, -0.5716, -0.0428, -0.3777, +0.4822, +0.0373, +0.4531, +0.2068, +0.2728, +0.1832, +0.1821, +0.0537, -0.0733, +0.0817, -0.0494, +0.1495, -0.9271, +0.4701, -0.1542, -0.0936, +0.0568, -0.0927, +0.5631, -0.0229, +0.2095, +0.0605, -0.0924, -0.3588, +0.4392, +0.1384, +0.0935, +0.2672, -0.4977, +0.0098, +0.2645, +0.4141, -0.1560, -0.0189, +0.1985, -0.0158, +0.0479, -0.4073, -0.0213, +0.3246, -0.9457, +0.1725, +0.1307, -0.5105, -0.2244, -0.3289, +0.0100, +0.3015, -0.8640, -0.3335, +0.1098, +0.1530, +0.1181, +0.3525, -0.0349, -0.2075, -0.1103, -0.2163, +0.1512, +0.0352, +0.2135, +0.4537, +0.2319, +0.0749, -0.3811, -0.0773, +0.1116, -0.2331, +0.0005, +0.0460, +0.1719, -0.1660, +0.0912, -0.1446, +0.3971, +0.1807, -0.4435, +0.3281, -0.3419, +0.2359, -0.1933, -0.0680, -0.2549, -0.0855, +0.6371, -0.0500, -0.5392, -0.0066], -[ +0.2774, -0.3851, +0.2925, -0.4302, +0.3555, +0.2123, -0.2726, -0.1494, -0.3051, -0.1725, -0.8281, +0.0905, +0.0104, +0.1210, -0.0268, +0.0518, -1.1033, -0.0943, -0.0054, +0.1474, +0.3288, +0.1984, +0.0519, +0.1788, +0.0559, -0.2692, -0.1999, +0.0987, +0.1218, -0.1768, -0.1842, -0.1524, +0.0967, +0.1289, +0.3371, -0.3501, -0.4842, +0.3416, -0.2830, -0.5143, -0.3135, -0.0599, -0.3374, -0.0643, +0.0229, -0.1158, -0.4855, +0.0346, -0.4184, +0.1481, -0.0825, -0.3120, -0.1220, -0.8948, -0.1206, +0.3655, -0.0126, +0.3612, +0.1007, +0.1553, +0.0160, +0.4415, +0.5894, -0.2783, -0.6620, -0.0993, -0.1153, -0.0590, -0.6856, +0.3256, -0.6501, -0.3956, -0.2682, +0.0967, -0.3393, -0.3264, -0.3752, -0.1376, -0.0437, -0.4503, -0.0892, -0.5660, +0.0448, -0.0656, -0.2279, -0.0788, +0.1220, -0.2755, +0.1405, -0.3384, +0.1118, -0.0380, -0.5047, +0.4385, +0.3089, +0.0225, -0.3668, +0.2005, -0.1201, -0.2550, +0.2677, +0.0742, +0.4719, +0.2549, -0.3355, -0.1428, -0.1357, +0.0285, +0.0517, -0.2228, -0.2484, +0.1173, +0.1018, +0.0307, +0.1560, -0.1435, +0.2519, -0.5856, +0.2648, +0.2776, -0.4183, +0.2771, +0.0130, +0.2044, +0.2797, -0.0871, -0.5211, +0.3291], -[ +0.1679, +0.1953, +0.1630, -0.8425, +0.2904, -0.2316, +0.1852, +0.3243, +0.2302, -0.4531, -0.3004, -0.1507, +0.1907, +0.2446, +0.1565, +0.4729, +0.0173, +0.0479, +0.0918, -0.0115, +0.0846, +0.4104, -0.2917, +0.2834, +0.1621, +0.0528, +0.2366, -0.0004, -0.1268, -0.4479, +0.4112, -0.0233, +0.1475, -0.1988, +0.5486, +0.1274, -0.0990, +0.0216, -0.0882, -0.8675, -0.3008, -0.0922, +0.3095, +0.1520, -0.5190, -0.2053, -0.5167, -0.2096, -0.3173, -0.4833, -0.1223, -0.7360, -0.4619, -0.5769, +0.0810, +0.4405, +0.3556, -0.1174, +0.0333, +0.2570, +0.2653, +0.0029, -0.0189, -0.4332, +0.0660, +0.2832, +0.1597, +0.1671, +0.2244, -0.3411, +0.6281, -0.1786, +0.1733, -0.0735, +0.2624, -0.0892, -0.6741, +0.1451, -0.2747, -0.3415, +0.1697, +0.0341, -0.0112, +0.1781, +0.1140, +0.4014, -0.1658, -0.0824, -0.7813, +0.2690, +0.6256, -0.7891, +0.2156, +0.1494, +0.1251, +0.0928, -0.1472, +0.3315, -0.3588, +0.4854, +0.0949, +0.3748, +0.1307, -0.2944, -0.0921, -0.0722, +0.0156, +0.0145, +0.4645, +0.3239, +0.1154, +0.2303, +0.2482, +0.2567, -1.0459, +0.0861, -0.4557, +0.0200, +0.0612, +0.3050, +0.3237, +0.3199, -0.0617, -0.0830, -0.1584, -0.0405, -0.3839, -0.2683], -[ +0.2275, -0.0236, +0.6495, +0.2068, +0.5027, -0.2469, -0.5551, -0.0060, -0.1139, +0.2846, -0.0823, -0.2717, +0.4018, -0.2093, +0.3089, -0.6584, -0.1836, +0.0409, -0.0791, -0.4422, -0.0095, -0.1107, +0.2154, -0.2634, -0.4956, +0.3729, -0.0615, -1.1951, +0.0008, -0.6756, +0.4922, -0.1987, +0.1704, +0.3193, -0.0125, +0.1193, +0.2481, -0.3286, +0.1681, -0.2777, -0.0907, +0.1529, +0.1538, +0.4253, +0.2720, -0.3078, -0.3051, +0.4401, +0.0326, +0.2260, +0.2480, -0.2575, -0.1340, +0.3523, -0.1406, -0.8494, -1.1845, +0.4517, +0.1932, -0.6862, +0.0128, +0.1959, +0.2342, -0.4088, -0.5066, +0.2333, -0.1344, -0.5925, -1.1131, -0.1554, -0.1773, -0.6556, +0.2919, +0.2687, -0.3581, -0.1767, +0.1587, +0.3119, -0.2826, +0.1143, +0.4240, -0.0142, +0.0640, +0.0872, -0.1210, +0.0013, -0.3586, +0.1838, -0.8877, -0.5724, +0.0506, +0.0407, -0.3645, -0.1357, +0.3908, +0.0728, -0.2562, -0.2301, +0.0488, -0.4918, -0.0561, -0.2045, +0.0440, +0.1299, -0.1185, -0.4065, -0.1987, -0.2807, +0.4275, +0.0118, -0.3176, +0.1659, +0.0299, -0.0797, -0.0160, +0.2384, -0.0747, -0.1752, +0.0652, -0.7328, -0.0452, -0.1689, -0.0288, +0.0868, -0.2424, +0.0358, -0.5808, -0.1758], -[ -0.3599, +0.0837, -0.3475, -0.0722, -0.2527, +0.5304, +0.1479, -0.0364, -0.1683, -0.1333, +0.5043, -0.3918, +0.0785, +0.0984, +0.4679, -0.2615, -0.0505, +0.2004, -0.1633, +0.1469, +0.0323, +0.0980, -0.1655, -0.1049, -0.4109, +0.2072, +0.6322, +0.0588, -0.5962, -0.1071, -0.3903, +0.4817, +0.1554, -0.3400, -0.2091, -0.0096, -0.7310, -0.0288, +0.3520, -0.8965, +0.0195, -0.2337, +0.0068, -0.1255, +0.1868, +0.0807, -0.0889, -0.5413, -0.6419, -0.1136, +0.3317, -0.2042, -0.2674, -1.2506, +0.4852, -0.3047, -0.4858, +0.3589, -0.0986, -0.0140, -0.0293, +0.6044, +0.6729, -0.4168, -0.5132, +0.0642, -0.2561, +0.2553, +0.4412, +0.2400, +0.6246, +0.4165, +0.1369, +0.2200, -0.3455, +0.0766, -0.3242, +0.6125, +0.2423, +0.0167, -0.6385, +0.2705, -0.0312, -0.1946, -0.2965, -0.5712, +0.7626, +0.0748, +0.0623, +0.1883, -0.0868, +0.2748, +0.0130, -0.4169, -0.3315, -0.2611, -0.3328, +0.0094, -0.8666, -0.2036, -0.2638, +0.0340, -0.1304, -0.5457, +0.0957, +0.3289, -0.5815, +0.0501, +0.0516, +0.0373, -0.0922, -0.4630, -0.5923, -1.5443, -0.6288, +0.4084, +0.0347, -0.0229, +0.4854, -0.2317, +0.0503, -0.4509, -0.3744, -0.2370, -0.6318, -0.0411, +0.5018, +0.3876], -[ -0.0515, +0.2618, +0.1047, -0.2554, -0.2797, +0.3505, +0.0067, +0.0417, +0.0882, -0.2875, +0.4624, +0.4282, +0.4078, +0.5221, +0.2636, -0.2935, -0.0489, +0.4552, -0.2120, -0.2917, -0.1782, +0.6474, -0.1516, -1.0247, -0.5003, +0.1370, -0.5038, -0.0899, -0.1449, +0.0967, +0.1670, -0.1992, -0.1785, +0.0562, -0.3025, +0.1917, +0.0557, +0.1232, +0.1536, +0.1546, +0.0608, -0.0551, -0.4995, -0.7711, -0.1662, -0.1692, +0.4517, +0.0678, -1.2738, -0.0858, -0.1213, -0.4174, +0.0324, -0.1181, -0.2682, -0.8992, +0.4244, -0.1552, -0.0182, -0.3925, +0.3282, -0.1313, -0.1472, +0.4643, -0.2229, -0.1617, -0.2509, +0.2399, -0.1265, +0.0779, -0.3722, +0.4976, -0.3030, -0.1736, -0.0081, +0.0174, +0.0526, -0.2834, +0.0766, -0.1292, +0.2242, -0.0187, -0.3360, -0.0630, -0.5198, +0.0102, +0.1688, -0.3095, -0.3098, -0.8925, +0.1241, +0.3191, -0.3910, -0.1997, -0.2829, +0.0891, -0.4235, +0.5418, -1.1323, +0.3691, -0.3124, +0.4708, -0.3094, -1.3484, -0.2730, +0.4537, -0.4299, -0.3863, -0.5548, +0.1052, +0.0386, +0.2593, -1.0164, -0.5865, -0.2661, +0.1480, -0.2725, -0.4719, +0.3217, -0.1838, -0.0191, -0.1656, +0.0026, -0.0751, +0.2636, -0.0021, +0.2747, -0.5906], -[ -0.6888, -0.2579, +0.5939, +0.5971, -0.1808, +0.1719, -0.2212, -0.2605, -0.0082, +0.0269, +0.1695, -0.0182, +0.4460, -0.3525, +0.0140, -0.1692, -1.1810, +0.0161, +0.4046, -0.1568, -0.2114, -0.0859, +0.3573, +0.1668, +0.0207, -0.2015, -0.1716, -0.0434, +0.2837, -0.5308, -0.0583, +0.1542, +0.3123, -0.2772, +0.5059, +0.1542, +0.2646, -0.1324, -0.0192, +0.4629, +0.0106, -0.1995, +0.3590, -0.2583, -0.0050, +0.0731, -0.9258, -0.5994, +0.3874, -0.1936, +0.1572, -0.3687, -0.2621, -0.0711, -0.1430, -0.5282, -0.1096, -0.2212, +0.1960, -0.5188, +0.3216, +0.2970, +0.1330, -0.0121, +0.0501, -0.1731, -0.1958, +0.2938, -0.0185, -0.2372, -0.6023, -0.7895, +0.1408, -0.5204, +0.0181, -0.0252, -0.0947, +0.0390, -0.0392, -0.0394, +0.1991, -0.0937, -0.2850, -0.0854, +0.4130, -0.9978, -0.1474, +0.0097, -1.0032, +0.2849, +0.1921, +0.4295, +0.3495, -0.0956, -0.8938, -0.0763, -0.1054, -0.3955, -0.0541, +0.3051, +0.2011, -0.2676, -0.4588, -0.4825, -0.2598, -0.6820, -0.0177, +0.4407, -0.1263, -0.3668, +0.0477, -0.2930, -0.1207, +0.4025, -0.2876, +0.2420, +0.2481, -0.2044, +0.2642, +0.3858, +0.0244, -0.0341, -0.0142, +0.1122, -0.2080, +0.2471, -0.2011, -0.4689], -[ -0.3354, -0.2694, -0.1971, +0.2893, -0.7543, -0.0082, +0.3357, -0.0244, -0.0494, +0.1507, +0.2621, -0.2327, -0.2098, +0.1683, +0.3834, -0.1510, +0.3189, -0.4083, +0.4036, -0.6597, +0.0218, -0.3689, -0.3312, +0.0883, +0.0095, -0.3369, +0.2938, +0.1975, +0.3764, +0.1981, +0.1411, -0.5294, +0.0178, +0.4160, +0.0937, -0.3468, +0.1098, +0.1876, +0.5544, +0.3887, -0.1151, -0.3244, +0.0592, +0.2092, -0.2496, -0.2101, +0.3636, +0.0574, -1.1896, -0.5740, +0.1220, -0.1270, +0.0276, +0.4549, -0.3852, -0.2106, +0.1238, -0.3312, +0.1424, -0.1363, +0.2223, +0.3307, -0.0790, -0.1725, +0.2165, -0.3309, +0.2295, -0.1466, -0.0746, -0.1929, +0.0165, +0.2103, +0.2218, +0.2321, -1.1515, -0.0150, +0.1523, -0.0829, -0.2135, -0.1099, -0.0251, -0.1018, +0.1083, +0.3556, -0.2944, -0.5561, -0.4330, -0.0085, +0.0018, +0.2162, +0.0497, +0.3295, -0.2306, -0.0321, +0.0298, -0.0482, +0.0821, +0.1839, -0.3560, -0.0064, +0.0022, -0.2612, +0.1991, -0.0937, -0.1374, -0.4067, -0.1826, -0.1157, +0.4061, -0.1446, -0.4739, -0.1793, -0.4969, -0.6333, +0.2918, +0.1842, +0.1556, +0.3937, -0.1559, -0.2464, +0.1121, -0.5640, +0.0297, +0.0350, -0.0668, -0.1831, -0.3164, -0.2184], -[ +0.0890, +0.4450, -0.5021, -0.0797, +0.2791, +0.1053, +0.0592, +0.1392, +0.2249, +0.0369, +0.0393, +0.0697, +0.0686, +0.1446, -0.3753, +0.0964, +0.0045, -0.1520, -0.6167, -0.9521, -0.0035, -0.1548, -0.3288, -0.7031, +0.2586, -0.4489, -0.4764, -0.0909, +0.4255, -0.5146, -0.2326, -0.2140, +0.0595, -0.3841, +0.6585, -0.4180, +0.3041, -0.0698, +0.1949, +0.2565, -0.5713, -0.4068, +0.2505, -0.6381, -0.2507, -0.0200, +0.2390, +0.0907, +0.0239, -0.8837, -0.0490, -0.5687, -0.1577, -0.2625, +0.1204, -0.4906, +0.3193, -0.1413, -0.1733, -0.3117, -0.2240, -0.1170, -0.4770, -0.1442, -0.1159, -0.1323, +0.0238, -0.5390, -0.1011, -0.1661, -0.4400, +0.2811, -0.0746, +0.1576, -0.3409, +0.1746, -0.2123, -0.7926, -0.8751, -0.3124, -0.0344, +0.3095, +0.1809, +0.3258, -0.0148, -0.5674, +0.2424, +0.3514, -0.1912, +0.1156, -0.1093, -0.1970, +0.1374, -0.1764, +0.2248, -0.2595, +0.0392, +0.1032, +0.2952, +0.2127, +0.0510, +0.0349, -0.1317, -0.7710, +0.0556, -0.2459, +0.2854, -0.2792, -0.1816, +0.3425, +0.0514, -0.1801, +0.4678, +0.0001, -0.3287, +0.0354, -0.0903, +0.2766, -0.3480, +0.3360, +0.3052, +0.1559, -0.0217, +0.1105, +0.0746, -0.1448, +0.2801, -0.3013], -[ +0.2142, +0.3760, +0.1383, +0.2224, +0.4262, -1.0924, -0.8203, +0.1965, +0.1632, +0.2133, -0.3856, +0.4697, -0.2927, +0.4027, -0.1508, +0.1100, +0.0764, +0.0085, +0.0237, -0.2056, +0.1744, -0.4986, +0.0728, -0.5608, +0.0215, -0.2749, -0.0419, +0.3269, -0.3167, +0.2587, +0.0642, -1.0945, -0.0688, -0.4372, -0.2916, -0.4688, -0.1397, -0.2360, +0.1009, +0.0469, +0.3381, +0.2994, +0.0890, -0.2362, +0.0607, +0.1504, -0.1129, -0.6265, -0.1128, -0.0422, +0.3548, -0.3287, +0.6642, -0.6751, +0.0445, +0.2664, +0.0919, -0.4523, -0.1805, -0.4206, +0.2830, +0.3478, -0.8783, -0.3220, +0.1642, -0.1915, +0.3578, -0.2238, +0.0459, -0.0223, +0.3302, +0.2790, +0.0001, +0.0996, -0.5191, -0.0243, -0.0480, -0.3611, +0.0012, -0.3057, +0.1870, +0.3151, -0.0196, -0.2761, +0.0085, -0.0825, +0.4146, -0.3117, -0.1552, -0.5094, -0.0542, +0.2199, -1.1066, -0.3500, -0.1028, -0.4475, +0.0292, +0.7277, -0.1613, +0.1616, -0.6174, -0.8778, -0.2833, -0.3420, -0.2768, -0.2182, +0.5926, -0.5068, -0.4070, -0.2384, -0.2286, -0.1401, +0.0893, -0.0272, +0.3289, +0.1330, +0.1262, -0.8364, +0.0745, -0.2557, -0.1556, +0.3687, -0.1728, -0.0936, -0.1809, -0.5746, +0.0002, -0.8925], -[ +0.2682, +0.2237, -0.6121, +0.4718, +0.0216, -0.0770, +0.1789, +0.0197, +0.1352, +0.2753, +0.1287, +0.2942, -0.0525, -0.3266, -0.0502, -0.1022, -0.0269, +0.0468, -0.2862, -0.0886, -0.0548, -0.3303, +0.1643, +0.1219, -0.1030, +0.1324, -0.8032, -0.2490, -0.2029, -0.2891, -0.3894, -0.3541, -0.0012, -0.0790, -0.3248, -0.2549, +0.1913, -0.5759, +0.1935, +0.0318, +0.3186, -0.3833, +0.1526, -0.1453, +0.1437, +0.4952, -0.4527, -0.1339, +0.1382, -0.6537, +0.0519, -0.4209, -0.0311, -0.7892, +0.1514, +0.0452, -0.4076, -0.3221, +0.0809, -0.3028, +0.3244, -0.0084, -0.0328, -0.0687, -0.2327, +0.1317, +0.0135, -0.1049, +0.2264, +0.3188, +0.1593, -0.0793, +0.0712, -0.2306, -0.3732, -0.1689, -0.1757, -0.2781, -0.8981, +0.2057, -0.0367, +0.3696, +0.3276, -0.3436, -0.4057, +0.1210, +0.1631, +0.2124, -0.1502, -0.0428, -0.6840, +0.0903, +0.1913, -0.1329, -0.0170, -0.3013, -0.4049, +0.0056, -0.1509, -0.0331, -0.1850, -0.3749, +0.2070, +0.0915, +0.0372, +0.2401, +0.2512, +0.1539, -0.2643, -0.2513, -0.4207, -0.0255, +0.0740, +0.0551, -0.0177, +0.0247, +0.1887, -0.1104, +0.0661, -0.2336, +0.2092, +0.1776, +0.1383, -0.2226, -0.8445, -0.2172, -0.2290, +0.1102], -[ +0.2710, -0.7995, -0.2940, -0.1107, +0.3404, -0.1203, -0.9809, -0.1161, +0.3972, +0.3972, -0.2287, +0.2603, +0.2921, -0.0943, +0.2282, +0.2506, +0.0318, +0.7178, -0.0244, +0.0692, +0.2390, +0.1687, -0.5791, +0.1096, -0.0173, +0.3933, +0.1489, -0.3474, +0.0378, -0.1174, +0.4688, -0.3411, +0.0007, +0.4365, -0.1216, -0.7401, -0.0568, -0.6721, +0.2386, -0.1155, +0.2725, -0.3168, -0.0155, -0.1250, -0.0278, -0.5558, +0.0921, -0.0232, +0.0465, -0.1056, +0.1633, +0.2119, +0.3645, +0.3393, -0.0360, -0.2852, -0.0084, +0.0840, +0.3738, -0.3054, -0.0261, -0.3406, -0.0201, +0.2080, -0.1986, +0.3129, +0.1508, +0.3499, +0.2359, +0.1845, -0.1636, -0.1793, +0.1810, -0.0508, +0.0167, +0.1797, -0.2363, -0.1046, -0.4714, +0.0058, -0.2950, +0.2434, -0.8083, -0.4446, -0.3268, +0.0523, -0.2266, +0.0258, +0.1601, -0.6025, -0.4276, +0.0666, +0.1145, +0.1719, +0.2730, -0.2885, -0.0200, +0.4998, +0.1787, +0.0469, +0.1706, +0.1489, -0.5282, +0.1159, +0.1775, +0.0402, -0.1457, -0.0097, +0.1360, -0.1565, +0.1857, +0.1041, -0.2133, +0.2877, +0.0092, +0.1470, +0.2108, +0.3209, +0.4015, -0.3144, +0.3693, -0.2465, -0.3566, +0.0097, +0.3645, +0.1283, +0.1525, +0.1349], -[ +0.0585, -0.0767, -0.3688, -0.0847, +0.1404, +0.0186, -0.0301, -0.3110, -0.0448, +0.2563, -0.0440, +0.3075, -0.1369, +0.3086, -0.4131, -0.3901, -0.9681, -0.2902, -0.8040, +0.1479, +0.0882, -0.2248, -0.1555, -0.1561, +0.2208, +0.1301, -0.0542, +0.0614, +0.0083, +0.1215, -0.1115, +0.0836, +0.3148, +0.0227, +0.2075, -0.2061, -0.3575, -0.2594, -0.0818, +0.2760, +0.0379, +0.2085, -0.3925, -0.0381, +0.1287, -0.0946, +0.3906, -0.0617, +0.3426, +0.1490, +0.0933, +0.2666, +0.0796, -0.3985, -0.0101, -0.3313, +0.0944, -0.1102, +0.0811, +0.0594, -0.0292, +0.2010, +0.1872, -0.1269, -0.0182, -0.1388, +0.3440, -0.1586, +0.0124, -0.2103, -0.2498, +0.1928, -0.1150, -0.1612, +0.1635, +0.0827, +0.1055, -0.1561, -0.1438, -0.0452, -0.6951, +0.2069, +0.0448, -0.3403, +0.3536, +0.0321, -0.1679, +0.1902, -0.2480, +0.0818, +0.5673, -0.0074, -0.3262, -0.1198, -0.3789, -0.3985, -0.1784, +0.1242, -0.9379, +0.1786, +0.2195, +0.0507, -0.1979, -0.0471, +0.0261, -0.1973, +0.1029, -0.4268, +0.1377, +0.3484, -0.2199, -0.4396, -0.0090, +0.0378, -0.0334, -0.1142, -0.0447, -0.3621, -0.3613, -0.0046, -0.1003, -0.6294, +0.0598, +0.3259, -0.1626, +0.1861, +0.0505, +0.1014], -[ -0.2866, -0.2606, +0.1173, -0.8392, -0.0785, -0.1727, -0.0226, +0.3107, -0.0020, +0.1363, -0.0775, -0.0888, -0.3130, +0.4256, +0.0444, +0.1249, +0.1218, +0.0564, -0.1676, +0.0331, -0.2031, +0.0205, -0.6970, -0.3266, +0.0835, +0.2878, -0.0486, -0.1569, +0.0536, -0.4557, -0.2307, -0.1564, -0.2669, -0.0042, -0.1586, +0.1530, -0.1375, +0.0399, -1.6051, -0.4735, +0.0773, -1.1190, -0.0332, -0.0293, +0.0176, +0.0964, +0.0123, -0.0235, +0.2579, -0.0183, -0.4983, -0.8809, -0.0555, -1.3118, -0.3538, +0.2474, +0.0370, -0.3568, -0.3178, -0.2981, -0.6389, -0.3341, -0.6984, +0.5657, +0.7190, +0.0383, -0.4416, -0.0361, +0.0973, -0.0527, -0.1265, +0.4091, -0.1873, +0.3471, -0.4916, +0.3864, -0.6179, -0.4855, -0.0247, +0.0781, +0.3479, +0.4363, +0.0632, -0.0423, -0.0085, +0.4048, -0.4571, -0.0624, -0.3213, -0.0583, -0.1290, +0.0100, -0.0178, -0.6568, +0.2643, +0.0363, -0.7065, +0.2217, -0.9550, -0.2472, +0.1473, +0.1170, -0.1006, +0.3081, -0.1081, -0.4759, +0.0032, -0.2353, -0.9148, +0.4077, +0.0650, -0.3472, +0.2200, +0.1616, -0.8060, +0.5527, -0.6979, +0.4792, +0.3011, -0.4298, +0.0934, -0.0346, -0.1149, -0.2751, +0.0967, -0.4918, -0.0214, -0.0717], -[ -0.2412, -0.1803, -0.0792, +0.1262, -0.1893, +0.1267, -0.0953, +0.0258, +0.0212, -0.3797, -0.5472, +0.0626, -0.1531, -0.3547, +0.0497, -0.2314, -0.4088, -0.2324, -0.2081, -0.0144, -0.0028, -0.2369, -0.4685, -0.2863, +0.2765, -0.4198, -0.1118, -0.2681, -0.0334, -0.7103, -0.1214, +0.0468, -0.3029, +0.0851, +0.5068, -0.5551, -0.7620, -0.3682, -0.5485, -0.1874, -0.3074, -0.5750, -0.1258, +0.1331, -0.1018, -0.2115, -0.4281, -1.4822, +0.2177, +0.4035, -0.4401, +0.0870, -0.4536, +0.0412, +0.0525, +0.1385, +0.1043, +0.6298, +0.0594, +0.0524, +0.2410, +0.4237, -0.2853, +0.0327, +0.0135, -0.6600, +0.5043, -0.7941, +0.2617, +0.3424, +0.1040, +0.5344, -0.0050, +0.6748, -0.2949, +0.0677, -0.4107, -0.2565, +0.0072, -0.0791, +0.0339, -0.2598, -0.1004, +0.1367, +0.4216, -0.1518, -0.5985, -0.0861, -0.2564, +0.0697, -0.4035, +0.0762, -0.3520, +0.2125, -0.0096, -0.4315, -0.4249, -0.1782, +0.2737, -0.1284, +0.2371, +0.3101, +0.3069, -0.0282, -0.8061, -0.2097, +0.2528, +0.6380, +0.4981, -0.2026, +0.4312, -0.4501, -0.3150, -0.2229, -0.0896, +0.3207, -0.1343, -0.0445, +0.2381, -0.3362, -0.0282, -0.0132, -0.0846, +0.3954, -0.0743, -0.1889, -0.2469, -1.0424], -[ -0.2860, -0.2807, -0.4563, -0.3335, -0.0833, -0.2547, -0.2003, -0.2217, -0.2000, -0.1498, -0.3513, +0.0966, -0.3542, -0.5267, -0.0707, -0.5954, +0.4780, -0.1412, -0.3763, -0.8657, +0.0641, -0.1084, -1.4726, -0.3124, -0.0150, +0.3007, +0.0120, +0.0273, -0.2014, -0.3440, -0.6579, -0.6835, +0.2030, -0.4661, +0.3871, +0.2163, -0.3795, -0.3167, -0.1804, +0.2366, +0.2752, +0.3065, -0.2447, +0.1270, -0.4639, -0.5725, +0.4267, +0.0914, +0.4488, -1.0325, +0.2042, -0.1772, -0.2511, +0.0922, +0.3480, -0.8822, +0.3735, +0.2626, +0.2565, -0.1387, -0.1281, +0.1019, +0.0731, +0.4329, -0.3030, -0.4490, +0.2691, +0.1242, -0.2807, +0.3260, +0.0113, -0.7391, -0.1548, -0.8584, -0.8442, -0.6082, -0.5225, -0.2200, -0.0810, +0.1276, -0.5221, -0.4217, -0.0140, +0.2435, -0.0072, +0.0281, +0.2885, +0.1627, -0.0990, +0.2474, -0.2284, -0.1588, -0.0234, -0.1851, -0.7151, -0.0885, -0.1903, -0.1587, -0.8751, -0.0085, +0.1542, -0.1166, -0.5032, +0.0015, +0.1591, -0.3296, -0.3709, +0.1409, -0.2714, +0.1417, -0.1888, +0.0589, +0.0225, -0.5087, -0.6122, -0.1862, -0.1584, -0.0376, +0.2894, +0.0300, -0.0026, -0.3632, -0.0157, -0.5479, -0.0505, -0.2318, -0.3418, -0.1727], -[ -0.1246, +0.3264, +0.5065, -0.5774, -0.3371, -0.1948, -0.0470, +0.4721, -0.0656, +0.0171, +0.1179, -0.3372, -0.5350, +0.1452, +0.3337, +0.1143, -0.3704, +0.6612, -0.3207, +0.0662, -0.0131, -0.0416, -0.0319, +0.0677, +0.2057, -0.3903, -0.0481, -0.6433, -0.2465, +0.0189, -0.1382, -0.1230, -0.1464, -0.0334, -0.2970, -0.3633, -0.2021, -0.0286, -0.1225, +0.4243, +0.0011, +0.1147, -0.6120, +0.1949, -0.0596, -0.1297, -0.3491, +0.0748, +0.0079, -0.0579, +0.0823, +0.0392, +0.3031, +0.6599, +0.2920, +0.0543, -0.0148, -0.3455, -0.2812, -0.3695, +0.0150, +0.2949, -0.1687, +0.1761, +0.1533, -0.1780, +0.2959, -0.3843, -1.4171, +0.0082, +0.0498, -0.1707, +0.1867, +0.1351, +0.2962, +0.4032, -0.0169, -0.6387, -0.3541, -0.2673, +0.1788, -0.3955, +0.1162, -0.2579, +0.1932, +0.1118, -0.0392, -0.3623, -0.1494, -0.3627, +0.1728, +0.2878, -0.2412, +0.4266, +0.3906, +0.1902, +0.0673, -0.1583, -0.1220, +0.1873, +0.1272, +0.4818, +0.5219, -0.1527, -0.8150, +0.8290, +0.1435, -0.6494, -0.2103, -0.1016, +0.3639, -0.0807, -0.0595, -0.1775, +0.0183, +0.0494, +0.1636, -0.3500, +0.0758, -0.2761, +0.1866, -0.0746, +0.0569, +0.2208, +0.0181, +0.1918, +0.1595, -0.4762], -[ -0.9876, +0.1530, +0.1673, -0.3318, -0.6264, +0.1226, +0.3171, +0.3483, -0.0190, -0.5303, -0.6885, +0.2561, +0.0553, +0.0853, -0.3004, +0.0959, -0.1949, +0.3622, -0.4919, +0.2821, +0.1966, -0.1310, -0.4961, -0.0143, -0.8275, +0.1091, -0.2867, +0.6673, +0.0892, -0.9631, +0.4464, +0.0544, -0.3250, -0.3487, -0.1854, -0.1663, +0.1845, -0.3387, +0.1988, +0.4152, +0.2844, +0.3808, -0.4458, -0.0347, -0.0531, -0.0602, -0.4551, -1.1630, +0.5915, +0.3335, -0.9629, -0.1180, +0.3819, -0.9037, +0.0470, +0.4584, -0.9144, +0.4021, -0.3411, -0.7281, -0.1533, +0.2595, +0.1452, +0.3364, +0.6526, -0.5554, +0.2326, -0.3489, +0.5989, +0.1325, -0.2167, +0.0133, -0.0321, +0.1179, +0.0987, +0.3754, +0.0944, +0.1671, -0.6301, -0.0950, -0.1218, +0.2513, +0.3859, +0.2181, -0.1232, +0.1303, +0.0568, +0.3559, +0.0983, +0.3759, -0.2344, -0.2657, -0.4385, +0.1601, +0.1332, -0.4926, -0.6097, +0.2873, +0.1926, +0.3470, -0.2559, -0.2025, +0.1244, +0.2183, -0.5414, +0.1502, +0.0447, -0.2899, +0.3423, -0.0288, +0.2761, +0.2350, -0.0420, -0.9897, -0.0704, +0.4540, +0.0109, -0.0152, -0.1356, -0.0906, -0.5738, -0.3240, +0.0418, -0.1943, -0.3332, -0.2335, -0.1181, -0.6688], -[ +0.1222, -0.4886, -0.2233, -0.4731, -0.0442, -0.7836, -0.5771, +0.3496, -0.0879, -0.4763, -0.0848, -0.0505, +0.0702, -0.0316, +0.0164, -0.2464, +0.4235, -0.3096, +0.2156, +0.1008, +0.1372, +0.1949, +0.3013, -0.1711, +0.1311, +0.0134, +0.6802, -0.0141, -0.6859, -0.5727, +0.1052, +0.1916, -0.2105, -0.3173, +0.3134, +0.2725, -0.2357, -1.3769, -0.0235, -0.6394, +0.0321, -0.1033, -0.0794, +0.0751, -0.0251, -0.1296, -0.1009, -0.0638, -0.3579, +0.2626, -0.0918, +0.2094, -0.4275, -0.1861, +0.2834, +0.3612, +0.1867, -0.2717, +0.0044, -0.4614, +0.4379, +0.4164, -0.0792, +0.4572, -0.0618, -0.2057, +0.1305, +0.1770, -0.4869, -0.1578, +0.1305, -0.1029, -0.0864, -0.2489, +0.0313, +0.0916, +0.3224, +0.3220, -0.0683, -0.1373, +0.2311, +0.3731, -0.0416, -0.0773, +0.0974, +0.1697, -0.3653, +0.1465, -0.6025, -0.1473, +0.0404, -0.2822, -0.2779, -0.5452, -1.1496, -0.3806, -0.3210, +0.2356, -0.2050, -0.1035, -0.2855, -0.6902, -0.4224, +0.1681, -0.4528, -0.4576, -1.0475, +0.0778, -0.0506, -0.0416, +0.0595, +0.3348, -0.3470, +0.2186, -0.0685, +0.1049, +0.4093, +0.0475, -0.3086, +0.2869, +0.1229, -0.2465, +0.1755, +0.0717, -0.1589, +0.0404, -1.0416, +0.0523], -[ +0.5587, -0.3224, +0.3689, +0.5219, -0.0468, -0.5900, +0.0548, +0.0726, +0.3591, +0.0373, -0.0847, +0.3811, -0.7455, -0.7896, -0.0064, +0.1391, -0.2615, +0.2374, +0.4162, -0.4824, +0.2578, -0.2606, -0.0429, -0.1064, +0.3555, -0.5910, -0.3086, -0.0308, +0.0847, +0.2158, +0.0183, -1.1467, -0.6116, -0.3769, +0.0528, -0.0063, +0.0168, -0.6665, -0.2086, -0.6726, -0.1041, -0.1453, +0.1165, -0.3090, -0.3698, +0.1330, -0.1536, +0.0638, +0.1271, -0.1489, -0.2615, +0.3137, -0.0094, +0.1471, -0.1138, -0.0165, +0.0561, +0.1846, +0.2307, -0.1245, +0.1294, +0.2496, -0.0031, +0.2064, -0.0985, +0.0925, -0.0666, -0.4357, -0.1427, -0.0200, -0.4454, -0.1536, +0.0882, +0.1694, +0.1839, -0.1058, -0.2136, +0.1915, -0.0562, +0.2725, +0.2159, -0.1086, +0.2456, -0.2453, -0.1157, -0.0305, +0.1652, +0.1450, -0.8072, +0.1384, +0.3475, -0.5774, -0.9026, -0.1308, -0.0674, +0.1994, -0.0639, +0.2952, +0.1028, -0.4886, -0.2731, +0.3525, -0.0975, +0.1044, +0.2879, +0.1468, +0.1405, -0.1562, +0.4200, -0.0759, +0.0317, +0.1776, -0.0297, -0.0008, -0.5027, -0.2910, +0.2462, -0.6054, -0.3763, +0.6260, -0.0360, +0.1374, +0.2430, +0.3486, -0.0908, -0.0073, -0.0109, +0.4478], -[ +0.0734, -0.5017, -0.5278, +0.0392, +0.1261, +0.3050, +0.2348, -0.3936, -0.2442, +0.4161, -0.3433, -0.2797, +0.1400, +0.2800, +0.1872, -0.2395, -0.0185, -0.2014, -0.0847, -0.0001, +0.3363, +0.3147, -0.1965, +0.4546, +0.0740, -0.2504, -0.0556, +0.2257, -0.1128, +0.2797, +0.2061, -0.2659, -0.0993, +0.3100, -1.8358, -0.1972, -0.0159, -0.1518, -0.2367, +0.1619, -0.3248, +0.0903, -0.0493, +0.0095, +0.2421, +0.0204, +0.4738, +0.2998, +0.0045, +0.1449, +0.1561, -0.4190, +0.0227, -0.4040, +0.0062, +0.2526, -0.2477, +0.2209, +0.0783, -0.1612, -0.7531, +0.1740, +0.1046, -0.4311, -0.0881, +0.2537, -0.0394, +0.2302, -0.6519, -0.1935, -0.1061, +0.0295, -0.0679, +0.0157, +0.4810, -0.3258, +0.0833, -0.3262, +0.0600, +0.2606, -0.3138, +0.3250, +0.1779, -0.0485, -0.2326, +0.3971, +0.4411, +0.0980, +0.2260, -0.5827, +0.1199, -0.4621, -0.3366, +0.0662, +0.1127, +0.1150, -0.5505, +0.2234, -0.4601, +0.0877, +0.2074, +0.4284, +0.2075, -0.2741, -0.2439, +0.0376, -0.2017, +0.1119, -0.3934, -0.3157, +0.3974, +0.1365, +0.0338, -0.4446, -0.3135, +0.2476, +0.1367, +0.1602, -0.3251, +0.2314, +0.3088, -0.0990, -0.1115, +0.0498, -0.6394, +0.2256, +0.0817, +0.3034], -[ -0.1230, -0.0816, -0.8514, +0.0428, -0.8718, -0.3498, +0.2013, -0.4960, -0.0788, +0.0772, +0.1470, -0.0984, +0.1681, +0.3764, +0.0638, -0.4613, -0.3023, -0.7151, -0.6492, +0.2614, -0.2227, -0.5047, +0.2103, -0.5820, -0.0416, +0.6726, +0.0414, -0.1663, -0.0308, +0.6348, -0.1394, +0.3171, -0.1124, -0.0165, +0.2622, -0.4701, +0.0039, -0.0894, +0.4869, -0.0041, -0.2160, -0.0481, -0.1385, +0.0063, -0.0753, -0.0065, +0.1102, -0.4624, -0.3761, -0.6443, -0.1005, -0.2105, +0.0868, +0.7218, -0.0629, +0.6771, -0.2203, -0.3573, -0.0026, -0.0805, +0.1814, -0.0507, -0.2107, -0.2736, +0.2204, -0.3850, +0.2043, +0.3706, -0.1600, -0.6997, -0.5030, -0.0348, +0.1312, +0.1721, -0.3114, -0.3621, +0.1712, -0.0465, -0.5519, -0.1276, +0.0150, +0.2383, +0.2723, -0.0463, +0.1414, -0.0700, -0.2356, -0.2205, +0.1866, +0.3413, -0.3871, +0.5982, +0.2148, +0.0487, +0.0654, -0.1417, +0.2473, +0.0210, -0.0069, +0.0910, +0.3187, +0.0152, -0.0407, +0.0465, -0.1793, +0.1284, +0.2463, -0.0993, +0.0873, -0.3885, +0.1926, +0.0072, -0.0074, +0.0066, -0.6722, +0.0064, +0.3097, -0.1041, +0.0379, -0.3415, +0.2064, -0.2009, -0.0228, +0.6148, -0.1404, -0.2849, +0.3208, +0.0656], -[ +0.0251, -0.8553, -0.1979, +0.3539, +0.2147, +0.6202, +0.1319, -0.3262, +0.3099, -0.1809, +0.4905, -0.0544, +0.2700, +0.1230, +0.4188, -0.7351, +0.2258, +0.1713, -0.0392, +0.2600, +0.0211, +0.0577, +0.2727, -0.0028, -0.5387, +0.0287, -0.2586, -0.2045, +0.0187, +0.1912, -1.1948, +0.3167, -0.2489, +0.3866, +0.0400, -0.0279, -0.0443, -0.1545, +0.1585, -0.2317, -0.4141, +0.0862, -0.3112, -0.0431, +0.1661, -0.0304, +0.1867, +0.0547, -0.2895, -0.2471, -0.2536, +0.4093, +0.8166, +0.0799, -0.1278, +0.4039, +0.3360, -0.1531, +0.2152, +0.4375, -0.4657, +0.3022, -0.3599, +0.0949, -0.2400, +0.3204, -0.3362, +0.3973, +0.5775, -0.1612, +0.0078, +0.3289, -0.3072, +0.3301, +0.0475, -0.3973, +0.0345, +0.3194, -0.2811, +0.3295, -0.2392, +0.0360, +0.1543, +0.2569, +0.5168, -1.1315, -1.0246, +0.0012, -0.1337, -0.3605, -0.1078, +0.0566, -0.2338, -0.1493, +0.1023, -0.1040, +0.2580, -0.4358, +0.1554, +0.1435, +0.3707, -0.4833, +0.0853, -0.2058, -0.3761, +0.6072, -0.2036, +0.8537, +0.5825, -0.2049, -0.1134, -0.6273, -0.2811, -0.0331, +0.4636, +0.2927, +0.1443, -0.0863, -0.0087, +0.1942, +0.1722, -0.2133, -0.4623, +0.2782, +0.0480, +0.0080, +0.1624, -0.3531], -[ +0.1632, -0.6154, -0.3844, -0.0849, +0.2507, -0.3268, +0.4486, +0.5801, -0.1874, -0.2251, -0.0357, +0.2139, -0.6365, -0.1572, -0.3433, -0.2879, +0.2784, -0.1332, +0.0850, -0.4318, +0.2251, +0.1186, +0.2725, -0.2630, +0.2633, +0.2346, +0.2089, -0.1721, -0.0462, -0.7239, -0.0587, +0.2404, -0.2168, -0.1213, +0.3499, +0.2321, -0.1086, -0.0439, -0.2199, +0.0008, -0.0673, -0.5990, -0.5959, -0.1718, +0.0604, -0.2226, +0.3710, -0.4175, +0.0258, +0.6827, -0.4619, -0.2589, -0.1057, +0.1328, +0.1190, +0.0947, +0.2298, -0.6302, -0.1559, +0.1847, -0.1427, -0.1189, +0.2944, -0.0248, +0.2631, +0.1594, +0.2081, -0.4222, -0.1603, -0.2602, -0.0883, +0.2445, +0.1705, -0.2713, -0.1000, +0.2285, +0.1923, +0.3226, -0.2063, -0.2095, -0.2058, -0.2856, +0.1198, -0.1099, +0.0093, +0.0883, +0.4638, +0.1661, +0.2469, +0.2090, -0.0004, -0.0595, +0.2122, +0.1230, -0.0768, -0.3124, -0.1545, +0.2818, -0.0484, +0.0734, +0.1286, -0.0387, +0.2684, -0.1829, +0.0176, -0.2869, -0.2822, -0.6328, -0.0485, +0.3021, +0.1570, -0.4454, +0.2047, -0.4595, -0.0170, -0.0883, -0.9077, -0.3851, -0.1511, -0.2327, -0.4163, +0.1233, +0.2956, +0.2471, +0.5491, -0.3869, +0.0327, +0.4352], -[ +0.1898, -0.1351, -0.7033, -0.7521, +0.1642, -0.4342, +0.3300, +0.3893, +0.1458, -0.1976, +0.1692, -0.3610, -0.6379, +0.1328, +0.0536, +0.0175, -0.0745, +0.2254, -0.0541, -0.4539, -0.4044, -0.0659, -0.4303, +0.1065, -0.9231, +0.0703, +0.0454, -0.2911, -0.2152, +0.0749, +0.1925, -0.2182, +0.0240, +0.1357, -0.7575, +0.1872, -0.3207, -0.5622, -0.2705, +0.0781, -0.2014, -0.1244, +0.5729, -0.2295, +0.0294, -0.2700, -0.3106, +0.2856, -0.0379, -0.0547, -0.0626, -0.4893, +0.8104, -0.9423, -0.3894, -0.1533, -0.3535, -0.8655, +0.0258, -0.2106, -0.8608, +0.2551, -0.5524, +0.0832, -0.4319, -0.1252, -0.2087, +0.1188, -1.0578, -0.6617, -1.0415, -0.3809, -0.0391, +0.5371, -0.6313, -0.2810, -0.0866, +0.0653, -0.0643, +0.2125, +0.2012, +0.0262, -0.1411, -0.1135, -0.5853, +0.4971, +0.0235, -0.0720, -0.6745, +0.4492, -0.2679, +0.3761, +0.0639, -0.0603, -0.2696, -0.1615, +0.3200, -0.4864, -0.3600, +0.1281, -0.2646, -0.2085, -0.0650, -0.6062, -0.1241, -0.4801, -0.3107, -0.3083, +0.3262, +0.0410, +0.0650, -0.1647, -0.2797, +0.1993, +0.2881, +0.0477, +0.1392, +0.1969, -0.5766, -0.3802, +0.1408, +0.3654, +0.2338, -0.0399, -0.2095, +0.3898, -0.1038, -0.0500], -[ -0.2260, +0.4267, +0.1181, +0.1474, +0.0903, -0.3170, -0.5556, +0.6192, -0.0362, -0.3975, -0.7007, -0.7501, +0.0175, +0.4636, +0.0667, +0.0333, +0.0633, -0.3461, -0.0810, -0.3627, +0.0247, -0.7402, +0.1867, -0.1845, -0.3946, +0.3625, +0.3459, -0.3325, -0.7073, -0.4535, +0.2823, -0.0217, +0.0897, -0.2817, +0.0433, -0.0805, -0.2020, +0.0007, +0.0906, -0.4526, -0.0990, -0.2818, -0.3405, +0.1625, -0.0869, -0.9010, +0.0561, -0.2735, -0.0324, -0.2907, +0.0121, -0.0023, -0.3035, -0.0236, -0.2082, +0.2456, -0.1641, -0.3657, -0.0183, +0.1987, +0.1861, +0.1275, +0.1807, -0.3466, +0.1572, -0.2719, -0.9799, +0.1926, +0.0462, +0.4211, +0.0084, +0.6546, +0.2405, +0.0296, +0.2815, +0.5804, +0.0297, -0.3488, -0.1494, -0.1256, +0.1089, -0.2366, +0.2265, +0.1539, +0.5575, +0.2659, -0.0935, +0.2372, -0.3421, +0.1243, +0.1178, -0.2170, -0.2879, -0.2526, +0.0611, +0.5048, +0.1318, -0.0883, -0.0543, -0.4677, -0.0295, -0.5802, +0.0954, -0.2130, +0.0412, -0.1463, -0.3476, -0.0776, +0.5857, -0.3592, +0.1009, -0.0522, +0.1944, -0.5109, +0.0918, +0.0198, -0.7037, -0.5731, +0.2222, -0.2627, +0.1334, +0.2815, +0.2621, -0.4013, -0.1992, -1.0090, -0.0805, -0.1156], -[ +0.2961, -0.8829, +0.2531, +0.1999, -0.0758, -0.4068, +0.3544, +0.2721, -0.4040, +0.3919, -0.0390, +0.2147, +0.1036, +0.3837, -0.2685, -0.1119, -0.4498, -0.2901, +0.0420, -0.0409, +0.1611, -0.6073, -0.3627, -0.1519, -0.4064, +0.0259, +0.1868, +0.3818, +0.2059, +0.7454, +0.0490, -0.3465, -0.4028, +0.0084, -0.5598, +0.1707, +0.2647, +0.0586, -0.3680, +0.1757, +0.6657, +0.3119, +0.1302, -0.2790, +0.2778, -0.8106, +0.7603, +0.2368, -0.2424, -0.2255, -0.1655, -0.1685, -0.5452, -0.0282, -0.3201, -0.7398, +0.1689, +0.2815, -1.3956, -0.4733, +0.1184, -0.0981, +0.1178, -0.2810, -1.2564, +0.0855, +0.3543, -0.1251, -0.0844, +0.3149, -0.0949, -0.0620, +0.4933, +0.0230, -0.9289, +0.5736, -0.7725, -1.0120, +0.1829, +0.2040, +0.0782, +0.1258, -0.2493, +0.0366, -0.2388, +0.3283, -0.9288, -0.2510, -0.3425, +0.0468, -0.6148, +0.3651, -0.7364, -0.0666, -0.3444, +0.0285, +0.4550, +0.2609, +0.1243, +0.1472, +0.3600, +0.1999, -0.3719, +0.3004, -0.1056, +0.3477, -0.2330, +0.1384, -0.2253, -0.2519, +0.2917, +0.0093, +0.0302, -0.9817, +0.0974, -0.2694, -0.1741, +0.1285, -0.1398, -0.1521, -0.2856, -0.1166, -0.3964, +0.2857, +0.4074, -0.4403, -0.2015, +0.1287], -[ +0.1777, -0.4450, -0.0478, -0.4977, -0.0468, +0.2730, +0.3349, +0.3802, +0.1138, -0.0314, +0.1477, +0.0473, -0.3878, +0.5000, +0.0157, +0.1266, -0.3094, +0.2874, +0.1929, +0.4652, +0.1726, +0.2424, +0.0769, +0.0103, +0.4641, -0.1563, +0.2986, +0.3145, -0.1288, +0.2384, -0.0010, -0.1930, +0.1701, +0.0491, +0.0212, +0.0587, +0.0734, +0.2115, +0.1199, +0.1566, -0.0123, -0.6989, +0.1739, +0.3590, -0.2669, +0.4165, -0.1259, +0.0086, -0.0617, +0.1871, -0.2064, -0.1562, +0.0094, +0.1784, -0.0284, +0.1957, -0.0920, -0.3327, -0.0684, -0.4140, -0.1799, -0.0112, -0.1369, +0.1700, +0.1932, +0.2913, -0.0045, +0.0545, -0.5113, +0.2949, +0.1653, +0.0112, +0.1853, -0.0539, +0.0865, +0.0373, +0.1046, +0.0328, +0.1063, -0.1013, +0.3759, +0.0158, +0.1022, -0.4156, -0.7783, +0.1458, -0.0482, -0.2760, +0.2040, -0.3400, -0.1997, +0.4009, +0.0308, +0.1979, +0.2555, -0.1299, +0.1064, -0.4140, -0.2384, +0.0685, +0.2174, -0.1800, -0.6059, +0.3528, +0.1224, +0.1653, -0.2138, -0.1005, -0.3628, +0.2125, -0.1617, +0.4758, +0.1723, +0.3444, -0.1393, +0.4291, -0.7024, +0.0379, -0.3655, +0.2563, -0.1136, +0.2831, +0.0959, -0.1077, -0.1483, -0.1680, +0.4015, +0.5720], -[ -0.1438, -0.2355, -0.4076, +0.5703, -0.5909, +0.3148, -0.2530, +0.1941, -0.1797, -0.0394, -0.3980, -0.5451, -0.0887, -0.0309, +0.1099, -0.2798, +0.0253, -0.1709, +0.4206, -0.1364, +0.2547, -0.1454, -0.2522, -0.2646, +0.1868, -0.3146, -0.9247, -0.2855, -0.3626, +0.0038, +0.2768, +0.0409, -0.0476, -0.1042, -0.2467, +0.2798, +0.1569, -0.0936, +0.3496, +0.2132, -0.1329, -0.1956, +0.2000, -1.0194, -0.3578, -0.1942, -0.2636, +0.0316, +0.0325, -0.6149, -0.0629, -0.5862, -0.1392, -0.3881, +0.1192, +0.0091, +0.0625, -0.4885, +0.5960, +0.1413, +0.0750, +0.4950, -0.5224, +0.0669, +0.2055, -0.1908, -0.4428, +0.1381, -0.0139, -0.2220, -0.5220, +0.4692, +0.3341, +0.1204, +0.2084, +0.3205, -0.2611, -0.3528, +0.2472, -0.6728, +0.1677, +0.2016, +0.1210, +0.6937, -0.0246, +0.2115, -0.1614, -0.0203, +0.1859, +0.2395, +0.5606, -0.4979, -0.3953, +0.1806, +0.1472, +0.1162, -0.4677, +0.0357, +0.4425, +0.1619, -0.0582, -0.3006, +0.1005, -0.0737, +0.3610, -0.1361, +0.0040, +0.2947, +0.1496, +0.1414, +0.0659, -0.1526, +0.2021, -0.0574, +0.1571, +0.2682, +0.3645, +0.3182, +0.4007, -0.0802, -0.0024, +0.4872, +0.3879, -0.8846, -0.3574, -0.5356, -0.0500, -0.4606], -[ -0.2507, -0.0606, +0.2759, +0.1509, +0.0666, -0.3427, -0.3514, -0.2202, +0.2201, -0.5190, -0.3708, +0.4909, -0.0104, +0.0247, +0.2348, +0.3521, -0.0406, -0.0175, +0.0667, +0.4961, +0.1497, -0.6653, -0.0844, -0.8661, -0.5478, +0.1007, +0.2715, -0.2283, +0.2131, -0.5350, -0.1554, -0.2705, -0.3784, -1.2774, -0.1183, +0.0352, +0.1651, +0.1901, -0.1710, -0.0219, -0.1058, -1.1424, -0.3828, -0.7261, +0.2641, +1.1309, +0.4594, +0.0499, -0.6400, -0.7350, -0.7896, +0.0358, +0.2365, -0.2801, -0.1962, +0.3177, -0.2509, -0.2928, -0.5144, -0.1850, -0.4808, +0.0826, +0.3942, +0.0465, -0.2774, -0.2236, +0.1557, -0.7117, -0.1425, +0.4162, +0.5171, -0.2417, +0.2425, -0.1366, +0.0171, -0.3265, -0.8451, +0.0587, -0.0493, -0.0301, +0.0614, +0.2039, +0.1207, +0.0080, +0.1513, -0.5005, -0.3661, +0.3847, -0.4191, -1.2458, -0.0705, +0.4341, -0.1751, -0.5343, -0.1000, -0.3618, -0.1245, -0.6612, +0.5601, +0.1210, -0.1607, -0.3600, -0.5553, -0.2113, +0.2111, +0.3969, -0.0647, -0.4451, +0.1506, -0.1372, +0.4147, -0.5771, -0.3672, -0.3929, -0.3612, -0.2183, -1.5856, -0.1747, -0.4615, -1.0865, -0.3571, -0.4613, -0.0611, -0.5868, -0.0830, +0.1470, +0.1242, -0.0859], -[ -0.5877, +0.3451, +0.0096, -0.0318, -0.4403, +0.0506, +0.1627, -0.8517, +0.1151, +0.1188, +0.1937, +0.0634, -0.3531, -0.4734, -0.5072, -1.5117, -0.4695, +0.0828, +0.3604, -0.1375, -0.3175, -0.3237, +0.1916, -0.8368, +0.2075, +0.4686, +0.5285, +0.1692, -0.6942, -0.6317, -0.4165, -0.0970, -0.3298, +0.5222, +0.3033, -0.5850, +0.3075, +0.1976, -0.3946, -0.7079, -0.0507, +0.4488, -0.4855, +0.1195, -0.8915, -0.0832, +0.1033, +0.2110, +0.0475, -0.6606, +0.6678, +0.0105, -0.4808, -0.0089, -0.2845, -0.1887, +0.2257, +0.0532, -0.4042, +0.3972, -0.3103, +0.1402, +0.1942, -0.2324, +0.4520, -0.6140, +0.1605, -0.3393, -0.7231, -0.3017, -0.3530, -0.0021, +0.5006, -0.8634, -0.2307, -0.9314, +0.2467, -0.1285, -0.3420, +0.0055, -0.4350, -1.2688, -0.1810, +0.0170, +0.0213, -0.0859, +0.0593, -0.5985, +0.5056, -0.7244, +0.2161, +0.5538, -0.0064, +0.1773, -0.1329, +0.3299, +0.7108, -0.6284, -0.4913, -0.5280, -0.0211, -0.0699, -0.2163, -0.0745, +0.0908, +0.0608, -0.0502, +0.2610, +0.1790, -0.5889, -0.1737, -0.6816, +0.3504, -0.1750, -1.0010, -0.0216, +0.4195, -0.3934, -0.2298, -0.3989, +0.1816, -0.3433, -0.4653, -0.1924, +0.1843, -0.0861, -0.2252, +0.1555], -[ -0.0730, -0.7492, -0.1874, -0.6503, -1.2837, +0.2707, +0.2114, +0.1410, +0.1815, -0.6419, -0.4038, -0.7565, -0.0559, +0.0237, +0.2873, -0.5627, +0.2434, +0.4061, +0.0876, -0.1893, +0.0414, -0.4736, +0.3654, -0.2338, +0.0298, +0.1434, -0.5197, -0.7236, -0.3680, +0.0575, +0.0891, -0.2309, -0.0246, -0.6083, +0.1707, +0.4302, +0.0214, +0.0306, -0.6548, -0.1957, +0.2180, -0.0232, +0.0742, +0.0003, -0.1274, -0.3843, -0.2482, +0.5942, -0.3033, +0.1166, -0.2250, +0.1424, +0.1789, -0.0140, -0.2885, -0.7722, -0.5662, -0.3883, -0.3388, -0.3684, -0.1365, +0.0974, -0.5501, +0.2249, -0.1625, -0.3999, -0.3098, -0.1455, +0.5813, -0.2963, -1.9151, -0.7532, -0.0955, -0.1501, -0.2501, -0.2146, -0.4837, -0.5981, +0.1638, -0.2285, -0.0766, -0.0335, -0.1442, +0.3383, -0.1850, +0.0756, -0.7207, -0.3625, +0.3851, +0.2788, -0.0776, -0.6749, +0.3952, +0.0587, +0.0221, -0.8700, +0.3954, -0.4287, -0.0227, -0.3448, +0.2583, +0.5063, -0.2011, +0.1111, +0.2241, -0.2702, -0.8752, +0.2457, +0.3126, +0.0522, -0.1482, -0.4149, -0.0739, -0.3966, +0.2794, +0.2349, +0.2147, -0.3873, +0.0527, +0.3884, +0.1332, -0.0117, +0.0518, +0.3206, -0.0471, -0.4963, +0.2957, +0.1171], -[ -0.1759, -0.1191, -0.0798, -0.1292, -0.4328, -1.3256, +0.0935, -0.4437, +0.2077, +0.1944, +0.0869, -0.3508, +0.3274, +0.1460, +0.0963, +0.7488, +0.9544, -0.5054, -0.3881, -0.3195, -0.3795, +0.2306, -0.3539, +0.1059, +0.2026, +0.1826, -0.1448, +0.2574, -1.0463, -0.1711, +0.0039, +0.2425, +0.0612, -0.2619, -0.7358, -0.0753, +0.1382, +0.0174, -0.3062, -0.6868, +0.0250, -1.0983, +0.4938, -0.3367, -0.0298, -0.9016, -1.1238, -0.0737, +0.2115, +0.1935, +0.2436, -0.1949, -0.0085, +0.6128, +0.2610, -0.2239, +0.2857, -0.2354, -0.3380, +0.5958, -0.5158, -0.3830, -0.1254, -0.0005, -0.1330, -0.1493, -0.5540, -0.5664, -0.2504, +0.2288, +0.1705, +0.4398, -0.3712, -0.3688, +0.2936, +0.2431, +0.2048, -0.1857, +0.3157, +0.4313, +0.1399, -0.0526, +0.0310, -0.0351, +0.2122, -0.4548, -0.4232, +0.9080, +0.2572, -0.0290, -0.5924, -0.1820, -0.2552, +0.1101, -0.4345, -0.0700, -0.3592, -0.3151, +0.3027, +0.0379, +0.2374, -0.0486, -1.0538, +0.0106, +0.0292, -0.4760, -0.2666, -0.2870, -0.1484, -0.5639, +0.6013, +0.4374, -0.5609, +0.1031, -0.9687, +0.0130, +0.1013, +0.1240, -0.0341, -0.0539, +0.1532, -0.0557, -0.2955, -0.2903, -0.3361, +0.0988, +0.0274, -1.0977], -[ +0.1105, +0.0117, +0.0933, +0.0604, -0.1313, -0.1622, +0.1557, +0.2222, -0.0129, +0.0230, -0.3218, -1.0063, +0.3330, +0.1196, -0.0877, -0.2771, -0.2146, -0.5465, -0.1045, +0.1920, -0.1186, -0.0680, +0.0661, +0.1609, -0.4555, -0.2760, +0.2333, +0.3222, -0.7547, -0.2440, -0.2394, -0.1448, -0.1959, -0.2374, -0.2005, -0.2313, -0.2948, +0.3373, -0.0235, -0.3343, -0.0927, -0.3970, -0.7839, +0.0218, +0.5226, -0.6033, +0.4391, +0.1878, +0.2170, +0.0619, +0.3426, +0.0173, -0.2415, -0.0961, +0.2955, +0.1469, -0.4662, +0.2033, -0.4379, -0.1049, -0.2514, -0.6115, -1.0674, -0.3325, -0.0202, +0.2688, +0.1097, -0.3600, +0.2938, +0.0735, -0.6222, -0.4575, -0.2711, +0.4244, +0.0332, +0.2785, +0.4699, +0.0617, +0.3998, +0.5886, -0.0469, -0.1195, +0.0981, -0.0148, -0.3827, +0.1492, +0.1127, -0.2244, +0.0721, +0.4063, -0.0626, -0.0013, -0.2457, +0.0833, +0.2270, -0.3539, +0.1999, +0.0263, -1.0183, +0.1056, -0.1164, -0.0119, -0.5302, -0.2072, +0.1635, +0.0053, +0.1891, +0.0231, +0.1797, -0.1709, +0.2506, +0.2423, -0.0101, -0.2822, +0.3256, -0.1564, -0.2930, -0.0467, -0.3962, -0.3661, -0.4718, -0.0944, +0.2181, +0.1119, +0.1723, -0.8692, +0.0704, -0.2053], -[ +0.1427, -0.1852, -0.5061, -0.1994, +0.0922, -0.4752, -0.0131, -0.1947, +0.1828, -0.1959, +0.1974, +0.4486, +0.1348, +0.1081, +0.2837, -0.2840, -0.0205, +0.0466, -0.1778, -0.9605, +0.1866, -0.3362, +0.0148, -0.4933, +0.1899, +0.1837, +0.3902, -0.2005, -0.2618, +0.1484, +0.1904, -0.4196, -0.0533, -0.3042, -0.5921, +0.0574, -0.0186, +0.1663, -0.2199, +0.2019, +0.1858, +0.0094, -0.4535, -0.0162, -0.0376, +0.2756, +0.2238, +0.0012, -0.0915, -0.2929, +0.1462, -0.1720, -0.0159, -0.3281, +0.1782, +0.2198, +0.4180, +0.1366, -0.0933, +0.2715, -0.2315, +0.0324, -0.4312, -0.1713, -0.1150, -0.4238, -0.2307, -0.0891, +0.1204, +0.3656, -0.4093, -0.2037, +0.0285, -0.4803, -0.4239, -0.1145, +0.0517, -0.0004, -0.3356, +0.1255, -0.0083, -0.0860, -0.0876, +0.2461, +0.1827, -0.0954, -0.7996, -0.3343, +0.0542, +0.0161, -0.2052, -0.0994, +0.5392, +0.2659, -0.2618, -0.5764, +0.1582, +0.1402, -0.2191, -0.1390, +0.0124, +0.3672, +0.4313, -0.2709, -0.4404, -0.4451, -0.1652, +0.1128, -0.1525, +0.2629, -0.2420, -0.3800, +0.1721, +0.5150, -0.3773, -0.2290, -0.6256, +0.0714, +0.3855, +0.0892, -0.4668, +0.6438, -0.3803, -0.0161, -0.2466, -0.2689, -0.0604, -0.1614], -[ +0.0376, -0.0355, -0.4441, -0.3144, +0.0082, -0.6130, -0.2509, -0.0715, -0.0929, +0.2785, +0.1165, -0.7594, -0.4102, -0.1754, +0.2785, -0.2331, +0.3321, +0.0261, +0.1369, -0.0126, +0.0705, -0.3018, -0.8778, +0.0385, -0.0159, +0.3065, -0.0690, +0.3111, -0.0641, +0.1443, -0.4349, -0.2606, -0.0896, -0.4532, -0.3538, +0.1976, -0.5169, -0.1279, -0.0626, -0.5874, -0.2223, -0.0173, +0.3750, -0.1369, +0.0857, -0.0983, +0.2572, +0.0489, -0.0486, +0.6614, +0.4222, -0.1401, -0.1513, +0.3451, +0.2968, +0.1572, -0.7647, -0.0342, -0.1235, -0.1753, +0.0759, -0.1821, -0.6584, -0.1127, -0.9050, -0.2566, +0.0423, -0.0330, -0.0791, -0.1719, +0.1882, +0.0919, +0.0488, -0.1729, +0.1135, +0.2442, -0.4761, +0.1265, +0.6646, +0.1410, -0.1003, -0.0933, +0.0205, -0.0286, +0.2415, -0.1249, +0.3183, -0.0026, -0.2599, -0.1338, -0.4739, -0.0679, +0.3539, +0.2768, +0.5247, +0.0218, +0.1346, -0.1189, +0.1751, -0.1922, +0.1062, -0.2765, -0.1356, -0.0264, +0.2249, -0.3717, +0.1591, -0.8391, -0.4719, +0.0597, +0.1263, -0.1124, +0.2843, -0.2478, +0.4046, +0.1222, +0.1456, +0.2175, -0.5225, -0.3049, +0.1795, +0.0824, -0.2968, +0.1637, +0.3549, -0.4648, -0.5369, +0.0996], -[ -0.1320, -0.9650, -0.3791, -0.0510, +0.1635, -0.0454, -0.3226, -0.4397, +0.0652, +0.5499, -0.2538, -0.3219, -0.3776, -0.5072, -0.3572, +0.0407, -0.6166, +0.1089, -0.1951, -0.3991, +0.0590, -0.2029, +0.2224, -0.0488, -0.2044, -0.1049, -0.0121, -0.6854, +0.4429, -0.0710, -0.2624, +0.2514, -0.0233, +0.1447, +0.1847, -0.1191, -0.3180, +0.2033, -0.0902, -0.3233, +0.0482, -0.1071, -0.4989, -0.0567, +0.0917, -0.2871, +0.0373, +0.2217, -0.1233, +0.0590, -0.1799, +0.0659, +0.1493, -1.0869, -0.2930, -0.1631, +0.1001, +0.0030, -0.2221, -0.1373, -0.3479, +0.0586, +0.2612, -0.0127, -0.8288, -0.1585, -0.2799, -0.1133, -0.0743, -0.0837, -0.1077, -0.3787, +0.0951, -0.1552, -0.0681, -0.0151, +0.3192, +0.1431, +0.1291, +0.4711, -0.2327, -0.7535, -0.0900, +0.1624, -0.4931, +0.3276, -0.6030, -0.0712, -0.0102, -0.1754, -0.2889, -0.1166, +0.5956, -0.2368, +0.4196, +0.1302, -0.1859, -0.2048, +0.2227, -1.7207, -0.0229, -0.3392, -0.1614, +0.2917, +0.5231, +0.2722, -0.5423, -0.6828, +0.3139, +0.0729, -0.2193, -0.2678, +0.0439, -0.4189, +0.0075, +0.2128, +0.1464, -0.3936, -0.1995, +0.5410, -0.0367, +0.3681, -0.0532, -0.6149, -0.1160, -0.3672, -0.1255, +0.2957], -[ +0.4563, -0.2878, +0.1003, +0.5522, -0.2531, +0.0084, -0.0091, -0.1064, -0.2031, +0.1104, -0.1898, +0.1961, +0.0255, -0.4951, -0.1913, -0.0697, -0.8265, +0.2716, -0.1884, -0.0199, -0.3059, +0.3139, -0.0730, -0.2652, -0.7131, -0.2066, +0.1626, -0.5974, -0.5309, -0.7327, -0.5860, +0.0368, +0.0351, -0.4439, +0.2631, +0.0929, -0.1370, +0.2969, -0.0111, +0.1980, -0.0840, +0.2068, +0.3081, +0.0279, +0.2211, +0.0896, -0.1535, -0.1267, -0.2912, -0.3677, -0.2269, -0.1521, -0.1610, +0.5509, -0.2286, +0.0092, -0.0143, +0.0009, +0.6367, -0.6104, -0.0973, +0.2913, +0.3400, -0.4454, +0.7075, -0.1796, -0.0639, +0.4491, +0.3731, -0.3276, -0.3067, +0.3063, +0.3122, -0.2921, +0.1349, -0.0031, +0.2689, +0.2347, +0.0243, -0.1577, +0.3934, -0.1940, +0.2715, +0.2365, -0.2669, +0.1686, -0.0929, +0.2041, -0.1073, -0.2369, -0.2059, -0.2396, +0.0637, -0.1047, -0.3749, -0.3528, -0.4431, +0.4989, +0.3949, -0.8328, -0.1261, -0.1566, +0.0463, -0.4221, -0.7832, +0.2721, -0.9004, -0.3753, +0.4861, +0.1756, +0.1870, -0.7375, -0.2924, -0.4174, +0.0602, +0.0234, +0.4416, +0.6395, +0.0074, +0.2886, -0.0448, +0.4404, -0.4634, -0.5819, -0.2986, +0.3191, +0.8946, +0.1009], -[ -0.1220, +0.1003, -0.4755, +0.2918, +0.3254, -0.2340, -0.1555, +0.4568, -0.0557, -0.2228, -0.0058, -0.2216, -0.0695, -0.1173, +0.1551, +0.1829, +0.2940, -0.0166, +0.1935, +0.2756, +0.4554, -0.1353, -1.0958, -0.8857, -0.2939, +0.0251, -0.2353, -0.1638, -0.0382, -0.0680, +0.1222, -0.1298, -0.0147, +0.1063, -0.6078, +0.3496, +0.1941, +0.0071, +0.0313, +0.0563, +0.0657, -0.6490, +0.3541, -0.0730, +0.1620, -0.1660, -0.1505, -0.2714, -0.5837, -0.5054, -0.1032, +0.4720, +0.0604, +0.0912, -0.1707, -0.0504, +0.2341, +0.5004, +0.1012, +0.1992, -0.5627, -0.5803, +0.0294, +0.2171, -0.3449, -0.1085, +0.0614, -0.2860, +0.0437, -0.4973, +0.3080, -0.0418, +0.1141, -0.1068, +0.0511, +0.0327, +0.1189, -0.0784, +0.2457, -0.0176, +0.2933, -0.0433, -0.4168, +0.0364, +0.3713, +0.0773, -0.7402, -0.4481, +0.0955, +0.1283, -0.4121, -0.6441, -0.6647, +0.1403, -0.4423, +0.0605, +0.2072, +0.3241, +0.0528, +0.3429, +0.0922, -0.0976, -0.1872, -0.6657, +0.1092, +0.0302, +0.0420, +0.1131, -0.1632, -0.0553, -0.2727, -0.3240, -0.0602, +0.3579, +0.1491, +0.0430, -0.8329, +0.1855, +0.0241, +0.0555, -0.2750, -0.1403, +0.0990, +0.0309, -0.7623, +0.4217, -0.2832, -0.0968], -[ -0.2535, -0.6233, -0.1834, -0.5605, +0.0869, -0.0538, -0.2100, -0.1457, +0.0704, -0.4887, -0.9739, -1.2273, -0.0454, -0.3891, +0.2092, -0.4553, -0.0735, +0.3225, -0.2971, +0.0435, +0.5899, -0.0592, -0.0848, -0.2039, -0.1721, +0.3281, -0.4920, -0.7178, -0.7664, -0.9143, +0.2372, +0.3685, +0.0091, +0.2373, -0.5342, +0.0694, -0.2693, +0.2563, -0.4280, +0.0645, +0.2087, -0.0039, -0.1370, -0.0884, -0.6820, +0.1760, -0.3987, -0.1493, +0.0601, +0.1138, -0.4099, +0.1851, -0.1274, -0.1066, +0.0741, -0.1493, +0.6803, -0.2550, -0.5633, +0.0049, +0.0017, -0.2172, +0.4925, +0.1549, -0.0317, -0.3450, +0.1178, -0.0104, -0.3088, -0.2295, -0.0957, -0.2434, -0.2821, -0.0060, -0.0400, -0.4205, +0.2196, -0.2997, -0.0809, +0.1313, +0.1731, -0.0051, -0.4600, -0.2371, -0.7844, -0.5139, -0.4605, -0.4429, -0.5498, +0.1161, -0.0308, -0.0630, +0.3991, -0.8613, -1.1664, +0.1680, -0.3424, -0.1436, -0.6138, +0.3318, -0.2958, -0.8781, -0.0604, +0.1111, -0.0795, -0.0093, -0.0714, +0.1509, +0.3676, +0.0670, +0.3371, -0.1865, +0.2897, -0.1348, -0.2736, +0.0525, -0.3503, -0.4794, -0.1069, -0.0083, -0.5541, +0.4283, -0.0180, +0.2957, -0.2439, -0.0685, -0.0088, -0.8887], -[ +0.4257, -0.0626, +0.2674, -0.0194, -0.2191, +0.3285, +0.1896, -0.6788, -0.1682, -0.1313, -0.3455, +0.0500, +0.0003, +0.3036, -0.4400, +0.0268, -0.1012, -0.3739, +0.4346, -0.1643, +0.0575, +0.0527, +0.1550, +0.5666, -0.1603, +0.0196, +0.0483, +0.5300, -0.2059, +0.2152, +0.1855, +0.0263, +0.1512, +0.0275, -0.3429, -0.0788, +0.2908, -0.7333, -0.1487, +0.2781, -0.6031, -0.8133, +0.2483, +0.2368, +0.0343, +0.2757, +0.1560, -0.2254, +0.0352, -0.1804, -0.1548, +0.6046, +0.5129, -0.1565, -0.1900, +0.1022, +0.1620, -1.1793, -0.0472, -0.3794, -0.2511, +0.0435, +0.0510, +0.3270, -0.6999, +0.2030, -0.5414, -0.3338, -0.0703, -0.6630, -0.1414, -0.1423, -0.2605, -0.3570, -0.1114, -0.0951, +0.0949, +0.0720, +0.0846, -0.2250, +0.3984, -0.1748, +0.3341, +0.2056, +0.0462, -0.3355, -0.0356, +0.1240, +0.2982, +0.4563, -0.5016, -0.8895, +0.3759, +0.3060, -0.0341, -0.3384, -0.6032, -0.0690, +0.3485, +0.0575, +0.1980, -0.1852, +0.1314, -0.1565, -0.1274, -0.2967, +0.1058, +0.3621, -0.6279, +0.6663, -0.0559, -0.1351, +0.2892, -0.0804, -0.0705, +0.5129, -0.4301, +0.3880, +0.1793, -0.0773, -0.1243, +0.0818, +0.1832, -0.1113, +0.1035, -0.2106, +0.0357, -0.2435], -[ -0.0026, -0.1330, -0.0659, -0.7090, -1.3784, +0.0956, -0.2683, -0.4378, -0.1025, -0.2146, +0.2340, -0.5483, +0.2848, -0.1812, +0.1933, +0.1556, +0.0082, +0.0307, -0.1569, -0.1059, +0.0239, -0.2218, +0.0479, -0.2486, -0.1344, -0.0751, -0.3915, +0.3262, +0.0558, +0.0846, +0.0241, -0.0830, -0.0110, -0.4567, +0.0265, +0.1382, -0.1204, -0.0489, -0.0810, +0.1718, -0.0876, +0.4018, +0.1881, -1.0443, +0.0163, -0.5604, +0.2636, -1.1240, -0.0388, +0.5008, +0.0726, -0.0132, -0.1135, -0.3641, +0.1833, -0.4127, +0.1088, +0.0947, +0.3300, +0.2084, +0.0198, +0.4537, -0.4636, -0.5345, +0.1507, -0.0865, -0.6501, -1.0802, -0.0891, +0.1980, -1.2762, +0.1079, -0.2452, +0.1784, +0.4999, +0.0074, -0.5617, -0.4113, +0.1352, -0.4880, -0.0481, -0.2248, +0.2179, +0.3014, -0.2784, +0.2124, +0.0443, +0.3747, -0.0973, +0.1102, -0.4155, -0.5261, -0.3470, -0.1158, -0.0418, +0.3931, -0.1699, +0.3795, +0.1731, +0.1044, +0.2947, -0.4587, +0.1333, -0.0912, -0.1265, +0.1109, -0.2136, -0.1984, +0.1946, -0.0153, +0.0503, +0.0232, -0.0860, -0.9224, -0.4662, -0.2711, +0.2816, +0.0866, +0.1746, -0.1276, +0.2054, +0.0224, -0.0030, +0.0123, -0.1915, -0.1168, -0.7966, -0.3790], -[ -0.2268, -0.0613, +0.1339, -0.3670, +0.4544, +0.0166, -0.2208, +0.0565, +0.1858, +0.0072, +0.1157, -0.1178, +0.0931, -0.0721, -0.0034, +0.1460, -0.1827, +0.1685, -0.3229, +0.2136, +0.1561, -0.0207, +0.3122, +0.5341, +0.1105, -0.1378, -0.0455, +0.2720, +0.2915, +0.3360, -0.1922, +0.1920, -0.1496, -0.0605, +0.3368, +0.4965, +0.2364, -0.4736, +0.0878, +0.0153, -0.3404, -0.3680, +0.1307, +0.0020, -0.2133, +0.0699, -0.1138, +0.2240, +0.3148, +0.0757, +0.1016, -0.3583, +0.2488, +0.2625, -0.2160, -0.5305, +0.1896, +0.1493, -0.0753, -0.1509, -0.2272, -0.3576, -0.2732, +0.1652, -0.3675, -0.1427, -0.3390, +0.1672, -0.1715, +0.1242, -0.0191, +0.2341, +0.1227, +0.0318, -0.1664, +0.1049, -0.0526, -0.9382, +0.4237, -0.1549, -0.0100, -0.0277, -0.6206, +0.4411, -0.1665, -0.8100, +0.1450, +0.0200, -0.2031, -0.5564, -0.3542, -0.1565, -1.0757, +0.3452, +0.1241, -0.0241, +0.1245, +0.0099, +0.1232, +0.2797, -0.0563, +0.1686, -0.1374, -0.1005, +0.0296, +0.3692, +0.0783, +0.2337, +0.3631, +0.3000, +0.0691, -0.1386, +0.1265, -0.0694, +0.1750, +0.1143, -0.2665, +0.0502, +0.0614, +0.1494, -0.0208, +0.0208, -0.1683, -0.2202, -1.1331, +0.2242, -0.1232, +0.0589], -[ +0.1721, -0.1297, -0.7585, +0.1659, +0.0876, -0.5846, -0.2887, +0.1485, -0.0706, -0.0527, -0.7205, -1.0400, +0.1489, -0.4990, -0.5646, -0.1733, -0.2252, +0.0212, +0.5783, -0.6547, -0.0115, +0.3620, -0.0728, -0.3303, +0.3571, +0.1476, +0.1225, -0.0439, -0.2096, +0.0084, +0.3064, -0.1170, -0.0262, +0.2824, -0.0972, -0.0691, -0.2328, +0.3681, -0.8405, -0.0029, -0.0334, +0.0027, +0.0108, +0.1064, -0.1548, -0.1212, +0.1798, -0.8666, -0.0266, -0.7285, -0.8339, +0.4998, -0.2968, +0.0305, -0.0360, +0.6130, -0.1227, -0.1891, -0.1810, -0.0381, +0.1898, +0.0818, -1.0779, +0.2310, -0.1010, +0.2084, -0.9718, -0.3408, +0.2161, -0.1280, +0.2735, +0.2360, -0.3155, -0.5138, +0.4127, -0.1811, +0.1918, +0.0338, +0.6027, -0.1129, -0.5046, -0.5763, -0.0351, +0.1526, -0.4810, +0.2451, -0.0201, -0.0914, -0.2361, +0.2824, -0.7611, -0.0361, -0.0815, -0.1800, +0.0081, +0.2518, -0.6666, -1.8260, -0.3652, +0.4378, +0.0982, -0.5053, +0.1985, -0.2803, +0.1698, -0.1107, +0.3978, -0.1162, +0.3026, -0.1944, -0.2239, -0.0279, -0.9995, +0.1203, -0.1625, +0.2355, +0.3106, -0.0357, -0.0012, -0.0422, +0.3797, +0.3840, +0.0567, -0.0910, -0.3766, +0.7392, -0.3664, +0.0510], -[ +0.0020, -0.1412, -1.0584, +0.0702, -0.0718, +0.3112, +0.1450, -0.3806, +0.1162, +0.1405, -0.0649, -1.4613, -0.0241, -0.3429, +0.0568, -0.2007, +0.0686, -0.3763, -0.1311, +0.2070, +0.0482, -0.9692, +0.0145, -0.7368, +0.1049, -0.0797, +0.0869, +0.7941, -0.0068, +0.2198, -0.1576, -0.3634, -0.1134, -0.4269, -0.7236, -0.1146, +0.0482, +0.0768, +0.6667, -0.4348, +0.4433, -0.0526, -0.7207, +0.2557, -0.2005, +0.0901, +0.2774, +0.2831, +0.4291, -0.2335, -0.5328, -0.4797, -0.3076, -1.1515, -0.1040, -0.2236, +0.1199, -0.9618, +0.0387, -0.6312, -0.4416, +0.1492, +0.0549, -0.2052, -0.0139, -0.3422, +0.1999, -0.1716, -0.1969, -0.1440, -1.0364, -0.1845, +0.2427, -0.0193, -0.5984, -0.0257, +0.2218, +0.2183, -0.6527, +0.1580, +0.0537, -0.0644, +0.0482, +0.4762, +0.2448, -0.3908, -0.4596, +0.2208, -0.0862, -0.2392, -0.3622, -0.3599, +0.1054, +0.0968, +0.1581, +0.0252, -0.3014, -0.1817, -0.2678, +0.1753, -0.1082, +0.4952, -0.0649, -0.1922, -0.1492, -0.9311, +0.1760, -0.6735, +0.1233, -0.0162, +0.2424, +0.1343, +0.1783, -0.4443, -0.0392, +0.2349, -0.1626, +0.5096, +0.2413, -0.3190, +0.0512, +0.2132, -0.0371, -0.0105, -0.5506, -0.6191, +0.3603, +0.0261], -[ +0.0283, -0.2127, +0.2906, -0.3071, +0.0918, -0.3891, +0.1939, -0.5653, +0.2904, +0.1829, -0.0920, -0.7071, +0.1214, +0.0819, +0.1638, +0.0581, +0.5181, +0.0718, -0.3615, +0.0316, -0.1603, -0.4720, +0.4288, +0.5329, +0.1604, -0.5702, -0.2785, -0.4286, +0.0430, -0.4478, +0.3601, -0.0029, -0.1248, +0.4044, -0.1609, -0.3188, +0.1768, +0.3106, -1.2676, +0.2585, -0.3343, +0.0443, +0.2718, -0.2006, -0.1157, +0.1011, -0.4935, -0.5343, +0.3129, -0.3317, -0.0566, +0.1083, +0.2311, +0.0415, -0.0733, -0.8843, +0.0236, -0.1765, +0.1335, -0.1344, +0.3513, -0.0416, +0.1638, +0.0966, +0.0732, +0.0648, +0.1833, -0.4133, +0.2492, +0.0035, -0.4976, -0.1807, -0.0928, -0.5634, -1.6690, +0.3194, +0.0947, +0.4781, -0.2233, +0.0229, +0.0021, +0.1667, -0.1842, -0.2914, +0.2366, -0.2228, +0.1617, -0.1777, -0.0642, -0.5466, -0.2406, -0.1757, -0.4285, -0.1182, +0.1044, +0.2369, -0.0916, -0.0543, -0.7556, +0.1235, -0.2020, +0.0315, -0.1915, -0.2400, -0.5975, +0.1475, -0.0811, -0.0616, -0.2160, -0.4891, -0.5925, -0.5092, +0.0243, -0.2295, +0.0834, -0.1458, -0.7927, +0.7219, -0.2581, -0.5490, +0.4790, -1.2446, -0.1239, +0.0140, +0.0568, -0.3294, +0.0258, -0.0277], -[ -0.0624, +0.0246, +0.3335, -0.8180, +0.2986, +0.0964, -0.2012, +0.3210, -0.1792, +0.1499, +0.0265, -0.7556, -0.5244, +0.2041, +0.0337, -0.1434, +0.3581, +0.1118, -0.1389, +0.1808, -0.5362, +0.1434, -0.9947, -0.2032, +0.1618, +0.2006, -0.3364, +0.1043, -0.1961, +0.2623, -0.0400, -0.0010, -0.1308, -0.7567, +0.1018, -0.5552, -0.0515, -0.2613, -0.5083, +0.4201, -0.5266, +0.0886, -0.0577, -0.6082, +0.1177, +0.0489, -0.1608, -0.5764, +0.1292, +0.1688, -0.9482, -0.0299, +0.0182, +0.2384, -0.3844, -0.4146, -0.7457, -0.2922, +0.3484, -0.0237, +0.2970, +0.0165, -0.7650, -0.5211, -0.0916, +0.2148, -0.1852, -0.2172, -0.0834, +0.4922, +0.0816, +0.2650, +0.2183, +0.0552, -0.3703, +0.0667, +0.3667, +0.5674, -0.6159, -0.2434, -0.1852, +0.0839, +0.4193, -0.4002, +0.3142, +0.2060, -0.5022, -0.4029, -0.1252, +0.1021, +0.1822, +0.1257, +0.2901, +0.0352, -0.0381, -0.0247, +0.1207, -0.3224, +0.1169, +0.1076, +0.1642, +0.1166, +0.2799, +0.0119, -0.2258, +0.3068, +0.1026, -0.3854, -0.1063, +0.1121, +0.4287, -0.0259, +0.3262, -0.3049, +0.1054, -0.8086, +0.3410, +0.0450, +0.3249, +0.3305, -0.0912, +0.3306, +0.1719, +0.0597, -0.0865, -0.5032, +0.3510, -0.1092], -[ +0.0511, -0.0599, +0.1841, -0.8882, +0.0525, -0.3541, +0.0433, -0.1261, +0.0162, +0.1454, -0.1783, -0.0316, -0.3561, -0.0368, -0.1523, -0.0316, -0.3457, -0.3479, +0.0538, +0.0486, +0.2256, +0.2214, -0.2621, -0.1839, -0.5137, +0.1165, +0.6656, +0.0503, +0.0873, -0.1878, -0.1921, +0.2522, -0.0986, +0.1153, +0.0146, -0.1281, +0.3227, -0.1664, +0.1350, -0.2205, -0.5590, +0.2381, +0.0040, +0.1401, -0.1006, +0.2203, +0.0003, -0.3206, +0.0841, -0.0811, +0.0334, -0.4282, +0.0514, +0.3130, -0.3297, -0.7562, -0.6687, +0.1493, -0.2895, +0.0330, -0.0522, -0.0344, -0.0445, +0.2461, +0.1029, -0.0819, +0.1022, -0.1762, +0.3195, +0.3768, -0.1304, -0.3867, +0.0612, +0.2747, +0.0988, -0.2813, +0.0673, -0.0986, -0.1960, +0.3117, +0.4376, -0.2246, +0.0653, -0.6025, -0.2824, +0.1253, +0.1103, -0.0164, +0.0923, -0.6137, -0.1106, -0.0949, +0.0222, -0.2851, -0.6090, +0.3805, +0.0241, -0.6162, -0.3778, +0.1081, -0.2740, -0.4324, +0.0444, -0.0095, +0.3937, +0.3219, +0.2689, +0.3449, -0.2085, +0.0058, +0.1157, +0.3068, -0.1081, +0.0492, +0.3065, -1.2474, +0.2053, +0.2817, +0.0623, +0.2150, +0.2198, +0.1147, -0.1015, -0.1031, -0.0451, +0.0376, +0.2254, +0.0209], -[ -0.0169, -0.0604, +0.2877, -0.1686, -0.4482, +0.0314, +0.2172, +0.1723, +0.0741, -0.2761, +0.1693, -0.8680, +0.0031, -0.0404, -0.4078, -0.0810, -0.3430, -0.6617, -0.3425, -0.6256, -0.7409, +0.0998, +0.0474, +0.3679, -0.0050, -0.5611, -0.4910, -0.5262, -0.2379, -0.4393, +0.1462, +0.2483, -0.1588, +0.2005, -0.5252, +0.0151, -0.3319, +0.0406, +0.4338, +0.0637, +0.1664, -1.1421, -0.2365, -0.1607, -0.0290, -0.5984, -0.4693, +0.0467, -0.0012, +0.3251, +0.1958, -0.0804, -0.7314, -0.1476, -0.1025, +0.3531, +0.2127, -0.3839, -0.6296, -0.7256, -0.2204, +0.0764, +0.2899, +0.1862, -0.0494, +0.2561, -0.0449, +0.2790, -0.7467, -0.2865, +0.2949, -0.0701, -0.0996, +0.1522, -0.0759, -0.0049, -0.7066, +0.3156, -0.7882, +0.0381, +0.2132, +0.0298, -0.4265, -0.3965, -0.3363, +0.1940, -0.0694, +0.4697, -0.2407, +0.6420, +0.3157, -0.0241, -0.6270, -0.0073, +0.1130, +0.0754, -0.8163, -0.8336, -0.3623, -0.2553, +0.0084, +0.0387, -0.2942, -0.0090, +0.1405, +0.1282, +0.2211, -0.3763, -0.1025, -0.0896, -0.2683, -0.9967, -0.2878, +0.3319, +0.2503, -0.5689, +0.3452, -1.0338, -0.3079, -0.0044, -0.3365, +0.3562, -0.1525, -0.2294, -0.1894, -0.1983, +0.1567, -0.2359], -[ -0.0570, -0.0035, -0.1085, -0.2073, +0.4247, +0.5745, -0.0834, +0.1219, -0.0647, +0.0004, +0.1385, -0.0961, -0.7110, +0.2763, +0.1065, +0.1899, -0.0486, +0.0246, +0.0287, +0.2503, -0.2266, -0.0481, -0.1691, -0.0255, +0.4673, -0.1571, -0.1535, +0.0183, +0.3671, -0.2369, -0.0746, -0.0955, -0.1798, +0.1144, +0.1677, +0.2165, +0.3943, -0.1282, -0.2807, +0.2186, +0.4556, -0.6916, -0.2792, -0.0586, -0.2734, -0.1170, -0.0228, +0.2690, +0.1143, -0.1499, +0.5431, -0.1985, -0.7879, -0.1396, +0.2797, +0.1203, -0.7824, +0.2903, -0.4140, -0.6172, +0.3242, +0.1498, +0.0247, +0.2962, -0.8028, +0.2890, -0.1965, -0.0129, -0.0992, +0.2236, -0.3626, +0.2046, -0.0217, +0.3033, +0.0914, +0.2253, +0.0248, +0.3805, -0.3047, -0.1004, -0.0272, +0.2342, +0.0563, +0.3069, +0.0745, -0.3821, +0.0711, -0.7773, -0.1946, -0.1961, +0.1362, -0.2716, +0.2950, -0.0612, +0.6512, +0.0969, +0.0307, -0.0551, -0.1432, +0.1772, +0.2834, +0.0021, -0.1967, -0.0748, -0.8109, -0.2427, +0.1941, -0.2387, -0.4988, +0.0238, -0.3751, +0.2733, -0.3932, -0.2760, -0.4297, +0.2314, -0.2156, +0.2283, +0.0694, +0.0708, +0.4381, +0.3897, -0.0882, -0.0637, -0.1472, +0.3525, +0.1368, -0.0402], -[ -0.3530, -0.5150, -1.0880, -0.2520, -0.2172, +0.2756, -0.2780, +0.0979, -0.1995, -0.1980, +0.1447, +0.2055, +0.0027, +0.1933, -0.6685, +0.2479, -0.5245, +0.4362, -0.0070, -0.1925, -0.1128, -0.6193, +0.0880, +0.4711, +0.1259, +0.5208, +0.5132, -0.3138, +0.4663, +0.2682, -0.0692, -0.6345, +0.1914, +0.3206, -0.5735, -0.8801, -0.1955, -0.3452, +0.0909, +0.0334, -0.0151, +0.0543, -0.6285, -0.0647, -0.4782, +0.5517, +0.3845, +0.1159, -0.4817, -0.0745, -0.0854, +0.4088, -0.0797, +0.2279, -0.3298, -0.4108, +0.2491, -0.5260, -0.0064, -0.4384, +0.0553, +0.3033, -0.2337, -0.3878, +0.2967, -0.2941, +0.0753, -0.4714, -0.1681, -0.0260, +0.1851, +0.4597, -0.0371, -0.3989, +0.3471, +0.0798, +0.2839, +0.3062, -0.1411, -0.3525, -0.1531, -0.4704, -0.1705, -0.4999, -0.0718, -0.1775, +0.0318, -0.1134, +0.0908, -0.6092, -0.4720, +0.3346, -0.4978, +0.3479, -0.0138, +0.2375, -0.3084, +0.2583, +0.0461, -0.4013, +0.2030, -0.5811, +0.1679, -0.2213, +0.3122, -0.1401, -0.2003, -0.7862, +0.0830, -0.3101, -0.2623, -0.3978, +0.1701, -0.2840, +0.4737, +0.0327, +0.0045, +0.0757, -0.4991, +0.0256, +0.1016, -0.3346, +0.3302, +0.0446, +0.0708, +0.0519, -0.7765, +0.0222], -[ +0.2352, -0.8497, +0.2003, +0.2408, -0.1288, +0.4822, -0.5753, -0.4436, +0.2289, -0.3858, +0.0099, -0.6361, -0.8859, -0.9679, -0.5093, -0.2781, -1.0494, -0.3172, -0.0794, -0.1513, +0.0017, -0.1444, +0.0461, -0.8819, +0.3445, -0.4579, -0.9770, -0.4005, -0.1127, -0.0783, +0.0894, -0.0854, -0.1345, -0.6270, +0.1239, -0.4224, +0.3797, -0.5783, +0.1312, -0.5306, -0.2802, -0.2840, -0.0292, -0.3782, -0.4438, -0.5626, -0.1498, -0.0986, -0.4168, -0.1230, +0.0887, +0.0523, +0.2314, +0.2284, -0.4526, -0.1328, -0.3989, -0.1967, +0.2055, -0.1591, +0.0133, -0.1824, -0.0594, +0.0136, +0.5751, -0.0361, -0.3591, -0.6668, -0.2257, -0.1520, +0.0634, +0.2491, +0.0506, -0.9579, -0.1170, -0.2154, -0.1787, -0.1415, +0.0832, -0.1282, +0.0508, -0.1948, -0.1902, -0.2606, +0.2194, +0.3408, +0.7152, -0.1295, +0.0256, -0.4642, +0.1827, -0.5180, -0.3476, -0.2169, +0.1830, +0.5584, -0.0465, -0.4256, -0.1112, +0.0975, +0.0786, +0.2291, -1.1092, +0.0160, +0.5408, +0.5381, -0.0494, +0.1992, +0.1385, +0.2556, -0.2004, -0.3699, -0.1885, -0.4380, +0.1133, -0.0068, +0.0086, +0.3885, -0.2023, +0.1090, +0.0338, +0.1674, +0.0075, -0.0253, +0.3525, -0.2267, -0.1488, +0.2088], -[ -0.4511, +0.2492, +0.2704, +0.1831, -0.9101, +0.0102, -0.1057, -0.8869, -0.0196, +0.1631, -0.0486, +0.1688, +0.4076, +0.0991, -0.2779, -0.4349, -1.2246, +0.2117, -0.1527, +0.0719, +0.0292, -0.1029, -0.2796, +0.2515, +0.1742, +0.2987, +0.1194, -0.1826, +0.4833, +0.2756, -0.3501, +0.0634, +0.1782, -0.1746, +0.6214, +0.0165, +0.3410, -0.2896, -0.6587, +0.4601, +0.2410, +0.0719, -0.0876, +0.0964, -0.6097, +0.0427, +0.0527, +0.1539, -0.3052, +0.4262, -0.2022, -0.1612, +0.3230, +0.2676, +0.0908, +0.2014, -0.2910, +0.3253, +0.0506, -0.2313, -0.0297, -0.1276, -0.2745, -0.0348, +0.2771, -0.0927, -0.0905, -0.2970, +0.2193, -0.2006, +0.2765, +0.1247, +0.0329, -0.6421, +0.1374, -0.1748, +0.4102, +0.4506, -0.6507, -0.6586, -0.0077, +0.2061, +0.0054, -0.0784, -0.4267, -0.0148, +0.0463, -0.2552, +0.1104, -0.3906, +0.1342, +0.0578, +0.0765, -0.0895, +0.1852, -0.0122, -0.5316, +0.1063, -0.0456, -0.1369, -0.0865, -0.5290, +0.1828, +0.0464, -0.0730, +0.0703, +0.3396, -0.2793, -0.0879, +0.1142, -0.4983, -0.2335, +0.2401, +0.2068, -0.8825, +0.1257, +0.2214, -0.2166, +0.1653, +0.3210, +0.1047, -0.3401, -0.2385, +0.0291, +0.1357, +0.2093, -0.0340, -0.3141], -[ +0.1509, -0.4156, +0.0124, -0.3201, -0.1686, -0.5800, -0.0668, -1.0335, -0.4003, -0.2027, +0.3425, +0.1933, -0.0349, -0.7079, -0.2775, -0.4741, +0.4262, -0.0031, +0.2824, +0.0378, +0.2010, +0.0746, -0.5107, +0.3209, -0.2157, +0.0365, -0.4268, +0.3348, +0.2247, -0.6249, +0.0583, +0.1924, -0.0249, +0.1212, +0.1220, +0.1288, +0.4253, +0.2421, -0.5863, -0.0741, -0.1657, +0.2783, +0.3562, +0.1916, -0.0541, -0.8604, +0.1010, +0.1593, +0.1802, +0.0834, +0.4616, -0.4634, -0.4277, -0.4486, +0.2401, -0.2046, -0.2680, -0.0147, +0.2740, -0.3955, +0.1451, -0.2403, +0.1208, -0.3403, -0.6243, -0.5142, -0.2383, -0.2082, +0.1303, +0.1696, +0.1715, +0.0123, -0.1368, +0.3441, +0.3786, -0.5501, -0.2421, -0.5898, -0.2502, +0.3170, +0.3795, -0.0645, -0.0694, -0.1911, +0.1236, -0.2289, +0.2881, +0.6332, -0.1825, +0.6702, -0.3359, -0.8106, -0.3585, -0.4815, -0.1021, +0.0106, -0.5865, -0.8872, -0.0985, +0.0015, -0.0345, +0.5343, +0.2811, +0.0912, +0.0469, -0.3250, -0.0948, -0.3609, -0.1401, -1.0964, +0.4992, -0.0578, +0.3129, +0.2559, -0.0144, +0.0816, -0.0184, +0.4842, -0.1783, -0.2273, -0.1418, -0.1769, -0.2076, -0.2487, -0.1892, +0.5479, +0.2416, -1.1550], -[ -0.0226, -0.2766, -0.0407, +0.3074, +0.0213, -0.5975, +0.1770, -0.0960, -0.2446, -0.2770, +0.1262, -0.9513, -0.2984, +0.0446, -0.0943, -0.2616, +0.0239, -0.5492, +0.4465, +0.0065, +0.0010, -0.0149, -0.4097, -0.4551, +0.2670, -0.2155, -0.1524, -0.3310, +0.1853, -0.0637, +0.0573, -0.9693, +0.4261, -0.1663, +0.0867, -0.4469, +0.3294, -0.3992, -0.3523, -0.2251, +0.1734, -0.3534, -0.4647, +0.3062, -0.9341, -0.5579, +0.0653, -0.2724, -0.0228, -0.9354, -0.1961, -0.1640, -1.0566, -0.4813, +0.3327, -1.0083, -0.3001, +0.0325, +0.3306, -0.1230, -0.2375, +0.0032, +0.2920, -0.3126, -0.2098, -0.0256, -0.7467, +0.2818, -0.0679, -0.6253, +0.1897, -0.4966, -0.0483, -0.0789, -0.3303, -0.1269, -0.0572, +0.1733, -0.1383, -0.3690, -0.6356, -0.0022, +0.0004, -0.1166, -0.1519, -0.1474, -0.6849, -0.1765, +0.2742, +0.2615, -0.3996, +0.1557, +0.3877, +0.2612, +0.0720, +0.1269, +0.0021, -0.3567, +0.2404, -0.0437, -0.2752, +0.3435, -0.3367, +0.0966, +0.0768, -0.1641, -0.1718, +0.1741, +0.1265, +0.1385, -0.2087, -0.3582, -0.1921, -0.9307, -0.9568, -0.3368, +0.0096, -0.7161, +0.2933, +0.1471, -0.1262, -0.8555, -0.3831, -0.0929, +0.1830, +0.2965, +0.1805, -0.3333], -[ -0.6617, -0.2063, +0.1897, -0.3534, -0.3702, -0.0451, -0.3350, -0.8321, -0.0286, -1.3071, -0.7057, +0.1774, -0.1119, -0.4433, -0.2753, +0.4017, -0.5007, +0.1169, -0.3372, +0.0180, -0.5032, -0.3088, -0.3792, +0.4676, +0.2452, -0.1603, +0.1613, -0.2126, +0.2835, -0.4027, -0.1132, +0.0827, -0.3475, +0.4035, -0.0218, -0.2401, -0.7082, -1.2549, -0.1784, -0.9776, -0.2159, -0.4799, -0.2763, -0.0117, -0.6042, -0.0829, +0.1599, +0.0328, +0.1734, -0.7256, +0.0029, -0.4375, -0.0721, -0.0497, +0.0996, -0.3279, +0.2019, -0.3101, +0.1263, +0.3769, +0.0080, -0.0158, -0.1871, -0.1913, +0.2896, +0.1169, +0.1006, +0.2309, -0.5700, +0.1791, +0.2727, -0.1177, -0.2681, -0.3113, +0.6591, +0.2119, -0.7700, +0.0006, +0.2870, -0.2737, +0.2486, -0.6461, -0.2994, +0.2014, -0.3764, -0.1282, +0.2740, +0.2980, -0.6992, -0.4370, +0.1801, +0.0388, -0.3980, +0.1607, +0.3510, -0.4133, +0.4919, +0.0275, -0.0699, -0.5404, +0.3851, -0.0232, -0.2654, -0.4020, -0.2255, -0.2313, -0.9648, +0.6075, -0.2185, -0.5611, -0.3511, +0.1640, +0.0506, +0.0706, +0.6571, +0.3653, -0.2684, +0.2183, +0.3659, +0.2213, +0.0053, +0.2794, -0.1368, -0.4535, -0.3353, -0.5793, -0.3723, -0.1607], -[ +0.0851, -0.7146, -0.3641, -0.2697, -0.2895, +0.4775, +0.4939, +0.0906, +0.2984, +0.2729, +0.3187, -0.0564, -0.1233, +0.1748, -0.1472, +0.2479, -0.1721, -0.4380, +0.0004, -0.2892, -0.2789, -0.1907, +0.3521, +0.5049, +0.0746, +0.2210, +0.1904, +0.3478, -0.0762, +0.3022, +0.0547, +0.0419, +0.3905, -0.1107, -0.5711, -0.3298, -0.3783, -0.1515, -0.1729, +0.0539, -0.4599, -0.0842, -0.2026, +0.0296, -0.2899, +0.1716, -0.0626, -0.6165, -0.4515, -0.0154, -0.0304, -0.3263, +0.0160, -0.5956, -0.1647, +0.0081, -0.0710, -0.2569, +0.1188, -0.1001, -0.4712, +0.3204, +0.2636, -0.0104, +0.0050, +0.1129, -0.1157, -0.3358, -2.1329, -0.2338, -0.1677, -0.1452, -0.2891, +0.0020, +0.0007, +0.0554, +0.1253, -0.8101, -0.3325, -0.3834, -0.2929, -0.0590, -0.2766, +0.1002, +0.5098, -0.3646, +0.0664, -0.1998, -0.2525, -0.2219, +0.2303, -0.1734, -0.6847, +0.2977, -0.2324, +0.0326, -0.4338, +0.2096, +0.4209, -0.0370, +0.3264, +0.2397, -0.5066, -0.1127, -0.0788, +0.0814, +0.1539, +0.0985, +0.2055, -0.0177, -0.2530, -0.1973, -0.1481, -0.1604, -0.3673, +0.0777, -0.0657, -1.0528, +0.0678, +0.2747, +0.1877, +0.0321, +0.0170, +0.1689, +0.2022, +0.1856, +0.0258, -0.1536], -[ +0.3747, -0.8965, +0.0434, +0.7009, -0.1136, -0.2072, +0.2321, +0.4370, +0.1272, +0.2166, -0.1220, +0.3366, -0.0243, +0.3041, +0.0484, +0.0553, -0.7935, +0.4103, -0.2677, -0.1131, -0.1754, +0.2357, +0.3115, -0.2337, -0.0957, -0.1783, +0.3558, +0.2635, +0.2719, -0.5404, -0.1253, -0.0577, +0.1686, -0.0366, -0.3250, +0.1275, +0.2737, +0.0290, -0.8748, -0.9066, -0.4188, -0.3009, -0.3768, -0.2709, -0.2049, -0.1147, +0.6348, -0.1960, +0.0297, -0.1380, +0.2106, -0.3213, -0.2365, -0.4367, +0.0547, +0.1524, -0.1394, -0.0871, +0.1372, -0.0115, -0.0347, -0.4016, +0.1562, -0.0822, +0.4958, +0.2997, -0.1420, -0.2357, +0.0157, -0.0102, +0.3696, +0.3503, -0.4923, +0.1582, -0.2828, -0.3004, -0.5591, -0.0709, +0.5016, -0.1841, +0.3495, -0.1862, +0.1328, -0.2996, +0.2465, -0.1009, -0.1928, -0.1735, -0.0492, +0.4520, +0.1538, -0.2013, -0.7360, -0.0877, -0.3516, -0.1994, -0.3337, +0.4206, -0.1170, -0.3153, +0.1003, +0.2390, -0.0484, +0.3297, +0.1602, +0.0272, -0.1295, +0.0217, -0.2404, -0.2932, +0.3110, -0.4606, +0.2434, +0.2869, -0.2912, -0.1785, -0.1819, +0.2711, +0.1350, +0.0819, -0.2369, +0.1394, -0.0855, +0.1154, +0.0813, -0.2701, +0.2138, +0.4069], -[ -0.0043, +0.3281, -0.1662, -0.8932, -0.0552, +0.1265, -0.2043, -0.5624, +0.1053, -0.0888, +0.4344, -0.3253, -0.5146, -0.8764, -0.4591, +0.4482, -0.1959, +0.3864, -0.4813, +0.3479, +0.0575, +0.0785, +0.2779, -0.1017, +0.3176, +0.2662, -0.2649, -0.3473, +0.1510, -0.2098, -0.5315, -0.4409, -0.4698, -0.5749, -0.6635, -0.1049, +0.0455, -0.4050, -0.2375, +0.0991, -0.4461, -0.0632, -0.6009, +0.6056, -0.8435, -0.0023, -0.1964, +0.2123, -0.0142, +0.1413, +0.2556, +0.3415, -0.2429, +0.1089, -0.1574, -0.3169, -0.0678, -0.3286, -0.0729, +0.0983, -0.1369, -0.0938, +0.3131, -0.2110, +0.0971, -0.7305, +0.1432, -0.3721, +0.1880, -0.0548, -0.1182, +0.1969, +0.2977, -0.2977, -0.2096, +0.0445, -0.6944, -0.5378, -0.5014, -0.0950, -0.3620, +0.0405, -0.0252, -0.7178, -0.5523, -0.0239, +0.0231, -0.1037, -0.2041, -0.0836, -0.1387, -0.0343, -0.3595, -0.5219, -0.4476, -0.0809, -0.4728, +0.3246, -0.2249, -0.2183, -0.7926, -0.0352, -0.0190, +0.3452, -0.1591, +0.3696, -0.4686, +0.0986, -0.9023, +0.1854, -0.2085, +0.3363, +0.0091, -0.2846, +0.1494, -0.1706, -0.4503, -0.4990, -0.0634, +0.3556, -0.5834, -0.6676, +0.2790, +0.1890, +0.3284, +0.0446, +0.1030, +0.0876], -[ -0.2120, +0.0071, +0.3438, +0.1093, -0.6507, +0.6090, +0.3425, -0.0316, -0.0309, +0.4112, +0.0356, -0.0574, -0.3275, -0.1926, -0.1430, -0.3851, +0.2416, -0.2657, -0.2396, +0.2256, +0.2593, -0.1899, +0.0236, -0.1460, +0.0051, +0.0033, +0.0712, +0.0923, -0.1382, -0.0320, -0.0092, +0.2261, +0.4913, -0.1333, +0.4926, -0.8613, +0.2225, +0.0803, +0.0469, -0.0481, -0.1195, -0.2777, +0.1509, +0.3337, +0.1195, -0.1087, +0.4973, -0.2950, -0.1029, -0.5348, -0.1490, +0.1192, +0.1864, -0.3517, +0.1809, -0.0716, -0.0920, +0.4015, +0.0896, -0.1136, +0.2085, -0.0759, -0.0774, +0.1050, +0.0016, -0.0271, -0.1162, -1.1436, -0.3196, +0.1283, -0.2617, +0.1144, +0.0324, +0.3282, -0.6012, +0.2198, +0.1904, +0.0137, +0.0027, +0.2111, +0.1956, +0.1385, +0.4990, +0.0407, -0.3372, -0.3019, -0.0395, -0.0328, -0.0521, +0.0076, -0.5393, +0.3007, -0.2643, +0.1612, +0.0884, -0.0111, +0.0799, -0.7185, -0.3968, -0.0132, -0.1737, -0.2697, -0.2280, -0.3017, +0.0788, -0.4552, +0.3144, -0.0408, -0.0077, +0.0891, -0.2190, +0.0138, +0.0917, -0.8516, -0.2129, +0.2928, +0.0620, +0.0044, -0.1692, -0.2835, -0.1354, -0.2268, +0.4136, -0.0388, +0.0217, -0.2669, +0.3263, -0.1736], -[ +0.0155, -0.2370, +0.1414, +0.2033, -0.0438, -0.2154, +0.1421, +0.4094, -0.0440, +0.0001, -0.0688, -0.0387, -0.0866, +0.0234, +0.1278, +0.5121, -0.3053, +0.3119, -0.0025, +0.1399, +0.2615, +0.1286, -0.4551, -0.1550, +0.0915, +0.0047, +0.3107, -0.0851, +0.2735, -0.0679, +0.4395, +0.1584, +0.1137, -0.2560, +0.0790, -0.7086, +0.2060, +0.1295, -0.4738, +0.3582, +0.1165, -0.0885, -0.3017, +0.0804, +0.4033, -0.0120, -0.0980, -0.0973, -0.1828, +0.1257, -0.0221, -0.1673, +0.0704, -0.9063, +0.0057, -0.5036, +0.1917, -0.2066, +0.4245, +0.0318, +0.1543, +0.1364, +0.1110, +0.0109, -0.1637, -0.4457, +0.1703, -0.4334, -0.3975, -0.0788, -0.8011, -0.4504, -0.1528, -0.4640, +0.0702, -0.4101, +0.1216, +0.3000, +0.0703, +0.0438, +0.1167, -0.0784, -0.1060, +0.1810, -0.4500, +0.2189, -1.7514, +0.0991, -0.2551, -0.0982, +0.4388, -0.1455, +0.1632, -0.0970, +0.1605, -0.2925, -0.0457, -0.0151, -0.1341, -0.1796, +0.0066, +0.4341, -0.0714, +0.1773, -0.0921, -0.1575, +0.1412, -0.1414, -0.0610, +0.4201, +0.2309, -0.1946, +0.1358, +0.7627, +0.1831, -0.3064, -0.3551, -0.1171, +0.2519, +0.3378, +0.2110, +0.0373, +0.1848, +0.3885, +0.2155, +0.0863, -0.5890, +0.0743], -[ +0.0182, -0.1883, -0.6631, +0.5677, -0.5440, +0.0245, +0.3588, +0.0641, +0.0966, -0.0925, -0.5501, +0.1348, +0.1055, +0.5336, -0.8665, +0.4698, -0.2632, +0.5336, -0.4260, -0.1665, +0.4270, -0.1332, -0.0245, +0.0564, +0.3786, -0.0122, -0.1088, -0.3233, -0.1278, -0.1444, -0.2962, +0.4475, +0.1047, -0.1643, -0.1281, +0.2289, +0.0270, +0.4817, +0.1453, -1.3391, -0.2822, -0.1324, +0.1118, +0.0835, -0.0098, -0.2084, +0.0938, -1.0917, -0.5472, -0.3066, +0.0576, +0.2012, -0.1528, +0.0457, -0.2754, +0.0613, +0.1439, +0.0561, -0.0826, +0.5787, -0.2637, -0.0173, +0.1257, -0.2113, -0.0744, +0.4072, -0.4176, +0.0416, +0.4589, +0.1866, +0.2454, +0.1263, +0.1601, +0.0868, +0.1507, +0.0097, -0.6406, +0.6083, +0.1109, +0.2638, +0.1649, +0.0927, -0.5556, +0.0488, -0.5317, +0.2316, +0.0583, -0.0957, -0.0665, -0.3055, +0.2008, -0.1105, +0.0526, +0.2925, +0.3545, -0.4015, +0.2288, -0.4131, -0.4981, -0.4997, -0.2136, +0.1870, -0.0244, +0.0246, +0.2653, +0.4428, +0.2824, -0.4785, -0.9843, +0.0433, -0.0186, +0.0102, -0.8037, +0.1494, +0.4971, -0.1108, -0.6246, -0.2126, +0.1190, +0.4053, -0.3695, -0.3815, +0.0340, -0.1802, +0.0211, +0.1777, -0.3005, -0.2552], -[ +0.2004, +0.2356, -0.5709, -0.5708, +0.2924, +0.4323, +0.1297, +0.2750, -0.0734, +0.0431, -0.2452, -0.5162, -0.4122, -0.4930, -0.1639, -0.3837, -0.3109, -0.0843, -1.3438, +0.0811, +0.0375, +0.0927, -0.2406, +0.2618, +0.3423, +0.0204, -0.1088, +0.6157, -0.1865, +0.1572, -0.5798, +0.1508, +0.3722, -0.0579, -0.1435, +0.6693, +0.1231, -0.9347, -1.1010, -0.0392, -0.4953, +0.1732, +0.1799, -0.5806, -0.1522, +0.3462, -0.4792, +0.0979, +0.1711, +0.0340, -1.0322, +0.4084, +0.1385, +0.5142, +0.0469, +0.3607, -1.2152, +0.4525, -0.1598, +0.2392, +0.4580, -0.1603, +0.0590, +0.1579, -0.0728, +0.1036, -0.1632, -1.2391, -0.2145, +0.0103, -0.3512, -0.0903, +0.0272, +0.0086, -0.2944, -0.0288, -0.0366, +0.1928, +0.0068, -0.3559, -0.3333, +0.4022, -0.2541, -0.1739, -0.2509, +0.0441, +0.2231, -0.1894, -0.7537, -1.1920, +0.2437, -0.8615, -0.0989, -0.3735, +0.3742, -0.5821, -0.1481, -0.6466, +0.3485, +0.2031, +0.4351, -0.3899, -0.3738, +0.2272, -0.4457, +0.6285, -0.0607, +0.0108, -0.2060, +0.4806, -0.1531, -0.1021, +0.3920, -0.5004, +0.3624, -0.4629, -0.8398, -0.2456, +0.1091, -0.0625, +0.2268, -1.6001, -0.3938, -0.3500, -0.3051, -0.2040, +0.0390, -0.4721], -[ -0.3022, -0.0614, +0.3227, +0.3258, +0.1829, -0.2162, +0.2816, +0.3304, -0.1239, -0.0488, -0.1537, -0.1453, -0.0516, -0.2436, -0.4591, +0.4256, +0.3201, -0.1900, +0.5326, -0.1762, +0.1857, +0.2527, +0.3378, +0.1798, -0.1895, -0.0907, -0.3874, -0.0647, +0.4037, -0.2238, -0.0007, +0.1155, +0.1539, +0.2993, +0.2837, +0.3176, +0.2363, +0.0887, +0.0100, -0.3757, +0.0574, +0.1496, +0.4044, -0.3430, +0.3170, -0.2672, -0.0940, -0.1000, -0.0344, -0.0184, -0.4171, -0.1734, +0.0607, -0.6139, +0.1013, -0.5632, -0.1350, -0.1744, -0.1074, +0.2626, -0.4944, +0.2618, +0.2167, -0.2696, -0.1595, +0.1046, -0.0595, -0.1161, -0.0970, +0.2536, -0.1802, -0.2739, +0.1305, +0.0946, -0.1306, -0.1129, -0.9528, +0.2189, +0.2996, -0.4154, -0.3056, -0.6129, -0.0537, -0.2411, -0.2312, -0.8520, -1.0059, +0.0899, -0.7894, -0.0853, -0.2207, -0.4817, +0.3636, -0.0798, +0.0561, -0.2849, -0.4502, -0.1363, -0.2469, +0.3731, +0.5374, +0.0841, +0.0315, -0.4913, -0.3189, -1.0521, -0.5281, -0.1126, -0.2068, +0.0868, +0.0138, +0.0721, -0.0431, -0.3770, +0.0936, +0.1577, -0.3322, -0.1826, +0.1674, -0.5866, +0.0351, +0.2552, +0.1250, -0.0942, -0.1962, +0.0093, -0.2697, -0.5545], -[ +0.1615, +0.2935, -0.2339, -0.1644, -0.4812, -0.1469, +0.1836, -0.0260, +0.1038, +0.0051, -0.2090, +0.0280, -0.7794, +0.6795, -0.5872, -0.1461, -0.0385, +0.3803, -0.5521, +0.0581, -0.3706, +0.0041, -0.3392, -0.1431, +0.1111, -0.2455, -0.5484, -0.0473, +0.1779, -0.2996, +0.1075, -0.4397, -0.0401, -0.1301, -0.6568, -0.0798, -0.0121, -0.1352, +0.0359, -0.1806, -0.5033, +0.1311, +0.1849, -0.1384, +0.1397, +0.1216, -0.2807, -0.2177, +0.0807, +0.0936, -0.1382, -0.1467, -0.1521, -0.2255, +0.0598, +0.1365, +0.5678, +0.3908, +0.0751, +0.0825, +0.1707, +0.3163, -0.2888, +0.4518, -0.3224, -0.0889, -0.1514, +0.1981, -0.2241, +0.6668, +0.3392, -0.4742, -0.5737, -0.1435, -0.4378, -0.1961, -0.4108, -0.2556, -0.2720, -0.1619, +0.0778, -0.3977, -0.1753, +0.1682, -0.9286, +0.0402, -0.2938, -0.4779, -1.0354, +0.1962, -0.1776, -0.3170, -0.6471, -0.6840, +0.3603, -0.0073, -0.4673, -0.0790, +0.3071, +0.1753, -0.0849, -0.0278, +0.1766, -0.0610, -0.4757, +0.4401, -0.5656, -0.2536, -0.0701, -0.3731, -0.1036, -0.3898, -0.0289, +0.2715, -0.3072, -0.2120, -0.2173, -0.4644, +0.0798, -0.0213, -0.3019, -0.1040, -0.1878, -0.1546, +0.2069, -0.6127, -0.4091, +0.2279], -[ -0.1616, +0.1920, +0.1014, -0.0909, +0.0145, -0.2210, -0.1181, -0.3008, -0.3765, -0.1992, +0.3382, +0.0976, -1.1094, +0.2842, -0.2898, +0.2845, -0.2418, +0.1514, +0.0978, -0.1733, -0.3379, +0.1197, -0.4883, -0.2083, +0.1838, +0.0287, +0.0604, +0.1619, +0.1728, +0.4742, -0.3182, +0.4426, -0.0365, -0.0127, -0.5295, -0.4743, +0.0849, -0.0805, -0.4109, +0.1614, -1.4226, +0.4493, +0.2344, -0.4937, -0.5029, -0.5183, -0.6976, -0.2641, +0.3224, +0.2891, -0.3939, -0.0937, -0.6690, +0.3257, +0.0313, +0.0669, -0.0067, -0.3012, -0.1921, +0.1498, -0.0979, -0.0243, -0.5519, -0.1389, -0.0937, -0.0250, -0.1927, -0.0076, -0.5131, +0.1311, -0.1710, +0.0207, +0.0884, -0.7379, -0.0203, -0.0612, -0.2079, -0.0351, +0.2035, +0.0780, -0.0162, +0.2750, +0.4183, -0.1577, -0.1753, +0.2562, -1.0168, +0.1747, +0.2743, +0.0517, +0.3541, -0.7459, -0.1915, +0.3513, -0.5534, -0.4537, +0.0509, -0.0182, +0.5520, -0.2539, +0.1043, -0.0835, +0.1560, -0.4157, -0.3888, -1.0013, +0.1237, -0.1892, -0.2924, -0.0770, -0.1539, +0.0584, +0.2750, -0.7014, +0.1112, -0.8686, -0.1950, +0.3239, -0.3715, +0.1402, -0.4844, +0.0385, +0.2606, +0.0635, +0.4359, -0.1276, +0.0488, -0.1812], -[ -0.2257, +0.0773, -0.0787, -0.8145, -0.0035, +0.0791, +0.2380, +0.1795, -0.5526, +0.3664, +0.2228, +0.1296, +0.6047, +0.3141, +0.4738, +0.2000, -0.2376, -0.2267, -0.1316, -0.5586, +0.1255, +0.0639, +0.1139, +0.0778, +0.1900, -0.6426, -0.3881, +0.2221, -0.8642, -0.0580, -0.0676, +0.2764, +0.0961, -0.3804, +0.0049, -0.4898, +0.3451, +0.1736, +0.3209, -0.2867, -0.3720, +0.0790, +0.6253, -0.7831, -0.3206, -0.0212, -0.0588, +0.1469, +0.1038, -0.1286, -0.0949, -0.0012, +0.3334, -0.5558, -0.2380, -0.2472, -0.2044, +0.1273, -0.8578, +0.1045, +0.0777, +0.3149, -0.4468, +0.1662, +0.0245, +0.0048, +0.0732, -0.8559, -0.2673, -0.1365, +0.1069, +0.1675, -0.0243, -0.1494, -0.4602, +0.0707, +0.3498, +0.1787, +0.2132, -0.0321, +0.0414, -0.0639, -0.3626, -0.0816, -1.8070, -0.0416, -0.3509, -0.0839, +0.0971, +0.3717, -1.3572, -0.4161, -0.2754, +0.0381, -0.0573, -0.0994, +0.3593, -0.1043, -0.0163, -0.1476, +0.1589, +0.4257, -0.2970, -0.5698, +0.3863, +0.2686, +0.0482, -0.0944, +0.1331, +0.0357, +0.0755, -0.4084, -0.2992, +0.2044, -0.0392, -0.4598, -0.3108, +0.1207, -0.2360, -0.1267, -0.2619, +0.4096, -0.1688, +0.2868, -0.5821, +0.1525, -0.4231, +0.0109], -[ -0.0724, -0.0569, +0.1110, +0.7015, +0.2150, -0.3258, +0.0238, -0.2165, -0.1377, -0.1190, -0.0544, -0.1684, -0.2426, -0.0589, +0.2703, -0.2435, +0.2604, +0.2724, +0.0233, -0.2484, -0.5349, +0.0235, -0.0343, +0.1033, +0.0624, -0.1012, +0.3028, -0.6019, -0.2010, +0.4329, -0.7220, +0.1351, -0.1582, -0.8447, +0.0252, +0.2037, +0.1885, -0.4467, +0.0800, +0.2428, -0.1837, +0.2668, +0.0918, -0.0543, +0.1162, +0.0373, -0.1237, -0.6168, +0.4818, +0.0647, -0.3592, -0.5189, +0.2507, -0.5949, -0.8103, +0.1198, +0.4756, +0.0864, -0.0251, +0.1088, +0.0609, -0.0312, -0.4809, -0.1572, +0.0553, -0.1143, -0.1842, +0.2976, -0.2974, -1.0971, -0.4408, -0.3143, +0.5055, -0.4452, +0.1820, +0.0200, -0.2003, -0.0919, -0.1473, -0.1535, -0.0642, -0.1600, -0.5350, -0.2826, +0.3417, +0.2849, -0.3180, -0.1584, -0.5675, -1.6666, +0.8093, -0.0156, -0.2032, -0.1265, -1.4899, +0.5463, -0.1488, -0.4031, +0.0976, +0.5301, -0.2840, -0.3094, -0.2234, +0.3683, -0.0944, +0.5421, -0.0122, -0.2672, -0.2964, -0.3131, -0.4262, +0.1600, -0.1936, +0.3966, -0.1236, +0.1211, +0.2328, +0.2918, +0.2658, -0.5119, +0.2610, +0.4373, +0.1166, -0.0285, -0.0640, +0.3028, +0.2157, -0.2036], -[ +0.2060, -0.7198, -0.0637, -0.0691, -0.1999, -0.6094, +0.4137, +0.0133, -0.2984, -0.0601, -0.0906, -0.1603, +0.2187, -0.4607, -0.3172, +0.1708, -0.6526, -0.4009, -0.5505, -0.5653, +0.7064, +0.0422, -0.4426, +0.0131, -0.0002, -0.1376, +0.2926, +0.0126, +0.0874, -0.7527, +0.2649, +0.3604, -0.3190, -0.0552, -0.1076, -0.7917, +0.2737, +0.2336, +0.1607, -0.0936, +0.2779, +0.2857, -0.8036, +0.2438, -0.2431, -0.0384, -0.4604, +0.2271, -1.1452, -0.1645, -0.0945, +0.6792, -1.7714, -0.3705, +0.2336, -0.0873, +0.3343, +0.2267, +0.2098, +0.2570, +0.3344, -0.1118, +0.4322, -0.6313, -0.2162, +0.4774, +0.2601, -0.2064, +0.0603, +0.2432, -0.2734, -0.0344, +0.0567, +0.2296, -1.0831, -0.1071, +0.2035, +0.0159, -0.1171, -0.3691, -0.4016, +0.3090, +0.3621, +0.2171, -0.4360, -0.2791, -0.2063, -0.2152, +0.2909, -0.4471, -0.2297, +0.8118, +0.1339, +0.0152, -0.0114, -0.2208, -0.0052, -0.8449, -1.1836, +0.0290, -0.0787, +0.2016, +0.1342, +0.5637, +0.0171, +0.0770, -0.1697, +0.3954, -0.5966, +0.3807, -0.0180, -0.2932, -0.1104, +0.1367, -0.1308, -0.1754, -0.0219, +0.1121, +0.4986, -0.2689, -0.2428, -0.3462, -0.8776, -0.2025, +0.2807, -0.1059, -0.5864, +0.1239], -[ -0.8543, +0.0384, -0.1155, +0.0204, -0.5816, -0.4734, +0.1371, +0.0863, +0.2744, +0.2054, +0.0773, +0.2590, -0.3312, -0.2491, +0.1050, +0.0076, +0.7495, -0.0742, -0.0238, +0.0161, -0.3938, -0.5027, -0.8351, +0.0109, +0.0859, -0.1795, +0.4664, +0.0468, -0.8190, -0.4674, -0.0289, -0.0568, +0.3042, -0.0243, +0.4067, -0.0122, -0.3605, -0.0356, -0.5389, +0.2649, -0.2379, -0.0750, -0.0422, +0.1778, -0.0946, -0.2371, +0.4884, +0.4420, +0.2300, +0.1315, -0.7099, -0.6386, +0.2825, -0.5208, +0.1534, -0.3999, -0.5992, -0.0406, +0.0166, -0.0795, +0.3590, +0.2151, -0.0457, -0.0143, +0.2241, -0.7212, -0.2805, +0.0350, +0.3345, +0.2050, +0.2946, -0.1365, +0.1057, +0.0891, +0.1568, +0.1495, -0.0801, -0.6441, -0.0202, +0.1759, -0.0472, -0.0807, -0.0882, +0.5572, -0.2315, -0.6542, -0.0895, +0.4350, +0.0293, +0.1803, +0.1802, +0.1767, -0.6536, +0.1986, -0.4110, -0.2232, -0.0323, +0.3201, +0.0191, +0.2322, +0.4337, -0.0674, -0.4225, -0.1594, +0.1311, +0.0226, -0.2703, -1.4147, -0.2928, +0.2050, +0.2504, -0.0206, -0.0656, -0.1443, -0.7084, +0.0392, -0.2323, -0.3128, +0.1138, +0.1078, -0.0732, -0.4317, -0.1904, -0.4451, -0.7566, -1.4162, +0.2763, -0.0079], -[ -0.2445, -0.0289, -0.4853, +0.2257, +0.1248, +0.2899, +0.5549, -0.6865, +0.3759, +0.3559, -0.5557, +0.9189, +0.3194, -0.4420, +0.3412, -0.2421, -0.1026, -0.1540, -0.0573, -0.2258, +0.0828, -0.2495, +0.1007, +0.2604, +0.1936, +0.0703, -0.0360, -0.1649, +0.3492, -0.1846, +0.3487, +0.3257, -0.0000, -0.4406, -0.1869, -0.1782, +0.1840, -0.0343, -0.7198, +0.2071, +0.0696, -0.2195, +0.0068, -0.7963, +0.1265, +0.1370, -0.9563, +0.3919, +0.2430, -0.0894, -0.0117, +0.3200, +0.0420, +0.1148, -0.2738, -0.0715, +0.1432, -0.4581, -0.5155, -0.3052, -0.1567, +0.1302, -1.0970, -0.0971, -0.2138, -0.3267, -0.0935, +0.1816, -0.1692, -0.1954, +0.2303, +0.3198, +0.1340, +0.1408, -0.3336, +0.0835, -0.4474, +0.3050, -0.4047, -0.2477, -0.2070, +0.0401, +0.0398, +0.2516, -0.7720, -0.1915, -0.6309, -0.0330, -0.6797, -0.6961, +0.0891, +0.4375, -0.2168, +0.1069, +0.3160, +0.1747, -0.1030, -1.2241, +0.2531, +0.1354, -0.0415, -0.3404, -1.0266, -0.1276, +0.5969, -0.1564, +0.1129, +0.0400, -0.0578, -0.0606, +0.0989, +0.3464, +0.0043, +0.6860, +0.4229, -0.2958, +0.0021, +0.1539, -0.2942, -0.1827, -0.7918, -0.2733, -0.3012, +0.3163, +0.6449, +0.0755, -0.0023, +0.3008], -[ +0.3292, -0.4600, -0.2368, -0.5775, -0.7181, -1.0912, +0.0097, -0.3995, -0.0740, +0.1452, -0.3534, +0.2343, +0.4270, -0.6943, -0.0541, +0.4397, +0.0648, -0.6699, +0.0365, +0.4883, -0.0351, +0.4127, +0.6032, +0.1121, +0.4368, +0.0890, +0.2924, -0.3962, +0.2734, +0.3251, -0.0507, -0.0383, +0.1511, -0.3659, +0.3886, +0.7162, -0.0206, -0.2900, +0.2168, -0.9789, -0.3338, +0.0695, -0.1823, -0.7149, -0.1873, +0.3715, -0.0325, +0.2337, +0.3856, +0.0501, +0.3579, +0.2856, +0.3989, -0.2874, -0.4166, +0.3062, +0.0409, +0.2058, +0.0766, -0.4073, +0.0854, +0.0107, +0.3501, -0.1334, -0.1888, -0.5053, +0.2562, +0.2204, +0.0627, -0.2237, -0.0872, +0.3259, -0.3321, -0.0036, -0.3308, +0.2035, +0.0371, -0.1404, -0.6656, +0.0847, +0.1002, -0.5794, +0.1400, +0.2236, -0.4732, +0.0393, +0.0006, +0.2971, +0.3604, -0.1838, -0.5973, +0.0732, -0.0168, +0.2215, -0.4204, -0.7825, -0.2269, -0.3065, +0.5988, +0.0914, -0.1381, +0.0627, +0.1538, -0.6371, -0.0142, -0.8962, -0.4744, +0.2219, -0.3128, -0.2203, -0.2630, +0.9754, +0.0823, +0.1649, -0.1055, -0.4134, -0.7077, +0.4749, -0.2811, -0.0077, +0.1772, +0.1821, +0.0246, +0.3625, +0.3433, -0.2289, -0.2507, -0.8835], -[ -0.1939, +0.0436, +0.2528, -0.6609, +0.1390, -1.4336, -0.5693, +0.3894, +0.0831, +0.1073, +0.0340, +0.1007, -0.3037, +0.1716, +0.0896, -0.1435, -0.3877, -0.6276, +0.2500, -0.1651, -0.0819, -0.1979, -0.1816, +0.2407, +0.0678, -0.0386, -0.1941, -0.0286, -0.3952, -0.1744, +0.1292, +0.0833, -0.0654, +0.4109, +0.1295, +0.2253, -0.3515, -0.0080, +0.1477, -0.1365, -0.0971, +0.3861, -0.0796, -0.1636, -0.0647, +0.3028, -0.3392, +0.1752, +0.2868, -0.3553, +0.1188, +0.3959, +0.3065, +0.3571, +0.1058, -0.2135, -0.7390, +0.2275, +0.2541, -0.0857, +0.3087, +0.1150, +0.2177, -0.2001, -0.0379, +0.1911, -0.1187, -0.0259, -0.0375, -0.1350, +0.1594, -0.1129, -0.1441, -0.0755, -0.4419, +0.3164, +0.1330, -0.1921, +0.2833, +0.2208, -0.1273, -0.2213, +0.5117, -0.0804, +0.4722, +0.0303, -0.2024, +0.1731, +0.3357, +0.1529, +0.1473, +0.2668, -0.6110, -0.1910, -0.1639, +0.0819, -0.2032, +0.0028, -0.2844, -0.0057, +0.0234, -0.0067, +0.0993, -0.4122, +0.1203, +0.0040, -0.1744, -0.0062, -0.2166, +0.0800, +0.1492, +0.3261, -0.3247, -0.7197, -0.6013, -0.1354, +0.1999, +0.1008, -0.2049, -0.1379, +0.1557, -0.2031, +0.1678, -0.3062, +0.1613, -0.0718, +0.0577, -0.0834], -[ -0.1187, +0.2618, +0.0063, +0.2099, -0.1586, -0.2358, -0.3519, +0.1998, +0.0078, +0.1211, -0.1145, -0.9083, -0.1128, -0.0192, -0.3810, +0.0399, +0.1867, +0.1068, +0.3138, -0.3072, -0.1813, -0.2035, +0.1736, -1.0007, +0.0814, -0.0195, -0.5193, +0.4088, -0.0983, +0.1483, +0.1296, -0.0802, -0.1514, -0.0559, +0.0924, +0.0835, +0.0193, +0.1214, +0.0020, +0.3976, +0.2305, -0.5994, -0.1194, -0.4752, -0.1739, +0.2590, +0.3508, -0.1952, -0.0730, +0.0301, +0.2076, -0.3132, -0.3458, +0.0809, +0.2525, +0.0654, -0.1330, +0.2629, -0.1284, -0.4209, -0.9248, +0.0366, -0.3677, +0.1167, +0.1655, +0.3207, +0.1227, -0.0964, -0.1669, +0.4400, -0.0029, +0.3308, -0.0242, +0.4327, -0.1141, -0.0905, +0.1539, -0.3635, -0.2321, -0.1246, +0.0583, +0.1127, -0.2506, -0.3656, -0.1202, +0.0766, -0.2925, +0.0298, +0.0138, +0.2904, -1.5442, +0.2856, -0.6961, +0.4513, -0.0339, -0.2846, +0.1909, +0.1684, -0.0259, +0.2024, -0.0441, -0.1487, +0.0404, -0.1716, -0.1252, -0.1987, +0.4694, -0.3612, -0.3200, -0.2843, -0.3819, +0.1937, +0.0362, -0.3731, -0.0374, -0.4585, +0.1277, -0.3004, -0.3509, -0.0308, -0.0008, -0.3450, +0.0562, +0.2136, -0.0996, +0.4031, +0.1754, -0.2497], -[ -0.3211, -0.3881, -0.1030, +0.1355, +0.0660, +0.4923, +0.2636, -0.3221, +0.0248, -0.5427, -0.6560, -0.1885, +0.1445, -0.1471, +0.2000, +0.3901, +0.1532, -0.4037, -0.1860, -0.1593, -0.1986, +0.2038, +0.1202, +0.1820, -0.0360, -0.3344, -0.1107, -0.5808, -0.0579, -0.2458, +0.3441, +0.1585, +0.1875, -0.1187, -0.1255, -0.0055, -0.2055, -0.1304, +0.0669, +0.0489, -0.5825, +0.1874, +0.2647, -0.2026, +0.2768, -0.5996, +0.3662, +0.6298, -0.3033, -0.2682, -0.2660, -0.8861, -0.6364, -0.3420, -0.0307, -0.2754, +0.2949, -0.7148, -0.6294, +0.1562, +0.3194, +0.0471, +0.0909, -0.2792, +0.2836, -0.0191, +0.1222, -0.5043, -0.2498, -0.1298, +0.4006, +0.4103, -0.3928, +0.2077, -0.2452, +0.2054, -0.1552, -0.4309, +0.0343, -1.6696, -0.4303, +0.2256, +0.5515, +0.0751, -0.1529, +0.1427, +0.2358, +0.1415, -0.3146, -0.1681, -0.0006, -0.0520, -0.4444, -0.5359, +0.1468, -0.0711, +0.4372, -0.5298, +0.8771, -0.2569, -0.6430, +0.1892, -0.1139, -0.4074, -0.7201, -0.0418, -0.3266, +0.0003, +0.4535, +0.1268, -0.5272, -0.7716, -0.9448, +0.2237, -0.2201, +0.2607, -0.5725, -0.2764, +0.2871, -0.3907, +0.1834, +0.4049, +0.0907, +0.0619, -0.1841, -0.3391, -0.2425, +0.2443], -[ +0.0044, -0.0938, -0.1635, +0.4508, +0.0008, -0.1920, -0.5501, -0.2096, -0.0345, -0.2105, -0.0856, -0.1852, +0.3503, +0.1157, +0.3174, -0.6982, -0.3644, +0.0821, -0.2948, +0.2354, +0.2017, +0.0596, -0.0695, +0.1014, +0.2119, -0.0946, +0.3157, -0.4530, +0.5291, -0.2025, +0.2689, +0.0790, +0.2240, +0.4927, -0.4468, +0.1653, -0.1062, -0.0732, +0.0502, +0.4100, -0.3097, -0.2078, -0.3420, +0.0346, -0.0076, +0.3243, -0.0226, +0.2451, +0.1862, -0.1988, -0.2310, -0.0977, -0.0465, -0.5966, -0.2639, -0.0674, +0.0989, -0.2327, -0.1221, +0.5440, +0.2191, -0.0528, +0.0179, +0.0621, -0.1507, +0.3330, +0.0974, +0.6166, +0.2579, +0.1087, -0.1443, -0.1559, +0.3311, -0.3219, -0.5031, -0.0537, +0.0231, +0.0159, -0.1383, +0.2483, +0.0414, +0.3417, -0.3250, +0.0239, -0.2226, -0.4233, +0.1867, +0.4125, +0.5429, -0.0561, +0.3033, -0.1362, +0.5635, -0.4615, -0.1335, -0.4040, -0.1319, +0.4685, -0.3952, +0.1174, -0.1500, -0.2757, -0.2611, -0.2070, -0.2966, +0.1199, +0.4392, -0.1217, +0.5326, -0.0656, +0.0844, +0.1816, -0.4291, -0.1323, +0.3416, +0.0577, +0.3040, -0.2354, +0.2567, +0.2439, +0.2705, -0.1417, -0.6640, -0.0532, +0.6087, -0.0658, -0.0909, +0.1410], -[ -0.2641, +0.3018, +0.3731, -0.0673, +0.1346, +0.0906, +0.2786, -0.4275, +0.1292, +0.0402, +0.3185, +0.3370, +0.2840, +0.3994, -0.0866, -0.6447, +0.0594, -0.1616, +0.0020, +0.1423, -0.2772, -0.0521, -0.0206, +0.4098, -0.0273, -0.0593, +0.1763, +0.2403, -0.3735, -0.0846, -0.1993, +0.1839, +0.3047, +0.1536, -0.3327, +0.4014, -0.2949, -0.0187, -0.5243, +0.2672, -0.3299, +0.1043, +0.1127, +0.0890, -0.1802, -0.0632, +0.2873, -0.0399, -0.1551, -0.9707, +0.1918, +0.0112, -0.2640, -0.3956, -0.2177, -0.6892, +0.0584, -0.5350, -0.1647, -0.5682, +0.2034, -0.2096, -0.3233, +0.0152, +0.3081, +0.1106, +0.3100, -0.6462, +0.3158, -0.0769, -0.1983, +0.3420, +0.1414, +0.1939, +0.3411, -0.1685, +0.6460, -0.7341, -0.3558, +0.1312, -0.3357, +0.3792, -0.4060, +0.0844, +0.0951, -0.1004, +0.4752, +0.0659, -0.0908, -0.2364, -0.2312, -0.4445, -0.2193, +0.1147, -0.4956, +0.3511, -0.1729, -0.1605, -0.3496, -0.6927, -0.6021, -0.2948, +0.1454, +0.1053, -0.2222, +0.4881, -0.0313, -0.2385, +0.6092, -0.0161, -0.1482, -0.3122, -0.5093, -0.0127, +0.2161, +0.1825, +0.2207, +0.1531, -0.3949, -0.2003, +0.4107, -0.6128, +0.0554, -0.2912, +0.2046, +0.7917, -0.4842, +0.3487], -[ -0.1636, -0.1889, +0.1837, +0.0307, +0.3844, -0.6145, +0.4970, +0.1542, -0.1090, +0.0654, +0.2867, -0.4968, +0.3081, -0.2133, -0.2872, -0.1607, -0.4343, -0.1214, -0.2483, +0.3282, +0.0996, +0.0945, -0.1804, +0.1673, -0.4416, -0.2894, +0.0027, -1.0474, -0.8138, +0.1556, +0.6001, -0.5053, +0.1911, -0.1100, +0.1678, +0.6663, -0.2437, -0.3869, +0.2897, -0.3511, +0.3809, -0.2296, -0.6157, -0.0193, -0.4319, -0.5355, -0.1712, +0.3763, -0.0612, -0.0028, +0.3869, +0.3688, -0.3870, -0.1244, +0.5586, +0.0828, -0.2207, -0.1263, -0.5042, -0.0715, -0.0629, -0.3301, -0.9379, -0.2114, -0.1565, -0.4103, -0.3744, -0.6565, +0.1173, -0.4422, -0.1021, +0.2637, -0.0076, -0.1485, +0.2321, +0.0961, -0.8970, -0.9947, -0.3813, +0.1262, -0.3759, -0.6302, -0.1707, -0.3562, +0.4030, +0.3772, -0.2768, +0.2423, -0.0218, -0.0481, -0.3578, +0.5549, -0.0864, -0.3918, -0.2347, +0.4424, +0.0342, -0.1054, -0.7497, +0.1735, -0.1695, +0.3116, -0.2343, -0.2572, -0.3376, +0.0541, -0.1745, -0.4482, +0.1636, -0.2555, -0.3657, -0.9135, +0.4915, +0.0485, -0.2742, +0.0542, +0.0372, -0.1820, +0.0424, -0.1208, +0.3088, -0.2771, +0.1068, -0.5486, -0.0197, -0.1391, +0.4899, +0.0168], -[ -0.2538, +0.0040, +0.1526, -0.0583, -0.1420, +0.1142, -0.1054, -0.5792, +0.0434, -0.0522, -0.2128, -0.1662, +0.9922, -0.1744, +0.1992, -0.0497, -0.0018, -0.5943, +0.1340, +0.4634, +0.6321, -0.0549, -0.4279, +0.1415, +0.1966, +0.3238, -0.4965, -0.0144, +0.3874, +0.2556, -0.2262, +0.1629, +0.0004, +0.2836, +0.1311, +0.1331, +0.2854, +0.2112, +0.0465, -0.1053, -0.6734, +0.2971, -0.1523, -0.0866, +0.2637, +0.1576, +0.3280, +0.2797, -0.2622, +0.0953, +0.2522, -0.0019, -0.0259, -0.5987, -0.5268, -0.3014, -0.3773, -0.2840, +0.1790, +0.2156, +0.1383, -0.3902, -0.2897, +0.1568, -0.0973, +0.1180, +0.1515, -0.2633, -0.0220, -0.3724, -0.8103, -0.0227, -0.4204, +0.0216, -0.6744, -0.4956, -0.4335, +0.1934, +0.3777, +0.0809, -0.1894, -1.1748, -0.0256, -0.0795, +0.3474, +0.1922, -0.5999, -0.0437, -0.5598, +0.2320, +0.1775, +0.2257, +0.2881, -0.0400, +0.3053, -0.3928, +0.1260, -0.2045, +0.2562, -0.2606, -0.0993, +0.2367, -0.1649, -0.4074, +0.5010, -0.0430, -0.1393, +0.0515, +0.4084, -0.3308, -0.0327, +0.4431, -0.1339, -0.3333, +0.0316, -0.4126, -0.6550, -0.2356, -0.1985, -0.4190, -0.5455, -0.4105, +0.2870, -0.3798, +0.3010, -0.0037, -0.8985, -0.3126], -[ +0.2778, +0.2767, +0.7562, +0.0713, +0.0288, +0.1809, -0.0154, -0.1427, -0.5357, +0.0142, +0.0690, +0.3333, +0.3387, -0.0436, +0.1544, +0.1780, +0.6136, +0.1780, +0.3723, +0.0317, +0.0467, +0.2739, +0.2881, -0.3738, -0.1652, -0.3368, +0.0951, -0.4565, +0.0138, +0.2093, +0.0779, -0.0634, -0.4709, +0.0515, -0.1550, -0.1288, +0.0519, -0.0458, -0.3740, +0.0997, +0.0232, +0.0919, +0.0538, +0.1350, +0.0041, +0.1560, -0.1602, -0.2490, +0.0455, -0.5253, -0.6406, -0.4126, -0.4384, -0.1976, +0.0710, -0.0663, +0.0573, -0.1351, +0.1249, +0.3678, -0.0662, +0.2568, +0.0021, +0.3614, +0.2869, -0.1957, -0.5033, -0.3132, -0.1254, +0.0759, +0.0049, -0.2176, +0.0025, +0.1089, -0.1630, -0.1399, -0.4544, +0.7338, -0.3064, -0.0635, +0.2673, -0.0141, +0.0483, -0.1073, -0.4944, -0.7251, -0.8666, -0.1234, -0.0264, +0.2406, -0.2658, -0.5771, -0.1288, +0.0700, -0.1120, -0.3641, -0.2218, +0.0575, -0.0224, -0.1444, -0.2964, -0.8884, +0.6574, +0.1282, +0.3442, -0.2955, +0.4025, -0.0907, -0.2427, +0.0493, +0.1237, -0.3282, +0.1708, +0.1742, -0.3005, -0.5564, +0.0774, +0.3174, -0.1321, -0.2323, -0.2415, +0.0016, -0.1179, +0.1848, -0.4854, +0.3021, -0.6035, +0.0576], -[ +0.2464, +0.2210, +0.0308, -0.4928, -0.2967, -0.0290, -0.0463, -0.0958, -0.2295, -0.3675, +0.3021, +0.0262, +0.1884, -0.4507, +0.2997, +0.0224, +0.2599, -0.4059, +0.3297, -0.0965, +0.2801, -0.1893, -0.8366, +0.0800, -0.1554, +0.2427, -0.2607, -0.0151, +0.1709, +0.3530, -0.2916, +0.1247, -0.2138, -0.4041, -0.8924, -0.0014, -0.1209, +0.3941, +0.2633, -0.2795, -0.1553, +0.0417, -0.5007, +0.1737, +0.1574, +0.2239, -0.0550, +0.4197, +0.1187, -0.1066, -0.2252, +0.0267, +0.1422, +0.4598, -0.2334, +0.0625, -0.0527, -0.2635, -0.0973, +0.2626, +0.0067, -0.1462, +0.5553, -0.1978, +0.0039, +0.0692, -0.1139, +0.2867, -0.0810, +0.1765, -0.1148, -0.5460, +0.0093, -0.1081, -0.0560, +0.1398, +0.0353, +0.4230, +0.1352, +0.0879, +0.2586, -0.1153, +0.1685, +0.1803, +0.0658, -0.1251, -0.6158, +0.0599, +0.0847, +0.2006, +0.0744, +0.1046, +0.2810, +0.2065, -0.2683, -0.2712, -0.0950, +0.0863, +0.0073, +0.2204, +0.2352, +0.2942, -0.0425, +0.1957, -0.2858, +0.0805, -0.1369, +0.3256, +0.2022, -0.3384, -0.2142, -0.0764, -0.0451, +0.1718, -0.0114, +0.3575, -0.0438, -0.2090, +0.0299, +0.5327, +0.0955, +0.1916, -0.0499, +0.2663, -0.1375, +0.4503, -0.0977, -0.6245], -[ -0.4482, +0.3300, +0.1101, -0.2839, -0.5385, -0.9015, -0.9629, +0.2586, -0.2312, +0.0787, -0.4511, -0.7617, -0.0420, -0.8681, -0.4418, -0.1561, +0.7041, -0.7501, +0.0266, +0.0323, -0.3490, -0.2178, -0.2161, -0.3040, -0.0253, -0.0587, +0.0642, -1.3666, +0.0413, -0.0482, +0.4412, -0.2510, -0.0356, +0.6022, +0.4631, -0.7312, -0.2961, -0.6833, -0.0840, -0.5322, +0.2185, +0.0459, +0.0733, +0.0065, -0.2993, -0.1148, +0.4773, +0.1333, +0.4579, +0.4179, +0.0455, -0.3710, -0.5173, +0.4764, -0.1754, +0.2053, -0.8470, -0.3387, -0.4736, +0.0217, +0.5804, +0.1646, +0.1544, +0.0477, +0.0525, -0.0696, +0.4491, -0.2326, +0.1315, +0.2020, -0.7184, +0.1641, +0.3951, +0.1319, +0.5076, +0.1109, +0.3916, -0.1319, -0.2936, +0.0181, +0.4177, -0.1837, +0.3443, +0.3730, +0.0025, -0.0544, -0.0862, -0.3763, +0.1609, -0.3195, +0.4130, -0.0842, -0.0418, -0.2886, -0.3195, -0.3772, +0.1527, +0.1694, +0.3652, -0.0140, +0.3145, -0.3715, +0.4524, +0.2735, -0.5047, +0.2454, -0.1249, -0.2783, +0.5132, -1.0914, -0.1237, -0.1090, -0.2658, +0.5984, -0.1742, -0.3817, +0.0737, +0.3599, +0.1000, -0.1537, +0.2181, +0.2869, +0.2351, -0.4898, -0.5788, -1.3721, +0.1728, +0.1310], -[ -0.1592, -0.4041, -0.2894, +0.4207, -0.0393, -0.3905, +0.3386, +0.1644, +0.0388, -0.1845, -0.0646, -0.0047, -1.1888, -0.1216, -0.6243, -1.2211, +0.1195, +0.3643, +0.2707, -0.5247, -0.4206, -0.2752, +0.1450, -1.0257, +0.1298, +0.0036, -1.0859, -0.4244, +0.3496, +0.4974, +0.2792, +0.4173, +0.2535, -0.4768, -0.5399, -1.3790, -0.4852, -0.2287, +0.1477, -0.9775, +0.0264, -0.2215, +0.1946, -0.1901, -0.3172, +0.5302, -0.0262, -0.1856, -0.3275, -0.1349, -0.3428, -0.5177, -0.2322, +0.3713, +0.5738, +0.0388, +0.3331, +0.4540, -0.2325, +0.0491, -0.3362, -0.5825, +0.4500, +0.0289, +0.1222, +0.1900, -0.4667, +0.1168, +0.0485, -0.7019, -0.1291, -0.2924, +0.2141, -0.3174, -0.4008, -0.3886, +0.1286, -0.1926, -0.3069, -1.0239, -0.0391, +0.5201, -0.7072, -0.7251, -0.0694, +0.0298, -0.6523, +0.1605, +0.2213, -0.0364, -0.9901, -0.3399, +0.0035, -0.5667, +0.4476, -0.1376, +0.5975, -0.6538, -0.0208, +0.8009, +0.2301, +0.0590, +0.2010, -0.0509, -0.3773, -0.2398, -0.5370, -0.2193, +0.2302, -0.0550, -0.1983, -0.4650, +0.0676, -0.2226, -0.6951, +0.3659, +0.5367, -0.5738, -0.1443, -0.1880, -0.0349, -0.3352, -0.2152, -0.1865, -0.2204, +0.5554, -0.9891, +0.3186], -[ +0.2394, -0.0714, +0.2746, +0.3623, -0.0538, -0.6755, -0.1333, -1.3743, -0.1895, +0.1814, +0.3133, +0.1230, -0.1661, -0.2828, -0.1403, +0.0950, -0.3489, -0.2049, -0.3464, +0.0184, -0.4085, +0.0997, -0.4035, +0.0712, -0.0346, -0.0103, -0.0883, +0.1130, -0.1105, -0.5867, -0.2424, +0.3794, -0.2915, -0.0989, +0.1656, +0.1004, -0.5711, +0.0738, -0.3429, +0.0239, -0.0868, -0.0700, -0.2992, +0.2528, -0.0788, -0.3071, +0.0689, -0.0181, +0.0307, -0.2057, +0.1572, +0.1733, +0.1167, +0.1442, +0.2226, +0.0900, +0.0162, +0.1436, +0.0265, -0.0687, +0.3017, +0.1480, +0.2655, -0.0682, -0.2741, -0.1716, +0.1341, -0.1417, -0.2137, -0.1355, -0.1259, +0.4461, +0.0273, +0.0116, +0.3155, -0.1622, -0.6823, -0.0316, -0.0179, +0.1486, +0.3494, -0.0974, +0.1594, -0.0130, -0.0657, +0.2490, +0.0921, -0.3313, -0.5469, +0.1370, -0.1381, +0.2124, -0.0821, -0.5322, -0.1475, +0.2537, -0.0850, +0.0007, -0.1281, -0.0099, -0.3445, -0.0391, +0.0935, +0.3483, -0.5255, -0.3779, -0.2437, -0.2445, +0.1157, +0.3142, -0.3505, -0.1131, -0.0117, +0.1641, -0.4387, -0.2990, -0.0383, -0.2574, -0.0916, -0.2347, +0.0121, +0.0477, -0.2616, +0.0903, +0.1953, +0.2693, -0.2673, +0.1279], -[ +0.0036, +0.3795, +0.5815, -0.1558, -0.0716, -0.1054, -0.2749, +0.0068, -0.1926, +0.0264, +0.2820, +0.1564, -0.1651, -0.2574, +0.4083, +0.0653, +0.2357, -0.1221, -0.6700, +0.0490, +0.1313, -0.0795, +0.2703, -0.0302, -0.2597, -0.1055, -0.0571, +0.3765, +0.1240, -0.1656, -0.1810, +0.0344, -0.3351, -0.1683, +0.1300, +0.0198, +0.2129, -0.0310, -0.0061, +0.0129, +0.0680, +0.0641, +0.2626, +0.0775, -0.0003, -0.1460, -0.4157, +0.0149, -0.1112, -0.3299, +0.2355, -0.1634, -0.3562, -0.2383, +0.2967, -0.4822, +0.4064, +0.4544, -0.5610, -0.2461, +0.1047, +0.0419, +0.0089, +0.1730, -0.3086, +0.0291, -0.1648, +0.2769, +0.1437, +0.2771, +0.1762, -0.5382, -0.1036, +0.2619, -0.9328, +0.3223, +0.0394, -0.2465, +0.1447, +0.2043, +0.2431, -0.4364, +0.0895, -0.3028, +0.0076, -0.0536, +0.3053, -0.0304, -0.0067, +0.2929, +0.1929, -0.1368, -0.2473, +0.1941, -0.3283, +0.0343, -0.1063, +0.1554, -0.2990, +0.5050, -0.0778, +0.2769, -0.0338, -0.2511, +0.2404, +0.3957, +0.0203, +0.3262, +0.0696, +0.2516, +0.1439, +0.4702, +0.0207, -0.3895, -0.9189, -0.3275, +0.2604, -0.1938, -0.1143, +0.0649, +0.4064, +0.3126, -0.1031, +0.4301, -0.4438, +0.1371, +0.1579, -0.1291], -[ +0.0175, -0.8144, -0.3592, +0.7888, +0.1597, -0.1777, +0.1646, -0.1387, +0.4342, +0.4641, +0.3057, -0.4498, -0.3148, +0.0885, +0.0560, -0.1856, +0.3148, +0.0166, +0.2273, -0.3276, -0.3661, +0.4316, +0.0052, -0.0841, +0.0329, -0.1971, -0.1674, +0.0875, -0.0237, +0.0653, -0.2024, -0.4132, -0.0422, +0.1235, -0.8176, +0.2972, -0.3066, -0.2683, -0.6202, +0.3726, -0.1212, -0.1298, +0.0167, -0.6814, +0.2210, -0.0769, +0.0424, -0.1627, +0.1336, +0.2540, -0.3916, +0.6099, -0.3826, +0.0949, +0.0158, +0.4405, -0.5845, -0.7739, -0.1574, +0.2851, -0.5500, -0.1718, +0.2726, +0.5016, -0.5086, +0.2214, -0.1982, +0.1854, +0.3022, +0.0917, -0.5729, -0.0093, -0.7484, +0.2674, -0.5715, +0.3179, -0.1971, -0.3504, +0.5908, -0.3864, +0.2876, -0.3674, -0.3109, -0.0876, -0.4085, +0.0077, +0.6120, -0.3723, +0.0373, -0.6179, +0.4868, +0.1773, +0.0069, +0.0534, -0.4711, +0.3435, -0.0978, -0.3769, +0.8225, -0.3504, -0.0414, -0.2942, -0.1860, -0.8201, -0.5393, -0.1953, -0.0790, +0.0900, +0.1865, +0.1603, +0.2317, +0.3697, -0.2573, +0.6507, -0.7612, +0.2248, +0.3443, +0.1022, +0.1507, -0.4575, +0.4404, -0.1881, +0.0850, +0.3004, -0.4962, -0.4017, -0.0257, -0.1611], -[ +0.1928, -0.1961, +0.1911, +0.1432, +0.6444, +0.1169, -0.8295, +0.0785, -0.0054, -0.3373, -0.4419, -0.1978, -0.2296, -0.4200, +0.2098, -0.2054, +0.2318, +0.1609, +0.2977, -0.3988, +0.1871, -0.2236, -1.2856, -0.3923, +0.3159, +0.0989, -0.0487, -0.4158, +0.0227, +0.2649, -0.0162, +0.7600, -0.3139, -0.3949, +0.0985, +0.2478, -0.3895, +0.1699, -0.6254, +0.3798, -0.6933, +0.3316, -0.4998, +0.2625, -0.5143, -0.8900, -0.7854, -0.3633, +0.0800, -0.3665, -0.3306, +0.2095, +0.5808, -0.6293, +0.1436, -0.3011, -0.8054, -0.9067, +0.0036, -0.2188, -0.3749, +0.3419, +0.4685, -0.2106, +0.5806, -0.4311, -0.0352, -0.0578, +0.0845, +0.0344, -0.0575, -0.3100, -0.1615, +0.4709, -0.0186, -0.3941, +0.3451, -0.9598, +0.1136, +0.0565, -0.5384, +0.0462, -0.4293, +0.2661, +0.2860, -0.3047, -0.7567, -0.7141, +0.6973, -0.4393, -0.1717, -0.0849, +0.1851, -0.2928, +0.1707, -0.3575, -0.1948, +0.4236, +0.0553, -0.0382, -0.2447, -0.1323, -0.9982, +0.1450, +0.0690, -0.0261, -0.8166, -0.6070, -0.2856, -0.4961, -0.5446, -0.1741, +0.1781, -0.2641, +0.4769, -0.1493, -0.0917, +0.3417, -0.8258, +0.0886, -0.2807, -0.2848, +0.0936, -0.4170, +0.1761, +0.2200, -0.1263, -0.0950], -[ -0.4927, +0.3494, +0.0551, +0.0824, -0.4910, +0.0591, +0.0894, -0.7222, +0.1568, -0.3067, +0.1940, +0.3282, +0.0258, +0.0724, -0.4230, -0.4933, -0.1533, +0.4860, -0.0234, -0.2984, -0.1108, -0.6194, -0.0884, +0.0326, +0.3036, -0.2863, -0.2843, -0.0528, +0.4789, -0.4038, -0.2503, +0.2939, +0.0986, -0.3577, -0.2306, +0.4347, -0.4685, +0.5858, -0.5078, -0.2920, +0.0742, +0.4829, -0.7583, +0.2953, -0.4501, -1.1693, +0.5636, -0.0810, +0.4292, -0.2226, -0.4184, +0.2568, +0.4162, -0.1116, -0.1944, -0.1763, -0.3488, +0.3919, -0.0963, +0.0567, +0.2975, -0.1885, -0.1761, -0.3762, -0.2708, -0.6994, -0.3204, -0.0721, +0.0305, +0.7360, +0.0953, -0.1876, -0.0884, -0.2781, -0.4814, +0.0952, -0.0831, +0.2775, -0.2592, -0.0694, +0.2239, +0.2334, +0.1269, +0.0550, -0.3960, +0.1931, +0.5410, -0.4195, -0.1890, -0.7320, -0.9433, +0.5786, +0.3165, -0.0715, -0.3970, -0.6670, -0.2291, -0.4103, -0.0295, +0.0765, -0.0506, +0.0656, -0.0461, -0.2834, -0.0732, -0.1738, -0.2221, -0.0954, +0.1982, -0.1879, +0.3002, +0.7221, -0.1920, +0.4606, -0.8494, -0.0510, +0.2791, +0.6232, -0.3632, -0.1217, +0.0639, -0.1971, +0.2714, -0.0023, +0.2726, -0.7728, -0.3215, +0.3245], -[ +0.0603, +0.3697, +0.3642, -0.0279, -0.0273, -1.5350, -0.0573, +0.2580, +0.1087, +0.0349, -0.2120, -0.0454, -0.0367, -0.6555, -0.3163, +0.1087, +0.0132, +0.0808, -0.3070, -0.3496, -0.2055, -0.0968, -0.0457, -0.8527, +0.0333, +0.1385, -0.5092, -0.2531, -0.0055, +0.0841, -0.1719, -0.0035, -0.0069, -0.6970, -0.4042, -0.8373, +0.2668, -0.9261, -0.5561, -0.4615, -0.4811, -0.2435, +0.4238, -0.3306, +0.3107, +0.2413, +0.1484, +0.0041, -0.0477, -0.1989, +0.4779, -0.4405, -0.3860, -0.3126, +0.2250, -0.2033, -0.5285, -0.2781, +0.0740, +0.1701, -0.0213, -0.0803, -0.6084, -0.3032, -0.6555, +0.3710, -0.0917, +0.2193, +0.6233, +0.1060, -0.0423, -0.1510, -0.3870, +0.5593, +0.2603, +0.0328, +0.2316, -0.4375, -0.1495, +0.0311, -0.2334, +0.6541, -0.2500, -0.1740, -0.6438, -0.4079, -0.1943, -0.0462, -0.1768, +0.7591, +0.3782, -0.1231, +0.2684, +0.0013, -1.7181, +0.3307, +0.3743, -0.2582, -0.2793, -0.2198, -0.2559, -0.5279, +0.1655, +0.0924, -0.3720, -0.0569, -0.8113, +0.1594, +0.2044, +0.0709, -0.1417, -0.0601, +0.2192, +0.0299, +0.5178, -0.1258, -0.3987, -0.0107, +0.0600, +0.2618, +0.0663, -0.3641, -0.0087, -0.2206, +0.0266, -0.5618, -0.6359, -0.0532], -[ -0.1309, +0.7502, -0.4365, -0.0938, -0.6231, -0.0443, -0.7242, +0.1126, -0.2953, -0.1702, -0.2275, -0.3761, -0.1589, -0.5361, +0.1325, -0.1731, +0.3864, +0.1133, -0.4962, -1.1375, -0.3037, +0.4682, -0.0743, +0.5018, -0.5874, +0.0855, -0.0541, +0.1356, -0.6662, -0.0070, -0.0850, -0.0637, -0.1066, +0.8687, -0.2888, -0.7088, +0.0200, -0.2246, +0.0042, +0.2842, -0.3079, -0.3412, -0.3138, +0.1806, +0.1966, +0.0201, -0.3022, +0.1690, +0.0846, +0.0155, -0.3011, -0.3649, -0.3971, -0.3560, +0.4373, +0.0156, -0.5608, -0.1049, +0.0927, -0.5472, +0.2316, -0.0226, -0.6276, +0.2974, -0.3206, -0.6385, +0.2557, +0.0204, -0.2642, -0.6468, -0.3427, -0.5198, -0.4397, -0.1308, -0.5130, +0.1795, -0.4445, +0.0516, -0.1168, +0.0259, -0.2858, +0.0224, -0.0794, -0.5299, -0.8935, -0.0001, +0.4133, +0.2256, +0.0575, +0.3963, -0.2999, +0.3641, -0.4269, +0.2293, -1.1501, -0.0180, +0.3556, -0.4290, +0.1659, -0.3508, -0.7775, +0.3533, +0.2407, -0.8174, +0.0838, -0.6607, -0.5973, -0.5567, -0.4199, -0.1698, -0.1566, -1.1846, -0.0978, +0.4314, +0.3667, +0.2209, -0.2482, -0.3842, +0.3798, +0.6636, +0.0842, -0.1960, +0.0491, +0.3585, -0.0515, +0.1970, -0.7973, +0.1511], -[ -0.1779, -0.8388, -0.3019, +0.0015, +0.2165, -0.2289, -0.4410, -0.4810, -0.0618, -0.0485, -0.2756, -0.3439, +0.3838, +0.3518, -0.0405, -0.6655, +0.0325, +0.1404, +0.0976, -0.1648, -0.4110, +0.4527, -0.4193, -0.4274, -0.2963, +0.0344, -0.1828, -0.4036, +0.0675, +0.1708, -0.2549, -0.2112, -0.1276, -0.2266, -0.3000, +0.2091, -0.2382, +0.4809, -0.2475, -0.3292, -0.4179, -0.0512, -0.6727, -0.1405, -0.2623, +0.4623, -1.3792, +0.1978, -0.2856, -0.7536, -0.2314, +0.5098, +0.1138, -1.1438, -0.0443, -0.0975, -0.3581, -0.0829, -0.0161, -0.2840, -0.1867, -0.1820, +0.0162, +0.0555, -0.0359, -1.3428, -0.2613, -0.5008, -0.2764, +0.2543, -0.3164, +0.4883, +0.2465, +0.1045, +0.2056, -0.3283, -0.1270, -0.2359, +0.5206, +0.0153, -0.0621, -0.3097, +0.2486, -0.0401, +0.5093, -0.0919, +0.6707, +0.1950, +0.1701, -0.2267, +0.0719, +0.1200, +0.1625, +0.2002, -0.2640, +0.0043, +0.0166, +0.2979, +0.1282, -0.1339, -0.7462, -0.4356, +0.5382, +0.3933, -0.3760, +0.1365, -0.2459, -0.1780, +0.3906, +0.2315, +0.3715, -0.5632, -0.3040, +0.0346, +0.0263, -0.2767, +0.0702, -1.0275, +0.2903, -0.2703, -0.3287, +0.2660, -0.2647, -0.4853, -0.0301, -0.0161, +0.0243, -0.0434], -[ +0.1293, -0.1846, -0.0239, -0.9859, +0.0399, +0.0935, +0.3626, -0.0733, +0.0637, +0.2475, +0.3671, -0.2698, -0.0177, -0.0700, +0.0235, +0.1908, -0.8790, +0.0055, +0.0058, -0.0202, -0.1759, +0.1446, -0.4352, -0.0649, -0.5903, +0.0724, -0.2313, +0.1199, -0.0180, -0.3352, -0.3693, -0.3032, +0.1397, +0.2043, +0.1437, +0.1101, +0.2067, +0.1381, -0.1763, -0.0772, +0.0790, +0.0982, +0.0691, -0.3708, -0.0236, -0.0042, +0.0236, -0.2833, -0.3415, +0.0740, +0.1839, -0.4853, -0.0092, -0.9316, +0.4314, -0.1754, +0.3611, +0.4947, -0.0490, +0.0459, -0.3999, -0.2895, -0.3911, +0.0016, -0.1290, -0.2152, -0.1143, +0.0369, +0.3931, -0.2975, +0.2176, -0.0243, -0.1993, +0.0521, -0.4754, -0.0869, +0.1150, -0.1530, +0.2468, +0.1733, +0.0226, +0.0921, +0.1554, -0.0747, +0.0897, +0.0411, +0.2531, -0.4861, -0.8206, -0.0888, -0.2514, -0.0703, -0.7803, -0.4155, +0.2840, +0.0365, +0.0632, -0.2208, -0.1579, -0.1263, -0.0901, -0.1906, -0.8910, -0.0630, -0.0755, -0.3760, -0.0087, +0.1636, +0.0564, +0.1365, +0.1683, -0.1332, +0.1884, -0.1626, +0.2983, -0.2771, +0.2081, +0.2110, -0.0675, +0.0107, +0.0675, -0.0402, +0.1888, -0.5384, -0.2024, -0.4001, -0.2455, -0.3984], -[ -0.2839, +0.0557, -0.4611, -0.1486, +0.0961, -0.4106, +0.0622, -0.0367, +0.1972, -0.2690, +0.0634, +0.1213, -0.0303, -0.1749, +0.0408, +0.2708, -0.2071, -0.1340, +0.0974, +0.2123, -0.2571, -0.2168, -0.3918, -0.3151, -0.0047, -0.0695, -0.2914, -0.0345, +0.3196, -0.3145, -0.3876, -0.0510, -0.1694, +0.1695, +0.3208, -0.0373, +0.2241, -0.3686, +0.3149, -0.1283, +0.0598, -0.1362, -0.1352, +0.0126, +0.3129, +0.0055, -0.3109, +0.1585, -0.1256, +0.3008, +0.1022, -0.2347, -0.2409, -0.0349, +0.1923, -0.0402, +0.3250, -0.3708, +0.0167, +0.0732, -0.0797, -0.3569, -0.3622, -0.1549, +0.3470, -0.3688, +0.1789, +0.0383, -0.0158, -0.5634, -0.1666, +0.2183, +0.0094, +0.1686, -0.0020, +0.1827, +0.1183, -0.1339, -0.2004, +0.2215, +0.0428, -0.2101, -0.1030, +0.2170, +0.5569, -0.1765, -0.3780, +0.0386, -0.1134, -0.0669, -0.0431, -0.2545, -0.0136, -0.0732, +0.2523, +0.0320, -0.2573, +0.2369, +0.2522, -0.4438, -0.1729, -0.1633, +0.2780, +0.1585, -0.1284, +0.1129, +0.6266, +0.0493, +0.0026, +0.0891, +0.3787, -0.1615, +0.0932, -0.0885, +0.1825, +0.2008, +0.2623, -0.4317, +0.0238, +0.0824, +0.1319, -0.3968, -0.2763, +0.1098, +0.0006, -0.1185, -0.0072, +0.3709], -[ -0.1538, -0.3173, +0.0231, -0.9681, -0.2487, +0.4954, +0.5459, +0.1365, -0.1401, -0.1885, +0.1409, -0.4593, -0.2798, -0.2247, -0.3537, -0.4485, -0.1738, +0.1263, -0.4593, -0.0995, -0.2496, -1.5530, +0.1984, -0.1568, +0.3969, -0.1874, +0.0397, +0.6729, -0.6737, -0.1655, -0.6516, -0.4768, +0.3244, -0.3924, +0.1579, +0.0530, -0.4086, -0.1008, -0.5829, +0.3494, -0.4976, +0.1554, -0.1238, -0.9385, +0.2855, +0.2811, -0.2910, -0.8076, -0.6592, -0.2820, -0.0262, -0.1096, +0.3691, +0.3009, +0.2971, -0.3662, +0.1359, -0.7052, -0.4434, +0.3359, +0.1165, +0.0477, +0.4642, -0.0553, +0.0899, +0.2805, -0.1698, +0.5916, +0.0794, -0.2188, -0.5305, +0.1203, +0.5456, +0.1502, +0.1806, -0.4738, +0.1342, +0.1286, +0.3125, +0.1390, +0.0783, +0.2620, +0.1506, -0.1902, -0.0255, +0.4203, -0.4151, +0.4126, -0.6582, -0.2330, -0.3430, +0.4570, -0.3195, +0.3546, -0.1974, +0.0574, +0.1166, -0.4902, -0.2053, +0.0261, -0.0187, -0.1224, +0.4332, +0.4251, -0.8841, -0.7732, +0.0962, -0.4097, -0.4732, +0.4076, -0.5532, +0.1412, +0.1981, -0.8526, -1.1682, -0.2170, -0.5597, +0.1929, +0.3263, +0.0024, -0.3641, -0.5875, -0.1701, -0.0163, +0.4281, -0.7060, -0.4005, -0.0812], -[ -0.5075, +0.3835, -0.1869, -0.7111, -0.1020, -0.4069, +0.3172, -0.7051, -0.2066, -0.4564, +0.1200, -0.0326, -0.2515, -0.1847, -0.3413, +0.4618, -0.0996, +0.2964, +0.1264, -0.6733, -0.6887, -0.0480, -0.2650, +0.0631, +0.0250, +0.0429, +0.1830, +0.7326, -0.3265, +0.1186, -0.7896, +0.2986, +0.1729, +0.4963, +0.1254, -0.5200, +0.4055, -0.0246, +0.5408, -0.4490, +0.0138, -0.1225, -0.2689, -0.5293, +0.2074, +0.4715, +0.0174, -0.0426, -0.7378, -0.0976, -0.6630, -0.7639, -0.5094, -0.4236, -0.2324, -0.1540, -0.6870, +0.1913, +0.0844, -0.3421, +0.3226, -0.1904, -0.8060, -0.2838, +0.4285, +0.2269, -0.3502, +0.0766, +0.0465, +0.1619, -0.1731, -0.6074, -0.3669, -0.0137, +0.2784, -0.6251, -0.2547, +0.1489, -0.1331, -0.2379, +0.0557, -0.0359, -0.4283, -0.6391, +0.2750, -0.0506, -0.5459, +0.3409, +0.9444, +0.3620, -1.1151, +0.2189, +0.1076, -0.4447, -0.1996, +0.2806, -0.0102, -0.2563, -0.1237, +0.2284, -0.0666, +0.1370, -0.3898, -0.2621, -0.2869, -0.2379, +0.1512, +0.2982, +0.6676, -0.2709, -0.5161, +0.1461, +0.0686, -0.5315, -0.1953, +0.3541, +0.0890, -0.3159, -0.5663, -0.2803, -0.5889, -0.4279, -0.3006, -1.7423, +0.4094, +0.0074, +0.1615, +0.2946], -[ -0.2175, -0.0166, -0.6038, +0.1643, -0.0462, -0.2877, -0.3072, -0.0499, -0.1434, +0.1622, -0.2628, +0.3008, -0.4538, -0.2094, -0.2188, +0.1331, -0.2923, -0.0931, +0.2628, +0.1782, -0.3406, +0.0246, -0.2643, +0.1548, -0.2308, -0.2164, -0.5527, +0.2420, -0.8246, -0.2036, -0.1268, -0.5669, -0.4832, +0.1531, +0.2236, -0.1160, -0.1874, -0.5689, +0.3698, +0.5610, +0.0412, +0.2972, -0.6794, +0.4185, -0.0898, +0.0127, +0.3197, +0.3426, -0.8802, +0.1901, +0.1697, -0.0677, +0.3944, -0.1011, -0.4577, +0.1739, -0.7374, -0.4071, -0.5038, -0.1005, +0.4859, -0.0235, -0.1492, +0.1165, +0.1530, +0.0101, +0.0198, +0.2549, -0.3519, -0.0682, +0.1654, -1.0833, +0.1763, +0.3830, +0.3415, +0.0629, -0.3267, +0.4679, -0.3650, -0.1438, +0.0306, -0.1140, +0.2866, +0.4236, -0.7002, -0.6312, -0.6396, +0.1842, +0.6386, -0.5406, -0.5024, -0.1992, -0.9073, -0.0356, +0.1985, -0.0840, +0.0445, -0.1287, +0.0017, -0.2556, -0.0784, -0.4276, +0.3900, -0.1726, +0.7389, -0.3862, -0.0197, -0.0541, -0.0452, +0.2069, -0.1562, -0.8836, +0.1070, +0.1169, -0.4769, +0.3092, -0.2666, -0.3226, -0.4474, +0.0693, +0.1660, -0.1175, -0.4258, +0.6983, -0.2204, +0.0587, +0.1921, -0.1573], -[ -0.1268, +0.1278, +0.2042, +0.0915, -0.0755, -0.1092, +0.0274, -0.2232, +0.2696, -0.1987, +0.0120, -0.2634, -0.6477, +0.1458, -0.0016, +0.0528, -0.1853, -0.0675, +0.0299, -0.1752, -0.6174, -0.0727, -0.4576, +0.0062, -0.0823, +0.0415, +0.1105, -0.1034, -0.4088, +0.0054, +0.1444, +0.1821, -0.0698, +0.4956, +0.5494, -0.2992, +0.4086, -0.2028, -0.7213, -0.2105, -0.2893, -0.4519, +0.0126, +0.3545, -0.1121, +0.1436, +0.1384, -0.4912, +0.2446, -0.0143, -0.0722, -0.0047, -0.0284, -0.0189, +0.3676, -0.0950, +0.0238, -0.0655, -0.5126, -0.8311, -0.2011, +0.1520, +0.1763, +0.3278, -0.0374, +0.6132, -0.1374, +0.0625, -0.1903, +0.3163, -0.2266, -0.2790, +0.2144, +0.2014, -0.3615, -0.1037, -0.2252, -0.6563, +0.0254, +0.1960, +0.1785, +0.1889, -0.1164, -0.0099, -0.2022, -0.9635, +0.2886, +0.0571, +0.0347, -0.1997, -0.0441, +0.1492, -0.3185, -0.4933, +0.0582, +0.2307, +0.2265, +0.5079, -0.0159, +0.0773, -0.1179, +0.1402, -0.0616, -0.7001, +0.2038, -0.4494, +0.2709, -0.4167, -0.3610, +0.0469, +0.2203, +0.1832, -0.2117, +0.0019, +0.0668, -0.0468, +0.2510, +0.3144, -0.2275, +0.1176, +0.1032, -0.3434, -0.0443, +0.0623, -0.3130, -0.2284, -0.2042, +0.1446], -[ -0.3593, -0.0213, -0.1249, -0.4098, +0.0777, +0.0194, +0.2587, +0.1877, -0.3175, -0.1546, +0.2299, +0.1275, -0.0573, -0.3799, +0.0980, +0.0438, -0.5124, -0.5884, -0.1407, +0.0934, +0.0777, +0.3035, -0.1622, -0.1657, +0.0370, -0.0118, +0.1826, -0.0176, +0.0231, -0.3377, +0.0231, -0.1031, -0.0457, -0.4055, -0.4139, -0.0718, -0.0458, -0.2305, +0.2062, -0.1435, +0.2023, -0.0207, +0.0455, -0.0741, -0.1511, +0.1784, +0.0741, +0.0014, -0.1481, -0.0646, -0.1231, +0.1404, -0.1380, +0.0241, -0.0332, -0.1448, -0.1267, +0.1576, -0.0133, -0.1083, -0.2632, +0.0705, -0.1055, -0.1271, -0.1584, +0.1035, +0.2035, +0.2117, -0.0805, -0.7859, +0.4363, +0.0836, -0.1103, +0.1105, +0.0080, +0.5908, -0.2216, -0.2000, +0.0791, -0.0857, -0.6309, -0.1397, +0.1591, -0.0516, -0.0579, -0.0120, +0.1062, -0.2114, -0.0067, -0.2768, -0.0893, -0.1542, -0.2094, +0.0644, -0.1142, -0.2094, -0.2874, -0.0181, -0.1359, +0.1704, +0.0642, +0.2458, -0.2850, -0.0529, -0.2886, +0.2877, -0.0282, +0.2858, +0.2517, -0.0728, -0.0511, -0.0143, -0.0804, -0.0640, +0.0749, +0.2637, -0.0146, -0.2025, -0.0716, -0.3660, -0.1856, +0.0513, -0.1950, +0.1097, +0.1180, +0.3038, +0.3611, -0.1624], -[ -0.5439, -0.1108, +0.1068, -0.1845, -0.4261, +0.2481, +0.0863, +0.2777, -0.1766, -0.5460, +0.3510, -0.1645, -0.0298, -0.0718, -0.3878, -0.3264, +0.0122, -0.2196, -0.6613, +0.0164, -0.1878, +0.1336, -0.5117, +0.0454, +0.1758, -0.2514, +0.0562, -0.3361, +0.2231, -0.7147, -0.5202, +0.2609, +0.0388, -0.4400, +0.0253, +0.2976, -0.2161, +0.0174, +0.1715, -0.2202, +0.0178, +0.1137, -0.3666, -0.7358, -0.1474, -1.9594, +0.3644, +0.2010, -0.2955, -0.7655, -0.0251, -0.0798, -0.5200, -0.2685, -0.2396, +0.1305, -0.3322, -0.0645, +0.1854, +0.2373, +0.0502, -0.6660, -0.4457, -0.6760, +0.1130, -0.3366, +0.2473, -0.2186, +0.2284, +0.2880, +0.2092, -0.0404, +0.3542, -0.3423, -0.2797, -0.2134, +0.0835, -0.9149, +0.0918, -0.1250, +0.0268, -0.0850, -0.2357, +0.0691, -0.9855, -0.5911, -0.3511, +0.4798, +0.2560, +0.0281, -0.0170, +0.2585, -0.5157, -0.3301, -0.0188, +0.6020, -0.1542, -0.4552, +0.5734, +0.0469, -0.5778, +0.2394, -0.0504, +0.1493, -0.1440, +0.1707, -0.1037, +0.0529, -0.0035, +0.0315, -0.4495, -0.3224, +0.1364, -1.9222, +0.3856, -0.3660, -0.4691, -0.0084, -0.7048, -1.4218, +0.0888, +0.2415, -0.1006, -0.1413, -0.0409, +0.4347, -0.2355, -0.1839], -[ +0.1036, +0.3072, +0.1507, -0.9578, +0.3521, -0.4813, -0.4665, +0.1903, +0.0748, +0.0786, -0.5069, +0.0445, +0.0033, -0.0852, -0.1926, +0.0775, -0.0559, -0.7182, +0.0240, +0.2459, +0.0535, +0.3698, +0.0213, +0.4276, +0.1042, +0.2907, -0.6086, +0.2677, -0.3378, -0.7117, -0.0852, +0.1043, -0.2457, +0.5646, +0.3967, -0.8885, -0.1234, +0.0915, +0.5284, +0.1759, -0.1527, -0.0174, +0.0940, +0.4089, -0.4869, +0.1698, -0.4915, -0.0174, -0.0700, +0.0270, +0.0490, -0.2742, +0.0593, -0.2530, +0.4119, +0.4579, -0.5053, -0.0087, +0.2812, +0.2107, -0.1615, +0.2211, +0.4053, +0.0877, +0.1365, +0.3149, -0.2942, -0.2692, +0.0642, +0.1927, +0.3033, -0.7162, -0.1218, -0.0639, -0.6867, +0.0722, -0.0756, -0.1390, +0.0812, -0.5473, +0.2597, +0.1075, +0.0658, -0.0187, +0.1881, -0.2573, -0.1276, -0.2228, +0.1489, -0.0317, +0.2068, +0.2204, +0.1531, -0.3009, -0.0525, -0.1330, -0.0103, -0.0804, -1.5968, +0.1971, -0.0622, -0.0154, +0.0963, +0.2572, -0.3052, -0.0450, +0.6625, -1.0140, +0.2127, +0.1379, -0.0085, +0.0610, -0.0007, +0.4584, +0.1833, +0.1649, -0.4691, +0.2164, +0.3650, +0.3411, +0.0496, +0.0191, -0.2403, -0.0122, +0.3000, -0.0178, +0.0383, -0.0113], -[ +0.0049, +0.3975, +0.0884, -0.0872, +0.1295, +0.0753, +0.2450, -0.4648, +0.3867, -0.5323, -0.2566, +0.2779, +0.6565, +0.0191, +0.0295, -0.2321, -0.3603, +0.0624, -0.4421, +0.1034, -0.0012, -0.1366, -0.4283, -0.4872, -0.4185, -0.2995, -0.2327, -0.2158, -0.4725, -0.0297, -0.3661, +0.1396, -0.1326, -0.4101, +0.3859, +0.1264, +0.1017, +0.2396, -0.2282, -0.1678, +0.1591, +0.1070, -0.2768, -0.0679, +0.1152, -0.7897, -0.1893, -0.2643, -0.4148, -0.3085, -0.1239, -0.3356, -0.0497, -0.6376, +0.1037, -0.0249, +0.0901, -0.2195, -0.2130, -0.0116, -0.5073, -0.1986, +0.2808, +0.2514, -0.3744, -0.1156, -0.0371, -0.0649, -0.2102, -0.3307, +0.2906, -0.7415, -0.0113, +0.2384, +0.2793, -0.2367, +0.1839, -0.0210, +0.0470, +0.3772, +0.0498, -0.2996, +0.3934, +0.1611, +0.3585, -0.2320, -0.8981, -0.0371, +0.2413, -0.3873, -0.5402, -0.1207, -0.0016, +0.3242, -0.0387, -0.1388, -0.1844, +0.3057, -0.4289, -0.2177, +0.0749, -0.0112, +0.0247, +0.2423, -0.4003, -0.2007, +0.0881, +0.1732, +0.1362, -0.8791, -0.3190, +0.2747, -0.1408, -0.4671, +0.0726, +0.0612, -0.3098, -0.1875, +0.3129, -0.0947, +0.5054, -0.1753, -0.0295, +0.1522, +0.5742, +0.4134, -0.0191, +0.0045], -[ +0.2525, -0.1386, -0.1114, -0.0548, -0.0171, +0.2950, +0.1787, +0.3880, -0.2394, -0.0116, +0.3163, -0.2488, -0.2820, +0.0056, +0.2214, +0.1482, -0.5397, +0.0776, -0.2306, -0.0321, -0.1276, +0.2718, +0.1018, +0.1255, -0.0311, +0.0194, -0.1452, +0.1272, +0.2045, +0.2305, +0.3225, -0.8598, +0.1806, -0.1582, -0.0461, -0.4344, +0.3144, -0.2690, -0.5905, +0.0173, -0.0262, +0.0805, -0.6541, +0.0943, +0.0176, -0.3056, +0.1424, -0.2742, -0.0413, +0.1350, -0.7865, -0.0148, +0.0215, +0.4966, -0.1602, -0.3908, -0.8518, -0.2149, +0.2456, -0.1258, +0.0171, -0.7830, -0.0860, -0.1986, +0.3155, +0.0180, -0.2883, -0.0240, -0.6599, -0.1408, -1.2279, -0.3837, +0.2910, -0.0199, -0.1203, +0.4615, +0.0346, +0.0103, -1.3848, -0.1506, +0.1347, +0.1872, +0.1092, -0.1739, +0.2323, -0.5868, +0.1763, -0.1971, +0.3839, +0.2239, +0.3647, -0.2894, +0.4253, -0.3038, -0.0682, -0.1923, -0.1519, -0.0434, -0.1149, -0.0093, -0.1990, +0.0659, +0.2373, +0.1959, -0.0689, -0.0207, +0.0126, -0.1660, -0.0565, +0.2156, +0.2194, -0.5262, +0.0097, +0.1958, +0.0831, -0.1508, +0.6469, -0.3348, -0.0936, -0.1423, -0.0352, +0.1636, -0.1935, -0.0385, -0.3287, -0.2309, -0.8024, -0.0460], -[ -0.0104, -0.0923, -0.0145, +0.0442, +0.3954, -0.2785, +0.1800, -0.1377, -0.0123, -0.3198, +0.0067, -0.0201, -0.0307, +0.0645, -0.1396, -0.0790, +0.0410, -0.4739, -0.2780, +0.1104, +0.4350, -0.4865, +0.2970, -0.3348, -0.1737, +0.1044, +0.2837, -0.1746, +0.5979, -0.9687, +0.0140, +0.0635, +0.2521, -0.3338, -0.0891, -0.2940, +0.2009, -0.2894, -0.4627, +0.1428, +0.3514, -0.8472, +0.0443, +0.1627, +0.1159, +0.3636, -0.2693, -0.2192, +0.1227, -0.0276, -0.0542, +0.1237, -0.1218, -0.0156, -0.3672, +0.2140, -0.4353, -0.2366, -0.2054, -0.3615, +0.4550, -0.1582, -0.3713, -0.0359, +0.1135, -0.1809, +0.2170, -0.1160, +0.3225, -0.0010, -0.6661, +0.0444, +0.0239, -0.2342, +0.0956, -0.1395, -0.3490, -0.1701, -0.6219, +0.3207, -0.6108, -0.3457, +0.0336, -0.1468, -0.7165, +0.2542, -0.8940, -0.3601, +0.1468, -0.2044, -0.2830, +0.2140, -0.0001, -0.2062, +0.3514, -0.0028, +0.3275, -0.1915, +0.0117, +0.1832, -0.2368, +0.0678, -0.3683, -0.8374, +0.2675, +0.2660, +0.1320, -0.0139, +0.1110, -0.3198, +0.2743, -0.1500, -0.0546, -0.7944, -0.1889, -0.4948, +0.4603, +0.0225, -0.2409, +0.2739, +0.1255, -0.5952, -0.1291, +0.1397, +0.2037, -0.9462, -0.4275, +0.2574], -[ +0.0732, -0.0784, -0.8312, +0.4800, -0.4452, +0.0361, +0.0436, -0.0705, +0.0120, -0.0549, +0.5532, -0.1423, -0.7723, -0.0108, -0.1305, +0.0282, +0.1815, -0.0774, +0.3215, +0.3560, +0.0504, -0.6478, -1.3179, -0.0294, -0.1542, -0.1389, +0.5705, +0.0248, +0.0497, -0.5752, +0.1748, +0.2168, -0.3915, +0.2773, +0.2130, -0.7825, +0.2906, -0.1805, +0.5056, -0.6140, -0.0435, +0.1181, -0.1556, -1.0491, -0.0353, +0.0050, -0.4732, -0.1868, -0.3642, +0.3247, +0.0095, +0.1646, +0.9006, -0.2826, -0.0900, -0.0660, +0.2756, +0.0583, -0.2348, -0.1653, -0.4330, -0.4487, +0.1047, -0.0518, -0.1140, -0.5406, +0.1102, -0.2175, +0.4865, -0.1590, -0.6791, -0.1531, +0.0919, -0.5950, +0.0721, -0.0022, +0.3748, -0.7945, +0.5820, -0.1423, -0.3037, -0.4496, -0.2485, +0.0588, -0.0529, +0.3414, -0.1327, -0.4361, +0.0013, -0.2237, -0.5812, +0.0338, -1.1081, +0.1522, -1.3750, -0.0972, +0.2873, -0.1019, -0.2987, -0.1956, -0.3325, -0.1326, +0.3469, -0.5852, -0.6036, +0.1700, +0.2517, -0.6880, -0.1488, -0.4767, -0.0020, -0.0329, -0.1861, -0.3093, -0.6038, +0.2285, -0.0567, -1.5447, -0.1485, -0.4656, +0.1986, +0.0689, -0.7519, -0.1844, +0.2573, +0.1473, +0.2610, -0.5576], -[ -0.0001, -0.3292, +0.3793, -0.3955, -0.1476, +0.1551, -0.0683, -0.0828, +0.1434, +0.1210, +0.3169, -0.0115, -0.3607, +0.4890, +0.0065, +0.1599, -0.1573, +0.1109, +0.1746, -0.2572, +0.2085, +0.1415, -0.1034, +0.1493, +0.1334, -0.2657, -0.5497, -0.4631, +0.0807, -0.1996, -0.2298, +0.2112, +0.0598, -0.0391, -0.2533, -0.6510, +0.1983, +0.0288, -0.2544, -0.4163, -0.7292, +0.4838, -0.1148, -0.0427, +0.0510, -0.2081, -0.0556, +0.3889, -0.2025, -0.0325, +0.0503, +0.0603, -0.1548, +0.3463, -0.1248, -0.0444, +0.1613, +0.1791, +0.0132, +0.1872, -0.2795, -0.3904, -0.0589, +0.0247, -0.1613, +0.1569, +0.1569, -0.0887, -0.0739, +0.0237, -0.2137, -0.0002, +0.1909, +0.0967, -0.3866, +0.1260, +0.3826, -0.0205, +0.3687, +0.2822, +0.3615, -0.0000, +0.2382, +0.1687, -0.1774, +0.1423, -0.1368, +0.1691, +0.4327, -0.1258, +0.1293, +0.0684, -0.3451, -0.0426, -0.9986, -0.0839, +0.1896, -0.4486, -0.0594, -0.3160, +0.3638, -0.0693, -0.2351, +0.0391, +0.2915, -0.2981, -0.0009, +0.0750, +0.3754, -0.0275, -0.3873, +0.0762, +0.2723, +0.2016, +0.0661, +0.3519, +0.0786, -0.0443, -0.4054, +0.0147, +0.0943, +0.2076, +0.2067, -0.1219, -0.6978, -0.2283, -0.0186, -0.1489], -[ -0.1604, +0.0297, -0.5117, +0.2240, -0.4081, -0.0059, +0.1788, -0.0864, -0.1112, +0.2744, +0.1101, +0.1601, -0.0648, -0.1338, -0.4282, -0.0377, -0.6383, -0.0528, +0.1064, +0.4673, -0.6102, -0.1501, +0.1648, -0.0827, -0.3101, -0.1674, -0.3240, -0.3441, +0.0621, +0.2817, -0.0592, -0.4303, +0.3357, +0.1990, -0.1457, -0.4451, -0.5496, +0.2162, -0.0026, +0.1220, +0.0826, +0.0725, -0.1693, +0.3887, -0.0345, -0.1240, -0.4130, +0.2600, +0.2408, +0.2589, +0.3939, -0.2586, -0.2132, -0.0278, +0.1332, +0.0271, +0.0967, +0.1091, -0.5110, -0.2114, +0.2883, +0.0398, +0.2428, +0.0751, -0.3072, -0.0207, -0.1820, -0.2010, -0.0200, +0.0036, +0.1796, +0.5806, -0.2775, +0.3268, +0.1027, +0.1023, -0.2894, +0.0635, +0.3608, +0.3922, -0.3078, -0.4314, +0.1338, -0.1838, -1.5187, +0.1175, +0.2003, -0.1123, -0.0642, -0.1988, -0.0201, +0.2267, -0.5809, +0.0521, -0.3662, +0.3533, -0.0202, -0.8489, +0.1188, -0.3818, +0.1993, +0.1742, +0.0439, +0.2997, +0.1133, -0.0555, +0.3458, +0.0283, +0.0932, -0.4935, -0.1735, +0.0349, -0.0409, -0.0521, -0.2062, -0.5979, +0.2619, -0.4030, -0.3505, -0.2188, -0.1097, +0.2349, -0.0499, +0.0405, -0.3596, -0.3915, -0.2367, -0.1003], -[ -0.0744, -0.5912, -0.0011, -0.3773, -0.3046, -0.1793, -0.0682, +0.4426, -0.3057, +0.1336, +0.2011, +0.3692, -0.2941, -0.3352, +0.0187, +0.3133, -0.4686, +0.4316, -0.1335, -0.3952, -0.1265, -0.1609, -0.7202, +0.0887, +0.0064, +0.2796, -0.1310, +0.2032, -0.4650, +0.5940, +0.0026, -0.3363, -0.0522, -0.0588, -0.2783, -0.1050, -0.0451, -0.5454, +0.7271, -0.0677, -0.5786, -0.0600, +0.0130, -0.1555, -0.1347, -0.5101, +0.3295, -0.0928, +0.1176, -0.2844, -0.3950, +0.2077, +0.1759, -0.2801, -0.2732, -0.8890, +0.0175, -0.5369, +0.2399, +0.4077, -0.1362, -0.4831, -0.2463, -0.0073, +0.0937, -0.0621, -0.0056, -0.0408, +0.3022, -0.1809, -0.0367, -0.0473, +0.1106, -0.0479, +0.2784, -0.3513, +0.2048, -0.2876, -0.1836, -0.2219, -0.3156, -0.1288, -0.0190, -0.1303, -0.0090, -0.4822, +0.3643, -0.2529, -0.1742, -0.8636, -0.0016, +0.2485, +0.0849, -0.5345, +0.0307, -0.3751, +0.1090, +0.1147, +0.1372, +0.3520, -0.9087, -0.6167, +0.4061, +0.1934, -0.2638, -0.3687, +0.1243, +0.5508, -0.7423, +0.0873, -0.1908, +0.0646, -0.0004, -0.4020, +0.1262, -0.1301, +0.3535, +0.8227, -0.0400, +0.0697, +0.0727, -0.1604, +0.1002, +0.0585, -0.2124, -0.2364, -0.5973, -0.1024], -[ -0.2174, +0.0506, -0.4676, -0.3911, -0.0609, -0.0778, -0.0999, -0.3035, -0.0122, +0.1912, +0.1631, +0.1836, -0.5876, -0.0513, +0.2488, -0.2019, -0.0933, +0.0094, -0.4488, +0.3605, +0.2833, +0.0709, -0.1809, -0.1491, +0.3547, -0.4611, -0.3654, +0.0240, +0.1219, -0.7240, +0.0727, -0.0731, +0.0199, +0.2460, +0.1376, +0.1270, -0.3395, +0.4132, -0.3432, +0.1178, -0.2260, +0.2389, +0.2984, -0.2193, -0.2264, -0.4487, +0.0236, +0.0459, +0.0872, -0.2217, -0.2645, -0.1561, +0.1005, -0.7111, -0.1245, +0.1189, +0.0494, -0.2539, -0.3988, -0.1961, +0.0534, -0.0955, -0.5281, +0.0716, -0.1123, -0.5024, +0.1541, -0.3452, -0.1009, -0.0763, +0.4208, -0.1740, -0.2387, -0.2291, +0.1129, -0.0500, -0.0223, -0.3320, -0.0643, -0.2613, +0.2558, +0.3824, +0.4444, -0.3476, -0.1678, -0.3595, +0.3995, -0.1424, -0.2383, +0.0455, -0.0661, +0.1789, +0.2955, -0.0160, +0.0430, +0.2261, +0.2119, -0.3502, +0.0243, +0.6739, -0.3480, -0.8669, -0.5996, -0.1549, +0.1887, -0.0186, -0.3449, +0.2215, -0.2574, +0.1286, -0.5430, +0.2249, +0.1899, -0.4482, -0.1243, -0.0861, +0.0756, -0.0415, -0.4730, -0.3448, -0.2458, -0.3225, -0.2425, -0.2097, +0.2341, -0.0825, +0.1785, -0.1234], -[ -0.2354, -0.1352, -0.0394, -0.4542, -0.0664, +0.1528, -0.0675, -0.1926, +0.1735, +0.3164, +0.1963, -0.0846, -0.0396, -0.2072, -0.2591, -0.2062, -0.0020, -0.7092, +0.2391, +0.2130, +0.2091, -0.3524, +0.1273, +0.0389, +0.1658, +0.2674, +0.3883, +0.0871, +0.0102, +0.0535, +0.0668, -0.2113, -0.1165, +0.2253, -0.3734, -0.1145, +0.1014, +0.0366, -0.2385, +0.0172, -0.1931, +0.1569, +0.0750, +0.3403, -0.1068, -0.0830, -0.6471, -0.2542, -0.1823, -0.0621, -0.1655, +0.1843, -0.4896, -0.2161, +0.2281, +0.2581, -0.0658, +0.0741, +0.4285, -0.1662, +0.1905, -0.0543, +0.5448, -0.1246, +0.3250, +0.0152, +0.4373, -0.2684, +0.0602, +0.1233, +0.2087, -0.0602, -0.0569, +0.0409, +0.1783, +0.0302, +0.1411, +0.1277, -0.3655, +0.1627, +0.3391, -0.2268, +0.1449, +0.0427, -0.2721, +0.1626, -0.0849, -0.3541, -0.1656, -0.0788, -0.0898, -0.1230, -0.4244, +0.0753, -0.0975, +0.0412, -0.0858, -0.1684, -0.5936, -0.4016, -0.0431, -0.0477, -0.5265, -0.6261, +0.1444, -0.2198, -0.2796, +0.2192, -0.0423, +0.0956, +0.0384, +0.0461, +0.5735, -0.0996, -0.1966, -0.2661, -0.0316, +0.1016, -0.6623, -0.1032, -0.3146, -0.2652, +0.4337, -0.0049, -0.5285, +0.3586, +0.3296, +0.2335], -[ +0.1928, -0.0899, +0.1188, +0.0676, +0.1335, -0.3234, +0.0847, +0.1030, -0.1872, -0.1458, +0.2096, +0.0145, +0.2535, +0.0621, -0.0446, -0.2204, -0.5806, -0.1614, +0.3269, +0.0555, -0.3177, +0.0448, +0.2162, -0.2180, -0.1568, -0.2179, +0.3378, -0.1375, -0.5719, +0.1624, +0.1633, -0.0707, +0.3363, -0.1187, -0.4044, +0.2713, -0.1436, -0.1843, -0.1352, +0.0253, +0.0500, -0.0675, -0.0137, +0.1289, +0.3141, -0.7317, +0.0518, +0.3094, +0.1174, +0.3404, -0.0032, +0.0328, -0.0830, -0.1156, -0.0974, +0.0824, -0.5677, -0.3623, +0.2101, -0.4897, +0.1611, -0.4957, -0.4925, -0.0993, -0.2779, -0.4474, +0.3840, +0.2687, +0.0262, -0.0014, +0.2022, +0.1857, +0.0890, -0.1099, +0.2506, -0.0302, -0.1460, +0.0092, +0.4182, -0.1677, -0.0119, +0.1679, -0.0165, +0.2344, +0.0679, +0.3334, +0.1894, +0.4707, -0.2371, -0.0904, -0.1095, -0.3325, +0.0476, +0.2296, -0.0478, +0.2266, -0.5393, +0.0554, +0.0974, -0.0878, -0.2048, -0.2949, +0.1077, -0.5056, +0.4008, +0.0277, -0.0907, +0.0614, +0.0038, +0.2551, -0.0815, -0.4013, +0.1805, -0.0939, -0.2303, +0.0859, -0.7910, -0.5410, -0.0744, +0.0785, -0.1301, -0.0866, +0.2041, -0.1363, -0.0091, -0.0360, +0.2151, -0.4235], -[ +0.2328, -0.0845, +0.2813, +0.1831, -0.2544, -0.0835, +0.0135, +0.6600, -0.3017, +0.2926, +0.3058, +0.0203, -0.1275, +0.0197, -0.2211, +0.2098, -0.3756, +0.0021, -0.2489, -0.1810, -0.0985, +0.2117, +0.2966, +0.2029, -0.1794, +0.0412, -0.5282, -0.2621, -0.7371, -0.1859, -0.3403, +0.1073, -0.5724, +0.2058, -0.6472, +0.3397, -0.1273, -0.1163, +0.0302, -0.1336, -0.3202, +0.0309, +0.1588, +0.0541, +0.2056, -0.1559, +0.3507, +0.0952, +0.3533, -0.2692, -0.0282, +0.0854, -0.3409, +0.1804, +0.3530, +0.2931, +0.4302, +0.0497, -0.0211, +0.1569, -0.0224, -0.1249, -0.1076, -0.7233, -0.1243, +0.2911, +0.0698, +0.0889, -0.1227, +0.2171, +0.4206, -0.0060, -0.2042, +0.2000, +0.4655, +0.0992, +0.2311, +0.2070, +0.0093, +0.1118, +0.2215, -0.2974, +0.2926, +0.1195, -0.1603, -0.2265, +0.0652, +0.4852, -0.0055, +0.2149, +0.0873, +0.0217, -0.4250, -0.0890, +0.5056, +0.4897, +0.1094, -0.1377, +0.2051, +0.1695, +0.3651, +0.2058, -0.1224, -0.0366, -0.2407, +0.0994, -0.1328, +0.3437, -0.1411, -0.3279, -0.2527, -0.3823, +0.0065, -0.0405, -0.1370, -0.0320, -0.0999, -0.6169, -0.4008, +0.0467, -0.0888, -0.1071, +0.2150, +0.1922, -0.8068, -0.3045, +0.2371, -0.1884], -[ +0.0458, -0.1127, -0.6329, +0.0789, +0.0832, -0.2524, +0.3594, -0.0247, +0.7353, -0.2057, +0.2346, +0.0410, -0.8775, -0.0447, +0.1238, -0.3096, -0.0531, -0.3143, +0.0416, -0.3220, -0.0404, +0.1861, -0.1617, -0.2567, -0.4662, +0.3690, -0.3566, +0.2228, -0.0341, +0.1489, +0.2378, -0.1615, +0.0831, +0.3694, -0.3519, +0.3639, +0.4144, -0.0690, -0.1719, -0.6533, -0.4049, +0.0094, -0.1602, +0.0726, +0.3811, -0.0638, -0.3219, -0.2503, -0.5872, +0.0016, -0.1960, +0.4471, +0.3722, +0.0717, -0.5871, -0.0813, -0.1854, +0.0213, -0.0357, +0.2673, -0.6155, -0.3957, -0.3096, -0.0547, -0.1946, +0.2351, +0.1782, -0.5224, -0.6200, -0.0412, -0.4185, -0.1541, -0.0886, -0.3303, +0.1047, -0.1720, -0.1660, +0.3473, +0.1955, -0.0713, +0.1802, -0.1454, +0.3731, +0.2410, +0.2023, -0.5448, -0.3478, -0.0094, -0.7203, -0.5484, -0.0304, +0.1152, -0.0229, -0.3809, -0.2906, -0.3419, +0.2554, -0.8924, -0.0319, +0.1091, +0.2249, -0.0438, +0.5669, +0.0766, -0.2999, -0.1351, +0.3013, -0.2780, -0.0375, +0.2511, +0.1137, -0.1166, -0.6185, -0.0924, +0.1969, -0.6554, +0.0985, +0.3869, -0.2121, +0.1920, +0.1331, -0.1539, -0.0139, +0.5631, +0.4298, +0.0413, -0.4855, -0.3119], -[ +0.2017, +0.6366, -0.2374, -0.4522, +0.2916, +0.1158, -0.0178, -0.1485, +0.0492, -0.3809, +0.1547, -0.3917, +0.1183, +0.0226, +0.0999, -0.7439, +0.4463, +0.0536, +0.2456, +0.3032, +0.2315, +0.0376, -0.5501, -0.6011, +0.3387, +0.2101, -0.3926, -0.1226, -0.5353, -0.1085, -0.0265, +0.2911, +0.0891, +0.3284, -0.5996, +0.1509, -0.0529, -0.0711, -0.3938, -0.0898, -0.1998, -0.0059, -0.2829, +0.2153, +0.3080, -0.0506, -0.1822, -0.0515, -0.0125, +0.0608, +0.1164, -0.0584, -0.2068, -0.1616, -0.0908, +0.3021, +0.0019, -0.9688, -0.1839, +0.1006, +0.1162, +0.7676, +0.1750, +0.0133, -0.1177, -0.1010, +0.1158, +0.0240, -0.4555, -0.1856, -0.3160, -0.1803, +0.1216, -0.5736, -0.1565, -0.2182, +0.2794, -0.0918, +0.2669, +0.1588, -0.5233, +0.2028, -0.0332, +0.2034, -0.1665, -0.5387, -0.4267, -0.1206, -0.5641, -0.6093, -0.4191, -0.1401, -0.1098, -0.5361, +0.1300, -0.1740, +0.3144, -0.4569, -0.0047, +0.1678, -0.1745, -0.7130, +0.0419, -0.2742, -0.0699, -0.2410, -0.0933, -0.6232, +0.3461, -0.2870, +0.4029, +0.0024, -0.7912, +0.3247, +0.1958, +0.2242, +0.1203, -0.1801, +0.1611, -0.6191, -0.2780, -0.4764, +0.3260, +0.0439, -0.2629, -0.4595, -0.7561, -0.1850], -[ -0.0545, +0.1222, -0.1977, -0.3187, +0.5281, +0.0779, -0.1709, -0.0143, -0.0791, -0.0077, +0.3125, -0.5201, -0.2210, -0.0267, -0.4084, -0.5489, -0.1846, -0.3257, -0.3033, -0.0312, -0.4045, -0.1996, -0.5142, -0.1941, +0.1964, -0.4642, -0.5185, -0.2327, -0.4879, +0.2064, +0.5049, -0.5083, +0.2410, -0.2912, -0.1359, -0.4961, -0.2503, +0.5284, -0.4278, -0.2317, -0.1927, -0.6355, +0.1803, +0.5289, -0.3525, +0.0937, +0.1888, -0.5765, +0.3722, -0.3834, -0.0650, -0.2124, +0.2076, +0.0698, +0.2358, -0.2081, +0.1861, -0.0771, -0.1655, -0.2556, -0.1020, +0.4331, -0.0284, -0.0686, -0.3846, +0.0533, +0.4668, -0.0848, +0.1771, -0.4951, -0.6095, -0.2875, +0.2945, +0.2387, -0.7556, +0.4468, +0.3345, -0.1853, +0.4397, +0.2099, -0.2512, -0.6619, +0.1525, -0.4485, -0.6091, -0.0067, +0.1806, -0.1239, +0.3532, +0.0855, -0.2987, +0.1700, -0.1524, +0.0909, -0.2478, +0.2254, +0.4403, -0.2552, +0.2319, -0.5691, +0.1591, -0.3066, +0.1115, -0.0773, +0.4111, -0.0217, -0.0472, +0.1641, +0.0944, +0.5271, +0.0004, -0.2188, +0.3388, -0.8884, +0.0160, +0.2237, +0.3033, +0.2501, -0.1719, -0.2836, +0.0927, +0.0186, +0.1767, -0.8198, -0.6488, +0.0207, +0.0653, +0.2467], -[ +0.2603, -0.2336, +0.0610, -0.6569, -0.1370, +0.2009, +0.2344, -0.0431, -0.1983, +0.3023, -0.6694, -0.2609, +0.0542, -0.0890, +0.6562, +0.1376, -0.7015, -0.1950, +0.0245, +0.6776, -0.0839, -0.0574, -0.2625, +0.5270, -0.2401, -0.4776, +0.1961, +0.3601, +0.2709, -0.3762, +0.4429, -0.0401, -0.1374, +0.2663, -0.1557, -0.2543, -0.5097, -0.1337, -0.1111, -0.3418, -0.2202, -0.6949, -0.0005, +0.1576, -0.0423, -0.0245, +0.1798, +0.1278, -0.5242, +0.4001, +0.0535, -0.2333, -0.2178, +0.2142, -0.4796, -0.0399, +0.0005, -0.2572, +0.1401, +0.1288, -0.3164, -0.1237, -0.2629, +0.1857, -0.1374, +0.0799, +0.1822, +0.1999, +0.0967, +0.1685, -0.1225, -0.1003, -0.1413, -0.3463, -0.0792, -0.1845, -0.1661, +0.5729, -0.3121, +0.5253, +0.1710, -0.2883, -0.0983, +0.0941, -0.5117, -0.2224, +0.1080, -0.5533, +0.0314, +0.3243, +0.5503, -0.3734, +0.0962, -0.0736, +0.0981, +0.3944, -0.1378, -0.6430, -0.0470, -1.3586, -0.5798, +0.5683, +0.1248, +0.1854, -0.6683, +0.0143, +0.1893, -0.0566, +0.1868, +0.2826, -0.2943, -0.0111, -0.2423, -0.6413, -0.8043, -0.0538, -0.1094, +0.3642, +0.5789, +0.2376, -0.3892, +0.1161, -0.0668, +0.1898, -0.0652, -0.2069, -0.0107, -0.3956], -[ -0.0089, +0.0053, -0.0493, -0.0350, +0.2829, -0.0675, -0.1034, -0.1138, +0.1705, +0.1306, +0.4409, -0.2114, -0.7073, -0.1519, +0.2773, -0.0007, -0.3246, +0.1986, +0.0457, +0.0008, -0.2676, +0.2537, -0.1032, -0.0848, -0.0405, +0.0093, +0.2225, -0.1933, -0.4967, +0.2606, -0.1048, +0.3041, +0.1956, -0.0995, +0.3241, -0.4557, +0.2876, +0.2832, -0.3091, +0.0281, -0.5485, +0.4320, +0.0624, +0.2218, +0.2936, +0.5226, -0.2713, -0.2122, +0.4948, +0.2108, -0.2815, -0.0591, +0.1863, -0.0937, +0.3544, +0.1076, +0.4074, -0.2455, +0.0917, +0.2622, -0.3208, -0.6954, +0.1108, +0.1703, +0.0040, +0.1724, +0.2671, +0.0285, -0.0830, +0.0582, -0.2748, -0.1109, +0.3131, +0.3079, -0.3650, -0.0375, -0.1187, +0.0339, -0.8598, +0.2058, -0.2419, -0.0126, +0.2721, -0.0642, +0.3770, -0.0580, -0.0644, +0.0996, +0.3050, +0.1856, -0.4945, -0.0280, +0.1561, +0.1608, +0.2630, +0.1545, +0.3780, -0.1296, -1.0099, +0.0162, -0.0212, -0.4840, -0.4936, +0.0581, -0.3206, -0.2756, -0.1444, +0.2937, -0.2090, +0.2388, +0.1160, -0.8364, +0.1012, -0.0618, +0.3869, -0.2448, -0.2184, -0.2742, +0.2214, +0.1007, +0.1693, -0.3992, -0.5068, +0.1673, -0.6507, +0.1275, +0.1427, +0.4671], -[ +0.2390, -0.3798, -0.4209, +0.0839, +0.0539, +0.2623, -0.3150, -0.3251, +0.3801, +0.0025, -0.0001, +0.1332, -0.4202, +0.1580, -0.0680, -0.0484, -0.0812, -0.0698, -0.8681, -0.4174, -0.2094, -0.1456, -0.3865, +0.0932, -0.2048, +0.1050, +0.3275, -0.0034, -0.3276, +0.3908, +0.3409, +0.1852, -0.0751, +0.2487, -0.1672, +0.1588, +0.5885, -0.1844, -0.2530, +0.2800, -0.1478, -0.2052, +0.3763, -0.0450, +0.2176, -0.6694, -0.0202, +0.0084, +0.3314, -0.3640, +0.0971, -0.1912, -0.2219, +0.0512, +0.2311, +0.1224, -0.1360, +0.3023, +0.0154, +0.4586, +0.2913, +0.0579, +0.3167, +0.2197, -0.2984, +0.1132, +0.2754, +0.0515, +0.1141, -0.2123, -0.5936, +0.3028, +0.3103, +0.1980, -0.5867, +0.1248, -0.2906, -0.2811, -0.3736, +0.2158, -0.0369, -0.3432, +0.1132, +0.1506, +0.2442, -0.1388, -0.0007, +0.2115, +0.0698, -0.1694, +0.2899, -0.2548, -0.1913, -0.5142, -0.0809, -0.2043, -0.2333, +0.3354, -0.0479, -0.4910, -0.1495, +0.2635, -0.4894, +0.0717, +0.3887, -0.0083, +0.0308, +0.2019, -0.0801, +0.0298, +0.0304, -0.1158, +0.0776, -0.0164, -0.1633, -0.0002, +0.2406, -0.3375, -0.1118, +0.0943, -0.5984, +0.0243, -0.2618, -0.2459, +0.0404, +0.0320, +0.1308, -0.2702], -[ -0.1511, -0.3666, +0.2350, +0.8267, -0.6488, -0.2278, -0.4869, +0.7666, +0.2348, -0.6814, -0.2920, -0.8456, +0.0096, +0.0715, +0.2246, -0.1723, +0.3294, +0.0561, -0.3919, -0.0410, +0.1597, -0.1362, -1.7683, -0.2057, -0.6576, +0.0717, -0.1539, -0.5583, -0.4035, -0.1737, +0.3840, +0.0967, -0.0361, +0.1794, +0.4080, -0.2061, -0.4958, -0.1081, -1.5128, +0.0091, +0.0134, +0.3118, +0.1321, -0.0489, -0.5233, +0.2294, +0.0595, -0.0944, +0.1194, -0.8675, +0.3536, -0.1554, +0.0089, +0.1861, -0.0141, -0.4633, +0.2633, -0.1351, +0.4809, +0.0333, -0.5895, -0.2014, -0.5331, +0.2218, -0.6625, -0.8135, -0.4039, -0.2786, -0.7900, -0.8818, +0.3382, -0.8844, -0.3161, +0.3233, -0.9523, -0.0536, -0.0762, -0.2265, -0.1460, +0.0510, +0.0236, +0.4813, -0.6724, +0.0589, -0.3165, -0.0422, -0.1975, -0.0519, -0.3038, +0.1863, +0.5232, -0.0316, +0.0103, -0.1439, -0.2278, +0.3962, +0.1544, -0.1183, -0.1331, -0.1400, +0.4483, -0.9059, +0.0507, -0.5550, +0.1139, -0.4376, -0.3115, -0.3862, -0.4034, -0.2672, -0.2136, +0.3579, -0.4350, -0.1789, +0.1349, +0.0538, -0.5241, +0.2454, -0.2637, +0.3196, -0.2759, -0.0239, -0.0000, -0.2790, +0.0296, +0.4707, -0.2486, -0.0856], -[ +0.2451, -0.3064, +0.2233, -0.0691, +0.0398, -0.2635, -0.1588, +0.0712, +0.4981, -0.0694, +0.2008, -0.4272, -0.1479, -0.2938, -0.2791, +0.1445, -0.2936, -0.1317, -0.3666, -0.5074, +0.2054, -0.2445, +0.1934, -0.7954, +0.3778, -0.1793, -0.0548, -0.0677, +0.3734, +0.2037, +0.0769, -0.3643, +0.4326, -0.5598, +0.2094, +0.0015, +0.1742, -0.0129, +0.2153, -0.4010, +0.0511, -0.2709, +0.4407, +0.2414, -0.1202, -0.1253, -0.2223, -0.2338, +0.2665, +0.2781, -0.9210, +0.0139, +0.0047, -0.2628, -0.8624, +0.3048, -0.2690, -0.4785, -0.0107, -0.3349, +0.1399, +0.1220, +0.3481, -0.0129, +0.2035, -0.2187, +0.2583, -1.7530, -0.2957, +0.1731, -0.2707, -0.2261, +0.0139, -0.0429, -0.1552, +0.3103, +0.0346, +0.0210, -0.4074, -1.9249, -0.0071, -0.0387, +0.1876, +0.3647, -0.1842, -0.2554, +0.1712, +0.1507, -0.0070, +0.0194, -0.0139, -0.1989, -0.2729, +0.0976, +0.2148, -0.0070, +0.1328, -0.1799, +0.2274, -0.1198, +0.0818, -0.0429, -0.1286, +0.1061, -0.4386, -0.1778, -0.2432, -0.0235, +0.0949, +0.1111, +0.2546, -0.1348, -0.0331, -1.2868, +0.2019, +0.5633, -0.2706, -0.3261, -0.3331, -0.0451, +0.1799, -0.3240, +0.2597, +0.1660, -0.5422, +0.0429, +0.0821, +0.2446], -[ +0.3296, +0.0460, -0.6411, +0.4026, -0.4229, +0.1702, +0.0330, -0.0797, -0.1052, +0.3012, -0.0445, +0.0862, +0.2170, -0.0263, +0.1020, +0.3724, -0.2581, +0.2680, -0.2393, -0.2459, -0.2863, -0.1471, +0.1143, +0.2695, -0.1549, +0.2924, +0.1112, -0.2337, -0.0460, -0.0364, +0.4088, -0.1402, -0.2816, +0.3927, -0.1286, +0.2752, +0.2065, -0.4785, +0.0618, +0.1949, +0.0477, +0.2497, -0.0834, -0.5363, +0.1018, -0.1077, -0.3470, +0.2480, -0.1771, -0.0918, +0.3718, -0.0277, -0.0513, -0.6701, +0.2667, +0.0555, +0.1291, -0.7580, +0.1106, +0.3143, +0.2276, -0.0555, -0.0005, +0.0566, +0.1699, +0.0041, +0.1409, -0.1459, +0.1515, -0.1453, +0.0218, +0.1736, -0.1261, +0.0100, +0.3416, +0.1957, +0.4100, +0.3308, +0.2676, +0.2378, -0.1883, -0.6463, -0.3637, -0.1371, -0.1351, +0.3300, -0.0535, +0.1435, +0.4078, -0.3031, +0.3526, -0.7791, -0.1224, +0.2773, -0.0495, +0.3566, -0.1236, -0.3831, -0.1887, -0.1429, +0.1532, +0.3942, +0.2751, +0.0519, +0.1492, -0.1536, +0.1252, -0.0085, +0.3993, +0.3185, +0.2433, +0.2267, -0.1160, -0.2217, +0.2756, -0.6139, -0.3277, -0.1721, +0.0293, +0.0881, +0.1311, -0.1217, +0.1670, -0.2502, -0.3166, -0.3105, -0.4371, -0.2176], -[ -0.4566, +0.3735, -0.0783, +0.3318, -0.8293, -0.0002, +0.0819, -0.4199, -0.3734, -0.0184, +0.2076, +0.5969, +0.5281, -0.4399, -0.1891, -0.1353, +0.1666, -0.0129, +0.0181, -0.4462, -0.0726, -0.4329, -0.3039, -0.1361, +0.2644, -0.1395, -0.0402, +0.0225, -0.1329, +0.2082, -0.0833, -0.1621, +0.3616, +0.2708, -0.5175, +0.4963, -0.0288, +0.1037, -0.3160, +0.0416, +0.1111, -0.1966, -0.0213, +0.2239, +0.0329, +0.0522, -0.5286, -0.5453, -0.1760, -0.3828, +0.3797, -0.0898, -0.5194, -0.5356, +0.0374, -0.1548, +0.3817, +0.3128, -0.3903, -0.0332, +0.3217, +0.2292, +0.0377, -0.1797, -0.0869, -0.0196, +0.3529, -0.4795, +0.1199, -0.1337, +0.1330, -0.0910, +0.1926, +0.0504, -0.4228, +0.1174, -0.7048, +0.1147, +0.1243, -0.0862, -0.0802, +0.2218, -0.1726, -0.0677, +0.0150, +0.1993, -0.0289, -0.5508, +0.0703, -0.4972, -0.5939, +0.1888, +0.1374, -0.0029, -0.0138, -0.4827, -0.3510, -0.2270, -0.4722, -0.5080, +0.1295, -0.5598, +0.4654, -0.0098, -0.0093, -0.0779, -0.0418, -0.8136, +0.0840, +0.4417, -0.0918, +0.3398, +0.2967, +0.1589, +0.1161, -0.1784, -0.1738, +0.1056, -0.0804, -0.2320, -0.2063, -0.5830, +0.1131, -0.1007, +0.0432, -0.1586, -0.4770, -0.7056], -[ +0.0186, +0.3668, -0.6421, +0.1798, -0.2949, -0.0045, +0.3355, -0.2396, -0.0632, +0.3071, +0.0421, -0.2987, -0.1329, -0.2716, +0.4537, -0.6883, -0.5706, +0.2329, +0.2795, +0.4489, -0.0321, +0.1014, +0.0696, +0.2215, +0.2293, +0.5194, +0.1981, -0.4025, -0.4194, -0.2220, -0.1646, +0.0065, -0.1221, -0.1000, -0.0322, -0.7439, -0.1275, +0.7548, -0.1768, -0.2853, -0.2063, +0.1740, -0.2807, +0.0243, +0.2056, -0.0060, -0.3570, +0.0030, +0.0033, +0.0549, +0.2978, +0.1748, -0.1360, -0.2196, -0.0827, -0.0286, +0.1436, +0.1612, -0.5013, +0.1243, -0.1249, -0.4719, -0.0567, -0.7937, -0.2394, -0.2535, -0.0396, -0.1685, -0.2257, -1.1214, -0.1798, -0.1123, -0.1979, +0.1271, +0.1890, -0.2931, +0.0572, -0.0116, -0.1231, +0.2679, +0.1792, -0.4864, +0.2473, -0.1100, -0.0999, -0.3511, -0.7003, -0.2550, +0.1401, -0.0638, +0.3703, +0.1647, -0.2635, +0.0453, -0.6036, -0.2910, -0.2185, -0.1343, -0.0340, -0.1074, +0.2082, -0.8524, +0.2194, -0.0097, +0.5459, -0.0194, -0.2429, +0.1926, -0.0013, +0.4588, -0.1123, -0.3082, -0.2052, -0.1493, -0.1654, -0.0272, +0.2819, +0.1713, -0.1769, -0.5388, -0.3142, -0.4281, -0.4285, -0.1606, +0.0781, +0.2538, -0.0292, +0.1091], -[ -0.0953, -0.1618, +0.0745, -0.8735, -0.5501, +0.1863, -0.0912, -0.1672, -0.0699, -0.0628, -0.3577, +0.5353, -0.2281, +0.3385, -0.0099, -0.0972, +0.1117, -0.2433, -0.2132, +0.0541, -0.2526, -0.4908, -0.2480, +0.1741, -0.0928, -0.2410, -0.5130, -0.8454, +0.2181, +0.3415, +0.1725, -0.3509, -0.4357, -0.4847, -0.2429, +0.3437, +0.0745, -0.3399, -0.3205, +0.6416, +0.1433, +0.2380, -0.1578, -0.7068, +0.0197, +0.5654, -0.0029, +0.0410, -0.3797, -0.0185, -0.2576, -0.1854, -0.1370, +0.1347, -0.4206, -0.2247, +0.3456, -0.3600, -0.1760, -0.0952, -0.0778, +0.2326, -0.1117, -0.0805, +0.1815, -0.5179, -0.5972, +0.0378, +0.0252, -0.1105, -0.8187, -0.1116, +0.1032, -0.2551, -0.5841, -0.6532, -0.0187, -0.0454, +0.0076, -0.1474, +0.3666, -0.4121, -0.3786, +0.0580, -0.9592, +0.3192, +0.3058, +0.2858, +0.1348, +0.1861, -0.1111, +0.2934, +0.0929, -0.1673, -0.2083, +0.3926, -0.2172, +0.6548, -0.2105, +0.3175, -0.0235, -0.3179, -0.0823, -0.8150, -0.1124, +0.5317, +0.1111, -0.0824, -1.0270, +0.0471, +0.1899, +0.1834, +0.1999, +0.0041, -0.5385, +0.2503, -0.3941, +0.0154, +0.0612, -0.3708, +0.0418, +0.1686, +0.0184, -0.1410, +0.3982, -0.1776, -0.1972, +0.1530], -[ +0.3652, -0.0525, -0.2944, -0.2415, -0.1189, -0.0113, +0.1008, -0.1561, -0.1306, +0.0489, +0.0974, +0.3646, +0.0058, -0.2591, -0.5016, +0.0398, -0.5247, +0.3374, -0.0223, +0.0296, -0.6019, +0.1740, -0.0839, +0.3274, -0.3144, +0.1465, +0.2401, +0.0939, +0.3592, +0.2178, -0.4408, +0.1234, +0.0817, +0.1792, -0.1508, -0.0421, +0.1849, -0.3582, -0.4194, +0.5611, +0.4111, -0.3154, -0.2021, -0.2467, -0.0364, -0.1637, +0.1553, +0.0936, -0.5461, -0.4287, -0.1622, -0.1381, -0.3639, -0.2313, +0.1153, +0.2105, -0.1965, +0.2684, +0.0699, -0.9794, -0.4359, +0.0706, -0.3023, -0.0493, -0.1454, +0.0804, +0.2684, +0.0091, +0.0621, +0.0502, -0.3314, +0.3188, -0.1158, +0.0676, +0.1790, -0.3052, -0.6842, -0.3030, -0.1334, +0.0286, +0.1610, +0.6744, -0.0036, -0.0640, -0.3047, +0.1704, -0.0565, +0.1840, -0.3333, +0.1778, -0.1178, -1.2254, +0.2371, +0.1952, +0.1259, -0.4441, +0.2009, +0.0690, +0.3376, -0.0117, +0.1004, +0.1386, +0.1744, -0.2661, +0.3304, -0.0599, +0.1856, +0.1560, -0.1794, -0.2161, +0.2259, -0.1045, +0.2775, +0.4724, -0.0410, -0.3525, +0.1903, -0.0929, -0.1236, -0.2187, -0.1275, -0.4631, +0.1251, +0.1274, -0.0296, -0.4870, -0.0927, +0.2730], -[ +0.0092, +0.0098, -0.1102, +0.4613, -0.0537, -0.0628, +0.2236, -0.4356, -0.0093, +0.1493, +0.0493, +0.1396, +0.3578, +0.2761, +0.4228, -0.2419, +0.1026, -0.1000, -0.7769, -0.0726, -0.1334, -0.2132, +0.2485, -0.1911, -0.0080, +0.5843, +0.0193, -0.0539, -0.1230, -0.5124, -1.1648, -0.3706, +0.2584, -0.1894, -0.5361, -0.2719, -0.0995, -0.3426, +0.2751, +0.5451, +0.2764, +0.0894, -0.6956, +0.1069, +0.3698, +0.3523, +0.1323, -0.1757, +0.2289, +0.5234, +0.0971, +0.0609, +0.0684, -0.4630, -0.2765, +0.5247, -1.2141, +0.1614, +0.5124, +0.5333, +0.3059, +0.1872, -0.4247, -0.1630, -0.3002, -0.3560, -0.0539, +0.0044, -0.1353, -0.0529, -0.2470, -0.4951, -0.2353, -0.3167, -0.4054, +0.0071, -1.4139, -0.0239, -0.1137, -0.4588, +0.3476, +0.1610, +0.0019, +0.4093, +0.3584, -0.1780, +0.3467, -0.1808, +0.0839, +0.5266, -0.5698, -0.4423, +0.2940, -0.2309, +0.3496, +0.2303, -0.2091, +0.0468, +0.3564, -0.3991, -0.0552, -0.5103, -0.1626, -0.3089, -0.1119, -0.6277, -0.3097, -0.1312, +0.1318, -0.6067, +0.2067, -0.1009, -0.1596, -0.2185, +0.0436, -0.3871, -0.4425, +0.1989, -0.0667, -0.2211, +0.3829, -0.0667, +0.5931, -0.4935, -0.8409, -0.5129, -0.6222, +0.0066], -[ -0.0413, -0.6018, +0.1298, +0.0939, +0.1980, +0.1892, -0.0373, +0.3740, -0.0401, -0.0997, -0.1467, -0.4113, +0.5720, +0.2792, +0.1799, +0.0531, +0.7287, +0.5117, +0.0981, -0.0611, +0.2536, -0.0854, +0.1595, -0.4573, +0.2209, -0.4224, -0.1992, -0.0733, -0.4630, +0.3222, +0.1324, -0.2322, -0.1881, -0.1877, +0.0378, +0.3592, -0.1357, -0.8458, -0.1132, -0.4982, -0.3288, +0.0774, -1.2249, -0.3539, -0.1474, -0.1581, +0.2041, -0.1518, -0.2876, +0.4433, +0.4115, +0.4595, -0.0528, -0.2123, -0.0436, +0.0871, -0.8283, +0.0736, -0.2243, +0.2902, +0.2321, +0.0996, -0.4255, -0.2651, +0.2696, -0.1982, -0.0566, +0.0044, +0.2944, -0.2539, -0.3364, -0.0630, -0.4735, -0.0821, -0.0393, -0.2234, +0.1382, +0.1673, -0.2212, -0.1605, -0.0142, -0.4206, -0.2584, +0.2551, -0.0184, +0.0840, -0.0312, +0.3657, -0.3262, +0.2156, -0.1692, +0.3444, +0.3684, -0.5422, +0.2776, -1.4401, +0.2460, +0.0875, +0.2837, -0.2691, -0.0900, +0.4492, -0.5628, -0.3731, -0.3367, -0.1458, -0.8937, -0.6617, -0.1363, +0.0158, +0.0631, -0.0440, -0.2496, +0.0947, -0.2483, +0.6660, -0.5274, -0.0553, -0.1647, +0.1926, -0.1718, -0.0576, -0.4371, +0.5348, -0.2345, -0.4674, +0.1253, -0.0036], -[ -0.1446, +0.1700, +0.3544, -0.5479, +0.2254, -0.2370, -0.0482, +0.3570, +0.1299, -0.2380, -0.0273, +0.5446, +0.3722, -0.3662, -0.0302, +0.5711, -0.3704, -0.3139, -0.0435, +0.2057, -0.0292, -0.0491, -0.1565, -0.2317, -0.3761, +0.3052, -0.7114, -0.2181, -0.2401, -0.2428, +0.2711, -0.7658, -0.3234, -0.1471, +0.0696, -0.1234, -0.1030, -0.2070, -0.0458, +0.0938, +0.2991, +0.1958, +0.0338, +0.1391, -0.3940, -0.0559, -0.4542, -0.6571, -0.3548, +0.2410, +0.0333, -0.0011, -0.0859, -0.3021, -0.0497, +0.1436, -0.1224, +0.0153, +0.0876, -0.4827, +0.2149, -0.0520, +0.1941, -0.0820, +0.1250, -0.0778, -0.0284, +0.2370, +0.2421, -0.0399, +0.0090, +0.1321, +0.0787, +0.2900, +0.1679, +0.1168, +0.0027, +0.3603, -0.1600, -0.2737, +0.0564, +0.1608, +0.2914, -0.3553, -0.1671, +0.0141, -0.0504, +0.0936, +0.3314, +0.0023, -0.1104, +0.1296, +0.1157, +0.0182, -0.2615, -0.0001, +0.1096, +0.1707, +0.2273, +0.0273, +0.1649, +0.1821, +0.1496, -0.1617, -0.2678, +0.1681, +0.1228, -0.2924, -0.0948, -0.6014, +0.0511, -0.0773, +0.2140, -0.0795, +0.0817, -0.2068, -0.0843, -0.0816, +0.0564, -0.0132, +0.2761, +0.1899, -0.2499, +0.0286, +0.0829, +0.2365, -0.0684, -0.0993], -[ +0.1878, -0.3227, +0.0780, +0.2284, +0.3056, -0.2191, -0.0010, -0.3881, -0.0477, -0.1890, -0.4554, +0.2559, +0.4200, -0.0076, -0.0680, -0.1828, +0.0241, +0.0355, +0.1323, -0.3980, -0.3291, -0.1064, +0.1090, +0.0948, +0.3785, -0.0048, +0.3076, -0.2892, +0.4135, +0.1584, +0.5658, -0.1847, +0.0402, +0.0784, +0.0791, -0.0605, -0.1824, -0.6241, -0.2950, -1.5785, +0.1999, +0.1684, +0.1758, +0.0109, -0.4566, +0.1429, +0.2242, -0.3744, -0.0478, -0.3795, -0.0374, -0.1343, -0.0677, -0.5593, -0.0228, +0.1744, -0.0706, +0.3682, +0.2152, -0.0750, +0.2517, +0.3898, +0.2350, +0.1600, -0.0181, +0.0490, +0.3797, -0.4516, +0.4260, +0.0496, -0.2705, +0.1710, +0.4246, +0.4908, -0.0298, +0.3135, -0.0961, +0.4929, -1.0577, -0.2205, -0.3177, -0.1087, -0.1725, -0.0188, +0.1720, +0.2934, -0.0919, -0.4774, -0.0972, +0.3479, +0.0391, +0.1810, +0.3924, -0.1924, +0.2210, +0.0464, +0.0350, -0.4214, -0.3358, -0.5350, -0.1489, +0.2051, +0.4261, +0.0752, +0.1957, +0.1948, +0.1612, -0.3381, -0.0196, -0.2484, +0.0965, -0.2360, +0.4422, -0.7495, +0.1264, +0.2784, -0.1318, +0.1797, +0.1326, +0.4814, -0.2178, -0.1390, -0.2598, +0.0027, +0.1308, -0.3765, +0.1394, +0.1036], -[ -0.5438, +0.0746, +0.0245, -0.3958, +0.1185, -0.2282, -0.8367, -0.3566, +0.0778, +0.0489, -0.4752, -0.4729, +0.2609, +0.3328, +0.0866, -0.2772, -0.1678, +0.1548, +0.2489, +0.2062, -0.2871, -0.3869, +0.4366, -0.6346, -0.1095, +0.0364, +0.1895, +0.2571, -0.3849, +0.1736, +0.0213, -0.0879, -0.2135, +0.1146, -0.2870, +0.0862, -0.1146, -0.0287, -0.3277, +0.4166, -0.0823, +0.1315, -0.1009, +0.4586, -0.1302, +0.5199, -0.1424, +0.8026, -0.3118, +0.3797, +0.1263, +0.0592, -0.8227, +0.4790, +0.2706, -0.1266, +0.0313, -0.0670, +0.0018, +0.2792, -0.7962, +0.0487, -0.7764, -0.4821, +0.1285, -0.7470, -0.4752, -0.1346, -0.1473, -0.7275, -0.0185, +0.2638, +0.4776, -0.2301, -0.4335, -0.1458, +0.3269, -0.1918, -0.0003, -0.1290, -0.2015, -0.3569, -0.7378, -0.1912, -0.3298, -0.2659, -0.0313, -0.6281, +0.3709, -0.1166, -1.1497, -0.3300, -0.2609, -0.1989, -0.4535, -0.0694, +0.1250, +0.1381, -0.2608, -0.1156, -0.4502, +0.2087, +0.0888, +0.5290, -0.0856, -0.6624, +0.4665, -0.0859, -0.4331, +0.5628, +0.3025, -0.4049, +0.0031, -0.6603, -0.2441, +0.0085, -0.0009, +0.5155, +0.0388, +0.6162, +0.3346, +0.1874, +0.0723, +0.2325, -0.0751, -0.0403, -0.0140, +0.1559], -[ -0.0373, +0.1727, -0.4334, -0.3207, +0.0316, -0.6042, -0.0635, -0.6280, -0.0671, -0.0454, -0.2297, -0.9106, +0.4221, -0.4578, -0.3672, +0.1412, -0.5822, +0.2073, -0.2640, -0.3701, -0.0568, +0.0699, +0.4723, +0.2056, -0.0813, +0.3663, +0.0705, +0.0843, -0.0314, -0.5837, -0.6016, +0.0410, -0.0447, -0.1418, +0.0801, -0.7191, -0.0611, +0.1273, +0.3526, -0.3058, +0.3575, -0.1994, +0.0790, +0.0599, +0.0512, -0.1339, +0.3042, -0.4364, -0.0435, +0.4731, -0.0206, -0.1210, -0.7350, -0.1444, +0.1075, -0.5543, -0.2852, +0.3401, -0.0690, -0.3885, +0.2971, +0.2133, -0.7138, +0.1082, -0.3467, +0.4647, +0.4838, -0.4437, -1.0657, -0.3295, +0.3731, +0.0645, -0.2695, +0.4645, +0.2790, +0.0792, -0.4326, +0.0685, -0.0175, -0.0981, -0.1197, +0.3449, +0.1408, +0.1204, -0.8011, +0.5619, +0.4618, +0.0808, -0.5742, -0.1403, -0.3572, +0.0677, +0.3489, +0.0456, -1.2707, -0.0269, +0.0991, +0.4121, -0.2672, +0.3641, +0.4039, -0.7646, +0.2609, -0.3514, +0.4986, +0.3343, -0.9159, -0.0581, -0.5956, -0.5240, -0.2792, -0.3013, -0.1107, -0.2959, +0.5864, -0.0764, -0.0400, +0.0531, +0.2080, -0.0307, +0.0969, +0.5499, -0.1441, -0.2910, +0.4503, +0.0614, -0.2659, +0.0426], -[ +0.0491, +0.3093, -0.0318, -0.8439, +0.5913, -0.0769, +0.0863, -0.3573, +0.2228, -0.4479, -0.1913, +0.1382, -0.4532, -0.3470, -0.0179, +0.0111, -0.0516, +0.3309, +0.3214, +0.6426, -0.5399, +0.0484, -0.4072, -0.3774, +0.2330, +0.1921, +0.1626, -0.1177, +0.5230, -0.2601, -0.4445, -0.0069, -0.1538, -0.6692, +0.4471, -0.0215, +0.0857, -0.2530, +0.1879, +0.1100, +0.2207, -0.1669, +0.0413, -0.0838, +0.2795, -0.4622, -0.1695, +0.0579, -0.0616, -0.5925, -0.2176, -0.2344, -0.0592, -0.1451, -0.5111, -0.1089, +0.1764, +0.1386, -0.2253, -0.1977, +0.1968, +0.2491, -0.0241, +0.3077, -0.1915, -0.2060, +0.0985, -0.1273, -0.0161, -0.3782, +0.5063, -0.1164, -0.0502, -0.0194, -0.3740, -0.4717, -0.3507, -0.4367, +0.0923, +0.0768, +0.0556, +0.0977, -0.0562, -0.7556, +0.3859, -0.0889, +0.1840, -0.1027, +0.1168, -0.7213, -0.2280, -0.5588, +0.0352, -0.7529, +0.0534, -0.2152, -0.6187, -0.0479, +0.3364, -0.1433, +0.1889, -0.4105, +0.0604, +0.3585, +0.1637, +0.2882, +0.3175, +0.0607, -0.4040, +0.0680, +0.4131, +0.4303, +0.0660, -0.0127, -0.3839, -0.3906, +0.2188, +0.0342, +0.2090, -0.0117, -0.2132, +0.0536, -1.0329, -0.7265, -0.4025, +0.3061, -0.0830, +0.1921], -[ -0.0229, -0.2669, +0.0939, -0.1345, -0.3125, +0.1171, -0.0993, +0.1118, -0.4189, -0.2257, -0.0198, +0.2580, +0.3391, +0.2045, +0.4914, -0.4364, +0.1269, +0.5571, +0.3723, -0.0177, +0.0669, -0.6720, +0.2081, +0.1743, +0.0905, -0.1798, +0.1160, -0.3423, -0.2063, +0.0161, -0.2626, -0.4706, -0.1832, -0.4342, +0.0990, +0.0337, +0.4799, -0.0610, +0.0779, +0.2490, -0.2116, +0.0652, -0.3776, -0.3344, +0.0599, -0.2015, -0.2270, -0.2365, -0.3359, -0.3355, -0.3478, -0.0164, -0.0813, +0.2017, +0.3357, +0.2310, +0.1465, -1.5226, -0.3096, +0.2665, -0.0086, -0.4390, +0.0091, -0.2856, -0.0073, +0.4148, +0.3319, -0.9192, -0.5897, +0.0832, +0.2707, -0.3403, -0.2191, +0.0795, -0.0163, +0.1183, +0.2744, -0.7181, -0.5344, -0.0086, -0.5405, -1.2496, +0.1624, -0.3913, -0.4670, -0.0427, -0.3408, +0.0396, -0.2326, +0.4355, +0.1748, +0.0226, -0.2608, +0.2584, +0.1810, +0.0478, -0.9181, +0.2796, -0.1774, -0.2603, -0.1740, -0.2116, -0.4351, -0.4930, +0.0180, -0.1041, +0.1678, +0.1536, -0.3732, -0.1256, -0.2169, -0.0975, +0.0327, -1.4364, +0.3042, -0.1432, -0.1880, -0.1799, -0.3342, +0.1747, -0.2580, +0.0543, +0.1042, +0.1303, -0.1476, -0.2047, +0.1087, +0.3670] -]) - -weights_dense2_b = np.array([ +0.2348, +0.1383, +0.0414, +0.0242, +0.1290, -0.0921, +0.0826, -0.0498, +0.1337, +0.0765, +0.0904, +0.2418, +0.1752, +0.0957, +0.0414, +0.1969, -0.0985, +0.0371, +0.1808, +0.1663, +0.1205, -0.0367, -0.0999, -0.1063, +0.0048, -0.1028, +0.1392, +0.0555, +0.1237, +0.1633, -0.1349, +0.0987, +0.0050, +0.2603, +0.0126, +0.0577, +0.1184, +0.1429, +0.2682, +0.0465, +0.2461, +0.0487, +0.1582, +0.1367, +0.1891, +0.1793, -0.1894, +0.1642, +0.1738, +0.0997, +0.1810, +0.2784, +0.0424, +0.1391, +0.2099, -0.1073, +0.1689, +0.0270, +0.0953, -0.0083, +0.1281, -0.0383, +0.1194, +0.2378, +0.1426, +0.1762, +0.1553, +0.1267, -0.0201, +0.2139, +0.0580, +0.1260, +0.0606, +0.0000, +0.1837, +0.1250, +0.1529, +0.0458, +0.0951, +0.2391, +0.0399, +0.1520, +0.0193, -0.0101, +0.1513, -0.0460, +0.0539, +0.0823, +0.0038, -0.1066, +0.1756, -0.0458, +0.1482, +0.2161, -0.0275, +0.0023, -0.0702, +0.2849, -0.0156, +0.2604, +0.1535, +0.2057, -0.0429, +0.1953, +0.0911, +0.1547, +0.1088, +0.1309, +0.0301, +0.1955, +0.1797, +0.1478, +0.1173, -0.0536, -0.0523, +0.1347, +0.1602, +0.0357, +0.1057, +0.0603, +0.0096, +0.1199, +0.0220, +0.0653, +0.2066, +0.0876, +0.2465, +0.0949]) - -weights_final_w = np.array([ -[ +0.1557, +0.0377, +0.0539, -0.0095, -0.0206, +0.0898, +0.1124, +0.0679, -0.2415, +0.0932, +0.0335, -0.0069, -0.2275, +0.0700, +0.1777, +0.0030, -0.0171], -[ +0.2429, +0.0190, -0.0652, -0.1000, -0.1401, -0.1077, -0.1164, +0.0859, -0.1051, +0.0119, -0.0259, -0.2127, +0.0367, +0.1122, -0.0590, -0.3274, +0.1352], -[ +0.1630, +0.3962, +0.0360, -0.0294, -0.1611, +0.1004, -0.2803, +0.1341, -0.0826, -0.2768, -0.0001, +0.2951, +0.0536, +0.1262, -0.0484, -0.1018, -0.0363], -[ +0.1117, +0.2500, +0.3749, -0.0531, +0.0069, -0.0833, -0.0085, -0.2004, +0.0472, +0.3213, +0.2305, -0.2832, +0.2262, -0.0240, -0.0181, +0.4212, -0.0129], -[ -0.1123, +0.1287, -0.1076, -0.0991, -0.3460, -0.1302, +0.1404, +0.1543, -0.0038, +0.1093, -0.0013, +0.1454, -0.2178, -0.0507, -0.3407, -0.1868, +0.0213], -[ +0.1135, -0.2957, +0.5443, -0.0778, -0.0236, +0.0082, +0.2230, -0.1272, +0.0185, -0.2763, +0.2480, -0.1090, +0.0836, -0.0204, +0.1751, +0.2776, +0.0785], -[ +0.0437, -0.3096, +0.2525, +0.0871, -0.1298, -0.1182, +0.0768, +0.2495, -0.0885, +0.0875, -0.0838, -0.0834, +0.0937, +0.0215, -0.1228, -0.1566, -0.0850], -[ +0.0499, -0.0928, +0.1532, -0.1384, -0.1269, +0.1448, -0.1493, -0.4104, +0.1477, +0.1534, -0.1735, -0.3560, +0.1212, +0.0161, +0.0620, +0.1112, +0.0067], -[ -0.0353, +0.1401, -0.1431, -0.0459, +0.1258, +0.0220, +0.4374, -0.1421, -0.0903, -0.0369, -0.0476, -0.0259, -0.0514, -0.1427, -0.0292, +0.0293, -0.0729], -[ -0.0299, -0.0075, +0.3586, -0.0470, -0.1810, +0.2358, -0.0152, +0.1157, +0.1496, -0.2556, +0.1130, -0.0505, -0.0084, -0.0404, -0.1102, -0.0484, -0.0147], -[ +0.0413, -0.0598, +0.0318, -0.0581, +0.1539, +0.0467, -0.0147, -0.0190, -0.1012, +0.1194, -0.1476, -0.0534, +0.1471, -0.0909, +0.1336, -0.3073, +0.0788], -[ +0.2951, +0.4778, +0.0718, +0.0938, -0.1089, -0.0807, +0.3674, +0.0298, +0.2997, +0.2335, -0.2089, -0.2364, -0.2629, +0.0632, -0.0949, -0.3432, -0.0473], -[ +0.0952, -0.1576, -0.2658, -0.2594, +0.2205, -0.0104, -0.1168, +0.0559, +0.1327, -0.0708, +0.1172, -0.0705, -0.4029, +0.0820, -0.2156, -0.0500, +0.2040], -[ -0.1904, -0.0772, +0.1148, -0.0767, -0.0574, -0.0304, +0.1056, -0.0923, +0.0070, -0.0656, +0.0094, +0.1825, +0.1719, +0.0911, +0.3421, -0.0955, +0.0418], -[ +0.0897, +0.0826, +0.0055, +0.0414, +0.2992, +0.0463, -0.1709, -0.1826, +0.0056, +0.0821, -0.0346, -0.1180, +0.0149, +0.0146, -0.2250, +0.0659, -0.0234], -[ -0.1039, +0.2009, +0.2054, +0.2953, -0.1496, +0.0109, -0.0306, -0.0293, -0.1602, +0.0596, -0.0015, +0.2256, +0.0328, -0.0175, -0.0195, -0.1081, +0.0057], -[ +0.5561, +0.2098, +0.0268, +0.2081, +0.1067, -0.2122, -0.1671, -0.2486, +0.0409, -0.0182, +0.2381, -0.0652, +0.3580, +0.0775, -0.4317, -0.2264, +0.0416], -[ -0.0902, +0.1352, +0.0633, -0.1455, +0.1649, -0.0826, +0.1064, +0.0357, +0.1331, -0.1140, -0.0108, -0.1170, -0.0738, -0.1596, -0.3082, -0.0630, +0.1258], -[ +0.1204, +0.1106, +0.1091, +0.2860, +0.1621, +0.0838, -0.0398, +0.0981, -0.0287, -0.0911, +0.3124, +0.0843, +0.0763, -0.0571, +0.0350, -0.1405, -0.0387], -[ +0.0524, -0.2639, +0.0475, +0.1908, -0.1854, -0.0256, +0.0450, -0.1318, -0.0290, -0.1375, -0.0391, -0.1742, +0.0166, +0.1346, +0.1030, -0.3783, -0.0008], -[ +0.1362, +0.1333, +0.1153, -0.0777, +0.0066, +0.0265, +0.0500, +0.2453, +0.1695, +0.0076, -0.0113, +0.1109, +0.0304, +0.0330, +0.0880, +0.3437, +0.0200], -[ +0.1096, +0.0055, +0.1997, +0.1747, -0.0996, +0.0833, +0.2049, +0.0869, -0.0854, -0.0220, -0.1435, -0.1453, +0.0945, -0.0052, +0.0893, +0.3335, -0.1477], -[ -0.0456, -0.3834, -0.3595, +0.3633, -0.0115, -0.0163, +0.0267, +0.1642, +0.0086, +0.1597, -0.0464, +0.1353, +0.2631, +0.1318, -0.1124, -0.2594, +0.0809], -[ -0.4030, -0.1264, -0.3425, -0.0538, +0.1334, +0.1350, +0.0275, +0.0154, +0.1734, -0.1038, +0.1337, -0.2594, +0.2833, +0.0528, -0.1093, +0.1444, -0.0249], -[ -0.0001, +0.0727, -0.0070, -0.0814, +0.0246, -0.0552, +0.0897, -0.1124, +0.2923, -0.0475, -0.0467, +0.1833, -0.0054, +0.0886, +0.0618, +0.0434, -0.1264], -[ -0.0112, +0.1904, -0.0230, +0.0191, +0.0238, +0.0554, +0.0125, +0.1348, -0.1544, +0.0601, +0.2539, -0.0237, +0.0317, -0.0014, +0.0322, -0.1618, -0.0170], -[ +0.1791, +0.1683, -0.0539, -0.0488, -0.0448, -0.0205, +0.1072, +0.2665, -0.0821, +0.0090, +0.0115, -0.1038, +0.2311, +0.0240, -0.3959, +0.3399, -0.0031], -[ +0.2231, -0.2012, +0.2168, -0.2963, +0.1670, +0.0677, +0.0217, -0.0894, -0.1076, -0.0788, +0.0137, -0.1867, +0.3615, +0.0047, -0.3588, +0.0467, -0.1042], -[ +0.1391, +0.1963, +0.2097, -0.0806, +0.0928, -0.2748, +0.4190, -0.0536, -0.0567, +0.2210, +0.1084, +0.2966, -0.0978, -0.0454, -0.1383, -0.2565, -0.0747], -[ -0.3741, -0.0092, -0.0692, +0.1207, +0.1569, -0.1054, -0.0946, -0.1220, +0.0378, -0.4867, +0.1739, +0.2901, +0.1411, -0.0575, +0.3314, +0.0078, +0.0901], -[ -0.1237, -0.1282, +0.1847, -0.0050, -0.0756, +0.1100, +0.1550, -0.0394, -0.0618, +0.0708, +0.0317, -0.2522, +0.0090, +0.0592, -0.0811, +0.0490, -0.1004], -[ -0.0552, +0.1463, +0.0291, +0.2168, +0.0280, +0.0494, +0.0160, -0.1794, -0.0909, +0.0474, -0.2166, +0.1447, +0.0697, +0.0921, -0.0155, +0.0652, -0.0800], -[ -0.0248, -0.0461, -0.0538, -0.0094, -0.0306, +0.1312, +0.2070, -0.0598, +0.1731, -0.0148, +0.0859, -0.0390, +0.0657, +0.0540, +0.1227, -0.0297, +0.1584], -[ -0.1673, -0.2320, +0.0087, -0.0540, -0.0462, -0.3526, +0.0316, -0.1450, +0.0194, +0.2732, -0.1296, +0.1069, -0.4164, -0.0127, +0.0818, +0.1184, -0.0628], -[ -0.0290, +0.0803, +0.1348, +0.3649, -0.0888, -0.0991, +0.7012, +0.0268, -0.2255, +0.0559, -0.1813, -0.0469, +0.0029, +0.1574, +0.6412, +0.0785, +0.2626], -[ -0.2644, +0.1051, -0.0525, -0.0911, -0.0054, +0.0559, +0.1225, -0.0522, +0.0578, +0.1679, +0.0076, -0.1484, -0.4270, -0.1586, +0.4413, +0.1205, -0.0567], -[ +0.1414, -0.1118, +0.1444, -0.0704, -0.1059, +0.0446, +0.0460, -0.0141, -0.1358, -0.1459, +0.1476, -0.0278, +0.0877, -0.1407, -0.1061, +0.1391, +0.0104], -[ -0.0869, -0.0057, -0.0534, -0.3199, +0.0519, +0.2693, -0.0215, -0.3291, +0.0195, -0.1472, -0.1073, +0.3527, -0.0146, -0.0613, -0.0161, -0.0419, -0.0363], -[ -0.0781, -0.2821, +0.1474, -0.0714, -0.2091, -0.1424, -0.0917, +0.1396, -0.0955, +0.3801, -0.2077, +0.2851, +0.4765, +0.1371, -0.3051, -0.0917, +0.0017], -[ -0.0002, -0.1831, +0.0381, +0.1813, -0.1366, -0.1440, -0.1314, -0.0519, -0.0330, +0.0482, +0.0279, -0.3101, -0.3139, -0.0241, -0.1949, +0.4191, +0.0249], -[ +0.2505, +0.0091, +0.1111, +0.2080, +0.0385, -0.1706, +0.0075, -0.2625, +0.0964, +0.1839, +0.0621, -0.1995, -0.0998, +0.0276, -0.1035, -0.0321, +0.0200], -[ +0.1035, +0.1685, -0.1159, +0.0028, +0.0325, +0.0583, -0.0319, +0.0860, -0.1961, -0.0037, +0.0313, +0.1332, -0.3917, -0.1072, -0.0821, -0.1917, +0.0315], -[ -0.1727, -0.1977, +0.1615, -0.0871, +0.0535, -0.0531, +0.1428, +0.0433, +0.0056, +0.0507, +0.2617, -0.2404, -0.2598, -0.0271, +0.2044, +0.0325, +0.0728], -[ -0.0673, -0.2561, +0.0644, +0.2168, -0.1966, -0.0268, +0.1134, +0.2092, -0.2141, -0.1452, +0.1789, -0.0941, +0.0402, +0.0543, -0.0505, +0.0324, -0.0208], -[ +0.1138, +0.0355, -0.2978, +0.0954, +0.0069, -0.2774, +0.0224, +0.0385, -0.0319, -0.0198, +0.0108, -0.0089, -0.1055, -0.0589, +0.0781, +0.1167, +0.0459], -[ -0.3570, -0.0838, +0.1394, +0.2149, -0.2314, +0.0257, +0.0146, +0.2146, -0.1198, -0.0565, +0.1558, +0.0388, +0.2329, +0.0013, +0.1620, -0.0474, -0.0102], -[ -0.2303, +0.0356, -0.1072, +0.0270, +0.0766, +0.0611, +0.0839, +0.1429, +0.0343, -0.1692, +0.0879, -0.5029, -0.0603, +0.0260, +0.3922, -0.1099, +0.0918], -[ -0.0247, -0.0292, +0.0117, +0.0878, +0.0228, -0.1443, -0.1255, -0.3897, +0.2236, +0.2154, -0.1874, +0.0565, +0.1441, -0.0372, -0.0106, +0.0426, +0.1201], -[ -0.0438, -0.1301, -0.2146, +0.0381, -0.0718, -0.1091, +0.0802, +0.4783, +0.0235, +0.0550, -0.0346, +0.0739, -0.0511, +0.1030, +0.1407, +0.0808, +0.0479], -[ -0.1986, -0.0878, -0.1790, +0.3750, +0.0117, -0.0723, +0.0012, +0.0184, +0.1245, -0.0645, -0.0110, +0.1276, -0.1126, -0.0690, +0.1222, +0.2940, -0.0562], -[ -0.1482, +0.0817, -0.3250, -0.0477, -0.0844, -0.0367, -0.1959, -0.2170, +0.0763, +0.0965, -0.0154, -0.1733, +0.0189, +0.0160, -0.0796, -0.1116, -0.0728], -[ +0.0196, -0.0623, +0.0071, +0.1822, +0.2373, +0.0289, -0.1762, +0.2531, +0.1717, +0.0751, -0.2390, -0.2563, -0.1278, -0.0001, +0.0594, -0.1969, -0.0305], -[ -0.2040, +0.1265, -0.0116, +0.3008, -0.0838, +0.0565, -0.0437, +0.0191, -0.0934, -0.1302, +0.0327, +0.0550, +0.1851, +0.0536, -0.3735, +0.2601, -0.0194], -[ +0.0922, -0.0008, -0.0129, +0.0717, -0.1074, -0.2352, -0.1092, -0.0519, +0.1426, +0.4019, +0.0613, +0.2328, -0.2403, +0.0311, -0.7496, +0.5620, +0.1024], -[ -0.0125, -0.1615, +0.0064, -0.2307, +0.0803, -0.1738, -0.0201, -0.0625, +0.2185, +0.1945, -0.1012, -0.0147, -0.0117, +0.0797, -0.0550, -0.1794, +0.0598], -[ +0.0422, -0.4714, +0.0442, +0.0773, +0.0865, +0.0642, +0.0468, +0.0669, -0.1954, -0.2546, +0.0250, -0.1148, -0.0684, -0.0726, +0.0901, +0.0191, -0.0344], -[ -0.1945, -0.0204, +0.1076, -0.1077, -0.1596, -0.0667, -0.1051, +0.0346, +0.2561, +0.0633, +0.0614, +0.2762, -0.2502, -0.0601, +0.2298, +0.2656, -0.0517], -[ -0.0238, -0.2011, -0.2648, +0.1842, -0.0532, -0.2108, +0.2296, +0.1382, -0.0397, +0.2093, -0.0381, +0.0329, -0.0070, -0.1700, +0.1958, -0.2687, +0.0043], -[ +0.0461, -0.1039, +0.1217, -0.0782, -0.1562, +0.0037, -0.1044, -0.1317, +0.0576, -0.0170, +0.3194, -0.0486, -0.1145, -0.0685, +0.0608, -0.0420, -0.0445], -[ +0.0004, +0.1774, -0.1920, -0.2472, +0.0673, +0.1843, -0.2286, +0.0233, -0.0479, -0.1365, -0.0522, -0.1216, -0.1569, -0.0720, -0.1231, +0.0861, -0.0278], -[ -0.1262, -0.1873, -0.1844, +0.0235, +0.0095, +0.0295, -0.1127, +0.0633, +0.0616, -0.1993, +0.2913, +0.0776, +0.0945, +0.1532, -0.0423, +0.0422, -0.0025], -[ -0.1462, +0.0437, -0.0431, -0.1077, -0.0053, -0.0756, -0.1133, +0.0886, +0.0681, -0.0007, +0.2095, +0.1691, -0.1415, -0.0226, +0.0765, -0.1437, -0.0244], -[ +0.2394, +0.0812, +0.0779, -0.4102, -0.0638, +0.2056, -0.1492, +0.1764, -0.1595, +0.1176, +0.1617, +0.4105, -0.4283, -0.0891, -0.1624, +0.1214, -0.1451], -[ +0.1286, +0.1319, +0.2743, +0.0770, +0.0476, -0.0142, +0.3293, +0.0361, -0.1476, -0.0198, +0.2467, +0.1602, +0.0716, +0.0935, -0.0009, -0.0686, +0.0234], -[ +0.1139, +0.1490, -0.0797, -0.1794, -0.0460, +0.2337, -0.1575, -0.2318, +0.1208, -0.0228, -0.0104, +0.0170, -0.2054, +0.1021, +0.2603, +0.0338, +0.0292], -[ +0.0332, +0.0386, +0.0575, -0.2167, -0.1358, +0.0557, -0.0847, +0.2298, -0.0525, +0.1973, -0.1496, +0.0521, +0.1430, -0.0815, +0.0184, +0.3537, -0.0315], -[ -0.0535, -0.1715, -0.0551, -0.0387, +0.3369, -0.0325, +0.1283, -0.0876, +0.1577, +0.0203, +0.0530, -0.1816, -0.1185, +0.0731, +0.0627, +0.0803, -0.0313], -[ -0.0378, +0.3542, +0.1541, -0.0523, +0.0937, +0.5068, +0.0378, -0.3014, +0.0314, -0.2412, -0.0096, -0.1185, +0.1142, -0.0788, +0.1340, +0.3104, +0.0127], -[ +0.0725, +0.0254, -0.3277, +0.0590, +0.4037, -0.0445, +0.2072, +0.2896, -0.2010, -0.0442, -0.1412, -0.1675, +0.0451, +0.1433, -0.0672, -0.0561, -0.0755], -[ -0.1326, +0.2991, +0.0909, -0.1965, +0.2434, +0.1651, +0.0679, -0.0895, +0.0066, -0.0163, -0.1940, +0.0968, +0.2072, +0.0970, -0.0172, +0.2422, +0.0040], -[ -0.0587, +0.0363, -0.5051, +0.3994, -0.0238, -0.0798, +0.0472, +0.2635, -0.0760, +0.3018, +0.0131, +0.4153, +0.3715, +0.0331, -0.1754, +0.2536, -0.0316], -[ -0.3260, -0.1014, +0.0017, -0.2008, -0.1379, -0.0395, +0.0014, +0.0345, +0.1012, +0.0753, +0.0136, -0.2853, -0.0442, +0.0429, -0.1313, -0.2394, +0.0313], -[ -0.2666, +0.1051, -0.0455, -0.0307, +0.2308, +0.0768, -0.0299, -0.0330, +0.0029, -0.0251, +0.0946, -0.0769, -0.0173, -0.0243, +0.0687, -0.0138, +0.0713], -[ -0.0152, -0.2386, -0.0356, -0.1110, +0.0644, -0.1132, +0.1741, -0.1367, -0.1087, -0.1917, +0.0202, -0.1980, +0.0375, -0.0945, +0.0278, +0.0058, +0.0598], -[ +0.4101, +0.2379, -0.0906, +0.1421, -0.1235, +0.0503, -0.4131, -0.1493, +0.0172, +0.6413, +0.0016, +0.6695, -0.2049, +0.0607, -0.3680, -0.0272, +0.0174], -[ +0.0330, +0.1307, -0.2587, -0.0355, -0.0559, +0.2244, -0.0024, +0.2352, +0.0069, +0.0729, +0.0695, +0.0305, +0.1054, -0.0549, -0.1039, -0.1522, -0.0742], -[ +0.0516, +0.2993, -0.1718, +0.2584, -0.1647, -0.2403, -0.1964, -0.2103, +0.0170, +0.1347, +0.1547, +0.1513, -0.1160, -0.1149, -0.0268, -0.2002, +0.1037], -[ +0.1235, -0.0124, +0.0333, +0.3716, +0.0651, +0.1093, -0.1451, +0.0058, -0.0057, -0.0928, +0.1854, +0.0333, -0.3922, +0.0223, +0.1316, +0.1169, -0.1472], -[ -0.2573, -0.1379, -0.2144, +0.0751, -0.1919, +0.0638, -0.0343, +0.0157, -0.0309, +0.0917, -0.1402, -0.1254, +0.2600, +0.0036, -0.2341, +0.3282, +0.0441], -[ +0.0202, -0.2044, +0.1500, +0.1114, -0.0445, -0.4582, -0.2058, -0.0002, +0.1572, +0.2498, +0.0434, +0.0990, +0.0750, -0.0121, +0.0097, -0.0565, +0.0074], -[ +0.0106, -0.0105, +0.2855, +0.0789, +0.1881, +0.0657, -0.0417, +0.1673, -0.0474, -0.0136, -0.1233, -0.0640, +0.0144, -0.0548, +0.1402, -0.0718, -0.0983], -[ -0.0878, -0.0897, +0.3015, +0.0223, -0.1784, -0.1745, +0.1019, +0.0395, +0.0332, +0.0140, -0.0394, +0.3245, +0.0030, +0.0487, -0.1358, +0.0013, +0.1631], -[ +0.0403, -0.3702, -0.0875, +0.0445, +0.0015, +0.0116, -0.0851, +0.1112, -0.1200, +0.0342, -0.1128, +0.0126, +0.0765, +0.0050, -0.0215, -0.0128, -0.0691], -[ +0.0495, -0.1284, +0.0001, -0.0666, -0.0199, +0.2606, +0.0645, -0.0779, +0.0534, -0.0469, -0.0434, +0.0481, -0.1781, -0.1000, -0.1953, -0.1540, +0.0635], -[ -0.1683, -0.1070, +0.0292, -0.1561, +0.0943, +0.1270, +0.0183, +0.0230, +0.1993, -0.3092, +0.0734, +0.1918, -0.1613, -0.1269, +0.5659, -0.3520, +0.0849], -[ -0.2561, +0.0248, -0.0692, -0.2269, -0.1265, +0.0850, -0.1238, +0.0065, +0.0235, -0.1846, +0.2798, +0.0602, -0.0130, +0.0022, -0.1524, -0.2052, -0.0633], -[ -0.0866, -0.1294, +0.0782, +0.2271, +0.0292, +0.2112, -0.1410, -0.2977, +0.0024, -0.2857, +0.0625, -0.1261, -0.1076, -0.0390, -0.1403, -0.7771, +0.1489], -[ -0.0931, -0.0533, -0.2041, +0.0187, -0.0176, +0.0979, -0.0449, +0.0599, -0.1343, +0.0781, +0.0019, +0.0037, -0.2179, -0.0279, -0.0077, +0.1967, +0.1812], -[ -0.0630, +0.0156, +0.2661, -0.3955, -0.2461, -0.1673, +0.1338, -0.2243, -0.0917, +0.0429, -0.0677, +0.0675, +0.1562, +0.0712, +0.0599, +0.0857, -0.0022], -[ -0.0827, -0.0066, -0.0508, -0.2501, +0.1727, -0.0673, -0.2722, +0.0034, +0.1900, +0.0935, +0.1518, -0.2970, +0.0206, +0.1015, +0.3058, -0.0966, +0.0802], -[ -0.3140, -0.0855, +0.0831, -0.2979, -0.1527, -0.0586, -0.0765, +0.1315, -0.1255, +0.0756, -0.1535, +0.1171, +0.0520, -0.0103, -0.1873, +0.4664, -0.1241], -[ -0.0114, +0.2095, -0.1994, -0.0867, +0.1590, +0.1155, -0.0584, +0.1017, +0.0551, +0.0491, -0.0619, +0.0421, +0.3007, +0.0639, +0.2559, +0.0231, +0.0049], -[ -0.0934, +0.1292, +0.0787, +0.1615, -0.0336, +0.0189, +0.0192, +0.3530, -0.0446, -0.0175, -0.0205, +0.4891, +0.0128, +0.0602, +0.1758, +0.2602, +0.0783], -[ -0.0994, +0.2774, +0.1490, -0.0130, +0.0516, +0.2508, -0.2210, -0.2081, +0.0918, +0.1224, -0.1214, -0.0455, +0.0377, -0.0405, -0.0745, -0.1266, +0.0266], -[ -0.2693, -0.1904, -0.4210, +0.2373, -0.1741, -0.0926, -0.1071, +0.0152, -0.0245, +0.2144, +0.0021, +0.2754, -0.0779, +0.0889, -0.2059, +0.4492, -0.0414], -[ -0.0317, -0.1831, +0.0314, -0.1490, -0.0209, +0.0647, +0.1074, +0.2058, -0.2190, -0.2174, -0.0096, +0.1194, -0.3281, -0.0285, +0.0097, -0.0474, +0.0277], -[ -0.1067, +0.1624, +0.0984, -0.0254, -0.2838, +0.3969, +0.1763, +0.2984, -0.0858, +0.0960, -0.1500, +0.0147, -0.0332, -0.0471, +0.1749, +0.0493, -0.0735], -[ +0.0132, +0.3678, +0.0342, -0.0696, +0.2202, +0.2356, +0.0564, -0.2170, +0.1808, -0.1728, -0.1532, +0.1138, -0.2917, +0.0452, -0.1400, +0.0686, +0.0163], -[ -0.0840, +0.1193, -0.3362, -0.5889, +0.1703, +0.1629, +0.0136, +0.2344, +0.0378, -0.0116, +0.0711, +0.3142, +0.1808, -0.0282, +0.2050, +0.0341, +0.1123], -[ -0.0805, -0.0414, -0.0382, -0.0489, +0.0325, -0.0496, +0.0527, -0.0898, +0.0059, +0.2620, -0.1943, +0.1644, +0.0712, -0.0231, +0.0093, +0.0466, -0.0091], -[ -0.1584, +0.1060, +0.0313, +0.1173, -0.2279, -0.0727, +0.0211, +0.0052, +0.0345, +0.0741, -0.1256, -0.1304, -0.1006, -0.1196, +0.0600, -0.1250, +0.0047], -[ +0.2277, -0.1071, -0.4313, -0.1747, +0.1176, +0.1918, -0.1673, -0.0528, +0.0969, -0.3576, +0.1410, +0.6245, -0.3743, +0.0336, -0.1082, -0.2136, +0.0313], -[ +0.0289, +0.1115, +0.0888, -0.1529, -0.2121, -0.1695, +0.0694, +0.0380, -0.0102, +0.4132, -0.0224, +0.2705, +0.0216, -0.1863, -0.2998, -0.2107, -0.0259], -[ +0.0589, +0.1581, -0.4318, -0.1053, -0.1571, -0.2853, -0.0146, +0.0784, +0.0020, +0.0923, -0.0254, -0.2018, -0.1489, +0.0094, +0.3257, -0.1083, -0.0905], -[ -0.0949, +0.0170, +0.0272, +0.1819, -0.0752, -0.0181, -0.2129, -0.0323, +0.0274, -0.0133, +0.0938, -0.3856, +0.3091, +0.0179, +0.3366, +0.1593, -0.0161], -[ -0.1252, +0.3701, -0.0589, +0.0545, -0.1108, -0.0956, +0.0695, +0.2712, -0.0083, +0.2579, -0.1531, -0.0687, +0.0345, +0.0762, -0.1421, -0.0505, +0.0517], -[ +0.0517, -0.0901, -0.1277, +0.4666, +0.0574, -0.0990, +0.0963, +0.1274, -0.0799, +0.0159, +0.1000, -0.2168, +0.1889, +0.0040, -0.1972, -0.0362, +0.0562], -[ +0.1440, +0.0298, +0.0816, -0.1297, -0.1045, +0.0136, -0.1250, -0.5495, +0.1513, -0.0068, +0.0330, +0.0588, +0.0072, -0.0345, +0.1894, +0.1547, +0.0435], -[ +0.1953, +0.2385, -0.0724, +0.0091, -0.1904, +0.0435, +0.1006, +0.0204, +0.0278, +0.0446, -0.0699, -0.1225, +0.0138, +0.1053, +0.0760, -0.0600, +0.0150], -[ -0.0602, -0.0793, +0.0592, +0.2389, +0.1148, -0.0913, +0.0474, -0.0686, +0.2182, +0.1319, -0.0708, +0.1719, +0.1364, +0.0680, -0.1258, +0.0391, -0.0556], -[ -0.0524, -0.0569, -0.2458, -0.0279, -0.0945, -0.0773, -0.0324, +0.0079, -0.1167, +0.0916, +0.0723, +0.0455, -0.0923, +0.0999, -0.2338, +0.0758, -0.0457], -[ +0.1830, +0.1197, -0.1186, -0.0196, +0.1558, -0.0338, +0.0131, -0.2008, -0.0743, +0.1917, -0.0534, +0.1725, +0.2232, -0.0241, +0.3512, -0.1768, -0.0503], -[ +0.1098, -0.0488, -0.1056, +0.0923, +0.0591, +0.0028, -0.1780, +0.0580, +0.0417, -0.0130, +0.0246, +0.0049, -0.0911, -0.1237, -0.1790, -0.0281, +0.0429], -[ -0.1739, -0.2217, +0.4646, -0.0477, -0.1768, +0.0398, +0.4055, +0.3274, -0.2234, -0.1894, -0.0553, +0.1020, -0.0872, -0.1464, +0.1350, +0.2679, -0.1034], -[ +0.0890, +0.0403, -0.0967, -0.2567, +0.1072, +0.1612, +0.0717, +0.1046, +0.0468, -0.1054, +0.0571, +0.1053, +0.0292, +0.0666, -0.2592, +0.0386, -0.0042], -[ -0.2850, -0.1275, -0.0273, +0.0466, +0.0844, +0.2588, +0.0463, +0.0784, +0.1722, -0.1267, +0.2307, +0.1287, +0.0065, +0.0705, -0.1535, +0.1259, +0.0177], -[ +0.0563, -0.1392, -0.2831, -0.0861, +0.2158, -0.3323, +0.0984, -0.1214, -0.0061, +0.1651, -0.0671, +0.1043, -0.1030, -0.0276, -0.3177, -0.1690, +0.0226], -[ -0.0371, +0.2498, +0.0943, -0.0595, -0.1622, -0.0368, -0.0410, -0.0350, +0.1649, -0.1391, +0.1116, +0.1493, +0.4497, +0.0689, +0.1345, +0.0235, -0.1134], -[ +0.0242, +0.3250, -0.0431, -0.0669, +0.0768, +0.3238, -0.1787, -0.0234, -0.2246, -0.0746, -0.0270, -0.0981, -0.0545, -0.0218, -0.0163, +0.1178, -0.0560], -[ +0.0480, +0.0810, +0.0106, +0.0650, -0.0826, +0.0256, -0.2193, -0.1972, +0.0669, +0.1536, +0.1926, +0.2480, -0.3976, -0.0610, +0.1993, -0.0446, +0.0406], -[ -0.1425, +0.0553, +0.0507, +0.0564, +0.0144, -0.0179, +0.0147, -0.1410, -0.0849, +0.0165, -0.1263, +0.0968, +0.0568, +0.1290, -0.0628, -0.1092, +0.1861], -[ +0.0671, +0.0607, +0.0758, -0.0148, +0.0791, +0.1348, -0.2942, -0.1454, -0.0840, +0.1462, +0.1797, +0.0763, +0.0768, +0.0266, +0.0433, -0.1881, +0.0711], -[ +0.0370, -0.0775, -0.0157, -0.0413, -0.0182, +0.3259, -0.1009, -0.2658, +0.1276, +0.0289, -0.0747, +0.1413, +0.0705, -0.0123, +0.0475, +0.2272, -0.0674], -[ +0.0655, +0.0401, -0.0795, +0.1287, +0.0759, +0.0857, -0.0211, +0.0354, +0.0308, +0.0311, -0.2132, -0.0911, -0.3604, +0.0304, -0.1964, -0.0431, +0.0475], -[ -0.0644, -0.0094, -0.1486, +0.3191, -0.2175, -0.1737, -0.0700, +0.1518, -0.0068, +0.4075, +0.0318, +0.1678, -0.1474, +0.0902, +0.0219, +0.2162, -0.0012], -[ +0.1667, +0.1585, +0.2017, +0.2685, -0.0871, -0.2013, -0.0570, +0.0754, +0.1046, +0.1687, -0.0567, -0.0313, -0.1774, -0.0854, +0.0939, +0.1894, +0.0624], -[ +0.0932, -0.0126, +0.0624, +0.3765, +0.0937, -0.0058, +0.0455, +0.1864, -0.0820, -0.1547, +0.1103, +0.0415, +0.0349, -0.0023, +0.3515, +0.0308, +0.0940], -[ -0.0513, +0.0717, -0.0269, -0.0405, -0.0152, -0.0331, +0.1988, -0.0502, +0.0477, -0.1251, +0.2972, -0.0378, +0.2606, -0.0454, +0.2086, +0.0971, -0.0640] -]) - -weights_final_b = np.array([ -0.0082, -0.0230, +0.0671, +0.1373, +0.2278, +0.0230, +0.0218, +0.2155, +0.0044, +0.3212, +0.1209, +0.2365, +0.0112, +0.0689, -0.1482, +0.0108, +0.0086]) - -if __name__=="__main__": - main() diff --git a/examples/pybullet/gym/pybullet_envs/examples/enjoy_TF_HumanoidFlagrunHarderBulletEnv_v0_2017may.py b/examples/pybullet/gym/pybullet_envs/examples/enjoy_TF_HumanoidFlagrunHarderBulletEnv_v0_2017may.py deleted file mode 100644 index 80a2221b1..000000000 --- a/examples/pybullet/gym/pybullet_envs/examples/enjoy_TF_HumanoidFlagrunHarderBulletEnv_v0_2017may.py +++ /dev/null @@ -1,526 +0,0 @@ -#add parent dir to find package. Only needed for source code build, pip install doesn't need it. -import os, inspect -currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) -parentdir = os.path.dirname(os.path.dirname(currentdir)) -os.sys.path.insert(0,parentdir) - -import gym -import numpy as np -import pybullet as p -import pybullet_envs -import time - -def relu(x): - return np.maximum(x, 0) - -class SmallReactivePolicy: - "Simple multi-layer perceptron policy, no internal state" - def __init__(self, observation_space, action_space): - assert weights_dense1_w.shape == (observation_space.shape[0], 256) - assert weights_dense2_w.shape == (256, 128) - assert weights_final_w.shape == (128, action_space.shape[0]) - - def act(self, ob): - x = ob - x = relu(np.dot(x, weights_dense1_w) + weights_dense1_b) - x = relu(np.dot(x, weights_dense2_w) + weights_dense2_b) - x = np.dot(x, weights_final_w) + weights_final_b - return x - -def main(): - gui = True - env = gym.make("HumanoidFlagrunHarderBulletEnv-v0") - if (gui): - env.render(mode="human") - pi = SmallReactivePolicy(env.observation_space, env.action_space) - - env.reset() - torsoId = -1 - for i in range (p.getNumBodies()): - print(p.getBodyInfo(i)) - if (p.getBodyInfo(i)[0].decode() == "torso"): - torsoId=i - print("found humanoid torso") - - while 1: - frame = 0 - score = 0 - restart_delay = 0 - obs = env.reset() - - while 1: - - a = pi.act(obs) - obs, r, done, _ = env.step(a) - score += r - frame += 1 - distance=5 - yaw = 0 - humanPos, humanOrn = p.getBasePositionAndOrientation(torsoId) - if (gui): - time.sleep(1./60.) - print("frame=",frame) - camInfo = p.getDebugVisualizerCamera() - curTargetPos = camInfo[11] - distance=camInfo[10] - yaw = camInfo[8] - pitch=camInfo[9] - targetPos = [0.95*curTargetPos[0]+0.05*humanPos[0],0.95*curTargetPos[1]+0.05*humanPos[1],curTargetPos[2]] - p.resetDebugVisualizerCamera(distance,yaw,pitch,targetPos); - - still_open = env.render("human") - if still_open==False: - return - if not done: continue - if restart_delay==0: - print("score=%0.2f in %i frames" % (score, frame)) - restart_delay = 60*2 # 2 sec at 60 fps - else: - restart_delay -= 1 - if restart_delay==0: break - -weights_dense1_w = np.array([ -[ +0.0752, -0.6789, +0.3101, +0.2636, -0.7081, +0.0974, +0.3678, +1.1948, +0.7950, +1.3772, +0.2956, +0.8415, +0.3694, -0.0850, +0.8419, +0.4497, -0.0195, +0.4956, +0.3685, +1.0572, +0.8459, +0.3653, +0.2858, -0.0665, -0.0281, -0.5052, +0.6827, +0.6618, +0.2302, -0.0453, +0.4321, -0.1548, +0.9474, +1.5321, +0.1271, +0.0411, +0.8746, +0.5186, -0.0479, +0.3412, +0.3288, -0.2989, +0.7928, +0.7855, +0.7304, +0.3658, -0.0112, +0.8015, +0.2981, +0.6527, +0.3115, -0.2148, -0.0112, +0.7147, -0.4057, +0.3370, +0.2069, +0.5883, +0.7047, +0.1635, -0.3282, -0.5068, -0.1686, +0.1959, +0.7755, +0.0100, +1.4566, +0.6938, +0.0254, +0.1937, -0.5088, +0.1414, +0.0846, +0.7014, +0.4438, +0.5287, -0.3892, -0.4043, +1.0074, +0.4806, -0.5142, +1.4775, +1.1066, +0.6906, +0.5565, +0.2616, +1.0036, -0.0584, +0.1833, +0.2652, +0.0789, +0.1869, +0.2619, +0.1662, +0.2666, +0.8897, +0.0652, -0.0637, +0.5140, +0.5815, +0.5812, -0.1808, +0.2841, -0.6698, +0.6791, +0.4880, +0.8905, +0.0408, +0.6331, -0.2306, -0.5939, +0.2471, +1.1788, +0.3668, +0.0266, +0.8637, +1.2819, +0.2163, +0.8522, +0.7304, +0.4264, -0.0239, +1.2315, -0.3494, +0.1508, -0.7900, +0.3448, +1.1165, +1.8110, -0.1039, +0.3905, -0.2768, -0.2969, +0.4174, +0.5370, +1.1485, +0.6219, +1.3133, +0.3764, +0.1804, +0.3035, +0.6823, -0.5350, +0.0519, +0.2773, -0.4125, +0.2056, +0.0225, -0.0566, +0.0725, +0.3949, +0.0689, +1.0486, +0.3620, +0.0135, +0.3381, +0.1834, -0.2720, +0.2406, -0.5493, +0.6250, -0.0294, +0.3847, +0.8713, +1.4271, +0.2877, +0.4419, +0.3455, +0.5685, +0.2008, +0.1130, +0.1883, +0.3298, -0.1112, -0.2278, -0.0714, +0.0764, +0.6108, +0.7001, +0.6910, +0.0480, +0.2522, +0.5368, +0.0912, +1.2811, -0.2263, -0.4145, -0.2841, -0.9109, +0.2695, +0.1641, +0.2013, +0.1221, +0.1216, -0.1524, +0.5033, -0.0899, +0.3205, +0.5048, +0.3406, +0.1668, +1.0533, +0.3956, +0.9017, +0.2437, +0.2327, -0.2247, +0.9468, +0.4281, +0.3659, -0.0398, -0.2564, +0.4621, -0.1711, +0.1795, -0.0352, +0.6745, +0.0598, -0.3521, -0.5270, -0.2982, -0.1760, -0.2699, +0.9688, +0.1084, +0.2812, -0.1849, +0.1756, -0.0126, +1.1015, +0.5203, -0.9025, -0.2325, +0.4296, -0.2778, +0.3206, +0.2000, +0.3638, -0.6239, +0.5348, +0.4735, +1.0221, +0.1029, +0.0574, +1.0728, +0.3091, -0.4448, +0.0320, +0.5159, +0.7493, +0.6693, +0.6241, +0.3482, +0.2403, -0.6731, +0.2171], -[ -0.1752, -0.1544, +0.5755, +0.4434, -0.1515, +0.4672, -0.5603, +0.1816, -0.1929, -0.4904, +0.2192, -0.3133, -0.1343, +0.0474, +0.1037, +0.1314, -0.4307, -0.1081, +0.6350, +0.4140, +0.0704, +0.3162, +0.1339, -0.0598, +0.1176, +0.3238, -0.2225, +0.4147, +0.1245, -0.1552, +0.1893, -0.4832, +0.5187, -0.0204, +0.1949, -0.0900, +0.0271, +0.0211, +0.3097, -0.0373, +0.0175, +0.3897, +0.4506, +0.1308, +0.1478, +0.4668, +0.2385, +0.0941, -0.0499, +0.4888, +0.0620, -0.0388, +0.9152, -0.3079, +0.2611, -0.0733, +0.0849, +0.4503, +0.0092, -0.2095, +0.3004, +0.0277, -0.5612, -0.3580, +0.1962, -0.4878, -0.0116, -0.2307, -0.1753, -0.5066, -0.3425, -0.2346, -0.2534, -0.2967, +0.0711, -0.1017, +0.0203, -0.1027, -0.0675, -0.4460, -0.0963, +0.3154, +0.1242, -0.4690, -0.5501, +0.6461, -0.5083, +0.3819, -0.2974, +0.2090, +0.1824, -0.2403, -0.2439, +0.6099, +0.1456, +0.0083, -0.1455, +0.5720, -0.3688, +0.3947, +0.0168, -0.1926, +0.4240, -0.1347, +0.1546, +0.7436, +0.4577, +0.1400, -0.3503, +0.0731, -0.0038, -0.2098, +0.0704, +0.0110, +0.4309, +0.1972, -0.3308, -0.2402, -0.2752, -0.5395, +0.0769, -0.1325, -0.5346, +0.2388, -0.2791, +0.0613, -0.1198, -0.2837, -0.1936, +0.1920, -0.2144, +0.0700, +0.1432, +0.0889, +0.6315, +0.7544, +0.0085, -0.0674, +0.2926, -0.0881, -0.0463, -0.3783, +0.2818, -0.1856, +0.2823, -0.3773, -0.3604, -0.0195, -0.0014, -0.1106, +0.1736, +0.1245, +0.0063, +0.1922, +0.2607, -0.0665, +0.2172, -0.0482, +0.0184, -0.0337, +0.0257, -0.2920, -0.4534, -0.4608, +0.2111, -0.2330, -0.5469, -0.1964, +0.2660, -0.0375, -0.1817, -0.3769, +0.3142, +0.3659, +0.0747, -0.1623, -0.0984, -0.0144, -0.0320, +0.4246, +0.3933, -0.3629, -0.1253, +0.4820, -0.5774, +0.5301, +0.2568, +0.2230, +0.0277, -0.0507, +0.6167, -0.2586, +0.4530, +0.1409, -0.5465, -0.4948, -0.1043, -0.2338, -0.1205, +0.3703, +0.1557, +0.2893, +0.4582, -0.1091, +0.0673, -0.2456, -0.4765, -0.3449, +0.7692, -0.0031, -0.6290, -0.3958, -0.2039, -0.9812, +0.0910, +0.0026, -0.2029, -0.1387, -0.2126, +0.4389, +0.0658, +0.2143, -0.5214, +0.3030, +0.0370, +0.0528, +0.6080, +0.1522, +0.0217, -0.3402, -0.1225, -0.3023, -0.1012, -0.0211, -0.1202, -0.3144, +0.3356, -0.2141, -0.0347, +0.7998, -0.0737, +0.2969, -0.2562, +0.2671, +0.0624, -0.4707, +0.1587, -0.2368, +0.1100, -0.1040, +0.9807, +0.2808, -0.5608, -0.0934, -0.2954, +0.6295], -[ +0.5932, +0.0876, -0.7242, -0.1409, -0.0412, -0.5790, +0.0735, -0.0075, -0.3211, -0.4211, -0.5609, -0.0071, +0.0205, +0.6445, -0.5784, +0.4860, +0.0114, +0.1385, +0.0225, -0.3472, -0.3914, +0.0757, -0.3139, +0.0129, +0.0466, -0.1209, +0.1617, -0.2285, -0.1140, +0.2034, -0.7240, -0.1546, -0.0684, +0.5968, -0.2782, +0.5796, +0.2176, -0.0863, +0.0184, +0.3518, +0.1192, +0.4493, -0.6615, +0.1265, +0.2269, +0.3246, +0.3507, -0.2315, +0.3468, -0.2529, -0.1467, +0.3462, +0.3384, +0.3722, +0.1264, -0.1046, -0.1847, +0.8132, +0.2269, -0.0447, +0.0325, -0.1035, -0.0265, +0.0077, -0.9253, +0.2728, -0.0053, +0.2089, -0.3447, -0.1360, -0.7346, -0.5151, +0.0677, +0.1098, -0.0557, +0.1713, -0.1517, +0.3527, -0.3971, -0.6077, +0.1470, +0.2593, -0.2708, +0.3502, +0.1825, +0.2765, +0.3493, -0.0738, +0.4190, +0.3283, -0.0341, +0.3594, +0.2133, +0.7555, -0.1510, +0.0815, +0.4211, +0.2286, -0.3961, -0.0640, -0.0552, -0.1128, -0.3669, +0.2520, +0.1446, +0.2243, +0.3486, +0.3686, -0.3555, +0.0156, +0.0515, +0.2016, +0.0560, -0.3013, -0.3812, +0.1652, -0.4300, +0.3065, -0.2277, +0.0395, -0.2969, +0.6106, +0.4422, -0.1107, +0.2372, +0.2353, +0.1749, +0.4339, -0.0915, -0.0488, -0.3284, +0.4118, -0.2244, -0.2256, +0.2857, -0.3133, +0.3841, -0.3455, +0.1268, -0.2927, -0.0887, +0.2962, -0.4251, +0.0084, +0.2994, +0.0847, +0.2371, -0.2487, +0.1664, -0.3756, -0.1576, +0.1893, -0.1982, -0.0688, +0.2302, +0.0263, +0.0542, -0.0276, -0.2222, -0.0490, -0.6624, -0.3752, +0.0870, -0.1422, +0.4277, +0.1805, +0.0526, +0.0018, +0.2216, -0.0847, +0.1616, +0.5632, +0.2277, -0.3285, -0.5138, -0.3664, +0.3498, +0.1980, +0.3724, -0.1786, +0.2221, -0.5224, +0.0812, +0.4015, +0.3422, +0.1908, -0.0051, +0.2799, -0.0512, -0.1594, +0.6423, +0.2448, -0.4401, +0.1921, +0.0799, -0.3727, +0.5275, -0.0174, +0.4468, -0.0512, +0.4795, +0.2527, +0.0632, +0.3175, -0.2694, -0.4018, +0.3092, -0.7466, +0.4384, +0.4082, +0.1685, -0.3123, +0.4868, -0.5692, +0.1797, +0.0494, -0.2515, -0.4259, -0.0028, -0.2640, -0.5699, -0.1311, +0.1270, +0.0336, +0.6316, +0.4087, -0.4763, -0.3475, -0.5440, -0.2698, +0.1488, +0.1341, +0.0122, -0.3385, -0.1212, +0.5227, -0.0753, -0.0322, -0.2132, +0.2339, +0.0864, +0.3208, -0.2422, +0.3589, +0.0860, -0.0016, +0.3235, +0.1055, +0.0777, +0.1776, +0.2120, +0.2451, -0.0287, +0.2051, -0.4536, +0.0970], -[ -0.2690, +0.1314, -0.0365, -0.1134, -0.1789, +0.5303, -0.1880, +0.0992, +1.2840, -0.1755, -0.0757, +0.6944, +0.0096, +0.2513, +0.5688, +0.1564, -0.1621, -1.7309, +0.1652, -0.1027, -0.6476, +0.6880, -0.4071, -0.2158, +0.1096, -0.2273, -0.4430, -0.5744, +0.7097, +0.4519, +0.4016, +0.3291, -0.5816, -1.1441, +0.5293, -1.0562, +0.3291, +0.1322, -0.6296, +0.0504, -0.3168, +0.1127, +0.2343, +0.4343, -0.9353, -0.0756, -1.7720, -0.5751, -0.0490, -0.1676, -0.3240, +0.0971, -1.6051, +0.7573, +0.6229, -0.0263, +0.2916, -0.7058, +0.3901, +0.1265, +0.5383, -0.9017, +0.4115, -0.4862, +1.1282, -1.5179, -1.0867, -0.7799, +0.0565, +0.0988, -0.2132, -0.3317, -0.8753, -0.6307, +0.6586, -0.1739, -1.1522, -0.5686, -0.2432, -0.3128, -0.3289, -0.3558, -1.4333, -0.3257, -0.7930, +0.2352, +0.1473, +0.4385, -0.4455, -0.6358, -0.0583, +0.0995, -0.5240, -0.2137, -0.7919, +0.5977, -0.1138, -0.3096, +0.5348, -0.0114, +0.3708, +0.1293, -0.6508, -0.8037, -1.0384, -0.6388, +0.5904, -0.4826, -0.9746, +1.1987, +0.0233, +0.0467, +0.6593, +0.4173, +0.1987, +0.5006, +0.4979, -0.0726, +0.2625, -0.6826, +0.1639, -0.2137, -0.9070, -0.0546, -0.7779, +0.1943, +0.0354, +0.8273, +0.2258, -0.2628, -0.5064, -0.8099, -0.3322, -0.1551, +0.0947, -0.2662, +0.1449, -0.8593, +0.3583, -1.8365, -0.8684, -0.9969, +0.4949, -0.1957, -0.4590, +0.5048, +0.3621, +0.0455, +0.4746, -0.3680, +0.0200, +0.1063, +0.5762, +0.0213, +0.0504, +0.3103, +0.2092, -0.2716, +0.5856, -0.5400, +0.0777, -0.8411, +0.3511, -0.3667, -0.3487, +0.5145, +0.6014, +0.1249, -0.8400, -0.2851, +0.6204, -0.5063, +0.1536, -0.1435, -0.3218, +0.4161, -0.3103, -0.7533, -0.5084, +0.2561, +0.3095, -0.0707, +0.1382, +0.1809, -1.1545, +0.7516, +0.2145, -1.0730, -0.0177, -0.4645, -1.1310, -0.2274, -0.4427, -0.4191, -0.7231, +0.4678, -0.7296, +0.3554, +0.4667, -1.0550, +0.0346, +0.2116, +0.9885, -0.9267, -0.2824, +0.3876, +0.1682, +0.2248, -1.1494, -0.5552, -0.2033, +0.4152, -0.8959, +0.5338, +0.5643, +0.4823, +0.0312, +0.7849, -0.7382, +0.1965, +0.5325, -0.2720, +0.3551, -0.1661, -0.5874, -0.6471, +0.0757, +0.0462, -0.2945, -0.0274, -0.0490, -0.1384, -0.4716, -0.1593, -0.2254, -0.2248, -1.4069, +0.0485, +0.2871, -0.2372, -0.0409, -0.5988, -0.3974, -1.1764, +0.0190, -1.5573, +0.4764, +0.0051, -0.9028, +0.3651, -0.7076, -0.2425, +0.0518, +0.1145, -0.0267, +0.8348], -[ -0.6511, +0.7251, -0.4421, +0.3926, -0.0364, -0.0537, +1.4062, +0.6801, +0.9523, +0.3069, -0.4447, +0.7222, -1.2175, -0.7626, -0.2748, -1.2787, +0.1056, -0.0694, -0.0864, -1.3508, -1.3153, +1.2113, -0.0577, -0.2743, +0.3818, +0.2424, +0.1609, +1.4353, +0.6818, -0.6426, -1.0971, -0.0556, -0.6581, -0.0490, -0.2704, +1.4192, +0.3453, +0.2803, -0.1227, +0.6686, -1.0020, -1.1945, +0.4890, -0.6006, +0.7084, -1.4282, -0.6224, -1.0166, +1.4567, -0.0008, +0.8713, +0.7022, +0.2525, +0.0662, -0.4975, -0.7748, +0.0344, -0.8919, -0.3348, +0.3233, +0.0015, -0.3540, -0.2386, -1.0088, -0.8125, +2.0968, +1.0803, +0.9211, +0.8296, -0.1003, +0.8605, -0.2365, +0.0202, -1.4108, +0.2266, +0.8336, -0.1367, +0.0020, +0.5003, -0.2862, -0.8259, -0.2074, +0.9419, +0.4166, +0.7930, -1.7141, +0.3657, -0.2619, -0.4160, -0.6797, -0.6352, -0.2866, +0.0952, +0.3476, +0.4372, +0.1465, +0.1066, -0.4821, +0.4347, -0.1212, +0.4981, -0.6660, -0.2960, +0.8108, +0.0464, -0.1216, -0.9477, -0.1743, +0.6228, -0.2407, +0.0277, +0.5865, +0.5340, +0.4219, -0.1356, +0.3273, +0.2977, -1.1986, +1.0232, -0.3660, -0.7930, +0.2605, -1.0371, -0.9427, +0.0043, +1.0893, +0.8926, -0.1067, -1.7242, +0.1951, -0.4299, +1.9632, -0.9145, -0.3048, +0.5174, +0.0853, -0.5597, +1.2871, +1.0552, -0.7340, -0.4731, +1.4815, -0.6180, +0.1526, +0.0229, -0.8960, -0.0685, +0.7497, +0.7444, +0.9920, -0.0914, +0.5685, -0.6389, -0.7547, +0.5346, -0.8145, -0.2830, -0.1435, +0.0236, +1.2155, -0.0982, +0.4208, +0.3731, +1.4716, -0.4185, -0.1971, +0.2266, +0.8106, -0.3330, +0.1483, +0.0896, +0.5137, +0.3635, -1.0750, -1.0363, -0.0595, +0.0770, -0.0965, -0.3142, +0.6241, +2.6819, +0.2020, +0.8084, +0.7968, +1.0020, +0.2969, +0.9403, +0.4635, +0.1005, -0.7425, -0.4718, +1.4619, +0.3308, -0.7526, -0.0996, +0.1066, -1.1239, -0.3081, +0.7499, +1.7553, -0.2147, -0.0924, +0.4060, +1.0679, -0.5004, +0.7543, +0.3573, -0.8287, -0.6544, +1.0195, +0.1508, +0.8053, +0.4921, -0.3614, +0.4389, +0.2640, +0.0898, -1.1756, +0.2007, -1.0919, +0.0418, -0.8312, -0.2614, -1.0834, -0.1764, -0.2669, +0.6236, -1.9193, +1.3387, +0.1989, -0.7543, -0.5440, -1.0083, +0.1313, -0.4996, -0.1275, +0.3503, +0.2986, -0.9284, -0.4735, -0.6489, +0.9879, +0.9879, +0.3181, +0.5054, -0.5081, -0.4990, -0.6723, +1.1512, -0.0684, +0.2308, -0.1070, -0.6214, -0.0444, +1.0225, +0.5097], -[ +1.0875, +0.8821, +0.7733, +0.5755, -1.1339, -0.1845, -0.0875, +0.5447, +0.1767, +0.3874, +0.2700, -0.1240, +0.1709, +0.0218, +0.3159, +0.4420, +0.4420, +0.6086, +0.8226, -0.2190, +0.7329, +0.5293, -1.1922, +0.5033, +0.4538, +0.3400, -0.3613, +0.1059, -0.3431, -0.5425, -0.6847, -0.4694, -0.1668, +2.4752, +0.3258, +0.9264, -0.3311, -1.1294, +0.4432, +0.3947, +0.5053, -0.5283, +0.1112, +0.5081, +0.4185, +0.3066, +0.6845, +1.1793, -0.5563, -1.1556, +0.0786, -0.9479, +0.2116, +0.0764, -0.1865, -0.2995, -0.1947, +0.2341, +0.1715, -0.3830, -0.5396, +0.2551, +0.2542, +1.2854, -0.4305, +0.3478, -0.5172, +0.2866, -0.5733, -0.5322, -0.6559, -0.2535, -0.1774, +1.3032, -0.0139, -0.0346, +0.4117, -0.1117, +1.7668, -0.1694, -0.2148, +0.4825, -0.6484, +0.6440, +1.3012, -0.6437, +0.4124, +0.1103, +0.4027, -0.2819, -0.2709, +0.6515, +0.3199, -0.4137, -0.6017, +0.7917, -0.3346, +0.4453, -0.5710, +0.1237, -1.7591, +0.0169, +0.2641, -0.1886, -0.4443, +0.0400, -0.9378, +0.2143, +0.3850, -0.9458, +0.5164, -1.0800, +0.5950, +0.8289, +0.3468, +1.0161, -0.1178, -0.4139, -0.0451, +0.7074, +0.0330, -0.4343, -0.4930, -0.4715, -0.1253, -0.0990, +0.3172, +0.2896, +0.1125, +0.0764, -0.3703, +0.0931, +0.1942, +0.3065, -0.6756, -0.4541, -0.7905, +0.3973, -1.0216, +0.1727, +0.7297, +0.8329, -0.8958, -0.1142, +0.2433, -0.4245, -0.7823, -0.5182, +0.2460, -0.3342, -0.6687, +1.1355, -0.3246, +0.9731, +0.0987, -0.1298, -0.1880, +0.1899, +0.3366, +0.2019, -0.7675, +0.1893, -0.3527, -0.5192, +1.1225, -0.5468, +0.1622, -0.4060, -0.3751, +0.2132, +0.1153, -0.3181, -0.0384, -0.2241, -0.3025, +0.0450, +0.8146, +0.4606, -0.0509, +0.3346, -1.3567, -0.1565, -0.0369, -0.6647, +0.4876, -0.1394, -0.0250, -0.2978, -0.6720, -0.5841, +0.4308, +0.4348, +0.2858, +1.2857, +0.1544, +0.9151, -0.6745, -0.3075, -1.0905, +0.7904, -0.0899, +0.9091, -0.6084, +1.0359, -0.4413, +0.3022, +0.0430, +0.7528, +0.9460, -1.2011, -0.6926, +0.3701, +0.9920, +0.5459, -0.1860, -0.3277, +0.1534, -0.3876, -0.5349, -0.1134, +0.3548, -0.1075, -0.6811, +0.3594, -0.4656, +0.2207, -0.2699, -0.3054, +0.0227, +0.5330, +1.0950, -0.9250, +0.5560, -0.0613, -0.3788, -0.5482, +0.2741, +0.2896, -0.0716, +0.4930, -0.1407, +0.1912, +0.5993, -0.6242, -0.3078, -0.8300, -0.6700, +0.7128, -0.1023, +0.0189, +0.0857, +0.0828, +0.3412, +0.2611, -0.7512, +0.0605], -[ +0.4559, -0.2297, +0.2614, +0.2237, +0.3216, +0.2141, -0.3782, -0.2210, -0.0516, -0.5411, +0.1347, +0.2222, +0.1144, +0.3927, -0.1655, +0.5741, +0.2636, +0.2875, -0.1813, +0.2058, +0.2655, -0.1940, -0.0912, +0.0008, +0.3192, -0.5202, -0.6275, -0.3388, -0.0709, -0.2213, -0.2447, +0.1251, -0.1346, -0.2855, -0.1148, -0.1634, -0.1083, -0.1758, +0.2111, -1.0338, +0.2015, +0.2130, -0.3297, -1.0108, +0.1281, +0.0014, +0.0706, +0.2620, -0.2403, +0.4303, +0.0685, -0.2905, -0.3037, -0.3010, +0.0517, +0.0690, -0.1281, +0.1676, +0.6808, -0.0537, +0.2034, +0.0145, -0.4676, -0.1054, -0.2274, -1.1760, -0.2404, -0.7025, -0.6024, +0.1673, +0.2636, -0.1149, -0.8389, +0.7225, +0.0449, -0.0253, +0.1095, +0.0516, -0.1740, -0.0587, +0.0676, +0.2522, -0.1891, -0.5269, -0.1488, +0.3045, -0.3056, +0.0503, -0.0145, +0.2413, +0.3308, -0.0785, +0.0030, -0.1183, -0.9238, -0.0839, -0.2091, +0.1802, -1.2932, +0.0005, -0.2609, +0.1247, +0.4495, +0.2691, +0.4238, +0.1934, -0.0970, -0.1863, -0.0712, -0.0775, -0.0786, -0.2667, -0.0146, -0.4022, -0.0246, +0.1253, +0.0481, +0.0663, -0.1027, -0.4474, +0.3890, -0.1196, -0.0500, +0.2238, +0.2021, -0.2031, -0.1334, +0.2148, +0.2418, +0.2637, -0.2043, -0.1310, +0.2261, +0.0794, -0.5637, +0.4258, -0.7209, -0.4003, -0.0495, -0.6146, -0.0894, +0.3328, -0.0393, +0.1892, +0.2518, +0.1168, -0.2149, -0.2707, +0.1821, -0.2540, -0.3156, -0.3058, +0.2752, +0.0377, -0.5720, -0.1066, -0.0631, -0.0433, -0.0922, -0.4204, +0.1348, +0.0859, -0.1740, -0.5269, +0.3410, +0.2364, -0.1675, +0.3721, +0.2434, -0.1553, -0.0078, -0.3258, -0.2020, +0.1079, -0.2005, +0.3527, +0.0939, -0.0002, +0.4003, -0.4109, -0.7351, -0.1433, -0.1525, -0.5358, +0.4021, +0.1285, -0.0394, +0.6314, +0.1156, +0.6712, -0.1354, -0.1991, +0.1105, -0.0613, -0.1963, -0.0025, -0.3086, +0.3445, -0.1127, -0.4295, -0.0988, -0.2009, -0.6060, -1.0608, -0.1187, -0.0353, -0.1625, +0.0782, +0.0630, -0.3979, -0.3318, -0.2027, +0.5026, -0.4521, -0.1770, +0.0387, +0.0270, +0.1843, +0.0908, +0.3007, -0.8522, +0.4221, -0.1826, -0.3563, -0.0637, -0.0428, -0.2756, +0.0827, -0.3829, -0.7788, +0.1916, +0.1434, +0.0693, -0.1157, -0.1853, -0.0706, -0.2211, -0.1806, +0.1115, -0.2207, +0.0222, -0.8133, +0.1048, -1.1847, +0.1177, +0.4655, +0.3455, +0.0393, +0.1136, +0.0764, +0.2297, -0.4609, -0.1669, -0.2190, -0.5272, +0.3213], -[ -0.3724, +0.4912, -0.0542, +0.1124, -1.0749, -0.1587, +0.2607, +0.4717, -0.0579, -0.7301, +0.1499, -0.2698, +0.0088, +0.0880, +0.3258, -0.5772, -0.0055, -0.4261, +0.0863, +0.0207, -0.3641, +0.3723, -0.4399, -0.3726, -0.0154, -0.2163, -0.3323, -0.5352, +0.4067, -0.6136, -0.3060, -0.0408, -0.2171, -1.0815, +0.3185, -0.1377, -0.2245, -0.7921, -0.8938, -0.0482, -0.5087, +0.2610, +0.5721, -0.1476, -0.5932, -0.3444, -0.7821, +0.2863, -0.1364, -0.2947, +0.2466, +0.3237, -0.5455, -0.1101, +0.6921, +0.2110, -0.0283, -0.4624, -0.5753, +0.2742, -0.2528, +0.1039, -0.2357, -0.6534, -0.2126, -1.1011, -1.0488, -0.3508, -0.2251, -0.4274, -0.5000, +0.1207, -0.0305, -0.2831, -0.0269, +0.2335, +0.3261, -0.1663, -0.3451, +0.1119, -0.4355, -0.1675, +0.2506, -0.1808, -0.9181, -0.9919, +0.4381, -0.2920, -0.2376, +0.1336, -0.0127, -0.0932, -0.0962, -0.4419, -0.8115, +0.0483, +0.2029, -0.0388, -0.0393, -0.0204, +0.3751, -0.2473, -0.5577, -1.0035, +0.0474, +0.3606, -0.7662, +0.0408, +0.2560, +0.3074, +0.3741, +0.0762, -0.0379, -0.3424, +0.0244, +0.0909, +0.1076, -0.1411, -0.4946, -0.0531, -0.0574, +0.7608, -0.4286, +0.2221, -0.3671, -0.5040, -0.1968, +0.0831, -0.1231, -0.1620, +0.4949, -0.5698, -0.2723, +0.1097, -0.4024, -0.0167, -0.4721, -0.7889, -0.1909, -0.7549, +0.0621, -0.2221, -0.2051, -0.5387, -0.2621, +0.2714, -0.2168, -0.0027, -0.1987, +0.3266, +0.4285, -0.0869, -0.1242, -0.1694, -0.3687, -0.2509, +0.1423, -0.0700, -0.0145, +0.0155, -0.0356, -0.7687, +0.2859, -0.3710, -0.1770, -0.1355, +0.0192, -0.5172, -0.6186, +0.3202, +0.3932, -0.3897, +0.0347, +0.5150, -0.0771, +0.2844, +0.2438, -0.3728, -0.2791, +0.0789, -0.0809, +0.5902, -0.5121, -0.1361, -0.5345, -0.6258, +0.2230, +0.2469, +0.6988, +0.1508, -0.7049, -0.6916, +0.2633, -1.0861, -0.6606, +0.3489, +0.5491, -0.2449, -0.1477, -0.7801, -0.1502, -0.5426, -0.3280, -0.3057, -0.1653, +0.5314, -0.3944, -0.3160, -0.5420, -0.5776, -0.2122, -0.0523, -0.3669, -0.4489, -0.1768, +0.6589, +0.1245, +0.1330, +0.0277, +0.3132, +0.1715, -0.0341, +0.0236, +0.1848, -0.5422, -0.1352, -0.1328, -0.1306, +0.0439, +0.3702, -0.2723, +0.1317, -0.4936, -0.2446, +0.5778, -1.1338, -0.3625, +0.1392, -0.1731, +0.1486, +0.1621, -0.2006, -0.2216, +0.1378, +0.3597, -0.7578, -0.1741, -0.7381, -0.1351, +0.5755, +0.0477, -0.3949, -0.5294, +0.0812, +0.7496, -0.0291], -[ -0.4798, +0.4362, +1.2897, +0.3283, +0.2763, +0.1578, -0.3059, -0.6725, +0.1808, -0.2851, +0.5366, +0.1863, +0.2278, -0.0653, -0.2368, +0.4403, +0.2076, -0.0251, -0.1869, +0.6085, +0.9846, +0.4960, -0.2260, -0.1870, -0.0697, -0.8592, +0.0298, -0.4321, +0.0341, +0.3508, -0.2072, +0.4891, +0.1886, -0.1843, -0.1402, +0.3664, -0.0650, +0.0516, +0.3095, +0.1416, +0.9221, +0.5394, +0.1913, -0.0563, +0.3995, +0.2334, -0.3827, -0.0587, +0.2854, +0.1693, +0.1311, -0.4292, -0.2502, -0.0628, -0.1756, +0.0310, +0.1009, -0.2805, +0.4357, -0.2532, -0.4369, -0.0551, +0.1162, -0.3496, -0.2859, +0.6200, -0.6932, -0.1732, +0.3740, -0.2281, -0.3634, +0.1393, +0.4610, +0.5913, +0.1360, -0.3891, +0.1251, +0.1125, +0.2168, +0.4150, +0.2873, +0.3756, +0.3537, -0.2535, -0.1897, +0.4199, -0.1764, +0.3116, -0.0995, +0.7309, +0.6488, +0.1209, +0.2683, +0.2538, -0.3806, -0.4910, +0.0052, -0.3837, -0.0231, +0.5375, +0.0922, -0.1251, -0.0141, -0.3879, +0.0216, -0.1925, -0.0933, +0.3777, +0.3247, -0.1841, -0.2622, -0.1746, -0.1367, +0.0703, -0.2560, -0.1224, +0.4345, +0.3596, +0.1930, -0.7363, -0.2062, +0.1431, +0.2427, -0.0419, +0.0565, +0.0537, +0.4099, -0.2162, +0.2861, -0.3482, +0.2492, -0.0763, +0.8300, -0.1146, -0.2983, -0.1897, -0.0816, +0.1695, -0.3307, -0.1657, -0.0640, +0.2181, -0.3244, +0.2537, -0.2180, +0.0461, -0.4385, -0.1907, +1.0406, -0.1068, +0.5013, -0.4111, -0.0118, +0.2012, +0.1635, -0.1642, -0.2008, +0.2747, +0.1789, +0.0207, -0.1844, +0.2974, +0.2015, -0.0656, +0.4211, +0.1768, +0.1063, +0.5168, -0.4062, -0.2376, -0.3750, -0.1672, +0.4509, -0.3170, +0.7815, +0.1044, +0.4391, -0.0352, +0.2105, -0.1816, +0.3396, +0.4828, +0.2739, -0.3534, -0.1286, +0.4947, +1.0037, -0.0564, +0.0404, -0.0943, +0.0966, +0.4261, +0.4502, -0.1044, +0.1401, -0.0460, +0.3039, -0.2097, -0.2428, -0.3533, -0.1420, -0.2030, +0.8312, +0.4364, +0.0278, +0.1846, +0.5914, -0.0215, +0.6256, -0.1478, -0.2042, -0.1455, -0.3834, -0.2788, -0.2787, +0.4170, -0.2970, -0.1180, +0.6029, -0.8492, +0.6421, -0.3202, -0.3689, +1.1412, -0.3851, -0.2367, +0.3479, -0.3008, -0.3891, -0.2642, -0.4465, +0.3570, -0.1338, -0.5255, +0.1688, +0.2352, +0.3051, -0.1301, -0.0058, -0.5967, +0.0314, +0.0478, -0.0764, +0.7730, +0.1697, -0.0824, +0.4434, -0.1786, -0.3637, +0.4701, +0.4108, -0.0434, -0.0370, +0.0383, -0.4026, -0.0380], -[ -0.3741, -0.1068, -0.3314, -0.0565, +0.0467, +0.1251, +0.2306, -0.3573, +0.4108, +0.5908, +0.1193, +0.5094, -0.3441, +0.1293, +0.6299, -0.0905, -0.1922, -0.1555, -0.4347, +0.8849, -0.1790, +0.2180, +0.2141, -0.2799, +0.7229, +0.0192, +0.1186, -0.2795, -0.1912, +0.3540, -0.2777, +0.0433, -0.0407, -0.0126, -0.7660, +0.2398, -0.5611, -0.3364, -0.1985, +0.0279, -0.1248, +0.4634, +0.0544, +0.3136, +0.1012, +0.2630, -0.3162, -0.2057, +0.0628, +0.4157, +0.6128, -0.2272, +0.1599, +0.3188, -0.5265, +0.4024, +0.2983, +0.1488, +0.2759, +0.1667, +0.2182, +0.1723, +0.4472, +0.4748, -0.7308, +0.5746, +0.2123, -0.0770, +0.6040, -0.2954, +0.0073, -0.3591, +0.2626, +0.6973, -0.4446, -0.1427, -0.0223, +0.1921, +0.0245, +0.5934, +0.5116, +0.1329, -0.1242, -0.5073, -0.1289, +0.2619, -0.0319, -0.4919, -0.3387, +0.1268, +0.0749, -0.3254, -0.2295, -0.2160, -0.3901, -0.1023, +0.1204, +0.6657, +0.1091, +0.4567, +0.1065, +0.1891, -0.6420, +0.2216, -0.2570, -0.1674, -0.0870, +0.7952, +0.2387, -0.0505, -0.1253, -0.6351, -0.1480, +0.3368, +0.3743, +0.4355, +0.1770, +0.1786, -0.1292, -0.2114, +0.1321, -0.1124, +0.1924, -0.2289, +0.0820, +0.5299, +0.2655, -0.2414, +0.1091, +0.3824, +0.3462, -0.3395, -0.0778, +0.0888, -0.1166, -0.3997, +0.3686, +0.1649, -0.1932, +0.3026, -0.6793, -0.3909, +0.3428, +0.0582, +0.2753, +0.0718, -0.1250, +0.2753, +0.6596, -0.2323, +0.3722, -0.1219, -0.3158, -0.0638, -0.2878, -0.1695, +0.6189, -0.3437, +0.2149, +0.1630, +0.0819, -0.1003, +0.2736, -0.1992, +0.4845, +0.1799, -0.1868, -0.6135, +0.0403, -0.4148, -0.3512, +0.0713, +0.5835, +0.4328, -0.0420, -0.2982, +0.2432, -0.0836, -0.0869, -0.4765, +0.0912, -0.3621, -0.6807, +0.1609, +0.4533, +0.6359, +0.4310, -0.7425, +0.2855, -0.2558, +0.5044, -0.5769, -1.0360, +0.2531, +0.1842, -0.1953, +0.2258, -0.3990, -0.2024, -0.0211, -0.0257, -0.2949, -0.6207, -0.0732, +0.6252, +0.5873, +0.5866, -0.5608, +0.4273, -0.3761, -0.0452, +0.6164, -0.2621, +0.2782, -0.2886, -0.2068, -0.5392, -0.5580, +0.0622, -0.0051, +0.2676, +0.8105, -0.0133, -0.2904, +0.8385, +0.0486, -0.3621, -0.1232, -0.2238, +0.2699, -0.4616, +0.1762, -0.4596, -0.6298, +0.0869, -0.2651, -0.4442, -0.8365, -0.1078, -0.3499, +0.0216, -0.3083, -0.2206, -0.3406, -0.2232, -0.3916, +0.2843, -0.0627, -0.5079, +0.3079, +0.8284, -0.5008, -0.1980, -0.0326, -0.5429, +0.4579], -[ +0.3332, -0.0045, +0.1879, +0.2841, -0.1036, +0.3900, +0.1975, -0.0586, -0.0433, +0.0227, +0.1737, -0.2820, +0.5240, -0.1971, -0.0171, +0.2823, -0.1131, -0.1244, -0.6811, +0.1139, -0.1480, -0.2739, -0.3393, -0.5222, +0.5037, -0.3501, -0.1590, -0.4008, -0.3828, -0.4044, -0.4001, -0.8136, -0.2801, -0.6936, -0.0119, -0.2698, -0.2342, -0.6268, -0.3131, -0.2547, -0.1024, +0.0309, +0.4468, -0.3696, -0.6157, -0.1134, -0.0858, +0.2311, -0.6473, +0.4107, -0.4202, -0.5353, +0.0571, +0.8790, +0.3100, +0.0057, -0.0712, -0.0756, +0.5873, -0.5122, -0.1427, -0.1796, -0.5309, -0.4311, -0.1465, -0.4970, -0.9117, +0.0471, +0.3240, +0.6306, -0.5162, +0.1686, -0.1284, -0.0663, -0.3925, +0.6036, -0.2629, +0.3297, -0.5655, -0.0707, +0.1813, -0.3219, -0.2405, -0.0998, -0.3384, -0.1858, +0.2144, -0.4865, +0.6090, +0.3561, +0.1700, +0.8098, +0.2785, -0.0195, -0.2796, +0.0245, -0.6086, +0.5921, +0.0931, +0.5619, -0.4805, +0.7218, +0.1872, -0.0600, +0.4131, +0.3661, -0.1596, +0.0599, +0.2845, -0.0270, -0.1100, +0.1756, -0.4165, -0.4774, -0.2016, -0.0345, -0.2998, -0.0246, -0.4912, +0.0518, +0.1794, +0.3390, -0.6604, -0.0165, -0.7993, +0.2847, -0.5109, +0.7654, -0.2013, -0.3421, -0.2835, -0.5328, -0.4648, -0.0647, -0.5086, -0.1719, +0.0052, +0.0195, +0.1196, +0.1917, -0.2972, -0.2539, -0.5340, +0.1768, -0.0754, -0.0204, -0.3568, +0.1029, -0.0085, +0.0727, -0.2120, +0.0495, -0.0475, -0.2310, +0.5231, -0.4129, -0.1232, +0.1634, +0.2663, -0.7873, -0.2782, -0.7076, -0.1250, -0.5671, +0.1609, -0.4414, -0.1307, -0.1349, -0.3831, -0.4782, -0.1688, -0.2613, -0.3768, -0.0225, -0.7961, +0.0392, -0.1384, -0.0603, +0.0640, +0.7228, +0.3971, -0.2214, +0.5550, +0.2555, -0.6574, +0.1711, -0.1780, -0.2191, +0.1598, -0.1985, +0.0340, -0.6568, -0.1187, -0.5190, +0.2733, +0.2810, +0.2186, +0.9061, +0.2088, +0.2211, -0.0418, -0.2455, +0.0915, -0.0274, +0.3549, -0.0196, -0.8444, +0.1533, -0.1127, -0.4453, +0.4544, -0.7895, -0.5851, -0.2711, +0.1390, +0.5027, +0.1146, -0.3774, +0.3052, -0.2370, +0.3147, +0.6492, -0.2840, -0.1249, +0.3584, -0.7994, -0.7368, +0.1780, -0.1723, +0.1529, -1.1414, +0.1003, +0.0003, -0.5087, -0.6614, -1.3181, +0.0809, +0.0879, -0.0210, -0.4489, +0.3255, +0.2689, +0.2647, -0.6648, +0.0736, -0.4509, +0.2646, -0.3281, -0.2443, +0.2892, -0.0387, -0.5833, +0.4181, +0.4401, +0.3034, -0.0485], -[ -0.0804, -0.3320, -0.6441, +0.4512, -0.2349, +0.7286, -0.0958, +0.0859, +0.1074, +0.0645, +0.2051, +0.1352, +0.2951, -0.0202, +0.4954, +0.0625, -0.2756, +0.0174, -0.2915, +0.4160, +0.0293, +0.2600, -0.2100, -0.1405, +0.1850, +0.0356, -0.1464, +0.3777, +0.2081, +0.5171, +0.0520, -0.6137, -0.7609, -0.1236, +0.2698, -0.1411, +0.1751, +0.0378, +0.6654, -0.2142, +0.5799, -0.2202, +0.3724, -0.2440, -0.1668, -0.3305, +0.1718, -0.0111, -0.0850, +0.3893, -0.3783, -0.1892, +0.1393, -0.0570, +0.1723, -0.3368, +0.1133, +0.0856, +0.6344, -0.1225, +0.1719, +0.2742, +0.1698, +0.0179, -0.1267, +0.7142, +0.7597, -0.1317, +0.4009, +0.3015, +0.2566, +0.4456, +0.0003, +0.1556, -0.3243, +0.5121, +0.1162, +0.8156, -0.9404, +0.3179, +0.5546, -0.2516, +0.3526, -0.0829, -0.4093, +0.3840, +0.1271, -0.3378, +1.0113, +0.2591, -0.3473, -0.2151, +0.2269, +0.4456, +1.0725, -0.4441, -0.1372, +0.1724, +0.1963, -0.2299, -0.0328, +0.1675, +0.8436, +0.7738, +0.0104, +0.4561, -0.1844, -0.1025, +0.4986, -0.6723, -0.0104, -1.0708, -0.4901, -0.6017, +0.1388, -0.1562, -0.3379, -0.2505, +0.2045, +0.0133, +0.8111, +0.0187, -0.6989, -0.2197, -0.9058, +0.2774, +0.1558, +0.0634, -0.1887, -0.5452, -0.8979, +0.0562, +0.4686, +0.0074, -0.6043, -0.1543, -0.0301, -0.0835, -0.3018, +0.6626, -0.0830, -0.3917, -0.4867, -0.0076, +0.5557, +0.0509, +0.0982, +0.3389, -0.2387, -0.4320, -0.9018, -0.4140, +0.9552, -0.1324, -0.4337, -0.7140, -0.1520, -0.2724, -1.0583, -0.1298, +0.3746, -0.6499, -0.0374, -0.6516, +0.1143, -0.3316, +0.0681, +0.5692, +0.2621, -0.0068, +0.3008, +0.2397, +0.6098, -0.2405, +0.3360, -0.1327, -0.3611, +0.2699, -0.0968, +0.0961, -0.1743, -0.4920, -0.0003, +0.1678, -0.4966, +0.1868, +0.2403, +0.0620, -0.5373, +0.1312, +0.1964, +0.2392, +0.4731, +0.3150, -0.4304, +0.4842, -0.1136, +0.1190, +0.3060, +0.5509, -0.2292, +0.0299, -0.2565, +0.4281, -0.5202, +0.2545, +0.6053, -0.1302, +0.0448, +0.3357, +0.9171, +0.3819, +0.1574, +0.5221, +0.3900, +0.3462, -0.2724, -0.6916, -0.3808, +0.2523, +0.4774, -0.0053, -0.2520, -0.3859, -0.7411, +0.0924, +0.4533, -0.2330, -0.0911, +0.2600, +0.1210, +0.1663, -0.0841, +0.1644, +0.4802, +0.2828, +0.4489, +0.3232, -0.2630, -0.6084, -0.1999, +0.4211, +0.1049, -0.4826, -0.3422, +0.1706, +0.3457, -0.5250, +0.4648, -0.0323, -0.6776, -0.0180, +0.3941, +0.3941, +0.0265, +0.5868], -[ +0.4309, +0.0844, -0.2075, -0.6136, -0.4787, +0.2940, -0.5267, -0.1552, +0.3256, +0.2394, +0.1646, -0.0362, +0.1997, -0.1235, +0.0570, -0.2986, -0.5201, +0.2875, +0.1398, +0.2895, +0.1623, +0.3573, -0.0923, +0.0891, +0.2554, -0.6086, -0.5543, +0.0489, +0.2203, -0.1515, +0.1394, +0.5792, -0.4942, +0.3546, +0.2823, +0.3952, -0.0377, +0.2191, -0.2495, -0.2836, -0.2018, +0.0035, -0.0702, +0.2524, -0.0620, -0.1087, +0.2018, -0.0096, +0.1189, -0.5300, +0.2941, -0.3690, -0.5070, +0.3759, +0.2517, -0.0999, +0.0572, -0.7765, -0.2960, -0.2798, -0.1059, -0.5536, -0.4915, +0.0746, -0.0703, +0.2018, +0.2650, -0.1812, -0.7192, +0.1368, -0.2359, -0.3102, -0.7855, -0.3937, +0.1214, -0.1220, -0.5834, +0.4766, +0.4982, +0.2070, -0.2974, +0.1999, -0.1828, +0.3212, -0.2926, +0.2118, -0.1735, -0.1982, -0.2472, -0.5486, -0.2393, -0.4745, -0.1358, -0.0438, -0.1274, -0.2128, +0.1754, +0.0990, -0.3524, -0.0352, +0.3124, +0.1257, -0.0027, +0.1866, +0.1750, +0.0925, +0.0869, +0.1495, -0.0779, -0.3902, -0.2007, -0.2674, -0.0931, +0.2809, -0.2409, +0.3397, -0.3011, +0.4520, +0.1119, -0.6190, -0.3249, -0.4112, +0.1326, -0.0294, +0.1722, -0.1845, -0.1931, -0.5221, -0.1422, -0.2377, +0.2304, +0.2498, +0.1089, -0.0345, -0.6340, +0.0040, -0.5859, +0.4112, -0.2599, +0.6594, +0.2516, -0.5056, -0.0955, -0.4660, -0.0187, -0.0619, +0.4166, -0.1218, +0.0611, -0.0068, -0.0803, -0.1923, -0.1029, +0.6207, +0.0781, -0.1934, +0.1566, -0.3979, -0.2346, -0.1594, +0.0602, -0.2401, -0.1638, +0.1620, +0.1925, +0.5657, -0.5111, +0.2983, -0.8415, +0.0910, +0.2665, +0.0966, +0.0081, -0.3460, +0.4819, +0.2392, -0.5877, +0.0094, -0.2047, +0.1438, -0.0970, -0.2261, +0.4939, -0.2694, -0.0796, +0.0682, +0.2798, -0.3325, +0.1302, +0.0763, +0.4342, -0.0621, -0.1687, +0.2227, +0.0134, -0.1244, +0.4220, -0.1415, -0.0455, +0.1206, -0.0837, +0.4009, -0.4982, -0.0161, +0.0029, -0.6066, -0.5600, -0.2943, +0.5231, -0.0932, -0.6212, -0.6440, -0.4902, -0.4206, -0.9463, +0.6267, -0.6418, -0.0771, -0.5805, -0.4085, -0.4402, +0.3027, -0.5467, -0.3315, +0.4344, -0.4326, +0.0899, +0.4688, -0.2414, -0.6984, -0.0074, +0.0470, -0.2074, -0.1885, -0.0507, +0.4944, -0.5549, -0.6384, +0.4134, +0.1547, +0.6355, -0.2153, +0.2244, +0.6626, -0.0066, +0.0310, -0.0614, +0.3036, -0.4339, -0.0184, +0.0982, +0.1947, -0.1145, +0.0280, -0.4950, -0.1313], -[ +0.1573, -0.1801, -0.1558, +0.0502, -0.2028, +0.4656, +0.1396, +0.1437, +0.4493, +0.1028, -0.0136, -0.2755, +0.1056, -0.0296, +0.0799, -0.2558, -0.5352, +0.3403, -0.4857, -0.0064, +0.2094, -0.1727, +0.0500, +0.0778, +0.6922, -0.9543, -0.0891, +0.0941, +0.2746, -0.4620, +0.2962, +0.9431, -0.0547, +0.4235, -0.2441, +0.1400, +0.2979, +0.6492, -0.1752, -0.6488, -0.6375, +0.4085, -0.2697, +0.1093, +0.9570, -0.4040, -0.3302, -0.1165, -0.1415, -0.5799, -0.0330, +0.1685, -0.5191, +0.1086, -0.1192, +0.6211, +0.1470, +0.1766, +0.1985, +0.0141, -0.0574, +0.2074, -0.0017, +0.3102, +0.0301, +0.0963, -0.1542, +0.3683, +0.0421, -0.1795, -0.0481, -0.0079, -0.4572, -0.1553, +0.7036, -0.3582, +0.0257, +0.1190, +0.4165, -0.2567, +0.0379, +0.1749, -0.2279, +0.5246, -0.3809, +0.5279, +0.1266, +0.1318, +0.4032, -0.3366, +0.2443, -0.4038, -0.7478, -0.7459, +0.6965, -0.3545, +0.5176, -0.0867, +0.5801, -0.3129, +0.1593, -0.3395, -0.4995, +0.0176, +0.2594, +0.0577, +0.2662, +0.1660, -0.4429, -0.2425, -0.1003, +0.0906, -0.2765, +0.3343, +0.5775, +0.4188, -0.5616, +0.1572, +0.0478, -0.0459, +0.4016, -0.4238, +0.3512, +0.1363, +0.2456, -0.4306, +0.0917, +0.0995, -0.3546, -0.0183, +0.3218, -0.0686, +0.1263, -0.1883, +0.3195, -0.4811, +0.0340, +0.2343, +0.5387, +0.0980, +0.7939, -0.1539, +0.4008, -0.7816, +0.1847, -0.4935, +0.0081, -0.1321, -0.2087, -0.2462, -0.0462, -0.0150, -0.1899, -0.1655, +0.2617, -0.2031, -0.0146, +0.1444, -0.3176, -0.3280, -0.5486, +0.5379, -0.9067, -0.1741, +0.0137, +0.2334, +0.3758, -0.0019, +0.5062, -0.0632, -0.4960, -0.0823, +0.6186, -0.0410, +0.5732, +0.1329, -0.1105, -0.2791, +0.2637, +0.2495, +0.0736, +0.5476, -0.2022, -0.2747, +0.0759, +0.2208, +0.4828, -0.2240, -0.0531, -0.1563, -0.0126, -0.6632, -0.6543, +0.1787, +0.6354, -0.0413, -0.6438, +0.7467, +0.2165, +0.6743, -0.4109, -0.0216, -0.1709, -0.2076, -0.6137, -0.5465, +0.8936, -0.2120, +0.0468, -0.2915, -0.1634, -0.1688, -0.2322, -0.0794, -0.3567, +0.1814, -0.0705, -0.2445, -0.2769, +0.0610, +0.0783, -0.5499, -0.3162, -0.1352, -0.2060, +0.2633, -0.2757, +0.6518, -0.3039, -0.1404, -0.9595, +0.3189, -0.2350, -0.4676, -0.2048, -0.2044, +0.8072, -0.6023, +0.1791, -0.2009, +0.5732, -0.1814, +0.5439, -0.1844, +0.1036, -0.2040, -0.2076, -0.0593, -0.3934, +0.6013, +0.5629, +0.7382, -0.5465, +0.4216, +0.1359, -0.3907], -[ -0.1012, -0.0449, +0.2588, +0.0628, +0.4496, +0.2711, -0.4494, -0.3493, +0.1281, +0.0752, +0.4252, -0.1726, -0.1337, +0.3329, -0.2452, -0.1754, -0.3438, +0.1789, -0.1268, +0.1558, +0.4202, +0.5965, -0.0893, +0.3989, +0.0336, -0.2155, -0.2238, +0.3648, +0.3436, -0.2099, -0.2240, +0.3085, +0.3893, -0.1367, -0.2991, +0.4012, -0.0495, +0.0709, +0.0210, +0.2825, -0.2941, -0.2112, +0.0709, -0.2134, +0.3832, -0.2715, -0.5234, +0.3232, +0.3295, -0.3942, -0.3742, +0.4151, +0.1313, -0.0216, +0.0888, -0.5465, +0.3163, +0.0250, +0.2919, -0.3398, +0.2268, -0.1226, +0.5029, +0.1639, -0.0754, +0.0898, +0.0360, -0.5095, -0.2951, +0.1998, +0.1974, -0.3511, -0.3437, -0.2757, +0.1075, +0.1044, +0.3223, -0.5400, -0.0331, -0.2348, -0.1964, +0.0458, -0.0777, -0.0636, -0.0234, -0.0365, -0.0905, +0.0057, +0.1924, +0.0650, -0.0730, +0.1928, +0.1851, +0.0963, -0.1149, +0.2828, -0.1009, -0.1983, -0.2433, +0.1957, +0.0668, +0.1027, +0.2404, +0.3918, -0.1176, +0.3877, +0.0286, +0.0593, +0.3371, +0.0780, -0.3155, -0.2105, +0.0004, -0.0271, +0.1103, -0.1390, -0.3229, +0.8222, -0.5896, -0.1878, -0.1018, +0.1309, -0.0097, -0.0075, -0.1357, +0.0781, +0.2173, -0.0557, -0.2224, +0.5018, +0.2525, +0.3669, +0.1724, +0.1003, -0.2121, +0.3395, +0.0241, -0.2567, -0.3631, +0.1167, -0.1260, +0.0925, +0.0840, -0.4547, +0.3452, -0.2363, +0.1480, -0.0513, -0.2224, +0.1930, -0.1808, +0.0314, +0.2110, +0.1533, +0.1508, -0.2183, -0.0269, -0.1119, +0.1238, +0.2482, +0.3606, +0.1861, +0.5130, +0.2651, +0.1447, +0.0871, +0.0572, -0.5786, -0.1358, +0.0375, +0.0655, +0.1272, +0.8187, +0.1356, -0.3180, +0.1126, -0.1022, +0.0411, -0.0932, +0.0705, -0.0637, +0.4565, +0.1036, -0.3347, +0.1557, -0.0239, -0.0629, +0.1120, -0.1976, +0.1742, +0.6038, +0.0510, +0.5333, -0.1410, -0.2554, +0.2548, -0.3898, +0.0388, -0.0160, +0.6755, -0.1201, +0.1871, +0.0388, +0.1249, +0.1876, -0.0688, -0.0232, +0.4883, +0.2318, -0.0690, -0.2934, -0.0171, -0.1672, +0.1621, -0.0597, +0.2874, +0.1540, -0.1592, -0.0444, -0.0309, +0.0898, +0.0581, -0.1353, -0.2917, +0.2757, +0.3020, -0.4306, -0.0681, -0.2224, +0.0159, +0.0154, +0.4631, -0.5762, -0.2363, +0.0997, +0.1560, -0.0751, -0.2274, -0.1806, +0.3431, -0.1214, -0.0995, +0.1505, +0.2561, +0.2700, +0.2557, +0.2817, +0.3044, +0.5018, -0.1291, -0.0343, +0.5554, +0.2787, +0.0321, +0.5727, -0.1729], -[ +0.0860, -0.0086, -0.7450, -0.3692, +0.4327, +0.7444, -0.3716, -0.0483, -0.1503, +0.3044, +0.3931, -0.2107, -0.2746, +0.0273, -0.1028, +0.5760, -0.1563, +0.6701, +0.1728, -0.1378, -0.5568, -0.1891, -0.6133, +0.1544, -0.0801, -0.2042, +0.0753, +0.1105, +0.2398, -0.1281, +0.1497, +0.3001, +0.1975, +0.4451, -0.3736, -0.1049, -0.0073, +0.4510, +0.5528, -0.7971, -0.1904, +0.1373, +0.0331, -0.5516, +0.2909, +0.1057, -0.3671, -0.0158, +0.0640, +0.1813, +0.4071, +0.4030, -0.1237, +0.2272, -0.1026, +0.4046, -0.4180, -0.1178, -0.3909, -0.2369, -0.0304, -0.2043, +0.1373, +0.4384, +0.1978, +0.1624, -0.0765, +0.1965, -0.2739, +0.6995, +0.4967, -0.0497, +0.3587, +0.1653, +0.2153, -0.8576, -0.0974, -0.8477, +0.0636, +0.1142, -0.5844, -0.0679, +0.3225, -0.1509, -0.6150, -0.3282, -0.0860, +0.0824, -0.2419, +0.0276, -0.2861, +0.1666, -0.5786, -1.0071, +0.6464, +0.2685, +1.0059, +0.3081, -0.4016, +0.3480, -0.2031, -0.4679, +0.1345, -0.6590, -0.6878, -0.0660, -0.1090, -0.0097, -0.4205, +0.0264, -0.0372, +0.0799, -0.2982, +0.1033, +0.3359, +0.2256, -0.0325, -0.3656, +0.3833, -0.0553, -0.1711, +0.9147, -0.0699, +0.3618, +0.1394, -0.3983, -0.5365, +0.1079, -0.6407, +0.1509, +0.0043, -0.4227, +0.0390, -0.2115, -0.0528, -0.1664, -0.0500, +0.0450, -0.5853, -0.2271, +0.2520, +0.5946, +0.4325, -0.4087, +0.0645, +0.1571, -0.0572, -0.1639, +0.4325, +0.3082, -0.5592, +0.0811, +0.2323, +0.5567, +0.2505, -0.0074, -0.2633, +0.5818, -0.2108, +0.2437, -0.6763, -0.5610, -0.0693, +0.0834, -0.1889, +0.1973, +0.4305, +0.2509, -0.0176, +0.4104, +0.0171, +0.1507, +0.7154, -0.3564, +0.6008, -0.0565, -0.5088, +0.0665, -0.5529, -0.1183, +0.3366, +0.2074, -0.0367, -0.2244, +0.2411, -0.0246, +0.1610, +0.1155, -0.0546, -0.0694, +0.9060, +0.1864, +0.5769, -0.4874, +0.9173, -0.0413, +0.3613, +0.5840, +0.1335, +0.0477, -0.6236, -0.4844, -0.5717, +0.2468, -0.2536, -0.6366, -0.1918, -0.2971, +0.1027, -0.0154, -0.0911, +0.2823, -0.3173, -0.1092, +0.2180, +0.3141, -0.0602, -0.0798, +0.0901, -0.0619, -0.0823, -0.7748, -0.0231, -0.0355, +0.2687, -0.0163, +0.1450, +0.3868, +0.2392, -0.1195, -0.6768, +0.2002, -0.3649, +0.0216, +0.1434, +0.1705, +0.5310, -0.4525, +0.3346, -0.2288, +0.4039, +0.0956, +1.0119, +0.0944, -0.4205, -0.3342, -0.7180, -0.1621, +0.3410, -0.1702, -0.1546, +0.2737, -0.5412, +0.2131, -0.0354, +0.0657], -[ -0.1019, +0.0686, -0.4662, +0.2987, -0.4179, +0.2112, +0.4374, -0.2248, -0.4520, -0.3582, -0.3162, +0.7022, -0.2293, -0.6680, -0.1105, -0.2786, -0.2651, +0.5995, -0.7484, +0.0379, -0.0787, -0.1608, +0.4298, +0.6012, -0.4511, -0.0029, -0.0206, +0.0893, -0.8379, +0.3147, +0.1202, +0.1859, -0.3176, -0.2514, +0.3256, +0.3062, +0.1605, +0.1352, +0.3135, -0.5422, -0.4405, -0.1301, -0.0364, -0.0228, +0.3750, +0.0065, -0.1992, +0.1060, -0.3810, -0.8987, +0.0460, -0.3471, +0.2590, +0.2070, -0.0228, -0.0920, +0.2978, -0.0665, -0.1283, -0.1004, -0.3271, -0.8201, +0.1816, +0.0272, +0.1037, +0.4783, +0.0347, +0.4887, -0.4005, -0.1245, -0.5519, +0.8167, +0.5316, +0.1084, -0.4381, -0.2782, -0.5400, -0.3710, +0.0296, +0.2406, +0.3741, -0.3495, -0.1247, -0.2990, -0.2969, +0.2529, -0.1568, -0.3424, -0.2754, -0.6054, +1.0925, +0.2040, +0.0712, -0.6161, -0.5803, -0.3225, +0.2616, -0.3997, +0.1484, +0.5548, -0.2728, +0.2542, -0.3562, -0.0439, +0.4610, -0.2500, +0.8476, +0.3575, -0.5509, -0.1104, +0.3204, -0.3677, -0.4798, +0.1733, -0.1708, -0.1575, +0.1200, -0.1581, -0.4024, +0.0957, -0.2303, -1.1787, -0.1228, +0.5709, -0.9409, -0.4561, -0.8438, -0.1285, -0.5644, -0.7086, +0.1916, +0.4261, -0.2411, -0.6312, -0.2760, +0.3927, -1.2931, +0.1979, -0.7400, +0.3192, -0.2302, +0.3504, +0.1195, +0.3037, +0.2465, -0.0086, -0.2111, +0.3060, +0.4903, +0.0654, +0.1617, +0.0055, -0.0413, +0.2766, -0.6142, -0.0415, -0.4892, +0.2498, +0.4784, +0.0383, -0.2195, +0.1381, +0.6127, -0.0067, -0.0240, +0.2265, -0.3451, +0.2285, +0.1878, -0.2901, -1.2454, -0.4603, -0.7716, -0.0156, -0.4986, -0.6473, +0.4596, -0.2139, +0.4032, +0.1476, +0.2697, -0.3820, -0.6810, -0.4314, +0.1818, +0.5718, +0.4251, +0.4364, +0.0974, +0.0787, -0.8517, -0.0320, -0.4885, +0.1099, -0.5287, -0.6812, -0.4464, -0.0164, -0.2057, -0.4269, +0.1364, +0.2958, -0.2883, -0.2714, -0.3315, -0.6609, +0.2453, -0.1165, -0.8574, -0.0096, -0.4360, -0.1428, +0.0429, +0.3118, +0.0202, +0.7149, -0.0161, +0.1550, +0.0090, -0.4428, -0.3961, -0.3734, +0.2814, +0.3599, +0.1711, -0.5981, -0.2525, -0.1195, -0.0577, +0.2861, -0.3233, +0.1345, -0.4953, -0.2847, +0.2200, +0.0078, +0.0279, -0.0855, -1.0491, +0.0042, -0.1121, +0.0730, -0.6548, -0.0628, +0.1017, -0.1286, -0.3394, +0.1974, -0.1779, -0.5045, -0.3517, -0.3285, -0.7542, -0.2153, -0.2948, +0.3691], -[ -0.1524, -0.3956, -0.8986, +0.5020, -0.2568, -0.2188, +0.4366, +0.1268, +0.2112, -0.2777, +0.4045, +0.5389, -0.4471, +0.3731, +0.0188, +0.3608, -0.1899, +0.0245, -0.3885, +0.1410, +0.2726, -0.2762, +0.2590, +0.2898, +0.0451, +0.1454, -0.3073, +0.0963, +0.0853, +0.0609, -0.9105, +0.0307, +0.1054, -0.3833, -0.3117, +0.5344, -0.5034, -0.1965, -0.6426, -0.8176, -0.4192, +0.5725, -0.1095, -0.0613, -0.0031, +0.3766, -0.3412, +0.4780, +0.0931, +0.5116, +0.3881, -0.2061, -0.3964, +0.3443, +0.0185, -0.4291, -0.4668, +0.3222, -0.2190, +0.4072, +0.1656, -0.1324, +0.2168, -0.1708, -0.1241, +0.5181, +0.1992, +0.6183, +0.1969, +0.0423, -0.1812, +0.2499, +0.6974, +0.3814, +0.0699, -0.1292, +0.6586, -0.3129, +0.2929, +0.1875, +0.3481, +0.1282, -0.0392, -0.3369, +0.1260, +0.6808, -0.1368, -0.7150, -0.1662, +0.2391, +0.2162, +0.1910, +0.3998, -0.3319, +0.1892, +0.1646, +0.8517, +0.6174, +0.3974, +0.3500, -0.7027, +0.6271, -0.3967, -0.2736, +0.3613, -0.2346, +0.4447, +0.3907, -0.3715, +0.1626, -0.2468, -0.1936, -0.1117, -0.2583, +0.5287, +0.4914, +0.0366, -0.0336, -0.2460, -0.2407, -0.0379, +0.3973, +0.1052, -0.3746, +0.0422, +0.0900, -0.8825, +0.0569, -0.0926, -0.2690, +0.5749, +0.6739, -0.3175, -0.4565, -0.5780, -0.2933, -0.0618, +0.1514, -0.0800, -0.3117, -0.3842, +0.1818, -0.2459, +0.1381, +0.1407, +0.4503, +0.3257, +0.2840, +0.3445, +0.1357, +0.1844, +0.3106, +0.0723, -0.2379, +0.1389, -0.4659, +0.0556, +0.4553, +0.5679, +0.3144, +0.4207, +0.0949, -0.2190, +0.3815, -0.2255, -0.1667, +0.0330, -0.2498, +0.4826, -0.5611, -0.6056, -0.7398, +0.8862, +0.1765, -0.4781, -0.8288, +0.5188, -0.3679, +0.6721, -0.1571, -0.0202, +0.1706, -0.0095, -0.3998, +0.2885, +0.2654, +0.5276, +0.2316, +0.1221, +0.5379, +0.0989, +0.9935, -0.2721, +0.6292, -0.6588, +0.2672, +0.1419, -0.0914, -0.1705, -0.7021, +0.5140, +0.3399, -0.5513, -0.1837, -0.0190, +0.2690, +0.5513, -0.1707, +0.2775, -0.2082, -0.0972, -0.9003, -0.1257, +0.5638, -0.3811, +0.2230, +0.0203, +0.0266, +0.1171, +0.3081, +0.4470, +0.3695, +0.1695, +0.5378, -0.5016, -0.7027, +0.1470, -0.6276, -0.2084, +0.1778, +0.3931, -0.0173, -0.1807, -0.5771, -0.2633, -0.6808, +1.0081, +0.4473, -0.3160, -0.3380, -0.0239, +0.0485, -0.2317, +0.3112, -0.5250, -0.5125, +0.5050, +0.4380, -0.4872, -0.4846, +0.1733, -0.0443, +0.0319, -0.2159, -0.1122, -0.0213], -[ +0.2009, -0.0085, +0.1759, -0.0118, -0.3252, +0.3622, -0.4729, -0.1229, +0.3162, -0.8268, +0.1648, +0.0482, +0.6263, +0.9037, +0.4452, +0.1633, +0.0151, -0.0932, -0.0877, -0.5760, -0.5384, -0.0986, +0.3164, -0.9806, -0.0520, -0.0816, -0.3784, +0.2478, -0.2588, -0.3303, -0.2631, -0.3146, +0.3618, -0.3973, +0.2638, -1.0615, +0.6579, -0.1888, -0.2422, -0.0363, -0.6820, +0.3295, +0.1512, -0.2281, -0.0797, +0.1572, -0.6422, -0.1531, -0.4912, -0.2766, +0.1794, +0.5367, +0.7683, +0.2494, +0.1601, -0.0968, +0.1666, -0.1010, +0.6058, -0.4249, -0.0341, +0.0874, +0.1588, -0.1624, +0.4843, +0.0391, -0.3251, +0.3888, -0.2811, +0.5203, -0.5836, +0.5369, +0.3080, -0.0303, -0.3552, -0.0606, -0.0718, +0.6053, -0.0289, -0.4215, +0.6524, +0.3281, +0.1213, -0.4552, -0.5401, +0.0551, -0.1449, +0.1674, +0.3170, -0.1505, +0.2581, -0.3084, +0.0700, +0.1798, +0.0970, -0.0306, +0.1398, -0.0525, -0.0683, -0.0165, -0.2887, -1.1985, -0.2304, +0.1162, +0.2575, -0.2366, -0.7502, -0.2685, -0.2724, +0.0364, -0.6489, +0.5131, -1.8120, -0.2354, +0.2991, -0.4537, +0.1372, -0.3243, -0.3607, +0.9723, +0.7862, +0.0109, -0.5185, -0.0446, -0.4089, -0.0136, -0.1901, +0.1019, -0.5270, +0.2796, -0.3026, -0.6749, +0.8184, +0.0030, -0.2069, -0.1663, -0.4968, +0.0858, -0.2913, +0.0098, -0.3226, +0.0527, +0.4593, +0.6045, -0.1491, +0.3111, +0.0915, +0.1242, -0.2538, +0.2653, -0.0681, -0.0604, +0.1783, -0.1685, -0.2381, -0.1960, -0.2306, +0.3238, +0.1549, -0.3581, -0.0558, +0.1049, +0.3217, +0.1992, +0.8519, -0.7794, -0.2977, -0.2316, -0.3154, +0.2304, -0.0550, -0.1245, -0.1320, -0.1048, -0.0403, +0.5585, -0.1176, +0.1848, +0.2562, -0.0287, -0.1065, +0.1627, -0.2778, +0.3648, -0.5445, -0.1604, -0.7024, -0.0715, +0.0666, +0.3304, +0.3619, -0.0507, -0.6449, -0.2739, -0.1419, +0.4161, -0.3209, +0.0178, -0.2467, -0.5460, +0.5180, -0.2172, +0.1728, -0.2827, +0.3993, -0.2456, +0.0846, +0.1976, -0.4787, +0.1810, -0.6398, -0.1863, -0.1128, +0.2487, +0.2201, -0.0432, -1.0010, -0.4919, +0.0896, +0.2368, +0.2071, +0.0345, +0.0659, -0.1251, -0.1034, -0.2854, -0.1893, -0.5688, -0.0244, +0.0301, -0.3144, -0.0416, +0.3424, +0.3115, -0.2254, +0.5628, -0.4431, +0.0252, +0.3121, +0.0717, +0.9043, -0.0015, +0.3489, -0.0494, +0.0690, +0.0683, +0.1543, +0.6354, -0.0314, -0.6455, +0.4386, -0.2678, +0.0022, +0.2818, +0.1435, +0.1853], -[ -0.1107, -0.8565, -0.5937, +0.0733, -0.8070, +0.0188, -0.1318, -0.0378, -0.0197, -0.3549, +0.2324, -0.5524, +0.5306, +0.3264, +0.4763, +0.4409, -0.0877, -0.0285, +0.3068, -0.1016, -0.7806, +0.1980, -0.2568, -0.0318, +0.1960, -0.3894, -0.0852, +0.4394, +0.1614, +0.3861, -0.3326, -0.0123, -0.6245, -0.8029, +0.4872, +0.3212, -0.3937, -0.1315, +0.1693, +0.2698, +0.0479, -0.3871, +0.4193, +0.1595, -0.3011, -0.3459, -0.2717, +0.1322, +0.3681, -0.0101, -0.1039, -0.0691, +0.1719, +0.0988, +0.2505, -0.0736, +0.6433, +0.0108, +0.2158, -0.1816, +0.3299, +0.6028, +0.7754, -0.4530, +0.1254, +0.4256, -0.3190, +0.1330, -0.5657, +0.0727, +0.1334, +0.5068, +0.0827, +0.0790, -0.5528, -0.2796, -0.0890, +0.9925, -0.2393, -0.1949, +0.7767, -0.0987, +0.3589, -0.5327, +0.3512, -0.0064, -0.4073, +0.0817, +0.1485, -0.4678, -0.0171, -0.2055, +0.0182, -0.5149, +0.7126, -0.3757, -0.0720, +0.2667, -0.1588, -0.4056, -0.2082, -0.2137, -0.0550, +0.0922, +0.2665, +0.2109, +0.0249, -0.4857, -0.2137, -0.2943, -0.2203, +0.0263, -1.0688, -0.1146, -0.2390, -0.0310, +0.2202, -0.0911, -0.0238, +0.7069, +0.1039, +0.0195, -0.3563, -0.1095, -0.7665, +0.3141, -0.0939, -0.3407, -0.6611, -0.1779, +0.1232, +0.0587, +0.3933, -0.1084, +0.0884, -0.1617, -0.2957, +0.1747, -0.5138, +0.2911, +0.0088, +0.2118, -0.2804, +0.1228, +0.1711, +0.3252, +0.3447, -0.0993, +0.1509, +0.3381, -0.3568, -0.5456, +0.4638, -0.4936, +0.6322, +0.1838, -0.5492, +0.1546, -0.1459, -0.0856, -0.0260, +0.5768, +0.2365, -0.1611, +0.2460, +0.0496, -0.3220, -0.3694, +0.1004, +0.0161, -0.2415, -0.0753, -0.1946, -0.4225, -0.1585, +0.0233, -0.4534, +0.3116, +0.1987, +0.3975, -0.3344, -0.3673, +0.0978, +0.1931, +0.0785, +0.5548, -0.4115, +0.0645, -0.2725, -0.4728, -0.0250, +0.2602, +0.2279, -0.3941, +0.1422, +0.5436, -0.2275, -0.1308, -0.0869, -0.0107, +0.5470, -0.3406, +0.2342, -0.7775, +0.4859, -0.6295, -0.0020, +0.6568, -0.1795, +0.5341, -0.0623, -0.1964, +0.1419, +0.1472, +0.4471, +0.1327, -0.1371, -0.1562, -0.3405, +0.2687, +0.5612, -0.1170, -0.1769, -0.2306, +0.1873, +0.5126, -0.0575, -0.0364, -0.4644, -0.6656, -0.1772, -0.2513, -0.2122, +0.0857, -0.2701, +0.3353, +0.0511, -0.1688, -0.0393, +0.0945, +0.1427, +0.0647, +0.7162, -0.1137, -0.0134, -0.0141, +0.0705, -0.1616, -0.2543, +0.3236, -0.2526, +0.0740, +0.5074, +0.1370, +0.1587, -0.1462], -[ -0.0436, +1.3369, +0.0337, -0.4905, -0.0784, -0.3532, -0.6523, +0.3887, -0.0209, +0.5557, +0.4708, +0.1285, -0.6920, +0.3403, -0.5926, -0.2264, -0.3183, -0.6135, -0.2380, -0.2021, +1.1850, -0.4891, -0.6540, -0.2370, -0.1967, +0.5798, -0.0403, -0.6147, +0.4145, -0.4935, -0.7400, +0.3126, -0.1083, +0.3516, +0.5185, +0.0565, -0.3224, -0.5945, +0.3093, +0.6370, +0.6714, +0.2532, -0.5090, +0.1577, +1.0537, -0.3384, -0.1269, +0.3423, -0.3190, -0.1798, +0.1993, -0.7060, -0.6627, -0.6507, +0.1951, +0.3521, +0.2636, -0.1646, +0.0954, -0.7625, -0.0629, -0.4052, +0.4835, -0.0008, -0.2809, +0.1731, -0.2703, +0.3994, -0.7764, -0.3619, -0.8530, +0.4394, -0.1080, -0.3899, +0.1252, +0.1532, +0.7806, -0.3529, -0.1223, -0.3415, -0.5901, -0.2097, -0.0921, -0.1443, +0.4793, -0.1767, +0.4928, -0.3253, -0.3730, +0.0262, -1.0455, -0.2272, -0.2157, -0.2110, +0.4750, +1.0061, -0.0578, -0.3152, +0.8199, +0.7790, -0.0212, -0.3632, +0.8671, -0.2623, +0.3070, -0.1223, -0.4049, -0.2296, +0.0515, +0.0764, +0.0322, -0.5697, +0.0224, +0.1405, +0.4899, +0.6409, -0.1760, -0.1294, +0.0882, -0.3903, +0.1619, -0.2192, -0.6806, -0.4962, +0.5775, -0.1329, -0.8228, -0.4202, +0.5285, +0.0607, +0.0764, -0.2343, -0.0565, -0.3739, -0.6411, -0.3505, -0.6254, +0.0917, -0.1954, +0.1965, +0.4598, -0.9282, -0.1205, -0.3252, -0.0334, +0.1732, -0.4569, +0.4224, -0.0840, -0.1171, -0.4789, +0.7792, +0.7400, +0.7631, -0.3889, -0.4389, +0.8583, -0.2453, -0.8899, +0.3893, -0.2585, +0.4290, -0.2074, -0.2555, -0.0832, +0.0446, -0.4436, +0.9800, +0.2636, +0.2209, -0.4476, -0.5763, -0.0010, +0.2740, -0.4081, +0.4291, -0.1233, -0.3206, +0.1479, -0.1901, +0.1805, -0.3645, -0.1295, -0.3991, +0.9521, -0.4688, -0.4129, +0.2223, -0.3377, -0.1645, -0.2335, -0.3447, -0.5540, -0.2038, +0.0604, +0.0367, -0.0672, +0.0055, -0.0574, +0.0786, -0.0327, +0.3292, -0.8014, +0.2640, -0.8772, -0.4509, +0.0237, +0.2189, +0.7718, -0.1797, +0.0259, +0.0372, -0.1308, +0.1613, -0.2301, -0.5252, +0.3438, +0.9629, -0.0372, -0.1371, -0.2968, +0.0091, +0.1792, -0.3620, -0.2296, -0.0991, -0.4023, -0.0950, -0.2742, +0.1014, +0.2207, +0.1947, +0.5936, -0.4134, -0.1109, -0.0198, -0.7052, +0.0720, -0.5042, -0.5027, -0.9246, -0.0681, +0.1318, +0.2196, +0.0188, -0.3394, +0.0966, -0.7952, +0.2800, +0.2480, +1.1245, -0.4102, +0.4037, -0.2970, -0.6159, +0.2055], -[ -0.0721, +0.6004, -0.5675, +0.5159, -0.2363, -0.4563, +0.1915, -0.0154, -0.0767, +0.0694, +0.1123, -0.0146, -0.5183, -0.8126, -0.3040, -0.2160, -0.0010, -0.9178, -0.1325, -0.2887, +0.6701, -0.2273, +0.4530, +0.0231, +0.6310, +0.5157, +0.6457, -0.1940, +0.1685, -0.2448, +0.1254, +0.4801, +0.1854, -0.1111, -0.0048, +0.0529, -0.0405, -0.1307, -0.4857, -0.4641, -0.4354, +0.0411, +0.3204, -0.1191, -0.4911, -0.6839, +0.1286, -0.2960, -0.2604, +0.0310, +0.3220, -0.2130, -0.6220, -0.0414, +0.3142, -0.1809, -0.6525, +0.1550, +0.4932, -0.5841, -0.3242, -0.4983, -0.1011, -0.0871, -0.0264, +0.1967, +0.0752, -0.1805, -0.1876, -0.0932, +0.0404, -0.4881, -0.0397, -0.6173, -0.3419, -0.5482, +0.0133, +0.2547, +0.0294, +0.6694, -0.4600, -0.0287, +0.1858, +0.8569, +0.7227, +0.1579, +0.6648, -1.2030, -0.1893, +0.3735, -0.3818, +0.2089, -0.7958, +0.1672, -0.2735, +0.3883, +0.1867, -0.0646, +0.0941, +0.2895, -0.1075, -0.2594, -0.0802, +0.1868, -0.3995, +0.0972, +0.1666, -0.4712, +0.8565, -0.2783, +0.0776, -0.2718, +0.1182, -0.1360, +0.0012, +0.3133, +0.5298, -0.0762, +0.2341, -0.0853, -0.1583, +0.1289, -0.0442, +0.1054, +0.3848, -0.5678, +0.1674, +0.0154, -0.1050, -0.4192, -0.2941, -0.2559, -0.1089, -0.0863, +0.2520, +0.3710, +0.7000, +0.0268, -0.0653, +0.0440, +0.6661, -0.0761, -0.0813, +0.0327, +0.5208, +0.2706, -0.1878, +0.6834, -0.5627, -0.6036, +0.2552, +0.2686, +0.0161, +0.0593, -0.2028, +0.1378, +0.3380, -0.3431, -0.2127, +0.0964, +0.3726, +0.4807, +0.0413, +0.2991, -0.3872, -0.2380, +0.1836, -0.2900, +0.2757, +0.5895, +0.0485, -0.0111, +0.2718, +0.2187, -0.6276, -0.2361, +0.2944, -0.0590, +0.6783, -0.5471, -0.0223, -0.2620, -0.3598, -0.0020, +0.0922, -0.0820, +0.1513, +0.3044, +0.1889, -0.4259, -0.0065, -0.1422, -0.4960, -0.4849, -0.3296, -0.4376, -0.0982, +0.1483, -0.2130, -0.2558, -0.3019, +0.0544, -0.3472, +0.3268, -0.0019, -0.3071, -0.3983, +0.0856, +0.3523, +0.1934, -0.2052, +0.3059, +0.4241, +0.0321, -0.0149, -0.1016, -0.1456, +0.2723, +0.4941, +0.8326, +0.4983, +0.3167, +0.0782, +0.1740, -0.3075, -0.1135, +0.1666, +0.2098, -0.4510, +0.3588, -0.0920, +0.2908, -0.2783, -0.2584, +0.0485, +0.0196, +0.4786, +0.1286, -0.0144, +0.0587, -0.1779, +0.0917, -0.1679, +0.2300, +0.4770, -0.3206, +0.2239, -0.4574, -0.1012, +0.1696, -0.3441, -0.2330, +0.2446, +0.2388, +0.0805, +0.2215], -[ +0.1450, +0.0411, +0.1573, +0.2095, -0.2171, -0.0302, +0.2740, +0.1314, -0.1697, +0.2225, -0.0842, -0.2069, -0.0908, +0.3611, -0.0478, -0.2024, -0.3375, -0.0074, +0.2611, +0.2524, +0.2921, +0.1688, -0.0318, +0.1140, +0.2237, +0.2314, -0.2228, -0.0750, -0.0379, +0.2659, +0.0349, +0.1777, -0.1958, -0.0456, -0.0681, -0.1276, -0.2176, +0.1804, -0.1496, +0.0128, -0.2068, +0.1428, +0.4247, +0.0731, +0.1163, +0.3604, +0.3051, -0.0698, +0.4270, -0.5550, +0.4246, -0.0103, -0.0100, -0.0042, +0.1164, -0.4294, -0.5592, -0.3310, +0.3453, +0.3666, +0.6675, -0.3472, -0.0565, -0.2915, -0.0034, -0.2091, -0.0245, -0.4075, +0.5930, +0.1715, +0.0245, +0.0320, +0.0224, +0.0911, +0.0024, -0.2614, +0.3259, +0.2542, -0.3728, -0.3852, -0.2809, -0.3737, -0.3826, -0.1981, -0.4188, +0.0495, -0.2088, -0.4250, -0.2781, +0.1592, +0.1420, +0.3375, -0.3403, +0.0743, -0.0654, +0.1053, +0.0059, +0.2361, +0.1908, -0.3847, -0.2167, -0.2966, +0.0378, +0.0735, -0.6101, -0.2830, -0.2499, +0.0102, +0.0000, +0.0074, -0.0421, +0.0645, -0.1144, +0.2592, +0.4473, -0.0123, +0.0518, +0.4882, -0.5300, -0.1862, -0.4847, -0.1050, -0.2275, -0.2595, +0.2680, -0.0205, +0.5649, +0.0951, +0.0250, +0.1183, +0.2706, +0.3088, -0.5092, +0.1274, -0.2535, -0.7352, +0.0851, -0.2352, +0.2729, +0.0133, -0.3582, -0.1600, +0.0078, +0.0825, -0.7161, +0.1650, -0.5779, +0.4405, -0.2264, -0.4689, -0.3132, -0.1647, -0.3986, +0.1031, -0.0807, +0.0426, +0.2492, -0.1814, +0.0199, -0.3268, +0.1098, +0.1186, +0.1614, -0.4483, -0.1983, +0.0976, -0.5716, +0.0689, +0.1913, -0.2622, -0.0483, +0.2698, -0.1456, +0.0348, +0.0102, +0.0868, +0.0473, +0.4738, +0.3114, +0.0648, +0.0325, -0.1607, -0.0592, -0.3955, +0.0885, -0.2245, -0.2051, +0.1970, -0.1051, +0.0910, -0.0737, +0.3065, +0.3216, -0.4118, -0.1194, +0.3590, +0.1925, -0.4526, +0.0738, -0.2540, -0.2992, +0.3833, +0.0779, +0.1648, +0.2609, +0.1102, -0.5332, -0.1158, +0.0669, +0.3758, -0.0328, -0.0591, -0.1410, +0.0437, -0.0695, -0.1453, -0.2266, +0.1586, -0.2028, +0.1729, +0.3660, +0.2367, -0.0683, -0.5616, -0.4263, +0.3959, +0.1659, +0.1416, -0.1289, +0.0545, -0.0276, +0.2571, -0.1224, -0.1042, +0.1507, -0.1520, +0.1263, +0.0333, +0.2461, +0.4398, -0.0196, -0.0259, +0.0001, +0.1071, +0.0215, +0.4111, -0.3397, +0.1754, -0.3222, -0.1458, +0.1313, +0.2165, +0.7373, +0.0581, +0.2217, +0.0630], -[ +0.0533, -0.1064, -0.4497, +1.1142, -0.2853, +0.2746, +0.0223, -0.3449, -0.2563, -0.0954, -0.5587, -0.0536, -0.1238, -0.1337, -0.1339, -0.1685, +0.0463, +0.1572, +0.4278, -0.0996, +0.3352, +0.0810, -0.5192, +0.2284, +0.1378, -0.0465, +0.4930, -0.1060, -0.1669, -0.4847, -0.0532, +0.2555, -0.3235, +0.2241, +0.1062, +0.2015, -0.2258, +0.5147, -0.2783, -0.0405, +0.4804, -0.0704, +0.1438, +0.8174, +0.2847, +0.2050, +0.0689, -0.2857, +0.2322, -0.0171, -0.8141, +0.1256, -0.5786, -0.2014, +0.1286, -0.5515, -0.4492, -0.0624, -0.2244, +0.3550, +0.5558, -0.5064, +0.0998, +0.2092, +0.2444, +0.0204, -0.0236, +0.2751, +0.4645, +0.3677, +0.1392, -0.2461, +0.5799, +0.2120, -1.1819, -0.2440, +0.0882, +0.1621, +0.1375, +0.0980, -0.2091, -0.4486, +0.0849, +0.0299, +0.0008, -0.2181, -0.1789, +0.4214, -0.1133, -0.0191, -0.4113, -0.3904, +0.2132, -0.2742, -0.2966, +0.6338, +0.4172, +0.1244, -0.4452, +0.4964, -0.0845, -0.4286, -0.2638, +0.0776, -0.0116, +0.1695, -0.0711, +0.2538, -0.2595, -0.1693, +0.1284, +0.0831, -0.3235, +0.1217, +1.2541, -0.0080, +0.5387, -0.2830, -0.0707, -0.0569, +0.3254, +0.7522, -0.2069, -0.1063, +0.0884, +0.6623, -0.0112, +0.0490, +0.0349, +0.8339, -0.0039, +0.1230, -0.1713, +0.2990, -0.2266, +0.1262, -0.1052, +0.0959, -0.5952, -0.6230, -0.6645, -0.0752, +0.0785, +0.3404, -0.1154, +0.9240, -0.1616, -0.3094, -0.1222, -0.1904, -0.2510, +0.1317, +0.0820, +0.2760, +0.2689, +0.7423, +0.1837, +0.8750, -0.0317, -0.2757, +0.1163, +0.2430, +0.4274, +0.5393, -0.2339, +0.2116, -0.7959, -0.1843, +0.0357, -0.5312, +0.2167, -0.3611, -0.7928, -0.4333, -0.3921, +0.4415, -0.0140, +0.2295, +0.1336, -0.1102, -0.3003, +0.9573, +0.1221, -0.1182, -0.1785, +0.0823, -0.3683, +0.1222, -0.2539, +0.1657, +0.5051, -0.1052, +0.4172, +0.1190, +0.5113, +0.3583, -0.0718, +0.1163, +0.3709, -0.3753, -0.1674, -0.3662, -0.3333, +0.2054, -0.6293, +0.0584, -0.3772, -0.5026, -0.1520, +0.3111, +0.1482, +0.8371, -0.1532, -0.2070, -0.0605, -0.1576, +0.0771, +0.5107, +0.1552, +0.0999, -0.1285, +0.3649, -0.2217, -0.3788, -0.2041, -0.0923, +0.9008, +0.0388, -0.1930, -0.2217, -0.1339, +0.5309, +0.0101, -0.1960, -0.8190, -0.0516, -0.2454, +0.3998, -0.3405, -0.4259, -0.1357, +0.1816, -0.0237, -0.0455, -0.4772, -0.1380, -0.4766, -0.0956, +0.6402, -0.2361, -0.0042, +0.3565, +0.5889, -0.3022, +0.0717, +0.2803], -[ -0.5991, +0.1562, -0.2612, -0.5201, -0.1916, +0.1731, -0.4386, +0.3649, +0.0712, -0.4561, -0.0219, +0.0896, +0.2970, +0.0982, -0.2945, -1.0622, +0.0072, +0.3977, -0.8095, -0.3388, -0.9366, +0.2224, -0.0990, +0.1001, +0.2004, -0.4094, -0.1161, -0.3953, -1.0849, -0.0089, +0.2486, -0.4354, -0.2586, -0.5642, +0.7555, -1.1556, -0.0296, +0.2814, -0.2464, -1.2534, +0.1853, +0.2837, +0.1983, -0.4645, -0.1632, -0.2175, +0.2452, +1.0773, -0.1737, +0.4215, -0.9719, -0.1518, +0.4816, +0.3906, +0.4412, -0.3722, +0.6022, +0.2351, -0.0554, +0.4649, +0.0608, -0.6042, -0.1263, -0.1901, +0.2438, -0.5014, -0.0619, -0.2994, -0.4572, +0.6732, +0.3784, -0.6103, -0.0523, +0.0341, +0.6983, +0.6728, +0.5441, +0.1611, -0.4942, -0.7488, -0.1269, +0.1882, +0.1228, +0.2896, +0.2281, +0.1057, -0.1560, +0.6864, -0.0802, +0.5409, +0.2144, +0.2743, -0.7150, -0.0490, +0.0422, -0.1880, +0.7008, -0.7377, -0.2782, -0.3032, -0.3964, +0.4854, +0.2991, -0.6144, -0.0917, +0.1225, +0.0900, +0.5824, -0.5820, -0.7564, +0.2166, -0.1663, -0.1676, +0.1455, -0.0327, -0.0628, +0.1853, -0.1517, +0.1260, +0.3075, -0.0584, +0.2247, -0.1641, -0.1358, -0.4113, -0.1593, -0.0318, -0.1468, -0.0056, +0.6346, +0.0381, -0.2593, +0.6915, -0.2916, -0.1112, -0.6355, +0.9558, -0.2659, -0.5147, +0.8953, +0.5910, +0.5120, -0.0781, +0.3202, +0.3356, -0.3243, -0.3473, +0.9248, -0.4715, +0.5793, +0.2818, +0.0486, +0.2690, -0.4423, +0.6652, -0.1281, -0.2754, +0.1385, +0.2573, -0.0884, +0.1244, +0.4549, -0.3703, +0.2943, -0.1861, -0.0066, +0.0914, -0.1336, +0.2412, -0.3950, +0.4108, -0.1345, -0.6509, +0.2262, +0.1174, -0.3304, -1.1724, +0.1152, +0.1480, -0.4107, +0.1433, +0.0892, -0.2027, -0.0863, -0.3106, -0.1077, +0.8500, +0.3814, +0.2248, -0.0391, +0.0016, +0.0857, -1.0216, -1.1542, -0.0484, -0.0832, -0.4652, -0.3806, +0.3878, +0.3638, +0.4895, -0.2149, -0.1492, -0.1158, -1.0124, -0.7304, +0.1434, -0.0927, -0.2571, -0.7401, -0.2399, -0.3728, -0.2685, -0.3674, +0.8050, -0.1254, -0.3408, +0.1307, -0.0123, +0.2039, -0.6820, -0.8702, +0.1656, -0.4627, -0.0929, -0.0241, +0.0180, -0.2176, +0.1276, +0.2050, +0.4328, -0.8659, -0.0502, -0.6040, +0.0320, -0.3800, -0.2095, -0.0435, +0.2776, +0.0333, +0.0538, -0.1499, -0.5323, -0.3484, +0.1473, +0.0145, +0.5389, +0.7562, +0.7675, -0.3616, +0.0481, +0.3369, +0.1791, +0.0841, +0.1788, +0.2683], -[ +0.0058, +0.1192, -0.3990, -0.5482, +0.6365, -0.0482, +0.6911, +0.4090, +0.1955, -0.2157, -0.4669, +0.1317, -0.0019, +0.6663, +0.1142, -0.0760, +0.2714, +0.1439, -0.5173, +0.2919, +0.2210, -0.0271, +0.2092, -0.3470, -0.3321, -0.6634, -0.0003, -0.0397, -0.4028, -0.6932, -0.2664, +0.4928, +0.3119, +0.1734, +0.4671, -0.2625, +0.8592, +0.5229, -0.3398, -0.2157, +0.4855, -0.4921, +0.3574, -0.2538, -0.0669, +0.0943, -0.0047, +0.9840, -0.0636, +0.1678, -0.4586, +0.0082, -0.2381, +0.1569, +0.3963, +0.1466, +0.3237, +0.1478, +0.0067, +0.5593, -0.5378, -1.0464, -0.3732, +0.5483, +0.3557, -0.0800, +0.4657, -0.2190, -0.6543, +0.2767, +0.1150, +0.0463, +0.8054, -0.1362, +1.1647, +0.5670, -0.1745, +0.3173, -0.6288, +0.4491, -0.3578, -0.0716, -0.5013, +0.9488, -0.1899, +0.3232, +0.3284, -0.4963, +0.4615, +0.1591, +0.1783, +0.4871, +0.4247, +0.1791, +0.6642, -0.1627, +0.2707, -0.1211, +0.5126, +0.3354, +0.3924, +0.0035, -0.0951, -0.2569, +0.2669, -0.0202, +0.1010, -0.3384, -0.6119, -0.0452, -0.1316, -0.3629, +0.1103, -0.3082, +0.2184, -0.2260, +0.0572, +0.1098, +0.4163, -0.0034, -0.4195, -0.2297, +0.1208, +0.0583, +0.1613, +0.3258, -0.9139, -0.1409, -0.0693, +0.0864, +0.4290, +0.3168, +0.3607, -0.1693, -0.1450, -0.4508, +0.0863, +0.1300, -0.2264, +0.3065, -0.4018, +0.6566, -0.0473, +0.2225, +0.6393, -0.3146, -0.1842, +0.3307, -0.5301, +0.2025, +0.0579, +0.2507, -0.2143, +0.0891, -0.6900, -1.0674, +0.0001, +0.1917, -0.0724, -0.3982, +0.5073, +0.0133, -0.0192, -0.6411, +0.0064, -0.1885, -0.2697, +0.0092, +0.0942, -0.1678, -0.0388, -0.4266, +0.0135, -0.0170, +0.9979, +0.1698, +0.1735, -0.0440, -0.3589, +0.0944, +0.2479, -0.8381, +0.2053, -0.1963, +0.0397, -0.2211, +1.0940, +0.5435, -0.3340, +0.3957, -0.2491, +0.2387, -0.3911, -0.0986, +0.1341, +0.0055, +0.6798, -0.2664, -0.1769, -0.5579, +0.1006, +0.2127, +0.0001, +0.4516, -0.2869, +0.0481, -0.0504, +0.2670, -0.0711, -0.2510, +0.0461, -0.7837, +0.1854, -0.0014, +0.0115, -0.0196, -0.0401, +0.7155, +0.4923, -0.2529, -0.8474, +0.0089, +0.4865, -0.5961, -0.1578, +0.7197, -0.1349, -0.6243, +0.4042, +0.0809, +0.0452, -0.2268, +0.2462, +0.0371, -0.3516, +0.1407, -0.0678, +0.1983, -0.4028, +0.2431, +0.0069, -0.0474, +0.2787, +0.5030, -0.4505, -0.4253, -0.0264, +0.1695, -0.2729, -0.3897, +0.1797, +0.5071, +0.1328, +0.0402, -0.0873, -0.2925], -[ -0.2578, +0.3576, -0.5670, +0.0195, +0.0481, +0.2069, +0.2599, +0.3436, +0.1857, +0.0424, +0.0034, +0.0914, -0.0895, -0.4832, +0.1335, +0.0173, +0.4690, -0.1548, -0.0451, +0.4527, +0.1425, -0.4686, -0.4335, +0.1585, +0.0050, +0.0098, +0.1184, -0.4975, -0.0109, +0.0528, +0.1334, -0.0985, +0.0038, -0.4760, +0.2033, -0.4807, -0.7632, +0.3721, +0.2051, -0.2116, -0.1620, +0.1526, -0.1086, +0.0286, +0.2044, -0.0843, +0.0490, -0.0191, +0.6062, +0.1632, -0.6709, +0.1862, +0.3665, -0.2114, +0.0330, +0.4528, -0.1702, -0.1241, -0.2033, -0.3707, +0.0809, -0.2924, -0.3044, +0.0027, -0.0184, -0.3877, +0.1621, -0.1284, -0.2802, +0.1746, +0.8301, -0.5383, -0.4606, +0.4687, +0.3958, +0.2014, +0.3155, -0.0517, -0.0321, -0.0346, +0.1005, -0.1464, +0.4089, +0.3138, -0.1146, +0.1663, +0.0450, +0.1326, -0.0581, -0.2995, +0.3242, -0.4038, -0.1845, +0.0110, -0.2235, -0.4269, -0.3182, +0.0986, +0.1843, +0.0867, -0.0554, +0.4738, +0.2762, +0.3406, -0.3491, +0.3781, +0.1022, +0.4263, -0.0643, +0.0813, +0.2759, +0.2936, -0.2408, -0.2487, -0.2192, -0.3466, -0.0193, -0.0727, -0.1128, -0.3556, -0.2805, -0.0196, +0.7991, +0.4695, +0.3842, +0.2353, -0.5442, -0.2519, -0.1948, -0.1566, +0.2754, -0.1096, -0.0505, +0.5178, +0.5439, -0.4157, -0.0049, -0.0915, -0.1635, +0.0854, -0.1801, -0.0487, -0.1017, +0.2384, -0.3575, -0.0136, -0.0387, -0.5111, +0.0351, -0.0926, +0.4616, -0.2582, -0.2062, -0.2454, +0.0406, +0.0775, +0.4638, +0.4809, -0.0550, +0.2945, -0.1110, -1.0061, +0.1577, +0.3010, -0.3110, -0.0752, +0.1550, -0.2361, -0.3726, -0.1119, +0.5215, +0.2078, -0.5627, +0.1945, +0.0403, +0.4788, +0.0755, -1.4607, -0.4106, +0.1586, +0.0547, -0.1049, +0.3639, -0.0832, +0.0629, -0.2143, -0.2844, -0.3145, -0.0597, -0.4129, +0.5206, -0.0500, +0.0025, -0.3709, -0.1700, +0.2106, +0.1393, +0.3013, +0.4050, +0.2890, +0.0855, +0.0350, +0.2932, +0.1194, -0.0829, +0.5560, -0.1858, -0.2612, -0.0851, +0.2315, +0.6289, +0.2955, -0.2354, -0.2024, -0.2479, -0.0265, +0.4292, -0.7113, +0.5050, -0.6616, -0.2425, +0.0561, +0.4710, +0.2937, -0.0635, -0.0753, -0.0218, +0.3483, +0.0214, +0.3521, -0.3738, +0.4116, +0.3924, +0.1700, +0.1638, -0.6535, -0.3180, +0.2972, +0.3957, +0.0711, -0.6682, -0.3125, -0.7265, +0.0734, -0.5973, -0.1134, -0.3348, -0.1073, -0.0226, -0.2454, +0.3491, +0.3806, -0.6439, +0.6871, +0.0795, -0.2263], -[ -0.1326, +0.3998, -0.1956, +0.4588, -0.0591, +0.3362, -0.0327, -0.3088, +0.2704, -0.0662, -0.0473, +0.2255, -0.1057, -0.1707, -0.0172, +0.3326, +0.4919, -0.1979, +0.5916, -0.2206, +0.0607, +0.1178, -0.1896, -0.2609, -0.0820, +0.3978, -0.0671, -0.5731, -0.4926, +0.5910, +0.0211, -0.5181, -0.2278, +0.4210, -0.3894, -0.1747, -0.4552, +0.4404, +0.0492, -0.6431, +0.2415, -0.1086, +0.2579, +0.2848, +0.0418, +0.3694, +0.2981, -0.3798, -0.0958, +0.2046, -0.5468, -0.2333, +0.0652, +0.0439, +0.0880, -0.2489, +0.1596, -0.1248, +0.3434, +0.2426, +0.3560, -0.2307, -0.3234, +0.2182, +0.2818, +0.2572, +0.5719, +0.0256, -0.0448, -0.0395, +0.1743, +0.0160, -0.7346, +0.4221, +0.2901, +0.4001, +0.6202, +0.1436, -0.6289, -0.3399, -0.5131, +0.0171, +0.1209, -0.4200, +0.1504, +0.2165, -0.1286, +0.5342, +0.5087, -0.0290, -0.3855, +0.1302, +0.4808, +0.4932, +0.2264, +0.3096, +0.0626, +0.3743, -0.1214, +0.2294, -0.2322, +0.1674, +0.3029, +0.6852, -0.4679, +0.0852, -0.1713, +0.1539, -0.2557, -0.5888, -0.0200, +0.1157, -0.1623, -0.0947, +0.1295, -0.3357, -0.3035, +0.4889, +0.3470, -0.0533, -0.1570, +0.2386, -0.2570, +0.2860, +0.6989, +0.0700, -0.5756, +0.1033, -0.0371, -0.2904, -0.5734, -0.0857, +0.1613, +0.1528, +0.4868, +0.1120, -0.2223, -0.1341, +0.3133, -0.2370, +0.1389, -0.1706, -0.2671, -0.3605, -0.4447, +0.2623, -0.5679, -0.3586, +0.0177, -0.2863, -0.0627, +0.2238, +0.3390, -0.3393, +0.4343, -0.1821, +0.5047, +0.0202, -0.9046, -0.8389, +0.2032, -0.1194, +0.3236, +0.2106, -0.4091, +0.0102, +0.2504, +0.0464, -0.2867, -0.2826, +0.0173, -0.5733, -0.0324, +0.5724, +0.7183, +0.6360, +0.0267, -0.5402, -0.4211, +0.0147, +0.2922, -0.0746, -0.0608, -0.5349, -0.3853, +0.1811, +0.1544, -0.0187, -0.1731, +0.3185, +0.3156, +0.0533, -0.1785, +0.1468, +0.3234, -0.3732, +0.6734, -0.5863, +0.1897, +0.2264, -0.4597, +0.1469, -0.2973, +0.5573, -0.7093, +0.1399, -0.2418, -0.4376, +0.0247, -0.0432, +0.4222, +0.4482, -0.8769, -0.2329, -0.4478, -0.0629, -0.0473, +0.0683, -0.0711, -0.4641, -0.4333, +0.1246, -0.0681, -0.0734, +0.1427, -0.2898, -0.2856, -0.1189, +0.1093, +0.6801, -0.6163, +0.3510, +0.3900, +0.0132, +0.5037, -0.1132, -0.0475, +0.3605, +0.0597, -0.7237, -0.4501, -0.3541, -0.4885, -0.1626, -0.9814, +0.5863, +0.1506, -0.1747, -0.1257, +0.0515, -0.1274, +0.0442, -0.1323, +0.3091, +0.1883, +0.3995], -[ +0.2580, -0.0321, -0.0908, -0.0317, -0.4518, -0.2180, -0.7505, +0.3336, -0.5556, -0.1333, -0.2075, -0.2011, +0.2871, -0.6308, +0.0339, -0.0589, +0.4756, +0.3692, -0.0968, -0.1403, +0.0153, +0.1721, +0.4632, +0.4381, -0.2298, +0.1562, -0.2060, +0.3795, +0.0996, -0.2971, -0.0264, -0.5318, +0.0033, +0.0751, -0.4562, +0.0457, -1.1723, +0.1060, -0.3748, +0.6636, -0.6019, -0.6359, -0.1217, +0.1962, -0.2596, +0.3322, -0.5117, +0.1275, -0.6581, +0.3465, +0.1321, -0.1243, -0.5666, -0.2989, +0.1596, -0.1189, -0.6923, +0.0467, -0.0296, +0.6371, -0.1294, +0.7367, +0.5668, -0.6206, -0.7065, -0.0625, -0.0862, -0.9253, -0.3194, -1.1333, -0.6269, -0.7955, +0.0069, +0.4939, +0.0738, -0.0541, -0.4375, -0.4278, -0.1885, +0.2366, +0.2776, +1.1058, +0.2472, -0.2887, +0.6280, +0.0156, -0.4622, +0.1471, -0.3074, -0.0133, -0.1701, +0.3330, +0.4457, -0.5140, +0.5124, -0.9785, -0.0262, +0.4975, +0.1280, +0.2391, -0.2296, -0.2321, -0.1709, +0.2099, +0.2792, +0.2782, -0.7239, -0.0941, -0.8187, -0.4380, +0.6653, -0.4249, +0.0831, +0.4416, -0.3051, +0.4612, -0.0953, +0.3834, +0.6800, +0.3064, -0.5076, -0.3461, -0.0925, +0.1564, +0.4479, -0.3330, -0.3814, -0.1763, +0.6326, -0.4869, -0.3122, -0.0501, +0.0998, +0.2044, +0.0571, -0.1953, +0.3004, -0.6092, -0.4504, +0.2832, -0.7743, -0.1812, +0.1048, -0.0915, +0.1498, +0.1531, +0.1290, -0.3836, -0.4775, -0.0446, +0.0070, -0.2946, +0.0357, -0.1149, +0.6477, +0.0302, -0.9077, -0.6817, +0.5539, +0.6560, -0.4794, -0.2210, -0.4379, -0.0339, +0.4187, -0.0528, +0.2351, +0.0259, -0.5894, +0.2197, -0.3085, -0.4207, +0.4041, -0.5721, -0.5034, -0.3950, +0.1644, -0.7047, -0.4445, +0.1389, -0.9147, -0.5818, -0.6501, -0.2738, +0.0734, +0.7199, -0.1588, +0.2875, +0.7474, -0.0804, +0.3638, -0.8796, +0.0163, -0.1926, -0.2995, +0.3794, -0.4861, -0.0728, -1.2323, +0.2654, -0.1854, -0.8599, +0.3547, -0.1128, -0.0966, +0.2785, -0.3221, +0.2577, -0.3125, -0.8013, -0.8342, +0.1513, +0.7272, +0.2051, -0.2223, -0.0073, +0.3386, -0.2655, -0.3559, -0.7268, -0.2523, -0.2816, -0.8645, -0.1361, +0.0758, +0.1881, -0.4843, -0.3411, +0.1274, -0.3010, +0.4789, -0.5025, -0.4794, -0.0960, -0.2969, +0.1184, -0.0298, +0.3687, +0.1748, +0.1203, +0.6285, +1.0984, +0.4063, -0.0991, +0.2996, +0.3401, +0.1337, -0.0903, -0.2080, +0.4625, -0.7322, -0.7549, -0.5056, -0.4430, -0.3007, -0.5677], -[ -0.0517, -0.1057, -0.0043, -0.0542, +0.4450, -0.5615, +0.3882, +0.1399, -0.1669, +0.0176, -0.2049, -0.1783, +0.5541, +0.1624, +0.1366, -0.3408, +0.1538, +0.0742, +0.1145, +0.7810, -0.1723, +0.5540, +0.5176, +0.2036, +0.0579, -0.1163, +0.3274, +0.3756, +0.0310, -0.0988, -0.4917, -0.0480, +1.0662, -0.5625, +0.0693, -0.2306, -0.3087, -0.0446, +0.6569, +0.0934, -0.5958, +0.1894, +0.5219, -0.5824, -0.5781, -0.0441, +0.5146, +0.5747, -0.4071, -0.0616, +0.4908, +0.1078, +0.0500, -0.0393, +0.1078, -0.0823, -0.7171, -0.0602, -0.4418, +0.2032, -0.2289, +0.3937, +0.5635, -0.2170, +0.0130, -0.1764, -0.1665, -0.6205, -0.0750, -0.2076, -0.6095, -0.1674, +0.3736, -0.1397, +0.0598, -0.1127, +0.2815, +0.2289, +0.1760, +0.4279, +0.2754, +0.2100, -0.5346, +0.3914, -0.0303, -0.1224, +0.1694, +0.5074, +0.0206, +0.1566, -0.2194, -0.0798, +0.6836, +0.0961, -0.0445, -0.2889, +0.2377, -0.0632, +0.4349, -0.1725, -0.2834, +0.5253, -0.4173, -0.3300, -0.1592, +0.3029, -0.1875, +0.5155, +0.2209, -0.0631, +0.1473, -0.1029, +0.2240, -0.0591, +0.2257, +0.3434, -0.4990, +0.5342, -0.6224, +0.4493, -0.0003, +0.4797, -0.1270, +0.0096, +0.0839, -0.1084, -0.1010, -0.0641, -0.1828, +0.4060, -0.0716, -0.0187, -0.1036, +0.5054, -0.4571, -0.1013, -0.4433, +0.2087, -0.1181, +0.0607, -0.3332, +0.1518, -0.1161, -0.1026, -0.1562, -0.2360, +0.1593, -0.2692, -0.2736, -0.1475, +0.1365, +0.2678, +0.3841, +0.4527, -0.3711, +0.1477, -0.1991, -0.4512, +0.5100, +0.1193, -0.2178, -0.5323, +0.0743, +0.3853, -0.2873, +0.0004, -0.0388, +0.5343, -0.2693, -0.0501, -0.1775, +0.0667, +0.4615, +0.2984, +0.2422, +0.0017, +0.3387, -0.2019, +0.2683, +0.4507, +0.2006, +0.4782, -0.3236, +0.1963, +0.3182, +0.0409, +0.0501, +0.6734, +0.5018, +0.9505, -0.1489, -0.4257, +0.7007, +0.3870, +0.9048, +0.4162, -0.4799, +0.6189, -0.7000, -0.1832, +0.0774, -0.3008, +0.3057, +0.0099, +0.1230, -0.2420, -0.5353, +0.1736, +0.2633, -0.1618, -0.2400, +0.3115, +0.2661, -0.4996, +0.6704, -0.1198, -0.6283, -0.0285, +0.2026, +0.1884, +0.2908, -0.6691, -0.3928, -0.2055, +0.1544, -0.3106, +0.4091, -0.4258, +0.8089, +0.1663, +0.3419, -0.0272, -0.1707, -0.3679, +0.4294, +0.3070, -0.4244, -0.0642, +0.1870, +0.2543, +0.3636, +0.2288, +0.2413, +0.4558, +0.6354, +0.0333, -0.2546, -0.3117, -0.3507, +0.3067, +0.1262, +0.3636, -0.0261, -0.3435, -0.2098, -0.2632], -[ -0.2254, +0.1222, +0.0082, +0.0339, -0.1247, -0.7235, -0.4021, +0.0655, -0.2149, -0.7240, +0.2197, -0.0381, +0.7993, -0.1811, -0.2686, -0.1337, -0.2394, -0.5115, -0.4844, -0.3773, +0.2404, +0.1333, +0.2664, +0.0644, -0.7438, -0.3037, -0.6230, +0.4239, -0.5265, -0.1815, +0.2762, -0.0530, -0.1605, -0.0440, -0.1252, +0.1784, +0.6194, +0.1031, -0.0657, -0.1505, -0.2593, -0.0321, -0.0301, -0.9154, -0.6032, +0.0375, -0.0253, +0.2735, +0.7835, -0.5849, +0.3612, +0.1877, -0.1430, -0.4861, +0.2207, +0.0627, -0.2316, +0.1242, +0.2481, +0.0124, +0.0345, +0.0232, +0.0682, +0.4131, +0.0812, -0.3701, -0.0095, -0.1702, -0.0830, -0.4328, -0.7369, -0.7488, +0.8500, -0.2132, -0.1304, -0.1964, -0.3160, -0.0734, +0.0146, -0.2056, -0.3057, -0.0490, +0.0979, -0.5667, -0.5120, -0.1254, +0.0070, +0.0731, +0.1151, +0.8642, +0.2638, -0.2458, -0.3317, -0.4824, +0.5103, +0.2912, -0.0596, +0.2937, -0.2512, -0.3713, -0.3718, +0.1662, -0.2377, +0.2202, -0.2121, -0.7986, -0.1652, +0.1374, -0.0305, +0.3312, -0.3389, -0.5671, -0.0138, -0.1118, -0.0569, +0.4890, +0.2144, -1.1168, +0.4821, -0.3630, +0.4254, -0.1255, +0.4572, -0.0649, -0.0951, -0.6062, -0.1390, -0.3208, -0.1601, +0.5853, +0.0198, -0.1820, +0.3853, +0.3325, +0.6694, +0.0389, -0.1886, -0.0589, +0.3153, -0.1390, -0.5312, -0.3587, -0.6521, -0.3026, +0.3633, +0.0434, +0.5529, +0.1507, -0.2595, +0.1951, -0.2139, -0.2316, +0.4075, +0.7711, +0.3368, +0.0191, +0.0969, -0.2652, +0.0242, -0.0486, -0.8011, -0.0023, +0.3669, -0.1759, -0.0255, -0.1182, +0.0531, +0.1226, -0.0949, -0.1404, +0.4412, +0.0623, +0.2352, -0.1992, +0.1310, -0.3794, +0.3144, -0.7754, +0.2934, +0.3058, -0.0035, -0.0037, +0.3983, +0.2427, -0.5494, -0.0483, -0.2532, +0.0648, +0.4787, -0.1439, -0.2064, -0.2835, +0.0536, -0.6050, +0.4153, -0.1998, +0.0687, -0.8446, +0.0065, -0.1686, +0.5548, -0.0920, -0.6620, +0.1719, -0.1361, +0.0207, -0.2739, +0.2797, -0.7068, +0.2193, -0.6505, +0.1931, -0.0202, -0.8825, -0.5734, +0.1792, -0.2970, -0.0024, +0.0689, -0.5107, +0.2412, +0.1698, +0.1819, +0.5469, -0.1767, -0.0548, -0.6116, +0.2067, +0.1078, -0.0580, -0.1494, -0.1845, +0.2434, -0.2384, -0.0273, -0.3520, -0.5232, +0.0258, +0.0038, -0.4646, -0.2627, -0.1289, +0.2851, +0.1203, -0.3415, -0.3977, -0.6167, +0.5533, +0.2592, -0.4338, -0.1007, +0.2671, -0.5491, -0.6072, +0.5157, -0.6033], -[ +0.0971, +0.1272, -0.0807, -0.6316, +0.5476, +0.2440, -0.2831, +0.0918, +0.6243, -0.2409, -0.9764, -0.1574, +0.6405, +0.5324, +0.0370, +0.3514, -0.1418, -0.4667, -0.5736, +0.0616, +0.0522, -0.4398, -0.4408, -0.4542, -0.7269, +0.4609, +1.3303, -0.5917, -0.1543, +0.1590, -0.5325, -0.1637, +0.7692, +0.0171, +0.1820, -0.0037, +0.2687, -0.6598, +0.7318, +0.3017, -0.7248, -0.0711, -1.1542, -0.5687, -0.0808, +0.4807, -0.5937, +0.9824, -0.0071, -0.9419, -0.2237, -0.3887, +0.1305, -0.9491, +0.4872, +0.2737, -0.4481, -0.8020, +0.3574, +0.3444, +0.3078, -0.3783, +0.8516, -0.4172, +1.1938, +0.3664, +0.4436, -0.1196, -0.1469, +0.6439, +0.0709, -0.4162, +0.0170, +0.3218, -0.5698, +0.1459, -0.4207, +0.1637, +0.0236, +0.2379, -1.2916, +0.0301, -0.3942, -0.6290, -0.7584, -0.5575, +0.4160, +0.7691, -0.4681, +0.6344, +0.5985, -0.7179, +0.3023, +0.0086, +0.6495, +0.0468, +0.5633, +0.2911, -0.4149, -0.3455, -0.1132, -0.0722, -0.2740, +0.2552, -0.1418, +0.0238, -0.0241, -0.0307, +0.7057, +0.7457, -0.0747, +0.9143, -0.2266, +0.4683, -1.3727, +0.5586, +0.9880, +0.2933, +0.0818, -0.0452, +0.6775, -0.2170, +0.2790, +0.1701, +0.5904, +0.5187, +0.4631, +0.0505, -0.7640, -0.3611, +0.2257, +0.8919, -0.0824, +0.6382, +0.5830, +0.8632, +0.4635, +0.2000, +0.3348, -0.9115, +0.4606, +0.0620, -0.2192, -0.6500, -1.2377, -0.8593, +1.1137, +0.3513, -0.4842, -0.6373, +0.0120, +0.8593, +0.4458, +0.1046, +0.3498, +0.6796, -1.1151, +0.2206, +0.4331, -1.2242, -0.0932, +0.1335, +0.5434, +0.0431, +0.4102, -0.2364, -1.0614, +0.0479, +0.7801, -0.6779, -0.6373, -0.1470, -0.2309, -0.2033, -0.4818, -1.0119, +0.6042, -0.5270, -0.7180, -0.0962, +0.4765, -0.7870, +0.2064, +0.1536, -0.5795, -0.5268, +0.1095, -0.6469, -0.2972, +0.4133, -0.0978, -0.1118, +0.1841, +0.6940, +0.2675, -0.3739, +0.6037, -0.8999, +0.2205, -0.3073, +0.3966, +0.0148, -0.1735, +0.8408, -0.4801, -0.1621, +0.7373, -0.1147, +0.0335, +0.8079, -0.3996, -0.7176, +0.2068, +0.0246, -0.3786, -0.1550, -0.0427, +0.5675, +0.6355, -0.4139, +0.2801, -0.3630, -0.4610, -0.9472, +1.4115, +0.0796, +0.3739, +1.0294, -0.7529, -0.2716, -0.3388, -0.3677, +0.5121, -2.0669, +0.3912, +0.1127, -0.3043, +0.1486, -0.4912, +0.9947, +0.3259, +0.5517, +0.4856, +0.2197, -0.9631, +0.2599, -0.1332, +0.4345, +0.1185, +0.4382, -0.5038, +0.4225, +0.2322, -0.7056, +0.2674, -0.1903], -[ -0.3459, -0.2929, -0.2275, -0.3250, +0.1549, -0.4625, -0.6429, +0.3028, +0.0628, +0.0070, -0.8469, -0.2053, +0.2628, -0.1075, -0.1898, -0.0076, -0.3959, -0.3008, -0.0918, -0.6566, -0.1800, -0.2028, +0.3828, +0.0155, -0.2365, -0.1109, -0.3390, +0.1050, -0.5102, -0.0428, -0.1759, -0.5144, -0.1241, -0.2597, -0.1232, -0.0286, +0.1021, +0.2598, -0.8344, -0.6424, -0.3453, -0.3492, -0.1204, -0.5680, -0.2556, -0.2478, -0.1800, -0.1376, -0.2131, +0.0893, -0.3889, -0.2820, -0.1344, -0.1937, -0.3025, -0.3263, -0.1208, -0.5491, +0.2020, -0.3777, -0.0931, -0.0185, +0.0996, -0.3684, -0.4346, +0.0030, -0.3950, -0.4872, -0.1003, +0.3802, -0.3868, +0.1620, -0.0134, -0.0886, -0.0772, +0.4609, +0.3987, -0.3092, -0.1019, +0.5754, -0.2225, +0.0662, +0.0116, +0.2221, +0.0817, +0.0452, +0.2629, -0.1583, +0.0940, +0.2024, -0.0392, +0.1523, +0.1649, +0.7347, +0.0999, +0.2334, +0.0922, +0.2102, -0.3161, +0.0705, -0.3300, +0.1981, +0.3322, +0.0063, -0.4201, +0.2617, +0.2165, +0.0571, +0.2846, -0.0334, -0.2781, -0.4566, -0.4476, -0.1649, +0.1043, -0.0727, -0.6409, -0.3803, -0.4664, -0.3317, -0.3995, -0.4930, -0.1604, -0.6794, +0.2106, -0.1274, +0.2845, -0.4536, -0.3083, -0.5712, +0.0310, -0.4500, +0.5426, +0.7655, +0.4055, -0.3319, -0.2485, +0.1080, +0.1217, -0.0944, +0.0864, -0.3449, +0.0030, +0.0678, -0.0736, +0.0492, -0.1866, -0.4454, +0.1742, -0.4623, +0.0449, +0.3098, -0.1764, -0.0823, +0.2961, +0.0079, +0.0358, -0.4479, +0.0450, -0.0046, +0.2459, -0.3858, -0.4417, -0.9381, -0.2057, +0.1002, -0.0049, -0.1272, +0.1719, +0.1552, +0.1637, +0.0942, -0.2816, +0.3755, -0.1186, -0.3121, -0.7208, -0.1498, -0.0100, -0.2821, -0.0537, -0.3280, -0.2871, -0.6765, -0.0441, +0.0570, -0.1965, -0.0154, -0.5511, -0.2541, -0.1381, -0.2247, -0.2373, -0.3803, -0.0130, -0.0577, -0.3553, -0.3097, +0.0915, +0.5968, -0.0777, +0.0257, -0.4947, +0.1743, +0.2621, +0.0767, -0.2236, +0.0390, -0.0566, -0.1794, +0.0764, -0.1052, -0.1449, -0.2701, +0.1982, -0.1306, +0.4158, -0.0506, +0.5310, -0.2915, -0.6153, -0.3184, -0.5074, +0.0215, -0.5646, +0.3206, -0.3818, -0.1460, +0.1206, -0.0984, -0.1007, +0.4923, -0.1680, -0.0036, +0.0321, +0.0903, +0.1555, -0.0877, -0.6646, -0.2618, -0.1668, -0.1164, +0.1103, +0.2022, +0.1244, -0.1864, -0.6336, -0.3505, -0.0696, +0.1603, -0.1760, -0.2891, -0.1449, -0.2680, -0.3291, +0.1254], -[ -0.0014, -0.2179, -0.1024, +0.2724, -0.6980, +0.0482, -0.4610, +0.3440, +0.7779, +0.7939, -0.2391, -0.3935, +0.6069, +0.4633, -0.0086, +0.0245, -0.8523, +0.2697, +0.4221, -0.2492, -0.2744, -0.2585, +0.6087, -0.0067, -0.6428, -0.0869, +0.6102, +0.2642, -0.1781, +0.6172, +0.5433, +0.2936, +0.4328, -0.3769, -0.7059, -0.2932, +0.2400, +0.3150, +0.7972, -1.0202, -0.3237, -0.2077, +0.5545, -0.8467, +0.0423, -0.5544, -0.0552, +0.1363, +0.3601, -0.0750, -0.2661, +0.3249, +0.1457, -0.1605, -0.1876, -0.0114, -0.6285, -0.3600, +0.0706, +0.4438, -0.5240, +0.4400, +0.6549, -0.2373, +0.0670, +0.3759, -0.0329, -0.1296, +0.2873, +0.3356, -0.2937, -0.2334, +0.4186, +0.4482, -0.0834, +0.1646, +1.0274, +0.3589, -0.1643, -0.0433, +0.2493, -0.3932, +0.1633, -0.2387, -0.1029, -0.1127, +0.5711, +0.0687, -0.6781, -0.1103, -0.1336, +0.3548, +0.5038, +0.0377, +0.0847, -0.1009, +0.1877, -0.6853, +0.2575, -0.3521, -0.4971, -0.6126, +0.2782, -0.1957, +0.4611, -0.0501, +0.0996, +0.0286, +0.2926, -0.2507, +0.6176, -0.1930, +0.0860, -0.7506, +0.2823, +0.2447, +0.0132, -0.5130, +0.5241, -0.8221, -0.4968, +0.0111, -0.3923, -0.0041, -0.1221, -0.0380, +0.2004, +0.1683, +0.5528, -0.7337, +0.4287, +0.5174, -0.0989, +1.1808, +0.6111, +0.1292, -0.5461, -0.7168, +0.2331, -0.6499, +0.7138, -0.1572, +0.7273, -0.3432, -0.0372, +0.3429, -0.2325, +0.2538, +0.1735, -0.2706, -0.0422, -0.0536, +0.1454, -0.7118, -0.9110, -0.6557, -0.1068, +0.1610, -0.3511, +0.5720, -0.1388, -0.2217, -0.4354, -0.3361, -0.2705, -0.0251, +0.1889, -0.7112, +0.7133, +0.0857, +0.3282, -0.3987, -0.8121, +0.0332, -0.6749, -0.9511, +0.0414, -0.2329, +0.2806, +0.6295, -0.1057, -0.4089, -0.1810, -0.2830, +0.2404, -0.0134, +0.3865, +0.4006, -0.9405, +0.7669, +0.3982, -0.6482, -0.2449, +0.5408, +0.5694, -0.3708, +0.2219, +0.0226, +0.2481, +0.1035, +0.2148, +0.7380, +0.5120, -0.1690, +0.0938, +0.1582, -0.7959, +0.0674, +0.4924, -0.0004, +0.2487, +0.0675, +0.1976, -0.0702, +0.6545, -0.1002, +0.0414, +0.4500, +0.7843, -0.4841, -0.1004, +0.4766, -0.5548, -0.6542, -0.7294, -0.6880, -0.2803, +0.3076, +0.0580, -0.3033, +0.0779, +0.5856, -0.9383, +0.6444, +1.4704, -0.0393, +0.3597, -0.2536, -0.0801, -0.0198, -0.1302, -0.1504, -0.0323, -0.1615, -0.2752, -0.7354, -0.5141, +0.7854, +0.2632, -0.2231, +0.0821, -0.8308, +0.3973, -0.4791, +0.1884, +0.1108], -[ -0.1568, -0.1905, -0.1967, +0.6140, -0.2266, +0.0609, +0.0196, +0.3632, -0.0748, +0.1989, -0.1911, -0.0285, -0.0444, +0.1695, -0.6967, -0.5072, +0.4176, -0.5065, +0.6158, -0.0720, +0.0000, -0.2771, -0.1464, -0.2060, +0.0950, -0.2303, -0.2961, -0.5712, +0.3127, +0.2151, +0.0987, +0.3436, +0.1666, -0.1796, -0.0966, -0.3077, -0.1635, +0.0572, -0.3061, -0.1970, +0.1720, -0.4820, +0.1094, +0.0980, -0.0292, -0.0262, -0.1223, -0.1769, +0.3423, -0.0711, -0.1558, -0.4160, +0.3624, +0.1163, -0.5070, -0.4014, +0.0601, -0.0348, +0.1061, +0.5407, -0.4648, +0.0189, +0.3881, +0.0511, -0.0081, +0.1336, +0.3207, -0.2723, -0.2401, +0.2285, +0.1927, +0.0196, -0.5405, -0.1027, +0.2207, -0.2839, -0.8098, +0.5605, -0.2030, +0.5022, -0.3033, -0.1975, +0.2454, -0.2194, +0.1986, -0.0241, +0.1952, +0.9816, -0.0869, +0.0677, +0.0391, -0.1945, +0.1492, +0.1588, -0.3063, -0.0604, +0.1103, -0.0152, -0.1695, +0.3604, +0.1343, +0.1295, +0.4250, +0.8233, +0.3298, +0.0450, -0.0168, +0.0641, -0.0693, +0.1705, -0.0205, +0.0839, -0.1696, -0.1183, -0.0676, -0.1917, +0.3616, -0.6136, -0.6667, +0.1903, +0.1986, +0.3176, +0.0321, -0.6577, +0.3379, +0.1646, -0.3102, -0.3740, -0.2964, +0.5509, -0.2115, -0.1687, -0.1415, +0.0799, -0.0301, -0.0571, +0.1140, -0.2946, -0.0930, -0.3086, +0.0883, -0.4379, -0.1867, -0.2754, +0.0353, +0.1359, -0.0281, +0.3406, -0.1509, +0.2534, -0.1332, +0.4040, -0.1004, -0.6837, -0.0286, -0.4480, -0.1721, +0.7950, -0.0048, -0.3261, +0.5225, -0.5019, -0.6045, -0.2135, +0.2817, -0.1452, -0.4010, +0.0534, +0.4816, +0.1616, +0.2199, -0.4548, -0.1671, +0.1567, -0.2939, -0.3323, +0.4643, -0.3399, -0.0875, +0.1349, -0.4169, -0.2970, -0.7196, +0.6257, -0.0869, +0.6301, -0.3784, -0.1897, -0.1941, -0.1412, +0.1360, -0.5844, -0.5427, -0.2550, -0.1246, -0.1042, +0.0365, +0.0614, +0.1791, -0.0850, -0.0117, -0.3225, -0.2275, -0.1485, -0.4611, -0.2457, +0.1616, +0.3345, -0.2374, -0.4084, -0.5457, +0.7513, -0.6738, +0.0384, +0.2540, +0.3600, -0.1046, -0.3296, +0.5363, -0.3355, -0.0467, +0.2845, -0.1775, +0.0455, +0.1075, -0.1422, +0.0174, -0.2012, -0.2004, -0.0581, +0.0130, -0.4034, -0.4435, +0.5231, -0.2285, +0.0486, -0.3202, +0.1826, -0.6885, +0.1755, +0.0256, -0.1733, -0.2782, -0.2286, +0.2166, -0.6161, +0.2824, +0.3869, +0.1456, -0.4310, -0.6368, +0.2035, -0.0595, +0.4582, -0.1798, -0.0436], -[ -0.0181, -0.1517, +0.4605, +0.1624, +0.1033, +0.0490, -0.2388, +0.1865, +0.2055, +0.2402, -0.2237, -0.2955, -0.2529, -0.1805, -0.1915, -0.2689, +0.4532, -0.3432, +0.3309, +0.2188, -0.2814, -0.0236, +0.1495, +0.1545, +0.4766, -0.2142, +0.1870, -0.1812, -0.1136, +0.4168, +0.3371, -0.1762, +0.1194, -0.1561, +0.0556, -0.2458, -0.1024, +0.1869, +0.0372, -0.1857, +0.6866, -0.0733, +0.2744, -0.1462, +0.1742, -0.2167, -0.1315, -0.3197, -0.0156, -0.6905, +0.1625, +0.0797, +0.3537, -0.1280, -0.2093, -0.3428, -0.6605, -0.3744, +0.0974, +0.3449, -0.2317, +0.0045, +0.2004, +0.1101, -0.0059, +0.0145, +0.1886, -0.3576, -0.3216, +0.3957, -0.4071, +0.0034, +0.1424, +0.0412, -0.1417, -0.1487, +0.1144, -0.3168, +0.1507, +0.2338, +0.1057, +0.0141, +0.1239, +0.0011, +0.0279, -0.0843, +0.2583, -0.0037, -0.5076, +0.4876, -0.2808, +0.2189, +0.1357, -0.1575, +0.3043, -0.0722, -0.0018, +0.0318, -0.0591, +0.1086, +0.1357, -0.0031, +0.1798, +0.1110, -0.0783, +0.0679, +0.1339, +0.7722, -0.2218, +0.1125, -0.0876, +0.1058, -0.2008, +0.0074, -0.4923, +0.0606, -0.0528, -0.3066, -0.1564, -0.0768, +0.1185, +0.3379, +0.0177, -0.7778, -0.0899, -0.1667, -0.4094, +0.3514, -0.2306, -0.1760, +0.4331, -0.3159, -0.1497, +0.1061, +0.0329, +0.1262, +0.4617, +0.5943, -0.1134, +0.0074, -0.0707, +0.1432, -0.0092, -0.1440, +0.1336, +0.1947, -0.0722, +0.2060, -0.5554, +0.4137, -0.1060, -0.1295, +0.2212, -0.0793, -0.3263, -0.0029, +0.1855, -0.1998, -0.1251, -0.0273, +0.2210, -0.3760, +0.1082, -0.4031, -0.0510, +0.1550, -0.1863, -0.1192, +0.6401, +0.1850, -0.0110, -0.4595, +0.0367, +0.0560, -0.0895, -0.2645, +0.3973, -0.3074, -0.4834, -0.0877, -0.1702, +0.2638, -0.2542, +0.0411, +0.0717, +0.4424, +0.4097, -0.0298, -0.0026, +0.5342, -0.2771, -0.0717, -0.2918, +0.3399, +0.4573, +0.0319, -0.0012, +0.2066, -0.1188, +0.3043, +0.0843, -0.2806, +0.1029, -0.4187, -0.0854, +0.1374, +0.1902, +0.4829, +0.0010, +0.0891, +0.1228, -0.1724, -0.1548, +0.1549, -0.1761, +0.0927, +0.0955, +0.1509, +0.1455, -0.2227, -0.2127, -0.2754, -0.1563, +0.3258, -0.0605, +0.2503, +0.1846, +0.0014, -0.2199, -0.0010, +0.2980, -0.2931, +0.4328, -0.1768, +0.2228, -0.0650, +0.2960, -0.2864, +0.2620, +0.0654, +0.0043, -0.0542, -0.1541, -0.2997, +0.1009, -0.2606, +0.0796, +0.3108, -0.1987, -0.3559, -0.0937, +0.6573, -0.4506, +0.1700, -0.0851, -0.0479], -[ -0.1923, +0.1828, -0.2162, -0.1283, -0.1979, -0.2725, -0.2551, +0.1614, -0.7034, +0.2186, +0.2195, -0.3233, -0.0245, -0.2465, -0.1510, +0.0039, -0.4399, +0.5089, +0.2020, -0.0496, -0.8244, +0.1061, +0.4799, -0.0809, -0.5144, -0.6885, -0.6830, -0.5994, +0.1182, +0.6164, -0.1947, -0.1509, -1.0396, +0.2915, +0.3258, -0.4779, -0.1365, +0.2056, -0.1039, +0.1082, +0.6918, +0.5517, -0.5690, -0.5703, -0.0816, +0.2549, +0.6198, +0.0620, -0.2735, +0.3365, -0.1107, +0.0928, +0.3360, -0.5129, +0.1905, +0.3907, +0.4545, -0.2797, +0.4622, +0.2629, +0.1207, +0.1960, -0.4770, -0.0865, +0.2131, -0.0933, -0.1778, +0.1524, +0.8382, +0.4366, -0.6018, -0.7308, -0.1656, -0.0942, -0.8680, +0.3633, +0.2390, +0.1643, +0.0437, -0.5935, +0.0355, -0.5868, -0.0117, +0.2651, -0.0469, -0.8262, +0.5520, -0.2318, +0.4839, -0.9434, +0.0501, -0.1866, +0.3123, -0.5032, +0.3452, -0.0825, -0.1679, +0.0531, -0.3293, -0.2946, +0.3276, -0.0762, -0.2775, +0.3445, -0.6077, +0.0962, -0.2581, -0.6046, +0.6628, +0.5802, -0.8012, -0.3344, -0.0435, +0.3372, -0.5953, +0.5681, -0.0387, -0.0728, +0.0589, +0.0316, +0.7274, -0.8087, -0.1131, +0.8443, -0.3240, -0.4797, -0.4725, +0.0449, +0.2843, -0.5853, -0.3322, -0.0361, -0.0579, -0.1116, -0.5249, +0.9009, +0.6083, +0.1584, -0.2458, +0.4057, -0.2112, -0.7266, +0.7679, -0.1648, -0.4179, +0.1841, -0.5558, -0.7042, +0.3328, -0.2022, +0.1459, -0.1600, +0.1829, +0.2514, +0.0728, +0.2194, -0.0932, +0.2630, -0.2721, -0.2807, +0.5510, -0.5188, -0.5946, -0.2776, -0.7961, -0.2546, +0.5389, +0.0802, -0.4452, -0.2201, +0.3855, -0.2386, +0.0758, -0.0397, -0.4327, -0.3850, -0.0731, +0.6360, -0.6680, +0.0546, -0.3673, +0.2580, -0.0047, +0.4260, +0.8122, -0.1024, +0.2572, +0.2642, -0.3669, -1.0358, -0.3195, -1.0271, +0.1501, +0.3043, +0.3816, +0.4699, +0.1954, -0.4149, -0.3560, -0.4206, +0.5750, +0.4014, -0.1360, -0.1145, +0.0733, -0.2000, +0.1473, -0.7620, +0.4910, +0.2674, +0.1964, +0.3339, +0.5778, +0.3575, +0.1111, +0.5384, -0.0129, -0.2585, +0.0402, -0.0104, +0.3419, -0.2237, +0.1545, -0.2039, +0.0038, -0.2089, +0.1454, -0.0844, +0.2724, -0.0732, +0.2969, +0.0981, +0.3262, -0.2456, -0.1463, +0.4322, +0.6673, +0.4190, +0.8949, +0.2569, -0.0054, +0.2766, -0.2847, -0.3244, +0.1579, -0.8993, +0.8079, -0.1240, -0.0298, -0.4256, +0.2840, +0.0205, -0.0747, +0.3158, +0.1233, +0.3491], -[ -0.2751, +0.8852, -0.8852, -0.0579, +0.6365, -0.6268, +0.1962, -0.3757, -0.6659, +1.0184, +0.4236, -0.2658, +0.5197, -0.4590, +0.4103, -0.1936, +0.9890, +0.4410, +0.4954, +0.0446, -0.2903, +0.3474, +0.0473, -0.0109, -0.6659, -0.1370, -0.2377, -0.6578, +0.9291, +0.1044, -1.0426, -0.6580, +0.1026, +0.1251, +0.6299, -0.2404, +0.7316, +0.5795, -1.2290, +0.2091, +0.3539, -0.2894, -0.9158, -0.2755, -0.0160, +0.2904, +0.0956, +0.1906, -0.3532, +0.1276, -0.0108, +1.1041, -0.3086, -0.0224, +0.2936, +0.1778, -0.2597, +0.5730, -0.0454, -0.2995, -0.1492, +0.2819, +0.1660, -0.5929, -0.1337, +0.0549, +0.0594, +0.6670, +0.2389, -0.3401, +0.1060, -0.0738, -0.0507, +0.5315, -0.4619, +0.0676, +0.5087, -0.6884, +0.7160, -0.6154, -0.1693, -0.6068, +0.2978, -0.0694, -0.3575, -0.9904, +0.6244, -0.2512, +0.6183, -0.8059, +0.2149, +0.1212, -0.8640, -0.6388, -0.1313, -0.6706, -0.4697, +0.3361, -0.9343, +0.2486, -1.5737, -0.0742, -0.6230, -0.0136, -0.1068, +0.3871, -0.5936, +0.7174, -0.3777, +0.3878, -1.0492, +0.6653, +0.1661, +0.0680, +0.3743, +0.6013, -0.5215, -0.5734, +1.5733, -0.2677, +0.3860, -0.4782, -0.3186, +0.6421, +0.0328, +0.3142, -0.2732, -1.1297, +0.7071, +0.7353, +0.0480, -0.4532, -0.2169, -0.5067, -0.0209, +0.2397, +0.6600, -0.7860, +0.1701, -0.9783, +0.2308, -0.7691, -0.4811, +0.1725, +1.1574, +0.1614, -0.0248, -1.0841, +0.2366, -0.8478, +0.8919, +0.1641, -0.5230, -0.4766, +0.3857, +0.4769, +0.2226, +0.4354, -1.0002, -0.7756, +0.1217, -0.0765, -0.9142, +1.1919, +0.2371, -0.4590, +0.3197, -0.2017, +0.1946, -0.1535, +0.2650, +0.1268, +0.4856, +0.0677, +1.3241, -0.5557, -0.7585, +0.2910, +0.8579, +0.6737, -0.2998, -0.6998, +0.1340, +0.0949, -0.1657, -0.6548, +0.1343, +0.3806, +0.0376, -0.3597, -0.3643, +0.1670, +0.1425, +1.1363, -0.7475, +0.9241, +0.2417, +0.2595, +0.0867, +0.8544, -0.0836, +0.8028, +0.2615, +0.1857, +1.0312, -0.7275, -0.3879, -0.1304, -0.6504, -0.3000, -0.2025, +0.9019, +0.1888, +1.1569, +0.3895, +0.6929, -0.0582, +0.6625, +0.5312, +0.1823, -0.4850, -0.1568, -0.2575, -0.1785, +0.2081, -0.5953, -1.1529, +0.0246, +0.2034, +0.7835, -0.1488, -0.7254, +0.2720, -0.6312, -0.1945, -0.0942, +0.8621, -0.5006, +0.5600, +0.1136, -0.4283, +0.5134, -0.7284, -0.0862, +0.8713, +0.0487, +0.4133, -0.3001, +0.0069, -0.0464, +0.3672, -0.2689, -1.1099, -0.2102, +0.5262, +0.6225], -[ -0.1137, +0.0684, +0.5856, +0.1516, -0.4805, +0.2967, +0.2574, +0.6321, -0.0911, -0.2367, -0.2440, +0.5054, +0.0441, +0.2629, +0.2353, +0.2852, -0.1988, +0.0099, +0.2175, -0.1234, +0.2192, -0.0798, -0.3593, +0.0331, -0.1309, +0.3565, -0.1931, +0.3007, -0.2804, -0.3571, +0.6023, -0.0986, +0.1362, +0.0188, +0.4062, +0.3276, -0.0060, +0.3238, -0.2725, +0.0996, -0.1840, -0.2296, +0.2436, +0.9713, +0.1094, +0.0740, -0.0243, +0.0500, +0.1708, -0.0196, -0.1344, +0.2166, +0.3122, -0.0249, -0.1899, -0.2083, +0.3150, -0.1082, +0.0341, -0.1865, +0.2843, -0.3299, +0.7243, +0.1134, +0.2132, -0.2768, -0.0025, +0.2671, +0.1103, +0.0570, +0.6081, +0.0400, +0.2222, +0.2172, +0.2639, +0.1922, +0.2666, +0.3813, +0.0050, +0.2035, +0.2311, -0.2665, -0.4459, +0.2607, -0.1721, -0.0386, +0.0387, +0.0052, -0.0086, +0.2993, -0.1143, +0.2343, +0.0613, -0.0691, +0.1523, +0.0249, +0.1392, -0.0203, -0.3029, -0.0532, +0.2942, +0.0958, +0.2302, +0.2106, -0.0435, +0.4706, +0.0497, +0.3359, -0.1723, +0.6178, -0.2179, +0.2149, +0.0374, -0.3522, +0.0820, -0.1558, -0.0230, +0.5359, -0.3103, +0.2610, -0.1286, -0.2226, -0.1155, +0.2785, +0.2162, -0.1783, +0.1844, +0.4423, +0.2266, -0.0690, +0.3443, -0.3208, -0.3647, +0.3119, +0.2501, +0.1570, -0.0044, -0.0307, +0.1948, +0.2904, +0.5643, +0.3988, +0.1651, -0.4694, -0.2702, +0.3436, +0.1013, -0.4498, +0.3210, +0.3409, -0.5259, -0.4639, +0.0245, -0.1924, +0.3640, +0.2479, -0.0341, -0.2452, +0.1766, +0.2077, +1.0604, +0.5820, +0.6025, -0.0220, +0.3371, -0.1013, -0.2367, -0.3149, -0.0083, -0.2680, +0.4518, +0.1082, +0.0706, +0.0329, +0.5948, +0.3071, -0.1575, +0.0353, -0.0093, -0.1989, -0.1294, +0.7708, -0.4821, -0.0962, +0.1089, -0.0366, -0.0203, +0.2364, +0.2724, +0.6875, +0.2756, +0.3726, +0.3428, +0.6897, -0.3286, -0.0566, +0.5282, +0.6224, -0.2565, +0.4322, +0.2120, +0.3268, +0.0932, -0.1161, +0.1532, +0.0015, +0.1014, +0.2926, -0.2429, +0.0398, -0.1240, +0.3335, -0.0192, +0.0280, -0.1902, +0.2479, +0.2528, +0.3161, +1.4925, +0.2553, -0.2260, +0.3298, -0.1897, -0.1476, -0.0159, +0.3809, -0.1039, -0.0191, -0.3136, +0.5045, -0.0566, +0.4500, +1.0110, +0.6605, +0.3244, +0.1368, -0.2437, -0.0899, +0.3181, +0.7552, +0.2195, -0.2581, -0.5558, +0.4525, +0.3627, +0.2209, +0.3093, +0.4475, -0.3619, -0.0920, +0.3507, -0.0106, +0.0076, -0.1558, +0.2296, +0.2351], -[ +0.2551, +0.4825, +0.4746, +0.3243, -1.0143, -0.2511, -0.5483, +0.6951, -0.2369, +0.2123, -0.0645, -0.1231, +0.2005, -0.0428, -0.1425, +0.2066, -0.4427, -0.0255, -0.0038, -0.1289, +0.0079, -0.3053, -0.8055, +0.2379, -0.5216, +0.7486, -0.7187, +0.3854, -0.1110, -1.5465, -0.4995, +0.5061, +0.5520, +0.0762, +0.5681, +0.8220, -0.7713, +1.1371, -0.9632, -0.4994, -0.0772, +0.0090, +0.2604, +0.3045, +0.1097, +0.3325, -0.0575, -0.0876, -0.1648, +0.0712, -1.0714, +0.1190, +0.6946, +0.2458, -0.4769, -0.3385, +0.7238, -0.4773, -0.5030, -0.4370, +1.2723, -0.4281, +0.1067, -0.4500, +0.1316, -0.0157, +0.2594, +0.2008, +0.6025, -0.4294, -0.3636, +0.2527, +0.3082, +0.5835, -0.3054, +0.4964, -0.2851, -0.5012, +0.4603, -0.1284, -0.2541, -0.0003, +0.2348, -0.2761, -0.0290, +0.8227, -0.2745, -0.1688, -0.9185, +0.1335, -0.3643, +0.3422, +0.2658, -0.8093, +0.2330, -0.1960, -0.8210, +0.1232, +0.0373, +0.1446, +1.0413, +0.2273, +0.5281, -0.7772, -0.2631, -0.4564, -0.4637, -0.0981, +0.1672, -0.1195, +0.0188, +0.6732, -0.1072, -0.7062, +0.9377, -0.5102, -0.5040, -0.9112, -0.6700, +1.1924, +0.2796, +0.3873, +0.0781, -0.3688, +0.0538, -0.3351, +0.1005, +0.3402, -0.3606, -0.6008, +0.4341, -0.2925, -0.4813, -0.1938, +0.5105, -0.3353, +0.4672, +0.1100, +0.0890, -0.2406, +0.6185, +0.9304, -0.3935, -0.6118, -0.1738, +0.1222, -0.4025, -0.0131, -0.5794, -0.7398, +0.1105, -0.4779, -0.1421, +0.6633, +0.4357, +0.0867, -0.2059, -0.4919, +0.8041, +0.1223, +0.4837, -0.1059, +0.2320, -0.0329, +0.3966, -0.2764, -0.6238, -0.3787, +0.0351, -1.1774, +0.5426, +0.3138, -0.9806, -0.1496, +0.2162, +0.0410, -0.7537, +0.7457, -0.4723, -1.1197, +0.0742, +1.2435, -0.5149, +0.0221, -0.3346, +0.0406, -0.6631, +0.1128, -0.2434, -0.4236, -0.2255, -0.9411, -0.6382, -0.1490, +0.8469, -0.3645, -0.3090, +0.1065, -0.1199, +0.2060, +0.1316, +0.0660, +0.7312, -0.5926, -0.4426, -0.6738, -0.2164, +0.7200, +0.0971, +0.2552, -0.2571, +0.1693, +0.2351, +0.4285, -0.2992, +0.3694, +0.0854, -0.1200, +0.0291, +0.5083, -0.1639, +0.1716, +1.0189, -0.3240, +0.2631, +0.4694, -0.0885, -0.6552, -0.3385, +0.9570, -0.2273, -0.0390, -0.0266, -0.2780, +0.5496, -0.0146, -0.8079, -0.0177, +0.5358, +0.0008, -0.0761, +0.2893, -0.4509, +0.0660, -0.1366, +0.0752, -0.1550, -0.0840, +0.2408, +0.0930, -0.2096, +0.3962, +0.1740, +0.1414, +0.1386, +0.0056], -[ -0.2415, +0.1065, -0.5206, +0.3066, +0.5681, -0.0082, -0.2495, -0.4414, -0.1863, +0.1132, +0.1377, -0.0201, -0.0823, -0.0986, +0.4885, -0.1097, -0.2442, +0.1876, -0.3897, +0.2399, +0.0847, +0.4233, +0.1001, -0.3832, -0.4560, +0.6036, -0.0581, +0.6051, +0.6841, +0.0576, -0.4205, +0.0555, -0.2827, -0.2892, +0.0163, -0.5636, +0.1782, +0.0629, +0.1701, +0.2109, +0.0076, -0.0707, -0.2594, +0.0187, -0.2004, +0.6566, -0.3320, -0.3255, +0.1663, -0.4202, +0.2174, -0.3798, -0.0537, +0.2822, -0.1537, -0.3199, -0.2836, -0.5623, -0.2580, +0.2278, -0.2261, +0.1014, -0.8600, -0.5182, +0.4565, -0.1091, -0.2689, +0.6797, +0.5741, -0.5601, -0.6753, -0.0657, -0.2769, +0.3212, +0.1864, -0.1118, +0.1580, +0.0138, +0.0194, -0.0554, +0.3178, -0.0483, -0.7828, -0.0787, -0.0069, -0.0371, +0.3109, +0.0030, +0.9447, +0.1884, +0.4187, +0.8430, -0.0930, +0.1044, +0.1846, +0.0834, +0.7144, +0.0770, -0.0809, -0.1111, -0.2372, +0.2867, -0.1458, +0.4069, -0.1024, -0.2727, -0.2072, +0.0736, -0.2441, -0.2900, -0.0369, -0.0850, +0.0994, -0.4629, +0.0066, +0.2925, +0.3509, -0.1414, +0.4306, +0.4099, +0.4451, +0.2391, +0.2530, -0.0733, +0.0975, -0.1642, +0.0315, +0.7273, +0.5036, +0.4079, +0.0974, +0.1075, +0.3826, -0.0514, +0.1841, +0.5808, -0.4693, +0.5423, +0.5123, +0.4528, -0.4310, +0.4258, +0.1411, +0.1213, -0.5316, -0.3007, -0.1728, +0.0660, -0.5302, +0.4148, +0.1185, +0.5968, +0.0659, +0.1466, -0.1219, +0.2365, -0.1887, -0.3135, -0.0760, -0.1013, +0.8283, +0.0221, +0.4434, +0.1071, -0.2165, +0.3955, +0.4306, +0.7345, -0.6858, -0.1754, +0.0768, +0.1390, +0.2390, -0.4264, -0.5030, +0.3050, -0.2825, -0.7590, +0.1193, +0.0338, -0.2255, +0.0516, -0.1279, -0.1501, +0.1387, -0.1668, +0.0861, -0.0180, +0.0352, -0.7139, -0.0986, +0.9232, +0.1876, +0.2495, +0.8037, -0.0845, +0.1649, -0.3165, -0.0237, -0.0819, -0.3252, -0.1793, -0.4914, -0.1780, -0.0006, -0.0752, -0.0735, -0.0078, -0.2100, +0.4135, -0.2348, +0.3070, -0.2592, -0.5930, +0.3142, -0.1048, -0.1538, -0.4375, +0.0596, +0.0724, -0.7239, +0.2988, -0.2135, -0.0310, +0.1044, +0.3951, +0.2955, +0.4671, +0.2343, -0.1217, -0.0836, -0.1988, +0.1734, +0.0705, +0.5459, -0.1483, -0.0097, -0.7283, +0.5355, +0.2914, -0.1497, +0.1678, -0.0457, -0.3227, +0.3963, -0.1789, +0.0249, -0.7398, +0.0250, -0.2262, -0.0673, -0.0899, +0.6606, -0.0451, -0.2004, -0.1319], -[ -0.0500, +0.0201, +0.2200, +0.5603, +0.4889, +0.4312, +0.0041, -0.2330, +0.1253, -0.2092, +0.0913, -0.0846, +0.1070, -0.2071, +0.0843, +0.2001, -0.1772, +0.0573, -0.0899, -0.0890, -0.2217, +0.2841, -0.0065, -0.0749, -0.0739, -0.1826, -0.1807, +0.1527, -0.3101, +0.0937, -0.5230, -0.1516, -0.4944, -0.1745, -0.1715, +0.2109, +0.2238, -0.3367, +0.4248, -0.2873, +0.0317, -0.0673, +0.0791, +0.0110, +0.0594, +0.1968, -0.2707, +0.0249, -0.4180, -0.1876, +0.3874, +0.1052, -0.4346, +0.0900, +0.0095, +0.0071, +0.0888, +0.1198, -0.2222, +0.3392, +0.2035, -0.1901, -0.1406, +0.0720, -0.0685, -0.0273, +0.0375, +0.6229, -0.1418, -0.0837, -0.4293, +0.2077, -0.6615, -0.1513, +0.1024, +0.1013, -0.1645, +0.2105, -0.2343, +0.5000, -0.0226, +0.0185, +0.0582, +0.2846, -0.1893, +0.0429, +0.3211, -0.1196, +0.0920, +0.4708, +0.1285, +0.0315, -0.7094, +0.4056, -0.1047, -0.2182, +0.7350, -0.2082, -0.0790, +0.0711, -0.0572, -0.1449, -0.8983, +0.1332, -0.0200, -0.1063, -0.1941, +0.0661, -0.2098, -0.3816, +0.1085, -0.2162, -0.0775, +0.0859, -0.0538, +0.4023, +0.1622, +0.1587, +0.2944, +0.2879, +0.1341, +0.2670, +0.0836, +0.4633, +0.0506, -0.1547, +0.5092, -0.0106, -0.1351, -0.1437, +0.1643, -0.0071, +0.1614, -0.3678, -0.0158, +0.0263, +0.1681, +0.0422, -0.1037, +0.3023, +0.6214, -0.0786, -0.0034, +0.0895, +0.2490, +0.1304, +0.1919, -0.2407, -0.4449, +0.5784, +0.0891, -0.0195, +0.2355, +0.4424, +0.1584, +0.0913, -0.2347, -0.4431, -0.1656, +0.2710, -0.2128, +0.5364, -0.1570, +0.1993, +0.1234, +0.1000, -0.4787, -0.1462, +0.1240, +0.3465, -0.3405, -0.2794, -0.2788, -0.2250, +0.1855, +0.1665, +0.1396, +0.0324, -0.0917, +0.3963, +0.0459, -0.1072, -0.4077, +0.0964, -0.1732, -0.2186, -0.2842, +0.3115, -0.1788, -0.0731, -0.0954, +0.0823, -0.0306, +0.6883, +0.3296, -0.0447, -0.0906, -0.1874, +0.0965, -0.2047, -0.1136, +0.0491, +0.0529, -0.0669, -0.0811, +0.1931, +0.1707, +0.0269, +0.0813, +0.4582, +0.4052, -0.3405, -0.1633, -0.2267, -0.3100, -0.0194, +0.3084, +0.0344, -0.2170, +0.0677, -0.5063, -0.0597, -0.2713, +0.0256, +0.3242, +0.0253, -0.5217, +0.1907, -0.2070, -0.0805, +0.0560, -0.1039, +0.1828, +0.0812, +0.0107, -0.2384, -0.1010, -0.3025, +0.4604, -0.0253, +0.0226, -0.1640, +0.0975, +0.3681, +0.2492, -0.3967, +0.2737, +0.3815, +0.4805, -0.1862, +0.4726, +0.0116, +0.0644, +0.0982, -0.0056, -0.2452], -[ -0.5048, +0.1979, +0.1604, +0.3209, -0.3435, -0.1966, -0.0485, -0.2139, -0.0385, -0.3851, +0.1258, +0.1846, +0.0693, -0.8133, -0.0813, +0.4117, -0.1993, -0.0005, +0.0985, +0.0706, -0.7681, +0.0430, +0.0615, +0.1776, -0.3623, -0.9195, -0.3972, +0.4420, -0.2387, -0.4493, +0.1046, -0.1598, +0.7578, -0.3409, -0.2153, -0.4379, -0.0330, +0.0200, -0.2066, -0.3161, +0.2977, -0.3459, +0.1867, -0.0195, +0.3669, +0.3121, -0.1667, -0.1621, -0.1499, +0.4061, +0.2379, -0.0769, +0.0142, -0.3961, +0.0868, -0.2897, +0.0778, +0.4727, +0.0157, +0.0501, -0.1486, +0.0107, -0.2401, +0.1158, -0.0156, +0.0491, -0.2308, -0.9154, +0.2524, +0.0632, -0.4145, -0.2821, -0.2121, +0.0534, -0.1819, -0.0964, -0.9630, -0.2599, -0.0005, +0.0402, +0.0245, +0.1139, +0.2414, -0.1579, -0.0529, -0.0572, +0.0617, -0.1536, +0.2210, +0.1893, -0.4136, +0.0432, -0.5508, -0.2591, -0.0822, +0.1294, -0.2159, -0.2683, -0.0126, -0.3578, -0.2403, -0.2452, +0.0547, -1.0057, +0.0829, -0.1050, -0.1759, -0.2478, +0.0464, +0.0624, +0.1528, -0.0527, -0.7629, +0.0469, -0.3308, -0.1309, +0.3670, -0.0492, -0.2194, -0.1321, -0.0741, -0.5204, +0.2219, -0.6602, -0.0216, +0.1985, -1.6490, +0.5864, -0.2709, +0.0445, -0.0452, +0.0992, -0.4048, -0.2099, -0.2739, -0.0061, -0.5160, +0.2722, +0.1891, -0.2192, -0.9821, +0.0386, +0.1434, -0.6936, +0.1005, -0.1419, -0.0359, -0.1897, -0.6812, -0.4223, -0.1035, -0.0804, -0.1451, -0.9374, +0.0470, +0.4931, +0.2413, -0.5134, -0.3350, -0.3683, -0.5421, +0.6342, -0.2455, +0.1037, -0.1434, +0.1794, -0.1148, -0.2816, -0.2966, -0.0169, -0.0493, -0.0762, -0.5390, +0.4375, -0.4136, -0.1513, -0.0513, +0.3971, -0.6983, -0.3680, +0.2820, +0.2484, -0.3648, -0.1645, -0.1386, -0.0739, +0.1347, +0.0904, -0.0699, -0.2232, +0.1011, +0.1714, -0.2503, -0.0269, +0.0361, -0.2403, -0.1465, -0.1891, -0.2474, +0.1300, -0.0880, +0.3430, -0.0812, -0.7897, -0.4658, -0.2114, -0.0812, +0.1643, -0.3813, -0.2858, +0.1899, +0.2262, +0.1294, -0.3664, -0.1059, +0.1114, -0.0417, +0.1428, +0.3150, -0.2092, -0.0091, -0.3906, -0.0383, -0.9786, +0.2575, -0.2875, -0.4382, -0.0164, -0.4540, -0.1205, +0.0216, +0.1849, +0.1968, -0.2139, -0.0317, -0.1595, -0.1051, -0.1250, +0.2411, +0.1144, +0.1520, +0.3229, -0.2927, -0.4214, -0.1321, +0.2334, +0.6025, -0.2540, +0.2149, -0.0068, -0.1874, -0.0092, +0.1200, +0.2546, -0.3286, +0.0388], -[ +0.2285, -0.0133, -0.0440, -0.0241, -0.3383, +0.1634, +0.1904, -0.2013, +0.0054, -0.0680, +0.4299, -0.1199, +0.0178, +0.0364, +0.1448, -0.5809, -0.4667, +0.1614, -0.2621, -0.2967, +0.3766, -0.3347, -0.5714, +0.0250, -0.2630, -0.4899, +0.3631, -0.6484, -0.1700, +0.0551, -0.4694, +0.2452, +0.3223, -0.0612, +0.0224, -0.7712, +0.1324, -0.0801, +0.4784, -0.9424, +0.7013, +0.2402, +0.2879, -0.0407, -0.7480, -0.0055, -0.0745, +0.1156, +0.5447, +0.0189, -0.8012, -0.0843, -0.4456, -0.3778, -0.0280, -0.1491, -0.3436, +0.0732, -0.0908, +0.4517, -0.5927, +0.1249, -0.7098, +0.4317, -0.0903, -0.2740, +0.0113, +0.0971, +0.2029, -0.3156, -0.6798, -0.0936, -0.5162, -0.3005, -0.1563, -0.2819, -0.5503, -1.0751, -0.0489, -0.2896, +0.0226, -0.3391, +0.0593, -0.0843, +0.2361, -0.2941, +0.0685, -0.0014, +0.2299, +0.1018, -0.3212, -0.5439, -0.5183, -0.0075, -0.2668, +0.0576, +0.2550, -0.3894, +0.1594, +0.0906, +0.1089, +0.0873, +0.0853, +0.3528, -0.5856, +0.2337, +0.0006, +0.0709, -0.2085, -0.2668, -0.2178, -0.0149, -0.1304, +0.0251, -0.1894, +0.3391, +0.0942, -1.0055, -0.2928, +0.2527, -0.1069, -0.2509, -0.2044, -0.1656, +0.0903, +0.1350, +0.3083, +0.0976, +0.2402, +0.0975, -0.2846, -0.3881, -0.3987, +0.1248, -0.7409, -0.5247, +0.0170, -0.2432, +0.1110, -0.1539, -0.4360, -0.0456, +0.1171, -0.4630, -0.5192, +0.2163, -0.6581, -0.4131, -0.3149, -0.7525, -0.0643, +0.2970, -0.1356, -0.9385, -0.3808, -0.0808, -0.1254, -0.0231, +0.0083, +0.0910, +0.3546, -0.1107, -0.3656, -0.2364, +0.1597, -0.3783, +0.1942, -0.3663, +0.4880, +0.0484, -0.5310, -0.0092, +0.0171, -0.8586, -0.1074, -0.0645, -0.2338, -0.7061, +0.0910, -0.9381, +0.0870, -0.5278, -0.2290, +0.1364, +0.0683, -0.0899, -0.7834, -0.3896, +0.2714, -0.2564, -0.0880, -0.1296, +0.0914, -0.5534, +0.2881, +0.2919, +0.4865, -0.0751, +0.1870, -0.4969, +0.1000, +0.1368, +0.3322, +0.0143, -0.3180, -0.5525, +0.3866, -0.4616, +0.3566, -0.0091, -0.2078, -1.2333, -0.3559, -0.3737, -0.0285, +0.2888, -0.5362, -0.6183, +0.1945, +0.2262, +0.3321, -0.0331, -0.0147, +0.2446, -0.2910, +0.2063, -0.0293, +0.0472, -0.6015, +0.2605, -0.2228, -0.1771, +0.3462, +0.2338, -0.0354, +0.1978, -0.1953, +0.0256, -0.1191, -0.1255, +0.1551, -0.4887, -0.3437, +0.0557, +0.2325, -0.0482, -0.8360, +0.0613, -0.2352, +0.0795, -0.3470, -0.2705, -0.0057, -0.4712, -0.1676, -0.0408] -]) - -weights_dense1_b = np.array([ -0.3713, -0.4788, -0.4526, -0.2965, -0.1936, -0.1720, -0.3474, -0.2552, -0.3469, -0.3368, -0.1374, -0.1110, -0.3759, -0.3767, -0.5245, -0.3949, -0.1683, -0.3501, -0.5974, +0.0300, -0.5513, -0.3761, -0.1666, -0.3806, -0.3535, -0.1429, +0.0486, -0.2078, -0.3799, -0.2918, -0.3389, -0.1376, -0.4651, -0.1095, -0.4499, -0.5921, -0.3631, -0.1290, -0.4742, -0.4344, -0.5803, -0.2159, -0.4132, -0.2673, -0.3997, -0.0717, -0.4366, -0.3366, -0.3779, -0.3170, -0.2478, -0.3427, -0.2311, -0.1328, -0.7694, -0.3844, -0.2211, -0.3890, -0.7315, -0.5018, -0.4067, -0.2856, -0.3175, -0.4480, -0.4431, -0.2333, +0.0410, -0.1769, -0.4686, -0.5514, -0.4612, -0.0265, -0.2324, -0.1453, -0.2873, -0.4045, -0.1165, -0.5289, -0.2202, -0.6786, -0.1169, -0.0682, -0.3709, -0.4886, -0.2185, -0.3438, -0.4616, -0.4155, -0.7863, -0.4401, -0.4899, -0.4117, -0.4806, -0.4097, -0.2872, -0.1828, -0.6852, -0.5156, -0.5925, -0.3390, -0.3346, -0.3234, -0.4103, -0.5586, -0.3492, -0.3954, -0.3616, -0.4412, +0.1251, -0.4427, -0.4572, -0.0355, -0.4994, -0.2568, -0.2854, -0.6416, -0.2169, -0.3256, -0.1698, -0.2834, -0.3301, -0.2653, +0.1410, -0.2173, +0.0354, -0.2063, -0.2363, -0.4799, -0.2986, -0.4649, -0.1474, -0.4056, -0.1126, -0.4528, -0.3708, -0.3827, -0.2823, -0.0052, -0.4918, -0.3571, -0.0842, -0.3555, -0.5800, -0.1141, -0.6187, -0.4847, -0.4353, -0.6255, -0.5042, -0.1300, -0.3475, -0.5925, -0.3906, -0.5146, -0.9129, -0.4199, -0.2489, -0.2488, -0.1823, -0.3016, -0.2044, -0.2520, -0.4255, -0.1588, -0.0822, -0.2404, -0.6760, -0.3958, -0.3408, -0.5739, -0.2639, -0.2775, -0.2460, -0.5386, -0.3128, -0.2900, -0.1563, -0.1128, -0.1749, -0.4305, -0.5141, -0.3029, -0.1899, -0.0959, -0.3437, -0.3427, -0.3740, -0.3490, -0.5459, -0.5600, -0.3863, -0.3217, -0.3462, -0.2562, -0.5601, -0.3962, -0.4232, -0.4596, -0.3772, -0.5169, -0.4289, -0.5741, -0.2419, -0.2413, +0.0391, -0.3557, -0.3774, -0.1001, +0.0671, -0.0025, -0.2404, -0.3022, -0.4145, -0.3504, -0.3668, -0.4348, -0.4914, -0.4494, -0.0953, -0.4883, -0.4871, -0.5184, -0.3926, -0.3353, -0.4653, -0.2977, -0.5445, -0.4505, -0.2325, -0.0654, -0.2438, -0.4350, -0.3139, -0.0171, -0.5632, -0.2355, -0.3351, -0.4808, -0.2853, -0.4951, -0.1856, -0.3112, -0.0963, -0.4871, -0.2345, -0.1925, -0.4274, -0.2157, -0.2677, -0.2102, -0.1708, -0.1752, -0.2463, -0.2914, -0.4638, -0.5189]) - -weights_dense2_w = np.array([ -[ +0.1309, +0.2730, +0.1435, -0.3923, +0.0887, +0.4681, -0.6423, +0.1875, -0.5255, -0.0556, +0.1040, -0.1889, -0.0176, +0.3815, +0.2050, +0.0492, -0.2389, -0.0662, +0.3082, -0.5495, +0.1710, -0.0025, +0.2806, +0.4627, +0.2339, -0.0590, +0.4170, +0.1031, -0.5581, -0.1000, +0.0800, -0.1529, -0.0276, +0.2006, +0.1995, +0.1278, -0.3348, -0.3174, -0.0307, -0.5655, +0.3668, +0.6512, -0.3891, -0.0098, -0.1343, -0.1866, -0.0636, -0.3387, +0.1126, +0.2122, -0.7081, -0.5655, +0.1485, +0.2853, +0.0377, +0.1772, +0.1647, -0.0171, -0.1486, +0.2701, -0.1269, +0.1210, +0.1735, +0.3976, +0.1106, +0.1461, +0.0931, -0.2971, +0.1809, +0.0615, +0.3410, -0.0697, +0.0500, +0.0836, +0.2358, -0.2027, -0.2951, +0.0819, -0.0342, -0.1922, +0.0293, +0.3433, +0.1745, +0.1278, -0.6823, +0.0091, +0.3779, +0.1601, +0.0656, -0.1858, -0.2869, -1.0962, -0.2696, +0.3532, -0.5023, +0.1183, +0.2379, -0.5862, +0.2593, +0.0091, -0.2394, -0.1994, -0.7673, -0.3435, -0.0999, -0.2746, +0.0400, -1.0963, -0.0865, +0.1043, -0.2653, +0.0388, -0.1683, +0.2309, -0.3993, -0.3494, +0.1929, -0.3630, +0.1400, -0.7615, +0.3729, -0.3642, -0.3666, +0.2262, -0.0239, -0.0980, +0.1912, -0.0589], -[ -0.3244, +0.1046, -0.0426, -0.4231, +0.1285, +0.0115, -0.1261, -0.0987, +0.3009, -0.0023, +0.0768, +0.0289, +0.0883, -0.2893, +0.0093, -0.1669, -0.2184, +0.4288, -0.1725, -0.3192, +0.3067, -0.7564, +0.1567, +0.4224, +0.1483, -0.0220, -0.4997, -0.1471, +0.0549, -0.5065, +0.3900, -0.6215, +0.3332, -0.3486, +0.0644, +0.5107, -0.1851, +0.0115, -0.2106, +0.3512, -0.2826, +0.2605, +0.3187, -0.1287, +0.1781, -0.1271, +0.2986, -0.3474, +0.0106, +0.3588, +0.5276, +0.1895, -0.0463, +0.3739, -0.4722, -0.1214, +0.3948, -0.0592, +0.2559, -0.4571, +0.1326, +0.3268, -0.4524, -0.0133, -0.1080, -0.4275, +0.6630, +0.1643, -0.5735, -0.6019, -0.0447, -0.1074, -0.1771, -0.1671, -0.0545, +0.1632, -0.3808, +0.0100, +0.0759, +0.2348, -0.4157, -0.3915, -0.4630, +0.5595, -0.4816, +0.0498, -0.5961, +0.0447, -0.3644, +0.0872, +0.1684, +0.1666, -0.5354, -0.4421, +0.0138, -0.4153, +0.1149, -0.4228, -0.3513, +0.5451, -0.2360, -0.3520, +0.0234, +0.2463, +0.2846, -0.6369, +0.4174, -0.2845, +0.3544, +0.3932, +0.2170, -0.1487, +0.0357, -0.5620, +0.4732, +0.1097, -0.0606, +0.4751, +0.4273, -0.1040, -0.3441, -0.2300, +0.3288, -0.7547, -0.4241, -0.7517, -0.4061, -0.1308], -[ +0.5419, +0.5808, -0.2195, -0.5616, -0.1575, +0.2094, -0.6895, +0.4181, +0.4817, +0.0081, -0.0834, +0.5919, -0.2896, -0.9539, -0.4137, +0.0139, -0.2773, +0.0604, -0.3535, +0.0104, -0.2610, -1.0888, +0.2111, -0.5450, -0.0390, -0.1782, +0.4212, -0.0239, +0.5375, -0.2335, +0.2457, -0.4056, -0.2416, -1.6505, +0.1066, -0.1753, -0.7350, -0.1025, +0.7490, +0.4267, +0.2321, +0.1116, -0.1088, -0.4521, +0.0593, -0.2298, -0.3003, +0.3961, -0.4415, -0.9168, +0.6307, +0.3461, +0.4136, +0.0418, +0.2279, -0.5994, -0.4449, +0.6369, -0.7532, +0.2382, +0.3329, +0.7365, -0.0999, +0.3800, -0.3193, +0.2551, -0.3477, +0.2232, -0.1802, -0.3902, -0.4246, -0.0823, +0.2329, +0.5763, -0.0588, -0.6256, -0.6194, -0.3272, -0.4273, +0.1419, -0.3721, +0.0361, -0.0520, +0.8959, +0.0390, -0.1193, -0.2870, +0.2768, -0.8885, +0.1157, +0.1355, +0.3556, -0.1198, -0.0754, +0.2596, -0.0011, +0.4672, +0.5290, +0.0377, -0.3416, -1.0361, -0.4913, -0.6930, -0.5161, -0.1940, -0.2529, +0.4709, +0.4191, +0.3067, +0.3396, -0.3269, -0.7783, -0.0302, +0.4111, -0.0772, +0.0994, -0.5082, -0.3142, -1.0401, -0.8804, -0.3305, -0.0998, +0.3585, +0.1215, +0.2393, -0.6842, +0.5678, -0.5206], -[ -0.4596, +0.6166, -0.0251, +0.1793, +0.3005, +0.1253, -0.0468, -0.1884, +0.1320, -0.4558, -0.2136, -0.8861, -0.1616, -0.2451, -0.0884, +0.2940, +0.3278, +0.4923, -0.0171, -0.3630, -0.2544, +0.3499, +0.2358, +0.2526, +0.0505, +0.3261, +0.0669, -0.1350, +0.0795, -0.4860, +0.3450, +0.4873, +0.2146, +0.2038, -0.3416, -0.1246, -0.3184, -0.1642, -1.0573, +0.5196, -0.1148, -0.2109, +0.4882, +0.0517, +0.3474, +0.1333, -0.3762, +0.0201, -0.3012, +0.3122, +0.0033, -0.0756, -0.1932, -0.4611, +0.2310, -0.0694, +0.0610, -0.1589, +0.1664, +0.4740, -0.3786, +0.2333, -0.0476, +0.2797, -0.3245, +0.1363, +0.1705, -0.6966, +0.2174, -0.2418, -0.2197, -0.9008, -0.3001, +0.1464, -0.7350, +0.0660, +0.4762, +0.2453, +0.1285, +0.3505, +0.3135, -0.6839, -0.1441, +0.0045, -0.6821, -0.1865, +0.2347, -0.4783, -0.0458, -0.0027, +0.0940, +0.0759, -0.4493, -0.3673, -0.0759, -0.3948, -0.5110, -0.5269, +0.0964, -1.2318, -0.3797, +0.2771, -0.1803, -0.2499, -0.0131, -0.4902, -0.2183, -0.5444, +0.1168, -0.0397, +0.3219, -0.0834, +0.1688, -0.0976, +0.0572, -0.6736, -0.3200, +0.8337, -0.1346, -0.5238, -0.0689, -0.1967, +0.8107, -0.5036, -0.3904, -0.5288, +0.0419, +0.2639], -[ +0.3420, +0.4117, -0.5867, -0.4044, -0.5083, -1.0896, +0.1512, +0.2258, -0.0652, -0.4607, -0.1917, -0.0486, +0.0610, -0.9390, -0.4978, +0.1927, -0.2375, +0.1562, +0.2119, -0.3142, -0.6581, +0.0064, +0.1231, -0.3126, -0.2321, -0.1819, -0.2125, -0.2056, -0.7489, -0.1650, +0.3754, +0.4468, -0.3924, +0.3372, -0.4931, +0.4934, +0.3006, -0.0904, +0.4680, -1.3403, +0.0400, +0.1913, -0.8295, -0.1657, +0.1162, -0.3732, -1.2773, -0.2143, -0.3383, +0.0590, -0.4245, +0.2004, +0.4204, -0.1529, +0.1828, +0.5063, -0.3069, -0.1994, -0.2278, -0.0943, +0.2269, +0.2995, -0.3227, -0.2530, -0.7700, -0.1769, -0.2520, -0.1769, -0.8369, +0.0377, -0.4356, +0.5182, -0.0483, +0.1753, -0.1668, -0.3134, +0.1532, -1.0162, -0.3415, -0.1562, +0.1588, +0.7559, -0.5768, +0.5563, -0.4250, -0.8800, -0.1942, -0.0843, -0.1729, +0.2177, +0.6179, -0.4176, +0.5318, +0.0070, +0.5417, +0.0639, -0.8426, -0.2772, -0.1174, -1.1738, +0.1236, +0.1194, -0.0370, +0.1520, -0.3218, +0.0726, -0.1263, +0.8571, -0.2005, -0.0614, +0.4846, +0.1098, -0.0089, +0.1799, -0.2991, -0.0281, +0.4477, -0.6638, -0.4195, +0.7240, +0.1112, +0.5394, +0.0580, +0.1666, -0.2974, -0.4270, +0.5997, -0.4577], -[ -0.5648, -0.4543, -0.1942, -0.0994, +0.0583, -0.4404, -0.5312, -0.0398, -0.1629, +0.5016, -0.1000, -0.2016, -0.1142, -0.2708, +0.5178, -0.1922, -0.2755, +0.7845, +0.0547, +0.3507, -0.6343, +0.3465, -0.0972, -0.2732, +0.3062, -0.1430, +0.2630, +0.1001, +0.0617, +0.0162, -1.1155, -0.9962, +0.2287, -0.4021, -0.1036, -0.0308, +0.1040, -0.1933, -0.5625, -0.3687, -0.8353, +0.4419, +0.0700, -0.6269, +0.0133, +0.2189, +0.3786, +0.1415, -0.1338, +0.2302, -0.2331, -0.1707, -0.5308, +0.3954, -0.0481, +0.1477, -0.0631, +0.4122, +0.3206, -0.8517, +0.0347, -0.3348, -0.0611, +0.0207, +0.2722, +0.1267, +0.1578, -0.3015, +0.3463, +0.1944, -0.3314, -0.4248, +0.5646, +0.0827, -0.0308, +0.6322, +0.0302, -0.1987, +0.1547, -0.2252, +0.1905, -0.1224, +0.0840, -0.2605, -0.0279, +0.0624, +0.2194, -0.3966, -0.0388, -0.2636, -0.5039, -0.1813, -0.0351, -0.0350, -0.1828, -0.1325, -0.4657, -0.1143, +0.0662, +0.0319, -0.2917, +0.0095, -0.3207, -0.0251, -0.0934, -0.0360, +0.0009, -0.6516, -0.0838, +0.1931, -0.9668, -0.0654, -0.0526, -0.2687, +0.0356, -0.1639, +0.1190, -0.3795, +0.3415, -0.4014, +0.5700, +0.0513, -0.9803, -0.1231, -0.0773, +0.6326, +0.0822, +0.1875], -[ +0.0985, +0.4481, +0.0367, -0.4633, +0.5002, +0.0045, +0.5424, -0.0821, +0.6014, -0.1809, +0.0029, +0.3002, +0.3312, +0.4019, -0.5337, -0.4694, +0.4937, +0.3051, -0.0212, +0.0181, +0.5739, +0.4609, -1.0712, +0.0675, -0.3467, +0.7995, -0.5601, -0.1664, -0.1984, -0.0770, +0.2550, -0.4196, +0.1177, +0.1523, -0.0590, -0.3781, +0.7106, -0.0544, -0.1364, -0.4804, -0.0624, -0.3492, +0.1690, +0.0728, +0.3869, -0.1920, -0.1060, -0.0271, -0.2772, -1.2200, +0.6492, +0.0073, -0.0760, +0.0279, +0.5523, +0.2291, +0.2806, +0.2059, -0.0608, +0.2796, -0.6153, -0.3325, +0.2078, -0.5572, -0.3370, -0.3976, -0.9962, +0.0603, -0.3849, +0.1727, +0.2125, -0.3847, +0.1171, +0.8141, -0.3521, -0.2520, -0.1995, -0.4341, -0.3548, +0.2916, -0.1112, -0.4162, -0.5919, -0.0904, +0.5039, -0.3449, +0.0101, -0.0443, -0.1422, -0.3986, -0.2732, -0.0152, -0.3509, -0.0495, -0.5457, -0.1479, +0.0667, +0.5919, -0.1762, +0.2328, -0.0037, -0.2271, +0.1141, -0.3309, -0.0612, -0.0190, -0.5972, +0.2833, -0.4950, +0.4321, +0.2773, -0.1366, -0.7582, -0.3121, -0.3749, +0.1560, +0.3226, -0.2079, -0.2024, -0.6429, +0.0986, -0.3156, -0.0972, -0.3880, +0.0988, -1.0620, -0.1603, +0.2300], -[ -0.1763, -0.4717, -0.0713, -0.0455, +0.2755, +0.0511, -0.1140, -0.0526, -0.1527, -0.0071, -0.1954, +0.3063, +0.0046, +0.1747, +0.2527, -0.6375, -0.4579, -0.2845, -0.2482, -0.0680, +0.4254, +0.1211, -0.0646, +0.4925, -0.1594, -0.0097, -0.0159, +0.1891, -0.2228, -0.2100, +0.5752, -0.8215, -0.1146, +0.0685, -0.2468, -0.1976, -0.5593, -0.3311, +0.3324, +0.2356, +0.5698, -0.3220, -0.6496, -0.0553, +0.0755, -0.0324, +0.0285, +0.2009, -0.0663, -0.2994, +0.0670, +0.4372, +0.4368, -0.2580, +0.1334, -0.4771, +0.1190, -0.4553, -0.1025, +0.2878, +0.0992, -0.2115, -0.0767, -0.0312, -0.0887, -0.2143, -0.2452, +0.3070, +0.1903, -0.2037, +0.3313, +0.3640, +0.0503, -0.2665, -0.0162, +0.0207, +0.2081, +0.4682, -0.0678, +0.3250, -0.0643, +0.2101, +0.3820, +0.3275, -0.3437, +0.1274, -0.3075, +0.2850, -0.2531, -0.5440, -0.5246, -0.2077, -0.2808, -0.2520, +0.2873, +0.3106, +0.4995, +0.1966, -0.1111, +0.4181, +0.2789, +0.2909, -0.0482, -0.1104, +0.2429, -0.1468, +0.1378, -0.1685, +0.3237, -0.1249, +0.3596, -0.2123, +0.7264, +0.3474, -0.0698, -0.7905, +0.1515, -0.3318, +0.0814, +0.1666, +0.0368, +0.1489, -0.2513, +0.5057, -0.3607, +0.1323, +0.2098, -0.0041], -[ -0.5217, -0.2503, -0.1291, -0.1394, -0.8378, -0.1076, +0.0234, -0.2739, -0.0608, +0.3798, -0.0218, -0.2495, -0.3152, -0.0926, +0.2109, -0.1850, +0.0142, -0.0658, +0.2259, -0.1338, -0.4078, +0.0168, +0.0875, +0.2906, -0.3122, -0.0825, -0.3828, -0.4191, -0.1282, +0.2256, -0.2111, +0.0173, +0.0664, -0.0026, +0.0656, -0.3463, +0.1293, -0.1367, -0.2307, -0.1295, -0.2714, -0.1459, -0.2409, -0.1068, +0.2573, -0.0475, +0.0271, -0.3313, +0.2347, -0.1257, -0.0483, +0.2717, +0.2936, -0.6721, -0.2031, +0.1350, -0.0634, +0.1078, -0.8908, +0.0871, -0.2064, -0.3220, +0.2292, -0.0563, -0.5635, -0.2064, -0.3756, -0.2126, -0.3654, +0.0215, +0.1109, +0.0279, -0.1721, +0.3895, +0.2279, +0.2151, +0.2419, +0.0703, -0.1400, +0.1617, -0.0345, +0.0285, +0.1589, +0.1366, -0.0400, +0.0301, +0.0461, -0.0903, -0.4922, +0.2867, +0.0415, +0.2635, -0.0573, +0.0477, -0.2414, +0.2806, +0.2017, +0.7036, -0.2485, -0.6028, -0.5980, -0.2190, +0.1972, -0.0226, +0.0284, +0.9650, +0.5248, -0.0987, +0.2477, +0.3129, -0.4038, -0.5221, +0.1281, -0.4456, -0.0681, +0.1196, +0.1005, -0.4034, -0.5248, -0.0119, +0.3355, +0.0586, -0.4485, +0.2505, +0.4698, -0.0659, -0.1735, -0.5064], -[ -0.1004, -0.1704, -0.1275, -0.0716, -0.3429, -0.1792, -0.0732, -0.2185, +0.3692, +0.7743, +0.3512, -0.3249, -0.3552, -0.4377, -0.1852, -0.4752, -0.3125, +0.5199, +0.0523, +0.2129, -0.3409, +0.4293, +0.5712, -0.6715, +0.2859, +0.0943, +0.2706, -0.3845, -0.0665, +0.2089, -0.4558, +0.5978, -0.6548, -0.3449, -0.3828, -0.2305, -0.8559, -0.4636, -0.1798, -0.3744, -0.1241, +0.3623, -0.3642, +0.4605, -0.1661, +0.2530, -0.6434, -0.2266, -0.3251, +0.5389, -0.0782, +0.4778, -1.0506, +0.6809, +0.1652, -0.6526, -0.7235, -0.0203, -0.0541, -0.3442, -0.0829, -0.2638, -0.1379, +0.7595, -0.6752, +0.0603, -0.2202, +0.1557, -0.6625, +0.2742, +0.0616, -0.1555, -0.4405, +0.4885, -0.4993, +0.1059, -0.1822, -0.2569, -0.1382, -0.5250, -0.4150, -0.8793, +0.0285, +0.2114, -0.1438, -0.2349, -0.5391, +0.4566, -0.0100, +0.2998, -0.0077, -0.2986, -0.1825, +0.3451, +0.0004, -0.2078, -0.5734, +0.8329, +0.0129, +0.4278, +0.3314, -0.0915, +0.1792, +0.1472, +0.6226, -0.4307, -0.0987, +0.0620, -0.2121, -0.3301, +0.4437, -0.7396, -0.1563, +0.2854, +0.2171, -0.2565, -0.0220, -0.5923, -0.0852, +0.0154, +0.3458, -0.3429, +0.2041, +0.0581, -0.2696, +0.1512, -1.0560, -0.2622], -[ +0.3138, +0.4436, -0.0186, +0.4425, -0.1347, +0.2397, +0.3246, -0.1744, +0.4154, +0.2187, -0.1062, -0.7680, +0.0519, +0.3077, +0.2102, +0.2895, -0.0092, +0.0784, +0.4023, -0.4287, -0.4564, -0.5362, +0.2021, +0.0509, +0.1420, +0.1182, -0.4085, -0.1744, +0.1278, -0.3088, +0.1162, -0.6243, +0.2084, -0.4742, -0.0188, -0.1711, +0.1900, +0.3033, +0.2039, -0.7345, +0.2061, +0.2517, -0.1877, -0.4646, +0.0601, -0.2558, +0.9087, +0.2655, +0.0271, -0.1256, +0.0797, +0.2620, -0.1783, -0.2400, +0.3100, +0.5222, -0.1161, -0.0991, -0.2572, -0.7608, +0.0434, -0.5345, -0.0539, -0.0340, -0.2661, -0.2541, +0.0580, +0.2763, -0.0001, +0.0809, +0.1649, +0.4508, -0.6238, +0.1092, +0.4908, -0.0988, +0.1486, -0.0746, -0.9439, -0.1571, -0.2354, +0.0775, -0.0000, -0.2685, -0.4635, -0.9173, -0.2752, +0.2386, -0.2370, +0.1324, -0.1737, +0.1589, +0.0972, +0.1044, -0.0677, +0.1186, +0.0163, +0.0230, -0.0118, -0.4851, +0.2421, +0.1673, -0.1801, +0.0574, -0.1893, -0.6528, +0.1827, +0.1819, -0.2946, +0.2511, -0.4922, -0.2306, -0.3372, -0.0290, -0.1859, -0.1506, -0.1128, -0.0897, +0.0010, -0.0895, +0.4029, +0.0018, -0.3570, -0.1083, -0.4098, +0.1223, -0.2148, -0.3584], -[ -0.1356, -0.4420, -0.1124, +0.3343, +0.2886, +0.1542, -0.2456, +0.4370, +0.2492, -0.1863, +0.3351, +0.1650, +0.0977, +0.3519, +0.2095, -0.1977, +0.2530, +0.0380, +0.1347, +0.0388, -0.2902, -0.1697, +0.2252, +0.2008, +0.2833, +0.0586, -0.5553, -0.3724, -0.0353, +0.1388, -0.0315, +0.0277, -0.4771, -0.3867, +0.1433, -0.1695, +0.0543, -0.8275, -0.3685, -0.1230, -0.2667, +0.1833, +0.0068, +0.3484, -0.1374, +0.2630, -0.0859, -0.5926, +0.0020, -0.4778, +0.4458, +0.1247, -0.0150, -0.4637, +0.1351, +0.4291, -0.0943, +0.0126, +0.0430, -0.2758, -0.6571, -0.0036, -0.1901, -0.0523, +0.0248, -0.2646, +0.2579, -0.0145, -0.3492, +0.1947, +0.3359, +0.2634, -0.1125, -0.0351, -0.1312, +0.3670, -0.1873, +0.1412, -0.4220, -0.2275, +0.4989, -0.1583, -1.4232, -0.5669, -0.1099, +0.4718, -0.0129, +0.0327, +0.4943, +0.4495, -0.0087, +0.1777, +0.1495, +0.1147, -0.1342, +0.0172, +0.1147, -0.1442, +0.0699, +0.0968, -0.3842, -0.0313, -0.3188, +0.0937, +0.1738, -0.4956, -0.2745, -0.2379, +0.1733, -0.3323, -0.1613, -0.0499, -0.1074, +0.1657, +0.1690, +0.4316, -2.2415, +0.4016, +0.1376, -0.0869, -0.0357, +0.0611, +0.2333, +0.2155, +0.0353, -0.2754, -0.6560, +0.4264], -[ -0.1704, -0.2443, -0.2530, -0.1938, -0.3202, +0.3183, -0.0317, +0.2582, -0.2962, +0.0763, -0.3161, -0.6285, -0.0775, +0.0909, +0.1388, +0.0471, -0.0736, +0.0789, +0.3284, +0.1749, -0.1376, +0.2299, -0.3387, +0.3402, -0.2224, +0.2886, +0.0713, -0.4028, +0.2689, -0.5498, +0.1298, -0.0313, +0.1212, -0.1302, -0.0602, +0.1761, -0.0197, +0.3846, +0.2435, +0.0268, -0.4031, -0.3267, +0.1145, +0.0954, +0.0796, -0.8677, -0.2068, +0.3928, +0.2509, -0.3119, +0.0199, -0.2481, +0.2101, -0.3536, -0.3899, -0.5391, +0.0235, -0.2998, +0.0789, +0.1275, +0.3546, +0.4701, -0.1744, +0.2102, -0.1308, -0.5635, -0.3180, -0.6144, +0.1890, +0.1711, -0.0504, -0.7181, +0.3701, +0.0463, +0.2817, +0.0666, -0.2173, +0.4473, +0.2525, -0.5263, -0.1548, -0.5909, +0.1094, +0.0038, +0.3880, -0.1590, -0.0415, -0.4432, -0.1424, -0.1081, -0.0443, +0.5483, -0.0716, +0.0530, +0.1046, -0.0180, +0.1818, +0.0827, +0.4060, -0.0466, +0.1597, -0.1225, +0.2677, -0.5297, -0.2594, -0.1236, +0.5221, -0.0934, -0.0053, -0.1556, +0.1376, -0.2119, +0.3049, +0.0464, +0.5018, -0.2095, -0.1435, +0.4347, -0.0640, +0.0956, -0.3313, -0.0783, -0.9984, -0.4373, -0.0419, +0.1557, +0.2946, +0.0447], -[ +0.1166, -0.0039, +0.3168, +0.0346, +0.5057, -1.0432, -0.2903, +0.0437, -0.3674, +0.2374, +0.0322, -0.2979, -0.3948, +0.1320, -0.1404, -0.0875, -0.4272, -0.4309, -0.3979, +0.2170, +0.0940, -0.1927, +0.4593, -0.2601, +0.0241, +1.1230, +0.0906, +0.0768, -0.7515, +0.1961, -0.6631, +0.0590, -0.1754, +0.4043, +0.4112, +0.2213, -0.5738, +0.3411, -0.5950, +0.2522, -0.8348, +0.0104, +0.1008, +0.0476, -0.3820, +0.4973, +0.5884, +0.0562, +0.1112, +0.3902, -0.2024, -0.8135, -0.4498, +0.2883, -0.0764, +0.2123, +0.0347, +0.0634, +0.0160, +0.7268, +0.3368, -0.5740, +0.1504, +0.5271, +0.1300, -0.4758, -0.1935, -0.1265, +0.0789, +0.5796, -0.5409, +0.6510, -0.2533, -0.0750, +0.2357, -0.6897, -0.1563, +0.0085, +0.0825, -0.9905, -0.1174, -0.5534, -0.0667, -0.0201, -0.1808, +0.1230, -0.0628, -0.1920, +0.0508, -0.1119, -0.3717, -0.6521, +0.0519, -0.1973, -0.2503, +0.2883, -0.4791, +0.5094, -0.2721, -0.2463, +0.3619, -0.0661, -0.4284, -0.1325, -0.0474, -0.0363, +0.6537, -0.1409, -0.1181, +0.1482, +0.1090, -0.4995, -0.1092, +0.1980, +0.4372, +0.2138, +0.1605, +0.0564, +0.0831, -0.1553, -0.1772, +0.1466, -0.3342, -0.7182, -0.0644, -0.1024, +0.3124, +0.3535], -[ -0.1788, -0.4634, -0.7614, +0.0422, -0.0646, +0.0609, -1.1071, -0.1673, -0.0494, -1.3488, -1.1903, +0.2354, -0.2269, +0.0502, +0.0569, -0.0447, +0.0251, +0.2215, +0.1652, +0.2879, +0.1951, -0.6574, +0.0482, +0.4698, +0.0519, -0.3523, -0.6681, -0.3981, -0.0926, +0.1817, -0.1443, -0.4952, -0.1712, -0.7569, +0.1445, +0.1357, +0.1833, -0.9658, +0.0421, -0.7660, +0.1933, -0.2643, +0.0086, +0.2932, -0.1592, -0.4297, +0.0085, -0.6574, +0.1289, -0.1058, -0.2677, +0.1728, -0.4178, -1.0237, -0.2978, +0.3771, +0.5242, -0.2046, +0.0373, +0.1338, -0.1311, +0.4408, +0.3782, +0.3131, -0.0731, -0.2418, -0.0525, -0.0954, -0.6830, +0.2873, -0.1122, +0.1494, -0.6874, +0.1588, -0.1396, -0.0591, +0.3928, -0.0004, -0.1970, +0.1165, -0.2264, +0.1626, +0.0691, -0.4061, -0.5025, +0.1770, -0.1101, -0.3160, -0.3856, -0.1503, +0.4158, +0.4088, +0.0025, -0.0230, -0.0071, -0.1109, -0.1437, +0.0960, +0.3667, +0.0433, +0.0345, -0.0817, +0.0390, -0.0947, +0.0567, -0.9986, -0.1488, -1.0860, -0.0718, -0.0736, -0.0307, +0.1175, -0.2717, +0.0525, +0.0984, -0.1949, -0.5822, -0.1267, +0.4949, +0.0261, -0.0535, +0.2509, -0.2650, -0.0750, -0.0772, -0.3822, +0.1889, -0.0484], -[ -0.2000, +0.5183, -0.6726, -0.0181, -0.0550, -0.0009, -0.1312, -0.3300, -0.2255, +0.3289, -0.0781, -0.0783, +0.0970, -0.1022, -0.4774, +0.1222, -0.0812, +0.0107, +0.0943, -0.3767, +0.2482, +0.0299, +0.0839, +0.1754, +0.0323, +0.2864, -0.2504, -0.5284, +0.4056, +0.1493, -0.2503, +0.3840, +0.2570, -0.1374, +0.0289, +0.0209, +0.1601, -0.3804, -0.4123, +0.5963, -0.5158, +0.5368, +0.0843, -0.1132, -1.8423, +0.0290, -0.1918, -0.4917, +0.0401, -0.2640, -0.2211, -0.3142, -0.1183, +0.0200, -0.4157, -1.1234, +0.0629, +0.1937, -0.0963, -0.5523, -0.1254, -0.7283, +0.2656, +0.0242, -0.0342, +0.4479, +0.0937, -0.3011, +0.0510, -0.0479, +0.1137, +0.3398, +0.2932, -0.4099, +0.1974, +0.2229, -0.1409, +0.3685, +0.4385, -0.1153, -0.0176, -0.0014, +0.0436, +0.0585, -0.8004, -0.0499, -0.0568, -0.5746, -0.2050, +0.2043, -0.4281, +0.1750, -0.1056, +0.3498, +0.4880, +0.2051, -0.2824, -1.2469, +0.1565, +0.5505, -0.0850, +0.0877, +0.1256, -0.1787, -0.4694, +0.2786, +0.1824, -0.3966, -0.1456, -0.2306, +0.6424, -0.0233, +0.0575, -0.1445, +0.3067, +0.0515, -0.4996, +0.1297, -0.0611, -0.3325, +0.6660, +0.3009, -0.6172, -0.3366, -0.4901, -0.3416, -0.1579, -0.2278], -[ -0.0326, +0.1693, +0.0947, -0.1435, +0.2978, +0.2958, +0.0854, -0.3124, -0.0373, +0.6357, -0.1957, -0.0201, -0.0629, -0.2283, +0.1538, +0.0172, +0.4956, +0.1161, -0.3295, +0.2479, -0.1205, -0.2005, -0.3431, -0.0380, +0.1143, +0.0091, +0.4214, -0.2093, +0.1229, +0.0878, +0.4220, -0.1405, +0.1052, -0.4079, +0.1360, +0.3752, -0.5710, -0.5300, +0.2155, -0.7556, +0.4376, -0.4459, -0.1633, +0.1130, +0.0340, -0.3033, -0.1379, +0.0455, +0.1621, -0.1940, -0.0546, +0.3305, +0.1078, +0.3603, -0.1270, +0.6475, -0.8141, +0.4588, -0.0622, +0.2537, +0.3952, -0.2176, -0.0066, +0.0355, -0.1827, -0.3484, -0.5077, +0.3474, -0.1789, -0.0942, -0.0468, -0.3290, -0.3674, +0.1059, +0.2535, -0.1920, +0.1169, +0.2635, +0.1763, +0.1772, -0.0573, -0.0853, -0.5129, -0.3071, +0.3367, +0.1057, -0.0908, -0.0682, +0.1298, +0.4642, -0.1638, -0.9394, -0.0025, +0.0580, -0.3791, +0.3034, -0.3016, -0.8514, -0.2828, +0.2449, +0.0329, -0.0696, -0.0457, -1.2645, +0.0777, -0.2642, -0.4949, -0.2427, -0.1709, +0.2200, -0.6388, -0.1284, -0.2011, -0.0758, +0.0564, -0.1921, +0.2798, +0.2783, +0.1095, +0.1155, -0.4156, -0.3425, -0.2688, +0.5643, -0.0166, -0.1968, +0.0972, +0.3142], -[ -0.3791, -0.9080, +0.1271, -0.0115, +0.0218, -0.0136, -0.2537, +0.1347, +0.2345, -0.3458, +0.1642, +0.1560, +0.4415, -0.1893, -0.2461, +0.0191, -0.3725, +0.0495, -0.2085, -0.0627, -0.6185, +0.1001, +0.0618, +0.3738, -0.0210, -0.4783, +0.3315, +0.1289, -1.2492, +0.1652, +0.3817, -0.2906, -0.1606, +0.0855, -0.2765, -0.0886, +0.3089, -0.1559, -0.2503, +0.0306, +0.3092, -0.1251, -0.4612, +0.1696, -0.1610, -0.1360, +0.1958, +0.0748, -0.5142, +0.3335, +0.1121, -0.1574, +0.4129, -0.5122, +0.0820, -0.3208, -0.4967, -0.4185, -1.0507, +0.1928, +0.2650, +0.3255, -0.4338, -0.0650, -0.1085, +0.2774, +0.0445, -0.0161, +0.0477, +0.1097, -0.1493, -0.4875, +0.1265, -0.1507, +0.0844, +0.2275, +0.2002, +0.2657, -0.3267, +0.0463, -0.1404, -0.1989, +0.4796, -0.3774, +0.3979, +0.2239, +0.4702, +0.3010, +0.0649, +0.3147, -0.0274, -0.8863, -0.4973, +0.0948, +0.1402, -0.2030, +0.1208, -0.9346, +0.0484, +0.2217, -0.2455, +0.1295, -0.2625, +0.1834, -0.3593, +0.2430, -0.0152, +0.4582, -0.0987, -0.5703, -0.0534, +0.5249, +0.4334, +0.1873, +0.0784, -0.2397, +0.3942, -0.1530, -0.1688, -0.2466, -0.0883, -0.6819, -0.0521, -0.1646, -0.5526, -0.1035, -0.0791, +0.2296], -[ -0.4928, -0.4393, -0.7292, -0.4588, -0.1747, +0.5850, -0.0370, -0.3182, +0.0748, +0.1542, -0.1596, -0.2600, -0.0548, -0.4224, -0.2338, +0.1734, -0.0764, +0.1644, -0.0679, -0.3246, +0.0782, -0.4643, -0.3938, -0.0720, -0.2684, -0.7313, -1.4299, -0.1589, -0.2225, +0.4185, -0.0734, +0.2219, +0.0053, +0.1237, -0.7750, +0.2637, +0.0434, -0.4366, -0.0016, -0.5512, -0.1396, +0.0587, -0.2750, +0.0559, -0.3089, -0.0350, -0.1782, +0.0013, -0.0665, -0.3870, +0.0791, +0.0478, -0.0113, -0.3798, -0.1019, -0.1427, +0.2938, -0.1168, +0.3823, +0.1424, +0.0896, +0.3283, -0.0111, -0.8393, +0.3790, -1.7093, -1.4656, +0.0623, +0.2453, -0.0357, -0.1718, +0.3405, -0.1480, -0.1710, -0.3202, +0.5819, +0.0967, -0.0448, -0.2534, -0.0666, -0.3690, +0.1576, +0.2935, +0.4976, -0.5497, +0.1361, -0.0265, -0.5189, -0.0991, -0.3186, -0.1111, -0.5426, -0.3015, +0.1969, +0.0085, +0.0881, +0.1132, -0.6843, -0.3745, +0.2780, -0.1505, -0.0834, +0.0931, +0.3485, -0.3866, +0.0358, +0.2547, +0.4537, -0.1560, +0.6422, +0.2199, +0.1403, +0.4219, -0.4001, -0.0678, -1.4869, +0.0137, -0.0275, -0.1318, +0.3832, -0.0983, -1.2231, -0.3594, -0.1443, +0.3565, -0.5935, +0.3712, +0.1514], -[ +0.1407, -1.0850, +0.0919, +0.0043, -0.8895, +0.2038, +0.1222, +0.3301, +0.0760, -0.8619, +0.4454, -0.2916, -0.2430, -0.2090, -0.0561, +0.3364, +0.0373, +0.1400, +0.0101, -0.1841, -0.1412, -0.4303, -0.3138, -0.0681, +0.1386, -0.4498, -0.9228, -0.2798, -0.6157, -0.2420, -0.3566, +0.3207, +0.1482, +0.0631, +0.1078, -0.2922, +0.0768, +0.4038, -0.0248, -0.3023, -0.2155, -0.8452, -0.0043, -0.5007, -0.1495, +0.3842, +0.4043, -0.4735, +0.1476, +0.0600, +0.3122, -0.1562, -0.5432, +0.0290, +0.3368, -0.0778, -0.5856, -0.2329, -0.0655, -0.1560, +0.1521, +0.5608, -0.2256, +0.2708, -0.5579, -0.5268, -0.2296, -0.2815, -0.1594, -0.4879, -0.3971, -0.0383, -0.2148, -0.0629, +0.0566, -1.2205, -0.6730, -0.1887, -0.4237, -0.1265, +0.4052, -1.4792, +0.5802, -0.2270, +0.0265, -0.2755, +0.2189, -0.0057, -0.4012, -0.2420, +0.5733, -0.0251, +0.5349, +0.2801, +0.3016, +0.3980, +0.0422, -0.7785, +0.0989, +0.3593, -0.1007, -0.0251, +0.1320, -0.3862, -0.0424, -0.0238, +0.1627, -0.4001, +0.0479, -0.1315, +0.0582, -0.1639, -0.5706, -0.1868, +0.0435, -0.2621, -0.6274, -0.4264, +0.0786, +0.2403, +0.2630, -0.0346, -0.3425, +0.1940, -0.5539, -0.5180, +0.2229, +0.0814], -[ -0.5151, -0.2666, -0.1404, +0.4985, -0.9936, -0.7491, +0.0356, +0.2805, +0.1130, -0.1673, -0.1393, -0.2171, -0.1720, +0.2263, +0.3530, +0.2923, +0.7037, -0.1543, +0.3564, +0.8075, +0.0904, +0.0665, -0.3623, -0.3007, +0.1677, +0.1160, +0.2867, -0.0616, -0.0081, -0.1562, +0.2402, -0.1755, -2.4766, -0.5725, -0.2977, -0.0866, +0.2276, -0.0773, +0.8848, -0.3735, -0.3692, -0.1100, -0.1515, -0.0573, -0.1198, +0.1586, +0.3819, -0.6062, +0.8260, -2.3676, -0.2911, +0.3724, -0.0377, -0.0149, +0.1326, -0.6239, -0.5015, -0.1937, -0.0146, -0.5402, -0.1000, +0.2888, +0.4150, +0.1049, +0.6818, +0.3121, +0.1163, -0.8089, -0.5276, -0.9827, -0.1804, +0.7121, +0.2786, +0.4971, -0.1294, -0.4923, -0.8553, +0.4256, +0.0544, -0.1197, +0.0823, -0.8073, +0.3561, -0.3721, +0.7004, -0.5402, -0.0330, +0.2744, +0.1461, -0.0181, +0.2750, -0.5049, +0.1057, +0.0456, -0.3074, -0.6942, +0.4100, +0.2062, +0.3907, -0.2885, +0.2331, +0.4121, +0.5353, -0.0587, +0.3695, +0.3443, +0.3656, -0.7423, +0.1951, -0.7808, +0.3348, -1.8973, -0.4384, +0.2148, -0.1416, -0.1814, -0.6965, -0.2141, -0.1026, -0.4457, -0.1556, +0.2397, +0.4167, +1.0617, -0.8442, +0.1428, -0.7766, -0.1440], -[ -0.7238, -0.1860, +0.3734, -0.0496, +0.0496, -1.2340, -0.1211, -0.0066, -0.2312, -0.1061, +0.0547, -0.2713, -0.1252, -0.0007, +0.2302, +0.0652, +0.3494, -0.3163, -0.1743, +0.3843, -0.5021, -1.3049, -0.1781, -0.0633, +0.0441, -0.1600, -0.3444, -0.1848, +0.1318, +0.1013, +0.5133, +0.1706, +0.1961, +0.0970, +0.2998, -0.0376, -0.0754, -0.2917, -0.3028, -0.7441, +0.2839, -1.0238, -0.1299, +0.5293, -0.0915, -0.8917, +0.1578, +0.1204, -0.0008, -0.5539, +0.0963, -0.2087, -0.8191, +0.4170, -0.3711, +0.3254, -0.1175, -0.2431, -0.0322, -0.3277, +0.1655, -0.1814, +0.3564, -0.0846, -0.6732, -0.2419, -0.9920, -0.5551, +0.2144, -0.7952, -0.1387, -0.6573, -1.1094, -0.0923, -0.4930, +0.3011, -0.7069, +0.0854, +0.0579, -0.1353, -0.0845, +0.2032, +0.0959, +0.2266, +0.0090, -0.2095, +0.1911, -0.2003, -0.8034, -0.2245, +0.1302, +0.5063, -0.0378, +0.3894, +0.0082, -0.0354, -1.2716, +0.2347, -0.0783, +0.3363, -0.2419, +0.1525, +0.1693, -0.4239, -0.0215, -0.4754, +0.2964, +0.4323, -0.0661, -0.3236, -0.3955, +0.0577, -0.3020, +0.1064, +0.0521, +0.4370, +0.3508, +0.2105, -0.5125, -0.1712, +0.2413, +0.3981, -0.3072, -0.7460, -0.1425, +0.1661, -0.0267, -0.1216], -[ +0.2911, +0.0869, +0.0149, +0.1959, +0.2075, +0.4712, -0.0599, +0.4400, -0.0321, -0.6934, +0.2592, +0.0031, -0.0894, +0.4099, +0.1329, -0.0503, -0.2931, -0.4591, +0.1000, +0.7106, -0.7433, +0.4055, -0.3533, -0.3998, -0.0139, -0.0839, -0.0318, -0.0146, -0.0292, +0.1636, -0.6484, -0.5410, -0.2260, -0.0237, +0.1123, -0.2053, -0.2771, +0.0150, -0.5165, -0.0194, -0.4601, -0.8223, -0.1542, -0.3741, +0.0463, -0.0670, +0.0028, -0.5028, +0.2573, +0.4763, +0.3068, -0.0540, -0.1604, -0.4900, +0.0173, -0.4351, -0.0932, -0.6858, +0.0235, +0.2290, -0.1578, -0.1249, +0.3884, -0.3820, +0.3737, +0.1045, -0.2436, +0.0348, -0.5535, +0.3410, -0.3185, +0.4060, -0.0387, -0.2334, +0.1406, +0.2898, +0.1660, -0.1435, -0.8694, +0.0400, -0.0970, -0.3760, -1.2786, -0.7962, -0.0636, +0.0869, +0.0475, -0.0270, +0.0944, +0.2055, -0.3072, -0.3227, +0.4094, -0.4797, +0.1650, +0.3221, +0.5526, -0.0318, +0.2372, +0.2145, +0.0226, +0.3452, +0.4783, -0.3699, +0.3819, +0.2305, +0.0956, -0.0013, -0.2719, -0.0473, +0.2975, +0.2715, -0.1813, +0.1104, +0.3706, -0.0789, +0.3303, -0.1922, -0.0179, -0.1098, -0.2281, -0.0850, -0.0631, -0.1150, +0.1068, -0.0117, +0.2065, -0.8916], -[ +0.1309, +0.0196, +0.3235, +0.1101, -0.4040, -0.5055, +0.1504, +0.0432, +0.1236, -0.0929, +0.3247, -0.0854, -0.1092, +0.0825, +0.1630, +0.2300, -0.1489, +0.4033, -0.3289, +0.1347, -0.9089, -0.3750, +0.4094, -0.0506, +0.5505, -0.2292, +0.0514, -0.2194, -0.0274, +0.0544, -0.1293, +0.3640, +0.0422, +0.0489, -0.0750, +0.1421, +0.2662, +0.2335, +0.1584, -0.1673, -0.2100, -0.2833, +0.0146, +0.3869, -0.9602, +0.2395, +0.3410, +0.0160, -0.3832, +0.0951, +0.0564, -0.1947, -0.1254, -0.0343, +0.1629, -0.4117, -0.0158, +0.0221, -0.2686, +0.2702, +0.2452, -0.3081, -0.0059, -0.1104, +0.3542, -0.0411, +0.1199, -0.3509, -0.1191, -0.4426, -0.2628, -0.2999, +0.3990, -0.0015, -0.4283, -0.2161, +0.2512, -0.3433, +0.2826, +0.2393, -0.0220, +0.5656, -0.6524, -0.0256, +0.1540, -0.0047, +0.1711, -0.1084, +0.1538, -0.4904, +0.2624, +0.4138, +0.2940, -0.4273, -0.1693, +0.3112, -0.2315, -0.4829, -0.0295, -0.1622, +0.2677, +0.0645, -0.1357, +0.0716, +0.6406, +0.2596, -0.6662, -0.3415, -0.2096, -0.5274, -0.3547, +0.4096, -0.0535, +0.2094, +0.1874, -0.0405, +0.1252, -0.6823, -0.4685, -0.0523, +0.2243, -0.1181, +0.0714, +0.4416, -0.1463, +0.2697, +0.0719, -0.5634], -[ +0.6144, -0.2226, +0.3197, -0.0962, -0.4537, -0.1276, -0.3177, +0.2001, -0.4266, +0.0429, +0.3671, -1.0283, -0.2054, -0.1719, -0.0196, -0.1935, +0.2824, +0.3096, +0.0531, -0.3781, +0.0921, +0.5861, -0.0554, -0.2473, -0.1311, +0.0295, +0.2172, +0.0386, -0.1164, -0.0738, -0.1719, -0.1366, -0.2390, -0.3264, -0.0827, +0.2494, -0.5175, +0.0126, -0.2091, -0.5263, +0.0151, +0.0941, -0.4213, +0.3827, -0.2695, -0.2029, -0.4810, -0.1367, +0.0286, -0.6698, -0.4989, -0.1111, -0.3389, +0.1642, +0.3849, +0.1524, +0.3313, -0.0076, -0.1732, +0.0764, +0.0736, +0.0782, +0.0711, +0.1882, +0.2889, -0.7816, +0.2130, -0.2452, +0.4048, -0.2882, -0.1865, +0.3972, +0.3034, -0.1198, +0.4981, -0.0464, -0.0072, -0.3445, +0.2166, +0.2578, +0.2454, -0.2381, -0.4269, -0.4538, -0.1786, -0.2762, +0.3395, +0.3601, +0.4794, +0.1750, +0.0563, +0.2224, -0.5652, +0.2349, -0.1000, -0.0806, -0.1674, -0.2069, -0.4121, -0.2949, -0.2502, -0.0348, -0.1137, -0.2039, +0.1790, +0.1009, +0.2319, +0.0158, -0.2065, -0.1178, +0.3275, -0.3367, -0.4479, -0.4726, -0.2509, +0.1559, +0.2329, -0.1025, -0.1708, -0.0582, +0.2166, -0.5370, +0.2905, -0.0162, -0.2506, -0.3605, -0.1211, +0.1887], -[ -0.6893, -0.7564, -0.3645, +0.0767, -0.0361, -0.3241, -0.0848, -0.4625, -0.5328, +0.2169, -0.1417, -0.3141, +0.4234, -0.4139, -0.4199, -0.8554, +0.3087, +0.0235, -0.3230, -0.8417, -0.3463, +0.0613, -0.3441, +0.1933, -0.6257, -0.1702, -0.0783, +0.1675, -0.0408, +0.4984, +0.0296, -1.2812, -0.7349, -0.2818, +0.1952, +0.0895, -0.6343, +0.2221, +0.1245, +0.1251, +0.1498, -0.3169, -0.4502, -0.2776, -0.7121, -0.4036, -0.2672, -0.0637, -0.0131, -0.1409, +0.0962, -0.1897, -1.1389, -0.5365, +0.4710, -0.1991, +0.1271, +0.1529, -0.3618, -0.2632, +0.0152, -0.3641, +0.1869, +0.3012, +0.1301, +0.2294, -0.0209, +0.0909, +0.2087, +0.3198, +0.1712, -0.1370, +0.2819, -0.2727, +0.1913, +0.0046, +0.0895, +0.2373, +0.2806, +0.9273, +0.0263, -0.0546, -0.1108, -0.2230, +0.1495, -0.5407, -0.4810, -0.5057, -0.6052, +0.4988, +0.9805, -0.0265, -0.5185, -0.3946, +0.4153, +0.0304, -0.6052, -1.1090, -0.3154, +0.4364, -0.1139, -0.6430, -0.4605, -0.2527, -0.0982, +0.1664, -0.2660, -0.0048, +0.2091, -0.3409, -1.0991, -0.7961, +0.2287, -0.2451, +0.2255, -0.0531, -0.2316, -0.7834, -0.4924, +0.0994, -0.1986, -0.1223, -0.6212, +0.5028, -0.9486, +0.2837, -0.2272, -0.0957], -[ +0.0449, +0.2991, -0.3465, +0.2134, +0.2810, +0.4352, +0.3833, +0.1536, +0.0167, +0.1522, +0.2531, +0.0054, -0.0989, +0.5910, -0.2044, +0.2939, -0.3042, -0.0106, +0.1174, -0.0552, -0.2206, -0.0047, -0.0914, +0.0492, +0.5764, -0.4307, +0.1675, -0.5106, +0.2019, +0.0927, -0.1536, -0.3025, -0.1970, -0.0469, -0.3872, +0.1359, -0.4576, -1.0291, +0.2742, +0.1121, -0.0931, +0.6615, -0.1726, +0.6631, -0.2638, +0.6108, -0.2945, -0.7866, +0.1557, +0.1079, -0.1564, +0.1718, -0.1952, -0.0437, -0.1100, +0.0411, -0.1469, +0.0993, +0.1690, -0.0428, -0.1508, -0.0504, -0.1347, -0.2955, -0.9919, +0.3436, -0.3700, -0.2003, +0.0382, +0.2718, +0.2301, +0.1151, +0.0082, -0.0390, -0.2795, +0.0814, +0.1691, +0.1462, +0.2560, -0.1078, -0.1480, -1.2248, -0.8432, +0.0709, -0.0745, +0.3037, -0.6277, +0.5228, +0.5654, +0.2091, +0.5655, +0.2075, -0.5421, +0.1540, +0.1193, +0.3156, -0.1635, -0.1443, -0.3582, -0.1067, +0.2007, +0.0439, -0.0094, -0.1806, -0.0780, +0.0642, +0.2224, +0.6529, -1.0521, -0.6065, +0.1953, -0.1739, +0.1776, +0.0539, -0.1405, +0.4023, -0.1402, -0.0402, +0.2893, +0.2747, +0.2815, -0.2319, +0.1051, -0.2225, -0.0866, +0.4632, -0.4485, -1.1085], -[ +0.2833, -0.0934, -0.0835, -0.1033, +0.3759, +0.4096, -0.0897, -0.0569, +0.4893, -0.1412, -0.3791, +0.1811, -0.5005, -0.5408, +0.1659, +0.2339, +0.0297, +0.0982, -0.7549, -0.3709, +0.4307, +0.4844, -0.1471, +0.0847, -0.0839, -0.5235, -0.5456, -0.0803, -0.2196, +0.4345, -0.5244, -0.1965, +0.2044, -0.0302, -0.3086, -0.2497, +0.1088, +0.5340, -0.0574, -0.2340, +0.3407, -0.9125, +0.0487, +0.5591, +0.5246, -0.3608, -0.1591, +0.4509, +0.3375, +0.0716, +0.2465, -0.1310, +0.7617, -1.3504, -0.5404, -0.2907, +0.1230, +0.1533, -0.2579, -0.3346, -0.1681, -0.1847, +0.1247, -0.3327, -0.0364, -0.4608, +0.1393, -0.4385, +0.5720, +0.4741, -0.0466, -0.0926, +0.3953, +0.2307, -0.1682, +0.1446, +0.1144, +0.0643, -0.1552, -0.1049, -0.1909, +0.4704, -0.4462, +0.0679, +0.0530, -0.1077, -0.4838, -0.5035, +0.0543, -0.6831, -0.3069, +0.2481, +0.4827, -0.4394, -0.6585, -0.7225, +0.1984, -0.2193, +0.3622, -1.1110, +0.2371, +0.0430, -0.0976, +0.5244, +0.0655, +0.2903, +0.2645, +0.1898, +0.2884, +0.4227, -0.6397, -0.0938, -0.2560, +0.1588, -0.2586, +0.2199, +0.9359, +0.4204, -0.0682, +0.5332, -1.5911, -0.1906, +0.1572, +0.3729, -0.7798, -0.4970, +0.6974, +0.3112], -[ +0.1300, +0.1225, -0.0353, -0.1295, -0.2276, +0.0811, +0.1585, -0.4901, +0.2456, -0.5646, +0.1338, -0.0290, -0.0651, -0.2992, -0.0042, -0.0323, -0.3890, +0.0498, -0.0929, -0.9085, +0.3046, +0.7910, -0.2319, -0.0140, -0.2619, +0.3285, -0.0145, -0.1586, -0.2207, +0.3139, +0.2840, -0.0469, +0.2337, +0.1015, +0.0368, +0.3694, +0.1749, -0.5578, +0.4924, -0.3193, -0.5194, -0.0480, -1.4891, +0.2301, +0.7265, +0.0064, -0.6811, -0.2401, +0.4192, +0.2217, -0.1730, -0.1229, -0.4589, -0.0136, +0.6820, -0.0189, +0.2239, -0.0783, +0.3490, -0.7888, -0.0621, +0.3431, +0.2807, +0.4297, +0.2367, +0.2858, -0.2146, -0.3961, +0.1695, +0.1928, +0.3758, +0.0155, -0.8027, +0.5808, -1.2442, +0.1110, +0.2993, +0.1707, +0.0836, -0.1430, -0.2260, -0.3311, +0.2282, +0.2347, -0.0061, -0.4886, +0.0520, +0.2383, -0.2311, -0.3241, -0.5899, -0.0528, -0.0597, -0.4107, -0.1314, -0.4247, -0.9923, +0.0005, -0.0871, +0.2215, +0.4147, -0.2037, +0.1899, -0.1657, +0.0480, +0.1061, -0.2230, +0.0170, -0.4162, +0.0654, -0.0777, +0.3500, -0.2939, -0.0688, +0.2226, -0.4769, -0.5396, -0.6415, +0.4944, +0.1920, -0.3089, -0.2960, -0.0537, -0.1763, -0.3175, -0.0946, -0.2762, +0.4496], -[ -0.2118, -0.9290, -0.3628, -0.1316, +0.2617, -0.0771, +0.2409, +0.2344, +0.7330, -0.1922, +0.1783, +0.2937, +0.0319, +0.0646, -0.0967, +0.1513, -0.6459, -0.1784, +0.5620, -0.0085, -0.2925, +0.2583, -0.3697, -0.1411, -0.1300, -1.3261, -0.5074, -0.0749, +0.2903, -0.4582, +0.2019, +0.1653, -0.1023, +0.4330, -0.0669, -0.6727, +0.3773, +0.1030, +0.4331, -0.3886, +0.1706, -0.2894, -0.2083, -0.3598, -0.3904, -0.3944, -0.4591, -0.2410, +0.1316, -0.3647, +0.2257, +0.1692, +0.0559, -0.6691, +0.0486, -0.4362, +0.0310, +0.3890, -0.1703, -0.1281, -0.0681, +0.1404, -0.0248, +0.2311, -0.1183, +0.0374, +0.2487, +0.0740, -0.0505, -0.2820, +0.0557, -0.6214, -0.1100, -0.1790, +0.0150, -0.1678, -0.0035, -0.0231, +0.0966, -0.4161, +0.3863, -0.2755, +0.1734, +0.1071, -0.6204, +0.2778, +0.0999, +0.3764, -0.6325, -0.0742, +0.0121, +0.0226, -0.5923, +0.8168, +0.1828, +0.1854, -0.0801, -0.6948, -0.1223, -0.6015, -0.3551, -0.3713, -0.0351, +0.0061, +0.2149, +0.1456, -0.2418, +0.2048, +0.1571, +0.1718, -0.5743, -0.6731, -0.2086, -0.0521, +0.4013, +0.6091, +0.4487, +0.6486, -0.0656, -0.5554, -0.0296, +0.0553, -0.0991, +0.2833, -0.2550, +0.0169, -0.3458, -0.4486], -[ -0.6032, -0.0677, -0.6110, -0.0579, +0.0348, +0.4124, +0.2825, -0.2914, -0.5353, +0.2745, +0.0868, -0.4618, -0.4399, +0.2729, -0.2960, +0.5520, -0.4278, -0.0857, -0.1108, -0.0307, +0.3795, +0.2877, +0.3949, -0.5432, +0.6013, +0.2841, +0.1772, +0.1256, -0.1669, +0.0336, +0.6714, +0.3229, -0.0286, +0.4098, +0.3593, -0.0403, -0.4589, -0.5273, +0.0479, -0.5698, -0.2146, +0.2849, -0.1466, -0.4662, +0.3268, +0.1719, -0.6113, -0.2967, -0.7296, -0.6273, -0.4109, -0.1095, -0.7717, +0.1775, +0.0400, +0.0084, -0.3378, -0.1608, +0.4190, -0.2896, -0.0844, +0.1462, -0.6278, +0.0935, +0.8116, +0.5331, -0.0550, +0.3484, -0.4941, +0.4868, -0.1511, -0.6345, +0.3238, +0.4403, +0.1275, -1.1373, +0.1018, +0.4256, -0.3851, -0.1808, -0.0276, +0.0512, -0.2983, +0.3975, -0.0732, -0.2704, +0.3294, +0.4518, +0.2720, -0.7989, -0.3187, -0.0042, +0.1194, +0.6238, -0.1914, +0.1188, +0.2643, +0.2484, -0.2108, +0.3899, +0.2551, +0.2641, -0.1063, -0.1724, +0.1255, -0.3883, +0.2752, -0.2027, +0.0987, -0.5210, -0.4056, -0.3595, +0.0261, -0.0779, -0.0483, -0.1545, -0.5542, -0.6928, -0.4876, -0.3378, +0.2582, +0.0514, -0.9639, +0.2181, -0.1269, +0.3627, +0.3059, +0.1187], -[ +0.4424, +0.1058, -0.0036, -0.0198, -0.7466, -0.1816, +0.1333, -0.4204, +0.1617, -0.5663, +0.2009, -0.6072, +0.0777, -0.0348, -0.1503, -0.1506, -0.2447, +0.1168, +0.0449, -0.3418, +0.4783, -0.7564, +0.2479, -0.2055, +0.5323, -0.2920, +0.2296, +0.0980, +0.0866, -0.1420, -0.1886, -0.3228, +0.1041, -0.3694, +0.0244, -0.0100, +0.5030, +0.3860, +0.0184, -0.0880, +0.2297, -0.0404, -0.3467, -0.2801, -0.6452, +0.2096, -0.5038, +0.0641, -0.3650, -0.9896, +0.0178, -0.0237, +0.0932, +0.1018, -0.1438, -0.0200, +0.0311, -0.2394, -0.0092, -0.6497, +0.0625, +0.4201, -0.0634, -0.2043, -0.4262, -0.7596, -0.2812, -0.6147, -0.3940, -0.7169, +0.1941, -0.2242, +0.1326, +0.0445, -0.4019, -0.3303, -0.0632, -0.2467, -0.0111, -0.2919, +0.0369, +0.0654, -0.0441, -0.4557, +0.2635, +0.1841, +0.0524, +0.1339, +0.2902, +0.1312, -0.9598, -0.0323, +0.3912, +0.0473, -1.4380, +0.0383, +0.1851, -0.1509, -0.1918, +0.3556, -0.2820, -0.1111, -0.1486, +0.3773, +0.2129, +0.3540, +0.2095, +0.1570, -0.1735, +0.1761, -0.6760, -0.1110, -0.1767, -0.2422, +0.0451, -0.5201, -0.8463, -0.9076, -0.2164, -0.6172, +0.1273, +0.2936, +0.9649, +0.0618, -0.0435, +0.1443, +0.3163, -0.0086], -[ +0.0925, -0.5430, -0.0249, -0.2071, +0.1469, -0.1622, -0.0324, +0.1426, +0.1701, -0.3923, -0.3385, +0.2246, +0.2537, +0.0595, +0.2675, -0.0943, +0.2770, -0.1649, +0.1071, +0.1494, -0.5267, +0.5081, -0.4421, +0.1628, -0.4583, -0.1287, -0.2189, +0.2298, +0.2537, -0.1724, +0.1992, +0.1755, +0.0848, +0.1464, +0.1517, -0.4672, -0.2435, +0.0983, -0.7334, +0.1714, +0.1186, -0.2045, -0.0505, +0.3774, +0.4223, -0.1706, +0.1763, -0.2118, +0.3001, +0.4783, -0.2393, -0.1687, +0.0589, -0.1996, -0.2300, +0.2719, +0.3267, -0.0122, +0.2309, -0.5701, +0.1518, +0.1965, +0.1559, +0.0829, -0.0143, +0.0635, -0.6618, -0.1065, -0.1652, -0.2437, -0.2857, +0.4038, -0.0802, -0.9736, +0.0974, +0.4373, +0.0618, +0.9012, +0.4007, -0.5289, +0.2833, -0.5600, +1.0111, -0.0181, +0.4791, -0.1005, +0.3155, +0.0703, +0.3564, -0.2885, -0.6676, +0.4130, -1.7891, +0.1433, -0.0321, -0.3819, +0.2323, +0.7814, -0.4222, -0.2982, +0.0014, +0.0673, -0.0660, -0.7250, +0.3153, +0.2217, -0.2058, -0.0455, +0.2074, -0.4521, -1.1590, -0.2049, +0.4095, -0.2078, +0.3863, +0.2294, -0.3886, +0.1338, +0.7582, -0.8412, -0.5388, +0.4581, +0.9050, -0.1157, -0.6738, -0.1913, +0.0977, -0.4078], -[ -0.5935, -0.2299, +0.0844, -0.0635, -0.3506, +0.3619, -0.0941, -0.4993, +0.4810, +0.2604, +0.9527, -0.7029, +0.2542, -0.7696, -0.1462, +0.1304, +0.4153, -1.4199, -0.9515, +0.5247, -0.5530, -1.1147, +0.7242, -0.7650, +0.2163, -0.0670, -0.0957, +0.6176, +0.0951, -0.4273, +0.8590, +0.1365, +0.0066, -0.0358, -0.0226, -0.4678, -0.8643, +0.1893, +0.1531, -0.5558, -0.5609, -0.4105, +0.3554, +0.1982, -0.2118, +0.0082, +0.0927, -0.2299, -1.8177, +0.0275, +0.0346, +0.4181, -0.8068, +0.0572, +0.4430, +0.0609, -0.1676, +0.2897, -0.2447, +0.4049, -0.4439, -0.3148, -0.2415, -0.3815, -0.2230, -0.2385, -0.0809, +0.3203, -0.3680, +0.9111, -1.2446, +0.2871, -0.7356, -0.5508, -0.1408, -0.1144, -0.4075, -0.5768, -0.0405, +0.5156, -0.0099, +0.2301, +0.2223, -0.8397, +0.1084, -0.5090, -0.0122, +0.0676, -0.1969, +0.9491, +0.2752, +1.0483, +0.0323, -0.3304, -0.8465, -0.0738, -0.1036, +0.1330, -0.0003, +0.0773, -0.1055, +0.0336, -0.0619, +0.0134, -0.5114, -0.4465, +0.1331, +0.0783, +0.0185, +0.1282, -0.0087, -0.2904, -0.5425, +0.9569, -0.3768, -0.1059, -0.6334, -0.0902, -0.2850, +0.4953, -0.1008, +0.1133, +0.1251, -0.6502, +0.2023, +0.3969, -1.1632, -1.0388], -[ -0.0479, +0.5190, -0.0690, +0.2645, -0.1061, -0.4572, +0.0769, -0.2908, -0.0203, -0.1946, -0.4433, +0.1721, -0.4805, +0.0132, -0.2964, -0.5649, -0.0864, -0.0741, +0.4401, -0.1044, -0.0489, -0.4965, -0.3075, +0.3322, +0.4032, +0.1168, -0.0745, +0.1485, +0.2502, +0.0562, -0.6635, -0.4099, +0.6135, +0.2796, +0.0158, +0.3553, -0.4508, -0.0878, -0.0958, -0.0211, -0.2325, -0.2336, -0.4806, +0.1283, -0.0625, -0.3256, -0.0170, -0.4796, -0.0973, -0.8068, -0.2113, +0.0766, +0.2858, -0.3733, -0.6973, -0.2251, +0.1226, -0.5401, -0.1270, -0.0934, +0.1379, +0.1965, +0.1588, +0.1794, -0.3630, +0.1450, -0.2917, +0.0389, -0.2540, -0.1072, -0.0232, -0.0144, +0.2790, -0.0587, +0.3812, -0.4222, +0.1637, -0.1020, -0.1416, +0.0049, +0.0932, -0.2242, -1.0088, -0.4894, -0.1479, -0.3833, -0.4732, -1.5346, -0.3347, -0.2779, +0.3583, -0.7138, +0.1190, +0.2797, -0.1337, +0.0307, +0.0035, +0.3886, -0.1509, -0.3368, +0.4436, +0.2429, -0.5943, -0.0072, +0.2087, -0.3303, +0.3356, -0.1510, +0.0570, -0.4078, +0.1493, -0.3326, +0.4480, -0.1071, +0.4241, -0.4331, -0.4044, +0.0355, +0.1499, -0.1598, -0.0478, -0.2354, -0.1052, +0.2659, -0.1914, -0.5389, +0.0407, +0.0417], -[ +0.1782, -0.2234, +0.3918, -0.6655, -0.0685, +0.6716, -0.5690, -0.3340, +0.3736, -0.5290, -0.0388, -0.3044, -0.8208, -0.1050, -0.0841, -0.3171, +0.0026, +0.2447, -0.1310, +0.6570, -0.0816, -0.3201, -0.3511, +0.1520, +0.3551, -0.2858, -0.1973, +0.3922, +0.4219, -0.3688, -0.1404, +0.1941, +0.3616, -0.8475, +0.5963, -0.3244, +0.0857, -0.3359, +0.2437, +0.3132, -0.0654, +0.1908, +0.3633, -0.1793, +0.5453, +0.2284, +0.0779, -0.3181, +0.7338, +0.2505, +0.8407, +0.3824, +0.9892, -0.8010, +0.8694, -0.6869, +0.3482, +0.6119, -0.3285, -0.0035, -0.6589, +0.7477, -0.9772, +0.0712, -0.6287, -0.6458, -0.5993, +0.0413, -0.1223, -0.5352, +0.0118, +0.3811, -0.3715, +0.3149, +0.4021, +0.2790, -0.5274, -0.3407, +0.1704, +0.0525, -0.3108, -1.0214, +0.3032, -0.1552, +0.0782, -0.2917, +0.4644, +0.3692, -0.2517, -0.5565, +0.0019, -0.5895, +0.1808, +0.2098, -0.3146, -0.4605, -0.1371, -0.5387, -0.0641, +0.4441, -0.4335, +0.0124, -0.1411, -0.2014, +0.6305, +0.3477, -0.2348, +0.2964, -0.0991, -0.6016, +0.6042, +0.0846, -0.5148, -0.3626, +0.6896, -0.5877, +0.2074, -0.6469, -0.0674, +0.3944, +0.3598, -0.2169, -0.0975, +0.2754, +0.3819, +0.2699, +0.6490, -0.0551], -[ +0.3730, +0.2379, -0.5477, -0.0272, -0.0627, +0.3697, -0.4464, +0.1529, -0.1309, +0.7287, -0.3633, +0.7112, +0.1018, -0.1746, -0.2371, +0.1448, -0.8770, +0.0287, -0.0359, -0.1006, -0.0589, +0.9757, -0.5538, -0.2045, -0.5250, -0.0522, -1.5060, -0.2217, +0.0561, -0.4933, -0.3620, -0.6056, -0.2404, +0.0415, +0.0706, -0.3109, -0.3340, +0.2806, -0.0645, +0.2388, -0.4233, -0.3139, -0.1198, +0.0910, +0.4692, +0.5009, +0.2411, +0.2991, -0.0108, -0.7566, -0.1575, +0.2096, +0.2583, +0.2164, +0.2564, -0.2651, -0.3725, -0.6866, -0.2018, -0.4085, -0.2270, -0.1645, +0.2454, +0.5759, +0.5342, +0.0630, -0.2398, -0.3472, +0.1180, -0.5563, -0.0504, -0.3949, +0.5930, -0.5503, +0.7552, +0.1954, +0.1457, +0.2045, -0.0314, -0.0566, -0.2867, -0.1987, +0.3327, +0.2462, +0.4664, -0.0899, -0.4657, +0.3276, -0.4960, -0.5151, +0.0351, -0.0435, +0.3114, +0.1742, -0.1105, -0.1722, -0.3298, +0.3754, +0.7365, +0.0954, -0.0570, -0.0090, -0.3715, +0.2382, -0.4360, +0.3115, -0.0797, +0.5588, -0.0508, +0.4089, +0.0939, -0.3193, -0.4438, +0.5529, +0.4291, +0.1723, -0.2984, +0.0072, -0.6077, -0.1481, -0.0667, +0.1671, +0.5195, -0.1353, +0.1457, -0.0190, +0.0570, +0.1180], -[ -0.2086, -0.4388, -0.3383, +0.0100, -0.4148, +0.3367, +0.0756, +0.0125, +0.3785, -0.3165, +0.3785, +0.3532, -0.5890, +0.1460, +0.4339, +0.0200, -0.2887, -0.0896, -0.3657, +0.2396, +0.1109, -0.0215, +0.4180, +0.0952, -0.0642, -0.1565, -0.0457, +0.3453, -0.2649, +0.0397, -0.4671, -0.2103, +0.2601, +0.2170, -0.0153, -0.1431, +0.0435, +0.5181, +0.0040, -0.0422, -0.0495, -0.1811, -1.1742, +0.4474, +0.1515, +0.0785, +0.0227, +0.1023, -0.2610, -0.3934, +0.1275, +0.1013, -0.0753, +0.1516, +0.1723, -0.2818, -0.5486, -0.0447, +0.1180, +0.1236, -0.3159, +0.1539, +0.1780, -0.0665, -0.6689, +0.1590, -0.0065, -0.4798, +0.4276, -0.0361, +0.3240, +0.2191, -0.0899, -0.5269, -0.0051, -0.6306, -0.1040, -0.1268, -0.0726, +0.1400, -0.4591, -0.0570, +0.4081, -0.3066, -0.5487, +0.2884, +0.0499, -0.4324, +0.5675, -1.3443, +0.2624, -0.2633, +0.2756, -0.2218, +0.0086, +0.5358, +0.0621, -0.5155, -0.0216, -0.7247, +0.0548, +0.2718, +0.1050, -0.6024, -0.3425, -0.0797, +0.2451, +0.3377, +0.0976, +0.1078, +0.0683, +0.1088, +0.6238, +0.2182, -0.5030, -0.5271, +0.2299, +0.1178, -0.0626, +0.4271, +0.1727, +0.0735, -0.1636, -0.8866, -0.2886, +0.0675, -0.3751, -0.2303], -[ +0.9445, +0.2016, -0.5625, +0.5263, +0.0954, -0.0109, +0.1713, -0.0090, -0.0013, -0.2255, -0.1254, -0.5311, +0.0248, +0.1489, +0.1679, -0.0740, +0.0026, +0.2104, +0.0613, -0.3800, +0.3637, +0.2141, +0.4356, -0.2362, -0.5652, -1.2969, +0.4903, -0.2725, +0.5073, -0.8884, +0.1624, -0.1484, -0.7038, -0.1417, +0.2532, -0.3280, +0.2880, -0.1350, -0.3792, +0.2221, -1.1228, -0.2918, -0.1111, -0.5399, -0.1416, +0.3730, +0.2100, -0.0993, +0.0197, -0.0596, -0.2365, +0.0009, -0.3508, -0.2781, -0.3571, +0.5337, +0.1808, +0.3070, +0.0686, -0.2426, +0.0653, +0.3671, -0.7084, +0.5176, +0.7398, -0.6187, -0.3573, +0.7709, +0.0240, -0.1952, +0.1763, -0.5369, +0.1761, -0.5912, -0.0998, -0.2364, +0.1345, -0.4850, -0.2148, -0.0008, -0.0142, -0.0044, -0.1903, -0.0338, -0.1019, -0.4902, -0.1207, +0.4619, +0.2617, +0.9087, -0.0275, -0.1023, +0.5771, -0.4082, -0.6001, -0.1566, +0.0850, -0.3136, +0.5947, -0.7035, -0.3309, -0.3864, -0.1937, -0.0975, +0.3223, -0.4192, -0.7639, -0.2763, +0.2029, -0.6767, +0.2283, +0.2212, -0.8509, -0.0464, +0.2798, +0.1990, -0.6787, -0.2657, +0.3060, +0.1175, +0.0829, -0.6221, +0.1787, +0.6038, +0.1280, +0.2982, +0.1579, -0.4395], -[ -0.4022, +0.3806, -0.5149, +0.2091, +0.2072, -0.8702, -0.0309, -0.2253, +0.5336, -0.4557, -0.5619, -0.0152, -1.2317, +0.1855, +0.5338, +0.1515, -0.4155, -0.1654, -0.1512, -0.2880, -0.4886, -0.1272, -0.5285, -0.0211, +0.2236, +0.7693, +0.1605, -0.2377, -1.3033, -0.6326, -0.1246, -0.2426, +0.4895, +1.1411, +0.0292, +0.3082, +0.8752, +0.1967, +0.3447, -0.3949, +0.2191, -1.2020, -0.4875, -0.0770, -0.3828, +0.4196, -0.0840, -0.1909, -0.6818, +0.0260, -0.1737, -0.4052, -0.3051, +0.4464, +0.2954, -0.0535, -0.2128, -1.2314, -0.1001, -0.1390, -0.0266, -0.6325, +0.0760, +0.2130, -0.2140, -0.1411, -1.1312, -0.1157, -0.5104, -0.4398, +0.3164, -0.5951, -0.4968, +0.1480, -0.8748, +0.5452, -0.4244, -0.1696, -0.2291, -0.3652, +0.0235, +0.1351, +0.5221, -0.1118, +0.3722, +0.4798, +0.0591, -0.1431, +0.2925, +0.1891, +0.5519, +0.0817, -0.1104, -0.3556, -0.9355, -0.6089, +0.3943, -1.2079, -0.5596, +0.3369, -0.2550, -0.1017, +0.2589, -1.5715, -0.4167, +0.1063, +0.0187, -0.4615, -0.2413, -0.3672, -0.1953, -0.1011, -0.0702, +0.0518, +0.2856, -0.4162, -1.5121, -0.6573, +0.4129, +0.0771, +0.4552, -0.2248, +0.0095, -0.1564, +0.3654, -1.3995, +0.1137, +0.4274], -[ +0.1625, -0.0931, +0.1840, -0.0074, -0.3811, +0.4499, +0.1004, +0.6763, -0.6383, +0.1466, +0.6464, -0.1642, +0.4041, +0.0764, -0.2337, +0.5960, +0.1896, -0.4199, +0.2239, +0.0485, +0.7686, +0.1143, -0.1752, -0.5230, +0.4001, -0.1511, +0.0128, -0.2803, -0.2018, +0.0898, +0.0974, -0.7966, -0.4572, -0.0643, -0.6423, -0.2001, +0.1527, -0.6409, +0.0140, -0.2367, +0.8755, -0.0530, +0.6538, -0.8246, +0.1815, -0.8090, -0.4929, +0.6108, -0.0170, -0.2884, -0.2004, +0.5064, -0.6971, +0.3562, -0.2381, +0.0212, -0.1770, -0.7051, +0.1713, -0.0151, +0.3391, -0.0188, +0.4622, -1.1528, -1.1420, +0.5366, -0.3869, +0.8814, -0.6754, -0.6912, +0.3855, +0.4494, -0.0812, +0.3259, +0.0233, -0.7651, +0.4739, -0.2878, -0.6311, -0.4832, -0.2544, -0.2973, -0.0768, -0.4237, +0.2613, -0.8429, -0.1198, -0.2638, +0.0817, -0.0177, -0.2707, +0.4635, +0.0959, +0.2658, -0.0947, -0.0381, +0.0032, -0.5922, -0.2987, -0.1109, -0.0709, +0.3462, -0.0751, -0.1074, +0.2946, +0.5523, -0.3885, -0.3798, -0.0004, +0.3050, +0.4592, +0.2169, +0.0598, -0.5092, +0.6622, +0.0579, +0.6825, -1.1290, +0.2593, +0.1796, +0.5745, +0.2917, +0.2954, +0.3155, +0.3773, +0.4284, -0.2170, +0.1228], -[ +0.3814, -0.0007, +0.2347, +0.4505, -0.9896, +0.1275, -0.6250, +0.0199, +0.2314, +0.6077, +0.4820, +0.0664, -0.4295, -0.1210, +0.1827, -0.6114, -0.5119, +0.0163, +0.1849, -0.1803, -0.3835, +0.0985, -0.1721, +0.0300, +0.1781, -0.3924, +0.1848, -0.0455, +0.2295, +0.2432, +0.4414, -0.2659, +0.1823, -0.2322, +0.2025, -0.0158, -0.2110, +0.2972, +0.2411, -0.0127, -0.4503, +0.2383, +0.4493, +0.1477, -0.3426, -0.1716, -0.1133, -0.4422, -0.0709, -0.1674, +0.0045, -0.2094, +0.1063, -0.2913, -0.1346, +0.0148, +0.2906, +0.0042, +0.2585, +0.2762, -0.2326, +0.4210, -0.3744, -0.1444, +0.0824, -0.3378, -0.7670, +0.1472, +0.0340, +0.1042, +0.2470, -1.1010, -0.8319, -0.0056, +0.0387, -0.0635, -0.4436, +0.2293, -0.8450, -0.2653, -0.1802, -0.0548, -0.2312, +0.2067, -0.6774, +0.2831, +0.1353, -0.2958, -0.7031, +0.2452, -0.4003, -0.1784, -0.2550, -0.0223, -0.5801, -0.3882, +0.1725, -0.1903, -0.1287, -0.2928, -0.0712, +0.0240, +0.1000, -0.3239, +0.1132, +0.3028, +0.2136, -0.1707, +0.3002, -0.0432, -0.2355, +0.1913, -0.0903, +0.1436, -0.0372, +0.0679, -0.0988, -0.4783, -0.2423, -0.5917, +0.8819, -0.0241, -0.2791, -0.0560, +0.1405, -0.2316, +0.2242, +0.0224], -[ -0.1542, -0.0336, +0.6644, +0.2585, -0.5065, -0.1477, -0.0875, +0.3574, -0.0822, -0.0019, -0.3219, -0.6081, +0.1470, +0.2173, -0.1147, -0.2529, +0.0147, +0.3972, +0.0012, -0.5515, -0.5243, -0.3388, +0.6297, -0.0476, +0.0599, +0.1170, -0.0936, -0.6347, +0.5200, -0.1682, +0.1897, -0.0260, -0.5505, -0.0853, +0.0012, -0.1033, -0.5735, +0.3489, -0.1061, +0.0525, +0.2188, -0.2587, +0.0018, +0.0895, -0.1720, -0.1929, -0.0940, +0.8564, +0.3034, +0.4026, -0.2215, -0.0551, -0.1568, +0.4462, +0.3163, +0.5964, -0.0946, +0.0527, +0.3713, -0.4724, +0.4526, +0.2589, +0.1032, +0.3049, +0.1777, -0.3092, +0.3726, -0.7145, -0.8084, -0.1833, +0.0214, +0.2779, -0.1797, -1.0323, -0.0255, +0.0163, -0.1768, -0.2639, -0.4276, +0.2187, +0.2286, -1.2902, +0.1687, -0.1690, -0.0256, +0.0505, +0.1353, +0.2494, -0.4683, -0.0710, -0.4666, -0.2477, -0.0301, -0.2555, -0.0236, +0.3597, +0.2182, -0.2831, -0.4192, -0.0354, +0.1041, -0.4950, +0.0639, +0.4306, -0.5223, -0.0499, +0.1077, -0.0365, +0.2080, +0.4629, +0.2210, -0.2176, +0.0121, +0.3945, +0.1549, +0.0870, +0.0520, -0.2656, -0.1979, -0.0231, -0.1059, +0.1531, -0.3859, -0.2679, -0.8621, -0.1638, +0.1350, +0.1876], -[ +0.3806, +0.2523, +0.5562, +0.0111, -0.1953, -0.0892, -0.2526, +0.4331, -0.4892, -0.6997, +0.3041, +0.1485, -0.4885, -0.2184, -0.5273, -0.0699, +0.2242, -0.9480, -0.0603, -0.0900, +0.3332, -1.6082, -0.6371, +0.4506, +0.3720, +0.0715, -0.2181, -0.3089, +0.3054, +0.4494, +0.0314, -0.2222, -0.0279, +0.2952, -0.5176, +0.1882, -0.2591, -0.3002, -0.0059, -0.2000, +0.7027, +0.1326, -0.4512, -0.7258, +0.1162, +0.5175, -0.1283, +1.2194, +0.1117, -1.1434, -0.4664, -0.1930, +0.0238, +0.0395, +0.1416, +0.5292, -0.2978, -0.0544, -0.0006, +0.2739, -1.2399, -0.5526, +0.0394, -0.0364, -0.7773, -0.3795, +0.3063, -0.7628, +0.4776, -0.1952, -0.2359, +0.5516, +0.5820, +0.0932, -0.0738, -0.6898, +0.0459, +0.2712, -0.5156, +0.1877, -0.0113, +0.4836, +0.2151, -0.1031, -0.5560, -0.0206, -0.4167, -0.4145, +0.4164, +0.4620, +0.0621, -0.6125, -0.0823, -0.0039, -0.3260, -0.2870, +0.4849, -0.6013, -0.1252, +1.0554, -0.0452, +0.3066, -0.5233, -0.7425, +0.0681, +0.3332, +0.5878, +0.0783, +0.4283, -0.3151, -0.1337, +0.3149, -0.4076, -0.0674, -0.9185, -1.5729, +0.2701, +0.4472, +0.1315, -0.1732, -0.4688, +0.2536, +0.2700, -0.2415, +0.3929, -0.2531, +0.5234, -0.0956], -[ +0.0767, -1.3030, -0.0922, +0.1318, +0.1151, +0.3959, -0.2517, -0.3597, +0.1989, -0.2200, -0.2689, +0.1894, -0.0330, +0.5684, +0.1600, -0.2508, +0.2014, -0.0478, +0.0147, +0.0180, +0.2922, +0.0558, -0.1213, +0.2567, +0.4225, -0.1129, -0.1461, -0.2474, -0.3828, -0.3537, -0.3027, -0.4401, -0.2223, -0.1898, -0.1263, +0.0413, +0.3714, -0.3876, +0.4545, +0.5437, -0.2146, -0.7875, -0.2597, -0.1949, -0.3033, -0.4625, -0.2010, +0.2098, -0.5542, -0.5352, +0.2719, +0.0970, +0.0355, -0.3193, +0.0255, +0.2458, -0.3211, +0.2259, -0.1997, -1.7111, -0.1666, -0.2031, -0.3074, +0.3164, +0.8876, -0.4382, -0.2183, +0.4075, +0.2392, -0.1954, -0.5721, +0.1757, +0.5333, +0.3531, -0.3533, -0.0601, -0.1794, -0.4942, -0.3127, +0.0555, +0.1517, +0.4326, +0.1986, -0.1763, -1.8729, +0.3858, -0.6326, +0.7687, -0.0527, -0.2590, -0.7137, -2.1511, +0.1880, +0.0403, +0.4133, +0.1475, -0.9481, +0.2289, -0.1224, -0.0149, +0.3429, -0.0604, -0.1939, +0.2331, +0.0949, -0.5756, +0.0837, -0.8599, -0.3068, +0.1835, -1.2360, +0.0827, -0.1617, +0.0704, +0.2634, -0.1679, -1.2538, -0.0490, -0.0042, +0.4313, -0.1720, +0.1099, -0.0288, -0.4712, +0.3579, -0.0124, -0.4984, -0.7425], -[ +0.4891, -0.4383, -0.2836, +0.2212, -0.2197, -0.0328, +0.1772, +0.0178, +0.4097, -0.7499, +0.1946, +0.0820, -0.1149, +0.2154, -0.0584, +0.3136, -0.1838, -0.1582, +0.3436, +0.1801, -0.3630, -0.3889, -0.1757, +0.2036, -0.1051, -0.5270, +0.0377, -0.1196, +0.3163, -0.3930, +0.0224, +0.0572, +0.2127, -0.0551, -0.2393, -0.0743, -0.1377, +0.0369, +0.0875, -1.0035, +0.3970, +0.1674, +0.2592, +0.3939, -0.0628, -0.5516, +0.6811, +0.2666, +0.0194, -0.2824, +0.1637, -0.1650, -0.2617, -0.7797, -0.3553, +0.0590, -0.0129, +0.2725, +0.3721, -0.1654, -0.5071, +0.5800, -0.2911, -0.2592, -0.0083, +0.0732, -1.6352, -0.4364, -0.1427, -0.1488, +0.1659, -0.3599, +0.3311, -0.1993, -0.0429, -0.0567, +0.2413, -0.0132, -0.1261, -0.0987, -0.1830, -0.6887, +0.1382, -0.0008, +0.1713, +0.4317, +0.0280, -0.4251, +0.3899, -0.4590, +0.2128, -0.5194, -0.3330, +0.1384, -0.0594, +0.0264, -0.1578, +0.1170, +0.4423, -0.5764, +0.0870, -0.0279, -0.6734, +0.0468, +0.0558, -0.4921, -0.8457, -0.1788, -0.6401, -0.0846, -0.6624, -0.8233, -0.1407, -0.2609, -0.4441, -0.0073, -0.3511, +0.0113, -0.3306, -0.0011, -0.6560, -0.1456, -0.0743, -0.4123, +0.0881, +0.6631, +0.1736, -0.5572], -[ -0.4172, +0.0240, +0.0080, -0.4469, -0.1951, -0.0300, -0.0731, -0.0438, +0.2693, +0.1163, +0.2015, -0.1307, -0.5928, -0.1320, +0.1127, -0.0501, +0.2367, +0.4973, -0.4328, +0.5579, -0.0041, +0.2518, -0.5140, -0.0610, -0.6116, -0.8525, -0.2849, +0.0600, -0.0209, -0.2861, -0.2891, +0.2475, -0.2945, -0.0848, +0.0633, +0.1370, +0.2019, -0.4973, +0.2951, -0.0455, -0.0160, -0.2491, -0.5283, -0.3990, +0.0593, +0.1492, +0.1001, -0.0698, -0.2295, +0.3416, -0.2563, -0.2807, +0.1623, -0.4863, +0.0363, -0.1250, -0.1355, +0.1427, -0.4371, -0.1144, +0.4895, +0.7102, -0.5758, -0.3328, -0.1467, +0.2026, -0.1362, -0.5920, -0.6261, +0.0494, -0.0231, -0.3740, +0.0806, -0.0055, -0.2578, +0.1012, -0.7289, -0.5544, +0.5328, +0.2010, +0.2878, +0.6245, -0.2885, +0.6976, -0.0685, +0.0325, -0.1048, +0.4008, +0.0982, -0.6295, +0.0312, -0.4278, +0.5968, +0.1947, -0.1331, -0.0272, -0.3361, +0.2839, -0.2890, +0.2452, +0.1948, +0.3887, +0.2564, +0.2005, +0.4727, +0.3336, -0.5812, -0.1881, -0.2411, -0.0239, +0.1023, -0.1204, +0.1304, +0.2712, -0.0354, +0.0402, +0.1153, -0.4479, +0.2851, -0.4942, +0.6138, -0.4044, -0.5541, +0.0023, -0.0789, +0.2162, -0.3304, +0.5151], -[ +0.2570, +0.2904, +0.4007, -0.0693, +0.0643, -0.7288, +0.0314, +0.1663, -0.6654, -0.1778, +0.2937, +0.1518, -0.1425, +0.0783, -0.0361, +0.2551, -0.0269, -0.3259, -0.1778, -0.0745, -0.7123, +0.6008, -0.0901, +0.0073, -0.0912, +0.2140, -1.2814, -0.2085, +0.0597, -0.1416, -0.2726, -0.1005, -0.6193, -0.0055, +0.4270, -0.1113, +0.6329, +0.0128, -0.4013, -0.1227, -0.4226, -0.4785, -0.0721, +0.0334, -0.4727, +0.0492, +0.2378, +0.2073, +0.4054, -1.6382, -0.4792, -0.2949, -0.4312, +0.1963, -0.7863, -0.4990, +0.3332, +0.2358, -0.1688, +0.2956, +0.2079, +0.0057, -0.1964, +0.0290, +0.4935, +0.0677, -0.0455, -0.0103, -0.2252, +0.0484, -0.4137, +0.0956, -0.4084, -0.2525, -0.6340, -0.4451, -0.0488, -0.1321, +0.0022, +0.2453, -0.0686, -0.0935, -0.9516, -0.4751, -0.2030, +0.0359, +0.0907, +0.0850, -0.1829, -0.1258, -0.3404, +0.0575, -0.3191, +0.2448, +0.0719, -0.0530, +0.4744, +0.3157, +0.1254, +0.1550, -0.1202, -0.2253, -0.1246, +0.1830, -0.4109, -0.1305, +0.0488, +0.3732, -0.5866, -0.1602, +0.3034, +0.0283, -0.4152, +0.3958, +0.4023, +0.1700, +0.3363, -0.2385, +0.3984, -0.5183, +0.3637, -0.4183, +0.2574, -0.3552, -0.4655, +0.1189, +0.0831, +0.3922], -[ +0.1975, -0.0125, -0.3829, +0.1364, -0.1309, -0.7209, +0.3249, +0.0662, -0.1925, +0.4532, +0.4122, -0.1567, +0.0291, -0.0042, -0.0270, +0.2667, +0.5431, +0.0392, -0.0707, +0.3613, +0.2922, -0.4749, +0.4090, -0.2418, -0.1398, -0.4256, +0.4492, +0.1330, +0.1867, +0.4221, +0.0346, +0.5114, -0.0200, +0.2133, +0.1574, -0.5011, -0.0184, +0.5358, +0.0751, +0.2133, -0.1072, +0.3556, -0.1263, +0.3798, -0.0357, +0.2296, -0.1309, +0.3237, -0.2629, +0.5304, -0.2071, -0.2383, -0.4378, +0.5599, -0.4129, -0.1216, +0.1686, -0.1249, -0.7454, -0.1691, -0.3364, +0.0837, +0.0368, -0.0427, -0.0364, -0.2578, -0.0632, -0.7382, +0.2935, -0.3235, -0.0805, -1.0205, +0.3649, +0.0618, -2.0028, -0.1491, +0.3212, +0.1406, +0.0920, +0.0292, +0.1804, +0.2160, +0.4813, +0.2582, +0.2913, -0.2520, +0.2528, -0.3468, -0.2321, +0.2823, -2.4711, -0.2427, +0.3331, +0.0930, +0.0749, +0.0083, +0.1465, +0.3734, -0.1798, +0.3936, +0.0264, +0.2331, +0.1524, -0.6692, +0.3248, -0.5706, -0.0502, +0.4236, -0.2970, +0.2695, +0.3974, +0.2199, -0.7377, +0.1050, -0.7844, -1.7221, +0.1042, -0.6889, +0.1289, +0.1057, +0.1743, +0.0510, -0.3241, -0.7416, +0.3516, +0.3223, +0.5068, +0.5556], -[ -0.3794, -0.3248, -0.2007, +0.0983, +0.0300, +0.0306, -0.4734, +0.5083, +0.0318, -0.5591, -0.2488, +0.2920, -0.7940, -0.1424, -0.5744, +0.1422, +0.4291, +0.0945, -0.2006, -0.0429, -0.2896, +0.5847, -0.4918, +0.2072, +0.1749, -0.5023, -1.2687, -0.0663, +0.3949, +0.5051, +0.2958, +0.4279, -0.0058, +0.1465, +0.2396, +0.2916, -0.6056, +0.5121, -1.2009, -0.3069, +0.0658, -0.3446, -0.1486, +0.2613, +0.0449, -0.3699, -0.2965, +0.8588, +0.0579, +0.3832, -0.3247, +0.2162, -0.6325, +0.1853, +0.4640, +0.1489, +0.1355, +0.0157, -0.0537, +0.3639, +0.0541, -0.1050, -0.0270, -0.1457, -0.2577, +0.2526, -1.0083, -0.2291, -0.1265, -0.6873, -0.7479, +0.0062, -0.1030, +0.1921, -0.0236, -0.4506, +0.2970, -0.2734, -0.4154, +0.1368, -0.0956, -0.4831, -0.0161, -1.5434, -0.0147, -0.0778, -0.6914, +0.3270, +0.3118, +0.1559, +0.0471, -0.3660, -0.1955, -0.0644, -0.5659, +0.0079, +0.4646, -0.0222, -0.1409, -0.7251, +0.2760, -0.2582, +0.4576, -0.0012, -0.5634, +0.6426, +0.3906, +0.6062, -0.4944, -0.1000, +0.0455, -0.0658, -0.4920, +0.3282, -0.2268, +0.2481, -0.1103, +0.5654, -0.0493, +0.1493, +0.4428, -0.1628, +0.5058, -0.2750, +0.1826, +0.1036, -0.0094, +0.2987], -[ -0.2260, +0.7567, +0.1548, +0.2267, -0.2102, +0.1038, -0.7071, -0.3706, -0.1321, +0.3568, -0.0810, +0.3812, -0.1219, +0.0763, +0.0688, -0.4244, -0.5362, -0.4406, -0.1636, -0.5257, +0.1608, -0.3504, +0.3810, +0.4215, +0.4479, -0.6162, +0.4570, -0.0200, -0.5595, +0.2751, +0.0865, -0.1237, -0.4379, +0.1217, +0.1553, -0.0647, +0.1802, -0.7890, -0.6780, -0.0329, +0.1897, -0.0402, +0.0929, -0.1846, -0.3125, +0.1835, +0.5739, -0.8348, +0.2514, +0.0776, +0.2488, -0.2388, -0.0887, +0.5100, +0.4824, +0.0907, -0.1558, +0.0093, -0.1592, +0.3329, +0.1839, -0.6776, +0.6017, -0.3920, -0.1983, +0.4539, +0.3369, -0.3095, -0.2062, +0.2040, -0.2758, -1.0412, -0.0931, +0.2659, -0.0989, -0.1241, +0.1125, +0.3144, -0.1801, +0.3091, +0.1868, -0.1498, -0.2196, +0.2205, +0.2342, +0.1848, -0.4813, +0.4825, +0.4532, -0.3849, +0.7397, -0.1686, +0.0756, -0.3855, -0.0421, +0.2962, +0.4714, +0.1291, +0.1995, +0.2049, -0.1760, +0.2190, -0.4469, -0.1702, -0.3598, +0.3444, +0.2158, -0.1050, +0.5222, +0.7142, +0.1508, +0.1946, +0.0269, +0.0440, +0.3936, +0.6121, -0.5916, -0.0273, +0.2061, +0.7108, -0.4133, +0.3786, +0.0896, -0.0926, -0.1302, +0.2226, -0.8409, -0.2734], -[ +0.0746, +0.5277, -0.2579, +0.0490, +0.2846, -0.1064, +0.2009, +0.1254, +0.0100, -0.4269, -0.1727, +0.1225, -0.2659, -0.1257, +0.0897, +0.0980, +0.2186, +0.1964, +0.1386, +0.0449, -0.2060, -0.0523, +0.1919, -0.2029, -0.7634, +0.0438, +0.5556, -0.5136, -0.1754, +0.2511, +0.1539, -0.1031, -0.3205, +0.2889, -0.0575, -0.7914, -0.2965, -0.2540, -0.0479, -0.4137, +0.2184, -0.1993, -1.6655, +0.2774, +0.0802, -0.1146, -0.0431, -0.6283, +0.2033, +0.0944, +0.0700, -0.2939, +0.4493, -0.4324, -0.0849, -0.4782, +0.0378, +0.2480, +0.1886, +0.0819, -0.2805, -0.2166, +0.2029, -0.1147, -0.7557, +0.4063, -1.5912, +0.0828, +0.2826, +0.2054, +0.6607, +0.2944, -0.2907, -0.4596, -0.4882, +0.0842, +0.0368, +0.0890, -0.4955, -0.1063, -0.4493, +0.1732, +0.1663, -0.3820, +0.1497, +0.0367, +0.3839, -0.3105, -0.1850, -0.3871, -0.1133, -0.2798, -0.0928, -0.0933, +0.4644, -0.0123, -0.2520, +0.3070, +0.0444, +0.2629, +0.3928, -0.0817, +0.4470, -0.0488, +0.1500, +0.0260, -0.0584, +0.1138, -0.1108, -0.6007, -0.0961, +0.1929, +0.0235, -0.0871, +0.0723, +0.4203, +0.1381, +0.2765, -0.2520, -0.3832, -0.0519, +0.2421, -0.2301, -0.4234, -0.0285, +0.3181, +0.2770, -1.8011], -[ -0.2868, -0.3935, -0.5589, +0.0113, -0.1917, -0.0748, -0.2643, +0.0592, +0.3410, -0.1632, -0.5615, +0.2295, -0.0497, -1.2540, -0.2388, +0.5586, -0.2045, +0.0192, +0.1809, +0.5558, -0.7810, +0.6938, -0.1196, -0.4952, -0.3275, -0.2649, -0.6244, +0.0098, +0.1832, -0.3085, -0.7072, -0.2813, +0.0461, +0.0705, +0.0733, -0.0478, -0.1077, +0.3497, -0.7384, +0.2656, -2.5540, +0.1422, +0.3591, -1.4904, +0.3778, +0.2473, +0.1276, +0.2001, -0.1773, -0.0845, +0.4165, -0.0819, -0.0420, +0.1351, +0.0798, +0.4492, -0.4802, +0.6882, +0.3721, +0.1690, -0.2493, +0.6320, -0.0204, +0.5470, +0.2155, +0.0375, -0.6564, -0.5234, +0.0281, -0.3563, -0.2004, -1.2125, +0.3293, +0.0398, +0.2424, +0.2186, -0.0168, +0.2455, +0.6334, +0.4658, -0.1787, +0.3617, -0.0247, -0.5160, +0.1622, -0.1742, -0.4829, -0.1420, -0.1141, -0.0967, +0.1395, -1.1766, -0.0082, -0.4082, +0.2422, +0.0547, -0.3977, -0.0369, -0.0822, +0.3921, +0.0441, +0.3346, +0.4306, -0.8432, -0.1967, -0.8309, -0.2557, -0.1702, -0.0721, -0.0372, +0.1274, -0.2920, +0.3827, +0.0756, -0.3589, -0.9998, -0.1494, +0.2911, -0.2244, -0.3509, -0.0310, +0.1875, -0.8587, -0.2080, +0.6350, -0.9076, -0.2033, +0.4671], -[ -0.7960, -0.0618, -0.2682, +0.4685, +0.4521, -0.4692, -0.1145, -0.2899, +0.1577, +0.5050, -0.2050, +0.3890, +0.0031, +0.2431, +0.4231, -0.3186, +0.1361, -0.1422, +0.4067, -0.2494, -0.4361, +0.0210, -0.1710, +0.2828, +0.2173, -0.3046, +0.2073, -0.2830, +0.1914, -0.0445, -0.4559, +0.0479, +0.1049, -0.4160, +0.1723, -0.1863, -0.3057, -0.0457, -0.1247, -0.2041, -0.0285, +0.1094, +0.1366, -0.0343, -0.0559, -0.0433, -0.5415, +0.5570, +0.1075, -0.3411, +0.1780, +0.1442, -0.0115, -0.4046, +0.0033, -0.0306, -0.2559, +0.1758, +0.0995, +0.2726, -0.6563, -0.2481, -0.2660, +0.0806, -0.7367, +0.1028, -0.3571, -0.6223, +0.1132, -0.1558, +0.0605, +0.2018, +0.0006, +0.3137, -0.2375, -0.0238, -0.2493, +0.0992, -0.9349, +0.2512, +0.1979, -0.6349, -0.2343, +0.0948, -0.1668, -0.2974, +0.1970, +0.0769, -0.0676, -0.0045, -0.1148, -0.4819, -0.0507, -0.1753, -0.1800, +0.1518, -0.1696, -0.1220, +0.2754, -0.0078, +0.5306, +0.0480, +0.2954, +0.0196, +0.1789, +0.3644, +0.3854, +0.1990, +0.2228, -0.2618, -0.4181, -1.1161, -0.0654, +0.0648, -0.2549, -0.2684, +0.1203, +0.0341, +0.0353, -0.3855, -0.1757, +0.4386, -0.5043, -0.0174, +0.4705, -0.0701, +0.2707, +0.2948], -[ +0.0304, +0.2484, +0.1499, -0.0663, -0.1398, -0.9304, +0.5208, -0.4042, -0.0156, -0.4701, +0.0626, -0.1338, -0.2497, +0.2458, -0.1080, -0.5852, -0.5596, -0.0620, +0.4155, +0.3462, -0.0990, -0.0767, -0.3595, +0.1330, +0.3053, -0.2497, -0.0972, -0.1059, +0.1333, +0.0910, +0.1297, +0.1299, -0.0742, +0.2257, +0.7571, -0.0732, -0.0450, -0.2377, +0.0517, +0.1521, +0.2346, +0.3298, -0.2933, -0.1762, -0.3784, -0.3321, +0.0183, -0.6913, -0.2930, -0.4202, -0.2845, +0.2765, -0.0228, -0.1357, -0.0962, +0.3105, -0.0857, -0.0018, +0.0734, +0.0672, +0.4124, +0.1309, +0.0504, -0.0495, -0.0935, +0.0104, +0.0581, +0.0494, +0.0438, +0.0244, +0.0591, -0.2283, +0.2515, -0.6760, +0.0272, +0.0255, +0.0378, +0.0615, +0.0701, -0.2619, -0.4770, -0.8818, -0.2996, -0.1747, -0.3756, -0.0392, +0.1243, -0.2019, -0.2055, -0.4395, +0.4751, +0.3359, +0.2720, -0.0666, -0.2713, -0.1620, -0.4153, +0.0841, +0.0958, +0.2964, +0.0874, +0.2296, -0.0019, -0.7121, -0.1403, -0.1782, -0.2097, -0.1471, -0.2917, -0.1616, -0.1025, +0.4825, -0.0708, -0.6095, +0.0286, -0.0165, +0.0364, -1.1206, +0.2063, -0.5648, -0.0118, +0.2235, -0.1748, -0.0333, -0.1133, -0.1650, -0.2809, -0.3219], -[ +0.3417, -0.0669, -0.5012, -0.2426, -0.1448, -0.0072, -0.3720, -0.0038, -0.5539, -0.1009, -0.2102, +0.0252, +0.0159, -0.0540, -0.2318, +0.6433, +0.1801, +0.0422, +0.5876, +0.0262, +0.2654, +0.1300, -0.0119, +0.0792, +0.5173, +0.1446, -0.9506, +0.2122, -0.0555, -0.0241, -0.2194, -0.1039, -0.1105, -0.2720, +0.2048, +0.1428, -0.2208, -0.0013, +0.0753, -0.2008, +0.3870, -0.1143, -0.2150, +0.3696, -0.1453, -0.6168, -0.2495, +0.0106, +0.1591, -0.1841, +0.2397, -0.2872, -0.0174, -0.0607, -0.2253, +0.0200, +0.1159, -0.0679, -0.0954, -0.9604, +0.0805, +0.2362, +0.1299, -0.1279, +0.4026, -0.6535, -0.2018, +0.1455, -0.6182, -0.1829, +0.1070, +0.2119, -0.0032, -0.3414, +0.1055, -0.2112, -0.2494, +0.3378, -1.0081, -0.1132, -0.2351, -0.1892, -0.1094, -0.0054, -0.2324, -0.0244, -0.3248, +0.2550, -0.9689, -0.0658, +0.1947, -2.5345, +0.3302, +0.4807, +0.0551, +0.1860, -0.6744, -0.5560, -0.1322, -0.3581, -0.3368, -0.0779, -0.8267, -0.5181, +0.0284, -0.1807, +0.0933, -0.2565, -0.1235, -0.3083, -0.0744, -0.5631, -0.0848, +0.1322, -0.3297, -0.0988, -0.5754, +0.0444, -0.3383, +0.1246, +0.5768, +0.3762, +0.1100, -0.3845, -0.0179, +0.1544, -0.6446, -0.5308], -[ -0.5427, -0.0338, +0.0963, +0.2599, -0.1536, -0.0663, +0.2735, -0.6538, -0.0965, -0.2710, -0.2684, -0.0675, +0.5365, -0.1019, -0.2091, +0.0217, +0.2073, -0.2618, +0.0837, -0.9070, +0.1612, -0.8085, -0.3699, +0.0498, -0.3775, -0.1093, -1.0799, -0.1810, +0.1538, +0.1324, +0.1236, -1.0255, -0.8099, -0.2997, +0.1969, +0.0112, +0.1720, -0.1479, +0.0200, +0.2020, +0.4833, -0.1327, -0.1693, +0.2302, -0.9615, -0.4790, +0.6333, -0.4429, -0.0058, -0.1308, -0.1299, +0.0825, -0.3558, +0.3765, -0.0173, -0.1161, -0.2766, -0.3952, +0.1106, +0.4845, -0.2074, -0.2091, -0.1880, -0.6209, -0.1540, -0.4112, +0.2711, +0.1249, +0.2060, +0.0593, -0.2982, +0.0173, +0.3157, +0.3962, -0.0801, +0.1830, +0.0162, -0.0178, -0.6936, -0.9106, -0.2103, +0.2793, -0.4768, -0.7983, +0.0209, -0.0027, +0.1447, +0.2995, +0.4371, -0.0472, +0.7882, +0.1981, -0.6853, -0.0777, -0.4437, +0.0041, +0.3253, +0.3414, -0.2789, -0.1487, +0.1273, -0.1055, +0.0865, +0.1486, +0.3686, +0.0827, +0.5210, +0.0301, +0.1958, +0.0794, +0.0041, -0.0744, +0.1665, +0.0668, -0.1141, -0.1828, -0.1631, -0.5397, -0.3060, -0.4002, +0.2132, +0.1136, -0.8430, +0.4804, +0.2682, -0.0807, +0.1907, +0.4173], -[ +0.4729, -0.3252, -0.1707, +0.1883, -0.0466, +0.2219, -0.2109, -0.0610, -0.0585, +0.3506, -0.2641, -0.1655, -0.4234, -0.1770, +0.2837, -0.5034, +0.0796, +0.3477, -0.3089, +0.3252, -0.5325, +0.2223, +0.1919, +0.2526, +0.6505, -0.6854, +0.2076, -0.7610, +0.3154, -0.0866, +0.4012, +0.4719, -0.0670, +0.0731, +0.2611, -0.1914, -0.1381, +0.4520, -0.2751, +0.3909, -0.2800, +0.4110, +0.1427, +0.1037, +0.4095, +0.0938, +0.3174, -0.0300, +0.3178, +0.2046, +0.0504, -0.4414, -0.5503, +0.1098, +0.3558, +0.0951, +0.4614, +0.0209, +0.0557, -0.1669, +0.5716, +0.1620, -0.2768, -0.2050, -0.0581, +0.4641, -0.2578, +0.2721, -0.1620, +0.3198, -0.2768, -0.2497, +0.1483, -0.4191, -0.6559, +0.1925, -0.6023, -0.5435, +0.3011, +0.2325, +0.0488, +0.2710, +0.2551, +0.3810, -0.9171, -0.1271, +0.3213, +0.3865, +0.5207, -0.5304, +0.3992, +0.1472, -0.4754, -0.2000, -0.1819, +0.1249, +0.2645, -0.1131, -0.2471, -0.5443, +0.0699, +0.1955, +0.5019, -0.1998, -0.0022, -0.0351, -0.2137, +0.5355, +0.2225, +0.1104, +0.1584, -0.9480, +0.4581, -0.3726, +0.3110, +0.5740, -0.2206, -0.6886, +0.0818, -0.5701, -0.5377, +0.3475, +0.4781, -0.3746, -0.4647, -0.7824, +0.5417, +0.0837], -[ +0.1463, -0.4690, -0.2129, -0.0394, +0.1190, -0.1925, +0.1709, +0.2467, -0.1451, -0.5976, +0.1614, -0.5931, -0.6966, -0.7534, -0.6930, -0.1845, +0.4488, +0.3343, +0.3934, -0.2199, -0.4314, +0.1209, -0.1188, +0.4470, +0.2032, +0.7572, -0.0303, -0.3344, -0.1303, -0.1170, +0.4622, -0.1294, -1.0551, -0.4341, -0.0495, -0.6049, +0.2729, -0.2732, +0.3282, -0.2155, +0.1926, -0.6633, +0.5239, -0.0609, -0.0240, +0.0867, -0.5672, +0.6718, -0.1453, -0.0414, -0.0603, +0.7039, -0.0501, -0.1207, -0.2485, +0.1020, -0.1716, -0.5124, +0.4886, -0.0288, +0.1437, +0.2619, -0.2767, +0.2178, -0.6429, -0.1590, +0.0571, +0.0183, -0.2389, +0.1126, -0.1996, +0.4986, +0.3088, -0.3353, +0.0310, -0.2239, -0.1414, +0.3398, +0.3030, +0.0340, +0.0177, +0.4951, -0.0158, -0.0616, -0.4598, +0.0560, -0.0692, +0.2668, -0.2860, -0.1604, -0.2952, -0.4506, -0.0623, +0.1868, +0.1217, +0.1012, -0.4279, -0.1474, -0.0658, -0.3745, +0.0070, +0.4081, +0.1593, +0.1378, -0.0797, -0.1156, +0.0593, -0.2153, -0.0258, +0.2489, -0.7201, -0.6776, -0.1668, -0.1859, -0.1717, -0.0713, -0.0811, -0.1528, +0.6833, +0.2502, -0.4855, +0.4768, +0.1001, -0.6443, +0.0244, -0.5791, -0.0053, -0.3225], -[ -0.3578, -0.0330, -0.0935, -0.1194, -0.3506, -0.5840, +0.2730, +0.0612, -0.2388, -0.7844, -0.1847, +0.3442, +0.4571, +0.3744, +0.3295, -0.5630, +0.1737, -0.0851, -0.0019, +0.2777, -0.4277, +0.2655, -0.0971, -0.2012, +0.0665, -0.5144, -0.2566, +0.0755, +0.3094, -0.3194, +0.2004, +0.4391, +0.0725, -0.8200, -0.1210, +0.0737, +0.3420, -0.7640, -0.3188, -1.1310, +0.0037, -0.4896, -1.0489, -0.5008, +0.4717, -0.1788, +0.1819, -0.5036, -0.3005, -0.5894, +0.3765, -0.1255, -0.2696, -0.0934, +0.0745, -0.3031, -0.1832, -0.2288, -0.2928, -0.0349, -0.0379, -0.0718, +0.0675, -0.8556, -0.4772, +0.1849, -0.4101, +0.5785, +0.0337, +0.3628, -0.3348, -0.3596, +0.4075, -0.1897, +0.1572, -0.6488, -0.3461, -0.0885, +0.3397, -0.1354, -0.0484, -0.4474, -0.1395, +0.0129, +0.7105, +0.0230, -0.2715, +0.7769, -0.3883, +0.2059, -0.3872, +0.4329, +0.4668, +0.2092, +0.2475, +0.1248, -0.1951, +0.1088, +0.2854, -0.1653, +0.5339, +0.0804, +0.2014, -0.5366, +0.2187, -0.0450, +0.2317, +0.3133, -0.0154, -0.1658, +0.1762, +0.2818, -0.0363, +0.0363, -0.0604, -0.6920, -0.0610, -0.4703, -0.2432, -0.7337, -0.2740, +0.3135, -0.3662, +0.0544, -0.0756, -0.3311, +0.2759, +0.1349], -[ -0.5359, -0.0102, -0.3605, +0.1387, +0.1140, -0.0696, +0.1452, -0.3874, -0.2485, -0.1211, -0.0189, -1.1048, -0.3217, -0.0316, -0.1797, +0.4907, -0.6547, -0.5900, +0.5043, +0.0597, +0.3385, -0.4752, -0.3171, -0.0626, -0.0172, +0.5780, -0.1524, +0.7518, +0.0636, +0.3259, +0.2647, +0.1111, -0.5747, -0.2667, +0.0788, -0.0118, -0.2702, -0.2289, +0.2989, -1.4968, -0.5847, -0.3165, -0.1631, -0.4081, -0.9466, +0.2935, +0.4158, +0.2195, -0.0534, +0.0594, +0.0994, -0.1887, +0.2800, -0.4287, +0.2644, +0.2328, -0.1297, +0.0365, +0.3058, -0.3395, -0.0712, +0.0689, -1.0155, +0.1880, -0.0916, +0.1846, +0.0980, -0.9595, -0.0427, +0.0760, -0.2060, +0.0713, +0.1735, -0.3935, +0.1507, -0.3321, +0.0651, +0.0346, +0.2648, -0.0152, +0.0820, -0.2272, +0.0884, +0.0972, +0.2270, -0.2256, +0.4365, -0.7576, +0.0303, -0.1140, +0.1507, -0.2631, +0.1429, +0.1498, -0.1847, -0.2358, -0.7038, -0.2515, -0.0606, +0.1261, +0.0962, -0.3494, +0.1421, -0.2751, +0.2173, +0.6840, +0.0909, -0.4937, -0.6438, -0.4253, -0.9099, +0.1605, -0.1468, -0.3056, -0.1973, +0.1508, +0.7064, -0.1969, -0.4109, -0.0736, -0.2653, +0.2287, -0.1757, -0.0510, +0.1456, +0.0674, -0.0729, +0.1149], -[ -0.2603, -0.0371, +0.1742, +0.0171, -0.5403, +0.3990, -0.0186, +0.0961, -0.2873, +0.0971, -0.1437, -0.1918, -0.3327, -0.5669, -0.3869, +0.1537, +0.1155, -0.0109, -0.2342, -0.2900, +0.2313, +0.1001, -0.3775, -0.2691, -0.5128, -0.2853, -0.2645, -0.1067, -0.6998, -0.5346, -0.2315, +0.2637, +0.2176, -0.3517, -0.4797, +0.1030, +0.5529, -0.0879, +0.0437, +0.2478, +0.4148, +0.0286, +0.1227, +0.0118, +0.0197, -0.2305, -0.3564, -0.0727, -0.3471, +0.2145, +0.2042, -0.3092, -0.0730, +0.0670, +0.1164, -0.3716, +0.0041, +0.2536, -1.2610, +0.1621, +0.3296, -0.2351, -0.6076, +0.8634, -0.2071, +0.1321, -0.6728, +0.1726, +0.9794, +0.4386, -0.0884, +0.2060, +0.2639, +0.3312, -0.3314, +0.1016, -0.2241, -0.0825, +0.4971, -0.3063, +0.2928, +0.2271, -0.4570, -0.6474, +0.0958, -0.2129, +0.1955, -0.1578, +0.4631, -0.1372, -0.0549, -0.3780, +0.3314, +0.3777, -0.5632, +0.3343, -0.8950, -0.0890, -0.2076, +0.3273, -0.7177, -0.0715, -0.2924, +0.3499, -0.5113, +0.4376, +0.0079, -0.1245, +0.1626, +0.1324, +0.1252, -0.1508, -0.0076, +0.1028, +0.1006, +0.3393, -0.0165, -0.3563, -0.2005, +0.0315, -0.1927, -0.7286, +0.2848, +0.2441, -0.1678, -0.2694, -0.4696, -0.6342], -[ +0.2720, -0.1778, -0.1369, -0.3443, -0.2252, +0.2477, +0.4903, +0.1526, +0.4822, +0.2459, -0.1381, -0.4302, -0.1277, -0.3068, -0.1922, -0.0121, +0.1141, -0.3890, +0.1171, -0.5475, -0.1730, -0.3005, +0.2933, -0.1521, -0.5420, +0.1819, -0.0135, -0.3457, -0.4334, -0.1825, +0.0948, -0.1937, -0.0644, -0.6862, +0.1215, +0.1697, -0.0589, -0.7061, -0.3631, -0.2695, +0.0781, +0.0823, +0.3035, -0.7003, -0.1743, -0.8620, -0.2795, -0.0148, +0.3382, -0.0887, +0.2581, -0.1551, +0.4152, +0.3616, -0.2303, -1.8451, -0.6401, +0.0551, -0.4472, -0.5881, -0.3316, +0.4345, -0.5967, +0.2330, -0.3441, -0.0633, -0.3617, -0.1872, -0.2034, -0.6574, +0.1527, -0.1274, -0.0872, -0.0529, -0.7246, -0.3327, -0.0813, +0.6272, -0.0695, -1.5454, -0.2455, +0.4472, -0.3137, +0.1199, -0.3924, +0.2120, -0.8677, +0.1076, +0.0304, +0.2456, +0.2917, +0.1679, +0.4955, -0.0906, -0.1439, +0.2012, -0.6725, +0.6411, -0.3576, +0.1541, +0.3634, -0.3872, +0.0128, +0.1533, -0.0102, -0.1289, +0.2123, +0.3605, +0.3294, -0.4121, +0.0858, -0.2367, -0.0310, +0.2706, +0.1169, -0.4682, -0.0083, +1.0890, -0.2360, -0.2969, -0.1414, +0.1488, +0.0117, -0.4906, +0.2854, -0.5291, -0.0038, -0.3726], -[ -0.9123, +0.0444, +0.2139, +0.1979, +0.6773, -0.2547, -0.5212, -0.7277, +0.3399, +0.2294, +0.4738, -0.1271, -0.0345, +0.0846, +0.1552, +0.1681, +0.0169, +0.5259, -0.2099, +0.6616, -0.6642, -0.5233, -0.2239, -0.2196, +0.1844, +0.8773, -0.9151, -0.2353, -1.1933, -0.1885, -0.0278, +0.2114, +0.1475, +0.0575, -0.1578, -0.1424, +0.0506, -0.9953, +0.2257, +0.2780, -0.0439, +0.5366, +0.0773, -0.3094, -0.0787, +0.0362, +0.0437, +0.2446, +0.1188, +0.0784, -0.4316, -0.0244, -0.4971, +0.2532, +0.4089, +0.1717, -0.1273, +0.3130, +0.3001, -0.2192, -0.3720, -0.1450, -0.1008, +0.0182, -0.1237, -0.2441, -0.5818, +0.6562, +0.1638, +0.4739, -0.1328, -0.4206, -0.1056, +0.1616, -0.1224, +0.5567, +0.1357, -0.6125, +0.2223, -0.1279, +0.1940, +0.1744, +0.0257, -0.0630, +0.3356, -0.1279, +0.1914, -0.1527, +0.0946, +0.0028, -0.1944, -0.3899, -0.1426, -0.3997, -0.2391, -0.0563, +0.2569, +0.4066, -0.3397, +0.1401, -0.6502, +0.0307, +0.1740, -0.0535, +0.1671, +0.2035, +0.1765, +0.4415, +0.0470, -0.6338, -0.0369, -0.1471, -0.4751, +0.0414, -0.0126, +0.3502, +0.1979, +0.5251, +0.1356, -0.0603, -0.4011, -0.9776, -0.0466, -0.2814, -0.3504, -0.1620, +0.0310, -0.0188], -[ +0.2100, +0.2702, +0.1508, -0.6445, +0.2283, +0.1662, -1.2956, -0.1560, -0.0160, -0.6084, -0.8858, -0.1901, -0.4353, +0.0917, -0.3117, -0.4295, -0.2663, -0.1753, -0.4715, +0.1984, +0.3732, +0.1982, +0.7297, -0.0944, -0.0069, -0.5450, -0.4509, +0.2860, -0.4866, -0.3327, -0.1191, -0.3984, +0.0707, +0.2318, +0.3157, -0.8472, -0.0366, +0.0092, -0.8677, -0.1611, -0.6990, +0.1887, +0.0654, -0.1447, -0.3013, -0.1455, +0.0599, +0.3648, -0.9125, -0.4841, -0.1027, +0.1892, +0.4048, -0.1230, -0.1067, -0.2644, +0.0394, +0.3517, +0.0113, -0.3911, +0.0422, -0.0808, -0.0360, -0.3074, -0.3820, -0.0464, -0.2482, +0.1295, +0.2504, +0.3436, -0.4812, -0.7606, -0.2812, -0.1871, -0.2238, -0.3493, -0.4621, -0.1549, +0.2794, +0.0510, -0.2936, -1.0302, -0.4348, +0.2081, -0.2956, +0.0255, -0.5583, -0.3831, +0.0894, -0.2232, -0.5710, -0.2734, +0.0063, -0.3328, +0.0694, -0.2885, -0.6945, +0.0420, +0.1455, -0.4186, +0.2431, -0.5892, -0.3834, +0.0203, +0.5596, -1.6819, +0.0554, -0.1604, +0.5863, +0.0559, -0.4239, +0.1397, +0.0572, -0.4374, +0.1179, +0.1124, +0.5875, -0.7046, +0.3946, -0.0895, -0.0094, -0.1378, -1.3852, +0.4762, +0.2008, -0.8352, -0.5217, -0.0185], -[ -0.1671, -1.1764, +0.1621, -0.5658, -0.0572, +0.3558, +0.2116, -0.2299, +0.2658, -0.1310, -0.0791, +0.3046, +0.4954, +0.1596, +0.1301, +0.3037, -0.3110, -1.0997, -0.5251, -0.8304, +0.2336, -0.0942, +0.0593, +0.1368, -0.0665, +0.0642, -0.0707, -0.7846, -0.6414, -0.0603, -0.1403, +0.3038, -0.9488, -0.2532, -0.0708, +0.2557, +0.1922, -1.2128, -0.7302, +0.5368, -0.6734, -0.6932, +0.3266, -0.0023, +0.1400, +0.0976, -0.3127, -0.0888, +0.3628, -0.7234, -0.5136, -0.1962, +0.5085, -0.6680, -0.8076, +0.1911, +0.4338, +0.3924, -0.1421, +0.0530, -0.8098, +0.0310, +0.5896, -0.1604, -0.4273, -1.0781, -0.1325, -0.4743, +0.2783, +0.2733, +0.7168, -0.2511, +0.0565, -1.1960, +0.2518, +0.4604, -0.0924, -0.4514, +0.7231, -0.1294, +0.4265, +0.2517, +0.2552, +0.4699, -0.1408, +0.3396, -0.0282, -0.0951, +0.2132, +0.1487, +0.2110, +0.5632, +0.0888, -0.2742, +0.4847, -0.2481, -0.1111, -0.4354, -0.3031, +0.1092, +0.0447, -0.3078, +0.0498, +0.2634, -0.5569, -0.0296, -0.5777, -0.2385, +0.3141, -1.1835, -0.0859, -0.8586, -0.8783, -1.2474, +0.1476, -0.0402, +0.3065, +0.0336, +0.0676, -0.4700, -0.7217, -0.1243, -0.0595, +0.6398, -0.0159, +0.0005, -0.1098, +0.4656], -[ -0.5195, +0.3404, -0.3531, +0.2154, -0.1155, -0.0278, -0.3784, -0.0213, +0.2568, -0.0369, +0.5176, +0.5246, +0.2817, +0.1790, +0.5503, -0.5890, -0.1931, -0.1426, -0.9264, +0.3729, +0.1954, -0.2827, -0.2495, -0.4058, -0.0431, -0.2844, -0.4624, -0.7645, -0.0136, +0.4161, -0.3148, +0.2097, -0.7090, -0.2867, -0.1543, -0.2589, +0.4534, +0.2831, -0.0523, +0.0365, -0.7042, -0.1911, -0.9008, -0.3176, -0.3476, +0.5616, +0.4673, -0.4465, -0.2286, -1.2426, -0.4620, +0.3640, -0.4095, -0.1215, +0.0026, +0.1014, -0.5777, +0.2572, +0.3108, +0.1215, -0.1101, -0.2438, +0.1473, -0.0145, +0.1190, -0.0992, -0.1653, -0.4377, -0.1944, +0.3170, -0.3541, +0.4494, +0.1266, +0.0878, -0.4318, +0.0621, +0.4584, -0.2948, +0.3979, +0.6689, +0.0023, -0.0930, +0.0135, +0.3131, +0.0860, +0.0812, +0.0076, +0.0297, +0.2671, +0.4173, -0.0552, -0.3653, +0.2500, +0.3160, -0.3986, +0.1365, +0.0135, -0.0225, -0.1528, +0.2536, -0.0403, +0.7018, -0.0530, -0.1844, -0.2184, +0.1312, +0.3061, -0.4891, -0.2551, +0.1492, -0.6924, +0.5737, -0.3925, +0.3981, +0.2566, -0.5974, -0.3199, -0.4306, -0.6541, -0.0985, -0.0027, -0.3796, -0.7251, +0.0124, -0.3468, +0.0109, +0.2108, -0.1597], -[ +0.3500, -0.0814, -0.3781, +0.1849, -0.0398, -0.5218, -0.0272, -0.0869, +0.2953, -0.0419, -0.1369, +0.1997, +0.3483, -0.0545, -0.2395, -0.0747, -0.0566, +0.0659, -0.7807, +0.0158, -0.6511, -0.2354, +0.4648, -0.3432, +0.1521, -0.3537, +0.0140, -0.3688, -0.2998, +0.4387, -0.8532, +0.5483, +0.1047, -0.3179, -0.3049, -0.2693, -0.8843, -0.1056, +0.5669, +0.4295, -0.2638, +0.0339, +0.1599, +0.5114, -0.5636, +0.3067, +0.4570, -0.1586, +0.1503, -1.6244, +0.5383, -0.0182, +0.7848, -0.4757, +0.0293, -0.5816, -0.8401, -1.2805, -1.0349, +0.1066, -0.7504, +0.4626, +0.2619, -0.0731, -0.2141, +0.4880, -0.1922, +0.2428, -0.2011, +0.0218, -0.1903, -0.1049, +0.5227, +0.3558, -0.2009, +0.1134, -0.1270, -0.2554, -0.0951, +0.3196, -0.3987, +0.4664, +0.6720, +0.3292, -0.5504, -0.1604, +0.3071, +0.8084, -0.1885, -0.0835, +0.1901, +0.2317, +0.2807, -0.3768, -0.6584, -0.0510, -0.1654, +0.2020, +0.0449, -1.0815, -0.7504, +0.0130, +0.4330, -0.1540, +0.1864, -0.6145, +0.1910, -0.2333, +0.4343, +0.2469, +0.2619, -0.0106, +0.0057, -0.5008, -0.1822, -0.2423, -0.1104, +0.2665, -0.1470, +0.3632, -0.4491, +0.4816, +0.1840, +0.1745, -0.2111, +0.2683, +0.3297, +0.1877], -[ -0.2181, -0.3669, -0.2964, +0.3058, -0.3541, -0.0811, +0.0295, -0.4293, -1.0930, -0.0978, -0.4017, -0.6569, -0.4352, +0.4750, +0.0985, +0.4936, -0.4778, -0.8080, -0.2029, +0.4299, -0.3210, +0.0493, +0.5580, +0.1250, -0.3894, +0.3131, -0.6475, +0.1030, +0.1899, -0.2622, +0.3027, -0.1317, -0.3667, -0.3282, -0.1016, +0.1851, -0.3412, +0.3022, -0.1395, +0.0033, +0.1368, -0.0801, -0.3422, -0.3410, +0.0900, -0.1820, -0.8251, +0.2052, -0.3456, +0.0305, -0.1559, -0.4559, -0.0082, -0.6232, -0.1022, +0.2668, -0.2092, -0.1114, +0.1552, +0.5084, -0.2201, -0.3441, -1.8057, -0.6636, -0.0121, +0.2468, +0.3004, +0.0171, -0.7727, +0.4247, -0.2574, +0.3720, -0.0060, +0.0248, -0.3877, -0.5715, +0.5129, -0.0848, -0.1308, -0.7924, +0.0031, +0.4201, +0.2222, -0.1949, +0.5746, +0.0033, +0.0493, -0.6773, +0.0832, -0.7968, +0.0040, +0.3671, -0.9648, +0.4049, +0.1273, +0.0890, +0.1222, +0.5100, +0.4577, -1.5089, +0.7567, -0.6895, +0.3174, -0.2088, +0.1358, -0.1296, +0.0915, +0.1119, -0.1448, +0.0910, -0.1659, +0.2917, -0.4194, +0.1279, -0.0591, -0.1723, +0.1129, -0.0468, -1.8116, -0.7604, +0.6269, +0.0954, -0.0841, -0.0007, -0.5055, -0.9868, -0.0303, +0.1027], -[ -0.5874, +0.2514, -0.1231, -0.0330, +0.4428, +0.1063, +0.1151, +0.2026, -0.0020, -0.6013, -0.3875, +0.2515, +0.2784, -0.1536, +0.1978, +0.2145, -1.3234, +0.1117, +0.2720, -0.1486, +0.1054, +0.0113, +0.0132, -0.0967, -0.1015, -1.0195, +0.5487, -0.2038, +0.2075, +0.3680, -0.9669, +0.4083, +0.0481, -0.2403, -0.0294, -0.4277, +0.1194, +0.7027, -0.6755, -0.1961, -0.2788, -0.2914, -0.4673, -0.4899, -0.3931, +0.0432, +0.4230, +0.2377, +0.0376, +0.0975, +0.2338, +0.3000, -0.4371, +0.0149, -0.2847, +0.0249, -0.1593, +0.6943, -0.1149, +0.0460, +0.1944, -0.7968, +0.2648, -0.0197, -0.3869, +0.1502, +0.5416, -0.0894, +0.4532, +0.7573, -0.0851, +0.1281, +0.3852, -0.3954, +0.2652, -0.6565, +0.5305, -0.2989, +0.1300, -0.2681, -0.0794, -0.1805, +0.2225, -0.0568, -0.1095, +0.1222, +0.5207, -0.9506, -0.0757, -0.2837, +0.3085, -0.6325, +0.3886, -0.5259, +0.4371, +0.2709, -0.0185, +0.4792, -0.1605, -0.2958, -0.2826, +0.3939, -0.0091, -0.1684, -0.4489, -0.3065, +0.3087, -0.6195, -0.3497, -0.4977, +0.0604, -0.0125, +0.2495, +0.0333, +0.0399, +0.0073, +0.3408, -0.3676, -0.0212, +0.2581, -0.0685, +0.2426, -0.2597, -0.5160, -0.4757, -0.2658, +0.0227, +0.0970], -[ +0.0093, -0.4700, +0.1762, -0.1294, -0.4414, +0.4187, -0.7453, -0.1341, +0.6195, +0.6688, +0.3135, -0.5195, -1.0696, -0.4702, +0.3055, +0.4733, -1.2103, +0.0683, -0.1177, -0.0072, -0.1611, -0.0118, +0.1761, -0.0295, +0.1544, -0.0917, +0.3525, -0.2863, -2.2019, +0.2342, -0.6767, -0.4618, +0.2596, -1.0226, +0.0569, -0.2370, -0.8063, -0.2402, -0.7422, -1.1868, +0.4577, +0.1431, +0.2850, -0.0668, -0.6830, +0.0544, +0.5712, +0.0852, +0.6046, -0.3226, -0.8249, +0.5732, +0.4551, +0.2685, +0.3294, +0.2633, +0.4235, -0.4677, +0.1689, -0.0392, +0.0783, -1.8104, +0.1639, +0.5689, +0.0870, -0.1894, -0.1476, -0.0461, +0.2086, -0.3823, -0.3466, -0.0321, +0.0693, -0.0006, -1.4277, -0.0726, -0.2946, -2.0583, -0.0256, +0.0797, -0.1760, -0.2886, +0.0704, -0.7420, +0.3506, -0.6752, -0.3591, -0.2184, -0.8295, -0.1363, +0.4063, -0.3944, +0.0611, -0.3330, -0.5026, -0.0190, +0.1847, +0.3862, -0.4704, -0.6358, +0.6430, -0.1764, +0.4011, +0.5447, -0.4389, +0.1427, +0.4116, -1.1485, +0.0316, -0.4613, +0.1691, -0.0244, +0.2805, +0.2416, +0.5727, -0.0941, +0.3743, +1.4470, +0.4419, -0.0468, +0.3021, -0.2312, -0.8495, +0.0835, +0.5309, -0.2028, +0.3905, -0.1122], -[ +0.0752, +0.0150, +0.2277, +0.2336, -0.0294, +0.0046, -0.1880, -0.2058, -0.3752, +0.0308, -0.5647, -0.0348, -0.3271, +0.1256, -0.2492, +0.1411, +0.1288, -0.1735, +0.0183, -0.2937, +0.3075, +0.2286, +0.0514, +0.0680, +0.0677, +0.2656, +0.5678, -0.0251, -0.5281, -0.3159, -0.7901, +0.1914, +0.3463, +0.3335, -0.1845, -0.0192, -0.3350, -0.1783, +0.1260, -1.0444, -1.0731, +0.0681, +0.7435, +0.5641, +0.0493, -0.0775, -0.1503, -0.4617, -0.2162, -0.1410, +0.0794, -0.0299, -0.0313, -0.2886, +0.1580, +0.1827, +0.2332, -1.1469, -0.5700, -0.1996, -0.5411, -0.7951, -0.1828, +0.2829, +0.4221, +0.4606, +0.1601, +0.0138, +0.2354, -0.2838, -0.3106, -0.1425, -0.1619, +0.0943, +0.1043, -0.0261, -0.3670, +0.5062, +0.0239, +0.1849, +0.3217, -0.0021, -0.1181, -0.1056, -0.2594, -0.1163, +0.8224, +0.1053, -0.6115, -0.0286, -0.5085, -0.9107, -0.0883, +0.1590, -0.5129, -0.0467, -0.1499, -0.1286, -0.0148, +0.0526, +0.0459, +0.1349, -0.3812, -0.0746, +0.0487, -0.5304, +0.2377, +0.3832, +0.0044, +0.3182, +0.2768, -0.2763, +0.1824, +0.0226, +0.1581, -0.4358, -0.1383, -0.1353, -0.1551, +0.2103, -0.3063, -0.2774, +0.0230, -0.0362, +0.0192, -0.2141, +0.0979, -0.3159], -[ -0.0419, -0.0777, +0.3841, -0.0682, +0.0602, -0.0142, +0.3072, +0.1123, -0.1152, -0.6429, -0.3717, +0.1347, +0.0736, -0.3171, -0.0392, -0.4347, +0.5384, -0.2828, -0.3478, -0.0573, +0.4897, -0.3302, -0.2610, +0.0459, -0.0019, +0.1974, -0.6482, +0.2458, +0.8673, +0.2961, +0.5106, +0.3156, -0.2581, -0.4444, -0.5281, +0.1575, +0.9596, -0.4447, -1.0717, -0.4923, -0.7752, +0.0074, +0.3487, +0.3625, -0.0324, +0.0220, +0.0051, -0.1540, -0.2180, -1.4096, +0.0733, -0.0739, +0.1112, +0.2122, -0.5884, -1.0504, -0.2483, +0.1575, -0.8630, -0.2243, -0.4722, -0.0606, -0.0646, +0.1405, -0.1568, +0.0748, +0.3745, -0.2890, -0.5863, +0.2160, +0.3611, -0.0561, +0.2224, +0.1889, -1.3108, -0.0004, +0.2976, +0.2768, -0.3054, -0.3590, +0.2496, +0.1015, +0.5414, -0.4413, +0.0228, +0.2076, +0.4847, -0.0805, -1.0076, -0.3076, -1.0655, +0.1657, -0.2875, +0.5334, +0.3380, -0.2665, +0.1956, -0.1954, +0.1349, -0.8937, +0.0309, +0.0168, -0.2777, -0.2163, -0.0916, +0.0300, -0.1277, +0.0414, -0.7315, +0.0488, +0.4247, +0.1316, +0.1135, -0.1051, -0.1309, -0.1044, -0.8220, -0.0567, +0.0379, +0.2563, +0.1797, -0.4149, +0.9036, +0.2335, -0.1581, -1.0918, -0.1141, +0.1986], -[ +0.1620, +0.0525, +0.2825, +0.1766, -0.5124, -0.2711, +0.2033, +0.3561, -0.4575, -0.1425, +0.3946, -0.5566, +0.6812, -0.2584, -0.6222, -0.0825, -0.2584, -0.3425, -0.4243, -0.1663, -0.0387, +0.2983, -0.6109, +0.3213, +0.1116, -0.5393, -0.0405, -0.3135, -0.5467, -0.2588, +0.2841, +0.1341, -0.0671, -0.5900, -0.0844, -0.0060, +0.0039, -0.2902, -0.0617, -0.9089, -0.6582, +0.7022, +0.1184, +0.2793, -0.6139, -0.1467, +0.1029, +0.3300, +0.1581, -1.6732, +0.0529, -0.0717, -0.1348, -0.2701, +0.6427, -0.1426, -0.7679, -0.1773, -0.0468, -0.8633, -0.2012, -0.5331, -0.0730, +0.1582, -0.4009, -0.9252, -0.6341, -0.3110, +0.6246, +0.3947, +0.0449, -0.4382, +0.0634, +0.0549, -0.5379, -0.3123, +0.3462, +0.0553, +0.1570, +0.1192, +0.0976, +0.0384, -0.6041, +0.4562, -0.1092, +0.1150, +0.2481, -0.2930, +0.2234, +0.4952, +0.1798, +0.0867, -0.6549, -0.4116, +0.1977, +0.1876, -0.1772, +0.0741, -0.0881, +0.5824, -0.2807, +0.5821, +0.2042, -0.0642, +0.0963, +0.1606, +0.3724, -0.2031, -0.6640, +0.0836, -0.6957, +0.3378, -0.4809, -0.0965, +0.0832, +0.6068, -0.2548, -0.4951, -0.8361, -0.3385, +0.1360, -0.3956, +0.3266, +0.0292, -0.3892, -0.9007, +0.1332, +0.0558], -[ -0.5053, -0.0056, -0.0157, -0.2332, -0.2504, -0.6772, -0.0701, -0.8848, -0.0729, -0.2332, +0.6407, -0.0057, +0.2843, +0.0248, -0.1075, +0.3802, -0.6702, -0.4808, -0.2968, -0.2487, +0.1597, -0.1762, +0.2180, -0.5460, +0.5291, +0.0029, -0.1640, -0.2401, +0.1515, -0.0861, -0.7412, +0.0474, +0.5479, -0.3211, +0.2273, -0.0894, +0.2859, -0.0022, -0.0546, +0.7176, +0.1987, -0.2125, +0.0789, +0.1262, -0.2137, -0.3493, -0.4483, +0.2265, +0.2843, +0.0182, -0.2458, -0.4856, -0.0276, -0.2832, -0.3814, +0.3204, -0.2147, -0.1549, +0.3989, +0.2441, +0.3185, -0.0043, +0.1700, -1.0504, -0.4027, -0.2520, -0.4576, +0.0832, -0.6956, +0.4274, -0.4245, -0.3049, -0.1310, -0.3137, -0.5878, -0.9518, -0.1134, -0.3513, +0.4882, +0.2152, -0.4919, -0.3083, -1.1540, +0.1574, +0.2203, -0.0611, +0.1209, +0.1361, -1.0856, +0.0596, -0.5650, -0.4817, -0.6875, -0.0192, -0.9278, -0.1133, +0.4473, +0.1598, -0.1971, +0.2941, +0.0386, +0.1221, -0.1578, -0.3761, +0.0652, +0.0135, -0.0168, -0.3974, +0.1956, +0.2392, -0.2015, -0.2476, +0.1609, -0.2278, -0.1244, -0.5739, +0.0733, -0.1489, +0.0554, -0.1186, +0.1206, +0.0507, +0.1600, -0.3697, -0.0156, -0.1706, +0.5505, +0.2888], -[ -0.1441, -0.6867, -0.1856, +0.0836, -0.0195, -1.0782, +0.3874, +0.5730, +0.0155, -0.4862, +0.1564, -0.0685, -0.1844, -0.2942, -0.0680, -0.2499, -0.1955, +0.4290, -0.0309, -0.1902, -0.1089, -0.1331, +0.1736, -0.1114, -0.6211, -0.2851, +0.4648, -0.3757, +0.5143, -0.1961, -1.1787, -0.0822, -0.9298, -0.0575, -0.0810, -0.1105, +0.1556, -0.3125, +0.0121, -0.4311, -0.1150, -0.0729, +0.1442, +0.0010, -0.4371, -0.3218, +0.2610, +0.5168, -0.0881, -0.5511, -0.3889, +0.3866, -0.0268, -0.5956, +0.2354, -0.0765, +0.0752, +0.0620, +0.2763, +0.1597, +0.1268, -0.2620, -0.1920, -0.4731, -0.0949, +0.0526, +0.0183, -0.1555, -0.0186, -0.4900, +0.2100, +0.1879, +0.2320, -0.0182, +0.2642, -1.5689, -0.1792, +0.0765, +0.0820, +0.1618, -0.1505, +0.1876, -0.4799, -0.2403, -0.0195, -0.3666, -0.3242, +0.5161, -0.5034, -0.2576, -0.0922, +0.2173, -0.5231, -0.1292, +0.1421, -0.0612, -0.2282, -0.0650, +0.2040, -0.1661, -0.0442, +0.2837, +0.2685, +0.2053, -0.2892, +0.3197, +0.1064, -0.5052, +0.0086, +0.0213, -0.5589, -0.3259, +0.1149, -0.2762, +0.0865, -0.1293, +0.1472, -0.1404, -0.4006, -0.1410, -0.0833, +0.1596, -0.3999, +0.6348, -0.4201, -0.1734, +0.1566, +0.3922], -[ -0.4463, -0.8048, -0.7356, +0.1460, +0.0796, -0.3917, -0.0929, -0.0512, -0.0202, -0.1835, -0.1234, +0.0951, -0.7147, +0.1053, +0.2777, -0.4612, +0.2941, -0.3057, +0.4781, -0.2275, +0.1869, +0.6802, -0.0955, -0.1964, +0.4448, -0.5904, +0.2355, +0.3444, -0.4221, -0.1616, +0.6833, -0.6940, +0.0522, -0.2631, +0.0802, +0.2420, +0.2262, -0.5625, -0.1779, +0.0672, -0.2451, +0.0491, -0.2086, +0.1848, -0.5552, -0.0539, -0.1190, +0.1836, -0.2562, -0.9894, +0.2771, -0.0312, -0.0372, -0.3661, +0.0913, +0.2429, -0.2496, -0.3468, -0.8493, -0.3405, -0.1393, -0.8580, +0.2082, +0.2707, +0.4955, -0.2358, -0.9446, -0.0396, -0.2040, +0.1312, +0.1943, +0.4561, +0.0624, -0.9785, +0.2706, +0.0700, -0.4747, +0.0249, +0.3163, -0.0417, -0.3902, +0.3497, -0.3734, -0.0541, -1.0476, -1.0559, +0.0154, -0.2214, -0.7409, +0.2483, -0.4352, -0.1075, -0.5088, +0.1883, +0.0789, -0.4612, +0.0170, +0.2151, -0.5866, -0.4812, -0.0041, +0.2591, +0.5013, -0.8808, -0.0658, -1.2264, +0.0519, -0.0329, -0.7076, -0.1661, +0.1264, -0.0450, -0.0888, +0.4685, +0.1105, +0.1554, +0.2321, +0.4143, -0.4147, -0.0165, -0.3604, -0.1711, +0.3779, -0.3951, -0.0960, +0.2519, -0.4560, -0.5186], -[ +0.4357, -0.2816, -0.0726, +0.0159, +0.4219, -0.4210, -1.0534, +0.3333, -0.0570, +0.0180, -1.0561, -0.2100, +0.4299, +0.0214, +0.5867, +0.1563, -0.8647, -0.6048, -0.0495, -0.4188, +0.2581, -0.1145, +0.1407, -0.0038, -0.0930, -0.6543, +0.1419, +0.8011, +0.4019, +0.4711, +0.1047, -0.6029, +0.1970, -0.2324, -0.0876, -0.1380, -0.1413, +0.1488, +0.0933, -0.7038, -0.4010, -0.3743, +0.1752, +0.7176, +0.4492, -1.2117, +0.3082, -0.1290, -0.0373, +0.0082, -0.0949, -0.0331, +0.0811, +0.2990, +0.5426, +0.1248, -0.0967, +0.4965, -0.1428, -0.8514, -0.4806, -0.1907, -0.2422, +0.4623, +0.4411, -0.1519, -0.3876, -0.3160, +0.3082, +0.5254, +0.3891, -0.1164, +0.4031, +0.6385, -1.2680, +0.2974, -0.2722, -0.1344, +0.0951, -0.9709, -0.2844, -0.4577, -1.2314, -0.4512, -0.2718, -0.0077, +0.1323, -0.2322, -0.3902, +0.2807, +0.1331, +0.3453, -0.4011, -0.3785, +0.0003, +0.2927, -0.1422, +0.1466, +0.1190, -0.1930, -0.2706, +0.1211, -0.0512, +0.0136, -0.3189, -0.2296, -0.3379, -0.0159, -0.5560, +0.6998, -0.6045, +0.0192, +0.1636, +0.5251, -0.6971, -0.6466, +0.1709, -0.1946, +0.2255, -0.7963, +0.0577, +0.0189, -0.4210, +0.3754, -0.1801, -0.1880, +0.4825, +0.4688], -[ -0.0248, -0.3050, +0.0822, -0.5501, +0.4472, +0.2818, -0.6301, +0.0073, +0.2909, +0.0858, +0.1408, -0.3285, -0.2764, -0.1787, +0.0716, +0.0329, +0.7880, +0.4589, +0.0041, +0.4854, -0.3556, +0.5245, -0.1774, -0.2720, +0.2797, -0.5097, -0.6442, -0.1416, -0.0001, +0.0497, +0.1853, -0.5225, -1.5283, -0.0167, -0.2040, -0.4138, +0.0709, -0.3782, -0.1211, -1.1340, +0.2464, +0.5452, -0.5746, -0.7027, +0.1475, +0.3543, +0.0788, +0.1023, -0.7441, +0.0887, +0.2495, -0.3362, +0.3458, -0.7175, +0.1189, -0.2040, +0.1343, -0.1777, +0.1490, -0.3085, -0.3325, -0.1427, +0.1050, -0.5217, -0.3907, -0.1847, -0.3585, +0.0752, -0.2239, -0.1014, -0.6872, -0.1984, +0.0581, +0.1419, +0.4200, -0.0880, +0.2755, +0.0956, +0.2161, -0.0357, +0.1413, -0.0564, -0.5320, -0.3599, +0.0062, -0.0357, +0.0675, -0.7344, +0.4821, +0.3718, -0.1757, -0.1432, +0.2607, -0.1414, -0.1301, +0.0107, +0.4697, -0.0751, -0.2666, -0.1156, -0.2967, -0.5221, -0.1189, +0.1350, -0.0184, -0.4117, +0.3091, -0.0179, +0.5623, +0.0939, +0.1702, -0.1826, -0.1898, +0.1039, -0.0803, -0.1483, -0.3127, +0.6268, -0.8931, +0.1739, -0.0456, -0.1243, -0.3044, +0.1390, +0.4330, +0.1570, +0.1181, -0.6267], -[ +0.6183, -0.0118, +0.2871, -0.1356, +0.3158, -0.5624, +0.2109, -0.4473, +0.3720, -0.0401, +0.1532, -0.2335, +0.2688, -0.3778, -0.0986, +0.3159, +0.0588, +0.0381, +0.4124, -0.2748, -0.4730, -0.6309, -1.4017, -0.0564, +0.4505, +0.4404, -0.1388, +0.4173, -0.3265, -0.2718, -0.0004, -1.3929, -0.6457, -0.2202, +0.0835, +0.3511, +0.3400, +0.3127, -1.3751, +0.0235, +0.3335, -0.5172, -0.3050, +0.3585, -0.1365, -0.1798, +0.3664, +0.2918, -0.0613, -0.2777, -0.3981, -0.3149, +0.1398, -0.6463, -0.0084, +0.0239, -0.2001, -0.0358, +0.1739, +0.3076, +0.4306, -0.5911, -0.8020, -0.1135, -0.2901, +0.0127, -0.0220, -0.5699, -0.3602, +0.0160, -0.0990, +0.2246, -1.0209, +0.0654, +0.0782, -0.6947, -0.2386, -0.1779, +0.0265, +0.2693, +0.1086, -0.9775, +0.1450, -0.0758, +0.2145, -0.1338, +0.1211, -0.1820, -1.0757, +0.0146, +0.0702, -0.0952, +0.3276, -0.3414, +0.2549, +0.2712, +0.0081, +0.1509, -0.0851, -0.4413, -0.4502, +0.1761, +0.4378, +0.0688, -0.3508, -0.5971, -0.4219, -1.0461, +0.1400, +0.2175, +0.0055, +0.3793, -0.3659, +0.0811, -0.0385, -0.0874, -0.3628, -0.3637, +0.4060, +0.2549, -0.1164, +0.7359, +0.2959, -0.2167, +0.4543, -0.9292, +0.3239, -0.1484], -[ -0.4474, -0.1609, +0.1565, +0.3514, -0.5343, +0.5311, -0.4899, +0.2467, -0.8099, -0.1299, +0.1116, +0.2586, -0.2679, -0.2602, +0.0025, +0.1916, +0.4618, -0.3139, -0.0156, -0.1146, -0.5562, +0.0141, -0.0316, -0.0391, -0.8355, -0.2248, +0.3198, -0.0258, +0.2620, -0.0768, -0.2293, +0.2619, -0.6142, -0.1346, -0.5496, +0.0572, -0.0361, -0.3622, -0.2523, -0.5744, -0.9661, -0.4620, +0.6709, +0.1423, +0.0145, +0.0847, -0.0994, +0.0230, -0.1900, +0.0231, +0.0460, -0.4651, +0.2420, -0.1775, -0.5434, -0.2975, +0.1636, -0.2940, -0.1347, -0.0682, +0.2589, -0.1460, -0.2988, -0.6383, +0.1956, -0.0139, -0.2550, +0.0265, -0.5519, -0.1353, -0.0948, -0.1349, -0.6557, +0.1863, -0.0897, +0.0670, -0.3128, -0.6262, -0.5954, +0.0287, +0.5016, +0.2096, -0.5844, -0.2626, -0.6713, -0.2482, +0.4373, -0.7451, +0.0623, -0.2463, -0.0378, -0.4674, -0.2683, +0.2856, -0.2349, -0.1885, +0.1227, +0.0214, -0.0394, +0.0130, +0.1772, +0.4993, -0.2009, -0.1648, -0.4118, +0.1279, +0.0682, -0.2991, -0.0884, -0.2694, -0.0520, +0.0853, +0.1729, +0.4803, +0.1564, -0.1899, -0.8118, -0.0117, -0.3061, +0.5034, -0.3543, +0.1020, -0.5255, -0.1707, -0.1216, +0.5586, -0.0911, +0.0780], -[ -0.2530, +0.3542, +0.2466, +0.0114, -0.2325, +0.1045, +0.2640, -0.0652, +0.1640, -0.6488, -0.1637, +0.1589, +0.0698, -0.4668, +0.0605, -0.1889, +0.4386, -0.1082, -0.3886, -1.0283, -0.5296, +0.3295, +0.5688, -0.0342, -0.3752, +0.0037, -0.5038, -0.2047, +0.2439, -0.2643, -0.0426, +0.0814, -0.1322, +0.0867, +0.0801, +0.0177, +0.0799, +0.2122, -0.0725, +0.1818, -0.0929, +0.5676, -0.2286, -0.1926, -0.0678, +0.0018, -0.1667, +0.0132, -0.0101, -0.1113, +0.1050, +0.2168, -0.0306, +0.6374, -0.8174, +0.1363, -0.0582, -0.4627, -0.0770, -0.2088, +0.2588, +0.1347, -0.1824, -0.2371, +0.1022, -0.3899, -0.8513, -0.3202, +0.1612, +0.2328, -0.3286, +0.0422, -0.1824, +0.2140, -0.2000, +0.0223, -0.0183, -0.4182, -0.5400, -0.1221, +0.1172, +0.2531, +0.4206, -0.1604, -0.9154, +0.5606, -0.1559, +0.2436, -0.2357, -0.1455, -0.1618, -0.0079, -0.3459, +0.1285, +0.1816, +0.6999, -0.0767, -0.2363, +0.2581, +0.4170, -0.2648, +0.1538, -0.1547, -0.5726, -0.0629, +0.1417, +0.0794, +0.2262, +0.2472, -0.0348, -0.8012, +0.5778, -0.1855, +0.4469, +0.1550, +0.1309, -0.2506, -0.0098, -0.2945, +0.3014, +0.2353, +0.1232, +0.1669, -0.0168, -0.1302, -0.8185, -0.6134, +0.1903], -[ -0.9197, +0.2938, -1.4223, +0.1317, +0.1539, +0.3012, +0.0610, +0.1146, +0.2250, -0.0636, +0.0740, +0.2281, -0.1727, +0.2478, +0.1105, -0.0053, +0.4876, -0.0902, -0.5247, +0.0784, +0.2799, +0.3400, -0.0124, -0.5491, -0.0857, -0.0825, -0.1140, +0.1264, +0.3351, +0.0240, -0.1015, -1.3738, +0.0853, +0.1485, +0.2078, -0.2954, -0.4387, +0.0181, +0.0607, -0.0367, -0.3058, -0.3991, +0.0367, +0.0179, +0.2277, +0.2886, +0.1135, -0.4571, -0.3987, -0.2546, -0.2603, +0.4637, -0.9940, +0.0503, -0.4990, +0.2265, +0.2112, -0.4164, -0.1095, -0.7982, +0.1630, +0.0854, +0.1996, +0.0215, +0.2852, -0.3230, -2.1174, -0.0720, -0.1562, -0.5183, -0.2616, -0.2201, +0.1528, +0.3300, -0.1452, -0.7778, +0.0951, -0.1031, +0.0787, -0.3051, -0.0575, -0.3605, +0.2316, -0.4307, -0.0556, +0.1771, +0.0895, -0.3549, +0.0439, -0.0218, -0.1226, -0.1438, -0.2108, -0.1117, -0.1065, -0.2973, +0.5325, +0.2315, +0.0567, +0.0056, +0.0314, +0.4031, +0.1499, -0.2742, -0.4190, -2.0988, +0.0229, +0.3690, +0.0574, -0.1251, +0.0403, +0.1592, -0.1812, +0.2157, +0.5084, -0.1912, -0.5930, +0.0053, -0.0600, +0.6243, -0.0495, -0.0492, -0.2255, -0.1145, +0.2137, +0.4300, +0.3476, -0.4413], -[ -1.3243, -0.0893, -0.2154, -0.0199, +0.7740, -0.6141, -0.0246, -1.0044, -0.4108, -0.8862, -0.0072, +0.2127, +0.1497, +0.1290, -0.4948, -0.4584, -0.0235, -0.0428, +0.1773, -0.5295, -0.1431, -0.5445, -0.1481, +0.0099, +0.1410, -0.2850, +0.0030, -0.3439, -0.1089, -0.0443, +0.1765, -0.0817, +0.2804, +0.1481, +0.0843, -0.3126, -0.3626, +0.1851, +0.3576, -0.1762, +0.2853, +0.3620, -0.2943, -0.6364, -0.3394, +0.2190, +0.7044, -0.4761, +0.0870, -1.7159, +0.0226, -0.1199, +0.0695, -0.3448, +0.0191, -0.0657, -0.1703, -0.3851, +0.3194, +0.1628, -0.0220, -0.1342, -0.3188, +0.2705, -0.9732, -0.0030, -0.4498, +0.7865, +0.3955, -0.2114, +0.2180, -0.2864, +0.1916, -0.4286, -0.0682, +0.1845, -0.8390, -0.1796, -1.2570, +0.5035, -0.5485, -0.1844, +0.0307, +0.1575, -0.1784, -0.3361, -0.5132, -0.3216, +0.3433, -0.4377, -0.2705, -0.2546, -0.2009, -0.3251, +0.3768, -0.1968, -0.0860, +0.5373, +0.0658, -0.4915, -0.6128, +0.0921, -0.0966, +0.0048, +0.1949, +0.4442, +0.3404, -0.6088, -0.5773, +0.1083, +0.1312, +0.1932, -0.2552, +0.2012, -0.3427, +0.2008, +0.2625, -0.6261, +0.3029, -0.5715, -0.1060, -0.1812, -0.0622, -0.5372, -0.7979, +0.5880, -0.2053, +0.4876], -[ -0.2792, -0.8834, -0.1322, -0.0577, -0.0892, +0.3145, -0.1626, +0.1004, +0.0252, +0.3660, -0.3874, -0.4675, +0.0031, -0.4049, -0.5447, -0.1773, +0.3969, +0.5126, -0.2579, -0.6055, +0.1910, +0.0623, +0.1066, -0.1495, +0.0340, -0.4475, +0.2794, -0.9205, -0.0683, -0.2739, +0.1262, -0.0134, +0.3642, -0.0135, +0.0840, +0.3016, -0.3458, -0.2333, +0.0219, -0.2193, -0.2913, -0.2626, +0.4124, -0.0966, +0.2615, +0.2370, +0.5748, -0.7119, +0.4151, +0.9202, -0.4473, +0.0655, -0.1675, +0.0941, -0.1279, +0.0940, +0.1848, +0.5723, -0.2744, +0.4668, -0.2638, -0.4263, +0.0141, -0.4336, -0.0735, -0.5224, -0.0268, -0.4292, -0.6102, +0.3624, -0.1468, -0.6910, +0.5158, -0.9204, +0.2228, +0.3187, -0.2816, +0.4812, -0.2410, -0.2517, -0.0149, +0.1954, -0.2717, -0.3208, -0.5159, -0.0670, -0.4755, +0.0385, -0.0923, -0.1000, +0.0862, -0.0533, -0.0525, +0.1502, +0.0529, -0.0603, +0.5160, +0.0830, +0.3427, -0.0689, -0.3346, -0.1897, -0.5250, +0.2541, +0.1199, -0.3824, -0.0658, -0.3129, +0.1774, -0.4299, +0.2412, -0.7633, -0.0003, -0.4374, +0.0417, -0.8804, +0.0293, -0.3745, +0.4457, +0.1430, +0.7527, -0.5623, -0.7221, -0.1225, +0.2487, -0.0786, -1.0022, -0.3503], -[ -0.7628, -0.0296, +0.1810, +0.1686, +0.0618, -0.4274, -0.0934, -0.3746, -0.0096, -2.0251, +0.3222, +0.3130, -0.0907, -0.1452, +0.2262, -0.5090, +0.0087, -0.2666, +0.2093, +0.4472, +0.2241, -0.2626, -0.3603, +0.3476, +0.3879, -0.0941, +0.1767, -0.0935, +0.4021, +0.0676, -0.1926, +0.0294, +0.0591, -0.1140, +0.3377, -0.0706, +0.2095, -0.5089, +0.1487, +0.0840, -0.0943, +0.0724, +0.3422, +0.1631, +0.1358, -0.0189, +0.2516, +0.3063, +0.5746, +0.4173, -0.1660, -0.2429, -0.4035, -0.7944, +0.2309, -0.3185, -0.0290, -0.2063, -0.3448, -0.0841, +0.0546, +0.0458, -0.4834, -0.1786, +0.2110, -0.3135, +0.0159, +0.0279, -0.2471, +0.3283, +0.0915, +0.3631, -0.2484, +0.1425, +0.3549, +0.4047, +0.1478, -0.2081, -0.4259, +0.1012, -0.0871, -0.0335, -0.1814, +0.7322, -0.2929, +0.0070, +0.3741, -0.7115, -0.0666, -0.1026, +0.0098, -0.2179, +0.0209, +0.3935, +0.0176, +0.1375, +0.2954, -0.6274, +0.0916, -0.4534, -0.1031, +0.5552, -0.0908, -0.8908, +0.1614, -0.3706, +0.3413, +0.4246, +0.5977, -0.0245, +0.0025, -0.6461, +0.2444, +0.0619, +0.0477, -0.2582, +0.9861, -0.1139, +0.0183, +0.1068, -0.7162, +0.2327, +0.0676, +0.2768, +0.1297, +0.3743, +0.1012, -0.5195], -[ +0.2838, -0.6712, -0.3012, -0.1170, -0.1161, -0.0289, -0.3466, +0.1694, -0.3871, -0.4296, -0.1275, -0.4220, +0.0627, +0.1417, +0.5143, -0.1162, +0.5479, +0.2837, +0.0935, -0.4689, +0.2547, +0.3429, -0.5598, +0.0790, +0.1559, +0.1888, +0.1096, +0.2231, +0.0799, -0.1327, -0.3879, -0.6801, -0.6751, -0.0999, -0.3364, -0.0331, -0.1030, -0.1695, -0.0610, +0.2005, +0.0525, -0.5082, -0.2221, -0.9129, +0.0238, +0.3535, +0.0912, -0.9450, -0.0169, +0.0716, -0.0124, +0.5367, +0.0868, +0.0547, +0.0274, -0.2516, +0.0147, -0.2380, +0.0717, +0.0982, +0.1879, -0.1239, +0.0925, +0.1408, -0.9058, +0.2236, +0.1642, -0.2735, -0.0038, +0.1787, +0.2431, +0.2515, -0.5665, -0.5684, +0.1080, +0.2216, -0.1112, +0.1638, +0.1525, -0.0468, +0.0997, -0.3110, -0.0507, -0.1559, -0.1085, +0.3448, -0.4197, -0.7367, -0.2714, +0.1359, -0.2884, +0.0473, +0.0862, -0.3584, +0.2215, +0.0451, -0.1080, -0.3341, +0.1913, +0.0438, -0.1103, -0.4687, +0.1687, +0.1562, +0.0337, +0.0272, -0.3335, -0.0725, +0.1359, +0.5334, -0.6547, -0.0371, +0.5557, -0.1519, -0.2436, +0.2020, +0.1524, -0.0510, -0.1652, -0.4999, -0.1367, -0.1373, -0.2908, +0.3853, -0.4478, +0.1800, +0.2523, -0.1114], -[ -1.6958, -0.6412, +0.0691, +0.1010, -0.4537, +0.3380, +0.2452, -0.3312, -0.2908, -0.5452, +0.2748, +0.1200, -0.5574, +0.1067, -0.1642, +0.0567, +0.4088, +0.1469, +0.2470, -0.0473, -0.0394, +0.5165, -0.9096, -0.2397, +0.0531, -0.2614, -1.0957, -0.5658, -0.0799, +0.0258, +0.2313, +0.1599, -0.2275, -0.0299, -0.2815, +0.0871, -0.6039, -1.1287, +0.2621, -0.0393, -0.2296, +0.2281, -0.2568, +0.0252, -0.6841, +0.1083, -0.6171, -0.2486, +0.0222, +0.0216, -0.6150, -0.2181, -0.8553, -0.3163, -0.2226, -0.1834, +0.0531, +0.2743, -0.0071, -0.1466, +0.1553, -0.0723, -0.1301, -0.5296, +0.2682, -0.4206, -0.6943, +0.2437, -0.4271, +0.4860, +0.1743, +0.0671, +0.1452, +0.0658, -1.4711, -0.9356, +0.1064, +0.1338, -0.4878, -0.3197, -0.0353, +0.1770, -0.2193, -0.5431, +0.5256, +0.2211, -0.6661, +0.2910, -0.6894, -0.2290, -0.1499, +0.1339, -0.5180, +0.0150, +0.0337, +0.4948, +0.3689, -0.1932, +0.2018, -0.0153, +0.4461, -0.0318, -0.0687, -0.1409, +0.2364, +0.0888, +0.1535, +0.0676, -0.3503, -0.2389, +0.3073, -0.7036, +0.0123, -0.1242, -0.2453, -0.4647, -0.8345, -0.1727, -0.4548, -0.4518, -0.0400, -0.6359, +0.3038, -0.2906, -0.0836, +0.5893, -0.0714, +0.1282], -[ -0.2407, +0.3754, -0.2528, -0.1067, -0.7615, -1.3824, +0.0444, -0.1291, -0.9688, -0.0688, -0.0435, -0.3287, -0.0826, +0.3667, +0.3578, +0.1980, +0.9228, -0.3335, +0.2262, +0.1084, +0.1390, -0.2636, -1.0120, +0.0434, -0.4244, -0.4177, +0.1934, -0.6488, -0.3324, +0.2039, +0.0330, -0.3464, -0.3392, -0.2653, +0.3391, +0.0791, +0.6065, +0.4670, +0.4245, +0.4963, -0.4929, -0.2403, +0.0623, -0.3430, +0.1061, +0.3647, -0.2875, -0.1714, +0.2937, +0.4126, +0.5378, -0.0574, +0.3809, +0.1157, -0.0113, +0.0016, +0.3019, +0.1832, -0.2256, +0.0482, +0.0464, +0.2169, -0.1917, +0.0625, +0.1454, -0.3293, -0.5873, +0.2440, +0.2835, -0.1992, -0.4948, +0.1125, +0.1535, -0.0652, -0.2387, -0.0687, +0.0333, +0.2582, -0.0770, +0.0380, -0.2317, +0.0005, +0.1801, -0.3505, -0.2143, -0.2095, -0.0567, +0.0088, -0.1975, -0.3000, +0.0284, +0.4963, -0.3082, +0.6228, +0.0497, -0.4039, -0.1592, -0.3545, +0.4564, +0.0085, +0.4148, +0.3648, -0.1420, -0.4999, -0.2883, -0.0719, +0.3091, -0.7856, +0.8374, -0.3412, -0.1367, +0.7093, +0.0690, -0.0231, +0.2423, -0.0478, +0.1871, -0.4369, -0.0975, -0.1578, +0.5148, -0.2616, -0.2325, -0.3864, +0.5210, +0.3758, -0.0934, +0.6060], -[ -0.0755, -0.1832, -0.2809, -0.0126, +0.2945, +0.1117, +0.4197, -0.4681, -0.8315, +0.3471, -0.0346, -0.8774, -0.0426, +0.0977, +0.0522, -0.0527, +0.3244, -0.4857, -0.4625, -0.1606, -0.0398, -0.3321, +0.5453, +0.0801, -0.0396, -0.2570, -0.2399, -0.2635, +0.1930, -0.0856, -0.1309, +0.3051, +0.0496, -0.5829, -0.0799, +0.3807, -0.5025, -0.5076, -0.7246, -0.2604, -0.2652, +0.0223, -0.2287, -0.1843, -0.3499, +0.0125, -0.1872, +0.1495, +0.2384, -0.0086, -0.3583, +0.1040, -0.6179, -0.1960, -0.1608, -0.2839, -0.0513, -1.4730, -0.5515, +0.2114, +0.0061, -0.3406, -1.1141, +0.1749, +0.1186, -0.5511, +0.0216, -0.4811, -0.3815, +0.2288, -0.4670, -0.6204, -0.2219, -1.0173, +0.2718, -1.0160, -0.6018, -0.0841, +0.1963, -0.2426, +0.4426, +0.0478, -0.1699, +0.1841, +0.3527, +0.6224, -0.2249, -0.0195, +0.0215, +0.3261, -0.4561, +0.2657, -0.0498, -0.1705, +0.2141, -0.4704, -0.1895, -0.2153, -0.0557, +0.4970, -0.9431, +0.0567, -0.0207, -0.5169, -0.3308, -0.0547, +0.1929, -0.5822, +0.1880, -0.1976, -0.1119, -0.0117, -0.0801, +0.2343, +0.0521, +0.1271, -0.5807, -0.1798, -0.1671, +0.2714, +0.5333, +0.2359, -0.0872, -0.0731, -0.6005, -0.5695, -0.5219, +0.0478], -[ -0.3435, -0.1653, +0.2747, +0.2565, +0.6577, -0.5309, +0.4050, -0.0272, -0.1717, +0.5868, +0.3293, -0.1301, +0.3416, +0.0299, -0.4585, -0.6365, +0.3883, -0.5413, +0.1648, -0.4210, -0.0345, +0.3505, -0.1094, -0.5146, -0.0540, -0.4481, -0.1298, -0.0820, +0.2203, -0.3250, -0.4013, -0.4080, -0.1996, +0.4569, -0.1083, +0.2297, +0.1752, +0.6711, +0.3924, +0.2505, -0.2651, +0.2549, -0.4861, +0.1328, -0.0784, -0.0455, +0.0824, -0.1907, -0.1269, -0.2659, +0.1613, -0.5786, -0.5200, +0.1168, +0.0579, -0.1095, +0.0921, +0.6257, -0.3459, -0.0756, -0.6126, +0.0647, +0.4558, -0.4479, +0.0357, +0.2730, +0.1609, +0.2325, +0.0509, +0.2564, -0.3249, +0.0513, +0.0988, +0.1915, -0.6067, -1.0877, +0.0954, +0.0537, -0.1465, -0.5820, -0.5159, +0.2675, -0.7425, +0.2441, -0.0376, -0.0572, +0.2562, -0.2178, -0.3001, +0.1761, +0.3980, +0.3646, -0.1492, +0.2325, -0.2957, +0.0744, -0.2891, +0.0378, +0.4323, +0.4544, -0.5938, +0.3270, -0.5632, +0.2176, +0.0061, -0.3769, +0.2896, -0.2905, -0.7774, -0.0131, -0.7101, -0.5759, -0.0688, +0.1205, -0.0007, -0.1936, -0.0072, -0.5252, +0.0920, +0.2719, -0.1148, +0.3882, -0.1040, -0.7484, -0.1315, +0.2025, +0.2450, +0.1879], -[ +0.0635, -0.1609, -0.1538, +0.2634, +0.2021, +0.1565, +0.0456, -0.1042, -0.4717, -0.7022, -0.3240, +0.0204, +0.4072, -0.2486, -0.0554, -0.1039, -0.0945, +0.5847, -0.0114, +0.2111, -0.0249, +0.0916, -0.1717, +0.0537, +0.1561, -0.0267, +0.0116, +0.3045, +0.3188, -0.3282, -0.0225, -0.5354, +0.0879, -0.2255, +0.1529, -0.0320, +0.2731, +0.2188, +0.1878, -0.1490, -0.3714, -0.3743, +0.1623, -0.0266, -0.6248, -0.1510, +0.3646, +0.1201, +0.0165, +0.1595, +0.0432, -0.0573, -0.5120, +0.0506, +0.2503, -0.4753, +0.0165, -0.4132, +0.3078, -0.3016, -0.0340, -0.2529, -1.4312, +0.1106, +0.2728, -0.0570, -0.5330, -0.0023, -0.2176, +0.2857, -1.1914, +0.3534, -0.2468, +0.6166, -0.0939, -0.4201, +0.0495, +0.1880, +0.4909, -0.0005, +0.1966, -0.4859, -0.4879, -0.6983, +0.2413, -0.2311, +0.0238, +0.1929, -0.1973, +0.3907, +0.2185, -0.2779, +0.2044, -0.1168, -0.2728, +0.0444, -0.6509, -0.1104, +0.0701, -0.0814, +0.2036, -0.2149, -0.2774, -0.7491, -0.2022, +0.3462, +0.0151, +0.4158, -0.3019, -0.0190, +0.3426, -0.1507, +0.4959, -0.1699, +0.2380, -0.6047, -0.1217, -0.1975, -0.7809, +0.4614, -0.4581, -0.4552, -0.1404, -1.5095, -0.6226, -0.3440, +0.0351, +0.1846], -[ +0.1092, +0.2437, +0.1966, +0.1220, +0.6201, -0.2661, -0.1548, +0.0270, +0.1159, -0.3918, +0.1394, -0.6659, -0.8831, -0.3015, -0.1581, +0.0759, +0.0665, +0.3606, +0.0672, -0.1310, -0.0926, +0.2237, -0.2335, +0.0777, -0.8187, +0.5069, -0.0426, +0.1436, +0.0110, +0.1528, -0.8425, -1.0568, -0.2944, +0.4091, -0.1763, +0.1412, -0.3405, +0.7419, -0.5367, -0.1303, -0.6870, +0.0776, -0.5955, +0.1806, -0.4239, -0.6560, -0.0641, +0.5797, -0.2220, +0.4275, -0.1616, -0.0382, +0.0100, +0.4526, +0.1865, +0.3915, -0.5252, +0.0675, +0.2441, +0.1250, +0.0069, +0.2737, -0.0030, +0.3014, +0.1139, +0.4433, -0.1712, -0.3724, +0.1591, -0.0302, -0.1278, +0.0064, -0.6827, +0.1657, -0.9123, -0.4635, +0.0734, -0.3423, +0.5432, -1.1345, -0.2496, -0.8443, -1.1179, +0.0977, +0.1592, -0.0604, -0.0134, -0.4070, -0.2177, -0.2909, -0.4393, +0.1154, +0.5355, +0.4111, -0.9877, +0.0950, +0.4291, -0.2402, -0.0982, +0.1450, +0.2624, -0.4511, -0.0922, -0.2671, -0.7478, -0.2528, +0.0644, -0.2289, -0.2154, -0.0089, +0.0858, +0.3319, +0.1355, -0.1122, -0.3387, +0.4891, -0.2719, +0.3085, +0.1771, -0.4614, -0.0748, -0.1098, -0.0620, -0.1762, +0.0040, -0.2598, -0.5573, -0.2794], -[ +0.5834, -0.4604, -1.3045, +0.3545, -0.2168, -0.5772, -0.0178, -0.1911, -0.5342, +0.0648, +0.0610, +0.1277, -0.5439, +0.2818, +0.0163, -0.0094, -0.6556, +0.1699, +0.2939, +0.4243, -1.4178, +0.6642, +0.6582, +0.0382, +0.3660, +0.0781, -0.4959, -1.1425, +0.3078, -0.3811, -0.1517, -0.6306, +0.2370, +0.0024, +0.0210, -0.2507, -0.2068, -0.2383, -0.0397, -0.1687, -0.3216, +0.1129, -0.3052, +0.0279, -0.6781, -0.5730, -0.4586, +0.3990, +0.1445, -0.3131, +0.2680, +0.2936, +0.2108, +0.6816, -0.4757, +0.1225, -0.0674, +0.2769, -0.1497, +0.0291, -0.1322, +0.0305, +0.1445, +0.2284, +0.0871, -0.5827, -0.1605, -0.2129, +0.1296, +0.2697, -0.0957, -1.0734, -0.5333, +0.1961, +0.3778, +0.0103, +0.2746, +0.0516, -1.0679, +0.3184, +0.4719, -0.3739, -0.6196, -0.1519, -0.0215, -0.3010, +0.2060, +0.6348, -0.4305, +0.4926, -0.3961, +0.1692, +0.7244, -0.0626, +0.2426, +0.0230, -0.8844, -0.0682, -0.3629, +0.2261, -0.0211, -0.0055, +0.2385, +0.4284, -0.3858, +0.2256, -0.6478, +0.4067, -0.0096, +0.0272, -0.1746, -0.1602, -0.4477, -0.0657, -0.5284, -0.0353, +0.3823, +0.3727, -0.4316, -0.1722, +0.0396, -0.3491, -0.2358, -0.0194, -0.4092, -0.4643, -0.0697, +0.2296], -[ -0.4900, -0.0733, +0.3038, +0.0407, +0.6488, +0.2690, -1.3484, -0.2730, -0.0899, -0.9405, -0.7572, -0.2041, -1.3583, +0.4124, +0.1571, -0.2722, +0.3992, -0.5012, -0.6706, -0.1958, +0.1061, +0.1404, +0.4913, -0.5968, -0.9036, +0.4005, +0.2138, -0.3754, +0.4883, -0.3500, -0.0059, +0.0461, +0.0847, +0.0395, +0.1617, +0.5370, -0.1566, +0.4119, +0.4398, +0.2880, +0.6407, +0.0792, +0.7944, +0.1262, +0.0186, +0.0055, +0.0576, -0.1715, -0.8831, +0.3210, +0.4810, -0.6389, +0.0641, -0.3682, -0.3138, -0.1522, -0.2991, -0.1426, -0.9557, -0.0143, +0.0045, +0.3055, +0.0447, -0.6272, -0.1901, -0.5753, -0.4830, -0.6557, -0.3562, +0.0439, +0.0617, +0.1628, +0.1072, +0.5901, -0.1827, -0.3912, +0.0986, -0.3046, -0.2041, -0.6523, -0.1970, +0.1157, -0.4237, +0.2555, +0.0954, -0.1498, +0.4839, +0.3274, -0.4065, +0.2206, -0.2119, -0.5583, -0.0958, +0.3035, -1.1578, -0.7463, +0.3902, -0.3680, +0.0521, -0.6994, -0.7878, +0.0694, +0.2445, +0.4854, +0.2265, +0.0058, -0.2749, -0.4479, -0.3567, -0.5672, +0.0326, -0.0978, -0.0829, -0.1310, +0.3181, -0.4951, +0.0376, +0.7516, +0.0487, -0.1005, +0.1231, -0.3754, +0.4275, +0.3654, -0.1877, +0.2728, -0.9031, +0.2465], -[ +0.0881, -0.1220, +0.2770, -0.1770, +0.1762, -0.0915, +0.0628, -0.1779, -0.1385, +0.0988, -0.0536, -0.0192, -0.0599, +0.1378, -0.1985, -0.1215, -0.8940, -0.0825, -0.1868, -0.1617, +0.1067, -0.4099, +0.5060, +0.0735, +0.0259, +0.2243, +0.2084, -0.3918, +0.2482, +0.3688, +0.1655, -0.7038, -0.4842, +0.0480, -0.0666, +0.1424, -0.0781, +0.4115, +0.4692, -0.0892, -0.1560, +0.0359, +0.1036, -0.3189, -0.3835, +0.2658, -0.3826, +0.5981, +0.0274, -0.1763, -0.0910, +0.1551, -0.5787, +0.2997, -0.3426, +0.2663, +0.0139, +0.1332, -0.0490, +0.6571, +0.1163, -0.2096, -0.3372, +0.3811, -0.0333, -0.1531, +0.0190, +0.0594, +0.0451, -0.6696, +0.2075, +0.2654, +0.4240, -0.6398, -0.0335, +0.4585, -0.1431, -0.1381, +0.2408, +0.0029, +0.1018, +0.0707, +0.4236, +0.1736, -0.3462, +0.2108, +0.3419, -0.0347, -0.5548, -0.4333, -0.7132, -0.0609, +0.0639, -0.5779, +0.1876, -0.6528, -0.3584, +0.0699, -0.4453, -0.4648, -0.6665, -0.8980, -0.2451, +0.7615, +0.4028, +0.2695, -0.1697, -0.1011, -0.0204, +0.1075, -0.1444, +0.0818, +0.3970, -0.0483, +0.0114, +0.5573, +0.1716, -0.0982, +0.0364, +0.0406, +0.4334, -0.1361, +0.0106, +0.0303, +0.1963, +0.0474, -0.0257, -0.0766], -[ -0.0958, +0.5020, +0.0125, -0.2360, -0.1195, -0.7691, +0.0447, +0.3091, +0.3111, -1.0370, +0.2242, +0.3947, +0.1044, -0.2842, -0.1070, +0.3202, +0.0479, -0.0436, -0.1084, -0.1626, -0.6505, -0.1532, -0.3316, -0.3834, -0.3279, -1.6748, -0.9829, -0.1292, +0.2534, -0.6681, -0.5148, -0.2601, +0.2379, -0.4174, -0.1874, -0.0571, -0.3569, +0.0605, +0.1361, +0.0109, -1.0460, +0.2985, -0.2645, -0.7845, -0.9762, -0.2381, -0.0162, -0.2872, +0.3531, +0.0247, +0.1505, -0.3604, +0.1936, -0.3198, -0.7987, -0.0751, -0.3156, +0.2547, -0.0921, -0.1277, +0.0426, -0.2709, -0.1772, -0.4224, -0.3329, -0.5236, +0.4177, -0.3154, -0.4424, -0.0631, +0.1345, +0.4415, -0.7736, +0.7410, -0.0453, -0.1407, -0.1035, +0.6097, +0.1551, +0.2835, -0.3751, -0.4371, +0.4689, -0.2276, +0.1985, -0.0543, +0.1806, -0.0650, +0.2071, +0.1115, +0.3015, +0.4710, +0.0585, +0.1246, -0.2957, +0.1655, -0.0537, -0.3121, +0.0175, -0.4791, -0.4321, -0.3576, +0.4253, -0.2623, +0.0399, -0.5582, -0.4557, -0.3049, +0.3495, +0.0155, -0.2498, +0.0859, -0.2030, +0.0947, -0.0583, -0.0665, +0.2898, -0.7366, -0.9949, +0.0208, +0.2199, +0.3050, -0.4259, +0.2318, +0.3339, -0.4347, +0.4228, +0.0081], -[ +0.1935, +0.0282, -0.1490, -0.0309, +0.1141, -0.1508, +0.0185, -0.0163, -0.0446, -0.4929, -0.0920, -0.3250, -0.0547, -0.0553, -0.2941, +0.1814, +0.0677, -0.5524, +0.0584, +0.5298, -0.0504, -0.1239, -0.0663, +0.3010, -0.0420, +0.1623, -0.0154, +0.2665, +0.0773, +0.3665, -0.2158, -0.5582, -0.2633, +0.1619, +0.0036, +0.3813, +0.0551, -0.4304, +0.0817, +0.3290, +0.4391, +0.1266, +0.1258, +0.0457, -0.6562, +0.2364, -0.5104, +0.3203, +0.1802, +0.2442, -0.4388, -0.0370, -0.7041, -0.2117, +0.2704, -0.0935, -0.2166, +0.3178, +0.0413, +0.2055, +0.1132, +0.5816, +0.2977, -0.1907, +0.1624, +0.3415, +0.5697, +0.0481, +0.2916, -0.2106, +0.3052, -0.6499, -0.6849, +0.4470, -1.1075, +0.3162, +0.2855, -0.1005, -0.2997, -0.0920, +0.0408, +0.1867, -0.1687, -0.1464, -0.1132, -0.1572, +0.2362, -0.2708, +0.0741, +0.1553, +0.1928, +0.0212, -0.4518, +0.1878, -0.3213, +0.1388, -0.5255, -0.4930, -0.0049, +0.1734, +0.2583, +0.1155, -0.2305, -0.0659, +0.4548, -0.4229, +0.1830, +0.2373, -0.1941, -0.3031, +0.1758, +0.4116, -0.0170, +0.1075, +0.0490, -0.6568, +0.0115, -0.6801, -0.4822, +0.8264, -0.0548, -0.7425, -0.1202, +0.6683, -0.9026, -0.3159, -0.3725, +0.0959], -[ -0.0655, -0.1540, +0.3968, -0.2483, -0.3969, -0.2990, -0.5226, +0.0800, -0.5774, -0.2762, -0.5783, +0.1291, -0.3571, -0.0076, +0.4878, -0.8466, +0.4500, +0.0723, +0.4145, +0.2721, -0.1492, +0.2612, -0.6181, +0.4146, +0.1995, +0.1521, -0.7351, +0.3829, -0.4159, +0.4174, -0.1349, -0.1919, +0.1777, -0.4471, +0.2908, -0.1153, +0.1599, +0.2662, -0.1923, -0.1344, +0.1617, -0.4515, -0.3023, -1.4969, +0.4376, -0.3108, -0.3018, -0.1423, -0.0320, -0.2029, -0.0368, +0.1334, +0.0004, -0.3362, -0.1603, -0.2142, +0.2767, -0.0062, +0.2658, -0.0497, -0.1470, -0.2692, -0.2130, -0.1755, +0.5105, +0.2550, +0.2603, -0.0300, -0.3997, -0.0310, -0.2273, +0.1064, +0.8450, +0.5102, +0.3002, +0.4771, +0.0565, -0.0264, -0.1581, +0.1532, -0.0962, -0.6918, -0.6736, -0.1387, +0.0669, -0.0130, -0.3477, +0.3036, -0.0482, -0.6008, -0.6952, -0.0740, +0.1937, -0.2584, -0.3090, -0.0772, +0.2166, -0.8684, -0.2251, +0.1440, -0.5748, -0.3429, -0.2311, +0.0040, +0.1374, +0.0126, -0.2068, -0.0271, +0.1178, +0.4372, -0.1029, -0.7990, -0.0538, -0.3995, -0.0569, -0.0738, -0.4152, -0.1457, -0.0831, -0.2465, +0.0537, +0.0117, -0.2653, +0.3991, -0.3015, +0.3387, -0.5773, -0.4369], -[ -0.0299, +0.0578, -0.1256, -0.4149, +0.0862, -0.2197, -0.1326, -0.1701, +0.2274, -0.1964, +0.2793, +0.0754, +0.0818, -0.2174, +0.2445, +0.2025, +0.3149, -0.1174, -0.0787, -0.1852, +0.0329, -0.1522, -0.3898, +0.3201, +0.3514, -0.0881, -0.1458, +0.0893, -0.1120, +0.1084, -0.7900, -0.0972, +0.2318, -0.2258, -0.3114, -0.1730, -0.5317, -0.4203, -0.3262, -0.2399, -0.2929, -0.4385, -0.3739, -0.5529, -0.9730, +0.0455, -0.1085, -0.3383, -0.2392, -0.1875, -0.1000, +0.2266, -0.2380, -0.7995, +0.0757, +0.3876, -0.3759, -0.0511, +0.0245, -1.0935, -0.0256, +0.3135, +0.2504, +0.1637, -0.0409, +0.4999, -0.9207, -0.0950, +0.1146, -0.1196, +0.0658, -0.1115, +0.2070, +0.1291, -0.2453, +0.0930, -0.1127, -0.1898, -0.2339, +0.2253, +0.1805, +0.1089, -0.6193, -0.2432, -0.4096, -0.0597, -0.2001, -0.7766, +0.2672, +0.0431, +0.0396, -0.0328, -0.3633, +0.0085, -0.0155, -0.2441, -0.0860, +0.0405, -0.1485, +0.3417, -0.0252, +0.1350, -0.3750, +0.0518, +0.1783, -0.1188, -0.0620, +0.5500, -0.2122, -0.0439, +0.1199, -1.3882, +0.0124, -0.1519, +0.2111, -0.2779, -0.5000, +0.0538, -0.2687, +0.5131, +0.1862, -0.5594, +0.1004, -0.5357, -0.1645, -0.1124, -0.6509, -0.9605], -[ +0.1260, -1.1106, -0.3851, +0.0429, +0.4579, +0.0555, +0.2926, -0.5573, -0.0348, -0.5515, +0.0503, +0.1035, -0.3252, -0.3310, -0.1977, -0.1287, +0.5717, +0.1150, -0.0387, -0.0359, +0.4815, +0.0946, -0.2764, -0.3368, +0.2878, +0.2508, +0.4127, +0.1091, -0.3414, +0.2624, -0.4554, +0.2167, +0.4564, -0.5576, +0.0956, -0.2831, -0.1566, +0.1055, +0.3174, +0.0662, -0.3590, -0.1069, -0.8108, -0.5830, +0.0447, +0.0990, -0.0618, -0.0065, +0.2286, +0.2239, +0.0901, +0.0112, +0.4849, -0.5943, +0.3823, -0.2237, +0.0592, -0.1171, -0.0197, -0.2804, -0.0374, -0.4831, +0.0416, -0.1255, -0.0720, -0.6414, -0.6384, -0.2303, +0.5904, +0.2823, +0.0040, -0.3619, -0.4488, +0.2866, -0.9869, -0.1887, -0.9314, -0.1264, -0.0707, +0.1483, +0.3738, -0.3169, +0.0512, +0.4149, +0.5847, +0.0986, -0.0703, +0.2030, -1.2074, -0.4137, -0.0001, +0.2807, -0.7392, -0.4423, -0.4068, -0.0318, -0.6819, +0.1938, -0.2305, -0.2713, +0.0200, -0.1200, -0.0781, +0.4398, +0.1609, -0.9521, +0.0096, +0.6020, -0.0267, -0.2835, +0.3421, -0.0626, +0.0152, -0.5026, -0.0934, +0.3226, +0.3035, +0.2395, +0.1323, +0.0640, -0.6629, +0.2355, +0.6563, -1.5470, +0.2074, -0.3892, +0.1465, -0.1077], -[ +0.0761, +0.2133, +0.2060, -0.0010, +0.2483, +0.1292, +0.0834, -0.0923, +0.2865, +0.0830, +0.2645, +0.2970, +0.1811, -0.4679, +0.0280, -0.7496, +0.3422, -0.1351, +0.2867, +0.1696, -0.0280, -0.5100, +0.0993, +0.0853, +0.5450, -0.2239, +0.0555, +0.2064, -0.1766, -0.1034, +0.1182, -0.1572, +0.1190, -0.1970, -0.2835, +0.4427, -0.1061, +0.0408, -0.3583, +0.1868, -0.0999, -0.1519, +0.3981, +0.4651, +0.0259, +0.4463, +0.0531, +0.6857, +0.1895, -0.1965, -0.0125, +0.1215, +0.2491, -0.4872, +0.2399, -0.0485, +0.0307, -0.0159, -0.8494, +0.1537, -0.3688, -0.2398, +0.1431, +0.6610, -0.1632, +0.1062, -0.0965, -0.0864, -0.6422, +0.0959, -0.0334, -0.0884, +0.3681, -0.0157, -0.1919, -0.0282, -0.2191, +0.0750, +0.1832, +0.0862, +0.0586, +0.1474, -1.3204, +0.5404, +0.3170, -0.6270, -0.3593, +0.1226, +0.0190, +0.2502, +0.2921, +0.4436, -0.1834, -0.2696, +0.1353, +0.0258, -0.4812, -0.2489, -0.0761, -0.2934, -0.0687, +0.8210, +0.2007, -0.3722, +0.1040, -0.0219, -0.2726, -0.8029, +0.5252, -0.0439, -0.3802, +0.0698, -0.1380, +0.5373, +0.2869, +0.3653, -0.1622, +0.4427, +0.1940, -0.0825, -0.1157, +0.2862, -0.3155, -0.5237, -0.0222, +0.2169, -0.1312, +0.4556], -[ -0.0860, -0.1684, +0.0878, +0.0439, +0.1067, -0.1359, +0.1603, +0.2722, -0.2954, -0.5215, -0.1244, +0.0976, +0.4161, -0.1408, -0.0396, -0.7499, -0.3131, +0.0389, +0.4028, +0.4455, +0.0067, -0.0059, -0.2561, +0.1495, -0.5085, -0.0281, -0.1018, -0.1969, -1.5493, -0.2073, -0.0202, -1.8868, -0.0338, -0.4430, +0.1079, +0.0800, -0.9482, -0.5007, -0.1926, -0.1492, -0.4707, +0.4014, +0.1753, -0.3948, -0.0859, +0.3501, +0.6106, +0.1014, -1.3489, -0.2901, -0.5112, +0.1742, +0.1780, +0.0720, +0.0449, -0.1852, -0.1563, +0.2726, -0.0474, -0.0450, -0.1405, -0.3055, -0.1576, -0.3178, -0.6605, +0.2244, -0.2736, -0.2595, -0.3295, -0.5634, -0.1671, -0.7184, +0.3284, -0.1856, -0.0839, -0.7935, -0.1545, -0.3177, +0.1961, -0.7101, +0.2558, +0.3402, -0.2530, -0.3372, -0.3478, -0.5374, -0.5979, +0.1578, +0.0276, -0.1388, -0.1398, +0.1874, -0.4302, -0.1455, -0.3132, +0.1626, -0.0991, -0.3516, -0.5012, -0.7587, +0.0908, -0.0592, -0.3592, -0.4520, +0.1158, +0.0664, -0.1183, -0.2986, -0.7053, +0.0429, -0.1153, -0.0140, -0.1564, -0.5810, +0.2800, +0.5827, +0.5238, -0.2232, +0.0538, +0.0547, -0.2553, +0.1218, -0.8990, -0.1088, -0.5494, +0.1229, -0.2050, -0.2671], -[ -0.3861, -0.5388, -0.1442, -0.6130, -0.3804, +0.4314, +0.3786, -0.0896, +0.1198, -1.8505, -0.9798, +0.1796, +0.0004, +0.3803, +0.1209, +0.4967, +0.0314, -0.0765, -0.0892, -0.5129, -0.3374, +0.5993, -0.6239, -0.1907, -0.0517, +0.0366, -0.1069, +0.2256, -0.2304, -0.5519, -0.4214, -0.1916, +0.2459, -0.4982, +0.1016, -0.1733, -0.1912, +0.2430, -0.6336, -0.5789, +0.0453, -0.2426, +0.2790, -0.7217, -0.6279, -0.3853, -0.0110, +0.0140, -0.7322, +0.0517, +0.3179, -0.0472, -0.2633, -0.0366, -0.4731, -0.2978, +0.0235, +0.2117, +0.0649, -0.7167, -0.2360, -0.0555, -0.0090, -0.0955, +0.1603, +0.0663, +0.2672, +0.3735, -0.0195, +0.1167, -0.3382, +0.1099, +0.1602, -0.3605, +0.1098, +0.2230, -0.0813, -0.0477, -0.2105, +0.0440, -0.1032, +0.3883, +0.0485, -0.2052, -0.5068, +0.0335, +0.0259, -0.0112, -0.1569, +0.2455, +0.1663, -0.8264, -0.0575, -0.0907, -0.4475, -0.5010, -1.1135, -1.8191, -0.4506, -0.3187, +0.3937, +0.1683, +0.4655, +0.6470, -0.0768, -0.2340, +0.3227, +0.3304, +0.3511, -0.3825, +0.3394, -0.7956, -0.7871, +0.2372, -0.1397, +0.6840, -0.0704, +0.1785, +0.3169, +0.4175, -0.2809, -0.5172, -0.9804, -0.1806, +0.0562, -0.1777, +0.8614, +0.2178], -[ +0.0570, -0.8177, +0.3026, +0.4088, +0.1247, -0.5531, +0.0569, -0.7846, +0.0951, +0.1075, -0.3532, +0.1374, -0.0852, -0.1916, -0.1306, -0.3338, -1.1250, -0.1995, -0.4947, -0.5657, -0.0334, -0.4014, -0.3387, -0.0379, -0.4215, -0.0842, -0.2889, +0.3127, -0.1640, +0.0080, -0.8017, +0.2635, -0.0138, -0.2904, +0.0537, -0.1579, +0.0168, -0.6348, -0.7092, +0.1712, -0.1321, -0.2303, -0.5102, -0.0884, -0.2677, +0.0605, -1.0537, +0.3026, +0.0832, -0.4247, -0.2398, -0.0333, +0.5484, -0.1841, +0.0155, +0.1864, -0.2962, -0.4832, -0.2180, -1.5963, +0.1911, -0.6015, +0.2295, -0.4374, +0.0003, +0.0631, -0.0023, -0.0067, -0.2332, -0.2620, -0.3934, -0.0471, +0.1611, +0.1494, +0.2247, -0.3107, -0.0497, -0.1789, +0.0056, +0.0056, +0.0900, -0.0303, -0.5804, +0.0953, -0.3470, +0.4986, -0.0597, +0.3012, +0.1121, +0.2071, -0.5102, -0.1458, +0.0442, +0.3341, -0.1140, +0.3016, +0.0212, -0.2333, +0.1484, +0.1795, +0.0853, +0.4081, -1.0096, +0.3907, +0.0445, -0.3064, +0.1260, +0.5270, +0.1708, +0.3268, -0.4637, +0.1020, -0.1744, +0.0714, -0.2817, +0.5488, +0.2740, +0.4275, -0.3491, -0.0805, -0.4154, -0.1768, -0.3267, -0.1422, -0.1513, -0.3826, -0.5985, -0.1057], -[ -0.1714, +0.3343, -0.2522, -0.2083, -0.1518, +0.5613, -0.1856, -0.0611, -0.3134, -0.0582, -0.0251, +0.0407, -0.3108, -0.3837, +0.0880, +0.0893, +0.1800, -0.0439, +0.1461, -0.2726, +0.0815, +0.0511, +0.4112, +0.2106, -0.2882, -0.1121, +0.3294, +0.2374, +0.2178, +0.4047, -0.0553, -0.3382, +0.3038, -0.0291, +0.0418, +0.1440, +0.1717, -0.1304, +0.0394, +0.0352, -0.1679, -0.5115, -0.7965, +0.2500, +0.1263, -0.1142, -0.4137, +0.5806, +0.1451, -0.5600, -0.3299, +0.0504, +0.1363, +0.5726, -0.1593, +0.0232, +0.1034, +0.2275, -0.5417, -0.3138, +0.5094, +0.2772, -0.0629, +0.1655, +0.0737, +0.0427, -0.3829, +0.4077, +0.4174, -0.0732, -0.2117, -0.0115, -0.3412, -0.1351, -0.3816, -0.1693, -0.0898, +0.0999, -0.2149, -0.1534, -0.1596, +0.0213, -0.2307, +0.3776, -0.3471, -0.2865, +0.1405, +0.0712, -0.4357, -0.6135, +0.1474, +0.2424, +0.3465, -0.1501, -0.1628, +0.1248, -0.5062, -0.0583, -0.2750, +0.1575, +0.0210, +0.2722, -0.0251, -0.4971, -0.0489, -0.2483, +0.0084, -1.6490, +0.0582, -0.3728, -0.0590, +0.6582, +0.0610, +0.0766, -0.5633, -0.0945, +0.0592, -0.4664, -0.5409, -0.0456, -0.1234, -0.0768, +0.1067, +0.1134, +0.2538, +0.1394, +0.1790, +0.0922], -[ +0.1055, -0.0710, +0.2098, +0.0545, +0.0692, +0.3269, +0.4205, +0.3617, +0.0617, +0.5831, +0.0992, +0.1460, +0.7531, -0.2177, -0.1642, +0.3440, -0.0960, -0.8468, +0.2227, +0.0298, -0.0267, +0.5438, +0.1939, -0.1699, +0.5316, +0.4236, -0.1599, -0.3332, +0.2541, +0.2882, -0.5070, -0.1410, -0.0808, +0.3389, +0.2874, -0.5047, +0.2727, -0.9373, +0.1048, +0.2037, -0.2790, -0.0049, +0.4271, +0.4090, +0.0865, +0.4378, -0.6123, -0.0794, +0.0604, +0.2250, -0.5507, +0.0653, +0.0641, +0.6271, +0.3507, +0.0621, -0.2483, -0.5283, -0.1857, -0.4068, +0.0434, +0.1080, -0.1228, -0.2924, +0.2067, +0.2919, -0.0322, +0.2798, +0.0571, +0.0128, -0.1766, +0.1788, +0.0408, -0.5831, -0.3333, +0.1562, +0.4012, +0.0381, -0.1494, +0.2728, -0.0151, -0.1789, -0.7640, -0.5483, -0.8495, +0.0881, +0.2882, -0.4163, -0.0578, -0.0722, -0.1033, +0.2434, +0.0968, +0.2447, +0.1594, +0.2792, +0.3288, -0.0451, +0.0874, -0.0739, -0.0673, +0.2117, -0.7921, -0.6497, -0.2997, -0.7911, -0.3776, -0.5365, -0.5239, +0.0071, +0.1146, -0.4996, -0.0456, +0.5109, -0.0572, +0.3416, +0.4495, -0.1444, +0.4193, +0.3241, +0.2663, +0.0519, +0.0574, -0.6885, +0.0993, +0.1967, -0.3496, -0.1849], -[ -0.4142, +0.6784, +0.1098, -0.2130, -0.6212, -0.3906, +0.2364, -0.2844, -0.1107, -0.8687, +0.0924, -0.2801, +0.0807, +0.0417, +0.2183, +0.2427, -0.6524, -0.5965, +0.1928, -0.3179, -1.4128, -0.5527, +0.1793, -0.0750, -0.0836, +0.1567, -0.2805, +0.3805, +0.2723, -0.0909, +0.0434, +0.4379, +0.1028, +0.2717, -0.1954, -0.1474, -0.1377, -0.2012, +0.0874, -0.2268, -0.1169, -0.4005, +0.4518, -0.4444, -0.4326, -0.0806, -0.3634, -0.3672, +0.2330, -0.1569, +0.2779, +0.0117, +0.2783, -0.1090, +0.3421, +0.2039, -0.3077, -0.0773, +0.4261, +0.4138, -0.1825, +0.0160, +0.4968, +0.0218, -0.7070, +0.2018, -0.0563, -0.7630, -0.0032, +0.1203, +0.1429, +0.0134, +0.1311, -0.4428, +0.4342, -0.0130, -0.2128, -0.0373, -0.3373, -0.0369, -0.1267, +0.0200, -0.5211, +0.2331, +0.1290, -0.3047, +0.2262, +0.1849, +0.1627, -1.5323, +0.2210, -0.2961, -0.6976, -0.0678, +0.3784, -0.1628, +0.1516, -0.1437, -0.0502, -1.8106, +0.1434, +0.0390, -0.5245, +0.2817, -0.2777, -0.9234, +0.0889, +0.1479, -1.2343, -0.1232, -0.1935, -0.1940, +0.5395, +0.1481, +0.4678, -0.1780, -0.0602, +0.2383, +0.4876, -0.4993, -0.7765, -0.3758, -0.3468, +0.2963, -0.2325, -1.4504, +0.1971, +0.0406], -[ -0.7009, -0.1797, -0.1116, +0.1721, -0.1963, -0.1557, -0.1090, -0.0284, +0.2669, +0.5090, +0.4849, -1.1537, -0.0873, +0.3824, -0.4691, -0.1843, -0.7102, -0.1564, -0.6896, -0.3612, +0.1409, -0.4505, +0.6305, +0.7074, +0.0045, +0.1758, -0.0733, +0.0967, +0.5161, -0.0192, +0.3463, -0.6393, +0.1861, -0.6688, -0.2062, +0.0894, +0.5149, +0.2644, -0.0741, +0.2825, -0.2976, +0.0465, +0.2735, -0.0961, -0.0772, +0.3743, +0.4698, -0.0073, -0.0529, -0.5771, -0.1846, -0.0975, -0.1344, +0.2171, +0.0773, +0.1043, +0.4015, -0.0726, +0.2504, +0.0288, +0.0520, -0.5118, +0.1821, -0.0586, -0.3667, +0.1860, -0.7813, +0.2040, -0.0214, -0.3307, +0.1436, -0.3145, +0.3625, -0.0681, +0.3793, +0.2976, -0.3793, +0.1673, +0.0444, +0.0320, +0.4372, +0.0879, +0.4279, +0.0203, +0.0821, -0.4620, -0.0477, +0.0195, -0.6813, -0.5967, -0.1852, +0.0352, +0.3826, -0.0513, -0.1344, -0.0580, +0.1162, +0.4676, -0.2685, -0.3982, -0.2593, +0.1499, +0.3274, +0.2976, -0.4689, -0.1254, +0.3098, +0.2837, +0.6079, -0.0836, +0.3104, -0.2323, -0.7220, +0.1563, +0.3953, +0.3731, -0.0114, -0.4992, +0.2719, +0.0888, +0.0720, -0.5080, +0.4760, -0.7397, +0.3483, +0.1080, +0.1202, -0.2225], -[ -0.0986, -0.1454, +0.2889, +0.1131, -0.2640, -0.1501, +0.1527, +0.3708, -0.1323, -0.4601, -0.4130, +0.1354, -0.4761, -0.4487, -0.1493, -0.0039, -0.0565, +0.0496, +0.0801, +0.5538, -0.5147, -0.1880, -0.0703, -0.1403, +0.0882, +0.5228, -0.8152, +0.0080, -0.8612, +0.1631, +0.0373, +0.2079, -0.1165, -0.0604, -0.1853, -0.4971, -0.0579, -0.2136, +0.6239, -0.0768, +0.3834, -0.2215, -0.6207, -0.0881, +0.1782, +0.1540, -0.0218, -0.4346, -0.2460, +0.0995, -0.1448, -0.3545, -0.0048, +0.0379, +0.0766, -0.4868, +0.2823, +0.2266, -0.1859, -0.1044, +0.3403, +0.2782, -0.0963, +0.2309, -0.0853, -0.3650, -0.8416, +0.2280, -0.0251, -0.3678, +0.1026, -0.6111, -0.3725, +0.3369, -0.6957, +0.1122, -0.3551, +0.5850, +0.6391, -0.2137, +0.1315, +0.0360, +0.0902, +0.4545, -0.2967, -0.5116, -0.0388, -0.1233, +0.1074, -0.8305, +0.1133, -0.6088, +0.1082, -0.7154, -0.1324, -0.1408, +0.2876, +0.0105, -0.0740, +0.2604, +0.3098, -0.2082, -0.2886, +0.3522, +0.0381, -0.3617, -0.1870, -0.1940, -0.8164, -0.4073, +0.0079, -0.1049, -0.1800, -0.1631, -0.0397, +0.1425, -1.1029, +0.1057, +0.3740, -0.3710, -0.2057, -0.0736, -1.0604, -0.9938, +0.2795, -0.6136, +0.0738, +0.2969], -[ -0.6448, -0.3543, +0.1669, -0.1353, +0.0408, +0.3521, +0.3481, -0.2406, +0.0335, -0.1053, -0.0446, +0.0730, -0.2706, +0.3293, +0.3748, -0.2034, +0.3909, -0.0206, +0.2175, +0.0346, -0.6224, +0.0145, +0.1671, +0.1243, +0.2489, +0.2524, +0.1543, +0.0078, -0.2516, +0.1298, +0.3776, -0.0540, +0.4302, -0.1454, +0.1229, +0.3087, -0.0311, -0.3394, -0.5531, -0.4125, -0.2837, +0.1979, -0.2526, -0.0354, -0.2117, -0.1845, -0.1151, -0.2762, +0.2799, -0.0122, -0.4708, -0.2533, +0.1126, +0.0561, +0.0716, +0.0259, +0.4716, -0.1612, -0.3229, -0.4955, +0.0800, +0.0725, -0.6411, -0.3562, -0.0240, +0.5144, +0.1682, +0.2498, -0.0523, +0.3941, +0.0759, -0.6309, -0.1631, -0.1710, -0.7150, -0.1382, -0.1318, +0.0097, +0.2521, +0.1053, -0.0410, -0.1059, +0.1014, +0.3510, +0.6208, -0.1208, +0.1027, +0.1783, -0.5373, +0.3518, -0.1692, +0.0262, -0.2514, -0.2380, +0.0050, -0.1377, -0.3636, +0.2676, +0.0735, -0.5652, -0.2544, -0.1516, +0.2125, +0.0533, +0.0435, +0.0436, -0.8355, +0.2882, -0.1556, +0.0689, +0.1846, +0.1417, -0.0191, +0.1183, +0.0902, -0.1606, -0.1839, -0.5798, -0.3431, +0.1193, +0.0129, -0.0218, +0.0200, -0.0913, -0.4189, +0.0418, -0.1330, +0.2012], -[ +0.0860, -0.4122, +0.0072, +0.3357, -0.5043, +0.0416, -0.0286, -0.0050, -0.2859, +0.3398, -0.2809, +0.0264, +0.0871, -0.3896, -0.2248, +0.1483, +0.1828, +0.4049, +0.3183, -0.2193, -0.1930, -0.4759, -0.0457, -0.3416, -0.3719, -0.0410, -0.1147, -0.0887, -0.1058, -0.0524, -0.7821, -0.1126, +0.0727, +0.2004, -0.3692, -0.2217, +0.0736, -0.5208, -0.6342, -0.4347, +0.0429, +0.4549, -0.2423, -0.5059, +0.2033, -0.2727, +0.1958, +0.2339, +0.0676, -0.5491, -0.4905, -0.2783, -0.2623, +0.0339, -0.5040, -0.6522, -0.3125, +0.1904, +0.1764, +0.1975, -0.5408, -0.0927, +0.3841, -0.1483, -0.8730, -0.4803, -0.9211, +0.2335, -0.2224, -0.1303, +0.3274, +0.0448, +0.0203, +0.0992, +0.0582, -0.6611, -0.2357, +0.4562, -0.2077, -0.0901, +0.2059, -0.3621, +0.1916, +0.1833, +0.2698, +0.1020, -0.2940, -0.1041, -0.6160, -0.1141, -0.4699, -0.4523, -0.5473, -0.1926, -0.0658, -0.0885, +0.2159, +0.1105, -0.3298, -0.0628, -0.0519, +0.1462, +0.0632, -0.4394, +0.1101, -0.1644, -0.2426, +0.5188, -0.3723, -0.3487, +0.4652, -0.4859, -0.0341, +0.2152, -0.2399, +0.8625, +0.5876, -0.0328, -0.5113, -0.2616, +0.2735, +0.3406, -0.1371, -0.1695, +0.1260, -0.0178, -0.0045, -0.3296], -[ +0.1102, +0.0121, -0.7772, -0.5385, -0.0514, -0.1981, +0.2703, +0.2181, +0.0721, +0.1291, +0.1378, +0.4928, -0.0862, -0.0334, -0.7570, -0.6509, +0.0378, -0.0167, +0.0270, +0.0293, +0.5744, +0.5170, +0.0012, -0.2804, -0.1415, +0.0899, -1.5367, +0.2064, -0.1304, -0.5718, +0.6503, +0.2021, +0.2505, +0.6937, -0.4092, -1.2775, -0.8950, +0.4560, -1.0864, +0.0323, +0.3233, -0.1957, -0.1945, -0.6010, +0.7092, +0.6400, +0.0715, -0.1164, -0.0140, +0.1785, -0.3823, +0.1729, +0.3333, -0.2764, +0.3461, -0.2079, -0.1228, +0.1385, -0.0064, -0.3818, +0.2252, -0.7614, -0.7233, -0.1618, +0.0994, -0.0081, +0.1200, +0.4186, -0.9617, -0.1190, -0.5095, +0.1719, -0.0091, +0.0062, -0.1355, -0.2484, -0.0839, +0.2849, +0.1087, +0.5063, -0.1400, -0.6002, +0.0857, -0.5801, -0.0981, +0.3044, -0.6144, +0.1395, -0.8585, +0.2053, -0.3901, +0.2287, -0.2097, -0.3054, +0.0728, +0.3011, -1.0488, +0.4611, -0.1313, -0.1693, -0.6381, -0.1089, +0.1812, -0.4761, +0.2828, +0.2916, -1.1800, +0.2517, -0.0516, -0.5645, -0.8042, -0.2421, +0.3492, +0.2800, +0.4188, +0.4207, -0.9834, +0.2510, -0.4575, +0.2122, -0.0818, -0.9020, +0.2393, -0.5370, -0.0436, +0.1985, +0.3996, +0.1022], -[ +0.2686, -0.1895, -0.0578, -0.5393, +0.0488, -0.1183, -0.0925, +0.1631, -0.1302, +0.1185, +0.2290, +0.1277, -0.1945, +0.2984, +0.3310, +0.3562, -0.7080, -0.3564, -0.5813, +0.2040, +0.2112, -1.0981, -0.1114, -0.0577, -0.1936, -0.1561, -0.0164, -0.1696, -0.1533, +0.0062, +0.2788, +0.0897, -0.2554, +0.0829, +0.4043, -0.0124, -0.6011, +0.2213, -0.2310, +0.3833, -0.1441, -0.1801, -0.4506, +0.3217, +0.2312, +0.3792, +0.0194, -0.6252, -0.0604, -0.1110, +0.1813, -0.1987, -0.3017, +0.0985, -0.0505, +0.2090, +0.3346, +0.1980, +0.1525, -0.0732, -0.3113, -0.0119, -0.0605, -0.3041, +0.1134, -0.2606, +0.2392, -0.0798, -0.0158, -0.0345, +0.2024, -0.0491, -0.6566, -0.0763, +0.2205, -0.1135, -0.2669, -0.0175, -0.3708, -0.0613, +0.0750, +0.0916, -0.1503, -0.1803, -0.0976, +0.0454, +0.0007, +0.0630, +0.2224, -0.9827, +0.3830, -0.8989, +0.1124, -0.1172, -0.2296, +0.1730, -0.3284, -0.0596, +0.2500, -0.2468, -0.3512, -0.2908, -0.1343, -0.0338, +0.0667, -0.1502, -0.1334, -0.0858, +0.0887, -0.0710, -0.0385, -0.6268, -0.2070, +0.0301, -0.5431, -0.0981, +0.0507, -0.1516, +0.2607, +0.5127, +0.2096, -0.3085, +0.0592, -0.8267, -0.0174, +0.2329, -0.2777, +0.0999], -[ -0.4416, +0.3176, +0.3077, +0.2472, -0.0621, +0.1915, -0.1738, -0.2118, -0.8704, -0.6334, +0.1108, +0.1514, -0.7374, +0.0181, -0.1144, -0.1395, +0.1252, +0.2976, -0.2135, +0.5247, -0.1174, -0.1070, +0.1667, +0.1450, -0.3991, -0.5186, -0.4666, -0.0908, +0.2023, +0.3591, -0.9534, +0.1227, -0.3889, -0.5014, -0.4729, +0.0798, -0.6110, -0.1999, +0.8039, +0.2569, -0.1732, -0.3635, +0.1966, -0.6575, +0.4213, -0.1408, +0.1146, -0.4793, -0.8400, +0.3549, -0.0213, +0.1506, -0.0547, +0.0227, -0.1284, +0.3999, +0.3201, -0.0915, -0.5614, -0.1771, -0.0561, -0.0038, +0.3142, -0.3507, -0.2682, -0.0363, -0.3520, -0.0988, +0.0605, +0.5220, +0.0298, +0.2380, -0.3885, -0.0576, -0.2886, -0.1544, -0.2290, -0.4171, +0.0369, -0.1045, -0.1938, +0.1384, +0.0100, -0.3327, +0.4759, +0.0734, -0.2863, -0.0236, -0.3027, -0.4656, +0.1753, +0.5189, +0.4069, -0.4438, -0.1988, -0.4012, -0.4016, +0.0544, -0.1855, -0.4306, -0.3162, +0.1760, -0.4855, -0.8267, -0.0659, -0.0903, +0.1460, -0.5474, -0.1682, -0.1501, -0.2286, -0.0076, -0.0096, +0.1128, +0.2005, -0.2600, -0.4570, +0.2198, +0.2561, -0.8376, -0.6398, +0.2621, -0.3599, -0.0497, -0.7944, -0.0308, -0.3543, -0.1538], -[ -0.2229, -0.9245, +0.3706, -0.6646, +0.5715, -0.5499, -0.1354, +0.1555, -0.1372, -0.5469, +0.2977, -0.0154, -0.0151, +0.1662, +0.3271, -0.1888, +0.3308, +0.0848, -0.1203, -0.1923, +0.1730, -0.0710, +0.7445, +0.2010, +0.2868, +0.0517, -0.2389, -0.2359, +0.1676, -0.0507, -0.0758, +0.4465, -0.4078, -0.1946, -0.2585, -0.0071, +0.1083, -1.2898, +0.3223, -0.6913, +0.1925, -0.5783, -0.0974, -0.6729, -0.0823, +0.5606, +0.1761, -0.8261, -0.3924, +0.5295, +0.2162, +0.0452, -0.0260, -0.4438, +0.0116, +0.1322, +0.1742, -0.0805, +0.6815, -0.0389, +0.1930, +0.3792, +0.3299, -0.5452, -0.2818, -0.2186, +0.2266, +0.3278, +0.0717, +0.1500, -0.0231, -0.0957, -0.5924, -0.7729, +0.0944, +0.1956, -0.1701, -0.0373, -0.1122, +0.3359, -0.2348, -0.1557, -0.2372, +0.3392, +0.0227, +0.0058, +0.0263, -0.1145, +0.2304, -0.1260, +0.2473, +0.0253, -0.2530, -0.1630, +0.1873, +0.0970, -0.5717, -1.0140, -0.0679, -0.1828, +0.2446, -0.5357, -0.0280, +0.0724, -0.1009, -0.0338, +0.0234, -0.1076, -0.1925, -0.2182, -0.1914, -0.0990, -0.0103, -0.0611, -0.2392, +0.2013, +0.1915, -0.8283, +0.3545, +0.2068, -0.0703, +0.1200, -0.1608, +0.5437, +0.4934, +0.2825, -0.2251, -0.5341], -[ -0.1065, -0.9073, -0.1946, -0.1504, -0.2841, -0.7967, +0.0958, -0.2374, +0.0210, +0.0984, +0.0110, -0.7696, -0.0710, +0.1445, -0.1316, -0.3218, -0.0700, -0.4147, -0.5783, -0.0724, -0.2475, +0.4266, +0.2746, -0.1205, -0.1908, -0.0754, -0.0197, -0.3581, -0.2872, -0.1935, +0.1544, +0.7055, -0.1982, +0.1899, -0.1576, -0.3867, -0.4906, -0.0570, -0.2590, +0.1882, -0.4089, +0.0683, +0.1000, +0.1473, +0.2366, +0.1211, -0.0937, +0.1224, -0.0740, -0.0532, +0.5831, +0.1776, -1.1284, +0.0082, +0.1158, -0.0219, +0.0960, +0.1973, +0.4306, +0.5793, -0.2370, -0.4456, +0.1370, -1.0671, -0.9928, -0.1546, -0.7773, -0.1867, +0.0763, -0.2350, +0.1853, -0.1724, -0.8279, +0.3929, +0.0049, -0.5096, -0.2003, +0.3202, -0.4283, +0.3204, -0.1574, -0.4975, -0.7709, -0.4796, -0.0836, -0.0174, +0.0934, +0.1581, +0.1762, +0.1352, -0.3669, +0.1986, -0.2279, +0.4857, +0.1466, +0.1237, -0.0141, +0.2094, +0.0681, -0.3851, -0.4375, -0.2041, -0.2484, -1.0735, -0.0108, -0.9997, +0.4379, +0.0539, +0.1390, +0.0921, -0.6356, +0.1939, -0.1805, -0.0627, -0.5647, -0.1984, -1.2081, -0.4158, -0.2606, +0.0703, +0.1294, +0.0441, -0.0799, +0.5262, -0.0575, +0.1239, +0.0760, -0.3865], -[ -0.6686, -1.4526, -1.3465, +0.0007, +0.0349, +0.3037, +0.0199, -1.0156, -0.3180, -0.3714, -0.3656, -0.3456, -0.2935, -0.0859, +0.1229, -0.1052, +0.3011, +0.0836, -0.6059, +0.0733, +0.1651, +0.1747, +0.0618, +0.0710, +0.7276, +0.4218, -0.1533, -1.5444, -0.1813, +0.2092, -0.0138, +0.6888, -0.0632, +0.0156, +0.2496, +0.0594, +0.0538, -0.6644, +0.2077, -0.4688, +0.2109, -0.2037, -0.1189, -0.7025, -0.5246, +0.1436, -0.3579, -0.1104, -0.4283, -0.3395, -0.1827, +0.0747, -0.3975, -0.0533, -0.5963, +0.0577, +0.0736, +0.8135, -0.2763, +0.3555, -0.4754, +0.1052, -0.4258, +0.0382, -0.0854, +0.0143, +0.3871, -1.2246, -0.4259, -1.1374, -0.4309, +0.7464, +0.4028, -0.2649, +0.4938, -0.0570, -0.3678, -0.0240, +0.5886, -0.1402, +0.3533, +0.1986, -0.6110, -0.0588, -0.2988, -0.2508, +0.1609, +0.4548, +0.3343, +0.2428, +0.3057, +0.5430, -0.0131, -0.2522, +0.2662, +0.1311, -0.3542, +1.1001, +0.0648, -0.3754, -0.1998, -0.1089, -0.3119, -0.7712, +0.0479, -0.2332, +0.1996, -0.6242, +0.3957, -0.7019, +0.2796, -0.8840, -0.7508, -0.0461, +0.1874, +0.1229, -0.4595, +0.5798, -0.3646, -0.2192, +0.3259, +0.2265, -0.0392, +0.2268, -0.2754, +0.1887, +0.6847, -0.9047], -[ -0.2177, -0.0206, +0.4544, -0.3367, -0.1976, -0.7780, +0.3618, +0.3153, -0.1544, -0.1317, -0.5215, +0.3383, +0.2956, +0.1784, -1.1801, -0.0835, -0.5167, +0.0134, -0.4001, -0.0886, -0.1242, +0.1500, -0.0996, -0.0123, +0.1426, -0.0848, +0.4757, -0.2603, +0.0078, +0.5511, +0.1207, -0.5867, -0.1254, +0.3456, -0.1098, -0.0725, +0.5873, -0.7337, -0.6129, +0.2461, +0.2268, -0.6863, -0.7062, -0.6180, +0.2061, +0.0839, -0.1062, +0.2671, +0.0887, -0.5992, +0.6498, +0.3111, -0.3187, -0.2152, -1.0855, +0.5258, -0.1008, -0.2520, +0.1649, -0.1566, -0.3836, +0.3951, +0.2393, -0.0919, +0.0804, -0.3108, -0.7099, +0.1944, +0.2633, +0.0545, -0.0628, +0.2160, -0.2030, +0.7727, +0.2514, -0.1022, +0.0719, +0.0948, -0.1145, -0.0743, -0.5764, +0.3999, +0.6880, -0.3566, +0.4174, +0.0710, -0.2661, +0.3469, -0.1909, +0.3208, +0.4038, +0.6026, +0.3151, -0.0464, -0.3151, +0.3820, -0.7396, -0.2928, +0.1350, -0.3337, -0.1121, -0.1337, +0.0690, -0.1494, -0.4775, -0.1159, +0.0117, +0.1426, -0.2334, +0.2027, -0.0346, -0.3007, -0.0509, -0.0680, -0.2299, -0.2064, +0.2924, +0.3896, +0.4396, +0.1816, -0.4722, -0.1385, +0.3295, +0.0716, -0.1988, +0.0616, -0.0814, -0.5494], -[ +0.2723, -0.2578, +0.4202, -0.1403, -0.3194, +0.3864, -0.0484, -0.9863, -0.3391, -0.0676, -0.6104, +0.4786, +0.2437, -0.0002, -0.4272, -0.2606, +0.3299, +0.4893, +0.0998, +0.0768, -0.5357, +0.0133, -0.6602, +0.2581, -1.1596, +0.0229, +0.1421, -1.0435, +0.5972, -0.1128, +0.0841, -0.1223, -0.4717, -0.6058, -0.0205, -0.1794, -0.4378, -0.3776, -0.2628, -0.4089, +0.3122, +0.2746, -1.0582, -0.3650, -0.5809, -0.3402, +0.0521, -1.2510, +0.2561, -0.4569, +0.2432, -0.1887, -0.1853, -0.1042, -1.4430, +0.3046, -0.1583, +0.1791, +0.0386, -0.1950, +0.5406, -0.3075, -0.3671, +0.3671, -1.3405, -0.0708, -0.7475, -0.0838, +0.3731, -0.1270, +0.0497, +0.1697, +0.4470, -0.1615, +0.0336, -0.2065, +0.0523, +0.1505, +0.4903, +0.3714, -0.1755, +0.3806, +0.0196, -0.2842, -0.0860, +0.2405, -0.3773, +0.5694, -0.1599, -0.0454, -0.4245, -0.0263, +0.3056, -0.0439, -0.4155, -0.0288, +0.1560, -0.2114, +0.4094, +0.2230, -0.1532, +0.4881, -0.3528, +0.1752, +0.0000, -0.1513, +0.1994, -0.0770, +0.2982, -0.2509, +0.2254, +0.2542, +0.3570, -0.0807, +0.4761, -0.5024, -0.3269, -0.8620, +0.4058, +0.0223, -1.6037, +0.1872, -0.6981, -0.1550, +0.3312, -1.1722, +0.0934, +0.0281], -[ -0.0358, -0.9294, +0.1473, -0.1423, +0.4728, -0.9336, +0.0444, +0.2102, -0.3634, -2.6083, -0.2377, -0.4410, -0.0159, +0.1779, +0.0892, -0.0065, -0.0819, -0.3194, -0.0839, +0.0706, +0.4780, -0.2843, +0.0040, +0.2163, -0.3419, +0.3738, -0.4703, -0.1926, +0.0908, -0.0633, -0.3458, -0.2713, -0.0892, -0.4380, +0.0116, +0.0708, -0.2139, +0.2261, -0.4573, -0.9673, -0.2476, +0.0734, -0.1025, -0.1312, -0.0034, +0.0499, -0.8655, -0.3684, -0.4959, +0.3119, +0.2083, +0.1051, +0.1435, -0.1343, +0.3092, +0.2139, +0.0733, +0.2955, -0.0234, -0.2585, -0.2333, +0.3707, +0.4379, -0.2261, -0.1698, -0.1083, -0.5586, -0.0143, +0.1273, +0.1268, -0.2406, -0.0722, -0.2680, -0.0351, -0.3858, -0.1353, +0.1412, +0.1089, +0.1258, -0.5382, -0.1339, -0.3292, -0.5833, -0.2579, -0.4745, -0.7179, +0.0985, -0.0330, +0.0802, -0.0798, -0.3669, -0.1355, +0.2123, +0.1874, -0.0241, +0.3655, -0.1120, -0.6415, -0.0008, -0.1072, +0.8517, -0.4529, -0.5821, -0.3470, +0.1242, +0.4521, -0.0971, -0.2782, -0.3599, +0.4261, -0.1713, -0.1995, -0.3029, -0.6046, -0.2588, -0.3630, -0.3292, +0.5913, -0.3289, +0.1385, +0.2785, +0.3663, -0.4650, -0.3092, -0.0452, -0.7562, -0.0202, -0.1773], -[ -0.1902, +0.0338, +0.1892, -0.5268, -0.1789, -0.6918, -0.6165, -0.2447, +0.0026, -0.2985, -0.3212, -0.4541, -0.5836, +0.4701, -0.2466, -0.4287, +0.4560, +0.1772, -0.5221, +0.1437, -0.1751, +0.4970, +0.1110, +0.0058, +0.1677, -0.3847, -0.4932, -0.6931, -0.4625, -0.1862, -0.2925, -0.0118, -0.2783, -0.7476, +0.0319, +0.0422, -0.3826, -0.5694, -0.6898, +0.5473, +1.0358, -0.2504, +0.6876, -0.1531, -0.2196, -0.2516, +0.2007, +0.1804, +0.0551, +0.0845, +0.1073, -0.0234, -0.0198, +0.0161, -0.2524, +0.4576, -0.3338, +0.2580, +0.1661, -0.2426, +0.0235, +0.0319, -0.0352, -0.7015, -1.2315, +0.2812, -0.0184, +0.2324, -0.1036, -0.5457, -1.0561, -0.3279, -0.9643, -0.2372, -0.0068, -0.5037, -0.4026, -0.0218, +0.1780, -0.3013, -0.0909, +0.3732, -0.1076, +0.1213, -0.4473, -0.3860, -0.1270, +0.0658, -0.1807, +0.0029, -0.2151, +0.3463, +0.2334, -0.0366, -0.2203, -0.1868, -0.2897, -1.3381, +0.0813, -0.6783, -0.2217, -0.2431, -0.4858, -0.6730, +0.1477, -0.4854, -0.1602, +0.4036, +0.3722, +0.4132, -0.2809, +0.0419, +0.0982, +0.1278, +0.2978, -0.5209, -0.2980, -0.4240, -1.0159, -0.2225, +0.1301, -0.3585, +0.0458, -0.3217, +0.7363, -0.0760, +0.0626, -0.1160], -[ -0.6408, +0.0418, +0.4327, +0.4957, -0.5542, +0.1704, +0.0831, -0.2431, +0.5037, +0.2196, +0.2412, +0.4562, +0.1986, -0.1128, -0.0013, +0.2148, +0.0421, -0.5144, -0.0547, -0.2570, +0.4304, +0.2635, -0.3628, -0.5928, +0.3233, +0.2225, +0.1166, -0.2294, +0.0015, -0.2353, +0.0755, +0.1676, +0.2362, -0.0001, +0.3844, -0.2259, +0.1017, -0.1627, -0.1702, +0.4480, +0.1748, +0.1926, -0.1514, +0.2479, -0.3957, -0.0812, -0.1195, +0.0062, +0.9443, +0.1751, +0.2484, +0.2042, -0.2433, -0.2857, -0.0608, -0.2249, +0.3437, -0.4374, -0.0328, -0.1524, +0.0442, +0.0735, +0.0650, +0.2513, +0.6752, -0.6499, -0.7655, -0.0269, -0.4512, +0.0322, +0.1395, +0.4490, +0.3345, -0.3893, +0.3443, -0.5020, -0.3247, -0.3942, -0.3014, +0.3304, +0.2806, -0.0376, +0.0781, +0.2519, -0.2846, +0.2684, -0.0977, -0.4277, +0.2557, +0.4300, +0.0102, -0.6558, -0.6996, -0.1458, -0.4021, +0.3748, +0.4864, -0.3297, +0.1839, +0.4590, -0.0810, -0.0521, -0.0181, +0.5112, +0.3664, +0.0261, -0.3814, +0.5575, +0.2466, +0.5457, -1.0469, +0.1983, -0.7956, +0.3665, +0.1454, +0.3566, +0.0530, +0.1629, -0.0300, -0.4381, +0.1200, -0.3006, -0.1827, +0.3186, +0.3024, -0.0892, +0.3916, +0.2412], -[ -0.2827, -0.2235, -0.5307, +0.1349, +0.2646, +0.2083, +0.3334, +0.1225, +0.1288, +0.3452, -0.2706, -0.0767, -0.3593, -0.0500, -0.3160, +0.0372, -0.3846, +0.0175, +0.0340, +0.2382, -0.5179, +0.3565, -0.0321, +0.3799, -0.1501, -0.1126, +0.0794, -0.1346, +0.0682, -0.2434, -0.6264, -0.9833, +0.3195, -0.0429, +0.2530, +0.0481, +0.3400, +0.6683, +0.0589, +0.3157, -0.0250, -0.0329, -0.3077, +0.0526, -0.0726, +0.3115, -0.9368, +0.1022, +0.0559, -0.3479, +0.0662, -0.1360, +0.1716, -0.9837, -0.1975, +0.3949, +0.2016, +0.1110, +0.3875, -0.6118, -0.1462, +0.3890, -0.2844, -0.3043, +0.2254, -0.3063, +0.4609, +0.1206, +0.2479, +0.0692, +0.2553, -0.1745, +0.1158, -0.1163, +0.0016, +0.0955, -0.9403, +0.0450, +0.1767, -0.1936, +0.2377, -0.3914, +0.0415, -0.5707, -0.1466, +0.2562, +0.0643, -0.8050, -0.3105, +0.2897, +0.2797, -0.0297, -0.7288, +0.2623, +0.1159, -0.3592, -0.0977, +0.1379, +0.3731, -0.1982, +0.1999, +0.0212, +0.2016, -0.2136, -0.2508, -0.3598, -0.1775, -1.1882, -1.1856, -0.3954, +0.6447, +0.2579, +0.1247, +0.1751, -0.3826, +0.1114, -0.4931, -0.1550, +0.0529, +0.1003, +0.3493, -0.1155, -0.9746, +0.3280, +0.1813, +0.2738, +0.0352, +0.3533], -[ -0.0555, +0.3169, -1.0994, +0.3878, -0.6311, +0.0099, +0.0642, -0.8212, -0.2377, -0.7588, +0.2421, +0.2142, -0.1919, +0.1107, -0.1329, +0.5135, -0.3147, -0.7208, -0.0527, -0.2663, -0.0528, -0.9730, -0.6234, -0.1450, -0.0524, +0.6562, +0.4428, +0.1697, -0.3475, -0.0912, -0.5581, +0.1562, +0.2789, +0.5200, +0.0341, +0.5829, +0.1269, -0.8566, +0.4828, +0.0873, +0.2583, -0.0168, -0.0177, +0.5477, +0.2066, +0.0762, -0.4873, +0.1856, -0.2961, -0.1215, +0.0437, -0.0228, +0.1665, -0.1918, -0.7460, -0.0305, -0.0680, +0.0645, -0.0127, -0.4744, -0.1115, +0.1872, +0.0982, -0.1902, -0.3763, -0.1091, -0.0807, +0.1490, +0.2465, -0.0029, -0.3058, +0.4059, -0.3464, +0.0596, +0.0595, +0.3941, +0.2609, -0.3314, -0.4786, +0.7072, -0.3363, -0.2527, +0.0114, -0.0144, +0.1184, +0.2506, -0.5895, +0.3683, -0.0783, +0.2214, -0.2998, -0.4284, +0.7750, -0.1088, +0.3285, -0.2758, +0.2577, -0.7591, -0.3696, +0.3248, +0.0463, +0.3172, -0.2189, -0.3549, +0.2287, +0.0122, -0.1190, +0.0071, +0.1821, -1.2088, -0.8290, +0.5910, +0.0603, -0.0207, -0.4592, +0.0752, +0.0618, -0.1583, +0.0478, +0.0753, +0.1470, -0.2875, +0.4313, +0.0735, -0.1669, +0.0450, -0.7186, -0.1111], -[ -0.0234, -0.3819, -0.4015, +0.2447, +0.0981, +0.1418, +0.1167, +0.3131, -0.1288, +0.0595, +0.1188, -0.0096, +0.3949, +0.3122, -0.2316, -0.2147, -0.0139, -0.0283, -0.4378, +0.2551, +0.8772, -0.2443, +0.0159, +0.1186, -0.1816, +0.1053, +0.0333, -0.7941, +0.1058, -0.1513, -0.0118, +0.0770, +0.3377, -0.0780, +0.4957, +0.2827, -0.2605, +0.2814, +0.1688, -0.1418, +0.2071, +0.1587, -0.0100, -1.3258, +0.2477, -0.2807, +0.0625, -0.0364, -0.0034, +0.0497, -0.0879, +0.0379, +0.4682, -0.0101, -0.6437, +0.2190, -0.5325, +0.3425, -0.3767, -0.0990, -0.1698, -0.1570, +0.3640, -0.4503, -0.4773, +0.2440, -0.8044, -0.0821, +0.1603, -0.2106, +0.4102, -0.3214, -0.3257, +0.4682, +0.1634, -0.2551, +0.1867, -0.0773, +0.5459, +0.0919, +0.0298, +0.3099, -0.8318, -0.2977, -0.1349, -0.1194, +0.0798, -0.1492, +0.0913, -0.0803, +0.3073, +0.2372, -0.2843, -0.0611, +0.2218, +0.1417, -0.3814, -0.1031, -0.1077, -0.4111, +0.3048, +0.3256, +0.1871, +0.3835, -0.0743, -0.1184, -0.2430, -0.3891, +0.5441, -0.2933, -0.2821, -0.0230, -0.2616, -0.1175, -0.1796, -0.2683, -0.0137, +0.0006, -0.2903, -0.3810, -0.1868, -0.0097, +0.1945, -0.6500, +0.0115, -0.2258, -0.1278, -0.2653], -[ -0.4997, +0.6436, -0.6328, -0.1454, -0.4471, -0.9195, +0.5074, -0.8759, +0.2181, -0.3109, -0.1983, +0.0696, +0.2539, -0.3278, +0.4644, +0.6273, -0.4866, +0.3405, +0.0195, -0.0388, -0.0499, -0.4244, +0.0456, -0.2731, -0.1810, -0.5715, -0.3463, +0.0982, +0.3841, -0.2267, -0.6011, +0.4377, +0.0180, -0.2692, -0.1701, -0.4175, +0.4580, +0.3985, -0.5250, -0.1893, +0.8635, +0.2076, +0.2662, -0.4904, +0.4656, -0.1229, -0.2747, +0.2963, -0.1008, +0.1094, -0.2048, +0.2581, +0.3981, +0.3763, -0.0631, -0.4015, +0.2540, -0.9025, +0.1786, +0.1122, +0.0730, -0.1253, -0.6268, -1.3593, -0.1585, +0.0950, -0.3371, +0.0361, +0.1204, +0.3803, +0.2508, -0.3979, +0.0862, +0.1323, -1.5739, +0.3392, -0.6345, +0.3410, -0.6588, +0.2246, -0.0695, -0.4231, +0.3405, -0.1674, -0.2923, +0.4303, -0.1227, +0.1834, +0.6104, -0.4226, -0.4747, -0.2715, -0.0909, +0.8690, -0.3532, +0.2680, -0.4897, +0.1346, +0.1080, -0.3489, -0.6488, -0.2116, +0.0509, -0.0073, -0.3764, -0.9518, +0.1325, -0.0433, -0.3847, -0.0939, +0.3615, +0.7501, -0.2852, -0.1333, -0.2565, +0.6081, +0.3940, -1.3427, -0.0044, -0.2174, -0.6985, +0.3016, +0.3388, -0.8127, +0.2452, -0.6323, -0.4557, +0.0058], -[ +0.0357, -0.5021, -0.0783, +0.1833, -0.3416, -0.3491, +0.5600, -0.2198, -0.0725, +0.1539, -0.2172, +0.0709, -0.2706, +0.4697, +0.1659, -0.0686, +0.1566, -0.1229, -0.0250, -0.8474, +0.3914, +0.0516, +0.0011, +0.5000, +0.0414, -0.3687, -0.1058, -0.3168, +0.3737, +0.2791, +0.0835, +0.0169, -0.3036, -0.1179, +0.1970, -0.2069, -0.0319, -0.2887, -0.0001, -0.6552, +0.1623, -0.2784, +0.1427, -1.7587, +0.0025, +0.3209, -0.1946, +0.1554, -0.1742, +0.2153, -0.3244, +0.1827, -0.3104, +0.5895, -0.3712, +0.0976, +0.1421, -0.1797, -0.2242, -0.3751, +0.1222, +0.2110, -1.3454, +0.6247, -0.0409, -0.0955, +0.1164, -0.5154, +0.0121, +0.0494, +0.3039, -0.2834, -0.2094, -0.4232, -0.0589, +0.2077, -0.0265, -0.0271, +0.1251, +0.4502, +0.4876, -0.2714, +0.5018, -0.0105, -0.3531, -0.0459, +0.1410, +0.2674, +0.2381, -0.7038, +0.3087, +0.1561, -0.0935, -0.1084, +0.2003, +0.2311, +0.1268, -1.6552, +0.1482, -0.4532, +0.3508, -0.0342, +0.1757, +0.4150, +0.0160, +0.2346, -0.5845, -0.3216, -0.2084, -0.5881, +0.4473, +0.3346, +0.0946, -0.0582, -0.2148, -0.0629, -0.2622, -0.3780, -0.2816, -0.1331, +0.1083, +0.2458, +0.2104, +0.0321, +0.2373, -0.1469, -0.1315, -0.7276], -[ +0.0728, -0.9232, -0.8314, -0.3031, +0.0700, -0.1861, +0.0776, -0.6857, -0.8972, -0.0872, +0.0920, +0.1434, +0.6029, +0.0293, +0.1848, -0.2706, +0.3298, -0.2692, -0.0816, -0.0128, -0.1143, +0.2741, -0.3918, -0.2342, -0.0201, -0.7314, +0.2938, +0.6610, +0.3425, +0.6025, +0.0598, -0.0763, -0.3972, -0.3473, -0.2001, -0.7127, -0.8071, +0.0758, +0.0521, -0.9529, -0.1797, -0.4363, -0.1515, -0.5594, +0.0354, -0.5804, -0.1842, +0.2136, +0.2058, -1.2362, +0.2587, +0.1172, +0.2588, -0.6392, +0.5176, +0.2368, +0.3947, +0.5617, +0.1439, -0.1797, -0.7464, +0.3220, +0.5152, -0.6114, +0.3485, -0.1879, -1.0153, -0.4226, +0.4892, -0.2943, -0.0635, -0.2873, +0.1273, -0.3703, -0.6560, -0.1037, +0.7705, +0.0459, -0.5118, +0.1097, -0.0023, -0.2226, +0.0507, -0.1451, +0.4258, +0.4105, +0.0265, +0.5537, +0.2109, +0.0887, -0.0882, -0.0542, -0.0204, +0.0647, +0.0530, -0.0579, -0.3134, +0.5949, -0.2756, -0.5619, +0.2357, -0.0827, +0.3306, +1.0360, +0.3402, +0.6790, -0.3268, +0.3410, +0.2921, -0.5516, -0.8274, -0.5249, -0.0821, +0.0865, -0.2153, -0.4296, +0.3277, -0.9019, +0.3189, +0.0366, -0.5807, -0.5969, -0.0530, +0.2014, +0.3324, -1.7819, -0.9771, -0.0617], -[ -0.5075, +0.3609, -0.0202, -0.1021, -0.1178, +0.4742, +0.2236, -0.1127, -0.2151, +0.2349, -0.2088, -0.2140, -0.1003, -0.4619, -0.1726, +0.4216, -0.1895, +0.3078, +0.0371, +0.0188, -0.4812, -1.0817, -0.8562, -0.6420, -0.3050, +0.2622, -0.5655, -0.0998, -0.3430, -0.1596, -0.6016, -0.1029, -0.3253, +0.5561, +0.2590, -0.1749, +0.0666, -0.0887, +0.0892, -0.2725, +0.0459, +0.2450, -0.1717, -0.5302, -0.2215, -0.0470, -0.1036, -0.0804, +0.1275, +0.0215, +0.1561, +0.3361, -1.2216, +0.2311, -0.0307, +0.0663, -0.7622, -0.1053, +0.0175, -0.2247, +0.5749, -0.1497, -0.5080, -0.2277, +0.0379, +0.1907, -0.0094, -0.0884, +0.1759, +0.0053, -0.0785, +0.6100, +0.1000, -0.3989, -0.5913, +0.3648, -1.2439, -0.2011, -0.5854, -0.0269, -0.5440, +0.0497, +0.1872, +0.0131, -0.6132, +0.1195, -0.0994, -0.3475, +0.1174, -0.0290, +0.4126, +0.0195, +0.1264, -0.2804, -0.0351, +0.2548, -0.9799, -0.1171, +0.3978, -0.1676, -0.9758, +0.0380, +0.0122, -0.8133, +0.1514, +0.7705, -0.3293, +0.1543, +0.4740, +0.3199, -0.0515, +0.2207, -0.3491, +0.1219, -0.6029, +0.0725, -0.0906, -1.2194, -0.1297, +0.5359, -0.0231, -0.2388, -0.1650, -0.3955, +0.6838, +0.7010, -0.0348, +0.2292], -[ -0.1823, -0.4965, +0.0165, +0.1873, +0.1643, -0.1812, +0.2983, -0.2014, -0.4682, -0.2899, +0.0511, -0.0127, +0.0866, -0.0811, +0.4868, +0.2006, +0.1662, -0.2405, -0.0704, -0.2203, -0.5112, +0.0083, -0.0429, -0.2956, -0.0309, -0.1910, +0.4103, +0.3168, +0.2474, +0.1816, -0.3416, -0.3802, +0.0218, +0.2470, -0.0160, +0.2198, +0.2557, -0.4246, -0.5014, -0.7208, -0.3559, -0.0757, -0.1628, +0.1974, -0.6720, -0.0002, -0.3260, -0.2880, -0.0901, -0.3720, +0.2213, +0.1772, +0.4810, +0.2369, +0.2146, -0.3602, -0.1387, -0.2679, -0.0369, +0.5779, +0.0425, -0.1750, +0.1578, -0.3944, +0.0961, +0.1011, -0.3144, -0.4817, -0.0802, +0.3130, -0.6700, -0.3188, -0.1589, +0.0027, -0.7289, -0.6367, -0.9529, +0.3933, -0.0718, -0.4474, -0.1741, +0.1594, +0.3661, +0.3383, +0.2354, +0.2744, -0.2745, -0.3192, +0.3265, +0.4156, -0.3810, -0.1049, -0.4306, +0.4482, -0.6885, -0.1138, +0.0524, -0.0249, +0.1010, -0.2807, -0.0419, +0.3127, -0.3154, -0.4952, -0.3714, -0.5823, +0.1749, +0.0384, -0.1557, +0.2031, -0.5491, -0.5051, +0.0801, -0.3320, -0.1473, -0.1565, -0.0252, +0.2738, -0.0112, +0.0132, +0.2213, -0.3581, +0.0331, -0.7222, +0.3875, +0.0248, +0.5741, -0.1827], -[ +0.6779, -0.6608, -0.1337, -0.4406, -0.9837, +0.3510, -0.5198, -0.3815, +0.4867, -0.4580, +0.5416, -0.6106, -0.0644, +0.2897, +0.0018, -0.3221, -0.1916, +0.2973, -0.5380, +0.3419, -0.7082, -0.0099, -0.3034, -0.1000, -0.1143, -0.7084, +0.0200, -0.1295, -0.3436, -0.3049, -0.0146, -0.5513, +0.5047, +0.0459, +0.0357, -0.1778, -0.0799, -0.1420, +0.3342, -0.8201, -0.8007, -0.3973, -0.0444, +0.0442, -0.7767, -0.0718, +0.4046, +0.1937, -0.9602, +0.1423, -0.0012, -0.6561, -1.0205, -0.6529, +0.1452, -0.5726, +0.1101, +0.0607, -0.8827, -0.7192, -0.4365, +0.4748, -0.2078, +0.3923, +0.3074, +0.1189, +0.4768, +0.3125, -0.0891, +0.2668, -0.7275, -0.1772, +0.3602, +0.0463, -0.5143, -0.2736, +0.0061, +0.2811, +0.2728, -0.1386, +0.4314, +0.1955, -0.8221, -0.4949, +0.2825, +0.1439, +0.2523, -0.2636, -0.1137, +0.0296, -0.4886, +0.2106, +0.0178, +0.2722, -0.4467, +0.0508, -0.3017, +0.2795, +0.0188, -0.1877, +0.7049, -0.1672, -0.1838, -0.3941, -0.1595, -0.8719, -0.3180, -0.9501, +0.0614, -0.0080, -0.9997, +0.3022, -0.8331, -0.4308, -0.1561, +0.0776, -0.3225, +0.1528, +0.1997, +0.1452, +0.0278, -0.0270, +0.2516, -0.2377, +0.4039, -0.0979, +0.1882, +0.1323], -[ +0.2449, -0.2153, -0.0139, +0.1756, -0.2188, -0.2588, -0.1302, +0.5127, +0.1256, -0.3612, -0.1379, +0.1316, +0.3492, +0.2396, +0.0020, -0.6787, -0.2155, -0.2505, +0.1042, -0.3226, -0.0695, +0.6777, -0.4125, +0.0752, +0.0168, -0.3746, +0.3420, -0.0616, -0.2255, -0.5787, -0.5424, -0.2951, +0.1492, +0.2708, -0.0213, +0.1277, +0.0839, -0.2461, +0.1219, +0.0941, -0.0271, +0.3688, +0.3123, -0.2129, +0.2774, +0.2728, -0.2748, -0.2956, -0.0366, +0.7580, +0.4620, +0.1306, +0.1390, +0.1427, +0.2934, +0.4254, -0.0198, -0.8929, -0.6593, -0.5133, -0.1546, +0.4535, +0.3130, -0.3233, +0.0411, -0.0895, -0.7532, -0.8405, -0.3151, +0.0735, +0.1617, -0.1501, -0.1411, +0.0093, -0.1284, -0.1676, +0.2622, +0.6015, +0.2706, -0.2224, -0.2998, -0.0447, +0.0177, -0.2659, +0.1820, -0.1120, -0.1216, -0.2603, -1.1719, +0.0253, +0.1626, +0.0282, -0.4075, -0.5423, -0.4029, +0.5152, -0.0834, +0.5315, +0.1746, -0.0359, -0.3523, +0.0362, +0.3816, -0.6745, -0.3522, +0.2567, -0.1089, -0.0213, -0.0885, -0.0014, -0.6738, +0.4258, -0.0662, -0.1851, +0.1640, -0.5138, -0.0401, +0.2700, -0.1081, -0.1310, -0.4542, -0.1617, -0.7434, -1.2212, -0.1810, +0.0925, +0.0421, -0.2677], -[ -0.7391, +0.4509, -0.5742, -0.0496, -0.3812, -0.4869, -0.1195, -0.0340, -0.0948, -0.7093, -0.2297, -0.0594, -0.4085, +0.4317, -0.1778, +0.1241, -0.1776, +0.1448, +0.3649, -0.1406, -0.2968, -0.0005, -0.2363, +0.1983, +0.0604, -0.0912, +0.4107, -0.0163, -0.7363, -0.1026, -0.4078, -0.2378, -0.2957, +0.1585, +0.3049, +0.0181, -0.2187, +0.2265, +0.0659, -0.3790, +0.1537, -0.0681, -0.0883, +0.1223, +0.0678, +0.2723, -0.1589, -0.3961, +0.1355, -0.4045, -0.1031, +0.0376, +0.3241, +0.5293, -0.1145, -0.2766, +0.3031, +0.1627, -0.0947, -0.1608, +0.6829, +0.2600, -0.1446, +0.4954, +0.3516, -0.3784, -0.2078, +0.0228, +0.4476, -0.0135, -0.0843, -0.4854, +0.0707, -0.1255, -0.2235, +0.5166, +0.1070, +0.3849, +0.0982, +0.0126, -0.4588, -0.0056, -0.4720, +0.0614, +0.0448, +0.1424, +0.3712, +0.4103, +0.3144, +0.1482, -0.0548, +0.0388, +0.3329, +0.0625, +0.2043, +0.2013, -0.0154, -0.0559, -0.3193, -0.3395, -0.3266, -0.4102, +0.6554, -0.4598, +0.0420, +0.1097, -0.2280, +0.0669, +0.1420, -0.6300, +0.5235, -0.0887, -0.4395, +0.1070, -0.4154, -0.6940, -0.0387, +0.0094, +0.1375, +0.2271, -0.2928, +0.0449, -0.8802, -0.0872, +0.2953, -0.3051, +0.1309, -0.4233], -[ -0.0648, +0.0383, -0.4536, +0.1877, +0.3323, +0.1383, -0.0602, -0.3279, -0.4868, +0.6014, -0.0664, +0.0049, +0.3817, -0.5238, -0.1521, -0.0654, -0.7734, -0.1065, -0.4238, -1.7827, -0.0152, -0.2376, +0.0746, -0.3857, -0.4769, -0.2848, +0.6124, -0.3463, -0.2201, +0.1065, +0.4178, +0.4701, +0.1148, +0.2947, -0.0806, -0.0242, -0.0813, +0.3248, +0.7067, -0.2027, +0.2195, +0.2760, -0.3441, -0.1207, +0.3518, -0.2737, -0.6899, +0.7836, -0.0854, +0.0204, -0.5800, +0.0207, -0.5018, -0.7215, +0.4040, -0.6504, -0.3867, -0.3078, -0.5418, +0.0147, -0.3029, -0.0180, +0.3363, -0.5021, -0.1544, -0.3008, -0.6241, -0.4914, -0.3292, +0.3668, +0.0521, +0.0765, +0.5543, -0.1811, +0.0154, +0.0071, -0.2398, +0.3352, -0.5340, +0.5512, -0.1515, +0.1188, +0.0818, -0.1393, +0.4699, -0.4699, -0.2378, -0.5884, -1.7787, +0.2362, +0.0788, -0.3089, -0.2552, -0.0800, +0.1337, -0.3176, -0.0063, +0.2797, +0.0434, +0.1966, +0.1181, -0.1982, -0.1341, +0.5760, -0.1658, -1.0982, -0.2727, +0.0117, +0.1704, -0.1595, -0.2454, -0.1981, -0.1477, +0.3232, +0.3609, -0.4776, +0.1838, +0.0354, +0.1338, +0.2625, -0.7569, +0.0343, -0.0634, -0.4646, +0.1144, +0.4544, -0.9544, -0.2586], -[ -0.2620, -0.6134, -0.5575, -0.2681, +0.4027, +0.3634, -0.0543, -0.1180, -0.6145, -0.1942, +0.1505, +0.0845, +0.5620, +0.8212, -0.4218, +0.0488, -0.4055, -0.5008, -0.4999, -0.5748, +0.4572, +0.0026, -0.3550, +0.4986, +0.1411, +0.0797, -0.0669, +0.0752, -0.1019, -0.1814, +0.1445, +0.6135, -0.7944, -0.1001, -0.3981, -0.0211, -0.1829, +0.0308, -0.6305, +0.2018, +0.7413, +0.1848, +0.0985, +0.1806, -0.1385, -0.3199, -0.3189, -0.1639, -0.2749, -0.3625, +0.7190, -0.1605, -0.3078, -0.0601, +0.0029, +0.2280, +0.2837, -1.3207, -0.4916, -0.3731, +0.0149, -0.6530, +0.2533, +0.0166, +0.2010, -1.0778, -0.2883, +0.0683, +0.1092, -0.1121, -0.0101, -0.5754, -0.2278, +0.2815, +0.5499, -0.3929, -0.0874, -0.5338, -0.1755, +0.6488, -0.0247, -0.1760, -0.0166, +1.0637, +0.1702, +0.0586, +0.0286, +0.0119, +0.7188, +0.1751, +0.2374, -0.3273, -0.0438, +0.5444, -0.1098, -0.4977, -0.5476, +0.1526, +0.3569, +0.1674, -0.1918, -0.3416, +0.1820, +0.1541, -0.3073, -0.1729, +0.1284, -0.6726, -0.0989, +0.1694, -0.7089, +0.2554, +0.0456, +0.3919, -0.3638, +0.4410, -0.5198, -0.3613, +0.2492, -0.0729, +0.1148, +0.0579, -0.3890, -0.5902, +0.4732, +0.0118, +0.2358, -0.3067], -[ +0.8098, +0.4240, +0.3424, +0.0634, -0.5690, +0.0158, +0.0581, -0.3816, -0.5761, -0.5129, -0.1171, -0.4289, +0.2213, -0.5088, -0.2445, +0.1314, +0.0633, -0.8692, -0.1160, -0.0497, -0.1837, -0.3568, -0.4386, -0.1145, -0.2266, +0.2815, -0.2446, +0.4914, -0.3105, -0.3559, +0.2812, -0.9536, -0.2571, -0.9224, -0.0675, -0.3412, +0.5738, -0.5653, -0.6487, -0.9208, -0.0007, +0.1147, +0.4853, -0.1430, +0.1629, +0.0710, -0.1432, -0.1864, +0.2122, -0.2746, +0.1466, +0.1995, -0.2663, -1.1789, +0.0521, -0.6472, -0.0877, +0.3208, +0.2019, +0.1355, +0.0567, +0.1386, +0.0706, -0.7878, -1.0537, +0.4630, +0.3129, -1.1002, -0.4336, +0.0999, -0.5936, -0.2190, +0.2683, -0.5144, +0.0187, +0.4165, +0.1167, -0.1578, -1.1965, -0.1498, +0.1342, -1.0202, -0.1701, -0.3073, -0.1204, +0.4735, +0.2976, +0.5689, +0.3100, +0.4368, -0.5301, +0.0869, -0.0182, +0.0500, -0.4015, +0.4028, +0.5757, -0.0095, -0.3686, -0.8498, +0.3167, -0.4042, -0.1624, -0.2644, -0.2698, +0.4733, +0.1340, +0.1311, +0.1926, -0.1940, +0.1510, +0.7822, -0.1424, +0.2154, -0.1210, -0.7739, +0.0242, -0.4027, -0.6095, +0.0546, -0.0955, -0.3124, -0.9088, -1.2626, -0.5517, +0.0273, -0.0441, -0.4825], -[ -0.0038, +0.2194, -0.4257, +0.0212, +0.1821, +0.2586, -0.2772, -0.4315, +0.1248, -0.2269, -0.1932, +0.0191, -0.1689, +0.1853, +0.4037, +0.1624, -0.2766, -0.0879, -0.3011, -0.0752, -0.0190, +0.0470, -0.3969, +0.1861, -0.3224, +0.1270, -0.5216, -0.0142, -0.3361, -0.1206, -0.5958, +0.2426, -0.0789, +0.2200, +0.1871, -0.5703, +0.2773, +0.1590, -0.2376, -0.6708, -0.5327, +0.0060, -0.6113, -0.5245, +0.1558, +0.6622, +0.2810, -1.2069, -0.1714, +0.4829, +0.0895, -0.1429, +0.2407, -0.3904, -0.4610, +0.4230, +0.1551, +0.4818, +0.1017, -0.0855, -0.3252, +0.5500, -0.3598, +0.2049, -0.8408, +0.4368, -0.0456, -0.4872, -0.6823, -0.3724, +0.0017, +0.0726, +0.3207, -0.8898, +0.3638, +0.0095, -0.0035, -0.1684, +0.5114, +0.4553, +0.0333, +0.2251, -0.1412, +0.0532, +0.1236, -0.0679, -0.0610, -0.1789, +0.0656, -0.1358, -0.2850, -0.4242, +0.5566, -0.1053, -0.0262, +0.4008, -0.0911, +0.0074, -0.0853, -1.4260, -0.0794, -0.2610, -0.0454, +0.1743, -0.1409, -0.5382, -0.1971, +0.0002, -0.0867, +0.0133, -0.1884, -0.4277, +0.0657, +0.0534, +0.4734, -0.1151, -0.0515, -0.3537, +0.1164, -0.1923, -2.6659, +0.0840, +0.8506, +0.0887, +0.1853, -0.3265, +0.2028, +0.2340], -[ +0.2645, -0.1499, +0.3197, -0.0685, +0.3166, +0.2547, -0.1599, -0.5387, -0.9948, +0.3345, -0.5399, +0.3418, +0.4057, -0.6313, -0.3957, -0.2144, +0.0664, +0.1110, -0.0885, +0.2094, +0.3636, -0.6287, -0.0758, -0.0505, +0.2156, +0.5467, +0.8184, +0.2165, -0.6222, +0.2245, -0.2910, -0.0235, -0.0473, -0.1085, +0.0819, -0.0145, -0.2419, -0.2849, -0.6252, -0.3082, +0.2974, -0.0519, -0.2464, +0.0733, +0.1795, -0.0902, -0.3184, -0.0987, -0.0556, -0.3344, +0.0150, -0.0257, -0.1526, +0.2257, -0.2489, -1.0381, -0.2311, +0.2828, +0.0115, -0.7593, +0.0912, +0.1376, +0.0254, -0.7296, +0.0155, +0.1771, -0.4376, +0.2881, -0.0147, +0.1485, +0.0017, +0.0524, +0.0820, +0.7496, -0.0846, -0.2281, +0.5763, -0.0265, -0.1533, +0.0288, -0.2862, -0.4645, -0.4408, +0.0623, +0.0771, +0.3456, -0.7375, -0.2767, +0.4489, -0.0829, +0.0021, +0.8534, -0.2904, -0.3566, -0.1500, -0.3467, -0.0354, +0.0201, +0.0829, -0.2986, -0.3601, +0.2883, -1.2012, +0.2934, -0.1325, -0.2688, -0.0053, -0.4570, -0.2315, -0.2669, +0.0782, +0.1713, -0.1696, -0.2262, -0.1616, -0.5413, -0.0817, -0.3274, +0.5465, -0.2430, -0.2744, +0.1003, -0.3115, -0.3470, +0.4431, -0.2504, -0.0386, +0.0167], -[ -0.4152, +0.2212, +0.0754, -0.4815, +0.2594, -0.2468, -0.3905, -0.1896, -1.1364, +0.5441, +0.0581, -0.3790, -0.0327, -0.0376, -0.2599, -0.2132, +0.4780, +0.1331, -0.3426, -0.3021, +0.3168, -0.1528, -0.2303, +0.2287, +0.0062, +0.0343, -0.2789, -0.0339, -0.6893, -0.1017, -0.6456, +0.0493, -0.1178, +0.1469, -0.1672, +0.3106, +0.5053, -0.0554, +0.6699, -0.3056, -0.6115, -1.2642, -0.2615, -0.1545, -0.1346, -0.5120, -0.0432, -0.2201, -0.0731, +0.2581, +0.0423, -0.0319, -0.1016, -0.4000, -0.4442, -0.5474, -0.3125, -0.7581, -0.0823, -0.1102, -0.3006, -0.1594, +0.6897, +0.2647, +0.3954, +0.3571, +0.2326, +0.3552, -0.6505, -0.4635, -0.0099, +0.3803, +0.1510, -0.5516, +0.5728, +0.2195, -0.9905, -0.9231, -0.6349, +0.4422, -0.2165, +0.2199, +0.2189, -0.3413, -0.4397, -0.5338, -0.1045, +0.0341, -0.3720, +0.5682, +0.1367, +0.1748, -0.8684, -0.1328, +0.1969, -0.5351, -0.0394, +0.2810, +0.3016, -0.1121, -0.5011, +0.4855, -0.5136, -0.3536, -0.0344, +0.1666, +0.3497, -0.3006, +0.1378, +0.4061, +0.2764, -0.4310, +0.2906, -0.2735, +0.3084, +0.0035, -0.5755, -0.1373, -0.1668, +0.0303, -0.4714, -0.4497, -0.7462, +0.0941, -1.5471, +0.1741, +0.3502, -0.5178], -[ -0.0949, -0.5540, +0.1707, -0.0047, -0.4102, -0.5605, -0.0721, +0.5836, -0.3027, -0.0854, -0.1257, +0.0609, -0.4404, -0.1103, +0.1158, +0.0985, -0.0426, -0.1849, +0.1614, +0.0794, +0.5360, +0.3336, -0.9980, +0.3947, +0.0869, +0.1760, +0.1285, +0.4393, +0.0525, -0.1353, -0.0400, +0.3477, -0.1895, -0.3858, -0.2249, +0.0516, +0.0320, -0.3709, +0.6641, +0.5344, -0.1297, +0.4422, +0.2732, +0.2072, +0.1587, -0.1654, +0.2070, +0.4455, -0.0688, -0.3445, +0.1183, -0.0289, +0.6019, -0.0558, +0.0197, +0.1234, -0.3130, -0.4967, -1.7918, +0.3560, +0.1870, +0.2435, -0.8701, -0.3032, -0.2378, -0.5405, +0.0169, +0.2384, -0.1888, -1.1055, +0.1384, +0.4075, +0.3514, +0.3290, -0.3533, +0.1894, -1.1368, +0.0022, +0.1883, +0.1553, -0.1442, +0.3311, +0.4187, +0.3336, -0.9026, +0.8089, -0.1017, +0.2166, -0.9179, -0.4455, -0.1024, +0.8020, -0.4614, -0.3592, -0.7581, -0.2370, -0.1627, -0.3088, -0.6094, +0.4200, -0.5692, -0.0045, +0.0219, +0.1063, +0.1801, +0.3180, +0.0231, -0.4572, -0.3725, -0.0363, +0.6250, -0.2323, -0.0947, +0.0478, -0.3151, -0.0292, +0.1965, -0.4330, -0.6989, +0.0653, +0.4705, -0.6542, +0.1044, +0.0836, +0.2838, +0.3660, +0.3101, -0.1472], -[ -1.0423, +0.3965, +0.2533, +0.0696, +0.1878, -0.2901, +0.0513, +0.0935, +0.5398, -0.3808, +0.0917, -0.4533, -0.4852, -0.5010, +0.0135, +0.3857, -0.3915, -0.1125, +0.0753, -0.0000, -0.0975, -0.0668, +0.0444, +0.2929, +0.0115, -0.5157, +0.9465, -0.7122, -0.4781, -0.5238, +0.1711, -0.9856, -0.1523, +0.1564, -0.0551, -0.2245, +0.0555, -0.2418, -0.6633, -0.3011, -0.1466, +0.3150, -0.5958, +0.2903, +0.7330, -0.4290, +0.5759, +0.0757, +0.3719, +0.5052, -0.1668, +0.2607, +0.0891, -0.0803, +0.0612, -0.4089, -0.9641, +0.3803, +0.1724, +0.3993, +0.2320, -0.2666, -0.2623, +0.2447, +0.1640, -1.1020, -0.0012, -0.2315, +0.0455, -0.6691, +0.3924, +0.0706, -0.4487, -0.4647, -0.2320, -0.1831, -0.4068, -0.2449, +0.2157, -0.1965, +0.2363, +0.3168, -0.4699, +0.1861, +0.4228, +0.0238, +0.2178, +0.1012, +0.0453, +0.3291, -0.4134, -0.0379, -0.9904, +0.2049, -0.1822, -0.0602, -0.0903, -0.1947, -0.2160, -0.2499, -0.0771, +0.1102, -0.4163, +0.0582, -0.4238, -0.5674, -0.1981, -0.2026, -0.1335, +0.0941, -0.0276, -0.1755, -0.2565, -0.5732, -0.1440, -0.7525, -0.2601, -0.0669, -1.6396, +0.1320, +0.0955, -0.3464, +0.4918, -0.1525, -0.7600, -0.1974, +0.2287, +0.0536], -[ +0.1712, -1.0676, -0.2856, -0.1981, -0.2610, -0.0282, +0.2115, +0.1752, +0.3852, -0.0449, -0.3779, -0.0628, -0.5106, -0.0156, +0.2982, +0.5353, +0.2257, -0.1676, +0.0910, +0.0916, -0.4324, -0.1147, -0.2369, -0.4326, -0.0214, +0.0841, +0.0368, -0.4819, +0.0203, +0.4614, -0.5660, +0.1893, -0.0868, +0.1263, +0.1256, +0.0009, +0.0521, -1.3267, +0.0850, +0.3386, -0.3562, -0.2280, -1.1208, -0.3517, +0.3030, +0.1102, -0.0642, -0.2216, +0.2382, +0.3425, -0.3094, -0.1784, -0.6455, +0.0016, +0.5877, +0.0188, +0.0516, +0.4747, +0.2742, +0.1887, +0.1368, +0.0060, -0.4241, +0.2139, -0.1588, -0.1142, -0.3311, +0.0787, -0.2649, +0.1560, +0.0080, +0.3690, -0.0131, -0.2629, -0.1791, -0.8922, +0.1341, +0.0723, -0.4533, +0.1948, -0.3148, -0.4330, -0.1891, -0.0352, -0.0260, +0.1677, +0.0958, +0.1630, +0.1083, -0.4628, -0.2936, +0.0768, -0.1105, -0.3534, +0.3575, -0.2124, -0.0537, -0.7409, -0.0220, +0.1215, -0.1530, -0.0657, +0.4224, +0.3295, -0.0569, -0.6015, -0.0189, +0.1815, -0.4088, -0.4652, +0.3341, -0.4176, +0.3153, -0.5956, -0.7187, -0.2795, -0.2228, -0.1511, -0.8898, +0.2817, +0.1107, -0.2528, -0.2962, +0.3167, -0.0094, +0.1466, -0.6039, -0.5585], -[ +0.0433, -0.3779, -0.2278, +0.5256, +0.4649, +0.1619, +0.0123, -0.1790, +0.0571, -0.4958, -0.3370, -0.0700, +0.0984, +0.3050, -0.5077, -0.0890, +0.2043, -0.0686, +0.1643, +0.3425, -0.1019, +0.0445, +0.1784, +0.0076, -0.3143, -0.4363, +0.1213, -0.1281, +0.2966, -0.1262, -0.4741, -0.1805, +0.3918, -0.0361, +0.0379, +0.1143, -0.6736, -0.4989, +0.0696, -1.3221, -0.4100, -0.1122, +0.1554, -0.1017, -0.1951, -0.3603, -0.4213, +0.3767, -0.0066, -0.3172, -0.0645, -0.1528, -0.0243, -0.1650, -0.0991, +0.2923, -0.1133, +0.0454, -0.3173, -0.5737, +0.1462, +0.0853, -0.2261, -0.6663, +0.0721, +0.1826, -0.0473, -0.0063, -0.3157, -0.2102, -0.0551, +0.2244, +0.2621, -0.1332, -0.8026, -0.0862, +0.1227, -0.0752, +0.3037, -0.2204, -0.0593, +0.0830, +0.0345, +0.0499, -0.5609, -0.0879, +0.2517, -0.1172, -0.4844, +0.0401, +0.3350, +0.1459, +0.2494, +0.0603, +0.2410, +0.2306, -0.0033, -0.8231, +0.0442, +0.3617, -0.2335, -0.1729, +0.2453, +0.3443, -0.0776, +0.3221, -0.3627, +0.3943, -0.8579, -0.1848, -0.0269, +0.0512, -0.1088, -0.3811, +0.2713, +0.1072, -0.1725, -0.5564, -1.4312, -0.1348, -0.0764, -0.0680, +0.0225, -0.7325, +0.3668, -1.2599, -0.0050, -0.2734], -[ -0.5387, +0.6171, +0.1829, +0.3904, -0.3995, +0.2353, -0.0828, -0.0837, +0.5571, +0.1962, -0.0851, +0.1290, +0.1674, +0.1970, +0.1832, -0.0260, -0.0642, -0.7182, +0.5026, +0.2877, -0.1242, -0.4775, -0.4039, +0.1762, -0.2769, -0.5519, -0.5457, +0.2651, -0.1694, -0.1687, -0.3991, -0.1931, +0.0137, +0.0611, +0.1038, +0.0287, -1.0625, -0.7539, +0.3080, +0.1256, +0.6019, -0.4703, +0.0614, +0.0182, -0.0718, -0.0057, -0.2614, -0.1349, -0.1164, +0.0036, +0.1015, +0.0599, -0.0158, +0.1489, -0.2725, +0.0243, +0.1444, -0.0724, +0.0172, +0.0367, -0.2094, +0.4786, -0.3775, +0.0626, +0.5400, -0.3574, -0.4089, -0.3757, -0.0115, +0.0152, -0.3121, +0.3550, +0.2221, +0.1378, -0.6019, -0.3084, -0.3761, +0.0707, +0.1930, -0.1748, +0.3196, +0.0432, -0.9189, +0.1150, -0.3072, +0.1634, -1.3409, -0.1784, +0.0226, -0.1793, +0.0414, +0.2631, -0.0888, +0.3572, +0.1000, +0.1334, -0.4490, +0.6191, +0.2080, -0.3508, +0.5763, +0.0155, -0.3643, -0.2067, +0.1628, +0.0985, -0.2416, +0.0221, -0.2871, -0.0823, +0.4608, -0.4419, -0.2297, -0.7862, +0.6774, -0.2948, -0.2065, -1.1920, -0.0499, -0.3277, -0.3553, +0.2760, -0.7005, +0.5642, -0.4420, +0.2811, +0.2627, +0.2771], -[ +0.1906, -0.4230, -0.1087, +0.3107, -0.0056, +0.2935, -0.2112, -0.0384, +0.1532, -0.4540, -0.0318, -0.0044, -0.0457, +0.3073, +0.3406, -0.0215, +0.1453, -0.0109, -0.0189, +0.4741, +0.3877, +0.2014, -0.6885, +0.0128, -0.0332, -0.2309, +0.2878, -0.8115, -0.3640, +0.1755, -0.4164, -0.3759, +0.3600, -0.0360, -0.1555, -0.2519, +0.2191, -1.3179, +0.2020, -0.6670, -0.0651, -0.1988, -0.4317, -0.6343, -0.2311, -0.2120, -0.5056, -0.6175, -0.1082, +0.0001, +0.2250, -0.5659, +0.0174, +0.1829, -0.2340, -0.0021, +0.0814, +0.0062, +0.2011, -0.0952, -0.1394, +0.2093, -0.0323, -0.2854, -0.4051, +0.2286, -0.3482, +0.2498, -0.0195, -0.0963, +0.1581, -0.4122, -0.0920, -0.0701, -0.4117, +0.3597, +0.5745, +0.3523, -0.2444, -0.3589, +0.1354, -1.2017, +0.0752, +0.0622, -0.0989, -0.1562, +0.2577, -0.0300, +0.2186, -0.5001, -0.0414, -0.3689, -0.0800, +0.1434, +0.3223, -0.2079, +0.1808, -0.1855, -0.3149, +0.3175, +0.1056, -0.3915, +0.2655, -0.0788, +0.2146, +0.3345, -0.2358, +0.2410, +0.2643, -0.1629, -0.3217, +0.2652, +0.2561, -0.1232, -0.1708, +0.1203, +0.1650, +0.1212, -0.4866, -0.1180, -0.2413, -0.4829, -0.7385, -0.0891, -0.0643, -0.0011, -0.0531, -0.0671], -[ +0.0287, -0.0035, +0.1913, +0.1011, -0.2745, -0.2405, +0.3632, -0.1639, +0.5510, -0.4194, +0.3584, -0.0253, +0.2578, -0.2769, -0.3001, +0.3557, -0.0223, +0.0091, -0.0279, -0.3526, -0.0900, -0.0922, +0.0283, -0.1523, -0.8644, +0.0030, +0.4139, -0.0378, -0.0750, -0.4327, +0.1863, +0.0470, -0.5445, -0.3360, +0.1367, -0.4570, +0.4392, -0.2139, -0.8281, -0.0469, -0.1334, +0.3134, -0.2467, +0.2037, +0.0425, +0.0634, -0.3696, +0.0164, +0.2560, +0.5651, -0.8588, +0.0983, +0.2959, +0.1184, -0.0362, -0.5176, -0.0577, +0.3285, +0.1111, +0.5656, +0.3281, -0.6929, +0.2060, +0.1706, -0.5501, +0.1909, -1.0083, -0.1914, -0.1020, +0.0413, -0.0040, +0.4766, -1.0766, +0.1265, +0.1818, +0.5681, +0.2023, +0.2611, -0.5209, -0.0391, +0.1359, +0.1887, -0.7319, -0.4828, -0.4270, -0.0422, -0.0691, -0.4567, -0.1540, +0.4186, -0.1637, +0.1476, +0.1237, +0.3818, -0.4376, -0.3418, +0.3365, -0.2361, +0.2337, -0.1660, -0.0590, +0.0547, -0.1458, +0.6512, +0.1640, -0.1079, -0.2358, +0.0252, +0.0854, -0.0296, -0.3305, -0.3551, +0.1817, +0.1777, +0.5337, +0.2982, -1.1735, -0.0911, +0.0438, -0.1350, -0.5617, -0.0106, -1.0751, -0.1223, -0.3230, -0.2070, +0.0078, +0.6056], -[ -0.0875, -0.2012, -0.3425, -0.0707, +0.1954, -0.9051, -0.7953, +0.3996, -0.7446, -0.3616, +0.2619, -0.3492, -0.0946, +0.1625, -0.3781, +0.0716, -0.9775, +0.0597, -0.1995, -0.1889, +0.0589, -0.2698, +0.2555, -0.3471, +0.1955, +0.4635, +0.4239, +0.2145, -0.4831, -0.0507, -1.0913, -0.1997, -0.8947, +0.2120, +0.3309, +0.1489, +0.3797, +0.2457, +0.2403, -0.0569, -0.0635, +0.0856, -0.0425, +0.5333, -0.2004, +0.2405, -0.5132, -0.0574, +0.3881, +0.0195, +0.0112, -0.3200, -1.1305, +0.0711, -0.1171, +0.1932, +0.1342, -0.1178, -0.2106, +0.1022, -0.0446, -0.3046, +0.2248, -0.2437, -0.0127, +0.2950, -0.3624, -0.1931, -0.4539, +0.1236, -0.5750, -0.4673, +0.0083, -0.1995, -0.9331, +0.0027, -0.1346, +0.0745, -0.7372, +0.1779, -0.3153, +0.2007, +0.4300, +0.1131, -0.2107, -0.5684, -0.8687, -1.1530, +0.3458, -0.1312, -0.7236, -0.0814, +0.3664, +0.0816, +0.4876, -0.1084, -0.7534, -0.4219, +0.1061, +0.4990, -0.1114, -0.8292, +0.0941, -0.2297, +0.6951, -0.1049, -0.0913, +0.3356, +0.3982, +0.1609, -0.3505, -1.0523, +0.0258, +0.1578, -0.6187, +0.4218, -0.5347, +0.3921, +0.4217, -0.1643, -0.3262, -0.1905, +0.1319, +0.3607, -1.6069, -0.4805, -0.0456, +0.1719], -[ +0.2136, -0.0857, +0.1056, -0.4615, +0.0103, -0.2083, -0.4406, -0.0268, +0.3755, -0.2153, +0.2410, -0.3024, +0.0554, -1.4943, -0.8311, +0.0351, -0.2539, -0.2030, +0.0546, +0.4644, +0.0042, -0.0423, +0.1386, -0.1631, +0.0775, -0.5839, -0.4687, -0.4031, +0.0263, +0.2903, -0.0278, +0.1751, -1.3946, -0.0678, +0.0580, -0.3802, -0.3090, -0.6115, -0.2075, -1.4809, -0.7804, +0.2225, -0.5296, -0.3263, -0.3680, +0.3993, +0.0181, -0.4816, -0.2114, -0.1545, +0.6772, -0.7531, +0.4461, -0.3607, +0.4058, +0.3495, -0.3510, +0.6783, -0.9595, -0.6202, -0.2242, -0.1944, +0.3924, +0.0344, -0.0457, +0.2709, -0.4128, -0.1265, -0.1273, -0.3088, +0.0404, -0.0785, +0.4906, +0.3974, -0.1821, -0.1346, -0.0513, +0.0904, -0.1274, +0.2235, +0.0185, -0.1793, -0.1306, +0.0101, +0.2165, -0.2106, +0.4215, +0.4013, +0.5250, -0.1635, +0.0075, +0.0325, +0.3700, +0.2155, -0.5118, -0.2847, +0.0008, +0.0118, -0.4758, -0.0403, -0.4868, +0.2501, -0.5843, -0.1423, -0.7156, -0.0687, +0.4918, -0.6023, -0.4663, -0.1158, +0.3164, -0.1107, +0.4593, -0.6257, -0.3250, +0.0209, -0.2856, -0.8808, -0.5393, -0.4349, -0.1428, -0.2467, -0.1596, +0.3935, +0.4644, +0.3029, +0.0753, -0.1418], -[ -0.4396, +0.1966, +0.2119, +0.2217, -0.1992, +0.4333, -0.0712, +0.1728, +0.2975, -0.0653, +0.3708, -0.3680, -0.2820, -0.0014, -0.1716, +0.4483, +0.2743, -0.6165, +0.1505, -0.4306, +0.1205, +0.2302, -0.3193, -0.2837, +0.6095, -0.6418, -0.2293, -0.0062, +0.3635, -0.2236, +0.0812, -0.4854, -0.1137, -0.4836, +0.0315, -0.0112, -1.1311, +0.0577, +0.0530, +0.1152, -0.0937, +0.0322, -0.0607, +0.5502, -0.2412, +0.1534, +0.1241, -0.0710, +0.1710, -0.2181, +0.1003, -0.1299, -0.7091, +0.0773, +0.1075, +0.0707, -0.4274, -0.2690, +0.4746, -0.2000, -0.0237, -1.0262, +0.0428, -0.8363, -0.5659, +0.1067, -0.1384, +0.2214, +0.0627, +0.0204, +0.0433, -0.3417, -0.2532, -0.2779, -0.3771, +0.0033, -0.2248, -0.0785, -0.2647, +0.4095, +0.3562, +0.2827, -0.2852, -0.0457, +0.2670, +0.1966, -0.2612, -0.7035, -0.0061, -0.0141, -0.7491, -1.3384, +0.0596, +0.3278, +0.3256, -0.3699, +0.0911, +0.2584, +0.3442, -0.1670, -0.2686, -0.1324, +0.0585, -1.1935, +0.4285, +0.0948, +0.3181, -0.2076, +0.5164, +0.2780, -0.6571, -1.1382, +0.3175, -0.0726, +0.1994, -0.3548, -0.7741, -0.7643, -0.0502, -0.7470, -0.4361, -0.2082, +0.3283, -0.6035, -0.5254, -0.6865, -0.8711, -0.2057], -[ -0.2081, +0.6794, +0.1654, +0.2273, -0.1256, -0.2784, +0.1290, +0.1627, +0.1296, +0.1367, +0.0369, +0.1697, -0.2815, -0.1436, +0.3055, -0.0596, +0.1176, -0.0687, +0.1306, +0.2349, -0.0756, -0.7176, -0.1915, -0.1941, -0.1996, -0.6061, -0.0943, -0.0722, +0.2477, +0.0207, -0.1472, -0.3468, +0.4308, +0.0092, +0.1046, +0.0315, +0.4075, +0.1936, -0.2602, -0.7769, -0.0953, -0.0623, +0.0463, -0.0489, +0.2952, -0.7202, -0.6726, -0.0080, -0.0260, -1.1543, +0.2863, +0.0801, -0.0491, -0.0510, +0.1065, -0.0212, +0.3241, -0.1509, -0.2654, -0.4756, -0.1976, -0.0718, -0.0363, -0.4564, -0.1175, +0.0074, +0.1218, +0.0454, -0.3793, +0.0961, +0.4031, +0.0467, -0.3291, -0.2717, -0.4070, -0.4170, -0.7479, -0.1326, -0.8529, -0.0441, -0.0480, -0.1754, +0.0696, -0.2486, -0.0287, +0.1453, -0.0018, +0.0129, -0.5020, +0.3899, -0.0932, +0.1873, -0.1724, -0.3567, +0.2316, +0.3540, -0.5122, -0.0120, +0.2856, +0.0125, +0.1719, -0.1214, +0.4222, +0.2501, +0.0403, -0.9188, +0.0178, -0.8074, -0.1539, +0.0021, +0.2192, +0.0789, +0.0410, -0.3290, -0.3898, +0.4536, -0.1009, -0.3353, -0.3764, -0.0687, +0.0535, +0.0880, -0.0357, -0.8864, +0.2187, -0.4934, +0.1660, +0.1415], -[ -0.1634, -0.2022, -0.3170, -0.5494, -0.1306, +0.0919, +0.0584, -0.1783, +0.0423, -0.1164, -0.2392, +0.2996, +0.3089, -0.2063, +0.3139, -0.0537, +0.1393, -0.1910, +0.0618, +0.5245, -0.3722, -0.7045, +0.3221, +0.2221, +0.0489, +0.0056, +0.3385, +0.1549, +0.1723, -0.3813, -0.1038, -0.0396, -0.1586, -0.3829, +0.0971, +0.2569, +0.1889, -0.3721, -0.1406, +0.2218, -0.2209, -0.4573, -0.2395, -0.1427, -0.1527, +0.1523, -0.5956, -0.0786, +0.2198, +0.1814, +0.4294, +0.2718, -0.6627, -0.3822, -0.2438, +0.0753, +0.2324, -0.2361, -0.3477, +0.6467, -0.0473, +0.0440, +0.1380, +0.6219, -0.5236, +0.1059, +0.2268, -0.0949, -0.3916, -0.2497, +0.2363, +0.6812, -0.1526, -0.3281, -0.3401, -0.1675, +0.0080, +0.1785, +0.1195, -0.4691, -0.2182, +0.0917, -0.0020, -0.1574, -0.6299, -0.3113, -0.1872, +0.0989, -0.4712, +0.0522, +0.2469, -0.2752, +0.8367, -0.3309, +0.3488, -0.1928, +0.1074, -0.4578, +0.3672, -0.2863, +0.0378, +0.0856, +0.2727, -0.2749, +0.1830, +0.2532, -0.1749, -0.1502, +0.0655, +0.0965, -0.4385, -0.4065, +0.0668, -0.1477, -0.7832, +0.2713, +0.4282, -1.1916, +0.2973, +0.5071, +0.2173, -0.0329, +0.2017, -0.3516, -0.1133, +0.1676, -0.1915, -0.0784], -[ +0.0567, -0.4095, -0.1105, -0.5467, +0.0201, +0.0764, -0.2595, +0.0934, -0.1565, -0.2517, -0.4043, -0.3487, +0.9537, -0.0019, -0.2153, -0.0551, -0.0682, -0.2314, -0.0643, -0.1686, +0.4827, -0.2486, -0.3125, +0.2629, -0.0392, +0.5818, -0.1381, +0.0980, -0.1331, -0.1783, +0.0654, -0.3309, -0.1181, -0.2394, +0.2222, -0.9563, -0.3512, -0.4452, -0.2607, -0.0725, +0.1010, -0.2859, -0.3499, -0.0851, -0.4077, +0.1370, -0.3252, +0.3335, -0.3268, -0.1001, +0.0862, +0.2957, -0.2605, -0.4145, -0.4152, +0.2013, +0.3453, -0.1217, +0.2192, -0.1163, +0.0247, -0.2076, -0.2858, -0.4552, +0.0469, -0.7385, -0.0117, +0.6152, +0.2306, -0.2396, +0.0552, +0.2571, -0.4277, +0.2382, +0.2306, -0.3820, +0.2438, -0.1111, -0.3826, +0.1670, -0.0402, -0.0238, -0.1438, -0.9475, -0.3821, +0.0009, +0.0146, -0.7002, +0.5650, +0.5880, +0.1486, +0.2914, +0.4319, +0.1622, -0.5031, +0.0945, -0.4358, -0.3369, +0.4105, -0.2166, -0.2457, -0.1413, -0.0566, -0.2451, -0.6555, +0.1859, -0.2640, +0.3306, -0.0598, -0.2751, -0.1427, +0.1448, +0.3285, -0.1678, -0.0800, +0.3456, +0.0527, -0.1481, -0.0182, -0.2485, +0.1612, +0.0621, -1.6412, -0.0495, -0.8670, +0.3192, -0.2710, -0.1610], -[ +0.3062, -0.4014, +0.8349, +0.1287, -0.0117, +0.1551, +0.1502, -0.6415, +0.1902, +0.2950, +0.3822, +0.0505, -0.7474, +0.0861, +0.4465, -0.2942, -0.2718, +0.1369, +0.0916, -0.0121, -0.2979, -0.8770, +0.2355, +0.1184, -0.0994, -0.1144, -0.5290, -0.4397, -0.1940, +0.3315, -0.6742, -0.5208, +0.0359, -0.3219, -0.3863, +0.1403, -0.4005, +0.5536, -0.2526, +0.1040, -0.2948, +0.3281, +0.0648, +0.6613, +0.4184, -0.0972, -0.2728, -0.8878, -0.3647, -0.3510, -0.5233, +0.1881, -0.2817, -0.3662, -0.1117, -0.8520, +0.0174, -0.0828, +0.5467, +0.5555, +0.3581, +0.0060, +0.3613, +0.2880, +0.1357, +0.5001, +0.0162, -0.4672, +0.0264, -0.2925, -0.1080, +0.0416, -0.3176, -0.4638, -0.2181, +0.3713, +0.1885, +0.2149, -1.5127, +0.0176, -0.2337, -0.2672, +0.0902, -0.2616, -0.7468, +0.2598, +0.3032, -0.1819, -0.4526, +0.3385, +0.2310, +0.5194, +0.2024, +0.0550, +0.8090, -0.4691, +0.3046, -0.1887, +0.3485, +0.0973, +0.2706, -0.1136, -0.0977, -0.7200, -0.2324, +0.4251, -0.1732, -0.7955, -1.1099, +0.3905, -0.3922, -0.5733, +0.4044, -0.2447, -0.6519, +0.3614, +0.4053, -0.4915, -0.0200, -0.1368, +0.0169, -0.0847, +0.7273, -0.2178, +0.6830, +0.4030, +0.4162, -0.5399], -[ -0.4719, +0.2354, -0.5216, -0.3551, -0.6597, -0.2147, -0.1232, +0.0668, -0.6508, +0.0091, +0.2494, -0.1715, +0.5915, +0.0881, +0.3735, +0.5837, -0.1604, +0.0877, +0.3725, -0.2081, +0.6044, -0.0838, -0.4120, +0.1596, -0.0548, +0.1775, -0.2704, -0.0872, -0.0508, +0.2483, -0.1969, -0.5770, -0.0329, -0.7341, +0.2567, +0.0547, -0.1435, +0.0324, -0.0569, +0.2077, -0.1637, -0.2073, +0.0140, -0.2670, -0.2633, -0.9093, +0.2388, +0.2172, +0.1155, -0.0546, -0.3655, -0.2851, -0.4188, -0.1985, -0.2704, -0.4761, +0.0444, +0.0531, +0.2733, -0.1536, -0.5291, +0.4215, -0.0702, +0.8213, -0.9109, +0.3682, -0.1770, -0.0176, -0.0609, -0.0848, +0.1329, -0.3764, +0.1924, -0.2322, -0.3387, -1.2167, +0.0571, -0.6462, +0.2064, -0.0148, +0.0977, -0.1826, +0.1399, -0.2881, -0.3067, -0.7912, -0.1420, +0.5946, +0.4866, +0.4753, -0.0910, +0.6931, -0.0763, -0.5351, -0.1368, -0.8339, +0.4755, +0.2831, -0.2220, -0.7444, -0.1413, -0.3962, +0.6727, -1.2335, +0.0977, -0.1864, -0.1508, -1.0381, -0.2255, +0.0234, +0.2269, -0.1458, -0.0594, -0.1979, -0.0341, +0.3493, -0.2488, -0.4202, -0.4041, +0.4222, -0.3257, +0.1492, -0.5981, -0.4277, +0.0787, -0.4030, -0.0238, +0.6606], -[ -0.0896, -0.1393, -0.1259, -0.0640, +0.1198, -0.0655, +0.0792, +0.0719, +0.0251, +0.3511, +0.4820, +0.0246, -0.5763, -0.1316, -0.3077, +0.2174, -0.3739, -0.4888, -0.0117, -0.4575, -0.9176, -0.4546, +0.2584, -0.0245, -0.1882, +0.1726, +0.0147, -0.5970, +0.2872, +0.4176, +0.1304, -0.3095, -0.0594, +0.2450, -0.0846, +0.4726, -0.0430, +0.0310, -0.4615, +0.1496, -0.2783, +0.3904, -0.2605, -0.1060, -0.1837, -0.3354, +0.4846, -0.1275, +0.6450, +0.0843, -0.2972, -0.1105, -0.4348, -0.2639, -0.1810, +0.0198, +0.2635, -0.1971, +0.4112, -0.6694, +0.1766, +0.2392, -0.0486, -0.2880, -0.5390, -0.9555, -0.8457, +0.0679, +0.0022, +0.1848, +0.1724, -0.1545, -0.4154, -0.3122, -0.0688, +0.4003, -0.0575, +0.0425, -0.5802, +0.0821, +0.1437, +0.0448, +0.0301, -0.0226, -0.1382, -0.0069, -0.1389, -0.4062, -0.0202, -0.0559, +0.1238, -0.3308, -0.4406, +0.0276, +0.3957, -0.0272, +0.4181, +0.2000, +0.1626, -0.2476, +0.4298, -0.1438, +0.3941, -0.1081, -0.2086, +0.1455, -0.3298, +0.0909, +0.0993, -0.1283, +0.1886, +0.0143, +0.4116, +0.0872, +0.7464, +0.1006, -1.1390, -0.1228, +0.1520, -0.5107, -0.6302, -0.0795, +0.2701, -0.1555, +0.3195, -1.1954, -0.5109, -0.0784], -[ +0.4125, +0.3470, -0.5907, +0.2274, -0.4954, +0.3121, -0.3573, +0.4982, +0.1793, -0.6379, +0.1440, +0.2955, +0.1663, +0.0991, +0.0488, +0.1145, -0.2426, -0.1976, +0.0718, -0.0597, +0.0798, -0.5008, -0.2582, -0.2215, +0.1809, +0.0083, -0.3287, -0.2881, -0.1904, +0.3807, +0.2910, -0.3180, -0.1956, +0.3016, -0.0576, +0.2057, +0.0701, -0.7399, +0.3328, -0.0551, -0.1029, +0.2708, -0.0304, -0.3731, -0.0122, -0.0327, -0.2044, -1.1638, +0.3238, -1.3922, -0.4713, +0.4540, -0.1061, +0.2578, +0.0141, +0.2204, +0.0275, +0.1783, +0.1025, +0.2395, -0.0623, +0.3671, -0.0013, +0.3229, -0.1419, -0.3494, -0.7474, +0.3302, -0.3086, +0.0104, +0.3163, -0.3141, -0.3123, +0.0342, -0.2294, -0.2309, +0.0225, -0.0130, -0.5415, +0.2195, +0.1305, -0.1037, +0.2285, -0.1873, -0.6109, +0.0124, -0.0320, -0.0310, -0.1007, -0.1987, -0.3020, -0.6991, -0.1978, -0.3558, +0.0536, -0.0587, -0.0749, -0.7206, -0.3773, -0.0962, +0.2116, -0.4645, -0.1194, +0.5525, +0.1880, +0.2871, +0.0863, +0.0111, +0.1661, -0.0658, +0.5327, -0.4976, -0.1155, -0.1706, +0.1402, -0.2605, +0.1772, +0.1724, +0.2144, -0.4298, +0.1183, -0.1058, -0.5299, -0.7223, -0.2578, -0.2441, -0.0041, -0.3981], -[ +0.2506, -0.0359, +0.3884, -0.2398, -0.2962, -0.1809, +0.4648, +0.1308, -0.2303, -0.0652, +0.3506, +0.0956, +0.1346, +0.2557, +0.0016, +0.3932, -0.5941, -0.2556, -0.1082, -0.1042, +0.1816, -0.1260, -0.6200, -0.0402, +0.3678, -0.2636, -0.1340, -0.2732, +0.0870, +0.2505, -0.3617, -0.6948, +0.2862, +0.4771, +0.3132, +0.4249, -0.4389, +0.0457, -0.2041, -0.3032, -0.6055, -0.0048, +0.3264, +0.2308, -0.8608, +0.2930, +0.0597, +0.0582, -0.1494, +0.0441, -0.1156, +0.0313, -0.4389, +0.4784, -0.2422, +0.0697, -0.4848, -0.4336, -0.8029, -0.2104, -0.0803, -0.1448, +0.4604, +0.3124, +0.2260, +0.0997, -0.6617, -0.1471, -0.5052, -0.1583, -0.2593, -0.1001, +0.1182, -0.2479, +0.3380, +0.3569, +0.4476, -0.5532, +0.0961, -0.0363, -0.2496, +0.4227, +0.0423, +0.1371, -0.4618, +0.1314, +0.0183, -0.4022, +0.4336, -0.0818, -0.4945, +0.4883, -0.1005, +0.3650, +0.1397, -0.2104, +0.1814, -0.0249, -0.3125, -0.3129, +0.0897, +0.6118, -0.3094, -0.6526, +0.0737, -0.6888, +0.2619, +0.1431, -1.2312, +0.3352, -0.0106, -0.1670, -0.2649, +0.0681, -0.0092, +0.1890, +0.4251, +0.2447, -0.1213, +0.0034, -0.1850, -0.0468, +0.2657, -0.3377, -0.1897, -0.6707, -0.0308, -0.1118], -[ +0.0304, -0.6106, +0.0387, +0.3625, -0.0701, -0.5916, +0.0523, +0.5701, +0.0764, +0.2221, -0.3306, +0.0875, -0.5287, +0.0726, -0.0351, +0.0258, +0.1388, +0.0489, -0.1915, -0.2274, -0.3706, -0.3478, -0.4952, +0.2523, -0.0424, -0.4535, -0.3436, -0.2028, +0.2022, -0.1296, -0.4814, -0.4951, -0.2543, -0.3293, +0.3208, +0.0088, -0.3219, +0.3573, -1.4559, +0.1602, -0.0150, +0.1223, -0.3379, -0.1850, +0.4264, +0.2755, -0.2270, -0.2421, +0.4080, +0.0248, +0.1969, -0.3004, -0.8703, -0.1710, +0.3220, -0.8612, +0.2639, +0.0325, -0.3483, +0.1861, +0.2861, +0.1060, -1.1524, -0.4304, -0.1329, +0.3527, -0.1827, -0.1129, +0.1711, -0.2215, +0.0675, -0.5777, -0.2710, +0.0988, +0.1262, -0.2723, -0.1473, +0.3290, -0.0243, -0.2950, +0.1161, -0.3307, -0.3361, +0.0455, +0.0562, +0.3429, -0.0059, +0.1947, -0.4587, +0.0060, +0.2429, +0.5514, +0.2143, +0.0115, +0.1725, +0.2232, -0.1177, -0.0359, -0.0734, -0.0374, +0.1170, -0.1632, -0.3158, -0.2580, -0.0481, -0.0462, -0.0561, -0.3951, -0.1724, -0.8088, -1.2010, +0.0804, -0.0409, +0.1273, -0.2365, -0.1704, -0.4553, +0.0512, -0.3333, -0.0582, -0.0503, -0.0032, +0.3139, -0.4170, +0.3617, -0.5152, +0.1041, +0.1349], -[ +0.0318, -0.1993, -0.7177, -0.0007, +0.0604, -0.5055, +0.2935, +0.0414, -0.3011, +0.2479, -0.3711, +0.5631, +0.1487, -0.4787, +0.4251, +0.1761, -0.0367, +0.3775, -0.2704, -0.0622, -0.1126, +0.1202, -0.0627, -0.3664, +0.3928, -0.2292, +0.2327, -0.3985, -0.2138, +0.6186, -0.4101, -0.0642, +0.2596, -0.1833, +0.0787, +0.1547, +0.3065, -0.9682, -0.1995, -0.2763, -0.1489, -0.2281, -0.6422, +0.1432, -0.3437, +0.2000, -0.0745, -0.0105, +0.3043, +0.1473, -0.0571, -0.4896, +0.0413, +0.1970, +0.2910, -0.0613, +0.0955, +0.4592, -0.1279, +0.4943, -0.2948, +0.2325, +0.7180, +0.2387, -0.3419, -0.0611, -0.0541, -0.0069, -0.3073, +0.1565, -0.3119, -0.0989, +0.1051, -0.4199, -0.5567, +0.1701, -0.2106, +0.1376, +0.4269, +0.2956, -0.2137, -0.2274, +0.1516, +0.0259, -0.6672, +0.1192, -0.0206, -0.1359, +0.0229, +0.5298, +0.5116, -0.1438, -0.5056, -0.5274, +0.2064, -0.5707, +0.1805, -0.3602, -0.5587, -0.5199, +0.0966, -0.1384, +0.0269, +0.1105, +0.3221, -0.0762, +0.2730, -0.3435, -1.0286, -0.3342, -1.0441, -0.3197, +0.0119, -0.2964, +0.1765, -0.3257, +0.3474, -0.8103, +0.0021, -0.0943, +0.1494, +0.1813, -0.0043, -0.4602, -0.8087, -0.0418, +0.0339, +0.1320], -[ +0.0313, -0.0876, +0.4698, -0.1737, -0.5186, -0.2944, -0.6477, -0.2818, +0.0126, -0.9627, +0.3746, +0.0179, +0.0661, +0.4322, -0.3805, +0.1172, -0.1535, -0.1715, -0.1368, +0.0373, -0.1097, +0.0820, -0.0101, +0.4394, +0.0460, +0.2017, -0.5949, +0.2671, +0.0157, -0.3389, -0.0437, +0.0377, +0.3680, +0.9735, -0.7896, -0.5413, +0.3041, -0.6131, -0.1528, +0.1315, -1.0887, +0.0795, +0.4033, -0.3175, +0.0539, +0.1103, -0.1558, +0.0174, +0.3051, -0.3096, -0.1475, -0.2583, -0.2165, +0.4598, -0.5402, -0.4474, -0.3218, +0.0648, +0.1219, -0.4995, -0.1156, -0.7827, -0.1975, -0.6256, -0.2902, -0.1138, +0.1636, -0.6728, +0.0244, +0.2616, -0.0454, +0.1387, -0.0298, -0.3877, +0.5291, +0.7375, +0.2571, -0.4744, -1.0457, -0.1672, +0.6221, -0.4428, +0.6234, -0.7373, +0.0228, -0.0505, -0.4658, +0.3181, -0.0064, -0.1513, -0.1668, -0.4743, -0.0831, -0.2873, -0.0679, -0.3708, +0.0412, -0.0855, +0.3482, +0.1187, -0.1133, -0.0609, -0.4419, +0.0429, -0.3957, -0.2721, +0.1508, +0.3537, +0.1145, +0.1639, -0.1886, -0.4070, +0.4562, -0.5700, -0.0420, -0.8772, -0.2214, -0.4014, +0.3792, +0.0255, -0.3388, +0.0237, -0.0479, -0.0676, -0.3373, -0.1315, +0.1896, -0.3253], -[ +0.4164, +0.5663, -0.5132, -0.0532, -0.8034, -0.2697, -0.2699, -0.1347, -0.2508, -1.2928, +0.1409, +0.2909, -0.8983, -0.2079, -0.0397, +0.0890, -0.4756, -0.4447, +0.7628, -0.2938, +0.5754, -0.8037, -0.4351, -0.3699, -0.2202, -0.0349, +0.3460, -1.1216, -0.1340, -0.5045, -0.5336, +1.1291, +0.3667, -0.2311, +0.3481, +0.2837, -0.0425, -0.0475, +0.0005, +0.5042, +0.0045, -0.2278, +0.0815, -0.0618, -0.1007, -0.6111, +0.7165, -0.1441, +0.1013, -0.4225, +0.2652, -0.2608, -0.9365, +0.2899, +0.0638, +0.4311, +0.3658, -0.4187, +0.3909, -0.2811, -0.5782, +0.2305, -1.8816, -1.0402, -0.0676, +0.1250, -0.1566, +0.4831, +0.0418, -0.4092, +0.0435, -0.9674, -0.4300, -1.0757, -0.1500, -0.1542, -1.2463, -0.2693, +0.1420, -0.4055, +0.4035, +0.0786, +0.2514, +0.3154, +0.4276, -0.4777, -0.1308, -0.4255, -0.1041, -0.0528, -0.0802, -0.0490, +0.0334, +0.4389, -0.3576, +0.3827, -0.0823, +0.7379, +0.2685, -1.1691, -0.0914, +0.0692, -0.0066, +0.3079, +0.1915, +0.7454, -0.1600, +0.1412, +0.3265, +0.4710, -0.1103, -1.0183, +0.2884, +0.4741, -0.9309, -0.7287, -0.0099, -0.5876, -0.5143, -0.3185, -0.2646, +0.1158, +0.0433, +0.1597, -0.1709, -0.4730, +0.3901, -0.2238], -[ +0.1578, +0.1364, +0.0307, +0.0135, -0.1939, -0.2220, +0.1219, +0.5193, -0.0730, +0.8550, -0.0131, +0.0926, -0.2521, +0.0501, -0.0914, -0.1693, -0.0252, -0.0714, -0.0914, +0.3240, +0.4713, -0.0715, +0.2153, +0.2147, +0.0555, -0.7522, +0.2159, -0.5516, -0.2305, +0.1285, +0.5407, -0.0006, -0.1333, +0.0836, -0.0256, -1.3872, -0.1871, -0.5735, -1.6035, -0.1292, +0.3284, +0.8339, +0.3961, +0.0109, +0.1147, -0.3110, -0.5376, +0.0660, -0.1113, -0.0005, -0.1002, +0.1949, +0.2208, -0.0090, -0.0777, +0.0671, -0.1543, +0.0707, -0.0307, +0.2455, -0.0438, +0.3371, -0.3395, +0.0749, -0.0290, +0.6607, -0.2328, -0.5241, -0.5324, +0.0984, -0.0666, +0.0441, -0.3240, +0.0819, -0.4677, -0.0203, +0.2781, +0.0889, -0.3403, -0.5053, +0.2952, -0.3526, -0.9534, -0.4519, +0.5200, +0.1564, -0.2124, +0.0459, +0.3840, +0.4835, -0.4637, +0.5874, -0.3762, +0.4960, -0.3918, +0.0814, -0.0040, -0.1802, -0.4243, -0.1104, +0.1208, +0.3983, +0.0029, +0.1834, -0.2872, -1.1766, -0.0144, -0.2926, -0.4614, -0.1192, -1.6337, +0.4652, -0.3726, -0.4518, -0.2399, -0.9016, -0.5318, +0.1975, -0.6281, +0.0696, +0.4465, +0.0993, -0.5533, -0.6548, -0.2905, +0.2722, -0.0800, +0.1896], -[ -0.2521, -0.1729, -1.8623, +0.5429, -0.0668, -0.2102, -0.5116, +0.2386, -0.0192, +0.2450, +0.1539, +0.2034, +0.3251, +0.3693, -0.2932, -0.2022, -0.7567, -0.1474, -0.5117, +0.2416, -1.0122, +0.0151, -0.6437, -0.3305, -0.0089, -0.4786, +0.0753, -0.9591, +0.0480, +0.1523, +1.0645, -0.0967, +0.0610, +0.0737, -0.5529, -0.4184, +0.1043, -0.3966, +0.0978, +0.0912, -0.3251, +0.0030, -0.2793, -0.1497, -0.1132, +0.5487, +0.0072, -0.3729, -0.2884, -0.1534, +0.1985, +0.0642, -0.8950, +0.1140, -0.2523, +0.1002, -0.1579, +0.4527, -0.1194, -0.6175, -0.3835, -0.3267, +0.0443, +0.1300, +0.4239, +0.4234, -0.3711, +0.2541, +0.3988, -0.0580, -0.2244, -0.0190, -0.7327, -0.1256, +0.2642, -0.2951, -0.7846, -0.2119, +0.0756, +0.1731, -0.4706, +0.4938, -0.1998, -0.2355, -0.9936, -0.1112, +0.1090, +0.5045, +0.3014, -0.1767, +0.3222, -0.3776, -0.1773, -0.1709, -0.8971, -0.1832, -0.0900, +0.2016, -0.0742, -0.2460, +0.0224, -0.1186, -0.4153, +0.7736, +0.6021, +0.3068, +0.3134, +0.5200, +0.1903, -0.1018, -0.4994, -0.3599, -0.4749, +0.2002, +0.0392, +0.2859, -0.2591, +0.0145, -0.2685, -0.4135, -0.4903, +0.1175, -1.8188, +0.4161, +0.2270, -1.1247, -0.0876, +0.1397], -[ -0.0511, -0.5662, -0.0530, -0.0923, -0.4474, +0.1905, -0.1158, +0.5097, -0.3314, +0.0674, -0.2169, +0.2116, +0.1601, -0.2740, -0.0279, -0.2160, +0.1734, +0.0046, -0.1382, -0.5308, +0.8807, +0.1784, -0.2787, +0.3531, -0.3427, -0.6214, -0.3662, -0.0146, +0.2895, -0.9753, -0.8985, -0.1674, -0.1117, -0.2935, -0.2239, -0.2055, -0.0270, -0.0385, +0.2158, +0.6210, +0.3990, +0.1235, +0.0866, +0.1799, -0.4985, +0.1964, +0.1058, +0.0132, +0.0672, -0.0375, -0.4181, -0.2528, +0.5361, +0.0711, -0.1958, -0.1888, -0.0148, +0.1211, -0.1489, -0.1567, +0.1296, +0.2535, -0.2059, +0.2735, +0.0089, -0.3265, -0.3991, -0.2114, -0.1149, +0.0079, -0.0785, -0.4188, -0.5701, +0.3231, -0.0378, -0.4280, -0.3136, -0.3193, -0.4421, +0.0883, +0.5260, -0.2219, +0.3823, -0.1226, -0.0690, +0.2065, -0.3616, +0.4665, -0.5837, -0.0439, +0.3391, -0.3144, +0.0605, +0.4340, -1.0127, -0.0668, -0.0670, +0.1272, +0.0419, +0.3145, -0.7703, +0.0467, -0.1441, +0.1355, -0.2387, -1.0722, +0.2647, +0.3527, +0.0279, +0.1492, -1.2686, -0.6765, +0.2234, +0.5827, -0.4971, +0.4091, -0.3962, +0.2157, +0.1169, +0.1268, -0.0668, +0.0576, -0.1627, -0.0533, +0.0564, -0.0586, -0.0532, +0.0059], -[ -0.0119, +0.0856, +0.1270, -0.1620, -0.2035, -0.0289, -0.1822, +0.2324, +0.2292, +0.1489, +0.0449, +0.0573, +0.2588, +0.0756, +0.1912, -0.0531, -0.0253, -0.0893, -0.1409, -0.0876, +0.0865, -0.3166, +0.3604, -0.3559, +0.1279, +0.4821, -0.1377, +0.4408, -0.1219, +0.0735, -0.0444, +0.3970, -0.6521, +0.2727, -0.0671, -0.1605, +0.0748, -0.1121, -0.2381, +0.0705, -0.0242, +0.0964, -1.2058, -0.8160, +0.4634, -0.1625, +0.2433, -0.1534, -0.0825, -0.1148, +0.1422, -0.1528, -0.7252, +0.2567, +0.1212, +0.3415, -0.2030, +0.2171, -0.2874, -0.1796, +0.0356, -0.2410, -0.1501, -0.0051, -0.0618, -0.7881, -0.4971, -0.0717, -0.2681, +0.1708, -0.7503, -0.2290, -0.2640, +0.5093, +0.3296, -0.5032, -0.3371, -0.0911, +0.1641, +0.3366, -0.1460, +0.0986, +0.0271, -0.5454, +0.0402, +0.1105, +0.1470, +0.1369, +0.0366, -0.1743, +0.1586, +0.4071, +0.4014, -0.1263, +0.0940, +0.0624, -0.9941, +0.0606, +0.3025, +0.0693, -0.2193, +0.0147, +0.0583, +0.1904, +0.2406, -0.8145, -0.1473, -0.0817, -0.2138, -0.1620, -0.5043, -0.0990, +0.0385, -0.0865, -0.1086, +0.1306, -0.0650, -0.8421, -0.1344, +0.2254, +0.0700, -0.2138, +0.0964, +0.3172, +0.3453, +0.0504, +0.0918, +0.1321], -[ -0.3488, +0.5283, -0.5644, -0.1333, +0.0995, -0.8439, +0.0522, -0.4405, +0.4578, -0.4045, +0.0158, -0.1289, +0.0638, -0.0775, -0.0446, +0.1120, -0.3436, +0.2122, +0.1711, +0.2432, +0.3178, +0.4153, -0.4368, +0.0025, +0.1705, -0.2090, -0.9251, +0.1902, -0.1278, +0.2795, -0.1267, -0.4681, -0.3222, +0.1286, +0.3475, +0.1472, +0.0442, +0.3175, +0.2265, -1.2825, -0.2357, -0.0973, +0.4184, -1.2911, -0.1285, -0.4343, -0.0756, +0.4314, +0.1368, +0.1763, -0.2358, +0.3329, +0.5707, +0.1199, +0.0393, +0.0587, +0.3520, +0.2659, +0.0791, +0.2872, -0.1012, -0.1033, +0.1051, -0.7601, +0.5022, -0.3446, -1.3837, +0.0147, -0.4237, -0.0402, +0.1651, -0.4588, -0.3621, -0.5413, -0.1521, +0.5949, -0.0398, +0.1292, -0.4367, -1.0713, -0.1405, -0.0244, -0.1007, -0.1912, -0.0236, -0.2034, -0.1986, +0.2197, +0.3474, +0.2584, +0.0790, -0.4087, +0.2480, -0.0260, +0.2347, -0.2296, -0.2707, +0.4636, -0.2595, +0.3771, -0.6650, +0.1455, -0.1856, -0.0687, +0.1400, -0.0953, +0.0515, -0.7491, -0.6315, +0.5029, -0.0766, -0.2809, -0.0295, -0.0445, +0.2458, -0.0337, -0.4448, +0.0568, +0.3414, +0.4531, -0.7913, -0.1482, -0.2271, +0.2439, -0.0425, -0.2358, +0.3364, -0.5432], -[ +0.2634, -0.3477, +0.0317, +0.0889, +0.2780, -0.0120, -0.0435, +0.2183, -0.3556, +0.0551, -0.0466, +0.0708, -0.1531, +0.3666, -0.1843, -1.0940, -1.6572, +0.7586, -0.0210, -0.2292, -0.4205, -0.3458, +0.0816, -0.2736, -0.1289, +0.2122, +0.1495, -0.0576, +0.5069, -0.6383, +0.4369, -0.8404, +0.0385, +0.0153, +0.0811, -0.1560, -0.6080, +0.2414, +0.0314, -0.1934, +0.0667, +0.2192, -0.1913, +0.5363, +0.4368, -0.8673, +0.2904, -0.6743, -0.0691, +0.7936, +0.2229, -0.0537, -0.5556, +0.3376, -0.4874, +0.2248, -0.1075, -0.7338, +0.1902, -0.1731, -0.0106, +0.0355, -0.1250, +0.4089, +0.0095, -0.6563, +0.2270, -0.3292, +0.1897, -0.1033, -0.1497, -0.4859, -0.0143, +0.0478, +0.2914, -0.1224, +0.2315, -0.1652, -0.0206, +0.2476, -0.0184, +0.1188, -1.4777, -0.3964, -0.3475, -0.1931, +0.1739, +0.0595, +0.8368, +0.5033, -0.3137, -0.0383, -0.0833, -0.1218, -0.0073, -0.0442, -0.0638, -0.4179, +0.2325, +0.0417, -0.2310, -0.4139, -0.6530, +0.2960, -0.0511, +0.2432, +0.2106, +0.2936, +0.5162, -0.2360, -0.4698, -0.1606, -0.0371, +0.0210, -0.3222, -0.1920, -0.2556, +0.1969, -0.0667, -1.3229, -1.1078, +0.3231, +0.0515, -0.1371, -0.3949, -0.7734, -0.4037, +0.0193], -[ -0.3210, -0.2314, +0.3886, -0.2657, +0.1119, -0.2133, +0.3380, +0.0233, -0.1193, -0.8322, +0.0825, +0.8388, +0.0261, -0.5103, +0.2508, +0.5894, -0.5605, -0.2560, -0.0484, +0.1515, -0.2468, -0.4455, +0.4777, -0.5672, -0.3870, +0.1060, -0.0183, -0.1548, -0.0808, +0.1233, -0.5928, -0.2384, +0.0850, +0.1499, -0.1230, -0.2161, -0.5314, +0.3670, -0.3832, +0.3010, -0.5378, -0.2559, +0.7639, -0.8344, +0.2038, -0.1551, +0.2008, +0.2873, +0.0848, +0.0173, -0.6947, +0.2154, +0.2455, +0.5808, -0.2622, -0.5915, -0.3718, -0.2984, -0.2807, +0.3635, +0.2195, -0.1565, +0.3737, +0.0367, -0.0632, +0.2782, -0.1493, -0.1844, +0.0863, -0.6136, -0.2522, -0.3099, -0.0719, +1.0418, +0.3263, +0.1864, +0.3834, +0.2901, -0.0050, -0.0214, +0.1118, +0.2913, +0.1183, +0.0469, -0.5982, -0.2747, -0.5370, -0.2358, +0.2403, -0.0224, -0.1256, +0.3737, -0.5159, -0.2386, +0.2136, +0.4540, +0.2203, -0.0765, -0.0424, -0.0243, +0.2976, -0.5451, -0.3859, -0.1084, -0.1849, +0.3223, -0.3709, -0.1097, +0.3133, +0.4187, +0.0126, +0.4438, +0.4129, -0.0256, -1.0906, -0.1306, -0.3722, +0.0354, +1.0687, -0.4706, -0.5479, -0.1964, -0.6941, -0.5084, -0.5640, -0.5099, +0.2362, +0.3560], -[ +0.1791, +0.2881, -0.7729, -0.3385, +0.3606, +0.0612, +0.2410, +0.1191, -0.0858, -0.0186, +0.0214, +0.0085, +0.0258, +0.1854, -0.1063, +0.3270, -0.5948, -0.3428, +0.0382, -0.1681, -0.0951, +0.4245, -0.8488, -0.1074, -0.4762, -0.2798, +0.1092, +0.1049, -0.1346, +0.2377, -0.2866, -0.0606, -0.4998, +0.0916, +0.0868, -0.1146, +0.1059, -0.7432, -0.0414, +0.0021, -0.1163, -0.3469, -0.3270, +0.1146, -0.3700, +0.1372, +0.2099, -0.7201, +0.4332, -0.0164, +0.2137, +0.1549, -0.2365, -0.1101, -0.5498, -0.0735, +0.3160, -0.3405, -0.1220, -0.4743, +0.1564, -0.2878, +0.0357, +0.0285, -0.3766, -0.1428, +0.1522, -0.2641, -0.2145, -0.3228, -0.1470, +0.1051, +0.1421, -0.3384, -0.3969, -0.0948, -0.2860, -0.1771, +0.0543, +0.1879, -0.0433, -0.3160, -0.3755, -0.2948, -0.1783, -0.3840, +0.2394, -0.0634, +0.5142, -0.8413, +0.3412, +0.3218, +0.3045, -0.2554, -0.9629, +0.0401, +0.3647, +0.0492, +0.0497, -0.1858, -0.1293, -0.0575, +0.3429, -0.0890, +0.1988, +0.6356, -0.3519, -0.2336, -0.1277, -0.1830, +0.3194, +0.1399, -0.1489, -0.0214, +0.6222, +0.2260, -0.3674, -0.1043, -0.1840, -0.3335, -0.2591, +0.1626, -0.2799, -0.4551, -0.1072, -0.5277, +0.1306, +0.0353], -[ -0.0234, +0.1212, -0.4436, +0.0434, -0.6976, +0.5496, -0.0749, -0.0152, +0.1459, -0.2316, -0.1889, +0.0072, +0.3640, +0.2543, +0.0134, -0.4284, +0.2318, +0.2130, -0.2894, +0.2412, +0.3658, -0.9425, -0.1215, -0.0434, -0.1678, -0.0158, -0.5076, -0.2644, +0.5484, -1.0323, -0.1091, +0.1811, -0.0722, -0.6784, -0.0080, +0.1087, -0.0738, +0.3433, +0.1437, +0.5668, +0.1695, +0.1437, -0.4913, -0.4930, +0.1981, -0.2055, +0.1960, +0.4589, -0.0228, +0.0472, -0.2438, +0.0485, -0.3748, +0.2223, -0.0843, -0.2112, -0.5294, -0.8399, +0.3947, +0.0641, +0.2553, -0.1535, -0.2838, +0.3295, +0.1293, +0.3018, -0.0949, +0.2205, +0.7726, -0.5509, -0.1673, -0.0803, +0.0629, -0.4096, -0.2313, -0.0832, +0.6142, +0.1712, +0.0884, -0.5235, -0.2604, -0.0944, +0.3203, +0.0991, +0.0928, -0.1145, -0.0671, +0.1520, -0.0929, +0.3744, -0.3348, -0.3473, -0.3554, +0.6330, +0.1744, -0.0682, -0.3535, +0.5122, -0.3765, -0.0362, -0.1175, +0.5106, +0.2034, -0.2778, -0.2775, +0.0219, +0.0811, -0.0417, -0.1534, -0.1141, +0.2005, +0.1071, +0.1928, -0.2829, +0.3667, +0.0009, +0.0457, -0.4641, +0.0010, +0.2674, +0.3295, +0.1087, -0.0474, +0.4885, +0.2276, +0.1074, +0.2858, +0.4766], -[ -0.0665, +0.1581, +0.0627, +0.1987, -0.2095, -0.3662, +0.1554, -0.1836, -0.2919, +0.1708, +0.0499, -0.2312, +0.3957, +0.1688, -0.6962, +0.2186, -0.1881, -0.0517, +0.2233, -0.2091, +0.0115, -0.0638, +0.1567, -0.4073, -0.2412, -0.7732, +0.1919, +0.0549, -1.0074, -0.6073, -0.2061, +0.1846, +0.3226, -0.2365, +0.5976, -0.2409, -0.3202, +0.3924, +0.1434, +0.2678, -0.0019, -0.1577, -0.0115, +0.5530, -0.0751, -0.2850, +0.0394, +0.3126, +0.0453, -0.2530, -0.2803, +0.1152, +0.6628, -0.1143, +0.3309, -0.4600, +0.1908, -0.1120, +0.0620, +0.4849, -0.1058, -0.0864, -0.0548, +0.3441, -0.6613, +0.3449, -0.5306, +0.0766, +0.2860, +0.2090, +0.1885, -0.4783, -0.0283, +0.1623, +0.0378, -0.0450, -0.6512, -0.4437, -0.2312, +0.1268, +0.0571, +0.2676, -0.3274, +0.5926, -0.0571, +0.0826, +0.0367, -0.0291, +0.1465, +0.3556, +0.3174, -0.1970, -0.2625, -0.0010, -0.5190, -0.1360, +0.2783, +0.5763, -0.1643, -0.2777, +0.2368, -0.0152, +0.0771, -0.2411, +0.1474, -0.4511, +0.2373, +0.3870, -0.7036, -0.1892, -0.0467, +0.2451, -0.1800, +0.1106, -0.2327, +0.1652, +0.0912, -0.4800, -0.0612, -1.0098, -0.1433, -0.1225, -0.0268, +0.1250, -0.1751, -0.3622, +0.2483, +0.6646], -[ +0.4416, -0.1142, -0.2499, -1.5028, +0.2408, -0.4075, +0.0353, -0.0275, -0.5741, +0.4013, +0.2104, +0.4478, -0.2073, -0.2662, +0.2119, -0.1223, -0.2525, -0.6234, +0.0659, -0.0667, -1.4907, -0.1928, -0.1386, +0.1333, -0.1815, -0.7530, -0.1773, +0.1133, +0.2754, +0.0212, +0.0933, -0.6005, -0.3885, -0.1181, +0.1499, +0.2489, +0.1552, -0.2519, +0.0404, -0.6333, +0.0726, -0.4074, +0.1049, +0.2936, -1.0768, -0.0511, +0.5015, +0.3586, -0.4387, +0.0186, -0.3156, -0.1855, -0.6765, +0.0035, +0.2696, -2.2164, -0.2269, +0.1643, +0.1207, -0.2929, +0.0297, -0.2237, -0.0942, +0.0694, +0.0411, +0.3438, -0.5191, +0.6488, -0.3130, +0.4419, +0.0132, -0.0465, +0.3574, -0.9118, +0.2819, +0.0833, +0.2077, -0.2432, -0.8297, +0.3098, +0.4061, -0.3596, +0.0562, -0.2202, -0.2961, -0.5923, -0.1931, +0.4261, +0.0157, -0.8220, +0.1703, -0.6756, +0.0107, -0.2611, +0.0200, -0.8554, +0.4564, -1.6007, +0.0703, -0.9627, -0.5115, +0.0955, -0.1095, -0.4110, -0.2490, +0.2963, +0.1649, +0.0000, +0.6864, +0.2818, -0.4420, -0.4390, -0.0482, +0.0511, -0.7306, +0.2660, -0.6449, -0.5010, -0.1333, -0.5036, +0.0097, -0.2455, -0.0610, -0.6962, -0.6346, -0.2672, -0.1384, -0.9030], -[ -0.0989, -0.5672, +0.4776, -0.2589, +0.1808, -0.2684, +0.2359, +0.1128, -0.1079, +0.3652, +0.0822, -0.8267, +0.4996, +0.2341, +0.1954, -0.7062, +0.1644, +0.1329, +0.0216, +0.3544, +0.1946, -0.0768, -0.1034, +0.1478, -0.0558, -0.4858, -1.1390, +0.3122, +0.0802, +0.4756, -0.5719, +0.4892, +0.3556, -0.1224, +0.0513, +0.2403, +0.4080, -0.0538, -0.5849, -0.0916, -0.3166, -0.1225, -0.6648, -0.3911, -0.0678, +0.3270, -0.3291, +0.2120, -0.4523, -0.2853, -0.0565, -0.2070, -0.0396, -0.1062, +0.1984, -0.3320, +0.4655, -0.3548, +0.0705, +0.3458, +0.3946, -0.0597, +0.2896, +0.4485, +0.0403, +0.2810, +0.3739, +0.2537, -0.1965, +0.0436, +0.2026, -0.7033, +0.3322, -0.0502, +0.1937, -0.3497, +0.2046, +0.0022, -0.1377, +0.3027, +0.0235, +0.0412, -0.3155, +0.1799, -0.1757, -0.4997, -0.1027, +0.1928, -0.6312, +0.3401, -0.9327, +0.0703, -0.4940, -0.5584, -0.3130, -0.0304, -0.4274, -0.2577, -0.6017, +0.0703, +0.1831, -0.4089, -0.1192, -0.3694, +0.0067, -0.0909, -0.0807, -0.0025, -0.1092, +0.1322, +0.5706, +0.0396, -0.0320, -0.1211, +0.2016, -0.1502, +0.0140, -0.8453, -0.2884, -0.3811, +0.5731, +0.0415, -0.6412, -1.6171, +0.1119, +0.2273, -0.0013, +0.0729], -[ +0.4823, -0.5241, -0.3192, -0.1756, -0.4924, +0.0943, -0.2736, -0.1148, -0.2109, +0.7279, +0.1882, -0.0927, -0.7634, -0.4464, -0.2448, +0.1218, -0.1461, -0.0467, +0.0650, -0.4423, -0.1474, +0.5573, -1.1819, -0.3146, +0.3057, -0.0218, +0.5643, -0.4534, +0.2364, -0.4210, +0.2969, -0.7608, +0.5222, -0.0032, +0.0159, +0.0409, -0.5466, +0.2991, -0.5642, +0.5514, -0.7133, -0.1295, +0.5184, -2.1376, +0.1207, -0.3020, +0.8014, +0.3148, -0.6882, -0.1357, +0.1587, +0.4147, +0.2787, -0.5292, -0.0438, +0.4991, -0.8411, +0.2144, -0.2856, +0.4534, +0.1341, -0.1733, -0.2445, +0.7575, -0.3120, +0.7738, +0.3014, -1.0720, +0.7366, -0.2337, +0.1465, +0.7770, +0.4397, -0.6102, +0.1892, -0.3748, +0.0486, -0.9775, -0.0216, -0.3528, -0.2456, +0.3181, +0.3986, -0.2569, -0.1039, -0.6809, +0.2674, -0.3569, +0.1407, +0.3083, +0.0485, -0.6881, +0.1889, -1.0541, +0.5089, +0.1448, +0.5228, +0.0983, +0.3836, -0.0792, -0.0109, +0.1308, +0.8304, +0.3992, -0.4159, +0.3154, +0.2200, +0.0521, -1.2399, +0.0009, -0.2961, +0.4366, -1.0532, +0.2175, -0.1481, -0.1820, +0.1124, -0.2291, +0.0456, +0.5040, -0.3672, +0.1584, -0.5905, -0.6542, +0.1944, +0.4557, +0.0406, +0.2823], -[ -0.2943, -0.7676, -0.8988, +0.0598, -0.3524, +0.0594, -0.3119, -0.5471, +0.7293, +0.2619, -0.4584, +0.0454, -1.0659, -0.0763, +0.1966, +0.2934, +0.0375, +0.1501, -0.2708, -0.2137, +0.0729, -0.6996, +0.4245, +0.2168, -0.2608, +0.0017, -0.3414, -0.1711, -0.3742, +0.2071, +0.2677, -0.9442, +0.4179, -0.1764, -0.0870, -0.0493, -0.5579, +0.3694, +0.2434, -0.3753, +0.3978, +0.2795, -0.4285, +0.2338, -0.0084, -0.0160, -0.0983, +0.3405, +0.3764, +0.1429, -0.6734, -0.2958, +0.1341, -0.0667, +0.0587, -0.0374, +0.1679, +0.0952, +0.1928, +0.0367, -0.5191, +0.3131, +0.2049, +0.1300, -0.0744, +0.0194, -0.5804, -0.1111, +0.2270, +0.0727, -0.0018, +0.2914, -0.2234, -0.0435, -0.1076, -0.0653, +0.3008, -0.1385, -0.0867, +0.0222, +0.0706, -0.1918, +0.1955, +0.2844, -0.0524, +0.2098, -0.1493, -0.1124, +0.2705, +0.1581, -0.4781, -0.0853, -1.0162, +0.2076, -0.3705, -0.0534, +0.4213, -1.1101, +0.0633, +0.2074, -0.0901, +0.0092, +0.5552, -0.1931, +0.0457, +0.1738, -0.0128, -1.3026, -0.1371, -0.0611, -0.2973, -0.5710, +0.0776, -0.3925, -0.0920, -0.5404, +0.2660, -0.2981, -0.1783, -1.2445, +0.2677, +0.2130, +0.0179, +0.2414, -0.3898, -0.1324, -0.9490, +0.1818], -[ -0.1924, -0.6778, -0.0536, -0.1311, +0.1476, -0.5298, -0.1480, +0.2114, +0.0906, -0.0941, -0.1517, -0.0392, +0.2929, -0.4353, -0.0565, -0.2231, -0.1523, -0.2068, -0.3536, -1.3631, +0.4379, +0.4488, -0.4710, -0.0428, +0.1523, -0.8676, +0.1094, -0.2152, -0.2034, -0.0441, +0.7071, -0.4869, +0.1174, -0.0950, +0.1153, -0.0008, -0.2737, +0.5995, -0.7556, -1.1526, -0.0933, -0.3313, -0.1993, +0.2632, +0.1281, -0.1712, +0.1883, -1.1502, +0.0574, +0.3260, -0.1471, +0.1906, +0.1866, -0.1915, +0.1351, +0.0474, +0.1615, +0.0929, +0.2046, +0.4494, -0.9666, -0.0276, -0.2700, +0.0351, +0.4091, +0.3661, -0.4753, +0.1750, +0.1603, -1.0235, +0.2075, -0.0599, -0.3140, -0.4417, -0.1236, +0.1114, +0.1068, -0.1712, -0.2555, -0.2161, +0.1002, +0.0895, -0.1128, -0.1337, -1.1521, +0.3955, -0.0003, +0.0717, -0.0846, +0.2788, -0.1975, -0.0141, +0.1476, -0.2782, +0.0496, +0.1680, -0.0455, -1.0943, +0.1482, -0.0796, -0.4438, -0.4776, -0.0162, +0.1742, +0.1395, +0.3970, -0.6460, +0.4241, -0.7422, -0.2069, +0.4384, +0.3060, +0.1503, -0.4135, -0.1148, -0.6823, -0.4602, -0.0519, -0.5306, -0.7050, +0.0435, +0.1912, -0.7657, -0.4381, +0.1935, +0.4702, -1.0557, -0.5705], -[ -0.6135, -0.1182, +0.3913, -0.2096, -0.2604, +0.1898, +0.1359, -0.2445, -0.2848, -0.5127, -0.3729, +0.5827, +0.1924, -0.5007, +0.0672, +0.4865, +0.4360, +0.3089, +0.2527, +0.3814, -0.0898, +0.6346, +0.3414, -0.1610, -0.0667, +0.4156, +0.3805, +0.1253, -1.3627, -0.4553, -0.2827, -0.0893, +0.0952, +0.4940, +0.0352, -0.4969, -1.0905, +0.3557, -0.2345, +0.2216, +0.0308, -0.5916, +0.3902, +0.6697, -0.0364, +0.4572, -0.1197, +0.1063, +0.4066, +0.2984, +0.2175, -0.5291, +0.1443, -0.3907, +0.2906, +0.2113, +0.5091, +0.0963, -0.6086, +0.1233, +0.0869, +0.0826, +0.0519, -0.4624, +0.0891, +0.1031, -0.2134, +0.1065, +0.4695, +0.2296, +0.0850, +0.5312, +0.3189, -0.3951, -0.2014, -1.7000, -0.1407, +0.0992, -0.9786, -0.4946, +0.0639, +0.2980, +0.3425, -1.4748, -0.6085, +0.1511, +0.8066, +0.4412, +0.0938, -1.1316, +0.2917, +0.2684, +0.3681, -0.3262, +0.3730, -0.0798, +0.3549, +0.6100, +0.2911, -0.1415, +0.0381, +0.0653, -0.9200, -0.3318, +0.0479, +0.1713, +0.3885, -0.1811, +0.2405, +0.0571, -0.2672, -0.3429, +0.1619, -0.0122, -0.2083, -0.3287, -0.5802, -0.5090, -0.3427, -0.0242, -0.5123, -0.2175, -0.5936, +0.4590, -0.0207, -0.1422, +0.3951, -0.4642], -[ +0.0637, +0.2194, +0.1233, +0.2444, +0.2648, +0.3911, +0.2162, +0.0570, -1.0116, +0.2041, +0.3894, +0.3130, -0.6553, -0.0754, -0.4368, -0.1127, -1.1092, +0.2499, +0.4935, -0.5216, -0.4520, -0.1094, -0.0340, +0.4041, -0.1986, -0.1912, +0.3013, +0.2590, -0.0217, -0.0813, -0.1954, -0.0565, -0.2484, -0.2524, -0.2382, +0.2475, -0.1627, +0.1119, +0.2663, -1.1415, +0.1744, -0.4082, +0.2448, +0.3000, +0.1943, -0.1969, -1.0916, -0.7825, +0.3134, +0.0180, +0.1776, -0.0964, -0.3938, -0.4071, +0.3228, -0.6611, -0.3269, +0.0064, +0.4350, -0.6577, +0.2451, -0.0429, +0.5446, -0.8114, -0.4665, -0.6421, +0.5744, +0.1492, -0.0624, +0.0711, +0.0506, -0.4650, +0.3603, -0.1382, -0.0005, +0.0179, +0.0109, +0.2123, +0.2275, -0.0836, -0.3171, -0.0832, +0.5110, -0.1794, +0.0962, +0.3018, -0.0939, -0.4812, -0.4994, -0.3489, -0.0037, -0.1758, +0.1441, -0.0069, -0.7409, +0.2757, -0.1031, +0.3809, -0.0016, -0.6246, +0.1559, -0.4137, -0.2120, +0.4296, -0.0663, +0.4273, -0.1612, +0.2854, -0.1503, +0.4279, +0.2953, -0.1593, -0.3612, +0.1304, -0.0256, +0.0264, -0.2735, +0.6070, -0.1942, -0.6824, -0.2314, -0.1113, +0.0878, +0.2972, -0.1748, -0.1929, -0.6700, -0.3753], -[ +0.3661, -0.2872, -0.0997, -0.2512, -0.7374, -0.8405, -0.4988, +0.4066, -0.3310, -0.0182, +0.3488, -0.0360, +0.3041, +0.3516, +0.0138, -0.3461, -0.0244, -0.1816, +0.0763, +0.2978, -1.0127, -0.0343, -0.0671, +0.4292, +0.1026, +0.4117, +0.4518, +0.2886, +0.3862, -0.2197, -0.3117, +0.3548, +0.0097, -0.2635, -0.2479, +0.1012, -0.1462, +0.0678, -0.2521, +0.2856, -0.2078, +0.3733, -0.5360, -0.4165, +0.1311, -0.1573, -0.5136, -0.1028, +0.0351, +0.6986, -0.2984, +0.1071, +0.2514, -0.1129, +0.5946, -0.5894, +0.1409, +0.2520, +0.0586, -0.0501, -0.1643, +0.2042, +0.3442, +0.3769, -0.8580, +0.2119, -1.1916, -0.0109, -0.4661, -0.3490, -0.1262, -0.3273, +0.0238, +0.3743, -0.1521, +0.2376, -0.1275, +0.0538, +0.0336, -0.2739, -0.0080, +0.2309, -0.0942, +0.0654, +0.1324, -0.3763, -0.0779, -0.0172, -0.3762, -0.2984, +0.2599, -0.6926, +0.2420, +0.3060, +0.1610, -0.2479, -0.7942, +0.5411, +0.1075, -0.4839, +0.1002, +0.1792, +0.6309, -0.5178, +0.3260, +0.3521, +0.1456, +0.1748, -0.4006, -0.4659, +0.1148, +0.3241, -0.0215, +0.1277, +0.2746, -0.5866, -0.2604, +0.1033, +0.2670, +0.0952, -0.1471, -0.0107, -0.6613, +0.0590, -1.4359, -0.7427, -0.3111, +0.0218], -[ +0.1289, +0.4328, +0.6663, +0.0720, -0.1350, -0.5383, +0.5771, +0.1699, +0.1840, -0.1668, +0.1744, +0.0103, +0.4031, +0.0641, +0.2268, -0.0912, +0.0167, -0.2013, +0.4213, -0.1341, -0.1894, -0.8026, +0.2043, -0.2809, -0.1971, +0.1330, -0.3898, -0.0156, -0.2150, +0.6376, +0.1630, -0.0674, +0.3658, -0.0381, +0.2245, -0.3433, +0.0192, +0.5298, +0.1001, -0.1228, -0.6996, +0.2924, -0.5216, -0.2744, +0.0941, -0.5924, -0.3424, -0.0337, +0.0621, +0.1640, +0.4839, +0.1824, -0.1895, -0.6154, -0.4130, -0.0901, +0.0108, -0.2637, +0.2424, -0.2547, -0.3577, +0.0981, +0.1863, -0.4352, -0.1151, +0.5024, -0.5573, +0.4364, +0.1372, +0.0579, +0.3895, +0.3334, -0.0499, -0.4517, +0.0008, +0.4021, +0.5173, +0.1106, -0.0773, +0.0752, +0.2001, -0.5344, -0.5505, -0.3661, -0.6641, -0.2985, -0.2679, +0.2963, +0.3472, -0.5183, +0.1158, -0.0620, +0.1455, -0.4203, -0.0133, +0.0859, -0.1275, +0.3381, +0.2242, -0.0663, +0.1686, +0.1502, +0.3472, -0.4621, -0.2133, -0.4568, -0.5624, -0.7918, -0.6184, +0.3457, -0.4948, -0.3151, +0.1657, -0.8206, -0.0181, -0.0420, +0.2828, +0.0132, -0.7448, +0.3006, -0.5172, +0.5552, +0.4286, -0.0160, -0.5593, -1.1629, -0.4181, -1.2348], -[ -0.4598, -0.3207, +0.4725, +0.6114, +0.1913, +0.2769, +0.0590, -0.5048, +0.1653, -0.0594, +0.4017, +0.4254, +0.4562, -0.5384, +0.0760, -0.8205, -1.0777, -0.0806, +0.1817, -0.0913, -0.4091, +0.1635, +0.0699, -0.1118, -0.3322, -0.3000, -0.3398, -0.2046, +0.7202, -0.0755, +0.1915, +0.2834, +0.1659, +0.2514, -0.1185, -0.0591, -0.4974, -0.2365, -0.1403, -0.6500, +0.1741, +0.3605, +0.9270, +0.4356, -0.8832, -0.0885, -0.4011, +0.3940, -0.2862, +0.0709, -0.0791, -0.0952, +0.1049, -0.1230, +0.3752, -0.0737, -0.6392, +0.4133, -0.3707, -0.9514, -0.0822, +0.3075, -0.8694, +0.0012, -0.4071, -0.2897, -0.9813, +0.1774, -0.1476, +0.4533, -0.4350, -0.0149, -0.2589, +0.0034, -0.2239, +0.0078, -0.0119, +0.4546, -0.0105, +0.3110, +0.0826, -0.4729, +0.0414, +0.0214, +0.1139, +0.3148, -0.5036, -0.0843, -0.4131, +0.3397, +0.4520, -0.0504, +0.0365, -0.0258, -0.0191, +0.1503, -0.1718, -0.0809, -0.6331, -0.3572, -0.0319, +0.5878, -0.2933, +0.2485, -0.0784, -0.5204, -0.1243, -0.9109, +0.0285, -0.1372, -0.1090, -0.5995, +0.2675, -0.5982, -1.0131, -0.6970, -0.5717, -0.1360, -0.1777, +0.4586, +0.0657, -0.0721, -0.1162, -1.1167, -0.0115, -0.2026, +0.4266, -0.9812], -[ -0.0849, +0.3536, -0.2379, -0.3263, +0.3014, -0.1097, -0.0589, -0.4361, +0.0039, +0.4038, -0.2003, -0.0195, +0.0014, +0.4042, +0.2088, +0.6447, -0.0574, +0.1542, +0.0980, -0.1186, -0.2599, +0.3175, +0.5973, -0.0541, +0.2186, -0.7482, -0.5926, +0.0216, -0.1986, -0.1831, +0.1381, -0.3144, -0.0559, +0.1749, +0.4326, +0.0263, -0.6921, +0.3209, -0.2484, -0.0649, +0.4083, +0.2544, -1.1657, -0.5055, -0.1440, -0.4459, +0.3795, +0.0267, -0.3225, -0.6638, -0.0147, +0.6239, +0.0947, -0.3617, -0.5609, -0.1682, -0.1696, +0.4117, +0.1375, -0.1280, -0.7624, -0.0451, -0.0815, -0.0538, -0.1653, -0.1150, -0.5737, +0.2047, +0.2760, +0.4396, +0.1517, -0.1300, +0.1392, -0.3124, +0.3122, +0.1438, +0.4628, +0.1070, -0.5691, +0.0151, +0.2700, +0.2060, -0.2707, +0.4076, +0.2695, -0.4102, +0.1117, -0.2117, +0.3055, +0.1831, -0.2137, +0.4413, +0.2177, -0.2903, +0.0297, -0.2952, +0.0457, -0.3401, +0.1930, +0.1360, +0.2589, +0.2260, +0.1994, -0.4121, +0.0423, -0.2664, -0.2658, -0.0292, -0.1213, +0.1333, +0.3588, +0.0684, -0.0622, -0.0729, +0.3186, -0.2336, -0.0112, -0.3602, -0.2539, +0.1394, -0.0926, +0.2267, +0.0144, +0.5011, -0.2182, -0.4628, -0.1842, +0.0529], -[ +0.3347, -0.6866, +0.0781, +0.3844, -0.2010, +0.0457, -0.2248, +0.1723, -0.2135, -0.1744, -0.5633, -0.1929, -0.0571, -0.2310, -0.4149, -0.5452, +0.0393, -0.2183, +0.1234, -0.3591, -0.2108, +0.1609, -0.3426, -0.2649, -0.8446, +0.1344, +0.1241, -0.0926, -0.3757, +0.1503, -1.1095, +0.3566, -0.1554, -0.6519, -0.0194, +0.2426, -0.3113, +0.1708, +0.1458, +0.1228, -0.4009, +0.0446, -0.2267, -0.2177, +0.1132, -0.0891, +0.1459, +0.2435, +0.3166, +0.0072, +0.2237, +0.5849, -0.1849, -0.3471, -0.6318, +0.0314, -0.1174, +0.2990, +0.5338, -0.4176, +0.2811, -0.1840, -0.2592, +0.1009, -0.1685, -0.0667, -0.0262, +0.1468, -0.4210, -0.0396, -0.0266, -0.0006, -0.1343, -0.0533, -0.0180, -0.0818, -0.1737, +0.0085, +0.0048, -0.1321, +0.1969, +0.2141, -0.2125, +0.1474, +0.0683, -0.1387, -0.2374, -0.4160, +0.0868, -0.4350, -0.0008, -0.0213, +0.4018, -0.4286, +0.1882, +0.1657, -0.0671, -0.3096, +0.4278, -1.4090, -0.1282, +0.0318, -0.1734, +0.5653, +0.2481, +0.3814, +0.0116, -0.3793, +0.1941, -0.0283, +0.4600, +0.1094, -0.2463, -0.5331, +0.3588, +0.0326, -0.1523, -0.0605, -0.4345, +0.3239, -0.1201, -0.0969, -0.1552, +0.3876, -0.2620, -0.9405, -0.1263, -0.0803], -[ -0.0297, +0.1988, +0.3262, +0.0549, +0.3793, +0.1879, -0.2426, -0.1343, +0.0712, +0.1710, +0.4259, +0.5006, +0.1371, -0.3614, +0.0701, +0.0340, -0.1939, +0.3020, -0.1228, -0.2752, +0.2208, +0.3947, +0.1267, +0.0635, +0.1734, -0.3415, +0.5229, -0.0325, -0.2520, -0.0146, -0.8899, +0.3361, +0.1907, -0.0812, +0.4150, -0.0764, -0.0954, +0.6676, -0.6114, -1.0321, -0.7000, -0.9030, +0.3233, -0.3900, +0.7467, +0.1521, +0.3476, -0.0093, +0.2032, +0.5847, +0.4859, +0.1555, -0.4197, +0.1217, -0.4938, +0.2180, +0.4008, +0.0112, -1.0770, +0.1341, -0.0383, -0.0255, -0.2626, -0.3256, +0.2749, -0.0419, +0.2554, -0.0465, +0.7506, +0.4099, -0.5027, +0.1384, -0.2261, +0.0361, +0.4164, +0.4369, -0.0497, +0.1304, +0.1126, -0.1997, +0.0245, +0.4196, +0.5871, -0.0104, +0.1757, +0.2414, -0.2267, -0.0249, +0.7813, +0.0189, -1.1333, +0.1713, -0.5713, +0.3771, +0.4000, +0.1678, -0.3477, -0.3857, -0.3895, +0.4286, -0.1874, -0.2678, +0.0692, +0.2929, +0.4200, -0.4892, -0.2223, -0.1725, +0.3945, -0.4439, +0.5063, +0.2971, -0.2911, -0.2364, +0.4556, -0.4471, -1.1705, -0.0658, +0.3561, +0.2113, +0.3435, -0.3171, +0.2710, -0.7412, -0.0359, +0.0154, -0.2229, -0.0465], -[ -0.6642, +0.0725, +0.3987, -0.0492, +0.0173, -0.0651, -0.2406, -0.1630, -0.0099, +0.4530, +0.2174, -0.9914, -0.4777, -0.2826, +0.2223, +0.4207, -0.0940, +0.0132, +0.4895, -0.2774, -0.0803, -0.3684, -0.3697, -0.1890, -0.0543, -0.0437, -0.0495, -0.2964, +0.3003, +0.1000, +0.0691, -0.0972, +0.2237, +0.0161, -0.1236, +0.0835, +0.1565, +0.1854, +0.3157, -0.0391, -0.3568, +0.3462, -0.0618, +0.0511, -0.4528, -0.1640, -0.9076, -0.0959, +0.1158, +0.1332, -0.3320, -0.2213, +0.2615, +0.1226, +0.0798, +0.1112, -0.1952, -0.3592, -0.4135, +0.0466, -0.0720, -0.2515, -0.0647, +0.0577, +0.0139, +0.1213, -0.5949, +0.0121, +0.0809, +0.2129, -0.2005, +0.1634, +0.1504, +0.1539, -0.9271, -0.3567, +0.4579, +0.1631, -0.4638, -0.6079, +0.1613, -0.1880, +0.2976, -0.2391, -0.0916, -0.1131, -0.4721, +0.2378, -0.1298, +0.2596, +0.0167, +0.1421, +0.0997, -0.0729, +0.1416, +0.2543, +0.1116, -0.6873, +0.0829, -0.2385, -0.3896, -0.3419, +0.2409, -0.5932, -0.1308, +0.1334, +0.0732, +0.3488, +0.1006, -0.3686, -0.1097, -0.5236, +0.0588, +0.2261, +0.4305, +0.1022, +0.2087, +0.5937, +0.1677, +0.2724, +0.1533, +0.4504, +0.0914, +0.5322, +0.2307, -0.5680, +0.5378, -0.3318], -[ -0.6778, -0.6364, -0.2011, +0.0849, -0.0166, +0.0045, +0.0264, -0.3764, -0.4428, -0.1902, +0.5757, -0.8543, +0.7532, -0.0407, +0.3535, +0.2872, -0.1263, +0.1192, +0.1670, +0.2098, +0.0421, +0.5853, -1.0259, -0.1254, +0.1032, -0.2932, +0.1603, +0.3052, -0.3605, -0.1044, +0.1862, -0.7786, -1.1493, -0.5369, -0.0767, +0.1026, +0.0201, -0.3205, -0.6829, -1.3361, -0.2581, -0.8051, -0.7356, -0.1561, +0.1817, -0.1457, +0.1162, -0.0340, -0.0809, -0.7689, -0.0302, +0.1307, -0.2109, -0.0891, +0.2267, -0.0685, -0.2859, -1.1465, -0.5704, +0.2662, +0.1344, -0.6675, +0.0094, -0.6907, -0.0344, +0.1555, +0.0322, +0.0124, -1.0074, +0.3792, +0.4076, -0.0187, +0.3645, -0.7228, +0.7340, -0.5927, +0.1774, -0.0473, -0.5602, -0.4565, +0.2643, -0.3446, +0.2760, -0.4586, +0.3466, +0.6573, +0.2715, +0.0748, +0.3306, +0.3168, -0.0725, -0.9882, -0.0800, -0.5139, -0.1755, -0.3027, -0.2568, +0.0122, +0.2016, +0.0857, -0.1585, +0.6447, -0.2577, -0.3868, -0.5767, -0.3641, -0.0187, +0.0532, -0.2076, +0.4350, +0.1810, -0.0833, -0.1074, -0.5264, +0.0099, +0.1013, -0.1973, +0.7701, +0.1147, +0.0279, -0.0011, -0.1576, +0.0560, +0.4560, -0.0421, +0.2628, +0.4545, +0.1396], -[ -0.1432, -0.3996, +0.0407, -0.0097, +0.1737, -0.2233, -0.2094, +0.1739, -0.0531, +0.2547, -0.1699, -0.2112, -0.5246, -0.5454, -0.0549, -0.1111, +0.2266, +0.0293, -0.8345, +0.2920, +0.0427, -0.3563, +0.2170, +0.1091, +0.3192, -0.8724, -0.1423, +0.2877, -0.5551, -0.1794, -0.3188, +0.0009, -0.3324, +0.3748, +0.0341, +0.3410, -0.3145, -0.2219, -0.5644, -0.1017, -0.2149, -0.5842, -0.3874, +0.2000, -1.7883, -0.0623, -0.3821, -0.0108, -0.7611, -0.1945, +0.3143, +0.2173, +0.0626, -0.0806, +0.1196, +0.1085, -0.4523, +0.4557, +0.1402, -0.1560, +0.0936, -0.9495, -0.0886, -0.0426, -0.0429, +0.1900, +0.2766, +0.1168, +0.0571, +0.0241, -0.2374, -0.0150, +0.2816, +0.2891, +0.2891, -0.2031, -0.3694, -0.3018, +0.3665, +0.0356, -0.0926, -0.1088, +0.1394, -0.6222, +0.1741, +0.6620, -0.3066, -0.1528, +0.0539, +0.3623, -0.2298, +0.3613, +0.3526, -0.3388, -0.2555, -0.1246, +0.2956, -0.5473, +0.3014, +0.2234, -0.1044, -0.3733, +0.1470, +0.2345, -0.1935, +0.3256, +0.0230, -0.3386, -0.4130, -0.1469, +0.2838, +0.3655, +0.2240, -0.3681, +0.2517, -0.1709, +0.2452, -0.4800, +0.0836, +0.2124, +0.2162, +0.1306, +0.3398, -0.6132, -0.9140, +0.0389, -0.0426, +0.5045], -[ -0.1958, +0.0879, +0.3819, -0.0204, +0.0282, -0.6020, -0.0643, +0.1944, -0.0051, +0.0879, -0.5164, +0.2769, -0.1624, -0.4060, +0.3190, -0.4997, -0.6467, -0.1474, -0.5115, -0.0060, -0.0640, -0.0882, -0.4678, +0.1563, -0.0349, -0.0421, -0.2059, +0.3632, -0.5945, -0.0211, +0.0159, +0.5288, +0.1550, -0.2346, +0.4034, +0.1286, -0.3434, -0.2654, +0.2438, +0.3040, -0.1086, +0.1591, +0.1180, +0.1238, -0.1375, -0.4584, -0.4365, -0.3755, -0.1367, +0.0317, -0.1295, +0.0266, +0.5572, +0.0637, +0.1400, -0.0489, +0.1724, -0.5628, -0.2439, -0.1080, +0.2539, +0.1139, +0.1675, +0.0178, +0.2297, -0.1314, +0.2398, -0.0580, +0.3121, -0.0453, -0.2598, -0.7347, -0.0272, +0.4070, -0.2345, +0.5543, -0.3533, -0.5448, +0.3845, +0.0050, +0.1397, +0.1300, -0.9875, +0.0051, +0.2425, -0.0325, +0.1987, +0.1954, +0.0745, -0.1058, +0.1436, +0.2189, -0.2209, -0.2596, -0.0029, +0.1220, -0.5709, +0.0004, -0.1248, -0.1056, -0.0126, -0.1735, -0.2655, +0.2376, +0.8534, -0.0616, +0.1662, -0.1187, +0.1541, +0.1366, +0.1239, +0.3079, -0.1841, -0.4290, -0.2133, -0.8290, +0.0027, -0.7927, +0.1146, -0.1648, +0.2081, +0.5809, -0.5107, -0.0862, +0.0150, +0.0836, -0.2228, +0.2233], -[ +0.1076, +0.0869, +0.7185, +0.0761, +0.5605, -0.3870, +0.2786, -0.2508, +0.3744, +0.8380, -0.0069, -0.7352, +0.0554, -0.3830, +0.3154, +0.3353, -0.0078, -0.5406, -0.2307, +0.2385, -0.2606, +0.2328, -1.1163, -0.2624, +0.3121, +0.8088, -0.3617, +0.4603, +0.0700, -0.3302, +0.1995, -0.7472, -0.0981, -0.2157, +0.0091, +0.2079, -0.2044, +0.4373, -0.5617, -0.2273, -0.5479, +0.6631, -0.5611, -0.4553, -0.8872, +0.7782, -0.5725, -0.0605, -0.5431, +0.1218, -0.5100, -0.2302, +0.1066, +0.4637, +0.4177, -0.0123, +0.1462, -0.5011, +0.5397, -0.6778, +0.0530, +0.0638, -0.3330, +0.0705, -0.1093, -0.0445, -0.5862, -0.2864, -0.0188, +0.2269, +0.0189, -0.5550, +0.1709, -0.2748, +0.0201, +0.7292, +0.2641, -0.0493, -0.4050, -0.3097, -0.0227, -0.3196, -0.4781, +0.5989, +0.0436, +0.0833, +0.2847, -0.2090, -0.3244, +0.0543, -0.0275, -0.0255, +0.0636, +0.2796, -0.1609, -0.0549, +0.3343, -0.1164, -0.5691, +0.3250, +0.3967, -0.4371, +0.5982, +0.3836, -0.1254, +0.1616, +0.0201, +0.6976, -0.4148, -0.2257, -0.2828, +0.0173, -0.3723, -0.3515, -0.1944, -0.1369, +0.7956, +0.2654, -0.4076, +0.1327, +0.4450, +0.5596, -0.0297, -0.6662, -0.1274, -0.2620, -0.0175, +0.0636], -[ -0.6378, -1.2393, -1.1395, -0.2183, +0.1459, +0.5306, +0.3219, +0.3275, -0.3332, -0.2348, +0.0533, +0.0777, +0.2564, -0.2995, +0.0971, +0.0627, +0.2591, -0.4677, +0.0086, +0.0585, -0.0665, -0.2281, -0.0536, +0.2897, -0.3552, -0.1981, +0.4013, +0.1687, +0.0133, -0.2887, -0.3514, -0.3186, +0.3959, +0.4083, -0.1949, -0.0118, +0.1085, +0.0178, +0.3606, +0.3736, -0.4485, +0.3308, -0.0149, -0.3747, -0.3170, -0.1099, +0.2599, -0.4559, -0.0338, +0.0113, -0.2195, +0.1299, -0.1374, -0.5198, -0.5681, +0.4829, +0.3599, +0.1780, +0.1414, +0.0362, +0.1113, +0.2909, -0.0671, -0.1359, +0.6032, +0.2754, -0.5094, +0.7210, +0.1682, +0.1283, -0.0891, -0.2647, -0.0718, -0.7015, -0.4782, +0.0639, -0.5652, +0.3627, -0.3130, -0.2666, -0.0832, -0.2605, +0.0247, +0.2126, -1.1935, +0.0424, +0.0787, -0.2549, +0.2925, +0.2951, -0.0734, +0.1757, -0.0141, +0.0621, -0.3709, -0.4136, -0.3559, -0.2490, -0.4204, -0.1555, -0.0288, +0.0202, +0.2835, +0.7376, -0.5642, -0.5375, +0.2947, +0.3598, -1.1134, -0.3764, -0.7809, -1.1894, +0.3668, +0.1723, -0.3894, -1.0599, +0.1398, +0.3952, -0.4771, +0.1147, +0.9280, -0.2277, -0.3185, +0.1941, +0.4343, +0.2465, +0.1328, -0.6747], -[ -0.0492, +0.0984, +0.0205, -0.0406, -0.4017, -0.0329, -0.1861, -0.6099, +0.0887, +0.0427, -0.2626, -0.1614, +0.4700, -0.4996, +0.1319, -0.2381, -0.4468, -0.0091, +0.1007, +0.1666, -0.1825, -0.1561, -0.2897, -0.1990, -0.2685, +0.2779, -0.4211, +0.4450, -0.5482, +0.3205, -0.2020, -0.2637, -0.5217, +0.4462, +0.0343, +0.1847, +0.2147, +0.0886, -0.8385, +0.4673, +0.0906, -0.5359, +1.1026, -0.7626, -0.8661, +0.6301, -0.2594, -0.3191, +0.3007, +0.1996, -0.1713, -0.4161, +0.1934, -0.8792, -0.8257, +0.4034, -0.6856, -0.0176, -0.2746, -1.2956, -0.5612, -0.2300, -1.4425, +0.3082, +0.3506, -0.7289, +0.2601, -0.6663, -0.3655, +0.5799, +0.0716, +0.0354, -0.6857, +0.9534, +0.1208, -0.1841, +0.1252, -0.7074, +0.1874, +0.1659, +0.1113, -0.2510, +0.3277, -0.1215, +0.3108, -0.0103, -0.3535, -0.1487, -0.6840, -1.7390, -0.2044, +0.7814, +0.1434, +0.0150, -0.1556, -0.0929, +0.0281, +0.1387, +0.2015, +0.1504, -0.1787, -0.4817, +0.0136, -0.4508, -0.0220, +0.6639, -0.3816, +0.0066, +0.3120, -0.1753, -0.2081, -0.6779, -0.2375, -1.2620, -0.2027, +0.5289, -0.2615, -0.5295, -0.1340, -0.2214, -0.0345, -0.0845, -0.0309, -0.2864, +0.5615, -0.0847, -0.4181, +0.1272], -[ -0.4011, +0.1881, -0.3873, +0.5103, -0.1901, +0.4120, -0.1424, -0.0251, +0.4734, -0.8594, +0.3479, +0.2002, +0.5717, -0.1473, -0.8968, -1.0498, +0.3934, -0.3609, -0.0425, +0.3495, -0.0203, -0.0719, -0.3852, +0.5593, -0.5042, -0.5742, +0.2506, +0.1632, -0.6291, -0.2210, -0.4271, -1.4439, +0.0099, +0.0304, +0.0894, -0.0364, +0.5013, -0.3514, -0.4595, -0.4858, -0.1578, +0.1212, -1.0720, -0.3185, -0.0242, +0.1336, -0.1681, +0.3692, +0.3680, +0.0893, -0.1893, +0.0966, -0.7285, -0.3346, +0.0369, +0.6123, -0.0755, +0.1887, -0.0292, -0.8622, +0.1337, -0.3498, +0.0707, +0.0847, +0.1433, +0.3293, +0.0091, -0.3396, +0.2179, +0.7283, -0.3450, +0.2302, -0.1569, -0.0358, -0.3615, +0.1357, -0.8087, -1.1660, +0.6737, +0.2218, +0.1241, -0.6647, -0.6620, -0.1829, +0.2833, -0.5531, +0.3697, -0.5341, +0.4884, -0.2152, -0.5216, -0.3860, -1.1938, +0.7604, +0.2194, -0.0656, -0.4110, +0.0776, -0.0409, +0.1686, -0.6396, -0.2647, +0.1387, -0.5252, +0.0566, -0.1600, -0.3657, -0.5698, -0.0299, -0.3200, +0.1155, +0.2764, +0.4491, +0.3213, -0.6912, +0.0244, +0.3365, -0.6068, -0.4712, -0.9783, -0.3193, +0.0132, -0.4330, +0.0352, +0.0288, +0.0041, +0.1496, +0.0334], -[ -0.0703, +0.3311, -0.1435, +0.2223, -0.6156, +0.2541, -0.2011, -0.2459, +0.0473, -0.0194, -0.2702, -0.0934, +0.1710, -0.0665, +0.1378, +0.0745, -0.5985, -0.4930, -0.3156, +0.2753, +0.2429, +0.2671, -0.3739, +0.2560, +0.4148, +0.2700, +0.5315, -0.8313, -0.5010, -0.3811, -1.7989, -0.1960, +0.5389, -0.4783, +0.0022, +0.3608, +0.2741, -0.1216, +0.1765, -0.3958, +0.6394, -0.0097, -0.3663, -0.0071, +0.3734, -0.4071, -0.3896, +0.2475, +0.3214, +0.0075, -0.0316, -0.0344, +0.2819, -0.5050, +0.0611, -0.0581, -0.2855, -0.0014, +0.0283, -0.0136, -0.7905, +0.1327, +0.1117, -0.6118, +0.2118, -0.0613, -0.7395, -1.9483, +0.2140, +0.0173, -0.0878, -0.1132, +0.3702, +0.1036, -0.8041, -1.0162, +0.1662, +0.0631, +0.2495, -0.4078, +0.1567, -0.0513, +0.1060, +0.3123, +0.3162, -0.3986, +0.1980, -0.9414, -0.6653, +0.6025, +0.5734, -1.6711, -0.9015, +0.2164, +0.5734, -0.2702, -0.3206, +1.4149, +0.0766, -1.4851, -0.9451, -0.1492, +0.1063, -1.0474, -0.2996, -0.0965, -0.2202, -0.1603, +0.2876, +0.2918, -0.4453, +0.0723, +0.0470, +0.4171, -0.0181, -0.5784, -0.1587, +0.0188, -0.0397, +0.1649, -0.0477, +0.0581, -1.2437, -0.4518, +0.8773, +0.8170, -0.2997, -0.4365], -[ -0.0123, -0.1383, +0.4941, +0.1783, -0.1183, +0.3091, +0.1262, -0.1957, -0.6633, -0.0530, -0.0116, -0.1286, -0.3584, -0.2268, -0.2112, -0.0552, -0.6219, -0.0457, -0.4947, -1.1977, +0.4374, +0.1683, -0.0750, -0.1380, -0.0418, +0.0321, +0.1055, -0.1301, +0.1558, +0.2623, +0.8019, -0.1483, +0.4749, -0.1920, -0.1603, +0.3616, +0.0876, -1.0185, +0.7846, +0.5782, +0.4956, +0.7854, +0.0123, -0.0969, -0.3543, -0.0287, +0.0114, +0.6072, -0.0208, -0.1153, -0.2078, -0.7613, -0.1077, -1.0598, -0.3189, +0.1886, +0.2800, -0.0938, +0.4136, +0.2041, -0.3761, -0.1947, +0.4233, -0.3573, -0.9363, -0.7824, +0.3488, -0.4112, -0.6931, +0.0847, +0.1504, +0.0681, +0.2897, +0.1277, -0.8980, -1.2694, +0.5936, -0.2321, -0.5390, +0.5342, -0.6301, -0.6779, +0.0818, +0.1664, +0.0701, -0.3096, -0.0783, +0.2685, -0.2841, -0.2418, -0.1425, -0.6752, -0.1693, -0.8841, +0.3664, +0.4125, -0.0130, -0.2211, -0.0067, +0.5431, -0.5202, +0.0342, -0.5446, -0.0318, -0.6738, +0.1892, -0.0901, +0.0892, -0.5736, -0.1670, +0.3361, -0.6880, -0.2206, -0.2759, -0.1394, +0.4364, +0.1627, -1.4273, -0.2489, +0.5022, -0.1756, +0.2227, +0.0171, +0.3295, +0.1282, +0.3625, +0.4322, -0.5070], -[ -0.2100, +0.1365, -0.3995, -0.2944, +0.1054, -0.6453, +0.1423, +0.2218, -0.1532, -0.5561, -0.3898, +0.0839, +0.2115, +0.1770, -0.0405, +0.2184, +0.1285, +0.3416, +0.0849, +0.5426, -0.9963, +0.1544, +0.4283, +0.0814, +0.2477, -0.6865, +0.2415, +0.0614, +0.1584, +0.0931, +0.2677, +0.0056, -0.5307, +0.2437, +0.2893, +0.0243, -0.1807, -0.1519, +0.1195, -0.2718, +0.4389, +0.0609, +0.1581, -0.5718, +0.0754, -0.4871, +0.0387, -0.6210, -0.4702, -0.1018, +0.1172, -0.2042, -0.4677, -0.0278, -0.1077, +0.2143, +0.3202, +0.2752, +0.4371, -0.0426, +0.0904, -0.0378, +0.3913, -0.1560, -1.4598, -0.4081, -0.1473, +0.0124, -0.0135, -0.5156, +0.0263, +0.3803, -0.0696, +0.4025, +0.0398, +0.3253, -0.0181, -0.5428, +0.2846, +0.0701, +0.1737, +0.2334, -0.0460, +0.1024, -0.0598, -0.0412, +0.0437, +0.2293, +0.1190, -0.8418, +0.3342, -0.2959, +0.1094, +0.3810, +0.2385, +0.5750, -0.0986, -0.5197, +0.3532, -0.9801, -0.1648, -0.1100, +0.2005, -0.3508, +0.0768, +0.5267, +0.1988, -0.1474, +0.0100, -0.3298, +0.3326, -0.3652, -0.0959, -0.3259, +0.1426, -0.3924, -0.0080, -0.7379, -0.0049, -1.5157, +0.3671, +0.1940, -0.0180, -0.1780, -0.3805, +0.1751, +0.3045, -0.2732], -[ +0.0035, +0.3977, -0.0846, -0.0787, -0.1904, -0.3952, -0.1998, +0.3258, +0.2257, +0.2918, +0.2759, -0.2606, -0.3168, +0.2653, +0.2438, +0.2721, +0.1526, -0.3354, +0.2308, +0.2344, +0.2404, -0.0271, -0.5654, -0.1870, -0.1885, -0.7517, -0.6301, +0.2571, -0.3805, -0.0318, -0.4177, -0.2951, +0.2569, +0.2467, -0.0822, +0.0162, +0.2459, +0.3814, +0.2139, +0.4670, +0.4265, -0.9324, -0.2759, +0.1504, -0.6929, -0.1532, -0.0322, -0.3954, +0.1515, +0.1401, +0.1029, +0.4847, +0.2373, +0.2281, -0.2765, -0.4012, -0.0957, -0.3453, -0.0639, +0.2644, -0.0350, +0.0004, +0.5196, -0.2593, -0.2650, -0.2926, +0.3804, -0.0640, -0.3865, -0.0439, +0.0384, -0.1556, +0.2803, +0.0469, +0.4986, -1.1754, -0.5365, +0.1751, +0.5924, +0.1695, -0.0738, -0.1192, +0.1596, -0.3230, -0.3424, -0.1985, +0.0672, -0.0613, -0.6708, -0.1637, +0.0420, +0.2673, -0.1571, -0.0548, -1.6265, -0.3283, +0.1743, -0.6627, -0.4234, -0.4712, +0.1829, +0.6506, +0.3179, -0.1085, -0.1959, -0.1304, +0.0545, +0.1044, +0.4348, -0.9669, +0.8307, +0.2977, -0.2281, -0.1904, +0.1705, +0.2268, -0.2234, +0.4567, +0.1574, -0.8312, +0.0159, -0.2713, -0.1099, -0.1543, +0.6110, -0.6323, -0.4817, +0.0778], -[ -0.7625, -0.3037, -0.2034, -0.2984, +0.1921, +0.0886, +0.3767, -0.6095, -0.1472, +0.6895, -0.5228, -0.3859, -0.1699, -0.4954, -0.0625, -0.4000, -0.3515, -0.0552, -0.0087, +0.1213, +0.0806, +0.0138, -0.0124, -0.0108, +0.0496, +0.2824, +0.6191, +0.5561, -0.1487, +0.4580, -0.7560, -0.1034, +0.1256, -0.1766, -0.1565, -0.0290, -0.4982, -0.4045, +0.0478, -0.5405, -0.0252, +0.1128, -0.0119, -0.5417, +0.5532, -0.2477, +0.2142, +0.2369, +0.0144, +0.1102, -0.3645, +0.2134, -0.1638, +0.7879, -0.4675, +0.0200, +0.0682, -0.0291, -0.0466, +0.0008, -0.2013, +0.0356, +0.3117, +0.1554, -0.8002, +0.1472, +0.3513, -0.4311, +0.0434, -0.7177, -0.0889, +0.1772, -0.0618, -0.1716, +0.3699, -0.0407, -0.2591, -0.0283, -1.4572, -0.0508, +0.2017, -0.2246, -0.5870, -0.0213, -0.3962, +0.2904, +0.2845, -0.3755, +0.3181, -0.9955, -0.5106, -0.1489, +0.1555, -0.0223, -1.2661, -0.2254, -0.2701, +0.0092, -0.0143, +0.2191, +0.3344, +0.0165, +0.2174, -0.7922, -0.0661, -0.0668, +0.0280, +0.2939, -0.4002, -0.2231, -0.2238, -1.0354, +0.1186, +0.2406, +0.3473, -0.2935, -0.1394, -0.2510, +0.0796, -0.4880, +0.0180, +0.1749, -0.4439, -0.0060, -0.0587, +0.1203, +0.4281, -0.5778], -[ +0.1056, +0.5102, -0.1648, +0.3088, -0.4892, -0.0068, -0.0488, +0.0311, +0.4326, +0.3124, +0.0537, -0.0215, +0.7150, +0.4474, -0.0649, -0.1184, -0.6942, +0.3479, +0.4986, -0.0145, +0.4939, -0.4466, +0.0551, +0.0990, +0.3363, -0.3824, +0.0641, -0.3565, -0.2709, +0.1897, -0.2541, -0.5718, +0.1046, +0.2285, +0.0944, -0.1116, -0.4582, -0.0883, -0.1032, +0.1107, -0.2964, +0.2079, +0.4521, +0.1426, +0.0705, -0.6783, +0.5143, +0.2760, +0.2529, -0.3347, -0.3505, +0.3650, -0.4551, -0.1018, -0.2310, +0.2220, -0.0774, +0.4260, +0.3437, +0.3036, +0.0116, -0.1172, -0.0977, +0.3731, +0.2671, -0.0352, +0.3002, +0.5533, +0.3190, +0.3075, +0.4073, +0.0963, -0.4183, -0.3162, +0.1073, -0.1079, +0.3653, +0.2335, -0.4234, +0.3297, +0.1850, -0.6446, +0.0411, +0.0950, +0.4171, -0.5590, +0.1768, +0.0335, +0.2845, -0.1238, +0.2110, -0.0618, +0.0916, -0.0732, +0.1605, -0.0309, +0.1958, +0.3986, +0.0925, -0.7205, +0.1290, +0.1213, +0.0120, -0.2494, +0.1151, -0.4264, -0.1954, -0.2779, +0.0599, +0.1172, -0.4810, +0.2018, -0.0237, +0.0932, -0.7579, +0.0597, +0.3054, -0.1457, -0.2700, +0.1204, -0.4118, +0.1211, +0.0836, -0.2483, +0.1376, +0.1802, +0.1772, +0.2410], -[ -0.0226, +0.3357, -0.1624, -0.4821, +0.0510, +0.4499, +0.0969, +0.2612, -0.2017, +0.1075, -0.2693, +0.1331, -0.1334, -0.1956, -0.0563, +0.2660, -0.0082, -0.0500, -0.5552, +0.0801, +0.1274, -0.2256, -1.0249, +0.3277, -0.7802, -0.3907, +0.0630, -0.0956, -0.5460, -0.2983, -0.2009, +0.3453, -0.9369, -0.2618, -0.3004, -0.0666, -0.1824, +0.2449, -0.3143, -0.3585, -0.1616, -0.4581, -0.2418, +0.5416, +0.0386, -0.2456, +0.4833, +0.1398, -0.1008, -0.2595, -0.6290, +0.1241, +0.3532, +0.1582, +0.3716, +0.1847, +0.0755, +0.3092, -0.3925, +0.4305, -0.2461, +0.2799, -0.0608, -0.6297, -1.1574, -0.3126, -0.4321, +0.7059, +0.5056, +0.3804, +0.3212, -0.6154, -0.8760, -0.5158, +0.2860, -0.5595, -0.0120, -1.2083, +0.3937, -0.3011, -0.8555, +0.0701, -0.5516, +0.1345, -0.4710, +0.3771, -0.0978, +0.2667, -0.1821, +0.0583, +0.0728, +0.3757, +0.9854, -0.2909, -0.2573, -0.6112, +0.8066, -0.9183, -0.0360, -0.6693, +0.1987, +0.1115, -0.4416, -0.0534, -0.4685, -0.2289, -0.4027, -0.2743, -0.1689, +0.5018, +0.4566, -1.1478, -0.2067, -0.1702, -0.3108, +0.3188, +0.3524, -0.4404, +0.3976, +0.3675, +0.2840, -0.0705, -0.1873, +0.0223, -0.5487, +0.4577, -0.7557, -0.1053], -[ +0.2024, +0.0563, +0.1717, +0.1936, -0.1173, -0.1798, +0.3346, -0.2394, +0.1289, +0.0381, +0.2179, +0.5293, +0.1489, +0.0972, -0.3871, +0.0049, +0.0054, -0.1929, +0.1633, +0.1732, -0.1361, -0.1887, +0.4091, +0.0266, -0.5524, -0.1786, -0.5976, +0.0080, +0.4115, -0.3462, +0.1168, -0.1779, -0.5333, -0.0620, -0.0407, -0.1660, +0.0648, -0.1037, -0.0566, -0.1055, -0.4763, -0.3483, +0.3698, +0.2618, -0.2010, -0.1604, -0.0376, +0.1715, -0.2170, -0.2354, -0.4720, -0.0223, -0.2996, -0.0090, +0.5603, -0.2183, -0.7029, +0.2355, -0.5186, -0.0491, +0.1369, -0.1355, -0.0432, -0.8752, +0.2912, +0.1440, +0.0883, +0.5699, +0.0658, +0.1171, -0.0823, -0.1525, +0.1402, -0.0609, -0.1948, -0.0634, +0.1897, -0.0627, -0.2032, -0.4707, -0.0186, +0.2510, +0.1624, -0.3033, -0.3366, +0.1784, +0.3605, -0.2224, +0.1344, -0.0219, -0.4001, -0.6241, +0.1216, -0.0357, +0.0981, +0.2836, -0.0451, -0.0704, -0.0999, +0.2903, +0.1763, +0.4004, -0.0339, -0.0996, -0.0952, -0.5565, +0.1289, +0.1126, +0.0732, -0.4992, -0.3034, +0.2251, +0.2714, +0.0058, -0.1187, -0.0914, +0.3888, -0.1795, -0.0632, +0.0407, +0.5958, +0.1882, +0.2027, -0.2935, +0.3236, +0.2589, +0.0742, -0.2537], -[ +0.4194, +0.1923, +0.0880, +0.1031, +0.4673, +0.3568, -0.1155, +0.3139, -0.2933, +0.3362, +0.3487, +0.2424, -0.0359, +0.0741, -0.0747, +0.3414, -0.3044, -0.3340, -0.1161, +0.0037, -0.4410, +0.1386, -0.2310, +0.2522, -0.4899, -0.0335, -0.0877, +0.2778, +0.0135, -0.1217, +0.0235, +0.3176, +0.0733, +0.2862, +0.0104, -0.0360, +0.5093, -0.1699, +0.2507, -0.3848, +0.0548, -0.0319, +0.0396, +0.0184, +0.2671, +0.2498, +0.3686, -0.4370, -0.2360, -0.1483, +0.2856, +0.3512, -0.5829, -0.2704, -0.0611, +0.4731, -0.0454, -0.2888, -0.3536, +0.3046, -0.0596, -0.3080, -0.4572, -0.1877, +0.1340, -0.7193, +0.3020, -0.3115, -0.0099, +0.0676, -0.1117, -0.1627, -0.0400, -0.3679, -0.0792, +0.1417, +0.4491, -0.1631, +0.2351, +0.3030, -0.7050, +0.4175, +0.0185, -0.5503, -0.7703, -0.0086, -0.6424, -1.1539, +0.0300, -0.0577, +0.1204, +0.0417, -0.3860, -0.2973, -0.9734, +0.0511, +0.1754, -0.2589, +0.1278, -0.9709, -0.1811, +0.1474, -0.3597, +0.3467, +0.0012, -0.3558, -0.9330, -0.0754, +0.5050, +0.2604, -0.1417, +0.0865, +0.3803, +0.3122, -0.3400, -0.5517, -0.7374, +0.4761, -0.8659, +0.0860, -0.8754, +0.1694, +0.0103, -0.1909, +0.2165, -0.1871, +0.2526, +0.0635], -[ -0.5897, +0.1967, -0.0208, +0.1552, +0.2012, +0.0137, +0.4446, +0.1604, +0.0860, -0.2957, +0.0831, -0.3117, -0.2295, +0.0995, -0.3845, +0.0145, +0.4860, +0.5286, -0.2386, +0.3979, -0.8028, -0.0815, +0.0178, +0.3754, -0.1336, -0.4685, +0.2704, -0.2135, +0.0399, +0.0964, -0.1941, +0.1365, +0.2444, -0.8008, -0.2529, -0.8380, +0.0188, +0.2255, +0.0602, -0.1651, +0.0803, -0.5109, -0.2006, -0.8381, -0.2324, -0.3867, -0.1390, -0.6590, +0.1883, -0.0619, -0.1491, -0.0405, -0.0945, +0.2542, +0.1329, -0.6316, +0.3870, -0.4151, +0.0912, -0.2163, +0.3971, -0.0336, +0.2335, -0.2535, +0.4941, -0.1495, +0.1359, +0.5657, -0.1661, -0.0560, +0.1866, -0.2923, -0.6129, +0.0319, -1.4358, +0.8786, +0.3339, -0.0374, -0.5521, -0.0421, +0.1307, +0.1648, -0.1840, +0.0345, +0.1450, +0.7790, -0.2114, +0.2896, +0.2973, +0.2936, -0.1746, +0.0271, -0.6147, +0.5996, +0.3112, +0.4525, -0.1391, -0.1851, -0.0975, -0.1269, +0.4239, -0.1392, +0.2920, -0.4498, -0.1834, -0.0495, +0.2639, +0.4676, -0.2557, -0.1017, +0.8022, -0.1231, -0.1982, +0.1404, -0.1729, -0.1768, +0.1834, -0.0238, -0.8074, +0.1061, +0.3401, +0.0905, +0.5300, +0.7878, +0.1816, -0.2040, +0.6207, -0.2724], -[ +0.1844, -0.1917, +0.5196, +0.1033, -0.1907, +0.1418, -0.2533, +0.3042, -0.4084, +0.2145, +0.2180, +0.1252, +0.0970, -0.0900, -0.2413, -0.5787, +0.4614, +0.5182, -0.2798, +0.0184, -0.2850, -0.5868, -1.2955, -0.2164, +0.0844, +0.4607, +0.9338, +0.3562, -0.0918, -0.0175, -0.2229, +0.2257, -0.2580, +0.0164, -0.0286, +0.1040, +0.5715, -0.0410, -0.4908, +0.0536, -0.6773, +0.1017, -0.0515, +0.1009, -0.1168, +0.2808, -0.0673, -0.2626, -0.0743, -0.3654, +0.1286, +0.6207, +0.1586, -0.2313, +0.2525, +0.2001, -0.3202, -0.4306, +0.2471, -0.1912, +0.2974, -0.5707, -0.5244, -0.2952, -0.0055, +0.5713, -0.5089, -0.7673, -0.6171, -0.2385, -0.1115, -0.1393, +0.1489, -0.4512, +0.1645, -0.4450, -0.1559, -0.2588, -0.9251, +0.5436, -0.3898, -0.6149, +0.0852, +0.3173, -0.2238, -0.6447, +0.0300, +0.0479, +0.3166, -1.3720, +0.0896, -0.2049, -0.4105, +0.0231, +0.2926, +0.3943, -0.0542, -1.3079, +0.2057, -0.7826, -0.2248, +0.0582, -0.1004, +0.1929, -0.2635, -0.0436, -0.2096, +0.4923, -0.0729, -0.0032, +0.5133, -0.2167, +0.6155, -0.1124, +0.1427, +0.2694, -0.0273, -1.0109, -0.8437, -0.3801, -0.1157, -0.1628, +0.1615, -0.1853, -0.0178, -0.4683, -0.3524, -0.0942], -[ +0.3663, +0.2932, -0.2790, +0.1842, -0.1110, +0.0383, -0.3040, -0.3259, -0.4600, -0.0410, -0.1825, +0.1300, -0.5660, +0.1432, -0.2207, +0.3488, -0.2725, +0.0144, -0.1097, +0.0771, -0.4995, +0.0807, +0.1126, +0.0886, -0.1527, +0.2333, -0.3205, -0.3632, +0.1257, -0.0929, -0.6178, -1.0151, -0.6648, +0.3984, +0.0038, +0.1503, -0.0296, +0.0617, -0.7039, +0.4572, -0.1824, -0.2864, -0.1366, +0.6675, +0.6872, +0.2702, -0.1952, -0.2237, -0.3086, -0.3451, +0.2617, -0.3485, +0.1951, +0.2639, +0.1442, +0.3497, -0.3471, +0.4583, -0.1079, -0.0885, +0.0786, +0.0162, +0.4533, -0.4152, -0.3401, +0.2000, -0.9334, +0.3432, +0.6194, -0.1451, +0.2533, -0.1209, -0.0570, +0.4464, +0.3559, -0.2031, +0.1100, +0.0304, -0.6057, -0.6405, -0.1986, -0.0094, +0.6520, -0.4945, -0.0594, +0.2339, +0.2851, +0.2356, +0.0697, +0.4007, +0.2303, +0.0721, -0.0022, +0.4197, -0.3530, +0.4003, -0.1387, +0.2370, -0.2914, +0.6494, +0.1009, -0.3245, +0.5541, -1.2101, -0.3211, +0.2027, +0.1809, +0.0328, -0.2483, +0.4102, -0.0290, +0.5639, -0.1797, -0.0795, -0.1425, -0.4523, -0.0086, +0.1491, -0.4620, -0.2517, +0.0041, -0.0681, -0.1171, -0.5006, -0.5771, +0.0845, -0.3949, -0.0300], -[ +0.1316, -1.1090, -0.4959, -0.3180, -1.0688, -0.6994, -0.3029, -0.2908, +0.1295, -0.6879, -0.1554, +0.5143, +0.0494, -0.1597, -0.1248, -0.1274, -0.0458, -0.1063, +0.2154, -0.1585, -1.0510, -0.4047, +0.1355, +0.1453, +0.0311, -0.5137, +0.1941, -0.2150, -0.2594, -0.1713, +0.3293, +0.0225, -0.0632, -0.0906, -0.2518, +0.1104, +0.3038, +0.2797, -1.2744, -2.0160, +0.0490, +0.2149, +0.0494, -0.7233, +0.2674, +0.0223, -0.1538, +0.0073, -0.2090, -0.4002, +0.1619, +0.5008, +0.4324, -0.1296, -0.0460, +0.1818, +0.3720, +0.2252, -0.0896, -0.2247, -0.0249, -0.0773, -1.0900, +0.2623, -0.4763, +0.6377, -0.3709, +0.0442, +0.2452, -0.1287, -0.1583, -0.4579, +0.0874, -0.0558, -0.4179, -0.2828, +0.1358, -0.0066, -0.2899, -0.0713, +0.0705, +0.0781, +0.2925, +0.5087, -0.3024, +0.1866, +0.0100, +0.1871, -0.7285, +0.2451, +0.2770, +0.2159, -0.0159, -0.8180, +0.2432, +0.1335, -0.3178, -0.4630, -0.0403, -1.4527, -0.1312, -0.0772, +0.7479, -1.0607, -0.3380, +0.2180, -0.6276, -0.4060, -0.2637, -0.2074, +0.2734, -0.3302, +0.2974, -0.3635, -0.0118, -0.1200, -0.1160, -0.1758, -0.2725, +0.1912, +0.4551, -0.0289, -0.7165, -0.7538, -0.3009, +0.0994, -0.2168, +0.1227], -[ -0.4149, -0.2784, -0.2805, +0.1672, +0.1294, -0.3174, -0.1184, -0.1275, -0.2447, -0.3391, +0.3774, -0.0894, -1.1549, +0.0520, -0.0713, +0.5279, +0.2778, -0.4258, -0.3231, -0.4361, +0.0279, -0.8182, -0.1884, -0.1226, +0.2984, -0.2428, -0.6331, -0.3153, -0.1833, +0.2829, +0.2734, +0.1063, -0.3210, +0.7281, -0.0324, +0.1647, +0.4490, +0.2560, -0.1405, +0.2594, -0.9743, -0.1754, -1.1095, -0.2581, -0.2737, -0.3934, +0.0861, -0.6304, -0.4844, +0.2279, -0.2902, -0.0244, +0.4658, +0.6328, -0.4758, -0.6177, -0.2709, -0.3045, +0.0210, -0.1776, -0.4536, +0.1649, -0.2888, +0.4350, -0.1234, -0.1709, +0.6012, -0.1379, +0.1058, +0.2099, +0.1295, -0.1610, +0.5732, +0.2536, -0.1817, -0.5334, -0.2342, -0.3559, -1.2544, -0.2134, +0.1990, +0.1870, +0.2777, -0.3879, -0.0687, -0.7360, +0.2378, -0.4279, +0.2044, -0.4726, -0.4034, -0.5320, -0.2669, -0.3171, +0.4192, -0.4216, +0.0522, -0.0664, +0.0688, +0.7363, -0.3306, +0.1014, +0.3431, +0.0568, -0.2514, -0.4141, -0.2745, +0.2562, -0.0783, +0.1349, +0.6979, +0.0779, -0.1075, -0.5583, +0.1625, +0.1316, -1.8610, +0.0340, +0.3986, +0.4515, -0.3720, -0.0855, -1.0875, -0.1142, +0.1738, -0.5058, +0.1128, -0.0711], -[ -0.3852, -0.3735, +0.0638, -0.2058, -0.1387, +0.1790, +0.1651, +0.3278, -0.2925, +0.4482, -0.0061, -0.1052, -0.5206, +0.3974, +0.0081, -0.2429, -0.0250, -0.0022, -0.0186, -0.2392, +0.2188, +0.3089, -0.7718, -0.0904, -0.0175, +0.1660, +0.0463, -0.0074, -0.3063, +0.3957, -0.3678, -0.5189, -0.4625, -0.5757, +0.2873, -0.0203, +0.4480, -0.3361, -0.3005, -0.0375, +0.5235, +0.4109, -0.0561, +0.1569, -0.4643, -0.2016, -0.3545, -0.1974, +0.4566, +0.2849, +0.3715, +0.0663, -0.3050, -0.3042, +0.7475, -0.6914, +0.1962, +0.4075, -0.3608, -0.7284, +0.5309, -0.2473, +0.0002, +0.6233, -0.4885, +0.0896, +0.1950, -0.7488, -0.0667, -0.2235, +0.2708, -0.0691, +0.3081, -0.2232, +0.1410, -0.6023, +0.1941, +0.0498, -0.1983, -0.5703, +0.3527, -0.1994, -0.3749, +0.1715, +0.6141, -0.0610, +0.1821, +0.5784, -0.1699, -0.4266, -0.9588, -0.1034, +0.4227, +0.5419, -0.0304, +0.1086, -0.6309, -0.2553, +0.3561, -1.1118, +0.1746, -0.0647, -0.1740, -0.4295, -0.1849, -0.2218, -0.0477, +0.0201, +0.3101, -0.0506, +0.3968, +0.6436, +0.2850, -0.2524, -0.2258, -0.8994, -0.4539, +0.0993, +0.3544, +0.1710, -0.0162, -0.4533, -0.5783, +0.2602, -0.1940, -2.1860, -0.3078, -0.3674], -[ -0.6552, -0.3868, -0.6288, +0.2176, +0.4725, +0.5683, -0.2410, +0.3694, +0.2838, +0.7928, +0.3331, +0.2356, +0.2611, +0.1777, -0.0846, -0.0855, -0.3060, -0.3177, +0.2807, -0.1321, -0.4913, -0.2363, +0.3949, -0.0650, +0.2539, -0.3134, +0.4517, -0.1537, -0.0995, +0.0209, +0.3712, +0.4247, +0.0114, +0.4586, -0.0109, +0.0741, +0.4315, -0.2606, +0.1369, +0.0905, -0.6140, -0.7373, -0.2854, +0.2632, -0.6184, +0.2735, +0.1845, +0.3038, +0.0372, +0.0182, -0.4823, +0.2602, -0.3115, -0.4512, -0.4972, -0.5447, +0.3565, +0.2499, +0.0162, -0.3015, +0.2542, +0.4983, -0.2062, -0.0407, -0.6884, +0.3166, -0.2311, -0.2615, +0.3168, +0.0906, +0.0990, +0.2428, -0.3395, -0.2632, -0.0788, -0.4314, -0.2384, -0.1895, +0.5441, +0.2410, -0.6152, +0.3858, -0.3564, -0.4298, +0.2767, -0.4187, +0.4862, +0.2936, -0.3714, -0.0478, -0.2696, -0.4347, +0.2950, -0.9883, -0.4281, -0.2427, +0.2263, -0.3410, -0.3669, +0.0227, -0.3337, -0.1583, -0.7510, +0.5048, -0.6995, -0.4888, +0.3527, +0.5552, +0.1173, -0.2252, +0.3627, +0.0220, -0.1689, -0.2173, +0.3013, +0.2511, +0.0198, -0.3045, +0.1635, -0.9513, +0.4380, -0.2594, +0.1048, +0.4432, -0.1888, +0.5426, -0.5641, +0.2111], -[ +0.0973, +0.0841, +0.1147, +0.2814, -0.2355, -0.0967, +0.2502, +0.2934, +0.4057, -0.0425, -0.3278, +0.0347, -0.2757, +0.2672, +0.0002, +0.1903, -0.3170, -0.0421, +0.1419, +0.0147, +0.7534, +0.0988, -0.3733, -0.0043, -0.2983, -0.6942, +0.0509, +0.1471, -0.1294, +0.1821, -0.3443, +0.4323, -0.1745, +0.5506, -0.7340, -1.9664, -0.4595, -0.2824, -0.2688, -0.1383, +0.1311, -0.4547, +0.1303, -0.8574, -0.0211, +0.1613, +0.2282, +0.0342, +0.2303, +0.0478, +0.1441, +0.2598, -0.8493, -1.7155, -0.1521, -0.2165, +0.0826, +0.1113, -0.3752, +0.0026, -0.6075, +0.0669, +0.0958, +0.1309, -0.9300, -0.0445, +0.3350, +0.3002, +0.5349, +0.6168, +0.1931, +0.0167, +0.3185, -0.1184, -0.4424, +0.3838, +0.1024, +0.1003, -0.0568, -0.1541, +0.2014, +0.4762, -0.2041, +0.1780, -0.8367, +0.1260, -0.3123, +0.3712, -0.2127, -0.0071, +0.0635, +0.1627, -0.2719, +0.1123, +0.0649, -0.3944, -0.4803, +0.2325, +0.2628, -0.6993, +0.3576, +0.0410, -0.0450, +0.4077, +0.1025, -0.3707, +0.1049, +0.3751, +0.1417, -0.7118, +0.2875, -0.3480, +0.1334, +0.1388, -0.4286, +0.0861, -0.3449, +0.0972, -0.9309, -0.1145, +0.0024, -0.0280, -0.0162, +0.0166, +0.2672, +0.0606, -0.3969, +0.2620], -[ +0.0533, +0.1536, +0.2714, +0.4240, -0.7754, -0.7559, +0.2523, +0.2215, +0.1819, -0.0838, -0.1221, -0.3262, -0.0089, +0.0501, -0.4071, -0.0265, -0.3460, -0.1274, +0.1677, -0.1382, +0.3722, +0.0757, +0.1724, +0.0384, -0.4072, +0.7320, +0.4219, +0.2052, -0.0782, +0.0795, +0.6575, +0.1005, +0.1038, +0.3533, -0.2853, -0.0525, +0.5782, -0.5688, -0.4942, +0.7792, -0.0725, +0.1883, +0.2230, -1.2740, +0.2185, +0.3209, -0.2178, +0.3516, -0.2590, +0.1134, -0.4599, +0.2738, +0.0966, -0.8329, -0.2535, -0.0607, +0.0163, +0.3095, -0.1734, -0.1926, -0.7599, -0.2311, +0.1572, -0.4968, +0.3691, +0.0878, -0.3228, -0.2160, -0.4732, -0.4899, -0.0264, +0.3689, +0.1720, +0.0115, -0.0659, -0.2714, -0.1852, +0.2708, +0.2946, +0.3432, -0.1540, -0.1150, +0.2064, +0.3779, -0.1385, +0.2798, -0.2698, -0.2541, +0.4859, -1.1034, -0.1002, +0.2034, -0.9110, -0.0807, -0.3470, -0.3510, -0.2584, +0.2062, +0.0512, -0.3211, +0.2420, +0.2356, -0.0058, +0.3538, -0.5367, +0.0896, -0.2707, -0.9179, +0.2110, +0.2646, -1.4166, -0.3210, -0.6915, +0.0234, -0.0217, +0.2701, +0.2075, +0.2976, +0.9529, -0.2253, -0.1989, -0.2438, +0.1914, -0.1065, -0.0730, +0.4380, +0.6377, +0.4455], -[ -0.4021, +0.2681, -0.2006, +0.2046, -0.1318, -1.2308, +0.1043, +0.2889, -0.2829, +0.0219, -0.3742, +0.2047, -0.0322, +0.0942, +0.7692, -0.0409, -0.3458, +0.1920, +0.1192, +0.3385, -0.1911, -0.2237, +0.6129, -0.2525, -0.0281, +0.0825, -0.7722, +0.0398, +0.1991, -0.2838, +0.0711, -0.6571, +0.5410, -0.4654, -0.0539, +0.2708, -0.2581, -0.7074, +0.3206, +0.0205, +0.3168, +0.0366, +0.3858, -0.5311, -0.2925, +0.2021, +0.2789, +0.1645, +0.1745, +0.3696, -0.5978, -0.3547, +0.5665, +0.1344, +0.7067, +0.0706, -0.1389, +0.7119, +0.2761, +0.0405, +0.0304, -0.1562, -0.5010, -0.2064, +0.1194, -0.8526, +0.5096, +0.2742, +0.4070, -0.9464, -0.4128, -0.5393, -0.5944, -0.5360, -1.4201, +0.0722, -0.3052, -0.3148, -0.0341, +0.1019, +0.0798, +0.1770, +0.0077, +0.6732, +0.1266, -0.1457, -0.6665, +0.1899, -0.9544, -0.5703, +0.5096, +0.6255, -0.6045, -0.2400, +0.0639, -0.1198, -0.9509, +0.0305, -0.3534, -0.2723, +0.2556, -1.3730, -0.2066, -0.4257, -0.2940, -0.2960, +0.1451, +0.5971, -0.0241, -0.2299, -0.4825, -0.2963, -0.2904, +0.0783, -0.1244, -1.0713, -0.2305, +0.5767, +0.6995, -0.4371, +0.5194, -0.5216, -0.3336, +0.4239, -0.0184, -0.1272, -0.5132, +0.5176], -[ +0.1702, +0.4923, +0.3577, +0.0259, +0.1129, -0.6701, -0.2344, +0.3164, +0.0781, +0.0253, +0.2116, +0.0612, -0.3451, +0.1570, -0.1011, -0.4156, -0.0358, +0.4237, -0.3444, -0.0812, -0.6044, +0.2535, +0.3898, +0.0486, -0.3161, +0.5482, -1.3547, +0.3677, -0.0415, -0.5578, +0.0190, -0.3687, +0.1715, -0.4684, +0.3849, +0.4823, -0.1181, -0.1657, +0.3766, -0.9338, +0.1973, -0.7231, +0.0924, -0.0856, -0.0678, +0.0845, -0.6968, -0.6869, -0.3660, -0.5098, -0.2324, -0.2133, +0.3277, -0.0306, -0.4527, -0.2418, -0.1699, +0.2065, +0.3890, -0.7634, +0.0247, +0.0162, -0.1064, -0.3570, +0.0265, -0.4855, +0.6123, +0.1675, +0.2167, +0.0923, -0.6022, +0.3761, -0.7815, -0.1249, +0.2060, -0.2788, -0.7628, -0.3939, -0.2949, -0.2202, +0.1019, +0.0405, -0.4521, +0.4896, +0.3826, +0.3855, -0.6628, +0.1713, +0.1582, +0.1030, -0.2631, -0.1439, -0.1981, +0.0652, -0.3978, -0.1289, -0.6837, +0.0837, -0.0250, -0.3681, +0.0306, +0.0219, +0.1697, +0.0373, -0.1909, -0.3341, +0.3026, -0.1602, +0.0034, -0.0401, -0.2930, +0.4096, -0.3496, +0.6347, -0.1363, +0.2220, -0.3672, -0.5289, -0.0292, +0.3032, +0.3278, -0.3612, +0.3595, -0.4876, -0.4427, -0.2066, -0.5566, -0.3574], -[ +0.3560, -0.0506, +0.0402, +0.3657, +0.2598, +0.2558, +0.0731, +0.1324, -0.2239, +0.1798, +0.0423, -0.8440, +0.3853, +0.3492, +0.4739, +0.5535, -0.0316, +0.8656, -0.4782, -0.1131, +0.1779, -0.0711, -0.0989, -0.0723, -0.1409, +0.1686, +0.1201, -0.6263, -0.0881, +0.3014, +0.2115, +0.6432, -0.7007, -0.7491, -0.0663, +0.1087, -0.1571, -0.6865, +0.3528, +0.1613, -0.3982, +0.5813, -0.1775, +0.0679, +0.0209, -0.3345, -0.7145, -0.3017, +0.0273, -0.5502, +0.5451, -0.0456, -0.4784, +0.1791, +0.1156, +0.0251, -0.4042, -1.0963, +0.4139, +0.3475, +0.2419, -0.1068, -0.0716, -0.1046, -0.3830, -0.2045, +0.2447, -0.0548, -0.0656, -0.1010, -0.2277, -0.9325, -0.3389, -0.4791, -0.1524, +0.3171, -0.4351, +0.0554, -1.1636, -0.5141, -0.1967, +0.2101, +0.0993, -0.3018, -0.5119, -0.2309, -0.3621, -0.2633, +0.1248, -0.0524, -0.1868, +0.4617, -0.2166, -0.0690, -0.2594, -0.1944, +0.0047, -0.2183, -0.1042, -0.2929, -0.2009, +0.3390, -0.3759, -0.3806, +0.0925, -0.3371, -0.0257, +0.2099, -0.0471, -0.1403, -0.0575, -0.3748, -0.2190, -0.2364, +0.4621, +0.1321, -0.8319, -0.4149, +0.3980, +0.5227, +0.1150, -0.1190, +0.4942, -0.0632, -0.4028, +0.2577, -0.2502, +0.6353], -[ -0.5429, -0.3038, -0.0006, +0.1894, -0.0917, -0.6595, +0.0950, -0.2538, -0.3549, -0.0948, -0.1669, -0.6709, -0.3819, -0.4335, +0.0346, +0.3354, +0.2109, +0.5923, +0.0998, +0.0677, +0.2643, +0.0227, +0.5545, +0.2093, -0.0583, +0.1907, +0.2145, +0.0240, +0.0209, +0.2068, +0.4434, +0.0327, -0.7361, +0.3672, -0.3923, -0.3328, +0.2722, +0.3395, +0.0375, +0.2320, -1.2466, +0.3293, -0.9404, +0.0047, +0.3335, -0.1321, +0.1498, +0.2976, -0.1148, -0.1265, -0.1205, -0.0114, -0.0462, +0.1856, -0.9486, +0.3689, +0.0838, -0.9048, +0.1651, -0.1919, -0.0103, +0.1596, +0.0826, +0.1920, -0.4779, -0.3829, +0.1395, -0.1448, +0.1466, +0.3728, -0.7643, +0.2059, -0.2398, -0.6130, -1.2321, +0.2389, +0.2769, -0.6450, -0.1014, -0.0400, +0.0377, +0.3493, +0.2484, -0.0715, +0.4359, -0.1650, +0.1630, -0.3667, -0.5269, -0.3323, -0.2083, +0.1537, +0.0608, -0.1030, +0.2217, +0.1818, -0.0921, -0.0136, -0.3030, -0.1432, -0.2586, -0.2821, +0.1165, +0.6734, -0.5442, -0.3665, -0.1694, +0.3529, -0.2956, -0.2634, -0.0555, -0.7387, +0.1806, +0.0168, -0.4215, +0.4731, -0.0146, -0.5210, -0.5257, +0.1198, -0.8323, -0.0919, +0.3926, +0.4224, -0.0682, -0.4814, +0.2032, +0.0434], -[ +0.2556, -0.0791, +0.0747, -0.1858, +0.3477, +0.0044, +0.2180, +0.2419, +0.2606, -0.3271, +0.3824, -0.1395, +0.0125, +0.0893, +0.5023, +0.1021, +0.2534, +0.5588, +0.6712, -0.0384, -0.2818, -0.4456, -0.3029, +0.3273, -0.0268, -0.0870, -0.3405, +0.5484, +0.2300, +0.0709, -0.0854, +0.2636, -0.2681, -0.2275, -0.1104, +0.4146, +0.2584, -0.2358, +0.1155, -0.1712, -0.1704, +0.1970, -0.1171, -0.5405, -0.0189, +0.1108, +0.0324, -0.1424, -0.3977, +0.1743, -0.3215, -0.1225, +0.0165, +0.1592, +0.0981, -0.2019, +0.0530, -0.3938, -0.1164, -0.7637, -0.0241, +0.1386, +0.3085, -0.4982, +0.0939, +0.0834, +0.2025, +0.0153, -0.0620, -0.1597, +0.3221, -0.0182, -0.5960, -0.0878, +0.1978, -0.4434, +0.0592, +0.1635, -0.1550, -0.4537, +0.3572, -0.7212, +0.0584, +0.0903, +0.3680, -0.5142, +0.5349, -0.2589, -0.1554, +0.0496, -0.0548, -0.2305, -0.2842, -0.4932, -0.0236, -0.0306, -0.2163, +0.3083, +0.1778, +0.3010, +0.3316, -0.0223, +0.0407, -0.0007, +0.2255, -0.1309, +0.0615, +0.1396, -0.3155, +0.3431, -0.1902, +0.3098, +0.3294, -0.0557, -0.1700, -0.4665, -0.0155, +0.2104, +0.3317, -0.6404, -0.1962, +0.2184, -0.0330, -0.1349, +0.1290, +0.2326, -0.1617, -0.1832], -[ +0.0021, -0.6751, +0.0523, +0.1059, +0.2440, -0.3276, -0.0205, +0.2176, +0.4863, +0.5270, -0.1124, -0.3205, -0.1555, +0.2434, -0.2352, +0.0920, -0.0968, +0.0230, -0.0842, -0.1313, +0.2168, +0.0294, -0.0406, -0.1796, -0.1899, +0.5887, +0.1075, +0.4815, +0.0449, +0.3937, +0.0992, -0.1731, -0.3336, -0.3099, -0.1959, -0.1662, -0.0359, +0.3209, +0.1756, -0.2974, -0.6861, -0.7154, -0.0191, -0.0090, +0.2314, +0.4192, +0.2789, -0.4541, -0.1620, -0.4840, -0.4412, -0.0563, +0.9200, -0.4145, -0.2174, +0.0599, +0.4678, +0.1588, +0.1240, -0.9727, +0.3058, -0.5907, +0.2806, +0.3439, -0.1440, +0.1540, +0.1499, +0.0090, -0.0325, -0.7463, -0.0274, +0.1119, +0.5477, -0.1757, -0.0722, +0.0036, +0.5354, +0.1984, +0.1440, +0.4062, -0.0505, -0.3109, +0.2831, -0.5962, -1.2692, -0.1453, -0.4405, -0.4340, -1.2043, +0.1131, +0.5420, +0.3484, -0.7740, +0.3394, -0.5312, -0.3133, -0.1165, +0.4636, +0.1428, +0.0255, -0.0001, -0.1877, -0.2283, -0.1695, +0.2882, +0.1331, -0.4255, -0.1052, -1.0019, +0.0542, -0.8235, +0.2969, +0.4224, +0.3183, +0.1209, -0.0054, +0.0355, -0.9639, +0.1322, +0.0345, +0.0036, -0.1574, -0.9893, +0.7256, -0.5273, -0.1234, -0.1296, -0.0511], -[ +0.5744, +0.5454, +0.1117, -0.2599, +0.0713, -0.5182, -0.6235, -0.0872, -0.1380, -0.2115, +0.0652, +0.6126, -0.0925, +0.1344, -0.5452, -0.7740, -2.1552, +0.0597, -0.0468, +0.0593, +0.1593, -0.0734, +0.1166, +0.3625, +0.0990, +0.0402, +0.0385, +0.2399, -0.2318, -0.2800, -0.7580, -0.4272, -0.3403, +0.0341, +0.2704, -0.2814, +0.2832, +0.0513, -0.4147, +0.3222, -0.3878, -0.4574, -0.3508, -0.5747, +0.1940, -0.2887, -0.1317, +0.1374, +0.1850, +0.0194, -0.0850, -0.0210, +0.1829, +0.3542, -0.1270, +0.1406, -1.0334, +0.2387, +0.3248, +0.5451, +0.0273, +0.0148, -0.1178, -0.2265, +0.7886, +0.5454, +0.0353, +0.4489, +0.3915, -0.2789, +0.2471, +0.1405, +0.1094, -0.3124, +0.2834, +0.7032, -0.0899, -0.0748, -0.3372, +0.1370, -0.4769, +0.1977, -0.1941, -0.3568, -0.3516, -0.2162, -0.3457, -0.1500, -0.5154, +0.1966, +0.3770, +0.0604, -0.2413, -0.0567, +0.6135, -0.3225, +0.0770, -0.2254, -0.1637, +0.5233, +0.4118, +0.3636, +0.2015, -0.0204, -0.2978, +0.2745, +0.0938, +0.0007, +0.6284, +0.7487, -0.1431, -0.9943, +0.3021, -0.1802, -0.0029, -0.1576, -0.3019, -0.2585, -0.3640, +0.2284, -0.1558, -0.1769, +0.0307, +0.4184, +0.5711, -0.0969, +0.0086, +0.8012], -[ +0.6704, +0.0290, +0.0347, +0.1915, +0.2531, -1.1686, -0.1974, +0.3107, +0.2140, +0.1814, +0.2166, +0.0401, +0.5156, -0.2028, -0.3291, +0.4242, +0.1027, -0.6091, -0.2841, -0.0450, -0.4704, -0.6388, +0.1405, -0.0387, -0.4726, +0.3689, -0.5312, +0.4508, +0.0429, -0.1695, +0.4325, +0.1784, +0.0711, +0.3098, -0.5509, +0.3805, -0.2673, -0.2850, -0.1211, +0.2673, -0.2611, -0.3702, +0.2631, -0.2876, +0.1701, -0.0282, +0.4161, -0.3310, -0.2463, -0.4081, -0.0250, +0.0862, -0.1506, +0.4761, +0.1565, -0.5536, +0.3396, +0.1268, +0.1256, -0.3686, -0.6062, -0.0750, +0.3351, -0.4074, +0.4802, -0.6884, -0.3559, +0.1600, -0.4609, -0.0188, +0.0387, +0.2496, -0.5698, +0.1169, -0.5018, +0.5424, -0.2750, +0.1582, +0.2164, -0.3198, -0.5586, +0.2399, +0.2703, -0.3774, +0.5569, +0.6549, -0.2586, +0.0158, -0.1624, +0.0664, +0.3229, -0.5206, -0.8799, -0.1398, +0.1292, -0.3830, -0.2661, -0.3914, +0.2258, +0.3733, +0.3661, +0.0682, -0.1924, +0.0091, -1.3183, +0.2167, +0.2613, +0.0807, +0.0735, -0.3367, -0.2908, +0.1507, +0.1218, -0.4830, +0.0419, +0.1181, -0.1967, -1.4442, +0.0792, -0.3212, +0.4342, -0.1018, +0.3630, +0.1392, -0.4669, -0.6899, -0.5713, +0.5091], -[ +0.5464, +0.5427, +0.1689, -0.3017, +0.3532, +0.1443, +0.2536, +0.3073, -0.1629, -0.0878, -0.5934, +0.3399, +0.6221, -0.0589, +0.0258, -0.3295, +0.4474, +0.3844, -0.0667, -0.1203, +0.2166, -0.0493, -0.2065, +0.0939, +0.0259, +0.0875, +0.2076, +0.2457, -0.5129, +0.4559, +0.5788, +0.2408, +0.6406, +0.0886, +0.0910, +0.1028, -0.3320, +0.1638, +0.2154, -0.1487, +0.6974, +0.5849, -0.2886, +0.1795, +0.2448, +0.2895, +0.2983, +0.1202, -0.3465, +0.1573, +0.6500, -0.4900, -0.0501, -0.1957, -0.5928, +0.0069, -0.1203, -0.6168, +0.6566, +0.7261, -0.4365, +0.0916, +0.5689, +0.0079, -0.1712, +0.0838, +0.2921, -0.4938, -0.0162, -0.4182, -0.5078, -0.5064, +0.4068, -0.0631, -0.2220, +0.1973, -0.0774, +0.0340, +0.2988, -0.1391, +0.1985, -1.0457, -0.3577, -0.0687, -0.3093, +0.2045, -0.6981, -0.3552, +0.2718, +0.0215, +0.4597, -0.2731, -0.6059, -0.3997, -0.0168, -0.2290, +0.2386, +0.0690, +0.0133, +0.0760, -0.0604, -0.6324, -0.6581, +0.5546, -0.4023, -0.1766, +0.3799, -0.1951, +0.5666, +0.7017, -0.6055, -0.1182, -0.0043, -0.6204, -0.1855, +0.2790, +0.1379, -0.1527, +0.0977, +0.1238, +0.1195, -0.5512, -0.1551, -0.7297, +0.1967, +0.2596, +0.0285, +0.2812], -[ -0.8188, +0.5975, +0.2416, +0.0740, -0.4630, +0.5503, -0.6199, +0.0585, -0.5908, -0.2703, -0.2115, +0.0271, -0.5342, -0.2259, +0.1071, +0.3152, +0.5924, +0.3726, +0.1126, -0.4279, +0.1933, -0.4172, -0.6745, -0.2320, +0.3037, +0.3530, +0.1968, +0.0812, -0.6452, -0.0366, -0.3014, -0.3941, -0.8508, -0.0966, +0.1813, -0.1713, -0.0056, +0.6062, +0.1903, +0.1240, -0.0142, +0.4898, +0.0714, +0.6003, +0.3803, -0.0429, -0.0304, +0.2244, -0.6081, +0.5342, -0.0889, -0.2278, -0.1374, -0.2272, +0.4876, +0.4111, -0.3861, -0.1187, -0.0457, +0.7235, -0.3142, -0.2215, -0.2755, -0.5110, +0.2855, -0.6713, +0.2094, -1.0154, -0.1372, -0.1978, -0.2837, -0.9447, -0.7330, +0.2223, +0.3016, -0.1966, +0.0113, +0.7745, +0.1779, -0.2574, +0.0095, -0.4768, +0.2539, -0.4158, +0.0463, -1.0268, +0.1749, -0.4352, -0.0134, +0.3051, +0.5599, +0.2465, -0.3308, -0.2280, +0.9084, +0.4583, +0.2492, -0.6017, +0.1266, -1.4950, -0.0930, +0.1703, -0.2174, -0.3054, +0.2004, -0.4438, +0.1843, -0.0751, +0.0316, -0.1712, -0.0398, +0.1673, -0.7702, -0.4706, +0.3087, +0.4679, -0.4708, -0.4651, +0.0512, +0.8352, +0.0723, +0.2258, +0.1004, +0.0513, -0.2978, -0.3755, -0.4626, -0.1858], -[ -0.7606, -0.5668, +0.2582, +0.0036, -0.3178, -0.6226, -0.3565, -0.2938, -0.1336, +0.2068, -0.1166, -0.2568, -0.5189, -0.0386, -0.3601, -0.0040, -0.1694, -0.6455, -0.2561, -0.3864, -0.3729, -0.2999, -0.3114, +0.2016, +0.2998, +0.1890, +0.0215, -0.1063, -0.7147, +0.2364, -0.8687, -0.2902, -0.0018, -0.3901, -0.3080, +0.0917, +0.5417, +0.0218, -0.4878, +0.0018, -0.4176, -0.3061, +0.2726, +0.8053, +0.1546, +0.3936, +0.2059, +0.4780, -0.2867, -0.0794, -0.4937, -0.4285, +0.0858, -0.2963, -0.1675, +0.1363, -0.2240, +0.1647, +0.2431, +0.4044, -0.3482, -0.1751, -0.6071, +0.1183, +0.1565, +0.2314, +0.1937, +0.0480, -0.0091, -0.6413, +0.2345, -0.4357, +0.1082, -0.1493, -0.0134, +0.1959, -0.0550, +0.3989, -0.7451, +0.0783, -0.4285, +0.4801, +0.4432, -0.2380, -0.3344, -0.1780, -0.1636, -0.4357, +0.4277, +0.1155, +0.1960, +0.0088, +0.3165, -0.2548, -0.1743, -0.0029, -0.6816, -0.3039, -0.0442, -0.5064, +0.6467, -0.7686, +0.2946, -0.4771, -0.0728, -0.2675, +0.2532, -0.5424, -0.1021, +0.2010, -0.3391, -0.2151, +0.5185, +0.0014, +0.2236, +0.1143, +0.1782, +0.3343, +0.0042, -0.0506, +0.2860, +0.1468, +0.5558, -0.3872, -0.4224, +0.1659, -0.6391, +0.3624], -[ +0.0721, -0.1080, +0.1892, +0.2311, +0.2064, -0.0344, +0.5564, +0.0590, +0.1878, -0.3884, -0.2850, +0.1693, +0.1482, -0.2991, -0.1818, +0.4306, +0.0532, -0.0369, +0.3980, -0.2030, +0.1611, +0.2151, -0.1614, -0.2861, +0.3663, -0.4965, +0.0240, +0.1010, -0.2752, +0.2781, +0.1477, +0.1601, -0.2036, -0.0119, +0.4401, -0.4325, -0.4391, -0.0801, +0.0770, -0.3357, +0.0196, -0.3485, +0.2609, -0.3610, +0.0302, -0.0619, -0.0414, +0.0568, -0.0395, -0.3607, +0.2906, +0.0093, -0.1800, +0.0360, +0.0222, +0.1157, -0.2189, +0.3096, +0.0956, +0.6005, +0.1207, -0.6535, -0.1846, -0.7127, +0.1051, +0.4203, -0.6004, +0.2083, -0.2093, -0.4533, +0.5375, +0.0554, +0.2905, +0.1804, -0.1893, -0.2406, -0.5356, -0.0012, -0.4205, +0.4007, +0.1250, -0.3373, -0.1665, +0.0732, -0.3684, -0.0901, +0.0378, -0.1972, -0.7936, +0.2668, -0.5658, -0.4680, -0.0963, +0.0844, -0.1356, -0.4486, +0.0830, -0.3389, -0.0577, -0.5183, +0.6646, +0.0109, +0.1163, +0.2274, +0.2784, -0.1671, +0.1358, -0.1440, -0.2180, +0.5088, +0.6569, -0.0330, +0.0364, -0.2462, -0.0681, +0.1706, -0.4142, +0.0211, -0.3710, -0.1329, +0.3773, +0.2254, -0.4251, +0.1729, -0.0819, +0.3076, -0.0985, +0.1144], -[ +0.1905, +0.6708, -0.0077, +0.3410, -0.2644, -0.4364, +0.3486, -0.2393, -0.4938, +0.2150, +0.0777, +0.6590, -0.0325, -0.2987, -0.3767, -0.0404, +0.0733, +0.2520, +0.0541, +0.3179, +0.3850, -0.1967, +0.3263, +0.1315, +0.1225, -0.0344, -1.7275, +0.2420, -0.2050, -0.2793, -0.4086, +0.6849, +0.1777, +0.0235, -0.4277, +0.1212, -0.3832, +0.7142, +0.0927, -0.3963, +0.4564, +0.1089, -1.7880, -0.0448, -0.3917, +0.0820, +0.1493, +0.4652, -0.3179, +0.1906, +0.1493, -0.1203, -0.2202, +0.7111, +0.2180, -0.1426, +0.1845, -0.3852, -0.0411, +0.2608, +0.0823, +0.0720, +0.2693, +0.0313, +0.5021, -0.5691, -0.0034, -0.7031, +0.4949, +0.0329, +0.2326, -0.7768, -0.1383, -0.1421, +0.6393, -0.1822, +0.1011, +0.0049, -0.1843, -0.4893, +0.1025, +0.3964, +0.4287, +0.2333, -0.4192, -0.3311, +0.1526, +0.1862, +0.2130, +0.0885, -0.3873, -0.5268, -0.8032, +0.0140, +0.5518, -0.0535, +0.3782, -0.4048, +0.2170, -1.0179, -0.0094, -0.2280, +0.2551, -0.0298, +0.1449, -0.0775, -0.3193, +0.2767, +0.1217, -0.4233, -0.3191, +0.2435, -0.4261, +0.2741, -0.4040, +0.1790, -0.6552, +0.9216, -0.1323, +0.1684, -0.3849, -0.1463, +1.0617, +0.2591, +0.0153, +0.7932, -0.1942, -0.0499], -[ -0.0754, -0.1185, -0.1724, +0.3017, +0.0137, -0.0479, +0.1666, -0.6362, -0.1743, -0.2214, +0.1641, -0.0059, +0.0720, +0.3555, -0.1401, +0.3159, +0.1346, +0.1218, -0.2594, -0.3607, -0.5345, -0.6342, -0.0629, -0.2814, -0.2460, -0.7766, -0.1884, -0.0579, +0.1833, +0.1917, +0.3020, +0.5495, +0.1742, +0.1419, -0.2985, +0.1209, +0.3765, +0.6615, -0.6849, +0.3711, -0.1265, -0.3101, -0.2170, -0.5225, -0.5147, +0.0322, +0.1061, -0.6873, -0.0672, +0.0015, +0.0492, -0.0483, -0.2708, -0.3150, +0.0943, -0.3230, -0.6624, +0.0993, +0.0364, -0.1344, +0.5453, -0.0066, -0.1402, -0.2318, +0.0833, -0.5922, +0.4825, +0.5077, +0.0078, +0.1587, +0.1008, -0.4950, -1.1554, +0.2725, +0.4337, -0.4600, -0.0656, -0.0981, -0.7648, +0.1685, +0.1398, +0.0997, -0.2046, +0.2273, +0.4726, -0.3372, -0.4490, -0.3575, -0.0480, -0.4609, -0.2729, +0.2011, +0.3320, +0.1743, -0.1195, +0.2178, +0.0129, -0.4883, +0.3694, -0.1296, -0.1110, -0.1510, -0.0084, +0.5776, +0.3881, +0.2113, +0.3369, -0.1293, -0.0106, +0.2436, -0.0008, +0.0350, -0.1982, -0.2644, -0.8887, +0.1229, +0.2134, -0.3604, -0.4202, -0.3882, +0.0904, +0.5254, -0.0271, -0.0829, +0.4095, +0.4892, -0.9827, +0.3490], -[ +0.0299, -0.4755, -0.6625, +0.2920, +0.5466, +0.5302, -0.1823, -0.6700, +0.4636, -0.1710, -0.4914, +0.2934, -0.0378, -0.5864, +0.0507, +0.3812, -0.1620, -0.7602, -0.1076, -0.0938, -0.1979, -0.0681, -0.1194, -0.1576, +0.0505, +0.6848, -0.3321, +0.0752, +0.2467, +0.0163, -0.0550, -0.3932, +0.4274, +0.3818, -0.0810, +0.1380, -0.9484, -0.3260, -0.1213, -0.0984, +0.2668, +0.1662, +0.3487, +0.0967, +0.3994, -0.8094, -0.0712, -0.2808, +0.0453, +0.3600, -0.1501, +0.1249, -0.0553, -0.0205, -0.0279, +0.2603, -0.2425, -0.5615, -0.3357, -0.4325, -0.0773, +0.3509, +0.0768, +0.2689, -0.0123, -0.2931, +0.0527, -0.6025, +0.1805, -0.8429, -0.2823, +0.1067, -0.8451, -0.2950, -0.5167, -0.1527, -0.7194, -0.7176, +0.3671, +0.1678, +0.0065, +0.1785, -0.1507, -0.9232, -0.6448, +0.3006, -0.4909, -0.0249, +0.4958, +0.3273, -0.5879, +0.2292, +0.3115, -0.0747, -0.2665, +0.1214, -0.5949, +0.0914, +0.1856, +0.1116, -0.2964, -0.1378, -0.0147, +0.2800, +0.0629, -0.5990, +0.1038, -0.2161, -0.6361, +0.1965, +0.0511, -0.1328, -0.2055, +0.6545, -0.1524, +0.3509, -0.0174, -0.1302, -0.1483, +0.3597, +0.1432, -0.2251, -0.4864, -0.8362, +0.3470, +0.4112, +0.0700, +0.3544], -[ +0.0812, +0.0481, +0.3739, -0.7106, +0.7006, +0.0655, +0.2646, +0.2699, +0.0163, -0.5764, -0.2263, -0.3861, -0.0189, +0.1491, -0.0925, +0.3999, -0.7291, +0.6350, +0.0671, -0.2601, +0.0297, -0.1518, +0.1282, -0.1899, +0.1995, -0.1637, +0.2084, -0.1684, +0.3458, +0.1567, -0.6620, -0.6746, -0.4026, +0.1165, -0.1512, -0.4030, +0.2018, +0.3718, +0.3573, -1.1932, -0.5978, +0.3912, -0.5875, -0.2481, +0.1657, -0.0382, +0.2048, -0.4262, +0.0031, -0.4739, -0.2837, +0.1910, +0.5768, -0.0812, -0.3101, -0.0399, -0.7369, +0.0928, -0.2608, -0.1192, +0.3740, -0.5654, -0.1828, -0.5398, -0.0102, -0.5408, -0.2939, -0.5720, -0.1208, -0.0188, +0.4407, -0.1243, +0.2503, +0.1650, +0.7042, -0.2545, -0.2268, -0.4537, -0.0746, -0.0525, +0.1193, +1.0507, -0.4442, -0.2844, +0.2910, -0.1103, -0.0807, +0.2262, -0.1127, +0.1682, -0.8494, +0.1644, -0.1145, +0.2660, -0.7909, -0.0400, -0.4922, +0.4244, +0.0398, +0.3367, +0.0377, -0.0183, +0.0574, -0.8686, +0.0116, -0.0658, +0.3733, -0.1707, -0.3557, +0.3867, +0.2462, +0.2284, +0.0041, +0.4959, -0.5179, -1.8320, -0.4807, -0.0729, -1.4651, -0.6016, +0.0170, -0.2123, -0.0181, +0.1942, +0.1530, -0.6151, +0.1152, +0.3839], -[ +0.0993, +0.0929, -0.1322, -0.0744, +0.0222, -0.0332, +0.2560, -0.9176, +0.0534, +0.1018, +0.3290, -0.5390, +0.0228, +0.2074, +0.2763, -0.1387, -0.5890, -0.1254, +0.2370, +0.2313, +0.3213, +0.5406, -0.0006, -0.4088, +0.0372, -0.0530, +0.0530, -0.1306, +0.0421, +0.4831, -0.3858, +0.1550, -0.1466, +0.6888, +0.0673, -0.0138, +0.1888, -0.3958, +0.1565, -0.7321, -0.3008, +0.1290, -0.5451, -0.7224, +0.0705, -0.0734, +0.2742, +0.2704, -0.1637, -0.0796, -0.5472, +0.0966, +0.1025, -0.2612, -0.6874, -0.0239, +0.5703, -0.1890, -0.3532, -0.0791, -0.1943, -0.0381, -0.8313, -0.2004, +0.2186, -0.6129, +0.6182, -0.1069, +0.5891, -0.0697, +0.1137, +0.9400, -0.1343, -0.4657, -0.2204, +0.2836, -0.7640, +0.3778, +0.1230, +0.3828, -0.4232, -0.0217, -0.0929, -0.0076, -0.2906, -0.2403, -0.4547, -0.1429, +0.4966, -0.0442, +0.1250, -0.3873, +0.4474, -0.2877, -0.1281, -0.2915, -0.3268, -0.3167, +0.1426, +0.2264, -0.0224, +0.1988, +0.1976, +0.1697, +0.0551, -0.5721, -0.1043, -0.5378, -0.1676, -0.0560, -0.3360, +0.0223, -0.1054, -0.2427, +0.2609, +0.3932, +0.3468, -0.1500, +0.0212, -0.0812, +0.1098, -0.1209, +0.0113, -0.0513, +0.1796, -0.0586, -0.0095, -0.2460], -[ -0.5266, -0.1266, -0.1184, +0.2351, -0.4704, -0.5051, +0.1081, -0.0207, -0.0344, -0.2411, -0.2147, -0.0456, +0.1556, -0.2304, -0.3289, -0.5428, +0.5817, +0.0840, +0.1781, +0.0927, -0.0884, -0.3032, -0.0912, -0.0367, -0.0465, -0.2003, -0.6370, +0.0104, +0.9390, +0.2997, +0.1758, -0.4673, -0.4033, +0.1076, +0.0606, +0.0364, -0.2504, -0.4096, -0.5367, -0.1761, -0.1843, -0.0682, +0.8414, -0.3761, +0.1020, -0.2030, +0.2671, +0.2162, +0.1685, +0.0091, +0.0327, +0.1539, -1.3010, -0.3178, +0.1913, +0.2302, -0.4472, -0.2620, -0.4581, +0.0822, -0.1167, -0.0126, -0.1063, -0.4133, +0.2774, +0.0866, -0.1875, +0.0557, +0.1693, +0.0972, -0.0374, +0.2386, -0.6718, +0.0641, -0.0072, +0.4656, -0.1374, -0.4252, +0.3263, +0.0421, -0.0771, +0.2209, -0.4222, -0.1516, +0.2287, -0.1404, +0.0811, +0.2187, -0.4200, +0.2251, -0.1524, -0.4424, +0.3974, -0.3973, +0.3023, +0.3161, -0.6412, -0.0257, +0.2327, -0.2053, +0.2879, -0.0531, +0.2864, +0.1245, -0.2194, -0.1359, -0.1999, -0.7422, +0.3623, -0.3667, -0.1567, -0.1065, +0.0293, +0.0591, -0.8939, +0.2734, +0.3980, -0.1755, +0.0218, +0.4526, -0.7169, +0.1129, -0.4763, -0.2846, -0.1148, -0.0437, +0.5809, -0.2628], -[ -0.4383, -0.3357, +0.1131, +0.1533, +0.0304, +0.2448, -0.2125, -0.1532, +0.3638, +0.4311, -0.2330, -0.0584, -0.4643, -0.2015, -0.1727, -0.7028, -0.2974, +0.0998, -0.1067, +0.3775, -0.0622, -0.4233, -0.6728, +0.1269, +0.0658, +0.1258, -0.7637, +0.4543, +0.1964, -0.6211, -0.0510, -0.3823, -0.2788, +0.2447, +0.0035, -0.7591, -0.0179, -0.0401, +0.3860, +0.2580, +0.0530, -0.1052, +0.2329, +0.2935, +0.3198, +0.1725, -0.1809, -0.1688, -0.4171, -0.7149, +0.5223, +0.3189, +0.1656, +0.2486, +0.3979, -0.1612, -0.3200, +0.2508, -0.1712, +0.1075, -0.0323, -0.0118, -0.3907, +0.2728, -0.6616, -0.4630, -0.0241, -1.1261, -0.5780, -0.4695, +0.2247, -0.3023, -0.1888, +0.2179, -0.1239, -0.1746, +0.0735, -0.0785, -0.4366, +0.2726, -0.0671, -0.3402, -0.0664, +0.1926, +0.0726, +0.2604, -0.3346, +0.0157, +0.3181, +0.0116, -0.1066, -0.3819, -0.2952, +0.5320, -0.1611, -0.4084, +0.0629, -0.3148, -0.1236, -0.0567, -0.0105, -0.0230, -0.4995, +0.3851, -0.2526, +0.4233, -0.1606, +0.1442, -0.5519, -0.2650, -0.4952, -0.0738, +0.2565, -0.1939, +0.4843, +0.2270, -0.0871, +0.4151, +0.1670, +0.8696, -0.2642, +0.4090, +0.1108, -0.0115, -0.7366, -0.1051, -0.2009, -0.3327], -[ +0.1766, +0.0238, +0.3399, -0.2054, +0.2756, -0.9280, -0.0551, -0.6549, +0.0782, -0.2986, -0.3191, +0.0091, +0.0730, +0.2201, -0.2024, -0.4008, -1.3732, +0.3264, -0.5551, -0.1774, +0.0447, -0.1754, -0.3068, -0.0145, -0.5164, +0.2825, -0.0175, +0.3060, +0.0554, -0.6470, +0.1093, +0.2544, -0.4027, -0.1749, -0.2559, -0.1374, -0.1511, -0.5665, +0.0215, -0.8826, -0.0871, +0.1882, -1.6173, +0.1608, +0.0796, -0.0701, -0.0545, -1.0748, +0.2219, +0.1743, +0.2992, -0.2165, +0.1330, -0.7192, +0.5392, -0.0151, +0.0760, -0.3523, +0.1418, -0.0381, -0.0639, -0.7568, +0.1912, +0.2767, -0.0103, +0.0802, -1.1932, +0.1689, -0.3885, +0.1465, -0.0058, +0.0280, -0.5692, +0.0729, +0.6237, +0.2586, -0.1313, -0.4298, -0.4669, +0.1702, -0.0630, +0.5620, -0.1965, -0.1654, -0.1802, +0.1820, -0.2504, +0.0136, +0.4215, -0.1267, -0.1640, +0.7713, -0.2400, -0.0408, -0.2926, +0.0101, -0.1324, -0.4926, -0.1838, +0.0583, -0.1970, -0.0785, +0.0125, -0.1087, +0.0606, +0.7466, -0.8509, +0.1065, +0.1727, +0.3003, -0.3891, +0.2493, +0.1841, +0.1063, -0.3110, -0.3369, +0.8029, -0.4843, +0.3265, +0.1710, +0.0870, -0.1792, +0.0565, -0.1335, -0.0888, +0.0646, +0.1077, +0.0697], -[ -0.0576, -0.2821, -0.1120, +0.4529, -0.7339, -0.0590, +0.2607, +0.0933, +0.0968, -0.0263, +0.3172, -0.1107, +0.3432, -0.0678, +0.0635, -0.0435, +0.3303, +0.2471, +0.1162, +0.1543, -0.4569, -0.1769, -0.5566, +0.0224, +0.3989, -0.1353, -0.6486, +0.1132, +0.3042, +0.1137, -0.2619, +0.0095, +0.3602, +0.0535, +0.1883, -0.1060, +0.0738, -0.0656, +0.0321, +0.2383, -0.2857, -0.3087, -0.2573, -0.1865, -0.2441, +0.1017, -0.1189, +0.3602, -0.4045, -0.0154, -0.1391, +0.1514, +0.4064, +0.5202, +0.2025, +0.1434, +0.5217, -0.0811, -0.4987, -0.0214, +0.0815, -0.0052, -0.9844, -0.0573, +0.6266, +0.1825, +0.2259, +0.3004, -0.2142, +0.0456, +0.0362, +0.4352, +0.3215, -0.1820, -0.1623, +0.3010, +0.2419, +0.2292, -0.1240, +0.0973, -0.1324, -0.2739, +0.2141, +0.3176, +0.1368, -0.0314, +0.5282, -0.5409, +0.4599, +0.0473, +0.3090, -0.0469, +0.0195, +0.1563, +0.5850, -0.3739, -0.3253, -0.1626, -0.5142, +0.0240, -0.0161, -0.2099, +0.2588, +0.1514, +0.2048, -0.2517, -0.0158, +0.0172, +0.2732, +0.0874, +0.2046, +0.2767, +0.2263, +0.1575, -0.2257, -0.2717, +0.1107, +0.2644, -2.5591, -0.6421, +0.0107, +0.2578, +0.2221, -0.7298, +0.1883, +0.1740, +0.4842, -0.5002], -[ +0.3017, +0.0557, -0.3182, +0.1085, -0.3543, -0.0025, -1.0935, -0.1311, -0.2245, -0.5781, -0.3161, +0.1980, -0.0807, +0.0530, -0.4581, +0.1463, +0.2410, +0.2234, -0.1506, +0.2419, +0.5596, -0.2567, -0.3907, +0.1485, -0.1662, -0.1627, +0.3845, +0.1851, +0.5256, -1.0147, -0.4306, +0.0203, -0.0748, +0.1049, -0.4001, -0.0835, +0.7031, +0.0543, +0.0452, -0.3498, -0.0005, +0.3625, -0.2175, +0.4064, -0.2014, -0.0333, +0.4823, -0.3500, -0.2745, +0.0836, +0.3126, -0.2375, +0.1063, +0.0074, +0.2623, -0.2496, -0.2324, +0.0028, +0.3787, +0.5504, +0.4678, -0.1370, +0.3506, +0.0588, -1.0162, +0.5250, +0.3417, -0.1400, -0.3019, +0.4758, -0.0693, +0.2812, -0.6527, -0.2199, -0.0427, -0.7472, -0.3723, -0.0523, +0.6125, +0.0725, +0.1395, -0.4831, -0.7091, +0.2189, -0.3348, +0.2065, -0.7841, -0.2004, -0.1483, -0.4333, +0.0071, +0.2078, +0.2421, +0.3600, +0.3446, -0.0387, -0.3599, -0.3443, -0.1172, -1.1631, +0.3868, -0.1987, -1.1464, +0.1815, -0.0663, -0.2239, -0.6414, +0.7590, -0.1019, -1.2102, +0.0622, -0.7473, -0.5102, -0.2723, +0.1663, +0.1787, -0.0770, -0.0237, +0.0850, -0.2920, +0.3858, -0.1725, -0.8682, -0.5202, -0.0030, -0.2175, +0.0519, +0.1158], -[ -0.4684, +0.1477, +0.1898, +0.3388, +0.2614, -0.0715, -0.0880, -0.8961, -0.0193, +0.2933, -0.4296, -0.2842, +0.5839, -0.4181, +0.0190, -0.3125, +0.0894, +0.2485, +0.1377, +0.2217, -0.0636, -0.1713, -0.1274, -0.0664, -0.2580, -0.4302, -1.0827, -1.0296, +0.1465, -0.0970, +0.5338, +0.1073, +0.2874, +0.0557, -0.0280, -0.0317, +0.1617, -0.9651, +0.3070, -0.1017, -0.0581, +0.0590, -0.6532, -0.2701, -0.3163, +0.2182, -0.2969, -0.2561, +0.4840, -0.4252, -0.0864, +0.1560, -0.0120, -0.2865, +0.5742, -0.4214, +0.6417, +0.1565, -0.0806, -0.1917, -0.0215, -0.3159, +0.2581, +0.4701, -0.0060, -0.6017, -0.2341, +0.1362, +0.0848, +0.0775, -0.2782, -0.1355, +0.5032, -0.0298, -0.6170, -0.1863, -0.4289, +0.0614, -0.2990, -0.0790, +0.0757, +0.3102, +0.3050, +0.1632, +0.0088, -0.1160, +0.1729, +0.1119, -1.1639, +0.3013, +0.1455, +0.3848, -0.7791, +0.4143, +0.1956, +0.4154, -0.0751, +0.3717, -0.0928, +0.4983, +0.0090, +0.0965, -0.6977, -0.1062, -0.2823, +0.4374, -0.0609, -0.1945, -0.5313, +0.2242, +0.2262, -0.1620, +0.7669, -0.3199, +0.0642, -1.2740, +0.2521, +0.2194, +0.0259, +0.3236, -0.4899, +0.0343, -0.4210, -0.6609, +0.2058, +0.2384, -0.0141, -0.1968], -[ -0.1964, +0.0540, -0.3456, -0.0722, +0.1223, +0.0895, -0.0382, +0.4078, +0.2097, +0.1988, -0.0665, -0.8473, -0.7357, -0.3674, -0.1782, -0.2291, +0.5264, -0.2146, +0.0459, +0.1409, -0.1449, -0.5711, -0.1889, -0.2283, +0.2901, -0.0105, +0.1279, +0.5014, -0.2878, -0.3956, +0.2464, -1.0309, -0.3384, +0.1180, -0.4252, -0.1693, +0.2580, +0.0092, +0.3179, -0.1336, -0.1601, -0.0762, -0.7964, -0.1194, -0.2004, -0.6346, -0.2275, -0.5109, -0.0340, -0.2015, -0.3452, +0.1314, +0.6665, -0.1202, +0.3081, -0.2560, +0.2664, -0.3507, -0.6938, -0.1815, -0.0525, -0.4692, -0.0823, +0.1922, -0.0026, +0.1340, -0.9915, -0.2188, -0.5521, +0.3518, -0.2525, +0.6707, +0.0849, -0.0486, -0.3515, +0.0670, -0.1614, +0.1927, -0.2419, -0.4486, -0.5636, +0.2022, +0.4663, +0.0156, +0.2026, +0.2046, +0.0115, -0.3566, -0.6284, -0.8076, +0.1038, +0.0474, -0.5569, +0.2043, -0.9790, -0.1146, +0.0089, +0.0812, -0.0889, -0.3979, -0.1750, -0.1767, +0.0311, -0.0978, +0.1598, +0.1897, +0.0825, -0.0315, +0.1984, +0.3692, -0.3610, +0.1622, +0.1880, +0.2810, -0.2186, -0.3877, +0.0810, -0.3814, +0.2852, -0.3815, -0.5177, -0.1773, -0.6907, -0.3787, +0.6949, +0.7417, -0.2613, +0.1286], -[ +0.0876, +0.3563, -0.3074, +0.1402, +0.0922, -0.1945, -0.9004, -0.4937, +0.0038, +0.0410, +0.3831, -0.0826, -0.2088, -0.3663, -0.4140, +0.3908, -0.8978, -0.3384, -0.2999, -0.1822, -0.0483, +0.0144, -0.0503, -0.1853, -1.2066, +0.0988, -0.4149, +0.0179, -0.8589, -0.1125, +0.3638, -0.0392, +0.4960, +0.0546, -0.1253, -0.2714, -0.5162, -0.0863, +0.4286, -0.5875, +0.3393, -0.1369, -0.8484, +0.3951, +0.3822, +0.3816, -0.1974, -0.9777, +0.1673, +0.7057, -0.1467, -0.0340, +0.1094, -0.1547, +0.3069, -0.4100, -0.2782, -0.5340, +0.3470, +0.1752, -0.1928, -0.1825, +0.4194, +0.1869, -0.3702, +0.7760, -0.4459, +0.1479, +0.1383, +0.2424, -0.1015, -0.2048, +0.3084, +0.5255, -0.2619, -0.6092, +0.0660, -0.2692, -0.3167, -0.1183, +0.2745, +0.6169, -0.0803, -0.4009, +0.0503, -0.0254, -0.3056, -0.0940, +0.4193, -0.9815, +0.3697, +0.0298, +0.0274, +0.5281, +0.6444, +0.2165, +0.3038, -0.9932, +0.2639, +0.0924, -1.2476, +0.1581, -0.2599, -0.0400, -0.1903, +0.5627, +0.1040, +0.1416, +0.3692, -0.1911, -0.1417, +0.1666, +0.0262, +0.5355, -0.3950, +0.2806, +0.0100, -0.0951, +0.0127, -0.4485, -0.1335, -0.3171, +0.7915, +0.2859, -0.1291, +0.0273, -0.5509, +0.3387], -[ -0.5033, -0.1573, -0.4703, +0.1667, -1.4374, -0.1887, -0.7721, +0.5208, +0.0817, +0.1118, -0.1522, -0.4315, -0.4366, -0.1839, +0.2116, -0.4247, -0.3132, +0.5046, -0.1738, -0.5734, -0.3908, +0.0595, -1.0282, +0.2788, -0.1383, -0.6384, +0.6854, +0.1343, -0.3629, -0.3624, +0.4862, -0.7560, -0.3522, -0.0516, +0.1845, -0.5348, -0.0697, +0.0923, -0.6148, +0.3931, -0.7170, -0.4647, -0.1973, -0.1948, -0.9703, -0.2370, -0.7425, -0.1783, +0.7946, -0.2184, +0.1664, -0.1323, +0.2485, -0.6359, +0.3925, -0.0539, +0.0618, -0.4145, +0.2198, -0.0818, -0.0955, -0.3372, -0.0728, -0.7060, +0.2504, -0.0647, +0.1284, +0.4550, +0.2405, +0.0890, -0.6473, -1.7466, +0.0831, -0.2017, +0.2779, +0.2835, +0.6408, -0.0669, -0.3407, -0.2034, -0.4288, +0.0180, -0.1214, +0.3383, -0.1925, -0.0478, +0.1553, +0.2011, +0.5128, -0.2127, +0.1685, -0.1194, +0.3367, +0.0856, +0.1162, +0.2655, +0.3235, -0.0750, +0.0442, -0.1099, +0.2376, -0.4648, -0.4213, -0.1300, -0.0451, -0.3391, +0.0075, -0.2223, +0.2680, -0.3117, +0.2457, -0.6602, +0.1388, +0.0596, +0.0402, -0.3140, +0.5581, -0.0744, +0.0510, +0.2871, +0.1843, -0.2124, +0.5160, -0.2152, -0.0783, +0.4796, -0.2973, +0.2224], -[ -0.0354, -0.0370, +0.1539, +0.0136, +0.3099, +0.1049, -0.0160, +0.2108, -0.0445, -0.5812, +0.1781, +0.0128, +0.0387, +0.2014, -0.2922, -0.1536, -0.2433, +0.5942, +0.0075, -0.2014, -0.5285, +0.3545, +0.2017, +0.5270, -0.3070, +0.1557, +0.1688, +0.1267, +0.3585, -0.0962, -0.5576, -0.8171, -0.2974, +0.3251, +0.0126, -0.0811, -0.6241, +0.0806, -0.3772, -0.1955, +0.2004, +0.2203, -0.0640, -0.3858, +0.4325, -0.0148, -0.3235, -0.4316, -0.3272, -0.2318, -0.0816, -0.0777, -0.5453, +0.1986, -0.7806, +0.1190, +0.1064, +0.1821, -0.3806, -1.4504, -0.0892, -0.5198, +0.1435, -0.6375, -0.3116, -0.2299, -0.6772, +0.2149, +0.1202, -0.0028, +0.2065, +0.1892, +0.0881, -0.8243, +0.0821, +0.2068, +0.1409, -0.1061, -0.1175, +0.1264, -0.0466, +0.2527, +0.0100, +0.0956, -0.7194, +0.1956, +0.1148, +0.5903, +0.0141, -0.2316, +0.1034, -0.4733, -0.3105, +0.3077, +0.0724, -0.0840, -0.2971, -0.2868, -0.2202, -0.5868, -0.1582, -0.0654, -0.2509, +0.0009, +0.2430, +0.2881, -0.6228, -0.0043, -0.1538, -0.1319, +0.6193, -0.4795, +0.0116, +0.2153, -0.0931, -0.3627, -0.4220, -0.3736, +0.2250, -0.2526, -0.0378, +0.0409, -0.9012, +0.0346, -0.1673, -0.2475, +0.1551, -0.2452], -[ +0.1279, +0.0231, -0.2578, +0.0535, +0.1312, -0.3002, +0.0586, +0.7869, +0.1087, +0.4187, -0.5778, +0.3477, -1.5887, +0.0523, +0.1256, -0.3605, +0.0299, +0.3422, -0.1459, +0.0000, +0.1250, -0.6722, -0.1364, -0.2483, +0.2220, -0.3690, +0.0945, -0.5710, +0.1277, -0.8747, -0.0265, -0.7052, +0.1703, +0.3398, -0.1922, +0.4056, -0.4660, -0.0354, -0.0021, -0.2254, +0.4555, -0.1222, +0.0680, +0.6184, +0.0206, +0.0026, +0.1077, -0.1189, -0.0119, +0.1882, -0.1762, -0.3264, -0.2148, -0.1403, -0.9765, +0.3518, +0.0474, -0.3669, +0.1900, -0.1842, -0.0647, +0.4240, +0.1246, +0.1041, -0.9308, -0.1273, +0.5787, -0.2915, -0.2339, -0.6213, +0.2850, +0.3852, +0.6586, +0.5325, +0.0132, -0.0696, -0.1010, -0.0644, -0.2943, +0.3956, -0.0373, -0.4098, -0.6892, -0.0766, -0.0206, -0.6383, -0.0488, -0.1768, +0.2128, +0.3334, -0.0862, +0.2220, +0.0252, -0.5442, -0.0238, +0.0326, +0.2181, -0.2633, +0.4994, +0.0390, +0.3010, -0.0107, -0.0940, -0.0826, -0.1404, -0.1094, +0.3856, +0.2604, -0.0717, -0.8181, -0.3126, +0.1801, -0.0398, -0.1096, -0.3510, -0.1939, +0.3403, -0.1394, -0.2341, +0.2982, +0.0165, +0.0220, -0.2204, +0.2010, -0.2519, +0.1256, +0.0312, +0.4244], -[ +0.4572, -0.2083, +0.3573, -0.2966, +0.0346, -0.1098, +0.3419, -0.3770, -0.4130, +0.3864, -0.2577, +0.0271, -0.3568, -0.3665, +0.0243, -0.0321, -0.3457, +0.0550, -0.1211, +0.2190, -0.0584, +0.1147, -0.2834, -0.1529, +0.0542, +0.3494, +0.1475, -0.1221, +0.1273, -0.0940, +0.1565, -0.1211, -0.7319, +0.3831, +0.0654, -0.2609, +0.4392, -0.1112, -0.3160, +0.6762, -0.5997, -0.3000, -0.4380, -0.0636, +0.2555, +0.0296, +0.1330, +0.0896, +0.1246, -0.0651, -0.2840, -0.0685, -0.0315, +0.4309, -0.7157, -0.6661, +0.0873, -0.3401, +0.2520, +0.3227, +0.2358, +0.3439, +0.0154, +0.1800, +0.3627, +0.0558, -0.2443, -0.3523, +0.2607, -0.5887, -0.5051, -0.2760, +0.6475, +0.1813, +0.6709, -0.8301, -0.5388, +0.3707, +0.1366, -0.1052, -0.0316, +0.0309, -0.0053, +0.1724, +0.4198, -0.3594, +0.2426, -0.3912, +0.3865, +0.1473, -0.0103, -0.1071, +0.0231, -0.1449, +0.2163, +0.2651, +0.7358, -0.0867, +0.3689, -0.1610, +0.3636, +0.0415, -0.0633, -0.4313, -0.1123, -0.6158, +0.2747, +0.4530, -0.1950, -0.5187, -0.3551, -0.2625, +0.3559, -0.0319, +0.0871, +0.3477, -0.2621, +0.9359, +0.1940, -0.2602, -0.3997, +0.2607, +0.1512, -1.3887, -0.5552, +0.2759, +0.0728, +0.4239], -[ +0.1575, +0.4251, -0.2306, -0.1107, -0.0732, +0.0073, -0.5614, -0.2665, -0.2657, -0.3755, -0.3006, +0.1415, -0.0254, +0.0284, +0.4157, +0.1660, -0.2409, -0.3579, +0.1697, +0.2562, +0.0807, -0.0553, -0.0688, +0.0348, -0.5864, +0.1606, +0.0739, +0.0325, +0.1290, +0.0734, -0.1411, +0.0132, -0.3312, +0.1097, +0.2632, -0.0984, +0.0223, +0.5990, +0.2827, -0.0902, +0.0693, -0.0523, -1.1136, -0.1909, +0.2823, -0.2274, -0.0644, -0.4284, -0.0078, +0.4363, -0.2747, -0.5124, +0.1668, +0.1750, +0.0220, +0.2304, +0.1983, -0.4737, +0.1147, -0.1651, +0.7103, +0.2120, +0.1439, -0.0805, -0.0558, +0.0046, +0.0438, -0.5197, -0.0748, +0.0854, +0.3370, +0.3699, -0.2744, +0.3499, +0.6797, -0.3643, +0.1194, -0.1835, -0.9158, -0.4004, +0.5290, +0.0803, -0.0478, -0.2268, +0.2703, +0.2542, +0.1261, +0.0320, -0.0602, -0.5340, -0.1381, -0.0846, -0.2664, +0.2247, -0.6963, +0.3609, +0.4312, +0.2287, +0.4006, -0.1111, -0.3616, +0.1470, -0.0228, -0.0602, -0.0009, +0.3178, +0.1156, -0.5914, +0.1794, -0.0218, -0.2090, -0.2049, +0.1232, +0.5487, -0.3955, -0.4771, -0.0570, +0.0173, +0.1523, +0.0439, -0.8733, +0.3725, +0.2463, +0.2186, +0.2376, -0.2475, +0.0287, -0.2113], -[ +0.0109, +0.2693, -0.1481, -0.1328, +0.2473, -0.1122, -0.1699, +0.1811, -0.2410, -0.0138, +0.2235, -0.1703, -0.2126, -0.4762, -0.0408, -0.1074, -0.0288, +0.3420, -0.5936, -0.4136, -1.0070, +0.2486, +0.0807, -0.0155, -0.3883, -0.1610, +0.4640, +1.0623, -0.0788, -0.0960, +0.2498, -0.2284, -1.0139, +0.0628, +0.2021, +0.1570, -0.5551, -0.2533, +0.0375, -0.1669, -0.2902, -0.2574, +0.1356, -0.1286, +0.7692, +0.6798, -0.2207, +0.0779, -1.1222, +0.2374, -0.0159, -0.0816, -0.0276, -1.0530, +0.0748, +0.0675, +0.2675, -0.3667, -0.4895, +0.0172, -0.0559, -0.6150, +0.1100, -0.0644, -0.0470, -0.1599, +0.2991, +0.0947, +0.3404, -0.0234, -0.4998, -0.0771, -0.1946, -0.0893, -0.1996, +0.3022, +0.1343, -0.2010, +0.1224, +0.0200, +0.1400, +0.1542, +0.1146, +0.3170, -0.4294, -0.0981, -0.8203, +0.5111, -0.1511, -0.0436, +0.1225, -0.1642, -0.0384, -0.5942, +0.3645, +0.1447, -0.2082, -0.3873, +0.1340, +0.0670, +0.1474, +0.0482, +0.1548, -0.5747, +0.0049, -0.1111, -0.0221, +0.4527, +0.2652, +0.3029, -0.7388, -0.3654, +0.1893, +0.3237, -0.4711, +0.0181, +0.0776, -0.2249, -0.4128, +0.1608, +0.0132, +0.3464, +0.0067, -0.1331, +0.5502, -0.2458, +0.1223, +0.3502], -[ -0.3735, -0.3271, +0.4244, -0.2156, -0.6093, +0.1128, -0.3676, +0.1714, -0.4960, -0.0225, -0.0131, -0.3583, -0.7258, -0.0990, +0.1227, +0.1498, -0.7540, -0.0142, -0.1863, +0.0446, +0.2023, -0.2842, +0.0979, +0.1361, -0.2781, -0.4364, -0.1370, -0.1996, -0.2662, +0.0832, +0.3479, +0.3959, +0.1461, -0.2436, +0.0584, +0.0692, +0.1117, -0.1518, -0.5014, -0.0215, +0.2476, +0.0808, +0.0873, -0.3014, +0.5554, +0.5271, +0.0811, +0.7718, -0.1427, +0.2151, -0.9785, -0.1577, -0.1918, +0.2673, -0.4124, -0.1738, -0.0021, -0.5098, +0.3110, -0.4035, +0.5153, -0.1287, -0.3150, -0.0011, -0.0026, -0.1838, +0.2300, -0.1943, -0.0192, -0.1923, -0.3675, +0.6433, -0.0248, +0.4446, +0.3418, -0.1286, +0.0239, -0.8841, -0.3443, -0.2052, +0.1846, +0.2941, +0.1811, -0.0423, +0.5354, -0.3300, -0.3591, +0.1410, -0.2763, -0.3190, +0.2568, +0.2597, +0.0959, +0.1940, +0.2699, -0.5179, -0.4101, -0.5316, +0.0483, +0.1623, +0.2213, +0.1518, +0.1838, -0.0269, -0.5504, +0.3491, +0.1266, +0.0174, -0.0945, +0.2044, +0.0400, -0.2924, -0.8112, -0.2745, -0.1527, +0.1019, -0.5851, -0.6068, -0.5324, -0.0495, -0.4569, +0.0811, +0.2771, +0.0828, -0.2843, +0.2317, +0.0189, -0.3571], -[ -0.1622, -0.3844, -0.0423, -0.3021, -0.7695, -0.9399, +0.3311, +0.3894, +0.2774, +0.0110, +0.0460, +0.3104, +0.2641, -0.2605, +0.0576, +0.5879, +0.5372, -0.2546, -0.6075, -0.0837, +0.5160, +0.3330, -1.0164, -0.2281, +0.4893, -0.6091, +0.3681, -0.4746, +0.3647, +0.3670, -0.3146, -0.1934, -0.0537, -0.0713, -0.1674, +0.5721, +0.0887, +0.4184, +0.2200, +0.2037, +0.0562, -0.3286, +0.3243, -0.0301, +0.7953, -0.2655, -0.2584, -0.1993, -0.1542, -0.8165, -0.1106, -0.4276, -0.6724, -0.4965, -0.4315, -0.2384, +0.6706, +0.2031, +0.7631, +0.2949, -0.3264, +0.0833, -0.0360, +0.5150, +0.8686, -0.1705, +0.0036, -0.8990, +0.3122, -0.1135, +0.3482, +0.3927, +0.1953, +0.5012, -0.7148, +0.2637, -0.1783, -0.3773, -0.0790, -0.5288, -0.1963, -1.0376, +0.1399, +0.0566, -0.3874, +0.4305, +0.2582, +0.3936, +0.0004, -0.1708, +0.3131, +0.0367, +0.3210, -0.5863, +0.0288, +0.2007, +0.2334, +0.0162, +0.0728, -0.9641, -0.1441, -0.1419, -0.2820, +0.4011, +0.3562, -0.7508, +0.1037, +0.0212, +0.1562, +0.3165, -0.2689, +0.0630, +0.3144, +0.0964, +0.1225, -0.1438, +0.1213, -0.0415, +0.3540, +0.2927, -0.0011, +0.3477, +0.5135, -0.3212, +0.0390, +0.2341, -0.1861, -0.3372], -[ +0.1884, +0.2783, -0.0994, -0.4624, +0.1275, +0.1684, -0.1372, -0.6594, -1.0064, +0.0195, -0.2343, +0.3425, +0.1335, -0.0679, +0.1759, +0.0654, +0.3169, -0.2237, -0.1097, -0.0179, -0.3969, +0.1041, +0.1509, -0.1044, +0.2633, -0.0069, -0.5766, +0.5112, +0.2667, -0.3097, -0.1778, -0.8915, +0.0456, +0.0516, -0.3854, -0.1661, -0.0131, +0.2776, +0.0160, +0.7647, -0.2479, -0.3682, -0.1775, -0.3649, -0.4587, +0.2711, -0.4860, -0.4857, +0.0460, -0.3022, +0.4770, -0.3934, -0.5203, -0.0820, -0.3286, +0.2277, +0.2945, +0.1590, +0.4714, -1.3134, +0.6419, -0.1578, +0.3172, +0.2281, -0.2347, -0.0352, +0.1481, -0.0031, -0.0453, -0.6521, -0.6720, -0.0096, -1.1254, +0.4976, +0.1851, -0.6612, -0.5037, -0.2730, +0.3226, +0.1656, +0.0094, -0.0132, +0.7611, -0.3442, -0.7594, -0.0019, +0.0365, -0.0428, +0.1030, +0.0297, -0.2964, -0.2335, +0.2439, -0.0534, -0.0896, +0.1023, +0.3578, +0.0364, +0.1688, +0.3105, +0.0445, +0.2322, +0.0632, +0.3357, +0.2566, +0.3334, +0.0841, +0.1199, +0.3532, -0.0986, +0.5894, -0.0914, +0.3051, +0.2042, +0.2392, -0.6038, +0.0148, +0.6453, -0.2690, -0.0550, +0.0411, -0.2704, +0.1211, -0.1168, -0.3485, -0.3830, -0.0657, -0.0604], -[ -0.1620, -0.5103, -1.1654, +0.4993, -0.6993, +0.0514, -0.3405, -0.6017, +0.5675, +0.1543, -0.1687, -0.7695, -0.3987, -0.0117, -0.3493, -0.8926, -0.9269, +0.4310, +0.2710, -0.3232, -0.1882, -0.0803, +0.2368, -0.2948, -0.5842, +0.3733, -0.3188, +0.4059, -0.0509, -0.4019, +0.0471, -0.9444, +0.1201, +0.1742, +0.2304, -0.2034, +0.0708, +0.2481, -0.0040, -0.4268, +0.3142, +0.4899, -0.0882, +0.3654, -0.0108, +0.0259, -0.0868, -0.0715, +0.1219, -0.1524, -0.1921, -0.1805, -0.1740, -1.0553, -0.1087, -0.3282, -0.8028, +0.1887, -0.2897, -1.0277, -0.0172, +0.0257, +0.2715, +0.1852, +0.1877, +0.2224, +0.2614, +0.2798, -1.0751, +0.2651, +0.3851, +0.3870, -0.3820, -0.0147, -0.0124, +0.1312, +0.2831, -0.3578, +0.2215, +0.0069, -0.0784, -0.5136, -0.5474, -0.1338, +0.4904, -0.0256, +0.3656, +0.0871, -0.1679, -0.6569, +0.1095, +0.1965, -0.2805, +0.3183, -0.7130, +0.1896, +0.0793, -0.0402, +0.7129, -0.2393, +0.4688, +0.1930, +0.1944, -0.4234, +0.2333, +0.2115, -0.6666, -0.4454, +0.2331, -0.0833, -0.2292, +0.1450, -0.1269, -0.1260, -0.1364, +0.3677, -0.7757, +0.1819, -0.8277, -0.0748, +0.1783, -0.3538, +0.0911, +0.2192, -0.1115, +0.3896, -0.1220, -0.1183], -[ +0.4309, +0.3219, -0.1508, +0.1538, +0.2172, -1.6762, -0.2614, -0.2892, -0.1825, +0.4179, -0.1894, +0.6429, -0.5663, -0.5206, -0.1400, -0.0248, +0.1114, -0.3351, +0.1007, -0.0774, +0.2256, -0.2594, -0.7376, -0.1170, -0.1825, -0.6889, +0.0584, +0.3387, -0.2519, +0.5086, +0.0914, +0.4326, -0.2012, +0.1039, -0.1967, -0.1933, +0.3274, +0.4582, -0.1417, -0.0970, -0.2416, -0.1291, -0.5040, +0.5732, +0.8149, -0.1737, -0.0747, +0.1922, -0.1537, -0.2533, +0.0524, -0.2236, -0.3598, -0.0207, -0.2858, -0.0323, -0.1646, +0.2799, +0.6179, +0.1940, -0.6289, -0.5683, +0.3149, +0.3894, -0.5765, +0.2455, -0.8221, +0.3023, +0.1317, -1.7439, -0.3972, +0.0944, -0.2148, -0.6704, -0.2764, -0.0723, +0.0999, -0.3733, +0.0886, -0.2699, -0.0372, -1.2933, +0.8047, -0.0363, -0.4604, -0.2524, -0.5171, -0.5884, -0.4574, +0.1878, +0.2264, -0.0635, +0.2326, -0.3412, +0.1415, -0.0852, -0.7035, -1.0148, +0.0314, -0.2532, -0.2237, -0.3069, -0.5528, -0.8472, +0.1113, +0.1895, +0.4756, +0.2397, -0.4051, -0.1759, -0.3944, -0.0529, -0.0731, -0.0351, -0.3041, +0.2320, -0.0372, -0.0643, -0.4623, -0.7008, -0.2167, -0.0166, +0.1310, -0.9820, +0.0693, -0.0166, -0.6034, -0.0888], -[ -0.0821, +0.3271, -0.1076, -0.5056, -0.5650, +0.4610, +0.1937, +0.0226, +0.2790, +0.0957, -0.3480, +0.3679, -0.4655, +0.4152, -0.0974, -0.4206, -1.0183, -0.4501, -0.3850, -0.0579, -0.7936, +0.4026, -0.1732, -0.1141, +0.0541, +0.1614, -0.7237, -0.5974, -0.5372, +0.2432, -0.8094, +0.4203, +0.0768, +0.2709, -0.4533, +0.0006, +0.1915, +0.6644, -0.2947, -0.3212, -0.2093, +0.3902, +0.0993, -1.0059, -0.2346, +0.1197, +0.3531, -0.2042, +0.3712, +0.3196, +0.1275, +0.2308, -0.1536, +0.3283, -0.4554, -0.4582, -0.4071, -0.1923, -0.0487, -0.3588, -0.1565, -0.2140, -0.1302, -0.0816, -0.3172, -0.0390, +0.2118, -0.3645, -0.5325, +0.3978, -0.1874, +0.4490, +0.8167, -0.0943, -0.1968, +0.0500, +0.0145, +0.2818, -0.0649, -0.2923, -0.0397, +0.0482, +0.4505, -0.1102, -0.2495, +0.1218, +0.1373, -0.1187, +0.3028, +0.4547, +0.1753, -0.9975, -0.0481, -0.6358, +0.0039, -0.0046, +0.4868, -0.1343, -0.2136, +0.5967, +0.1847, +0.4478, +0.2177, +0.1663, -0.0280, +0.1840, +0.2577, +0.1164, +0.3429, +0.4075, -0.2356, -0.1176, +0.0947, -0.0767, -0.0072, -0.4719, -0.5560, +0.1284, +0.3330, +0.3832, -0.3829, +0.3273, -0.4627, -0.9688, -0.5263, -0.2311, +0.1777, -0.1506], -[ +0.6345, +0.2474, -0.5758, -0.0357, +0.4349, +0.1698, -0.3770, -0.1696, -0.3422, +0.1025, -0.2551, -0.0843, -0.2839, -0.3052, +0.3331, -0.0289, -0.1996, -0.1955, -0.1219, +0.0912, +0.1443, +0.4428, +0.4788, -0.3194, -0.1416, -0.0397, +0.2113, +0.1300, -0.0522, +0.3526, -0.2361, +0.0124, +0.5634, +0.3845, -0.2141, +0.0494, -0.2428, -0.1852, -0.1163, -0.2001, -0.5708, -0.0588, +0.1053, +0.2938, -0.1496, +0.2166, -0.4032, -0.2116, +0.0019, -0.1048, -0.2472, -0.0524, -1.8671, -0.3291, -0.5523, +0.3054, +0.4599, -0.2114, -0.0007, -1.2358, -0.2537, +0.2427, +0.1344, -0.0331, +0.5765, +0.2821, -0.6925, -0.4497, +0.3961, -0.1302, +0.2498, +0.4816, -0.4924, +0.3743, -0.6828, -0.8571, +0.6860, +0.0781, +0.1566, +0.4794, +0.1012, +0.0141, -0.6435, -0.0244, -0.8925, -0.0440, +0.3078, +0.1255, -0.2231, +0.6200, -0.1792, +0.0125, -0.3214, -0.1964, +0.3368, -0.0229, +0.5284, -0.1240, +0.4270, +0.4038, -0.1907, -0.1423, +0.1299, +0.2224, +0.1476, -0.0909, -0.3631, +0.4007, +0.1609, -0.0747, +0.0464, +0.1981, +0.4062, -0.0588, -0.2392, +0.4198, +0.1555, -0.1282, -0.1871, +0.5308, -0.3023, -0.1598, -0.3243, +0.1230, -0.6312, +0.0983, +0.1217, +0.8092], -[ +0.3869, +0.0989, -0.4655, -0.1406, +0.2581, -0.4186, +0.2077, -0.2619, -0.6174, -0.0798, -0.0108, -0.1197, -0.4568, -0.5154, +0.0070, -0.1737, +0.3956, +0.2515, +0.1050, +0.1959, +0.3965, -0.1283, +0.1462, +0.0669, -0.1840, +0.4132, -0.4276, +0.3031, -0.0292, +0.0290, +0.1301, -0.5373, -0.1494, -0.1484, +0.5185, -0.1332, +0.1938, -0.3182, +0.1193, -1.1518, +0.2154, -0.1845, -0.3712, -0.2355, -0.2858, -0.2541, +0.2478, -0.4786, +0.0585, -0.0208, +0.0447, -0.0616, +0.2265, +0.3176, -0.0024, -0.1780, +0.3316, -0.5054, +0.7614, -0.9963, +0.0916, +0.2314, +0.1096, -0.1152, +0.0796, +0.1071, +0.1640, +0.0392, -0.3699, -0.0073, -0.2238, -0.2735, -0.3571, +0.1137, -0.5732, +0.3503, -0.1358, -0.0696, -0.5374, -0.0979, +0.1657, +0.1315, -0.5980, -0.1389, -0.3177, -0.0869, -0.3366, +0.2393, +0.3494, +0.3066, -0.1510, +0.1073, +0.1752, +0.2578, +0.3040, -0.1070, +0.2709, -0.0197, -0.0965, -0.3168, +0.1754, -0.2219, -0.2017, -0.3658, +0.2155, -0.6546, +0.1716, -0.1104, -0.0233, -0.2521, -0.3057, +0.0350, +0.1790, -0.0063, +0.0157, -0.0265, -0.2342, +0.2005, +0.7017, +0.2565, -0.2546, +0.5291, +0.0674, +0.2335, -0.4910, -0.1312, -0.9244, -0.0782], -[ +0.1968, -0.0336, +0.2183, +0.1350, -0.0436, -0.0040, -0.8030, +0.1446, -0.5737, -0.6169, +0.1045, +0.2183, -0.4870, -0.2167, +0.0091, -0.2603, +0.3199, -0.1955, +0.0705, +0.2016, +0.0388, -0.7603, +0.5686, -0.0113, -0.5186, -1.6743, +0.2094, -0.0171, -0.0994, +0.1521, -0.2802, +0.5745, +0.0808, +0.2256, -0.1325, +0.0967, -0.2344, +0.4173, +0.3700, +0.0489, +0.0522, +0.7520, +0.1331, +0.4316, +0.0120, +0.3328, +0.3606, +0.5317, +0.3638, +0.5120, +0.0962, +0.3103, -1.0228, -0.0429, +0.5092, -0.4390, +0.2504, -0.0693, -0.3411, -0.0808, -0.3640, -0.3213, +0.3359, -0.5842, -0.0089, +0.0007, -0.0937, +0.0758, +0.2255, -0.1747, -0.1293, -0.3565, -0.0284, -0.1868, +0.0680, +0.3551, +0.5241, +0.0876, -0.2000, +0.0983, -0.4296, +0.0387, -0.0121, -0.2743, -0.8759, -0.1130, +0.0581, +0.0338, +0.0065, +0.0571, -1.0620, -0.7069, -0.0199, +0.3407, +0.5803, -0.4465, -0.1045, -0.8555, -0.0142, +0.0114, -0.3851, +0.4331, +0.4403, -0.0320, +0.0247, -0.5574, -0.0363, -0.0358, +0.2129, +0.2321, -0.1337, -0.9251, +0.3190, -0.0830, +0.7005, -0.0384, +0.0983, +0.4273, -0.1138, -0.7136, +0.1599, +0.4182, -0.1233, -0.2493, +0.6933, -1.2416, -0.1566, -0.3268], -[ +0.2373, +0.0240, +0.0995, +0.4102, +0.1570, +0.4738, +0.1786, +0.2128, +0.4938, -0.4054, -0.1445, -0.2947, +0.3537, +0.1495, +0.2121, +0.0886, -0.7577, +0.1877, +0.2548, -0.1455, +0.3787, -0.3276, -1.0208, +0.0474, -0.0706, -0.5162, +0.5121, -0.2117, -0.0293, -0.3606, +0.3945, -0.3942, -0.8265, +0.0114, +0.3262, -0.3691, +0.2994, +0.0464, -0.2979, +0.0998, +0.4322, -0.1320, -1.2458, -0.4938, +0.0087, +0.0093, -0.1980, -0.2436, +0.6590, -0.2734, -0.1110, +0.2992, +0.3141, -0.1965, -0.0898, +0.3922, +0.3352, -0.1216, -0.2927, -0.2230, +0.0598, -0.1165, +0.1654, -0.2999, +0.1162, -0.1141, +0.0806, -1.1525, +0.2018, +0.1341, +0.0774, -1.1027, +0.0253, -0.1275, -1.2285, +0.3661, -0.0026, +0.0259, -0.0336, -0.0119, +0.3192, +0.1958, -0.0920, +0.5745, -0.8558, +0.0142, -0.0799, -0.3211, -0.8892, -0.8133, +0.2531, -0.5034, +0.1609, +0.1479, +0.2682, +0.0432, +0.2128, -0.6821, +0.0223, -0.2238, +0.4582, +0.1966, +0.0033, -0.1948, +0.2025, +0.7228, +0.3174, -0.1920, -0.7207, +0.2031, -0.2118, +0.1156, -0.0123, +0.0735, -0.5205, +0.0447, +0.0795, +0.4766, -0.4058, -1.1588, +0.1622, +0.2070, +0.0874, +0.2163, +0.1058, +0.2803, -0.1394, -0.2389], -[ +0.0635, +0.4535, -0.2229, -0.2098, -0.0853, -0.2452, +0.3127, -0.9391, -0.3500, +0.3350, -0.2714, -0.6393, +0.3531, -0.2880, +0.0291, -0.0175, +0.3346, +0.0149, +0.1530, -0.3154, -0.0754, -0.0461, +0.2085, -0.1360, -0.0981, +0.0893, -0.0586, -0.1077, +0.0272, +0.2776, +0.0597, -0.4638, -0.1058, +0.5875, +0.2661, -0.1727, -0.4309, +0.2160, -0.4162, -0.3701, +0.0030, -0.2655, +0.1134, -0.8023, -0.2089, -0.2594, -0.2744, -0.0782, -0.2544, -0.5590, +0.1346, -0.2086, +0.1901, +0.0439, +0.2557, -0.1363, +0.4727, -0.1513, -0.2420, +0.5404, +0.3291, -0.3397, +0.3305, -1.0233, -0.4513, -0.3587, -0.3301, -0.8911, +0.1983, -1.1718, -0.4501, -0.0617, +0.0198, -0.7294, +0.5622, -0.5939, +0.3173, +0.0963, -0.1122, +0.4716, +0.1199, +0.0458, -0.3254, -0.2855, -0.0366, -0.2575, +0.1304, +0.3874, +0.3468, -0.7123, -0.2255, +0.0889, +0.5430, +0.8956, +0.2153, -0.3228, -0.0358, -0.0426, +0.0545, -0.8140, -0.3286, +0.2214, -0.0018, -0.6094, -0.3161, -0.1639, -0.1885, -0.0706, -0.1968, +0.2258, +0.3467, -0.9406, -0.4589, -0.5728, +0.4271, +0.3071, -0.1599, -0.4347, -0.6009, -0.5504, +0.3507, +0.0970, -0.1068, +0.3442, +0.0560, +0.2365, +0.5785, -0.1747], -[ -0.2036, -0.5970, +0.2583, +0.0472, -0.1457, -0.0676, +0.3096, -0.0716, -0.2606, -0.0942, +0.2126, -0.0663, -0.0846, -0.2857, +0.0487, -0.1890, -0.3154, +0.0143, +0.4349, -0.2748, -0.7740, +0.2772, -0.3253, +0.2146, -0.1778, -0.1109, +0.3102, -0.4034, +0.3634, +0.0319, -0.1643, +0.3428, -0.0448, +0.0955, -0.2004, +0.3049, +0.2749, -0.0322, -0.0372, +0.2221, +0.0946, +0.2561, +0.2355, -0.0376, -0.1762, -0.1079, -0.3782, +0.0400, +0.0513, +0.3588, +0.6237, +0.4662, -0.4777, +0.2093, -0.0341, +0.1923, -0.0332, -0.1586, -0.2639, -0.2096, +0.0704, +0.0187, -0.1536, +0.0950, +0.2113, +0.0595, -0.8660, +0.0927, +0.1742, -0.6710, +0.3134, +0.1393, -0.5095, -0.0732, +0.0701, +0.1475, +0.0131, -0.2693, +0.1561, +0.3116, +0.4817, -0.0204, -0.2559, -0.1351, -0.5221, -0.4440, +0.0912, -0.4627, -0.8519, -0.1963, -0.0470, -0.5629, -0.0657, +0.1596, -0.5151, -0.0284, -0.2267, +0.0387, -0.0790, -0.2337, +0.0452, +0.2578, +0.6448, -0.9437, +0.2453, -0.2999, +0.0044, -0.3300, -0.4135, +0.1566, -0.3499, -0.4399, +0.0220, -0.0892, +0.2123, -0.4083, +0.2715, +0.0487, -0.1537, +0.1285, -0.6594, +0.1148, +0.0386, -0.2937, -0.0534, +0.1426, +0.0302, -0.4423], -[ +0.5921, -0.4769, +0.4318, +0.0194, +0.4984, +0.4691, -0.7625, -0.1894, -0.8083, +0.1915, +0.5983, -0.5194, +0.1227, -0.1888, -0.2554, -0.2372, +0.0707, -0.6331, -0.2823, +0.0264, +0.1204, +0.4609, -0.6381, -0.0147, +0.0395, +0.2234, -0.2772, +0.3688, -0.2630, -0.2987, -1.2685, +0.0584, +0.3980, +0.1261, +0.3256, +0.2811, -0.7276, +0.2894, -0.0504, +0.6000, +0.1821, -0.0217, +0.4494, +0.4250, -0.1517, -0.4183, +0.0827, -0.1085, +0.0999, +0.0382, -0.0272, -0.3082, -0.0474, -0.0431, -0.6347, +0.3838, -0.0941, -0.7571, -0.2295, +0.0526, -0.3834, +0.5192, -0.3393, +0.2692, -0.3496, +0.3314, +0.1527, +0.6491, +0.3713, +0.0359, -0.1508, +0.2588, -0.2193, +0.0149, -0.0327, -0.0952, -0.4466, +0.3591, +0.0293, -0.0524, -0.2284, +0.0684, +0.2483, +0.1335, +0.0885, +0.6033, +0.0115, -0.0487, +0.3093, -0.2789, +0.2576, -0.7735, +0.2880, -0.5770, +0.2846, -0.1707, -0.0320, -0.3331, +0.1203, -0.0837, +0.2809, -1.1783, -0.6791, +0.0219, -0.2676, -0.4475, +0.1465, +0.4046, -0.0440, +0.0247, +0.3511, +0.0477, +0.0364, -0.1000, -0.4873, +0.1623, +0.5383, +0.2177, -0.0366, -0.4874, +0.4305, -0.3930, -0.5906, -0.6344, +0.6231, -0.0170, -0.1115, +0.4076], -[ -0.0584, -0.0044, +0.1402, +0.0131, +0.4127, -0.0880, +0.1005, +0.4565, -0.2212, +0.2728, +0.2803, -0.0187, +0.2606, -0.6216, +0.4108, -0.2029, +0.3429, -0.4249, -0.0700, +0.1106, +0.2056, -0.1643, +0.0163, +0.1799, +0.0645, +0.5059, -0.4707, -0.1001, +0.3876, +0.3636, -0.3749, +0.1236, +0.0103, +0.3454, -0.2376, +0.0385, -0.0011, -1.2952, +0.5390, -0.8529, -0.4211, +0.1130, +0.2937, +0.3140, -0.0215, -0.2802, +0.1641, -0.5955, +0.0842, -0.2051, -0.0457, +0.2399, -0.4964, -0.2372, +0.0053, +0.2752, -0.1438, -0.1388, -0.0887, +0.1153, +0.1682, +0.3417, +0.1045, -0.3646, +0.3250, -0.1561, -0.8385, +0.2427, +0.0730, -0.0189, +0.0190, -0.2400, -0.1321, -0.1118, -0.9609, -0.4072, +0.1848, +0.1923, -0.7657, -0.2285, +0.1528, -0.1087, -0.0739, -0.3841, -0.2919, -0.0637, +0.1982, -0.0528, -0.6842, -0.3797, +0.1191, -0.1961, +0.1892, -0.0790, +0.4107, -0.0285, +0.3351, -0.0832, +0.2430, +0.5229, -0.1710, +0.3870, -0.0587, +0.3766, -0.2173, -0.6989, +0.4474, -0.4453, +0.0890, +0.0480, +0.1055, -0.0529, +0.3342, -0.2387, +0.2904, -0.1909, -0.8785, -0.3037, +0.0378, -0.0378, +0.1041, +0.2250, -0.0130, +0.1786, -0.4489, -0.4554, +0.0561, -0.0956] -]) - -weights_dense2_b = np.array([ +0.1300, +0.2223, +0.3961, +0.1325, -0.0810, +0.1860, +0.1747, +0.2750, +0.1809, +0.2507, +0.0435, +0.0693, +0.0709, +0.2460, +0.1931, +0.3602, +0.0542, +0.0716, +0.0995, +0.2190, +0.0197, +0.1223, +0.2020, +0.0437, +0.0739, -0.1042, +0.1696, +0.2632, +0.2812, +0.0243, +0.0007, +0.2490, +0.1558, +0.0833, +0.1922, +0.7754, +0.1143, +0.1007, +0.0943, +0.0378, -0.0588, +0.1360, +0.3393, +0.0931, +0.0114, -0.1953, +0.0319, +0.0912, +0.2437, +0.3832, +0.2825, +0.1488, +0.0861, +0.1552, -0.0165, +0.1343, +0.1220, +0.0541, -0.0575, +0.2808, +0.1205, +0.2086, +0.0719, +0.2253, +0.0590, +0.1300, +0.3292, +0.0882, +0.2421, -0.1995, +0.3078, -0.0718, +0.0593, +0.1349, +0.2359, +0.1163, +0.1434, +0.2413, +0.3847, +0.0697, +0.3280, +0.1348, +0.2057, +0.3463, +0.1280, +0.1927, +0.1427, +0.1302, +0.0504, -0.0399, -0.1547, +0.0747, +0.2222, -0.0270, +0.0794, +0.2270, +0.0286, -0.0705, +0.2760, +0.0844, +0.1395, +0.2278, +0.2300, +0.2293, +0.3164, -0.2050, +0.1745, +0.3130, +0.1971, +0.3707, -0.0405, +0.1572, +0.0035, -0.0320, +0.0208, +0.1917, +0.1499, +0.0430, +0.3086, +0.1357, -0.0754, +0.1429, +0.1132, +0.2774, +0.1550, +0.3545, -0.1275, +0.2627]) - -weights_final_w = np.array([ -[ +0.1348, +0.1251, +0.0710, -0.0631, -0.0287, +0.0245, -0.0102, +0.2053, +0.1653, +0.2592, +0.0519, -0.2120, +0.0162, -0.0060, -0.2177, -0.1663, +0.0462], -[ -0.1360, +0.4032, +0.0250, -0.1856, -0.0163, +0.1873, -0.1146, +0.1085, -0.0213, +0.0799, -0.0667, +0.0092, +0.4068, +0.0494, -0.0288, +0.3731, -0.1486], -[ +0.0635, +0.0492, -0.0318, +0.0080, -0.3467, -0.1133, +0.0146, -0.1501, -0.0443, +0.0973, -0.0370, -0.1173, +0.1595, -0.0200, +0.0899, +0.0369, +0.0347], -[ -0.0429, +0.0612, +0.1197, +0.1304, -0.0557, -0.0107, +0.1201, +0.0624, -0.0863, +0.0032, +0.1559, +0.1401, -0.0040, +0.0759, +0.0676, -0.1182, -0.0071], -[ +0.0461, +0.1110, +0.0136, +0.2103, -0.1820, +0.0319, -0.0943, +0.0429, -0.0281, +0.1836, -0.0328, -0.0587, +0.0286, -0.0273, -0.1928, -0.1117, +0.0875], -[ +0.1753, -0.0193, +0.0148, -0.0128, +0.1465, -0.0510, +0.1536, -0.2250, +0.4072, -0.0132, +0.0409, +0.2777, +0.0467, -0.0787, -0.0128, +0.0239, +0.0601], -[ +0.0914, +0.1477, +0.2266, -0.0273, +0.0937, +0.2596, +0.2663, -0.0046, -0.0474, -0.1027, -0.0668, -0.1283, +0.0975, +0.0182, +0.0150, -0.0132, +0.0145], -[ -0.1707, -0.0318, +0.0757, -0.1543, -0.1717, +0.0090, +0.0093, +0.0218, -0.0197, +0.0456, -0.0228, +0.0460, -0.1170, -0.0001, -0.1431, +0.1537, +0.0365], -[ +0.0505, +0.2629, +0.1025, -0.0631, -0.1454, +0.1343, +0.1813, +0.1696, +0.0007, -0.0735, +0.0512, +0.0762, -0.0002, +0.0186, +0.0480, +0.1222, -0.0008], -[ -0.0865, -0.0666, +0.3023, +0.3211, -0.0344, +0.0465, +0.0373, +0.0564, +0.2420, -0.1847, +0.0962, +0.1258, +0.4730, +0.0243, -0.0374, +0.0087, +0.0398], -[ -0.2086, +0.0944, -0.1026, -0.0084, -0.1052, +0.2449, +0.0758, -0.0367, +0.0058, -0.1115, +0.0254, -0.1754, +0.0459, +0.0070, -0.0552, +0.0345, +0.0747], -[ +0.0575, +0.1903, -0.1378, +0.2235, -0.1697, -0.0356, -0.0353, +0.1741, -0.1924, +0.0611, +0.0591, +0.0213, +0.0211, -0.0052, +0.0664, -0.0143, -0.0375], -[ +0.1619, +0.0321, +0.1787, -0.3088, -0.1245, +0.0332, +0.0217, -0.2111, -0.1106, +0.0137, +0.0652, +0.0298, -0.0488, +0.0517, -0.0907, +0.0809, -0.0307], -[ +0.2745, -0.0417, +0.0226, +0.1142, -0.1002, -0.1014, -0.0580, -0.2834, +0.0154, +0.0294, +0.1200, -0.0628, -0.1035, -0.0304, +0.0245, +0.0775, +0.0070], -[ -0.1164, +0.0255, -0.2600, -0.1420, -0.0942, +0.0380, -0.0542, -0.0239, +0.0655, +0.0796, -0.1112, +0.0395, -0.0013, -0.0823, +0.0754, +0.0629, -0.0467], -[ -0.0767, +0.1859, -0.1547, -0.2121, +0.0967, -0.0392, +0.1978, -0.1013, +0.1809, +0.0492, +0.1289, +0.0467, +0.1018, +0.0415, -0.0217, +0.0425, -0.0174], -[ -0.1359, -0.0943, +0.1901, +0.2065, -0.0492, -0.0624, +0.0906, +0.0978, -0.0053, -0.0201, -0.0316, +0.1755, +0.0589, +0.0875, -0.1506, -0.3120, +0.0251], -[ +0.1210, -0.0654, +0.0594, -0.0810, +0.1202, +0.1440, +0.0051, -0.0703, +0.0479, +0.0061, -0.0819, +0.2828, +0.0777, +0.0294, -0.0420, -0.1105, +0.0618], -[ +0.0821, -0.2100, -0.1230, +0.1030, -0.0280, -0.0564, +0.0199, +0.2302, +0.0915, +0.0040, +0.0813, +0.1208, -0.1292, +0.0080, -0.1172, +0.1024, +0.0206], -[ +0.0918, -0.0140, +0.0448, +0.0422, +0.0988, +0.0886, +0.0498, -0.0568, -0.0443, -0.0233, -0.0710, -0.0105, -0.1352, +0.0574, -0.2816, -0.0074, +0.0841], -[ -0.1245, -0.0563, -0.2617, +0.0566, +0.1854, +0.1419, -0.2645, +0.0549, -0.0462, +0.0373, +0.3235, -0.0050, +0.1111, -0.0616, +0.1971, -0.1370, -0.0438], -[ +0.1150, -0.1895, +0.2360, +0.1927, -0.0784, -0.0278, +0.1512, +0.0993, -0.0939, -0.0080, -0.0147, -0.1038, +0.0061, -0.0399, +0.1557, +0.1943, -0.0284], -[ +0.1411, -0.0377, +0.2652, +0.0852, +0.1379, +0.0105, -0.0378, -0.2719, +0.1271, +0.0408, -0.0626, -0.0356, -0.3110, +0.0034, +0.0823, -0.0093, +0.0530], -[ +0.0203, -0.2490, +0.0561, +0.0176, -0.1265, -0.0293, -0.1220, -0.0536, +0.0117, -0.0143, -0.1276, -0.0637, +0.0024, +0.0583, +0.0580, -0.1491, -0.0161], -[ -0.0059, +0.1754, -0.0754, -0.1286, -0.1819, +0.0728, +0.0273, +0.0488, -0.1897, +0.0705, -0.0919, +0.0709, -0.0001, -0.0252, +0.1027, +0.0228, -0.0926], -[ +0.0002, -0.2388, +0.0636, +0.1949, +0.0471, -0.0044, -0.0408, +0.1224, -0.0066, +0.1021, -0.0024, -0.2326, +0.0560, -0.1204, +0.4905, +0.0937, -0.0459], -[ +0.1003, -0.0121, -0.2381, -0.1950, +0.0463, +0.0062, -0.0544, -0.4823, +0.0486, -0.0883, +0.0089, +0.1194, +0.0121, -0.0933, +0.2807, +0.0279, -0.2083], -[ -0.0145, -0.1907, +0.0073, -0.0266, -0.1111, +0.0799, -0.1645, +0.0357, -0.1156, -0.0321, -0.0940, -0.1051, +0.0510, -0.0952, -0.3018, -0.0778, -0.0151], -[ -0.1796, +0.1090, +0.0573, +0.0367, -0.0258, +0.1075, +0.0528, -0.0434, -0.1769, -0.1293, -0.0682, +0.1602, +0.2166, +0.0533, -0.0263, -0.0745, -0.0569], -[ -0.0082, +0.0010, -0.0788, -0.0394, -0.1186, -0.0285, -0.0196, -0.0587, +0.0803, +0.0692, +0.0336, +0.2531, -0.0733, +0.0766, +0.1745, +0.0309, +0.0547], -[ -0.0901, +0.0005, +0.1748, +0.1142, +0.1663, +0.2112, +0.1538, -0.0750, +0.2496, -0.0170, -0.0130, -0.0267, +0.2196, -0.1135, -0.3636, +0.0869, +0.0829], -[ -0.2736, +0.0110, +0.0576, +0.1631, -0.1710, +0.2120, +0.1147, +0.1123, +0.1286, -0.0262, +0.1676, -0.5447, -0.2930, -0.0705, +0.4995, +0.4081, +0.0023], -[ +0.0255, +0.1566, -0.1731, -0.0527, +0.0964, -0.0132, +0.1092, -0.3208, +0.0366, -0.0220, +0.1297, +0.2455, +0.1496, +0.0343, +0.0118, -0.1274, -0.0085], -[ +0.0152, +0.1498, +0.0124, -0.1139, +0.0557, +0.0476, +0.1031, -0.2678, +0.0056, +0.0052, +0.0285, -0.1614, -0.0609, -0.0347, -0.0599, +0.2138, +0.0101], -[ +0.0855, +0.0350, -0.0808, +0.0038, +0.0160, -0.0622, -0.0287, +0.0744, -0.1144, +0.0707, -0.0207, -0.0776, +0.0819, +0.1419, +0.0820, +0.0759, +0.1286], -[ -0.0144, -0.0992, +0.1089, -0.0544, -0.0420, -0.2227, -0.0872, -0.0322, -0.0218, -0.3468, -0.1276, +0.0193, +0.0336, +0.0350, +0.0497, +0.1152, -0.1198], -[ +0.0384, +0.0283, -0.0010, -0.1056, -0.1853, -0.0186, +0.0885, +0.2531, -0.1941, +0.0185, +0.0506, -0.1506, -0.1550, +0.0190, -0.2133, +0.0806, -0.0996], -[ -0.3132, -0.0060, -0.2180, -0.0643, -0.0410, +0.0909, +0.0975, +0.1399, -0.0854, -0.1235, +0.1870, -0.0848, +0.4981, +0.1657, +0.2841, -0.0920, +0.0409], -[ +0.0729, -0.1278, -0.0866, -0.1298, +0.0940, -0.0607, +0.0216, -0.0185, +0.0491, +0.1031, -0.0025, +0.4990, -0.1613, +0.0295, -0.2587, -0.0611, +0.0050], -[ +0.0951, +0.3966, -0.1193, +0.1002, +0.3283, -0.1336, +0.0347, +0.4101, -0.5118, -0.0516, +0.1233, -0.2517, +0.2189, -0.0612, +0.1408, -0.2425, +0.1289], -[ +0.1665, +0.1093, -0.0529, +0.0205, +0.1204, +0.0026, -0.1753, -0.0638, +0.0968, +0.1182, -0.1854, +0.1095, +0.3539, +0.0249, -0.0937, -0.1374, -0.1011], -[ +0.0678, +0.0946, -0.0613, -0.1893, +0.1085, -0.0656, +0.0380, +0.0036, +0.1901, +0.0154, +0.0824, -0.1165, +0.1030, +0.0443, +0.2606, +0.0337, +0.0023], -[ -0.3247, -0.1013, +0.1995, -0.1049, -0.1128, -0.1188, +0.0021, -0.2903, +0.0179, -0.2872, +0.2087, +0.0560, -0.0537, -0.0416, -0.0536, -0.3636, +0.0561], -[ -0.2320, +0.0041, +0.0135, -0.1136, -0.2000, -0.0447, -0.0678, +0.4746, +0.0312, -0.1387, -0.1794, +0.1124, -0.2260, +0.0073, +0.0377, +0.6301, -0.0300], -[ -0.0752, +0.0127, -0.3306, +0.1408, +0.1049, +0.0095, -0.0077, +0.1629, -0.0318, +0.0098, +0.1141, +0.0256, -0.0160, +0.0298, -0.2447, -0.0885, +0.0749], -[ +0.0057, +0.0769, +0.0127, -0.1664, -0.1241, +0.0787, -0.2085, +0.0292, +0.0503, +0.1157, +0.1448, -0.1193, -0.1059, -0.0532, +0.1383, -0.1343, +0.0073], -[ +0.0559, +0.0065, -0.0331, -0.1638, +0.0370, -0.0848, +0.1908, +0.1413, -0.1400, -0.0362, +0.1623, -0.2480, +0.1481, +0.0966, -0.0646, -0.0898, +0.0045], -[ +0.0356, -0.1832, +0.1687, -0.2917, +0.1375, +0.0060, +0.1301, -0.0431, +0.0176, -0.1395, +0.1335, -0.0303, -0.1496, +0.0401, +0.3292, -0.0821, +0.0112], -[ -0.0176, -0.0380, +0.0490, +0.0411, +0.0614, -0.1551, -0.0502, +0.0987, +0.0182, +0.0119, +0.0956, +0.0184, -0.1283, -0.0524, +0.3013, +0.1058, -0.1130], -[ +0.2528, +0.1343, -0.0110, -0.0740, +0.3247, -0.0653, +0.1391, +0.0774, +0.1883, +0.1618, -0.2321, -0.0243, +0.0892, -0.1206, +0.0193, +0.1990, -0.0739], -[ -0.1056, +0.1069, +0.1874, +0.0563, -0.1573, -0.0094, -0.0902, -0.0377, +0.0379, -0.0264, +0.0187, +0.0608, +0.1263, +0.0388, -0.1496, +0.1171, -0.0773], -[ -0.0261, -0.0902, -0.0168, +0.0536, +0.1230, +0.1455, -0.2062, +0.0163, -0.1977, -0.0327, +0.1368, -0.1098, -0.0473, -0.0747, -0.0167, +0.0109, +0.0612], -[ -0.0161, -0.2067, -0.2768, +0.1271, +0.2682, +0.1083, -0.1236, +0.2100, +0.0466, +0.0076, -0.0851, -0.0009, -0.3771, +0.0117, +0.1689, -0.4181, +0.1239], -[ -0.1726, -0.1017, +0.0093, -0.0307, +0.1120, -0.0159, -0.0011, -0.0627, -0.2131, +0.0046, +0.0576, +0.1949, -0.1523, -0.3090, +0.1977, -0.0626, +0.1553], -[ -0.1158, +0.0480, -0.0033, +0.0508, -0.1076, -0.0051, +0.0138, -0.0210, +0.1198, +0.0843, -0.0513, +0.3421, -0.0954, -0.0515, +0.0958, -0.1532, +0.0468], -[ -0.0807, -0.1066, +0.1116, -0.1059, -0.0948, -0.0059, -0.0271, -0.0882, +0.0444, -0.0398, -0.0053, +0.3012, +0.1687, +0.0361, -0.0087, +0.1908, -0.0595], -[ +0.0352, +0.1027, +0.0159, -0.0085, +0.1014, +0.0146, -0.0999, +0.1242, +0.2014, +0.1019, -0.1053, -0.0067, -0.1310, +0.0849, +0.0938, +0.0402, -0.0346], -[ -0.0839, +0.1281, +0.2590, +0.0193, -0.0051, +0.0622, +0.1219, -0.1677, +0.0716, -0.0576, +0.0132, -0.0231, +0.1054, -0.0169, +0.0784, -0.0837, +0.0288], -[ +0.0027, +0.0520, -0.0175, +0.0812, +0.0648, -0.0064, -0.1052, -0.1081, +0.0010, +0.1225, -0.0206, +0.0260, +0.2084, +0.0162, -0.2161, -0.0108, -0.0079], -[ -0.1414, -0.2740, +0.0649, -0.1101, -0.0926, -0.0809, +0.1547, -0.1167, -0.2564, -0.1113, +0.0521, -0.4207, -0.1159, -0.0095, +0.1102, +0.1282, +0.0485], -[ +0.0783, +0.0754, +0.0783, -0.1382, +0.1728, +0.0235, +0.0115, +0.0463, -0.0820, +0.0699, -0.2305, +0.0010, -0.0551, -0.0911, -0.0378, +0.0355, +0.0363], -[ -0.2848, -0.0721, -0.1825, +0.1280, +0.0353, -0.0660, +0.0606, -0.0896, +0.1231, -0.1232, +0.0151, -0.0368, +0.0487, +0.0440, +0.0215, +0.0127, -0.0493], -[ +0.0249, -0.0310, -0.0751, -0.1357, -0.0434, -0.0141, +0.0559, +0.1566, +0.0345, +0.1306, +0.0038, -0.0026, -0.0693, -0.0693, -0.3278, +0.1025, +0.0387], -[ +0.0151, +0.0188, +0.0548, -0.2032, +0.2512, +0.1135, -0.0860, -0.0548, +0.2061, -0.0763, -0.0606, +0.1636, +0.0477, -0.0544, +0.1159, -0.0914, -0.0338], -[ -0.0409, -0.1760, -0.0225, -0.4375, +0.0783, +0.0534, -0.1390, -0.1269, +0.0539, -0.1419, +0.1740, +0.1029, -0.2556, -0.0071, -0.2253, +0.1412, +0.1217], -[ -0.0977, -0.0728, +0.1828, +0.0154, -0.1403, +0.0644, +0.1632, -0.1421, -0.0407, -0.0049, -0.1077, +0.1511, +0.2303, -0.0063, +0.1156, +0.0921, -0.0096], -[ +0.2404, +0.0178, -0.0942, +0.4183, -0.3948, +0.1270, -0.1020, -0.2875, -0.3795, -0.1398, +0.2265, -0.3613, +0.1242, +0.2133, +0.0097, -0.1975, -0.1380], -[ +0.1457, -0.0621, +0.2806, +0.0054, +0.0757, +0.0770, +0.0118, +0.1315, -0.0252, -0.0807, +0.1205, -0.1420, +0.0668, -0.0180, -0.1808, +0.0704, +0.0129], -[ +0.0410, -0.0182, -0.0343, -0.0510, +0.1972, -0.1686, +0.0421, -0.1738, +0.1830, +0.0215, +0.0316, -0.2062, +0.0017, -0.0203, +0.0037, -0.1407, -0.0305], -[ -0.0441, -0.1380, -0.0533, -0.0081, +0.0087, -0.0262, +0.2688, -0.0696, -0.1085, +0.0003, +0.0557, -0.2494, -0.1579, +0.0001, +0.1819, +0.0938, +0.0121], -[ +0.0178, -0.1942, -0.0069, -0.1032, -0.0627, -0.3370, -0.2284, +0.1263, +0.0255, +0.1440, +0.2799, -0.1982, -0.0846, -0.0337, -0.1445, -0.2933, +0.0600], -[ +0.1477, +0.0894, +0.0697, -0.1446, +0.0960, +0.0812, -0.0338, -0.2739, -0.1622, -0.0988, +0.1271, -0.0170, -0.1300, +0.0490, +0.1458, +0.0866, -0.0625], -[ +0.1693, +0.1157, +0.0043, +0.1981, -0.0428, -0.0190, +0.0317, -0.0719, -0.1239, -0.0876, +0.1549, -0.0712, -0.2140, +0.0706, +0.2790, +0.0054, +0.0476], -[ -0.0681, -0.1642, +0.0314, +0.1427, +0.0588, -0.0104, +0.0433, +0.0394, +0.3601, +0.0607, -0.1307, -0.0637, -0.0306, -0.0252, +0.0681, +0.1326, -0.0697], -[ +0.2063, -0.2580, -0.2790, +0.0353, +0.0436, -0.0002, -0.0580, +0.4675, -0.0472, +0.0899, +0.0258, +0.0602, -0.0405, -0.0469, -0.3682, +0.0498, -0.0091], -[ -0.1202, +0.1481, +0.0837, -0.3343, +0.0344, +0.0396, -0.1172, -0.0491, +0.1656, -0.0190, +0.0774, +0.0241, +0.2416, +0.0471, -0.0177, +0.2928, +0.0047], -[ -0.0146, -0.1908, +0.1963, +0.0876, -0.1202, +0.0329, +0.0245, +0.0038, -0.0517, -0.1536, +0.0485, +0.0548, -0.2269, -0.0694, -0.1176, +0.1348, +0.0268], -[ -0.0574, +0.0616, -0.0363, +0.0667, -0.1445, -0.0124, -0.0367, +0.0853, +0.0887, +0.0747, +0.0120, -0.2642, -0.1609, -0.0111, +0.0713, -0.1280, +0.0219], -[ +0.3311, -0.0446, +0.1301, -0.0520, +0.0775, -0.1511, +0.1216, +0.2127, -0.0957, -0.1417, -0.0512, -0.0616, -0.1306, -0.0454, +0.1495, -0.2726, +0.0896], -[ +0.0580, +0.0250, -0.0939, +0.0884, +0.1320, +0.2023, -0.0969, +0.0008, -0.0762, -0.1040, +0.0796, +0.0127, +0.0129, +0.0193, +0.1380, -0.0624, -0.0716], -[ -0.1181, -0.0244, +0.1138, +0.0375, -0.0488, +0.0119, +0.0776, +0.0296, +0.0945, +0.0976, +0.0098, -0.0445, +0.1963, -0.1070, +0.2002, +0.0055, +0.0195], -[ +0.0947, -0.0042, -0.0071, +0.1536, -0.0835, -0.3027, +0.0620, +0.0419, +0.2881, +0.1054, +0.1651, +0.0492, +0.1505, +0.0841, +0.0136, +0.0550, +0.1280], -[ -0.1120, -0.1498, +0.0583, -0.0462, -0.0350, -0.1106, -0.1225, +0.2724, +0.1006, +0.0782, +0.0989, +0.3832, +0.0023, -0.0751, -0.3040, -0.0139, -0.0952], -[ +0.0359, -0.0831, +0.1560, +0.1284, +0.1382, -0.0138, +0.0442, +0.0100, +0.2022, -0.1742, +0.1371, -0.1640, +0.0731, -0.1653, +0.0305, -0.0621, -0.0509], -[ -0.0075, -0.0340, -0.1447, -0.2961, +0.0524, +0.0860, +0.4027, -0.1112, -0.0361, +0.0165, +0.0032, -0.2114, -0.0979, -0.0612, +0.3154, -0.0186, -0.0697], -[ -0.0871, +0.2303, +0.0176, +0.0684, -0.0592, -0.0620, -0.0311, -0.1557, -0.0265, +0.0348, -0.0654, +0.0257, -0.1464, +0.0020, -0.0147, -0.0320, -0.0226], -[ +0.0409, -0.1904, -0.0388, -0.0718, -0.1725, -0.1491, +0.2042, -0.0590, +0.0662, -0.0023, +0.1071, +0.1176, -0.0084, +0.0190, +0.0344, +0.1272, +0.0004], -[ -0.2206, +0.0012, -0.0641, +0.0588, -0.0326, +0.1135, -0.0983, +0.1614, -0.0163, -0.0436, -0.0352, +0.2773, -0.0756, +0.0189, +0.1216, +0.1715, +0.0298], -[ -0.1325, -0.0980, -0.1886, -0.0184, -0.0036, +0.0136, +0.0790, +0.2301, +0.1395, +0.0364, +0.0312, +0.1193, -0.1899, -0.0087, -0.1605, +0.4227, -0.0032], -[ -0.0346, +0.1463, +0.0656, +0.3839, +0.0480, -0.0042, -0.0037, +0.2475, -0.0221, -0.0395, -0.0282, -0.0381, -0.1533, -0.0324, +0.0927, +0.1549, -0.1630], -[ -0.0071, +0.0179, -0.0250, -0.0783, +0.0261, +0.1029, +0.0641, +0.1000, +0.1363, -0.0633, +0.0394, -0.0438, +0.1504, +0.1580, -0.3543, +0.1141, +0.0085], -[ -0.1072, +0.0368, -0.0313, +0.0805, -0.1090, +0.0432, -0.0977, +0.0180, -0.0199, +0.0615, -0.0663, +0.2272, -0.0163, +0.0920, +0.2900, +0.2666, -0.1432], -[ -0.0186, -0.2230, -0.1440, -0.0249, -0.0311, -0.0975, -0.0759, -0.2189, +0.0507, +0.0880, -0.0645, -0.1068, -0.0776, -0.1139, -0.1114, +0.2259, +0.0180], -[ +0.0534, -0.1155, +0.1769, +0.1056, +0.0435, -0.1320, +0.1611, -0.1156, +0.1124, +0.0152, +0.0466, +0.0285, +0.0335, +0.0179, +0.1281, -0.0091, -0.0084], -[ +0.0326, +0.1129, +0.2744, -0.0970, +0.0234, +0.1422, -0.0463, -0.3158, +0.0798, +0.1528, -0.0829, -0.1469, -0.1150, +0.0194, -0.0284, +0.1793, +0.0353], -[ -0.0405, +0.0520, +0.0072, +0.1259, +0.0351, -0.1489, +0.1332, +0.1223, -0.1373, +0.0251, -0.1187, -0.0557, +0.0038, -0.1407, +0.0495, +0.0137, +0.0840], -[ +0.3358, +0.1290, +0.0497, -0.0773, +0.0543, -0.0315, +0.0169, +0.1724, +0.0981, +0.0560, -0.0127, -0.0856, -0.0275, -0.0152, -0.0372, -0.3582, +0.1067], -[ +0.1886, +0.0528, -0.0389, +0.2674, +0.0197, -0.0583, -0.1842, +0.0752, -0.2572, +0.3317, +0.2277, +0.0757, -0.3071, +0.1449, -0.0132, +0.0870, -0.0381], -[ +0.0729, -0.0537, -0.0319, +0.0079, -0.0093, -0.0324, +0.1329, +0.0467, -0.0820, +0.0678, -0.0456, -0.0864, +0.0547, +0.0383, -0.0104, +0.0143, -0.1784], -[ +0.0612, +0.2196, -0.1826, -0.2450, +0.0702, -0.0539, -0.0956, +0.1236, +0.1702, +0.0556, -0.1838, +0.1903, +0.0750, -0.1157, -0.2711, -0.2981, +0.0016], -[ +0.0919, +0.1090, +0.0046, +0.1169, +0.0633, +0.1465, +0.0850, -0.0925, +0.0757, +0.0325, +0.0236, +0.0167, +0.2074, +0.0147, -0.1606, -0.1924, +0.1076], -[ +0.0193, -0.1539, -0.0683, -0.0368, +0.0455, -0.0436, +0.1984, +0.0573, -0.1916, -0.1313, +0.0383, +0.1064, +0.0570, -0.0610, +0.0243, +0.0008, +0.0232], -[ -0.0722, -0.0229, -0.0253, +0.1052, +0.2345, +0.0695, +0.1638, +0.0781, +0.0265, -0.0176, -0.0871, +0.1648, -0.0950, +0.0191, -0.0753, +0.1639, -0.0376], -[ -0.0224, -0.4049, -0.2610, +0.0674, -0.0469, -0.1382, -0.0897, +0.2186, +0.0459, +0.1484, +0.0016, +0.1014, -0.5385, +0.0635, +0.2097, +0.0486, -0.1587], -[ +0.1263, +0.1960, -0.1197, +0.0465, -0.0574, +0.0373, -0.0710, -0.0335, +0.0271, -0.1064, +0.0426, +0.0188, +0.1662, -0.0327, +0.0096, -0.0089, +0.0273], -[ +0.2469, +0.1123, +0.0673, +0.0488, +0.0981, +0.0041, -0.0856, -0.1034, -0.1946, +0.0475, -0.1024, +0.4401, -0.0677, -0.0960, +0.2493, -0.1946, +0.1310], -[ -0.1485, -0.0634, -0.1146, -0.0641, +0.0929, -0.1612, +0.0226, -0.0419, -0.0219, +0.0893, +0.0212, +0.0905, +0.0056, +0.0128, -0.0883, -0.2061, +0.0375], -[ -0.2935, +0.1826, +0.2144, -0.2204, -0.1914, +0.0536, -0.0809, +0.0557, -0.0111, +0.0132, -0.1359, +0.1159, -0.1095, +0.0045, +0.0570, +0.1009, +0.1631], -[ -0.1727, +0.0668, +0.0211, +0.3416, -0.1583, +0.0386, +0.0247, +0.0259, +0.0216, +0.0358, +0.0761, -0.0240, +0.0095, -0.0120, +0.2083, -0.0185, -0.0493], -[ -0.0349, -0.1130, -0.1097, +0.0951, -0.0518, -0.0879, -0.1616, +0.0229, -0.0259, +0.0254, +0.1471, +0.0592, +0.0461, -0.0950, +0.0371, +0.1193, -0.0912], -[ +0.0785, -0.0825, -0.0057, +0.2751, +0.3460, -0.0106, -0.1570, -0.1049, -0.0482, +0.1114, -0.0405, -0.0593, -0.3290, -0.0104, +0.1938, +0.0299, +0.2644], -[ +0.0164, +0.0318, +0.1551, -0.1538, +0.0227, +0.3190, -0.0576, +0.0740, +0.1960, -0.0389, -0.2530, +0.0713, +0.0203, +0.0967, -0.2231, -0.2100, +0.0316], -[ +0.1966, +0.0499, +0.0592, -0.0736, -0.0034, +0.0180, -0.0334, -0.0011, -0.1159, -0.0690, +0.0051, +0.0784, -0.1682, -0.0564, -0.0461, -0.1718, -0.0381], -[ +0.1531, +0.1698, -0.1502, -0.0035, +0.0019, +0.0659, +0.1947, +0.0548, +0.0498, +0.1471, -0.1339, -0.0625, -0.0946, +0.0486, +0.0895, -0.1978, +0.0985], -[ -0.0320, -0.2295, +0.0906, +0.1002, -0.0495, -0.0514, -0.0934, +0.2554, -0.0439, -0.0111, +0.0594, +0.1549, -0.1278, -0.0976, -0.1272, -0.0632, -0.0180], -[ -0.0656, -0.0047, +0.2296, +0.0885, +0.0737, +0.1820, +0.0183, +0.1358, +0.0533, -0.0698, +0.0099, -0.4228, +0.1105, +0.0633, +0.0974, +0.2930, +0.0429], -[ +0.3213, +0.0411, -0.0745, +0.1379, +0.0665, -0.0307, -0.0344, -0.1780, -0.0709, +0.0162, +0.0987, +0.2382, -0.4267, -0.1311, +0.1188, -0.0309, +0.0662], -[ -0.1400, +0.2820, -0.5476, -0.0181, -0.0296, +0.2075, +0.0399, -0.3924, +0.2349, -0.1292, +0.1444, -0.1467, -0.1258, -0.0158, -0.1998, -0.3104, +0.0850], -[ -0.0799, -0.1662, -0.1601, +0.1563, -0.0231, -0.0964, -0.0248, +0.2006, +0.1453, +0.0112, -0.0774, -0.5485, +0.1410, -0.0945, -0.0292, +0.0719, +0.0483], -[ -0.2201, +0.1461, -0.0745, -0.2211, -0.0000, -0.0198, -0.1208, +0.1615, +0.1395, +0.1465, -0.1173, -0.2532, +0.0958, -0.0275, +0.1346, -0.0137, -0.0127], -[ -0.1908, +0.0750, +0.1543, +0.0228, -0.0571, +0.0799, -0.2258, -0.0271, +0.0081, -0.1902, +0.1052, -0.1986, +0.1248, +0.0418, -0.0133, +0.1171, +0.0472], -[ -0.2040, -0.0557, -0.0722, -0.1445, +0.0156, +0.1891, +0.0955, -0.0285, -0.1019, -0.0992, -0.0779, -0.0932, +0.0876, +0.0406, +0.0799, -0.1262, +0.0287], -[ -0.1071, +0.1231, +0.0341, -0.0368, -0.0547, +0.0821, -0.3169, -0.5317, -0.1497, +0.1392, -0.1053, -0.1912, +0.1010, +0.0701, -0.0050, -0.4231, +0.2909], -[ -0.1192, -0.0990, -0.4742, +0.3497, +0.0248, +0.0865, -0.0344, -0.1767, +0.1023, -0.1990, +0.1828, -0.3244, -0.0911, -0.0089, +0.3538, -0.0028, +0.0270], -[ -0.2637, +0.1491, -0.0371, +0.0522, +0.0534, +0.0268, +0.1495, -0.0266, +0.1324, +0.0095, +0.1709, -0.1475, +0.0573, -0.0155, -0.1794, +0.0861, -0.0620], -[ +0.0180, -0.2800, -0.2942, +0.1538, +0.0985, +0.0391, -0.0112, +0.4949, -0.0249, -0.1537, +0.0212, -0.2548, +0.0814, -0.0266, -0.1613, +0.1105, +0.0600], -[ +0.1630, +0.0329, -0.0014, -0.0889, +0.0208, -0.0103, +0.0180, +0.0633, -0.1161, +0.1783, +0.0592, +0.3379, -0.1736, -0.0558, +0.0594, -0.2132, -0.0412], -[ +0.1180, -0.1187, +0.2076, -0.0128, +0.0391, +0.0579, +0.0092, -0.0447, -0.2690, -0.1102, +0.0809, +0.0220, +0.2043, -0.0115, -0.1425, -0.2108, -0.0845] -]) - -weights_final_b = np.array([ -0.1719, +0.1668, +0.1888, -0.0969, +0.2267, +0.2369, +0.0820, -0.1135, +0.2240, +0.2068, +0.1641, -0.0201, +0.0317, -0.0107, -0.1923, +0.0788, -0.0850]) - -if __name__=="__main__": - main() diff --git a/examples/pybullet/gym/pybullet_envs/scene_stadium.py b/examples/pybullet/gym/pybullet_envs/scene_stadium.py index 2b30ec48b..6e64ff623 100644 --- a/examples/pybullet/gym/pybullet_envs/scene_stadium.py +++ b/examples/pybullet/gym/pybullet_envs/scene_stadium.py @@ -32,6 +32,9 @@ class StadiumScene(Scene): # for i in self.ground_plane_mjcf: p.changeDynamics(i,-1,lateralFriction=0.8, restitution=0.5) + p.changeVisualShape(i,-1,rgbaColor=[1,1,1,0.8]) + p.configureDebugVisualizer(p.COV_ENABLE_PLANAR_REFLECTION,1) + # for j in range(p.getNumJoints(i)): # p.changeDynamics(i,j,lateralFriction=0) #despite the name (stadium_no_collision), it DID have collision, so don't add duplicate ground From 698b20938f93e1aa63befcd44ce7283c948835d0 Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Wed, 11 Apr 2018 10:09:03 -0700 Subject: [PATCH 37/68] fix a number of issues in a series of new Minitaur environments add them to pybullet_envs through __init__.py id='MinitaurReactiveEnv-v0', id='MinitaurTrottingEnv-v0', id='MinitaurBallGymEnv-v0', id='MinitaurStandGymEnv-v0', id='MinitaurAlternatingLegsEnv-v0', id='MinitaurFourLegStandEnv-v0', disable reflection of minitaur_four_leg_stand_env, since the floor changes orientation (reflection is a fixed plane with [0,0,1] normal) from pybullet_envs.minitaur.envs.minitaur_alternating_legs_env import MinitaurAlternatingLegsEnv from pybullet_envs.minitaur.envs.minitaur_ball_gym_env import MinitaurBallGymEnv from pybullet_envs.minitaur.envs.minitaur_randomize_terrain_gym_env import MinitaurRandomizeTerrainGymEnv from pybullet_envs.minitaur.envs.minitaur_reactive_env import MinitaurReactiveEnv from pybullet_envs.minitaur.envs.minitaur_stand_gym_env import MinitaurStandGymEnv from pybullet_envs.minitaur.envs.minitaur_trotting_env import MinitaurTrottingEnv from pybullet_envs.minitaur.envs.minitaur_four_leg_stand_env import MinitaurFourLegStandEnv --- .../pybullet/gym/pybullet_envs/__init__.py | 47 +++++++++++++++++++ .../gym/pybullet_envs/minitaur/__init__.py | 1 + .../pybullet_envs/minitaur/envs/__init__.py | 10 ++++ ...initaur_alternating_legs_env_randomizer.py | 2 +- .../minitaur_alternating_legs_env_example.py | 8 ++-- .../envs/minitaur_four_leg_stand_env.py | 3 ++ .../minitaur_four_leg_stand_env_example.py | 4 +- .../minitaur/envs/minitaur_gym_env.py | 5 ++ .../minitaur/envs/minitaur_logging.py | 2 +- .../minitaur_randomize_terrain_gym_env.py | 13 +++-- .../minitaur/envs/minitaur_stand_gym_env.py | 5 +- .../envs/minitaur_stand_gym_env_example.py | 4 +- .../minitaur/envs/minitaur_trotting_env.py | 6 +-- .../envs/minitaur_trotting_env_example.py | 6 +-- 14 files changed, 91 insertions(+), 25 deletions(-) create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/__init__.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/__init__.py diff --git a/examples/pybullet/gym/pybullet_envs/__init__.py b/examples/pybullet/gym/pybullet_envs/__init__.py index 5dddff7e9..97059fd8c 100644 --- a/examples/pybullet/gym/pybullet_envs/__init__.py +++ b/examples/pybullet/gym/pybullet_envs/__init__.py @@ -30,6 +30,53 @@ register( ) +register( + id='MinitaurReactiveEnv-v0', + entry_point='pybullet_envs.minitaur.envs:MinitaurReactiveEnv', + render=True, + timestep_limit=1000, + reward_threshold=5.0, +) + + +register( + id='MinitaurBallGymEnv-v0', + entry_point='pybullet_envs.minitaur.envs:MinitaurBallGymEnv', + timestep_limit=1000, + reward_threshold=5.0, +) + + +register( + id='MinitaurTrottingEnv-v0', + entry_point='pybullet_envs.minitaur.envs:MinitaurTrottingEnv', + timestep_limit=1000, + reward_threshold=5.0, +) + +register( + id='MinitaurStandGymEnv-v0', + entry_point='pybullet_envs.minitaur.envs:MinitaurStandGymEnv', + timestep_limit=1000, + reward_threshold=5.0, +) + +register( + id='MinitaurAlternatingLegsEnv-v0', + entry_point='pybullet_envs.minitaur.envs:MinitaurAlternatingLegsEnv', + timestep_limit=1000, + reward_threshold=5.0, +) + +register( + id='MinitaurFourLegStandEnv-v0', + entry_point='pybullet_envs.minitaur.envs:MinitaurFourLegStandEnv', + timestep_limit=1000, + reward_threshold=5.0, +) + + + register( id='RacecarBulletEnv-v0', entry_point='pybullet_envs.bullet:RacecarGymEnv', diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/__init__.py b/examples/pybullet/gym/pybullet_envs/minitaur/__init__.py new file mode 100644 index 000000000..39e44ec8a --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/__init__.py @@ -0,0 +1 @@ +import gym diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/__init__.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/__init__.py new file mode 100644 index 000000000..37def777d --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/__init__.py @@ -0,0 +1,10 @@ +from pybullet_envs.minitaur.envs.minitaur_alternating_legs_env import MinitaurAlternatingLegsEnv +from pybullet_envs.minitaur.envs.minitaur_ball_gym_env import MinitaurBallGymEnv +#from pybullet_envs.minitaur.envs.minitaur_randomize_terrain_gym_env import MinitaurRandomizeTerrainGymEnv +from pybullet_envs.minitaur.envs.minitaur_reactive_env import MinitaurReactiveEnv +from pybullet_envs.minitaur.envs.minitaur_stand_gym_env import MinitaurStandGymEnv +from pybullet_envs.minitaur.envs.minitaur_trotting_env import MinitaurTrottingEnv +from pybullet_envs.minitaur.envs.minitaur_four_leg_stand_env import MinitaurFourLegStandEnv + + + diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_alternating_legs_env_randomizer.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_alternating_legs_env_randomizer.py index 8dcb1f688..ec1a94fc0 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_alternating_legs_env_randomizer.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_alternating_legs_env_randomizer.py @@ -6,7 +6,7 @@ bent legs, desired_pitch from user input, battery voltage and motor damping. import numpy as np import tensorflow as tf -from pybullet_envs.minitaur.minitaur.envs import env_randomizer_base +from pybullet_envs.minitaur.envs import env_randomizer_base # Absolute range. NUM_LEGS = 4 diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_alternating_legs_env_example.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_alternating_legs_env_example.py index aa467133c..1ac2198d0 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_alternating_legs_env_example.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_alternating_legs_env_example.py @@ -3,7 +3,7 @@ """ import time - +import os import numpy as np import tensorflow as tf import minitaur_alternating_legs_env @@ -83,10 +83,10 @@ def hand_tuned_balance_example(log_path=None): log_path=log_path) np.random.seed(100) avg_reward = 0 - for i in xrange(episodes): + for i in range(episodes): sum_reward = 0 observation = environment.reset() - for _ in xrange(steps): + for _ in range(steps): # Sleep to prevent serial buffer overflow on microcontroller. time.sleep(0.002) action = hand_tuned_agent(observation, @@ -101,7 +101,7 @@ def hand_tuned_balance_example(log_path=None): def main(unused_argv): - hand_tuned_balance_example(log_path=FLAGS.log_path) + hand_tuned_balance_example(log_path=os.getcwd()) if __name__ == "__main__": diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_four_leg_stand_env.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_four_leg_stand_env.py index 12a792206..e7778d028 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_four_leg_stand_env.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_four_leg_stand_env.py @@ -116,6 +116,7 @@ class MinitaurFourLegStandEnv(minitaur_gym_env.MinitaurGymEnv): on_rack=on_rack, render=render, env_randomizer=env_randomizer, + reflection = False, log_path=log_path) action_dim = 4 @@ -196,6 +197,8 @@ class MinitaurFourLegStandEnv(minitaur_gym_env.MinitaurGymEnv): t = float(float(t) / float(MOVING_FLOOR_TOTAL_STEP)) ori = map(operator.add, [x * (1.0 - t) for x in self._cur_ori], [x * t for x in self._goal_ori]) + ori=list(ori) + print("ori=",ori) self._pybullet_client.resetBasePositionAndOrientation(0, [0, 0, 0], ori) if self._env_step_counter % PERTURBATION_TOTAL_STEP == 0: self._perturbation_magnitude = random.uniform(0.0, 0.0) diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_four_leg_stand_env_example.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_four_leg_stand_env_example.py index 4893c30f7..c154e879a 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_four_leg_stand_env_example.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_four_leg_stand_env_example.py @@ -40,10 +40,10 @@ def feed_forward_only_control_example(log_path=None): np.random.seed(100) avg_reward = 0 - for i in xrange(episodes): + for i in range(episodes): sum_reward = 0 observation = environment.reset() - for _ in xrange(steps): + for _ in range(steps): action = [0] * 4 uroll = kroll * observation[0] upitch = kpitch * observation[1] diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env.py index 189accae2..ba7d53f5a 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env.py @@ -92,6 +92,7 @@ class MinitaurGymEnv(gym.Env): control_time_step=None, env_randomizer=None, forward_reward_cap=float("inf"), + reflection=True, log_path=None): """Initialize the minitaur gym environment. @@ -218,6 +219,7 @@ class MinitaurGymEnv(gym.Env): self._pd_latency = pd_latency self._urdf_version = urdf_version self._ground_id = None + self._reflection = reflection self._env_randomizers = convert_to_list( env_randomizer) if env_randomizer else [] self._episode_proto = minitaur_logging_pb2.MinitaurEpisode() @@ -261,6 +263,9 @@ class MinitaurGymEnv(gym.Env): self._pybullet_client.setTimeStep(self._time_step) self._ground_id = self._pybullet_client.loadURDF( "%s/plane.urdf" % self._urdf_root) + if (self._reflection): + self._pybullet_client.changeVisualShape(self._ground_id,-1,rgbaColor=[1,1,1,0.8]) + self._pybullet_client.configureDebugVisualizer(self._pybullet_client.COV_ENABLE_PLANAR_REFLECTION,0) self._pybullet_client.setGravity(0, 0, -10) acc_motor = self._accurate_motor_model_enabled motor_protect = self._motor_overheat_protection diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py index f7022b728..0c426ff29 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py @@ -120,7 +120,7 @@ class MinitaurLogging(object): tf.gfile.MakeDirs(self._log_path) ts = time.time() time_stamp = datetime.datetime.fromtimestamp(ts).strftime( - "%Y-%m-%d-%H:%M:%S") + "%Y-%m-%d-%H%M%S") log_path = os.path.join(self._log_path, "minitaur_log_{}".format(time_stamp)) with tf.gfile.Open(log_path, "w") as f: diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_randomize_terrain_gym_env.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_randomize_terrain_gym_env.py index 4b8056175..1f30ae2f3 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_randomize_terrain_gym_env.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_randomize_terrain_gym_env.py @@ -8,13 +8,12 @@ import numpy as np from pybullet_envs.minitaur.envs import minitaur from pybullet_envs.minitaur.envs import minitaur_gym_env -flags.DEFINE_string( - 'terrain_dir', '/cns/od-d/home/brain-minitaur/terrain_obj', - 'The directory which contains terrain obj files to be used.') -flags.DEFINE_string('storage_dir', '/tmp', - 'The full path to the temporary directory to be used.') - -FLAGS = flags.FLAGS +#flags.DEFINE_string( +# 'terrain_dir', '/cns/od-d/home/brain-minitaur/terrain_obj', +# 'The directory which contains terrain obj files to be used.') +#flags.DEFINE_string('storage_dir', '/tmp', +# 'The full path to the temporary directory to be used.') +#FLAGS = flags.FLAGS class MinitaurRandomizeTerrainGymEnv(minitaur_gym_env.MinitaurGymEnv): diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_stand_gym_env.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_stand_gym_env.py index 76fa9d2ba..f2a589d40 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_stand_gym_env.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_stand_gym_env.py @@ -8,6 +8,7 @@ import time from gym import spaces import numpy as np from pybullet_envs.minitaur.envs import minitaur_gym_env +import pybullet_data ACTION_EPS = 0.01 # RANGE_OF_LEG_MOTION defines how far legs can rotate in both directions @@ -34,7 +35,7 @@ class MinitaurStandGymEnv(minitaur_gym_env.MinitaurGymEnv): } def __init__(self, - urdf_root="third_party/bullet/data", + urdf_root=pybullet_data.getDataPath(), action_repeat=1, observation_noise_stdev=minitaur_gym_env.SENSOR_NOISE_STDDEV, self_collision_enabled=True, @@ -81,7 +82,7 @@ class MinitaurStandGymEnv(minitaur_gym_env.MinitaurGymEnv): done: Whether the episode has ended. info: A dictionary that stores diagnostic information. """ - for t in xrange(5000): + for t in range(5000): if self._is_render: base_pos = self.minitaur.GetBasePosition() self._pybullet_client.resetDebugVisualizerCamera( diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_stand_gym_env_example.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_stand_gym_env_example.py index ff7ed2948..848c39d4a 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_stand_gym_env_example.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_stand_gym_env_example.py @@ -18,7 +18,7 @@ def StandUpExample(): motor_velocity_limit=np.inf) action = [0.5] _, _, done, _ = environment.step(action) - for t in xrange(steps): + for t in range(steps): # A policy that oscillates between -1 and 1 action = [math.sin(t * math.pi * 0.01)] _, _, done, _ = environment.step(action) @@ -32,4 +32,4 @@ def main(unused_argv): if __name__ == "__main__": tf.logging.set_verbosity(tf.logging.INFO) - app.run() + main("unused") diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_trotting_env.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_trotting_env.py index 3b5ff9e83..bad90e36f 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_trotting_env.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_trotting_env.py @@ -160,9 +160,9 @@ class MinitaurTrottingEnv(minitaur_gym_env.MinitaurGymEnv): """ motor_pose = np.zeros(NUM_MOTORS) for i in range(NUM_LEGS): - motor_pose[2 * i] = leg_pose[NUM_LEGS + i] - (-1)**(i / 2) * leg_pose[i] - motor_pose[2 * i - + 1] = leg_pose[NUM_LEGS + i] + (-1)**(i / 2) * leg_pose[i] + motor_pose[int(2 * i)] = leg_pose[NUM_LEGS + i] - (-1)**int(i / 2) * leg_pose[i] + motor_pose[int(2 * i + + 1)] = leg_pose[NUM_LEGS + i] + (-1)**int(i / 2) * leg_pose[i] return motor_pose def _gen_signal(self, t, phase): diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_trotting_env_example.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_trotting_env_example.py index 1edba8727..5dc57add6 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_trotting_env_example.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_trotting_env_example.py @@ -2,7 +2,7 @@ """ import time - +import os import numpy as np import tensorflow as tf from pybullet_envs.minitaur.envs import minitaur_gym_env @@ -18,14 +18,14 @@ def main(unused_argv): use_signal_in_observation=False, use_angle_in_observation=False, render=True, - log_path=FLAGS.log_path) + log_path=os.getcwd()) np.random.seed(100) sum_reward = 0 environment.reset() steps = 5000 - for _ in xrange(steps): + for _ in range(steps): # Sleep to prevent serial buffer overflow on microcontroller. time.sleep(0.002) action = [0] * 8 From ac945df07ae59f804ffcd9ec4a39cf48f7a1156c Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Wed, 11 Apr 2018 10:14:24 -0700 Subject: [PATCH 38/68] remote 'render' arg --- examples/pybullet/gym/pybullet_envs/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/pybullet/gym/pybullet_envs/__init__.py b/examples/pybullet/gym/pybullet_envs/__init__.py index 97059fd8c..25b82e2ca 100644 --- a/examples/pybullet/gym/pybullet_envs/__init__.py +++ b/examples/pybullet/gym/pybullet_envs/__init__.py @@ -33,7 +33,6 @@ register( register( id='MinitaurReactiveEnv-v0', entry_point='pybullet_envs.minitaur.envs:MinitaurReactiveEnv', - render=True, timestep_limit=1000, reward_threshold=5.0, ) From ad75ea35b355799089e5db209c5949c74677c9a5 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Wed, 11 Apr 2018 13:22:25 -0700 Subject: [PATCH 39/68] fix new minitaur envs for newer Gym (_step -> step etc), add extra sleep to sync Minitaur walk with RTC clock --- .../pybullet_envs/minitaur/envs/minitaur_gym_env.py | 10 ++++++++++ .../minitaur/envs/minitaur_gym_env_example.py | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env.py index ba7d53f5a..1a077fdd8 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env.py @@ -17,6 +17,7 @@ import minitaur_logging import minitaur_logging_pb2 import minitaur_rainbow_dash import motor +from pkg_resources import parse_version NUM_MOTORS = 8 MOTOR_ANGLE_OBSERVATION_INDEX = 0 @@ -563,6 +564,13 @@ class MinitaurGymEnv(gym.Env): """ return len(self._get_observation()) + if parse_version(gym.__version__)>=parse_version('0.9.6'): + close = _close + render = _render + reset = _reset + seed = _seed + step = _step + def set_time_step(self, control_step, simulation_step=0.001): """Sets the time step of the environment. @@ -604,3 +612,5 @@ class MinitaurGymEnv(gym.Env): @property def env_step_counter(self): return self._env_step_counter + + diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env_example.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env_example.py index bfd116114..36942f562 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env_example.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env_example.py @@ -9,6 +9,7 @@ import argparse import numpy as np import tensorflow as tf import minitaur_gym_env +import time #FLAGS = flags.FLAGS @@ -53,6 +54,7 @@ def ResetPoseExample(log_path=None): action = [math.pi / 2] * 8 for _ in range(steps): _, _, done, _ = environment.step(action) + time.sleep(1./100.) if done: break @@ -96,6 +98,7 @@ def MotorOverheatExample(log_path=None): observation, _, _, _ = environment.step(action) current_row.extend(observation.tolist()) actions_and_observations.append(current_row) + time.sleep(1./100.) if FLAGS.output_filename is not None: WriteToCSV(FLAGS.output_filename, actions_and_observations) @@ -142,6 +145,7 @@ def SineStandExample(log_path=None): observation, _, _, _ = environment.step(action) current_row.extend(observation.tolist()) actions_and_observations.append(current_row) + time.sleep(1./100.) if FLAGS.output_filename is not None: WriteToCSV(FLAGS.output_filename, actions_and_observations) @@ -189,6 +193,8 @@ def SinePolicyExample(log_path=None): a4 = math.sin(t * speed + math.pi) * amplitude2 action = [a1, a2, a2, a1, a3, a4, a4, a3] _, reward, done, _ = environment.step(action) + time.sleep(1./100.) + sum_reward += reward if done: tf.logging.info("Return is {}".format(sum_reward)) From b18d407ca482688f82c0d492df09d03f925a60f9 Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Wed, 11 Apr 2018 17:17:35 -0700 Subject: [PATCH 40/68] screenshot frame counter start at 0 (instead of 100) --- examples/ExampleBrowser/OpenGLExampleBrowser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/ExampleBrowser/OpenGLExampleBrowser.cpp b/examples/ExampleBrowser/OpenGLExampleBrowser.cpp index 3a43573f8..6d70cc946 100644 --- a/examples/ExampleBrowser/OpenGLExampleBrowser.cpp +++ b/examples/ExampleBrowser/OpenGLExampleBrowser.cpp @@ -1257,7 +1257,7 @@ void OpenGLExampleBrowser::update(float deltaTime) { skip=gPngSkipFrames; //printf("gPngFileName=%s\n",gPngFileName); - static int s_frameCount = 100; + static int s_frameCount = 0; sprintf(staticPngFileName,"%s%d.png",gPngFileName,s_frameCount++); //b3Printf("Made screenshot %s",staticPngFileName); From 2bc246b0b1c08d42c99b33e57fc10c72a7a23801 Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Wed, 11 Apr 2018 18:00:43 -0700 Subject: [PATCH 41/68] fixes in relative imports --- .../minitaur/envs/env_randomizers/__init__.py | 1 + ...initaur_alternating_legs_env_randomizer.py | 6 ++++++ .../minitaur_env_randomizer.py | 6 ++++++ .../minitaur_env_randomizer_from_config.py | 6 ++++++ .../minitaur_push_randomizer.py | 6 ++++++ .../minitaur_terrain_randomizer.py | 6 ++++++ .../pybullet_envs/minitaur/envs/minitaur.py | 8 +++++++- .../envs/minitaur_alternating_legs_env.py | 7 ++++++- .../minitaur_alternating_legs_env_example.py | 11 ++++++++--- .../minitaur/envs/minitaur_ball_gym_env.py | 7 ++++++- .../minitaur/envs/minitaur_derpy.py | 7 ++++++- .../minitaur/envs/minitaur_gym_env.py | 19 ++++++++++++------- .../minitaur/envs/minitaur_gym_env_example.py | 7 ++++++- .../minitaur/envs/minitaur_logging.py | 7 ++++++- .../minitaur/envs/minitaur_logging_pb2.py | 10 ++++++++-- .../minitaur/envs/minitaur_rainbow_dash.py | 8 +++++++- .../minitaur/envs/minitaur_reactive_env.py | 8 +++++++- 17 files changed, 110 insertions(+), 20 deletions(-) create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/__init__.py diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/__init__.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/__init__.py new file mode 100644 index 000000000..39e44ec8a --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/__init__.py @@ -0,0 +1 @@ +import gym diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_alternating_legs_env_randomizer.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_alternating_legs_env_randomizer.py index ec1a94fc0..a2d1645f4 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_alternating_legs_env_randomizer.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_alternating_legs_env_randomizer.py @@ -4,6 +4,12 @@ The randomization include swing_offset, extension_offset of all legs that mimics bent legs, desired_pitch from user input, battery voltage and motor damping. """ +import os, inspect +currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) +parentdir = os.path.dirname(os.path.dirname(currentdir)) +parentdir = os.path.dirname(os.path.dirname(parentdir)) +os.sys.path.insert(0,parentdir) + import numpy as np import tensorflow as tf from pybullet_envs.minitaur.envs import env_randomizer_base diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer.py index c0ce35faf..befdf7ea1 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer.py @@ -1,6 +1,12 @@ """Randomize the minitaur_gym_env when reset() is called.""" import random +import os, inspect +currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) +parentdir = os.path.dirname(os.path.dirname(currentdir)) +parentdir = os.path.dirname(os.path.dirname(parentdir)) +os.sys.path.insert(0,parentdir) + import numpy as np from pybullet_envs.minitaur.envs import env_randomizer_base diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer_from_config.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer_from_config.py index d49cfafad..97b91609b 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer_from_config.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer_from_config.py @@ -7,6 +7,12 @@ from __future__ import print_function import functools import random +import os, inspect +currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) +parentdir = os.path.dirname(os.path.dirname(currentdir)) +parentdir = os.path.dirname(os.path.dirname(parentdir)) +os.sys.path.insert(0,parentdir) + import numpy as np import tensorflow as tf from pybullet_envs.minitaur.envs import env_randomizer_base diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_push_randomizer.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_push_randomizer.py index 0ebe4ed0d..e030c6ae4 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_push_randomizer.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_push_randomizer.py @@ -4,6 +4,12 @@ from __future__ import absolute_import from __future__ import division from __future__ import print_function +import os, inspect +currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) +parentdir = os.path.dirname(os.path.dirname(currentdir)) +parentdir = os.path.dirname(os.path.dirname(parentdir)) +os.sys.path.insert(0,parentdir) + import math import numpy as np from pybullet_envs.minitaur.envs import env_randomizer_base diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_terrain_randomizer.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_terrain_randomizer.py index 91cb52302..b7e5706b8 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_terrain_randomizer.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_terrain_randomizer.py @@ -4,6 +4,12 @@ from __future__ import absolute_import from __future__ import division from __future__ import print_function +import os, inspect +currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) +parentdir = os.path.dirname(os.path.dirname(currentdir)) +parentdir = os.path.dirname(os.path.dirname(parentdir)) +os.sys.path.insert(0,parentdir) + import itertools import math import enum diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur.py index cd5749d22..efe32837c 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur.py @@ -1,13 +1,19 @@ """This file implements the functionalities of a minitaur using pybullet. """ + +import os, inspect +currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) +parentdir = os.path.dirname(os.path.dirname(currentdir)) +os.sys.path.insert(0,parentdir) + import collections import copy import math import re import numpy as np -import motor +from pybullet_envs.minitaur.envs import motor INIT_POSITION = [0, 0, .2] INIT_RACK_POSITION = [0, 0, 1] diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_alternating_legs_env.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_alternating_legs_env.py index 82d64b184..4a2e3dd7e 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_alternating_legs_env.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_alternating_legs_env.py @@ -3,9 +3,14 @@ """ import math +import os, inspect +currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) +parentdir = os.path.dirname(os.path.dirname(currentdir)) +os.sys.path.insert(0,parentdir) + from gym import spaces import numpy as np -import minitaur_gym_env +from pybullet_envs.minitaur.envs import minitaur_gym_env INIT_EXTENSION_POS = 2.6 INIT_SWING_POS = 0.0 diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_alternating_legs_env_example.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_alternating_legs_env_example.py index 1ac2198d0..f1266d354 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_alternating_legs_env_example.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_alternating_legs_env_example.py @@ -3,12 +3,17 @@ """ import time +import os, inspect +currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) +parentdir = os.path.dirname(os.path.dirname(currentdir)) +os.sys.path.insert(0,parentdir) + import os import numpy as np import tensorflow as tf -import minitaur_alternating_legs_env -import minitaur_gym_env -from env_randomizers import minitaur_alternating_legs_env_randomizer as randomizer_lib +from pybullet_envs.minitaur.envs import minitaur_alternating_legs_env +from pybullet_envs.minitaur.envs import minitaur_gym_env +from pybullet_envs.minitaur.envs.env_randomizers import minitaur_alternating_legs_env_randomizer as randomizer_lib #FLAGS = flags.FLAGS #flags.DEFINE_string("log_path", None, "The directory to write the log file.") diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_ball_gym_env.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_ball_gym_env.py index 46522b076..44c1f958a 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_ball_gym_env.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_ball_gym_env.py @@ -4,9 +4,14 @@ import math import random +import os, inspect +currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) +parentdir = os.path.dirname(os.path.dirname(currentdir)) +os.sys.path.insert(0,parentdir) + from gym import spaces import numpy as np -import minitaur_gym_env +from pybullet_envs.minitaur.envs import minitaur_gym_env import pybullet_data GOAL_DISTANCE_THRESHOLD = 0.8 diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_derpy.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_derpy.py index f7bf10dac..2b5eb2698 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_derpy.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_derpy.py @@ -6,8 +6,13 @@ It is the result of first pass system identification for the derpy robot. The """ import math +import os, inspect +currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) +parentdir = os.path.dirname(os.path.dirname(currentdir)) +os.sys.path.insert(0,parentdir) + import numpy as np -import minitaur +from pybullet_envs.minitaur.envs import minitaur KNEE_CONSTRAINT_POINT_LONG = [0, 0.0055, 0.088] KNEE_CONSTRAINT_POINT_SHORT = [0, 0.0055, 0.100] diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env.py index 1a077fdd8..11ca8c137 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env.py @@ -4,19 +4,24 @@ import math import time +import os, inspect +currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) +parentdir = os.path.dirname(os.path.dirname(currentdir)) +os.sys.path.insert(0,parentdir) + import gym from gym import spaces from gym.utils import seeding import numpy as np import pybullet -import bullet_client +from pybullet_envs.minitaur.envs import bullet_client import pybullet_data -import minitaur -import minitaur_derpy -import minitaur_logging -import minitaur_logging_pb2 -import minitaur_rainbow_dash -import motor +from pybullet_envs.minitaur.envs import minitaur +from pybullet_envs.minitaur.envs import minitaur_derpy +from pybullet_envs.minitaur.envs import minitaur_logging +from pybullet_envs.minitaur.envs import minitaur_logging_pb2 +from pybullet_envs.minitaur.envs import minitaur_rainbow_dash +from pybullet_envs.minitaur.envs import motor from pkg_resources import parse_version NUM_MOTORS = 8 diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env_example.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env_example.py index 36942f562..197560cfd 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env_example.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_gym_env_example.py @@ -5,10 +5,15 @@ import csv import math +import os, inspect +currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) +parentdir = os.path.dirname(os.path.dirname(currentdir)) +os.sys.path.insert(0,parentdir) + import argparse import numpy as np import tensorflow as tf -import minitaur_gym_env +from pybullet_envs.minitaur.envs import minitaur_gym_env import time diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py index 0c426ff29..b7f739e02 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py @@ -10,12 +10,17 @@ from __future__ import absolute_import from __future__ import division from __future__ import print_function +import os, inspect +currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) +parentdir = os.path.dirname(os.path.dirname(currentdir)) +os.sys.path.insert(0,parentdir) + import datetime import os import time import tensorflow as tf -import minitaur_logging_pb2 +from pybullet_envs.minitaur.envs import minitaur_logging_pb2 NUM_MOTORS = 8 diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging_pb2.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging_pb2.py index 7ea35b0f6..ff564386a 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging_pb2.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging_pb2.py @@ -2,6 +2,12 @@ # source: minitaur_logging.proto import sys + +import os, inspect +currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) +parentdir = os.path.dirname(os.path.dirname(currentdir)) +os.sys.path.insert(0,parentdir) + _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message @@ -13,8 +19,8 @@ from google.protobuf import descriptor_pb2 _sym_db = _symbol_database.Default() -import timestamp_pb2 as timestamp__pb2 -import vector_pb2 as vector__pb2 +from pybullet_envs.minitaur.envs import timestamp_pb2 as timestamp__pb2 +from pybullet_envs.minitaur.envs import vector_pb2 as vector__pb2 DESCRIPTOR = _descriptor.FileDescriptor( diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_rainbow_dash.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_rainbow_dash.py index 4eef2b663..c33b4af77 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_rainbow_dash.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_rainbow_dash.py @@ -3,10 +3,16 @@ It is the result of first pass system identification for the rainbow dash robot. """ + +import os, inspect +currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) +parentdir = os.path.dirname(os.path.dirname(currentdir)) +os.sys.path.insert(0,parentdir) + import math import numpy as np -import minitaur +from pybullet_envs.minitaur.envs import minitaur KNEE_CONSTRAINT_POINT_LONG = [0, 0.0045, 0.088] KNEE_CONSTRAINT_POINT_SHORT = [0, 0.0045, 0.100] diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_reactive_env.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_reactive_env.py index 9f6f9b847..6b2c5f884 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_reactive_env.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_reactive_env.py @@ -1,11 +1,17 @@ """This file implements the gym environment of minitaur alternating legs. """ + +import os, inspect +currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) +parentdir = os.path.dirname(os.path.dirname(currentdir)) +os.sys.path.insert(0,parentdir) + import collections import math from gym import spaces import numpy as np -import minitaur_gym_env +from pybullet_envs.minitaur.envs import minitaur_gym_env INIT_EXTENSION_POS = 2.0 INIT_SWING_POS = 0.0 From 40b285ebfdb562b8d59cee30ae5cac631b83ed57 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Wed, 11 Apr 2018 18:13:46 -0700 Subject: [PATCH 42/68] fixes in minitaur leg mapping --- .../pybullet_envs/minitaur/envs/minitaur_reactive_env.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_reactive_env.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_reactive_env.py index 6b2c5f884..dc3a02897 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_reactive_env.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_reactive_env.py @@ -144,9 +144,9 @@ class MinitaurReactiveEnv(minitaur_gym_env.MinitaurGymEnv): def _convert_from_leg_model(self, leg_pose): motor_pose = np.zeros(NUM_MOTORS) for i in range(NUM_LEGS): - motor_pose[2 * i] = leg_pose[NUM_LEGS + i] - (-1)**(i / 2) * leg_pose[i] - motor_pose[2 * i + 1] = ( - leg_pose[NUM_LEGS + i] + (-1)**(i / 2) * leg_pose[i]) + motor_pose[int(2 * i)] = leg_pose[NUM_LEGS + i] - (-1)**int(i / 2) * leg_pose[i] + motor_pose[int(2 * i + 1)] = ( + leg_pose[NUM_LEGS + i] + (-1)**int(i / 2) * leg_pose[i]) return motor_pose def _signal(self, t): From bd0aed3e367d13aa39f254befc36de7c78d78d79 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Wed, 11 Apr 2018 18:14:56 -0700 Subject: [PATCH 43/68] add ARS to train/eval Minitaur --- .../pybullet/gym/pybullet_envs/ARS/ars.py | 397 ++++++++++++++++++ .../gym/pybullet_envs/ARS/ars_server.py | 62 +++ .../gym/pybullet_envs/ARS/config_ars.py | 83 ++++ .../gym/pybullet_envs/ARS/eval_ars.py | 99 +++++ .../pybullet/gym/pybullet_envs/ARS/filter.py | 280 ++++++++++++ .../gym/pybullet_envs/ARS/log/config.yaml | 29 ++ .../ARS/log/lin_policy_plus_990_bla.npz | Bin 0 -> 1407 bytes .../pybullet/gym/pybullet_envs/ARS/logz.py | 104 +++++ .../gym/pybullet_envs/ARS/optimizers.py | 35 ++ .../gym/pybullet_envs/ARS/policies.py | 72 ++++ .../gym/pybullet_envs/ARS/shared_noise.py | 41 ++ .../pybullet_envs/ARS/start_ars_servers.py | 28 ++ .../gym/pybullet_envs/ARS/train_ars.borg | 93 ++++ .../gym/pybullet_envs/ARS/train_ars.py | 64 +++ .../gym/pybullet_envs/ARS/train_ars_test.py | 29 ++ .../pybullet/gym/pybullet_envs/ARS/utility.py | 52 +++ .../pybullet/gym/pybullet_envs/ARS/utils.py | 28 ++ 17 files changed, 1496 insertions(+) create mode 100644 examples/pybullet/gym/pybullet_envs/ARS/ars.py create mode 100644 examples/pybullet/gym/pybullet_envs/ARS/ars_server.py create mode 100644 examples/pybullet/gym/pybullet_envs/ARS/config_ars.py create mode 100644 examples/pybullet/gym/pybullet_envs/ARS/eval_ars.py create mode 100644 examples/pybullet/gym/pybullet_envs/ARS/filter.py create mode 100644 examples/pybullet/gym/pybullet_envs/ARS/log/config.yaml create mode 100644 examples/pybullet/gym/pybullet_envs/ARS/log/lin_policy_plus_990_bla.npz create mode 100644 examples/pybullet/gym/pybullet_envs/ARS/logz.py create mode 100644 examples/pybullet/gym/pybullet_envs/ARS/optimizers.py create mode 100644 examples/pybullet/gym/pybullet_envs/ARS/policies.py create mode 100644 examples/pybullet/gym/pybullet_envs/ARS/shared_noise.py create mode 100644 examples/pybullet/gym/pybullet_envs/ARS/start_ars_servers.py create mode 100644 examples/pybullet/gym/pybullet_envs/ARS/train_ars.borg create mode 100644 examples/pybullet/gym/pybullet_envs/ARS/train_ars.py create mode 100644 examples/pybullet/gym/pybullet_envs/ARS/train_ars_test.py create mode 100644 examples/pybullet/gym/pybullet_envs/ARS/utility.py create mode 100644 examples/pybullet/gym/pybullet_envs/ARS/utils.py diff --git a/examples/pybullet/gym/pybullet_envs/ARS/ars.py b/examples/pybullet/gym/pybullet_envs/ARS/ars.py new file mode 100644 index 000000000..cf59ede85 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/ARS/ars.py @@ -0,0 +1,397 @@ +"""Internal implementation of the Augmented Random Search method.""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import os, inspect +currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) +os.sys.path.insert(0,currentdir) + +from concurrent import futures +import copy +import os +import time +import gym +import numpy as np +import logz +import utils +import optimizers +#from google3.pyglib import gfile +import policies +import shared_noise +import utility + +class Worker(object): + """Object class for parallel rollout generation.""" + + def __init__(self, + env_seed, + env_callback, + policy_params=None, + deltas=None, + rollout_length=1000, + delta_std=0.02): + + # initialize OpenAI environment for each worker + self.env = env_callback() + self.env.seed(env_seed) + + # each worker gets access to the shared noise table + # with independent random streams for sampling + # from the shared noise table. + self.deltas = shared_noise.SharedNoiseTable(deltas, env_seed + 7) + self.policy_params = policy_params + if policy_params['type'] == 'linear': + self.policy = policies.LinearPolicy(policy_params) + else: + raise NotImplementedError + + self.delta_std = delta_std + self.rollout_length = rollout_length + + def get_weights_plus_stats(self): + """ + Get current policy weights and current statistics of past states. + """ + assert self.policy_params['type'] == 'linear' + return self.policy.get_weights_plus_stats() + + def rollout(self, shift=0., rollout_length=None): + """Performs one rollout of maximum length rollout_length. + + At each time-step it substracts shift from the reward. + """ + + if rollout_length is None: + rollout_length = self.rollout_length + + total_reward = 0. + steps = 0 + + ob = self.env.reset() + for i in range(rollout_length): + action = self.policy.act(ob) + ob, reward, done, _ = self.env.step(action) + steps += 1 + total_reward += (reward - shift) + if done: + break + + return total_reward, steps + + def do_rollouts(self, w_policy, num_rollouts=1, shift=1, evaluate=False): + """ + Generate multiple rollouts with a policy parametrized by w_policy. + """ + print('Doing {} rollouts'.format(num_rollouts)) + rollout_rewards, deltas_idx = [], [] + steps = 0 + + for i in range(num_rollouts): + + if evaluate: + self.policy.update_weights(w_policy) + deltas_idx.append(-1) + + # set to false so that evaluation rollouts are not used for updating state statistics + self.policy.update_filter = False + + # for evaluation we do not shift the rewards (shift = 0) and we use the + # default rollout length (1000 for the MuJoCo locomotion tasks) + reward, r_steps = self.rollout( + shift=0., rollout_length=self.rollout_length) + rollout_rewards.append(reward) + + else: + idx, delta = self.deltas.get_delta(w_policy.size) + + delta = (self.delta_std * delta).reshape(w_policy.shape) + deltas_idx.append(idx) + + # set to true so that state statistics are updated + self.policy.update_filter = True + + # compute reward and number of timesteps used for positive perturbation rollout + self.policy.update_weights(w_policy + delta) + pos_reward, pos_steps = self.rollout(shift=shift) + + # compute reward and number of timesteps used for negative pertubation rollout + self.policy.update_weights(w_policy - delta) + neg_reward, neg_steps = self.rollout(shift=shift) + steps += pos_steps + neg_steps + + rollout_rewards.append([pos_reward, neg_reward]) + + return { + 'deltas_idx': deltas_idx, + 'rollout_rewards': rollout_rewards, + 'steps': steps + } + + def stats_increment(self): + self.policy.observation_filter.stats_increment() + return + + def get_weights(self): + return self.policy.get_weights() + + def get_filter(self): + return self.policy.observation_filter + + def sync_filter(self, other): + self.policy.observation_filter.sync(other) + return + + +class ARSLearner(object): + """ + Object class implementing the ARS algorithm. + """ + + def __init__(self, + env_callback, + policy_params=None, + num_workers=32, + num_deltas=320, + deltas_used=320, + delta_std=0.02, + logdir=None, + rollout_length=1000, + step_size=0.01, + shift='constant zero', + params=None, + seed=123): + + logz.configure_output_dir(logdir) + # params_to_save = copy.deepcopy(params) + # params_to_save['env'] = None + # logz.save_params(params_to_save) + utility.save_config(params, logdir) + env = env_callback() + + self.timesteps = 0 + self.action_size = env.action_space.shape[0] + self.ob_size = env.observation_space.shape[0] + self.num_deltas = num_deltas + self.deltas_used = deltas_used + self.rollout_length = rollout_length + self.step_size = step_size + self.delta_std = delta_std + self.logdir = logdir + self.shift = shift + self.params = params + self.max_past_avg_reward = float('-inf') + self.num_episodes_used = float('inf') + + # create shared table for storing noise + print('Creating deltas table.') + deltas = shared_noise.create_shared_noise() + self.deltas = shared_noise.SharedNoiseTable(deltas, seed=seed + 3) + print('Created deltas table.') + + # initialize workers with different random seeds + print('Initializing workers.') + self.num_workers = num_workers + self.workers = [ + Worker( + seed + 7 * i, + env_callback=env_callback, + policy_params=policy_params, + deltas=deltas, + rollout_length=rollout_length, + delta_std=delta_std) for i in range(num_workers) + ] + + # initialize policy + if policy_params['type'] == 'linear': + self.policy = policies.LinearPolicy(policy_params) + self.w_policy = self.policy.get_weights() + else: + raise NotImplementedError + + # initialize optimization algorithm + self.optimizer = optimizers.SGD(self.w_policy, self.step_size) + print('Initialization of ARS complete.') + + def aggregate_rollouts(self, num_rollouts=None, evaluate=False): + """ + Aggregate update step from rollouts generated in parallel. + """ + + if num_rollouts is None: + num_deltas = self.num_deltas + else: + num_deltas = num_rollouts + + results_one = [] #rollout_ids_one + results_two = [] #rollout_ids_two + + t1 = time.time() + num_rollouts = int(num_deltas / self.num_workers) +# if num_rollouts > 0: +# with futures.ThreadPoolExecutor( +# max_workers=self.num_workers) as executor: +# workers = [ +# executor.submit( +# worker.do_rollouts, +# self.w_policy, +# num_rollouts=num_rollouts, +# shift=self.shift, +# evaluate=evaluate) for worker in self.workers +# ] +# for worker in futures.as_completed(workers): +# results_one.append(worker.result()) +# +# workers = [ +# executor.submit( +# worker.do_rollouts, +# self.w_policy, +# num_rollouts=1, +# shift=self.shift, +# evaluate=evaluate) +# for worker in self.workers[:(num_deltas % self.num_workers)] +# ] +# for worker in futures.as_completed(workers): +# results_two.append(worker.result()) + + # parallel generation of rollouts + rollout_ids_one = [ + worker.do_rollouts( + self.w_policy, + num_rollouts=num_rollouts, + shift=self.shift, + evaluate=evaluate) for worker in self.workers + ] + + rollout_ids_two = [ + worker.do_rollouts( + self.w_policy, num_rollouts=1, shift=self.shift, evaluate=evaluate) + for worker in self.workers[:(num_deltas % self.num_workers)] + ] + results_one = rollout_ids_one + results_two = rollout_ids_two +# gather results + + rollout_rewards, deltas_idx = [], [] + + for result in results_one: + if not evaluate: + self.timesteps += result['steps'] + deltas_idx += result['deltas_idx'] + rollout_rewards += result['rollout_rewards'] + + for result in results_two: + if not evaluate: + self.timesteps += result['steps'] + deltas_idx += result['deltas_idx'] + rollout_rewards += result['rollout_rewards'] + + deltas_idx = np.array(deltas_idx) + rollout_rewards = np.array(rollout_rewards, dtype=np.float64) + + print('Maximum reward of collected rollouts:', rollout_rewards.max()) + info_dict = { + "max_reward": rollout_rewards.max() + } + t2 = time.time() + + print('Time to generate rollouts:', t2 - t1) + + if evaluate: + return rollout_rewards + + # select top performing directions if deltas_used < num_deltas + max_rewards = np.max(rollout_rewards, axis=1) + if self.deltas_used > self.num_deltas: + self.deltas_used = self.num_deltas + + idx = np.arange(max_rewards.size)[max_rewards >= np.percentile( + max_rewards, 100 * (1 - (self.deltas_used / self.num_deltas)))] + deltas_idx = deltas_idx[idx] + rollout_rewards = rollout_rewards[idx, :] + + # normalize rewards by their standard deviation + rollout_rewards /= np.std(rollout_rewards) + + t1 = time.time() + # aggregate rollouts to form g_hat, the gradient used to compute SGD step + g_hat, count = utils.batched_weighted_sum( + rollout_rewards[:, 0] - rollout_rewards[:, 1], + (self.deltas.get(idx, self.w_policy.size) for idx in deltas_idx), + batch_size=500) + g_hat /= deltas_idx.size + t2 = time.time() + print('time to aggregate rollouts', t2 - t1) + return g_hat, info_dict + + def train_step(self): + """ + Perform one update step of the policy weights. + """ + + g_hat, info_dict = self.aggregate_rollouts() + print('Euclidean norm of update step:', np.linalg.norm(g_hat)) + self.w_policy -= self.optimizer._compute_step(g_hat).reshape( + self.w_policy.shape) + return info_dict + + def train(self, num_iter): + + start = time.time() + for i in range(num_iter): + + t1 = time.time() + info_dict = self.train_step() + t2 = time.time() + print('total time of one step', t2 - t1) + print('iter ', i, ' done') + + # record statistics every 10 iterations + if ((i) % 10 == 0): + + rewards = self.aggregate_rollouts(num_rollouts=8, evaluate=True) + w = self.workers[0].get_weights_plus_stats() + + checkpoint_filename = os.path.join( + self.logdir, 'lin_policy_plus_{:03d}.npz'.format(i)) + print('Save checkpoints to {}...', checkpoint_filename) + checkpoint_file = open(checkpoint_filename, 'w') + np.savez(checkpoint_file, w) + print('End save checkpoints.') + print(sorted(self.params.items())) + logz.log_tabular('Time', time.time() - start) + logz.log_tabular('Iteration', i + 1) + logz.log_tabular('AverageReward', np.mean(rewards)) + logz.log_tabular('StdRewards', np.std(rewards)) + logz.log_tabular('MaxRewardRollout', np.max(rewards)) + logz.log_tabular('MinRewardRollout', np.min(rewards)) + logz.log_tabular('timesteps', self.timesteps) + logz.dump_tabular() + + t1 = time.time() + # get statistics from all workers + for j in range(self.num_workers): + self.policy.observation_filter.update(self.workers[j].get_filter()) + self.policy.observation_filter.stats_increment() + + # make sure master filter buffer is clear + self.policy.observation_filter.clear_buffer() + # sync all workers + #filter_id = ray.put(self.policy.observation_filter) + setting_filters_ids = [ + worker.sync_filter(self.policy.observation_filter) + for worker in self.workers + ] + # waiting for sync of all workers + #ray.get(setting_filters_ids) + + increment_filters_ids = [ + worker.stats_increment() for worker in self.workers + ] + # waiting for increment of all workers + #ray.get(increment_filters_ids) + t2 = time.time() + print('Time to sync statistics:', t2 - t1) + + return info_dict diff --git a/examples/pybullet/gym/pybullet_envs/ARS/ars_server.py b/examples/pybullet/gym/pybullet_envs/ARS/ars_server.py new file mode 100644 index 000000000..f680dd632 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/ARS/ars_server.py @@ -0,0 +1,62 @@ +""" +blaze build -c opt //experimental/users/jietan/ARS:ars_server + +blaze-bin/experimental/users/jietan/ARS/ars_server \ +--config_name=MINITAUR_GYM_CONFIG +""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import time +from absl import app +from absl import flags +from concurrent import futures +import grpc +from grpc import loas2 +from google3.robotics.reinforcement_learning.minitaur.envs import minitaur_gym_env +from google3.robotics.reinforcement_learning.minitaur.envs import minitaur_reactive_env +from google3.robotics.reinforcement_learning.minitaur.envs.env_randomizers import minitaur_env_randomizer +from google3.robotics.reinforcement_learning.minitaur.envs.env_randomizers import minitaur_env_randomizer_from_config as randomizer_config_lib +from google3.experimental.users.jietan.ARS import ars_evaluation_service_pb2_grpc +from google3.experimental.users.jietan.ARS import ars_evaluation_service + +FLAGS = flags.FLAGS +flags.DEFINE_integer("server_id", 0, "number of servers") +flags.DEFINE_integer("port", 20000, "port number.") +flags.DEFINE_string("config_name", None, "The name of the config dictionary.") +flags.DEFINE_bool('run_on_borg', False, + 'Whether the servers are running on borg.') + +_ONE_DAY_IN_SECONDS = 60 * 60 * 24 + + +def main(unused_argv): + servers = [] + server_creds = loas2.loas2_server_credentials() + port = FLAGS.port + if not FLAGS.run_on_borg: + port = 20000 + FLAGS.server_id + server = grpc.server( + futures.ThreadPoolExecutor(max_workers=10), ports=(port,)) + servicer = ars_evaluation_service.ParameterEvaluationServicer( + FLAGS.config_name, worker_id=FLAGS.server_id) + ars_evaluation_service_pb2_grpc.add_EvaluationServicer_to_server( + servicer, server) + server.add_secure_port("[::]:{}".format(port), server_creds) + servers.append(server) + server.start() + print("Start server {}".format(FLAGS.server_id)) + + # prevent the main thread from exiting + try: + while True: + time.sleep(_ONE_DAY_IN_SECONDS) + except KeyboardInterrupt: + for server in servers: + server.stop(0) + + +if __name__ == "__main__": + app.run(main) diff --git a/examples/pybullet/gym/pybullet_envs/ARS/config_ars.py b/examples/pybullet/gym/pybullet_envs/ARS/config_ars.py new file mode 100644 index 000000000..e333f88ab --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/ARS/config_ars.py @@ -0,0 +1,83 @@ + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import functools +from pybullet_envs.minitaur.envs import minitaur_gym_env +from pybullet_envs.minitaur.envs import minitaur_reactive_env +from pybullet_envs.minitaur.envs.env_randomizers import minitaur_env_randomizer +from pybullet_envs.minitaur.envs.env_randomizers import minitaur_env_randomizer_from_config as randomizer_config_lib + +MAX_LENGTH = 1000 + + +def merge_two_dicts(x, y): + """Given two dicts, merge them into a new dict as a shallow copy.""" + z = dict(x) + z.update(y) + return z + + +# The default configurations. +DEFAULT_CONFIG = dict( + num_workers=8, + num_directions=8, + num_iterations=1000, + deltas_used=8, + step_size=0.02, + delta_std=0.03, + rollout_length=MAX_LENGTH, + shift=0, + seed=237, + policy_type="linear", + filter="MeanStdFilter", +) + +# Configuration specific to minitaur_gym_env.MinitaurGymEnv class. +MINITAUR_GYM_CONFIG_ADDITIONS = dict( + env=functools.partial( + minitaur_gym_env.MinitaurGymEnv, + urdf_version=minitaur_gym_env.DERPY_V0_URDF_VERSION, + accurate_motor_model_enabled=True, + motor_overheat_protection=True, + pd_control_enabled=True, + env_randomizer=None,#minitaur_env_randomizer.MinitaurEnvRandomizer(), + render=False, + num_steps_to_log=MAX_LENGTH)) +MINITAUR_GYM_CONFIG = merge_two_dicts(DEFAULT_CONFIG, + MINITAUR_GYM_CONFIG_ADDITIONS) + +# Configuration specific to MinitaurReactiveEnv class. +MINITAUR_REACTIVE_CONFIG_ADDITIONS = dict( + env=functools.partial( + minitaur_reactive_env.MinitaurReactiveEnv, + urdf_version=minitaur_gym_env.RAINBOW_DASH_V0_URDF_VERSION, + energy_weight=0.005, + accurate_motor_model_enabled=True, + pd_latency=0.003, + control_latency=0.02, + motor_kd=0.015, + remove_default_joint_damping=True, + env_randomizer=None, + render=False, + num_steps_to_log=MAX_LENGTH)) +MINITAUR_REACTIVE_CONFIG = merge_two_dicts(DEFAULT_CONFIG, + MINITAUR_REACTIVE_CONFIG_ADDITIONS) + +# Configuration specific to MinitaurReactiveEnv class with randomizer. +MINITAUR_REACTIVE_RANDOMIZER_CONFIG_ADDITIONS = dict( + env=functools.partial( + minitaur_reactive_env.MinitaurReactiveEnv, + urdf_version=minitaur_gym_env.RAINBOW_DASH_V0_URDF_VERSION, + energy_weight=0.005, + accurate_motor_model_enabled=True, + pd_latency=0.003, + control_latency=0.02, + motor_kd=0.015, + remove_default_joint_damping=True, + env_randomizer=randomizer_config_lib.MinitaurEnvRandomizerFromConfig(), + render=False, + num_steps_to_log=MAX_LENGTH)) +MINITAUR_REACTIVE_RANDOMIZER_CONFIG = merge_two_dicts( + DEFAULT_CONFIG, MINITAUR_REACTIVE_RANDOMIZER_CONFIG_ADDITIONS) diff --git a/examples/pybullet/gym/pybullet_envs/ARS/eval_ars.py b/examples/pybullet/gym/pybullet_envs/ARS/eval_ars.py new file mode 100644 index 000000000..d0c144bfa --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/ARS/eval_ars.py @@ -0,0 +1,99 @@ +""" +blaze run -c opt //experimental/users/jietan/ARS:eval_ars -- \ +--logdir=/cns/ij-d/home/jietan/experiment/ARS/ars_react_nr01.191950338.191950550/ \ +--checkpoint=lin_policy_plus_990.npz \ +--num_rollouts=10 +""" + + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import os, inspect +import time + +currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) +os.sys.path.insert(0,currentdir) + +from absl import app +from absl import flags + +import pdb +import os +import numpy as np +import gym +import config_ars +import utility +import policies + +FLAGS = flags.FLAGS + +flags.DEFINE_string('logdir', None, 'The path of the checkpoint.') +flags.DEFINE_string('checkpoint', None, 'The file name of the checkpoint.') +flags.DEFINE_integer('num_rollouts', 1, 'The number of rollouts.') + + +def main(argv): + del argv # Unused. + + print('loading and building expert policy') + checkpoint_file = os.path.join(FLAGS.logdir, FLAGS.checkpoint) + lin_policy = np.load(checkpoint_file, encoding='bytes') + lin_policy = lin_policy.items()[0][1] + + M = lin_policy[0] + # mean and std of state vectors estimated online by ARS. + mean = lin_policy[1] + std = lin_policy[2] + + config = utility.load_config(FLAGS.logdir) + print("config=",config) + env = config['env'](hard_reset=True, render=True) + ob_dim = env.observation_space.shape[0] + ac_dim = env.action_space.shape[0] + + # set policy parameters. Possible filters: 'MeanStdFilter' for v2, 'NoFilter' for v1. + policy_params = { + 'type': 'linear', + 'ob_filter': config['filter'], + 'ob_dim': ob_dim, + 'ac_dim': ac_dim, + "weights": M, + "mean": mean, + "std": std, + } + policy = policies.LinearPolicy(policy_params, update_filter=False) + returns = [] + observations = [] + actions = [] + for i in range(FLAGS.num_rollouts): + print('iter', i) + obs = env.reset() + done = False + totalr = 0. + steps = 0 + while not done: + action = policy.act(obs) + observations.append(obs) + actions.append(action) + + obs, r, done, _ = env.step(action) + time.sleep(1./100.) + totalr += r + steps += 1 + if steps % 100 == 0: + print('%i/%i' % (steps, config['rollout_length'])) + if steps >= config['rollout_length']: + break + returns.append(totalr) + + print('returns', returns) + print('mean return', np.mean(returns)) + print('std of return', np.std(returns)) + + +if __name__ == '__main__': + flags.mark_flag_as_required('logdir') + flags.mark_flag_as_required('checkpoint') + app.run(main) diff --git a/examples/pybullet/gym/pybullet_envs/ARS/filter.py b/examples/pybullet/gym/pybullet_envs/ARS/filter.py new file mode 100644 index 000000000..ac68a2341 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/ARS/filter.py @@ -0,0 +1,280 @@ +# Code in this file is copied and adapted from +# https://github.com/ray-project/ray/blob/master/python/ray/rllib/utils/filter.py + + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import numpy as np + + +class Filter(object): + """Processes input, possibly statefully.""" + + def update(self, other, *args, **kwargs): + """Updates self with "new state" from other filter.""" + raise NotImplementedError + + def copy(self): + """Creates a new object with same state as self. + + Returns: + copy (Filter): Copy of self""" + raise NotImplementedError + + def sync(self, other): + """Copies all state from other filter to self.""" + raise NotImplementedError + + +class NoFilter(Filter): + def __init__(self, *args): + pass + + def __call__(self, x, update=True): + return np.asarray(x, dtype = np.float64) + + def update(self, other, *args, **kwargs): + pass + + def copy(self): + return self + + def sync(self, other): + pass + + def stats_increment(self): + pass + + def clear_buffer(self): + pass + + def get_stats(self): + return 0, 1 + + @property + def mean(self): + return 0 + + @property + def var(self): + return 1 + + @property + def std(self): + return 1 + + + +# http://www.johndcook.com/blog/standard_deviation/ +class RunningStat(object): + + def __init__(self, shape=None): + self._n = 0 + self._M = np.zeros(shape, dtype = np.float64) + self._S = np.zeros(shape, dtype = np.float64) + self._M2 = np.zeros(shape, dtype = np.float64) + + def copy(self): + other = RunningStat() + other._n = self._n + other._M = np.copy(self._M) + other._S = np.copy(self._S) + return other + + def push(self, x): + x = np.asarray(x) + # Unvectorized update of the running statistics. + assert x.shape == self._M.shape, ("x.shape = {}, self.shape = {}" + .format(x.shape, self._M.shape)) + n1 = self._n + self._n += 1 + if self._n == 1: + self._M[...] = x + else: + delta = x - self._M + deltaM2 = np.square(x) - self._M2 + self._M[...] += delta / self._n + self._S[...] += delta * delta * n1 / self._n + + + def update(self, other): + n1 = self._n + n2 = other._n + n = n1 + n2 + delta = self._M - other._M + delta2 = delta * delta + M = (n1 * self._M + n2 * other._M) / n + S = self._S + other._S + delta2 * n1 * n2 / n + self._n = n + self._M = M + self._S = S + + def __repr__(self): + return '(n={}, mean_mean={}, mean_std={})'.format( + self.n, np.mean(self.mean), np.mean(self.std)) + + @property + def n(self): + return self._n + + @property + def mean(self): + return self._M + + @property + def var(self): + return self._S / (self._n - 1) if self._n > 1 else np.square(self._M) + + @property + def std(self): + return np.sqrt(self.var) + + @property + def shape(self): + return self._M.shape + + +class MeanStdFilter(Filter): + """Keeps track of a running mean for seen states""" + + def __init__(self, shape, demean=True, destd=True): + self.shape = shape + self.demean = demean + self.destd = destd + self.rs = RunningStat(shape) + # In distributed rollouts, each worker sees different states. + # The buffer is used to keep track of deltas amongst all the + # observation filters. + + self.buffer = RunningStat(shape) + + self.mean = np.zeros(shape, dtype = np.float64) + self.std = np.ones(shape, dtype = np.float64) + + def clear_buffer(self): + self.buffer = RunningStat(self.shape) + return + + def update(self, other, copy_buffer=False): + """Takes another filter and only applies the information from the + buffer. + + Using notation `F(state, buffer)` + Given `Filter1(x1, y1)` and `Filter2(x2, yt)`, + `update` modifies `Filter1` to `Filter1(x1 + yt, y1)` + If `copy_buffer`, then `Filter1` is modified to + `Filter1(x1 + yt, yt)`. + """ + self.rs.update(other.buffer) + if copy_buffer: + self.buffer = other.buffer.copy() + return + + def copy(self): + """Returns a copy of Filter.""" + other = MeanStdFilter(self.shape) + other.demean = self.demean + other.destd = self.destd + other.rs = self.rs.copy() + other.buffer = self.buffer.copy() + return other + + def sync(self, other): + """Syncs all fields together from other filter. + + Using notation `F(state, buffer)` + Given `Filter1(x1, y1)` and `Filter2(x2, yt)`, + `sync` modifies `Filter1` to `Filter1(x2, yt)` + """ + assert other.shape == self.shape, "Shapes don't match!" + self.demean = other.demean + self.destd = other.destd + self.rs = other.rs.copy() + self.buffer = other.buffer.copy() + return + + def __call__(self, x, update=True): + x = np.asarray(x, dtype = np.float64) + if update: + if len(x.shape) == len(self.rs.shape) + 1: + # The vectorized case. + for i in range(x.shape[0]): + self.rs.push(x[i]) + self.buffer.push(x[i]) + else: + # The unvectorized case. + self.rs.push(x) + self.buffer.push(x) + if self.demean: + x = x - self.mean + if self.destd: + x = x / (self.std + 1e-8) + return x + + def stats_increment(self): + self.mean = self.rs.mean + self.std = self.rs.std + + # Set values for std less than 1e-7 to +inf to avoid + # dividing by zero. State elements with zero variance + # are set to zero as a result. + self.std[self.std < 1e-7] = float("inf") + return + + def get_stats(self): + return self.rs.mean, (self.rs.std + 1e-8) + + def __repr__(self): + return 'MeanStdFilter({}, {}, {}, {}, {}, {})'.format( + self.shape, self.demean, + self.rs, self.buffer) + + +def get_filter(filter_config, shape = None): + if filter_config == "MeanStdFilter": + return MeanStdFilter(shape) + elif filter_config == "NoFilter": + return NoFilter() + else: + raise Exception("Unknown observation_filter: " + + str(filter_config)) + + +def test_running_stat(): + for shp in ((), (3,), (3, 4)): + li = [] + rs = RunningStat(shp) + for _ in range(5): + val = np.random.randn(*shp) + rs.push(val) + li.append(val) + m = np.mean(li, axis=0) + assert np.allclose(rs.mean, m) + v = np.square(m) if (len(li) == 1) else np.var(li, ddof=1, axis=0) + assert np.allclose(rs.var, v) + + +def test_combining_stat(): + for shape in [(), (3,), (3, 4)]: + li = [] + rs1 = RunningStat(shape) + rs2 = RunningStat(shape) + rs = RunningStat(shape) + for _ in range(5): + val = np.random.randn(*shape) + rs1.push(val) + rs.push(val) + li.append(val) + for _ in range(9): + rs2.push(val) + rs.push(val) + li.append(val) + rs1.update(rs2) + assert np.allclose(rs.mean, rs1.mean) + assert np.allclose(rs.std, rs1.std) + + +test_running_stat() +test_combining_stat() diff --git a/examples/pybullet/gym/pybullet_envs/ARS/log/config.yaml b/examples/pybullet/gym/pybullet_envs/ARS/log/config.yaml new file mode 100644 index 000000000..36690d51d --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/ARS/log/config.yaml @@ -0,0 +1,29 @@ +delta_std: 0.03 +deltas_used: 8 +env: !!python/object/apply:functools.partial + args: + - &id001 !!python/name:pybullet_envs.minitaur.envs.minitaur_reactive_env.MinitaurReactiveEnv '' + state: !!python/tuple + - *id001 + - !!python/tuple [] + - accurate_motor_model_enabled: true + control_latency: 0.02 + energy_weight: 0.005 + env_randomizer: null + motor_kd: 0.015 + num_steps_to_log: 1000 + pd_latency: 0.003 + remove_default_joint_damping: true + render: false + urdf_version: rainbow_dash_v0 + - null +filter: MeanStdFilter +num_directions: 8 +num_iterations: 1000 +num_workers: 8 +policy_type: linear +rollout_length: 1000 +seed: 237 +shift: 0 +step_size: 0.02 + diff --git a/examples/pybullet/gym/pybullet_envs/ARS/log/lin_policy_plus_990_bla.npz b/examples/pybullet/gym/pybullet_envs/ARS/log/lin_policy_plus_990_bla.npz new file mode 100644 index 0000000000000000000000000000000000000000..54fd39ba7d8a7d2e84f4c63d47c08415bc2e5357 GIT binary patch literal 1407 zcmZ`(doxrS_bCzw^D{_dVbHyw6|n!(x&(jWKo1 z+bP|8Z#a>nr-fnatxI45LZSZ}+t6_FIS-$0EMF4lhDBNO_#&>*a)Y^Lw5KJ_+;V@I z5Ell7`iBX5d^PMA5G>*oxJVEX&L`ehbec8IJjVRPpu}l#LnA}N#kSlqA>TG6G8hjc zv;xEwe<7b67AnGpkzAY-L3&?B3FW>2jnH6X5+4%hly?N#ib-OUC4Uw0aB(=F5~1m% z;kk~9F-b&$mKBriLyGqB@Nl0c;$30_&XIlI?Fz4USfJxwRhL}}O}l(DrpL3;g=%r1@zJ}GV>mZy=S&CO_&HFz zcD@{ydnkiNX6-07<6_CEwG63Tiej3jUFgT7O6r1~N@S$x5)!7@4$~Cw=B?!02e;4EoIMfCp3^YdEKMyCU~T~!mhnPc#V>Qas3c|p04?0Vsu&B%J12q8yW zo=qO!jvV&wfB2jshm-o1p8NXmg3Hj?L&1RxIP%4=cq2g>yr>SYE>KQP_r7k^Q z4(WQ8HmeL8KxVpnHn6z~{GzkGtt`aopfokdQPv9bTLLZjb%}`Kb-6V#sS4Z+hIH_h zW>mW789m!nf!<8FG;-$lK`WIb9i33Z`Oco=jT_`B`Bh2*ws0@H{|#DkwyP214)2Ru zR@;sEcLH^H;zh(1eKbJ2>H*T12~5QdFAX@WSG^pEL-olz6<#yo>~oq;8F>p)56X-dFPQ*)UhP7G2ewIH z+|<`%GzH$tK9KhHd;N0kMLKvHi#8uwmDAEJxzBBP. + """ + + def __init__(self, policy_params, update_filter=True): + Policy.__init__(self, policy_params) + self.weights = np.zeros(self.ac_dim * self.ob_dim, dtype=np.float64) + if "weights" in policy_params: + self.weights = policy_params["weights"] + if "mean" in policy_params: + self.observation_filter.mean = policy_params["mean"] + if "std" in policy_params: + self.observation_filter.std = policy_params["std"] + self.update_filter = update_filter + + def act(self, ob): + ob = self.observation_filter(ob, update=self.update_filter) + matrix_weights = np.reshape(self.weights, (self.ac_dim, self.ob_dim)) + return np.clip(np.dot(matrix_weights, ob), -1.0, 1.0) + + def get_weights_plus_stats(self): + + mu, std = self.observation_filter.get_stats() + aux = np.asarray([self.weights, mu, std]) + return aux diff --git a/examples/pybullet/gym/pybullet_envs/ARS/shared_noise.py b/examples/pybullet/gym/pybullet_envs/ARS/shared_noise.py new file mode 100644 index 000000000..1f4074920 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/ARS/shared_noise.py @@ -0,0 +1,41 @@ +"""TODO(jietan): DO NOT SUBMIT without one-line documentation for shared_noise. +Code in this file is copied and adapted from +https://github.com/ray-project/ray/tree/master/python/ray/rllib/es +TODO(jietan): DO NOT SUBMIT without a detailed description of shared_noise. +""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +import numpy as np + + +def create_shared_noise(): + """ + Create a large array of noise to be shared by all workers. Used + for avoiding the communication of the random perturbations delta. + """ + + seed = 12345 + count = 250000000 + noise = np.random.RandomState(seed).randn(count).astype(np.float64) + return noise + + +class SharedNoiseTable(object): + def __init__(self, noise, seed = 11): + + self.rg = np.random.RandomState(seed) + self.noise = noise + assert self.noise.dtype == np.float64 + + def get(self, i, dim): + return self.noise[i:i + dim] + + def sample_index(self, dim): + return self.rg.randint(0, len(self.noise) - dim + 1) + + def get_delta(self, dim): + idx = self.sample_index(dim) + return idx, self.get(idx, dim) + diff --git a/examples/pybullet/gym/pybullet_envs/ARS/start_ars_servers.py b/examples/pybullet/gym/pybullet_envs/ARS/start_ars_servers.py new file mode 100644 index 000000000..94aa6835f --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/ARS/start_ars_servers.py @@ -0,0 +1,28 @@ +"""TODO(jietan): DO NOT SUBMIT without one-line documentation for start_ars_servers. + +blaze build -c opt //experimental/users/jietan/ARS:start_ars_servers +blaze-bin/experimental/users/jietan/ARS/start_ars_servers + +TODO(jietan): DO NOT SUBMIT without a detailed description of start_ars_servers. +""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +import time +import subprocess +from absl import app +from absl import flags + +FLAGS = flags.FLAGS +flags.DEFINE_integer("num_servers", 8, "number of servers") + +def main(argv): + del argv # Unused. + for server_id in xrange(FLAGS.num_servers): + args = ["blaze-bin/experimental/users/jietan/ARS/ars_server", "--config_name=MINITAUR_GYM_CONFIG", "--server_id={}".format(server_id), "--run_on_borg=False"] + subprocess.Popen(args) + + +if __name__ == '__main__': + app.run(main) diff --git a/examples/pybullet/gym/pybullet_envs/ARS/train_ars.borg b/examples/pybullet/gym/pybullet_envs/ARS/train_ars.borg new file mode 100644 index 000000000..c09775b50 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/ARS/train_ars.borg @@ -0,0 +1,93 @@ +// Example borg file to do a parameter sweep. +// +// To run: +// echo `srcfs get_readonly`-`g4 p | head -1 | awk '{print $2}'` +// blaze build -c opt experimental/users/jietan/ARS:ars_server.par +// blaze build -c opt experimental/users/jietan/ARS:ars_client.par +// borgcfg --skip_confirmation --vars 'base_cl=191950338,my_cl=191950550,label=ars_react_nr01,config=MINITAUR_REACTIVE_CONFIG' experimental/users/jietan/ARS/train_ars.borg reload +// borgcfg --skip_confirmation --vars 'base_cl=191950338,my_cl=191950550,label=ars_react_rd01,config=MINITAUR_REACTIVE_RANDOMIZER_CONFIG' experimental/users/jietan/ARS/train_ars.borg reload + + +import '//production/borg/templates/lambda/buildtool_support.borg' as build +import '//production/borg/templates/lambda/dnsname.borg' as dns + +vars = { + cell = 'atlanta' + charged_user = 'robotics' + base_cl = 0 + my_cl = 0 + label = external + user = real_username() + workers = 8 + config = external + cns_home = "/cns/ij-d/home/%user%" + logdir = "%cns_home%/experiment/ARS/%label%.%base_cl%.%my_cl%/" +} + +service augmented_random_search { + runtime { + cell = vars.cell + } + + scheduling = { + priority = 100 + batch_quota = { + strategy = 'RUN_SOON' + } + deadline = 3600 * 24 + } + accounting = { + charged_user = vars.charged_user + } + requirements { + autopilot = true + } + params = { + mygoogle3 = build.google3dir(myfilename()) + experiment_dir = 'experimental/users/jietan/ARS/' + } + + job ars_server = { + runtime { + cell = vars.cell + } + name = real_username() + '_server_' + vars.label + replicas = vars.workers + binary_path = build.binfile_v2(params.mygoogle3, + params.experiment_dir + 'ars_server') + runfiles = binary_path + '.runfiles/google3/' + packages = { + package third_party = { + directory = runfiles + 'third_party/' + } + } + binary = build.binfile(params.mygoogle3, + params.experiment_dir + 'ars_server.par') + args = { + server_id = '%task%' + config_name = vars.config + port = '%port%' + run_on_borg = true + } + } + job ars_client = { + name = real_username() + '_client_' + vars.label + binary_path = build.binfile_v2(params.mygoogle3, + params.experiment_dir + 'ars_client') + runfiles = binary_path + '.runfiles/google3/' + packages = { + package third_party = { + directory = runfiles + 'third_party/' + } + } + binary = build.binfile(params.mygoogle3, + params.experiment_dir + 'ars_client.par') + args = { + server_address = dns.borg_dns_name(ars_server) + num_servers = vars.workers + config_name = vars.config + logdir = vars.logdir + run_on_borg = true + } + } +} diff --git a/examples/pybullet/gym/pybullet_envs/ARS/train_ars.py b/examples/pybullet/gym/pybullet_envs/ARS/train_ars.py new file mode 100644 index 000000000..147dbc6eb --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/ARS/train_ars.py @@ -0,0 +1,64 @@ +"""TODO(jietan): DO NOT SUBMIT without one-line documentation for train_ars. + +blaze build -c opt //experimental/users/jietan/ARS:train_ars +blaze-bin/experimental/users/jietan/ARS/train_ars \ +--logdir=/cns/ij-d/home/jietan/experiment/ARS/test1 \ +--config_name=MINITAUR_GYM_CONFIG +""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + + +import os +from absl import app +from absl import flags +import ars +import config_ars + +FLAGS = flags.FLAGS +flags.DEFINE_string('logdir', None, 'The directory to write the log file.') +flags.DEFINE_string('config_name', None, 'The name of the config dictionary') + + +def run_ars(config, logdir): + + env = config["env"]() + ob_dim = env.observation_space.shape[0] + ac_dim = env.action_space.shape[0] + + # set policy parameters. Possible filters: 'MeanStdFilter' for v2, 'NoFilter' for v1. + policy_params = { + 'type': 'linear', + 'ob_filter': config['filter'], + 'ob_dim': ob_dim, + 'ac_dim': ac_dim + } + + ARS = ars.ARSLearner( + env_callback=config['env'], + policy_params=policy_params, + num_deltas=config['num_directions'], + deltas_used=config['deltas_used'], + step_size=config['step_size'], + delta_std=config['delta_std'], + logdir=logdir, + rollout_length=config['rollout_length'], + shift=config['shift'], + params=config, + seed=config['seed']) + + return ARS.train(config['num_iterations']) + + +def main(argv): + del argv # Unused. + config = getattr(config_ars, FLAGS.config_name) + run_ars(config=config, logdir=FLAGS.logdir) + + +if __name__ == '__main__': + flags.mark_flag_as_required('logdir') + flags.mark_flag_as_required('config_name') + app.run(main) diff --git a/examples/pybullet/gym/pybullet_envs/ARS/train_ars_test.py b/examples/pybullet/gym/pybullet_envs/ARS/train_ars_test.py new file mode 100644 index 000000000..13f149fc5 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/ARS/train_ars_test.py @@ -0,0 +1,29 @@ +"""Tests for google3.experimental.users.jietan.ARS.train_ars. +blaze build -c opt //experimental/users/jietan/ARS:train_ars_test +blaze-bin/experimental/users/jietan/ARS/train_ars_test +""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +from absl import flags +from google3.testing.pybase import googletest +from google3.experimental.users.jietan.ARS import train_ars +from google3.experimental.users.jietan.ARS import config_ars + +FLAGS = flags.FLAGS +MAX_RETURN_AFTER_TWO_ITEATIONS = 0.0890905394617 + +class TrainArsTest(googletest.TestCase): + + def testArsTwoStepResult(self): + config = getattr(config_ars, "MINITAUR_REACTIVE_CONFIG") + config['num_iterations'] = 2 + info = train_ars.run_ars(config=config, logdir=FLAGS.test_tmpdir) + print (info) + self.assertAlmostEqual(info["max_reward"], MAX_RETURN_AFTER_TWO_ITEATIONS) + + +if __name__ == '__main__': + googletest.main() diff --git a/examples/pybullet/gym/pybullet_envs/ARS/utility.py b/examples/pybullet/gym/pybullet_envs/ARS/utility.py new file mode 100644 index 000000000..591418be5 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/ARS/utility.py @@ -0,0 +1,52 @@ + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +import os +import ruamel.yaml as yaml + +def save_config(config, logdir): + """Save a new configuration by name. + + If a logging directory is specified, is will be created and the configuration + will be stored there. Otherwise, a log message will be printed. + + Args: + config: Configuration object. + logdir: Location for writing summaries and checkpoints if specified. + + Returns: + Configuration object. + """ + message = 'Start a new run and write summaries and checkpoints to {}.' + print(message.format(logdir)) + config_path = os.path.join(logdir, 'config.yaml') + yaml.dump(config, config_path, default_flow_style=False) + return config + + +def load_config(logdir): + """Load a configuration from the log directory. + + Args: + logdir: The logging directory containing the configuration file. + + Raises: + IOError: The logging directory does not contain a configuration file. + + Returns: + Configuration object. + """ + config_path = logdir and os.path.join(logdir, 'config.yaml') + if not config_path: + message = ( + 'Cannot resume an existing run since the logging directory does not ' + 'contain a configuration file.') + raise IOError(message) + print("config_path=",config_path) + + stream = open(config_path, 'r') + config = yaml.load(stream) + message = 'Resume run and write summaries and checkpoints to {}.' + print(message.format(logdir)) + return config diff --git a/examples/pybullet/gym/pybullet_envs/ARS/utils.py b/examples/pybullet/gym/pybullet_envs/ARS/utils.py new file mode 100644 index 000000000..3b7e03afa --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/ARS/utils.py @@ -0,0 +1,28 @@ +# Code in this file is copied and adapted from +# https://github.com/openai/evolution-strategies-starter. + +import numpy as np + +def itergroups(items, group_size): + assert group_size >= 1 + group = [] + for x in items: + group.append(x) + if len(group) == group_size: + yield tuple(group) + del group[:] + if group: + yield tuple(group) + + + +def batched_weighted_sum(weights, vecs, batch_size): + total = 0 + num_items_summed = 0 + for batch_weights, batch_vecs in zip(itergroups(weights, batch_size), + itergroups(vecs, batch_size)): + assert len(batch_weights) == len(batch_vecs) <= batch_size + total += np.dot(np.asarray(batch_weights, dtype=np.float64), + np.asarray(batch_vecs, dtype=np.float64)) + num_items_summed += len(batch_weights) + return total, num_items_summed From 9c77e07494083c09e0ad6f0157cd521dd23e701d Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Thu, 12 Apr 2018 00:09:44 -0700 Subject: [PATCH 44/68] upgrade from tinyxml to tinyxml2 --- Extras/BulletRobotics/CMakeLists.txt | 5 +- .../BulletXmlWorldImporter/CMakeLists.txt | 8 +- .../btBulletXmlWorldImporter.cpp | 135 +- .../btBulletXmlWorldImporter.h | 33 +- .../BulletXmlWorldImporter/premake4.lua | 6 +- .../BulletXmlWorldImporter/tinystr.cpp | 111 - .../BulletXmlWorldImporter/tinystr.h | 305 -- .../BulletXmlWorldImporter/tinyxml.cpp | 1886 ----------- .../BulletXmlWorldImporter/tinyxml.h | 1805 ----------- .../BulletXmlWorldImporter/tinyxmlerror.cpp | 52 - .../BulletXmlWorldImporter/tinyxmlparser.cpp | 1638 ---------- examples/ExampleBrowser/CMakeLists.txt | 11 +- examples/ExampleBrowser/premake4.lua | 7 +- .../ImportColladaDemo/LoadMeshFromCollada.cpp | 71 +- .../ImportMJCFDemo/BulletMJCFImporter.cpp | 48 +- .../Importers/ImportURDFDemo/UrdfParser.cpp | 210 +- .../Importers/ImportURDFDemo/UrdfParser.h | 27 +- examples/RobotSimulator/premake4.lua | 5 +- examples/SharedMemory/CMakeLists.txt | 5 +- .../plugins/tinyRendererPlugin/premake4.lua | 8 +- examples/SharedMemory/premake4.lua | 5 +- examples/SharedMemory/tcp/premake4.lua | 5 +- examples/SharedMemory/udp/premake4.lua | 5 +- examples/ThirdPartyLibs/tinyxml/tinystr.cpp | 111 - examples/ThirdPartyLibs/tinyxml/tinystr.h | 305 -- examples/ThirdPartyLibs/tinyxml/tinyxml.cpp | 1886 ----------- examples/ThirdPartyLibs/tinyxml/tinyxml.h | 1805 ----------- .../ThirdPartyLibs/tinyxml/tinyxmlerror.cpp | 52 - .../ThirdPartyLibs/tinyxml/tinyxmlparser.cpp | 1638 ---------- examples/ThirdPartyLibs/tinyxml2/tinyxml2.cpp | 2826 +++++++++++++++++ examples/ThirdPartyLibs/tinyxml2/tinyxml2.h | 2314 ++++++++++++++ examples/TwoJoint/CMakeLists.txt | 5 +- examples/pybullet/CMakeLists.txt | 5 +- examples/pybullet/premake4.lua | 5 +- setup.py | 5 +- test/InverseDynamics/CMakeLists.txt | 7 +- test/InverseDynamics/premake4.lua | 5 +- test/SharedMemory/CMakeLists.txt | 5 +- test/SharedMemory/premake4.lua | 15 +- 39 files changed, 5439 insertions(+), 11941 deletions(-) delete mode 100644 Extras/Serialize/BulletXmlWorldImporter/tinystr.cpp delete mode 100644 Extras/Serialize/BulletXmlWorldImporter/tinystr.h delete mode 100644 Extras/Serialize/BulletXmlWorldImporter/tinyxml.cpp delete mode 100644 Extras/Serialize/BulletXmlWorldImporter/tinyxml.h delete mode 100644 Extras/Serialize/BulletXmlWorldImporter/tinyxmlerror.cpp delete mode 100644 Extras/Serialize/BulletXmlWorldImporter/tinyxmlparser.cpp delete mode 100644 examples/ThirdPartyLibs/tinyxml/tinystr.cpp delete mode 100644 examples/ThirdPartyLibs/tinyxml/tinystr.h delete mode 100644 examples/ThirdPartyLibs/tinyxml/tinyxml.cpp delete mode 100644 examples/ThirdPartyLibs/tinyxml/tinyxml.h delete mode 100644 examples/ThirdPartyLibs/tinyxml/tinyxmlerror.cpp delete mode 100644 examples/ThirdPartyLibs/tinyxml/tinyxmlparser.cpp create mode 100644 examples/ThirdPartyLibs/tinyxml2/tinyxml2.cpp create mode 100644 examples/ThirdPartyLibs/tinyxml2/tinyxml2.h diff --git a/Extras/BulletRobotics/CMakeLists.txt b/Extras/BulletRobotics/CMakeLists.txt index b2c4523b6..08595cbab 100644 --- a/Extras/BulletRobotics/CMakeLists.txt +++ b/Extras/BulletRobotics/CMakeLists.txt @@ -59,10 +59,7 @@ SET(BulletRobotics_SRCS ../../examples/Utils/b3ReferenceFrameHelper.hpp ../../examples/Utils/ChromeTraceUtil.cpp - ../../examples/ThirdPartyLibs/tinyxml/tinystr.cpp - ../../examples/ThirdPartyLibs/tinyxml/tinyxml.cpp - ../../examples/ThirdPartyLibs/tinyxml/tinyxmlerror.cpp - ../../examples/ThirdPartyLibs/tinyxml/tinyxmlparser.cpp + ../../examples/ThirdPartyLibs/tinyxml2/tinyxml2.cpp ../../examples/ThirdPartyLibs/Wavefront/tiny_obj_loader.cpp ../../examples/ThirdPartyLibs/Wavefront/tiny_obj_loader.h diff --git a/Extras/Serialize/BulletXmlWorldImporter/CMakeLists.txt b/Extras/Serialize/BulletXmlWorldImporter/CMakeLists.txt index 3a9606288..9fd125e44 100644 --- a/Extras/Serialize/BulletXmlWorldImporter/CMakeLists.txt +++ b/Extras/Serialize/BulletXmlWorldImporter/CMakeLists.txt @@ -2,6 +2,7 @@ INCLUDE_DIRECTORIES( ${BULLET_PHYSICS_SOURCE_DIR}/src ${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/BulletFileLoader ${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/BulletWorldImporter + ${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs/tinyxml2 ) ADD_LIBRARY( @@ -10,12 +11,7 @@ ADD_LIBRARY( btBulletXmlWorldImporter.h string_split.cpp string_split.h - tinyxml.cpp - tinyxml.h - tinystr.cpp - tinystr.h - tinyxmlerror.cpp - tinyxmlparser.cpp + ${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs/tinyxml2/tinyxml2.cpp ) SET_TARGET_PROPERTIES(BulletXmlWorldImporter PROPERTIES VERSION ${BULLET_VERSION}) diff --git a/Extras/Serialize/BulletXmlWorldImporter/btBulletXmlWorldImporter.cpp b/Extras/Serialize/BulletXmlWorldImporter/btBulletXmlWorldImporter.cpp index e58dbc1f9..800ec7014 100644 --- a/Extras/Serialize/BulletXmlWorldImporter/btBulletXmlWorldImporter.cpp +++ b/Extras/Serialize/BulletXmlWorldImporter/btBulletXmlWorldImporter.cpp @@ -14,9 +14,10 @@ subject to the following restrictions: */ #include "btBulletXmlWorldImporter.h" -#include "tinyxml.h" +#include "tinyxml2.h" #include "btBulletDynamicsCommon.h" #include "string_split.h" +using namespace tinyxml2; struct MyLocalCaster { @@ -43,12 +44,12 @@ btBulletXmlWorldImporter::~btBulletXmlWorldImporter() } #if 0 -static int get_double_attribute_by_name(const TiXmlElement* pElement, const char* attribName,double* value) +static int get_double_attribute_by_name(const XMLElement* pElement, const char* attribName,double* value) { if ( !pElement ) return 0; - const TiXmlAttribute* pAttrib=pElement->FirstAttribute(); + const XMLAttribute* pAttrib=pElement->FirstAttribute(); while (pAttrib) { if (pAttrib->Name()==attribName) @@ -60,16 +61,16 @@ static int get_double_attribute_by_name(const TiXmlElement* pElement, const char } #endif -static int get_int_attribute_by_name(const TiXmlElement* pElement, const char* attribName,int* value) +static int get_int_attribute_by_name(const XMLElement* pElement, const char* attribName,int* value) { if ( !pElement ) return 0; - const TiXmlAttribute* pAttrib=pElement->FirstAttribute(); + const XMLAttribute* pAttrib=pElement->FirstAttribute(); while (pAttrib) { if (!strcmp(pAttrib->Name(),attribName)) - if (pAttrib->QueryIntValue(value)==TIXML_SUCCESS) + if (pAttrib->QueryIntValue(value)==XML_SUCCESS) return 1; // if (pAttrib->QueryDoubleValue(&dval)==TIXML_SUCCESS) printf( " d=%1.1f", dval); pAttrib=pAttrib->Next(); @@ -84,7 +85,7 @@ void stringToFloatArray(const std::string& string, btAlignedObjectArray& bullet_utils::split( pieces, string, " "); for ( int i = 0; i < pieces.size(); ++i) { - assert(pieces[i]!=""); + btAssert(pieces[i]!=""); floats.push_back((float)atof(pieces[i].c_str())); } @@ -95,7 +96,7 @@ static btVector3FloatData TextToVector3Data(const char* txt) btAssert(txt); btAlignedObjectArray floats; stringToFloatArray(txt, floats); - assert(floats.size()==4); + btAssert(floats.size()==4); btVector3FloatData vec4; vec4.m_floats[0] = floats[0]; @@ -105,13 +106,13 @@ static btVector3FloatData TextToVector3Data(const char* txt) return vec4; } -void btBulletXmlWorldImporter::deSerializeVector3FloatData(TiXmlNode* pParent,btAlignedObjectArray& vectors) +void btBulletXmlWorldImporter::deSerializeVector3FloatData(XMLNode* pParent,btAlignedObjectArray& vectors) { - TiXmlNode* flNode = pParent->FirstChild("m_floats"); + XMLNode* flNode = pParent->FirstChildElement("m_floats"); btAssert(flNode); - while (flNode && flNode->FirstChild()) + while (flNode && flNode->FirstChildElement()) { - TiXmlText* pText = flNode->FirstChild()->ToText(); + XMLText* pText = flNode->FirstChildElement()->ToText(); // printf("value = %s\n",pText->Value()); btVector3FloatData vec4 = TextToVector3Data(pText->Value()); vectors.push_back(vec4); @@ -122,20 +123,20 @@ void btBulletXmlWorldImporter::deSerializeVector3FloatData(TiXmlNode* pParent,bt #define SET_INT_VALUE(xmlnode, targetdata, argname) \ - btAssert((xmlnode)->FirstChild(#argname) && (xmlnode)->FirstChild(#argname)->ToElement());\ - if ((xmlnode)->FirstChild(#argname) && (xmlnode)->FirstChild(#argname)->ToElement())\ - (targetdata)->argname= (int)atof(xmlnode->FirstChild(#argname)->ToElement()->GetText()); + btAssert((xmlnode)->FirstChildElement(#argname) && (xmlnode)->FirstChildElement(#argname)->ToElement());\ + if ((xmlnode)->FirstChildElement(#argname) && (xmlnode)->FirstChildElement(#argname)->ToElement())\ + (targetdata)->argname= (int)atof(xmlnode->FirstChildElement(#argname)->ToElement()->GetText()); #define SET_FLOAT_VALUE(xmlnode, targetdata, argname) \ - btAssert((xmlnode)->FirstChild(#argname) && (xmlnode)->FirstChild(#argname)->ToElement());\ - if ((xmlnode)->FirstChild(#argname) && (xmlnode)->FirstChild(#argname)->ToElement())\ - (targetdata)->argname= (float)atof(xmlnode->FirstChild(#argname)->ToElement()->GetText()); + btAssert((xmlnode)->FirstChildElement(#argname) && (xmlnode)->FirstChildElement(#argname)->ToElement());\ + if ((xmlnode)->FirstChildElement(#argname) && (xmlnode)->FirstChildElement(#argname)->ToElement())\ + (targetdata)->argname= (float)atof(xmlnode->FirstChildElement(#argname)->ToElement()->GetText()); #define SET_POINTER_VALUE(xmlnode, targetdata, argname, pointertype) \ {\ - TiXmlNode* node = xmlnode->FirstChild(#argname);\ + XMLNode* node = xmlnode->FirstChildElement(#argname);\ btAssert(node);\ if (node)\ {\ @@ -148,11 +149,11 @@ void btBulletXmlWorldImporter::deSerializeVector3FloatData(TiXmlNode* pParent,bt #define SET_VECTOR4_VALUE(xmlnode, targetdata, argname) \ {\ - TiXmlNode* flNode = xmlnode->FirstChild(#argname);\ + XMLNode* flNode = xmlnode->FirstChildElement(#argname);\ btAssert(flNode);\ - if (flNode && flNode->FirstChild())\ + if (flNode && flNode->FirstChildElement())\ {\ - const char* txt= flNode->FirstChild()->ToElement()->GetText();\ + const char* txt= flNode->FirstChildElement()->ToElement()->GetText();\ btVector3FloatData vec4 = TextToVector3Data(txt);\ (targetdata)->argname.m_floats[0] = vec4.m_floats[0];\ (targetdata)->argname.m_floats[1] = vec4.m_floats[1];\ @@ -164,22 +165,22 @@ void btBulletXmlWorldImporter::deSerializeVector3FloatData(TiXmlNode* pParent,bt #define SET_MATRIX33_VALUE(n, targetdata, argname) \ {\ - TiXmlNode* xmlnode = n->FirstChild(#argname);\ + XMLNode* xmlnode = n->FirstChildElement(#argname);\ btAssert(xmlnode);\ if (xmlnode)\ {\ - TiXmlNode* eleNode = xmlnode->FirstChild("m_el");\ + XMLNode* eleNode = xmlnode->FirstChildElement("m_el");\ btAssert(eleNode);\ - if (eleNode&& eleNode->FirstChild())\ + if (eleNode&& eleNode->FirstChildElement())\ {\ - const char* txt= eleNode->FirstChild()->ToElement()->GetText();\ + const char* txt= eleNode->FirstChildElement()->ToElement()->GetText();\ btVector3FloatData vec4 = TextToVector3Data(txt);\ (targetdata)->argname.m_el[0].m_floats[0] = vec4.m_floats[0];\ (targetdata)->argname.m_el[0].m_floats[1] = vec4.m_floats[1];\ (targetdata)->argname.m_el[0].m_floats[2] = vec4.m_floats[2];\ (targetdata)->argname.m_el[0].m_floats[3] = vec4.m_floats[3];\ \ - TiXmlNode* n1 = eleNode->FirstChild()->NextSibling();\ + XMLNode* n1 = eleNode->FirstChildElement()->NextSibling();\ btAssert(n1);\ if (n1)\ {\ @@ -190,7 +191,7 @@ void btBulletXmlWorldImporter::deSerializeVector3FloatData(TiXmlNode* pParent,bt (targetdata)->argname.m_el[1].m_floats[2] = vec4.m_floats[2];\ (targetdata)->argname.m_el[1].m_floats[3] = vec4.m_floats[3];\ \ - TiXmlNode* n2 = n1->NextSibling();\ + XMLNode* n2 = n1->NextSibling();\ btAssert(n2);\ if (n2)\ {\ @@ -208,7 +209,7 @@ void btBulletXmlWorldImporter::deSerializeVector3FloatData(TiXmlNode* pParent,bt #define SET_TRANSFORM_VALUE(n, targetdata, argname) \ {\ - TiXmlNode* trNode = n->FirstChild(#argname);\ + XMLNode* trNode = n->FirstChildElement(#argname);\ btAssert(trNode);\ if (trNode)\ {\ @@ -218,7 +219,7 @@ void btBulletXmlWorldImporter::deSerializeVector3FloatData(TiXmlNode* pParent,bt }\ -void btBulletXmlWorldImporter::deSerializeCollisionShapeData(TiXmlNode* pParent, btCollisionShapeData* colShapeData) +void btBulletXmlWorldImporter::deSerializeCollisionShapeData(XMLNode* pParent, btCollisionShapeData* colShapeData) { SET_INT_VALUE(pParent,colShapeData,m_shapeType) colShapeData->m_name = 0; @@ -226,17 +227,17 @@ void btBulletXmlWorldImporter::deSerializeCollisionShapeData(TiXmlNode* pParent, -void btBulletXmlWorldImporter::deSerializeConvexHullShapeData(TiXmlNode* pParent) +void btBulletXmlWorldImporter::deSerializeConvexHullShapeData(XMLNode* pParent) { MyLocalCaster cast; get_int_attribute_by_name(pParent->ToElement(),"pointer",&cast.m_int); btConvexHullShapeData* convexHullData = (btConvexHullShapeData*)btAlignedAlloc(sizeof(btConvexHullShapeData), 16); - TiXmlNode* xmlConvexInt = pParent->FirstChild("m_convexInternalShapeData"); + XMLNode* xmlConvexInt = pParent->FirstChildElement("m_convexInternalShapeData"); btAssert(xmlConvexInt); - TiXmlNode* xmlColShape = xmlConvexInt ->FirstChild("m_collisionShapeData"); + XMLNode* xmlColShape = xmlConvexInt ->FirstChildElement("m_collisionShapeData"); btAssert(xmlColShape); deSerializeCollisionShapeData(xmlColShape,&convexHullData->m_convexInternalShapeData.m_collisionShapeData); @@ -249,7 +250,7 @@ void btBulletXmlWorldImporter::deSerializeConvexHullShapeData(TiXmlNode* pParent //#define SET_POINTER_VALUE(xmlnode, targetdata, argname, pointertype) { - TiXmlNode* node = pParent->FirstChild("m_unscaledPointsFloatPtr"); + XMLNode* node = pParent->FirstChildElement("m_unscaledPointsFloatPtr"); btAssert(node); if (node) { @@ -268,7 +269,7 @@ void btBulletXmlWorldImporter::deSerializeConvexHullShapeData(TiXmlNode* pParent m_pointerLookup.insert(cast.m_ptr,convexHullData); } -void btBulletXmlWorldImporter::deSerializeCompoundShapeChildData(TiXmlNode* pParent) +void btBulletXmlWorldImporter::deSerializeCompoundShapeChildData(XMLNode* pParent) { MyLocalCaster cast; get_int_attribute_by_name(pParent->ToElement(),"pointer",&cast.m_int); @@ -276,10 +277,10 @@ void btBulletXmlWorldImporter::deSerializeCompoundShapeChildData(TiXmlNode* pPar int numChildren = 0; btAlignedObjectArray* compoundChildArrayPtr = new btAlignedObjectArray; { - TiXmlNode* transNode = pParent->FirstChild("m_transform"); - TiXmlNode* colShapeNode = pParent->FirstChild("m_childShape"); - TiXmlNode* marginNode = pParent->FirstChild("m_childMargin"); - TiXmlNode* childTypeNode = pParent->FirstChild("m_childShapeType"); + XMLNode* transNode = pParent->FirstChildElement("m_transform"); + XMLNode* colShapeNode = pParent->FirstChildElement("m_childShape"); + XMLNode* marginNode = pParent->FirstChildElement("m_childMargin"); + XMLNode* childTypeNode = pParent->FirstChildElement("m_childShapeType"); int i=0; while (transNode && colShapeNode && marginNode && childTypeNode) @@ -305,10 +306,10 @@ void btBulletXmlWorldImporter::deSerializeCompoundShapeChildData(TiXmlNode* pPar compoundChildArrayPtr->at(i).m_childMargin = (float)atof(marginNode->ToElement()->GetText()); } - transNode = transNode->NextSibling("m_transform"); - colShapeNode = colShapeNode->NextSibling("m_childShape"); - marginNode = marginNode->NextSibling("m_childMargin"); - childTypeNode = childTypeNode->NextSibling("m_childShapeType"); + transNode = transNode->NextSiblingElement("m_transform"); + colShapeNode = colShapeNode->NextSiblingElement("m_childShape"); + marginNode = marginNode->NextSiblingElement("m_childMargin"); + childTypeNode = childTypeNode->NextSiblingElement("m_childShapeType"); i++; } @@ -326,24 +327,24 @@ void btBulletXmlWorldImporter::deSerializeCompoundShapeChildData(TiXmlNode* pPar } -void btBulletXmlWorldImporter::deSerializeCompoundShapeData(TiXmlNode* pParent) +void btBulletXmlWorldImporter::deSerializeCompoundShapeData(XMLNode* pParent) { MyLocalCaster cast; get_int_attribute_by_name(pParent->ToElement(),"pointer",&cast.m_int); btCompoundShapeData* compoundData = (btCompoundShapeData*) btAlignedAlloc(sizeof(btCompoundShapeData),16); - TiXmlNode* xmlColShape = pParent ->FirstChild("m_collisionShapeData"); + XMLNode* xmlColShape = pParent ->FirstChildElement("m_collisionShapeData"); btAssert(xmlColShape); deSerializeCollisionShapeData(xmlColShape,&compoundData->m_collisionShapeData); SET_INT_VALUE(pParent, compoundData,m_numChildShapes); - TiXmlNode* xmlShapeData = pParent->FirstChild("m_collisionShapeData"); + XMLNode* xmlShapeData = pParent->FirstChildElement("m_collisionShapeData"); btAssert(xmlShapeData ); { - TiXmlNode* node = pParent->FirstChild("m_childShapePtr");\ + XMLNode* node = pParent->FirstChildElement("m_childShapePtr");\ btAssert(node); while (node) { @@ -351,7 +352,7 @@ void btBulletXmlWorldImporter::deSerializeCompoundShapeData(TiXmlNode* pParent) MyLocalCaster cast; cast.m_int = (int) atof(txt); compoundData->m_childShapePtr = (btCompoundShapeChildData*) cast.m_ptr; - node = node->NextSibling("m_childShapePtr"); + node = node->NextSiblingElement("m_childShapePtr"); } //SET_POINTER_VALUE(xmlColShape, *compoundData,m_childShapePtr,btCompoundShapeChildData*); @@ -363,14 +364,14 @@ void btBulletXmlWorldImporter::deSerializeCompoundShapeData(TiXmlNode* pParent) } -void btBulletXmlWorldImporter::deSerializeStaticPlaneShapeData(TiXmlNode* pParent) +void btBulletXmlWorldImporter::deSerializeStaticPlaneShapeData(XMLNode* pParent) { MyLocalCaster cast; get_int_attribute_by_name(pParent->ToElement(),"pointer",&cast.m_int); btStaticPlaneShapeData* planeData = (btStaticPlaneShapeData*) btAlignedAlloc(sizeof(btStaticPlaneShapeData),16); - TiXmlNode* xmlShapeData = pParent->FirstChild("m_collisionShapeData"); + XMLNode* xmlShapeData = pParent->FirstChildElement("m_collisionShapeData"); btAssert(xmlShapeData ); deSerializeCollisionShapeData(xmlShapeData,&planeData->m_collisionShapeData); @@ -383,7 +384,7 @@ void btBulletXmlWorldImporter::deSerializeStaticPlaneShapeData(TiXmlNode* pParen } -void btBulletXmlWorldImporter::deSerializeDynamicsWorldData(TiXmlNode* pParent) +void btBulletXmlWorldImporter::deSerializeDynamicsWorldData(XMLNode* pParent) { btContactSolverInfo solverInfo; //btVector3 gravity(0,0,0); @@ -393,7 +394,7 @@ void btBulletXmlWorldImporter::deSerializeDynamicsWorldData(TiXmlNode* pParent) //gravity and world info } -void btBulletXmlWorldImporter::deSerializeConvexInternalShapeData(TiXmlNode* pParent) +void btBulletXmlWorldImporter::deSerializeConvexInternalShapeData(XMLNode* pParent) { MyLocalCaster cast; get_int_attribute_by_name(pParent->ToElement(),"pointer",&cast.m_int); @@ -402,7 +403,7 @@ void btBulletXmlWorldImporter::deSerializeConvexInternalShapeData(TiXmlNode* pPa btConvexInternalShapeData* convexShape = (btConvexInternalShapeData*) btAlignedAlloc(sizeof(btConvexInternalShapeData),16); memset(convexShape,0,sizeof(btConvexInternalShapeData)); - TiXmlNode* xmlShapeData = pParent->FirstChild("m_collisionShapeData"); + XMLNode* xmlShapeData = pParent->FirstChildElement("m_collisionShapeData"); btAssert(xmlShapeData ); deSerializeCollisionShapeData(xmlShapeData,&convexShape->m_collisionShapeData); @@ -433,7 +434,7 @@ enum btTypedConstraintType */ -void btBulletXmlWorldImporter::deSerializeGeneric6DofConstraintData(TiXmlNode* pParent) +void btBulletXmlWorldImporter::deSerializeGeneric6DofConstraintData(XMLNode* pParent) { MyLocalCaster cast; get_int_attribute_by_name(pParent->ToElement(),"pointer",&cast.m_int); @@ -441,7 +442,7 @@ void btBulletXmlWorldImporter::deSerializeGeneric6DofConstraintData(TiXmlNode* p btGeneric6DofConstraintData2* dof6Data = (btGeneric6DofConstraintData2*)btAlignedAlloc(sizeof(btGeneric6DofConstraintData2),16); - TiXmlNode* n = pParent->FirstChild("m_typeConstraintData"); + XMLNode* n = pParent->FirstChildElement("m_typeConstraintData"); if (n) { SET_POINTER_VALUE(n,dof6Data->m_typeConstraintData,m_rbA,btRigidBodyData*); @@ -473,7 +474,7 @@ void btBulletXmlWorldImporter::deSerializeGeneric6DofConstraintData(TiXmlNode* p m_pointerLookup.insert(cast.m_ptr,dof6Data); } -void btBulletXmlWorldImporter::deSerializeRigidBodyFloatData(TiXmlNode* pParent) +void btBulletXmlWorldImporter::deSerializeRigidBodyFloatData(XMLNode* pParent) { MyLocalCaster cast; @@ -485,7 +486,7 @@ void btBulletXmlWorldImporter::deSerializeRigidBodyFloatData(TiXmlNode* pParent) btRigidBodyData* rbData = (btRigidBodyData*)btAlignedAlloc(sizeof(btRigidBodyData),16); - TiXmlNode* n = pParent->FirstChild("m_collisionObjectData"); + XMLNode* n = pParent->FirstChildElement("m_collisionObjectData"); if (n) { @@ -661,14 +662,14 @@ void btBulletXmlWorldImporter::fixupCollisionDataPointers(btCollisionShapeData* } -void btBulletXmlWorldImporter::auto_serialize_root_level_children(TiXmlNode* pParent) +void btBulletXmlWorldImporter::auto_serialize_root_level_children(XMLNode* pParent) { int numChildren = 0; btAssert(pParent); if (pParent) { - TiXmlNode*pChild; - for ( pChild = pParent->FirstChild(); pChild != 0; pChild = pChild->NextSibling(), numChildren++) + XMLNode*pChild; + for ( pChild = pParent->FirstChildElement(); pChild != 0; pChild = pChild->NextSibling(), numChildren++) { // printf("child Name=%s\n", pChild->Value()); if (!strcmp(pChild->Value(),"btVector3FloatData")) @@ -848,15 +849,15 @@ void btBulletXmlWorldImporter::auto_serialize_root_level_children(TiXmlNode* pPa } } -void btBulletXmlWorldImporter::auto_serialize(TiXmlNode* pParent) +void btBulletXmlWorldImporter::auto_serialize(XMLNode* pParent) { -// TiXmlElement* root = pParent->FirstChildElement("bullet_physics"); +// XMLElement* root = pParent->FirstChildElement("bullet_physics"); if (pParent) { - TiXmlNode*pChild; - for ( pChild = pParent->FirstChild(); pChild != 0; pChild = pChild->NextSibling()) + XMLNode*pChild; + for ( pChild = pParent->FirstChildElement(); pChild != 0; pChild = pChild->NextSibling()) { - if (pChild->Type()==TiXmlNode::TINYXML_ELEMENT) + //if (pChild->Type()==XMLNode::TINYXML_ELEMENT) { // printf("root Name=%s\n", pChild->Value()); auto_serialize_root_level_children(pChild); @@ -873,9 +874,9 @@ void btBulletXmlWorldImporter::auto_serialize(TiXmlNode* pParent) bool btBulletXmlWorldImporter::loadFile(const char* fileName) { - TiXmlDocument doc(fileName); + XMLDocument doc; - bool loadOkay = doc.LoadFile(); + bool loadOkay = doc.LoadFile(fileName); //dump_to_stdout(&doc,0); diff --git a/Extras/Serialize/BulletXmlWorldImporter/btBulletXmlWorldImporter.h b/Extras/Serialize/BulletXmlWorldImporter/btBulletXmlWorldImporter.h index 99686c8a0..aabf2576a 100644 --- a/Extras/Serialize/BulletXmlWorldImporter/btBulletXmlWorldImporter.h +++ b/Extras/Serialize/BulletXmlWorldImporter/btBulletXmlWorldImporter.h @@ -19,7 +19,12 @@ subject to the following restrictions: #include "LinearMath/btScalar.h" class btDynamicsWorld; -class TiXmlNode; + +namespace tinyxml2 +{ + class XMLNode; +}; + struct btConvexInternalShapeData; struct btCollisionShapeData; #ifdef BT_USE_DOUBLE_PRECISION @@ -40,6 +45,8 @@ struct btCompoundShapeChildData; #include "LinearMath/btAlignedObjectArray.h" #include "btWorldImporter.h" + + class btBulletXmlWorldImporter : public btWorldImporter { @@ -52,28 +59,28 @@ protected: int m_fileVersion; bool m_fileOk; - void auto_serialize_root_level_children(TiXmlNode* pParent); - void auto_serialize(TiXmlNode* pParent); + void auto_serialize_root_level_children(tinyxml2::XMLNode* pParent); + void auto_serialize(tinyxml2::XMLNode* pParent); - void deSerializeVector3FloatData(TiXmlNode* pParent,btAlignedObjectArray& vectors); + void deSerializeVector3FloatData(tinyxml2::XMLNode* pParent,btAlignedObjectArray& vectors); void fixupCollisionDataPointers(btCollisionShapeData* shapeData); void fixupConstraintData(btTypedConstraintData2* tcd); //collision shapes data - void deSerializeCollisionShapeData(TiXmlNode* pParent,btCollisionShapeData* colShapeData); - void deSerializeConvexInternalShapeData(TiXmlNode* pParent); - void deSerializeStaticPlaneShapeData(TiXmlNode* pParent); - void deSerializeCompoundShapeData(TiXmlNode* pParent); - void deSerializeCompoundShapeChildData(TiXmlNode* pParent); - void deSerializeConvexHullShapeData(TiXmlNode* pParent); - void deSerializeDynamicsWorldData(TiXmlNode* parent); + void deSerializeCollisionShapeData(tinyxml2::XMLNode* pParent,btCollisionShapeData* colShapeData); + void deSerializeConvexInternalShapeData(tinyxml2::XMLNode* pParent); + void deSerializeStaticPlaneShapeData(tinyxml2::XMLNode* pParent); + void deSerializeCompoundShapeData(tinyxml2::XMLNode* pParent); + void deSerializeCompoundShapeChildData(tinyxml2::XMLNode* pParent); + void deSerializeConvexHullShapeData(tinyxml2::XMLNode* pParent); + void deSerializeDynamicsWorldData(tinyxml2::XMLNode* parent); ///bodies - void deSerializeRigidBodyFloatData(TiXmlNode* pParent); + void deSerializeRigidBodyFloatData(tinyxml2::XMLNode* pParent); ///constraints - void deSerializeGeneric6DofConstraintData(TiXmlNode* pParent); + void deSerializeGeneric6DofConstraintData(tinyxml2::XMLNode* pParent); public: btBulletXmlWorldImporter(btDynamicsWorld* world); diff --git a/Extras/Serialize/BulletXmlWorldImporter/premake4.lua b/Extras/Serialize/BulletXmlWorldImporter/premake4.lua index d940dfd8a..dded9cff4 100644 --- a/Extras/Serialize/BulletXmlWorldImporter/premake4.lua +++ b/Extras/Serialize/BulletXmlWorldImporter/premake4.lua @@ -5,10 +5,12 @@ includedirs { "../BulletWorldImporter", "../BulletFileLoader", - "../../../src" + "../../../src", + "../../../examples/ThirdPartyLibs/tinyxml2" } files { "**.cpp", - "**.h" + "**.h", + "../../../examples/ThirdPartyLibs/tinyxml2/tinyxml2.cpp", } diff --git a/Extras/Serialize/BulletXmlWorldImporter/tinystr.cpp b/Extras/Serialize/BulletXmlWorldImporter/tinystr.cpp deleted file mode 100644 index 066576820..000000000 --- a/Extras/Serialize/BulletXmlWorldImporter/tinystr.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/* -www.sourceforge.net/projects/tinyxml - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any -damages arising from the use of this software. - -Permission is granted to anyone to use this software for any -purpose, including commercial applications, and to alter it and -redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must -not claim that you wrote the original software. If you use this -software in a product, an acknowledgment in the product documentation -would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and -must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source -distribution. -*/ - - -#ifndef TIXML_USE_STL - -#include "tinystr.h" - -// Error value for find primitive -const TiXmlString::size_type TiXmlString::npos = static_cast< TiXmlString::size_type >(-1); - - -// Null rep. -TiXmlString::Rep TiXmlString::nullrep_ = { 0, 0, { '\0' } }; - - -void TiXmlString::reserve (size_type cap) -{ - if (cap > capacity()) - { - TiXmlString tmp; - tmp.init(length(), cap); - memcpy(tmp.start(), data(), length()); - swap(tmp); - } -} - - -TiXmlString& TiXmlString::assign(const char* str, size_type len) -{ - size_type cap = capacity(); - if (len > cap || cap > 3*(len + 8)) - { - TiXmlString tmp; - tmp.init(len); - memcpy(tmp.start(), str, len); - swap(tmp); - } - else - { - memmove(start(), str, len); - set_size(len); - } - return *this; -} - - -TiXmlString& TiXmlString::append(const char* str, size_type len) -{ - size_type newsize = length() + len; - if (newsize > capacity()) - { - reserve (newsize + capacity()); - } - memmove(finish(), str, len); - set_size(newsize); - return *this; -} - - -TiXmlString operator + (const TiXmlString & a, const TiXmlString & b) -{ - TiXmlString tmp; - tmp.reserve(a.length() + b.length()); - tmp += a; - tmp += b; - return tmp; -} - -TiXmlString operator + (const TiXmlString & a, const char* b) -{ - TiXmlString tmp; - TiXmlString::size_type b_len = static_cast( strlen(b) ); - tmp.reserve(a.length() + b_len); - tmp += a; - tmp.append(b, b_len); - return tmp; -} - -TiXmlString operator + (const char* a, const TiXmlString & b) -{ - TiXmlString tmp; - TiXmlString::size_type a_len = static_cast( strlen(a) ); - tmp.reserve(a_len + b.length()); - tmp.append(a, a_len); - tmp += b; - return tmp; -} - - -#endif // TIXML_USE_STL diff --git a/Extras/Serialize/BulletXmlWorldImporter/tinystr.h b/Extras/Serialize/BulletXmlWorldImporter/tinystr.h deleted file mode 100644 index 89cca3341..000000000 --- a/Extras/Serialize/BulletXmlWorldImporter/tinystr.h +++ /dev/null @@ -1,305 +0,0 @@ -/* -www.sourceforge.net/projects/tinyxml - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any -damages arising from the use of this software. - -Permission is granted to anyone to use this software for any -purpose, including commercial applications, and to alter it and -redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must -not claim that you wrote the original software. If you use this -software in a product, an acknowledgment in the product documentation -would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and -must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source -distribution. -*/ - - -#ifndef TIXML_USE_STL - -#ifndef TIXML_STRING_INCLUDED -#define TIXML_STRING_INCLUDED - -#include -#include - -/* The support for explicit isn't that universal, and it isn't really - required - it is used to check that the TiXmlString class isn't incorrectly - used. Be nice to old compilers and macro it here: -*/ -#if defined(_MSC_VER) && (_MSC_VER >= 1200 ) - // Microsoft visual studio, version 6 and higher. - #define TIXML_EXPLICIT explicit -#elif defined(__GNUC__) && (__GNUC__ >= 3 ) - // GCC version 3 and higher.s - #define TIXML_EXPLICIT explicit -#else - #define TIXML_EXPLICIT -#endif - - -/* - TiXmlString is an emulation of a subset of the std::string template. - Its purpose is to allow compiling TinyXML on compilers with no or poor STL support. - Only the member functions relevant to the TinyXML project have been implemented. - The buffer allocation is made by a simplistic power of 2 like mechanism : if we increase - a string and there's no more room, we allocate a buffer twice as big as we need. -*/ -class TiXmlString -{ - public : - // The size type used - typedef size_t size_type; - - // Error value for find primitive - static const size_type npos; // = -1; - - - // TiXmlString empty constructor - TiXmlString () : rep_(&nullrep_) - { - } - - // TiXmlString copy constructor - TiXmlString ( const TiXmlString & copy) : rep_(0) - { - init(copy.length()); - memcpy(start(), copy.data(), length()); - } - - // TiXmlString constructor, based on a string - TIXML_EXPLICIT TiXmlString ( const char * copy) : rep_(0) - { - init( static_cast( strlen(copy) )); - memcpy(start(), copy, length()); - } - - // TiXmlString constructor, based on a string - TIXML_EXPLICIT TiXmlString ( const char * str, size_type len) : rep_(0) - { - init(len); - memcpy(start(), str, len); - } - - // TiXmlString destructor - ~TiXmlString () - { - quit(); - } - - TiXmlString& operator = (const char * copy) - { - return assign( copy, (size_type)strlen(copy)); - } - - TiXmlString& operator = (const TiXmlString & copy) - { - return assign(copy.start(), copy.length()); - } - - - // += operator. Maps to append - TiXmlString& operator += (const char * suffix) - { - return append(suffix, static_cast( strlen(suffix) )); - } - - // += operator. Maps to append - TiXmlString& operator += (char single) - { - return append(&single, 1); - } - - // += operator. Maps to append - TiXmlString& operator += (const TiXmlString & suffix) - { - return append(suffix.data(), suffix.length()); - } - - - // Convert a TiXmlString into a null-terminated char * - const char * c_str () const { return rep_->str; } - - // Convert a TiXmlString into a char * (need not be null terminated). - const char * data () const { return rep_->str; } - - // Return the length of a TiXmlString - size_type length () const { return rep_->size; } - - // Alias for length() - size_type size () const { return rep_->size; } - - // Checks if a TiXmlString is empty - bool empty () const { return rep_->size == 0; } - - // Return capacity of string - size_type capacity () const { return rep_->capacity; } - - - // single char extraction - const char& at (size_type index) const - { - assert( index < length() ); - return rep_->str[ index ]; - } - - // [] operator - char& operator [] (size_type index) const - { - assert( index < length() ); - return rep_->str[ index ]; - } - - // find a char in a string. Return TiXmlString::npos if not found - size_type find (char lookup) const - { - return find(lookup, 0); - } - - // find a char in a string from an offset. Return TiXmlString::npos if not found - size_type find (char tofind, size_type offset) const - { - if (offset >= length()) return npos; - - for (const char* p = c_str() + offset; *p != '\0'; ++p) - { - if (*p == tofind) return static_cast< size_type >( p - c_str() ); - } - return npos; - } - - void clear () - { - //Lee: - //The original was just too strange, though correct: - // TiXmlString().swap(*this); - //Instead use the quit & re-init: - quit(); - init(0,0); - } - - /* Function to reserve a big amount of data when we know we'll need it. Be aware that this - function DOES NOT clear the content of the TiXmlString if any exists. - */ - void reserve (size_type cap); - - TiXmlString& assign (const char* str, size_type len); - - TiXmlString& append (const char* str, size_type len); - - void swap (TiXmlString& other) - { - Rep* r = rep_; - rep_ = other.rep_; - other.rep_ = r; - } - - private: - - void init(size_type sz) { init(sz, sz); } - void set_size(size_type sz) { rep_->str[ rep_->size = sz ] = '\0'; } - char* start() const { return rep_->str; } - char* finish() const { return rep_->str + rep_->size; } - - struct Rep - { - size_type size, capacity; - char str[1]; - }; - - void init(size_type sz, size_type cap) - { - if (cap) - { - // Lee: the original form: - // rep_ = static_cast(operator new(sizeof(Rep) + cap)); - // doesn't work in some cases of new being overloaded. Switching - // to the normal allocation, although use an 'int' for systems - // that are overly picky about structure alignment. - const size_type bytesNeeded = sizeof(Rep) + cap; - const size_type intsNeeded = ( bytesNeeded + sizeof(int) - 1 ) / sizeof( int ); - rep_ = reinterpret_cast( new int[ intsNeeded ] ); - - rep_->str[ rep_->size = sz ] = '\0'; - rep_->capacity = cap; - } - else - { - rep_ = &nullrep_; - } - } - - void quit() - { - if (rep_ != &nullrep_) - { - // The rep_ is really an array of ints. (see the allocator, above). - // Cast it back before delete, so the compiler won't incorrectly call destructors. - delete [] ( reinterpret_cast( rep_ ) ); - } - } - - Rep * rep_; - static Rep nullrep_; - -} ; - - -inline bool operator == (const TiXmlString & a, const TiXmlString & b) -{ - return ( a.length() == b.length() ) // optimization on some platforms - && ( strcmp(a.c_str(), b.c_str()) == 0 ); // actual compare -} -inline bool operator < (const TiXmlString & a, const TiXmlString & b) -{ - return strcmp(a.c_str(), b.c_str()) < 0; -} - -inline bool operator != (const TiXmlString & a, const TiXmlString & b) { return !(a == b); } -inline bool operator > (const TiXmlString & a, const TiXmlString & b) { return b < a; } -inline bool operator <= (const TiXmlString & a, const TiXmlString & b) { return !(b < a); } -inline bool operator >= (const TiXmlString & a, const TiXmlString & b) { return !(a < b); } - -inline bool operator == (const TiXmlString & a, const char* b) { return strcmp(a.c_str(), b) == 0; } -inline bool operator == (const char* a, const TiXmlString & b) { return b == a; } -inline bool operator != (const TiXmlString & a, const char* b) { return !(a == b); } -inline bool operator != (const char* a, const TiXmlString & b) { return !(b == a); } - -TiXmlString operator + (const TiXmlString & a, const TiXmlString & b); -TiXmlString operator + (const TiXmlString & a, const char* b); -TiXmlString operator + (const char* a, const TiXmlString & b); - - -/* - TiXmlOutStream is an emulation of std::ostream. It is based on TiXmlString. - Only the operators that we need for TinyXML have been developped. -*/ -class TiXmlOutStream : public TiXmlString -{ -public : - - // TiXmlOutStream << operator. - TiXmlOutStream & operator << (const TiXmlString & in) - { - *this += in; - return *this; - } - - // TiXmlOutStream << operator. - TiXmlOutStream & operator << (const char * in) - { - *this += in; - return *this; - } - -} ; - -#endif // TIXML_STRING_INCLUDED -#endif // TIXML_USE_STL diff --git a/Extras/Serialize/BulletXmlWorldImporter/tinyxml.cpp b/Extras/Serialize/BulletXmlWorldImporter/tinyxml.cpp deleted file mode 100644 index 9c161dfcb..000000000 --- a/Extras/Serialize/BulletXmlWorldImporter/tinyxml.cpp +++ /dev/null @@ -1,1886 +0,0 @@ -/* -www.sourceforge.net/projects/tinyxml -Original code by Lee Thomason (www.grinninglizard.com) - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any -damages arising from the use of this software. - -Permission is granted to anyone to use this software for any -purpose, including commercial applications, and to alter it and -redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must -not claim that you wrote the original software. If you use this -software in a product, an acknowledgment in the product documentation -would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and -must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source -distribution. -*/ - -#include - -#ifdef TIXML_USE_STL -#include -#include -#endif - -#include "tinyxml.h" - -FILE* TiXmlFOpen( const char* filename, const char* mode ); - -bool TiXmlBase::condenseWhiteSpace = true; - -// Microsoft compiler security -FILE* TiXmlFOpen( const char* filename, const char* mode ) -{ - #if defined(_MSC_VER) && (_MSC_VER >= 1400 ) - FILE* fp = 0; - errno_t err = fopen_s( &fp, filename, mode ); - if ( !err && fp ) - return fp; - return 0; - #else - return fopen( filename, mode ); - #endif -} - -void TiXmlBase::EncodeString( const TIXML_STRING& str, TIXML_STRING* outString ) -{ - int i=0; - - while( i<(int)str.length() ) - { - unsigned char c = (unsigned char) str[i]; - - if ( c == '&' - && i < ( (int)str.length() - 2 ) - && str[i+1] == '#' - && str[i+2] == 'x' ) - { - // Hexadecimal character reference. - // Pass through unchanged. - // © -- copyright symbol, for example. - // - // The -1 is a bug fix from Rob Laveaux. It keeps - // an overflow from happening if there is no ';'. - // There are actually 2 ways to exit this loop - - // while fails (error case) and break (semicolon found). - // However, there is no mechanism (currently) for - // this function to return an error. - while ( i<(int)str.length()-1 ) - { - outString->append( str.c_str() + i, 1 ); - ++i; - if ( str[i] == ';' ) - break; - } - } - else if ( c == '&' ) - { - outString->append( entity[0].str, entity[0].strLength ); - ++i; - } - else if ( c == '<' ) - { - outString->append( entity[1].str, entity[1].strLength ); - ++i; - } - else if ( c == '>' ) - { - outString->append( entity[2].str, entity[2].strLength ); - ++i; - } - else if ( c == '\"' ) - { - outString->append( entity[3].str, entity[3].strLength ); - ++i; - } - else if ( c == '\'' ) - { - outString->append( entity[4].str, entity[4].strLength ); - ++i; - } - else if ( c < 32 ) - { - // Easy pass at non-alpha/numeric/symbol - // Below 32 is symbolic. - char buf[ 32 ]; - - #if defined(TIXML_SNPRINTF) - TIXML_SNPRINTF( buf, sizeof(buf), "&#x%02X;", (unsigned) ( c & 0xff ) ); - #else - sprintf( buf, "&#x%02X;", (unsigned) ( c & 0xff ) ); - #endif - - //*ME: warning C4267: convert 'size_t' to 'int' - //*ME: Int-Cast to make compiler happy ... - outString->append( buf, (int)strlen( buf ) ); - ++i; - } - else - { - //char realc = (char) c; - //outString->append( &realc, 1 ); - *outString += (char) c; // somewhat more efficient function call. - ++i; - } - } -} - - -TiXmlNode::TiXmlNode( NodeType _type ) : TiXmlBase() -{ - parent = 0; - type = _type; - firstChild = 0; - lastChild = 0; - prev = 0; - next = 0; -} - - -TiXmlNode::~TiXmlNode() -{ - TiXmlNode* node = firstChild; - TiXmlNode* temp = 0; - - while ( node ) - { - temp = node; - node = node->next; - delete temp; - } -} - - -void TiXmlNode::CopyTo( TiXmlNode* target ) const -{ - target->SetValue (value.c_str() ); - target->userData = userData; - target->location = location; -} - - -void TiXmlNode::Clear() -{ - TiXmlNode* node = firstChild; - TiXmlNode* temp = 0; - - while ( node ) - { - temp = node; - node = node->next; - delete temp; - } - - firstChild = 0; - lastChild = 0; -} - - -TiXmlNode* TiXmlNode::LinkEndChild( TiXmlNode* node ) -{ - assert( node->parent == 0 || node->parent == this ); - assert( node->GetDocument() == 0 || node->GetDocument() == this->GetDocument() ); - - if ( node->Type() == TiXmlNode::TINYXML_DOCUMENT ) - { - delete node; - if ( GetDocument() ) - GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - - node->parent = this; - - node->prev = lastChild; - node->next = 0; - - if ( lastChild ) - lastChild->next = node; - else - firstChild = node; // it was an empty list. - - lastChild = node; - return node; -} - - -TiXmlNode* TiXmlNode::InsertEndChild( const TiXmlNode& addThis ) -{ - if ( addThis.Type() == TiXmlNode::TINYXML_DOCUMENT ) - { - if ( GetDocument() ) - GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - TiXmlNode* node = addThis.Clone(); - if ( !node ) - return 0; - - return LinkEndChild( node ); -} - - -TiXmlNode* TiXmlNode::InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ) -{ - if ( !beforeThis || beforeThis->parent != this ) { - return 0; - } - if ( addThis.Type() == TiXmlNode::TINYXML_DOCUMENT ) - { - if ( GetDocument() ) - GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - - TiXmlNode* node = addThis.Clone(); - if ( !node ) - return 0; - node->parent = this; - - node->next = beforeThis; - node->prev = beforeThis->prev; - if ( beforeThis->prev ) - { - beforeThis->prev->next = node; - } - else - { - assert( firstChild == beforeThis ); - firstChild = node; - } - beforeThis->prev = node; - return node; -} - - -TiXmlNode* TiXmlNode::InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ) -{ - if ( !afterThis || afterThis->parent != this ) { - return 0; - } - if ( addThis.Type() == TiXmlNode::TINYXML_DOCUMENT ) - { - if ( GetDocument() ) - GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - - TiXmlNode* node = addThis.Clone(); - if ( !node ) - return 0; - node->parent = this; - - node->prev = afterThis; - node->next = afterThis->next; - if ( afterThis->next ) - { - afterThis->next->prev = node; - } - else - { - assert( lastChild == afterThis ); - lastChild = node; - } - afterThis->next = node; - return node; -} - - -TiXmlNode* TiXmlNode::ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ) -{ - if ( !replaceThis ) - return 0; - - if ( replaceThis->parent != this ) - return 0; - - if ( withThis.ToDocument() ) { - // A document can never be a child. Thanks to Noam. - TiXmlDocument* document = GetDocument(); - if ( document ) - document->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - - TiXmlNode* node = withThis.Clone(); - if ( !node ) - return 0; - - node->next = replaceThis->next; - node->prev = replaceThis->prev; - - if ( replaceThis->next ) - replaceThis->next->prev = node; - else - lastChild = node; - - if ( replaceThis->prev ) - replaceThis->prev->next = node; - else - firstChild = node; - - delete replaceThis; - node->parent = this; - return node; -} - - -bool TiXmlNode::RemoveChild( TiXmlNode* removeThis ) -{ - if ( !removeThis ) { - return false; - } - - if ( removeThis->parent != this ) - { - assert( 0 ); - return false; - } - - if ( removeThis->next ) - removeThis->next->prev = removeThis->prev; - else - lastChild = removeThis->prev; - - if ( removeThis->prev ) - removeThis->prev->next = removeThis->next; - else - firstChild = removeThis->next; - - delete removeThis; - return true; -} - -const TiXmlNode* TiXmlNode::FirstChild( const char * _value ) const -{ - const TiXmlNode* node; - for ( node = firstChild; node; node = node->next ) - { - if ( strcmp( node->Value(), _value ) == 0 ) - return node; - } - return 0; -} - - -const TiXmlNode* TiXmlNode::LastChild( const char * _value ) const -{ - const TiXmlNode* node; - for ( node = lastChild; node; node = node->prev ) - { - if ( strcmp( node->Value(), _value ) == 0 ) - return node; - } - return 0; -} - - -const TiXmlNode* TiXmlNode::IterateChildren( const TiXmlNode* previous ) const -{ - if ( !previous ) - { - return FirstChild(); - } - else - { - assert( previous->parent == this ); - return previous->NextSibling(); - } -} - - -const TiXmlNode* TiXmlNode::IterateChildren( const char * val, const TiXmlNode* previous ) const -{ - if ( !previous ) - { - return FirstChild( val ); - } - else - { - assert( previous->parent == this ); - return previous->NextSibling( val ); - } -} - - -const TiXmlNode* TiXmlNode::NextSibling( const char * _value ) const -{ - const TiXmlNode* node; - for ( node = next; node; node = node->next ) - { - if ( strcmp( node->Value(), _value ) == 0 ) - return node; - } - return 0; -} - - -const TiXmlNode* TiXmlNode::PreviousSibling( const char * _value ) const -{ - const TiXmlNode* node; - for ( node = prev; node; node = node->prev ) - { - if ( strcmp( node->Value(), _value ) == 0 ) - return node; - } - return 0; -} - - -void TiXmlElement::RemoveAttribute( const char * name ) -{ - #ifdef TIXML_USE_STL - TIXML_STRING str( name ); - TiXmlAttribute* node = attributeSet.Find( str ); - #else - TiXmlAttribute* node = attributeSet.Find( name ); - #endif - if ( node ) - { - attributeSet.Remove( node ); - delete node; - } -} - -const TiXmlElement* TiXmlNode::FirstChildElement() const -{ - const TiXmlNode* node; - - for ( node = FirstChild(); - node; - node = node->NextSibling() ) - { - if ( node->ToElement() ) - return node->ToElement(); - } - return 0; -} - - -const TiXmlElement* TiXmlNode::FirstChildElement( const char * _value ) const -{ - const TiXmlNode* node; - - for ( node = FirstChild( _value ); - node; - node = node->NextSibling( _value ) ) - { - if ( node->ToElement() ) - return node->ToElement(); - } - return 0; -} - - -const TiXmlElement* TiXmlNode::NextSiblingElement() const -{ - const TiXmlNode* node; - - for ( node = NextSibling(); - node; - node = node->NextSibling() ) - { - if ( node->ToElement() ) - return node->ToElement(); - } - return 0; -} - - -const TiXmlElement* TiXmlNode::NextSiblingElement( const char * _value ) const -{ - const TiXmlNode* node; - - for ( node = NextSibling( _value ); - node; - node = node->NextSibling( _value ) ) - { - if ( node->ToElement() ) - return node->ToElement(); - } - return 0; -} - - -const TiXmlDocument* TiXmlNode::GetDocument() const -{ - const TiXmlNode* node; - - for( node = this; node; node = node->parent ) - { - if ( node->ToDocument() ) - return node->ToDocument(); - } - return 0; -} - - -TiXmlElement::TiXmlElement (const char * _value) - : TiXmlNode( TiXmlNode::TINYXML_ELEMENT ) -{ - firstChild = lastChild = 0; - value = _value; -} - - -#ifdef TIXML_USE_STL -TiXmlElement::TiXmlElement( const std::string& _value ) - : TiXmlNode( TiXmlNode::TINYXML_ELEMENT ) -{ - firstChild = lastChild = 0; - value = _value; -} -#endif - - -TiXmlElement::TiXmlElement( const TiXmlElement& copy) - : TiXmlNode( TiXmlNode::TINYXML_ELEMENT ) -{ - firstChild = lastChild = 0; - copy.CopyTo( this ); -} - - -TiXmlElement& TiXmlElement::operator=( const TiXmlElement& base ) -{ - ClearThis(); - base.CopyTo( this ); - return *this; -} - - -TiXmlElement::~TiXmlElement() -{ - ClearThis(); -} - - -void TiXmlElement::ClearThis() -{ - Clear(); - while( attributeSet.First() ) - { - TiXmlAttribute* node = attributeSet.First(); - attributeSet.Remove( node ); - delete node; - } -} - - -const char* TiXmlElement::Attribute( const char* name ) const -{ - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( node ) - return node->Value(); - return 0; -} - - -#ifdef TIXML_USE_STL -const std::string* TiXmlElement::Attribute( const std::string& name ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - if ( attrib ) - return &attrib->ValueStr(); - return 0; -} -#endif - - -const char* TiXmlElement::Attribute( const char* name, int* i ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - const char* result = 0; - - if ( attrib ) { - result = attrib->Value(); - if ( i ) { - attrib->QueryIntValue( i ); - } - } - return result; -} - - -#ifdef TIXML_USE_STL -const std::string* TiXmlElement::Attribute( const std::string& name, int* i ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - const std::string* result = 0; - - if ( attrib ) { - result = &attrib->ValueStr(); - if ( i ) { - attrib->QueryIntValue( i ); - } - } - return result; -} -#endif - - -const char* TiXmlElement::Attribute( const char* name, double* d ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - const char* result = 0; - - if ( attrib ) { - result = attrib->Value(); - if ( d ) { - attrib->QueryDoubleValue( d ); - } - } - return result; -} - - -#ifdef TIXML_USE_STL -const std::string* TiXmlElement::Attribute( const std::string& name, double* d ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - const std::string* result = 0; - - if ( attrib ) { - result = &attrib->ValueStr(); - if ( d ) { - attrib->QueryDoubleValue( d ); - } - } - return result; -} -#endif - - -int TiXmlElement::QueryIntAttribute( const char* name, int* ival ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - if ( !attrib ) - return TIXML_NO_ATTRIBUTE; - return attrib->QueryIntValue( ival ); -} - - -int TiXmlElement::QueryUnsignedAttribute( const char* name, unsigned* value ) const -{ - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( !node ) - return TIXML_NO_ATTRIBUTE; - - int ival = 0; - int result = node->QueryIntValue( &ival ); - *value = (unsigned)ival; - return result; -} - - -int TiXmlElement::QueryBoolAttribute( const char* name, bool* bval ) const -{ - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( !node ) - return TIXML_NO_ATTRIBUTE; - - int result = TIXML_WRONG_TYPE; - if ( StringEqual( node->Value(), "true", true, TIXML_ENCODING_UNKNOWN ) - || StringEqual( node->Value(), "yes", true, TIXML_ENCODING_UNKNOWN ) - || StringEqual( node->Value(), "1", true, TIXML_ENCODING_UNKNOWN ) ) - { - *bval = true; - result = TIXML_SUCCESS; - } - else if ( StringEqual( node->Value(), "false", true, TIXML_ENCODING_UNKNOWN ) - || StringEqual( node->Value(), "no", true, TIXML_ENCODING_UNKNOWN ) - || StringEqual( node->Value(), "0", true, TIXML_ENCODING_UNKNOWN ) ) - { - *bval = false; - result = TIXML_SUCCESS; - } - return result; -} - - - -#ifdef TIXML_USE_STL -int TiXmlElement::QueryIntAttribute( const std::string& name, int* ival ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - if ( !attrib ) - return TIXML_NO_ATTRIBUTE; - return attrib->QueryIntValue( ival ); -} -#endif - - -int TiXmlElement::QueryDoubleAttribute( const char* name, double* dval ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - if ( !attrib ) - return TIXML_NO_ATTRIBUTE; - return attrib->QueryDoubleValue( dval ); -} - - -#ifdef TIXML_USE_STL -int TiXmlElement::QueryDoubleAttribute( const std::string& name, double* dval ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - if ( !attrib ) - return TIXML_NO_ATTRIBUTE; - return attrib->QueryDoubleValue( dval ); -} -#endif - - -void TiXmlElement::SetAttribute( const char * name, int val ) -{ - TiXmlAttribute* attrib = attributeSet.FindOrCreate( name ); - if ( attrib ) { - attrib->SetIntValue( val ); - } -} - - -#ifdef TIXML_USE_STL -void TiXmlElement::SetAttribute( const std::string& name, int val ) -{ - TiXmlAttribute* attrib = attributeSet.FindOrCreate( name ); - if ( attrib ) { - attrib->SetIntValue( val ); - } -} -#endif - - -void TiXmlElement::SetDoubleAttribute( const char * name, double val ) -{ - TiXmlAttribute* attrib = attributeSet.FindOrCreate( name ); - if ( attrib ) { - attrib->SetDoubleValue( val ); - } -} - - -#ifdef TIXML_USE_STL -void TiXmlElement::SetDoubleAttribute( const std::string& name, double val ) -{ - TiXmlAttribute* attrib = attributeSet.FindOrCreate( name ); - if ( attrib ) { - attrib->SetDoubleValue( val ); - } -} -#endif - - -void TiXmlElement::SetAttribute( const char * cname, const char * cvalue ) -{ - TiXmlAttribute* attrib = attributeSet.FindOrCreate( cname ); - if ( attrib ) { - attrib->SetValue( cvalue ); - } -} - - -#ifdef TIXML_USE_STL -void TiXmlElement::SetAttribute( const std::string& _name, const std::string& _value ) -{ - TiXmlAttribute* attrib = attributeSet.FindOrCreate( _name ); - if ( attrib ) { - attrib->SetValue( _value ); - } -} -#endif - - -void TiXmlElement::Print( FILE* cfile, int depth ) const -{ - int i; - assert( cfile ); - for ( i=0; iNext() ) - { - fprintf( cfile, " " ); - attrib->Print( cfile, depth ); - } - - // There are 3 different formatting approaches: - // 1) An element without children is printed as a node - // 2) An element with only a text child is printed as text - // 3) An element with children is printed on multiple lines. - TiXmlNode* node; - if ( !firstChild ) - { - fprintf( cfile, " />" ); - } - else if ( firstChild == lastChild && firstChild->ToText() ) - { - fprintf( cfile, ">" ); - firstChild->Print( cfile, depth + 1 ); - fprintf( cfile, "", value.c_str() ); - } - else - { - fprintf( cfile, ">" ); - - for ( node = firstChild; node; node=node->NextSibling() ) - { - if ( !node->ToText() ) - { - fprintf( cfile, "\n" ); - } - node->Print( cfile, depth+1 ); - } - fprintf( cfile, "\n" ); - for( i=0; i", value.c_str() ); - } -} - - -void TiXmlElement::CopyTo( TiXmlElement* target ) const -{ - // superclass: - TiXmlNode::CopyTo( target ); - - // Element class: - // Clone the attributes, then clone the children. - const TiXmlAttribute* attribute = 0; - for( attribute = attributeSet.First(); - attribute; - attribute = attribute->Next() ) - { - target->SetAttribute( attribute->Name(), attribute->Value() ); - } - - TiXmlNode* node = 0; - for ( node = firstChild; node; node = node->NextSibling() ) - { - target->LinkEndChild( node->Clone() ); - } -} - -bool TiXmlElement::Accept( TiXmlVisitor* visitor ) const -{ - if ( visitor->VisitEnter( *this, attributeSet.First() ) ) - { - for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) - { - if ( !node->Accept( visitor ) ) - break; - } - } - return visitor->VisitExit( *this ); -} - - -TiXmlNode* TiXmlElement::Clone() const -{ - TiXmlElement* clone = new TiXmlElement( Value() ); - if ( !clone ) - return 0; - - CopyTo( clone ); - return clone; -} - - -const char* TiXmlElement::GetText() const -{ - const TiXmlNode* child = this->FirstChild(); - if ( child ) { - const TiXmlText* childText = child->ToText(); - if ( childText ) { - return childText->Value(); - } - } - return 0; -} - - -TiXmlDocument::TiXmlDocument() : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT ) -{ - tabsize = 4; - useMicrosoftBOM = false; - ClearError(); -} - -TiXmlDocument::TiXmlDocument( const char * documentName ) : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT ) -{ - tabsize = 4; - useMicrosoftBOM = false; - value = documentName; - ClearError(); -} - - -#ifdef TIXML_USE_STL -TiXmlDocument::TiXmlDocument( const std::string& documentName ) : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT ) -{ - tabsize = 4; - useMicrosoftBOM = false; - value = documentName; - ClearError(); -} -#endif - - -TiXmlDocument::TiXmlDocument( const TiXmlDocument& copy ) : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT ) -{ - copy.CopyTo( this ); -} - - -TiXmlDocument& TiXmlDocument::operator=( const TiXmlDocument& copy ) -{ - Clear(); - copy.CopyTo( this ); - return *this; -} - - -bool TiXmlDocument::LoadFile( TiXmlEncoding encoding ) -{ - return LoadFile( Value(), encoding ); -} - - -bool TiXmlDocument::SaveFile() const -{ - return SaveFile( Value() ); -} - -bool TiXmlDocument::LoadFile( const char* _filename, TiXmlEncoding encoding ) -{ - TIXML_STRING filename( _filename ); - value = filename; - - // reading in binary mode so that tinyxml can normalize the EOL - FILE* file = TiXmlFOpen( value.c_str (), "rb" ); - - if ( file ) - { - bool result = LoadFile( file, encoding ); - fclose( file ); - return result; - } - else - { - SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); - return false; - } -} - -bool TiXmlDocument::LoadFile( FILE* file, TiXmlEncoding encoding ) -{ - if ( !file ) - { - SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); - return false; - } - - // Delete the existing data: - Clear(); - location.Clear(); - - // Get the file size, so we can pre-allocate the string. HUGE speed impact. - long length = 0; - fseek( file, 0, SEEK_END ); - length = ftell( file ); - fseek( file, 0, SEEK_SET ); - - // Strange case, but good to handle up front. - if ( length <= 0 ) - { - SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return false; - } - - // Subtle bug here. TinyXml did use fgets. But from the XML spec: - // 2.11 End-of-Line Handling - // - // - // ...the XML processor MUST behave as if it normalized all line breaks in external - // parsed entities (including the document entity) on input, before parsing, by translating - // both the two-character sequence #xD #xA and any #xD that is not followed by #xA to - // a single #xA character. - // - // - // It is not clear fgets does that, and certainly isn't clear it works cross platform. - // Generally, you expect fgets to translate from the convention of the OS to the c/unix - // convention, and not work generally. - - /* - while( fgets( buf, sizeof(buf), file ) ) - { - data += buf; - } - */ - - char* buf = new char[ length+1 ]; - buf[0] = 0; - - if ( fread( buf, length, 1, file ) != 1 ) { - delete [] buf; - SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); - return false; - } - - // Process the buffer in place to normalize new lines. (See comment above.) - // Copies from the 'p' to 'q' pointer, where p can advance faster if - // a newline-carriage return is hit. - // - // Wikipedia: - // Systems based on ASCII or a compatible character set use either LF (Line feed, '\n', 0x0A, 10 in decimal) or - // CR (Carriage return, '\r', 0x0D, 13 in decimal) individually, or CR followed by LF (CR+LF, 0x0D 0x0A)... - // * LF: Multics, Unix and Unix-like systems (GNU/Linux, AIX, Xenix, Mac OS X, FreeBSD, etc.), BeOS, Amiga, RISC OS, and others - // * CR+LF: DEC RT-11 and most other early non-Unix, non-IBM OSes, CP/M, MP/M, DOS, OS/2, Microsoft Windows, Symbian OS - // * CR: Commodore 8-bit machines, Apple II family, Mac OS up to version 9 and OS-9 - - const char* p = buf; // the read head - char* q = buf; // the write head - const char CR = 0x0d; - const char LF = 0x0a; - - buf[length] = 0; - while( *p ) { - assert( p < (buf+length) ); - assert( q <= (buf+length) ); - assert( q <= p ); - - if ( *p == CR ) { - *q++ = LF; - p++; - if ( *p == LF ) { // check for CR+LF (and skip LF) - p++; - } - } - else { - *q++ = *p++; - } - } - assert( q <= (buf+length) ); - *q = 0; - - Parse( buf, 0, encoding ); - - delete [] buf; - return !Error(); -} - - -bool TiXmlDocument::SaveFile( const char * filename ) const -{ - // The old c stuff lives on... - FILE* fp = TiXmlFOpen( filename, "w" ); - if ( fp ) - { - bool result = SaveFile( fp ); - fclose( fp ); - return result; - } - return false; -} - - -bool TiXmlDocument::SaveFile( FILE* fp ) const -{ - if ( useMicrosoftBOM ) - { - const unsigned char TIXML_UTF_LEAD_0 = 0xefU; - const unsigned char TIXML_UTF_LEAD_1 = 0xbbU; - const unsigned char TIXML_UTF_LEAD_2 = 0xbfU; - - fputc( TIXML_UTF_LEAD_0, fp ); - fputc( TIXML_UTF_LEAD_1, fp ); - fputc( TIXML_UTF_LEAD_2, fp ); - } - Print( fp, 0 ); - return (ferror(fp) == 0); -} - - -void TiXmlDocument::CopyTo( TiXmlDocument* target ) const -{ - TiXmlNode::CopyTo( target ); - - target->error = error; - target->errorId = errorId; - target->errorDesc = errorDesc; - target->tabsize = tabsize; - target->errorLocation = errorLocation; - target->useMicrosoftBOM = useMicrosoftBOM; - - TiXmlNode* node = 0; - for ( node = firstChild; node; node = node->NextSibling() ) - { - target->LinkEndChild( node->Clone() ); - } -} - - -TiXmlNode* TiXmlDocument::Clone() const -{ - TiXmlDocument* clone = new TiXmlDocument(); - if ( !clone ) - return 0; - - CopyTo( clone ); - return clone; -} - - -void TiXmlDocument::Print( FILE* cfile, int depth ) const -{ - assert( cfile ); - for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) - { - node->Print( cfile, depth ); - fprintf( cfile, "\n" ); - } -} - - -bool TiXmlDocument::Accept( TiXmlVisitor* visitor ) const -{ - if ( visitor->VisitEnter( *this ) ) - { - for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) - { - if ( !node->Accept( visitor ) ) - break; - } - } - return visitor->VisitExit( *this ); -} - - -const TiXmlAttribute* TiXmlAttribute::Next() const -{ - // We are using knowledge of the sentinel. The sentinel - // have a value or name. - if ( next->value.empty() && next->name.empty() ) - return 0; - return next; -} - -/* -TiXmlAttribute* TiXmlAttribute::Next() -{ - // We are using knowledge of the sentinel. The sentinel - // have a value or name. - if ( next->value.empty() && next->name.empty() ) - return 0; - return next; -} -*/ - -const TiXmlAttribute* TiXmlAttribute::Previous() const -{ - // We are using knowledge of the sentinel. The sentinel - // have a value or name. - if ( prev->value.empty() && prev->name.empty() ) - return 0; - return prev; -} - -/* -TiXmlAttribute* TiXmlAttribute::Previous() -{ - // We are using knowledge of the sentinel. The sentinel - // have a value or name. - if ( prev->value.empty() && prev->name.empty() ) - return 0; - return prev; -} -*/ - -void TiXmlAttribute::Print( FILE* cfile, int /*depth*/, TIXML_STRING* str ) const -{ - TIXML_STRING n, v; - - EncodeString( name, &n ); - EncodeString( value, &v ); - - if (value.find ('\"') == TIXML_STRING::npos) { - if ( cfile ) { - fprintf (cfile, "%s=\"%s\"", n.c_str(), v.c_str() ); - } - if ( str ) { - (*str) += n; (*str) += "=\""; (*str) += v; (*str) += "\""; - } - } - else { - if ( cfile ) { - fprintf (cfile, "%s='%s'", n.c_str(), v.c_str() ); - } - if ( str ) { - (*str) += n; (*str) += "='"; (*str) += v; (*str) += "'"; - } - } -} - - -int TiXmlAttribute::QueryIntValue( int* ival ) const -{ - if ( TIXML_SSCANF( value.c_str(), "%d", ival ) == 1 ) - return TIXML_SUCCESS; - return TIXML_WRONG_TYPE; -} - -int TiXmlAttribute::QueryDoubleValue( double* dval ) const -{ - if ( TIXML_SSCANF( value.c_str(), "%lf", dval ) == 1 ) - return TIXML_SUCCESS; - return TIXML_WRONG_TYPE; -} - -void TiXmlAttribute::SetIntValue( int _value ) -{ - char buf [64]; - #if defined(TIXML_SNPRINTF) - TIXML_SNPRINTF(buf, sizeof(buf), "%d", _value); - #else - sprintf (buf, "%d", _value); - #endif - SetValue (buf); -} - -void TiXmlAttribute::SetDoubleValue( double _value ) -{ - char buf [256]; - #if defined(TIXML_SNPRINTF) - TIXML_SNPRINTF( buf, sizeof(buf), "%g", _value); - #else - sprintf (buf, "%g", _value); - #endif - SetValue (buf); -} - -int TiXmlAttribute::IntValue() const -{ - return atoi (value.c_str ()); -} - -double TiXmlAttribute::DoubleValue() const -{ - return atof (value.c_str ()); -} - - -TiXmlComment::TiXmlComment( const TiXmlComment& copy ) : TiXmlNode( TiXmlNode::TINYXML_COMMENT ) -{ - copy.CopyTo( this ); -} - - -TiXmlComment& TiXmlComment::operator=( const TiXmlComment& base ) -{ - Clear(); - base.CopyTo( this ); - return *this; -} - - -void TiXmlComment::Print( FILE* cfile, int depth ) const -{ - assert( cfile ); - for ( int i=0; i", value.c_str() ); -} - - -void TiXmlComment::CopyTo( TiXmlComment* target ) const -{ - TiXmlNode::CopyTo( target ); -} - - -bool TiXmlComment::Accept( TiXmlVisitor* visitor ) const -{ - return visitor->Visit( *this ); -} - - -TiXmlNode* TiXmlComment::Clone() const -{ - TiXmlComment* clone = new TiXmlComment(); - - if ( !clone ) - return 0; - - CopyTo( clone ); - return clone; -} - - -void TiXmlText::Print( FILE* cfile, int depth ) const -{ - assert( cfile ); - if ( cdata ) - { - int i; - fprintf( cfile, "\n" ); - for ( i=0; i\n", value.c_str() ); // unformatted output - } - else - { - TIXML_STRING buffer; - EncodeString( value, &buffer ); - fprintf( cfile, "%s", buffer.c_str() ); - } -} - - -void TiXmlText::CopyTo( TiXmlText* target ) const -{ - TiXmlNode::CopyTo( target ); - target->cdata = cdata; -} - - -bool TiXmlText::Accept( TiXmlVisitor* visitor ) const -{ - return visitor->Visit( *this ); -} - - -TiXmlNode* TiXmlText::Clone() const -{ - TiXmlText* clone = 0; - clone = new TiXmlText( "" ); - - if ( !clone ) - return 0; - - CopyTo( clone ); - return clone; -} - - -TiXmlDeclaration::TiXmlDeclaration( const char * _version, - const char * _encoding, - const char * _standalone ) - : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) -{ - version = _version; - encoding = _encoding; - standalone = _standalone; -} - - -#ifdef TIXML_USE_STL -TiXmlDeclaration::TiXmlDeclaration( const std::string& _version, - const std::string& _encoding, - const std::string& _standalone ) - : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) -{ - version = _version; - encoding = _encoding; - standalone = _standalone; -} -#endif - - -TiXmlDeclaration::TiXmlDeclaration( const TiXmlDeclaration& copy ) - : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) -{ - copy.CopyTo( this ); -} - - -TiXmlDeclaration& TiXmlDeclaration::operator=( const TiXmlDeclaration& copy ) -{ - Clear(); - copy.CopyTo( this ); - return *this; -} - - -void TiXmlDeclaration::Print( FILE* cfile, int /*depth*/, TIXML_STRING* str ) const -{ - if ( cfile ) fprintf( cfile, "" ); - if ( str ) (*str) += "?>"; -} - - -void TiXmlDeclaration::CopyTo( TiXmlDeclaration* target ) const -{ - TiXmlNode::CopyTo( target ); - - target->version = version; - target->encoding = encoding; - target->standalone = standalone; -} - - -bool TiXmlDeclaration::Accept( TiXmlVisitor* visitor ) const -{ - return visitor->Visit( *this ); -} - - -TiXmlNode* TiXmlDeclaration::Clone() const -{ - TiXmlDeclaration* clone = new TiXmlDeclaration(); - - if ( !clone ) - return 0; - - CopyTo( clone ); - return clone; -} - - -void TiXmlUnknown::Print( FILE* cfile, int depth ) const -{ - for ( int i=0; i", value.c_str() ); -} - - -void TiXmlUnknown::CopyTo( TiXmlUnknown* target ) const -{ - TiXmlNode::CopyTo( target ); -} - - -bool TiXmlUnknown::Accept( TiXmlVisitor* visitor ) const -{ - return visitor->Visit( *this ); -} - - -TiXmlNode* TiXmlUnknown::Clone() const -{ - TiXmlUnknown* clone = new TiXmlUnknown(); - - if ( !clone ) - return 0; - - CopyTo( clone ); - return clone; -} - - -TiXmlAttributeSet::TiXmlAttributeSet() -{ - sentinel.next = &sentinel; - sentinel.prev = &sentinel; -} - - -TiXmlAttributeSet::~TiXmlAttributeSet() -{ - assert( sentinel.next == &sentinel ); - assert( sentinel.prev == &sentinel ); -} - - -void TiXmlAttributeSet::Add( TiXmlAttribute* addMe ) -{ - #ifdef TIXML_USE_STL - assert( !Find( TIXML_STRING( addMe->Name() ) ) ); // Shouldn't be multiply adding to the set. - #else - assert( !Find( addMe->Name() ) ); // Shouldn't be multiply adding to the set. - #endif - - addMe->next = &sentinel; - addMe->prev = sentinel.prev; - - sentinel.prev->next = addMe; - sentinel.prev = addMe; -} - -void TiXmlAttributeSet::Remove( TiXmlAttribute* removeMe ) -{ - TiXmlAttribute* node; - - for( node = sentinel.next; node != &sentinel; node = node->next ) - { - if ( node == removeMe ) - { - node->prev->next = node->next; - node->next->prev = node->prev; - node->next = 0; - node->prev = 0; - return; - } - } - assert( 0 ); // we tried to remove a non-linked attribute. -} - - -#ifdef TIXML_USE_STL -TiXmlAttribute* TiXmlAttributeSet::Find( const std::string& name ) const -{ - for( TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next ) - { - if ( node->name == name ) - return node; - } - return 0; -} - -TiXmlAttribute* TiXmlAttributeSet::FindOrCreate( const std::string& _name ) -{ - TiXmlAttribute* attrib = Find( _name ); - if ( !attrib ) { - attrib = new TiXmlAttribute(); - Add( attrib ); - attrib->SetName( _name ); - } - return attrib; -} -#endif - - -TiXmlAttribute* TiXmlAttributeSet::Find( const char* name ) const -{ - for( TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next ) - { - if ( strcmp( node->name.c_str(), name ) == 0 ) - return node; - } - return 0; -} - - -TiXmlAttribute* TiXmlAttributeSet::FindOrCreate( const char* _name ) -{ - TiXmlAttribute* attrib = Find( _name ); - if ( !attrib ) { - attrib = new TiXmlAttribute(); - Add( attrib ); - attrib->SetName( _name ); - } - return attrib; -} - - -#ifdef TIXML_USE_STL -std::istream& operator>> (std::istream & in, TiXmlNode & base) -{ - TIXML_STRING tag; - tag.reserve( 8 * 1000 ); - base.StreamIn( &in, &tag ); - - base.Parse( tag.c_str(), 0, TIXML_DEFAULT_ENCODING ); - return in; -} -#endif - - -#ifdef TIXML_USE_STL -std::ostream& operator<< (std::ostream & out, const TiXmlNode & base) -{ - TiXmlPrinter printer; - printer.SetStreamPrinting(); - base.Accept( &printer ); - out << printer.Str(); - - return out; -} - - -std::string& operator<< (std::string& out, const TiXmlNode& base ) -{ - TiXmlPrinter printer; - printer.SetStreamPrinting(); - base.Accept( &printer ); - out.append( printer.Str() ); - - return out; -} -#endif - - -TiXmlHandle TiXmlHandle::FirstChild() const -{ - if ( node ) - { - TiXmlNode* child = node->FirstChild(); - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::FirstChild( const char * value ) const -{ - if ( node ) - { - TiXmlNode* child = node->FirstChild( value ); - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::FirstChildElement() const -{ - if ( node ) - { - TiXmlElement* child = node->FirstChildElement(); - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::FirstChildElement( const char * value ) const -{ - if ( node ) - { - TiXmlElement* child = node->FirstChildElement( value ); - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::Child( int count ) const -{ - if ( node ) - { - int i; - TiXmlNode* child = node->FirstChild(); - for ( i=0; - child && iNextSibling(), ++i ) - { - // nothing - } - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::Child( const char* value, int count ) const -{ - if ( node ) - { - int i; - TiXmlNode* child = node->FirstChild( value ); - for ( i=0; - child && iNextSibling( value ), ++i ) - { - // nothing - } - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::ChildElement( int count ) const -{ - if ( node ) - { - int i; - TiXmlElement* child = node->FirstChildElement(); - for ( i=0; - child && iNextSiblingElement(), ++i ) - { - // nothing - } - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::ChildElement( const char* value, int count ) const -{ - if ( node ) - { - int i; - TiXmlElement* child = node->FirstChildElement( value ); - for ( i=0; - child && iNextSiblingElement( value ), ++i ) - { - // nothing - } - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -bool TiXmlPrinter::VisitEnter( const TiXmlDocument& ) -{ - return true; -} - -bool TiXmlPrinter::VisitExit( const TiXmlDocument& ) -{ - return true; -} - -bool TiXmlPrinter::VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute ) -{ - DoIndent(); - buffer += "<"; - buffer += element.Value(); - - for( const TiXmlAttribute* attrib = firstAttribute; attrib; attrib = attrib->Next() ) - { - buffer += " "; - attrib->Print( 0, 0, &buffer ); - } - - if ( !element.FirstChild() ) - { - buffer += " />"; - DoLineBreak(); - } - else - { - buffer += ">"; - if ( element.FirstChild()->ToText() - && element.LastChild() == element.FirstChild() - && element.FirstChild()->ToText()->CDATA() == false ) - { - simpleTextPrint = true; - // no DoLineBreak()! - } - else - { - DoLineBreak(); - } - } - ++depth; - return true; -} - - -bool TiXmlPrinter::VisitExit( const TiXmlElement& element ) -{ - --depth; - if ( !element.FirstChild() ) - { - // nothing. - } - else - { - if ( simpleTextPrint ) - { - simpleTextPrint = false; - } - else - { - DoIndent(); - } - buffer += ""; - DoLineBreak(); - } - return true; -} - - -bool TiXmlPrinter::Visit( const TiXmlText& text ) -{ - if ( text.CDATA() ) - { - DoIndent(); - buffer += ""; - DoLineBreak(); - } - else if ( simpleTextPrint ) - { - TIXML_STRING str; - TiXmlBase::EncodeString( text.ValueTStr(), &str ); - buffer += str; - } - else - { - DoIndent(); - TIXML_STRING str; - TiXmlBase::EncodeString( text.ValueTStr(), &str ); - buffer += str; - DoLineBreak(); - } - return true; -} - - -bool TiXmlPrinter::Visit( const TiXmlDeclaration& declaration ) -{ - DoIndent(); - declaration.Print( 0, 0, &buffer ); - DoLineBreak(); - return true; -} - - -bool TiXmlPrinter::Visit( const TiXmlComment& comment ) -{ - DoIndent(); - buffer += ""; - DoLineBreak(); - return true; -} - - -bool TiXmlPrinter::Visit( const TiXmlUnknown& unknown ) -{ - DoIndent(); - buffer += "<"; - buffer += unknown.Value(); - buffer += ">"; - DoLineBreak(); - return true; -} - diff --git a/Extras/Serialize/BulletXmlWorldImporter/tinyxml.h b/Extras/Serialize/BulletXmlWorldImporter/tinyxml.h deleted file mode 100644 index a3589e5b2..000000000 --- a/Extras/Serialize/BulletXmlWorldImporter/tinyxml.h +++ /dev/null @@ -1,1805 +0,0 @@ -/* -www.sourceforge.net/projects/tinyxml -Original code by Lee Thomason (www.grinninglizard.com) - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any -damages arising from the use of this software. - -Permission is granted to anyone to use this software for any -purpose, including commercial applications, and to alter it and -redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must -not claim that you wrote the original software. If you use this -software in a product, an acknowledgment in the product documentation -would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and -must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source -distribution. -*/ - - -#ifndef TINYXML_INCLUDED -#define TINYXML_INCLUDED - -#ifdef _MSC_VER -#pragma warning( push ) -#pragma warning( disable : 4530 ) -#pragma warning( disable : 4786 ) -#endif - -#include -#include -#include -#include -#include - -// Help out windows: -#if defined( _DEBUG ) && !defined( DEBUG ) -#define DEBUG -#endif - -#ifdef TIXML_USE_STL - #include - #include - #include - #define TIXML_STRING std::string -#else - #include "tinystr.h" - #define TIXML_STRING TiXmlString -#endif - -// Deprecated library function hell. Compilers want to use the -// new safe versions. This probably doesn't fully address the problem, -// but it gets closer. There are too many compilers for me to fully -// test. If you get compilation troubles, undefine TIXML_SAFE -#define TIXML_SAFE - -#ifdef TIXML_SAFE - #if defined(_MSC_VER) && (_MSC_VER >= 1400 ) - // Microsoft visual studio, version 2005 and higher. - #define TIXML_SNPRINTF _snprintf_s - #define TIXML_SSCANF sscanf_s - #elif defined(_MSC_VER) && (_MSC_VER >= 1200 ) - // Microsoft visual studio, version 6 and higher. - //#pragma message( "Using _sn* functions." ) - #define TIXML_SNPRINTF _snprintf - #define TIXML_SSCANF sscanf - #elif defined(__GNUC__) && (__GNUC__ >= 3 ) - // GCC version 3 and higher.s - //#warning( "Using sn* functions." ) - #define TIXML_SNPRINTF snprintf - #define TIXML_SSCANF sscanf - #else - #define TIXML_SNPRINTF snprintf - #define TIXML_SSCANF sscanf - #endif -#endif - -class TiXmlDocument; -class TiXmlElement; -class TiXmlComment; -class TiXmlUnknown; -class TiXmlAttribute; -class TiXmlText; -class TiXmlDeclaration; -class TiXmlParsingData; - -const int TIXML_MAJOR_VERSION = 2; -const int TIXML_MINOR_VERSION = 6; -const int TIXML_PATCH_VERSION = 2; - -/* Internal structure for tracking location of items - in the XML file. -*/ -struct TiXmlCursor -{ - TiXmlCursor() { Clear(); } - void Clear() { row = col = -1; } - - int row; // 0 based. - int col; // 0 based. -}; - - -/** - Implements the interface to the "Visitor pattern" (see the Accept() method.) - If you call the Accept() method, it requires being passed a TiXmlVisitor - class to handle callbacks. For nodes that contain other nodes (Document, Element) - you will get called with a VisitEnter/VisitExit pair. Nodes that are always leaves - are simply called with Visit(). - - If you return 'true' from a Visit method, recursive parsing will continue. If you return - false, no children of this node or its sibilings will be Visited. - - All flavors of Visit methods have a default implementation that returns 'true' (continue - visiting). You need to only override methods that are interesting to you. - - Generally Accept() is called on the TiXmlDocument, although all nodes suppert Visiting. - - You should never change the document from a callback. - - @sa TiXmlNode::Accept() -*/ -class TiXmlVisitor -{ -public: - virtual ~TiXmlVisitor() {} - - /// Visit a document. - virtual bool VisitEnter( const TiXmlDocument& /*doc*/ ) { return true; } - /// Visit a document. - virtual bool VisitExit( const TiXmlDocument& /*doc*/ ) { return true; } - - /// Visit an element. - virtual bool VisitEnter( const TiXmlElement& /*element*/, const TiXmlAttribute* /*firstAttribute*/ ) { return true; } - /// Visit an element. - virtual bool VisitExit( const TiXmlElement& /*element*/ ) { return true; } - - /// Visit a declaration - virtual bool Visit( const TiXmlDeclaration& /*declaration*/ ) { return true; } - /// Visit a text node - virtual bool Visit( const TiXmlText& /*text*/ ) { return true; } - /// Visit a comment node - virtual bool Visit( const TiXmlComment& /*comment*/ ) { return true; } - /// Visit an unknown node - virtual bool Visit( const TiXmlUnknown& /*unknown*/ ) { return true; } -}; - -// Only used by Attribute::Query functions -enum -{ - TIXML_SUCCESS, - TIXML_NO_ATTRIBUTE, - TIXML_WRONG_TYPE -}; - - -// Used by the parsing routines. -enum TiXmlEncoding -{ - TIXML_ENCODING_UNKNOWN, - TIXML_ENCODING_UTF8, - TIXML_ENCODING_LEGACY -}; - -const TiXmlEncoding TIXML_DEFAULT_ENCODING = TIXML_ENCODING_UNKNOWN; - -/** TiXmlBase is a base class for every class in TinyXml. - It does little except to establish that TinyXml classes - can be printed and provide some utility functions. - - In XML, the document and elements can contain - other elements and other types of nodes. - - @verbatim - A Document can contain: Element (container or leaf) - Comment (leaf) - Unknown (leaf) - Declaration( leaf ) - - An Element can contain: Element (container or leaf) - Text (leaf) - Attributes (not on tree) - Comment (leaf) - Unknown (leaf) - - A Decleration contains: Attributes (not on tree) - @endverbatim -*/ -class TiXmlBase -{ - friend class TiXmlNode; - friend class TiXmlElement; - friend class TiXmlDocument; - -public: - TiXmlBase() : userData(0) {} - virtual ~TiXmlBase() {} - - /** All TinyXml classes can print themselves to a filestream - or the string class (TiXmlString in non-STL mode, std::string - in STL mode.) Either or both cfile and str can be null. - - This is a formatted print, and will insert - tabs and newlines. - - (For an unformatted stream, use the << operator.) - */ - virtual void Print( FILE* cfile, int depth ) const = 0; - - /** The world does not agree on whether white space should be kept or - not. In order to make everyone happy, these global, static functions - are provided to set whether or not TinyXml will condense all white space - into a single space or not. The default is to condense. Note changing this - value is not thread safe. - */ - static void SetCondenseWhiteSpace( bool condense ) { condenseWhiteSpace = condense; } - - /// Return the current white space setting. - static bool IsWhiteSpaceCondensed() { return condenseWhiteSpace; } - - /** Return the position, in the original source file, of this node or attribute. - The row and column are 1-based. (That is the first row and first column is - 1,1). If the returns values are 0 or less, then the parser does not have - a row and column value. - - Generally, the row and column value will be set when the TiXmlDocument::Load(), - TiXmlDocument::LoadFile(), or any TiXmlNode::Parse() is called. It will NOT be set - when the DOM was created from operator>>. - - The values reflect the initial load. Once the DOM is modified programmatically - (by adding or changing nodes and attributes) the new values will NOT update to - reflect changes in the document. - - There is a minor performance cost to computing the row and column. Computation - can be disabled if TiXmlDocument::SetTabSize() is called with 0 as the value. - - @sa TiXmlDocument::SetTabSize() - */ - int Row() const { return location.row + 1; } - int Column() const { return location.col + 1; } ///< See Row() - - void SetUserData( void* user ) { userData = user; } ///< Set a pointer to arbitrary user data. - void* GetUserData() { return userData; } ///< Get a pointer to arbitrary user data. - const void* GetUserData() const { return userData; } ///< Get a pointer to arbitrary user data. - - // Table that returs, for a given lead byte, the total number of bytes - // in the UTF-8 sequence. - static const int utf8ByteTable[256]; - - virtual const char* Parse( const char* p, - TiXmlParsingData* data, - TiXmlEncoding encoding /*= TIXML_ENCODING_UNKNOWN */ ) = 0; - - /** Expands entities in a string. Note this should not contian the tag's '<', '>', etc, - or they will be transformed into entities! - */ - static void EncodeString( const TIXML_STRING& str, TIXML_STRING* out ); - - enum - { - TIXML_NO_ERROR = 0, - TIXML_ERROR, - TIXML_ERROR_OPENING_FILE, - TIXML_ERROR_PARSING_ELEMENT, - TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME, - TIXML_ERROR_READING_ELEMENT_VALUE, - TIXML_ERROR_READING_ATTRIBUTES, - TIXML_ERROR_PARSING_EMPTY, - TIXML_ERROR_READING_END_TAG, - TIXML_ERROR_PARSING_UNKNOWN, - TIXML_ERROR_PARSING_COMMENT, - TIXML_ERROR_PARSING_DECLARATION, - TIXML_ERROR_DOCUMENT_EMPTY, - TIXML_ERROR_EMBEDDED_NULL, - TIXML_ERROR_PARSING_CDATA, - TIXML_ERROR_DOCUMENT_TOP_ONLY, - - TIXML_ERROR_STRING_COUNT - }; - -protected: - - static const char* SkipWhiteSpace( const char*, TiXmlEncoding encoding ); - - inline static bool IsWhiteSpace( char c ) - { - return ( isspace( (unsigned char) c ) || c == '\n' || c == '\r' ); - } - inline static bool IsWhiteSpace( int c ) - { - if ( c < 256 ) - return IsWhiteSpace( (char) c ); - return false; // Again, only truly correct for English/Latin...but usually works. - } - - #ifdef TIXML_USE_STL - static bool StreamWhiteSpace( std::istream * in, TIXML_STRING * tag ); - static bool StreamTo( std::istream * in, int character, TIXML_STRING * tag ); - #endif - - /* Reads an XML name into the string provided. Returns - a pointer just past the last character of the name, - or 0 if the function has an error. - */ - static const char* ReadName( const char* p, TIXML_STRING* name, TiXmlEncoding encoding ); - - /* Reads text. Returns a pointer past the given end tag. - Wickedly complex options, but it keeps the (sensitive) code in one place. - */ - static const char* ReadText( const char* in, // where to start - TIXML_STRING* text, // the string read - bool ignoreWhiteSpace, // whether to keep the white space - const char* endTag, // what ends this text - bool ignoreCase, // whether to ignore case in the end tag - TiXmlEncoding encoding ); // the current encoding - - // If an entity has been found, transform it into a character. - static const char* GetEntity( const char* in, char* value, int* length, TiXmlEncoding encoding ); - - // Get a character, while interpreting entities. - // The length can be from 0 to 4 bytes. - inline static const char* GetChar( const char* p, char* _value, int* length, TiXmlEncoding encoding ) - { - assert( p ); - if ( encoding == TIXML_ENCODING_UTF8 ) - { - *length = utf8ByteTable[ *((const unsigned char*)p) ]; - assert( *length >= 0 && *length < 5 ); - } - else - { - *length = 1; - } - - if ( *length == 1 ) - { - if ( *p == '&' ) - return GetEntity( p, _value, length, encoding ); - *_value = *p; - return p+1; - } - else if ( *length ) - { - //strncpy( _value, p, *length ); // lots of compilers don't like this function (unsafe), - // and the null terminator isn't needed - for( int i=0; p[i] && i<*length; ++i ) { - _value[i] = p[i]; - } - return p + (*length); - } - else - { - // Not valid text. - return 0; - } - } - - // Return true if the next characters in the stream are any of the endTag sequences. - // Ignore case only works for english, and should only be relied on when comparing - // to English words: StringEqual( p, "version", true ) is fine. - static bool StringEqual( const char* p, - const char* endTag, - bool ignoreCase, - TiXmlEncoding encoding ); - - static const char* errorString[ TIXML_ERROR_STRING_COUNT ]; - - TiXmlCursor location; - - /// Field containing a generic user pointer - void* userData; - - // None of these methods are reliable for any language except English. - // Good for approximation, not great for accuracy. - static int IsAlpha( unsigned char anyByte, TiXmlEncoding encoding ); - static int IsAlphaNum( unsigned char anyByte, TiXmlEncoding encoding ); - inline static int ToLower( int v, TiXmlEncoding encoding ) - { - if ( encoding == TIXML_ENCODING_UTF8 ) - { - if ( v < 128 ) return tolower( v ); - return v; - } - else - { - return tolower( v ); - } - } - static void ConvertUTF32ToUTF8( unsigned long input, char* output, int* length ); - -private: - TiXmlBase( const TiXmlBase& ); // not implemented. - void operator=( const TiXmlBase& base ); // not allowed. - - struct Entity - { - const char* str; - unsigned int strLength; - char chr; - }; - enum - { - NUM_ENTITY = 5, - MAX_ENTITY_LENGTH = 6 - - }; - static Entity entity[ NUM_ENTITY ]; - static bool condenseWhiteSpace; -}; - - -/** The parent class for everything in the Document Object Model. - (Except for attributes). - Nodes have siblings, a parent, and children. A node can be - in a document, or stand on its own. The type of a TiXmlNode - can be queried, and it can be cast to its more defined type. -*/ -class TiXmlNode : public TiXmlBase -{ - friend class TiXmlDocument; - friend class TiXmlElement; - -public: - #ifdef TIXML_USE_STL - - /** An input stream operator, for every class. Tolerant of newlines and - formatting, but doesn't expect them. - */ - friend std::istream& operator >> (std::istream& in, TiXmlNode& base); - - /** An output stream operator, for every class. Note that this outputs - without any newlines or formatting, as opposed to Print(), which - includes tabs and new lines. - - The operator<< and operator>> are not completely symmetric. Writing - a node to a stream is very well defined. You'll get a nice stream - of output, without any extra whitespace or newlines. - - But reading is not as well defined. (As it always is.) If you create - a TiXmlElement (for example) and read that from an input stream, - the text needs to define an element or junk will result. This is - true of all input streams, but it's worth keeping in mind. - - A TiXmlDocument will read nodes until it reads a root element, and - all the children of that root element. - */ - friend std::ostream& operator<< (std::ostream& out, const TiXmlNode& base); - - /// Appends the XML node or attribute to a std::string. - friend std::string& operator<< (std::string& out, const TiXmlNode& base ); - - #endif - - /** The types of XML nodes supported by TinyXml. (All the - unsupported types are picked up by UNKNOWN.) - */ - enum NodeType - { - TINYXML_DOCUMENT, - TINYXML_ELEMENT, - TINYXML_COMMENT, - TINYXML_UNKNOWN, - TINYXML_TEXT, - TINYXML_DECLARATION, - TINYXML_TYPECOUNT - }; - - virtual ~TiXmlNode(); - - /** The meaning of 'value' changes for the specific type of - TiXmlNode. - @verbatim - Document: filename of the xml file - Element: name of the element - Comment: the comment text - Unknown: the tag contents - Text: the text string - @endverbatim - - The subclasses will wrap this function. - */ - const char *Value() const { return value.c_str (); } - - #ifdef TIXML_USE_STL - /** Return Value() as a std::string. If you only use STL, - this is more efficient than calling Value(). - Only available in STL mode. - */ - const std::string& ValueStr() const { return value; } - #endif - - const TIXML_STRING& ValueTStr() const { return value; } - - /** Changes the value of the node. Defined as: - @verbatim - Document: filename of the xml file - Element: name of the element - Comment: the comment text - Unknown: the tag contents - Text: the text string - @endverbatim - */ - void SetValue(const char * _value) { value = _value;} - - #ifdef TIXML_USE_STL - /// STL std::string form. - void SetValue( const std::string& _value ) { value = _value; } - #endif - - /// Delete all the children of this node. Does not affect 'this'. - void Clear(); - - /// One step up the DOM. - TiXmlNode* Parent() { return parent; } - const TiXmlNode* Parent() const { return parent; } - - const TiXmlNode* FirstChild() const { return firstChild; } ///< The first child of this node. Will be null if there are no children. - TiXmlNode* FirstChild() { return firstChild; } - const TiXmlNode* FirstChild( const char * value ) const; ///< The first child of this node with the matching 'value'. Will be null if none found. - /// The first child of this node with the matching 'value'. Will be null if none found. - TiXmlNode* FirstChild( const char * _value ) { - // Call through to the const version - safe since nothing is changed. Exiting syntax: cast this to a const (always safe) - // call the method, cast the return back to non-const. - return const_cast< TiXmlNode* > ((const_cast< const TiXmlNode* >(this))->FirstChild( _value )); - } - const TiXmlNode* LastChild() const { return lastChild; } /// The last child of this node. Will be null if there are no children. - TiXmlNode* LastChild() { return lastChild; } - - const TiXmlNode* LastChild( const char * value ) const; /// The last child of this node matching 'value'. Will be null if there are no children. - TiXmlNode* LastChild( const char * _value ) { - return const_cast< TiXmlNode* > ((const_cast< const TiXmlNode* >(this))->LastChild( _value )); - } - - #ifdef TIXML_USE_STL - const TiXmlNode* FirstChild( const std::string& _value ) const { return FirstChild (_value.c_str ()); } ///< STL std::string form. - TiXmlNode* FirstChild( const std::string& _value ) { return FirstChild (_value.c_str ()); } ///< STL std::string form. - const TiXmlNode* LastChild( const std::string& _value ) const { return LastChild (_value.c_str ()); } ///< STL std::string form. - TiXmlNode* LastChild( const std::string& _value ) { return LastChild (_value.c_str ()); } ///< STL std::string form. - #endif - - /** An alternate way to walk the children of a node. - One way to iterate over nodes is: - @verbatim - for( child = parent->FirstChild(); child; child = child->NextSibling() ) - @endverbatim - - IterateChildren does the same thing with the syntax: - @verbatim - child = 0; - while( child = parent->IterateChildren( child ) ) - @endverbatim - - IterateChildren takes the previous child as input and finds - the next one. If the previous child is null, it returns the - first. IterateChildren will return null when done. - */ - const TiXmlNode* IterateChildren( const TiXmlNode* previous ) const; - TiXmlNode* IterateChildren( const TiXmlNode* previous ) { - return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->IterateChildren( previous ) ); - } - - /// This flavor of IterateChildren searches for children with a particular 'value' - const TiXmlNode* IterateChildren( const char * value, const TiXmlNode* previous ) const; - TiXmlNode* IterateChildren( const char * _value, const TiXmlNode* previous ) { - return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->IterateChildren( _value, previous ) ); - } - - #ifdef TIXML_USE_STL - const TiXmlNode* IterateChildren( const std::string& _value, const TiXmlNode* previous ) const { return IterateChildren (_value.c_str (), previous); } ///< STL std::string form. - TiXmlNode* IterateChildren( const std::string& _value, const TiXmlNode* previous ) { return IterateChildren (_value.c_str (), previous); } ///< STL std::string form. - #endif - - /** Add a new node related to this. Adds a child past the LastChild. - Returns a pointer to the new object or NULL if an error occured. - */ - TiXmlNode* InsertEndChild( const TiXmlNode& addThis ); - - - /** Add a new node related to this. Adds a child past the LastChild. - - NOTE: the node to be added is passed by pointer, and will be - henceforth owned (and deleted) by tinyXml. This method is efficient - and avoids an extra copy, but should be used with care as it - uses a different memory model than the other insert functions. - - @sa InsertEndChild - */ - TiXmlNode* LinkEndChild( TiXmlNode* addThis ); - - /** Add a new node related to this. Adds a child before the specified child. - Returns a pointer to the new object or NULL if an error occured. - */ - TiXmlNode* InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ); - - /** Add a new node related to this. Adds a child after the specified child. - Returns a pointer to the new object or NULL if an error occured. - */ - TiXmlNode* InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ); - - /** Replace a child of this node. - Returns a pointer to the new object or NULL if an error occured. - */ - TiXmlNode* ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ); - - /// Delete a child of this node. - bool RemoveChild( TiXmlNode* removeThis ); - - /// Navigate to a sibling node. - const TiXmlNode* PreviousSibling() const { return prev; } - TiXmlNode* PreviousSibling() { return prev; } - - /// Navigate to a sibling node. - const TiXmlNode* PreviousSibling( const char * ) const; - TiXmlNode* PreviousSibling( const char *_prev ) { - return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->PreviousSibling( _prev ) ); - } - - #ifdef TIXML_USE_STL - const TiXmlNode* PreviousSibling( const std::string& _value ) const { return PreviousSibling (_value.c_str ()); } ///< STL std::string form. - TiXmlNode* PreviousSibling( const std::string& _value ) { return PreviousSibling (_value.c_str ()); } ///< STL std::string form. - const TiXmlNode* NextSibling( const std::string& _value) const { return NextSibling (_value.c_str ()); } ///< STL std::string form. - TiXmlNode* NextSibling( const std::string& _value) { return NextSibling (_value.c_str ()); } ///< STL std::string form. - #endif - - /// Navigate to a sibling node. - const TiXmlNode* NextSibling() const { return next; } - TiXmlNode* NextSibling() { return next; } - - /// Navigate to a sibling node with the given 'value'. - const TiXmlNode* NextSibling( const char * ) const; - TiXmlNode* NextSibling( const char* _next ) { - return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->NextSibling( _next ) ); - } - - /** Convenience function to get through elements. - Calls NextSibling and ToElement. Will skip all non-Element - nodes. Returns 0 if there is not another element. - */ - const TiXmlElement* NextSiblingElement() const; - TiXmlElement* NextSiblingElement() { - return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->NextSiblingElement() ); - } - - /** Convenience function to get through elements. - Calls NextSibling and ToElement. Will skip all non-Element - nodes. Returns 0 if there is not another element. - */ - const TiXmlElement* NextSiblingElement( const char * ) const; - TiXmlElement* NextSiblingElement( const char *_next ) { - return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->NextSiblingElement( _next ) ); - } - - #ifdef TIXML_USE_STL - const TiXmlElement* NextSiblingElement( const std::string& _value) const { return NextSiblingElement (_value.c_str ()); } ///< STL std::string form. - TiXmlElement* NextSiblingElement( const std::string& _value) { return NextSiblingElement (_value.c_str ()); } ///< STL std::string form. - #endif - - /// Convenience function to get through elements. - const TiXmlElement* FirstChildElement() const; - TiXmlElement* FirstChildElement() { - return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->FirstChildElement() ); - } - - /// Convenience function to get through elements. - const TiXmlElement* FirstChildElement( const char * _value ) const; - TiXmlElement* FirstChildElement( const char * _value ) { - return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->FirstChildElement( _value ) ); - } - - #ifdef TIXML_USE_STL - const TiXmlElement* FirstChildElement( const std::string& _value ) const { return FirstChildElement (_value.c_str ()); } ///< STL std::string form. - TiXmlElement* FirstChildElement( const std::string& _value ) { return FirstChildElement (_value.c_str ()); } ///< STL std::string form. - #endif - - /** Query the type (as an enumerated value, above) of this node. - The possible types are: TINYXML_DOCUMENT, TINYXML_ELEMENT, TINYXML_COMMENT, - TINYXML_UNKNOWN, TINYXML_TEXT, and TINYXML_DECLARATION. - */ - int Type() const { return type; } - - /** Return a pointer to the Document this node lives in. - Returns null if not in a document. - */ - const TiXmlDocument* GetDocument() const; - TiXmlDocument* GetDocument() { - return const_cast< TiXmlDocument* >( (const_cast< const TiXmlNode* >(this))->GetDocument() ); - } - - /// Returns true if this node has no children. - bool NoChildren() const { return !firstChild; } - - virtual const TiXmlDocument* ToDocument() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual const TiXmlElement* ToElement() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual const TiXmlComment* ToComment() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual const TiXmlUnknown* ToUnknown() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual const TiXmlText* ToText() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual const TiXmlDeclaration* ToDeclaration() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - - virtual TiXmlDocument* ToDocument() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual TiXmlElement* ToElement() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual TiXmlComment* ToComment() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual TiXmlUnknown* ToUnknown() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual TiXmlText* ToText() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual TiXmlDeclaration* ToDeclaration() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - - /** Create an exact duplicate of this node and return it. The memory must be deleted - by the caller. - */ - virtual TiXmlNode* Clone() const = 0; - - /** Accept a hierchical visit the nodes in the TinyXML DOM. Every node in the - XML tree will be conditionally visited and the host will be called back - via the TiXmlVisitor interface. - - This is essentially a SAX interface for TinyXML. (Note however it doesn't re-parse - the XML for the callbacks, so the performance of TinyXML is unchanged by using this - interface versus any other.) - - The interface has been based on ideas from: - - - http://www.saxproject.org/ - - http://c2.com/cgi/wiki?HierarchicalVisitorPattern - - Which are both good references for "visiting". - - An example of using Accept(): - @verbatim - TiXmlPrinter printer; - tinyxmlDoc.Accept( &printer ); - const char* xmlcstr = printer.CStr(); - @endverbatim - */ - virtual bool Accept( TiXmlVisitor* visitor ) const = 0; - -protected: - TiXmlNode( NodeType _type ); - - // Copy to the allocated object. Shared functionality between Clone, Copy constructor, - // and the assignment operator. - void CopyTo( TiXmlNode* target ) const; - - #ifdef TIXML_USE_STL - // The real work of the input operator. - virtual void StreamIn( std::istream* in, TIXML_STRING* tag ) = 0; - #endif - - // Figure out what is at *p, and parse it. Returns null if it is not an xml node. - TiXmlNode* Identify( const char* start, TiXmlEncoding encoding ); - - TiXmlNode* parent; - NodeType type; - - TiXmlNode* firstChild; - TiXmlNode* lastChild; - - TIXML_STRING value; - - TiXmlNode* prev; - TiXmlNode* next; - -private: - TiXmlNode( const TiXmlNode& ); // not implemented. - void operator=( const TiXmlNode& base ); // not allowed. -}; - - -/** An attribute is a name-value pair. Elements have an arbitrary - number of attributes, each with a unique name. - - @note The attributes are not TiXmlNodes, since they are not - part of the tinyXML document object model. There are other - suggested ways to look at this problem. -*/ -class TiXmlAttribute : public TiXmlBase -{ - friend class TiXmlAttributeSet; - -public: - /// Construct an empty attribute. - TiXmlAttribute() : TiXmlBase() - { - document = 0; - prev = next = 0; - } - - #ifdef TIXML_USE_STL - /// std::string constructor. - TiXmlAttribute( const std::string& _name, const std::string& _value ) - { - name = _name; - value = _value; - document = 0; - prev = next = 0; - } - #endif - - /// Construct an attribute with a name and value. - TiXmlAttribute( const char * _name, const char * _value ) - { - name = _name; - value = _value; - document = 0; - prev = next = 0; - } - - const char* Name() const { return name.c_str(); } ///< Return the name of this attribute. - const char* Value() const { return value.c_str(); } ///< Return the value of this attribute. - #ifdef TIXML_USE_STL - const std::string& ValueStr() const { return value; } ///< Return the value of this attribute. - #endif - int IntValue() const; ///< Return the value of this attribute, converted to an integer. - double DoubleValue() const; ///< Return the value of this attribute, converted to a double. - - // Get the tinyxml string representation - const TIXML_STRING& NameTStr() const { return name; } - - /** QueryIntValue examines the value string. It is an alternative to the - IntValue() method with richer error checking. - If the value is an integer, it is stored in 'value' and - the call returns TIXML_SUCCESS. If it is not - an integer, it returns TIXML_WRONG_TYPE. - - A specialized but useful call. Note that for success it returns 0, - which is the opposite of almost all other TinyXml calls. - */ - int QueryIntValue( int* _value ) const; - /// QueryDoubleValue examines the value string. See QueryIntValue(). - int QueryDoubleValue( double* _value ) const; - - void SetName( const char* _name ) { name = _name; } ///< Set the name of this attribute. - void SetValue( const char* _value ) { value = _value; } ///< Set the value. - - void SetIntValue( int _value ); ///< Set the value from an integer. - void SetDoubleValue( double _value ); ///< Set the value from a double. - - #ifdef TIXML_USE_STL - /// STL std::string form. - void SetName( const std::string& _name ) { name = _name; } - /// STL std::string form. - void SetValue( const std::string& _value ) { value = _value; } - #endif - - /// Get the next sibling attribute in the DOM. Returns null at end. - const TiXmlAttribute* Next() const; - TiXmlAttribute* Next() { - return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Next() ); - } - - /// Get the previous sibling attribute in the DOM. Returns null at beginning. - const TiXmlAttribute* Previous() const; - TiXmlAttribute* Previous() { - return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Previous() ); - } - - bool operator==( const TiXmlAttribute& rhs ) const { return rhs.name == name; } - bool operator<( const TiXmlAttribute& rhs ) const { return name < rhs.name; } - bool operator>( const TiXmlAttribute& rhs ) const { return name > rhs.name; } - - /* Attribute parsing starts: first letter of the name - returns: the next char after the value end quote - */ - virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); - - // Prints this Attribute to a FILE stream. - virtual void Print( FILE* cfile, int depth ) const { - Print( cfile, depth, 0 ); - } - void Print( FILE* cfile, int depth, TIXML_STRING* str ) const; - - // [internal use] - // Set the document pointer so the attribute can report errors. - void SetDocument( TiXmlDocument* doc ) { document = doc; } - -private: - TiXmlAttribute( const TiXmlAttribute& ); // not implemented. - void operator=( const TiXmlAttribute& base ); // not allowed. - - TiXmlDocument* document; // A pointer back to a document, for error reporting. - TIXML_STRING name; - TIXML_STRING value; - TiXmlAttribute* prev; - TiXmlAttribute* next; -}; - - -/* A class used to manage a group of attributes. - It is only used internally, both by the ELEMENT and the DECLARATION. - - The set can be changed transparent to the Element and Declaration - classes that use it, but NOT transparent to the Attribute - which has to implement a next() and previous() method. Which makes - it a bit problematic and prevents the use of STL. - - This version is implemented with circular lists because: - - I like circular lists - - it demonstrates some independence from the (typical) doubly linked list. -*/ -class TiXmlAttributeSet -{ -public: - TiXmlAttributeSet(); - ~TiXmlAttributeSet(); - - void Add( TiXmlAttribute* attribute ); - void Remove( TiXmlAttribute* attribute ); - - const TiXmlAttribute* First() const { return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; } - TiXmlAttribute* First() { return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; } - const TiXmlAttribute* Last() const { return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; } - TiXmlAttribute* Last() { return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; } - - TiXmlAttribute* Find( const char* _name ) const; - TiXmlAttribute* FindOrCreate( const char* _name ); - -# ifdef TIXML_USE_STL - TiXmlAttribute* Find( const std::string& _name ) const; - TiXmlAttribute* FindOrCreate( const std::string& _name ); -# endif - - -private: - //*ME: Because of hidden/disabled copy-construktor in TiXmlAttribute (sentinel-element), - //*ME: this class must be also use a hidden/disabled copy-constructor !!! - TiXmlAttributeSet( const TiXmlAttributeSet& ); // not allowed - void operator=( const TiXmlAttributeSet& ); // not allowed (as TiXmlAttribute) - - TiXmlAttribute sentinel; -}; - - -/** The element is a container class. It has a value, the element name, - and can contain other elements, text, comments, and unknowns. - Elements also contain an arbitrary number of attributes. -*/ -class TiXmlElement : public TiXmlNode -{ -public: - /// Construct an element. - TiXmlElement (const char * in_value); - - #ifdef TIXML_USE_STL - /// std::string constructor. - TiXmlElement( const std::string& _value ); - #endif - - TiXmlElement( const TiXmlElement& ); - - TiXmlElement& operator=( const TiXmlElement& base ); - - virtual ~TiXmlElement(); - - /** Given an attribute name, Attribute() returns the value - for the attribute of that name, or null if none exists. - */ - const char* Attribute( const char* name ) const; - - /** Given an attribute name, Attribute() returns the value - for the attribute of that name, or null if none exists. - If the attribute exists and can be converted to an integer, - the integer value will be put in the return 'i', if 'i' - is non-null. - */ - const char* Attribute( const char* name, int* i ) const; - - /** Given an attribute name, Attribute() returns the value - for the attribute of that name, or null if none exists. - If the attribute exists and can be converted to an double, - the double value will be put in the return 'd', if 'd' - is non-null. - */ - const char* Attribute( const char* name, double* d ) const; - - /** QueryIntAttribute examines the attribute - it is an alternative to the - Attribute() method with richer error checking. - If the attribute is an integer, it is stored in 'value' and - the call returns TIXML_SUCCESS. If it is not - an integer, it returns TIXML_WRONG_TYPE. If the attribute - does not exist, then TIXML_NO_ATTRIBUTE is returned. - */ - int QueryIntAttribute( const char* name, int* _value ) const; - /// QueryUnsignedAttribute examines the attribute - see QueryIntAttribute(). - int QueryUnsignedAttribute( const char* name, unsigned* _value ) const; - /** QueryBoolAttribute examines the attribute - see QueryIntAttribute(). - Note that '1', 'true', or 'yes' are considered true, while '0', 'false' - and 'no' are considered false. - */ - int QueryBoolAttribute( const char* name, bool* _value ) const; - /// QueryDoubleAttribute examines the attribute - see QueryIntAttribute(). - int QueryDoubleAttribute( const char* name, double* _value ) const; - /// QueryFloatAttribute examines the attribute - see QueryIntAttribute(). - int QueryFloatAttribute( const char* name, float* _value ) const { - double d; - int result = QueryDoubleAttribute( name, &d ); - if ( result == TIXML_SUCCESS ) { - *_value = (float)d; - } - return result; - } - - #ifdef TIXML_USE_STL - /// QueryStringAttribute examines the attribute - see QueryIntAttribute(). - int QueryStringAttribute( const char* name, std::string* _value ) const { - const char* cstr = Attribute( name ); - if ( cstr ) { - *_value = std::string( cstr ); - return TIXML_SUCCESS; - } - return TIXML_NO_ATTRIBUTE; - } - - /** Template form of the attribute query which will try to read the - attribute into the specified type. Very easy, very powerful, but - be careful to make sure to call this with the correct type. - - NOTE: This method doesn't work correctly for 'string' types that contain spaces. - - @return TIXML_SUCCESS, TIXML_WRONG_TYPE, or TIXML_NO_ATTRIBUTE - */ - template< typename T > int QueryValueAttribute( const std::string& name, T* outValue ) const - { - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( !node ) - return TIXML_NO_ATTRIBUTE; - - std::stringstream sstream( node->ValueStr() ); - sstream >> *outValue; - if ( !sstream.fail() ) - return TIXML_SUCCESS; - return TIXML_WRONG_TYPE; - } - - int QueryValueAttribute( const std::string& name, std::string* outValue ) const - { - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( !node ) - return TIXML_NO_ATTRIBUTE; - *outValue = node->ValueStr(); - return TIXML_SUCCESS; - } - #endif - - /** Sets an attribute of name to a given value. The attribute - will be created if it does not exist, or changed if it does. - */ - void SetAttribute( const char* name, const char * _value ); - - #ifdef TIXML_USE_STL - const std::string* Attribute( const std::string& name ) const; - const std::string* Attribute( const std::string& name, int* i ) const; - const std::string* Attribute( const std::string& name, double* d ) const; - int QueryIntAttribute( const std::string& name, int* _value ) const; - int QueryDoubleAttribute( const std::string& name, double* _value ) const; - - /// STL std::string form. - void SetAttribute( const std::string& name, const std::string& _value ); - ///< STL std::string form. - void SetAttribute( const std::string& name, int _value ); - ///< STL std::string form. - void SetDoubleAttribute( const std::string& name, double value ); - #endif - - /** Sets an attribute of name to a given value. The attribute - will be created if it does not exist, or changed if it does. - */ - void SetAttribute( const char * name, int value ); - - /** Sets an attribute of name to a given value. The attribute - will be created if it does not exist, or changed if it does. - */ - void SetDoubleAttribute( const char * name, double value ); - - /** Deletes an attribute with the given name. - */ - void RemoveAttribute( const char * name ); - #ifdef TIXML_USE_STL - void RemoveAttribute( const std::string& name ) { RemoveAttribute (name.c_str ()); } ///< STL std::string form. - #endif - - const TiXmlAttribute* FirstAttribute() const { return attributeSet.First(); } ///< Access the first attribute in this element. - TiXmlAttribute* FirstAttribute() { return attributeSet.First(); } - const TiXmlAttribute* LastAttribute() const { return attributeSet.Last(); } ///< Access the last attribute in this element. - TiXmlAttribute* LastAttribute() { return attributeSet.Last(); } - - /** Convenience function for easy access to the text inside an element. Although easy - and concise, GetText() is limited compared to getting the TiXmlText child - and accessing it directly. - - If the first child of 'this' is a TiXmlText, the GetText() - returns the character string of the Text node, else null is returned. - - This is a convenient method for getting the text of simple contained text: - @verbatim - This is text - const char* str = fooElement->GetText(); - @endverbatim - - 'str' will be a pointer to "This is text". - - Note that this function can be misleading. If the element foo was created from - this XML: - @verbatim - This is text - @endverbatim - - then the value of str would be null. The first child node isn't a text node, it is - another element. From this XML: - @verbatim - This is text - @endverbatim - GetText() will return "This is ". - - WARNING: GetText() accesses a child node - don't become confused with the - similarly named TiXmlHandle::Text() and TiXmlNode::ToText() which are - safe type casts on the referenced node. - */ - const char* GetText() const; - - /// Creates a new Element and returns it - the returned element is a copy. - virtual TiXmlNode* Clone() const; - // Print the Element to a FILE stream. - virtual void Print( FILE* cfile, int depth ) const; - - /* Attribtue parsing starts: next char past '<' - returns: next char past '>' - */ - virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); - - virtual const TiXmlElement* ToElement() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - virtual TiXmlElement* ToElement() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - virtual bool Accept( TiXmlVisitor* visitor ) const; - -protected: - - void CopyTo( TiXmlElement* target ) const; - void ClearThis(); // like clear, but initializes 'this' object as well - - // Used to be public [internal use] - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif - /* [internal use] - Reads the "value" of the element -- another element, or text. - This should terminate with the current end tag. - */ - const char* ReadValue( const char* in, TiXmlParsingData* prevData, TiXmlEncoding encoding ); - -private: - TiXmlAttributeSet attributeSet; -}; - - -/** An XML comment. -*/ -class TiXmlComment : public TiXmlNode -{ -public: - /// Constructs an empty comment. - TiXmlComment() : TiXmlNode( TiXmlNode::TINYXML_COMMENT ) {} - /// Construct a comment from text. - TiXmlComment( const char* _value ) : TiXmlNode( TiXmlNode::TINYXML_COMMENT ) { - SetValue( _value ); - } - TiXmlComment( const TiXmlComment& ); - TiXmlComment& operator=( const TiXmlComment& base ); - - virtual ~TiXmlComment() {} - - /// Returns a copy of this Comment. - virtual TiXmlNode* Clone() const; - // Write this Comment to a FILE stream. - virtual void Print( FILE* cfile, int depth ) const; - - /* Attribtue parsing starts: at the ! of the !-- - returns: next char past '>' - */ - virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); - - virtual const TiXmlComment* ToComment() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - virtual TiXmlComment* ToComment() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - virtual bool Accept( TiXmlVisitor* visitor ) const; - -protected: - void CopyTo( TiXmlComment* target ) const; - - // used to be public - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif -// virtual void StreamOut( TIXML_OSTREAM * out ) const; - -private: - -}; - - -/** XML text. A text node can have 2 ways to output the next. "normal" output - and CDATA. It will default to the mode it was parsed from the XML file and - you generally want to leave it alone, but you can change the output mode with - SetCDATA() and query it with CDATA(). -*/ -class TiXmlText : public TiXmlNode -{ - friend class TiXmlElement; -public: - /** Constructor for text element. By default, it is treated as - normal, encoded text. If you want it be output as a CDATA text - element, set the parameter _cdata to 'true' - */ - TiXmlText (const char * initValue ) : TiXmlNode (TiXmlNode::TINYXML_TEXT) - { - SetValue( initValue ); - cdata = false; - } - virtual ~TiXmlText() {} - - #ifdef TIXML_USE_STL - /// Constructor. - TiXmlText( const std::string& initValue ) : TiXmlNode (TiXmlNode::TINYXML_TEXT) - { - SetValue( initValue ); - cdata = false; - } - #endif - - TiXmlText( const TiXmlText& copy ) : TiXmlNode( TiXmlNode::TINYXML_TEXT ) { copy.CopyTo( this ); } - TiXmlText& operator=( const TiXmlText& base ) { base.CopyTo( this ); return *this; } - - // Write this text object to a FILE stream. - virtual void Print( FILE* cfile, int depth ) const; - - /// Queries whether this represents text using a CDATA section. - bool CDATA() const { return cdata; } - /// Turns on or off a CDATA representation of text. - void SetCDATA( bool _cdata ) { cdata = _cdata; } - - virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); - - virtual const TiXmlText* ToText() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - virtual TiXmlText* ToText() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - virtual bool Accept( TiXmlVisitor* content ) const; - -protected : - /// [internal use] Creates a new Element and returns it. - virtual TiXmlNode* Clone() const; - void CopyTo( TiXmlText* target ) const; - - bool Blank() const; // returns true if all white space and new lines - // [internal use] - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif - -private: - bool cdata; // true if this should be input and output as a CDATA style text element -}; - - -/** In correct XML the declaration is the first entry in the file. - @verbatim - - @endverbatim - - TinyXml will happily read or write files without a declaration, - however. There are 3 possible attributes to the declaration: - version, encoding, and standalone. - - Note: In this version of the code, the attributes are - handled as special cases, not generic attributes, simply - because there can only be at most 3 and they are always the same. -*/ -class TiXmlDeclaration : public TiXmlNode -{ -public: - /// Construct an empty declaration. - TiXmlDeclaration() : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) {} - -#ifdef TIXML_USE_STL - /// Constructor. - TiXmlDeclaration( const std::string& _version, - const std::string& _encoding, - const std::string& _standalone ); -#endif - - /// Construct. - TiXmlDeclaration( const char* _version, - const char* _encoding, - const char* _standalone ); - - TiXmlDeclaration( const TiXmlDeclaration& copy ); - TiXmlDeclaration& operator=( const TiXmlDeclaration& copy ); - - virtual ~TiXmlDeclaration() {} - - /// Version. Will return an empty string if none was found. - const char *Version() const { return version.c_str (); } - /// Encoding. Will return an empty string if none was found. - const char *Encoding() const { return encoding.c_str (); } - /// Is this a standalone document? - const char *Standalone() const { return standalone.c_str (); } - - /// Creates a copy of this Declaration and returns it. - virtual TiXmlNode* Clone() const; - // Print this declaration to a FILE stream. - virtual void Print( FILE* cfile, int depth, TIXML_STRING* str ) const; - virtual void Print( FILE* cfile, int depth ) const { - Print( cfile, depth, 0 ); - } - - virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); - - virtual const TiXmlDeclaration* ToDeclaration() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - virtual TiXmlDeclaration* ToDeclaration() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - virtual bool Accept( TiXmlVisitor* visitor ) const; - -protected: - void CopyTo( TiXmlDeclaration* target ) const; - // used to be public - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif - -private: - - TIXML_STRING version; - TIXML_STRING encoding; - TIXML_STRING standalone; -}; - - -/** Any tag that tinyXml doesn't recognize is saved as an - unknown. It is a tag of text, but should not be modified. - It will be written back to the XML, unchanged, when the file - is saved. - - DTD tags get thrown into TiXmlUnknowns. -*/ -class TiXmlUnknown : public TiXmlNode -{ -public: - TiXmlUnknown() : TiXmlNode( TiXmlNode::TINYXML_UNKNOWN ) {} - virtual ~TiXmlUnknown() {} - - TiXmlUnknown( const TiXmlUnknown& copy ) : TiXmlNode( TiXmlNode::TINYXML_UNKNOWN ) { copy.CopyTo( this ); } - TiXmlUnknown& operator=( const TiXmlUnknown& copy ) { copy.CopyTo( this ); return *this; } - - /// Creates a copy of this Unknown and returns it. - virtual TiXmlNode* Clone() const; - // Print this Unknown to a FILE stream. - virtual void Print( FILE* cfile, int depth ) const; - - virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); - - virtual const TiXmlUnknown* ToUnknown() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - virtual TiXmlUnknown* ToUnknown() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - virtual bool Accept( TiXmlVisitor* content ) const; - -protected: - void CopyTo( TiXmlUnknown* target ) const; - - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif - -private: - -}; - - -/** Always the top level node. A document binds together all the - XML pieces. It can be saved, loaded, and printed to the screen. - The 'value' of a document node is the xml file name. -*/ -class TiXmlDocument : public TiXmlNode -{ -public: - /// Create an empty document, that has no name. - TiXmlDocument(); - /// Create a document with a name. The name of the document is also the filename of the xml. - TiXmlDocument( const char * documentName ); - - #ifdef TIXML_USE_STL - /// Constructor. - TiXmlDocument( const std::string& documentName ); - #endif - - TiXmlDocument( const TiXmlDocument& copy ); - TiXmlDocument& operator=( const TiXmlDocument& copy ); - - virtual ~TiXmlDocument() {} - - /** Load a file using the current document value. - Returns true if successful. Will delete any existing - document data before loading. - */ - bool LoadFile( TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); - /// Save a file using the current document value. Returns true if successful. - bool SaveFile() const; - /// Load a file using the given filename. Returns true if successful. - bool LoadFile( const char * filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); - /// Save a file using the given filename. Returns true if successful. - bool SaveFile( const char * filename ) const; - /** Load a file using the given FILE*. Returns true if successful. Note that this method - doesn't stream - the entire object pointed at by the FILE* - will be interpreted as an XML file. TinyXML doesn't stream in XML from the current - file location. Streaming may be added in the future. - */ - bool LoadFile( FILE*, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); - /// Save a file using the given FILE*. Returns true if successful. - bool SaveFile( FILE* ) const; - - #ifdef TIXML_USE_STL - bool LoadFile( const std::string& filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ) ///< STL std::string version. - { - return LoadFile( filename.c_str(), encoding ); - } - bool SaveFile( const std::string& filename ) const ///< STL std::string version. - { - return SaveFile( filename.c_str() ); - } - #endif - - /** Parse the given null terminated block of xml data. Passing in an encoding to this - method (either TIXML_ENCODING_LEGACY or TIXML_ENCODING_UTF8 will force TinyXml - to use that encoding, regardless of what TinyXml might otherwise try to detect. - */ - virtual const char* Parse( const char* p, TiXmlParsingData* data = 0, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); - - /** Get the root element -- the only top level element -- of the document. - In well formed XML, there should only be one. TinyXml is tolerant of - multiple elements at the document level. - */ - const TiXmlElement* RootElement() const { return FirstChildElement(); } - TiXmlElement* RootElement() { return FirstChildElement(); } - - /** If an error occurs, Error will be set to true. Also, - - The ErrorId() will contain the integer identifier of the error (not generally useful) - - The ErrorDesc() method will return the name of the error. (very useful) - - The ErrorRow() and ErrorCol() will return the location of the error (if known) - */ - bool Error() const { return error; } - - /// Contains a textual (english) description of the error if one occurs. - const char * ErrorDesc() const { return errorDesc.c_str (); } - - /** Generally, you probably want the error string ( ErrorDesc() ). But if you - prefer the ErrorId, this function will fetch it. - */ - int ErrorId() const { return errorId; } - - /** Returns the location (if known) of the error. The first column is column 1, - and the first row is row 1. A value of 0 means the row and column wasn't applicable - (memory errors, for example, have no row/column) or the parser lost the error. (An - error in the error reporting, in that case.) - - @sa SetTabSize, Row, Column - */ - int ErrorRow() const { return errorLocation.row+1; } - int ErrorCol() const { return errorLocation.col+1; } ///< The column where the error occured. See ErrorRow() - - /** SetTabSize() allows the error reporting functions (ErrorRow() and ErrorCol()) - to report the correct values for row and column. It does not change the output - or input in any way. - - By calling this method, with a tab size - greater than 0, the row and column of each node and attribute is stored - when the file is loaded. Very useful for tracking the DOM back in to - the source file. - - The tab size is required for calculating the location of nodes. If not - set, the default of 4 is used. The tabsize is set per document. Setting - the tabsize to 0 disables row/column tracking. - - Note that row and column tracking is not supported when using operator>>. - - The tab size needs to be enabled before the parse or load. Correct usage: - @verbatim - TiXmlDocument doc; - doc.SetTabSize( 8 ); - doc.Load( "myfile.xml" ); - @endverbatim - - @sa Row, Column - */ - void SetTabSize( int _tabsize ) { tabsize = _tabsize; } - - int TabSize() const { return tabsize; } - - /** If you have handled the error, it can be reset with this call. The error - state is automatically cleared if you Parse a new XML block. - */ - void ClearError() { error = false; - errorId = 0; - errorDesc = ""; - errorLocation.row = errorLocation.col = 0; - //errorLocation.last = 0; - } - - /** Write the document to standard out using formatted printing ("pretty print"). */ - void Print() const { Print( stdout, 0 ); } - - /* Write the document to a string using formatted printing ("pretty print"). This - will allocate a character array (new char[]) and return it as a pointer. The - calling code pust call delete[] on the return char* to avoid a memory leak. - */ - //char* PrintToMemory() const; - - /// Print this Document to a FILE stream. - virtual void Print( FILE* cfile, int depth = 0 ) const; - // [internal use] - void SetError( int err, const char* errorLocation, TiXmlParsingData* prevData, TiXmlEncoding encoding ); - - virtual const TiXmlDocument* ToDocument() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - virtual TiXmlDocument* ToDocument() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - virtual bool Accept( TiXmlVisitor* content ) const; - -protected : - // [internal use] - virtual TiXmlNode* Clone() const; - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif - -private: - void CopyTo( TiXmlDocument* target ) const; - - bool error; - int errorId; - TIXML_STRING errorDesc; - int tabsize; - TiXmlCursor errorLocation; - bool useMicrosoftBOM; // the UTF-8 BOM were found when read. Note this, and try to write. -}; - - -/** - A TiXmlHandle is a class that wraps a node pointer with null checks; this is - an incredibly useful thing. Note that TiXmlHandle is not part of the TinyXml - DOM structure. It is a separate utility class. - - Take an example: - @verbatim - - - - - - - @endverbatim - - Assuming you want the value of "attributeB" in the 2nd "Child" element, it's very - easy to write a *lot* of code that looks like: - - @verbatim - TiXmlElement* root = document.FirstChildElement( "Document" ); - if ( root ) - { - TiXmlElement* element = root->FirstChildElement( "Element" ); - if ( element ) - { - TiXmlElement* child = element->FirstChildElement( "Child" ); - if ( child ) - { - TiXmlElement* child2 = child->NextSiblingElement( "Child" ); - if ( child2 ) - { - // Finally do something useful. - @endverbatim - - And that doesn't even cover "else" cases. TiXmlHandle addresses the verbosity - of such code. A TiXmlHandle checks for null pointers so it is perfectly safe - and correct to use: - - @verbatim - TiXmlHandle docHandle( &document ); - TiXmlElement* child2 = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", 1 ).ToElement(); - if ( child2 ) - { - // do something useful - @endverbatim - - Which is MUCH more concise and useful. - - It is also safe to copy handles - internally they are nothing more than node pointers. - @verbatim - TiXmlHandle handleCopy = handle; - @endverbatim - - What they should not be used for is iteration: - - @verbatim - int i=0; - while ( true ) - { - TiXmlElement* child = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", i ).ToElement(); - if ( !child ) - break; - // do something - ++i; - } - @endverbatim - - It seems reasonable, but it is in fact two embedded while loops. The Child method is - a linear walk to find the element, so this code would iterate much more than it needs - to. Instead, prefer: - - @verbatim - TiXmlElement* child = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).FirstChild( "Child" ).ToElement(); - - for( child; child; child=child->NextSiblingElement() ) - { - // do something - } - @endverbatim -*/ -class TiXmlHandle -{ -public: - /// Create a handle from any node (at any depth of the tree.) This can be a null pointer. - TiXmlHandle( TiXmlNode* _node ) { this->node = _node; } - /// Copy constructor - TiXmlHandle( const TiXmlHandle& ref ) { this->node = ref.node; } - TiXmlHandle operator=( const TiXmlHandle& ref ) { if ( &ref != this ) this->node = ref.node; return *this; } - - /// Return a handle to the first child node. - TiXmlHandle FirstChild() const; - /// Return a handle to the first child node with the given name. - TiXmlHandle FirstChild( const char * value ) const; - /// Return a handle to the first child element. - TiXmlHandle FirstChildElement() const; - /// Return a handle to the first child element with the given name. - TiXmlHandle FirstChildElement( const char * value ) const; - - /** Return a handle to the "index" child with the given name. - The first child is 0, the second 1, etc. - */ - TiXmlHandle Child( const char* value, int index ) const; - /** Return a handle to the "index" child. - The first child is 0, the second 1, etc. - */ - TiXmlHandle Child( int index ) const; - /** Return a handle to the "index" child element with the given name. - The first child element is 0, the second 1, etc. Note that only TiXmlElements - are indexed: other types are not counted. - */ - TiXmlHandle ChildElement( const char* value, int index ) const; - /** Return a handle to the "index" child element. - The first child element is 0, the second 1, etc. Note that only TiXmlElements - are indexed: other types are not counted. - */ - TiXmlHandle ChildElement( int index ) const; - - #ifdef TIXML_USE_STL - TiXmlHandle FirstChild( const std::string& _value ) const { return FirstChild( _value.c_str() ); } - TiXmlHandle FirstChildElement( const std::string& _value ) const { return FirstChildElement( _value.c_str() ); } - - TiXmlHandle Child( const std::string& _value, int index ) const { return Child( _value.c_str(), index ); } - TiXmlHandle ChildElement( const std::string& _value, int index ) const { return ChildElement( _value.c_str(), index ); } - #endif - - /** Return the handle as a TiXmlNode. This may return null. - */ - TiXmlNode* ToNode() const { return node; } - /** Return the handle as a TiXmlElement. This may return null. - */ - TiXmlElement* ToElement() const { return ( ( node && node->ToElement() ) ? node->ToElement() : 0 ); } - /** Return the handle as a TiXmlText. This may return null. - */ - TiXmlText* ToText() const { return ( ( node && node->ToText() ) ? node->ToText() : 0 ); } - /** Return the handle as a TiXmlUnknown. This may return null. - */ - TiXmlUnknown* ToUnknown() const { return ( ( node && node->ToUnknown() ) ? node->ToUnknown() : 0 ); } - - /** @deprecated use ToNode. - Return the handle as a TiXmlNode. This may return null. - */ - TiXmlNode* Node() const { return ToNode(); } - /** @deprecated use ToElement. - Return the handle as a TiXmlElement. This may return null. - */ - TiXmlElement* Element() const { return ToElement(); } - /** @deprecated use ToText() - Return the handle as a TiXmlText. This may return null. - */ - TiXmlText* Text() const { return ToText(); } - /** @deprecated use ToUnknown() - Return the handle as a TiXmlUnknown. This may return null. - */ - TiXmlUnknown* Unknown() const { return ToUnknown(); } - -private: - TiXmlNode* node; -}; - - -/** Print to memory functionality. The TiXmlPrinter is useful when you need to: - - -# Print to memory (especially in non-STL mode) - -# Control formatting (line endings, etc.) - - When constructed, the TiXmlPrinter is in its default "pretty printing" mode. - Before calling Accept() you can call methods to control the printing - of the XML document. After TiXmlNode::Accept() is called, the printed document can - be accessed via the CStr(), Str(), and Size() methods. - - TiXmlPrinter uses the Visitor API. - @verbatim - TiXmlPrinter printer; - printer.SetIndent( "\t" ); - - doc.Accept( &printer ); - fprintf( stdout, "%s", printer.CStr() ); - @endverbatim -*/ -class TiXmlPrinter : public TiXmlVisitor -{ -public: - TiXmlPrinter() : depth( 0 ), simpleTextPrint( false ), - buffer(), indent( " " ), lineBreak( "\n" ) {} - - virtual bool VisitEnter( const TiXmlDocument& doc ); - virtual bool VisitExit( const TiXmlDocument& doc ); - - virtual bool VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute ); - virtual bool VisitExit( const TiXmlElement& element ); - - virtual bool Visit( const TiXmlDeclaration& declaration ); - virtual bool Visit( const TiXmlText& text ); - virtual bool Visit( const TiXmlComment& comment ); - virtual bool Visit( const TiXmlUnknown& unknown ); - - /** Set the indent characters for printing. By default 4 spaces - but tab (\t) is also useful, or null/empty string for no indentation. - */ - void SetIndent( const char* _indent ) { indent = _indent ? _indent : "" ; } - /// Query the indention string. - const char* Indent() { return indent.c_str(); } - /** Set the line breaking string. By default set to newline (\n). - Some operating systems prefer other characters, or can be - set to the null/empty string for no indenation. - */ - void SetLineBreak( const char* _lineBreak ) { lineBreak = _lineBreak ? _lineBreak : ""; } - /// Query the current line breaking string. - const char* LineBreak() { return lineBreak.c_str(); } - - /** Switch over to "stream printing" which is the most dense formatting without - linebreaks. Common when the XML is needed for network transmission. - */ - void SetStreamPrinting() { indent = ""; - lineBreak = ""; - } - /// Return the result. - const char* CStr() { return buffer.c_str(); } - /// Return the length of the result string. - size_t Size() { return buffer.size(); } - - #ifdef TIXML_USE_STL - /// Return the result. - const std::string& Str() { return buffer; } - #endif - -private: - void DoIndent() { - for( int i=0; i -#include - -#include "tinyxml.h" - -//#define DEBUG_PARSER -#if defined( DEBUG_PARSER ) -# if defined( DEBUG ) && defined( _MSC_VER ) -# include -# define TIXML_LOG OutputDebugString -# else -# define TIXML_LOG printf -# endif -#endif - -// Note tha "PutString" hardcodes the same list. This -// is less flexible than it appears. Changing the entries -// or order will break putstring. -TiXmlBase::Entity TiXmlBase::entity[ TiXmlBase::NUM_ENTITY ] = -{ - { "&", 5, '&' }, - { "<", 4, '<' }, - { ">", 4, '>' }, - { """, 6, '\"' }, - { "'", 6, '\'' } -}; - -// Bunch of unicode info at: -// http://www.unicode.org/faq/utf_bom.html -// Including the basic of this table, which determines the #bytes in the -// sequence from the lead byte. 1 placed for invalid sequences -- -// although the result will be junk, pass it through as much as possible. -// Beware of the non-characters in UTF-8: -// ef bb bf (Microsoft "lead bytes") -// ef bf be -// ef bf bf - -const unsigned char TIXML_UTF_LEAD_0 = 0xefU; -const unsigned char TIXML_UTF_LEAD_1 = 0xbbU; -const unsigned char TIXML_UTF_LEAD_2 = 0xbfU; - -const int TiXmlBase::utf8ByteTable[256] = -{ - // 0 1 2 3 4 5 6 7 8 9 a b c d e f - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x00 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x10 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x20 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x30 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x40 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x50 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x60 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x70 End of ASCII range - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x80 0x80 to 0xc1 invalid - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x90 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0xa0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0xb0 - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 0xc0 0xc2 to 0xdf 2 byte - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 0xd0 - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 0xe0 0xe0 to 0xef 3 byte - 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // 0xf0 0xf0 to 0xf4 4 byte, 0xf5 and higher invalid -}; - - -void TiXmlBase::ConvertUTF32ToUTF8( unsigned long input, char* output, int* length ) -{ - const unsigned long BYTE_MASK = 0xBF; - const unsigned long BYTE_MARK = 0x80; - const unsigned long FIRST_BYTE_MARK[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC }; - - if (input < 0x80) - *length = 1; - else if ( input < 0x800 ) - *length = 2; - else if ( input < 0x10000 ) - *length = 3; - else if ( input < 0x200000 ) - *length = 4; - else - { *length = 0; return; } // This code won't covert this correctly anyway. - - output += *length; - - // Scary scary fall throughs. - switch (*length) - { - case 4: - --output; - *output = (char)((input | BYTE_MARK) & BYTE_MASK); - input >>= 6; - case 3: - --output; - *output = (char)((input | BYTE_MARK) & BYTE_MASK); - input >>= 6; - case 2: - --output; - *output = (char)((input | BYTE_MARK) & BYTE_MASK); - input >>= 6; - case 1: - --output; - *output = (char)(input | FIRST_BYTE_MARK[*length]); - } -} - - -/*static*/ int TiXmlBase::IsAlpha( unsigned char anyByte, TiXmlEncoding /*encoding*/ ) -{ - // This will only work for low-ascii, everything else is assumed to be a valid - // letter. I'm not sure this is the best approach, but it is quite tricky trying - // to figure out alhabetical vs. not across encoding. So take a very - // conservative approach. - -// if ( encoding == TIXML_ENCODING_UTF8 ) -// { - if ( anyByte < 127 ) - return isalpha( anyByte ); - else - return 1; // What else to do? The unicode set is huge...get the english ones right. -// } -// else -// { -// return isalpha( anyByte ); -// } -} - - -/*static*/ int TiXmlBase::IsAlphaNum( unsigned char anyByte, TiXmlEncoding /*encoding*/ ) -{ - // This will only work for low-ascii, everything else is assumed to be a valid - // letter. I'm not sure this is the best approach, but it is quite tricky trying - // to figure out alhabetical vs. not across encoding. So take a very - // conservative approach. - -// if ( encoding == TIXML_ENCODING_UTF8 ) -// { - if ( anyByte < 127 ) - return isalnum( anyByte ); - else - return 1; // What else to do? The unicode set is huge...get the english ones right. -// } -// else -// { -// return isalnum( anyByte ); -// } -} - - -class TiXmlParsingData -{ - friend class TiXmlDocument; - public: - void Stamp( const char* now, TiXmlEncoding encoding ); - - const TiXmlCursor& Cursor() const { return cursor; } - - private: - // Only used by the document! - TiXmlParsingData( const char* start, int _tabsize, int row, int col ) - { - assert( start ); - stamp = start; - tabsize = _tabsize; - cursor.row = row; - cursor.col = col; - } - - TiXmlCursor cursor; - const char* stamp; - int tabsize; -}; - - -void TiXmlParsingData::Stamp( const char* now, TiXmlEncoding encoding ) -{ - assert( now ); - - // Do nothing if the tabsize is 0. - if ( tabsize < 1 ) - { - return; - } - - // Get the current row, column. - int row = cursor.row; - int col = cursor.col; - const char* p = stamp; - assert( p ); - - while ( p < now ) - { - // Treat p as unsigned, so we have a happy compiler. - const unsigned char* pU = (const unsigned char*)p; - - // Code contributed by Fletcher Dunn: (modified by lee) - switch (*pU) { - case 0: - // We *should* never get here, but in case we do, don't - // advance past the terminating null character, ever - return; - - case '\r': - // bump down to the next line - ++row; - col = 0; - // Eat the character - ++p; - - // Check for \r\n sequence, and treat this as a single character - if (*p == '\n') { - ++p; - } - break; - - case '\n': - // bump down to the next line - ++row; - col = 0; - - // Eat the character - ++p; - - // Check for \n\r sequence, and treat this as a single - // character. (Yes, this bizarre thing does occur still - // on some arcane platforms...) - if (*p == '\r') { - ++p; - } - break; - - case '\t': - // Eat the character - ++p; - - // Skip to next tab stop - col = (col / tabsize + 1) * tabsize; - break; - - case TIXML_UTF_LEAD_0: - if ( encoding == TIXML_ENCODING_UTF8 ) - { - if ( *(p+1) && *(p+2) ) - { - // In these cases, don't advance the column. These are - // 0-width spaces. - if ( *(pU+1)==TIXML_UTF_LEAD_1 && *(pU+2)==TIXML_UTF_LEAD_2 ) - p += 3; - else if ( *(pU+1)==0xbfU && *(pU+2)==0xbeU ) - p += 3; - else if ( *(pU+1)==0xbfU && *(pU+2)==0xbfU ) - p += 3; - else - { p +=3; ++col; } // A normal character. - } - } - else - { - ++p; - ++col; - } - break; - - default: - if ( encoding == TIXML_ENCODING_UTF8 ) - { - // Eat the 1 to 4 byte utf8 character. - int step = TiXmlBase::utf8ByteTable[*((const unsigned char*)p)]; - if ( step == 0 ) - step = 1; // Error case from bad encoding, but handle gracefully. - p += step; - - // Just advance one column, of course. - ++col; - } - else - { - ++p; - ++col; - } - break; - } - } - cursor.row = row; - cursor.col = col; - assert( cursor.row >= -1 ); - assert( cursor.col >= -1 ); - stamp = p; - assert( stamp ); -} - - -const char* TiXmlBase::SkipWhiteSpace( const char* p, TiXmlEncoding encoding ) -{ - if ( !p || !*p ) - { - return 0; - } - if ( encoding == TIXML_ENCODING_UTF8 ) - { - while ( *p ) - { - const unsigned char* pU = (const unsigned char*)p; - - // Skip the stupid Microsoft UTF-8 Byte order marks - if ( *(pU+0)==TIXML_UTF_LEAD_0 - && *(pU+1)==TIXML_UTF_LEAD_1 - && *(pU+2)==TIXML_UTF_LEAD_2 ) - { - p += 3; - continue; - } - else if(*(pU+0)==TIXML_UTF_LEAD_0 - && *(pU+1)==0xbfU - && *(pU+2)==0xbeU ) - { - p += 3; - continue; - } - else if(*(pU+0)==TIXML_UTF_LEAD_0 - && *(pU+1)==0xbfU - && *(pU+2)==0xbfU ) - { - p += 3; - continue; - } - - if ( IsWhiteSpace( *p ) ) // Still using old rules for white space. - ++p; - else - break; - } - } - else - { - while ( *p && IsWhiteSpace( *p ) ) - ++p; - } - - return p; -} - -#ifdef TIXML_USE_STL -/*static*/ bool TiXmlBase::StreamWhiteSpace( std::istream * in, TIXML_STRING * tag ) -{ - for( ;; ) - { - if ( !in->good() ) return false; - - int c = in->peek(); - // At this scope, we can't get to a document. So fail silently. - if ( !IsWhiteSpace( c ) || c <= 0 ) - return true; - - *tag += (char) in->get(); - } -} - -/*static*/ bool TiXmlBase::StreamTo( std::istream * in, int character, TIXML_STRING * tag ) -{ - //assert( character > 0 && character < 128 ); // else it won't work in utf-8 - while ( in->good() ) - { - int c = in->peek(); - if ( c == character ) - return true; - if ( c <= 0 ) // Silent failure: can't get document at this scope - return false; - - in->get(); - *tag += (char) c; - } - return false; -} -#endif - -// One of TinyXML's more performance demanding functions. Try to keep the memory overhead down. The -// "assign" optimization removes over 10% of the execution time. -// -const char* TiXmlBase::ReadName( const char* p, TIXML_STRING * name, TiXmlEncoding encoding ) -{ - // Oddly, not supported on some comilers, - //name->clear(); - // So use this: - *name = ""; - assert( p ); - - // Names start with letters or underscores. - // Of course, in unicode, tinyxml has no idea what a letter *is*. The - // algorithm is generous. - // - // After that, they can be letters, underscores, numbers, - // hyphens, or colons. (Colons are valid ony for namespaces, - // but tinyxml can't tell namespaces from names.) - if ( p && *p - && ( IsAlpha( (unsigned char) *p, encoding ) || *p == '_' ) ) - { - const char* start = p; - while( p && *p - && ( IsAlphaNum( (unsigned char ) *p, encoding ) - || *p == '_' - || *p == '-' - || *p == '.' - || *p == ':' ) ) - { - //(*name) += *p; // expensive - ++p; - } - if ( p-start > 0 ) { - name->assign( start, p-start ); - } - return p; - } - return 0; -} - -const char* TiXmlBase::GetEntity( const char* p, char* value, int* length, TiXmlEncoding encoding ) -{ - // Presume an entity, and pull it out. - TIXML_STRING ent; - int i; - *length = 0; - - if ( *(p+1) && *(p+1) == '#' && *(p+2) ) - { - unsigned long ucs = 0; - ptrdiff_t delta = 0; - unsigned mult = 1; - - if ( *(p+2) == 'x' ) - { - // Hexadecimal. - if ( !*(p+3) ) return 0; - - const char* q = p+3; - q = strchr( q, ';' ); - - if ( !q || !*q ) return 0; - - delta = q-p; - --q; - - while ( *q != 'x' ) - { - if ( *q >= '0' && *q <= '9' ) - ucs += mult * (*q - '0'); - else if ( *q >= 'a' && *q <= 'f' ) - ucs += mult * (*q - 'a' + 10); - else if ( *q >= 'A' && *q <= 'F' ) - ucs += mult * (*q - 'A' + 10 ); - else - return 0; - mult *= 16; - --q; - } - } - else - { - // Decimal. - if ( !*(p+2) ) return 0; - - const char* q = p+2; - q = strchr( q, ';' ); - - if ( !q || !*q ) return 0; - - delta = q-p; - --q; - - while ( *q != '#' ) - { - if ( *q >= '0' && *q <= '9' ) - ucs += mult * (*q - '0'); - else - return 0; - mult *= 10; - --q; - } - } - if ( encoding == TIXML_ENCODING_UTF8 ) - { - // convert the UCS to UTF-8 - ConvertUTF32ToUTF8( ucs, value, length ); - } - else - { - *value = (char)ucs; - *length = 1; - } - return p + delta + 1; - } - - // Now try to match it. - for( i=0; iappend( cArr, len ); - } - } - else - { - bool whitespace = false; - - // Remove leading white space: - p = SkipWhiteSpace( p, encoding ); - while ( p && *p - && !StringEqual( p, endTag, caseInsensitive, encoding ) ) - { - if ( *p == '\r' || *p == '\n' ) - { - whitespace = true; - ++p; - } - else if ( IsWhiteSpace( *p ) ) - { - whitespace = true; - ++p; - } - else - { - // If we've found whitespace, add it before the - // new character. Any whitespace just becomes a space. - if ( whitespace ) - { - (*text) += ' '; - whitespace = false; - } - int len; - char cArr[4] = { 0, 0, 0, 0 }; - p = GetChar( p, cArr, &len, encoding ); - if ( len == 1 ) - (*text) += cArr[0]; // more efficient - else - text->append( cArr, len ); - } - } - } - if ( p && *p ) - p += strlen( endTag ); - return ( p && *p ) ? p : 0; -} - -#ifdef TIXML_USE_STL - -void TiXmlDocument::StreamIn( std::istream * in, TIXML_STRING * tag ) -{ - // The basic issue with a document is that we don't know what we're - // streaming. Read something presumed to be a tag (and hope), then - // identify it, and call the appropriate stream method on the tag. - // - // This "pre-streaming" will never read the closing ">" so the - // sub-tag can orient itself. - - if ( !StreamTo( in, '<', tag ) ) - { - SetError( TIXML_ERROR_PARSING_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return; - } - - while ( in->good() ) - { - int tagIndex = (int) tag->length(); - while ( in->good() && in->peek() != '>' ) - { - int c = in->get(); - if ( c <= 0 ) - { - SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); - break; - } - (*tag) += (char) c; - } - - if ( in->good() ) - { - // We now have something we presume to be a node of - // some sort. Identify it, and call the node to - // continue streaming. - TiXmlNode* node = Identify( tag->c_str() + tagIndex, TIXML_DEFAULT_ENCODING ); - - if ( node ) - { - node->StreamIn( in, tag ); - bool isElement = node->ToElement() != 0; - delete node; - node = 0; - - // If this is the root element, we're done. Parsing will be - // done by the >> operator. - if ( isElement ) - { - return; - } - } - else - { - SetError( TIXML_ERROR, 0, 0, TIXML_ENCODING_UNKNOWN ); - return; - } - } - } - // We should have returned sooner. - SetError( TIXML_ERROR, 0, 0, TIXML_ENCODING_UNKNOWN ); -} - -#endif - -const char* TiXmlDocument::Parse( const char* p, TiXmlParsingData* prevData, TiXmlEncoding encoding ) -{ - ClearError(); - - // Parse away, at the document level. Since a document - // contains nothing but other tags, most of what happens - // here is skipping white space. - if ( !p || !*p ) - { - SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - - // Note that, for a document, this needs to come - // before the while space skip, so that parsing - // starts from the pointer we are given. - location.Clear(); - if ( prevData ) - { - location.row = prevData->cursor.row; - location.col = prevData->cursor.col; - } - else - { - location.row = 0; - location.col = 0; - } - TiXmlParsingData data( p, TabSize(), location.row, location.col ); - location = data.Cursor(); - - if ( encoding == TIXML_ENCODING_UNKNOWN ) - { - // Check for the Microsoft UTF-8 lead bytes. - const unsigned char* pU = (const unsigned char*)p; - if ( *(pU+0) && *(pU+0) == TIXML_UTF_LEAD_0 - && *(pU+1) && *(pU+1) == TIXML_UTF_LEAD_1 - && *(pU+2) && *(pU+2) == TIXML_UTF_LEAD_2 ) - { - encoding = TIXML_ENCODING_UTF8; - useMicrosoftBOM = true; - } - } - - p = SkipWhiteSpace( p, encoding ); - if ( !p ) - { - SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - - while ( p && *p ) - { - TiXmlNode* node = Identify( p, encoding ); - if ( node ) - { - p = node->Parse( p, &data, encoding ); - LinkEndChild( node ); - } - else - { - break; - } - - // Did we get encoding info? - if ( encoding == TIXML_ENCODING_UNKNOWN - && node->ToDeclaration() ) - { - TiXmlDeclaration* dec = node->ToDeclaration(); - const char* enc = dec->Encoding(); - assert( enc ); - - if ( *enc == 0 ) - encoding = TIXML_ENCODING_UTF8; - else if ( StringEqual( enc, "UTF-8", true, TIXML_ENCODING_UNKNOWN ) ) - encoding = TIXML_ENCODING_UTF8; - else if ( StringEqual( enc, "UTF8", true, TIXML_ENCODING_UNKNOWN ) ) - encoding = TIXML_ENCODING_UTF8; // incorrect, but be nice - else - encoding = TIXML_ENCODING_LEGACY; - } - - p = SkipWhiteSpace( p, encoding ); - } - - // Was this empty? - if ( !firstChild ) { - SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, encoding ); - return 0; - } - - // All is well. - return p; -} - -void TiXmlDocument::SetError( int err, const char* pError, TiXmlParsingData* data, TiXmlEncoding encoding ) -{ - // The first error in a chain is more accurate - don't set again! - if ( error ) - return; - - assert( err > 0 && err < TIXML_ERROR_STRING_COUNT ); - error = true; - errorId = err; - errorDesc = errorString[ errorId ]; - - errorLocation.Clear(); - if ( pError && data ) - { - data->Stamp( pError, encoding ); - errorLocation = data->Cursor(); - } -} - - -TiXmlNode* TiXmlNode::Identify( const char* p, TiXmlEncoding encoding ) -{ - TiXmlNode* returnNode = 0; - - p = SkipWhiteSpace( p, encoding ); - if( !p || !*p || *p != '<' ) - { - return 0; - } - - p = SkipWhiteSpace( p, encoding ); - - if ( !p || !*p ) - { - return 0; - } - - // What is this thing? - // - Elements start with a letter or underscore, but xml is reserved. - // - Comments: "; - - if ( !StringEqual( p, startTag, false, encoding ) ) - { - if ( document ) - document->SetError( TIXML_ERROR_PARSING_COMMENT, p, data, encoding ); - return 0; - } - p += strlen( startTag ); - - // [ 1475201 ] TinyXML parses entities in comments - // Oops - ReadText doesn't work, because we don't want to parse the entities. - // p = ReadText( p, &value, false, endTag, false, encoding ); - // - // from the XML spec: - /* - [Definition: Comments may appear anywhere in a document outside other markup; in addition, - they may appear within the document type declaration at places allowed by the grammar. - They are not part of the document's character data; an XML processor MAY, but need not, - make it possible for an application to retrieve the text of comments. For compatibility, - the string "--" (double-hyphen) MUST NOT occur within comments.] Parameter entity - references MUST NOT be recognized within comments. - - An example of a comment: - - - */ - - value = ""; - // Keep all the white space. - while ( p && *p && !StringEqual( p, endTag, false, encoding ) ) - { - value.append( p, 1 ); - ++p; - } - if ( p && *p ) - p += strlen( endTag ); - - return p; -} - - -const char* TiXmlAttribute::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ) -{ - p = SkipWhiteSpace( p, encoding ); - if ( !p || !*p ) return 0; - - if ( data ) - { - data->Stamp( p, encoding ); - location = data->Cursor(); - } - // Read the name, the '=' and the value. - const char* pErr = p; - p = ReadName( p, &name, encoding ); - if ( !p || !*p ) - { - if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, pErr, data, encoding ); - return 0; - } - p = SkipWhiteSpace( p, encoding ); - if ( !p || !*p || *p != '=' ) - { - if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); - return 0; - } - - ++p; // skip '=' - p = SkipWhiteSpace( p, encoding ); - if ( !p || !*p ) - { - if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); - return 0; - } - - const char* end; - const char SINGLE_QUOTE = '\''; - const char DOUBLE_QUOTE = '\"'; - - if ( *p == SINGLE_QUOTE ) - { - ++p; - end = "\'"; // single quote in string - p = ReadText( p, &value, false, end, false, encoding ); - } - else if ( *p == DOUBLE_QUOTE ) - { - ++p; - end = "\""; // double quote in string - p = ReadText( p, &value, false, end, false, encoding ); - } - else - { - // All attribute values should be in single or double quotes. - // But this is such a common error that the parser will try - // its best, even without them. - value = ""; - while ( p && *p // existence - && !IsWhiteSpace( *p ) // whitespace - && *p != '/' && *p != '>' ) // tag end - { - if ( *p == SINGLE_QUOTE || *p == DOUBLE_QUOTE ) { - // [ 1451649 ] Attribute values with trailing quotes not handled correctly - // We did not have an opening quote but seem to have a - // closing one. Give up and throw an error. - if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); - return 0; - } - value += *p; - ++p; - } - } - return p; -} - -#ifdef TIXML_USE_STL -void TiXmlText::StreamIn( std::istream * in, TIXML_STRING * tag ) -{ - while ( in->good() ) - { - int c = in->peek(); - if ( !cdata && (c == '<' ) ) - { - return; - } - if ( c <= 0 ) - { - TiXmlDocument* document = GetDocument(); - if ( document ) - document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); - return; - } - - (*tag) += (char) c; - in->get(); // "commits" the peek made above - - if ( cdata && c == '>' && tag->size() >= 3 ) { - size_t len = tag->size(); - if ( (*tag)[len-2] == ']' && (*tag)[len-3] == ']' ) { - // terminator of cdata. - return; - } - } - } -} -#endif - -const char* TiXmlText::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ) -{ - value = ""; - TiXmlDocument* document = GetDocument(); - - if ( data ) - { - data->Stamp( p, encoding ); - location = data->Cursor(); - } - - const char* const startTag = ""; - - if ( cdata || StringEqual( p, startTag, false, encoding ) ) - { - cdata = true; - - if ( !StringEqual( p, startTag, false, encoding ) ) - { - if ( document ) - document->SetError( TIXML_ERROR_PARSING_CDATA, p, data, encoding ); - return 0; - } - p += strlen( startTag ); - - // Keep all the white space, ignore the encoding, etc. - while ( p && *p - && !StringEqual( p, endTag, false, encoding ) - ) - { - value += *p; - ++p; - } - - TIXML_STRING dummy; - p = ReadText( p, &dummy, false, endTag, false, encoding ); - return p; - } - else - { - bool ignoreWhite = true; - - const char* end = "<"; - p = ReadText( p, &value, ignoreWhite, end, false, encoding ); - if ( p && *p ) - return p-1; // don't truncate the '<' - return 0; - } -} - -#ifdef TIXML_USE_STL -void TiXmlDeclaration::StreamIn( std::istream * in, TIXML_STRING * tag ) -{ - while ( in->good() ) - { - int c = in->get(); - if ( c <= 0 ) - { - TiXmlDocument* document = GetDocument(); - if ( document ) - document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); - return; - } - (*tag) += (char) c; - - if ( c == '>' ) - { - // All is well. - return; - } - } -} -#endif - -const char* TiXmlDeclaration::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding _encoding ) -{ - p = SkipWhiteSpace( p, _encoding ); - // Find the beginning, find the end, and look for - // the stuff in-between. - TiXmlDocument* document = GetDocument(); - if ( !p || !*p || !StringEqual( p, "SetError( TIXML_ERROR_PARSING_DECLARATION, 0, 0, _encoding ); - return 0; - } - if ( data ) - { - data->Stamp( p, _encoding ); - location = data->Cursor(); - } - p += 5; - - version = ""; - encoding = ""; - standalone = ""; - - while ( p && *p ) - { - if ( *p == '>' ) - { - ++p; - return p; - } - - p = SkipWhiteSpace( p, _encoding ); - if ( StringEqual( p, "version", true, _encoding ) ) - { - TiXmlAttribute attrib; - p = attrib.Parse( p, data, _encoding ); - version = attrib.Value(); - } - else if ( StringEqual( p, "encoding", true, _encoding ) ) - { - TiXmlAttribute attrib; - p = attrib.Parse( p, data, _encoding ); - encoding = attrib.Value(); - } - else if ( StringEqual( p, "standalone", true, _encoding ) ) - { - TiXmlAttribute attrib; - p = attrib.Parse( p, data, _encoding ); - standalone = attrib.Value(); - } - else - { - // Read over whatever it is. - while( p && *p && *p != '>' && !IsWhiteSpace( *p ) ) - ++p; - } - } - return 0; -} - -bool TiXmlText::Blank() const -{ - for ( unsigned i=0; i //fopen #include "Bullet3Common/b3AlignedObjectArray.h" #include -#include "../../ThirdPartyLibs/tinyxml/tinyxml.h" +#include "../../ThirdPartyLibs/tinyxml2/tinyxml2.h" +using namespace tinyxml2; #include "Bullet3Common/b3FileUtils.h" #include "LinearMath/btHashMap.h" @@ -90,14 +91,14 @@ void tokenize(const std::string& str, AddToken& tokenAdder, const std::string& d } -void readFloatArray(TiXmlElement* source, btAlignedObjectArray& floatArray, int& componentStride) +void readFloatArray(XMLElement* source, btAlignedObjectArray& floatArray, int& componentStride) { int numVals, stride; - TiXmlElement* array = source->FirstChildElement("float_array"); + XMLElement* array = source->FirstChildElement("float_array"); if(array) { componentStride = 1; - if (source->FirstChildElement("technique_common")->FirstChildElement("accessor")->QueryIntAttribute("stride", &stride)!= TIXML_NO_ATTRIBUTE) + if (source->FirstChildElement("technique_common")->FirstChildElement("accessor")->QueryIntAttribute("stride", &stride)!= XML_NO_ATTRIBUTE) { componentStride = stride; } @@ -140,11 +141,11 @@ btVector4 getVector4FromXmlText(const char* text) } -void readLibraryGeometries(TiXmlDocument& doc, btAlignedObjectArray& visualShapes, btHashMap& name2Shape, float extraScaling) +void readLibraryGeometries(XMLDocument& doc, btAlignedObjectArray& visualShapes, btHashMap& name2Shape, float extraScaling) { - btHashMap allSources; + btHashMap allSources; btHashMap vertexSources; - for(TiXmlElement* geometry = doc.RootElement()->FirstChildElement("library_geometries")->FirstChildElement("geometry"); + for(XMLElement* geometry = doc.RootElement()->FirstChildElement("library_geometries")->FirstChildElement("geometry"); geometry != NULL; geometry = geometry->NextSiblingElement("geometry")) { btAlignedObjectArray vertexPositions; @@ -152,11 +153,11 @@ void readLibraryGeometries(TiXmlDocument& doc, btAlignedObjectArray indices; const char* geometryName = geometry->Attribute("id"); - for (TiXmlElement* mesh = geometry->FirstChildElement("mesh");(mesh != NULL); mesh = mesh->NextSiblingElement("mesh")) + for (XMLElement* mesh = geometry->FirstChildElement("mesh");(mesh != NULL); mesh = mesh->NextSiblingElement("mesh")) { - TiXmlElement* vertices2 = mesh->FirstChildElement("vertices"); + XMLElement* vertices2 = mesh->FirstChildElement("vertices"); - for (TiXmlElement* source = mesh->FirstChildElement("source");source != NULL;source = source->NextSiblingElement("source")) + for (XMLElement* source = mesh->FirstChildElement("source");source != NULL;source = source->NextSiblingElement("source")) { const char* srcId= source->Attribute("id"); // printf("source id=%s\n",srcId); @@ -165,7 +166,7 @@ void readLibraryGeometries(TiXmlDocument& doc, btAlignedObjectArrayAttribute("id"); //printf("vertices id=%s\n",vertexId); VertexSource vs; - for(TiXmlElement* input = vertices2->FirstChildElement("input");input != NULL;input = input->NextSiblingElement("input")) + for(XMLElement* input = vertices2->FirstChildElement("input");input != NULL;input = input->NextSiblingElement("input")) { const char* sem = input->Attribute("semantic"); std::string semName(sem); @@ -187,7 +188,7 @@ void readLibraryGeometries(TiXmlDocument& doc, btAlignedObjectArrayFirstChildElement("triangles"); primitive; primitive = primitive->NextSiblingElement("triangles")) + for (XMLElement* primitive = mesh->FirstChildElement("triangles"); primitive; primitive = primitive->NextSiblingElement("triangles")) { std::string positionSourceName; std::string normalSourceName; @@ -199,7 +200,7 @@ void readLibraryGeometries(TiXmlDocument& doc, btAlignedObjectArrayFirstChildElement("input");input != NULL;input = input->NextSiblingElement("input")) + for (XMLElement* input = primitive->FirstChildElement("input");input != NULL;input = input->NextSiblingElement("input")) { const char* sem = input->Attribute("semantic"); std::string semName(sem); @@ -241,7 +242,7 @@ void readLibraryGeometries(TiXmlDocument& doc, btAlignedObjectArray positionFloatArray; int posStride=1; - TiXmlElement** sourcePtr = allSources[positionSourceName.c_str()]; + XMLElement** sourcePtr = allSources[positionSourceName.c_str()]; if (sourcePtr) { readFloatArray(*sourcePtr,positionFloatArray, posStride); @@ -334,7 +335,7 @@ void readLibraryGeometries(TiXmlDocument& doc, btAlignedObjectArray& name2Shape, btAlignedObjectArray& visualShapeInstances, const btMatrix4x4& parentTransMat) +void readNodeHierarchy(XMLElement* node,btHashMap& name2Shape, btAlignedObjectArray& visualShapeInstances, const btMatrix4x4& parentTransMat) { @@ -343,7 +344,7 @@ void readNodeHierarchy(TiXmlElement* node,btHashMap& name2Shap ///todo(erwincoumans) we probably have to read the elements 'translate', 'scale', 'rotate' and 'matrix' in-order and accumulate them... { - for (TiXmlElement* transElem = node->FirstChildElement("matrix");transElem;transElem=node->NextSiblingElement("matrix")) + for (XMLElement* transElem = node->FirstChildElement("matrix");transElem;transElem=node->NextSiblingElement("matrix")) { if (transElem->GetText()) { @@ -367,7 +368,7 @@ void readNodeHierarchy(TiXmlElement* node,btHashMap& name2Shap } { - for (TiXmlElement* transElem = node->FirstChildElement("translate");transElem;transElem=node->NextSiblingElement("translate")) + for (XMLElement* transElem = node->FirstChildElement("translate");transElem;transElem=node->NextSiblingElement("translate")) { if (transElem->GetText()) { @@ -381,7 +382,7 @@ void readNodeHierarchy(TiXmlElement* node,btHashMap& name2Shap } } { - for(TiXmlElement* scaleElem = node->FirstChildElement("scale"); + for(XMLElement* scaleElem = node->FirstChildElement("scale"); scaleElem!= NULL; scaleElem= node->NextSiblingElement("scale")) { if (scaleElem->GetText()) @@ -394,7 +395,7 @@ void readNodeHierarchy(TiXmlElement* node,btHashMap& name2Shap } } { - for(TiXmlElement* rotateElem = node->FirstChildElement("rotate"); + for(XMLElement* rotateElem = node->FirstChildElement("rotate"); rotateElem!= NULL; rotateElem= node->NextSiblingElement("rotate")) { if (rotateElem->GetText()) @@ -411,7 +412,7 @@ void readNodeHierarchy(TiXmlElement* node,btHashMap& name2Shap nodeTrans = parentTransMat*nodeTrans; - for (TiXmlElement* instanceGeom = node->FirstChildElement("instance_geometry"); + for (XMLElement* instanceGeom = node->FirstChildElement("instance_geometry"); instanceGeom!=0; instanceGeom=instanceGeom->NextSiblingElement("instance_geometry")) { @@ -432,22 +433,22 @@ void readNodeHierarchy(TiXmlElement* node,btHashMap& name2Shap } } - for(TiXmlElement* childNode = node->FirstChildElement("node"); + for(XMLElement* childNode = node->FirstChildElement("node"); childNode!= NULL; childNode = childNode->NextSiblingElement("node")) { readNodeHierarchy(childNode,name2Shape,visualShapeInstances, nodeTrans); } } -void readVisualSceneInstanceGeometries(TiXmlDocument& doc, btHashMap& name2Shape, btAlignedObjectArray& visualShapeInstances) +void readVisualSceneInstanceGeometries(XMLDocument& doc, btHashMap& name2Shape, btAlignedObjectArray& visualShapeInstances) { - btHashMap allVisualScenes; + btHashMap allVisualScenes; - TiXmlElement* libVisualScenes = doc.RootElement()->FirstChildElement("library_visual_scenes"); + XMLElement* libVisualScenes = doc.RootElement()->FirstChildElement("library_visual_scenes"); if (libVisualScenes==0) return; { - for(TiXmlElement* scene = libVisualScenes->FirstChildElement("visual_scene"); + for(XMLElement* scene = libVisualScenes->FirstChildElement("visual_scene"); scene != NULL; scene = scene->NextSiblingElement("visual_scene")) { const char* sceneName = scene->Attribute("id"); @@ -455,16 +456,16 @@ void readVisualSceneInstanceGeometries(TiXmlDocument& doc, btHashMapFirstChildElement("scene"); + XMLElement* scenes = doc.RootElement()->FirstChildElement("scene"); if (scenes) { - TiXmlElement* instanceSceneReference = scenes->FirstChildElement("instance_visual_scene"); + XMLElement* instanceSceneReference = scenes->FirstChildElement("instance_visual_scene"); if (instanceSceneReference) { const char* instanceSceneUrl = instanceSceneReference->Attribute("url"); - TiXmlElement** sceneInstancePtr = allVisualScenes[instanceSceneUrl+1];//skip # + XMLElement** sceneInstancePtr = allVisualScenes[instanceSceneUrl+1];//skip # if (sceneInstancePtr) { scene = *sceneInstancePtr; @@ -475,7 +476,7 @@ void readVisualSceneInstanceGeometries(TiXmlDocument& doc, btHashMapFirstChildElement("node"); + for(XMLElement* node = scene->FirstChildElement("node"); node != NULL; node = node->NextSiblingElement("node")) { btMatrix4x4 identity; @@ -488,11 +489,11 @@ void readVisualSceneInstanceGeometries(TiXmlDocument& doc, btHashMapFirstChildElement("asset")->FirstChildElement("unit"); + XMLElement* unitMeter = doc.RootElement()->FirstChildElement("asset")->FirstChildElement("unit"); if (unitMeter) { const char* meterText = unitMeter->Attribute("meter"); @@ -500,7 +501,7 @@ void getUnitMeterScalingAndUpAxisTransform(TiXmlDocument& doc, btTransform& tr, unitMeterScaling = atof(meterText); } - TiXmlElement* upAxisElem = doc.RootElement()->FirstChildElement("asset")->FirstChildElement("up_axis"); + XMLElement* upAxisElem = doc.RootElement()->FirstChildElement("asset")->FirstChildElement("up_axis"); if (upAxisElem) { switch (clientUpAxis) @@ -573,8 +574,8 @@ void LoadMeshFromCollada(const char* relativeFileName, btAlignedObjectArrayRow()); + sprintf(row,"%d",e->GetLineNum()); std::string str = m_sourceFileName.c_str() + std::string(":") + std::string(row); return str; #endif @@ -261,7 +261,7 @@ struct BulletMJCFImporterInternalData return 0; } - void parseCompiler(TiXmlElement* root_xml, MJCFErrorLogger* logger) + void parseCompiler(XMLElement* root_xml, MJCFErrorLogger* logger) { const char* meshDirStr = root_xml->Attribute("meshdir"); @@ -284,10 +284,10 @@ struct BulletMJCFImporterInternalData } - void parseAssets(TiXmlElement* root_xml, MJCFErrorLogger* logger) + void parseAssets(XMLElement* root_xml, MJCFErrorLogger* logger) { // - for (TiXmlElement* child_xml = root_xml->FirstChildElement() ; child_xml ; child_xml = child_xml->NextSiblingElement()) + for (XMLElement* child_xml = root_xml->FirstChildElement() ; child_xml ; child_xml = child_xml->NextSiblingElement()) { std::string n = child_xml->Value(); if (n=="mesh") @@ -307,11 +307,11 @@ struct BulletMJCFImporterInternalData } - bool parseDefaults(MyMJCFDefaults& defaults, TiXmlElement* root_xml, MJCFErrorLogger* logger) + bool parseDefaults(MyMJCFDefaults& defaults, XMLElement* root_xml, MJCFErrorLogger* logger) { bool handled= false; //rudimentary 'default' support, would need more work for better feature coverage - for (TiXmlElement* child_xml = root_xml->FirstChildElement() ; child_xml ; child_xml = child_xml->NextSiblingElement()) + for (XMLElement* child_xml = root_xml->FirstChildElement() ; child_xml ; child_xml = child_xml->NextSiblingElement()) { std::string n = child_xml->Value(); @@ -413,9 +413,9 @@ struct BulletMJCFImporterInternalData handled=true; return handled; } - bool parseRootLevel(MyMJCFDefaults& defaults, TiXmlElement* root_xml,MJCFErrorLogger* logger) + bool parseRootLevel(MyMJCFDefaults& defaults, XMLElement* root_xml,MJCFErrorLogger* logger) { - for (TiXmlElement* rootxml = root_xml->FirstChildElement() ; rootxml ; rootxml = rootxml->NextSiblingElement()) + for (XMLElement* rootxml = root_xml->FirstChildElement() ; rootxml ; rootxml = rootxml->NextSiblingElement()) { bool handled = false; std::string n = rootxml->Value(); @@ -473,7 +473,7 @@ struct BulletMJCFImporterInternalData return true; } - bool parseJoint(MyMJCFDefaults& defaults, TiXmlElement* link_xml, int modelIndex, int parentLinkIndex, int linkIndex, MJCFErrorLogger* logger, const btTransform& parentToLinkTrans, btTransform& jointTransOut) + bool parseJoint(MyMJCFDefaults& defaults, XMLElement* link_xml, int modelIndex, int parentLinkIndex, int linkIndex, MJCFErrorLogger* logger, const btTransform& parentToLinkTrans, btTransform& jointTransOut) { bool jointHandled = false; const char* jType = link_xml->Attribute("type"); @@ -649,7 +649,7 @@ struct BulletMJCFImporterInternalData */ return false; } - bool parseGeom(MyMJCFDefaults& defaults, TiXmlElement* link_xml, int modelIndex, int linkIndex, MJCFErrorLogger* logger, btVector3& inertialShift) + bool parseGeom(MyMJCFDefaults& defaults, XMLElement* link_xml, int modelIndex, int linkIndex, MJCFErrorLogger* logger, btVector3& inertialShift) { UrdfLink** linkPtrPtr = m_models[modelIndex]->m_links.getAtIndex(linkIndex); if (linkPtrPtr==0) @@ -963,7 +963,7 @@ struct BulletMJCFImporterInternalData return handledGeomType; } - btTransform parseTransform(TiXmlElement* link_xml, MJCFErrorLogger* logger) + btTransform parseTransform(XMLElement* link_xml, MJCFErrorLogger* logger) { btTransform tr; tr.setIdentity(); @@ -1090,7 +1090,7 @@ struct BulletMJCFImporterInternalData return orgChildLinkIndex; } - bool parseBody(MyMJCFDefaults& defaults, TiXmlElement* link_xml, int modelIndex, int orgParentLinkIndex, MJCFErrorLogger* logger) + bool parseBody(MyMJCFDefaults& defaults, XMLElement* link_xml, int modelIndex, int orgParentLinkIndex, MJCFErrorLogger* logger) { MyMJCFDefaults curDefaults = defaults; @@ -1142,7 +1142,7 @@ struct BulletMJCFImporterInternalData jointTrans.setIdentity(); bool skipFixedJoint = false; - for (TiXmlElement* xml = link_xml->FirstChildElement() ; xml ; xml = xml->NextSiblingElement()) + for (XMLElement* xml = link_xml->FirstChildElement() ; xml ; xml = xml->NextSiblingElement()) { bool handled = false; std::string n = xml->Value(); @@ -1482,16 +1482,16 @@ bool BulletMJCFImporter::loadMJCF(const char* fileName, MJCFErrorLogger* logger, bool BulletMJCFImporter::parseMJCFString(const char* xmlText, MJCFErrorLogger* logger) { - TiXmlDocument xml_doc; + XMLDocument xml_doc; xml_doc.Parse(xmlText); if (xml_doc.Error()) { - logger->reportError(xml_doc.ErrorDesc()); + logger->reportError(xml_doc.ErrorStr()); xml_doc.ClearError(); return false; } - TiXmlElement *mujoco_xml = xml_doc.FirstChildElement("mujoco"); + XMLElement *mujoco_xml = xml_doc.FirstChildElement("mujoco"); if (!mujoco_xml) { logger->reportWarning("Cannot find root element"); @@ -1507,28 +1507,28 @@ bool BulletMJCFImporter::parseMJCFString(const char* xmlText, MJCFErrorLogger* l //,
>ROk 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 z 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

e%bBFyI=Nb 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%0AZacPqd$K!*dn`pS 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

`K%YyB*o> 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±n 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 z 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±n=iQ%T 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 z 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%0Aa+mbY#?{{$?4{h={TX&n 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

?HL&$EeoAAhPH}38fy%bx!Kf^APY;AAZH<5S0 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±nmtkx7 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 E0bQ15#sB~S literal 0 HcmV?d00001 diff --git a/data/toys/concave_box.mtl b/data/toys/concave_box.mtl new file mode 100644 index 000000000..35c3a209b --- /dev/null +++ b/data/toys/concave_box.mtl @@ -0,0 +1,11 @@ +# Blender MTL File: 'None' +# Material Count: 1 + +newmtl None +Ns 0 +Ka 0.000000 0.000000 0.000000 +Kd 0.8 0.8 0.8 +Ks 0.8 0.8 0.8 +d 1 +illum 2 +map_Kd ../checker_grid.jpg diff --git a/data/toys/concave_box.obj b/data/toys/concave_box.obj new file mode 100644 index 000000000..bc58715ec --- /dev/null +++ b/data/toys/concave_box.obj @@ -0,0 +1,949 @@ +# Blender v2.78 (sub 0) OBJ File: '' +# www.blender.org +mtllib concave_box.mtl +o Cube_Cube.003 +v 0.252358 -0.051546 0.073254 +v 0.196823 -0.040500 0.026785 +v 0.133463 -0.027897 -0.007745 +v 0.064714 -0.014222 -0.029009 +v 0.237323 -0.101112 0.073254 +v 0.185009 -0.079443 0.026785 +v 0.125326 -0.054721 -0.007745 +v 0.060565 -0.027897 -0.029009 +v 0.212906 -0.146792 0.073254 +v 0.165826 -0.115334 0.026785 +v 0.112112 -0.079443 -0.007745 +v 0.053829 -0.040500 -0.029009 +v 0.180047 -0.186831 0.073254 +v 0.140008 -0.146792 0.026785 +v 0.094329 -0.101112 -0.007745 +v 0.044763 -0.051546 -0.029009 +v 0.140008 -0.219690 0.073254 +v 0.108550 -0.172609 0.026785 +v 0.072660 -0.118895 -0.007745 +v 0.033716 -0.060612 -0.029009 +v -0.006783 -0.000000 -0.036189 +v 0.094329 -0.244106 0.073254 +v 0.072660 -0.191793 0.026785 +v 0.047938 -0.132109 -0.007745 +v 0.021113 -0.067349 -0.029009 +v 0.044763 -0.259142 0.073254 +v 0.033716 -0.203606 0.026785 +v 0.021113 -0.140246 -0.007745 +v 0.007438 -0.071497 -0.029009 +v -0.006783 -0.264218 0.073254 +v -0.006783 -0.207595 0.026785 +v -0.006783 -0.142994 -0.007745 +v -0.006783 -0.072898 -0.029009 +v -0.058330 -0.259142 0.073254 +v -0.047283 -0.203606 0.026785 +v -0.034680 -0.140246 -0.007745 +v -0.021005 -0.071497 -0.029009 +v -0.107895 -0.244106 0.073254 +v -0.086227 -0.191793 0.026785 +v -0.061505 -0.132109 -0.007745 +v -0.034680 -0.067349 -0.029009 +v -0.153575 -0.219690 0.073254 +v -0.122117 -0.172609 0.026785 +v -0.086227 -0.118895 -0.007745 +v -0.047283 -0.060612 -0.029009 +v -0.193614 -0.186831 0.073254 +v -0.153575 -0.146792 0.026785 +v -0.107895 -0.101112 -0.007745 +v -0.058330 -0.051546 -0.029009 +v -0.226473 -0.146792 0.073254 +v -0.179392 -0.115334 0.026785 +v -0.125679 -0.079443 -0.007745 +v -0.067396 -0.040500 -0.029009 +v -0.250889 -0.101112 0.073254 +v -0.198576 -0.079443 0.026785 +v -0.138893 -0.054721 -0.007745 +v -0.074132 -0.027897 -0.029009 +v -0.265925 -0.051546 0.073254 +v -0.210390 -0.040500 0.026785 +v -0.147030 -0.027897 -0.007745 +v -0.078280 -0.014222 -0.029009 +v -0.271002 0.000000 0.073254 +v -0.214378 0.000000 0.026785 +v -0.149777 -0.000000 -0.007745 +v -0.079681 -0.000000 -0.029009 +v -0.265925 0.051546 0.073254 +v -0.210390 0.040500 0.026785 +v -0.147030 0.027897 -0.007745 +v -0.078280 0.014222 -0.029009 +v -0.250889 0.101112 0.073254 +v -0.198576 0.079443 0.026785 +v -0.138893 0.054721 -0.007745 +v -0.074132 0.027897 -0.029009 +v -0.226473 0.146792 0.073254 +v -0.179392 0.115334 0.026785 +v -0.125679 0.079443 -0.007745 +v -0.067396 0.040500 -0.029009 +v -0.193614 0.186831 0.073254 +v -0.153575 0.146792 0.026785 +v -0.107895 0.101112 -0.007745 +v -0.058330 0.051546 -0.029009 +v -0.153575 0.219690 0.073254 +v -0.122117 0.172609 0.026785 +v -0.086227 0.118895 -0.007745 +v -0.047283 0.060612 -0.029009 +v -0.107895 0.244106 0.073254 +v -0.086227 0.191793 0.026785 +v -0.061505 0.132109 -0.007745 +v -0.034680 0.067349 -0.029009 +v -0.058330 0.259141 0.073254 +v -0.047283 0.203606 0.026785 +v -0.034680 0.140246 -0.007745 +v -0.021005 0.071497 -0.029009 +v -0.006783 0.264218 0.073254 +v -0.006783 0.207595 0.026785 +v -0.006783 0.142994 -0.007745 +v -0.006783 0.072898 -0.029009 +v 0.044763 0.259141 0.073254 +v 0.033716 0.203606 0.026785 +v 0.021113 0.140246 -0.007745 +v 0.007438 0.071497 -0.029009 +v 0.094329 0.244106 0.073254 +v 0.072660 0.191793 0.026785 +v 0.047938 0.132109 -0.007745 +v 0.021113 0.067349 -0.029009 +v 0.140008 0.219689 0.073254 +v 0.108550 0.172609 0.026785 +v 0.072660 0.118895 -0.007745 +v 0.033716 0.060612 -0.029009 +v 0.180047 0.186831 0.073254 +v 0.140008 0.146792 0.026785 +v 0.094328 0.101112 -0.007745 +v 0.044763 0.051546 -0.029009 +v 0.212906 0.146792 0.073254 +v 0.165825 0.115334 0.026785 +v 0.112112 0.079443 -0.007745 +v 0.053829 0.040500 -0.029009 +v 0.237322 0.101112 0.073254 +v 0.185009 0.079443 0.026785 +v 0.125326 0.054721 -0.007745 +v 0.060565 0.027897 -0.029009 +v 0.252358 0.051546 0.073254 +v 0.196823 0.040500 0.026785 +v 0.133463 0.027897 -0.007745 +v 0.064713 0.014222 -0.029009 +v 0.257435 -0.000000 0.073254 +v 0.200811 -0.000000 0.026785 +v 0.136210 -0.000000 -0.007745 +v 0.066114 -0.000000 -0.029009 +v -1.000000 1.000000 -0.100000 +v -1.000000 1.000000 0.100000 +v 1.000000 1.000000 -0.100000 +v 1.000000 1.000000 0.100000 +v -1.000000 -1.000000 -0.100000 +v -1.000000 -1.000000 0.100000 +v 1.000000 -1.000000 -0.100000 +v 1.000000 -1.000000 0.100000 +v -0.006783 -0.286168 0.100000 +v -0.062612 -0.280669 0.100000 +v 0.195568 -0.202351 0.100000 +v 0.231157 -0.158987 0.100000 +v 0.257601 -0.109512 0.100000 +v 0.195568 0.202351 0.100000 +v -0.209135 0.202351 0.100000 +v 0.273886 -0.055829 0.100000 +v 0.273886 0.055829 0.100000 +v 0.257601 0.109512 0.100000 +v 0.152203 0.237940 0.100000 +v -0.209135 -0.202351 0.100000 +v -0.165770 -0.237940 0.100000 +v -0.244724 -0.158986 0.100000 +v -0.116295 -0.264385 0.100000 +v -0.244723 0.158986 0.100000 +v -0.165770 0.237940 0.100000 +v -0.116295 0.264385 0.100000 +v 0.231156 0.158986 0.100000 +v -0.271168 -0.109512 0.100000 +v -0.287453 0.055829 0.100000 +v -0.292951 0.000000 0.100000 +v 0.279384 -0.000000 0.100000 +v 0.102728 -0.264385 0.100000 +v 0.049045 0.280669 0.100000 +v 0.049045 -0.280669 0.100000 +v -0.287453 -0.055829 0.100000 +v -0.062612 0.280669 0.100000 +v -0.006783 0.286168 0.100000 +v 0.152203 -0.237940 0.100000 +v 0.102728 0.264385 0.100000 +v -0.271168 0.109512 0.100000 +vt 0.5258 0.8663 +vt 0.5000 1.0000 +vt 0.5000 0.8663 +vt 0.5202 0.6339 +vt 0.5000 0.6339 +vt 0.5139 0.4613 +vt 0.5000 0.4613 +vt 0.5071 0.3550 +vt 0.5000 0.3550 +vt 0.5000 0.4966 +vt 0.5071 0.5324 +vt 0.5000 0.5331 +vt 0.5139 0.5303 +vt 0.5506 0.8663 +vt 0.5279 1.0000 +vt 0.5274 0.4613 +vt 0.5139 0.3550 +vt 0.5734 0.8663 +vt 0.5548 1.0000 +vt 0.5577 0.6339 +vt 0.5397 0.6339 +vt 0.5397 0.4613 +vt 0.5202 0.3550 +vt 0.5202 0.5269 +vt 0.5258 0.5224 +vt 0.6012 1.0000 +vt 0.5795 1.0000 +vt 0.5734 0.6339 +vt 0.5506 0.4613 +vt 0.5258 0.3550 +vt 0.5700 0.6339 +vt 0.5700 0.8663 +vt 0.5900 0.8663 +vt 0.5363 0.4613 +vt 0.5472 0.4613 +vt 0.5169 0.3550 +vt 0.5224 0.3550 +vt 0.5303 0.5169 +vt 0.5978 1.0000 +vt 0.5514 1.0000 +vt 0.5761 1.0000 +vt 0.5543 0.6339 +vt 0.5472 0.8663 +vt 0.5363 0.6339 +vt 0.5240 0.4613 +vt 0.5337 0.5106 +vt 0.5224 0.8663 +vt 0.5106 0.4613 +vt 0.5106 0.3550 +vt 0.5357 0.5037 +vt 0.4966 1.0000 +vt 0.5245 1.0000 +vt 0.5169 0.6339 +vt 0.4966 0.8663 +vt 0.4966 0.6339 +vt 0.5037 0.3550 +vt 0.4966 0.4613 +vt 0.5364 0.4966 +vt 0.4827 0.4613 +vt 0.4895 0.3550 +vt 0.4966 0.3550 +vt 0.5357 0.4895 +vt 0.4708 0.8663 +vt 0.4461 0.8663 +vt 0.4687 1.0000 +vt 0.4764 0.6339 +vt 0.4569 0.6339 +vt 0.4692 0.4613 +vt 0.5337 0.4827 +vt 0.4827 0.3550 +vt 0.4569 0.4613 +vt 0.5303 0.4764 +vt 0.4232 0.8663 +vt 0.4419 1.0000 +vt 0.4389 0.6339 +vt 0.4032 0.8663 +vt 0.4171 1.0000 +vt 0.4232 0.6339 +vt 0.4708 0.3550 +vt 0.4764 0.3550 +vt 0.5258 0.4708 +vt 0.5202 0.3550 +vt 0.5506 0.4613 +vt 0.5258 0.3550 +vt 0.5202 0.4663 +vt 0.5734 0.8663 +vt 0.6012 1.0000 +vt 0.5934 0.8663 +vt 0.5734 0.6339 +vt 0.5577 0.6339 +vt 0.5506 0.8663 +vt 0.5795 1.0000 +vt 0.5274 0.4613 +vt 0.5397 0.4613 +vt 0.5139 0.4629 +vt 0.5071 0.4609 +vt 0.5279 1.0000 +vt 0.5548 1.0000 +vt 0.5202 0.6339 +vt 0.5397 0.6339 +vt 0.5139 0.4613 +vt 0.5071 0.3550 +vt 0.5139 0.3550 +vt 0.5000 0.8663 +vt 0.5258 0.8663 +vt 0.5000 0.6339 +vt 0.5000 0.4613 +vt 0.5000 0.4602 +vt 0.4929 0.4609 +vt 0.4742 0.8663 +vt 0.5000 1.0000 +vt 0.4798 0.6339 +vt 0.4861 0.4613 +vt 0.4929 0.3550 +vt 0.5000 0.3550 +vt 0.4603 0.6339 +vt 0.4726 0.4613 +vt 0.4861 0.4629 +vt 0.4494 0.8663 +vt 0.4721 1.0000 +vt 0.4266 0.8663 +vt 0.4452 1.0000 +vt 0.4603 0.4613 +vt 0.4861 0.3550 +vt 0.4798 0.4663 +vt 0.4266 0.6339 +vt 0.4423 0.6339 +vt 0.4742 0.3550 +vt 0.4798 0.3550 +vt 0.4742 0.4708 +vt 0.4066 0.8663 +vt 0.4205 1.0000 +vt 0.4232 0.8663 +vt 0.3954 1.0000 +vt 0.4032 0.8663 +vt 0.4389 0.6339 +vt 0.4232 0.6339 +vt 0.4569 0.4613 +vt 0.4461 0.4613 +vt 0.4708 0.3550 +vt 0.4697 0.4764 +vt 0.4569 0.6339 +vt 0.4827 0.3550 +vt 0.4764 0.3550 +vt 0.4663 0.4827 +vt 0.4461 0.8663 +vt 0.4171 1.0000 +vt 0.4708 0.8663 +vt 0.4419 1.0000 +vt 0.4764 0.6339 +vt 0.4827 0.4613 +vt 0.4692 0.4613 +vt 0.4895 0.3550 +vt 0.4643 0.4895 +vt 0.4966 0.3550 +vt 0.4636 0.4966 +vt 0.4966 0.8663 +vt 0.4687 1.0000 +vt 0.4966 0.6339 +vt 0.5224 0.8663 +vt 0.4966 1.0000 +vt 0.5169 0.6339 +vt 0.4966 0.4613 +vt 0.5037 0.3550 +vt 0.4643 0.5037 +vt 0.5106 0.3550 +vt 0.5106 0.4613 +vt 0.4663 0.5106 +vt 0.5472 0.8663 +vt 0.5245 1.0000 +vt 0.5363 0.6339 +vt 0.5240 0.4613 +vt 0.5700 0.8663 +vt 0.5514 1.0000 +vt 0.5363 0.4613 +vt 0.5169 0.3550 +vt 0.4697 0.5169 +vt 0.4742 0.5224 +vt 0.5900 0.8663 +vt 0.5761 1.0000 +vt 0.5700 0.6339 +vt 0.5543 0.6339 +vt 0.5224 0.3550 +vt 0.4423 0.6339 +vt 0.4066 0.8663 +vt 0.4266 0.6339 +vt 0.4603 0.4613 +vt 0.4494 0.4613 +vt 0.4798 0.3550 +vt 0.4742 0.3550 +vt 0.4798 0.5269 +vt 0.4266 0.8663 +vt 0.3988 1.0000 +vt 0.4494 0.8663 +vt 0.4205 1.0000 +vt 0.4603 0.6339 +vt 0.4861 0.3550 +vt 0.4861 0.5303 +vt 0.4798 0.6339 +vt 0.4861 0.4613 +vt 0.4726 0.4613 +vt 0.4929 0.3550 +vt 0.4929 0.5324 +vt 0.4742 0.8663 +vt 0.4452 1.0000 +vt 0.4721 1.0000 +vt 0.0000 1.0000 +vt 1.0000 0.0000 +vt 0.0000 0.0000 +vt 0.0000 1.0000 +vt 1.0000 0.0000 +vt 0.0000 0.0000 +vt 0.0000 1.0000 +vt -1.0000 0.0000 +vt 0.0000 0.0000 +vt 0.0000 1.0000 +vt -1.0000 0.0000 +vt 0.0000 0.0000 +vt 0.0000 -1.0000 +vt -1.0000 0.0000 +vt -0.5279 -0.3631 +vt -0.5000 -0.3603 +vt -0.5000 0.3535 +vt -0.5279 0.3563 +vt -1.0000 0.0000 +vt 0.5934 0.8663 +vt 0.3954 1.0000 +vt 0.4461 0.4613 +vt 0.4494 0.4613 +vt 0.3988 1.0000 +vt 0.5978 1.0000 +vt 0.5472 0.4613 +vt 1.0000 1.0000 +vt 1.0000 1.0000 +vt -1.0000 1.0000 +vt -1.0000 1.0000 +vt 1.0000 -1.0000 +vt -1.0000 -1.0000 +vt -0.6431 -0.5034 +vt -0.6403 -0.4755 +vt -0.3569 -0.5034 +vt 0.0000 -1.0000 +vt 0.0000 0.0000 +vt -0.3597 -0.4755 +vt -0.6322 -0.4486 +vt -0.6190 -0.4239 +vt -0.3678 -0.4486 +vt -0.3810 -0.4239 +vt -0.6012 -0.4022 +vt -0.5795 -0.3844 +vt -0.3988 -0.4022 +vt -0.4205 -0.3844 +vt -0.5548 -0.3712 +vt -0.4452 -0.3712 +vt -0.4721 -0.3631 +vt 0.0000 0.0000 +vt -0.3569 0.4966 +vt -0.3597 0.4687 +vt -0.3678 0.4419 +vt -0.6403 0.4687 +vt -0.6431 0.4966 +vt -0.6322 0.4419 +vt -0.3810 0.4171 +vt -0.3988 0.3954 +vt -0.6190 0.4171 +vt -0.6012 0.3954 +vt -0.4205 0.3776 +vt -0.4452 0.3644 +vt -0.5795 0.3776 +vt -0.5548 0.3644 +vt -0.4721 0.3563 +vn -0.7708 0.0759 0.6326 +vn -0.6332 0.0624 0.7715 +vn -0.4709 0.0464 0.8810 +vn -0.2902 0.0286 0.9565 +vn -0.0980 0.0097 0.9951 +vn -0.0942 0.0286 0.9951 +vn -0.7412 0.2248 0.6326 +vn -0.6088 0.1847 0.7715 +vn -0.4528 0.1374 0.8810 +vn -0.2790 0.0846 0.9565 +vn -0.6831 0.3651 0.6326 +vn -0.5611 0.2999 0.7715 +vn -0.4173 0.2230 0.8810 +vn -0.2571 0.1374 0.9565 +vn -0.0869 0.0464 0.9951 +vn -0.0761 0.0625 0.9951 +vn -0.5987 0.4913 0.6326 +vn -0.4918 0.4036 0.7715 +vn -0.3658 0.3002 0.8810 +vn -0.2254 0.1850 0.9565 +vn -0.4036 0.4918 0.7715 +vn -0.3002 0.3658 0.8810 +vn -0.1850 0.2254 0.9565 +vn -0.0625 0.0761 0.9951 +vn -0.4913 0.5987 0.6326 +vn -0.3651 0.6831 0.6326 +vn -0.2999 0.5611 0.7715 +vn -0.2230 0.4173 0.8810 +vn -0.1374 0.2571 0.9565 +vn -0.0464 0.0869 0.9951 +vn -0.1847 0.6088 0.7715 +vn -0.1374 0.4528 0.8810 +vn -0.0846 0.2790 0.9565 +vn -0.0286 0.0942 0.9951 +vn -0.2248 0.7412 0.6326 +vn -0.0759 0.7708 0.6326 +vn -0.0624 0.6332 0.7715 +vn -0.0464 0.4709 0.8810 +vn -0.0286 0.2902 0.9565 +vn -0.0097 0.0980 0.9951 +vn 0.0464 0.4709 0.8810 +vn 0.0286 0.2902 0.9565 +vn 0.0097 0.0980 0.9951 +vn 0.0759 0.7708 0.6326 +vn 0.0624 0.6332 0.7715 +vn 0.2248 0.7412 0.6326 +vn 0.1847 0.6088 0.7715 +vn 0.1374 0.4528 0.8810 +vn 0.0846 0.2790 0.9565 +vn 0.0286 0.0942 0.9951 +vn 0.1374 0.2571 0.9565 +vn 0.0464 0.0869 0.9951 +vn 0.3651 0.6831 0.6326 +vn 0.2999 0.5611 0.7715 +vn 0.2230 0.4173 0.8810 +vn 0.4913 0.5987 0.6326 +vn 0.4036 0.4918 0.7715 +vn 0.3002 0.3658 0.8810 +vn 0.1850 0.2254 0.9565 +vn 0.0625 0.0761 0.9951 +vn 0.2254 0.1850 0.9565 +vn 0.0761 0.0625 0.9951 +vn 0.5987 0.4913 0.6326 +vn 0.4918 0.4036 0.7715 +vn 0.3658 0.3002 0.8810 +vn 0.6831 0.3651 0.6326 +vn 0.5611 0.2999 0.7715 +vn 0.4173 0.2230 0.8810 +vn 0.2571 0.1374 0.9565 +vn 0.0869 0.0464 0.9951 +vn 0.0942 0.0286 0.9951 +vn 0.7412 0.2248 0.6326 +vn 0.6088 0.1847 0.7715 +vn 0.4528 0.1374 0.8810 +vn 0.2790 0.0846 0.9565 +vn 0.7708 0.0759 0.6326 +vn 0.6332 0.0624 0.7715 +vn 0.4709 0.0464 0.8810 +vn 0.2902 0.0286 0.9565 +vn 0.0980 0.0097 0.9951 +vn 0.0980 -0.0097 0.9951 +vn 0.7708 -0.0759 0.6326 +vn 0.6332 -0.0624 0.7715 +vn 0.4709 -0.0464 0.8810 +vn 0.2902 -0.0286 0.9565 +vn 0.6088 -0.1847 0.7715 +vn 0.4528 -0.1374 0.8810 +vn 0.2790 -0.0846 0.9565 +vn 0.0942 -0.0286 0.9951 +vn 0.7412 -0.2248 0.6326 +vn 0.6831 -0.3651 0.6326 +vn 0.5611 -0.2999 0.7715 +vn 0.4173 -0.2230 0.8810 +vn 0.2571 -0.1374 0.9565 +vn 0.0869 -0.0464 0.9951 +vn 0.3658 -0.3002 0.8810 +vn 0.2254 -0.1850 0.9565 +vn 0.0761 -0.0625 0.9951 +vn 0.5987 -0.4913 0.6326 +vn 0.4918 -0.4036 0.7715 +vn 0.4913 -0.5987 0.6326 +vn 0.4036 -0.4918 0.7715 +vn 0.3002 -0.3658 0.8810 +vn 0.1850 -0.2254 0.9565 +vn 0.0625 -0.0761 0.9951 +vn 0.2230 -0.4173 0.8810 +vn 0.1374 -0.2571 0.9565 +vn 0.0464 -0.0869 0.9951 +vn 0.3651 -0.6831 0.6326 +vn 0.2999 -0.5611 0.7715 +vn 0.2248 -0.7412 0.6326 +vn 0.1847 -0.6088 0.7715 +vn 0.1374 -0.4528 0.8810 +vn 0.0846 -0.2790 0.9565 +vn 0.0286 -0.0942 0.9951 +vn 0.0286 -0.2902 0.9565 +vn 0.0097 -0.0980 0.9951 +vn 0.0759 -0.7708 0.6326 +vn 0.0624 -0.6332 0.7715 +vn 0.0464 -0.4709 0.8810 +vn -0.0759 -0.7708 0.6326 +vn -0.0624 -0.6332 0.7715 +vn -0.0464 -0.4709 0.8810 +vn -0.0286 -0.2902 0.9565 +vn -0.0097 -0.0980 0.9951 +vn -0.0846 -0.2790 0.9565 +vn -0.0286 -0.0942 0.9951 +vn -0.2248 -0.7412 0.6326 +vn -0.1847 -0.6088 0.7715 +vn -0.1374 -0.4528 0.8810 +vn -0.3651 -0.6831 0.6326 +vn -0.2999 -0.5611 0.7715 +vn -0.2231 -0.4173 0.8810 +vn -0.1374 -0.2571 0.9565 +vn -0.0464 -0.0869 0.9951 +vn -0.0625 -0.0761 0.9951 +vn -0.4913 -0.5987 0.6326 +vn -0.4036 -0.4918 0.7715 +vn -0.3002 -0.3658 0.8810 +vn -0.1850 -0.2254 0.9565 +vn -0.4918 -0.4036 0.7715 +vn -0.3658 -0.3002 0.8810 +vn -0.2254 -0.1850 0.9565 +vn -0.0761 -0.0625 0.9951 +vn -0.5987 -0.4913 0.6326 +vn -0.6831 -0.3651 0.6326 +vn -0.5611 -0.2999 0.7715 +vn -0.4173 -0.2231 0.8810 +vn -0.2571 -0.1374 0.9565 +vn -0.0869 -0.0464 0.9951 +vn -0.6088 -0.1847 0.7715 +vn -0.4528 -0.1374 0.8810 +vn -0.2790 -0.0846 0.9565 +vn -0.0942 -0.0286 0.9951 +vn -0.7412 -0.2248 0.6326 +vn -0.7708 -0.0759 0.6326 +vn -0.6332 -0.0624 0.7715 +vn -0.4709 -0.0464 0.8810 +vn -0.2902 -0.0286 0.9565 +vn -0.0980 -0.0097 0.9951 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.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 -0.0000 0.0000 1.0000 +vn 0.2231 0.4173 0.8810 +vn 0.4173 -0.2231 0.8810 +vn -0.4173 -0.2230 0.8810 +usemtl None +s off +f 1/1/1 160/2/1 126/3/1 +f 2/4/2 126/3/2 127/5/2 +f 3/6/3 127/5/3 128/7/3 +f 4/8/4 128/7/4 129/9/4 +f 21/10/5 4/11/5 129/12/5 +f 21/10/6 8/13/6 4/11/6 +f 5/14/7 145/15/7 1/1/7 +f 2/4/8 5/14/8 1/1/8 +f 7/16/9 2/4/9 3/6/9 +f 8/17/10 3/6/10 4/8/10 +f 9/18/11 142/19/11 5/14/11 +f 10/20/12 5/14/12 6/21/12 +f 11/22/13 6/21/13 7/16/13 +f 12/23/14 7/16/14 8/17/14 +f 21/10/15 12/24/15 8/13/15 +f 21/10/16 16/25/16 12/24/16 +f 9/18/17 140/26/17 141/27/17 +f 14/28/18 9/18/18 10/20/18 +f 15/29/19 10/20/19 11/22/19 +f 16/30/20 11/22/20 12/23/20 +f 14/31/21 17/32/21 13/33/21 +f 19/34/22 14/31/22 15/35/22 +f 20/36/23 15/35/23 16/37/23 +f 21/10/24 20/38/24 16/25/24 +f 17/32/25 140/39/25 13/33/25 +f 17/32/26 161/40/26 167/41/26 +f 18/42/27 22/43/27 17/32/27 +f 19/34/28 23/44/28 18/42/28 +f 20/36/29 24/45/29 19/34/29 +f 21/10/30 25/46/30 20/38/30 +f 23/44/31 26/47/31 22/43/31 +f 28/48/32 23/44/32 24/45/32 +f 25/49/33 28/48/33 24/45/33 +f 21/10/34 29/50/34 25/46/34 +f 26/47/35 161/40/35 22/43/35 +f 26/47/36 138/51/36 163/52/36 +f 27/53/37 30/54/37 26/47/37 +f 28/48/38 31/55/38 27/53/38 +f 29/56/39 32/57/39 28/48/39 +f 21/10/40 33/58/40 29/50/40 +f 36/59/41 31/55/41 32/57/41 +f 37/60/42 32/57/42 33/61/42 +f 21/10/43 37/62/43 33/58/43 +f 34/63/44 138/51/44 30/54/44 +f 31/55/45 34/63/45 30/54/45 +f 38/64/46 139/65/46 34/63/46 +f 35/66/47 38/64/47 34/63/47 +f 36/59/48 39/67/48 35/66/48 +f 37/60/49 40/68/49 36/59/49 +f 21/10/50 41/69/50 37/62/50 +f 41/70/51 44/71/51 40/68/51 +f 21/10/52 45/72/52 41/69/52 +f 42/73/53 152/74/53 38/64/53 +f 43/75/54 38/64/54 39/67/54 +f 44/71/55 39/67/55 40/68/55 +f 46/76/56 150/77/56 42/73/56 +f 43/75/57 46/76/57 42/73/57 +f 44/71/58 47/78/58 43/75/58 +f 49/79/59 44/71/59 45/80/59 +f 21/10/60 49/81/60 45/72/60 +f 53/82/61 48/83/61 49/84/61 +f 21/10/62 53/85/62 49/81/62 +f 50/86/63 149/87/63 46/88/63 +f 47/89/64 50/86/64 46/88/64 +f 48/83/65 51/90/65 47/89/65 +f 54/91/66 151/92/66 50/86/66 +f 51/90/67 54/91/67 50/86/67 +f 56/93/68 51/90/68 52/94/68 +f 53/82/69 56/93/69 52/94/69 +f 21/10/70 57/95/70 53/85/70 +f 21/10/71 61/96/71 57/95/71 +f 54/91/72 164/97/72 157/98/72 +f 59/99/73 54/91/73 55/100/73 +f 60/101/74 55/100/74 56/93/74 +f 61/102/75 56/93/75 57/103/75 +f 62/104/76 164/97/76 58/105/76 +f 63/106/77 58/105/77 59/99/77 +f 64/107/78 59/99/78 60/101/78 +f 61/102/79 64/107/79 60/101/79 +f 21/10/80 65/108/80 61/96/80 +f 21/10/81 69/109/81 65/108/81 +f 66/110/82 159/111/82 62/104/82 +f 67/112/83 62/104/83 63/106/83 +f 68/113/84 63/106/84 64/107/84 +f 69/114/85 64/107/85 65/115/85 +f 71/116/86 66/110/86 67/112/86 +f 72/117/87 67/112/87 68/113/87 +f 69/114/88 72/117/88 68/113/88 +f 21/10/89 73/118/89 69/109/89 +f 70/119/90 158/120/90 66/110/90 +f 74/121/91 169/122/91 70/119/91 +f 71/116/92 74/121/92 70/119/92 +f 76/123/93 71/116/93 72/117/93 +f 73/124/94 76/123/94 72/117/94 +f 21/10/95 77/125/95 73/118/95 +f 76/123/96 79/126/96 75/127/96 +f 81/128/97 76/123/97 77/129/97 +f 21/10/98 81/130/98 77/125/98 +f 78/131/99 153/132/99 74/121/99 +f 79/126/100 74/121/100 75/127/100 +f 82/133/101 144/134/101 78/135/101 +f 83/136/102 78/135/102 79/137/102 +f 84/138/103 79/137/103 80/139/103 +f 81/140/104 84/138/104 80/139/104 +f 21/10/105 85/141/105 81/130/105 +f 84/138/106 87/142/106 83/136/106 +f 89/143/107 84/138/107 85/144/107 +f 21/10/108 89/145/108 85/141/108 +f 86/146/109 154/147/109 82/133/109 +f 87/142/110 82/133/110 83/136/110 +f 90/148/111 155/149/111 86/146/111 +f 91/150/112 86/146/112 87/142/112 +f 92/151/113 87/142/113 88/152/113 +f 93/153/114 88/152/114 89/143/114 +f 21/10/115 93/154/115 89/145/115 +f 97/155/116 92/151/116 93/153/116 +f 21/10/117 97/156/117 93/154/117 +f 94/157/118 165/158/118 90/148/118 +f 95/159/119 90/148/119 91/150/119 +f 92/151/120 95/159/120 91/150/120 +f 98/160/121 166/161/121 94/157/121 +f 99/162/122 94/157/122 95/159/122 +f 96/163/123 99/162/123 95/159/123 +f 101/164/124 96/163/124 97/155/124 +f 21/10/125 101/165/125 97/156/125 +f 105/166/126 100/167/126 101/164/126 +f 21/10/127 105/168/127 101/165/127 +f 102/169/128 162/170/128 98/160/128 +f 103/171/129 98/160/129 99/162/129 +f 104/172/130 99/162/130 100/167/130 +f 106/173/131 168/174/131 102/169/131 +f 103/171/132 106/173/132 102/169/132 +f 108/175/133 103/171/133 104/172/133 +f 109/176/134 104/172/134 105/166/134 +f 21/10/135 109/177/135 105/168/135 +f 21/10/136 113/178/136 109/177/136 +f 110/179/137 148/180/137 106/173/137 +f 111/181/138 106/173/138 107/182/138 +f 108/175/139 111/181/139 107/182/139 +f 113/183/140 108/175/140 109/176/140 +f 115/184/141 110/185/141 111/186/141 +f 116/187/142 111/186/142 112/188/142 +f 117/189/143 112/188/143 113/190/143 +f 21/10/144 117/191/144 113/178/144 +f 114/192/145 143/193/145 110/185/145 +f 118/194/146 156/195/146 114/192/146 +f 119/196/147 114/192/147 115/184/147 +f 116/187/148 119/196/148 115/184/148 +f 121/197/149 116/187/149 117/189/149 +f 21/10/150 121/198/150 117/191/150 +f 123/199/151 118/194/151 119/196/151 +f 124/200/152 119/196/152 120/201/152 +f 125/202/153 120/201/153 121/197/153 +f 21/10/154 125/203/154 121/198/154 +f 122/204/155 147/205/155 118/194/155 +f 126/3/156 146/206/156 122/204/156 +f 127/5/157 122/204/157 123/199/157 +f 128/7/158 123/199/158 124/200/158 +f 129/9/159 124/200/159 125/202/159 +f 21/10/160 129/12/160 125/203/160 +f 131/207/161 132/208/161 130/209/161 +f 133/210/162 136/211/162 132/212/162 +f 137/213/163 134/214/163 136/215/163 +f 135/216/164 130/217/164 134/218/164 +f 136/211/165 130/219/165 132/212/165 +f 133/220/166 146/221/166 160/222/166 +f 159/223/166 158/224/166 131/225/166 +f 1/1/1 145/15/1 160/2/1 +f 2/4/2 1/1/2 126/3/2 +f 3/6/3 2/4/3 127/5/3 +f 4/8/4 3/6/4 128/7/4 +f 5/14/7 142/19/7 145/15/7 +f 2/4/8 6/21/8 5/14/8 +f 7/16/9 6/21/9 2/4/9 +f 8/17/10 7/16/10 3/6/10 +f 9/18/11 141/27/11 142/19/11 +f 10/20/12 9/18/12 5/14/12 +f 11/22/13 10/20/13 6/21/13 +f 12/23/14 11/22/14 7/16/14 +f 9/18/17 13/226/17 140/26/17 +f 14/28/18 13/226/18 9/18/18 +f 15/29/19 14/28/19 10/20/19 +f 16/30/20 15/29/20 11/22/20 +f 14/31/21 18/42/21 17/32/21 +f 19/34/22 18/42/22 14/31/22 +f 20/36/23 19/34/23 15/35/23 +f 17/32/25 167/41/25 140/39/25 +f 17/32/26 22/43/26 161/40/26 +f 18/42/27 23/44/27 22/43/27 +f 19/34/28 24/45/28 23/44/28 +f 20/36/29 25/49/29 24/45/29 +f 23/44/31 27/53/31 26/47/31 +f 28/48/32 27/53/32 23/44/32 +f 25/49/33 29/56/33 28/48/33 +f 26/47/35 163/52/35 161/40/35 +f 26/47/36 30/54/36 138/51/36 +f 27/53/37 31/55/37 30/54/37 +f 28/48/38 32/57/38 31/55/38 +f 29/56/39 33/61/39 32/57/39 +f 36/59/41 35/66/41 31/55/41 +f 37/60/42 36/59/42 32/57/42 +f 34/63/44 139/65/44 138/51/44 +f 31/55/45 35/66/45 34/63/45 +f 38/64/46 152/74/46 139/65/46 +f 35/66/47 39/67/47 38/64/47 +f 36/59/48 40/68/48 39/67/48 +f 37/60/49 41/70/49 40/68/49 +f 41/70/51 45/80/51 44/71/51 +f 42/73/53 150/77/53 152/74/53 +f 43/75/54 42/73/54 38/64/54 +f 44/71/167 43/75/167 39/67/167 +f 46/76/56 149/227/56 150/77/56 +f 43/75/57 47/78/57 46/76/57 +f 44/71/58 48/228/58 47/78/58 +f 49/79/59 48/228/59 44/71/59 +f 53/82/61 52/94/61 48/83/61 +f 50/86/63 151/92/63 149/87/63 +f 47/89/64 51/90/64 50/86/64 +f 48/83/65 52/94/65 51/90/65 +f 54/91/66 157/98/66 151/92/66 +f 51/90/67 55/100/67 54/91/67 +f 56/93/68 55/100/68 51/90/68 +f 53/82/69 57/103/69 56/93/69 +f 54/91/72 58/105/72 164/97/72 +f 59/99/73 58/105/73 54/91/73 +f 60/101/74 59/99/74 55/100/74 +f 61/102/75 60/101/75 56/93/75 +f 62/104/76 159/111/76 164/97/76 +f 63/106/77 62/104/77 58/105/77 +f 64/107/78 63/106/78 59/99/78 +f 61/102/79 65/115/79 64/107/79 +f 66/110/82 158/120/82 159/111/82 +f 67/112/83 66/110/83 62/104/83 +f 68/113/84 67/112/84 63/106/84 +f 69/114/85 68/113/85 64/107/85 +f 71/116/86 70/119/86 66/110/86 +f 72/117/87 71/116/87 67/112/87 +f 69/114/88 73/124/88 72/117/88 +f 70/119/90 169/122/90 158/120/90 +f 74/121/91 153/132/91 169/122/91 +f 71/116/92 75/127/92 74/121/92 +f 76/123/168 75/127/168 71/116/168 +f 73/124/94 77/129/94 76/123/94 +f 76/123/96 80/229/96 79/126/96 +f 81/128/97 80/229/97 76/123/97 +f 78/131/99 144/230/99 153/132/99 +f 79/126/100 78/131/100 74/121/100 +f 82/133/101 154/147/101 144/134/101 +f 83/136/102 82/133/102 78/135/102 +f 84/138/103 83/136/103 79/137/103 +f 81/140/104 85/144/104 84/138/104 +f 84/138/106 88/152/106 87/142/106 +f 89/143/107 88/152/107 84/138/107 +f 86/146/109 155/149/109 154/147/109 +f 87/142/110 86/146/110 82/133/110 +f 90/148/111 165/158/111 155/149/111 +f 91/150/112 90/148/112 86/146/112 +f 92/151/113 91/150/113 87/142/113 +f 93/153/114 92/151/114 88/152/114 +f 97/155/116 96/163/116 92/151/116 +f 94/157/118 166/161/118 165/158/118 +f 95/159/119 94/157/119 90/148/119 +f 92/151/120 96/163/120 95/159/120 +f 98/160/121 162/170/121 166/161/121 +f 99/162/122 98/160/122 94/157/122 +f 96/163/123 100/167/123 99/162/123 +f 101/164/124 100/167/124 96/163/124 +f 105/166/126 104/172/126 100/167/126 +f 102/169/128 168/174/128 162/170/128 +f 103/171/129 102/169/129 98/160/129 +f 104/172/130 103/171/130 99/162/130 +f 106/173/131 148/180/131 168/174/131 +f 103/171/132 107/182/132 106/173/132 +f 108/175/133 107/182/133 103/171/133 +f 109/176/134 108/175/134 104/172/134 +f 110/179/137 143/231/137 148/180/137 +f 111/181/138 110/179/138 106/173/138 +f 108/175/139 112/232/139 111/181/139 +f 113/183/140 112/232/140 108/175/140 +f 115/184/141 114/192/141 110/185/141 +f 116/187/142 115/184/142 111/186/142 +f 117/189/143 116/187/143 112/188/143 +f 114/192/145 156/195/145 143/193/145 +f 118/194/146 147/205/146 156/195/146 +f 119/196/147 118/194/147 114/192/147 +f 116/187/169 120/201/169 119/196/169 +f 121/197/149 120/201/149 116/187/149 +f 123/199/151 122/204/151 118/194/151 +f 124/200/152 123/199/152 119/196/152 +f 125/202/153 124/200/153 120/201/153 +f 122/204/155 146/206/155 147/205/155 +f 126/3/156 160/2/156 146/206/156 +f 127/5/157 126/3/157 122/204/157 +f 128/7/158 127/5/158 123/199/158 +f 129/9/159 128/7/159 124/200/159 +f 131/207/161 133/233/161 132/208/161 +f 133/210/162 137/234/162 136/211/162 +f 137/213/163 135/235/163 134/214/163 +f 135/216/164 131/236/164 130/217/164 +f 136/211/165 134/237/165 130/219/165 +f 133/220/166 131/238/166 166/239/166 +f 133/220/166 166/239/166 162/240/166 +f 138/241/166 135/242/166 137/243/166 +f 163/244/166 138/241/166 137/243/166 +f 133/220/166 162/240/166 168/245/166 +f 133/220/166 168/245/166 148/246/166 +f 161/247/166 163/244/166 137/243/166 +f 167/248/166 161/247/166 137/243/166 +f 133/220/166 148/246/166 143/249/166 +f 133/220/166 143/249/166 156/250/166 +f 140/251/166 167/248/166 137/243/166 +f 141/252/166 140/251/166 137/243/166 +f 137/243/166 133/220/166 160/222/166 +f 133/220/166 156/250/166 147/253/166 +f 142/254/166 141/252/166 137/243/166 +f 145/255/166 142/254/166 137/243/166 +f 133/220/166 147/253/166 146/221/166 +f 160/222/166 145/255/166 137/243/166 +f 135/256/166 138/257/166 139/258/166 +f 135/256/166 139/258/166 152/259/166 +f 165/260/166 166/261/166 131/225/166 +f 155/262/166 165/260/166 131/225/166 +f 135/256/166 152/259/166 150/263/166 +f 135/256/166 150/263/166 149/264/166 +f 154/265/166 155/262/166 131/225/166 +f 144/266/166 154/265/166 131/225/166 +f 135/256/166 149/264/166 151/267/166 +f 135/256/166 151/267/166 157/268/166 +f 153/269/166 144/266/166 131/225/166 +f 169/270/166 153/269/166 131/225/166 +f 131/225/166 135/256/166 159/223/166 +f 135/256/166 157/268/166 164/271/166 +f 158/224/166 169/270/166 131/225/166 +f 135/256/166 164/271/166 159/223/166 diff --git a/data/toys/concave_box.urdf b/data/toys/concave_box.urdf new file mode 100644 index 000000000..08ff9c02d --- /dev/null +++ b/data/toys/concave_box.urdf @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/ExampleBrowser/OpenGLExampleBrowser.cpp b/examples/ExampleBrowser/OpenGLExampleBrowser.cpp index 6d70cc946..99c953c09 100644 --- a/examples/ExampleBrowser/OpenGLExampleBrowser.cpp +++ b/examples/ExampleBrowser/OpenGLExampleBrowser.cpp @@ -410,6 +410,14 @@ void OpenGLExampleBrowserVisualizerFlagCallback(int flag, bool enable) if (flag == COV_ENABLE_WIREFRAME) { visualWireframe = enable; + if (visualWireframe) + { + gDebugDrawFlags |= btIDebugDraw::DBG_DrawWireframe; + } + else + { + gDebugDrawFlags &= ~btIDebugDraw::DBG_DrawWireframe; + } } } diff --git a/examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp b/examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp index ce2129435..3f6043d06 100644 --- a/examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp +++ b/examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp @@ -21,6 +21,7 @@ subject to the following restrictions: #include "../ImportSTLDemo/LoadMeshFromSTL.h" #include "../ImportColladaDemo/LoadMeshFromCollada.h" #include "BulletCollision/CollisionShapes/btShapeHull.h"//to create a tesselation of a generic btConvexShape +#include "BulletCollision/CollisionShapes/btSdfCollisionShape.h" #include "../../CommonInterfaces/CommonGUIHelperInterface.h" #include "Bullet3Common/b3FileUtils.h" #include @@ -509,6 +510,10 @@ bool findExistingMeshFile( { *out_type = UrdfGeometry::FILE_OBJ; } + else if (ext == ".cdf") + { + *out_type = UrdfGeometry::FILE_CDF; + } else { b3Warning("%s: invalid mesh filename extension '%s'\n", error_message_prefix.c_str(), ext.c_str()); @@ -662,7 +667,53 @@ btCollisionShape* BulletURDFImporter::convertURDFToCollisionShape(const UrdfColl shape ->setMargin(gUrdfDefaultCollisionMargin); break; } + case URDF_GEOM_CDF: + { + + char relativeFileName[1024]; + char pathPrefix[1024]; + pathPrefix[0] = 0; + if (b3ResourcePath::findResourcePath(collision->m_geometry.m_meshFileName.c_str(), relativeFileName, 1024)) + { + b3FileUtils::extractPath(relativeFileName, pathPrefix, 1024); + + btAlignedObjectArray sdfData; + { + std::streampos fsize = 0; + std::ifstream file(relativeFileName, std::ios::binary); + if (file.good()) + { + fsize = file.tellg(); + file.seekg(0, std::ios::end); + fsize = file.tellg() - fsize; + file.seekg(0, std::ios::beg); + sdfData.resize(fsize); + int bytesRead = file.rdbuf()->sgetn(&sdfData[0], fsize); + btAssert(bytesRead == fsize); + file.close(); + } + } + + if (sdfData.size()) + { + btSdfCollisionShape* sdfShape = new btSdfCollisionShape(); + bool valid = sdfShape->initializeSDF(&sdfData[0], sdfData.size()); + btAssert(valid); + + if (valid) + { + shape = sdfShape; + } + else + { + delete sdfShape; + } + + } + } + break; + } case URDF_GEOM_MESH: { GLInstanceGraphicsShape* glmesh = 0; diff --git a/examples/Importers/ImportURDFDemo/UrdfParser.cpp b/examples/Importers/ImportURDFDemo/UrdfParser.cpp index c6a30edf7..1be8285c1 100644 --- a/examples/Importers/ImportURDFDemo/UrdfParser.cpp +++ b/examples/Importers/ImportURDFDemo/UrdfParser.cpp @@ -436,9 +436,16 @@ bool UrdfParser::parseGeometry(UrdfGeometry& geom, XMLElement* g, ErrorLogger* l geom.m_capsuleHeight = m_urdfScaling * urdfLexicalCast(shape->Attribute("length")); } } - else if (type_name == "mesh") + else if ((type_name == "mesh") || (type_name == "cdf")) { - geom.m_type = URDF_GEOM_MESH; + if ((type_name == "cdf")) + { + geom.m_type = URDF_GEOM_CDF; + } + else + { + geom.m_type = URDF_GEOM_MESH; + } geom.m_meshScale.setValue(1,1,1); std::string fn; diff --git a/examples/Importers/ImportURDFDemo/UrdfParser.h b/examples/Importers/ImportURDFDemo/UrdfParser.h index 094c1e36a..fed2cc141 100644 --- a/examples/Importers/ImportURDFDemo/UrdfParser.h +++ b/examples/Importers/ImportURDFDemo/UrdfParser.h @@ -54,7 +54,8 @@ enum UrdfGeomTypes URDF_GEOM_CYLINDER, URDF_GEOM_MESH, URDF_GEOM_PLANE, - URDF_GEOM_CAPSULE, //non-standard URDF? + URDF_GEOM_CAPSULE, //non-standard URDF + URDF_GEOM_CDF,//signed-distance-field, non-standard URDF URDF_GEOM_UNKNOWN, }; @@ -79,6 +80,8 @@ struct UrdfGeometry FILE_STL =1, FILE_COLLADA =2, FILE_OBJ =3, + FILE_CDF = 4, + }; int m_meshFileType; std::string m_meshFileName; diff --git a/examples/pybullet/examples/signedDistanceField.py b/examples/pybullet/examples/signedDistanceField.py new file mode 100644 index 000000000..6e4153ef8 --- /dev/null +++ b/examples/pybullet/examples/signedDistanceField.py @@ -0,0 +1,15 @@ +import pybullet as p +import pybullet +import time +p.connect(p.GUI) +p.loadURDF("toys/concave_box.urdf") +p.setGravity(0,0,-10) +for i in range (10): + p.loadURDF("sphere_1cm.urdf",[i*0.02,0,0.5]) +p.loadURDF("duck_vhacd.urdf") +timeStep = 1./240. +p.setTimeStep(timeStep) +while (1): + p.stepSimulation() + time.sleep(timeStep) + \ No newline at end of file diff --git a/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp b/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp index d2331f5df..d8cbe9614 100644 --- a/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp +++ b/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp @@ -153,7 +153,7 @@ partId, int triangleIndex) { m_resultOut->setBody1Wrap(tmpWrap); } - + colAlgo->~btCollisionAlgorithm(); @@ -164,7 +164,7 @@ partId, int triangleIndex) -void btConvexTriangleCallback::setTimeStepAndCounters(btScalar collisionMarginTriangle,const btDispatcherInfo& dispatchInfo,const btCollisionObjectWrapper* convexBodyWrap, const btCollisionObjectWrapper* triBodyWrap, btManifoldResult* resultOut) +void btConvexTriangleCallback::setTimeStepAndCounters(btScalar collisionMarginTriangle, const btDispatcherInfo& dispatchInfo, const btCollisionObjectWrapper* convexBodyWrap, const btCollisionObjectWrapper* triBodyWrap, btManifoldResult* resultOut) { m_convexBodyWrap = convexBodyWrap; m_triBodyWrap = triBodyWrap; @@ -178,14 +178,14 @@ void btConvexTriangleCallback::setTimeStepAndCounters(btScalar collisionMarginTr convexInTriangleSpace = m_triBodyWrap->getWorldTransform().inverse() * m_convexBodyWrap->getWorldTransform(); const btCollisionShape* convexShape = static_cast(m_convexBodyWrap->getCollisionShape()); //CollisionShape* triangleShape = static_cast(triBody->m_collisionShape); - convexShape->getAabb(convexInTriangleSpace,m_aabbMin,m_aabbMax); - btScalar extraMargin = collisionMarginTriangle+ resultOut->m_closestPointDistanceThreshold; - - btVector3 extra(extraMargin,extraMargin,extraMargin); + convexShape->getAabb(convexInTriangleSpace, m_aabbMin, m_aabbMax); + btScalar extraMargin = collisionMarginTriangle + resultOut->m_closestPointDistanceThreshold; + + btVector3 extra(extraMargin, extraMargin, extraMargin); m_aabbMax += extra; m_aabbMin -= extra; - + } void btConvexConcaveCollisionAlgorithm::clearCache() @@ -194,16 +194,16 @@ void btConvexConcaveCollisionAlgorithm::clearCache() } -void btConvexConcaveCollisionAlgorithm::processCollision (const btCollisionObjectWrapper* body0Wrap,const btCollisionObjectWrapper* body1Wrap,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +void btConvexConcaveCollisionAlgorithm::processCollision (const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut) { BT_PROFILE("btConvexConcaveCollisionAlgorithm::processCollision"); - + const btCollisionObjectWrapper* convexBodyWrap = m_isSwapped ? body1Wrap : body0Wrap; const btCollisionObjectWrapper* triBodyWrap = m_isSwapped ? body0Wrap : body1Wrap; if (triBodyWrap->getCollisionShape()->isConcave()) { - if (triBodyWrap->getCollisionShape()->getShapeType()==SDF_SHAPE_PROXYTYPE) + if (triBodyWrap->getCollisionShape()->getShapeType() == SDF_SHAPE_PROXYTYPE) { btSdfCollisionShape* sdfShape = (btSdfCollisionShape*)triBodyWrap->getCollisionShape(); if (convexBodyWrap->getCollisionShape()->isConvex()) @@ -214,26 +214,30 @@ void btConvexConcaveCollisionAlgorithm::processCollision (const btCollisionObjec if (convex->isPolyhedral()) { - btPolyhedralConvexShape* poly = (btPolyhedralConvexShape*) convex; - for (int v=0;vgetNumVertices();v++) + btPolyhedralConvexShape* poly = (btPolyhedralConvexShape*)convex; + for (int v = 0; v < poly->getNumVertices(); v++) { btVector3 vtx; - poly->getVertex(v,vtx); + poly->getVertex(v, vtx); queryVertices.push_back(vtx); } } - if (convex->getShapeType()==SPHERE_SHAPE_PROXYTYPE) + btScalar maxDist = SIMD_EPSILON; + + if (convex->getShapeType() == SPHERE_SHAPE_PROXYTYPE) { - queryVertices.push_back(btVector3(0,0,0)); - + queryVertices.push_back(btVector3(0, 0, 0)); + btSphereShape* sphere = (btSphereShape*)convex; + maxDist = sphere->getRadius() + SIMD_EPSILON; + } if (queryVertices.size()) { resultOut->setPersistentManifold(m_btConvexTriangleCallback.m_manifoldPtr); //m_btConvexTriangleCallback.m_manifoldPtr->clearManifold(); - btPolyhedralConvexShape* poly = (btPolyhedralConvexShape*) convex; - for (int v=0;vgetWorldTransform()*vtx; @@ -241,12 +245,20 @@ void btConvexConcaveCollisionAlgorithm::processCollision (const btCollisionObjec btVector3 normalLocal; btScalar dist; - if (sdfShape->queryPoint(vtxInSdf,dist, normalLocal)) + if (sdfShape->queryPoint(vtxInSdf, dist, normalLocal)) { - if (dist<=SIMD_EPSILON) + if (dist <= maxDist) { normalLocal.safeNormalize(); btVector3 normal = triBodyWrap->getWorldTransform().getBasis()*normalLocal; + + if (convex->getShapeType() == SPHERE_SHAPE_PROXYTYPE) + { + btSphereShape* sphere = (btSphereShape*)convex; + dist -= sphere->getRadius(); + vtxWorldSpace -= sphere->getRadius()*normal; + + } resultOut->addContactPoint(normal,vtxWorldSpace-normal*dist, dist); } } diff --git a/src/BulletCollision/CollisionShapes/btMiniSDF.cpp b/src/BulletCollision/CollisionShapes/btMiniSDF.cpp index c57673381..afe45e1d2 100644 --- a/src/BulletCollision/CollisionShapes/btMiniSDF.cpp +++ b/src/BulletCollision/CollisionShapes/btMiniSDF.cpp @@ -1,5 +1,13 @@ #include "btMiniSDF.h" +// +//Based on code from DiscreGrid, https://github.com/InteractiveComputerGraphics/Discregrid +//example: +//GenerateSDF.exe -r "32 32 32" -d "-1.6 -1.6 -.6 1.6 1.6 .6" concave_box.obj +//The MIT License (MIT) +// +//Copyright (c) 2017 Dan Koschier +// #include #include //memcpy @@ -89,7 +97,10 @@ bool btMiniSDF::load(const char* data, int size) std::size_t n_nodes0; ds.read(nodes0); n_nodes0 = nodes0; - + if (n_nodes0 > 1024 * 1024 * 1024) + { + return m_isValid; + } m_nodes.resize(n_nodes0); for (unsigned int i=0;i Date: Tue, 17 Apr 2018 11:59:04 -0700 Subject: [PATCH 51/68] Fixing include line of btMultibodyWorldImporter.h to work with installed bullet files When running make install for Bullet, no "Extras/" folder is created, so the include line as is will fail. This modification should work since the relevant header is in the same folder as this header. --- Extras/Serialize/BulletWorldImporter/btMultiBodyWorldImporter.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extras/Serialize/BulletWorldImporter/btMultiBodyWorldImporter.h b/Extras/Serialize/BulletWorldImporter/btMultiBodyWorldImporter.h index eb47ecda2..002616e40 100644 --- a/Extras/Serialize/BulletWorldImporter/btMultiBodyWorldImporter.h +++ b/Extras/Serialize/BulletWorldImporter/btMultiBodyWorldImporter.h @@ -1,7 +1,7 @@ #ifndef BT_MULTIBODY_WORLD_IMPORTER_H #define BT_MULTIBODY_WORLD_IMPORTER_H -#include "../Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.h" +#include "btBulletWorldImporter.h" class btMultiBodyWorldImporter : public btBulletWorldImporter { From a375a349ce367123fab1e00066b8d1347396b3a2 Mon Sep 17 00:00:00 2001 From: Jie Date: Tue, 24 Apr 2018 21:48:27 -0700 Subject: [PATCH 52/68] make sure that the pre-trained galloping and trotting policies work for the minitaur_reactive_env and minitaur_trotting_env environments. --- .../ppo/minitaur_reactive_env/config.yaml | 54 ++ .../model.ckpt-14000000.data-00000-of-00001 | Bin 0 -> 3972192 bytes .../model.ckpt-14000000.index | Bin 0 -> 2431 bytes .../model.ckpt-14000000.meta | Bin 0 -> 3679475 bytes .../ppo/minitaur_trotting_env/config.yaml | 51 ++ .../model.ckpt-14000000.data-00000-of-00001 | Bin 0 -> 3127776 bytes .../model.ckpt-14000000.index | Bin 0 -> 2427 bytes .../model.ckpt-14000000.meta | Bin 0 -> 3679442 bytes .../gym/pybullet_envs/minitaur/__init__.py | 4 +- .../pybullet_envs/minitaur/agents/__init__.py | 1 + .../minitaur/agents/ppo/__init__.py | 21 + .../minitaur/agents/ppo/algorithm.py | 558 ++++++++++++++++++ .../minitaur/agents/ppo/memory.py | 152 +++++ .../minitaur/agents/ppo/normalize.py | 168 ++++++ .../minitaur/agents/ppo/utility.py | 222 +++++++ .../minitaur/agents/scripts/__init__.py | 23 + .../minitaur/agents/scripts/configs.py | 128 ++++ .../minitaur/agents/scripts/networks.py | 167 ++++++ .../minitaur/agents/scripts/train.py | 165 ++++++ .../minitaur/agents/scripts/train_ppo_test.py | 110 ++++ .../minitaur/agents/scripts/utility.py | 213 +++++++ .../minitaur/agents/scripts/visualize.py | 157 +++++ .../minitaur/agents/tools/__init__.py | 30 + .../minitaur/agents/tools/attr_dict.py | 54 ++ .../minitaur/agents/tools/attr_dict_test.py | 71 +++ .../minitaur/agents/tools/batch_env.py | 125 ++++ .../minitaur/agents/tools/count_weights.py | 48 ++ .../agents/tools/count_weights_test.py | 98 +++ .../agents/tools/in_graph_batch_env.py | 178 ++++++ .../minitaur/agents/tools/in_graph_env.py | 162 +++++ .../minitaur/agents/tools/loop.py | 233 ++++++++ .../minitaur/agents/tools/loop_test.py | 111 ++++ .../minitaur/agents/tools/mock_algorithm.py | 49 ++ .../minitaur/agents/tools/mock_environment.py | 86 +++ .../minitaur/agents/tools/simulate.py | 145 +++++ .../minitaur/agents/tools/simulate_test.py | 98 +++ .../minitaur/agents/tools/streaming_mean.py | 67 +++ .../minitaur/agents/tools/wrappers.py | 552 +++++++++++++++++ .../minitaur/agents/tools/wrappers_test.py | 90 +++ .../gym/pybullet_envs/minitaur/envs/README | 11 + .../envs/minitaur_four_leg_stand_env.py | 4 +- .../envs/minitaur_reactive_env_example.py | 13 +- .../envs/minitaur_trotting_env_example.py | 70 ++- 43 files changed, 4447 insertions(+), 42 deletions(-) create mode 100644 examples/pybullet/gym/pybullet_data/policies/ppo/minitaur_reactive_env/config.yaml create mode 100644 examples/pybullet/gym/pybullet_data/policies/ppo/minitaur_reactive_env/model.ckpt-14000000.data-00000-of-00001 create mode 100644 examples/pybullet/gym/pybullet_data/policies/ppo/minitaur_reactive_env/model.ckpt-14000000.index create mode 100644 examples/pybullet/gym/pybullet_data/policies/ppo/minitaur_reactive_env/model.ckpt-14000000.meta create mode 100644 examples/pybullet/gym/pybullet_data/policies/ppo/minitaur_trotting_env/config.yaml create mode 100644 examples/pybullet/gym/pybullet_data/policies/ppo/minitaur_trotting_env/model.ckpt-14000000.data-00000-of-00001 create mode 100644 examples/pybullet/gym/pybullet_data/policies/ppo/minitaur_trotting_env/model.ckpt-14000000.index create mode 100644 examples/pybullet/gym/pybullet_data/policies/ppo/minitaur_trotting_env/model.ckpt-14000000.meta create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/__init__.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/ppo/__init__.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/ppo/algorithm.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/ppo/memory.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/ppo/normalize.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/ppo/utility.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/scripts/__init__.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/scripts/configs.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/scripts/networks.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/scripts/train.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/scripts/train_ppo_test.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/scripts/utility.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/scripts/visualize.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/tools/__init__.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/tools/attr_dict.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/tools/attr_dict_test.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/tools/batch_env.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/tools/count_weights.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/tools/count_weights_test.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/tools/in_graph_batch_env.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/tools/in_graph_env.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/tools/loop.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/tools/loop_test.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/tools/mock_algorithm.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/tools/mock_environment.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/tools/simulate.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/tools/simulate_test.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/tools/streaming_mean.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/tools/wrappers.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/agents/tools/wrappers_test.py create mode 100644 examples/pybullet/gym/pybullet_envs/minitaur/envs/README diff --git a/examples/pybullet/gym/pybullet_data/policies/ppo/minitaur_reactive_env/config.yaml b/examples/pybullet/gym/pybullet_data/policies/ppo/minitaur_reactive_env/config.yaml new file mode 100644 index 000000000..a2e6baedd --- /dev/null +++ b/examples/pybullet/gym/pybullet_data/policies/ppo/minitaur_reactive_env/config.yaml @@ -0,0 +1,54 @@ +!!python/object/new:pybullet_envs.minitaur.agents.tools.attr_dict.AttrDict +dictitems: + algorithm: !!python/name:pybullet_envs.minitaur.agents.ppo.algorithm.PPOAlgorithm '' + discount: 0.9868209124499899 + env: !!python/object/apply:functools.partial + args: + - &id001 !!python/name:pybullet_envs.minitaur.envs.minitaur_reactive_env.MinitaurReactiveEnv '' + state: !!python/tuple + - *id001 + - !!python/tuple [] + - accurate_motor_model_enabled: true + control_latency: 0.02 + energy_weight: 0.005 + env_randomizer: null + motor_kd: 0.015 + num_steps_to_log: 1000 + pd_latency: 0.003 + remove_default_joint_damping: true + render: false + urdf_version: rainbow_dash_v0 + - null + eval_episodes: 25 + init_logstd: -1.1579536194508315 + init_mean_factor: 0.3084392491563408 + kl_cutoff_coef: 1000 + kl_cutoff_factor: 2 + kl_init_penalty: 1 + kl_target: 0.01 + logdir: /cns/ij-d/home/jietan/experiment/minitaur_vizier_study_ppo/minreact_nonexp_nr_02_186515603_186518344/333 + max_length: 1000 + network: !!python/name:pybullet_envs.minitaur.agents.scripts.networks.ForwardGaussianPolicy '' + network_config: {} + num_agents: 25 + policy_layers: !!python/tuple + - 114 + - 45 + policy_lr: 0.00023516695218031146 + policy_optimizer: AdamOptimizer + steps: 7000000.0 + update_epochs_policy: 25 + update_epochs_value: 25 + update_every: 25 + use_gpu: false + value_layers: !!python/tuple + - 170 + - 78 + value_lr: 0.00031014032715987193 + value_optimizer: AdamOptimizer + weight_summaries: + all: .* + policy: .*/policy/.* + value: .*/value/.* +state: + _mutable: false \ No newline at end of file diff --git a/examples/pybullet/gym/pybullet_data/policies/ppo/minitaur_reactive_env/model.ckpt-14000000.data-00000-of-00001 b/examples/pybullet/gym/pybullet_data/policies/ppo/minitaur_reactive_env/model.ckpt-14000000.data-00000-of-00001 new file mode 100644 index 0000000000000000000000000000000000000000..70c3900ea5840a77687463738e771d67b8f1b574 GIT binary patch literal 3972192 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