- '********************************************************************************************** 
- '   FzxNGN written by justsomeguy 
- '   Physics code ported from RandyGaul's Impulse Engine 
- '   https://github.com/RandyGaul/ImpulseEngine 
- '   http://RandyGaul.net 
- '********************************************************************************************** 
- '/* 
- '    Copyright (c) 2013 Randy Gaul http://RandyGaul.net 
-   
- '    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. 
- ' 
- '    Port to QB64 by justsomeguy 
- '*/ 
- ' 
-   
- '********************************************************************************************** 
- '   Setup Types and Variables 
- '********************************************************************************************** 
-   
-   
-   
- TYPE-  tTRIANGLE  ' Not used
 
-   
-   
-     ty  AS INTEGER ' cSHAPE_CIRCLE = 1, cSHAPE_POLYGON = 2
-     radius  AS _FLOAT ' Only necessary for circle shapes
-     u  AS-  tMATRIX2d  ' Only neceassary for polygons
-     flipTexture  AS INTEGER 'flag for flipping texture depending on direction
-   
- TYPE-  tPOLY  'list of vertices for all objects in simulation
 
-   
- TYPE-  tPOLYATTRIB  'keep track of polys in monlithic list of vertices
 
-     start  AS INTEGER ' starting vertex of the polygon
-     count  AS INTEGER ' number of vertices in polygon
-   
-   
-   
-   
-     localAnchor1  AS-  tVECTOR2d 
-     localAnchor2  AS-  tVECTOR2d 
-   
-   
-     terrainPosition  AS-  tVECTOR2d 
-   
-     wheelOneOffset  AS-  tVECTOR2d 
-     wheelTwoOffset  AS-  tVECTOR2d 
-     auxOneOffset  AS-  tVECTOR2d 
-   
- CONST-  cMAXNUMOFTRIANGLES  = 100
 
- CONST-  cMAXNUMBEROFOBJECTS  = 1000 ' Max number of objects at one time
 
- CONST-  cMAXNUMBEROFPOLYGONS  = 10000 ' Max number of total vertices included in all objects
 
- CONST-  cMAXNUMBEROFJOINTS  = 100
 
- CONST-  cMAXNUMBEROFHITS  = 1000
 
- CONST-  cEPSILON_SQ  =-  cEPSILON  *-  cEPSILON 
 
- CONST-  cBIAS_RELATIVE  = 0.95
 
- CONST-  cBIAS_ABSOLUTE  = 0.01
 
- CONST-  cPENETRATION_ALLOWANCE  = 0.05
 
- CONST-  cPENETRATION_CORRECTION  = 0.4 ' misspelled in original code
 
- CONST-  cPARAMETER_POSITION  = 1
 
- CONST-  cPARAMETER_VELOCITY  = 2
 
- CONST-  cPARAMETER_FORCE  = 3
 
- CONST-  cPARAMETER_ANGULARVELOCITY  = 4
 
- CONST-  cPARAMETER_TORQUE  = 5
 
- CONST-  cPARAMETER_ORIENT  = 6
 
- CONST-  cPARAMETER_STATICFRICTION  = 7
 
- CONST-  cPARAMETER_DYNAMICFRICTION  = 8
 
- CONST-  cPARAMETER_COLOR  = 9
 
- CONST-  cPARAMETER_VISIBLE  = 10
 
- CONST-  cPARAMETER_STATIC  = 11
 
- CONST-  cPARAMETER_TEXTURE  = 12
 
- CONST-  cPARAMETER_FLIPTEXTURE  = 13
 
- CONST-  cRENDER_COLLISIONS  = 0
 
- CONST-  cPLAYER_FORCE  = 2000000
 
-   
-   
- DIM SHARED-  sNUMBEROFJOINTS  AS INTEGER- : sNUMBEROFJOINTS  = 3 ' if zero then no joints at all
 
-   
- DIM-  poly (- cMAXNUMBEROFPOLYGONS ) AS-  tPOLY 
 
- DIM-  body (- cMAXNUMBEROFOBJECTS ) AS-  tBODY 
 
- DIM-  joints (- cMAXNUMBEROFJOINTS ) AS-  tJOINT 
 
- DIM-  hits (- cMAXNUMBEROFHITS ) AS-  tHIT 
 
- DIM-  veh (- sNUMBEROFVEHICLES ) AS-  tVEHICLE 
 
-   
-   
-   
- CONST-  cSCENE_RAMP_10  = 13
 
- CONST-  cSCENE_LOOPRAMP_1  = 14
 
- CONST-  cSCENE_LOOPRAMP_2  = 15
 
- CONST-  cSCENE_LOOPSEGMENTS  = 16
 
- CONST-  cSCENE_NUMBEROFLOOPSEGMENTS  = 20
 
- CONST-  cSCENE_TERRAIN  =-  cSCENE_LOOPSEGMENTS  +-  cSCENE_NUMBEROFLOOPSEGMENTS 
 
-   
- CONST-  cLOOP_CENTER_X  = 53500
 
- CONST-  cLOOP_CENTER_Y  = 225
 
- CONST-  cLOOP_RAMPHEIGHT  = 400
 
- CONST-  cLOOP_RAMPWIDTH  = 500
 
- CONST-  cLOOP_RAMPTHICKNESS  = 200
 
-   
-   
- '********************************************************************************************** 
- _TITLE "FzxNGN" ' vowels are obsolete 
-   
- camera.zoom = .5 
- 'RANDOMIZE TIMER 
- CALL-  buildSimpleScene (- poly (),-  body (),-  joints (),-  veh ())
 
- '********************************************************************************************** 
-     LOCATE 1, 45- :  PRINT "FPS:"- ;  (- fpsLast )- ;  "  x:"- ;  INT(- body (- cSCENE_USER )- .position.x )- ;  "  y:"- ;  INT(- body (- cSCENE_USER )- .position.y )- ;  " vel:"- ;  INT(ABS(- body (- cSCENE_USER )- .velocity.x ))
 
-   
-     CALL-  animateScene (- poly (),-  body (),-  hits (),-  camera ,-  veh ())
 
-     CALL-  impulseStep (- poly (),-  body (),-  joints (),-  cDT ,-  cITERATIONS ,-  hits ())
 
-     CALL-  renderBodies (- poly (),-  body (),-  joints (),-  hits (),-  camera )
 
-   
- '********************************************************************************************** 
- '   End of Main loop 
- '********************************************************************************************** 
-   
- '********************************************************************************************** 
- '   Scene Creation and Handling Ahead 
- '********************************************************************************************** 
- SUB-  animateScene  (- p () AS-  tPOLY ,-  body () AS-  tBODY ,-  hits () AS-  tHIT ,-  camera  AS-  tCAMERA ,-  veh () AS-  tVEHICLE )
 
-     ' Keep the player's head  upright 
-   
-   
-     CALL-  setBody (- body (),-  cPARAMETER_ORIENT ,-  cSCENE_HEAD ,-  body (- cSCENE_USER )- .orient , 0)
 
-   
-     'Comment/Uncomment the next line to keep the vehicle upright (It has weird side effects) 
-     'CALL setBody(body(), cPARAMETER_ORIENT, cSCENE_USER, 0, 0) 
-   
-     'camera follows the player 
-     CALL-  vectorSet (- camera.position ,-  body (- cSCENE_USER )- .position.x  - ((_WIDTH / 2) * (1 /-  camera.zoom )),-  body (- cSCENE_USER )- .position.y  - ((_HEIGHT / 2) * (1 /-  camera.zoom )))
 
-   
-   
-         IF-  isBodyTouching (- hits (),-  cSCENE_WHEEL_1 ) OR-  isBodyTouching (- hits (),-  cSCENE_WHEEL_2 ) THEN ' makes sure your touching something when you jump
 
-             CALL-  vectorSet (- body (- cSCENE_USER )- .force , 0, -- cPLAYER_FORCE )
 
-   
-         body(cSCENE_WHEEL_1).torque = -8000000 
-         body(cSCENE_WHEEL_2).torque = -8000000 
-   
-         body(cSCENE_WHEEL_1).torque = 8000000 
-         body(cSCENE_WHEEL_2).torque = 8000000 
-   
-     body(cSCENE_WHEEL_1).angularVelocity = impulseClamp(-50, 50, body(cSCENE_WHEEL_1).angularVelocity) 
-     body(cSCENE_WHEEL_2).angularVelocity = impulseClamp(-50, 50, body(cSCENE_WHEEL_2).angularVelocity) 
-   
-   
-   
-     IF-  body (- cSCENE_USER )- .position.x  >-  world.plusLimit.x  OR-  body (- cSCENE_USER )- .position.x  <-  world.minusLimit.x  THEN
 
-         CALL-  setBody (- body (),-  cPARAMETER_VELOCITY ,-  cSCENE_USER , 0, 0)
 
-         CALL-  setBody (- body (),-  cPARAMETER_ANGULARVELOCITY ,-  cSCENE_USER , 0, 0)
 
-         CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_USER ,-  world.spawn.x ,-  world.spawn.y )
 
-         CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_WHEEL_1 ,-  body (- cSCENE_USER )- .position.x  + 55,-  body (- cSCENE_USER )- .position.y  + 65)
 
-         CALL-  setBody (- body (),-  cPARAMETER_VELOCITY ,-  cSCENE_WHEEL_1 , 0, 0)
 
-         CALL-  setBody (- body (),-  cPARAMETER_ANGULARVELOCITY ,-  cSCENE_WHEEL_1 , 0, 0)
 
-         CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_WHEEL_2 ,-  body (- cSCENE_USER )- .position.x  - 55,-  body (- cSCENE_USER )- .position.y  + 65)
 
-         CALL-  setBody (- body (),-  cPARAMETER_VELOCITY ,-  cSCENE_WHEEL_2 , 0, 0)
 
-         CALL-  setBody (- body (),-  cPARAMETER_ANGULARVELOCITY ,-  cSCENE_WHEEL_2 , 0, 0)
 
-         CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_HEAD ,-  body (- cSCENE_USER )- .position.x  - 15,-  body (- cSCENE_USER )- .position.y  - 65)
 
-         CALL-  setBody (- body (),-  cPARAMETER_VELOCITY ,-  cSCENE_HEAD , 0, 0)
 
-         CALL-  setBody (- body (),-  cPARAMETER_ANGULARVELOCITY ,-  cSCENE_HEAD , 0, 0)
 
-   
-   
-     IF-  body (- cSCENE_USER )- .position.y  >-  world.plusLimit.y  THEN
 
-         CALL-  setBody (- body (),-  cPARAMETER_VELOCITY ,-  cSCENE_USER , 0, 0)
 
-         CALL-  setBody (- body (),-  cPARAMETER_ANGULARVELOCITY ,-  cSCENE_USER , 0, 0)
 
-         CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_USER ,-  world.spawn.x ,-  world.spawn.y )
 
-         CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_WHEEL_1 ,-  body (- cSCENE_USER )- .position.x  + 55,-  body (- cSCENE_USER )- .position.y  + 65)
 
-         CALL-  setBody (- body (),-  cPARAMETER_VELOCITY ,-  cSCENE_WHEEL_1 , 0, 0)
 
-         CALL-  setBody (- body (),-  cPARAMETER_ANGULARVELOCITY ,-  cSCENE_WHEEL_1 , 0, 0)
 
-         CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_WHEEL_2 ,-  body (- cSCENE_USER )- .position.x  - 55,-  body (- cSCENE_USER )- .position.y  + 65)
 
-         CALL-  setBody (- body (),-  cPARAMETER_VELOCITY ,-  cSCENE_WHEEL_2 , 0, 0)
 
-         CALL-  setBody (- body (),-  cPARAMETER_ANGULARVELOCITY ,-  cSCENE_WHEEL_2 , 0, 0)
 
-         CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_HEAD ,-  body (- cSCENE_USER )- .position.x  - 15,-  body (- cSCENE_USER )- .position.y  - 65)
 
-         CALL-  setBody (- body (),-  cPARAMETER_VELOCITY ,-  cSCENE_HEAD , 0, 0)
 
-         CALL-  setBody (- body (),-  cPARAMETER_ANGULARVELOCITY ,-  cSCENE_HEAD , 0, 0)
 
-   
-     'Disable collisions on second ramp so you can get out 
-     IF-  body (- cSCENE_USER )- .position.x  >-  cLOOP_CENTER_X  +-  cLOOP_RAMPWIDTH  + 100 THEN
 
-         IF-  body (- cSCENE_USER )- .position.y  <-  cLOOP_CENTER_Y  - 1000 THEN
 
-             CALL-  disableCollisions (- p (),-  body (),-  cSCENE_LOOPRAMP_2 )
 
-   
-     'Renable for the next pass through 
-     IF-  body (- cSCENE_USER )- .position.x  >-  cLOOP_CENTER_X  +-  cLOOP_RAMPWIDTH  + 1000 THEN
 
-         CALL-  EnableCollisions (- p (),-  body (),-  cSCENE_LOOPRAMP_2 )
 
-         CALL-  vectorSet (- p (- body (- cSCENE_LOOPRAMP_2 )- .pa.start  + 0)- .norm , 0, 0)
 
-   
-   
- SUB-  buildSimpleScene  (- p () AS-  tPOLY ,-  body () AS-  tBODY ,-  j () AS-  tJOINT ,-  v () AS-  tVEHICLE )
 
-     CALL-  generateBitmap (- bm ()) ' auto generated bitmaps can be substituted for whatever images you have
 
-   
-     '******************************************************** 
-     '   Setup World 
-     '******************************************************** 
-   
-     CALL-  vectorSet (- world.minusLimit , -6500, -2000)
 
-     CALL-  vectorSet (- world.plusLimit , 60000, 10000)
 
-     CALL-  vectorSet (- world.spawn , -5000, -800)
 
-     CALL-  vectorSet (- world.gravity , 0.0, 100.0)
 
-     CALL-  vectorSet (- world.terrainPosition , -7000.0, 1000.0)
 
-     DIM-  o  AS-  tVECTOR2d:  CALL-  vectorMultiplyScalarND (- o ,-  world.gravity ,-  cDT )- : sRESTING  =-  vectorLengthSq (- o ) +-  cEPSILON 
 
-   
-     '******************************************************** 
-     '   Build Vehicle 
-     '******************************************************** 
-   
-     ' Build Body 
-     CALL-  createBoxBodies (- p (),-  body (),-  cSCENE_USER , 80, 30)
 
-     CALL-  polygonComputeMass (- body (),-  p (),-  cSCENE_USER , .1) 'lower the mass of the body by 90%
 
-     CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_USER ,-  world.spawn.x ,-  world.spawn.y )
 
-     CALL-  setBody (- body (),-  cPARAMETER_VELOCITY ,-  cSCENE_USER , 0, 0)
 
-     CALL-  setBody (- body (),-  cPARAMETER_TEXTURE ,-  cSCENE_USER ,-  bm (0), 0)
 
-     body(cSCENE_USER).shape.scaleTextureX = 1.5 
-     body(cSCENE_USER).shape.scaleTextureY = 2 
-     body(cSCENE_USER).shape.offsetTextureY = 10 
-   
-     'Build Wheel 1 
-     CALL-  createCircleBody (- body (),-  cSCENE_WHEEL_1 , 35)
 
-     CALL-  setBody (- body (),-  cPARAMETER_TEXTURE ,-  cSCENE_WHEEL_1 ,-  bm (1), 0)
 
-     CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_WHEEL_1 ,-  body (- cSCENE_USER )- .position.x  + 75,-  body (- cSCENE_USER )- .position.y  + 65)
 
-     body(cSCENE_WHEEL_1).staticFriction = 0.9 
-     body(cSCENE_WHEEL_1).dynamicFriction = 0.6 
-   
-     'Build Wheel 2 
-     CALL-  createCircleBody (- body (),-  cSCENE_WHEEL_2 , 35)
 
-     CALL-  setBody (- body (),-  cPARAMETER_TEXTURE ,-  cSCENE_WHEEL_2 ,-  bm (1), 0)
 
-     CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_WHEEL_2 ,-  body (- cSCENE_USER )- .position.x  - 75,-  body (- cSCENE_USER )- .position.y  + 65)
 
-     body(cSCENE_WHEEL_2).staticFriction = 0.9 
-     body(cSCENE_WHEEL_2).dynamicFriction = 0.6 
-   
-     'Attach Wheel1 to Body 
-     CALL-  jointSet (- j (1),-  body (),-  cSCENE_USER ,-  cSCENE_WHEEL_1 ,-  body (- cSCENE_WHEEL_1 )- .position.x ,-  body (- cSCENE_WHEEL_1 )- .position.y )
 
-     j(1).softness = 0.001 
-     j(1).biasFactor = 500 
-   
-     'Attach Wheel2 to Body 
-     CALL-  jointSet (- j (2),-  body (),-  cSCENE_USER ,-  cSCENE_WHEEL_2 ,-  body (- cSCENE_WHEEL_2 )- .position.x ,-  body (- cSCENE_WHEEL_2 )- .position.y )
 
-     j(2).softness = 0.001 
-     j(2).biasFactor = 500 
-   
-     'Build and attach Drivers Head 
-     CALL-  createCircleBody (- body (),-  cSCENE_HEAD , 25)
 
-     CALL-  setBody (- body (),-  cPARAMETER_TEXTURE ,-  cSCENE_HEAD ,-  bm (2), 0)
 
-     CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_HEAD ,-  body (- cSCENE_USER )- .position.x  - 15,-  body (- cSCENE_USER )- .position.y  - 65)
 
-     CALL-  jointSet (- j (3),-  body (),-  cSCENE_USER ,-  cSCENE_HEAD ,-  body (- cSCENE_HEAD )- .position.x ,-  body (- cSCENE_HEAD )- .position.y )
 
-     j(3).softness = 0.01 
-     j(3).biasFactor = 300 
-   
-     '******************************************************** 
-     '   Build Level 
-     '******************************************************** 
-     '   Put Out Ramps for some sweet Jumps 
-     '******************************************************** 
-   
-         CALL-  createTrapBody (- p (),-  body (),-  cSCENE_RAMP_1  +-  i , 1000, 200, 350, 0)
 
-         CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_RAMP_1  +-  i ,-  i  * 5000, 500)
 
-         CALL-  setBody (- body (),-  cPARAMETER_TEXTURE ,-  cSCENE_RAMP_1  +-  i ,-  bm (4), 0)
 
-         CALL-  bodySetStatic (- body (- cSCENE_RAMP_1  +-  i ))
 
-   
-     CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_RAMP_1  + 0, 0 * 5000, 550)
 
-     CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_RAMP_1  + 1, 1 * 5000, 400)
 
-     CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_RAMP_1  + 2, 2 * 5000, 400)
 
-     CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_RAMP_1  + 3, 3 * 5000, 350)
 
-     CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_RAMP_1  + 4, 4 * 5000, 350)
 
-     CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_RAMP_1  + 5, 5 * 5000, 350)
 
-     CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_RAMP_1  + 6, 6 * 5000, 450)
 
-     CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_RAMP_1  + 7, 7 * 5000, 450)
 
-     CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_RAMP_1  + 8, 8 * 5000, 450)
 
-     CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_RAMP_1  + 9, 9 * 5000, 450)
 
-   
-     '******************************************************** 
-     '   Build loop 
-     '******************************************************** 
-   
-     'Ramp 1 
-     CALL-  createTrapBody (- p (),-  body (),-  cSCENE_LOOPRAMP_1 ,-  cLOOP_RAMPWIDTH ,-  cLOOP_RAMPTHICKNESS , 0,-  cLOOP_RAMPHEIGHT )
 
-     CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_LOOPRAMP_1 ,-  cLOOP_CENTER_X ,-  cLOOP_CENTER_Y )
 
-     CALL-  setBody (- body (),-  cPARAMETER_TEXTURE ,-  cSCENE_LOOPRAMP_1 ,-  bm (4), 0)
 
-     CALL-  bodySetStatic (- body (- cSCENE_LOOPRAMP_1 ))
 
-     'kill collision on the side 
-     CALL-  vectorSet (- p (- body (- cSCENE_LOOPRAMP_1 )- .pa.start  + 2)- .norm , 0, 0)
 
-   
-     'Ramp 2 
-     CALL-  createTrapBody (- p (),-  body (),-  cSCENE_LOOPRAMP_2 ,-  cLOOP_RAMPWIDTH ,-  cLOOP_RAMPTHICKNESS ,-  cLOOP_RAMPHEIGHT , 0)
 
-     CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_LOOPRAMP_2 ,-  cLOOP_CENTER_X  +-  cLOOP_RAMPWIDTH ,-  cLOOP_CENTER_Y )
 
-     CALL-  setBody (- body (),-  cPARAMETER_TEXTURE ,-  cSCENE_LOOPRAMP_2 ,-  bm (4), 0)
 
-     CALL-  bodySetStatic (- body (- cSCENE_LOOPRAMP_2 ))
 
-     'kill collision on the side 
-     CALL-  vectorSet (- p (- body (- cSCENE_LOOPRAMP_2 )- .pa.start  + 0)- .norm , 0, 0)
 
-   
-     'cSCENE_LOOPSEGMENTS + cSCENE_NUMBEROFLOOPSEGMENTS 
-     FOR-  i  = 0 TO-  cSCENE_NUMBEROFLOOPSEGMENTS  - 1
 
-         CALL-  createBoxBodies (- p (),-  body (),-  cSCENE_LOOPSEGMENTS  +-  i , 25, 110)
 
-         CALL-  setBody (- body (),-  cPARAMETER_TEXTURE ,-  cSCENE_LOOPSEGMENTS  +-  i ,-  bm (4), 0)
 
-     rotOff = 10.5 
-     theta = (cPI / (cSCENE_NUMBEROFLOOPSEGMENTS / 2) * .75) 
-     FOR-  i  = 0 TO-  cSCENE_NUMBEROFLOOPSEGMENTS  - 1
 
-         xp  =-  cLOOP_CENTER_X  --  cLOOP_RADIUS  * COS((- i  +-  rotOff ) *-  theta ) + 250
-         yp  =-  cLOOP_CENTER_Y  +-  cLOOP_RADIUS  * SIN((- i  +-  rotOff ) *-  theta ) - 1075
-         CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_LOOPSEGMENTS  +-  i ,-  xp ,-  yp )
 
-         CALL-  setBody (- body (),-  cPARAMETER_ORIENT ,-  cSCENE_LOOPSEGMENTS  +-  i , -(- i  +-  rotOff ) *-  theta , 0)
 
-         CALL-  bodySetStatic (- body (- cSCENE_LOOPSEGMENTS  +-  i ))
 
-     '******************************************************** 
-     '   Build Ground 
-     '******************************************************** 
-   
-     DIM-  numberOfTerrainSegments  AS INTEGER- : numberOfTerrainSegments  =-  sNUMBEROFBODIES  --  cSCENE_TERRAIN 
 
-   
-     terrainSliceWidth = 1500 
-     terrainNominalHeight = 500 
-   
-     CALL-  createTerrianBody (- p (),-  body (),-  cSCENE_TERRAIN ,-  numberOfTerrainSegments ,-  terrainSliceWidth ,-  terrainNominalHeight )
 
-   
-     FOR-  i  = 0 TO-  numberOfTerrainSegments  - 1
 
-         p1 = (terrainSliceWidth / 2) - p(body(cSCENE_TERRAIN + i).pa.start).vert.x 
-         p2 = terrainNominalHeight - p(body(cSCENE_TERRAIN + i).pa.start + 1).vert.y 
-         CALL-  setBody (- body (),-  cPARAMETER_POSITION ,-  cSCENE_TERRAIN  +-  i ,-  world.terrainPosition.x  +-  p1  + (- terrainSliceWidth  *-  i ),-  world.terrainPosition.y  +-  p2 )
 
-         CALL-  setBody (- body (),-  cPARAMETER_TEXTURE ,-  cSCENE_TERRAIN  +-  i ,-  bm (3), 0)
 
-   
-   
- '********************************************************************************************** 
- '   Collision Helper Tools 
- '********************************************************************************************** 
-   
-   
-     FOR-  i  = 0 TO-  body (- index )- .pa.count 
 
-         CALL-  vectorSet (- p (- body (- index )- .pa.start  +-  i )- .norm , 0, 0)
 
-   
-     FOR-  i  = 0 TO-  body (- index )- .pa.count 
 
-         CALL-  vectorSubVectorND (- face ,-  p (- body (- index )- .pa.start  +-  arrayNextIndex (- i ,-  body (- index )- .pa.count ))- .vert ,-  p (- body (- index )- .pa.start  +-  i )- .vert )
 
-         CALL-  vectorSet (- p (- body (- index )- .pa.start  +-  i )- .norm ,-  face.y , -- face.x )
 
-         CALL-  vectorNormalize (- p (- body (- index )- .pa.start  +-  i )- .norm )
 
-   
-     isBodyTouchingBody = 0 
-     DO WHILE-  hits (- hitcount )- .A  <>-  hits (- hitcount )- .B 
 
-         IF-  hits (- hitcount )- .A  =-  A  AND-  hits (- hitcount )- .B  =-  B  THEN
 
-             isBodyTouchingBody = hitcount 
-   
-     isBodyTouchingStatic = 0 
-     DO WHILE-  hits (- hitcount )- .A  <>-  hits (- hitcount )- .B 
 
-             IF-  body (- hits (- hitcount )- .B )- .mass  = 0 THEN
 
-                 isBodyTouchingStatic = hitcount 
-                 IF-  body (- hits (- hitcount )- .A )- .mass  = 0 THEN
 
-                     isBodyTouchingStatic = hitcount 
-   
-     isBodyTouching = 0 
-     DO WHILE-  hits (- hitcount )- .A  <>-  hits (- hitcount )- .B 
 
-         IF-  hits (- hitcount )- .A  =-  A  OR-  hits (- hitcount )- .B  =-  A  THEN
 
-             isBodyTouching = hitcount 
-   
-     highestCollisionVelocity = 0 
-     DO WHILE-  hits (- hitcount )- .A  <>-  hits (- hitcount )- .B 
 
-         IF-  hits (- hitcount )- .A  =-  A  AND ABS(- hits (- hitcount )- .cv ) >-  hiCv  AND-  hits (- hitcount )- .cv  < 0 THEN
 
-             hiCv  = ABS(- hits (- hitcount )- .cv )
-     highestCollisionVelocity = hiCv 
-   
-   
- '********************************************************************************************** 
- '   Physics and Collision Stuff Ahead 
- '********************************************************************************************** 
-   
-     dts = dt * .5 
-     CALL-  vectorAddVectorScalar (- b.velocity ,-  b.force ,-  b.invMass  *-  dts )
 
-     CALL-  vectorAddVectorScalar (- b.velocity ,-  world.gravity ,-  dts )
 
-     b.angularVelocity = b.angularVelocity + (b.torque * b.invInertia * dts) 
-   
-     CALL-  vectorAddVectorScalar (- body.position ,-  body.velocity ,-  dt )
 
-     body.orient = body.orient + (body.angularVelocity * dt) 
-     CALL-  matrixSetRadians (- body.shape.u ,-  body.orient )
 
-     CALL-  impulseIntegrateForces (- body ,-  dt )
 
-   
-     DIM-  c (- cMAXNUMBEROFOBJECTS ) AS-  tVECTOR2d 
 
-     DIM-  manifolds (- sNUMBEROFBODIES  *-  sNUMBEROFBODIES ) AS-  tMANIFOLD 
 
-     DIM-  collisions (- sNUMBEROFBODIES  *-  sNUMBEROFBODIES ,-  cMAXNUMBEROFOBJECTS ) AS-  tVECTOR2d 
 
-     '    // Generate new collision info 
-     ' // erase hitlist 
-         hits(hitCount) = dHit 
-         hitCount = hitCount + 1 
-     LOOP UNTIL-  hits (- hitCount )- .A  =-  hits (- hitCount )- .B 
 
-     hitCount = 0 
-   
-     ' TODO: Implement hidden object logic 
-     FOR-  i  = 0 TO-  sNUMBEROFBODIES  ' number of bodies
 
-         A = body(i) 
-         FOR-  j  =-  i  + 1 TO-  sNUMBEROFBODIES 
 
-             B = body(j) 
-             'Mainfold solve - handle collisions 
-             IF-  A.shape.ty  =-  cSHAPE_CIRCLE  AND-  B.shape.ty  =-  cSHAPE_CIRCLE  THEN
 
-                 CALL-  collisionCCHandle (- m ,-  c (),-  A ,-  B )
 
-                 IF-  A.shape.ty  =-  cSHAPE_POLYGON  AND-  B.shape.ty  =-  cSHAPE_POLYGON  THEN
 
-                     CALL-  collisionPPHandle (- p (),-  body (),-  m ,-  c (),-  i ,-  j )
 
-                     IF-  A.shape.ty  =-  cSHAPE_CIRCLE  AND-  B.shape.ty  =-  cSHAPE_POLYGON  THEN
 
-                         CALL-  collisionCPHandle (- p (),-  body (),-  m ,-  c (),-  i ,-  j )
 
-                         IF-  B.shape.ty  =-  cSHAPE_CIRCLE  AND-  A.shape.ty  =-  cSHAPE_POLYGON  THEN
 
-                             CALL-  collisionPCHandle (- p (),-  body (),-  m ,-  c (),-  i ,-  j )
 
-                 m.A = i 'identify the index of objects 
-                 m.B = j 
-                 manifolds(manifoldCount) = m 
-                 FOR-  k  = 0 TO-  m.contactCount 
 
-                     hits(hitCount).A = i 
-                     hits(hitCount).B = j 
-                     hits(hitCount).position = c(k) 
-                     collisions(manifoldCount, k) = c(k) 
-                     hitCount = hitCount + 1 
-                 manifoldCount = manifoldCount + 1 
-   
-     '   // Integrate forces 
-     FOR-  i  = 0 TO-  sNUMBEROFBODIES 
 
-         CALL-  impulseIntegrateForces (- body (- i ),-  dt )
 
-     '   // Initialize collision 
-     FOR-  i  = 0 TO-  manifoldCount  - 1
 
-         ' this is the stupidest thing ever since QB will not let you split arrays 
-         FOR-  k  = 0 TO-  manifolds (- i )- .contactCount  - 1
 
-             c(k) = collisions(i, k) 
-         CALL-  manifoldInit (- manifolds (- i ),-  body (),-  c ())
 
-     ' joint pre Steps 
-   
-     FOR-  i  = 1 TO-  sNUMBEROFJOINTS 
 
-         CALL-  jointPrestep (- j (- i ),-  body (),-  dt )
 
-   
-     '// Solve collisions 
-     FOR-  j  = 0 TO-  iterations  - 1
 
-         FOR-  i  = 0 TO-  manifoldCount  - 1
 
-             FOR-  k  = 0 TO-  manifolds (- i )- .contactCount  - 1
 
-                 c(k) = collisions(i, k) 
-             CALL-  manifoldApplyImpulse (- manifolds (- i ),-  body (),-  c ())
 
-             'store the hit speed for later 
-             FOR-  k  = 0 TO-  hitCount  - 1
 
-                 IF-  manifolds (- i )- .A  =-  hits (- k )- .A  AND-  manifolds (- i )- .B  =-  hits (- k )- .B  THEN
 
-                     hits(k).cv = manifolds(i).cv 
-         FOR-  i  = 1 TO-  sNUMBEROFJOINTS 
 
-             CALL-  jointApplyImpulse (- j (- i ),-  body ())
 
-   
-     '// Integrate velocities 
-     FOR-  i  = 0 TO-  sNUMBEROFBODIES 
 
-         CALL-  impulseIntegrateVelocity (- body (- i ),-  dt )
 
-     '// Correct positions 
-     FOR-  i  = 0 TO-  manifoldCount  - 1
 
-         CALL-  manifoldPositionalCorrection (- manifolds (- i ),-  body ())
 
-     '// Clear all forces 
-     FOR-  i  = 0 TO-  sNUMBEROFBODIES 
 
-         CALL-  vectorSet (- body (- i )- .force , 0, 0)
 
-         body(i).torque = 0 
-   
- SUB-  bodyApplyImpulse  (- body  AS-  tBODY ,-  impulse  AS-  tVECTOR2d ,-  contactVector  AS-  tVECTOR2d )
 
