diff --git a/Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.cpp b/Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.cpp index 1391888b1..d059ccc1a 100644 --- a/Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.cpp +++ b/Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.cpp @@ -889,6 +889,48 @@ bool btBulletWorldImporter::convertAllObjects( bParse::btBulletFile* bulletFile break; } + case D6_SPRING_CONSTRAINT_TYPE: + { + btGeneric6DofSpringConstraintData* dofData = (btGeneric6DofSpringConstraintData*)constraintData; + btGeneric6DofSpringConstraint* dof = 0; + + if (rbA && rbB) + { + btTransform rbAFrame,rbBFrame; + rbAFrame.deSerializeFloat(dofData->m_6dofData.m_rbAFrame); + rbBFrame.deSerializeFloat(dofData->m_6dofData.m_rbBFrame); + dof = createGeneric6DofSpringConstraint(*rbA,*rbB,rbAFrame,rbBFrame,dofData->m_6dofData.m_useLinearReferenceFrameA!=0); + } else + { + printf("Error in btWorldImporter::createGeneric6DofSpringConstraint: requires rbA && rbB\n"); + } + + if (dof) + { + btVector3 angLowerLimit,angUpperLimit, linLowerLimit,linUpperlimit; + angLowerLimit.deSerializeFloat(dofData->m_6dofData.m_angularLowerLimit); + angUpperLimit.deSerializeFloat(dofData->m_6dofData.m_angularUpperLimit); + linLowerLimit.deSerializeFloat(dofData->m_6dofData.m_linearLowerLimit); + linUpperlimit.deSerializeFloat(dofData->m_6dofData.m_linearUpperLimit); + + dof->setAngularLowerLimit(angLowerLimit); + dof->setAngularUpperLimit(angUpperLimit); + dof->setLinearLowerLimit(linLowerLimit); + dof->setLinearUpperLimit(linUpperlimit); + + int i; + for (i=0;i<6;i++) + { + dof->setStiffness(i,dofData->m_springStiffness[i]); + dof->setEquilibriumPoint(i,dofData->m_equilibriumPoint[i]); + dof->enableSpring(i,dofData->m_springEnabled[i]!=0); + dof->setDamping(i,dofData->m_springDamping[i]); + } + } + + constraint = dof; + break; + } case D6_CONSTRAINT_TYPE: { btGeneric6DofConstraintData* dofData = (btGeneric6DofConstraintData*)constraintData; @@ -1201,6 +1243,15 @@ btGeneric6DofConstraint* btBulletWorldImporter::createGeneric6DofConstraint(btRi m_allocatedConstraints.push_back(dof); return dof; } + +btGeneric6DofSpringConstraint* btBulletWorldImporter::createGeneric6DofSpringConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA) +{ + btGeneric6DofSpringConstraint* dof = new btGeneric6DofSpringConstraint(rbA,rbB,frameInA,frameInB,useLinearReferenceFrameA); + m_allocatedConstraints.push_back(dof); + return dof; +} + + btSliderConstraint* btBulletWorldImporter::createSliderConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA) { btSliderConstraint* slider = new btSliderConstraint(rbA,rbB,frameInA,frameInB,useLinearReferenceFrameA); diff --git a/Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.h b/Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.h index 9770a0193..c3b896117 100644 --- a/Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.h +++ b/Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.h @@ -43,6 +43,7 @@ class btPoint2PointConstraint; class btHingeConstraint; class btConeTwistConstraint; class btGeneric6DofConstraint; +class btGeneric6DofSpringConstraint; class btSliderConstraint; @@ -185,6 +186,7 @@ public: virtual btConeTwistConstraint* createConeTwistConstraint(btRigidBody& rbA,const btTransform& rbAFrame); virtual btGeneric6DofConstraint* createGeneric6DofConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA); virtual btGeneric6DofConstraint* createGeneric6DofConstraint(btRigidBody& rbB, const btTransform& frameInB, bool useLinearReferenceFrameB); + virtual btGeneric6DofSpringConstraint* createGeneric6DofSpringConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA); virtual btSliderConstraint* createSliderConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA); virtual btSliderConstraint* createSliderConstraint(btRigidBody& rbB, const btTransform& frameInB, bool useLinearReferenceFrameA); diff --git a/Extras/Serialize/makesdna/makesdna.cpp b/Extras/Serialize/makesdna/makesdna.cpp index 1653236a3..4f0882f58 100644 --- a/Extras/Serialize/makesdna/makesdna.cpp +++ b/Extras/Serialize/makesdna/makesdna.cpp @@ -141,6 +141,7 @@ typedef unsigned long uintptr_t; #include "BulletDynamics/ConstraintSolver/btHingeConstraint.h" #include "BulletDynamics/ConstraintSolver/btConeTwistConstraint.h" #include "BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h" +#include "BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h" #include "BulletDynamics/ConstraintSolver/btSliderConstraint.h" #include "BulletDynamics/Dynamics/btRigidBody.h" @@ -182,6 +183,7 @@ char *includefiles[] = { "../../../src/BulletDynamics/ConstraintSolver/btHingeConstraint.h", "../../../src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h", "../../../src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h", + "../../../src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h", "../../../src/BulletDynamics/ConstraintSolver/btSliderConstraint.h", "../../../src/BulletSoftBody/btSoftBodyData.h", // empty string to indicate end of includefiles diff --git a/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h b/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h index 705f81822..d7a75df3a 100644 --- a/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h +++ b/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h @@ -32,11 +32,11 @@ typedef bool (*ContactProcessedCallback)(btManifoldPoint& cp,void* body0,void* b extern ContactDestroyedCallback gContactDestroyedCallback; extern ContactProcessedCallback gContactProcessedCallback; - +//the enum starts at 1024 to avoid type conflicts with btTypedConstraint enum btContactManifoldTypes { - BT_PERSISTENT_MANIFOLD_TYPE = 1, - MAX_CONTACT_MANIFOLD_TYPE + MIN_CONTACT_MANIFOLD_TYPE = 1024, + BT_PERSISTENT_MANIFOLD_TYPE }; #define MANIFOLD_CACHE_SIZE 4 diff --git a/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp b/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp index ec031b770..b5b998a86 100644 --- a/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp +++ b/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp @@ -21,6 +21,8 @@ subject to the following restrictions: btGeneric6DofSpringConstraint::btGeneric6DofSpringConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA) : btGeneric6DofConstraint(rbA, rbB, frameInA, frameInB, useLinearReferenceFrameA) { + m_objectType = D6_SPRING_CONSTRAINT_TYPE; + for(int i = 0; i < 6; i++) { m_springEnabled[i] = false; diff --git a/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h b/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h index 3152a8d0e..462f3d1a1 100644 --- a/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h +++ b/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h @@ -49,7 +49,46 @@ public: void setEquilibriumPoint(int index); // set the current constraint position/orientation as an equilibrium point for given DOF void setEquilibriumPoint(int index, btScalar val); virtual void getInfo2 (btConstraintInfo2* info); + + virtual int calculateSerializeBufferSize() const; + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; + }; + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btGeneric6DofSpringConstraintData +{ + btGeneric6DofConstraintData m_6dofData; + + int m_springEnabled[6]; + float m_equilibriumPoint[6]; + float m_springStiffness[6]; + float m_springDamping[6]; +}; + +SIMD_FORCE_INLINE int btGeneric6DofSpringConstraint::calculateSerializeBufferSize() const +{ + return sizeof(btGeneric6DofSpringConstraintData); +} + + ///fills the dataBuffer and returns the struct name (and 0 on failure) +SIMD_FORCE_INLINE const char* btGeneric6DofSpringConstraint::serialize(void* dataBuffer, btSerializer* serializer) const +{ + btGeneric6DofSpringConstraintData* dof = (btGeneric6DofSpringConstraintData*)dataBuffer; + btGeneric6DofConstraint::serialize(&dof->m_6dofData,serializer); + + int i; + for (i=0;i<6;i++) + { + dof->m_equilibriumPoint[i] = m_equilibriumPoint[i]; + dof->m_springDamping[i] = m_springDamping[i]; + dof->m_springEnabled[i] = m_springEnabled[i]? 1 : 0; + dof->m_springStiffness[i] = m_springStiffness[i]; + } + return "btGeneric6DofConstraintData"; +} + #endif // GENERIC_6DOF_SPRING_CONSTRAINT_H diff --git a/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h b/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h index 8f2d5825c..1116c2686 100644 --- a/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h +++ b/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h @@ -19,18 +19,20 @@ subject to the following restrictions: class btRigidBody; #include "LinearMath/btScalar.h" #include "btSolverConstraint.h" -#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" class btSerializer; +//Don't change any of the existing enum values, so add enum types at the end for serialization compatibility enum btTypedConstraintType { - POINT2POINT_CONSTRAINT_TYPE=MAX_CONTACT_MANIFOLD_TYPE+1, + POINT2POINT_CONSTRAINT_TYPE=3, HINGE_CONSTRAINT_TYPE, CONETWIST_CONSTRAINT_TYPE, D6_CONSTRAINT_TYPE, SLIDER_CONSTRAINT_TYPE, - CONTACT_CONSTRAINT_TYPE + CONTACT_CONSTRAINT_TYPE, + D6_SPRING_CONSTRAINT_TYPE, + MAX_CONSTRAINT_TYPE }; diff --git a/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp b/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp index a5b12fa5f..e1eada07c 100644 --- a/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp +++ b/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp @@ -1009,6 +1009,7 @@ void btDiscreteDynamicsWorld::debugDrawConstraint(btTypedConstraint* constraint) } } break; + case D6_SPRING_CONSTRAINT_TYPE: case D6_CONSTRAINT_TYPE: { btGeneric6DofConstraint* p6DOF = (btGeneric6DofConstraint*)constraint; diff --git a/src/BulletSoftBody/btSoftBody.cpp b/src/BulletSoftBody/btSoftBody.cpp index 1670aa1b7..fe66d33ee 100644 --- a/src/BulletSoftBody/btSoftBody.cpp +++ b/src/BulletSoftBody/btSoftBody.cpp @@ -3353,6 +3353,98 @@ const char* btSoftBody::serialize(void* dataBuffer, class btSerializer* serializ } + + + sbd->m_numJoints = m_joints.size(); + sbd->m_joints = m_joints.size()? (btSoftBodyJointData*) serializer->getUniquePointer((void*)&m_joints[0]) : 0; + + if (sbd->m_joints) + { + int sz = sizeof(btSoftBodyJointData); + int numElem = m_joints.size(); + btChunk* chunk = serializer->allocate(sz,numElem); + btSoftBodyJointData* memPtr = (btSoftBodyJointData*)chunk->m_oldPtr; + + for (int i=0;im_jointType = (int)m_joints[i]->Type(); + m_joints[i]->m_massmatrix.serializeFloat(memPtr->m_massmatrix); + m_joints[i]->m_refs[0].serializeFloat(memPtr->m_refs[0]); + m_joints[i]->m_refs[1].serializeFloat(memPtr->m_refs[1]); + m_joints[i]->m_drift.serializeFloat(memPtr->m_drift); + m_joints[i]->m_sdrift.serializeFloat(memPtr->m_sdrift); + memPtr->m_cfm = m_joints[i]->m_cfm; + memPtr->m_erp = m_joints[i]->m_erp; + memPtr->m_split = m_joints[i]->m_split; + memPtr->m_delete = m_joints[i]->m_delete; + + for (int j=0;j<4;j++) + { + memPtr->m_relPosition[0].m_floats[j] = 0.f; + memPtr->m_relPosition[1].m_floats[j] = 0.f; + memPtr->m_axis[0].m_floats[j] = 0.f; + memPtr->m_axis[1].m_floats[j] = 0.f; + } + + memPtr->m_bodyA = 0; + memPtr->m_bodyB = 0; + if (m_joints[i]->m_bodies[0].m_soft) + { + memPtr->m_bodyAtype = BT_JOINT_SOFT_BODY_CLUSTER; + memPtr->m_bodyA = serializer->getUniquePointer((void*)m_joints[i]->m_bodies[0].m_soft); + } + if (m_joints[i]->m_bodies[0].m_collisionObject) + { + memPtr->m_bodyAtype = BT_JOINT_COLLISION_OBJECT; + memPtr->m_bodyA = serializer->getUniquePointer((void*)m_joints[i]->m_bodies[0].m_collisionObject); + } + if (m_joints[i]->m_bodies[0].m_rigid) + { + memPtr->m_bodyAtype = BT_JOINT_RIGID_BODY; + memPtr->m_bodyA = serializer->getUniquePointer((void*)m_joints[i]->m_bodies[0].m_rigid); + } + + if (m_joints[i]->m_bodies[1].m_soft) + { + memPtr->m_bodyBtype = BT_JOINT_SOFT_BODY_CLUSTER; + memPtr->m_bodyB = serializer->getUniquePointer((void*)m_joints[i]->m_bodies[1].m_soft); + } + if (m_joints[i]->m_bodies[1].m_collisionObject) + { + memPtr->m_bodyBtype = BT_JOINT_COLLISION_OBJECT; + memPtr->m_bodyB = serializer->getUniquePointer((void*)m_joints[i]->m_bodies[1].m_collisionObject); + } + if (m_joints[i]->m_bodies[1].m_rigid) + { + memPtr->m_bodyBtype = BT_JOINT_RIGID_BODY; + memPtr->m_bodyB = serializer->getUniquePointer((void*)m_joints[i]->m_bodies[1].m_rigid); + } + + switch (m_joints[i]->Type()) + { + case btSoftBody::Joint::eType::Linear: + { + btSoftBody::LJoint* lj = (btSoftBody::LJoint*)m_joints[i]; + lj->m_rpos[0].serializeFloat(memPtr->m_relPosition[0]); + lj->m_rpos[1].serializeFloat(memPtr->m_relPosition[1]); + break; + } + case btSoftBody::Joint::eType::Angular: + { + btSoftBody::AJoint* aj = (btSoftBody::AJoint*) m_joints[i]; + aj->m_axis[0].serializeFloat(memPtr->m_axis[0]); + aj->m_axis[1].serializeFloat(memPtr->m_axis[1]); + break; + } + default: + { + } + }; + } + serializer->finalizeChunk(chunk,"btSoftBodyJointData",BT_ARRAY_CODE,(void*) &m_joints[0]); + } + + return btSoftBodyDataName; } diff --git a/src/BulletSoftBody/btSoftBody.h b/src/BulletSoftBody/btSoftBody.h index fb9bb5a08..21677485f 100644 --- a/src/BulletSoftBody/btSoftBody.h +++ b/src/BulletSoftBody/btSoftBody.h @@ -470,7 +470,7 @@ public: struct Joint { struct eType { enum _ { - Linear, + Linear=0, Angular, Contact };}; diff --git a/src/BulletSoftBody/btSoftBodyData.h b/src/BulletSoftBody/btSoftBodyData.h index 6b853bcb5..f1e9de9f5 100644 --- a/src/BulletSoftBody/btSoftBodyData.h +++ b/src/BulletSoftBody/btSoftBodyData.h @@ -163,6 +163,34 @@ struct SoftBodyClusterData int m_clusterIndex; }; + +enum btSoftJointBodyType +{ + BT_JOINT_SOFT_BODY_CLUSTER=1, + BT_JOINT_RIGID_BODY, + BT_JOINT_COLLISION_OBJECT +}; + +struct btSoftBodyJointData +{ + btMatrix3x3FloatData m_massmatrix; + void *m_bodyA; + void *m_bodyB; + btVector3FloatData m_refs[2]; + btVector3FloatData m_drift; + btVector3FloatData m_sdrift; + float m_cfm; + float m_erp; + float m_split; + int m_delete; + btVector3FloatData m_relPosition[2];//linear + btVector3FloatData m_axis[2];//angular + int m_bodyAtype; + int m_bodyBtype; + int m_jointType; + int m_pad; +}; + ///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 struct btSoftBodyFloatData { @@ -176,6 +204,7 @@ struct btSoftBodyFloatData SoftBodyTetraData *m_tetrahedra; SoftRigidAnchorData *m_anchors; SoftBodyClusterData *m_clusters; + btSoftBodyJointData *m_joints; int m_numMaterials; int m_numNodes; @@ -184,9 +213,8 @@ struct btSoftBodyFloatData int m_numTetrahedra; int m_numAnchors; int m_numClusters; - int m_pad; - - SoftBodyConfigData m_config; + int m_numJoints; + SoftBodyConfigData m_config; }; #endif //BT_SOFTBODY_FLOAT_DATA diff --git a/src/LinearMath/btSerializer.cpp b/src/LinearMath/btSerializer.cpp index e173ad5e1..b833bf841 100644 --- a/src/LinearMath/btSerializer.cpp +++ b/src/LinearMath/btSerializer.cpp @@ -1,5 +1,5 @@ unsigned char sBulletDNAstr[]= { -83,68,78,65,78,65,77,69,22,1,0,0,109,95,115,105,122,101,0,109, +83,68,78,65,78,65,77,69,44,1,0,0,109,95,115,105,122,101,0,109, 95,99,97,112,97,99,105,116,121,0,42,109,95,100,97,116,97,0,109,95, 99,111,108,108,105,115,105,111,110,83,104,97,112,101,115,0,109,95,99,111, 108,108,105,115,105,111,110,79,98,106,101,99,116,115,0,109,95,99,111,110, @@ -149,150 +149,166 @@ unsigned char sBulletDNAstr[]= { 95,97,110,103,117,108,97,114,76,111,119,101,114,76,105,109,105,116,0,109, 95,117,115,101,76,105,110,101,97,114,82,101,102,101,114,101,110,99,101,70, 114,97,109,101,65,0,109,95,117,115,101,79,102,102,115,101,116,70,111,114, -67,111,110,115,116,114,97,105,110,116,70,114,97,109,101,0,109,95,108,105, -110,101,97,114,83,116,105,102,102,110,101,115,115,0,109,95,97,110,103,117, -108,97,114,83,116,105,102,102,110,101,115,115,0,109,95,118,111,108,117,109, -101,83,116,105,102,102,110,101,115,115,0,42,109,95,109,97,116,101,114,105, -97,108,0,109,95,112,111,115,105,116,105,111,110,0,109,95,112,114,101,118, -105,111,117,115,80,111,115,105,116,105,111,110,0,109,95,118,101,108,111,99, -105,116,121,0,109,95,97,99,99,117,109,117,108,97,116,101,100,70,111,114, -99,101,0,109,95,110,111,114,109,97,108,0,109,95,97,114,101,97,0,109, -95,97,116,116,97,99,104,0,109,95,112,97,100,0,109,95,110,111,100,101, -73,110,100,105,99,101,115,91,50,93,0,109,95,114,101,115,116,76,101,110, -103,116,104,0,109,95,98,98,101,110,100,105,110,103,0,109,95,110,111,100, -101,73,110,100,105,99,101,115,91,51,93,0,109,95,114,101,115,116,65,114, -101,97,0,109,95,99,48,91,52,93,0,109,95,110,111,100,101,73,110,100, -105,99,101,115,91,52,93,0,109,95,114,101,115,116,86,111,108,117,109,101, -0,109,95,99,49,0,109,95,99,50,0,109,95,99,48,0,109,95,108,111, -99,97,108,70,114,97,109,101,0,42,109,95,114,105,103,105,100,66,111,100, -121,0,109,95,110,111,100,101,73,110,100,101,120,0,109,95,97,101,114,111, -77,111,100,101,108,0,109,95,98,97,117,109,103,97,114,116,101,0,109,95, -100,114,97,103,0,109,95,108,105,102,116,0,109,95,112,114,101,115,115,117, -114,101,0,109,95,118,111,108,117,109,101,0,109,95,100,121,110,97,109,105, -99,70,114,105,99,116,105,111,110,0,109,95,112,111,115,101,77,97,116,99, -104,0,109,95,114,105,103,105,100,67,111,110,116,97,99,116,72,97,114,100, -110,101,115,115,0,109,95,107,105,110,101,116,105,99,67,111,110,116,97,99, -116,72,97,114,100,110,101,115,115,0,109,95,115,111,102,116,67,111,110,116, -97,99,116,72,97,114,100,110,101,115,115,0,109,95,97,110,99,104,111,114, -72,97,114,100,110,101,115,115,0,109,95,115,111,102,116,82,105,103,105,100, -67,108,117,115,116,101,114,72,97,114,100,110,101,115,115,0,109,95,115,111, -102,116,75,105,110,101,116,105,99,67,108,117,115,116,101,114,72,97,114,100, -110,101,115,115,0,109,95,115,111,102,116,83,111,102,116,67,108,117,115,116, -101,114,72,97,114,100,110,101,115,115,0,109,95,115,111,102,116,82,105,103, -105,100,67,108,117,115,116,101,114,73,109,112,117,108,115,101,83,112,108,105, -116,0,109,95,115,111,102,116,75,105,110,101,116,105,99,67,108,117,115,116, -101,114,73,109,112,117,108,115,101,83,112,108,105,116,0,109,95,115,111,102, -116,83,111,102,116,67,108,117,115,116,101,114,73,109,112,117,108,115,101,83, -112,108,105,116,0,109,95,109,97,120,86,111,108,117,109,101,0,109,95,116, -105,109,101,83,99,97,108,101,0,109,95,118,101,108,111,99,105,116,121,73, -116,101,114,97,116,105,111,110,115,0,109,95,112,111,115,105,116,105,111,110, -73,116,101,114,97,116,105,111,110,115,0,109,95,100,114,105,102,116,73,116, -101,114,97,116,105,111,110,115,0,109,95,99,108,117,115,116,101,114,73,116, -101,114,97,116,105,111,110,115,0,109,95,114,111,116,0,109,95,115,99,97, -108,101,0,109,95,97,113,113,0,109,95,99,111,109,0,42,109,95,112,111, -115,105,116,105,111,110,115,0,42,109,95,119,101,105,103,104,116,115,0,109, -95,110,117,109,80,111,115,105,116,105,111,110,115,0,109,95,110,117,109,87, -101,105,103,116,115,0,109,95,98,118,111,108,117,109,101,0,109,95,98,102, -114,97,109,101,0,109,95,102,114,97,109,101,120,102,111,114,109,0,109,95, -108,111,99,105,105,0,109,95,105,110,118,119,105,0,109,95,118,105,109,112, -117,108,115,101,115,91,50,93,0,109,95,100,105,109,112,117,108,115,101,115, -91,50,93,0,109,95,108,118,0,109,95,97,118,0,42,109,95,102,114,97, -109,101,114,101,102,115,0,42,109,95,110,111,100,101,73,110,100,105,99,101, -115,0,42,109,95,109,97,115,115,101,115,0,109,95,110,117,109,70,114,97, -109,101,82,101,102,115,0,109,95,110,117,109,78,111,100,101,115,0,109,95, -110,117,109,77,97,115,115,101,115,0,109,95,105,100,109,97,115,115,0,109, -95,105,109,97,115,115,0,109,95,110,118,105,109,112,117,108,115,101,115,0, -109,95,110,100,105,109,112,117,108,115,101,115,0,109,95,110,100,97,109,112, -105,110,103,0,109,95,108,100,97,109,112,105,110,103,0,109,95,97,100,97, -109,112,105,110,103,0,109,95,109,97,116,99,104,105,110,103,0,109,95,109, -97,120,83,101,108,102,67,111,108,108,105,115,105,111,110,73,109,112,117,108, -115,101,0,109,95,115,101,108,102,67,111,108,108,105,115,105,111,110,73,109, -112,117,108,115,101,70,97,99,116,111,114,0,109,95,99,111,110,116,97,105, -110,115,65,110,99,104,111,114,0,109,95,99,111,108,108,105,100,101,0,109, -95,99,108,117,115,116,101,114,73,110,100,101,120,0,42,109,95,112,111,115, -101,0,42,42,109,95,109,97,116,101,114,105,97,108,115,0,42,109,95,110, -111,100,101,115,0,42,109,95,108,105,110,107,115,0,42,109,95,102,97,99, -101,115,0,42,109,95,116,101,116,114,97,104,101,100,114,97,0,42,109,95, -97,110,99,104,111,114,115,0,42,109,95,99,108,117,115,116,101,114,115,0, -109,95,110,117,109,77,97,116,101,114,105,97,108,115,0,109,95,110,117,109, -76,105,110,107,115,0,109,95,110,117,109,70,97,99,101,115,0,109,95,110, -117,109,84,101,116,114,97,104,101,100,114,97,0,109,95,110,117,109,65,110, -99,104,111,114,115,0,109,95,110,117,109,67,108,117,115,116,101,114,115,0, -109,95,99,111,110,102,105,103,0,0,0,0,84,89,80,69,68,0,0,0, -99,104,97,114,0,117,99,104,97,114,0,115,104,111,114,116,0,117,115,104, -111,114,116,0,105,110,116,0,108,111,110,103,0,117,108,111,110,103,0,102, -108,111,97,116,0,100,111,117,98,108,101,0,118,111,105,100,0,80,111,105, -110,116,101,114,65,114,114,97,121,0,98,116,80,104,121,115,105,99,115,83, -121,115,116,101,109,0,76,105,115,116,66,97,115,101,0,98,116,86,101,99, -116,111,114,51,70,108,111,97,116,68,97,116,97,0,98,116,86,101,99,116, -111,114,51,68,111,117,98,108,101,68,97,116,97,0,98,116,77,97,116,114, -105,120,51,120,51,70,108,111,97,116,68,97,116,97,0,98,116,77,97,116, -114,105,120,51,120,51,68,111,117,98,108,101,68,97,116,97,0,98,116,84, -114,97,110,115,102,111,114,109,70,108,111,97,116,68,97,116,97,0,98,116, -84,114,97,110,115,102,111,114,109,68,111,117,98,108,101,68,97,116,97,0, -98,116,66,118,104,83,117,98,116,114,101,101,73,110,102,111,68,97,116,97, -0,98,116,79,112,116,105,109,105,122,101,100,66,118,104,78,111,100,101,70, -108,111,97,116,68,97,116,97,0,98,116,79,112,116,105,109,105,122,101,100, -66,118,104,78,111,100,101,68,111,117,98,108,101,68,97,116,97,0,98,116, -81,117,97,110,116,105,122,101,100,66,118,104,78,111,100,101,68,97,116,97, -0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,70,108,111,97,116, -68,97,116,97,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,68, -111,117,98,108,101,68,97,116,97,0,98,116,67,111,108,108,105,115,105,111, -110,83,104,97,112,101,68,97,116,97,0,98,116,83,116,97,116,105,99,80, -108,97,110,101,83,104,97,112,101,68,97,116,97,0,98,116,67,111,110,118, -101,120,73,110,116,101,114,110,97,108,83,104,97,112,101,68,97,116,97,0, -98,116,80,111,115,105,116,105,111,110,65,110,100,82,97,100,105,117,115,0, -98,116,77,117,108,116,105,83,112,104,101,114,101,83,104,97,112,101,68,97, -116,97,0,98,116,73,110,116,73,110,100,101,120,68,97,116,97,0,98,116, -83,104,111,114,116,73,110,116,73,110,100,101,120,68,97,116,97,0,98,116, -83,104,111,114,116,73,110,116,73,110,100,101,120,84,114,105,112,108,101,116, -68,97,116,97,0,98,116,77,101,115,104,80,97,114,116,68,97,116,97,0, -98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110,116,101,114,102, -97,99,101,68,97,116,97,0,98,116,84,114,105,97,110,103,108,101,77,101, -115,104,83,104,97,112,101,68,97,116,97,0,98,116,84,114,105,97,110,103, -108,101,73,110,102,111,77,97,112,68,97,116,97,0,98,116,67,111,109,112, -111,117,110,100,83,104,97,112,101,67,104,105,108,100,68,97,116,97,0,98, -116,67,111,109,112,111,117,110,100,83,104,97,112,101,68,97,116,97,0,98, -116,67,121,108,105,110,100,101,114,83,104,97,112,101,68,97,116,97,0,98, -116,67,97,112,115,117,108,101,83,104,97,112,101,68,97,116,97,0,98,116, -84,114,105,97,110,103,108,101,73,110,102,111,68,97,116,97,0,98,116,71, -73,109,112,97,99,116,77,101,115,104,83,104,97,112,101,68,97,116,97,0, -98,116,67,111,110,118,101,120,72,117,108,108,83,104,97,112,101,68,97,116, -97,0,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,68, -111,117,98,108,101,68,97,116,97,0,98,116,67,111,108,108,105,115,105,111, -110,79,98,106,101,99,116,70,108,111,97,116,68,97,116,97,0,98,116,82, -105,103,105,100,66,111,100,121,70,108,111,97,116,68,97,116,97,0,98,116, -82,105,103,105,100,66,111,100,121,68,111,117,98,108,101,68,97,116,97,0, -98,116,67,111,110,115,116,114,97,105,110,116,73,110,102,111,49,0,98,116, -84,121,112,101,100,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0, -98,116,82,105,103,105,100,66,111,100,121,68,97,116,97,0,98,116,80,111, -105,110,116,50,80,111,105,110,116,67,111,110,115,116,114,97,105,110,116,70, -108,111,97,116,68,97,116,97,0,98,116,80,111,105,110,116,50,80,111,105, -110,116,67,111,110,115,116,114,97,105,110,116,68,111,117,98,108,101,68,97, -116,97,0,98,116,72,105,110,103,101,67,111,110,115,116,114,97,105,110,116, -68,111,117,98,108,101,68,97,116,97,0,98,116,72,105,110,103,101,67,111, -110,115,116,114,97,105,110,116,70,108,111,97,116,68,97,116,97,0,98,116, -67,111,110,101,84,119,105,115,116,67,111,110,115,116,114,97,105,110,116,68, -97,116,97,0,98,116,71,101,110,101,114,105,99,54,68,111,102,67,111,110, -115,116,114,97,105,110,116,68,97,116,97,0,98,116,83,108,105,100,101,114, -67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,83,111,102,116,66, -111,100,121,77,97,116,101,114,105,97,108,68,97,116,97,0,83,111,102,116, -66,111,100,121,78,111,100,101,68,97,116,97,0,83,111,102,116,66,111,100, -121,76,105,110,107,68,97,116,97,0,83,111,102,116,66,111,100,121,70,97, -99,101,68,97,116,97,0,83,111,102,116,66,111,100,121,84,101,116,114,97, -68,97,116,97,0,83,111,102,116,82,105,103,105,100,65,110,99,104,111,114, -68,97,116,97,0,83,111,102,116,66,111,100,121,67,111,110,102,105,103,68, -97,116,97,0,83,111,102,116,66,111,100,121,80,111,115,101,68,97,116,97, -0,83,111,102,116,66,111,100,121,67,108,117,115,116,101,114,68,97,116,97, -0,98,116,83,111,102,116,66,111,100,121,70,108,111,97,116,68,97,116,97, -0,0,0,0,84,76,69,78,1,0,1,0,2,0,2,0,4,0,4,0, -4,0,4,0,8,0,0,0,12,0,36,0,8,0,16,0,32,0,48,0, -96,0,64,0,-128,0,20,0,48,0,80,0,16,0,84,0,-124,0,12,0, -52,0,52,0,20,0,64,0,4,0,4,0,8,0,28,0,28,0,60,0, -56,0,76,0,24,0,60,0,60,0,16,0,64,0,68,0,-56,1,-8,0, --32,1,-104,3,8,0,44,0,0,0,76,0,108,0,84,1,-44,0,-52,0, --12,0,-60,0,16,0,100,0,20,0,36,0,100,0,92,0,104,0,-64,0, -92,1,-96,1,83,84,82,67,57,0,0,0,10,0,3,0,4,0,0,0, +67,111,110,115,116,114,97,105,110,116,70,114,97,109,101,0,109,95,54,100, +111,102,68,97,116,97,0,109,95,115,112,114,105,110,103,69,110,97,98,108, +101,100,91,54,93,0,109,95,101,113,117,105,108,105,98,114,105,117,109,80, +111,105,110,116,91,54,93,0,109,95,115,112,114,105,110,103,83,116,105,102, +102,110,101,115,115,91,54,93,0,109,95,115,112,114,105,110,103,68,97,109, +112,105,110,103,91,54,93,0,109,95,108,105,110,101,97,114,83,116,105,102, +102,110,101,115,115,0,109,95,97,110,103,117,108,97,114,83,116,105,102,102, +110,101,115,115,0,109,95,118,111,108,117,109,101,83,116,105,102,102,110,101, +115,115,0,42,109,95,109,97,116,101,114,105,97,108,0,109,95,112,111,115, +105,116,105,111,110,0,109,95,112,114,101,118,105,111,117,115,80,111,115,105, +116,105,111,110,0,109,95,118,101,108,111,99,105,116,121,0,109,95,97,99, +99,117,109,117,108,97,116,101,100,70,111,114,99,101,0,109,95,110,111,114, +109,97,108,0,109,95,97,114,101,97,0,109,95,97,116,116,97,99,104,0, +109,95,112,97,100,0,109,95,110,111,100,101,73,110,100,105,99,101,115,91, +50,93,0,109,95,114,101,115,116,76,101,110,103,116,104,0,109,95,98,98, +101,110,100,105,110,103,0,109,95,110,111,100,101,73,110,100,105,99,101,115, +91,51,93,0,109,95,114,101,115,116,65,114,101,97,0,109,95,99,48,91, +52,93,0,109,95,110,111,100,101,73,110,100,105,99,101,115,91,52,93,0, +109,95,114,101,115,116,86,111,108,117,109,101,0,109,95,99,49,0,109,95, +99,50,0,109,95,99,48,0,109,95,108,111,99,97,108,70,114,97,109,101, +0,42,109,95,114,105,103,105,100,66,111,100,121,0,109,95,110,111,100,101, +73,110,100,101,120,0,109,95,97,101,114,111,77,111,100,101,108,0,109,95, +98,97,117,109,103,97,114,116,101,0,109,95,100,114,97,103,0,109,95,108, +105,102,116,0,109,95,112,114,101,115,115,117,114,101,0,109,95,118,111,108, +117,109,101,0,109,95,100,121,110,97,109,105,99,70,114,105,99,116,105,111, +110,0,109,95,112,111,115,101,77,97,116,99,104,0,109,95,114,105,103,105, +100,67,111,110,116,97,99,116,72,97,114,100,110,101,115,115,0,109,95,107, +105,110,101,116,105,99,67,111,110,116,97,99,116,72,97,114,100,110,101,115, +115,0,109,95,115,111,102,116,67,111,110,116,97,99,116,72,97,114,100,110, +101,115,115,0,109,95,97,110,99,104,111,114,72,97,114,100,110,101,115,115, +0,109,95,115,111,102,116,82,105,103,105,100,67,108,117,115,116,101,114,72, +97,114,100,110,101,115,115,0,109,95,115,111,102,116,75,105,110,101,116,105, +99,67,108,117,115,116,101,114,72,97,114,100,110,101,115,115,0,109,95,115, +111,102,116,83,111,102,116,67,108,117,115,116,101,114,72,97,114,100,110,101, +115,115,0,109,95,115,111,102,116,82,105,103,105,100,67,108,117,115,116,101, +114,73,109,112,117,108,115,101,83,112,108,105,116,0,109,95,115,111,102,116, +75,105,110,101,116,105,99,67,108,117,115,116,101,114,73,109,112,117,108,115, +101,83,112,108,105,116,0,109,95,115,111,102,116,83,111,102,116,67,108,117, +115,116,101,114,73,109,112,117,108,115,101,83,112,108,105,116,0,109,95,109, +97,120,86,111,108,117,109,101,0,109,95,116,105,109,101,83,99,97,108,101, +0,109,95,118,101,108,111,99,105,116,121,73,116,101,114,97,116,105,111,110, +115,0,109,95,112,111,115,105,116,105,111,110,73,116,101,114,97,116,105,111, +110,115,0,109,95,100,114,105,102,116,73,116,101,114,97,116,105,111,110,115, +0,109,95,99,108,117,115,116,101,114,73,116,101,114,97,116,105,111,110,115, +0,109,95,114,111,116,0,109,95,115,99,97,108,101,0,109,95,97,113,113, +0,109,95,99,111,109,0,42,109,95,112,111,115,105,116,105,111,110,115,0, +42,109,95,119,101,105,103,104,116,115,0,109,95,110,117,109,80,111,115,105, +116,105,111,110,115,0,109,95,110,117,109,87,101,105,103,116,115,0,109,95, +98,118,111,108,117,109,101,0,109,95,98,102,114,97,109,101,0,109,95,102, +114,97,109,101,120,102,111,114,109,0,109,95,108,111,99,105,105,0,109,95, +105,110,118,119,105,0,109,95,118,105,109,112,117,108,115,101,115,91,50,93, +0,109,95,100,105,109,112,117,108,115,101,115,91,50,93,0,109,95,108,118, +0,109,95,97,118,0,42,109,95,102,114,97,109,101,114,101,102,115,0,42, +109,95,110,111,100,101,73,110,100,105,99,101,115,0,42,109,95,109,97,115, +115,101,115,0,109,95,110,117,109,70,114,97,109,101,82,101,102,115,0,109, +95,110,117,109,78,111,100,101,115,0,109,95,110,117,109,77,97,115,115,101, +115,0,109,95,105,100,109,97,115,115,0,109,95,105,109,97,115,115,0,109, +95,110,118,105,109,112,117,108,115,101,115,0,109,95,110,100,105,109,112,117, +108,115,101,115,0,109,95,110,100,97,109,112,105,110,103,0,109,95,108,100, +97,109,112,105,110,103,0,109,95,97,100,97,109,112,105,110,103,0,109,95, +109,97,116,99,104,105,110,103,0,109,95,109,97,120,83,101,108,102,67,111, +108,108,105,115,105,111,110,73,109,112,117,108,115,101,0,109,95,115,101,108, +102,67,111,108,108,105,115,105,111,110,73,109,112,117,108,115,101,70,97,99, +116,111,114,0,109,95,99,111,110,116,97,105,110,115,65,110,99,104,111,114, +0,109,95,99,111,108,108,105,100,101,0,109,95,99,108,117,115,116,101,114, +73,110,100,101,120,0,109,95,109,97,115,115,109,97,116,114,105,120,0,42, +109,95,98,111,100,121,65,0,42,109,95,98,111,100,121,66,0,109,95,114, +101,102,115,91,50,93,0,109,95,100,114,105,102,116,0,109,95,115,100,114, +105,102,116,0,109,95,99,102,109,0,109,95,101,114,112,0,109,95,115,112, +108,105,116,0,109,95,100,101,108,101,116,101,0,109,95,114,101,108,80,111, +115,105,116,105,111,110,91,50,93,0,109,95,97,120,105,115,91,50,93,0, +109,95,98,111,100,121,65,116,121,112,101,0,109,95,98,111,100,121,66,116, +121,112,101,0,109,95,106,111,105,110,116,84,121,112,101,0,42,109,95,112, +111,115,101,0,42,42,109,95,109,97,116,101,114,105,97,108,115,0,42,109, +95,110,111,100,101,115,0,42,109,95,108,105,110,107,115,0,42,109,95,102, +97,99,101,115,0,42,109,95,116,101,116,114,97,104,101,100,114,97,0,42, +109,95,97,110,99,104,111,114,115,0,42,109,95,99,108,117,115,116,101,114, +115,0,42,109,95,106,111,105,110,116,115,0,109,95,110,117,109,77,97,116, +101,114,105,97,108,115,0,109,95,110,117,109,76,105,110,107,115,0,109,95, +110,117,109,70,97,99,101,115,0,109,95,110,117,109,84,101,116,114,97,104, +101,100,114,97,0,109,95,110,117,109,65,110,99,104,111,114,115,0,109,95, +110,117,109,67,108,117,115,116,101,114,115,0,109,95,110,117,109,74,111,105, +110,116,115,0,109,95,99,111,110,102,105,103,0,0,0,0,84,89,80,69, +70,0,0,0,99,104,97,114,0,117,99,104,97,114,0,115,104,111,114,116, +0,117,115,104,111,114,116,0,105,110,116,0,108,111,110,103,0,117,108,111, +110,103,0,102,108,111,97,116,0,100,111,117,98,108,101,0,118,111,105,100, +0,80,111,105,110,116,101,114,65,114,114,97,121,0,98,116,80,104,121,115, +105,99,115,83,121,115,116,101,109,0,76,105,115,116,66,97,115,101,0,98, +116,86,101,99,116,111,114,51,70,108,111,97,116,68,97,116,97,0,98,116, +86,101,99,116,111,114,51,68,111,117,98,108,101,68,97,116,97,0,98,116, +77,97,116,114,105,120,51,120,51,70,108,111,97,116,68,97,116,97,0,98, +116,77,97,116,114,105,120,51,120,51,68,111,117,98,108,101,68,97,116,97, +0,98,116,84,114,97,110,115,102,111,114,109,70,108,111,97,116,68,97,116, +97,0,98,116,84,114,97,110,115,102,111,114,109,68,111,117,98,108,101,68, +97,116,97,0,98,116,66,118,104,83,117,98,116,114,101,101,73,110,102,111, +68,97,116,97,0,98,116,79,112,116,105,109,105,122,101,100,66,118,104,78, +111,100,101,70,108,111,97,116,68,97,116,97,0,98,116,79,112,116,105,109, +105,122,101,100,66,118,104,78,111,100,101,68,111,117,98,108,101,68,97,116, +97,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,78,111,100,101, +68,97,116,97,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,70, +108,111,97,116,68,97,116,97,0,98,116,81,117,97,110,116,105,122,101,100, +66,118,104,68,111,117,98,108,101,68,97,116,97,0,98,116,67,111,108,108, +105,115,105,111,110,83,104,97,112,101,68,97,116,97,0,98,116,83,116,97, +116,105,99,80,108,97,110,101,83,104,97,112,101,68,97,116,97,0,98,116, +67,111,110,118,101,120,73,110,116,101,114,110,97,108,83,104,97,112,101,68, +97,116,97,0,98,116,80,111,115,105,116,105,111,110,65,110,100,82,97,100, +105,117,115,0,98,116,77,117,108,116,105,83,112,104,101,114,101,83,104,97, +112,101,68,97,116,97,0,98,116,73,110,116,73,110,100,101,120,68,97,116, +97,0,98,116,83,104,111,114,116,73,110,116,73,110,100,101,120,68,97,116, +97,0,98,116,83,104,111,114,116,73,110,116,73,110,100,101,120,84,114,105, +112,108,101,116,68,97,116,97,0,98,116,77,101,115,104,80,97,114,116,68, +97,116,97,0,98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110, +116,101,114,102,97,99,101,68,97,116,97,0,98,116,84,114,105,97,110,103, +108,101,77,101,115,104,83,104,97,112,101,68,97,116,97,0,98,116,84,114, +105,97,110,103,108,101,73,110,102,111,77,97,112,68,97,116,97,0,98,116, +67,111,109,112,111,117,110,100,83,104,97,112,101,67,104,105,108,100,68,97, +116,97,0,98,116,67,111,109,112,111,117,110,100,83,104,97,112,101,68,97, +116,97,0,98,116,67,121,108,105,110,100,101,114,83,104,97,112,101,68,97, +116,97,0,98,116,67,97,112,115,117,108,101,83,104,97,112,101,68,97,116, +97,0,98,116,84,114,105,97,110,103,108,101,73,110,102,111,68,97,116,97, +0,98,116,71,73,109,112,97,99,116,77,101,115,104,83,104,97,112,101,68, +97,116,97,0,98,116,67,111,110,118,101,120,72,117,108,108,83,104,97,112, +101,68,97,116,97,0,98,116,67,111,108,108,105,115,105,111,110,79,98,106, +101,99,116,68,111,117,98,108,101,68,97,116,97,0,98,116,67,111,108,108, +105,115,105,111,110,79,98,106,101,99,116,70,108,111,97,116,68,97,116,97, +0,98,116,82,105,103,105,100,66,111,100,121,70,108,111,97,116,68,97,116, +97,0,98,116,82,105,103,105,100,66,111,100,121,68,111,117,98,108,101,68, +97,116,97,0,98,116,67,111,110,115,116,114,97,105,110,116,73,110,102,111, +49,0,98,116,84,121,112,101,100,67,111,110,115,116,114,97,105,110,116,68, +97,116,97,0,98,116,82,105,103,105,100,66,111,100,121,68,97,116,97,0, +98,116,80,111,105,110,116,50,80,111,105,110,116,67,111,110,115,116,114,97, +105,110,116,70,108,111,97,116,68,97,116,97,0,98,116,80,111,105,110,116, +50,80,111,105,110,116,67,111,110,115,116,114,97,105,110,116,68,111,117,98, +108,101,68,97,116,97,0,98,116,72,105,110,103,101,67,111,110,115,116,114, +97,105,110,116,68,111,117,98,108,101,68,97,116,97,0,98,116,72,105,110, +103,101,67,111,110,115,116,114,97,105,110,116,70,108,111,97,116,68,97,116, +97,0,98,116,67,111,110,101,84,119,105,115,116,67,111,110,115,116,114,97, +105,110,116,68,97,116,97,0,98,116,71,101,110,101,114,105,99,54,68,111, +102,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,98,116,71,101, +110,101,114,105,99,54,68,111,102,83,112,114,105,110,103,67,111,110,115,116, +114,97,105,110,116,68,97,116,97,0,98,116,83,108,105,100,101,114,67,111, +110,115,116,114,97,105,110,116,68,97,116,97,0,83,111,102,116,66,111,100, +121,77,97,116,101,114,105,97,108,68,97,116,97,0,83,111,102,116,66,111, +100,121,78,111,100,101,68,97,116,97,0,83,111,102,116,66,111,100,121,76, +105,110,107,68,97,116,97,0,83,111,102,116,66,111,100,121,70,97,99,101, +68,97,116,97,0,83,111,102,116,66,111,100,121,84,101,116,114,97,68,97, +116,97,0,83,111,102,116,82,105,103,105,100,65,110,99,104,111,114,68,97, +116,97,0,83,111,102,116,66,111,100,121,67,111,110,102,105,103,68,97,116, +97,0,83,111,102,116,66,111,100,121,80,111,115,101,68,97,116,97,0,83, +111,102,116,66,111,100,121,67,108,117,115,116,101,114,68,97,116,97,0,98, +116,83,111,102,116,66,111,100,121,74,111,105,110,116,68,97,116,97,0,98, +116,83,111,102,116,66,111,100,121,70,108,111,97,116,68,97,116,97,0,0, +84,76,69,78,1,0,1,0,2,0,2,0,4,0,4,0,4,0,4,0, +8,0,0,0,12,0,36,0,8,0,16,0,32,0,48,0,96,0,64,0, +-128,0,20,0,48,0,80,0,16,0,84,0,-124,0,12,0,52,0,52,0, +20,0,64,0,4,0,4,0,8,0,28,0,28,0,60,0,56,0,76,0, +24,0,60,0,60,0,16,0,64,0,68,0,-56,1,-8,0,-32,1,-104,3, +8,0,44,0,0,0,76,0,108,0,84,1,-44,0,-52,0,-12,0,84,1, +-60,0,16,0,100,0,20,0,36,0,100,0,92,0,104,0,-64,0,92,1, +-40,0,-92,1,83,84,82,67,59,0,0,0,10,0,3,0,4,0,0,0, 4,0,1,0,9,0,2,0,11,0,3,0,10,0,3,0,10,0,4,0, 10,0,5,0,12,0,2,0,9,0,6,0,9,0,7,0,13,0,1,0, 7,0,8,0,14,0,1,0,8,0,8,0,15,0,1,0,13,0,9,0, @@ -361,39 +377,42 @@ unsigned char sBulletDNAstr[]= { 7,0,-88,0,7,0,-87,0,7,0,-92,0,7,0,-91,0,7,0,-90,0, 7,0,-86,0,0,0,21,0,56,0,9,0,49,0,-104,0,17,0,-101,0, 17,0,-100,0,13,0,-85,0,13,0,-84,0,13,0,-83,0,13,0,-82,0, -4,0,-81,0,4,0,-80,0,57,0,9,0,49,0,-104,0,17,0,-101,0, -17,0,-100,0,7,0,-85,0,7,0,-84,0,7,0,-83,0,7,0,-82,0, -4,0,-81,0,4,0,-80,0,58,0,4,0,7,0,-79,0,7,0,-78,0, -7,0,-77,0,4,0,75,0,59,0,10,0,58,0,-76,0,13,0,-75,0, -13,0,-74,0,13,0,-73,0,13,0,-72,0,13,0,-71,0,7,0,-126,0, -7,0,-70,0,4,0,-69,0,4,0,-68,0,60,0,4,0,58,0,-76,0, -4,0,-67,0,7,0,-66,0,4,0,-65,0,61,0,4,0,13,0,-71,0, -58,0,-76,0,4,0,-64,0,7,0,-63,0,62,0,7,0,13,0,-62,0, -58,0,-76,0,4,0,-61,0,7,0,-60,0,7,0,-59,0,7,0,-58,0, -4,0,-68,0,63,0,6,0,15,0,-57,0,13,0,-59,0,13,0,-56,0, -50,0,-55,0,4,0,-54,0,7,0,-58,0,64,0,26,0,4,0,-53,0, -7,0,-52,0,7,0,-86,0,7,0,-51,0,7,0,-50,0,7,0,-49,0, -7,0,-48,0,7,0,-47,0,7,0,-46,0,7,0,-45,0,7,0,-44,0, -7,0,-43,0,7,0,-42,0,7,0,-41,0,7,0,-40,0,7,0,-39,0, -7,0,-38,0,7,0,-37,0,7,0,-36,0,7,0,-35,0,7,0,-34,0, -4,0,-33,0,4,0,-32,0,4,0,-31,0,4,0,-30,0,4,0,113,0, -65,0,12,0,15,0,-29,0,15,0,-28,0,15,0,-27,0,13,0,-26,0, -13,0,-25,0,7,0,-24,0,4,0,-23,0,4,0,-22,0,4,0,-21,0, -4,0,-20,0,7,0,-60,0,4,0,-68,0,66,0,27,0,17,0,-19,0, -15,0,-18,0,15,0,-17,0,13,0,-26,0,13,0,-16,0,13,0,-15,0, -13,0,-14,0,13,0,-13,0,13,0,-12,0,4,0,-11,0,7,0,-10,0, -4,0,-9,0,4,0,-8,0,4,0,-7,0,7,0,-6,0,7,0,-5,0, -4,0,-4,0,4,0,-3,0,7,0,-2,0,7,0,-1,0,7,0,0,1, -7,0,1,1,7,0,2,1,7,0,3,1,4,0,4,1,4,0,5,1, -4,0,6,1,67,0,18,0,45,0,119,0,65,0,7,1,58,0,8,1, -59,0,9,1,60,0,10,1,61,0,11,1,62,0,12,1,63,0,13,1, -66,0,14,1,4,0,15,1,4,0,-8,0,4,0,16,1,4,0,17,1, -4,0,18,1,4,0,19,1,4,0,20,1,4,0,-68,0,64,0,21,1, -}; +4,0,-81,0,4,0,-80,0,57,0,5,0,56,0,-79,0,4,0,-78,0, +7,0,-77,0,7,0,-76,0,7,0,-75,0,58,0,9,0,49,0,-104,0, +17,0,-101,0,17,0,-100,0,7,0,-85,0,7,0,-84,0,7,0,-83,0, +7,0,-82,0,4,0,-81,0,4,0,-80,0,59,0,4,0,7,0,-74,0, +7,0,-73,0,7,0,-72,0,4,0,75,0,60,0,10,0,59,0,-71,0, +13,0,-70,0,13,0,-69,0,13,0,-68,0,13,0,-67,0,13,0,-66,0, +7,0,-126,0,7,0,-65,0,4,0,-64,0,4,0,-63,0,61,0,4,0, +59,0,-71,0,4,0,-62,0,7,0,-61,0,4,0,-60,0,62,0,4,0, +13,0,-66,0,59,0,-71,0,4,0,-59,0,7,0,-58,0,63,0,7,0, +13,0,-57,0,59,0,-71,0,4,0,-56,0,7,0,-55,0,7,0,-54,0, +7,0,-53,0,4,0,-63,0,64,0,6,0,15,0,-52,0,13,0,-54,0, +13,0,-51,0,50,0,-50,0,4,0,-49,0,7,0,-53,0,65,0,26,0, +4,0,-48,0,7,0,-47,0,7,0,-86,0,7,0,-46,0,7,0,-45,0, +7,0,-44,0,7,0,-43,0,7,0,-42,0,7,0,-41,0,7,0,-40,0, +7,0,-39,0,7,0,-38,0,7,0,-37,0,7,0,-36,0,7,0,-35,0, +7,0,-34,0,7,0,-33,0,7,0,-32,0,7,0,-31,0,7,0,-30,0, +7,0,-29,0,4,0,-28,0,4,0,-27,0,4,0,-26,0,4,0,-25,0, +4,0,113,0,66,0,12,0,15,0,-24,0,15,0,-23,0,15,0,-22,0, +13,0,-21,0,13,0,-20,0,7,0,-19,0,4,0,-18,0,4,0,-17,0, +4,0,-16,0,4,0,-15,0,7,0,-55,0,4,0,-63,0,67,0,27,0, +17,0,-14,0,15,0,-13,0,15,0,-12,0,13,0,-21,0,13,0,-11,0, +13,0,-10,0,13,0,-9,0,13,0,-8,0,13,0,-7,0,4,0,-6,0, +7,0,-5,0,4,0,-4,0,4,0,-3,0,4,0,-2,0,7,0,-1,0, +7,0,0,1,4,0,1,1,4,0,2,1,7,0,3,1,7,0,4,1, +7,0,5,1,7,0,6,1,7,0,7,1,7,0,8,1,4,0,9,1, +4,0,10,1,4,0,11,1,68,0,16,0,15,0,12,1,9,0,13,1, +9,0,14,1,13,0,15,1,13,0,16,1,13,0,17,1,7,0,18,1, +7,0,19,1,7,0,20,1,4,0,21,1,13,0,22,1,13,0,23,1, +4,0,24,1,4,0,25,1,4,0,26,1,4,0,-63,0,69,0,19,0, +45,0,119,0,66,0,27,1,59,0,28,1,60,0,29,1,61,0,30,1, +62,0,31,1,63,0,32,1,64,0,33,1,67,0,34,1,68,0,35,1, +4,0,36,1,4,0,-3,0,4,0,37,1,4,0,38,1,4,0,39,1, +4,0,40,1,4,0,41,1,4,0,42,1,65,0,43,1,}; int sBulletDNAlen= sizeof(sBulletDNAstr); - unsigned char sBulletDNAstr64[]= { -83,68,78,65,78,65,77,69,22,1,0,0,109,95,115,105,122,101,0,109, +83,68,78,65,78,65,77,69,44,1,0,0,109,95,115,105,122,101,0,109, 95,99,97,112,97,99,105,116,121,0,42,109,95,100,97,116,97,0,109,95, 99,111,108,108,105,115,105,111,110,83,104,97,112,101,115,0,109,95,99,111, 108,108,105,115,105,111,110,79,98,106,101,99,116,115,0,109,95,99,111,110, @@ -543,150 +562,166 @@ unsigned char sBulletDNAstr64[]= { 95,97,110,103,117,108,97,114,76,111,119,101,114,76,105,109,105,116,0,109, 95,117,115,101,76,105,110,101,97,114,82,101,102,101,114,101,110,99,101,70, 114,97,109,101,65,0,109,95,117,115,101,79,102,102,115,101,116,70,111,114, -67,111,110,115,116,114,97,105,110,116,70,114,97,109,101,0,109,95,108,105, -110,101,97,114,83,116,105,102,102,110,101,115,115,0,109,95,97,110,103,117, -108,97,114,83,116,105,102,102,110,101,115,115,0,109,95,118,111,108,117,109, -101,83,116,105,102,102,110,101,115,115,0,42,109,95,109,97,116,101,114,105, -97,108,0,109,95,112,111,115,105,116,105,111,110,0,109,95,112,114,101,118, -105,111,117,115,80,111,115,105,116,105,111,110,0,109,95,118,101,108,111,99, -105,116,121,0,109,95,97,99,99,117,109,117,108,97,116,101,100,70,111,114, -99,101,0,109,95,110,111,114,109,97,108,0,109,95,97,114,101,97,0,109, -95,97,116,116,97,99,104,0,109,95,112,97,100,0,109,95,110,111,100,101, -73,110,100,105,99,101,115,91,50,93,0,109,95,114,101,115,116,76,101,110, -103,116,104,0,109,95,98,98,101,110,100,105,110,103,0,109,95,110,111,100, -101,73,110,100,105,99,101,115,91,51,93,0,109,95,114,101,115,116,65,114, -101,97,0,109,95,99,48,91,52,93,0,109,95,110,111,100,101,73,110,100, -105,99,101,115,91,52,93,0,109,95,114,101,115,116,86,111,108,117,109,101, -0,109,95,99,49,0,109,95,99,50,0,109,95,99,48,0,109,95,108,111, -99,97,108,70,114,97,109,101,0,42,109,95,114,105,103,105,100,66,111,100, -121,0,109,95,110,111,100,101,73,110,100,101,120,0,109,95,97,101,114,111, -77,111,100,101,108,0,109,95,98,97,117,109,103,97,114,116,101,0,109,95, -100,114,97,103,0,109,95,108,105,102,116,0,109,95,112,114,101,115,115,117, -114,101,0,109,95,118,111,108,117,109,101,0,109,95,100,121,110,97,109,105, -99,70,114,105,99,116,105,111,110,0,109,95,112,111,115,101,77,97,116,99, -104,0,109,95,114,105,103,105,100,67,111,110,116,97,99,116,72,97,114,100, -110,101,115,115,0,109,95,107,105,110,101,116,105,99,67,111,110,116,97,99, -116,72,97,114,100,110,101,115,115,0,109,95,115,111,102,116,67,111,110,116, -97,99,116,72,97,114,100,110,101,115,115,0,109,95,97,110,99,104,111,114, -72,97,114,100,110,101,115,115,0,109,95,115,111,102,116,82,105,103,105,100, -67,108,117,115,116,101,114,72,97,114,100,110,101,115,115,0,109,95,115,111, -102,116,75,105,110,101,116,105,99,67,108,117,115,116,101,114,72,97,114,100, -110,101,115,115,0,109,95,115,111,102,116,83,111,102,116,67,108,117,115,116, -101,114,72,97,114,100,110,101,115,115,0,109,95,115,111,102,116,82,105,103, -105,100,67,108,117,115,116,101,114,73,109,112,117,108,115,101,83,112,108,105, -116,0,109,95,115,111,102,116,75,105,110,101,116,105,99,67,108,117,115,116, -101,114,73,109,112,117,108,115,101,83,112,108,105,116,0,109,95,115,111,102, -116,83,111,102,116,67,108,117,115,116,101,114,73,109,112,117,108,115,101,83, -112,108,105,116,0,109,95,109,97,120,86,111,108,117,109,101,0,109,95,116, -105,109,101,83,99,97,108,101,0,109,95,118,101,108,111,99,105,116,121,73, -116,101,114,97,116,105,111,110,115,0,109,95,112,111,115,105,116,105,111,110, -73,116,101,114,97,116,105,111,110,115,0,109,95,100,114,105,102,116,73,116, -101,114,97,116,105,111,110,115,0,109,95,99,108,117,115,116,101,114,73,116, -101,114,97,116,105,111,110,115,0,109,95,114,111,116,0,109,95,115,99,97, -108,101,0,109,95,97,113,113,0,109,95,99,111,109,0,42,109,95,112,111, -115,105,116,105,111,110,115,0,42,109,95,119,101,105,103,104,116,115,0,109, -95,110,117,109,80,111,115,105,116,105,111,110,115,0,109,95,110,117,109,87, -101,105,103,116,115,0,109,95,98,118,111,108,117,109,101,0,109,95,98,102, -114,97,109,101,0,109,95,102,114,97,109,101,120,102,111,114,109,0,109,95, -108,111,99,105,105,0,109,95,105,110,118,119,105,0,109,95,118,105,109,112, -117,108,115,101,115,91,50,93,0,109,95,100,105,109,112,117,108,115,101,115, -91,50,93,0,109,95,108,118,0,109,95,97,118,0,42,109,95,102,114,97, -109,101,114,101,102,115,0,42,109,95,110,111,100,101,73,110,100,105,99,101, -115,0,42,109,95,109,97,115,115,101,115,0,109,95,110,117,109,70,114,97, -109,101,82,101,102,115,0,109,95,110,117,109,78,111,100,101,115,0,109,95, -110,117,109,77,97,115,115,101,115,0,109,95,105,100,109,97,115,115,0,109, -95,105,109,97,115,115,0,109,95,110,118,105,109,112,117,108,115,101,115,0, -109,95,110,100,105,109,112,117,108,115,101,115,0,109,95,110,100,97,109,112, -105,110,103,0,109,95,108,100,97,109,112,105,110,103,0,109,95,97,100,97, -109,112,105,110,103,0,109,95,109,97,116,99,104,105,110,103,0,109,95,109, -97,120,83,101,108,102,67,111,108,108,105,115,105,111,110,73,109,112,117,108, -115,101,0,109,95,115,101,108,102,67,111,108,108,105,115,105,111,110,73,109, -112,117,108,115,101,70,97,99,116,111,114,0,109,95,99,111,110,116,97,105, -110,115,65,110,99,104,111,114,0,109,95,99,111,108,108,105,100,101,0,109, -95,99,108,117,115,116,101,114,73,110,100,101,120,0,42,109,95,112,111,115, -101,0,42,42,109,95,109,97,116,101,114,105,97,108,115,0,42,109,95,110, -111,100,101,115,0,42,109,95,108,105,110,107,115,0,42,109,95,102,97,99, -101,115,0,42,109,95,116,101,116,114,97,104,101,100,114,97,0,42,109,95, -97,110,99,104,111,114,115,0,42,109,95,99,108,117,115,116,101,114,115,0, -109,95,110,117,109,77,97,116,101,114,105,97,108,115,0,109,95,110,117,109, -76,105,110,107,115,0,109,95,110,117,109,70,97,99,101,115,0,109,95,110, -117,109,84,101,116,114,97,104,101,100,114,97,0,109,95,110,117,109,65,110, -99,104,111,114,115,0,109,95,110,117,109,67,108,117,115,116,101,114,115,0, -109,95,99,111,110,102,105,103,0,0,0,0,84,89,80,69,68,0,0,0, -99,104,97,114,0,117,99,104,97,114,0,115,104,111,114,116,0,117,115,104, -111,114,116,0,105,110,116,0,108,111,110,103,0,117,108,111,110,103,0,102, -108,111,97,116,0,100,111,117,98,108,101,0,118,111,105,100,0,80,111,105, -110,116,101,114,65,114,114,97,121,0,98,116,80,104,121,115,105,99,115,83, -121,115,116,101,109,0,76,105,115,116,66,97,115,101,0,98,116,86,101,99, -116,111,114,51,70,108,111,97,116,68,97,116,97,0,98,116,86,101,99,116, -111,114,51,68,111,117,98,108,101,68,97,116,97,0,98,116,77,97,116,114, -105,120,51,120,51,70,108,111,97,116,68,97,116,97,0,98,116,77,97,116, -114,105,120,51,120,51,68,111,117,98,108,101,68,97,116,97,0,98,116,84, -114,97,110,115,102,111,114,109,70,108,111,97,116,68,97,116,97,0,98,116, -84,114,97,110,115,102,111,114,109,68,111,117,98,108,101,68,97,116,97,0, -98,116,66,118,104,83,117,98,116,114,101,101,73,110,102,111,68,97,116,97, -0,98,116,79,112,116,105,109,105,122,101,100,66,118,104,78,111,100,101,70, -108,111,97,116,68,97,116,97,0,98,116,79,112,116,105,109,105,122,101,100, -66,118,104,78,111,100,101,68,111,117,98,108,101,68,97,116,97,0,98,116, -81,117,97,110,116,105,122,101,100,66,118,104,78,111,100,101,68,97,116,97, -0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,70,108,111,97,116, -68,97,116,97,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,68, -111,117,98,108,101,68,97,116,97,0,98,116,67,111,108,108,105,115,105,111, -110,83,104,97,112,101,68,97,116,97,0,98,116,83,116,97,116,105,99,80, -108,97,110,101,83,104,97,112,101,68,97,116,97,0,98,116,67,111,110,118, -101,120,73,110,116,101,114,110,97,108,83,104,97,112,101,68,97,116,97,0, -98,116,80,111,115,105,116,105,111,110,65,110,100,82,97,100,105,117,115,0, -98,116,77,117,108,116,105,83,112,104,101,114,101,83,104,97,112,101,68,97, -116,97,0,98,116,73,110,116,73,110,100,101,120,68,97,116,97,0,98,116, -83,104,111,114,116,73,110,116,73,110,100,101,120,68,97,116,97,0,98,116, -83,104,111,114,116,73,110,116,73,110,100,101,120,84,114,105,112,108,101,116, -68,97,116,97,0,98,116,77,101,115,104,80,97,114,116,68,97,116,97,0, -98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110,116,101,114,102, -97,99,101,68,97,116,97,0,98,116,84,114,105,97,110,103,108,101,77,101, -115,104,83,104,97,112,101,68,97,116,97,0,98,116,84,114,105,97,110,103, -108,101,73,110,102,111,77,97,112,68,97,116,97,0,98,116,67,111,109,112, -111,117,110,100,83,104,97,112,101,67,104,105,108,100,68,97,116,97,0,98, -116,67,111,109,112,111,117,110,100,83,104,97,112,101,68,97,116,97,0,98, -116,67,121,108,105,110,100,101,114,83,104,97,112,101,68,97,116,97,0,98, -116,67,97,112,115,117,108,101,83,104,97,112,101,68,97,116,97,0,98,116, -84,114,105,97,110,103,108,101,73,110,102,111,68,97,116,97,0,98,116,71, -73,109,112,97,99,116,77,101,115,104,83,104,97,112,101,68,97,116,97,0, -98,116,67,111,110,118,101,120,72,117,108,108,83,104,97,112,101,68,97,116, -97,0,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,68, -111,117,98,108,101,68,97,116,97,0,98,116,67,111,108,108,105,115,105,111, -110,79,98,106,101,99,116,70,108,111,97,116,68,97,116,97,0,98,116,82, -105,103,105,100,66,111,100,121,70,108,111,97,116,68,97,116,97,0,98,116, -82,105,103,105,100,66,111,100,121,68,111,117,98,108,101,68,97,116,97,0, -98,116,67,111,110,115,116,114,97,105,110,116,73,110,102,111,49,0,98,116, -84,121,112,101,100,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0, -98,116,82,105,103,105,100,66,111,100,121,68,97,116,97,0,98,116,80,111, -105,110,116,50,80,111,105,110,116,67,111,110,115,116,114,97,105,110,116,70, -108,111,97,116,68,97,116,97,0,98,116,80,111,105,110,116,50,80,111,105, -110,116,67,111,110,115,116,114,97,105,110,116,68,111,117,98,108,101,68,97, -116,97,0,98,116,72,105,110,103,101,67,111,110,115,116,114,97,105,110,116, -68,111,117,98,108,101,68,97,116,97,0,98,116,72,105,110,103,101,67,111, -110,115,116,114,97,105,110,116,70,108,111,97,116,68,97,116,97,0,98,116, -67,111,110,101,84,119,105,115,116,67,111,110,115,116,114,97,105,110,116,68, -97,116,97,0,98,116,71,101,110,101,114,105,99,54,68,111,102,67,111,110, -115,116,114,97,105,110,116,68,97,116,97,0,98,116,83,108,105,100,101,114, -67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,83,111,102,116,66, -111,100,121,77,97,116,101,114,105,97,108,68,97,116,97,0,83,111,102,116, -66,111,100,121,78,111,100,101,68,97,116,97,0,83,111,102,116,66,111,100, -121,76,105,110,107,68,97,116,97,0,83,111,102,116,66,111,100,121,70,97, -99,101,68,97,116,97,0,83,111,102,116,66,111,100,121,84,101,116,114,97, -68,97,116,97,0,83,111,102,116,82,105,103,105,100,65,110,99,104,111,114, -68,97,116,97,0,83,111,102,116,66,111,100,121,67,111,110,102,105,103,68, -97,116,97,0,83,111,102,116,66,111,100,121,80,111,115,101,68,97,116,97, -0,83,111,102,116,66,111,100,121,67,108,117,115,116,101,114,68,97,116,97, -0,98,116,83,111,102,116,66,111,100,121,70,108,111,97,116,68,97,116,97, -0,0,0,0,84,76,69,78,1,0,1,0,2,0,2,0,4,0,4,0, -4,0,4,0,8,0,0,0,16,0,48,0,16,0,16,0,32,0,48,0, -96,0,64,0,-128,0,20,0,48,0,80,0,16,0,96,0,-112,0,16,0, -56,0,56,0,20,0,72,0,4,0,4,0,8,0,48,0,32,0,80,0, -72,0,80,0,32,0,64,0,64,0,16,0,72,0,80,0,-40,1,8,1, --16,1,-88,3,8,0,56,0,0,0,88,0,120,0,96,1,-32,0,-40,0, -0,1,-48,0,16,0,104,0,24,0,40,0,104,0,96,0,104,0,-56,0, -104,1,-48,1,83,84,82,67,57,0,0,0,10,0,3,0,4,0,0,0, +67,111,110,115,116,114,97,105,110,116,70,114,97,109,101,0,109,95,54,100, +111,102,68,97,116,97,0,109,95,115,112,114,105,110,103,69,110,97,98,108, +101,100,91,54,93,0,109,95,101,113,117,105,108,105,98,114,105,117,109,80, +111,105,110,116,91,54,93,0,109,95,115,112,114,105,110,103,83,116,105,102, +102,110,101,115,115,91,54,93,0,109,95,115,112,114,105,110,103,68,97,109, +112,105,110,103,91,54,93,0,109,95,108,105,110,101,97,114,83,116,105,102, +102,110,101,115,115,0,109,95,97,110,103,117,108,97,114,83,116,105,102,102, +110,101,115,115,0,109,95,118,111,108,117,109,101,83,116,105,102,102,110,101, +115,115,0,42,109,95,109,97,116,101,114,105,97,108,0,109,95,112,111,115, +105,116,105,111,110,0,109,95,112,114,101,118,105,111,117,115,80,111,115,105, +116,105,111,110,0,109,95,118,101,108,111,99,105,116,121,0,109,95,97,99, +99,117,109,117,108,97,116,101,100,70,111,114,99,101,0,109,95,110,111,114, +109,97,108,0,109,95,97,114,101,97,0,109,95,97,116,116,97,99,104,0, +109,95,112,97,100,0,109,95,110,111,100,101,73,110,100,105,99,101,115,91, +50,93,0,109,95,114,101,115,116,76,101,110,103,116,104,0,109,95,98,98, +101,110,100,105,110,103,0,109,95,110,111,100,101,73,110,100,105,99,101,115, +91,51,93,0,109,95,114,101,115,116,65,114,101,97,0,109,95,99,48,91, +52,93,0,109,95,110,111,100,101,73,110,100,105,99,101,115,91,52,93,0, +109,95,114,101,115,116,86,111,108,117,109,101,0,109,95,99,49,0,109,95, +99,50,0,109,95,99,48,0,109,95,108,111,99,97,108,70,114,97,109,101, +0,42,109,95,114,105,103,105,100,66,111,100,121,0,109,95,110,111,100,101, +73,110,100,101,120,0,109,95,97,101,114,111,77,111,100,101,108,0,109,95, +98,97,117,109,103,97,114,116,101,0,109,95,100,114,97,103,0,109,95,108, +105,102,116,0,109,95,112,114,101,115,115,117,114,101,0,109,95,118,111,108, +117,109,101,0,109,95,100,121,110,97,109,105,99,70,114,105,99,116,105,111, +110,0,109,95,112,111,115,101,77,97,116,99,104,0,109,95,114,105,103,105, +100,67,111,110,116,97,99,116,72,97,114,100,110,101,115,115,0,109,95,107, +105,110,101,116,105,99,67,111,110,116,97,99,116,72,97,114,100,110,101,115, +115,0,109,95,115,111,102,116,67,111,110,116,97,99,116,72,97,114,100,110, +101,115,115,0,109,95,97,110,99,104,111,114,72,97,114,100,110,101,115,115, +0,109,95,115,111,102,116,82,105,103,105,100,67,108,117,115,116,101,114,72, +97,114,100,110,101,115,115,0,109,95,115,111,102,116,75,105,110,101,116,105, +99,67,108,117,115,116,101,114,72,97,114,100,110,101,115,115,0,109,95,115, +111,102,116,83,111,102,116,67,108,117,115,116,101,114,72,97,114,100,110,101, +115,115,0,109,95,115,111,102,116,82,105,103,105,100,67,108,117,115,116,101, +114,73,109,112,117,108,115,101,83,112,108,105,116,0,109,95,115,111,102,116, +75,105,110,101,116,105,99,67,108,117,115,116,101,114,73,109,112,117,108,115, +101,83,112,108,105,116,0,109,95,115,111,102,116,83,111,102,116,67,108,117, +115,116,101,114,73,109,112,117,108,115,101,83,112,108,105,116,0,109,95,109, +97,120,86,111,108,117,109,101,0,109,95,116,105,109,101,83,99,97,108,101, +0,109,95,118,101,108,111,99,105,116,121,73,116,101,114,97,116,105,111,110, +115,0,109,95,112,111,115,105,116,105,111,110,73,116,101,114,97,116,105,111, +110,115,0,109,95,100,114,105,102,116,73,116,101,114,97,116,105,111,110,115, +0,109,95,99,108,117,115,116,101,114,73,116,101,114,97,116,105,111,110,115, +0,109,95,114,111,116,0,109,95,115,99,97,108,101,0,109,95,97,113,113, +0,109,95,99,111,109,0,42,109,95,112,111,115,105,116,105,111,110,115,0, +42,109,95,119,101,105,103,104,116,115,0,109,95,110,117,109,80,111,115,105, +116,105,111,110,115,0,109,95,110,117,109,87,101,105,103,116,115,0,109,95, +98,118,111,108,117,109,101,0,109,95,98,102,114,97,109,101,0,109,95,102, +114,97,109,101,120,102,111,114,109,0,109,95,108,111,99,105,105,0,109,95, +105,110,118,119,105,0,109,95,118,105,109,112,117,108,115,101,115,91,50,93, +0,109,95,100,105,109,112,117,108,115,101,115,91,50,93,0,109,95,108,118, +0,109,95,97,118,0,42,109,95,102,114,97,109,101,114,101,102,115,0,42, +109,95,110,111,100,101,73,110,100,105,99,101,115,0,42,109,95,109,97,115, +115,101,115,0,109,95,110,117,109,70,114,97,109,101,82,101,102,115,0,109, +95,110,117,109,78,111,100,101,115,0,109,95,110,117,109,77,97,115,115,101, +115,0,109,95,105,100,109,97,115,115,0,109,95,105,109,97,115,115,0,109, +95,110,118,105,109,112,117,108,115,101,115,0,109,95,110,100,105,109,112,117, +108,115,101,115,0,109,95,110,100,97,109,112,105,110,103,0,109,95,108,100, +97,109,112,105,110,103,0,109,95,97,100,97,109,112,105,110,103,0,109,95, +109,97,116,99,104,105,110,103,0,109,95,109,97,120,83,101,108,102,67,111, +108,108,105,115,105,111,110,73,109,112,117,108,115,101,0,109,95,115,101,108, +102,67,111,108,108,105,115,105,111,110,73,109,112,117,108,115,101,70,97,99, +116,111,114,0,109,95,99,111,110,116,97,105,110,115,65,110,99,104,111,114, +0,109,95,99,111,108,108,105,100,101,0,109,95,99,108,117,115,116,101,114, +73,110,100,101,120,0,109,95,109,97,115,115,109,97,116,114,105,120,0,42, +109,95,98,111,100,121,65,0,42,109,95,98,111,100,121,66,0,109,95,114, +101,102,115,91,50,93,0,109,95,100,114,105,102,116,0,109,95,115,100,114, +105,102,116,0,109,95,99,102,109,0,109,95,101,114,112,0,109,95,115,112, +108,105,116,0,109,95,100,101,108,101,116,101,0,109,95,114,101,108,80,111, +115,105,116,105,111,110,91,50,93,0,109,95,97,120,105,115,91,50,93,0, +109,95,98,111,100,121,65,116,121,112,101,0,109,95,98,111,100,121,66,116, +121,112,101,0,109,95,106,111,105,110,116,84,121,112,101,0,42,109,95,112, +111,115,101,0,42,42,109,95,109,97,116,101,114,105,97,108,115,0,42,109, +95,110,111,100,101,115,0,42,109,95,108,105,110,107,115,0,42,109,95,102, +97,99,101,115,0,42,109,95,116,101,116,114,97,104,101,100,114,97,0,42, +109,95,97,110,99,104,111,114,115,0,42,109,95,99,108,117,115,116,101,114, +115,0,42,109,95,106,111,105,110,116,115,0,109,95,110,117,109,77,97,116, +101,114,105,97,108,115,0,109,95,110,117,109,76,105,110,107,115,0,109,95, +110,117,109,70,97,99,101,115,0,109,95,110,117,109,84,101,116,114,97,104, +101,100,114,97,0,109,95,110,117,109,65,110,99,104,111,114,115,0,109,95, +110,117,109,67,108,117,115,116,101,114,115,0,109,95,110,117,109,74,111,105, +110,116,115,0,109,95,99,111,110,102,105,103,0,0,0,0,84,89,80,69, +70,0,0,0,99,104,97,114,0,117,99,104,97,114,0,115,104,111,114,116, +0,117,115,104,111,114,116,0,105,110,116,0,108,111,110,103,0,117,108,111, +110,103,0,102,108,111,97,116,0,100,111,117,98,108,101,0,118,111,105,100, +0,80,111,105,110,116,101,114,65,114,114,97,121,0,98,116,80,104,121,115, +105,99,115,83,121,115,116,101,109,0,76,105,115,116,66,97,115,101,0,98, +116,86,101,99,116,111,114,51,70,108,111,97,116,68,97,116,97,0,98,116, +86,101,99,116,111,114,51,68,111,117,98,108,101,68,97,116,97,0,98,116, +77,97,116,114,105,120,51,120,51,70,108,111,97,116,68,97,116,97,0,98, +116,77,97,116,114,105,120,51,120,51,68,111,117,98,108,101,68,97,116,97, +0,98,116,84,114,97,110,115,102,111,114,109,70,108,111,97,116,68,97,116, +97,0,98,116,84,114,97,110,115,102,111,114,109,68,111,117,98,108,101,68, +97,116,97,0,98,116,66,118,104,83,117,98,116,114,101,101,73,110,102,111, +68,97,116,97,0,98,116,79,112,116,105,109,105,122,101,100,66,118,104,78, +111,100,101,70,108,111,97,116,68,97,116,97,0,98,116,79,112,116,105,109, +105,122,101,100,66,118,104,78,111,100,101,68,111,117,98,108,101,68,97,116, +97,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,78,111,100,101, +68,97,116,97,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,70, +108,111,97,116,68,97,116,97,0,98,116,81,117,97,110,116,105,122,101,100, +66,118,104,68,111,117,98,108,101,68,97,116,97,0,98,116,67,111,108,108, +105,115,105,111,110,83,104,97,112,101,68,97,116,97,0,98,116,83,116,97, +116,105,99,80,108,97,110,101,83,104,97,112,101,68,97,116,97,0,98,116, +67,111,110,118,101,120,73,110,116,101,114,110,97,108,83,104,97,112,101,68, +97,116,97,0,98,116,80,111,115,105,116,105,111,110,65,110,100,82,97,100, +105,117,115,0,98,116,77,117,108,116,105,83,112,104,101,114,101,83,104,97, +112,101,68,97,116,97,0,98,116,73,110,116,73,110,100,101,120,68,97,116, +97,0,98,116,83,104,111,114,116,73,110,116,73,110,100,101,120,68,97,116, +97,0,98,116,83,104,111,114,116,73,110,116,73,110,100,101,120,84,114,105, +112,108,101,116,68,97,116,97,0,98,116,77,101,115,104,80,97,114,116,68, +97,116,97,0,98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110, +116,101,114,102,97,99,101,68,97,116,97,0,98,116,84,114,105,97,110,103, +108,101,77,101,115,104,83,104,97,112,101,68,97,116,97,0,98,116,84,114, +105,97,110,103,108,101,73,110,102,111,77,97,112,68,97,116,97,0,98,116, +67,111,109,112,111,117,110,100,83,104,97,112,101,67,104,105,108,100,68,97, +116,97,0,98,116,67,111,109,112,111,117,110,100,83,104,97,112,101,68,97, +116,97,0,98,116,67,121,108,105,110,100,101,114,83,104,97,112,101,68,97, +116,97,0,98,116,67,97,112,115,117,108,101,83,104,97,112,101,68,97,116, +97,0,98,116,84,114,105,97,110,103,108,101,73,110,102,111,68,97,116,97, +0,98,116,71,73,109,112,97,99,116,77,101,115,104,83,104,97,112,101,68, +97,116,97,0,98,116,67,111,110,118,101,120,72,117,108,108,83,104,97,112, +101,68,97,116,97,0,98,116,67,111,108,108,105,115,105,111,110,79,98,106, +101,99,116,68,111,117,98,108,101,68,97,116,97,0,98,116,67,111,108,108, +105,115,105,111,110,79,98,106,101,99,116,70,108,111,97,116,68,97,116,97, +0,98,116,82,105,103,105,100,66,111,100,121,70,108,111,97,116,68,97,116, +97,0,98,116,82,105,103,105,100,66,111,100,121,68,111,117,98,108,101,68, +97,116,97,0,98,116,67,111,110,115,116,114,97,105,110,116,73,110,102,111, +49,0,98,116,84,121,112,101,100,67,111,110,115,116,114,97,105,110,116,68, +97,116,97,0,98,116,82,105,103,105,100,66,111,100,121,68,97,116,97,0, +98,116,80,111,105,110,116,50,80,111,105,110,116,67,111,110,115,116,114,97, +105,110,116,70,108,111,97,116,68,97,116,97,0,98,116,80,111,105,110,116, +50,80,111,105,110,116,67,111,110,115,116,114,97,105,110,116,68,111,117,98, +108,101,68,97,116,97,0,98,116,72,105,110,103,101,67,111,110,115,116,114, +97,105,110,116,68,111,117,98,108,101,68,97,116,97,0,98,116,72,105,110, +103,101,67,111,110,115,116,114,97,105,110,116,70,108,111,97,116,68,97,116, +97,0,98,116,67,111,110,101,84,119,105,115,116,67,111,110,115,116,114,97, +105,110,116,68,97,116,97,0,98,116,71,101,110,101,114,105,99,54,68,111, +102,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,98,116,71,101, +110,101,114,105,99,54,68,111,102,83,112,114,105,110,103,67,111,110,115,116, +114,97,105,110,116,68,97,116,97,0,98,116,83,108,105,100,101,114,67,111, +110,115,116,114,97,105,110,116,68,97,116,97,0,83,111,102,116,66,111,100, +121,77,97,116,101,114,105,97,108,68,97,116,97,0,83,111,102,116,66,111, +100,121,78,111,100,101,68,97,116,97,0,83,111,102,116,66,111,100,121,76, +105,110,107,68,97,116,97,0,83,111,102,116,66,111,100,121,70,97,99,101, +68,97,116,97,0,83,111,102,116,66,111,100,121,84,101,116,114,97,68,97, +116,97,0,83,111,102,116,82,105,103,105,100,65,110,99,104,111,114,68,97, +116,97,0,83,111,102,116,66,111,100,121,67,111,110,102,105,103,68,97,116, +97,0,83,111,102,116,66,111,100,121,80,111,115,101,68,97,116,97,0,83, +111,102,116,66,111,100,121,67,108,117,115,116,101,114,68,97,116,97,0,98, +116,83,111,102,116,66,111,100,121,74,111,105,110,116,68,97,116,97,0,98, +116,83,111,102,116,66,111,100,121,70,108,111,97,116,68,97,116,97,0,0, +84,76,69,78,1,0,1,0,2,0,2,0,4,0,4,0,4,0,4,0, +8,0,0,0,16,0,48,0,16,0,16,0,32,0,48,0,96,0,64,0, +-128,0,20,0,48,0,80,0,16,0,96,0,-112,0,16,0,56,0,56,0, +20,0,72,0,4,0,4,0,8,0,48,0,32,0,80,0,72,0,80,0, +32,0,64,0,64,0,16,0,72,0,80,0,-40,1,8,1,-16,1,-88,3, +8,0,56,0,0,0,88,0,120,0,96,1,-32,0,-40,0,0,1,96,1, +-48,0,16,0,104,0,24,0,40,0,104,0,96,0,104,0,-56,0,104,1, +-32,0,-40,1,83,84,82,67,59,0,0,0,10,0,3,0,4,0,0,0, 4,0,1,0,9,0,2,0,11,0,3,0,10,0,3,0,10,0,4,0, 10,0,5,0,12,0,2,0,9,0,6,0,9,0,7,0,13,0,1,0, 7,0,8,0,14,0,1,0,8,0,8,0,15,0,1,0,13,0,9,0, @@ -755,33 +790,37 @@ unsigned char sBulletDNAstr64[]= { 7,0,-88,0,7,0,-87,0,7,0,-92,0,7,0,-91,0,7,0,-90,0, 7,0,-86,0,0,0,21,0,56,0,9,0,49,0,-104,0,17,0,-101,0, 17,0,-100,0,13,0,-85,0,13,0,-84,0,13,0,-83,0,13,0,-82,0, -4,0,-81,0,4,0,-80,0,57,0,9,0,49,0,-104,0,17,0,-101,0, -17,0,-100,0,7,0,-85,0,7,0,-84,0,7,0,-83,0,7,0,-82,0, -4,0,-81,0,4,0,-80,0,58,0,4,0,7,0,-79,0,7,0,-78,0, -7,0,-77,0,4,0,75,0,59,0,10,0,58,0,-76,0,13,0,-75,0, -13,0,-74,0,13,0,-73,0,13,0,-72,0,13,0,-71,0,7,0,-126,0, -7,0,-70,0,4,0,-69,0,4,0,-68,0,60,0,4,0,58,0,-76,0, -4,0,-67,0,7,0,-66,0,4,0,-65,0,61,0,4,0,13,0,-71,0, -58,0,-76,0,4,0,-64,0,7,0,-63,0,62,0,7,0,13,0,-62,0, -58,0,-76,0,4,0,-61,0,7,0,-60,0,7,0,-59,0,7,0,-58,0, -4,0,-68,0,63,0,6,0,15,0,-57,0,13,0,-59,0,13,0,-56,0, -50,0,-55,0,4,0,-54,0,7,0,-58,0,64,0,26,0,4,0,-53,0, -7,0,-52,0,7,0,-86,0,7,0,-51,0,7,0,-50,0,7,0,-49,0, -7,0,-48,0,7,0,-47,0,7,0,-46,0,7,0,-45,0,7,0,-44,0, -7,0,-43,0,7,0,-42,0,7,0,-41,0,7,0,-40,0,7,0,-39,0, -7,0,-38,0,7,0,-37,0,7,0,-36,0,7,0,-35,0,7,0,-34,0, -4,0,-33,0,4,0,-32,0,4,0,-31,0,4,0,-30,0,4,0,113,0, -65,0,12,0,15,0,-29,0,15,0,-28,0,15,0,-27,0,13,0,-26,0, -13,0,-25,0,7,0,-24,0,4,0,-23,0,4,0,-22,0,4,0,-21,0, -4,0,-20,0,7,0,-60,0,4,0,-68,0,66,0,27,0,17,0,-19,0, -15,0,-18,0,15,0,-17,0,13,0,-26,0,13,0,-16,0,13,0,-15,0, -13,0,-14,0,13,0,-13,0,13,0,-12,0,4,0,-11,0,7,0,-10,0, -4,0,-9,0,4,0,-8,0,4,0,-7,0,7,0,-6,0,7,0,-5,0, -4,0,-4,0,4,0,-3,0,7,0,-2,0,7,0,-1,0,7,0,0,1, -7,0,1,1,7,0,2,1,7,0,3,1,4,0,4,1,4,0,5,1, -4,0,6,1,67,0,18,0,45,0,119,0,65,0,7,1,58,0,8,1, -59,0,9,1,60,0,10,1,61,0,11,1,62,0,12,1,63,0,13,1, -66,0,14,1,4,0,15,1,4,0,-8,0,4,0,16,1,4,0,17,1, -4,0,18,1,4,0,19,1,4,0,20,1,4,0,-68,0,64,0,21,1, -}; +4,0,-81,0,4,0,-80,0,57,0,5,0,56,0,-79,0,4,0,-78,0, +7,0,-77,0,7,0,-76,0,7,0,-75,0,58,0,9,0,49,0,-104,0, +17,0,-101,0,17,0,-100,0,7,0,-85,0,7,0,-84,0,7,0,-83,0, +7,0,-82,0,4,0,-81,0,4,0,-80,0,59,0,4,0,7,0,-74,0, +7,0,-73,0,7,0,-72,0,4,0,75,0,60,0,10,0,59,0,-71,0, +13,0,-70,0,13,0,-69,0,13,0,-68,0,13,0,-67,0,13,0,-66,0, +7,0,-126,0,7,0,-65,0,4,0,-64,0,4,0,-63,0,61,0,4,0, +59,0,-71,0,4,0,-62,0,7,0,-61,0,4,0,-60,0,62,0,4,0, +13,0,-66,0,59,0,-71,0,4,0,-59,0,7,0,-58,0,63,0,7,0, +13,0,-57,0,59,0,-71,0,4,0,-56,0,7,0,-55,0,7,0,-54,0, +7,0,-53,0,4,0,-63,0,64,0,6,0,15,0,-52,0,13,0,-54,0, +13,0,-51,0,50,0,-50,0,4,0,-49,0,7,0,-53,0,65,0,26,0, +4,0,-48,0,7,0,-47,0,7,0,-86,0,7,0,-46,0,7,0,-45,0, +7,0,-44,0,7,0,-43,0,7,0,-42,0,7,0,-41,0,7,0,-40,0, +7,0,-39,0,7,0,-38,0,7,0,-37,0,7,0,-36,0,7,0,-35,0, +7,0,-34,0,7,0,-33,0,7,0,-32,0,7,0,-31,0,7,0,-30,0, +7,0,-29,0,4,0,-28,0,4,0,-27,0,4,0,-26,0,4,0,-25,0, +4,0,113,0,66,0,12,0,15,0,-24,0,15,0,-23,0,15,0,-22,0, +13,0,-21,0,13,0,-20,0,7,0,-19,0,4,0,-18,0,4,0,-17,0, +4,0,-16,0,4,0,-15,0,7,0,-55,0,4,0,-63,0,67,0,27,0, +17,0,-14,0,15,0,-13,0,15,0,-12,0,13,0,-21,0,13,0,-11,0, +13,0,-10,0,13,0,-9,0,13,0,-8,0,13,0,-7,0,4,0,-6,0, +7,0,-5,0,4,0,-4,0,4,0,-3,0,4,0,-2,0,7,0,-1,0, +7,0,0,1,4,0,1,1,4,0,2,1,7,0,3,1,7,0,4,1, +7,0,5,1,7,0,6,1,7,0,7,1,7,0,8,1,4,0,9,1, +4,0,10,1,4,0,11,1,68,0,16,0,15,0,12,1,9,0,13,1, +9,0,14,1,13,0,15,1,13,0,16,1,13,0,17,1,7,0,18,1, +7,0,19,1,7,0,20,1,4,0,21,1,13,0,22,1,13,0,23,1, +4,0,24,1,4,0,25,1,4,0,26,1,4,0,-63,0,69,0,19,0, +45,0,119,0,66,0,27,1,59,0,28,1,60,0,29,1,61,0,30,1, +62,0,31,1,63,0,32,1,64,0,33,1,67,0,34,1,68,0,35,1, +4,0,36,1,4,0,-3,0,4,0,37,1,4,0,38,1,4,0,39,1, +4,0,40,1,4,0,41,1,4,0,42,1,65,0,43,1,}; int sBulletDNAlen64= sizeof(sBulletDNAstr64);