-     CALL-  vectorAddVectorScalar (- body.velocity ,-  impulse ,-  body.invMass )
 
-     body.angularVelocity = body.angularVelocity + body.invInertia * vectorCross(contactVector, impulse) 
-   
- SUB-  bodySetStatic  (- body  AS-  tBODY )
 
-     body.inertia = 0.0 
-     body.invInertia = 0.0 
-     body.mass = 0.0 
-     body.invMass = 0.0 
-   
- SUB-  manifoldInit  (- m  AS-  tMANIFOLD ,-  body () AS-  tBODY ,-  contacts () AS-  tVECTOR2d )
 
-     m.e = scalarMin(body(m.A).restitution, body(m.B).restitution) 
-     m.sf  = SQR(- body (- m.A )- .staticFriction  *-  body (- m.A )- .staticFriction )
-     m.df  = SQR(- body (- m.A )- .dynamicFriction  *-  body (- m.A )- .dynamicFriction )
-     FOR-  i  = 0 TO-  m.contactCount  - 1
 
-         CALL-  vectorSubVectorND (- contacts (- i ),-  body (- m.A )- .position ,-  ra )
 
-         CALL-  vectorSubVectorND (- contacts (- i ),-  body (- m.B )- .position ,-  rb )
 
-   
-         CALL-  vectorCrossScalar (- tv1 ,-  rb ,-  body (- m.B )- .angularVelocity )
 
-         CALL-  vectorCrossScalar (- tv2 ,-  ra ,-  body (- m.A )- .angularVelocity )
 
-         CALL-  vectorAddVector (- tv1 ,-  body (- m.B )- .velocity )
 
-         CALL-  vectorSubVectorND (- tv2 ,-  body (- m.A )- .velocity ,-  tv2 )
 
-         CALL-  vectorSubVectorND (- rv ,-  tv1 ,-  tv2 )
 
-   
-         IF-  vectorLengthSq (- rv ) <-  sRESTING  THEN
 
-             m.e = 0.0 
-   
- SUB-  manifoldApplyImpulse  (- m  AS-  tMANIFOLD ,-  body () AS-  tBODY ,-  contacts () AS-  tVECTOR2d )
 
-   
-   
-     DIM-  tangentImpulse  AS-  tVECTOR2d 
 
-   
-     IF-  impulseEqual (- body (- m.A )- .invMass  +-  body (- m.B )- .invMass , 0.0) THEN
 
-         CALL-  manifoldInfiniteMassCorrection (- body (- m.A ),-  body (- m.B ))
 
-   
-     FOR-  i  = 0 TO-  m.contactCount  - 1
 
-         '// Calculate radii from COM to contact 
-         '// Vec2 ra = contacts[i] - A->position; 
-         '// Vec2 rb = contacts[i] - B->position; 
-         CALL-  vectorSubVectorND (- ra ,-  contacts (- i ),-  body (- m.A )- .position )
 
-         CALL-  vectorSubVectorND (- rb ,-  contacts (- i ),-  body (- m.B )- .position )
 
-   
-         '// Relative velocity 
-         '// Vec2 rv = B->velocity + Cross( B->angularVelocity, rb ) - A->velocity - Cross( A->angularVelocity, ra ); 
-         CALL-  vectorCrossScalar (- tv1 ,-  rb ,-  body (- m.B )- .angularVelocity )
 
-         CALL-  vectorCrossScalar (- tv2 ,-  ra ,-  body (- m.A )- .angularVelocity )
 
-         CALL-  vectorAddVectorND (- rv ,-  tv1 ,-  body (- m.B )- .velocity )
 
-         CALL-  vectorSubVector (- rv ,-  body (- m.A )- .velocity )
 
-         CALL-  vectorSubVector (- rv ,-  tv2 )
 
-   
-         '// Relative velocity along the normal 
-         '// real contactVel = Dot( rv, normal ); 
-         contactVel = vectorDot(rv, m.normal) 
-   
-         '// Do not resolve if velocities are separating 
-         m.cv = contactVel 
-         '// real raCrossN = Cross( ra, normal ); 
-         '// real rbCrossN = Cross( rb, normal ); 
-         '// real invMassSum = A->im + B->im + Sqr( raCrossN ) * A->iI + Sqr( rbCrossN ) * B->iI; 
-         raCrossN = vectorCross(ra, m.normal) 
-         rbCrossN = vectorCross(rb, m.normal) 
-         invMassSum = body(m.A).invMass + body(m.B).invMass + (raCrossN * raCrossN) * body(m.A).invInertia + (rbCrossN * rbCrossN) * body(m.B).invInertia 
-   
-         '// Calculate impulse scalar 
-         j = -(1.0 + m.e) * contactVel 
-         j = j / invMassSum 
-         j = j / m.contactCount 
-   
-         '// Apply impulse 
-         CALL-  vectorMultiplyScalarND (- impulse ,-  m.normal ,-  j )
 
-   
-         CALL-  vectorNegND (- tv1 ,-  impulse )
 
-         CALL-  bodyApplyImpulse (- body (- m.A ),-  tv1 ,-  ra )
 
-         CALL-  bodyApplyImpulse (- body (- m.B ),-  impulse ,-  rb )
 
-   
-         '// Friction impulse 
-         '// rv = B->velocity + Cross( B->angularVelocity, rb ) - A->velocity - Cross( A->angularVelocity, ra ); 
-         CALL-  vectorCrossScalar (- tv1 ,-  rb ,-  body (- m.B )- .angularVelocity )
 
-         CALL-  vectorCrossScalar (- tv2 ,-  ra ,-  body (- m.A )- .angularVelocity )
 
-         CALL-  vectorAddVectorND (- rv ,-  tv1 ,-  body (- m.B )- .velocity )
 
-         CALL-  vectorSubVector (- rv ,-  body (- m.A )- .velocity )
 
-         CALL-  vectorSubVector (- rv ,-  tv2 )
 
-   
-         '// Vec2 t = rv - (normal * Dot( rv, normal )); 
-         '// t.Normalize( ); 
-         CALL-  vectorMultiplyScalarND (- t ,-  m.normal ,-  vectorDot (- rv ,-  m.normal ))
 
-         CALL-  vectorSubVectorND (- t ,-  rv ,-  t )
 
-   
-         '// j tangent magnitude 
-         jt = -vectorDot(rv, t) 
-         jt = jt / invMassSum 
-         jt = jt / m.contactCount 
-   
-         '// Don't apply tiny friction impulses 
-   
-         '// Coulumb's law 
-             CALL-  vectorMultiplyScalarND (- tangentImpulse ,-  t ,-  jt )
 
-             CALL-  vectorMultiplyScalarND (- tangentImpulse ,-  t , -- j  *-  m.df )
 
-   
-         '// Apply friction impulse 
-         '// A->ApplyImpulse( -tangentImpulse, ra ); 
-         '// B->ApplyImpulse( tangentImpulse, rb ); 
-         CALL-  vectorNegND (- tv1 ,-  tangentImpulse )
 
-         CALL-  bodyApplyImpulse (- body (- m.A ),-  tv1 ,-  ra )
 
-         CALL-  bodyApplyImpulse (- body (- m.B ),-  tangentImpulse ,-  rb )
 
-   
- SUB-  manifoldPositionalCorrection  (- m  AS-  tMANIFOLD ,-  body () AS-  tBODY )
 
-     correction = scalarMax(m.penetration - cPENETRATION_ALLOWANCE, 0.0) / (body(m.A).invMass + body(m.B).invMass) * cPENETRATION_CORRECTION 
-     CALL-  vectorAddVectorScalar (- body (- m.A )- .position ,-  m.normal , -- body (- m.A )- .invMass  *-  correction )
 
-     CALL-  vectorAddVectorScalar (- body (- m.B )- .position ,-  m.normal ,-  body (- m.B )- .invMass  *-  correction )
 
-   
- SUB-  manifoldInfiniteMassCorrection  (- A  AS-  tBODY ,-  B  AS-  tBODY )
 
-     CALL-  vectorSet (- A.velocity , 0, 0)
 
-     CALL-  vectorSet (- B.velocity , 0, 0)
 
-   
- '********************************************************************************************** 
- '   Collision Stuff Ahead 
- '********************************************************************************************** 
-   
- SUB-  collisionCCHandle  (- m  AS-  tMANIFOLD ,-  contacts () AS-  tVECTOR2d ,-  A  AS-  tBODY ,-  B  AS-  tBODY )
 
-   
-     CALL-  vectorSubVectorND (- normal ,-  B.position ,-  A.position ) ' Subtract two vectors position A and position B
 
-     dist_sqr = vectorLengthSq(normal) ' Calculate the distance between the balls or circles 
-     radius = A.shape.radius + B.shape.radius ' Add both circle A and circle B radius 
-   
-     IF (- dist_sqr  >=-  radius  *-  radius ) THEN
 
-         m.contactCount = 0 
-         m.contactCount = 1 
-   
-             m.penetration = A.shape.radius 
-             CALL-  vectorSet (- m.normal , 1.0, 0.0)
 
-             CALL-  vectorSetVector (- contacts (0),-  A.position )
 
-             m.penetration = radius - distance 
-             CALL-  vectorDivideScalarND (- m.normal ,-  normal ,-  distance )
 
-   
-             CALL-  vectorMultiplyScalarND (- contacts (0),-  m.normal ,-  A.shape.radius )
 
-             CALL-  vectorAddVector (- contacts (0),-  A.position )
 
-   
-     CALL-  collisionCPHandle (- p (),-  body (),-  m ,-  contacts (),-  B ,-  A )
 
-   
-     'A is the Circle 
-     'B is the POLY 
-     m.contactCount = 0 
-   
-     CALL-  vectorSubVectorND (- center ,-  body (- A )- .position ,-  body (- B )- .position )
 
-     CALL-  matrixTranspose (- body (- B )- .shape.u ,-  tm )
 
-     CALL-  matrixMultiplyVector (- tm ,-  center ,-  center )
 
-   
-     FOR-  i  = 0 TO-  body (- B )- .pa.count 
 
-         CALL-  vectorSubVectorND (- tv ,-  center ,-  p (- body (- B )- .pa.start  +-  i )- .vert )
 
-         s = vectorDot(p(body(B).pa.start + i).norm, tv) 
-             separation = s 
-             faceNormal = i 
-     v1 = p(body(B).pa.start + faceNormal).vert 
-     i2 = body(B).pa.start + arrayNextIndex(faceNormal, body(B).pa.count) 
-     v2 = p(i2).vert 
-   
-         m.contactCount = 1 
-         CALL-  matrixMultiplyVector (- body (- B )- .shape.u ,-  p (- body (- B )- .pa.start  +-  faceNormal )- .norm ,-  m.normal )
 
-         CALL-  vectorMultiplyScalarND (- contacts (0),-  m.normal ,-  ARadius )
 
-         CALL-  vectorAddVector (- contacts (0),-  body (- A )- .position )
 
-         m.penetration = ARadius 
-   
-   
-     CALL-  vectorSubVectorND (- tv1 ,-  center ,-  v1 )
 
-     CALL-  vectorSubVectorND (- tv2 ,-  v2 ,-  v1 )
 
-     dot1 = vectorDot(tv1, tv2) 
-     CALL-  vectorSubVectorND (- tv1 ,-  center ,-  v2 )
 
-     CALL-  vectorSubVectorND (- tv2 ,-  v1 ,-  v2 )
 
-     dot2 = vectorDot(tv1, tv2) 
-     m.penetration = ARadius - separation 
-         m.contactCount = 1 
-         CALL-  vectorSubVectorND (- n ,-  v1 ,-  center )
 
-         CALL-  matrixMultiplyVector (- body (- B )- .shape.u ,-  n ,-  n )
 
-         m.normal = n 
-         CALL-  matrixMultiplyVector (- body (- B )- .shape.u ,-  v1 ,-  v1 )
 
-         CALL-  vectorAddVectorND (- v1 ,-  v1 ,-  body (- B )- .position )
 
-         contacts(0) = v1 
-             m.contactCount = 1 
-             CALL-  vectorSubVectorND (- n ,-  v2 ,-  center )
 
-             CALL-  matrixMultiplyVector (- body (- B )- .shape.u ,-  v2 ,-  v2 )
 
-             CALL-  vectorAddVectorND (- v2 ,-  v2 ,-  body (- B )- .position )
 
-             contacts(0) = v2 
-             CALL-  matrixMultiplyVector (- body (- B )- .shape.u ,-  n ,-  n )
 
-             m.normal = n 
-             n = p(body(B).pa.start + faceNormal).norm 
-             CALL-  vectorSubVectorND (- tv1 ,-  center ,-  v1 )
 
-             m.contactCount = 1 
-             CALL-  matrixMultiplyVector (- body (- B )- .shape.u ,-  n ,-  n )
 
-             m.normal = n 
-             CALL-  vectorMultiplyScalarND (- contacts (0),-  m.normal ,-  ARadius )
 
-             CALL-  vectorAddVector (- contacts (0),-  body (- A )- .position )
 
-   
-     DIM-  o (- cMAXNUMBEROFPOLYGONS ) AS-  tVECTOR2d 
 
-   
-     o(0) = face(0) 
-     o(1) = face(1) 
-   
-   
-         o(sp) = face(0) 
-         sp = sp + 1 
-   
-         o(sp) = face(1) 
-         sp = sp + 1 
-   
-         'out[sp] = face[0] + alpha * (face[1] - face[0]); 
-         CALL-  vectorSubVectorND (- tempv ,-  face (1),-  face (0))
 
-         CALL-  vectorMultiplyScalar (- tempv ,-  alpha )
 
-         CALL-  vectorAddVectorND (- o (- sp ),-  tempv ,-  face (0))
 
-         sp = sp + 1 
-     face(0) = o(0) 
-     face(1) = o(1) 
-     collisionPPClip = sp 
-   
-     DIM-  referenceNormal  AS-  tVECTOR2d 
 
-     DIM-  uRef  AS-  tMATRIX2d: uRef  =-  b (- RefPoly )- .shape.u 
 
-     DIM-  uInc  AS-  tMATRIX2d: uInc  =-  b (- IncPoly )- .shape.u 
 
-     referenceNormal = p(b(RefPoly).pa.start + referenceIndex).norm 
-   
-     '        // Calculate normal in incident's frame of reference 
-     '        // referenceNormal = RefPoly->u * referenceNormal; // To world space 
-     CALL-  matrixMultiplyVector (- uRef ,-  referenceNormal ,-  referenceNormal )
 
-     '        // referenceNormal = IncPoly->u.Transpose( ) * referenceNormal; // To incident's model space 
-     CALL-  matrixTranspose (- uInc ,-  uTemp )
 
-     CALL-  matrixMultiplyVector (- uTemp ,-  referenceNormal ,-  referenceNormal )
 
-   
-     FOR-  i  = 0 TO-  b (- IncPoly )- .pa.count 
 
-         dot = vectorDot(referenceNormal, p(b(IncPoly).pa.start + i).norm) 
-             minDot = dot 
-             incidentFace = i 
-   
-     '// Assign face vertices for incidentFace 
-     '// v[0] = IncPoly->u * IncPoly->m_vertices[incidentFace] + IncPoly->body->position; 
-     CALL-  matrixMultiplyVector (- uInc ,-  p (- b (- IncPoly )- .pa.start  +-  incidentFace )- .vert ,-  v (0))
 
-     CALL-  vectorAddVector (- v (0),-  b (- IncPoly )- .position )
 
-   
-     '// incidentFace = incidentFace + 1 >= (int32)IncPoly->m_vertexCount ? 0 : incidentFace + 1; 
-     incidentFace = arrayNextIndex(incidentFace, b(IncPoly).pa.count) 
-   
-     '// v[1] = IncPoly->u * IncPoly->m_vertices[incidentFace] +  IncPoly->body->position; 
-     CALL-  matrixMultiplyVector (- uInc ,-  p (- b (- IncPoly )- .pa.start  +-  incidentFace )- .vert ,-  v (1))
 
-     CALL-  vectorAddVector (- v (1),-  b (- IncPoly )- .position )
 
-   
-     m.contactCount = 0 
-   
-   
-     penetrationA = collisionPPFindAxisLeastPenetration(p(), body(), faceA(), A, B) 
-   
-   
-     penetrationB = collisionPPFindAxisLeastPenetration(p(), body(), faceB(), B, A) 
-   
-   
-   
-   
-     IF-  impulseGT (- penetrationA ,-  penetrationB ) THEN
 
-         RefPoly = A 
-         IncPoly = B 
-         referenceIndex = faceA(0) 
-         flip = 0 
-         RefPoly = B 
-         IncPoly = A 
-         referenceIndex = faceB(0) 
-         flip = 1 
-   
-     DIM-  incidentFace (2) AS-  tVECTOR2d 
 
-   
-     CALL-  collisionPPFindIncidentFace (- p (),-  body (),-  incidentFace (),-  RefPoly ,-  IncPoly ,-  referenceIndex )
 
-   
-     v1 = p(body(RefPoly).pa.start + referenceIndex).vert 
-     referenceIndex = arrayNextIndex(referenceIndex, body(RefPoly).pa.count) 
-     v2 = p(body(RefPoly).pa.start + referenceIndex).vert 
-     '// Transform vertices to world space 
-     '// v1 = RefPoly->u * v1 + RefPoly->body->position; 
-     '// v2 = RefPoly->u * v2 + RefPoly->body->position; 
-     CALL-  matrixMultiplyVector (- body (- RefPoly )- .shape.u ,-  v1 ,-  v1t )
 
-     CALL-  vectorAddVectorND (- v1 ,-  v1t ,-  body (- RefPoly )- .position )
 
-     CALL-  matrixMultiplyVector (- body (- RefPoly )- .shape.u ,-  v2 ,-  v2t )
 
-     CALL-  vectorAddVectorND (- v2 ,-  v2t ,-  body (- RefPoly )- .position )
 
-   
-     '// Calculate reference face side normal in world space 
-     '// Vec2 sidePlaneNormal = (v2 - v1); 
-     '// sidePlaneNormal.Normalize( ); 
-     DIM-  sidePlaneNormal  AS-  tVECTOR2d 
 
-     CALL-  vectorSubVectorND (- sidePlaneNormal ,-  v2 ,-  v1 )
 
-     CALL-  vectorNormalize (- sidePlaneNormal )
 
-   
-     '// Orthogonalize 
-     '// Vec2 refFaceNormal( sidePlaneNormal.y, -sidePlaneNormal.x ); 
-     DIM-  refFaceNormal  AS-  tVECTOR2d 
 
-     CALL-  vectorSet (- refFaceNormal ,-  sidePlaneNormal.y , -- sidePlaneNormal.x )
 
-   
-     '// ax + by = c 
-     '// c is distance from origin 
-     '// real refC = Dot( refFaceNormal, v1 ); 
-     '// real negSide = -Dot( sidePlaneNormal, v1 ); 
-     '// real posSide = Dot( sidePlaneNormal, v2 ); 
-     DIM-  refC  AS _FLOAT- : refC  =-  vectorDot (- refFaceNormal ,-  v1 )
 
-     DIM-  negSide  AS _FLOAT- : negSide  = -- vectorDot (- sidePlaneNormal ,-  v1 )
 
-     DIM-  posSide  AS _FLOAT- : posSide  =-  vectorDot (- sidePlaneNormal ,-  v2 )
 
-   
-   
-     '// Clip incident face to reference face side planes 
-     '// if(Clip( -sidePlaneNormal, negSide, incidentFace ) < 2) 
-     DIM-  negSidePlaneNormal  AS-  tVECTOR2d 
 
-     CALL-  vectorNegND (- negSidePlaneNormal ,-  sidePlaneNormal )
 
-   
-     IF-  collisionPPClip (- negSidePlaneNormal ,-  negSide ,-  incidentFace ()) < 2 THEN EXIT SUB
 
-     IF-  collisionPPClip (- sidePlaneNormal ,-  posSide ,-  incidentFace ()) < 2 THEN EXIT SUB
 
-   
-     CALL-  vectorSet (- m.normal ,-  refFaceNormal.x ,-  refFaceNormal.y )
 
-   
-     '// Keep points behind reference face 
-     DIM-  cp  AS INTEGER- : cp  = 0 '// clipped points behind reference face
 
-     separation = vectorDot(refFaceNormal, incidentFace(0)) - refC 
-         contacts(cp) = incidentFace(0) 
-         m.penetration = -separation 
-         cp = cp + 1 
-         m.penetration = 0 
-   
-     separation = vectorDot(refFaceNormal, incidentFace(1)) - refC 
-         contacts(cp) = incidentFace(1) 
-         m.penetration = m.penetration + -separation 
-         cp = cp + 1 
-         m.penetration = m.penetration / cp 
-     m.contactCount = cp 
-   
-   
-   
-     FOR-  i  = 0 TO-  body (- A )- .pa.count 
 
-         k = body(A).pa.start + i 
-   
-         '// Retrieve a face normal from A 
-         '// Vec2 n = A->m_normals[i]; 
-         '// Vec2 nw = A->u * n; 
-         n = p(k).norm 
-         CALL-  matrixMultiplyVector (- body (- A )- .shape.u ,-  n ,-  nw )
 
-   
-   
-         '// Transform face normal into B's model space 
-         '// Mat2 buT = B->u.Transpose( ); 
-         '// n = buT * nw; 
-         CALL-  matrixTranspose (- body (- B )- .shape.u ,-  buT )
 
-         CALL-  matrixMultiplyVector (- buT ,-  nw ,-  n )
 
-   
-         '// Retrieve support point from B along -n 
-         '// Vec2 s = B->GetSupport( -n ); 
-         CALL-  vectorGetSupport (- p (),-  body (),-  B ,-  nn ,-  s )
 
-   
-         '// Retrieve vertex on face from A, transform into 
-         '// B's model space 
-         '// Vec2 v = A->m_vertices[i]; 
-         '// v = A->u * v + A->body->position; 
-         '// v -= B->body->position; 
-         '// v = buT * v; 
-   
-         v = p(k).vert 
-         CALL-  matrixMultiplyVector (- body (- A )- .shape.u ,-  v ,-  tv )
 
-         CALL-  vectorAddVectorND (- v ,-  tv ,-  body (- A )- .position )
 
-   
-         CALL-  vectorSubVector (- v ,-  body (- B )- .position )
 
-         CALL-  matrixMultiplyVector (- buT ,-  v ,-  tv )
 
-   
-         CALL-  vectorSubVector (- s ,-  tv )
 
-         d = vectorDot(n, s) 
-   
-             bestDistance = d 
-             bestIndex = i 
-   
-   
-     faceIndex(0) = bestIndex 
-   
-     collisionPPFindAxisLeastPenetration = bestDistance 
-   
- '********************************************************************************************** 
- '   Shape Creation Ahead 
- '********************************************************************************************** 
-   
-     CALL-  matrixSetScalar (- u , 1, 0, 0, 1)
 
-     sh.ty = ty 
-     sh.radius = radius 
-     sh.u = u 
-     sh.scaleTextureX = 1.0 
-     sh.scaleTextureY = 1.0 
-   
- '********************************************************************************************** 
- '   Scene Creation Tools ahead 
- '********************************************************************************************** 
-   
-         CASE-  cPARAMETER_POSITION: 
 
-             CALL-  vectorSet (- body (- Index )- .position ,-  arg1 ,-  arg2 )
 
-         CASE-  cPARAMETER_VELOCITY: 
 
-             CALL-  vectorSet (- body (- Index )- .velocity ,-  arg1 ,-  arg2 )
 
-             CALL-  vectorSet (- body (- Index )- .force ,-  arg1 ,-  arg2 )
 
-         CASE-  cPARAMETER_ANGULARVELOCITY: 
 
-             body(Index).angularVelocity = arg1 
-             body(Index).torque = arg1 
-             body(Index).orient = arg1 
-             CALL-  matrixSetRadians (- body (- Index )- .shape.u ,-  body (- Index )- .orient )
 
-         CASE-  cPARAMETER_STATICFRICTION: 
 
-             body(Index).staticFriction = arg1 
-         CASE-  cPARAMETER_DYNAMICFRICTION: 
 
-             body(Index).dynamicFriction = arg1 
-             body(Index).c = arg1 
-             body(Index).visible = arg1 
-             CALL-  bodySetStatic (- body (- Index ))
 
-             body(Index).shape.texture = arg1 
-         CASE-  cPARAMETER_FLIPTEXTURE:  'does the texture flip directions when moving left or right
 
-             body(Index).shape.flipTexture = arg1 
-   
-     CALL-  shapeCreate (- shape ,-  cSHAPE_CIRCLE ,-  radius )
 
-     CALL-  bodyCreate (- body (),-  index ,-  shape )
 
-     'no vertices have to created for circles 
-     CALL-  circleInitialize (- body (),-  index )
 
-     ' Even though circles do not have vertices, they still must be included in the vertices list 
-         body(index).pa.start = 0 
-         body(index).pa.start = body(index - 1).pa.start + body(index - 1).pa.count + 1 
-     body(index).pa.count = 1 
-     body (- index )- .c  = _RGB32(255, 255, 255)
-   
-     CALL-  shapeCreate (- shape ,-  cSHAPE_POLYGON , 0)
 
-     CALL-  bodyCreate (- body (),-  index ,-  shape )
 
-     CALL-  boxCreate (- p (),-  body (),-  index ,-  xs ,-  ys )
 
-     CALL-  polygonInitialize (- body (),-  p (),-  index )
 
-     body (- index )- .c  = _RGB32(255, 255, 255)
-   
-     CALL-  shapeCreate (- shape ,-  cSHAPE_POLYGON , 0)
 
-     CALL-  bodyCreate (- body (),-  index ,-  shape )
 
-     CALL-  trapCreate (- p (),-  body (),-  index ,-  xs ,-  ys ,-  yoff1 ,-  yoff2 )
 
-     CALL-  polygonInitialize (- body (),-  p (),-  index )
 
-     body (- index )- .c  = _RGB32(255, 255, 255)
-   
-   
-         CALL-  createCircleBody (- body (),-  index , 10 + RND * 20)
 
-             CALL-  createBoxBodies (- p (),-  body (),-  index , 10 + RND * 10, 10 + RND * 10)
 
-   
-   
-     CALL-  vectorSet (- body (- index )- .position , 0, 0)
 
-     CALL-  vectorSet (- body (- index )- .velocity , 0, 0)
 
-     body(index).angularVelocity = 0.0 
-     body(index).torque = 0.0 
-     body(index).orient = 0.0 ' impulseRandom_float(-cPI, cPI) 
-   
-     CALL-  vectorSet (- body (- index )- .force , 0, 0)
 
-     body(index).staticFriction = 0.5 
-     body(index).dynamicFriction = 0.3 
-     body(index).restitution = 0.2 
-     body(index).shape = shape 
-   
-     DIM-  verts (- vertlength ) AS-  tVECTOR2d 
 
-   
-     CALL-  vectorSet (- verts (0), -- sizex , -- sizey )
 
-     CALL-  vectorSet (- verts (1),-  sizex , -- sizey )
 
-     CALL-  vectorSet (- verts (2),-  sizex ,-  sizey )
 
-     CALL-  vectorSet (- verts (3), -- sizex ,-  sizey )
 
-   
-     CALL-  vertexSet (- p (),-  body (),-  index ,-  verts (),-  vertlength )
 
-   
-     DIM-  verts (- vertlength ) AS-  tVECTOR2d 
 
-   
-     CALL-  vectorSet (- verts (0), -- sizex , -- sizey  --  yOff2 )
 
-     CALL-  vectorSet (- verts (1),-  sizex , -- sizey  --  yOff1 )
 
-     CALL-  vectorSet (- verts (2),-  sizex ,-  sizey )
 
-     CALL-  vectorSet (- verts (3), -- sizex ,-  sizey )
 
-   
-     CALL-  vertexSet (- p (),-  body (),-  index ,-  verts (),-  vertlength )
 
-   
-   
-   
-   
-     CALL-  shapeCreate (- shape ,-  cSHAPE_POLYGON , 0)
 
-   
-         CALL-  bodyCreate (- body (),-  index  +-  i ,-  shape )
 
-         CALL-  terrainCreate (- p (),-  body (),-  index  +-  i ,-  elevation (- i ),-  elevation (- i  + 1),-  sliceWidth ,-  nominalHeight )
 
-         CALL-  polygonInitialize (- body (),-  p (),-  index  +-  i )
 
-         body (- index  +-  i )- .c  = _RGB32(255, 255, 255)
-         CALL-  bodySetStatic (- body (- index  +-  i ))
 
-   
-   
-     vertLength = 3 ' numOfslices + 1 
-     DIM-  verts (- vertLength ) AS-  tVECTOR2d 
 
-   
-     CALL-  vectorSet (- verts (0), 0,-  nominalHeight )
 
-     CALL-  vectorSet (- verts (1), (0) *-  sliceWidth , -- nominalHeight  --  ele1 )
 
-     CALL-  vectorSet (- verts (2), (1) *-  sliceWidth , -- nominalHeight  --  ele2 )
 
-     CALL-  vectorSet (- verts (3), (1) *-  sliceWidth ,-  nominalHeight )
 
-     CALL-  vertexSet (- p (),-  body (),-  index ,-  verts (),-  vertLength )
 
-   
-   
-   
-     DIM-  verts (- vertlength ) AS-  tVECTOR2d 
 
-   
-     CALL-  vectorSet (- verts (0), -- sizex , -- sizey )
 
-     CALL-  vectorSet (- verts (1),-  sizex , -- sizey )
 
-     CALL-  vectorSet (- verts (2),-  sizex ,-  sizey )
 
-     CALL-  vectorSet (- verts (3), -- sizex ,-  sizey )
 
-     CALL-  vectorSet (- verts (4), -- sizex ,-  sizey  / 2)
 
-     CALL-  vectorSet (- verts (5),-  sizex  / 2,-  sizey  / 2)
 
-     CALL-  vectorSet (- verts (6),-  sizex  / 2, -- sizey  / 2)
 
-     CALL-  vectorSet (- verts (7), -- sizex ,-  sizey  / 2)
 
-   
-     CALL-  vertexSet (- p (),-  body (),-  index ,-  verts (),-  vertlength )
 
-   
-     DIM-  highestXCoord  AS _FLOAT- : highestXCoord  =-  verts (0)- .x 
 
-         x = verts(i).x 
-             highestXCoord = x 
-             rightMost = i 
-                 IF-  verts (- i )- .y  <-  verts (- rightMost )- .y  THEN
 
-                     rightMost = i 
-         hull(outCount) = indexHull 
-         nextHullIndex = 0 
-             IF-  nextHullIndex  =-  indexHull  THEN
 
-                 nextHullIndex = i 
-             CALL-  vectorSubVectorND (- e1 ,-  verts (- nextHullIndex ),-  verts (- hull (- outCount )))
 
-             CALL-  vectorSubVectorND (- e2 ,-  verts (- i ),-  verts (- hull (- outCount )))
 
-             c = vectorCross(e1, e2) 
-             IF-  c  < 0.0 THEN-  nextHullIndex  =-  i 
 
-             IF-  c  = 0.0 AND (- vectorLengthSq (- e2 ) >-  vectorLengthSq (- e1 )) THEN
 
-                 nextHullIndex = i 
-         outCount = outCount + 1 
-         indexHull = nextHullIndex 
-         IF-  nextHullIndex  =-  rightMost  THEN
 
-             body(index).pa.count = outCount - 1 
-   
-         body(index).pa.start = 0 
-         body(index).pa.start = body(index - 1).pa.start + body(index - 1).pa.count + 1 
-   
-         p(body(index).pa.start + i).vert = verts(hull(i)) 
-   
-         CALL-  vectorSubVectorND (- face ,-  p (- body (- index )- .pa.start  +-  arrayNextIndex (- i ,-  body (- index )- .pa.count ))- .vert ,-  p (- body (- index )- .pa.start  +-  i )- .vert )
 
-         CALL-  vectorSet (- p (- body (- index )- .pa.start  +-  i )- .norm ,-  face.y , -- face.x )
 
-         CALL-  vectorNormalize (- p (- body (- index )- .pa.start  +-  i )- .norm )
 
-   
-     arrayNextIndex  = ((- i  + 1) MOD (- count  + 1))
-   
- '********************************************************************************************** 
- '   Rendering Stuff Ahead 
- '********************************************************************************************** 
-   
-     fpsLast = fps 
-     fps = 0 
-   
- SUB-  renderBodies  (- p () AS-  tPOLY ,-  body () AS-  tBODY ,-  j () AS-  tJOINT ,-  hits () AS-  tHIT ,-  camera  AS-  tCAMERA )
 
-     DIM-  camoffset  AS-  tVECTOR2d 
 
-   
-     FOR-  i  = 0 TO-  sNUMBEROFBODIES 
 
-         'TODO: Put hidden object logic 
-         'AABB to cut down on rendering objects out of camera view 
-         cx = camera.position.x 
-         cy = camera.position.y 
-         cwx  = _WIDTH * (1 /-  camera.zoom )
-         ox = body(i).position.x - 5000 
-         oy = body(i).position.y - 5000 
-         owx = 10000 
-         owy = 10000 
-         IF-  cx  <-  ox  +-  owx  AND-  cx  +-  cwx  >-  ox  AND-  cy  <-  oy  +-  owy  AND-  cy  +-  cwy  >-  oy  THEN
 
-   
-             IF-  body (- i )- .shape.ty  =-  cSHAPE_CIRCLE  THEN
 
-                 IF-  body (- i )- .shape.texture  = 0 THEN
 
-                     CALL-  renderWireframeCircle (- body (),-  i ,-  camera )
 
-                     CALL-  renderTexturedCircle (- body (),-  i ,-  camera )
 
-                     IF-  body (- i )- .shape.texture  = 0 THEN
 
-                         CALL-  renderWireframePoly (- p (),-  body (),-  i ,-  camera )
 
-                         CALL-  renderTexturedBox (- p (),-  body (),-  i ,-  camera )
 
-         FOR-  i  = 1 TO-  sNUMBEROFJOINTS 
 
-             CALL-  renderJoints (- j (- i ),-  body (),-  camera )
 
-         hitcount = 0 
-         DO WHILE-  hits (- hitcount )- .A  <>-  hits (- hitcount )- .B 
 
-             CALL-  vectorSubVectorND (- camoffset ,-  hits (- hitcount )- .position ,-  camera.position )
 
-             CIRCLE (- camoffset.x ,-  camoffset.y ), 5, _RGB(255, 6, 11)
 
-             hitcount = hitcount + 1 
-   
-   
- SUB-  renderJoints  (- j  AS-  tJOINT ,-  b () AS-  tBODY ,-  camera  AS-  tCAMERA )
 
-     DIM-  b1  AS-  tBODY: b1  =-  b (- j.body1 )
 
-     DIM-  b2  AS-  tBODY: b2  =-  b (- j.body2 )
 
-     DIM-  R1  AS-  tMATRIX2d: R1  =-  b1.shape.u  'Call matrixSetRadians(R1, b1.orient)
 
-     DIM-  R2  AS-  tMATRIX2d: R2  =-  b2.shape.u  ' Call matrixSetRadians(R2, b2.orient)
 
-   
-     DIM-  x1  AS-  tVECTOR2d: x1  =-  b1.position 
 
-     DIM-  p1  AS-  tVECTOR2d:  CALL-  matrixMultiplyVector (- R1 ,-  j.localAnchor1 ,-  p1 )
 
-   
-     CALL-  vectorAddVectorND (- p1 ,-  p1 ,-  x1 )
 
-   
-     DIM-  x2  AS-  tVECTOR2d: x2  =-  b2.position 
 
-     DIM-  p2  AS-  tVECTOR2d:  CALL-  matrixMultiplyVector (- R2 ,-  j.localAnchor2 ,-  p2 )
 
-   
-     CALL-  vectorAddVectorND (- p2 ,-  p2 ,-  x2 )
 
-   
-     CALL-  vectorSubVector (- p1 ,-  camera.position )
 
-     CALL-  vectorSubVector (- x2 ,-  camera.position )
 
-   
-     'Line (x1.x, x1.y)-(p1.x, p1.y), _RGB(127, 127, 244) 'blue 
-     LINE (- p1.x ,-  p1.y )-(- x2.x ,-  x2.y ), _RGB(255, 255, 127) 'yellow
 
-     ' Line (x2.x, x2.y)-(p2.x, p2.y), _RGB32(127, 255, 127) 'green 
-     ' Line (p2.x, p2.y)-(x1.x, x1.y), _RGB(127, 6, 127) 'purple 
-   
-     DIM-  a  AS-  tVECTOR2d  ' dummy vertices
 
-   
-     FOR-  i  = 0 TO-  b (- index )- .pa.count 
 
-         element = b(index).pa.start + i 
-         element_next = b(index).pa.start + arrayNextIndex(i, b(index).pa.count) ' wrap around back to first element 
-         a = p(element).vert 
-         b = p(element_next).vert 
-   
-         CALL-  matrixMultiplyVector (- b (- index )- .shape.u ,-  a ,-  a )
 
-         CALL-  matrixMultiplyVector (- b (- index )- .shape.u ,-  b ,-  b )
 
-         CALL-  vectorAddVector (- a ,-  b (- index )- .position )
 
-         CALL-  vectorAddVector (- b ,-  b (- index )- .position )
 
-         CALL-  vectorSubVector (- a ,-  camera.position )
 
-         CALL-  vectorSubVector (- b ,-  camera.position )
 
-         CALL-  vectorMultiplyScalar (- a ,-  camera.zoom )
 
-         CALL-  vectorMultiplyScalar (- b ,-  camera.zoom )
 
-         LINE (- a.x ,-  a.y )-(- b.x ,-  b.y ),-  b (- index )- .c 
 
-   
-     bm = b(index).shape.texture 
-         vert(i) = p(b(index).pa.start + i).vert 
-         vert(i).x = vert(i).x + b(index).shape.offsetTextureX 
-         vert(i).y = vert(i).y + b(index).shape.offsetTextureY 
-         vert(i).x = vert(i).x * b(index).shape.scaleTextureX 
-         vert(i).y = vert(i).y * b(index).shape.scaleTextureY 
-   
-         CALL-  matrixMultiplyVector (- b (- index )- .shape.u ,-  vert (- i ),-  vert (- i ))
 
-         CALL-  vectorAddVector (- vert (- i ),-  b (- index )- .position )
 
-         CALL-  vectorSubVector (- vert (- i ),-  camera.position )
 
-         CALL-  vectorMultiplyScalar (- vert (- i ),-  camera.zoom )
 
-     IF-  b (- index )- .velocity.x  > 1 OR-  b (- index )- .shape.flipTexture  = 0 THEN
 
-         _MAPTRIANGLE (0, 0)-(- W  - 1, 0)-(- W  - 1,-  H  - 1),-  bm  TO(- vert (3)- .x ,-  vert (3)- .y )-(- vert (0)- .x ,-  vert (0)- .y )-(- vert (1)- .x ,-  vert (1)- .y )
 
-         _MAPTRIANGLE (0, 0)-(0,-  H  - 1)-(- W  - 1,-  H  - 1),-  bm  TO(- vert (3)- .x ,-  vert (3)- .y )-(- vert (2)- .x ,-  vert (2)- .y )-(- vert (1)- .x ,-  vert (1)- .y )
 
-         _MAPTRIANGLE (0, 0)-(- W  - 1, 0)-(- W  - 1,-  H  - 1),-  bm  TO(- vert (0)- .x ,-  vert (0)- .y )-(- vert (3)- .x ,-  vert (3)- .y )-(- vert (2)- .x ,-  vert (2)- .y )
 
-         _MAPTRIANGLE (0, 0)-(0,-  H  - 1)-(- W  - 1,-  H  - 1),-  bm  TO(- vert (0)- .x ,-  vert (0)- .y )-(- vert (1)- .x ,-  vert (1)- .y )-(- vert (2)- .x ,-  vert (2)- .y )
 
-   
-   
-     DIM-  tv  AS-  tVECTOR2d: tv  =-  b (- index )- .position 
 
-     CALL-  vectorSubVector (- tv ,-  camera.position )
 
-     CALL-  vectorMultiplyScalar (- tv ,-  camera.zoom )
 
-     CIRCLE (- tv.x ,-  tv.y ),-  b (- index )- .shape.radius ,-  b (- index )- .c 
 
-     LINE (- tv.x ,-  tv.y )-(- tv.x  + COS(- b (- index )- .orient ) *-  b (- index )- .shape.radius ,-  tv.y  + SIN(- b (- index )- .orient ) *-  b (- index )- .shape.radius ),-  b (- index )- .c 
 
-   
-     bm = b(index).shape.texture 
-     CALL-  vectorSet (- vert (0), -- b (- index )- .shape.radius , -- b (- index )- .shape.radius )
 
-     CALL-  vectorSet (- vert (1), -- b (- index )- .shape.radius ,-  b (- index )- .shape.radius )
 
-     CALL-  vectorSet (- vert (2),-  b (- index )- .shape.radius ,-  b (- index )- .shape.radius )
 
-     CALL-  vectorSet (- vert (3),-  b (- index )- .shape.radius , -- b (- index )- .shape.radius )
 
-         CALL-  matrixMultiplyVector (- b (- index )- .shape.u ,-  vert (- i ),-  vert (- i ))
 
-         CALL-  vectorAddVector (- vert (- i ),-  b (- index )- .position )
 
-         CALL-  vectorSubVector (- vert (- i ),-  camera.position )
 
-         CALL-  vectorMultiplyScalar (- vert (- i ),-  camera.zoom )
 
-     _MAPTRIANGLE (0, 0)-(0,-  H  - 1)-(- W  - 1,-  H  - 1),-  bm  TO(- vert (0)- .x ,-  vert (0)- .y )-(- vert (1)- .x ,-  vert (1)- .y )-(- vert (2)- .x ,-  vert (2)- .y )
 
-     _MAPTRIANGLE (0, 0)-(- W  - 1, 0)-(- W  - 1,-  H  - 1),-  bm  TO(- vert (0)- .x ,-  vert (0)- .y )-(- vert (3)- .x ,-  vert (3)- .y )-(- vert (2)- .x ,-  vert (2)- .y )
 
-   
-     CALL-  matrixSetRadians (- b.shape.u ,-  radians )
 
-   
- '********************************************************************************************** 
- '   Object initialization Ahead 
- '********************************************************************************************** 
-   
-     CALL-  circleComputeMass (- b (),-  index , 1.0)
 
-   
-     b(index).mass = cPI * b(index).shape.radius * b(index).shape.radius * density 
-         b(index).invMass = 1.0 / b(index).mass 
-         b(index).invMass = 0.0 
-   
-     b(index).inertia = b(index).mass * b(index).shape.radius * b(index).shape.radius 
-   
-         b(index).invInertia = 1.0 / b(index).inertia 
-         b(index).invInertia = 0.0 
-   
-     CALL-  polygonComputeMass (- body (),-  p (),-  index , 1.0)
 
-   
-     DIM-  c  AS-  tVECTOR2d  ' centroid
 
-   
-     k_inv3 = 1.0 / 3.0 
-   
-     FOR-  ii  = 0 TO-  b (- index )- .pa.count 
 
-         p1 = p(b(index).pa.start + ii).vert 
-         p2 = p(b(index).pa.start + arrayNextIndex(ii, b(index).pa.count)).vert 
-         D = vectorCross(p1, p2) 
-         triangleArea = .5 * D 
-         area = area + triangleArea 
-         weight = triangleArea * k_inv3 
-         CALL-  vectorAddVectorScalar (- c ,-  p1 ,-  weight )
 
-         CALL-  vectorAddVectorScalar (- c ,-  p2 ,-  weight )
 
-         intx2 = p1.x * p1.x + p2.x * p1.x + p2.x * p2.x 
-         inty2 = p1.y * p1.y + p2.y * p1.y + p2.y * p2.y 
-         I = I + (0.25 * k_inv3 * D) * (intx2 + inty2) 
-   
-     CALL-  vectorMultiplyScalar (- c , 1.0 /-  area )
 
-   
-     FOR-  ii  = 0 TO-  b (- index )- .pa.count 
 
-         CALL-  vectorSubVector (- p (- b (- index )- .pa.start  +-  ii )- .vert ,-  c )
 
-   
-     b(index).mass = density * area 
-         b(index).invMass = 1.0 / b(index).mass 
-         b(index).invMass = 0.0 
-   
-     b(index).inertia = I * density 
-         b(index).invInertia = 1.0 / b(index).inertia 
-         b(index).invInertia = 0.0 
- '********************************************************************************************** 
- '   Joint Stuff Ahead 
- '********************************************************************************************** 
-     CALL-  vectorSet (- anchor ,-  x ,-  y )
 
-     DIM-  Rot1  AS-  tMATRIX2d: Rot1  =-  body (- b1 )- .shape.u  'Call matrixSetRadians(Rot1, body(b1).orient)
 
-     DIM-  Rot2  AS-  tMATRIX2d: Rot2  =-  body (- b2 )- .shape.u  'Call matrixSetRadians(Rot2, body(b2).orient)
 
-     DIM-  Rot1T  AS-  tMATRIX2d:  CALL-  matrixTranspose (- Rot1 ,-  Rot1T )
 
-     DIM-  Rot2T  AS-  tMATRIX2d:  CALL-  matrixTranspose (- Rot2 ,-  Rot2T )
 
-   
-     j.body1 = b1 
-     j.body2 = b2 
-   
-     CALL-  vectorSubVectorND (- tv ,-  anchor ,-  body (- b1 )- .position )
 
-     CALL-  matrixMultiplyVector (- Rot1T ,-  tv ,-  j.localAnchor1 )
 
-   
-     CALL-  vectorSubVectorND (- tv ,-  anchor ,-  body (- b2 )- .position )
 
-     CALL-  matrixMultiplyVector (- Rot2T ,-  tv ,-  j.localAnchor2 )
 
-   
-     CALL-  vectorSet (- j.P , 0, 0)
 
-   
-     j.softness = 0.001 
-     j.biasFactor = 100 
-   
-   
-     DIM-  Rot1  AS-  tMATRIX2d: Rot1  =-  body (- j.body1 )- .shape.u  'Call matrixSetRadians(Rot1, body(j.body1).orient)
 
-     DIM-  Rot2  AS-  tMATRIX2d: Rot2  =-  body (- j.body2 )- .shape.u  'Call matrixSetRadians(Rot2, body(j.body2).orient)
 
-   
-   
-     CALL-  matrixMultiplyVector (- Rot1 ,-  j.localAnchor1 ,-  j.r1 )
 
-     CALL-  matrixMultiplyVector (- Rot2 ,-  j.localAnchor2 ,-  j.r2 )
 
-   
-     b1invMass = body(j.body1).invMass 
-     b2invMass = body(j.body2).invMass 
-   
-     b1invInertia = body(j.body1).invInertia 
-     b2invInertia = body(j.body2).invInertia 
-   
-     Call-  matrixSetScalar (- K1 ,-  b1invMass  +-  b2invMass , 0,- _ 
 
-                                                  0, b1invMass + b2invMass) 
-     Call-  matrixSetScalar (- K2 ,-  b1invInertia  *-  j.r1.y  *-  j.r1.y , -- b1invInertia  *-  j.r1.x  *-  j.r1.y ,- _ 
 
-                             -b1invInertia * j.r1.x * j.r1.y,  b1invInertia * j.r1.x * j.r1.x) 
-   
-     Call-  matrixSetScalar (- K3 ,-   b2invInertia  *-  j.r2.y  *-  j.r2.y , --  b2invInertia  *-  j.r2.x  *-  j.r2.y ,- _ 
 
-                              -b2invInertia * j.r2.x * j.r2.y,   b2invInertia * j.r2.x * j.r2.x) 
-   
-     CALL-  matrixAddMatrix (- K1 ,-  K2 ,-  K )
 
-     CALL-  matrixAddMatrix (- K3 ,-  K ,-  K )
 
-     K.m00 = K.m00 + j.softness 
-     K.m11 = K.m11 + j.softness 
-     CALL-  matrixInvert (- K ,-  j.M )
 
-   
-     DIM-  p1  AS-  tVECTOR2d:  CALL-  vectorAddVectorND (- p1 ,-  body (- j.body1 )- .position ,-  j.r1 )
 
-     DIM-  p2  AS-  tVECTOR2d:  CALL-  vectorAddVectorND (- p2 ,-  body (- j.body2 )- .position ,-  j.r2 )
 
-     DIM-  dp  AS-  tVECTOR2d:  CALL-  vectorSubVectorND (- dp ,-  p2 ,-  p1 )
 
-   
-     CALL-  vectorMultiplyScalarND (- j.bias ,-  dp , -- j.biasFactor  *-  inv_dt )
 
-     'Call vectorSet(j.bias, 0, 0) 
-     CALL-  vectorSet (- j.P , 0, 0)
 
-   
- SUB-  jointApplyImpulse  (- j  AS-  tJOINT ,-  body () AS-  tBODY )
 
-   
-   
-     'Vec2 dv = body2->velocity + Cross(body2->angularVelocity, r2) - body1->velocity - Cross(body1->angularVelocity, r1); 
-     CALL-  vectorCrossScalar (- cross2 ,-  j.r2 ,-  body (- j.body2 )- .angularVelocity )
 
-     CALL-  vectorCrossScalar (- cross1 ,-  j.r1 ,-  body (- j.body1 )- .angularVelocity )
 
-     CALL-  vectorAddVectorND (- dv ,-  body (- j.body2 )- .velocity ,-  cross2 )
 
-     CALL-  vectorSubVectorND (- dv ,-  dv ,-  body (- j.body1 )- .velocity )
 
-     CALL-  vectorSubVectorND (- dv ,-  dv ,-  cross1 )
 
-   
-     ' impulse = M * (bias - dv - softness * P); 
-     CALL-  vectorMultiplyScalarND (- tv ,-  j.P ,-  j.softness )
 
-     CALL-  vectorSubVectorND (- impulse ,-  j.bias ,-  dv )
 
-     CALL-  vectorSubVectorND (- impulse ,-  impulse ,-  tv )
 
-     CALL-  matrixMultiplyVector (- j.M ,-  impulse ,-  impulse )
 
-   
-     ' body1->velocity -= body1->invMass * impulse; 
-   
-     CALL-  vectorMultiplyScalarND (- tv ,-  impulse ,-  body (- j.body1 )- .invMass )
 
-     CALL-  vectorSubVectorND (- body (- j.body1 )- .velocity ,-  body (- j.body1 )- .velocity ,-  tv )
 
-   
-     ' body1->angularVelocity -= body1->invI * Cross(r1, impulse); 
-     crossScalar = vectorCross(j.r1, impulse) 
-     body(j.body1).angularVelocity = body(j.body1).angularVelocity - body(j.body1).invInertia * crossScalar 
-   
-     CALL-  vectorMultiplyScalarND (- tv ,-  impulse ,-  body (- j.body2 )- .invMass )
 
-     CALL-  vectorAddVectorND (- body (- j.body2 )- .velocity ,-  body (- j.body2 )- .velocity ,-  tv )
 
-   
-     crossScalar = vectorCross(j.r2, impulse) 
-     body(j.body2).angularVelocity = body(j.body2).angularVelocity + body(j.body2).invInertia * crossScalar 
-   
-     CALL-  vectorAddVectorND (- j.P ,-  j.P ,-  impulse )
 
-   
-   
- '********************************************************************************************** 
- '   Vector Math Ahead 
- '********************************************************************************************** 
-   
-     v.x = x 
-     v.y = y 
-   
- SUB-  vectorSetVector  (- o  AS-  tVECTOR2d ,-  v  AS-  tVECTOR2d )
 
-     o.x = v.x 
-     o.y = v.y 
-   
- SUB-  vectorNeg  (- v  AS-  tVECTOR2d )
 
-     v.x = -v.x 
-     v.y = -v.y 
-   
- SUB-  vectorNegND  (- o  AS-  tVECTOR2d ,-  v  AS-  tVECTOR2d )
 
-     o.x = -v.x 
-     o.y = -v.y 
-   
-     v.x = v.x * s 
-     v.y = v.y * s 
-   
-     o.x = v.x * s 
-     o.y = v.y * s 
-   
-     v.x = v.x / s 
-     v.y = v.y / s 
-   
-     o.x = v.x / s 
-     o.y = v.y / s 
-   
-     v.x = v.x + s 
-     v.y = v.y + s 
-   
-     o.x = v.x + s 
-     o.y = v.y + s 
-   
- SUB-  vectorMultiplyVector  (- v  AS-  tVECTOR2d ,-  m  AS-  tVECTOR2d )
 
-     v.x = v.x * m.x 
-     v.y = v.y * m.y 
-   
- SUB-  vectorMultiplyVectorND  (- o  AS-  tVECTOR2d ,-  v  AS-  tVECTOR2d ,-  m  AS-  tVECTOR2d )
 
-     o.x = v.x * m.x 
-     o.y = v.y * m.y 
-   
- SUB-  vectorDivideVector  (- v  AS-  tVECTOR2d ,-  m  AS-  tVECTOR2d )
 
-     v.x = v.x / m.x 
-     v.y = v.y / m.y 
-   
- SUB-  vectorAddVector  (- v  AS-  tVECTOR2d ,-  m  AS-  tVECTOR2d )
 
-     v.x = v.x + m.x 
-     v.y = v.y + m.y 
-   
- SUB-  vectorAddVectorND  (- o  AS-  tVECTOR2d ,-  v  AS-  tVECTOR2d ,-  m  AS-  tVECTOR2d )
 
-     o.x = v.x + m.x 
-     o.y = v.y + m.y 
-   
-     v.x = v.x + m.x * s 
-     v.y = v.y + m.y * s 
-   
- SUB-  vectorAddVectorScalarND  (- o  AS-  tVECTOR2d ,-  v  AS-  tVECTOR2d ,-  m  AS-  tVECTOR2d ,-  s  AS _FLOAT)
 
-     o.x = v.x + m.x * s 
-     o.y = v.y + m.y * s 
-   
- SUB-  vectorSubVector  (- v  AS-  tVECTOR2d ,-  m  AS-  tVECTOR2d )
 
-     v.x = v.x - m.x 
-     v.y = v.y - m.y 
-   
- SUB-  vectorSubVectorND  (- o  AS-  tVECTOR2d ,-  v  AS-  tVECTOR2d ,-  m  AS-  tVECTOR2d )
 
-     o.x = v.x - m.x 
-     o.y = v.y - m.y 
-   
-     vectorLengthSq = v.x * v.x + v.y * v.y 
-   
-     vectorLength  = SQR(- vectorLengthSq (- v ))
-   
-     xp = v.x * c - v.y * s 
-     yp = v.x * s + v.y * c 
-     v.x = xp 
-     v.y = yp 
-   
- SUB-  vectorNormalize  (- v  AS-  tVECTOR2d )
 
-     lenSQ = vectorLengthSq(v) 
-         invLen  = 1.0 / SQR(- lenSQ )
-         v.x = v.x * invLen 
-         v.y = v.y * invLen 
-   
- SUB-  vectorMin  (- a  AS-  tVECTOR2d ,-  b  AS-  tVECTOR2d ,-  o  AS-  tVECTOR2d )
 
-     o.x = scalarMin(a.x, b.x) 
-     o.y = scalarMin(a.y, b.y) 
-   
- SUB-  vectorMax  (- a  AS-  tVECTOR2d ,-  b  AS-  tVECTOR2d ,-  o  AS-  tVECTOR2d )
 
-     o.x = scalarMax(a.x, b.x) 
-     o.y = scalarMax(a.y, b.y) 
-   
-     vectorDot = a.x * b.x + a.y * b.y 
-   
-     dx = b.x - a.x 
-     dy = b.y - a.y 
-     vectorSqDist = dx * dx + dy * dy 
-   
-     vectorDistance  = SQR(- vectorSqDist (- a ,-  b ))
-   
-     vectorCross = a.x * b.y - a.y * b.x 
-   
-     o.x = v.y * -a 
-     o.y = v.x * a 
-   
-     vectorArea = (((b.x - a.x) * (c.y - a.y)) - ((c.x - a.x) * (b.y - a.y))) 
-   
-     vectorLeft = vectorArea(a, b, c) > 0 
-   
- FUNCTION-  vectorLeftOn  (- a  AS-  tVECTOR2d ,-  b  AS-  tVECTOR2d ,-  c  AS-  tVECTOR2d )
 
-     vectorLeftOn = vectorArea(a, b, c) >= 0 
-   
-     vectorRight = vectorArea(a, b, c) < 0 
-   
- FUNCTION-  vectorRightOn  (- a  AS-  tVECTOR2d ,-  b  AS-  tVECTOR2d ,-  c  AS-  tVECTOR2d )
 
-     vectorRightOn = vectorArea(a, b, c) <= 0 
-   
-         vectorCollinear = (vectorArea(a, b, c) = 0) 
-   
-         ab.x = b.x - a.x 
-         ab.y = b.y - a.y 
-         bc.x = c.x - b.x 
-         bc.y = c.y - b.y 
-   
-         dot = ab.x * bc.x + ab.y * bc.y 
-         magA  = SQR(- ab.x  *-  ab.x  +-  ab.y  *-  ab.y )
-         magB  = SQR(- bc.x  *-  bc.x  +-  bc.y  *-  bc.y )
-         angle  = _ACOS(- dot  / (- magA  *-  magB ))
-         vectorCollinear = angle < thresholdAngle 
-   
- SUB-  vectorGetSupport  (- p () AS-  tPOLY ,-  body () AS-  tBODY ,-  index  AS INTEGER,-  dir  AS-  tVECTOR2d ,-  bestVertex  AS-  tVECTOR2d )
 
-     bestVertex.x = -9999999 
-     bestVertex.y = -9999999 
-     bestProjection = -9999999 
-   
-     FOR-  i  = 0 TO-  body (- index )- .pa.count 
 
-         v = p(i + body(index).pa.start).vert 
-         projection = vectorDot(v, dir) 
-         IF-  projection  >-  bestProjection  THEN
 
-             bestVertex = v 
-             bestProjection = projection 
-   
- '********************************************************************************************** 
- '   Matrix Stuff Ahead 
- '********************************************************************************************** 
-   
-     m.m00 = c 
-     m.m01 = -s 
-     m.m10 = s 
-     m.m11 = c 
-   
-     m.m00 = a 
-     m.m01 = b 
-     m.m10 = c 
-     m.m11 = d 
-   
- SUB-  matrixAbs  (- m  AS-  tMATRIX2d ,-  o  AS-  tMATRIX2d )
 
-   
- SUB-  matrixGetAxisX  (- m  AS-  tMATRIX2d ,-  o  AS-  tVECTOR2d )
 
-     o.x = m.m00 
-     o.y = m.m10 
-   
- SUB-  matrixGetAxisY  (- m  AS-  tMATRIX2d ,-  o  AS-  tVECTOR2d )
 
-     o.x = m.m01 
-     o.y = m.m11 
-   
- SUB-  matrixTransposeI  (- m  AS-  tMATRIX2d )
 
-   
- SUB-  matrixTranspose  (- m  AS-  tMATRIX2d ,-  o  AS-  tMATRIX2d )
 
-     tm.m00 = m.m00 
-     tm.m01 = m.m10 
-     tm.m10 = m.m01 
-     tm.m11 = m.m11 
-     o = tm 
-   
- SUB-  matrixInvert  (- m  AS-  tMATRIX2d ,-  o  AS-  tMATRIX2d )
 
-   
-     a = m.m00: b = m.m01: c = m.m10: d = m.m11 
-     det = a * d - b * c 
-   
-     det = 1 / det 
-     tm.m00 = det * d: tm.m01 = -det * b 
-     tm.m10 = -det * c: tm.m11 = det * a 
-     o = tm 
-   
- SUB-  matrixMultiplyVector  (- m  AS-  tMATRIX2d ,-  v  AS-  tVECTOR2d ,-  o  AS-  tVECTOR2d )
 
-     t.x = m.m00 * v.x + m.m01 * v.y 
-     t.y = m.m10 * v.x + m.m11 * v.y 
-     o = t 
-   
- SUB-  matrixAddMatrix  (- m  AS-  tMATRIX2d ,-  x  AS-  tMATRIX2d ,-  o  AS-  tMATRIX2d )
 
-     o.m00 = m.m00 + x.m00 
-     o.m01 = m.m01 + x.m01 
-     o.m10 = m.m10 + x.m10 
-     o.m11 = m.m11 + x.m11 
-   
- SUB-  matrixMultiplyMatrix  (- m  AS-  tMATRIX2d ,-  x  AS-  tMATRIX2d ,-  o  AS-  tMATRIX2d )
 
-     o.m00 = m.m00 * x.m00 + m.m01 * x.m10 
-     o.m01 = m.m00 * x.m01 + m.m01 * x.m11 
-     o.m10 = m.m10 * x.m00 + m.m11 * x.m10 
-     o.m11 = m.m10 * x.m01 + m.m11 * x.m11 
-   
- '********************************************************************************************** 
- '   Mostly Unused Stuff Ahead 
- '********************************************************************************************** 
-   
- SUB-  polygonMakeCCW  (- obj  AS-  tTRIANGLE )
 
-     IF-  vectorLeft (- obj.a ,-  obj.b ,-  obj.c ) = 0 THEN
 
-   
-     polygonIsReflex = vectorRight(t.a, t.b, t.c) 
-   
-         scalarMin = a 
-         scalarMin = b 
-   
-         scalarMax = a 
-         scalarMax = b 
-   
- SUB-  lineIntersection  (- l1  AS-  tLINE2d ,-  l2  AS-  tLINE2d ,-  o  AS-  tVECTOR2d )
 
-     o.x = 0 
-     o.y = 0 
-     a1 = l1.b.y - l1.a.y 
-     b1 = l1.a.x - l1.b.x 
-     c1 = a1 * l1.a.x + b1 * l1.a.y 
-     a2 = l2.b.y - l2.a.y 
-     b2 = l2.a.x - l2.b.x 
-     c2 = a2 * l2.a.x + b2 * l2.a.y 
-     det = a1 * b2 - a2 * b1 
-   
-         o.x = (b2 * c1 - b1 * c2) / det 
-         o.y = (a1 * c2 - a2 * c1) / det 
-   
- FUNCTION-  lineSegmentsIntersect  (- l1  AS-  tLINE2d ,-  l2  AS-  tLINE2d )
 
-     dx = l1.b.x - l1.a.x 
-     dy = l1.b.y - l1.a.y 
-     da = l2.b.x - l2.a.x 
-     db = l2.b.y - l2.a.y 
-         lineSegmentsIntersect = 0 
-         s = (dx * (l2.a.y - l1.a.y) + dy * (l1.a.x - l2.a.x)) / (da * dy - db * dx) 
-         t = (da * (l1.a.y - l2.a.y) + db * (l2.a.x - l1.a.x)) / (db * dx - da * dy) 
-         lineSegmentsIntersect  = (- s  >= 0 AND-  s  <= 1 AND-  t  >= 0 AND-  t  <= 1)
-   
- '********************************************************************************************** 
- '   Impulse Specific Math Ahead 
- '********************************************************************************************** 
-   
-     impulseEqual  = ABS(- a  --  b ) <=-  cEPSILON 
-   
-         impulseClamp = min 
-             impulseClamp = max 
-             impulseClamp = a 
-   
-     impulseRound  = INT(- a  + 0.5)
-   
-     impulseRandom_float  = ((- max  --  min ) * RND +-  min )
-   
-     impulseRandomInteger  = INT((- max  --  min ) * RND +-  min )
-   
-     impulseGT = (a >= b * cBIAS_RELATIVE + a * cBIAS_ABSOLUTE) 
-   
- '********************************************************************************************** 
- '   Troubleshooting Tools 
- '********************************************************************************************** 
-   
-     PRINT "---------------------------" 
-     PRINT-  n;  " u:"- ; u.m00;  "|"- ; u.m10 
 
-     PRINT "       "- ; u.m10;  "|"- ; u.m11 
 
-   
-   
- '********************************************************************************************** 
- '   Generate Bitmap 
- '********************************************************************************************** 
-   
-     'TODO: Do a pallete pass and color pixels based on pallete 
-   
-     'CarBody  - License CC0 - GameArt2D.com 
-     DATA 1147,0,4278190083,4278261626,4278193217 
-     DATA 4278190081,4278190088,4278190084,4278190082 
-     DATA 4278190087,4278394763,4278788960,4278255873 
-     DATA 4278913804,4279308561,4279111182,4279505940 
-     DATA 4279374359,4278255875,4278460556,4279847562 
-     DATA 4278718994,4278584851,4278979598,4279045399 
-     DATA 4279374355,4281282351,4281019179,4280887593 
-     DATA 4279703323,4278387467,4278255879,4279637535 
-     DATA 4278519049,4280840112,4279248424,4279242773 
-     DATA 4279834913,4280492843,4279176979,4279703320 
-     DATA 4280427044,4280953386,4281019183,4280756009 
-     DATA 4281413948,4281611327,4278394506,4281832407 
-     DATA 4279843904,4279111198,4278979597,4280229663 
-     DATA 4280098077,4281677109,4281545523,4281611316 
-     DATA 4281216558,4280756007,4281479730,4282071867 
-     DATA 4283256142,4280953389,4278394505,4282031069 
-     DATA 4281035381,4278190337,4278255880,4280821804 
-     DATA 4289177511,4286677377,4281084972,4280295456 
-     DATA 4282927176,4283848281,4280887600,4278263177 
-     DATA 4281636569,4282623666,4278256387,4281282357 
-     DATA 4289835441,4291743438,4291940817,4285690482 
-     DATA 4281150765,4280558628,4281413937,4282400832 
-     DATA 4284572001,4289769650,4279176977,4278197641 
-     DATA 4280585429,4284014834,4278322438,4283453530 
-     DATA 4291546059,4284045657,4281742902,4280821800 
-     DATA 4281874488,4282532418,4283256141,4287466893 
-     DATA 4289835448,4279600595,4284350207,4279182124 
-     DATA 4278913810,4281151030,4280953651,4281150774 
-     DATA 4278848014,4284440418,4291480266,4292269782 
-     DATA 4293388263,4293585642,4290295992,4283387727 
-     DATA 4282137660,4283321934,4283914071,4293914607 
-     DATA 4284703592,4278616275,4283627263,4281035640 
-     DATA 4281545531,4292927970,4293125348,4293914864 
-     DATA 4282071870,4284506210,4291282887,4293059298 
-     DATA 4293322470,4293388521,4290953923,4283519313 
-     DATA 4280361249,4288980132,4293191142,4290625218 
-     DATA 4278222035,4282707199,4283020486,4289046185 
-     DATA 4291283144,4290690750,4291348937,4281282356 
-     DATA 4278255877,4281479734,4291019458,4292796383 
-     DATA 4293519071,4294567868,4289241230,4281940281 
-     DATA 4284177244,4292596671,4294963139,4283781713 
-     DATA 4278222291,4281065727,4284608508,4278190085 
-     DATA 4288848804,4289901234,4290559164,4280953391 
-     DATA 4280032293,4288059029,4292203991,4294764211 
-     DATA 4294961325,4293908901,4285557857,4283124555 
-     DATA 4283190348,4284308312,4292856989,4294961069 
-     DATA 4292856987,4278387463,4279425023,4284543487 
-     DATA 4279580737,4279241999,4288124824,4289967027 
-     DATA 4290624957,4278190340,4278718003,4278717745 
-     DATA 4278652208,4280034126,4284245130,4290360507 
-     DATA 4291805619,4291871931,4292135101,4285427590 
-     DATA 4281810530,4280757842,4281086807,4280823636 
-     DATA 4282600048,4282600052,4286216071,4291805625 
-     DATA 4291609023,4290622387,4281217360,4278454826 
-     DATA 4278519325,4278395024,4278222546,4278245375 
-     DATA 4284413951,4281631370,4286545792,4279641736 
-     DATA 4281422079,4281356287,4281290495,4281224702 
-     DATA 4281027325,4280961789,4280961788,4281158910 
-     DATA 4281224703,4281027324,4281356030,4281420796 
-     DATA 4281157367,4281425144,4281360610,4279180406 
-     DATA 4280889705,4289112500,4289572532,4289769907 
-     DATA 4289769649,4290361785,4280887599,4278394785 
-     DATA 4278397137,4278397135,4278396879,4278396880 
-     DATA 4278528724,4278397397,4278331344,4279514827 
-     DATA 4280632006,4282274741,4285100955,4287597957 
-     DATA 4287400838,4287137928,4287203721,4283914074 
-     DATA 4278584840,4278328991,4278331342,4278265551 
-     DATA 4278199249,4278594250,4282800035,4285691528 
-     DATA 4286742912,4282861384,4278328992,4278331599 
-     DATA 4278331598,4278331340,4278331339,4278331338 
-     DATA 4278331341,4278331600,4278331601,4278331345 
-     DATA 4278331343,4278200015,4278660043,4280828342 
-     DATA 4282401355,4278262149,4278263446,4278263445 
-     DATA 4278263706,4278263967,4278329508,4278329770 
-     DATA 4278330289,4278330554,4278330817,4278331077 
-     DATA 4278198981,4278193483,4278261618,4278263705 
-     DATA 4278263708,4278263970,4278330549,4278397394 
-     DATA 4278790076,4278526120,4278191946,4278198428 
-     DATA 4280294018,4279770248,4278198430,4278263703 
-     DATA 4278329763,4278330294,4278331081,4278726368 
-     DATA 4279318781,4278661111,4285892299,4291613155 
-     DATA 4279638579,4278198171,4286843961,4291690496 
-     DATA 4291428611,4284354901,4278198170,4278329497 
-     DATA 4278329498,4278263447,4278528195,4279384575 
-     DATA 4279252991,4279186131,4294835967,4294309625 
-     DATA 4285295994,4278263704,4278264490,4278264758 
-     DATA 4278265020,4278265023,4278265022,4278265015 
-     DATA 4278329761,4285206603,4281800561,4279508107 
-     DATA 4286712890,4291756032,4291887104,4286581819 
-     DATA 4279382196,4280961230,4283986144,4291811320 
-     DATA 4291679736,4283131624,4278331346,4279252724 
-     DATA 4279252986,4278200026,4283393738,4293980401 
-     DATA 4293585641,4287796382,4278387720,4278197913 
-     DATA 4279250862,4279449040,4278660313,4278923753 
-     DATA 4279121139,4279121395,4278924011,4278660316 
-     DATA 4278397136,4278330288,4284027480,4292214784 
-     DATA 4291821568,4289856533,4290118674,4292083712 
-     DATA 4288022827,4278200017,4293191931,4289444345 
-     DATA 4291942651,4294967295,4287537661,4278990077 
-     DATA 4278528985,4278197963,4286287062,4294704124 
-     DATA 4289243568,4279243028,4278196378,4284380115 
-     DATA 4294309886,4292600319,4281357055,4279187193 
-     DATA 4278857957,4278594779,4278594522,4278594781 
-     DATA 4278660574,4278396084,4283503453,4286712633 
-     DATA 4282979428,4278525846,4279049873,4292149248 
-     DATA 4287957291,4278330552,4278397140,4281553368 
-     DATA 4279317713,4280829909,4287274217,4285498595 
-     DATA 4279317972,4278857961,4278923755,4278265548 
-     DATA 4278197705,4287799518,4293519848,4290034132 
-     DATA 4279572257,4278197916,4279185605,4294375422 
-     DATA 4289707260,4279120866,4278397138,4278264231 
-     DATA 4278787731,4288415782,4292018176,4290053140 
-     DATA 4282783079,4280490623,4278330553,4278198989 
-     DATA 4278199501,4278197447,4288588513,4293651433 
-     DATA 4290100967,4279640406,4278263707,4278198964 
-     DATA 4279647210,4292731903,4289181179,4279120596 
-     DATA 4278199757,4278263709,4278263964,4278198431 
-     DATA 4288088621,4291494149,4290839309,4286123587 
-     DATA 4288743462,4292345856,4291952640,4292870144 
-     DATA 4283832441,4278200530,4278197704,4287865309 
-     DATA 4293651176,4289969379,4279643540,4278594780 
-     DATA 4279252987,4278398203,4278198741,4278330029 
-     DATA 4278330028,4278330293,4278264235,4278195300 
-     DATA 4278195561,4278195820,4279112542,4280815435 
-     DATA 4281077576,4278392166,4278457446,4285007388 
-     DATA 4287496192,4287692800,4284941852,4281535812 
-     DATA 4287103235,4287365120,4284484929,4278200271 
-     DATA 4278330550,4278331080,4278197964,4286352850 
-     DATA 4293454054,4289180125,4279317192,4278261361 
-     DATA 4278396349,4279055603,4278594778,4278196610 
-     DATA 4278391654,4284352035,4287430656,4285924114 
-     DATA 4278195309,4278784866,4285793043,4287561728 
-     DATA 4287168515,4281142856,4278195569,4283566124 
-     DATA 4287823872,4286906894,4280098983,4278198991 
-     DATA 4283327426,4294440951,4294769657,4287667666 
-     DATA 4278660566,4278191126,4278261362,4278594523 
-     DATA 4278989549,4278329240,4278591105,4278656638 
-     DATA 4278460560,4278197917,4278264488,4278265807 
-     DATA 4281739161,4290256932,4290977052,4290780702 
-     DATA 4290911516,4288226363,4280235670,4280890511 
-     DATA 4284689251,4283510641,4279973786,4279842714 
-     DATA 4282986359,4291370263,4285932130,4278396877 
-     DATA 4278264492,4278263702,4278525844,4278787708 
-     DATA 4278722175,4278329239,4278198172,4278330547 
-     DATA 4278199759,4279448250,4293256677,4294309364 
-     DATA 4286221793,4278199503,4278192955,4278262146 
-     DATA 4278990065,4278330814,4278787702,4279900702 
-     DATA 4279900696,4279834904,4280496228,4278460824 
-     DATA 4278198957,4280557998,4289922331,4291493890 
-     DATA 4284354899,4278198429,4279639178,4290380559 
-     DATA 4291035659,4282195091,4278200532,4280561513 
-     DATA 4281611315,4279900697,4279966233,4278918763 
-     DATA 4278330816,4278197442,4288259022,4292073188 
-     DATA 4281422050,4278331604,4278259542,4278195856 
-     DATA 4279055871,4278792434,4278199499,4278264227 
-     DATA 4278198174,4279245905,4279966229,4279900698 
-     DATA 4282992708,4282665318,4278526617,4278199746 
-     DATA 4286909504,4289790472,4290772992,4290576384 
-     DATA 4290510848,4289135376,4281276010,4278197390 
-     DATA 4279572862,4284419653,4289921287,4288939548 
-     DATA 4278462415,4278265539,4278592409,4282139754 
-     DATA 4283124296,4280492835,4279834905,4279376968 
-     DATA 4278199221,4280566472,4278792700,4278200283 
-     DATA 4278193764,4278716426,4282663492,4285036746 
-     DATA 4284907774,4285170163,4285432802,4285498852 
-     DATA 4282013127,4278197144,4278984034,4279900699 
-     DATA 4284440154,4280560725,4278198439,4278195825 
-     DATA 4278784867,4285989906,4287627264,4287889408 
-     DATA 4288217088,4288086016,4283830356,4278200794 
-     DATA 4280101477,4284242772,4279115099,4278197400 
-     DATA 4281289407,4285630437,4285367267,4285301488 
-     DATA 4284907775,4285170416,4284903852,4284440168 
-     DATA 4282532426,4278782218,4278650631,4290559169 
-     DATA 4294901502,4294572532,4294572534,4294966773 
-     DATA 4280828586,4280559931,4280953385,4280163870 
-     DATA 4283585106,4280098073,4278787698,4278198434 
-     DATA 4278330551,4278194794,4278194535,4280748871 
-     DATA 4286906369,4287299584,4286447622,4281469503 
-     DATA 4281862203,4286185482,4281145999,4278200265 
-     DATA 4278263968,4278656644,4280294939,4283387726 
-     DATA 4282664004,4280032284,4279769112,4279834648 
-     DATA 4279638308,4278328454,4279513505,4294967286 
-     DATA 4294309361,4294309105,4294901241,4294572535 
-     DATA 4291348684,4284308835,4293783021,4294111986 
-     DATA 4291349725,4278195605,4279642224,4281676849 
-     DATA 4280624421,4283058762,4279966491,4279638832 
-     DATA 4278199230,4280960174,4280960427,4283776908 
-     DATA 4291374389,4292225835,4292291370,4289671496 
-     DATA 4281811874,4280894892,4281484454,4289737031 
-     DATA 4292553511,4279446214,4278199483,4278198176 
-     DATA 4279573567,4279966489,4282335039,4283716692 
-     DATA 4281611053,4279773290,4278197656,4290165975 
-     DATA 4293585639,4293651435,4293980400,4294177779 
-     DATA 4285624694,4290690752,4294638330,4293848553 
-     DATA 4286680774,4278197139,4280692306,4281676850 
-     DATA 4282006074,4279835170,4278722172,4278264754 
-     DATA 4279442571,4288612131,4291100934,4282586472 
-     DATA 4278198691,4285206345,4291297542,4278200792 
-     DATA 4278264752,4278525837,4279900701,4283979864 
-     DATA 4281611057,4281086020,4278197912,4286220483 
-     DATA 4293914345,4293717228,4292598749,4293125093 
-     DATA 4294111722,4283327156,4278197134,4279177247 
-     DATA 4279308311,4279242776,4279374361,4280690220 
-     DATA 4282598211,4283650899,4280427042,4279049569 
-     DATA 4278199215,4284028269,4291166208,4290117632 
-     DATA 4289986560,4288087062,4278262662,4278393733 
-     DATA 4283502667,4286580775,4285467444,4288611088 
-     DATA 4288153122,4278200789,4278264491,4278918508 
-     DATA 4279900700,4283782485,4282729797,4281413938 
-     DATA 4281150770,4281019186,4281216043,4278394770 
-     DATA 4283064243,4294177258,4292006611,4293454056 
-     DATA 4294308843,4281222826,4278196869,4279111184 
-     DATA 4281413939,4282861383,4279245903,4278198695 
-     DATA 4280884628,4288151552,4287758336,4287954944 
-     DATA 4285858837,4278916196,4278195824,4284221223 
-     DATA 4285270581,4278200531,4278198696,4279245910 
-     DATA 4279703319,4283848278,4281874489,4278255874 
-     DATA 4278255616,4278261358,4281025706,4292335575 
-     DATA 4288980136,4292861919,4294440428,4279907748 
-     DATA 4278195827,4279769116,4282203453,4284177243 
-     DATA 4279311430,4278528192,4281544301,4281609583 
-     DATA 4280561787,4279644548,4279972225,4282592100 
-     DATA 4286652981,4283967572,4285211974,4288879900 
-     DATA 4289076505,4285669459,4278200272,4278198694 
-     DATA 4279442504,4284440415,4282992969,4282269246 
-     DATA 4279900704,4278260059,4280631209,4293322471 
-     DATA 4293454055,4292796126,4290493373,4283848285 
-     DATA 4292138196,4293124568,4279841954,4278195308 
-     DATA 4278387460,4280756011,4284308829,4279376965 
-     DATA 4278331076,4278197655,4278721939,4282062446 
-     DATA 4278918289,4278394262,4285795395,4292411392 
-     DATA 4287695677,4279508037,4284111450,4283453520 
-     DATA 4281150768,4278259796,4280368294,4292006612 
-     DATA 4292203988,4292006610,4284900973,4288585380 
-     DATA 4291809231,4292664018,4280894124,4278196089 
-     DATA 4278650634,4282795590,4282795594,4279311433 
-     DATA 4278265287,4278329237,4278329496,4278394775 
-     DATA 4278656916,4278263960,4278198426,4283176034 
-     DATA 4291690498,4288219704,4278200018,4278460847 
-     DATA 4279442507,4281677116,4284243036,4278848016 
-     DATA 4278260575,4280499886,4292203729,4291875023 
-     DATA 4292203989,4288980138,4278519046,4278782220 
-     DATA 4286743170,4287203722,4280887075,4279769118 
-     DATA 4279966499,4278782223,4281282354,4279900438 
-     DATA 4279965969,4281676586,4281742382,4281611052 
-     DATA 4281676845,4281676589,4281480496,4281022005 
-     DATA 4281152819,4281150241,4279900176,4279900439 
-     DATA 4280821805,4278453253,4279308569,4280295461 
-     DATA 4280097560,4287269515,4286808963,4284637799 
-     DATA 4278584841,4281216562,4284177245,4279111189 
-     DATA 4282466625,4278979596,4281348145,4279111188 
-     DATA 4283387732,4278782224,4281808695,4281808702 
-     DATA 4281479731,4278584838,4281150773,4279242772 
-     DATA 4280163874,4284374622,4279571740,4281874497 
-     DATA 4282729805,4284243037,4280492840,4278584844 
-     DATA 4283453524,4278387462,4282006081,4281874490 
-     DATA 4280887595,4281940283,4282006079,4278387461 
-     DATA 4278650632,4282992974,4278782222,4278848012 
-     DATA 4282664008,4280558633,4280427043,4280492837 
-     DATA 4282335044,4281611319,4278321671,4278716428 
-     DATA 4278716427,4280624423,4282729801,4278584842 
-     DATA 4278519051,4281216561,4279308562,4280361252 
-     DATA 4283782490,4278716424,4279571733,4280953388 
-     DATA 4281479732,4283848282,4278782221,4280098084 
-     DATA 4281282352,4279966496,4283387729,4282466626 
-     DATA 4280427047,4281348146,4280558634,4283256144 
-     DATA 4279834909,4278584843,4278321668,4279242769 
-     DATA 4280229672,4280624425,4279374357,4281348144 
-     DATA 4279440151,4280821802,4283519315,4279703328 
-     DATA 4278453256,4282203456,4283453522,4282006080 
-     DATA 4278848013,4281216560,4278979600,4280492841 
-     DATA 4281874491,4278716433,4278782226,4279505946 
-     DATA 4281808698,4280427046,4279111186,4281216559 
-     DATA 4278913807,4279308565,4278519047,4278650639 
-     DATA 4281150767,4279045394,4281150766,4281677112 
-     DATA 4279308566,4281084975,4279637526,4278519054 
-     DATA 4281413940,4278255876,4280361260,4280295464 
-     DATA 4278321666,4280229665,4280887598,4280032288 
-     DATA 4278979602,4278979601,4281348149,4282006075 
-     DATA 4282861386,4280098083,4280163878,4282532420 
-     DATA 4278716425,4279045389,4280887597,4282729798 
-     DATA 4278782217,4279703326,4281808696,4279176975 
-     DATA 4279176980,4280558635,4278453255,4282729799 
-     DATA 4279045391,4282203457,4280163877,4278321667 
-     DATA 4281413943,4281808699,4278650633,4280229668 
-     DATA 4282795591,4280163875,4279637532,4280229670 
-     DATA 4279900706,4281282360,4280163879,0,22,1,1,0,11,2,0,3,0 
-     DATA 0,45,4,0,5,0,6,0,7,0,8,0,6,0,0,9 
-     DATA 9,0,10,0,7,0,0,41,7,0,4,0,0,0,11,0 
-     DATA 12,0,13,0,14,0,15,0,16,0,0,0,7,0,17,0 
-     DATA 0,6,18,0,19,0,20,0,0,40,21,0,22,0,23,0 
-     DATA 4,0,11,0,24,0,25,0,26,0,27,0,28,0,29,0 
-     DATA 30,0,31,0,32,0,0,5,9,0,33,0,34,0,0,40 
-     DATA 35,0,36,0,37,0,38,0,39,0,40,0,25,0,26,0 
-     DATA 41,0,42,0,43,0,44,0,45,0,31,0,0,5,46,0 
-     DATA 47,0,48,0,0,40,49,0,50,0,51,0,52,0,53,0 
-     DATA 54,0,55,0,56,0,57,0,55,0,58,0,59,0,60,0 
-     DATA 61,0,0,5,62,0,63,0,64,0,65,0,0,38,66,0 
-     DATA 67,0,59,0,68,0,69,0,70,0,54,1,55,0,71,0 
-     DATA 53,0,54,0,58,0,72,0,73,0,74,0,0,4,75,0 
-     DATA 76,0,77,0,78,0,0,39,79,0,80,0,81,0,82,0 
-     DATA 83,0,84,0,54,1,85,0,86,0,54,1,87,0,88,0 
-     DATA 89,0,90,0,0,3,91,0,92,0,93,0,94,0,0,39 
-     DATA 95,0,81,0,96,0,82,0,96,0,97,0,98,0,54,0 
-     DATA 99,0,84,0,54,0,100,0,101,0,102,0,103,0,104,0 
-     DATA 7,0,0,2,91,0,105,0,106,0,107,0,0,2,108,0 
-     DATA 109,0,110,7,111,0,112,0,0,24,113,0,114,0,115,0 
-     DATA 116,0,117,0,118,0,119,0,120,0,99,0,56,0,27,0 
-     DATA 102,0,121,0,122,0,96,0,123,0,124,0,0,2,75,0 
-     DATA 125,0,126,0,127,0,0,1,128,0,129,0,130,8,131,0 
-     DATA 132,0,0,23,5,0,133,0,134,0,135,0,136,0,137,0 
-     DATA 138,0,139,0,120,0,99,0,56,0,41,0,102,0,140,0 
-     DATA 121,0,141,0,142,0,143,0,4,0,0,1,75,0,144,0 
-     DATA 145,0,146,0,0,0,1,0,147,0,148,0,149,8,150,0 
-     DATA 151,0,0,23,152,0,153,0,154,0,155,0,156,0,157,0 
-     DATA 158,0,159,0,98,0,99,0,56,0,27,0,120,0,84,0 
-     DATA 160,0,161,0,162,0,163,0,0,2,75,0,164,0,165,0 
-     DATA 166,0,167,0,39,0,168,0,169,9,170,0,171,0,0,24 
-     DATA 172,0,173,0,174,0,175,0,176,0,177,0,178,0,120,0 
-     DATA 99,0,56,0,41,0,179,0,180,0,181,0,182,0,183,0 
-     DATA 184,0,185,0,0,1,75,0,164,0,186,0,187,0,188,0 
-     DATA 189,0,190,0,191,9,192,0,171,0,0,11,193,0,194,0 
-     DATA 195,9,196,0,197,0,198,0,199,0,200,0,201,0,202,0 
-     DATA 203,0,204,0,205,0,206,0,207,0,208,0,209,0,210,0 
-     DATA 211,0,212,0,213,0,214,0,215,0,216,0,217,0,218,0 
-     DATA 219,0,220,0,221,0,4,0,222,0,191,9,192,0,171,0 
-     DATA 0,11,223,0,224,0,225,10,226,0,227,0,228,0,229,1 
-     DATA 230,0,231,0,226,3,232,0,227,0,231,0,228,0,233,0 
-     DATA 228,0,226,0,225,1,234,0,235,0,236,0,237,0,238,0 
-     DATA 239,0,240,0,241,0,242,0,243,0,169,5,244,0,245,0 
-     DATA 246,0,0,11,247,0,248,0,249,33,250,0,251,0,252,0 
-     DATA 253,0,254,0,255,0,256,0,257,0,258,0,259,0,260,0 
-     DATA 261,0,262,0,263,0,28,0,264,0,0,11,265,0,254,0 
-     DATA 266,40,267,0,268,0,269,0,270,0,271,0,272,0,273,0 
-     DATA 0,13,274,0,275,0,276,22,277,0,278,0,279,1,277,0 
-     DATA 280,0,281,0,282,0,283,1,254,1,284,0,266,7,285,0 
-     DATA 286,0,287,0,288,0,0,13,289,0,290,0,291,22,290,4 
-     DATA 291,1,290,0,292,0,293,0,294,0,295,0,296,0,297,0 
-     DATA 298,0,299,0,278,0,284,1,266,3,267,0,300,0,301,0 
-     DATA 0,12,302,0,292,0,303,37,292,0,304,0,305,0,306,0 
-     DATA 278,0,254,0,266,3,307,0,308,0,309,0,310,0,4,0 
-     DATA 0,8,302,0,292,0,303,24,311,0,312,0,313,0,314,0 
-     DATA 303,11,315,0,290,0,316,0,317,0,318,0,266,0,319,0 
-     DATA 320,0,321,0,322,0,323,0,324,0,0,8,302,0,292,0 
-     DATA 303,23,325,0,326,0,327,0,328,0,329,0,330,0,303,11 
-     DATA 331,0,332,0,303,0,333,0,334,0,335,0,336,0,337,0 
-     DATA 338,0,339,0,340,0,4,0,0,7,302,0,292,0,303,2 
-     DATA 341,0,292,0,342,0,343,0,344,0,345,0,346,0,347,0 
-     DATA 348,0,315,0,303,6,330,0,349,0,350,0,351,0,352,0 
-     DATA 353,1,327,0,354,0,355,0,325,0,303,5,341,0,292,0 
-     DATA 356,0,357,0,358,0,359,0,360,0,361,0,362,0,363,0 
-     DATA 364,0,365,0,366,0,367,0,368,0,369,0,370,0,0,7 
-     DATA 302,0,292,0,303,1,371,0,372,0,373,0,374,0,375,0 
-     DATA 376,0,377,0,378,0,379,0,380,0,381,0,303,6,314,0 
-     DATA 382,0,354,0,383,0,384,0,385,0,386,0,353,0,327,0 
-     DATA 387,0,388,0,311,0,330,0,303,3,295,0,389,0,390,0 
-     DATA 391,0,392,0,393,1,394,0,395,0,320,0,396,0,397,0 
-     DATA 398,0,399,0,116,0,400,0,401,0,0,7,302,0,292,0 
-     DATA 341,0,402,0,403,0,404,0,405,0,406,0,407,0,408,0 
-     DATA 409,0,396,0,410,0,411,0,412,0,413,0,303,7,414,0 
-     DATA 415,0,416,0,417,0,418,0,419,0,327,1,354,0,420,0 
-     DATA 417,0,311,0,303,0,292,0,421,0,248,0,422,0,423,0 
-     DATA 424,0,425,0,426,0,427,0,428,0,429,0,430,0,431,0 
-     DATA 432,0,433,0,393,0,434,0,435,0,436,0,0,7,302,0 
-     DATA 292,0,437,0,438,0,439,0,393,0,440,0,441,0,431,0 
-     DATA 280,0,266,3,280,0,442,0,443,0,341,0,303,5,325,0 
-     DATA 311,0,351,0,444,0,314,0,445,0,446,0,327,1,354,0 
-     DATA 447,0,448,0,449,0,450,0,283,0,266,4,451,0,452,0 
-     DATA 266,1,442,0,266,0,453,0,454,0,393,0,455,0,456,0 
-     DATA 457,0,0,7,302,0,458,0,459,0,460,0,461,0,462,0 
-     DATA 463,0,464,0,266,2,284,2,266,1,280,0,465,0,466,5 
-     DATA 467,0,468,0,469,0,470,0,471,0,472,0,473,0,419,0 
-     DATA 474,2,475,0,476,0,477,0,266,1,284,2,266,6,478,0 
-     DATA 479,0,393,0,480,0,481,0,482,0,4,0,0,6,302,0 
-     DATA 305,0,483,0,484,0,485,0,486,0,280,0,266,0,284,0 
-     DATA 318,0,297,0,487,0,488,0,489,0,299,0,266,0,284,0 
-     DATA 490,0,491,0,492,0,493,0,494,0,495,0,496,0,497,0 
-     DATA 498,0,499,0,500,0,501,1,502,0,503,0,504,0,505,0 
-     DATA 501,0,506,0,507,0,266,0,284,0,299,0,508,0,488,0 
-     DATA 487,0,450,0,509,0,254,0,266,3,510,0,511,0,393,0 
-     DATA 512,0,513,0,514,0,4,0,0,6,515,0,516,0,517,0 
-     DATA 335,0,518,0,266,1,254,0,297,0,303,5,381,0,266,0 
-     DATA 509,0,519,0,520,0,521,0,522,0,500,0,501,0,523,0 
-     DATA 524,0,525,0,526,0,527,0,528,0,529,0,530,0,531,0 
-     DATA 532,0,533,0,534,0,266,0,280,0,296,0,292,0,303,3 
-     DATA 292,0,489,0,254,0,266,2,535,0,536,0,537,0,538,0 
-     DATA 539,0,540,0,541,0,0,6,542,0,543,0,335,0,544,0 
-     DATA 284,0,266,0,284,0,489,0,341,0,458,0,545,0,546,0 
-     DATA 547,0,548,0,549,0,290,0,550,0,551,0,552,0,553,0 
-     DATA 554,0,555,2,556,0,557,0,558,0,559,0,560,0,561,0 
-     DATA 562,0,563,0,564,0,565,0,566,0,567,0,284,0,568,0 
-     DATA 569,0,549,0,570,0,571,0,572,0,573,0,574,0,303,0 
-     DATA 575,0,280,0,266,1,576,0,577,0,578,0,579,0,580,0 
-     DATA 581,0,582,0,0,6,583,0,584,0,320,0,543,0,266,1 
-     DATA 585,0,458,0,292,0,586,0,587,0,588,0,589,0,86,0 
-     DATA 590,0,591,0,303,0,592,0,593,0,594,0,327,4,595,0 
-     DATA 596,0,597,0,303,1,330,0,598,0,599,0,600,0,601,0 
-     DATA 602,0,296,0,315,0,332,0,603,0,604,0,605,0,588,0 
-     DATA 606,0,607,0,458,0,341,0,608,0,266,1,284,0,609,0 
-     DATA 610,0,611,0,612,0,613,0,614,0,0,6,615,0,616,0 
-     DATA 617,0,268,0,451,0,618,0,619,0,620,0,621,0,622,0 
-     DATA 605,0,623,0,51,0,98,0,624,0,625,0,626,0,458,0 
-     DATA 627,0,628,0,629,0,630,0,631,0,632,1,631,0,633,0 
-     DATA 634,0,635,0,636,0,637,0,638,0,631,0,639,0,640,0 
-     DATA 641,0,292,0,642,0,643,0,644,0,55,0,645,0,646,0 
-     DATA 623,0,622,0,647,0,341,0,293,0,464,0,451,1,535,0 
-     DATA 648,0,649,0,650,0,651,0,652,0,0,4,653,0,654,0 
-     DATA 655,0,656,0,657,0,658,0,659,0,660,0,661,0,662,0 
-     DATA 663,0,623,1,646,0,41,0,100,0,102,0,664,0,665,0 
-     DATA 437,0,487,0,666,0,667,0,668,0,669,0,670,0,500,2 
-     DATA 671,0,672,0,673,0,501,0,500,0,527,0,674,0,675,0 
-     DATA 550,0,292,0,676,0,677,0,121,0,159,0,70,0,646,0 
-     DATA 623,1,663,0,678,0,679,0,680,0,681,0,682,2,683,0 
-     DATA 684,0,685,0,686,0,687,0,688,0,689,0,0,0,690,0 
-     DATA 691,0,692,0,393,0,693,0,393,0,694,0,695,0,696,0 
-     DATA 62,0,697,0,698,0,27,0,699,0,623,0,86,0,87,0 
-     DATA 700,1,701,0,702,0,703,0,704,0,705,0,706,0,707,0 
-     DATA 708,0,709,1,527,0,710,0,711,0,712,0,713,0,527,0 
-     DATA 522,0,714,0,715,0,716,0,717,0,718,0,719,0,139,0 
-     DATA 720,0,25,0,721,0,722,1,723,0,724,0,725,0,726,0 
-     DATA 727,0,728,0,729,2,730,0,393,0,731,0,393,1,732,0 
-     DATA 7,0,733,0,393,2,734,0,735,0,455,0,736,0,737,0 
-     DATA 738,0,739,0,54,0,55,0,56,0,740,0,58,0,741,0 
-     DATA 122,0,87,0,742,0,743,0,574,0,744,0,745,0,746,0 
-     DATA 747,0,748,0,749,0,750,0,751,0,752,0,746,0,753,0 
-     DATA 754,0,755,0,756,0,757,0,758,0,759,0,760,0,761,0 
-     DATA 762,0,763,0,180,0,55,0,54,0,58,2,764,0,765,0 
-     DATA 766,0,767,0,768,0,136,1,578,0,769,0,770,0,771,0 
-     DATA 393,2,772,0,773,0,771,0,774,0,123,0,136,1,775,0 
-     DATA 776,0,777,0,778,0,779,0,55,1,54,1,780,0,102,0 
-     DATA 97,0,56,0,623,0,781,0,782,0,783,0,592,0,784,0 
-     DATA 785,0,354,0,327,0,786,0,787,0,574,0,325,0,620,0 
-     DATA 788,0,789,0,790,0,791,0,792,0,793,0,794,0,646,0 
-     DATA 84,0,795,0,180,0,120,0,54,3,796,0,797,0,798,0 
-     DATA 799,0,800,0,136,4,116,0,771,0,774,0,801,0,802,0 
-     DATA 803,0,578,1,136,2,804,0,805,0,806,0,807,0,808,0 
-     DATA 809,0,810,0,811,0,54,0,812,0,121,0,813,0,814,0 
-     DATA 623,0,794,0,815,0,816,0,817,0,818,0,819,0,820,0 
-     DATA 819,0,821,0,822,0,823,0,824,0,825,0,826,0,827,0 
-     DATA 828,0,829,0,830,0,831,0,832,0,623,0,51,0,833,0 
-     DATA 102,0,834,0,835,0,836,0,837,2,838,0,839,0,840,0 
-     DATA 841,0,136,5,578,1,136,0,116,0,842,0,843,0,136,3 
-     DATA 844,0,845,0,846,0,0,3,847,0,848,0,741,0,813,0 
-     DATA 849,0,623,1,605,0,850,0,851,0,852,0,853,0,854,0 
-     DATA 855,0,856,0,857,0,858,0,859,0,670,2,532,0,860,0 
-     DATA 861,0,862,0,863,0,663,0,623,0,864,0,834,0,865,0 
-     DATA 72,0,866,0,22,0,867,2,868,0,869,0,870,0,841,0 
-     DATA 136,7,116,0,871,0,872,0,873,0,116,3,874,0,875,0 
-     DATA 876,0,0,2,4,0,877,0,878,0,741,0,879,0,159,0 
-     DATA 623,1,605,0,880,0,304,0,881,0,882,0,883,0,884,0 
-     DATA 885,0,886,0,887,0,888,0,889,0,890,0,891,0,892,0 
-     DATA 893,0,894,0,895,0,896,0,623,1,721,0,100,0,897,0 
-     DATA 898,0,899,0,900,0,0,3,901,0,902,0,903,0,904,0 
-     DATA 116,5,843,0,905,0,906,0,907,0,908,0,82,0,908,2 
-     DATA 909,0,910,0,911,0,0,2,912,0,913,0,720,0,179,0 
-     DATA 914,0,98,0,57,0,623,0,605,0,915,0,458,0,916,0 
-     DATA 917,0,371,2,918,0,919,0,920,0,371,0,921,0,922,0 
-     DATA 923,0,924,0,477,0,895,0,925,0,623,0,742,0,27,0 
-     DATA 54,0,926,0,927,0,101,0,928,0,11,0,0,2,929,0 
-     DATA 930,0,931,0,932,0,908,5,82,0,933,0,934,0,689,0 
-     DATA 935,0,908,0,936,2,937,0,938,0,939,0,0,2,940,0 
-     DATA 100,0,941,0,122,0,942,0,246,0,55,0,99,0,589,0 
-     DATA 943,0,666,0,944,0,945,0,946,2,947,0,948,0,949,0 
-     DATA 946,0,950,0,951,0,952,0,953,0,954,0,955,0,956,0 
-     DATA 623,0,85,0,98,0,36,0,957,0,958,0,941,0,159,0 
-     DATA 959,0,0,2,960,0,961,0,962,0,963,0,936,5,964,0 
-     DATA 965,0,966,0,0,0,967,0,124,0,968,2,969,0,970,0 
-     DATA 0,0,4,0,0,1,971,0,120,0,898,0,88,0,972,0 
-     DATA 973,0,974,0,55,0,57,0,975,0,976,0,977,0,978,2 
-     DATA 979,0,980,0,981,3,982,0,983,0,984,0,985,0,986,0 
-     DATA 987,0,52,0,53,0,988,0,989,0,990,0,88,0,180,0 
-     DATA 59,0,991,0,0,3,992,0,993,0,968,5,994,0,995,0 
-     DATA 996,0,0,11,7,0,997,0,87,0,927,0,998,0,6,0 
-     DATA 0,0,999,0,54,1,84,0,1000,0,55,0,54,1,98,0 
-     DATA 1001,0,70,0,52,0,722,0,740,0,52,0,53,0,54,1 
-     DATA 899,0,1000,0,70,0,86,0,1002,0,1003,0,0,0,4,0 
-     DATA 1004,0,763,0,1000,0,54,0,167,0,0,25,1005,0,1006,0 
-     DATA 941,0,879,0,1007,0,0,2,990,0,1008,0,849,0,139,0 
-     DATA 55,0,54,1,98,0,1009,0,26,0,646,0,15,0,814,0 
-     DATA 646,0,53,0,54,1,120,0,763,0,834,0,54,0,972,0 
-     DATA 4,0,0,1,1010,0,879,0,741,0,55,0,1011,0,0,25 
-     DATA 1012,0,159,0,102,0,1013,0,1014,0,0,3,1015,0,700,0 
-     DATA 179,0,55,0,54,1,98,0,1009,0,26,0,646,0,15,0 
-     DATA 814,0,646,0,53,0,54,1,780,0,180,0,139,0,1016,0 
-     DATA 7,0,0,2,1011,0,1017,0,121,0,780,0,1018,0,0,25 
-     DATA 1019,0,55,0,813,0,1020,0,912,0,0,1,1021,0,1022,0 
-     DATA 813,0,898,0,1023,0,54,2,98,0,1009,0,26,0,646,0 
-     DATA 15,0,814,0,646,0,53,0,54,1,1024,0,1025,0,741,0 
-     DATA 927,0,1026,0,1027,0,0,1,1028,0,1029,0,813,0,159,0 
-     DATA 1030,0,0,24,4,0,1031,0,51,0,941,0,957,0,867,0 
-     DATA 0,0,996,0,1032,0,180,0,741,0,159,0,1033,0,58,0 
-     DATA 54,1,98,0,1009,0,26,0,646,0,15,0,814,0,646,0 
-     DATA 53,0,54,1,1034,0,1035,0,159,0,179,0,121,0,1036,0 
-     DATA 996,0,0,0,867,0,1037,0,849,0,645,0,689,0,6,0 
-     DATA 0,23,1038,0,14,0,57,0,61,0,1039,0,0,0,1040,0 
-     DATA 942,0,119,0,849,0,98,0,54,0,811,0,58,0,54,1 
-     DATA 98,0,1009,0,26,0,646,0,15,0,814,0,646,0,53,0 
-     DATA 54,1,1034,0,1041,0,54,0,98,0,941,0,927,0,1042,0 
-     DATA 1043,0,0,0,1044,0,1045,0,740,0,1046,0,1021,0,0,23 
-     DATA 996,0,722,0,99,0,1047,0,7,0,1040,0,1048,0,179,0 
-     DATA 720,0,54,6,98,0,1049,0,26,0,742,0,1050,0,645,0 
-     DATA 742,0,53,0,54,1,1051,0,1052,0,54,1,55,0,720,0 
-     DATA 179,0,1053,0,1054,0,0,0,1055,0,26,0,623,0,996,0 
-     DATA 4,0,0,21,17,0,653,0,140,0,1056,0,959,0,1057,0 
-     DATA 1058,0,179,0,1059,0,1060,0,848,0,54,19,1061,0,1062,0 
-     DATA 1059,0,180,0,1063,0,1064,0,1065,0,55,0,71,0,1031,0 
-     DATA 867,0,0,21,1066,0,1067,0,645,0,848,0,1068,0,1058,0 
-     DATA 179,0,87,0,1069,0,17,0,1070,0,53,0,54,0,98,0 
-     DATA 86,0,25,0,1071,9,25,0,53,1,54,1,1072,0,4,0 
-     DATA 1073,0,87,0,180,0,1074,0,1075,0,974,0,85,0,1070,0 
-     DATA 1066,0,0,20,4,0,1076,0,646,0,41,0,1077,0,1078,0 
-     DATA 179,0,159,0,54,0,1035,0,7,0,22,0,55,0,780,0 
-     DATA 121,0,100,0,722,0,742,9,623,0,898,0,102,0,100,0 
-     DATA 54,0,90,0,4,0,99,0,54,0,780,0,741,0,139,0 
-     DATA 1079,0,25,0,646,0,32,0,0,21,1080,0,52,0,54,0 
-     DATA 1000,0,898,0,100,0,54,1,1081,0,1082,0,1083,0,101,0 
-     DATA 927,0,898,0,1084,0,35,0,1085,0,1086,7,1085,0,1087,0 
-     DATA 1088,0,898,0,139,0,87,0,1089,0,1090,0,1091,0,54,1 
-     DATA 159,0,898,0,72,0,86,0,52,0,1092,0,0,20,17,0 
-     DATA 1093,0,645,0,54,0,898,0,98,0,54,3,53,0,119,0 
-     DATA 179,0,101,0,37,0,912,0,0,11,1094,0,37,0,812,0 
-     DATA 180,0,121,0,98,0,54,3,98,0,898,0,53,0,99,0 
-     DATA 13,0,30,0,0,18,6,0,1095,0,1050,0,56,0,55,0 
-     DATA 1096,0,1097,0,1098,0,54,0,58,0,762,0,927,0,849,0 
-     DATA 1099,0,35,0,4,0,0,13,7,0,1100,0,1037,0,72,0 
-     DATA 119,0,762,0,58,0,54,0,1096,0,112,0,1101,0,1006,0 
-     DATA 56,0,1102,0,973,0,1,0,0,16,1103,0,1104,0,1000,0 
-     DATA 41,0,1071,0,54,0,1034,0,1105,0,1073,0,58,0,741,0 
-     DATA 119,0,899,0,1106,0,7,0,0,17,4,0,1107,0,87,0 
-     DATA 121,0,179,0,54,0,57,0,1108,0,1109,0,55,0,56,0 
-     DATA 25,0,1000,0,1110,0,185,0,0,14,17,0,1037,0,865,0 
-     DATA 763,0,119,0,55,0,54,0,1061,0,1111,0,59,0,119,0 
-     DATA 849,0,974,0,1112,0,0,21,1113,0,1114,0,941,0,119,0 
-     DATA 1115,0,794,0,1061,0,58,0,100,0,813,0,865,0,833,0 
-     DATA 988,0,7,0,0,13,847,0,1116,0,70,0,722,0,720,0 
-     DATA 120,0,54,0,55,0,720,0,121,0,59,0,1117,0,1,0 
-     DATA 0,23,1,0,1118,0,120,0,119,0,812,0,55,0,58,0 
-     DATA 812,0,87,0,1102,0,159,0,1119,0,1120,0,0,12,4,0 
-     DATA 28,0,720,0,1121,0,1108,0,27,0,87,0,100,0,121,0 
-     DATA 849,0,246,0,967,0,4,0,0,26,1030,0,1122,0,849,0 
-     DATA 102,0,59,0,720,0,699,0,1108,0,864,0,1123,0,1097,0 
-     DATA 0,12,4,0,877,0,120,0,1124,0,0,0,814,0,101,0 
-     DATA 121,0,1023,0,1125,0,7,0,0,29,7,0,971,0,1126,0 
-     DATA 180,0,762,0,1102,0,0,0,1127,0,101,0,1128,0,0,13 
-     DATA 1070,0,1123,0,15,0,1009,0,86,0,87,0,1129,0,185,0 
-     DATA 0,33,1130,0,37,0,720,0,71,0,0,0,646,0,1131,0 
-     DATA 1132,0,0,13,967,0,1133,0,878,0,84,0,720,0,1134,0 
-     DATA 0,36,1135,0,1136,0,87,0,740,0,159,0,1137,0,1138,0 
-     DATA 0,13,7,0,1139,0,72,0,179,0,1137,0,1054,0,0,36 
-     DATA 4,0,28,0,1140,0,179,0,898,0,1141,0,7,0,0,14 
-     DATA 1105,0,1142,0,1143,0,108,0,4,0,0,37,1105,0,1144,0 
-     DATA 1145,0,1146,0,185,0,0,9 
-   
-     'Wheel - License CC0 - GameArt2D.com 
-   
-     DATA 429,0,4278453261,4279045404,4279900712 
-     DATA 4280624431,4281282361,4281348158,4279834919 
-     DATA 4279966518,4281282366,4281150776,4280427054 
-     DATA 4279900708,4279045400,4278321677,4278190084 
-     DATA 4278782227,4280098089,4281348156,4282795593 
-     DATA 4283190348,4283256141,4280427050,4280756026 
-     DATA 4282598215,4278387466,4279440166,4283058763 
-     DATA 4283124555,4282861383,4282532418,4282335039 
-     DATA 4282137660,4281150770,4280427049,4281413942 
-     DATA 4282203453,4282598211,4282532423,4278453263 
-     DATA 4278255877,4278255882,4278321672,4279703334 
-     DATA 4278387468,4278453260,4282598214,4281874488 
-     DATA 4281611316,4281545523,4281940281,4282400832 
-     DATA 4280624437,4278190083,4279571750,4281874497 
-     DATA 4278190088,4279440163,4282071875,4279637541 
-     DATA 4278387470,4279505948,4281282354,4280624427 
-     DATA 4279308574,4281479740,4281940287,4279176991 
-     DATA 4278190081,4278650641,4283058762,4281611320 
-     DATA 4281150768,4281677109,4282466625,4280690226 
-     DATA 4279308580,4282400838,4281742902,4282664004 
-     DATA 4282071873,4278979611,4278190082,4278190086 
-     DATA 4282992969,4282071867,4282861385,4279505961 
-     DATA 4279308589,4281479730,4282795590,4279045405 
-     DATA 4278255883,4280427062,4281216558,4280887593 
-     DATA 4280558628,4280361249,4280229663,4280163870 
-     DATA 4280295456,4280427042,4280624421,4280953386 
-     DATA 4281282351,4280098093,4279045410,4278255874 
-     DATA 4279966501,4281150765,4280098077,4279900698 
-     DATA 4279505956,4279111196,4279703339,4279966499 
-     DATA 4281019179,4279571749,4280361261,4279374372 
-     DATA 4281348144,4278650646,4280756007,4279966491 
-     DATA 4284111450,4285098345,4285624689,4285558896 
-     DATA 4285032552,4283914071,4282269246,4282006081 
-     DATA 4278190085,4281150778,4282927176,4281413937 
-     DATA 4284243036,4287598479,4289440683,4289967027 
-     DATA 4289901234,4289506476,4288651167,4288716960 
-     DATA 4289638062,4289309097,4287203721,4283782485 
-     DATA 4280492835,4280690214,4285493103,4289374890 
-     DATA 4285361517,4279637526,4286282619,4289703855 
-     DATA 4289111718,4284769380,4279111198,4278387467 
-     DATA 4282335045,4289177511,4288782753,4279703319 
-     DATA 4281874495,4280032301,4286348412,4290164406 
-     DATA 4290624957,4291085508,4289572269,4290032820 
-     DATA 4291019715,4290559164,4290098613,4289769648 
-     DATA 4285427310,4287532686,4290230199,4291546059 
-     DATA 4291611852,4286743170,4291282887,4291480266 
-     DATA 4290953922,4286611584,4281742907,4280163882 
-     DATA 4278453264,4278321669,4281545531,4290756543 
-     DATA 4291217094,4291348680,4286545791,4281019183 
-     DATA 4278321670,4279769121,4291151301,4279242782 
-     DATA 4278321674,4279111199,4278519052,4278387471 
-     DATA 4278190087,4281019184,4284045657,4292072403 
-     DATA 4292532954,4292861919,4292993505,4292796126 
-     DATA 4292467161,4292006610,4281084979,4282137667 
-     DATA 4278584852,4280295472,4280756019,4292203989 
-     DATA 4293125091,4293980400,4294375158,4294440951 
-     DATA 4294046193,4293388263,4293322470,4293256677 
-     DATA 4292927712,4292138196,4281874496,4281084972 
-     DATA 4285953654,4290822336,4291677645,4294572537 
-     DATA 4294967295,4294769916,4293585642,4292664540 
-     DATA 4284703587,4281084984,4278650640,4282927178 
-     DATA 4290295992,4291743438,4294901502,4294835709 
-     DATA 4293783021,4293059298,4289045925,4282598216 
-     DATA 4278321678,4279440159,4280032284,4284900966 
-     DATA 4293454056,4294704123,4291940817,4288322202 
-     DATA 4288256409,4293190884,4292598747,4290888129 
-     DATA 4283585106,4278979608,4280163885,4288190616 
-     DATA 4292269782,4294309365,4288387995,4288980132 
-     DATA 4289243304,4288914339,4289835441,4287006342 
-     DATA 4279769124,4281150774,4288848546,4280295470 
-     DATA 4283387727,4291414473,4281150773,4282203459 
-     DATA 4282006074,4294111986,4293848814,4288519581 
-     DATA 4283716692,4281150782,4280427065,4280690235 
-     DATA 4281479733,4286085240,4288059030,4287269514 
-     DATA 4280361263,4286677377,4279045389,4292335575 
-     DATA 4280229672,4278848010,4290493371,4279834905 
-     DATA 4281413938,4286151033,4285690482,4284835173 
-     DATA 4281216563,4279966504,4282269252,4292730333 
-     DATA 4288585374,4283848278,4281413951,4283519313 
-     DATA 4281282357,4281019193,4292401368,4288453788 
-     DATA 4294177779,4279834916,4279571744,4285229931 
-     DATA 4291809231,4293914607,4278716437,4290361785 
-     DATA 4282006082,4286414205,4290690750,4280492848 
-     DATA 4282729797,4281084986,4279176986,4284637794 
-     DATA 4280756013,4278255878,4279769123,4287137928 
-     DATA 4286019447,4279374365,4278519054,4281348146 
-     DATA 4280953398,4278519051,4279900713,4281808698 
-     DATA 4287335307,4280821800,4281940290,4280163884 
-     DATA 4287072135,4281808695,4286216826,4279769126 
-     DATA 4278387472,4284572001,4279571733,4281874498 
-     DATA 4278255880,4279769130,4278979596,4279242768 
-     DATA 4285756275,4279374366,4281545533,4287993237 
-     DATA 4280887606,4278848022,4282729800,4283321934 
-     DATA 4284966759,4286479998,4285822068,4278519057 
-     DATA 4279571752,4279176992,4280361265,4280098094 
-     DATA 4280098091,4279769125,4279834922,4279374374 
-     DATA 4278321675,4279177004,4279637547,4279505958 
-     DATA 4278979618,4279966506,4279505960,4282664007 
-     DATA 4279242784,4278782229,4281282353,4281874491 
-     DATA 4278650642,4279834918,4281216566,4279769120 
-     DATA 4281084977,4279703325,4280229681,4282203460 
-     DATA 4279505954,4280229678,4282466630,4279242783 
-     DATA 4278255881,4281348152,4281808704,4278650639 
-     DATA 4278255876,4278716436,4281413939,4280953388 
-     DATA 4280427056,4281940289,4281677118,4280163887 
-     DATA 4278913819,4279440160,4281084981,4280163881 
-     DATA 4280361271,4281216574,4280953396,4280098092 
-     DATA 4278519056,0,24,1,0,2,0 
-     DATA 3,0,4,0,5,0,6,0,7,0,0,1,8,0,9,0 
-     DATA 10,0,11,0,12,0,13,0,14,0,0,43,15,0,16,0 
-     DATA 17,0,18,0,19,0,20,0,21,3,22,0,0,1,23,0 
-     DATA 21,3,20,0,24,0,5,0,7,0,25,0,0,40,26,0 
-     DATA 27,0,21,1,20,0,28,0,29,0,30,0,31,0,32,0 
-     DATA 33,0,34,1,35,0,36,0,31,0,37,0,29,0,28,0 
-     DATA 20,0,21,0,38,0,39,0,0,0,40,0,41,0,0,33 
-     DATA 42,0,43,0,44,0,0,0,45,0,46,0,29,0,31,0 
-     DATA 47,0,48,0,49,11,48,0,50,0,51,0,52,0,53,0 
-     DATA 0,0,54,0,55,0,54,0,56,0,0,29,15,0,57,0 
-     DATA 58,0,21,0,59,0,60,0,61,0,62,0,49,19,63,0 
-     DATA 64,0,65,0,21,1,66,0,67,0,68,0,0,26,69,0 
-     DATA 10,0,27,0,20,0,70,0,71,0,72,0,49,23,73,0 
-     DATA 74,0,28,0,21,0,27,0,75,0,45,0,0,23,68,0 
-     DATA 76,0,77,0,21,0,20,0,30,0,73,0,49,27,78,0 
-     DATA 79,0,20,0,21,0,80,0,81,0,82,0,0,20,83,0 
-     DATA 17,0,27,0,20,0,84,0,50,0,49,31,85,0,70,0 
-     DATA 21,0,86,0,87,0,68,0,0,19,88,0,21,0,20,0 
-     DATA 79,0,48,0,49,13,89,4,49,14,73,0,90,0,21,0 
-     DATA 27,0,91,0,0,19,92,0,93,0,31,0,49,11,89,0 
-     DATA 94,0,95,0,96,0,97,0,98,0,99,1,100,0,101,0 
-     DATA 102,0,103,0,104,0,89,0,49,11,30,0,105,0,53,0 
-     DATA 0,16,56,0,106,0,53,0,107,0,108,0,49,9,89,0 
-     DATA 109,0,96,0,110,0,111,11,99,0,102,0,94,0,89,0 
-     DATA 49,9,112,0,53,0,82,0,113,0,68,0,0,12,68,0 
-     DATA 105,0,27,0,114,0,115,0,49,8,89,0,116,0,98,0 
-     DATA 111,17,97,0,109,0,49,9,117,0,118,0,20,0,87,0 
-     DATA 82,0,0,11,119,0,27,0,20,0,31,0,49,7,89,0 
-     DATA 94,0,100,0,111,21,97,0,120,0,49,8,30,0,21,0 
-     DATA 86,0,81,0,0,10,121,0,38,0,20,0,37,0,49,7 
-     DATA 89,0,122,0,123,0,111,6,122,0,74,0,124,0,125,0 
-     DATA 126,0,127,0,128,0,129,0,130,0,102,0,111,6,123,0 
-     DATA 95,0,89,0,49,7,90,0,21,0,131,0,45,0,0,8 
-     DATA 132,0,133,0,21,0,134,0,48,0,49,6,135,0,101,0 
-     DATA 111,5,122,0,136,0,137,0,138,0,139,0,140,0,141,0 
-     DATA 142,0,143,0,144,0,139,1,145,0,146,0,147,0,148,0 
-     DATA 111,5,96,0,89,0,49,6,73,0,70,0,21,0,75,0 
-     DATA 68,0,0,7,54,0,20,1,47,0,49,6,135,0,98,0 
-     DATA 111,4,149,0,150,0,151,0,139,3,141,0,152,0,153,0 
-     DATA 123,0,154,0,155,0,139,3,156,0,157,0,97,0,111,4 
-     DATA 101,0,89,0,49,6,85,0,20,0,27,0,158,0,0,6 
-     DATA 159,0,160,0,20,0,74,0,49,6,135,0,98,0,111,3 
-     DATA 123,0,147,0,161,0,139,5,162,0,163,0,0,1,95,0 
-     DATA 156,0,139,5,162,0,84,0,111,4,101,0,89,0,49,6 
-     DATA 79,0,21,0,164,0,56,0,0,4,68,0,165,0,21,0 
-     DATA 70,0,48,0,49,5,89,0,101,0,111,3,97,0,166,0 
-     DATA 140,0,139,3,167,0,168,0,169,0,170,0,100,0,0,1 
-     DATA 89,0,171,0,172,0,173,0,174,0,139,3,175,0,176,0 
-     DATA 110,0,111,3,96,0,89,0,49,5,78,0,28,0,21,0 
-     DATA 26,0,0,4,60,0,77,0,20,0,130,0,49,5,89,0 
-     DATA 122,0,111,3,102,0,177,0,139,3,178,0,172,0,179,0 
-     DATA 180,1,169,0,181,0,104,0,73,0,177,0,182,0,180,1 
-     DATA 183,0,184,0,167,0,139,3,185,0,98,0,111,3,103,0 
-     DATA 49,6,186,0,187,0,188,0,0,4,189,0,59,0,190,0 
-     DATA 48,0,49,5,109,0,111,3,97,0,177,0,139,3,191,0 
-     DATA 179,0,180,4,192,0,174,0,178,0,193,0,180,4,183,0 
-     DATA 168,0,139,3,194,0,110,0,111,2,123,0,120,0,49,5 
-     DATA 195,0,196,0,0,7,197,0,49,5,89,0,98,0,111,2 
-     DATA 123,0,194,0,139,2,174,0,198,0,180,17,172,0,171,0 
-     DATA 139,2,152,0,111,3,101,0,49,6,199,0,200,0,201,0 
-     DATA 82,0,0,1,202,0,203,0,204,0,205,0,49,5,103,0 
-     DATA 111,3,206,0,140,0,139,1,174,0,182,0,180,5,207,0 
-     DATA 208,0,209,0,210,1,211,0,212,0,213,0,180,5,198,0 
-     DATA 171,0,139,1,175,0,29,0,111,3,109,0,49,5,214,0 
-     DATA 215,0,86,0,216,0,0,1,217,0,38,0,218,0,49,5 
-     DATA 89,0,99,0,111,2,103,0,151,0,139,2,192,0,180,4 
-     DATA 219,0,220,0,221,0,222,0,223,0,224,0,225,0,226,1 
-     DATA 227,0,228,0,229,0,180,4,172,0,139,2,143,0,100,0 
-     DATA 111,2,97,0,89,0,49,5,84,0,21,0,12,0,0,0 
-     DATA 15,0,230,0,21,0,36,0,49,5,231,0,111,3,232,0 
-     DATA 139,2,233,0,180,3,234,0,211,0,225,0,235,0,236,3 
-     DATA 237,0,238,0,226,2,227,0,239,0,180,4,168,0,139,2 
-     DATA 240,0,111,3,104,0,49,5,74,0,21,0,241,0,0,0 
-     DATA 242,0,243,0,20,0,78,0,49,4,89,0,101,0,111,2 
-     DATA 109,0,170,0,139,1,244,0,179,0,180,2,245,0,210,0 
-     DATA 226,0,222,0,236,0,246,0,247,0,248,0,249,1,238,0 
-     DATA 227,0,226,3,209,0,180,3,183,0,174,0,139,1,250,0 
-     DATA 101,0,111,2,149,0,49,5,50,0,20,0,251,0,252,0 
-     DATA 253,0,21,0,70,0,49,5,135,0,254,0,111,2,255,0 
-     DATA 139,2,169,0,180,3,211,0,226,0,256,0,247,0,257,0 
-     DATA 258,0,156,0,259,0,260,1,259,0,156,0,193,0,261,0 
-     DATA 226,2,262,0,180,3,263,0,139,2,264,0,111,2,99,0 
-     DATA 89,0,49,4,48,0,28,0,27,0,265,0,266,0,21,0 
-     DATA 79,0,49,5,231,0,111,2,254,0,267,0,139,1,178,0 
-     DATA 179,0,180,2,268,0,226,1,238,0,269,0,175,0,260,0 
-     DATA 270,0,271,0,272,1,273,0,270,0,260,0,274,0,210,0 
-     DATA 226,1,227,0,207,0,180,2,183,0,174,0,139,1,275,0 
-     DATA 111,3,104,0,49,5,134,0,21,0,276,0,277,0,21,0 
-     DATA 51,0,49,5,122,0,111,2,104,0,175,0,139,1,191,0 
-     DATA 180,2,234,0,220,0,226,1,261,0,155,0,260,0,271,0 
-     DATA 274,0,139,3,175,0,278,0,260,0,274,0,261,0,226,1 
-     DATA 228,0,180,3,173,0,139,1,272,0,148,0,111,2,103,0 
-     DATA 49,5,37,0,21,0,279,0,6,0,21,0,32,0,49,4 
-     DATA 89,0,101,0,111,2,280,0,139,2,192,0,180,2,219,0 
-     DATA 226,1,227,0,191,0,260,0,250,0,139,6,140,0,278,0 
-     DATA 260,0,281,0,226,1,227,0,258,0,180,2,172,0,139,1 
-     DATA 140,0,85,0,111,2,149,0,49,5,51,0,21,0,282,0 
-     DATA 283,0,21,0,284,0,49,4,89,0,98,0,111,2,128,0 
-     DATA 140,0,170,0,156,0,174,0,193,0,180,1,239,0,256,0 
-     DATA 285,0,286,0,143,0,287,0,140,0,139,7,175,0,259,0 
-     DATA 161,0,227,0,226,1,212,0,180,1,192,0,140,0,156,0 
-     DATA 155,0,139,0,288,0,111,2,101,0,49,5,36,0,21,0 
-     DATA 289,0,290,0,291,0,292,0,49,4,89,0,110,0,111,2 
-     DATA 293,0,138,0,176,0,101,0,73,0,294,0,281,0,180,0 
-     DATA 249,0,235,0,236,0,226,0,260,0,156,0,139,9,278,0 
-     DATA 259,0,262,0,226,1,211,0,180,0,182,0,295,0,94,0 
-     DATA 149,0,154,0,144,0,157,0,111,2,100,0,49,5,292,0 
-     DATA 49,0,296,0,0,1,231,0,49,4,89,0,254,0,111,2 
-     DATA 297,0,259,0,298,0,0,1,79,0,173,0,180,0,256,0 
-     DATA 246,0,236,0,299,0,260,0,138,0,139,9,161,0,260,0 
-     DATA 213,0,226,1,228,0,180,0,174,0,120,0,0,1,110,0 
-     DATA 162,0,152,0,111,2,98,0,49,5,300,0,0,3,231,0 
-     DATA 49,4,89,0,254,0,111,2,297,0,260,0,301,0,0,1 
-     DATA 51,0,302,0,180,0,226,0,247,0,236,0,299,0,260,0 
-     DATA 138,0,139,9,161,0,260,0,258,0,226,1,228,0,180,0 
-     DATA 171,0,231,0,0,1,303,0,143,0,152,0,111,2,98,0 
-     DATA 49,5,300,0,0,1,22,0,63,0,304,0,49,4,89,0 
-     DATA 110,0,111,2,305,0,151,0,157,0,163,0,95,0,137,0 
-     DATA 281,0,180,0,210,0,286,0,257,0,249,0,260,0,156,0 
-     DATA 139,8,140,0,273,0,259,0,208,0,226,1,211,0,180,0 
-     DATA 198,0,181,0,97,0,111,0,306,0,170,0,307,0,111,2 
-     DATA 100,0,49,5,308,0,63,0,309,0,310,0,21,0,284,0 
-     DATA 49,4,89,0,98,0,111,2,125,0,140,0,141,0,278,0 
-     DATA 274,0,192,0,180,1,311,0,226,1,249,0,312,0,287,0 
-     DATA 140,0,139,7,274,0,270,0,250,0,227,0,226,1,212,0 
-     DATA 180,1,169,0,170,0,273,0,170,0,140,0,313,0,111,2 
-     DATA 101,0,49,5,36,0,21,0,289,0,314,0,21,0,32,0 
-     DATA 49,5,101,0,111,2,315,0,139,2,182,0,180,2,219,0 
-     DATA 226,2,173,0,260,0,161,0,139,6,140,0,273,0,260,0 
-     DATA 192,0,226,1,227,0,213,0,180,2,172,0,139,1,140,0 
-     DATA 36,0,111,2,102,0,49,5,51,0,21,0,316,0,317,0 
-     DATA 21,0,51,0,49,5,149,0,111,2,135,0,274,0,139,1 
-     DATA 233,0,180,2,234,0,220,0,226,1,210,0,156,0,260,0 
-     DATA 161,0,140,0,139,2,140,0,274,0,271,0,260,0,170,0 
-     DATA 261,0,226,1,210,0,180,3,173,0,139,1,145,0,102,0 
-     DATA 111,2,103,0,49,5,37,0,21,0,11,0,279,0,21,0 
-     DATA 79,0,49,5,231,0,111,2,110,0,270,0,139,1,178,0 
-     DATA 179,0,180,2,318,0,226,2,262,0,156,0,260,0,287,0 
-     DATA 156,0,151,1,250,0,319,0,260,0,140,0,320,0,256,0 
-     DATA 226,0,227,0,219,0,180,2,183,0,174,0,139,1,295,0 
-     DATA 111,3,104,0,49,5,29,0,21,0,321,0,322,0,21,0 
-     DATA 84,0,49,5,135,0,123,0,111,2,323,0,139,2,198,0 
-     DATA 180,3,228,0,226,2,210,0,168,0,142,0,260,3,271,0 
-     DATA 324,0,257,0,236,0,325,0,227,0,311,0,180,2,179,0 
-     DATA 184,0,139,1,140,0,129,0,111,2,110,0,89,0,49,4 
-     DATA 48,0,28,0,20,0,13,0,326,0,27,0,20,0,78,0 
-     DATA 49,5,101,0,111,2,135,0,155,0,139,1,327,0,179,0 
-     DATA 180,2,245,0,249,0,226,3,249,0,207,0,281,0,183,0 
-     DATA 268,0,235,0,236,1,246,0,286,0,228,0,234,0,180,2 
-     DATA 179,0,167,0,139,1,272,0,102,0,111,2,102,0,49,5 
-     DATA 50,0,20,0,24,0,14,0,56,0,328,0,21,0,36,0 
-     DATA 49,5,116,0,111,3,329,0,139,2,184,0,180,3,245,0 
-     DATA 228,0,226,7,325,0,247,0,246,0,269,0,211,0,234,0 
-     DATA 180,2,179,0,330,0,139,1,140,0,125,0,111,3,94,0 
-     DATA 49,5,51,0,21,0,5,0,0,1,331,0,21,0,332,0 
-     DATA 49,5,89,0,110,0,111,2,104,0,170,0,139,1,171,0 
-     DATA 182,0,180,4,318,0,220,0,226,6,225,0,261,0,268,0 
-     DATA 180,4,198,0,139,2,271,0,148,0,111,2,100,0,89,0 
-     DATA 49,4,89,0,333,0,243,0,309,0,0,1,334,0,20,0 
-     DATA 310,0,62,0,49,5,95,0,111,3,335,0,140,0,139,1 
-     DATA 167,0,193,0,180,4,234,0,219,0,239,0,210,0,220,1 
-     DATA 210,0,262,0,229,0,234,0,180,4,192,0,171,0,139,1 
-     DATA 274,0,280,0,111,3,231,0,49,5,336,0,204,0,16,0 
-     DATA 60,0,0,1,337,0,119,0,60,0,338,0,49,5,89,0 
-     DATA 99,0,111,2,110,0,339,0,139,2,167,0,182,0,180,16 
-     DATA 179,0,198,0,174,0,139,1,140,0,340,0,111,3,97,0 
-     DATA 89,0,49,5,341,0,0,7,342,0,343,0,49,5,231,0 
-     DATA 111,3,102,0,294,0,139,2,171,0,184,0,179,0,180,4 
-     DATA 193,0,327,0,302,0,281,0,180,4,179,0,191,0,139,2 
-     DATA 140,0,146,0,98,0,111,2,123,0,104,0,49,5,73,0 
-     DATA 344,0,158,0,15,0,0,4,345,0,346,0,347,0,49,5 
-     DATA 89,0,102,0,111,3,103,0,294,0,139,3,244,0,198,0 
-     DATA 179,0,180,1,198,0,348,0,32,0,30,0,294,0,193,0 
-     DATA 180,1,179,0,172,0,178,0,139,2,140,0,295,0,148,0 
-     DATA 111,3,349,0,49,6,51,0,21,0,350,0,41,0,0,4 
-     DATA 351,0,21,0,84,0,48,0,49,5,89,0,100,0,111,3 
-     DATA 102,0,352,0,140,0,139,3,178,0,191,0,192,0,155,0 
-     DATA 96,0,0,1,353,0,167,0,198,0,330,0,167,0,139,3 
-     DATA 274,0,354,0,100,0,111,3,148,0,89,0,49,5,73,0 
-     DATA 28,0,20,0,355,0,0,5,356,0,24,0,21,0,31,0 
-     DATA 49,6,120,0,99,0,111,3,110,0,357,0,141,0,139,5 
-     DATA 143,0,358,0,0,1,149,0,156,0,139,4,140,0,272,0 
-     DATA 288,0,123,0,111,3,100,0,135,0,49,6,37,0,21,0 
-     DATA 359,0,360,0,0,6,361,0,20,0,28,0,353,0,49,6 
-     DATA 120,0,99,0,111,4,94,0,154,0,155,0,139,3,138,0 
-     DATA 240,0,362,0,363,0,364,0,144,0,139,2,140,0,141,0 
-     DATA 126,0,122,0,111,4,100,0,135,0,49,6,284,0,20,0 
-     DATA 27,0,365,0,0,7,40,0,366,0,21,0,29,0,49,7 
-     DATA 120,0,100,0,111,5,104,0,125,0,259,0,175,0,139,0 
-     DATA 140,0,151,0,259,0,319,0,141,0,140,0,139,0,144,0 
-     DATA 367,0,335,0,103,0,111,5,101,0,135,0,49,6,73,0 
-     DATA 84,0,21,0,368,0,132,0,0,8,369,0,370,0,21,0 
-     DATA 30,0,49,7,89,0,102,0,111,6,254,0,120,0,371,0 
-     DATA 372,0,232,0,373,0,329,0,374,0,157,0,28,0,231,0 
-     DATA 123,0,111,5,123,0,122,0,89,0,49,7,332,0,21,0 
-     DATA 215,0,375,0,0,10,376,0,20,1,36,0,49,7,89,0 
-     DATA 109,0,99,0,111,21,98,0,94,0,49,8,51,0,21,0 
-     DATA 27,0,377,0,0,11,68,0,378,0,20,0,379,0,380,0 
-     DATA 49,8,89,0,95,0,99,0,111,17,98,0,116,0,89,0 
-     DATA 49,8,381,0,93,0,20,0,382,0,82,0,0,12,360,0 
-     DATA 383,0,53,0,384,0,380,0,49,9,89,0,116,0,101,0 
-     DATA 123,0,111,11,254,0,148,0,109,0,89,0,49,9,338,0 
-     DATA 82,0,92,0,385,0,68,0,0,16,82,0,296,0,36,0 
-     DATA 49,11,135,0,231,0,122,0,101,0,98,0,110,0,254,1 
-     DATA 110,0,100,0,148,0,122,0,109,0,135,0,49,11,51,0 
-     DATA 386,0,53,0,0,19,387,0,20,1,30,0,49,34,48,0 
-     DATA 79,0,21,0,27,0,388,0,0,19,360,0,217,0,20,0 
-     DATA 21,0,29,0,353,0,49,31,50,0,84,0,21,0,27,0 
-     DATA 389,0,68,0,0,20,68,0,390,0,391,0,21,0,20,0 
-     DATA 51,0,48,0,49,27,73,0,30,0,20,0,21,0,160,0 
-     DATA 392,0,82,0,0,23,393,0,65,0,20,0,21,0,84,0 
-     DATA 36,0,49,24,394,0,395,0,70,0,21,0,27,0,10,0 
-     DATA 396,0,0,26,337,0,397,0,38,0,21,1,398,0,399,0 
-     DATA 205,0,49,19,400,0,401,0,60,0,402,0,20,0,403,0 
-     DATA 404,0,15,0,0,29,356,0,405,0,406,0,407,0,0,0 
-     DATA 408,0,409,0,36,0,78,0,49,13,353,0,130,0,90,0 
-     DATA 410,0,83,0,0,0,411,0,382,0,42,0,0,32,68,0 
-     DATA 60,0,412,0,0,0,413,0,86,0,21,0,20,0,84,0 
-     DATA 79,0,51,0,36,0,284,0,414,0,415,1,292,0,284,0 
-     DATA 36,0,74,0,332,0,70,0,20,0,21,1,27,0,81,0 
-     DATA 0,40,69,0,416,0,417,0,27,0,21,4,22,0,0,1 
-     DATA 23,0,21,3,20,0,243,0,418,0,419,0,420,0,53,0 
-     DATA 0,42,15,0,242,0,421,0,405,0,422,0,9,0,328,0 
-     DATA 423,0,0,1,424,0,350,0,425,0,426,0,427,0,341,0 
-   
-     'head - License CC0 - GameArt2D.com 
-     DATA 846,0,4278255689,4279631924,4282253346 
-     DATA 4285464596,4288806919,4291166209,4291493888 
-     DATA 4291428352,4289855492,4286578703,4283760667 
-     DATA 4280746027,4278779966,4278190158,4278321223 
-     DATA 4280614957,4285792274,4291231745,4291690496 
-     DATA 4291624960,4289789956,4284088345,4279959601 
-     DATA 4278190156,4279370035,4284612631,4290904066 
-     DATA 4291559424,4290904064,4290117632,4289462272 
-     DATA 4289003520,4288741376,4288610304,4288675840 
-     DATA 4288937984,4289331200,4289921024,4290641920 
-     DATA 4291362816,4285005846,4280156208,4278255688 
-     DATA 4278190159,4278321471,4279174950,4284942350 
-     DATA 4291231744,4290576384,4289396736,4288479232 
-     DATA 4288217088,4288872448,4289855488,4290707458 
-     DATA 4284743703,4280025137,4278452291,4281139241 
-     DATA 4283041557,4280620823,4287891207,4290838528 
-     DATA 4289527808,4289593344,4290772992,4285333524 
-     DATA 4280680492,4278190157,4279828530,4285792275 
-     DATA 4287956743,4280555287,4288677125,4290052096 
-     DATA 4288806912,4289658880,4291297281,4286709775 
-     DATA 4280483885,4278255691,4279304247,4287561740 
-     DATA 4290118146,4281144597,4286318600,4289200128 
-     DATA 4288282624,4288741384,4279894066,4281532454 
-     DATA 4286120450,4285792513,4288151552,4288413696 
-     DATA 4290707456,4282318882,4287561728,4285005824 
-     DATA 4287889408,4289396742,4286185472,4286251008 
-     DATA 4288548109,4288878873,4287954951,4278845500 
-     DATA 4290379776,4285136896,4287496192,4290533207 
-     DATA 4291128942,4288086016,4278517824,4279500853 
-     DATA 4288544768,4287692800,4292783533,4293312961 
-     DATA 4278779962,4287102976,4285661184,4288614673 
-     DATA 4294636788,4294768888,4288945437,4290445312 
-     DATA 4286644224,4286119936,4290665821,4294967295 
-     DATA 4290996842,4286447616,4286382080,4288349702 
-     DATA 4291724934,4292121748,4292452769,4294040796 
-     DATA 4294239717,4292849840,4292386719,4291989134 
-     DATA 4291393656,4288482059,4286513152,4284484363 
-     DATA 4282716433,4286383365,4290004036,4294570224 
-     DATA 4290401107,4287300098,4287627521,4284615949 
-     DATA 4282137660,4282598211,4280884766,4287234562 
-     DATA 4289673272,4294372074,4294967038,4294438124 
-     DATA 4289937729,4287171082,4281478702,4281147424 
-     DATA 4286645252,4281868834,4278979596,4281348144 
-     DATA 4281479730,4284222476,4289474351,4294305510 
-     DATA 4289540915,4279435317,4282000677,4280624421 
-     DATA 4282532418,4282454803,4286906368,4285988864 
-     DATA 4287431170,4280228635,4278190080,4279440147 
-     DATA 4281611316,4288020480,4287954944,4293114554 
-     DATA 4294173153,4288217345,4278911286,4279703062 
-     DATA 4281413937,4281015838,4286971904,4280360478 
-     DATA 4281216558,4282585361,4287168512,4285726720 
-     DATA 4285267968,4284940288,4285269767,4294373359 
-     DATA 4294901502,4288683550,4278845750,4279703319 
-     DATA 4280953386,4280818973,4287299584,4285333504 
-     DATA 4281277725,4280163870,4281084972,4284025868 
-     DATA 4287758336,4285530112,4285399040,4286840832 
-     DATA 4287365120,4289345335,4294835195,4291923855 
-     DATA 4290801262,4288436312,4285071360,4279304245 
-     DATA 4280950816,4280492835,4281282351,4281668628 
-     DATA 4284091404,4280293657,4287038211,4287823872 
-     DATA 4291261299,4294371817,4290335057,4289673015 
-     DATA 4293975003,4291924626,4286775296,4285923328 
-     DATA 4285202432,4285792256,4285074958,4280361249 
-     DATA 4280097820,4285401096,4283633166,4281864979 
-     DATA 4285728519,4286316544,4286709760,4291195506 
-     DATA 4289011744,4288680723,4291460220,4287627264 
-     DATA 4278845497,4290314240,4285335560,4285990406 
-     DATA 4287234048,4287037440,4278845496,4286578688 
-     DATA 4284874752,4284809216,4279304241,4286054400 
-     DATA 4288348160,4289069056,4289134592,4279107639 
-     DATA 4281991200,4289265664,4291100672,4290969600 
-     DATA 4281270306,4286840846,4289724416,4285267979 
-     DATA 4278255690,4287889409,4278386755,4279173176 
-     DATA 4289789952,4279959597,4280614951,4283105302 
-     DATA 4280418339,4287496194,4278648893,4278648889 
-     DATA 4284743680,4290183168,4286251015,4278321222 
-     DATA 4283957253,4290510848,4283564052,4281073690 
-     DATA 4285533184,4286653696,4287443456,4288365568 
-     DATA 4289420288,4289284609,4279631920,4278583354 
-     DATA 4287120390,4290671360,4292186624,4293240320 
-     DATA 4294492928,4294756096,4294888192,4294953984 
-     DATA 4291528448,4291166208,4289986560,4278190155 
-     DATA 4288182801,4293241866,4286121478,4280680486 
-     DATA 4287919634,4294757404,4286783255,4285204745 
-     DATA 4282192402,4284746250,4284680714,4287169283 
-     DATA 4283109135,4283371022,4285859591,4287365634 
-     DATA 4285794055,4286971908,4287525140,4294886912 
-     DATA 4294884352,4294884865,4294887684,4294955038 
-     DATA 4289687636,4287693057,4284288012,4281537556 
-     DATA 4281406741,4282650897,4284418827,4283698702 
-     DATA 4284877322,4286187014,4281472277,4283043599 
-     DATA 4285662983,4282257938,4280746022,4287192597 
-     DATA 4294877440,4294877184,4294877955,4294884360 
-     DATA 4294953728,4293906331,4285663495,4282912784 
-     DATA 4281996051,4287824129,4280817174,4287758593 
-     DATA 4287496449,4284549899,4285597447,4286382087 
-     DATA 4287322133,4294877703,4294878220,4294877444 
-     DATA 4294884359,4294955037,4294895276,4289753428 
-     DATA 4286448901,4284942858,4281079318,4285466632 
-     DATA 4280686359,4279238708,4286928150,4294883651 
-     DATA 4294893219,4294897358,4294963670,4294896065 
-     DATA 4294890626,4294953994,4294961069,4294499749 
-     DATA 4286655264,4285532168,4280751895,4286317829 
-     DATA 4284287755,4282384411,4278255692,4289502346 
-     DATA 4294964444,4294962369,4294961329,4294961071 
-     DATA 4294960804,4294954512,4294958125,4293378962 
-     DATA 4285666319,4284156940,4285007365,4286589471 
-     DATA 4288762643,4290408704,4291594496,4292318976 
-     DATA 4292515584,4292378112,4292179200,4291784448 
-     DATA 4291066672,4281538351,4280025123,4281270296 
-     DATA 4282974218,4284416001,4285923336,4286478727 
-     DATA 4294963664,4294960812,4294960019,4294953988 
-     DATA 4294954756,4294963541,4292720007,4285534733 
-     DATA 4286252293,4280490008,4280489751,4285007107 
-     DATA 4287380524,4290940009,4293774489,4294895020 
-     DATA 4294956872,4294885120,4294878208,4294877700 
-     DATA 4294886998,4294960809,4289765252,4278321219 
-     DATA 4279566377,4283105289,4285464576,4286709763 
-     DATA 4280952916,4294963924,4294959775,4294957700 
-     DATA 4294956924,4294957442,4294957683,4294954247 
-     DATA 4294955271,4294963295,4293115278,4286259994 
-     DATA 4286907139,4287496706,4285337098,4289094474 
-     DATA 4293247376,4294957660,4294887936,4294882304 
-     DATA 4294881577,4294896324,4294958480,4294960552 
-     DATA 4281741646,4280877083,4282253328,4291149494 
-     DATA 4294959515,4294955629,4294955627,4294955082 
-     DATA 4294954245,4294955530,4294963048,4294235031 
-     DATA 4288697394,4284875523,4285468426,4289621587 
-     DATA 4293972380,4294891631,4294879488,4294877441 
-     DATA 4294887269,4294769134,4288868038,4294832853 
-     DATA 4294958479,4290423177,4279828518,4278321218 
-     DATA 4279177033,4294766026,4294956406,4294954818 
-     DATA 4294956044,4294963061,4294957441,4294897094 
-     DATA 4292724679,4287646025,4284809730,4285467392 
-     DATA 4289744640,4294096983,4294890877,4294878731 
-     DATA 4294894252,4281063294,4289785803,4294957702 
-     DATA 4294763691,4278584646,4282071389,4294961848 
-     DATA 4294960291,4294954553,4294953986,4294962550 
-     DATA 4294956145,4294966258,4294901245,4293186515 
-     DATA 4289492855,4284750100,4284678144,4284678657 
-     DATA 4286787884,4290478173,4294229342,4294879766 
-     DATA 4294890362,4294893205,4294882606,4294893203 
-     DATA 4294835966,4280523612,4284080282,4294958738 
-     DATA 4294960810,4279768647,4282795107,4294959516 
-     DATA 4294954033,4294956664,4294967036,4292142556 
-     DATA 4279003959,4278676787,4278633310,4294441196 
-     DATA 4294959774,4294960553,4294960811,4294901758 
-     DATA 4278282288,4281980292,4294959517,4294960292 
-     DATA 4280163143,4280292658,4292457071,4294953512 
-     DATA 4294955013,4294962292,4294959256,4294966778 
-     DATA 4286572465,4283424147,4279074369,4278216239 
-     DATA 4278224446,4278899306,4294769133,4294959257 
-     DATA 4294962628,4294965224,4294963406,4294960294 
-     DATA 4286310062,4279933527,4278218290,4282636683 
-     DATA 4279505478,4282991191,4294960293,4294952995 
-     DATA 4294954246,4294961766,4294955628,4294965221 
-     DATA 4290048465,4278308965,4278240093,4278494801 
-     DATA 4285848998,4286375855,4294963665,4294961072 
-     DATA 4294964964,4294965222,4294962110,4294959514 
-     DATA 4294967035,4287425209,4278241119,4282106492 
-     DATA 4288736709,4294960551,4294106278,4278387528 
-     DATA 4278848072,4294764208,4294956407,4294952227 
-     DATA 4294959427,4294955887,4294960296,4287162806 
-     DATA 4279161452,4280538745,4294704893,4294958999 
-     DATA 4294962108,4294962888,4294961588,4294961589 
-     DATA 4294960032,4294964185,4293786612,4281129087 
-     DATA 4287228343,4294900462,4294956404,4288121207 
-     DATA 4278453062,4293184650,4294958995,4294885929 
-     DATA 4294953989,4294887680,4294889745,4294957960 
-     DATA 4294114551,4293458929,4294962368,4294508027 
-     DATA 4294442490,4294961074,4279834438,4279702326 
-     DATA 4290943753,4294955563,4294956925,4294885429 
-     DATA 4294884864,4294887770,4294956405,4294965482 
-     DATA 4294966518,4294958219,4294961333,4294966257 
-     DATA 4294962887,4294762394,4285687654,4278978621 
-     DATA 4282854948,4288769807,4294752768,4294883584 
-     DATA 4294881792,4294886484,4294957183,4294886475 
-     DATA 4294886152,4294881280,4294887515,4294956923 
-     DATA 4294955888,4294956922,4293645727,4294106020 
-     DATA 4289370752,4278255947,4282789156,4293234691 
-     DATA 4294885196,4294894500,4294882062,4294882331 
-     DATA 4294878472,4294885962,4294958477,4290686337 
-     DATA 4283056946,4280426263,4280623641,4292527764 
-     DATA 4294959255,4294763690,4280689481,4278387270 
-     DATA 4282723109,4289818380,4293300483,4293169667 
-     DATA 4288701968,4282725425,4294957398,4294958973 
-     DATA 4294959494,4294959248,4294957440,4294885185 
-     DATA 4294885443,4294954851,4294888023,4294956665 
-     DATA 4294958220,4294958739,4294171813,4288647276 
-     DATA 4288515947,4292856471,4294369191,4293119642 
-     DATA 4290686081,4289699459,4278255945,4278255946 
-     DATA 4281082669,4294954521,4294955621,4294955370 
-     DATA 4294888798,4294958997,4294960035,4293908898 
-     DATA 4294829483,4293711004,4278913605,4290746634 
-     DATA 4294885888,4294882560,4294880529,4294886221 
-     DATA 4294956146,4294960034,4293379192,4279702337 
-     DATA 4281212460,4291528712,4294881024,4294879744 
-     DATA 4294877952,4294878993,4294881831,4294752054 
-     DATA 4294752572,4291796803,4287592014,4288446803 
-     DATA 4290682202,4293837927,4294758251,4294957443 
-     DATA 4294958737,4294759286,4289104469,4278782020 
-     DATA 4278584386,4282329127,4286599446,4289358861 
-     DATA 4292183813,4293498114,4293694978,4293038083 
-     DATA 4291198471,4288832783,4286731285,4283314467 
-     DATA 4280686639,4278715712,4278321736,4279044930 
-     DATA 4279899456,4281674817,4283318340,4286145868 
-     DATA 4288578131,4291997024,4294561130,4294758250 
-     DATA 4294957182,4294957962,4294758509,4290024793 
-     DATA 4280754496,4278518853,4279307842,4280293951 
-     DATA 4282003522,4283121219,4285291081,4287263312 
-     DATA 4287986513,4288841299,4289301076,4288315218 
-     DATA 4282069314,4278913347,0,24,1,0 
-     DATA 2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0 
-     DATA 10,0,11,0,12,0,13,0,14,0,0,46,15,0,16,0 
-     DATA 17,0,18,0,19,1,20,7,19,1,21,0,22,0,23,0 
-     DATA 1,0,0,40,24,0,25,0,26,0,27,0,19,1,20,0 
-     DATA 28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0 
-     DATA 36,0,37,0,38,0,39,0,40,0,20,0,19,0,27,0 
-     DATA 41,0,42,0,43,0,0,34,44,0,45,0,46,0,47,0 
-     DATA 48,0,19,0,20,0,7,0,49,0,50,0,51,0,52,11 
-     DATA 53,0,54,0,29,0,28,0,19,0,55,0,56,0,57,0 
-     DATA 1,0,0,29,58,0,59,0,60,0,61,0,62,0,20,0 
-     DATA 28,0,63,0,64,0,51,0,52,17,34,0,65,0,66,0 
-     DATA 28,0,19,0,55,0,67,0,68,0,58,0,44,0,0,22 
-     DATA 69,0,70,0,71,0,18,0,72,0,73,0,74,0,48,0 
-     DATA 75,0,76,0,52,23,34,0,77,0,63,0,28,0,19,0 
-     DATA 78,0,79,0,80,0,81,0,0,19,82,0,83,0,7,0 
-     DATA 19,0,84,0,85,0,86,0,87,0,88,0,52,28,34,0 
-     DATA 65,0,39,0,8,0,19,0,89,0,90,0,0,16,44,0 
-     DATA 91,0,78,0,19,0,20,0,66,0,92,0,93,0,94,0 
-     DATA 52,33,95,0,50,0,96,0,8,0,97,0,44,0,0,14 
-     DATA 80,0,7,0,19,0,63,0,32,0,98,0,99,0,100,0 
-     DATA 52,37,36,0,96,0,68,0,0,13,24,0,101,0,20,0 
-     DATA 30,0,88,0,52,0,102,0,103,0,52,26,104,0,105,0 
-     DATA 52,10,88,0,106,0,24,0,0,12,107,0,7,0,108,0 
-     DATA 52,1,94,0,109,0,110,0,52,26,111,0,112,0,52,11 
-     DATA 113,0,114,0,0,12,115,0,7,0,116,0,52,1,117,0 
-     DATA 99,0,94,0,52,26,118,0,119,0,52,12,120,0,0,12 
-     DATA 115,0,66,0,52,2,121,0,122,0,94,0,52,25,123,0 
-     DATA 124,0,125,0,126,0,52,11,120,0,0,12,115,0,127,0 
-     DATA 52,2,128,0,129,0,52,26,130,0,131,1,132,0,52,11 
-     DATA 120,0,0,12,115,0,127,0,52,2,133,0,134,0,52,1 
-     DATA 94,0,52,18,135,0,112,0,136,0,137,0,138,0,139,0 
-     DATA 131,1,140,0,141,0,142,0,143,0,144,0,145,0,52,6 
-     DATA 120,0,0,12,115,0,127,0,52,2,134,0,146,0,52,0 
-     DATA 113,0,147,0,148,0,149,0,52,17,150,0,151,0,131,7 
-     DATA 124,0,152,0,52,7,120,0,0,12,115,0,127,0,153,0 
-     DATA 154,0,52,0,133,1,52,0,155,0,156,0,157,0,158,0 
-     DATA 159,0,52,17,160,0,161,0,131,4,162,0,163,0,164,0 
-     DATA 52,8,120,0,0,12,115,0,165,0,166,0,167,0,168,0 
-     DATA 128,0,103,0,113,0,169,0,170,0,171,0,172,0,173,0 
-     DATA 52,18,174,0,175,0,131,3,163,0,176,0,52,9,120,0 
-     DATA 0,12,177,0,178,0,179,0,180,0,181,0,182,0,183,0 
-     DATA 184,0,185,0,186,0,187,0,188,0,148,0,52,12,94,2 
-     DATA 189,0,190,2,191,0,131,3,192,0,193,0,52,9,120,0 
-     DATA 0,12,194,0,195,0,186,0,196,0,197,0,198,0,122,0 
-     DATA 184,0,199,0,186,0,187,0,200,0,201,0,52,8,94,1 
-     DATA 100,0,202,0,134,0,203,0,204,0,99,0,205,1,206,0 
-     DATA 207,0,131,0,208,0,131,1,208,0,209,0,113,0,52,8 
-     DATA 120,0,0,12,210,0,211,0,186,0,212,0,213,0,214,0 
-     DATA 215,0,189,0,216,0,217,0,218,0,179,0,219,0,52,6 
-     DATA 94,0,220,0,128,0,221,0,205,0,222,0,102,0,223,0 
-     DATA 224,0,117,0,100,1,225,0,208,0,226,0,227,0,228,0 
-     DATA 124,0,131,0,229,0,230,0,203,0,146,0,224,0,189,0 
-     DATA 52,4,120,0,0,12,231,0,232,0,233,0,234,0,235,0 
-     DATA 190,0,205,0,94,0,236,0,233,0,179,0,237,0,238,0 
-     DATA 52,4,189,0,198,0,122,0,205,0,203,0,182,0,239,0 
-     DATA 94,0,52,5,240,0,241,0,242,0,52,1,243,0,244,0 
-     DATA 245,0,98,0,246,0,247,0,248,0,99,0,249,0,246,0 
-     DATA 117,0,94,0,52,0,120,0,0,12,115,0,250,0,251,0 
-     DATA 252,0,253,0,113,0,230,0,190,1,254,0,255,0,256,0 
-     DATA 52,2,94,0,117,0,257,0,230,0,222,0,258,0,239,0 
-     DATA 94,0,52,8,259,0,260,0,52,3,261,0,262,0,52,2 
-     DATA 113,0,263,0,128,0,122,0,205,0,222,0,133,0,264,0 
-     DATA 0,12,115,0,265,0,266,0,267,0,94,1,215,0,98,0 
-     DATA 52,3,94,1,268,0,249,0,205,0,183,0,224,0,94,0 
-     DATA 52,11,193,0,52,5,193,0,52,5,94,0,190,0,269,0 
-     DATA 183,0,270,0,0,12,115,0,127,0,52,3,203,0,202,0 
-     DATA 52,2,239,0,146,0,248,1,271,0,100,0,94,0,52,30 
-     DATA 94,0,120,0,0,12,115,0,127,0,52,3,183,0,182,0 
-     DATA 190,0,182,0,122,0,272,0,249,0,202,0,94,0,52,34 
-     DATA 120,0,0,12,115,0,127,0,94,1,239,0,202,0,221,0 
-     DATA 230,0,273,0,221,0,258,0,100,0,52,37,120,0,0,12 
-     DATA 274,0,203,0,248,0,205,0,273,0,215,0,275,0,182,0 
-     DATA 239,0,52,20,88,1,276,0,116,0,33,0,36,0,277,0 
-     DATA 278,1,32,0,35,0,88,0,52,7,279,0,0,12,280,0 
-     DATA 281,0,190,0,117,0,113,0,52,18,88,0,53,0,77,0 
-     DATA 265,0,66,0,282,0,40,0,20,0,19,8,28,0,283,0 
-     DATA 75,0,36,0,52,4,284,0,0,12,285,0,19,0,7,0 
-     DATA 286,0,88,0,52,14,94,1,53,0,75,0,48,0,19,18 
-     DATA 20,0,29,0,37,0,52,2,287,0,0,11,288,0,18,0 
-     DATA 19,2,63,0,76,0,52,11,94,0,113,0,189,0,94,0 
-     DATA 276,0,95,0,36,0,29,0,19,19,20,0,54,0,189,0 
-     DATA 94,0,289,0,290,0,0,10,291,0,48,0,40,0,8,0 
-     DATA 28,0,20,0,7,0,292,0,88,0,52,7,94,0,113,1 
-     DATA 94,0,52,4,88,0,30,0,20,0,19,18,20,0,32,0 
-     DATA 189,0,113,0,293,0,0,10,294,0,52,0,88,0,276,0 
-     DATA 51,0,34,0,76,0,32,0,116,0,52,5,94,0,113,0 
-     DATA 189,0,94,0,52,8,37,0,8,0,19,18,283,0,52,0 
-     DATA 113,0,295,0,0,10,296,0,122,0,275,0,133,0,182,0 
-     DATA 214,0,117,0,190,0,94,1,52,3,94,0,189,0,94,0 
-     DATA 52,11,76,0,282,0,19,17,20,0,278,0,52,0,297,0 
-     DATA 298,0,0,9,299,0,300,5,272,0,109,0,221,0,247,0 
-     DATA 224,0,52,0,94,0,189,0,94,0,52,13,51,0,39,0 
-     DATA 19,17,301,0,52,1,302,0,303,0,0,8,69,0,304,0 
-     DATA 300,8,99,0,117,0,189,0,52,16,88,0,38,0,28,0 
-     DATA 19,15,305,0,52,2,306,0,44,0,0,8,307,0,300,3 
-     DATA 273,0,308,0,309,0,310,0,311,0,312,0,313,0,94,0 
-     DATA 52,18,53,0,96,0,20,0,19,12,20,0,65,0,52,2 
-     DATA 189,0,314,0,0,8,315,0,316,0,317,0,318,0,319,0 
-     DATA 320,0,321,0,322,0,323,2,324,0,220,0,189,0,94,0 
-     DATA 52,18,33,0,292,0,39,0,325,0,20,0,19,7,7,0 
-     DATA 326,0,52,4,302,0,327,0,0,8,328,0,323,8,329,0 
-     DATA 258,0,255,0,330,0,52,22,88,0,34,0,36,0,87,0 
-     DATA 31,0,77,0,286,0,64,0,277,0,276,0,52,6,331,0 
-     DATA 0,8,332,0,323,8,333,0,334,0,335,0,336,0,94,0 
-     DATA 52,19,94,1,100,0,154,0,337,0,338,0,339,0,340,0 
-     DATA 173,0,190,0,341,0,342,0,343,0,344,0,339,0,94,1 
-     DATA 52,1,345,0,43,0,0,7,346,0,347,0,348,0,349,0 
-     DATA 350,0,323,4,351,0,352,0,121,0,353,0,354,0,154,0 
-     DATA 52,15,94,0,113,0,339,0,343,0,355,0,356,0,159,0 
-     DATA 357,0,358,0,343,0,173,0,335,0,159,0,359,0,360,0 
-     DATA 361,0,362,0,363,0,364,0,365,0,256,0,94,0,52,0 
-     DATA 366,0,0,7,367,0,368,0,369,1,370,0,371,0,372,0 
-     DATA 323,2,351,0,373,0,374,0,100,0,375,0,376,0,94,0 
-     DATA 52,12,94,0,190,0,377,0,376,0,378,0,379,0,256,0 
-     DATA 380,0,94,0,52,9,94,0,153,0,381,0,382,0,381,0 
-     DATA 342,0,383,0,24,0,0,6,384,0,369,1,385,0,386,0 
-     DATA 387,0,388,0,323,2,389,0,390,0,391,0,129,0,189,0 
-     DATA 392,0,335,0,364,0,94,0,52,8,94,1,393,0,394,0 
-     DATA 238,0,256,0,379,0,52,1,94,1,113,0,190,0,239,0 
-     DATA 220,1,239,0,100,0,190,0,113,0,94,1,52,2,395,0 
-     DATA 396,0,159,0,397,0,0,6,398,0,399,0,400,0,401,0 
-     DATA 402,0,403,0,404,0,405,0,323,1,389,0,406,0,407,0 
-     DATA 408,0,128,0,94,0,409,0,410,0,392,0,153,0,94,0 
-     DATA 52,5,377,0,338,0,411,0,412,0,342,0,113,0,52,0 
-     DATA 94,0,113,0,224,0,133,0,122,0,109,0,272,0,300,4 
-     DATA 272,0,230,0,215,0,249,0,133,0,214,0,189,0,52,0 
-     DATA 343,0,94,0,413,0,0,5,414,0,415,0,416,0,417,0 
-     DATA 418,0,406,0,419,0,420,0,421,0,323,1,422,0,406,1 
-     DATA 423,0,424,0,128,0,94,0,154,1,410,0,201,0,190,0 
-     DATA 154,0,94,1,339,0,168,0,425,0,376,0,168,0,52,1 
-     DATA 94,0,98,0,103,0,230,0,426,0,427,0,428,0,429,0 
-     DATA 430,0,431,0,432,0,433,0,434,0,435,0,436,0,437,0 
-     DATA 438,0,439,0,440,0,441,0,99,0,134,0,189,0,52,0 
-     DATA 442,0,0,4,44,0,443,0,444,0,419,0,406,0,445,1 
-     DATA 406,0,446,0,447,1,448,0,449,0,406,2,450,0,451,0 
-     DATA 129,0,189,0,52,0,153,0,409,0,452,0,453,0,254,0 
-     DATA 364,0,454,0,236,0,100,0,94,0,52,0,94,0,268,0 
-     DATA 122,0,455,0,456,0,457,0,458,0,459,0,460,0,323,0 
-     DATA 322,0,461,0,462,0,369,0,463,0,464,0,465,0,466,0 
-     DATA 24,0,0,0,14,0,467,0,468,0,469,0,470,0,190,0 
-     DATA 471,0,0,4,472,0,473,0,406,0,445,0,474,0,475,0 
-     DATA 476,0,477,0,478,0,323,0,479,0,480,0,481,0,406,3 
-     DATA 482,0,483,0,215,0,268,0,94,0,52,0,113,0,484,0 
-     DATA 392,0,353,0,485,0,94,0,52,0,94,0,268,0,221,0 
-     DATA 486,0,487,0,488,0,390,0,406,2,489,0,490,0,491,0 
-     DATA 369,1,492,0,493,0,494,0,495,0,406,0,496,0,0,3 
-     DATA 327,0,497,0,248,0,498,0,0,3,14,0,499,0,418,0 
-     DATA 406,0,500,0,501,0,502,2,503,0,323,0,504,0,505,0 
-     DATA 506,0,406,4,507,0,508,0,509,0,122,0,268,0,113,0 
-     DATA 52,3,94,0,202,0,221,0,510,0,511,0,512,0,390,0 
-     DATA 406,4,513,0,514,0,369,0,515,0,516,0,517,0,518,0 
-     DATA 519,0,520,0,406,0,521,0,14,0,0,3,14,0,522,0 
-     DATA 523,0,0,3,524,0,525,0,406,0,445,0,526,0,502,3 
-     DATA 527,0,323,0,479,0,528,0,529,0,406,3,445,0,530,0 
-     DATA 531,0,532,0,533,0,534,0,109,0,102,0,269,0,121,0 
-     DATA 134,0,248,0,535,0,536,0,537,0,406,7,538,0,369,0 
-     DATA 539,0,540,0,162,0,208,0,541,0,542,0,543,0,406,0 
-     DATA 544,0,545,0,0,10,546,0,547,0,406,0,548,0,502,4 
-     DATA 549,0,323,0,550,0,528,0,551,0,406,3,495,0,552,0 
-     DATA 553,0,131,0,554,0,555,0,556,0,557,0,558,0,559,0 
-     DATA 560,0,561,0,562,0,563,0,564,0,406,7,565,0,566,0 
-     DATA 567,0,162,0,131,0,568,0,569,0,570,0,571,0,572,0 
-     DATA 406,0,573,0,0,10,574,0,419,0,406,0,575,0,502,4 
-     DATA 576,0,323,1,505,0,551,0,406,3,575,0,577,0,578,0 
-     DATA 131,2,579,0,580,0,581,0,582,0,583,0,584,0,406,0 
-     DATA 585,1,406,4,418,0,406,1,586,2,131,0,587,0,579,0 
-     DATA 588,0,589,0,590,0,591,0,406,0,592,0,0,9,593,0 
-     DATA 594,0,406,1,575,0,502,4,595,0,323,0,447,0,596,0 
-     DATA 597,0,406,3,598,0,526,0,599,0,131,0,600,0,601,0 
-     DATA 602,0,603,0,604,0,605,0,606,0,607,0,406,6,608,0 
-     DATA 609,0,610,0,406,2,611,0,131,0,612,0,613,0,614,0 
-     DATA 615,0,607,0,548,0,406,0,616,0,0,9,14,0,617,0 
-     DATA 406,1,618,0,502,4,619,0,323,0,620,0,323,0,621,0 
-     DATA 406,3,584,0,622,0,623,0,131,0,624,0,625,0,626,0 
-     DATA 627,0,628,0,629,0,630,0,575,0,406,5,631,0,632,0 
-     DATA 609,0,633,0,634,0,406,1,635,0,636,0,637,0,638,0 
-     DATA 639,0,640,0,543,0,641,0,642,0,643,0,0,10,644,0 
-     DATA 645,0,406,0,445,0,646,0,502,3,647,0,323,0,620,0 
-     DATA 323,0,648,0,406,3,572,0,649,0,650,0,162,0,208,0 
-     DATA 651,0,652,0,653,0,654,0,208,0,655,0,585,0,406,5 
-     DATA 656,0,657,0,658,0,406,0,659,0,406,1,660,0,661,0 
-     DATA 662,0,663,0,664,0,665,0,666,0,445,0,667,0,0,11 
-     DATA 668,0,669,0,406,1,670,0,502,3,671,0,323,0,672,0 
-     DATA 673,0,674,0,420,0,406,3,675,0,501,0,630,0,162,0 
-     DATA 131,0,676,0,677,0,208,0,678,0,543,0,406,13,445,0 
-     DATA 474,0,162,0,679,0,680,0,681,0,530,0,544,0,682,0 
-     DATA 0,9,44,0,683,0,684,0,685,0,572,0,406,0,586,0 
-     DATA 686,0,502,2,687,0,672,0,550,0,688,0,462,0,689,0 
-     DATA 406,3,495,0,690,0,649,0,681,0,691,0,692,0,623,0 
-     DATA 611,0,690,0,641,0,406,14,693,0,694,0,695,0,696,0 
-     DATA 649,0,697,0,698,0,44,0,0,7,699,0,700,0,701,0 
-     DATA 702,0,703,0,704,0,705,0,445,0,406,0,585,0,706,0 
-     DATA 502,1,707,0,708,0,709,0,348,0,710,1,598,0,406,3 
-     DATA 618,0,711,0,502,1,712,0,502,0,713,0,591,0,406,8 
-     DATA 390,0,714,0,715,0,406,3,585,0,577,0,622,0,502,0 
-     DATA 543,0,716,0,24,0,0,8,717,0,718,0,719,0,369,1 
-     DATA 368,0,515,0,720,0,721,0,406,0,445,0,607,0,477,0 
-     DATA 666,0,722,0,723,0,724,0,725,0,474,0,445,0,406,4 
-     DATA 445,0,575,0,726,1,575,0,586,0,406,7,390,0,727,0 
-     DATA 728,0,729,0,730,0,731,0,406,3,495,0,571,0,732,0 
-     DATA 733,0,734,0,0,11,735,0,736,0,737,0,738,0,739,0 
-     DATA 740,0,741,0,742,0,743,0,744,0,745,0,746,0,747,0 
-     DATA 748,0,749,0,750,0,622,0,751,0,543,0,752,0,753,0 
-     DATA 500,0,548,0,572,0,445,0,406,10,754,0,755,0,756,0 
-     DATA 757,0,758,0,759,0,760,0,406,6,761,0,69,0,0,13 
-     DATA 44,0,762,0,763,0,0,0,764,0,323,2,765,0,766,0 
-     DATA 767,0,768,0,502,8,712,0,751,0,543,0,769,0,770,0 
-     DATA 586,0,406,6,771,0,544,0,406,3,772,0,406,4,445,0 
-     DATA 773,0,774,0,0,17,735,0,775,0,372,0,490,0,776,0 
-     DATA 777,0,778,0,779,0,767,0,502,13,780,0,530,0,571,0 
-     DATA 781,0,445,0,406,12,445,0,500,0,782,0,783,0,0,16 
-     DATA 762,0,784,0,785,0,786,0,787,0,788,0,369,3,789,0 
-     DATA 790,0,791,0,792,0,793,0,794,0,795,0,796,0,797,0 
-     DATA 798,1,502,7,780,0,799,0,670,0,781,0,445,0,406,5 
-     DATA 445,0,641,0,800,0,801,0,802,0,803,0,0,17,804,0 
-     DATA 805,0,806,0,807,0,808,0,809,0,810,0,811,0,812,0 
-     DATA 813,0,814,0,815,0,816,0,817,0,14,0,0,1,14,0 
-     DATA 69,0,818,0,819,0,820,0,821,0,822,0,823,0,824,0 
-     DATA 825,0,826,0,827,0,502,3,552,0,828,0,829,0,753,0 
-     DATA 607,0,500,0,571,0,706,0,830,0,831,0,832,0,14,0 
-     DATA 0,22,14,3,44,0,0,16,14,0,69,0,833,0,834,0 
-     DATA 835,0,836,0,837,0,838,0,839,0,840,0,841,0,842,0 
-     DATA 843,0,823,0,844,0,845,0,44,0,0,15 
-   
-   
-     'Grass 
-     'CC0 license - Credit "Kenney.nl" or "www.kenney.nl" 
-   
-     DATA 156,4287879972,4287814179,4287682083,4286627359 
-     DATA 4286627103,4286757664,4288715570,4287475494 
-     DATA 4286692383,4288062764,4288128044,4288780851 
-     DATA 4286953250,4288845877,4290347331,4290020671 
-     DATA 4287671336,4286822944,4288258606,4290216769 
-     DATA 4290282050,4287605800,4289955390,4290412611 
-     DATA 4288911157,4287018786,4288846132,4290478148 
-     DATA 4289825085,4287736617,4286822689,4288193581 
-     DATA 4290151488,4290217025,4288193326,4287671080 
-     DATA 4289759804,4288911413,4287018787,4287149348 
-     DATA 4288780596,4289759549,4287801642,4286888225 
-     DATA 4288323887,4290020927,4290086464,4288389423 
-     DATA 4286887969,4287801897,4287149092,4287083811 
-     DATA 4288780852,4290151489,4290544457,4290478149 
-     DATA 4289629243,4287867178,4289955647,4290543943 
-     DATA 4289563707,4287083812,4287344678,4288976438 
-     DATA 4290610250,4290939734,4290742096,4289694524 
-     DATA 4287084067,4288585010,4289955646,4290544200 
-     DATA 4290873683,4290873684,4288650290,4289628988 
-     DATA 4289041974,4287410215,4287279653,4289237560 
-     DATA 4291071579,4291071578,4286692128,4287018531 
-     DATA 4288715571,4290544199,4288715315,4290742095 
-     DATA 4291071322,4290610251,4287344934,4289302841 
-     DATA 4290347330,4291137372,4290807889,4289759805 
-     DATA 4287736361,4286953506,4291071321,4290939735 
-     DATA 4289302585,4286626847,4286887970,4289368121 
-     DATA 4287018530,4289498683,4290347075,4290609994 
-     DATA 4289955391,4287540775,4288976693,4289498427 
-     DATA 4289563708,4290676044,4291005528,4290085951 
-     DATA 4289172279,4290609993,4290086207,4290741839 
-     DATA 4291005784,4290676045,4290478406,4291005785 
-     DATA 4291137630,4291137373,4290478405,4291269988 
-     DATA 4291203681,4291203938,4291138145,4291269989 
-     DATA 4291336040,4291137629,4291269731,4291336039 
-     DATA 4291137631,4291401833,4291335783,4291269474 
-     DATA 4291137887,4291203423,4291335782,4291269733 
-     DATA 4291137886,4291270245,4291269732,4291269990 
-     DATA 4291203424,4291203680,4291203939,4291203682 
-     DATA 4291269475,4291203937,4291270246,4291204195 
-     DATA 0,6,1,2,0,7,1,2,0,6,1,3,0,6,1,2 
-     DATA 0,3,2,63,3,521,4,1,3,18,4,1,3,18,4,1 
-     DATA 3,18,5,0,6,0,7,0,4,0,3,16,8,0,9,0 
-     DATA 10,0,8,0,3,14,4,0,3,0,4,0,7,0,11,0 
-     DATA 5,0,3,16,12,0,13,0,14,0,15,0,16,0,8,0 
-     DATA 3,12,4,0,3,0,17,0,18,0,19,0,20,0,18,0 
-     DATA 17,0,3,12,4,0,3,0,8,0,21,0,22,0,23,0 
-     DATA 24,0,12,0,3,12,4,0,3,0,25,0,26,0,20,0 
-     DATA 27,0,23,0,28,0,29,0,8,0,3,10,4,1,30,0 
-     DATA 31,0,32,0,27,1,33,0,34,0,30,0,3,11,4,0 
-     DATA 8,0,35,0,36,0,23,0,27,0,20,0,37,0,38,0 
-     DATA 3,12,39,0,40,0,19,0,27,2,23,0,41,0,42,0 
-     DATA 5,0,3,10,43,0,44,0,45,0,27,3,46,0,47,0 
-     DATA 48,0,3,10,5,0,49,0,36,0,23,0,27,2,20,0 
-     DATA 13,0,50,0,3,10,51,0,52,0,53,0,27,1,54,0 
-     DATA 55,0,27,0,23,0,56,0,57,0,5,0,3,8,43,0 
-     DATA 34,0,58,0,27,1,59,1,27,1,45,0,18,0,48,0 
-     DATA 3,8,5,0,49,0,60,0,23,0,27,0,55,0,54,0 
-     DATA 27,1,53,0,26,0,61,0,3,5,4,2,62,0,63,0 
-     DATA 53,0,27,1,64,0,65,0,66,0,55,0,27,0,23,0 
-     DATA 67,0,57,0,5,0,3,4,4,0,3,0,68,0,69,0 
-     DATA 70,0,27,1,71,0,72,0,73,0,71,0,27,1,58,0 
-     DATA 74,0,51,0,3,4,4,1,5,0,49,0,75,0,23,0 
-     DATA 27,0,55,0,66,0,65,0,64,0,27,1,19,0,76,0 
-     DATA 77,0,4,0,3,2,4,2,78,0,79,0,20,0,27,1 
-     DATA 64,0,65,0,80,0,81,0,66,0,55,0,27,0,23,0 
-     DATA 56,0,42,0,82,0,3,2,4,0,3,0,83,0,84,0 
-     DATA 53,0,27,1,85,0,72,0,80,1,73,0,71,0,27,1 
-     DATA 53,0,86,0,51,0,3,2,4,0,3,0,8,0,49,0 
-     DATA 60,0,23,0,27,0,55,0,87,0,88,0,80,0,65,0 
-     DATA 89,0,27,1,20,0,79,0,90,0,4,0,3,2,4,0 
-     DATA 78,0,91,0,92,0,27,1,89,0,65,0,80,0,93,0 
-     DATA 80,0,88,0,94,0,55,0,27,0,23,0,95,0,96,0 
-     DATA 8,0,3,2,97,0,26,0,53,0,27,1,71,0,72,0 
-     DATA 80,0,93,1,80,0,73,0,71,0,27,1,19,0,13,0 
-     DATA 12,0,3,2,8,0,35,0,36,0,23,0,27,0,55,0 
-     DATA 66,0,98,0,80,0,93,0,80,0,99,0,89,0,27,1 
-     DATA 92,0,91,0,90,0,4,0,3,0,4,0,51,0,100,0 
-     DATA 92,0,27,1,64,0,65,0,80,0,93,2,80,0,88,0 
-     DATA 66,0,55,0,27,0,23,0,95,0,35,0,101,0,3,0 
-     DATA 30,0,86,0,19,0,27,1,85,0,72,0,80,0,93,3 
-     DATA 80,0,73,0,85,0,27,1,19,0,40,0,102,0,3,0 
-     DATA 4,0,21,0,36,0,23,0,27,0,55,0,87,0,98,0 
-     DATA 80,0,93,2,80,0,65,0,89,0,27,1,92,0,103,0 
-     DATA 50,0,4,0,104,0,105,0,106,0,27,1,107,0,99,0 
-     DATA 80,0,93,4,80,0,81,0,66,0,55,0,27,0,23,0 
-     DATA 108,0,109,0,8,0,24,0,20,0,27,1,85,0,72,0 
-     DATA 80,0,93,5,80,0,73,0,71,0,27,1,20,0,110,0 
-     DATA 5,0,7,0,22,0,23,0,27,0,55,0,66,0,88,0 
-     DATA 80,0,93,4,80,0,99,0,64,0,27,1,23,0,111,0 
-     DATA 51,0,112,0,23,0,27,1,113,0,114,0,80,0,93,6 
-     DATA 80,0,81,0,87,0,55,0,27,0,23,0,115,0,116,0 
-     DATA 14,0,27,1,117,0,65,0,80,0,93,7,80,0,65,0 
-     DATA 107,0,27,1,14,0,116,0,118,0,23,0,27,0,55,0 
-     DATA 119,0,81,0,80,0,93,6,80,0,120,0,121,0,27,1 
-     DATA 23,0,75,0,27,1,55,0,113,0,98,0,93,10,80,0 
-     DATA 66,0,122,0,27,4,107,0,99,0,93,11,99,0,64,0 
-     DATA 27,4,122,0,66,0,80,0,93,10,98,0,121,0,55,0 
-     DATA 27,3,113,0,123,0,93,12,80,0,87,0,122,0,27,2 
-     DATA 117,0,99,0,93,13,99,0,107,0,27,2,122,0,119,0 
-     DATA 81,0,93,12,123,0,121,0,27,2,113,0,123,0,93,6 
-     DATA 124,0,93,6,80,0,66,0,122,0,27,0,107,0,99,0 
-     DATA 93,6,125,1,93,6,99,0,64,0,27,0,126,0,66,0 
-     DATA 81,0,93,6,124,0,93,6,98,0,121,0,55,0,113,0 
-     DATA 123,0,93,6,124,0,127,0,128,0,93,6,80,0,66,0 
-     DATA 64,0,99,0,93,6,125,0,129,1,125,0,93,6,99,0 
-     DATA 64,0,87,0,81,0,93,6,130,0,127,0,124,0,93,6 
-     DATA 123,0,121,0,98,0,93,6,124,0,131,0,132,1,128,0 
-     DATA 93,6,80,0,114,0,93,6,133,0,134,0,132,1,134,0 
-     DATA 133,0,93,6,114,0,80,0,93,6,128,0,135,0,132,0 
-     DATA 131,0,136,0,93,6,98,0,93,6,124,0,131,0,132,0 
-     DATA 137,0,132,0,138,0,128,0,93,13,133,0,139,0,132,0 
-     DATA 137,1,132,0,134,0,133,0,93,13,128,0,138,0,132,0 
-     DATA 137,0,132,0,131,0,124,0,93,12,136,0,131,0,132,0 
-     DATA 137,2,132,0,138,0,128,0,93,11,133,0,134,0,132,0 
-     DATA 137,3,132,0,134,0,133,0,93,11,128,0,138,0,132,0 
-     DATA 137,2,132,0,131,0,140,0,93,10,124,0,131,0,132,0 
-     DATA 137,4,132,0,138,0,128,0,93,9,133,0,139,0,132,0 
-     DATA 137,5,132,0,134,0,133,0,93,9,128,0,138,0,132,0 
-     DATA 137,4,132,0,131,0,124,0,93,8,141,0,142,0,132,0 
-     DATA 137,6,132,0,138,0,128,0,93,7,124,0,127,0,132,0 
-     DATA 137,7,132,0,131,0,124,0,93,7,128,0,138,0,132,0 
-     DATA 137,6,132,0,142,0,141,0,93,6,124,0,142,0,132,0 
-     DATA 137,8,132,0,138,0,128,0,93,5,124,0,143,0,132,0 
-     DATA 137,9,132,0,131,0,124,0,93,5,130,0,138,0,132,0 
-     DATA 137,8,132,0,142,0,140,0,93,4,140,0,138,0,137,12 
-     DATA 132,0,128,0,93,3,124,0,131,0,137,13,131,0,124,0 
-     DATA 93,3,130,0,132,0,137,12,138,0,141,0,93,2,124,0 
-     DATA 138,0,137,14,132,0,128,0,93,1,124,0,131,0,137,15 
-     DATA 131,0,124,0,93,1,130,0,132,0,137,14,138,0,144,0 
-     DATA 93,0,140,0,138,0,137,16,132,0,128,0,124,0,131,0 
-     DATA 137,17,131,0,124,0,130,0,132,0,137,16,138,0,141,0 
-     DATA 138,0,137,18,132,0,145,0,137,19,145,0,132,0,137,18 
-     DATA 138,0,137,73,132,0,137,62,146,0,138,0,137,18,147,1 
-     DATA 137,18,138,0,146,0,137,18,146,0,124,0,148,0,138,0 
-     DATA 137,16,147,0,140,1,147,0,137,16,138,0,149,0,133,0 
-     DATA 134,0,137,16,134,0,133,0,93,1,141,0,138,0,137,14 
-     DATA 147,0,136,0,93,1,124,0,147,0,137,14,138,0,148,0 
-     DATA 93,1,133,0,134,0,137,14,146,0,133,0,93,3,141,0 
-     DATA 138,0,137,12,147,0,140,0,93,3,140,0,147,0,137,12 
-     DATA 135,0,148,0,93,3,133,0,134,0,137,10,132,1,134,0 
-     DATA 133,0,93,5,148,0,138,0,132,0,137,7,132,1,147,0 
-     DATA 136,0,93,5,124,0,147,0,132,0,137,7,132,1,138,0 
-     DATA 149,0,93,5,133,0,134,0,132,0,137,7,132,1,146,0 
-     DATA 133,0,93,7,141,0,138,0,132,0,137,6,132,0,131,0 
-     DATA 140,0,93,7,136,0,131,0,132,0,137,6,132,0,138,0 
-     DATA 148,0,93,7,133,0,134,0,132,1,137,4,132,0,135,0 
-     DATA 150,0,133,0,93,9,149,0,142,0,132,0,137,4,132,0 
-     DATA 146,0,133,0,93,9,133,0,134,0,132,0,137,4,132,0 
-     DATA 142,0,149,0,93,10,151,0,135,0,132,0,137,2,132,0 
-     DATA 135,0,129,0,93,12,149,0,142,0,132,0,137,2,132,0 
-     DATA 146,0,133,0,93,11,133,0,146,0,132,0,137,2,132,0 
-     DATA 142,0,149,0,93,12,129,0,135,0,132,0,137,0,132,1 
-     DATA 129,0,93,14,149,0,142,0,132,2,146,0,133,0,93,13 
-     DATA 133,0,146,0,132,2,142,0,149,0,93,14,129,0,135,0 
-     DATA 132,1,129,0,93,16,149,0,138,0,132,0,146,0,133,0 
-     DATA 93,15,133,0,134,0,132,0,138,0,149,0,93,16,129,0 
-     DATA 132,0,151,0,93,18,148,0,152,0,133,0,93,17,133,0 
-     DATA 152,0,148,0,93,18,128,0,93,20,125,0,93,19,125,0 
-     DATA 93,158,153,0,125,0,93,18,140,1,93,19,129,0,93,18 
-     DATA 129,0,132,0,154,0,125,0,93,16,140,0,135,1,140,0 
-     DATA 93,17,146,0,132,0,146,0,93,16,129,0,132,0,137,0 
-     DATA 132,0,147,0,124,0,93,14,141,0,135,0,137,1,135,0 
-     DATA 148,0,93,14,125,0,146,0,132,0,137,0,132,0,127,0 
-     DATA 93,14,129,0,132,0,137,2,132,0,147,0,124,0,93,12 
-     DATA 148,0,142,0,137,3,138,0,149,0,93,12,125,0,146,0 
-     DATA 132,0,137,2,132,0,134,0,125,0,93,10,133,0,129,0 
-     DATA 135,0,137,4,132,0,131,0,136,0,93,10,149,0,142,0 
-     DATA 137,5,138,0,149,0,93,10,133,0,134,0,132,0,137,4 
-     DATA 132,0,146,0,133,0,93,8,133,0,134,0,132,0,137,6 
-     DATA 132,0,131,0,140,0,93,8,149,0,142,0,137,7,142,0 
-     DATA 128,0,125,0,93,7,124,0,146,0,132,0,137,6,132,0 
-     DATA 134,0,133,0,93,6,133,0,134,0,132,0,137,9,142,0 
-     DATA 149,0,93,6,149,0,142,0,137,9,135,0,129,0,125,0 
-     DATA 93,5,136,0,131,0,132,0,137,8,132,0,134,0,133,0 
-     DATA 93,4,125,0,134,0,132,0,137,11,142,0,148,0,93,4 
-     DATA 149,0,142,0,137,11,138,0,129,0,93,4,124,0,131,0 
-     DATA 132,0,137,10,132,0,134,0,133,0,93,3,134,0,132,0 
-     DATA 137,13,142,0,149,0,93,2,148,0,142,0,137,13,135,0 
-     DATA 129,0,93,2,124,0,131,0,132,0,137,12,132,0,146,0 
-     DATA 125,0,93,1,129,0,132,0,137,15,138,0,140,0,93,0 
-     DATA 141,0,142,0,137,15,135,0,129,0,93,0,124,0,131,0 
-     DATA 132,0,137,14,132,0,134,0,93,0,150,0,132,0,137,17 
-     DATA 135,0,150,0,135,0,137,17,132,0,155,0,147,0,132,0 
-     DATA 137,16,132,0,127,0,132,0,137,19,132,0,137,19,132,1 
-   
-     ' Crate 
-     DATA 423,4282460194,4283248930,4281212195,4283511331 
-     DATA 4284759589,4285219623,4285876779,4286205228 
-     DATA 4286336558,4286271022,4286139436,4285810986 
-     DATA 4284825381,4282000418,4286204972,4287519283 
-     DATA 4289359165,4290016323,4290147908,4289884994 
-     DATA 4289227836,4287322161,4286139435,4285350952 
-     DATA 4285876778,4287453746,4286008107,4287979317 
-     DATA 4289819200,4289950529,4289753407,4287716660 
-     DATA 4287387954,4286271021,4289490750,4287913781 
-     DATA 4285482537,4288176438,4289556285,4289622078 
-     DATA 4287519538,4282329110,4285811240,4289359164 
-     DATA 4285219878,4282526231,4288176694,4287782196 
-     DATA 4285548072,4288110646,4288702009,4285942571 
-     DATA 4290082372,4289424957,4282854681,4278190080 
-     DATA 4281409553,4288702265,4287913780,4280949518 
-     DATA 4284234528,4285613865,4288307767,4289227580 
-     DATA 4288307511,4285942315,4286468397,4281672210 
-     DATA 4284891428,4289030715,4284300321,4281738003 
-     DATA 4287322417,4287519539,4287979573,4289162044 
-     DATA 4288241975,4287716404,4286073900,4287847989 
-     DATA 4289293628,4288504887,4289030458,4289162043 
-     DATA 4288899130,4289424956,4287650867,4288570680 
-     DATA 4286599725,4288767801,4287847988,4288833338 
-     DATA 4288504888,4289030714,4287585075,4288045109 
-     DATA 4288439351,4288899386,4289884993,4282000660 
-     DATA 4279569671,4284037407,4289424700,4285416744 
-     DATA 4285351208,4285285416,4285548073,4288110902 
-     DATA 4283183387,4279307014,4283249179,4281803539 
-     DATA 4279438342,4283906079,4289096251,4288439352 
-     DATA 4288964922,4289490751,4287453492,4284693795 
-     DATA 4282854422,4282722837,4282657301,4282394387 
-     DATA 4282788629,4282920214,4282723093,4282460180 
-     DATA 4282591509,4282985751,4282854167,4284891172 
-     DATA 4287387955,4289950785,4289622080,4283117594 
-     DATA 4279306757,4288308022,4286139690,4289030459 
-     DATA 4288701753,4288505143,4287125296,4288570936 
-     DATA 4290148165,4287519541,4285022501,4284365346 
-     DATA 4285679401,4286270764,4285285159,4284628259 
-     DATA 4285088294,4286533677,4285153831,4285088038 
-     DATA 4287650869,4290147909,4290082115,4287191088 
-     DATA 4289490493,4285679658,4290279237,4290016578 
-     DATA 4288373559,4286139947,4288702264,4284168992 
-     DATA 4279898377,4283643421,4289687871,4290213701 
-     DATA 4287782198,4285416745,4285942316,4286205230 
-     DATA 4286073901,4284956710,4286533679,4287256370 
-     DATA 4286402351,4286073645,4285810987,4287519284 
-     DATA 4286402094,4285876780,4287847990,4290082114 
-     DATA 4286074154,4280029449,4282657560,4288373815 
-     DATA 4278386945,4282657816,4289687614,4290279494 
-     DATA 4287387956,4285482281,4287519540,4290213702 
-     DATA 4285482791,4278321408,4288308023,4290147910 
-     DATA 4285942572,4290016579,4286731054,4287716659 
-     DATA 4289490749,4290279238,4287585077,4286204973 
-     DATA 4288636473,4287716406,4286993713,4290213445 
-     DATA 4288570424,4288044854,4285614122,4286993712 
-     DATA 4287453748,4286336557,4285745194,4287585076 
-     DATA 4288570681,4286665006,4284628258,4288439095 
-     DATA 4286796592,4285285160,4286796591,4286008108 
-     DATA 4284299808,4287256369,4286139437,4287453747 
-     DATA 4290082373,4283971358,4283051287,4286008364 
-     DATA 4283773980,4282263058,4283905566,4286928175 
-     DATA 4288636217,4288504632,4288176182,4286665262 
-     DATA 4283642652,4282328595,4284102688,4283774237 
-     DATA 4283840029,4286927919,4288767545,4290082371 
-     DATA 4287519285,4285482536,4286730799,4283708444 
-     DATA 4284102687,4285810731,4286205229,4285745195 
-     DATA 4287125040,4288439096,4289687870,4286862127 
-     DATA 4285876523,4283445787,4282131474,4284431137 
-     DATA 4287125041,4290147907,4286927920,4283971102 
-     DATA 4284234016,4283314202,4282197266,4290082117 
-     DATA 4288176439,4283773981,4282000145,4284825378 
-     DATA 4286665007,4285613866,4284102686,4289556286 
-     DATA 4289424958,4287190833,4286862128,4286665263 
-     DATA 4284234014,4289491006,4283379995,4287321906 
-     DATA 4287059249,4286533678,4282394388,4285088295 
-     DATA 4282131730,4290345030,4284036894,4284037151 
-     DATA 4283839773,4284168223,4290345031,4283905565 
-     DATA 4283577116,4288373303,4290147651,4289359422 
-     DATA 4282460179,4284036895,4284365601,4289096250 
-     DATA 4286796336,4290016322,4285876522,4290148164 
-     DATA 4285088039,4286993456,4285153830,4286468143 
-     DATA 4282263059,4283511579,4283511323,4287059248 
-     DATA 4290213444,4283708701,4285745451,4283642908 
-     DATA 4282197522,4284365345,4283839774,4283840030 
-     DATA 4289950786,4282525716,4283905309,4283511324 
-     DATA 4284168222,4283379994,4290016580,4287059505 
-     DATA 4289293629,4290213700,4282525972,4288505144 
-     DATA 4282000401,4284299807,4286665517,4283051802 
-     DATA 4286731310,4283708445,4284891174,4284102430 
-     DATA 4286993455,4283183131,4285351463,4289227835 
-     DATA 4282723352,4286270765,4284760099,4281015055 
-     DATA 4285548583,4281935124,4285285926,4284234529 
-     DATA 4288768057,4286205739,4283380508,4287256625 
-     DATA 4282328851,4284168479,4283314715,4286993967 
-     DATA 4280949262,4278584322,4288044853,4286927921 
-     DATA 4286270766,4287190834,4283117080,4284890916 
-     DATA 4287650868,4289425215,4282394902,4278452993 
-     DATA 4282197781,4284103199,4280226571,4285679912 
-     DATA 4286073899,4286139692,4287913525,4280095242 
-     DATA 4285220134,4288045110,4287125554,4288768059 
-     DATA 4288439353,4287322419,4290082116,4284891684 
-     DATA 4280226826,4283446044,4289096507,4282920473 
-     DATA 4280292363,4286008362,4289753408,4281672211 
-     DATA 4288242230,4281212176,4285877033,4287979318 
-     DATA 4287256626,4285154087,4288833593,4288176183 
-     DATA 4284759845,4281277987,4280423717,0,1 
-     DATA 1,61,2,0,3,0,4,0,5,0,6,0,7,0,8,0 
-     DATA 9,0,8,3,9,0,8,46,10,0,11,0,5,0,12,0 
-     DATA 13,0,3,0,5,0,14,0,15,0,16,0,17,0,18,51 
-     DATA 19,0,20,0,21,0,22,0,23,0,13,0,3,0,24,0 
-     DATA 25,0,26,0,27,0,28,0,29,51,30,0,31,0,26,0 
-     DATA 32,0,6,0,13,0,3,0,33,0,34,0,35,0,36,0 
-     DATA 37,0,38,0,39,0,38,0,40,0,41,0,42,0,38,0 
-     DATA 39,37,43,0,44,0,45,0,46,0,39,1,38,0,47,0 
-     DATA 48,0,49,0,50,0,51,0,13,0,3,0,8,0,52,0 
-     DATA 29,0,49,0,36,0,47,0,53,0,39,0,54,0,55,0 
-     DATA 56,0,57,0,39,37,58,0,59,0,55,0,60,0,39,0 
-     DATA 43,0,15,0,61,0,62,0,63,0,64,0,65,0,13,0 
-     DATA 3,0,9,0,18,0,29,0,38,0,31,0,65,0,47,0 
-     DATA 43,0,66,0,67,0,68,0,53,0,39,37,69,0,70,0 
-     DATA 71,0,72,0,43,0,73,0,26,0,74,0,38,0,75,0 
-     DATA 76,0,65,0,13,0,3,0,8,0,18,0,29,0,39,0 
-     DATA 53,0,77,0,78,0,79,0,80,0,81,0,82,0,83,39 
-     DATA 84,0,57,0,85,0,86,0,22,0,35,0,53,0,39,0 
-     DATA 75,0,76,0,65,0,13,0,3,0,8,0,18,0,29,0 
-     DATA 87,0,88,0,89,0,90,0,6,0,47,0,91,0,92,41 
-     DATA 93,0,94,0,24,0,95,0,96,0,88,0,97,0,75,0 
-     DATA 76,0,65,0,13,0,3,0,8,0,18,0,98,0,99,0 
-     DATA 100,0,101,0,102,0,31,0,103,0,104,0,105,5,104,0 
-     DATA 106,27,23,0,105,5,103,0,23,0,107,0,20,0,108,0 
-     DATA 109,0,110,0,75,0,76,0,65,0,13,0,3,0,8,0 
-     DATA 18,0,98,0,111,0,112,0,113,0,114,0,82,0,103,0 
-     DATA 115,0,116,3,75,0,117,0,118,0,119,0,120,0,121,3 
-     DATA 122,0,123,0,124,0,125,0,126,0,121,5,122,0,127,0 
-     DATA 128,0,129,0,121,4,130,0,131,0,132,0,69,0,116,4 
-     DATA 27,0,106,0,133,0,134,0,135,0,136,0,135,0,75,0 
-     DATA 76,0,65,0,13,0,3,0,9,0,18,0,29,0,137,0 
-     DATA 138,0,89,0,139,0,140,0,23,0,116,0,38,0,141,0 
-     DATA 142,0,143,0,39,0,18,0,144,0,145,0,146,0,5,0 
-     DATA 23,2,105,0,147,0,148,0,149,0,106,0,23,5,150,0 
-     DATA 151,0,152,0,153,0,106,0,23,2,154,0,155,0,156,0 
-     DATA 157,0,158,0,39,0,83,0,159,0,95,0,160,0,92,0 
-     DATA 161,0,162,0,163,0,164,0,165,0,166,0,75,0,76,0 
-     DATA 65,0,13,0,3,0,8,0,18,0,29,0,39,2,139,0 
-     DATA 140,0,23,0,116,0,83,0,167,0,168,0,169,0,39,0 
-     DATA 170,0,18,0,171,0,172,0,173,0,174,0,175,1,176,0 
-     DATA 177,0,178,0,179,0,180,0,175,5,181,0,105,0,182,0 
-     DATA 183,0,184,0,175,1,185,0,173,0,186,0,171,0,187,0 
-     DATA 39,1,188,0,189,0,190,0,191,0,92,0,161,0,162,0 
-     DATA 163,0,39,2,75,0,76,0,65,0,13,0,3,0,8,0 
-     DATA 18,0,29,0,39,2,139,0,140,0,23,0,116,0,83,0 
-     DATA 108,0,192,0,193,0,39,1,194,0,18,0,195,0,196,0 
-     DATA 173,0,174,0,175,0,176,0,177,0,178,0,179,0,180,0 
-     DATA 175,5,181,0,105,0,182,0,183,0,184,0,175,0,185,0 
-     DATA 197,0,198,0,199,0,163,0,39,2,200,0,201,0,56,0 
-     DATA 46,0,92,0,161,0,162,0,163,0,39,2,75,0,76,0 
-     DATA 65,0,13,0,3,0,8,0,18,0,29,0,39,2,139,0 
-     DATA 140,0,23,0,116,0,38,0,202,0,88,0,164,0,39,3 
-     DATA 18,0,203,0,196,0,103,0,204,0,176,0,177,0,178,0 
-     DATA 179,0,180,0,175,5,181,0,105,0,182,0,183,0,184,0 
-     DATA 174,0,173,0,183,0,157,0,205,0,39,3,97,0,206,0 
-     DATA 207,0,53,0,92,0,161,0,162,0,163,0,39,2,75,0 
-     DATA 76,0,65,0,13,0,3,0,8,0,18,0,29,0,39,2 
-     DATA 139,0,140,0,23,0,97,0,208,0,39,7,18,0,209,0 
-     DATA 210,0,106,0,185,0,177,0,178,0,179,0,180,0,175,5 
-     DATA 181,0,105,0,182,0,183,0,211,0,36,0,156,0,199,0 
-     DATA 205,0,39,6,38,0,102,0,115,0,161,0,162,0,163,0 
-     DATA 39,2,75,0,76,0,65,0,13,0,3,0,8,0,18,0 
-     DATA 29,0,39,2,139,0,140,0,23,0,212,0,91,0,53,0 
-     DATA 39,6,194,0,18,0,157,0,213,0,103,0,177,0,178,0 
-     DATA 179,0,180,0,175,5,181,0,105,0,182,0,214,0,61,0 
-     DATA 172,0,215,0,158,0,39,5,38,1,43,0,216,0,217,0 
-     DATA 218,0,162,0,163,0,39,2,75,0,76,0,65,0,13,0 
-     DATA 3,0,8,0,18,0,29,0,39,2,139,0,140,0,103,0 
-     DATA 219,0,92,0,89,0,53,0,39,6,170,0,18,0,215,0 
-     DATA 220,0,155,0,221,0,179,0,180,0,175,5,181,0,105,0 
-     DATA 36,0,222,0,223,0,171,0,158,0,39,6,38,0,43,0 
-     DATA 224,0,76,0,225,0,222,0,162,0,163,0,39,2,75,0 
-     DATA 76,0,65,0,13,0,3,0,8,0,18,0,29,0,39,2 
-     DATA 139,0,140,0,48,0,226,0,219,0,227,0,57,0,160,0 
-     DATA 39,6,194,0,18,0,203,0,132,0,161,0,228,0,180,0 
-     DATA 175,5,181,0,229,0,152,0,183,0,157,0,205,0,39,7 
-     DATA 85,0,216,0,76,0,230,0,151,0,231,0,162,0,163,0 
-     DATA 39,2,75,0,76,0,65,0,13,0,3,0,8,0,18,0 
-     DATA 29,0,39,2,139,0,140,0,48,0,121,0,232,0,233,0 
-     DATA 164,0,50,0,38,0,39,7,18,0,203,0,118,0,222,0 
-     DATA 234,1,175,3,234,0,174,0,150,0,235,0,236,0,158,0 
-     DATA 39,6,38,1,216,0,76,0,219,0,237,0,238,0,239,0 
-     DATA 162,0,163,0,39,2,75,0,76,0,65,0,13,0,3,0 
-     DATA 8,0,18,0,29,0,39,2,139,0,140,0,106,0,240,0 
-     DATA 241,0,242,0,243,0,76,0,244,0,53,0,39,7,18,0 
-     DATA 209,0,213,0,106,0,174,0,175,3,174,0,36,0,186,0 
-     DATA 209,0,158,0,39,6,38,0,102,0,245,0,246,0,247,0 
-     DATA 248,0,249,0,250,0,10,0,162,0,163,0,39,2,75,0 
-     DATA 76,0,65,0,13,0,3,0,8,0,18,0,29,0,39,2 
-     DATA 139,0,140,0,61,0,182,0,251,0,127,0,252,0,253,0 
-     DATA 227,0,254,0,53,0,39,7,255,0,157,0,256,0,36,0 
-     DATA 174,0,234,0,175,0,174,0,257,0,156,0,215,0,158,0 
-     DATA 39,5,38,1,43,0,244,0,76,0,258,0,259,0,127,0 
-     DATA 260,0,261,0,262,0,162,0,163,0,39,2,75,0,76,0 
-     DATA 65,0,13,0,3,0,8,0,18,0,29,0,39,2,139,0 
-     DATA 140,0,61,0,234,0,263,0,248,0,123,0,251,0,264,0 
-     DATA 265,0,254,0,53,0,39,6,266,0,255,0,157,0,183,0 
-     DATA 103,0,174,0,185,0,103,0,198,0,171,0,158,0,194,0 
-     DATA 39,5,38,0,43,0,244,0,62,0,267,0,242,0,127,0 
-     DATA 237,0,268,0,181,0,262,0,162,0,163,0,39,2,75,0 
-     DATA 76,0,65,0,13,0,3,0,8,0,18,0,29,0,39,2 
-     DATA 139,0,140,0,61,0,234,0,175,0,222,0,269,0,270,0 
-     DATA 271,0,272,0,227,0,50,0,160,0,39,6,194,0,273,0 
-     DATA 203,0,196,0,229,0,23,0,183,0,157,0,158,0,194,0 
-     DATA 39,6,85,0,87,0,76,0,274,0,275,0,249,0,276,0 
-     DATA 182,0,175,0,181,0,262,0,162,0,163,0,39,2,75,0 
-     DATA 76,0,65,0,13,0,3,0,8,0,18,0,29,0,39,2 
-     DATA 139,0,140,0,61,0,234,0,175,1,173,0,277,0,278,0 
-     DATA 232,0,219,0,62,0,224,0,38,0,39,7,158,0,279,0 
-     DATA 198,0,186,0,199,0,158,0,39,6,38,0,160,0,92,0 
-     DATA 280,0,230,0,281,0,282,0,283,0,284,0,175,1,181,0 
-     DATA 262,0,162,0,163,0,39,2,75,0,76,0,65,0,13,0 
-     DATA 3,0,8,0,18,0,29,0,39,2,139,0,140,0,61,0 
-     DATA 234,0,175,1,285,0,154,0,286,0,123,0,242,0,253,0 
-     DATA 76,0,212,0,53,0,39,7,287,0,288,0,209,0,158,0 
-     DATA 39,6,38,0,102,0,87,0,246,0,247,0,248,0,278,0 
-     DATA 251,0,289,0,290,0,175,1,181,0,262,0,162,0,163,0 
-     DATA 39,2,75,0,76,0,65,0,13,0,3,0,8,0,18,0 
-     DATA 29,0,39,2,139,0,140,0,61,0,234,0,175,1,285,0 
-     DATA 154,0,291,0,292,0,127,0,242,0,253,0,227,0,50,0 
-     DATA 53,0,39,5,85,0,293,0,171,0,158,0,39,6,38,0 
-     DATA 43,0,244,0,76,0,258,0,248,0,127,0,294,0,150,0 
-     DATA 295,0,290,0,175,1,181,0,262,0,162,0,163,0,39,2 
-     DATA 75,0,76,0,65,0,13,0,3,0,8,0,18,0,29,0 
-     DATA 39,2,139,0,140,0,61,0,234,0,175,1,285,0,154,0 
-     DATA 296,0,297,0,248,0,298,0,242,0,289,0,265,0,50,0 
-     DATA 53,0,39,3,85,0,34,0,195,0,18,0,194,0,39,5 
-     DATA 287,0,16,0,244,0,62,0,274,0,281,0,123,0,242,0 
-     DATA 299,0,197,0,295,0,290,0,175,0,234,0,181,0,262,0 
-     DATA 162,0,163,0,39,2,75,0,76,0,65,0,13,0,3,0 
-     DATA 8,0,18,0,29,0,39,2,139,0,140,0,61,0,234,0 
-     DATA 175,1,285,0,154,0,296,1,182,0,281,0,300,0,232,0 
-     DATA 219,0,227,0,244,0,208,0,39,1,160,0,34,0,301,0 
-     DATA 158,0,39,7,160,0,216,0,64,0,230,0,302,0,300,0 
-     DATA 303,0,6,0,197,1,295,0,290,0,175,0,234,0,181,0 
-     DATA 262,0,162,0,163,0,39,2,75,0,76,0,65,0,13,0 
-     DATA 3,0,8,0,18,0,29,0,39,2,139,0,140,0,61,0 
-     DATA 234,0,175,1,285,0,154,0,296,1,175,0,231,0,304,0 
-     DATA 278,0,305,0,219,0,62,0,244,0,38,0,160,0,39,0 
-     DATA 306,0,158,0,39,7,160,0,216,0,280,0,230,0,307,0 
-     DATA 300,0,260,0,231,0,175,0,197,1,295,0,290,0,175,1 
-     DATA 181,0,262,0,162,0,163,0,39,2,75,0,76,0,65,0 
-     DATA 13,0,3,0,8,0,18,0,29,0,39,2,139,0,140,0 
-     DATA 61,0,234,0,175,1,285,0,154,0,296,1,175,1,234,0 
-     DATA 308,0,249,0,242,0,253,0,309,0,114,0,287,0,301,0 
-     DATA 310,0,39,7,53,0,244,0,280,0,247,0,248,0,249,0 
-     DATA 242,0,176,0,175,1,197,1,295,0,290,0,175,1,181,0 
-     DATA 262,0,162,0,163,0,39,2,75,0,76,0,65,0,13,0 
-     DATA 3,0,8,0,18,0,29,0,39,2,139,0,140,0,61,0 
-     DATA 234,0,175,1,285,0,154,0,296,1,175,2,182,0,248,0 
-     DATA 127,0,260,0,25,0,311,0,162,0,18,0,194,0,39,6 
-     DATA 53,0,50,0,309,0,272,0,242,0,312,0,252,0,182,0 
-     DATA 175,2,197,1,295,0,290,0,175,1,181,0,262,0,162,0 
-     DATA 163,0,39,2,75,0,76,0,65,0,13,0,3,0,8,0 
-     DATA 18,0,29,0,39,2,139,0,140,0,61,0,234,0,175,1 
-     DATA 285,0,154,0,296,1,175,3,263,0,313,0,314,0,186,0 
-     DATA 195,0,310,0,194,0,39,6,53,0,212,0,92,0,116,0 
-     DATA 15,0,276,0,260,0,182,0,175,2,234,0,197,1,295,0 
-     DATA 290,0,175,1,181,0,262,0,162,0,163,0,39,2,75,0 
-     DATA 76,0,65,0,13,0,3,0,8,0,18,0,29,0,39,2 
-     DATA 139,0,140,0,61,0,234,0,175,1,285,0,154,0,296,1 
-     DATA 175,3,174,0,23,0,220,0,209,0,310,0,194,0,39,6 
-     DATA 38,0,244,0,164,0,82,0,39,0,157,0,132,0,5,0 
-     DATA 174,0,175,3,197,1,295,0,290,0,175,0,234,0,181,0 
-     DATA 262,0,162,0,163,0,39,2,75,0,76,0,65,0,13,0 
-     DATA 3,0,8,0,18,0,29,0,39,2,139,0,140,0,61,0 
-     DATA 234,0,175,1,285,0,154,0,296,1,175,1,234,0,174,0 
-     DATA 36,0,210,0,157,0,310,0,39,7,38,0,244,0,309,0 
-     DATA 82,0,160,0,39,0,163,0,157,0,183,0,197,0,174,0 
-     DATA 234,0,175,1,197,1,295,0,290,0,175,1,181,0,262,0 
-     DATA 162,0,163,0,39,2,75,0,76,0,65,0,13,0,3,0 
-     DATA 8,0,18,0,29,0,39,2,139,0,140,0,61,0,234,0 
-     DATA 175,1,285,0,154,0,296,1,175,1,231,0,106,0,156,0 
-     DATA 209,0,18,0,39,7,53,0,244,0,227,0,114,0,38,0 
-     DATA 39,2,158,0,157,0,210,0,106,0,231,0,175,1,197,1 
-     DATA 295,0,290,0,175,1,181,0,262,0,162,0,163,0,39,2 
-     DATA 75,0,76,0,65,0,13,0,3,0,8,0,18,0,29,0 
-     DATA 39,2,139,0,140,0,61,0,234,0,175,1,285,0,154,0 
-     DATA 296,1,175,0,185,0,173,0,186,0,171,0,310,0,194,0 
-     DATA 39,6,53,0,50,0,245,0,114,0,38,0,39,4,158,0 
-     DATA 157,0,213,0,197,0,174,0,175,0,197,1,295,0,290,0 
-     DATA 175,0,234,0,181,0,262,0,162,0,163,0,39,2,75,0 
-     DATA 76,0,65,0,13,0,3,0,8,0,18,0,29,0,39,2 
-     DATA 139,0,140,0,61,0,234,0,175,1,285,0,154,0,296,1 
-     DATA 185,0,103,0,183,0,209,0,310,0,194,0,39,6,53,0 
-     DATA 50,0,92,0,315,0,160,0,39,5,194,0,158,0,157,0 
-     DATA 118,0,103,0,174,0,197,1,295,0,290,0,175,1,181,0 
-     DATA 262,0,162,0,163,0,39,2,75,0,76,0,65,0,13,0 
-     DATA 3,0,8,0,18,0,29,0,39,2,139,0,140,0,61,0 
-     DATA 234,0,175,1,285,0,154,0,296,0,316,0,103,0,183,0 
-     DATA 157,0,273,0,194,0,39,6,38,0,244,0,309,0,116,0 
-     DATA 114,0,38,0,39,7,317,0,236,0,196,0,173,0,229,0 
-     DATA 197,0,295,0,290,0,175,0,234,0,181,0,262,0,162,0 
-     DATA 163,0,39,2,75,0,76,0,65,0,13,0,3,0,8,0 
-     DATA 18,0,29,0,39,2,139,0,140,0,61,0,234,0,175,1 
-     DATA 285,0,154,0,258,0,318,0,223,0,144,0,319,0,39,7 
-     DATA 38,0,244,0,76,0,272,0,21,0,309,0,216,0,38,0 
-     DATA 287,0,39,6,158,0,236,0,118,0,320,0,197,0,179,0 
-     DATA 290,0,175,1,181,0,262,0,162,0,163,0,39,2,75,0 
-     DATA 76,0,65,0,13,0,3,0,8,0,18,0,29,0,39,2 
-     DATA 139,0,140,0,61,0,234,0,175,1,285,0,155,0,161,0 
-     DATA 172,0,195,0,273,0,39,7,53,0,244,0,280,0,247,0 
-     DATA 242,0,260,0,243,0,62,0,216,0,16,0,287,0,39,6 
-     DATA 317,0,157,0,213,0,103,0,321,0,290,0,175,1,181,0 
-     DATA 262,0,162,0,163,0,39,2,75,0,76,0,65,0,13,0 
-     DATA 3,0,8,0,18,0,29,0,39,2,139,0,140,0,61,0 
-     DATA 234,0,175,1,36,0,322,0,156,0,171,0,18,0,170,0 
-     DATA 39,6,53,0,254,0,62,0,230,0,248,0,278,0,249,0 
-     DATA 242,0,219,0,227,0,244,0,43,0,287,0,39,6,205,0 
-     DATA 236,0,256,0,318,0,323,0,175,0,234,0,181,0,262,0 
-     DATA 162,0,163,0,39,2,75,0,76,0,65,0,13,0,3,0 
-     DATA 8,0,18,0,29,0,39,2,139,0,140,0,61,0,234,0 
-     DATA 175,0,185,0,23,0,235,0,195,0,18,0,170,0,39,6 
-     DATA 53,0,254,0,62,0,230,0,242,0,324,0,325,0,326,0 
-     DATA 298,0,260,0,327,0,227,0,244,0,43,0,38,0,39,6 
-     DATA 205,0,157,0,220,0,106,0,174,0,175,0,181,0,262,0 
-     DATA 162,0,163,0,39,2,75,0,76,0,65,0,13,0,3,0 
-     DATA 8,0,18,0,29,0,39,2,139,0,140,0,61,0,234,0 
-     DATA 174,0,103,0,183,0,157,0,328,0,194,0,39,6,38,0 
-     DATA 50,0,62,0,274,0,313,0,300,0,329,0,182,0,330,0 
-     DATA 331,0,332,0,333,0,272,0,164,0,216,0,85,0,39,7 
-     DATA 205,0,236,0,196,0,173,0,231,0,181,0,262,0,162,0 
-     DATA 163,0,39,2,75,0,76,0,65,0,13,0,3,0,8,0 
-     DATA 18,0,29,0,39,2,139,0,140,0,61,0,268,0,36,0 
-     DATA 172,0,195,0,18,0,39,7,208,0,244,0,246,0,258,0 
-     DATA 334,0,300,0,242,0,176,0,175,1,176,0,335,0,300,0 
-     DATA 275,0,253,0,64,0,265,0,85,0,38,0,39,6,336,0 
-     DATA 199,0,213,0,36,0,268,0,262,0,162,0,163,0,39,2 
-     DATA 75,0,76,0,65,0,13,0,3,0,8,0,18,0,29,0 
-     DATA 39,2,139,0,140,0,48,0,36,0,156,0,195,0,18,0 
-     DATA 39,7,53,0,50,0,76,0,247,0,259,0,337,0,338,0 
-     DATA 231,0,175,3,181,0,251,0,324,0,334,0,253,0,62,0 
-     DATA 216,0,43,0,38,0,39,6,317,0,157,0,256,0,36,0 
-     DATA 78,0,162,0,163,0,39,2,75,0,76,0,65,0,13,0 
-     DATA 3,0,8,0,18,0,29,0,39,2,139,0,140,0,103,0 
-     DATA 235,0,162,0,18,0,170,0,39,6,53,0,89,0,62,0 
-     DATA 230,0,339,0,127,0,340,0,174,0,175,5,263,0,341,0 
-     DATA 298,0,302,0,219,0,164,0,87,0,43,0,38,0,39,6 
-     DATA 205,0,342,0,343,0,161,0,162,0,163,0,39,2,75,0 
-     DATA 76,0,65,0,13,0,3,0,8,0,18,0,29,0,39,2 
-     DATA 139,0,140,0,23,0,344,0,345,0,170,0,39,6,53,0 
-     DATA 254,0,62,0,274,0,335,0,300,0,302,0,284,0,180,0 
-     DATA 175,5,181,0,177,0,277,0,346,0,260,0,272,0,227,0 
-     DATA 87,0,43,0,38,0,39,6,336,0,347,0,161,0,162,0 
-     DATA 163,0,39,2,75,0,76,0,65,0,13,0,3,0,8,0 
-     DATA 18,0,29,0,39,2,139,0,140,0,23,0,69,0,194,0 
-     DATA 39,6,38,0,50,0,62,0,267,0,313,0,348,0,277,0 
-     DATA 7,0,179,0,180,0,175,5,181,0,105,0,36,0,349,0 
-     DATA 278,0,232,0,327,0,164,0,92,0,160,0,39,7,92,0 
-     DATA 161,0,162,0,163,0,39,2,75,0,76,0,65,0,13,0 
-     DATA 3,0,8,0,18,0,29,0,39,2,139,0,140,0,23,0 
-     DATA 116,0,208,0,350,0,351,0,352,0,39,2,208,0,254,0 
-     DATA 246,0,258,0,281,0,300,0,353,0,354,0,178,0,179,0 
-     DATA 180,0,175,5,181,0,105,0,182,0,132,0,355,0,278,0 
-     DATA 302,0,356,0,64,0,245,0,85,0,38,0,39,1,37,0 
-     DATA 357,0,358,0,359,0,92,0,161,0,162,0,163,0,39,2 
-     DATA 75,0,76,0,65,0,13,0,3,0,8,0,18,0,29,0 
-     DATA 39,2,139,0,140,0,23,0,116,1,360,0,55,0,71,0 
-     DATA 39,1,53,0,254,0,76,0,247,0,248,0,249,0,248,0 
-     DATA 185,0,177,0,178,0,179,0,180,0,175,5,181,0,105,0 
-     DATA 182,0,183,0,361,0,259,0,123,0,242,0,253,0,62,0 
-     DATA 216,0,43,0,38,0,39,0,362,0,55,0,363,0,90,0 
-     DATA 92,0,161,0,162,0,163,0,39,2,75,0,76,0,65,0 
-     DATA 13,0,3,0,8,0,18,0,29,0,39,2,139,0,140,0 
-     DATA 23,0,116,0,43,0,364,0,365,0,366,0,39,0,53,0 
-     DATA 89,0,62,0,219,0,248,0,123,0,331,0,222,0,176,0 
-     DATA 177,0,178,0,179,0,180,0,175,5,181,0,105,0,182,0 
-     DATA 183,0,184,0,263,0,259,0,337,0,242,0,289,0,164,0 
-     DATA 216,0,80,0,38,0,159,0,99,0,367,0,368,0,92,0 
-     DATA 161,0,162,0,163,0,38,0,39,1,75,0,76,0,65,0 
-     DATA 13,0,3,0,8,0,18,0,29,0,369,0,370,0,371,0 
-     DATA 139,0,140,0,23,0,116,0,38,0,80,0,143,0,43,0 
-     DATA 38,0,116,0,164,0,230,0,237,0,278,0,251,0,263,0 
-     DATA 175,0,176,0,177,0,178,0,179,0,180,0,175,3,234,0 
-     DATA 175,0,181,0,105,0,182,0,183,0,184,0,175,0,263,0 
-     DATA 304,0,372,0,373,0,219,0,227,0,92,0,43,0,160,0 
-     DATA 57,0,69,0,38,0,92,0,161,0,162,0,317,0,88,0 
-     DATA 374,0,375,0,75,0,76,0,65,0,13,0,3,0,8,0 
-     DATA 18,0,98,0,376,0,377,0,135,0,114,0,69,0,103,0 
-     DATA 378,0,92,4,37,0,247,0,151,0,129,0,252,0,263,0 
-     DATA 176,1,231,0,154,0,221,0,379,0,380,0,176,5,231,0 
-     DATA 173,0,182,0,381,0,361,0,176,1,330,0,307,0,382,0 
-     DATA 383,0,230,0,37,0,115,0,92,3,384,0,106,0,163,0 
-     DATA 385,0,386,0,387,0,388,0,75,0,76,0,65,0,13,0 
-     DATA 3,0,8,0,18,0,29,0,389,0,390,0,391,0,43,0 
-     DATA 73,0,23,0,106,0,148,5,222,0,26,1,392,0,10,4 
-     DATA 393,0,7,0,393,0,10,8,7,0,393,0,10,2,392,0 
-     DATA 26,1,161,0,148,5,36,0,105,0,394,0,53,0,362,0 
-     DATA 395,0,396,0,75,0,76,0,65,0,13,0,3,0,8,0 
-     DATA 18,0,29,0,38,0,160,0,43,0,86,0,24,0,397,0 
-     DATA 336,0,301,41,310,0,35,0,11,0,79,0,16,0,160,0 
-     DATA 38,0,75,0,76,0,65,0,13,0,3,0,8,0,18,0 
-     DATA 29,0,39,0,43,0,73,0,22,0,95,0,116,0,398,0 
-     DATA 399,0,336,38,29,0,400,0,401,0,20,0,90,0,78,0 
-     DATA 77,0,16,0,39,0,75,0,76,0,65,0,13,0,3,0 
-     DATA 8,0,402,0,98,0,38,0,15,0,26,0,35,0,53,0 
-     DATA 403,0,404,0,405,0,406,0,39,37,87,0,407,0,408,0 
-     DATA 409,0,43,0,77,0,26,0,47,0,208,0,20,0,62,0 
-     DATA 65,0,13,0,3,0,33,0,410,0,194,0,47,0,61,0 
-     DATA 74,0,53,0,39,0,405,0,55,0,411,0,93,0,39,37 
-     DATA 412,0,413,0,55,0,68,0,39,0,43,0,31,0,61,0 
-     DATA 217,0,208,0,89,0,51,0,13,0,3,0,78,0,83,0 
-     DATA 77,0,48,0,202,0,38,0,39,1,116,0,414,0,95,0 
-     DATA 38,0,39,37,208,0,86,0,138,0,83,0,39,1,208,0 
-     DATA 27,0,106,0,415,0,84,0,26,0,13,0,3,0,318,0 
-     DATA 21,0,26,0,107,0,20,0,114,50,406,0,43,0,35,0 
-     DATA 65,0,416,0,24,0,13,0,3,0,417,0,22,0,32,0 
-     DATA 418,0,164,0,246,0,419,0,246,0,419,1,246,0,419,0 
-     DATA 246,0,419,3,246,0,419,3,246,0,419,7,246,0,419,3 
-     DATA 246,0,419,3,246,0,419,3,246,0,419,8,280,0,92,0 
-     DATA 84,0,289,0,392,0,105,0,13,0,3,0,420,0,105,0 
-     DATA 6,0,26,0,51,53,26,0,318,0,105,0,12,0,13,0 
-   
-   
-         FOR-  j  = 0 TO-  palCount  - 1
 
-   
-   
-   
-                 rleCount = rleCount - 1 
-   
-