/** X3DOM Runtime, http://www.x3dom.org/ 1.7.0 - f33e92d248a2f25d52fa63ede8ffee570c8a6304 - Wed Jun 17 09:49:25 2015 +0200 */// Note: For maximum-speed code, see "Optimizing Code" on the Emscripten wiki, https://github.com/kripken/emscripten/wiki/Optimizing-Code
// Note: Some Emscripten settings may limit the speed of the generated code.
// The Module object: Our interface to the outside world. We import
// and export values on it, and do the work to get that through
// closure compiler if necessary. There are various ways Module can be used:
// 1. Not defined. We create it here
// 2. A function parameter, function(Module) { ..generated code.. }
// 3. pre-run appended it, var Module = {}; ..generated code..
// 4. External script tag defines var Module.
// We need to do an eval in order to handle the closure compiler
// case, where this code here is minified but Module was defined
// elsewhere (e.g. case 4 above). We also need to check if Module
// already exists (e.g. case 3 above).
// Note that if you want to run closure, and also to use Module
// after the generated code, you will need to define   var Module = {};
// before the code. Then that object will be used in the code, and you
// can continue to use Module afterwards as well.
var Module;
if (!Module) Module = eval('(function() { try { return Module || {} } catch(e) { return {} } })()');
// Sometimes an existing Module object exists with properties
// meant to overwrite the default module functionality. Here
// we collect those properties and reapply _after_ we configure
// the current environment's defaults to avoid having to be so
// defensive during initialization.
var moduleOverrides = {};
for (var key in Module) {
  if (Module.hasOwnProperty(key)) {
    moduleOverrides[key] = Module[key];
  }
}
// The environment setup code below is customized to use Module.
// *** Environment setup code ***
var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function';
var ENVIRONMENT_IS_WEB = typeof window === 'object';
var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function';
var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
if (ENVIRONMENT_IS_NODE) {
  // Expose functionality in the same simple way that the shells work
  // Note that we pollute the global namespace here, otherwise we break in node
  Module['print'] = function(x) {
    process['stdout'].write(x + '\n');
  };
  Module['printErr'] = function(x) {
    process['stderr'].write(x + '\n');
  };
  var nodeFS = require('fs');
  var nodePath = require('path');
  Module['read'] = function(filename, binary) {
    filename = nodePath['normalize'](filename);
    var ret = nodeFS['readFileSync'](filename);
    // The path is absolute if the normalized version is the same as the resolved.
    if (!ret && filename != nodePath['resolve'](filename)) {
      filename = path.join(__dirname, '..', 'src', filename);
      ret = nodeFS['readFileSync'](filename);
    }
    if (ret && !binary) ret = ret.toString();
    return ret;
  };
  Module['readBinary'] = function(filename) { return Module['read'](filename, true) };
  Module['load'] = function(f) {
    globalEval(read(f));
  };
  Module['arguments'] = process['argv'].slice(2);
  module.exports = Module;
}
else if (ENVIRONMENT_IS_SHELL) {
  Module['print'] = print;
  if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm
  if (typeof read != 'undefined') {
    Module['read'] = read;
  } else {
    Module['read'] = function() { throw 'no read() available (jsc?)' };
  }
  Module['readBinary'] = function(f) {
    return read(f, 'binary');
  };
  if (typeof scriptArgs != 'undefined') {
    Module['arguments'] = scriptArgs;
  } else if (typeof arguments != 'undefined') {
    Module['arguments'] = arguments;
  }
  this['Module'] = Module;
}
else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
  Module['read'] = function(url) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, false);
    xhr.send(null);
    return xhr.responseText;
  };
  if (typeof arguments != 'undefined') {
    Module['arguments'] = arguments;
  }
  if (ENVIRONMENT_IS_WEB) {
    Module['print'] = function(x) {
      console.log(x);
    };
    Module['printErr'] = function(x) {
      console.log(x);
    };
    this['Module'] = Module;
  } else if (ENVIRONMENT_IS_WORKER) {
    // We can do very little here...
    var TRY_USE_DUMP = false;
    Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) {
      dump(x);
    }) : (function(x) {
      // self.postMessage(x); // enable this if you want stdout to be sent as messages
    }));
    Module['load'] = importScripts;
  }
}
else {
  // Unreachable because SHELL is dependant on the others
  throw 'Unknown runtime environment. Where are we?';
}
function globalEval(x) {
  eval.call(null, x);
}
if (!Module['load'] == 'undefined' && Module['read']) {
  Module['load'] = function(f) {
    globalEval(Module['read'](f));
  };
}
if (!Module['print']) {
  Module['print'] = function(){};
}
if (!Module['printErr']) {
  Module['printErr'] = Module['print'];
}
if (!Module['arguments']) {
  Module['arguments'] = [];
}
// *** Environment setup code ***
// Closure helpers
Module.print = Module['print'];
Module.printErr = Module['printErr'];
// Callbacks
Module['preRun'] = [];
Module['postRun'] = [];
// Merge back in the overrides
for (var key in moduleOverrides) {
  if (moduleOverrides.hasOwnProperty(key)) {
    Module[key] = moduleOverrides[key];
  }
}
// === Auto-generated preamble library stuff ===
//========================================
// Runtime code shared with compiler
//========================================
var Runtime = {
  stackSave: function () {
    return STACKTOP;
  },
  stackRestore: function (stackTop) {
    STACKTOP = stackTop;
  },
  forceAlign: function (target, quantum) {
    quantum = quantum || 4;
    if (quantum == 1) return target;
    if (isNumber(target) && isNumber(quantum)) {
      return Math.ceil(target/quantum)*quantum;
    } else if (isNumber(quantum) && isPowerOfTwo(quantum)) {
      var logg = log2(quantum);
      return '((((' +target + ')+' + (quantum-1) + ')>>' + logg + ')<<' + logg + ')';
    }
    return 'Math.ceil((' + target + ')/' + quantum + ')*' + quantum;
  },
  isNumberType: function (type) {
    return type in Runtime.INT_TYPES || type in Runtime.FLOAT_TYPES;
  },
  isPointerType: function isPointerType(type) {
  return type[type.length-1] == '*';
},
  isStructType: function isStructType(type) {
  if (isPointerType(type)) return false;
  if (isArrayType(type)) return true;
  if (/<?{ ?[^}]* ?}>?/.test(type)) return true; // { i32, i8 } etc. - anonymous struct types
  // See comment in isStructPointerType()
  return type[0] == '%';
},
  INT_TYPES: {"i1":0,"i8":0,"i16":0,"i32":0,"i64":0},
  FLOAT_TYPES: {"float":0,"double":0},
  or64: function (x, y) {
    var l = (x | 0) | (y | 0);
    var h = (Math.round(x / 4294967296) | Math.round(y / 4294967296)) * 4294967296;
    return l + h;
  },
  and64: function (x, y) {
    var l = (x | 0) & (y | 0);
    var h = (Math.round(x / 4294967296) & Math.round(y / 4294967296)) * 4294967296;
    return l + h;
  },
  xor64: function (x, y) {
    var l = (x | 0) ^ (y | 0);
    var h = (Math.round(x / 4294967296) ^ Math.round(y / 4294967296)) * 4294967296;
    return l + h;
  },
  getNativeTypeSize: function (type, quantumSize) {
    if (Runtime.QUANTUM_SIZE == 1) return 1;
    var size = {
      '%i1': 1,
      '%i8': 1,
      '%i16': 2,
      '%i32': 4,
      '%i64': 8,
      "%float": 4,
      "%double": 8
    }['%'+type]; // add '%' since float and double confuse Closure compiler as keys, and also spidermonkey as a compiler will remove 's from '_i8' etc
    if (!size) {
      if (type.charAt(type.length-1) == '*') {
        size = Runtime.QUANTUM_SIZE; // A pointer
      } else if (type[0] == 'i') {
        var bits = parseInt(type.substr(1));
        assert(bits % 8 == 0);
        size = bits/8;
      }
    }
    return size;
  },
  getNativeFieldSize: function (type) {
    return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE);
  },
  dedup: function dedup(items, ident) {
  var seen = {};
  if (ident) {
    return items.filter(function(item) {
      if (seen[item[ident]]) return false;
      seen[item[ident]] = true;
      return true;
    });
  } else {
    return items.filter(function(item) {
      if (seen[item]) return false;
      seen[item] = true;
      return true;
    });
  }
},
  set: function set() {
  var args = typeof arguments[0] === 'object' ? arguments[0] : arguments;
  var ret = {};
  for (var i = 0; i < args.length; i++) {
    ret[args[i]] = 0;
  }
  return ret;
},
  STACK_ALIGN: 8,
  getAlignSize: function (type, size, vararg) {
    // we align i64s and doubles on 64-bit boundaries, unlike x86
    if (type == 'i64' || type == 'double' || vararg) return 8;
    if (!type) return Math.min(size, 8); // align structures internally to 64 bits
    return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE);
  },
  calculateStructAlignment: function calculateStructAlignment(type) {
    type.flatSize = 0;
    type.alignSize = 0;
    var diffs = [];
    var prev = -1;
    var index = 0;
    type.flatIndexes = type.fields.map(function(field) {
      index++;
      var size, alignSize;
      if (Runtime.isNumberType(field) || Runtime.isPointerType(field)) {
        size = Runtime.getNativeTypeSize(field); // pack char; char; in structs, also char[X]s.
        alignSize = Runtime.getAlignSize(field, size);
      } else if (Runtime.isStructType(field)) {
        if (field[1] === '0') {
          // this is [0 x something]. When inside another structure like here, it must be at the end,
          // and it adds no size
          // XXX this happens in java-nbody for example... assert(index === type.fields.length, 'zero-length in the middle!');
          size = 0;
          alignSize = type.alignSize || QUANTUM_SIZE;
        } else {
          size = Types.types[field].flatSize;
          alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize);
        }
      } else if (field[0] == 'b') {
        // bN, large number field, like a [N x i8]
        size = field.substr(1)|0;
        alignSize = 1;
      } else {
        throw 'Unclear type in struct: ' + field + ', in ' + type.name_ + ' :: ' + dump(Types.types[type.name_]);
      }
      if (type.packed) alignSize = 1;
      type.alignSize = Math.max(type.alignSize, alignSize);
      var curr = Runtime.alignMemory(type.flatSize, alignSize); // if necessary, place this on aligned memory
      type.flatSize = curr + size;
      if (prev >= 0) {
        diffs.push(curr-prev);
      }
      prev = curr;
      return curr;
    });
    type.flatSize = Runtime.alignMemory(type.flatSize, type.alignSize);
    if (diffs.length == 0) {
      type.flatFactor = type.flatSize;
    } else if (Runtime.dedup(diffs).length == 1) {
      type.flatFactor = diffs[0];
    }
    type.needsFlattening = (type.flatFactor != 1);
    return type.flatIndexes;
  },
  generateStructInfo: function (struct, typeName, offset) {
    var type, alignment;
    if (typeName) {
      offset = offset || 0;
      type = (typeof Types === 'undefined' ? Runtime.typeInfo : Types.types)[typeName];
      if (!type) return null;
      if (type.fields.length != struct.length) {
        printErr('Number of named fields must match the type for ' + typeName + ': possibly duplicate struct names. Cannot return structInfo');
        return null;
      }
      alignment = type.flatIndexes;
    } else {
      var type = { fields: struct.map(function(item) { return item[0] }) };
      alignment = Runtime.calculateStructAlignment(type);
    }
    var ret = {
      __size__: type.flatSize
    };
    if (typeName) {
      struct.forEach(function(item, i) {
        if (typeof item === 'string') {
          ret[item] = alignment[i] + offset;
        } else {
          // embedded struct
          var key;
          for (var k in item) key = k;
          ret[key] = Runtime.generateStructInfo(item[key], type.fields[i], alignment[i]);
        }
      });
    } else {
      struct.forEach(function(item, i) {
        ret[item[1]] = alignment[i];
      });
    }
    return ret;
  },
  dynCall: function (sig, ptr, args) {
    if (args && args.length) {
      if (!args.splice) args = Array.prototype.slice.call(args);
      args.splice(0, 0, ptr);
      return Module['dynCall_' + sig].apply(null, args);
    } else {
      return Module['dynCall_' + sig].call(null, ptr);
    }
  },
  functionPointers: [null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],
  addFunction: function (func) {
    for (var i = 0; i < Runtime.functionPointers.length; i++) {
      if (!Runtime.functionPointers[i]) {
        Runtime.functionPointers[i] = func;
        return 2 + 2*i;
      }
    }
    throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.';
  },
  removeFunction: function (index) {
    Runtime.functionPointers[(index-2)/2] = null;
  },
  warnOnce: function (text) {
    if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {};
    if (!Runtime.warnOnce.shown[text]) {
      Runtime.warnOnce.shown[text] = 1;
      Module.printErr(text);
    }
  },
  funcWrappers: {},
  getFuncWrapper: function (func, sig) {
    assert(sig);
    if (!Runtime.funcWrappers[func]) {
      Runtime.funcWrappers[func] = function() {
        return Runtime.dynCall(sig, func, arguments);
      };
    }
    return Runtime.funcWrappers[func];
  },
  UTF8Processor: function () {
    var buffer = [];
    var needed = 0;
    this.processCChar = function (code) {
      code = code & 0xFF;
      if (buffer.length == 0) {
        if ((code & 0x80) == 0x00) {        // 0xxxxxxx
          return String.fromCharCode(code);
        }
        buffer.push(code);
        if ((code & 0xE0) == 0xC0) {        // 110xxxxx
          needed = 1;
        } else if ((code & 0xF0) == 0xE0) { // 1110xxxx
          needed = 2;
        } else {                            // 11110xxx
          needed = 3;
        }
        return '';
      }
      if (needed) {
        buffer.push(code);
        needed--;
        if (needed > 0) return '';
      }
      var c1 = buffer[0];
      var c2 = buffer[1];
      var c3 = buffer[2];
      var c4 = buffer[3];
      var ret;
      if (buffer.length == 2) {
        ret = String.fromCharCode(((c1 & 0x1F) << 6)  | (c2 & 0x3F));
      } else if (buffer.length == 3) {
        ret = String.fromCharCode(((c1 & 0x0F) << 12) | ((c2 & 0x3F) << 6)  | (c3 & 0x3F));
      } else {
        // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
        var codePoint = ((c1 & 0x07) << 18) | ((c2 & 0x3F) << 12) |
                        ((c3 & 0x3F) << 6)  | (c4 & 0x3F);
        ret = String.fromCharCode(
          Math.floor((codePoint - 0x10000) / 0x400) + 0xD800,
          (codePoint - 0x10000) % 0x400 + 0xDC00);
      }
      buffer.length = 0;
      return ret;
    }
    this.processJSString = function(string) {
      string = unescape(encodeURIComponent(string));
      var ret = [];
      for (var i = 0; i < string.length; i++) {
        ret.push(string.charCodeAt(i));
      }
      return ret;
    }
  },
  stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = ((((STACKTOP)+7)>>3)<<3); return ret; },
  staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + size)|0;STATICTOP = ((((STATICTOP)+7)>>3)<<3); return ret; },
  dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + size)|0;DYNAMICTOP = ((((DYNAMICTOP)+7)>>3)<<3); if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();; return ret; },
  alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 8))*(quantum ? quantum : 8); return ret; },
  makeBigInt: function (low,high,unsigned) { var ret = (unsigned ? ((+(((low)>>>(0))))+((+(((high)>>>(0))))*(+(4294967296)))) : ((+(((low)>>>(0))))+((+(((high)|(0))))*(+(4294967296))))); return ret; },
  GLOBAL_BASE: 8,
  QUANTUM_SIZE: 4,
  __dummy__: 0
}
function jsCall() {
  var args = Array.prototype.slice.call(arguments);
  return Runtime.functionPointers[args[0]].apply(null, args.slice(1));
}
//========================================
// Runtime essentials
//========================================
var __THREW__ = 0; // Used in checking for thrown exceptions.
var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort()
var EXITSTATUS = 0;
var undef = 0;
// tempInt is used for 32-bit signed values or smaller. tempBigInt is used
// for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt
var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD;
var tempI64, tempI64b;
var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9;
function assert(condition, text) {
  if (!condition) {
    abort('Assertion failed: ' + text);
  }
}
var globalScope = this;
// C calling interface. A convenient way to call C functions (in C files, or
// defined with extern "C").
//
// Note: LLVM optimizations can inline and remove functions, after which you will not be
//       able to call them. Closure can also do so. To avoid that, add your function to
//       the exports using something like
//
//         -s EXPORTED_FUNCTIONS='["_main", "_myfunc"]'
//
// @param ident      The name of the C function (note that C++ functions will be name-mangled - use extern "C")
// @param returnType The return type of the function, one of the JS types 'number', 'string' or 'array' (use 'number' for any C pointer, and
//                   'array' for JavaScript arrays and typed arrays; note that arrays are 8-bit).
// @param argTypes   An array of the types of arguments for the function (if there are no arguments, this can be ommitted). Types are as in returnType,
//                   except that 'array' is not possible (there is no way for us to know the length of the array)
// @param args       An array of the arguments to the function, as native JS values (as in returnType)
//                   Note that string arguments will be stored on the stack (the JS string will become a C string on the stack).
// @return           The return value, as a native JS value (as in returnType)
function ccall(ident, returnType, argTypes, args) {
  return ccallFunc(getCFunc(ident), returnType, argTypes, args);
}
Module["ccall"] = ccall;
// Returns the C function with a specified identifier (for C++, you need to do manual name mangling)
function getCFunc(ident) {
  try {
    var func = Module['_' + ident]; // closure exported function
    if (!func) func = eval('_' + ident); // explicit lookup
  } catch(e) {
  }
  assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)');
  return func;
}
// Internal function that does a C call using a function, not an identifier
function ccallFunc(func, returnType, argTypes, args) {
  var stack = 0;
  function toC(value, type) {
    if (type == 'string') {
      if (value === null || value === undefined || value === 0) return 0; // null string
      if (!stack) stack = Runtime.stackSave();
      var ret = Runtime.stackAlloc(value.length+1);
      writeStringToMemory(value, ret);
      return ret;
    } else if (type == 'array') {
      if (!stack) stack = Runtime.stackSave();
      var ret = Runtime.stackAlloc(value.length);
      writeArrayToMemory(value, ret);
      return ret;
    }
    return value;
  }
  function fromC(value, type) {
    if (type == 'string') {
      return Pointer_stringify(value);
    }
    assert(type != 'array');
    return value;
  }
  var i = 0;
  var cArgs = args ? args.map(function(arg) {
    return toC(arg, argTypes[i++]);
  }) : [];
  var ret = fromC(func.apply(null, cArgs), returnType);
  if (stack) Runtime.stackRestore(stack);
  return ret;
}
// Returns a native JS wrapper for a C function. This is similar to ccall, but
// returns a function you can call repeatedly in a normal way. For example:
//
//   var my_function = cwrap('my_c_function', 'number', ['number', 'number']);
//   alert(my_function(5, 22));
//   alert(my_function(99, 12));
//
function cwrap(ident, returnType, argTypes) {
  var func = getCFunc(ident);
  return function() {
    return ccallFunc(func, returnType, argTypes, Array.prototype.slice.call(arguments));
  }
}
Module["cwrap"] = cwrap;
// Sets a value in memory in a dynamic way at run-time. Uses the
// type data. This is the same as makeSetValue, except that
// makeSetValue is done at compile-time and generates the needed
// code then, whereas this function picks the right code at
// run-time.
// Note that setValue and getValue only do *aligned* writes and reads!
// Note that ccall uses JS types as for defining types, while setValue and
// getValue need LLVM types ('i8', 'i32') - this is a lower-level operation
function setValue(ptr, value, type, noSafe) {
  type = type || 'i8';
  if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit
    switch(type) {
      case 'i1': HEAP8[(ptr)]=value; break;
      case 'i8': HEAP8[(ptr)]=value; break;
      case 'i16': HEAP16[((ptr)>>1)]=value; break;
      case 'i32': HEAP32[((ptr)>>2)]=value; break;
      case 'i64': (tempI64 = [value>>>0,(tempDouble=value,(+(Math.abs(tempDouble))) >= (+(1)) ? (tempDouble > (+(0)) ? ((Math.min((+(Math.floor((tempDouble)/(+(4294967296))))), (+(4294967295))))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/(+(4294967296)))))))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break;
      case 'float': HEAPF32[((ptr)>>2)]=value; break;
      case 'double': HEAPF64[((ptr)>>3)]=value; break;
      default: abort('invalid type for setValue: ' + type);
    }
}
Module['setValue'] = setValue;
// Parallel to setValue.
function getValue(ptr, type, noSafe) {
  type = type || 'i8';
  if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit
    switch(type) {
      case 'i1': return HEAP8[(ptr)];
      case 'i8': return HEAP8[(ptr)];
      case 'i16': return HEAP16[((ptr)>>1)];
      case 'i32': return HEAP32[((ptr)>>2)];
      case 'i64': return HEAP32[((ptr)>>2)];
      case 'float': return HEAPF32[((ptr)>>2)];
      case 'double': return HEAPF64[((ptr)>>3)];
      default: abort('invalid type for setValue: ' + type);
    }
  return null;
}
Module['getValue'] = getValue;
var ALLOC_NORMAL = 0; // Tries to use _malloc()
var ALLOC_STACK = 1; // Lives for the duration of the current function call
var ALLOC_STATIC = 2; // Cannot be freed
var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk
var ALLOC_NONE = 4; // Do not allocate
Module['ALLOC_NORMAL'] = ALLOC_NORMAL;
Module['ALLOC_STACK'] = ALLOC_STACK;
Module['ALLOC_STATIC'] = ALLOC_STATIC;
Module['ALLOC_DYNAMIC'] = ALLOC_DYNAMIC;
Module['ALLOC_NONE'] = ALLOC_NONE;
// allocate(): This is for internal use. You can use it yourself as well, but the interface
//             is a little tricky (see docs right below). The reason is that it is optimized
//             for multiple syntaxes to save space in generated code. So you should
//             normally not use allocate(), and instead allocate memory using _malloc(),
//             initialize it with setValue(), and so forth.
// @slab: An array of data, or a number. If a number, then the size of the block to allocate,
//        in *bytes* (note that this is sometimes confusing: the next parameter does not
//        affect this!)
// @types: Either an array of types, one for each byte (or 0 if no type at that position),
//         or a single type which is used for the entire block. This only matters if there
//         is initial data - if @slab is a number, then this does not matter at all and is
//         ignored.
// @allocator: How to allocate memory, see ALLOC_*
function allocate(slab, types, allocator, ptr) {
  var zeroinit, size;
  if (typeof slab === 'number') {
    zeroinit = true;
    size = slab;
  } else {
    zeroinit = false;
    size = slab.length;
  }
  var singleType = typeof types === 'string' ? types : null;
  var ret;
  if (allocator == ALLOC_NONE) {
    ret = ptr;
  } else {
    ret = [_malloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length));
  }
  if (zeroinit) {
    var ptr = ret, stop;
    assert((ret & 3) == 0);
    stop = ret + (size & ~3);
    for (; ptr < stop; ptr += 4) {
      HEAP32[((ptr)>>2)]=0;
    }
    stop = ret + size;
    while (ptr < stop) {
      HEAP8[((ptr++)|0)]=0;
    }
    return ret;
  }
  if (singleType === 'i8') {
    if (slab.subarray || slab.slice) {
      HEAPU8.set(slab, ret);
    } else {
      HEAPU8.set(new Uint8Array(slab), ret);
    }
    return ret;
  }
  var i = 0, type, typeSize, previousType;
  while (i < size) {
    var curr = slab[i];
    if (typeof curr === 'function') {
      curr = Runtime.getFunctionIndex(curr);
    }
    type = singleType || types[i];
    if (type === 0) {
      i++;
      continue;
    }
    if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later
    setValue(ret+i, curr, type);
    // no need to look up size unless type changes, so cache it
    if (previousType !== type) {
      typeSize = Runtime.getNativeTypeSize(type);
      previousType = type;
    }
    i += typeSize;
  }
  return ret;
}
Module['allocate'] = allocate;
function Pointer_stringify(ptr, /* optional */ length) {
  // TODO: use TextDecoder
  // Find the length, and check for UTF while doing so
  var hasUtf = false;
  var t;
  var i = 0;
  while (1) {
    t = HEAPU8[(((ptr)+(i))|0)];
    if (t >= 128) hasUtf = true;
    else if (t == 0 && !length) break;
    i++;
    if (length && i == length) break;
  }
  if (!length) length = i;
  var ret = '';
  if (!hasUtf) {
    var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack
    var curr;
    while (length > 0) {
      curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));
      ret = ret ? ret + curr : curr;
      ptr += MAX_CHUNK;
      length -= MAX_CHUNK;
    }
    return ret;
  }
  var utf8 = new Runtime.UTF8Processor();
  for (i = 0; i < length; i++) {
    t = HEAPU8[(((ptr)+(i))|0)];
    ret += utf8.processCChar(t);
  }
  return ret;
}
Module['Pointer_stringify'] = Pointer_stringify;
// Memory management
var PAGE_SIZE = 4096;
function alignMemoryPage(x) {
  return ((x+4095)>>12)<<12;
}
var HEAP;
var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area
var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area
var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk
function enlargeMemory() {
  abort('Cannot enlarge memory arrays in asm.js. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value, or (2) set Module.TOTAL_MEMORY before the program runs.');
}
var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880;
var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 67108864;
var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152;
// Initialize the runtime's memory
// check for full engine support (use string 'subarray' to avoid closure compiler confusion)
assert(!!Int32Array && !!Float64Array && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']),
       'Cannot fallback to non-typed array case: Code is too specialized');
var buffer = new ArrayBuffer(TOTAL_MEMORY);
HEAP8 = new Int8Array(buffer);
HEAP16 = new Int16Array(buffer);
HEAP32 = new Int32Array(buffer);
HEAPU8 = new Uint8Array(buffer);
HEAPU16 = new Uint16Array(buffer);
HEAPU32 = new Uint32Array(buffer);
HEAPF32 = new Float32Array(buffer);
HEAPF64 = new Float64Array(buffer);
// Endianness check (note: assumes compiler arch was little-endian)
HEAP32[0] = 255;
assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system');
Module['HEAP'] = HEAP;
Module['HEAP8'] = HEAP8;
Module['HEAP16'] = HEAP16;
Module['HEAP32'] = HEAP32;
Module['HEAPU8'] = HEAPU8;
Module['HEAPU16'] = HEAPU16;
Module['HEAPU32'] = HEAPU32;
Module['HEAPF32'] = HEAPF32;
Module['HEAPF64'] = HEAPF64;
function callRuntimeCallbacks(callbacks) {
  while(callbacks.length > 0) {
    var callback = callbacks.shift();
    if (typeof callback == 'function') {
      callback();
      continue;
    }
    var func = callback.func;
    if (typeof func === 'number') {
      if (callback.arg === undefined) {
        Runtime.dynCall('v', func);
      } else {
        Runtime.dynCall('vi', func, [callback.arg]);
      }
    } else {
      func(callback.arg === undefined ? null : callback.arg);
    }
  }
}
var __ATPRERUN__  = []; // functions called before the runtime is initialized
var __ATINIT__    = []; // functions called during startup
var __ATMAIN__    = []; // functions called when main() is to be run
var __ATEXIT__    = []; // functions called during shutdown
var __ATPOSTRUN__ = []; // functions called after the runtime has exited
var runtimeInitialized = false;
function preRun() {
  // compatibility - merge in anything from Module['preRun'] at this time
  if (Module['preRun']) {
    if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];
    while (Module['preRun'].length) {
      addOnPreRun(Module['preRun'].shift());
    }
  }
  callRuntimeCallbacks(__ATPRERUN__);
}
function ensureInitRuntime() {
  if (runtimeInitialized) return;
  runtimeInitialized = true;
  callRuntimeCallbacks(__ATINIT__);
}
function preMain() {
  callRuntimeCallbacks(__ATMAIN__);
}
function exitRuntime() {
  callRuntimeCallbacks(__ATEXIT__);
}
function postRun() {
  // compatibility - merge in anything from Module['postRun'] at this time
  if (Module['postRun']) {
    if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];
    while (Module['postRun'].length) {
      addOnPostRun(Module['postRun'].shift());
    }
  }
  callRuntimeCallbacks(__ATPOSTRUN__);
}
function addOnPreRun(cb) {
  __ATPRERUN__.unshift(cb);
}
Module['addOnPreRun'] = Module.addOnPreRun = addOnPreRun;
function addOnInit(cb) {
  __ATINIT__.unshift(cb);
}
Module['addOnInit'] = Module.addOnInit = addOnInit;
function addOnPreMain(cb) {
  __ATMAIN__.unshift(cb);
}
Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain;
function addOnExit(cb) {
  __ATEXIT__.unshift(cb);
}
Module['addOnExit'] = Module.addOnExit = addOnExit;
function addOnPostRun(cb) {
  __ATPOSTRUN__.unshift(cb);
}
Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun;
// Tools
// This processes a JS string into a C-line array of numbers, 0-terminated.
// For LLVM-originating strings, see parser.js:parseLLVMString function
function intArrayFromString(stringy, dontAddNull, length /* optional */) {
  var ret = (new Runtime.UTF8Processor()).processJSString(stringy);
  if (length) {
    ret.length = length;
  }
  if (!dontAddNull) {
    ret.push(0);
  }
  return ret;
}
Module['intArrayFromString'] = intArrayFromString;
function intArrayToString(array) {
  var ret = [];
  for (var i = 0; i < array.length; i++) {
    var chr = array[i];
    if (chr > 0xFF) {
      chr &= 0xFF;
    }
    ret.push(String.fromCharCode(chr));
  }
  return ret.join('');
}
Module['intArrayToString'] = intArrayToString;
// Write a Javascript array to somewhere in the heap
function writeStringToMemory(string, buffer, dontAddNull) {
  var array = intArrayFromString(string, dontAddNull);
  var i = 0;
  while (i < array.length) {
    var chr = array[i];
    HEAP8[(((buffer)+(i))|0)]=chr
    i = i + 1;
  }
}
Module['writeStringToMemory'] = writeStringToMemory;
function writeArrayToMemory(array, buffer) {
  for (var i = 0; i < array.length; i++) {
    HEAP8[(((buffer)+(i))|0)]=array[i];
  }
}
Module['writeArrayToMemory'] = writeArrayToMemory;
function unSign(value, bits, ignore, sig) {
  if (value >= 0) {
    return value;
  }
  return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts
                    : Math.pow(2, bits)         + value;
}
function reSign(value, bits, ignore, sig) {
  if (value <= 0) {
    return value;
  }
  var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32
                        : Math.pow(2, bits-1);
  if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that
                                                       // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors
                                                       // TODO: In i64 mode 1, resign the two parts separately and safely
    value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts
  }
  return value;
}
if (!Math['imul']) Math['imul'] = function(a, b) {
  var ah  = a >>> 16;
  var al = a & 0xffff;
  var bh  = b >>> 16;
  var bl = b & 0xffff;
  return (al*bl + ((ah*bl + al*bh) << 16))|0;
};
Math.imul = Math['imul'];
// A counter of dependencies for calling run(). If we need to
// do asynchronous work before running, increment this and
// decrement it. Incrementing must happen in a place like
// PRE_RUN_ADDITIONS (used by emcc to add file preloading).
// Note that you can add dependencies in preRun, even though
// it happens right before run - run will be postponed until
// the dependencies are met.
var runDependencies = 0;
var runDependencyTracking = {};
var calledInit = false, calledRun = false;
var runDependencyWatcher = null;
function addRunDependency(id) {
  runDependencies++;
  if (Module['monitorRunDependencies']) {
    Module['monitorRunDependencies'](runDependencies);
  }
  if (id) {
    assert(!runDependencyTracking[id]);
    runDependencyTracking[id] = 1;
  } else {
    Module.printErr('warning: run dependency added without ID');
  }
}
Module['addRunDependency'] = addRunDependency;
function removeRunDependency(id) {
  runDependencies--;
  if (Module['monitorRunDependencies']) {
    Module['monitorRunDependencies'](runDependencies);
  }
  if (id) {
    assert(runDependencyTracking[id]);
    delete runDependencyTracking[id];
  } else {
    Module.printErr('warning: run dependency removed without ID');
  }
  if (runDependencies == 0) {
    if (runDependencyWatcher !== null) {
      clearInterval(runDependencyWatcher);
      runDependencyWatcher = null;
    } 
    // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false)
    if (!calledRun && shouldRunNow) run();
  }
}
Module['removeRunDependency'] = removeRunDependency;
Module["preloadedImages"] = {}; // maps url to image data
Module["preloadedAudios"] = {}; // maps url to audio data
function loadMemoryInitializer(filename) {
  function applyData(data) {
    HEAPU8.set(data, STATIC_BASE);
  }
  // always do this asynchronously, to keep shell and web as similar as possible
  addOnPreRun(function() {
    if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) {
      applyData(Module['readBinary'](filename));
    } else {
      Browser.asyncLoad(filename, function(data) {
        applyData(data);
      }, function(data) {
        throw 'could not load memory initializer ' + filename;
      });
    }
  });
}
// === Body ===
STATIC_BASE = 8;
STATICTOP = STATIC_BASE + 44152;
/* global initializers */ __ATINIT__.push({ func: function() { runPostSets() } },{ func: function() { __GLOBAL__I_a() } });
var ___dso_handle;
var __ZTVN10__cxxabiv120__si_class_type_infoE;
var __ZTVN10__cxxabiv117__class_type_infoE;
__ZTVN10__cxxabiv120__si_class_type_infoE=allocate([0,0,0,0,104,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], "i8", ALLOC_STATIC);
__ZTVN10__cxxabiv117__class_type_infoE=allocate([0,0,0,0,120,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], "i8", ALLOC_STATIC);
/* memory initializer */ allocate([92,0,0,0,158,6,0,0,42,0,0,0,84,1,0,0,28,4,0,0,84,0,0,0,56,1,0,0,134,1,0,0,108,0,0,0,120,1,0,0,68,0,0,0,206,1,0,0,70,0,0,0,82,4,0,0,54,0,0,0,14,2,0,0,64,0,0,0,10,4,0,0,88,0,0,0,98,6,0,0,16,1,0,0,192,0,0,0,236,1,0,0,54,0,0,0,176,6,0,0,50,0,0,0,174,3,0,0,18,1,0,0,48,0,0,0,42,0,0,0,42,0,0,0,86,2,0,0,42,0,0,0,250,2,0,0,144,8,0,0,128,1,0,0,206,1,0,0,224,0,0,0,54,0,0,0,62,0,0,0,196,4,0,0,128,2,0,0,40,2,0,0,144,1,0,0,164,4,0,0,90,4,0,0,108,1,0,0,142,6,0,0,0,6,0,0,238,4,0,0,0,1,0,0,88,1,0,0,254,8,0,0,82,2,0,0,200,0,0,0,216,1,0,0,66,0,0,0,114,0,0,0,252,3,0,0,206,0,0,0,112,0,0,0,230,1,0,0,178,6,0,0,204,1,0,0,240,2,0,0,74,0,0,0,146,2,0,0,48,0,0,0,84,4,0,0,50,0,0,0,68,0,0,0,168,0,0,0,122,6,0,0,58,2,0,0,106,0,0,0,42,0,0,0,204,1,0,0,198,3,0,0,202,2,0,0,36,2,0,0,204,2,0,0,136,0,0,0,172,1,0,0,86,1,0,0,72,0,0,0,188,2,0,0,70,1,0,0,98,0,0,0,104,5,0,0,64,1,0,0,182,3,0,0,66,2,0,0,118,2,0,0,142,0,0,0,132,0,0,0,230,5,0,0,184,0,0,0,36,6,0,0,46,0,0,0,52,1,0,0,74,0,0,0,172,5,0,0,110,0,0,0,162,0,0,0,136,4,0,0,178,0,0,0,66,0,0,0,96,10,0,0,214,4,0,0,68,0,0,0,98,3,0,0,44,0,0,0,130,1,0,0,124,0,0,0,138,5,0,0,196,1,0,0,70,0,0,0,46,5,0,0,238,5,0,0,68,10,0,0,72,1,0,0,222,0,0,0,76,0,0,0,94,4,0,0,196,0,0,0,234,3,0,0,46,9,0,0,52,0,0,0,32,3,0,0,166,0,0,0,108,0,0,0,92,7,0,0,68,0,0,0,126,5,0,0,10,2,0,0,200,0,0,0,36,3,0,0,204,9,0,0,144,0,0,0,86,0,0,0,112,0,0,0,98,0,0,0,190,0,0,0,42,5,0,0,18,1,0,0,204,1,0,0,10,3,0,0,38,1,0,0,58,0,0,0,146,1,0,0,70,0,0,0,52,1,0,0,216,1,0,0,56,0,0,0,252,2,0,0,36,2,0,0,224,5,0,0,24,5,0,0,88,0,0,0,46,0,0,0,64,5,0,0,142,0,0,0,80,1,0,0,2,3,0,0,220,9,0,0,98,0,0,0,242,3,0,0,236,4,0,0,170,1,0,0,232,0,0,0,28,8,0,0,48,8,0,0,122,5,0,0,68,4,0,0,18,5,0,0,18,9,0,0,216,5,0,0,100,4,0,0,60,1,0,0,84,6,0,0,0,3,0,0,120,4,0,0,84,1,0,0,56,10,0,0,98,0,0,0,120,0,0,0,50,0,0,0,218,7,0,0,112,6,0,0,158,1,0,0,210,4,0,0,144,6,0,0,154,2,0,0,192,0,0,0,150,2,0,0,186,1,0,0,132,5,0,0,196,0,0,0,38,2,0,0,132,4,0,0,192,1,0,0,42,3,0,0,122,0,0,0,106,0,0,0,230,3,0,0,58,0,0,0,194,3,0,0,116,0,0,0,138,2,0,0,234,5,0,0,48,1,0,0,148,5,0,0,140,0,0,0,44,5,0,0,196,4,0,0,12,5,0,0,68,1,0,0,138,0,0,0,120,5,0,0,214,1,0,0,90,2,0,0,176,0,0,0,132,10,0,0,24,3,0,0,96,2,0,0,210,1,0,0,140,0,0,0,50,0,0,0,178,1,0,0,40,1,0,0,8,5,0,0,106,0,0,0,34,4,0,0,40,5,0,0,172,0,0,0,230,0,0,0,220,10,0,0,172,9,0,0,220,1,0,0,246,3,0,0,36,4,0,0,56,1,0,0,64,1,0,0,60,0,0,0,228,0,0,0,170,7,0,0,108,4,0,0,254,3,0,0,208,0,0,0,222,7,0,0,232,0,0,0,82,7,0,0,44,0,0,0,172,3,0,0,72,0,0,0,152,5,0,0,44,0,0,0,174,1,0,0,86,0,0,0,192,3,0,0,224,0,0,0,244,0,0,0,12,8,0,0,120,1,0,0,60,0,0,0,82,1,0,0,222,3,0,0,40,7,0,0,168,4,0,0,186,0,0,0,174,7,0,0,238,0,0,0,238,0,0,0,28,2,0,0,114,0,0,0,110,2,0,0,242,7,0,0,42,0,0,0,126,7,0,0,166,7,0,0,6,1,0,0,230,8,0,0,112,6,0,0,2,3,0,0,222,1,0,0,92,1,0,0,4,2,0,0,44,0,0,0,126,0,0,0,122,1,0,0,90,1,0,0,250,3,0,0,88,0,0,0,86,10,0,0,118,0,0,0,188,0,0,0,198,6,0,0,198,0,0,0,16,1,0,0,56,4,0,0,74,7,0,0,88,0,0,0,64,0,0,0,122,10,0,0,50,3,0,0,130,10,0,0,108,3,0,0,50,1,0,0,94,0,0,0,46,0,0,0,114,0,0,0,136,3,0,0,48,1,0,0,196,1,0,0,224,0,0,0,196,0,0,0,62,0,0,0,42,0,0,0,98,1,0,0,222,0,0,0,174,2,0,0,144,0,0,0,154,0,0,0,170,0,0,0,64,3,0,0,44,4,0,0,80,0,0,0,56,3,0,0,44,0,0,0,52,0,0,0,44,0,0,0,42,0,0,0,8,3,0,0,82,2,0,0,164,1,0,0,42,1,0,0,0,2,0,0,62,3,0,0,20,1,0,0,106,9,0,0,132,0,0,0,116,3,0,0,0,9,0,0,164,0,0,0,66,3,0,0,64,2,0,0,152,0,0,0,140,4,0,0,218,0,0,0,34,3,0,0,148,1,0,0,42,0,0,0,14,10,0,0,130,3,0,0,232,1,0,0,228,3,0,0,134,0,0,0,78,0,0,0,48,0,0,0,120,0,0,0,54,1,0,0,224,1,0,0,90,0,0,0,206,4,0,0,236,0,0,0,132,0,0,0,154,5,0,0,130,0,0,0,74,0,0,0,50,0,0,0,62,0,0,0,64,0,0,0,144,1,0,0,76,1,0,0,48,0,0,0,34,2,0,0,66,0,0,0,226,0,0,0,48,0,0,0,80,7,0,0,166,9,0,0,126,3,0,0,122,0,0,0,124,9,0,0,246,2,0,0,156,2,0,0,94,1,0,0,30,5,0,0,242,0,0,0,194,5,0,0,90,4,0,0,68,0,0,0,42,0,0,0,50,1,0,0,62,0,0,0,174,6,0,0,170,1,0,0,194,0,0,0,134,1,0,0,98,2,0,0,92,0,0,0,198,3,0,0,226,3,0,0,66,0,0,0,114,1,0,0,250,9,0,0,120,2,0,0,172,0,0,0,42,5,0,0,18,1,0,0,6,1,0,0,104,0,0,0,132,5,0,0,22,9,0,0,96,5,0,0,120,0,0,0,92,0,0,0,120,2,0,0,80,0,0,0,6,5,0,0,54,9,0,0,208,3,0,0,22,3,0,0,220,0,0,0,124,8,0,0,232,5,0,0,42,1,0,0,96,0,0,0,164,1,0,0,50,1,0,0,222,9,0,0,74,1,0,0,34,6,0,0,76,0,0,0,150,1,0,0,218,1,0,0,80,0,0,0,68,1,0,0,234,2,0,0,156,2,0,0,24,4,0,0,242,1,0,0,192,0,0,0,0,1,0,0,98,0,0,0,198,0,0,0,80,2,0,0,56,0,0,0,150,1,0,0,200,4,0,0,208,0,0,0,10,1,0,0,208,10,0,0,84,0,0,0,94,6,0,0,2,1,0,0,110,0,0,0,38,3,0,0,56,1,0,0,110,3,0,0,210,4,0,0,156,10,0,0,134,6,0,0,38,1,0,0,240,1,0,0,90,0,0,0,194,6,0,0,18,6,0,0,56,0,0,0,62,7,0,0,226,7,0,0,140,2,0,0,240,0,0,0,68,3,0,0,216,6,0,0,152,3,0,0,80,0,0,0,2,2,0,0,70,1,0,0,94,3,0,0,76,0,0,0,220,7,0,0,206,4,0,0,112,1,0,0,76,8,0,0,130,4,0,0,80,0,0,0,110,2,0,0,26,2,0,0,28,1,0,0,86,0,0,0,38,2,0,0,44,4,0,0,86,0,0,0,206,9,0,0,236,0,0,0,192,5,0,0,112,0,0,0,196,0,0,0,102,4,0,0,32,1,0,0,124,1,0,0,36,2,0,0,100,1,0,0,82,5,0,0,112,1,0,0,216,1,0,0,12,4,0,0,86,1,0,0,216,3,0,0,238,2,0,0,136,0,0,0,54,0,0,0,88,4,0,0,102,2,0,0,166,1,0,0,122,0,0,0,54,1,0,0,28,1,0,0,16,1,0,0,20,6,0,0,76,0,0,0,60,3,0,0,234,3,0,0,36,5,0,0,68,6,0,0,168,0,0,0,242,2,0,0,44,0,0,0,42,0,0,0,42,0,0,0,40,3,0,0,250,8,0,0,174,2,0,0,174,3,0,0,128,0,0,0,168,10,0,0,66,1,0,0,24,1,0,0,50,0,0,0,22,6,0,0,110,2,0,0,80,0,0,0,58,0,0,0,174,2,0,0,42,0,0,0,180,0,0,0,182,1,0,0,80,2,0,0,128,0,0,0,142,1,0,0,32,2,0,0,190,1,0,0,140,6,0,0,186,4,0,0,202,0,0,0,192,0,0,0,128,3,0,0,4,9,0,0,182,5,0,0,94,0,0,0,52,0,0,0,50,4,0,0,164,3,0,0,136,0,0,0,68,0,0,0,100,1,0,0,82,3,0,0,218,1,0,0,52,1,0,0,98,0,0,0,74,1,0,0,46,0,0,0,50,7,0,0,50,9,0,0,126,9,0,0,94,1,0,0,32,3,0,0,88,0,0,0,88,0,0,0,42,0,0,0,174,6,0,0,114,5,0,0,60,1,0,0,62,6,0,0,180,4,0,0,72,1,0,0,148,2,0,0,92,6,0,0,152,0,0,0,174,5,0,0,6,6,0,0,22,3,0,0,140,7,0,0,64,6,0,0,6,1,0,0,22,2,0,0,216,0,0,0,174,1,0,0,96,6,0,0,132,0,0,0,150,4,0,0,126,6,0,0,246,0,0,0,2,5,0,0,128,1,0,0,72,0,0,0,226,0,0,0,54,5,0,0,162,7,0,0,152,0,0,0,90,0,0,0,210,0,0,0,160,1,0,0,42,0,0,0,46,0,0,0,170,5,0,0,192,1,0,0,44,0,0,0,56,0,0,0,228,2,0,0,46,0,0,0,60,0,0,0,246,1,0,0,52,0,0,0,56,5,0,0,94,1,0,0,156,2,0,0,110,5,0,0,98,9,0,0,48,4,0,0,78,0,0,0,222,1,0,0,138,1,0,0,88,2,0,0,186,1,0,0,176,2,0,0,188,6,0,0,84,0,0,0,240,0,0,0,170,0,0,0,78,0,0,0,210,1,0,0,58,0,0,0,18,2,0,0,84,0,0,0,106,10,0,0,122,4,0,0,100,0,0,0,180,6,0,0,46,2,0,0,206,0,0,0,44,0,0,0,26,5,0,0,172,10,0,0,168,7,0,0,102,2,0,0,208,0,0,0,82,1,0,0,170,2,0,0,252,0,0,0,44,0,0,0,160,1,0,0,60,0,0,0,106,3,0,0,142,2,0,0,62,4,0,0,80,0,0,0,118,9,0,0,120,0,0,0,108,6,0,0,122,3,0,0,58,7,0,0,124,0,0,0,132,2,0,0,244,0,0,0,92,2,0,0,208,1,0,0,114,2,0,0,160,0,0,0,122,2,0,0,108,1,0,0,160,6,0,0,134,0,0,0,148,2,0,0,236,7,0,0,148,5,0,0,160,1,0,0,150,2,0,0,138,3,0,0,140,4,0,0,12,5,0,0,52,5,0,0,174,8,0,0,54,2,0,0,186,5,0,0,52,0,0,0,26,4,0,0,42,0,0,0,42,0,0,0,148,1,0,0,34,4,0,0,56,0,0,0,132,1,0,0,10,7,0,0,158,0,0,0,42,1,0,0,104,1,0,0,54,6,0,0,236,0,0,0,82,1,0,0,14,1,0,0,156,3,0,0,52,0,0,0,148,8,0,0,110,3,0,0,242,8,0,0,218,1,0,0,104,0,0,0,150,4,0,0,122,8,0,0,180,1,0,0,200,6,0,0,104,2,0,0,98,0,0,0,158,7,0,0,92,2,0,0,84,0,0,0,142,1,0,0,200,3,0,0,138,2,0,0,140,3,0,0,2,5,0,0,182,1,0,0,148,6,0,0,202,0,0,0,74,0,0,0,62,0,0,0,106,5,0,0,208,2,0,0,222,0,0,0,86,0,0,0,102,0,0,0,128,3,0,0,52,3,0,0,216,7,0,0,130,1,0,0,42,0,0,0,126,1,0,0,172,0,0,0,222,0,0,0,44,8,0,0,144,10,0,0,184,1,0,0,202,0,0,0,148,0,0,0,50,3,0,0,88,4,0,0,46,3,0,0,176,2,0,0,180,2,0,0,254,2,0,0,50,8,0,0,72,5,0,0,100,7,0,0,28,6,0,0,188,9,0,0,30,1,0,0,132,3,0,0,52,5,0,0,238,2,0,0,88,0,0,0,160,0,0,0,186,0,0,0,112,0,0,0,192,9,0,0,156,5,0,0,62,3,0,0,190,5,0,0,232,1,0,0,194,6,0,0,80,5,0,0,174,1,0,0,176,1,0,0,236,0,0,0,52,0,0,0,228,6,0,0,238,1,0,0,206,3,0,0,88,0,0,0,164,2,0,0,98,1,0,0,200,6,0,0,42,4,0,0,180,1,0,0,40,1,0,0,100,1,0,0,170,1,0,0,148,10,0,0,96,5,0,0,50,0,0,0,92,5,0,0,50,0,0,0,170,0,0,0,64,4,0,0,224,0,0,0,60,2,0,0,66,6,0,0,86,5,0,0,206,0,0,0,96,1,0,0,172,2,0,0,140,0,0,0,60,0,0,0,50,0,0,0,98,1,0,0,200,1,0,0,96,0,0,0,160,1,0,0,104,4,0,0,46,0,0,0,82,0,0,0,194,0,0,0,138,10,0,0,136,0,0,0,50,2,0,0,58,0,0,0,226,1,0,0,106,0,0,0,230,1,0,0,94,0,0,0,44,2,0,0,0,1,0,0,178,2,0,0,16,5,0,0,62,0,0,0,188,10,0,0,158,0,0,0,58,0,0,0,128,0,0,0,90,3,0,0,22,3,0,0,96,0,0,0,252,2,0,0,80,0,0,0,252,1,0,0,42,8,0,0,164,7,0,0,90,0,0,0,58,0,0,0,50,0,0,0,46,0,0,0,202,2,0,0,240,3,0,0,50,1,0,0,124,1,0,0,70,5,0,0,168,1,0,0,216,8,0,0,138,0,0,0,14,2,0,0,190,3,0,0,62,6,0,0,132,7,0,0,6,5,0,0,142,5,0,0,76,0,0,0,4,1,0,0,226,1,0,0,162,0,0,0,46,0,0,0,120,0,0,0,104,0,0,0,76,0,0,0,200,1,0,0,100,3,0,0,128,0,0,0,114,10,0,0,28,1,0,0,168,4,0,0,50,0,0,0,12,10,0,0,4,3,0,0,62,2,0,0,28,3,0,0,106,0,0,0,38,1,0,0,214,1,0,0,168,9,0,0,144,0,0,0,224,8,0,0,128,0,0,0,218,3,0,0,246,0,0,0,242,0,0,0,168,3,0,0,204,0,0,0,174,0,0,0,192,1,0,0,70,0,0,0,204,5,0,0,180,10,0,0,154,0,0,0,108,7,0,0,182,2,0,0,102,2,0,0,140,0,0,0,230,1,0,0,10,4,0,0,58,6,0,0,50,1,0,0,2,2,0,0,90,1,0,0,156,4,0,0,146,0,0,0,26,3,0,0,188,2,0,0,96,0,0,0,244,1,0,0,160,9,0,0,242,0,0,0,82,0,0,0,234,8,0,0,68,2,0,0,158,1,0,0,48,0,0,0,42,0,0,0,44,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,44,0,0,0,42,0,0,0,178,0,0,0,210,8,0,0,46,0,0,0,126,0,0,0,104,0,0,0,44,0,0,0,42,0,0,0,28,1,0,0,78,0,0,0,60,6,0,0,42,0,0,0,42,0,0,0,42,0,0,0,232,2,0,0,48,0,0,0,24,2,0,0,82,2,0,0,200,0,0,0,186,0,0,0,124,0,0,0,8,5,0,0,144,6,0,0,66,3,0,0,84,2,0,0,106,3,0,0,134,5,0,0,146,1,0,0,98,0,0,0,86,0,0,0,138,3,0,0,86,0,0,0,186,0,0,0,110,1,0,0,116,1,0,0,148,0,0,0,252,8,0,0,202,1,0,0,116,0,0,0,152,2,0,0,178,3,0,0,124,4,0,0,32,3,0,0,154,6,0,0,78,0,0,0,102,1,0,0,18,1,0,0,28,1,0,0,40,10,0,0,216,0,0,0,52,0,0,0,152,5,0,0,50,3,0,0,98,5,0,0,176,0,0,0,126,2,0,0,148,0,0,0,158,2,0,0,232,2,0,0,142,0,0,0,224,2,0,0,46,0,0,0,182,0,0,0,170,1,0,0,208,1,0,0,32,4,0,0,126,5,0,0,172,4,0,0,112,4,0,0,52,0,0,0,158,0,0,0,116,0,0,0,44,0,0,0,140,1,0,0,132,6,0,0,96,0,0,0,50,6,0,0,200,5,0,0,144,1,0,0,120,1,0,0,16,9,0,0,158,4,0,0,252,2,0,0,108,3,0,0,72,2,0,0,192,5,0,0,102,6,0,0,44,9,0,0,38,4,0,0,188,1,0,0,146,3,0,0,102,3,0,0,0,5,0,0,100,0,0,0,154,1,0,0,220,2,0,0,102,6,0,0,196,5,0,0,20,3,0,0,26,1,0,0,104,2,0,0,204,6,0,0,216,1,0,0,192,4,0,0,128,1,0,0,94,0,0,0,60,0,0,0,12,1,0,0,20,4,0,0,210,0,0,0,34,1,0,0,80,1,0,0,110,0,0,0,68,0,0,0,56,2,0,0,106,1,0,0,234,4,0,0,114,0,0,0,90,0,0,0,100,1,0,0,90,0,0,0,152,4,0,0,36,10,0,0,100,0,0,0,92,3,0,0,80,0,0,0,52,0,0,0,44,0,0,0,44,0,0,0,60,7,0,0,44,0,0,0,154,1,0,0,134,0,0,0,86,1,0,0,156,0,0,0,108,1,0,0,106,0,0,0,72,0,0,0,108,0,0,0,220,2,0,0,162,0,0,0,4,1,0,0,48,0,0,0,212,1,0,0,50,0,0,0,198,2,0,0,162,1,0,0,94,5,0,0,80,1,0,0,48,0,0,0,146,0,0,0,82,1,0,0,138,0,0,0,100,0,0,0,10,3,0,0,106,2,0,0,84,0,0,0,156,0,0,0,22,4,0,0,12,3,0,0,226,9,0,0,72,2,0,0,218,3,0,0,170,9,0,0,122,7,0,0,162,2,0,0,202,3,0,0,16,4,0,0,208,2,0,0,60,5,0,0,206,1,0,0,0,1,0,0,148,2,0,0,86,0,0,0,162,4,0,0,10,3,0,0,192,3,0,0,224,4,0,0,252,6,0,0,86,0,0,0,74,4,0,0,114,1,0,0,168,1,0,0,240,5,0,0,116,1,0,0,22,2,0,0,170,4,0,0,44,0,0,0,36,1,0,0,0,1,0,0,88,0,0,0,108,0,0,0,178,4,0,0,202,0,0,0,156,4,0,0,50,4,0,0,108,0,0,0,50,0,0,0,42,0,0,0,158,0,0,0,212,1,0,0,244,0,0,0,166,0,0,0,68,9,0,0,214,0,0,0,140,5,0,0,86,4,0,0,68,0,0,0,216,2,0,0,186,4,0,0,150,0,0,0,4,5,0,0,196,0,0,0,102,8,0,0,52,0,0,0,46,0,0,0,50,0,0,0,240,4,0,0,108,5,0,0,208,6,0,0,204,1,0,0,232,1,0,0,68,5,0,0,94,5,0,0,124,1,0,0,214,10,0,0,206,0,0,0,178,3,0,0,42,0,0,0,146,1,0,0,58,2,0,0,64,3,0,0,154,0,0,0,48,6,0,0,184,1,0,0,236,5,0,0,92,5,0,0,38,8,0,0,166,3,0,0,246,0,0,0,252,0,0,0,102,0,0,0,40,5,0,0,108,0,0,0,72,0,0,0,106,0,0,0,78,0,0,0,48,0,0,0,126,4,0,0,76,4,0,0,54,0,0,0,178,0,0,0,66,0,0,0,142,1,0,0,4,6,0,0,26,5,0,0,112,1,0,0,100,6,0,0,148,1,0,0,178,2,0,0,166,0,0,0,166,0,0,0,58,1,0,0,32,1,0,0,242,1,0,0,84,0,0,0,160,3,0,0,220,1,0,0,146,5,0,0,156,1,0,0,100,0,0,0,188,4,0,0,144,0,0,0,88,0,0,0,222,0,0,0,230,0,0,0,210,1,0,0,56,0,0,0,238,0,0,0,174,0,0,0,174,0,0,0,62,0,0,0,56,0,0,0,46,0,0,0,44,0,0,0,42,0,0,0,148,0,0,0,154,1,0,0,252,1,0,0,58,0,0,0,40,4,0,0,68,0,0,0,44,0,0,0,218,1,0,0,154,0,0,0,156,0,0,0,234,6,0,0,44,0,0,0,42,0,0,0,160,3,0,0,202,0,0,0,214,3,0,0,82,10,0,0,66,0,0,0,42,10,0,0,78,5,0,0,146,0,0,0,246,4,0,0,188,2,0,0,56,0,0,0,102,0,0,0,208,8,0,0,90,2,0,0,82,0,0,0,12,1,0,0,26,1,0,0,88,0,0,0,118,1,0,0,254,1,0,0,46,0,0,0,186,0,0,0,180,0,0,0,52,0,0,0,42,0,0,0,42,0,0,0,140,6,0,0,128,5,0,0,58,0,0,0,18,1,0,0,46,7,0,0,20,3,0,0,124,1,0,0,2,1,0,0,112,0,0,0,48,0,0,0,48,0,0,0,126,6,0,0,22,1,0,0,126,0,0,0,56,3,0,0,28,7,0,0,118,5,0,0,74,0,0,0,54,0,0,0,42,0,0,0,212,9,0,0,78,1,0,0,82,0,0,0,8,2,0,0,50,10,0,0,14,3,0,0,224,1,0,0,150,0,0,0,236,6,0,0,100,1,0,0,64,3,0,0,62,0,0,0,54,0,0,0,48,0,0,0,60,0,0,0,48,0,0,0,46,0,0,0,194,10,0,0,176,3,0,0,50,0,0,0,186,2,0,0,246,1,0,0,128,0,0,0,230,2,0,0,230,2,0,0,164,6,0,0,184,1,0,0,12,1,0,0,78,2,0,0,78,2,0,0,82,0,0,0,114,0,0,0,42,0,0,0,250,1,0,0,254,1,0,0,42,0,0,0,152,1,0,0,144,0,0,0,124,0,0,0,106,1,0,0,10,1,0,0,56,0,0,0,142,3,0,0,156,8,0,0,94,4,0,0,64,0,0,0,116,1,0,0,216,0,0,0,12,2,0,0,14,6,0,0,138,1,0,0,14,1,0,0,70,0,0,0,58,1,0,0,140,1,0,0,198,1,0,0,88,0,0,0,74,1,0,0,180,0,0,0,254,0,0,0,72,1,0,0,112,1,0,0,104,0,0,0,238,1,0,0,146,9,0,0,248,0,0,0,56,1,0,0,52,1,0,0,238,1,0,0,112,0,0,0,64,0,0,0,172,4,0,0,90,0,0,0,128,0,0,0,166,1,0,0,254,0,0,0,126,4,0,0,44,3,0,0,76,10,0,0,84,0,0,0,64,1,0,0,214,1,0,0,54,0,0,0,106,4,0,0,242,1,0,0,154,0,0,0,106,1,0,0,204,0,0,0,158,0,0,0,178,4,0,0,210,0,0,0,234,1,0,0,76,0,0,0,242,4,0,0,30,2,0,0,250,5,0,0,222,2,0,0,42,2,0,0,10,1,0,0,104,1,0,0,174,0,0,0,216,4,0,0,54,7,0,0,86,1,0,0,144,1,0,0,182,1,0,0,100,9,0,0,50,0,0,0,98,0,0,0,158,1,0,0,58,0,0,0,172,0,0,0,62,0,0,0,118,1,0,0,218,9,0,0,70,0,0,0,244,7,0,0,226,0,0,0,250,5,0,0,64,0,0,0,164,0,0,0,112,4,0,0,208,1,0,0,110,5,0,0,20,1,0,0,140,1,0,0,212,0,0,0,46,0,0,0,44,3,0,0,224,9,0,0,244,0,0,0,0,1,0,0,42,0,0,0,16,4,0,0,212,0,0,0,158,1,0,0,82,0,0,0,52,2,0,0,238,0,0,0,134,4,0,0,230,1,0,0,174,5,0,0,66,2,0,0,64,0,0,0,192,1,0,0,220,4,0,0,56,6,0,0,32,10,0,0,218,2,0,0,242,2,0,0,202,0,0,0,202,5,0,0,54,0,0,0,42,3,0,0,132,1,0,0,214,2,0,0,38,2,0,0,86,0,0,0,24,9,0,0,78,5,0,0,152,2,0,0,82,0,0,0,184,1,0,0,162,1,0,0,200,0,0,0,164,5,0,0,128,1,0,0,224,0,0,0,170,8,0,0,20,9,0,0,110,0,0,0,80,4,0,0,222,0,0,0,8,10,0,0,114,0,0,0,68,1,0,0,0,5,0,0,48,5,0,0,34,1,0,0,42,0,0,0,42,0,0,0,188,3,0,0,136,0,0,0,160,4,0,0,164,6,0,0,128,2,0,0,80,10,0,0,200,2,0,0,14,7,0,0,44,0,0,0,44,0,0,0,6,2,0,0,62,1,0,0,92,0,0,0,214,1,0,0,254,0,0,0,224,0,0,0,158,8,0,0,124,5,0,0,120,6,0,0,150,6,0,0,104,0,0,0,172,8,0,0,92,1,0,0,136,7,0,0,226,8,0,0,176,8,0,0,180,4,0,0,102,2,0,0,128,0,0,0,54,5,0,0,74,3,0,0,74,0,0,0,188,1,0,0,52,1,0,0,18,2,0,0,182,0,0,0,122,1,0,0,80,5,0,0,216,3,0,0,246,0,0,0,124,10,0,0,76,0,0,0,100,0,0,0,142,10,0,0,178,8,0,0,126,2,0,0,24,2,0,0,66,5,0,0,130,1,0,0,162,2,0,0,226,4,0,0,70,0,0,0,98,4,0,0,230,0,0,0,124,6,0,0,98,3,0,0,48,4,0,0,104,4,0,0,120,0,0,0,30,4,0,0,58,1,0,0,202,6,0,0,82,8,0,0,54,10,0,0,236,2,0,0,10,1,0,0,68,2,0,0,94,1,0,0,158,0,0,0,142,4,0,0,236,3,0,0,60,1,0,0,184,3,0,0,16,2,0,0,174,1,0,0,72,3,0,0,24,2,0,0,208,5,0,0,34,5,0,0,104,1,0,0,208,1,0,0,80,3,0,0,250,0,0,0,236,0,0,0,160,2,0,0,172,0,0,0,240,0,0,0,88,1,0,0,218,0,0,0,204,4,0,0,196,3,0,0,218,2,0,0,66,0,0,0,50,0,0,0,56,0,0,0,238,8,0,0,48,6,0,0,118,4,0,0,54,1,0,0,48,5,0,0,116,0,0,0,54,6,0,0,14,5,0,0,74,0,0,0,248,5,0,0,226,5,0,0,42,0,0,0,218,2,0,0,220,0,0,0,234,0,0,0,50,0,0,0,44,0,0,0,46,0,0,0,44,1,0,0,30,7,0,0,110,4,0,0,166,1,0,0,180,3,0,0,0,10,0,0,214,0,0,0,16,2,0,0,122,1,0,0,224,1,0,0,60,2,0,0,74,1,0,0,46,0,0,0,222,10,0,0,134,0,0,0,192,4,0,0,106,0,0,0,178,1,0,0,98,1,0,0,46,0,0,0,42,6,0,0,162,0,0,0,12,1,0,0,108,0,0,0,52,0,0,0,72,0,0,0,174,4,0,0,66,1,0,0,154,7,0,0,78,0,0,0,116,0,0,0,144,0,0,0,186,2,0,0,252,0,0,0,68,1,0,0,64,0,0,0,212,5,0,0,110,6,0,0,170,0,0,0,184,6,0,0,102,0,0,0,70,2,0,0,50,0,0,0,52,2,0,0,132,3,0,0,96,1,0,0,46,1,0,0,8,1,0,0,118,3,0,0,102,1,0,0,114,7,0,0,84,0,0,0,206,1,0,0,196,6,0,0,112,2,0,0,46,0,0,0,76,0,0,0,46,6,0,0,100,2,0,0,6,6,0,0,112,1,0,0,216,0,0,0,44,1,0,0,226,0,0,0,106,0,0,0,114,2,0,0,120,0,0,0,158,1,0,0,40,1,0,0,210,2,0,0,244,0,0,0,252,1,0,0,70,0,0,0,162,2,0,0,48,2,0,0,14,2,0,0,192,2,0,0,104,1,0,0,202,1,0,0,218,0,0,0,132,0,0,0,40,1,0,0,140,0,0,0,196,0,0,0,186,7,0,0,118,0,0,0,10,2,0,0,226,2,0,0,196,1,0,0,36,1,0,0,32,1,0,0,20,1,0,0,196,2,0,0,206,8,0,0,216,1,0,0,46,1,0,0,190,0,0,0,174,0,0,0,186,1,0,0,166,0,0,0,136,0,0,0,20,2,0,0,216,4,0,0,98,2,0,0,224,0,0,0,176,0,0,0,84,5,0,0,250,0,0,0,120,1,0,0,164,2,0,0,116,0,0,0,92,0,0,0,126,2,0,0,202,1,0,0,158,3,0,0,66,0,0,0,188,8,0,0,32,1,0,0,166,2,0,0,172,6,0,0,172,1,0,0,80,1,0,0,200,1,0,0,104,1,0,0,140,0,0,0,238,3,0,0,114,4,0,0,240,9,0,0,180,0,0,0,234,1,0,0,82,1,0,0,236,3,0,0,242,1,0,0,8,1,0,0,252,2,0,0,24,8,0,0,94,0,0,0,206,7,0,0,234,5,0,0,204,0,0,0,104,6,0,0,58,3,0,0,126,0,0,0,208,9,0,0,178,1,0,0,236,0,0,0,108,0,0,0,108,2,0,0,138,3,0,0,136,0,0,0,68,2,0,0,192,0,0,0,150,0,0,0,146,10,0,0,232,2,0,0,54,2,0,0,194,0,0,0,86,1,0,0,208,6,0,0,100,0,0,0,66,0,0,0,118,3,0,0,44,1,0,0,52,0,0,0,116,0,0,0,138,6,0,0,74,0,0,0,246,8,0,0,72,10,0,0,56,0,0,0,114,6,0,0,232,0,0,0,12,1,0,0,116,3,0,0,136,2,0,0,120,10,0,0,150,2,0,0,72,0,0,0,80,0,0,0,212,8,0,0,242,9,0,0,104,0,0,0,8,4,0,0,54,0,0,0,78,3,0,0,250,0,0,0,50,5,0,0,70,9,0,0,44,2,0,0,44,0,0,0,42,4,0,0,50,0,0,0,62,0,0,0,124,3,0,0,78,0,0,0,248,5,0,0,142,0,0,0,46,0,0,0,60,4,0,0,60,8,0,0,90,7,0,0,204,5,0,0,232,0,0,0,242,0,0,0,238,0,0,0,188,5,0,0,46,1,0,0,60,0,0,0,58,1,0,0,194,1,0,0,134,2,0,0,76,0,0,0,252,0,0,0,60,3,0,0,162,0,0,0,228,0,0,0,50,1,0,0,170,0,0,0,136,1,0,0,128,1,0,0,58,0,0,0,116,0,0,0,222,2,0,0,32,6,0,0,58,1,0,0,128,4,0,0,6,1,0,0,172,1,0,0,230,1,0,0,30,2,0,0,70,0,0,0,74,0,0,0,198,1,0,0,112,5,0,0,222,5,0,0,82,0,0,0,52,0,0,0,164,0,0,0,216,1,0,0,48,1,0,0,44,1,0,0,96,1,0,0,60,0,0,0,82,6,0,0,184,8,0,0,98,0,0,0,60,0,0,0,238,1,0,0,58,0,0,0,2,6,0,0,94,2,0,0,58,0,0,0,180,7,0,0,54,4,0,0,240,8,0,0,72,0,0,0,44,0,0,0,42,6,0,0,44,2,0,0,254,0,0,0,144,1,0,0,66,0,0,0,70,0,0,0,38,9,0,0,234,0,0,0,218,0,0,0,40,2,0,0,162,1,0,0,86,0,0,0,108,0,0,0,214,1,0,0,52,0,0,0,62,0,0,0,232,0,0,0,46,4,0,0,60,4,0,0,160,1,0,0,32,1,0,0,30,6,0,0,70,0,0,0,90,1,0,0,74,3,0,0,128,8,0,0,126,0,0,0,24,4,0,0,174,0,0,0,144,0,0,0,248,0,0,0,28,2,0,0,74,2,0,0,74,2,0,0,4,2,0,0,30,1,0,0,168,0,0,0,210,1,0,0,226,1,0,0,8,9,0,0,64,0,0,0,64,0,0,0,248,1,0,0,126,1,0,0,120,3,0,0,12,6,0,0,156,9,0,0,50,0,0,0,210,2,0,0,238,6,0,0,102,1,0,0,204,7,0,0,168,1,0,0,202,5,0,0,76,5,0,0,164,0,0,0,118,3,0,0,234,0,0,0,38,5,0,0,84,2,0,0,32,9,0,0,248,0,0,0,218,10,0,0,22,6,0,0,234,2,0,0,18,5,0,0,216,0,0,0,54,1,0,0,24,2,0,0,6,2,0,0,44,0,0,0,68,8,0,0,182,0,0,0,24,7,0,0,90,6,0,0,46,0,0,0,68,0,0,0,52,0,0,0,178,0,0,0,8,6,0,0,16,2,0,0,34,1,0,0,90,0,0,0,104,0,0,0,130,9,0,0,176,1,0,0,244,4,0,0,184,0,0,0,64,8,0,0,212,1,0,0,192,0,0,0,46,0,0,0,44,0,0,0,86,0,0,0,140,0,0,0,184,6,0,0,170,0,0,0,128,1,0,0,88,3,0,0,176,1,0,0,180,0,0,0,82,0,0,0,112,0,0,0,34,1,0,0,18,10,0,0,54,2,0,0,230,3,0,0,212,4,0,0,252,0,0,0,166,8,0,0,128,3,0,0,210,0,0,0,250,1,0,0,110,0,0,0,200,2,0,0,144,4,0,0,106,2,0,0,168,2,0,0,114,6,0,0,150,2,0,0,38,3,0,0,58,2,0,0,164,0,0,0,252,4,0,0,46,3,0,0,192,1,0,0,188,1,0,0,4,1,0,0,156,0,0,0,20,1,0,0,122,0,0,0,46,0,0,0,42,0,0,0,130,0,0,0,92,1,0,0,50,0,0,0,116,4,0,0,78,0,0,0,84,1,0,0,62,0,0,0,50,2,0,0,86,0,0,0,250,1,0,0,42,0,0,0,74,2,0,0,194,2,0,0,152,2,0,0,90,2,0,0,62,0,0,0,128,2,0,0,62,1,0,0,206,2,0,0,4,1,0,0,54,0,0,0,38,4,0,0,72,0,0,0,160,0,0,0,58,5,0,0,252,0,0,0,158,1,0,0,100,1,0,0,44,0,0,0,230,0,0,0,152,0,0,0,222,4,0,0,170,10,0,0,146,0,0,0,42,0,0,0,130,0,0,0,128,0,0,0,200,1,0,0,46,10,0,0,76,0,0,0,56,5,0,0,118,0,0,0,244,6,0,0,156,1,0,0,60,6,0,0,228,2,0,0,198,0,0,0,204,2,0,0,120,0,0,0,134,4,0,0,80,0,0,0,92,0,0,0,168,1,0,0,84,0,0,0,152,10,0,0,42,0,0,0,46,2,0,0,134,9,0,0,210,1,0,0,26,1,0,0,48,0,0,0,80,0,0,0,178,0,0,0,112,0,0,0,76,3,0,0,214,5,0,0,206,0,0,0,58,0,0,0,172,2,0,0,160,2,0,0,70,0,0,0,110,0,0,0,40,2,0,0,226,6,0,0,52,8,0,0,202,6,0,0,186,9,0,0,202,1,0,0,48,0,0,0,48,0,0,0,210,0,0,0,152,1,0,0,40,2,0,0,58,0,0,0,76,4,0,0,132,1,0,0,122,1,0,0,36,2,0,0,130,0,0,0,90,9,0,0,78,1,0,0,10,5,0,0,116,9,0,0,16,1,0,0,190,0,0,0,8,1,0,0,236,8,0,0,152,9,0,0,130,1,0,0,126,1,0,0,138,1,0,0,154,0,0,0,76,1,0,0,228,0,0,0,54,0,0,0,190,6,0,0,128,9,0,0,36,8,0,0,30,10,0,0,242,2,0,0,104,0,0,0,44,10,0,0,182,5,0,0,230,0,0,0,62,9,0,0,144,1,0,0,146,2,0,0,104,1,0,0,80,8,0,0,72,0,0,0,38,3,0,0,60,3,0,0,194,0,0,0,2,2,0,0,70,0,0,0,112,9,0,0,118,7,0,0,194,2,0,0,54,1,0,0,246,5,0,0,38,1,0,0,198,0,0,0,8,3,0,0,250,1,0,0,12,3,0,0,116,1,0,0,188,0,0,0,94,0,0,0,38,2,0,0,64,1,0,0,222,8,0,0,88,0,0,0,114,1,0,0,64,0,0,0,102,0,0,0,198,7,0,0,154,1,0,0,26,8,0,0,60,1,0,0,144,0,0,0,162,2,0,0,52,7,0,0,94,10,0,0,42,0,0,0,46,6,0,0,236,1,0,0,84,0,0,0,108,8,0,0,214,9,0,0,204,10,0,0,14,2,0,0,56,7,0,0,218,8,0,0,124,1,0,0,94,1,0,0,72,2,0,0,222,1,0,0,132,0,0,0,94,8,0,0,68,2,0,0,104,0,0,0,248,0,0,0,96,0,0,0,46,0,0,0,208,2,0,0,30,5,0,0,158,0,0,0,54,0,0,0,164,5,0,0,228,8,0,0,60,3,0,0,120,0,0,0,92,0,0,0,2,8,0,0,160,1,0,0,210,2,0,0,208,0,0,0,142,5,0,0,136,1,0,0,128,6,0,0,46,0,0,0,42,0,0,0,42,2,0,0,82,0,0,0,102,0,0,0,100,0,0,0,94,0,0,0,134,0,0,0,166,1,0,0,122,0,0,0,132,0,0,0,82,1,0,0,16,2,0,0,2,1,0,0,54,1,0,0,252,0,0,0,82,0,0,0,46,0,0,0,44,0,0,0,86,0,0,0,76,2,0,0,124,1,0,0,106,6,0,0,128,2,0,0,140,0,0,0,132,8,0,0,26,7,0,0,202,4,0,0,126,2,0,0,176,0,0,0,254,2,0,0,78,1,0,0,108,6,0,0,186,0,0,0,122,0,0,0,184,5,0,0,80,2,0,0,236,0,0,0,4,1,0,0,52,0,0,0,238,7,0,0,58,8,0,0,90,1,0,0,82,0,0,0,16,3,0,0,82,0,0,0,4,7,0,0,74,8,0,0,212,0,0,0,52,10,0,0,20,3,0,0,10,2,0,0,50,0,0,0,106,5,0,0,124,0,0,0,138,1,0,0,92,3,0,0,56,0,0,0,34,2,0,0,44,0,0,0,94,7,0,0,158,3,0,0,78,8,0,0,210,9,0,0,206,1,0,0,176,0,0,0,94,0,0,0,244,3,0,0,126,1,0,0,176,1,0,0,106,1,0,0,200,4,0,0,102,1,0,0,112,3,0,0,42,0,0,0,158,4,0,0,208,2,0,0,42,3,0,0,22,5,0,0,254,7,0,0,226,4,0,0,146,4,0,0,244,1,0,0,18,8,0,0,0,7,0,0,232,3,0,0,48,7,0,0,186,1,0,0,188,5,0,0,152,6,0,0,62,0,0,0,72,1,0,0,14,5,0,0,112,1,0,0,166,1,0,0,162,5,0,0,244,1,0,0,36,3,0,0,64,7,0,0,82,5,0,0,100,8,0,0,134,8,0,0,124,0,0,0,244,3,0,0,104,6,0,0,250,4,0,0,46,0,0,0,110,10,0,0,86,8,0,0,138,1,0,0,234,1,0,0,214,1,0,0,76,0,0,0,188,0,0,0,34,10,0,0,236,5,0,0,20,2,0,0,74,2,0,0,42,0,0,0,218,0,0,0,70,2,0,0,104,0,0,0,160,2,0,0,218,4,0,0,118,2,0,0,38,6,0,0,64,0,0,0,108,3,0,0,78,6,0,0,82,9,0,0,210,3,0,0,46,3,0,0,28,5,0,0,212,1,0,0,202,4,0,0,82,0,0,0,28,2,0,0,250,0,0,0,86,0,0,0,102,0,0,0,126,0,0,0,180,1,0,0,214,3,0,0,234,0,0,0,48,1,0,0,200,10,0,0,82,1,0,0,126,1,0,0,208,3,0,0,44,0,0,0,56,0,0,0,252,7,0,0,124,6,0,0,50,1,0,0,76,1,0,0,84,4,0,0,78,0,0,0,232,1,0,0,104,0,0,0,0,8,0,0,82,0,0,0,168,5,0,0,228,0,0,0,192,2,0,0,142,0,0,0,94,0,0,0,24,6,0,0,48,0,0,0,48,0,0,0,44,0,0,0,40,6,0,0,176,5,0,0,118,0,0,0,44,6,0,0,18,3,0,0,90,3,0,0,218,5,0,0,14,1,0,0,48,0,0,0,110,8,0,0,88,2,0,0,194,5,0,0,240,7,0,0,54,0,0,0,120,9,0,0,138,0,0,0,206,1,0,0,166,1,0,0,74,1,0,0,50,2,0,0,60,0,0,0,116,0,0,0,250,0,0,0,138,0,0,0,206,5,0,0,134,1,0,0,170,0,0,0,70,0,0,0,34,7,0,0,128,4,0,0,96,0,0,0,110,1,0,0,40,1,0,0,30,3,0,0,26,10,0,0,208,7,0,0,230,4,0,0,98,1,0,0,138,4,0,0,100,5,0,0,184,0,0,0,62,1,0,0,100,0,0,0,154,9,0,0,236,1,0,0,184,4,0,0,162,3,0,0,104,1,0,0,254,3,0,0,62,1,0,0,36,1,0,0,50,5,0,0,236,9,0,0,208,0,0,0,206,5,0,0,194,1,0,0,86,3,0,0,134,0,0,0,224,4,0,0,130,0,0,0,50,3,0,0,122,2,0,0,132,0,0,0,46,0,0,0,198,2,0,0,182,4,0,0,96,0,0,0,72,5,0,0,112,0,0,0,50,0,0,0,42,0,0,0,42,0,0,0,220,0,0,0,240,2,0,0,144,2,0,0,64,9,0,0,190,1,0,0,76,3,0,0,60,0,0,0,156,1,0,0,16,6,0,0,74,0,0,0,6,9,0,0,182,0,0,0,228,4,0,0,14,4,0,0,186,2,0,0,50,0,0,0,136,1,0,0,142,4,0,0,44,0,0,0,68,0,0,0,150,0,0,0,110,0,0,0,20,5,0,0,66,0,0,0,166,0,0,0,122,0,0,0,40,6,0,0,142,0,0,0,190,0,0,0,76,2,0,0,166,0,0,0,114,5,0,0,132,2,0,0,100,10,0,0,20,1,0,0,38,1,0,0,136,10,0,0,32,2,0,0,8,7,0,0,34,1,0,0,72,6,0,0,118,2,0,0,216,0,0,0,92,0,0,0,102,4,0,0,182,7,0,0,226,5,0,0,58,10,0,0,28,3,0,0,8,4,0,0,168,1,0,0,240,1,0,0,190,7,0,0,130,0,0,0,76,3,0,0,138,2,0,0,136,3,0,0,222,0,0,0,20,8,0,0,56,0,0,0,30,1,0,0,18,6,0,0,254,1,0,0,52,0,0,0,110,0,0,0,76,1,0,0,130,0,0,0,220,1,0,0,212,2,0,0,8,1,0,0,162,10,0,0,66,8,0,0,142,7,0,0,58,0,0,0,68,2,0,0,218,4,0,0,102,9,0,0,12,6,0,0,76,0,0,0,56,4,0,0,238,0,0,0,48,0,0,0,162,8,0,0,198,5,0,0,150,5,0,0,156,0,0,0,52,3,0,0,102,0,0,0,188,0,0,0,82,3,0,0,54,1,0,0,160,8,0,0,52,2,0,0,96,1,0,0,94,0,0,0,94,0,0,0,204,1,0,0,172,6,0,0,232,1,0,0,176,7,0,0,2,1,0,0,218,1,0,0,122,0,0,0,212,3,0,0,66,0,0,0,154,3,0,0,168,5,0,0,102,1,0,0,20,4,0,0,178,7,0,0,218,0,0,0,22,8,0,0,248,0,0,0,162,4,0,0,182,3,0,0,146,8,0,0,134,5,0,0,70,0,0,0,58,0,0,0,114,0,0,0,226,0,0,0,50,0,0,0,86,0,0,0,198,10,0,0,240,1,0,0,174,1,0,0,22,10,0,0,232,0,0,0,76,0,0,0,150,0,0,0,212,0,0,0,174,0,0,0,50,6,0,0,126,0,0,0,84,5,0,0,8,1,0,0,228,1,0,0,180,3,0,0,108,0,0,0,80,0,0,0,58,0,0,0,42,0,0,0,42,0,0,0,8,6,0,0,30,3,0,0,74,0,0,0,18,2,0,0,58,0,0,0,98,2,0,0,96,1,0,0,42,0,0,0,42,0,0,0,120,2,0,0,176,3,0,0,148,0,0,0,210,3,0,0,170,4,0,0,96,0,0,0,118,0,0,0,174,1,0,0,68,1,0,0,246,1,0,0,70,7,0,0,148,0,0,0,34,9,0,0,156,1,0,0,188,6,0,0].concat([200,2,0,0,98,0,0,0,26,2,0,0,98,0,0,0,222,0,0,0,172,3,0,0,196,7,0,0,104,9,0,0,240,4,0,0,152,1,0,0,70,2,0,0,156,1,0,0,242,0,0,0,14,6,0,0,178,0,0,0,30,2,0,0,160,0,0,0,86,1,0,0,104,3,0,0,214,0,0,0,74,6,0,0,140,1,0,0,52,0,0,0,44,0,0,0,240,0,0,0,66,1,0,0,232,6,0,0,62,0,0,0,100,2,0,0,238,0,0,0,44,0,0,0,80,4,0,0,168,3,0,0,198,4,0,0,56,2,0,0,114,0,0,0,240,1,0,0,196,10,0,0,2,10,0,0,160,5,0,0,146,0,0,0,22,7,0,0,188,3,0,0,134,3,0,0,64,0,0,0,160,0,0,0,72,1,0,0,150,5,0,0,168,2,0,0,232,0,0,0,164,10,0,0,6,2,0,0,98,5,0,0,226,2,0,0,114,0,0,0,96,4,0,0,156,6,0,0,230,0,0,0,136,1,0,0,150,0,0,0,250,4,0,0,238,4,0,0,96,1,0,0,180,1,0,0,54,4,0,0,48,0,0,0,42,0,0,0,28,2,0,0,108,0,0,0,42,2,0,0,254,0,0,0,58,3,0,0,24,3,0,0,214,0,0,0,90,10,0,0,6,4,0,0,224,6,0,0,78,1,0,0,208,0,0,0,70,1,0,0,68,6,0,0,200,8,0,0,102,0,0,0,86,3,0,0,140,1,0,0,92,0,0,0,66,0,0,0,244,2,0,0,244,5,0,0,36,1,0,0,246,6,0,0,182,2,0,0,90,1,0,0,10,2,0,0,144,4,0,0,194,0,0,0,64,10,0,0,158,2,0,0,126,0,0,0,108,9,0,0,92,0,0,0,164,0,0,0,226,1,0,0,162,1,0,0,50,0,0,0,78,7,0,0,230,6,0,0,64,2,0,0,232,0,0,0,60,2,0,0,196,3,0,0,44,2,0,0,118,0,0,0,138,0,0,0,118,1,0,0,254,5,0,0,236,1,0,0,120,3,0,0,110,6,0,0,102,0,0,0,102,1,0,0,56,1,0,0,48,2,0,0,64,0,0,0,22,2,0,0,110,1,0,0,16,1,0,0,74,5,0,0,100,0,0,0,26,9,0,0,254,9,0,0,208,5,0,0,140,1,0,0,48,3,0,0,64,0,0,0,22,1,0,0,2,9,0,0,88,8,0,0,14,2,0,0,94,3,0,0,154,5,0,0,34,2,0,0,158,1,0,0,204,4,0,0,220,0,0,0,234,0,0,0,134,0,0,0,46,0,0,0,136,9,0,0,200,1,0,0,68,3,0,0,176,6,0,0,178,2,0,0,84,2,0,0,48,1,0,0,54,2,0,0,104,7,0,0,166,2,0,0,136,0,0,0,186,5,0,0,142,0,0,0,144,2,0,0,94,0,0,0,138,0,0,0,86,5,0,0,88,6,0,0,10,3,0,0,176,4,0,0,152,3,0,0,122,6,0,0,62,5,0,0,116,2,0,0,246,5,0,0,160,0,0,0,102,5,0,0,178,1,0,0,186,6,0,0,234,1,0,0,80,2,0,0,220,0,0,0,58,4,0,0,10,6,0,0,200,7,0,0,210,1,0,0,42,0,0,0,150,1,0,0,230,0,0,0,108,10,0,0,158,1,0,0,130,4,0,0,128,6,0,0,174,9,0,0,184,0,0,0,8,8,0,0,166,3,0,0,24,1,0,0,80,0,0,0,54,3,0,0,140,8,0,0,154,10,0,0,16,8,0,0,254,2,0,0,74,1,0,0,204,0,0,0,194,3,0,0,2,4,0,0,24,2,0,0,64,0,0,0,134,0,0,0,22,1,0,0,136,2,0,0,56,0,0,0,76,6,0,0,32,7,0,0,154,3,0,0,30,2,0,0,144,0,0,0,154,1,0,0,66,7,0,0,126,10,0,0,98,0,0,0,148,1,0,0,168,0,0,0,32,8,0,0,82,0,0,0,82,2,0,0,180,0,0,0,70,0,0,0,138,0,0,0,170,2,0,0,194,0,0,0,148,4,0,0,58,6,0,0,116,4,0,0,118,10,0,0,252,5,0,0,198,5,0,0,152,0,0,0,46,0,0,0,74,10,0,0,14,9,0,0,4,8,0,0,178,10,0,0,212,0,0,0,76,1,0,0,44,7,0,0,188,7,0,0,54,0,0,0,138,0,0,0,8,2,0,0,236,1,0,0,106,1,0,0,8,3,0,0,218,5,0,0,130,1,0,0,96,0,0,0,46,0,0,0,254,1,0,0,136,5,0,0,178,5,0,0,146,4,0,0,56,0,0,0,48,9,0,0,44,0,0,0,184,3,0,0,178,5,0,0,42,0,0,0,42,0,0,0,148,7,0,0,244,1,0,0,94,0,0,0,100,0,0,0,244,2,0,0,232,4,0,0,110,1,0,0,136,6,0,0,136,5,0,0,180,0,0,0,212,1,0,0,52,0,0,0,10,1,0,0,184,2,0,0,174,2,0,0,22,1,0,0,142,6,0,0,70,3,0,0,146,7,0,0,176,1,0,0,58,4,0,0,134,0,0,0,160,1,0,0,46,1,0,0,114,3,0,0,74,1,0,0,92,0,0,0,200,9,0,0,214,4,0,0,212,2,0,0,104,3,0,0,124,1,0,0,56,2,0,0,48,1,0,0,44,0,0,0,48,0,0,0,76,5,0,0,84,1,0,0,42,0,0,0,52,0,0,0,112,7,0,0,12,3,0,0,64,0,0,0,102,0,0,0,66,2,0,0,166,5,0,0,116,5,0,0,46,1,0,0,248,0,0,0,90,0,0,0,116,6,0,0,108,0,0,0,98,4,0,0,200,2,0,0,132,0,0,0,108,2,0,0,56,0,0,0,26,3,0,0,206,3,0,0,172,2,0,0,150,9,0,0,134,0,0,0,78,10,0,0,122,1,0,0,50,2,0,0,116,5,0,0,120,5,0,0,52,2,0,0,162,6,0,0,168,6,0,0,180,5,0,0,78,0,0,0,36,1,0,0,70,0,0,0,104,3,0,0,56,1,0,0,162,1,0,0,106,0,0,0,62,3,0,0,94,0,0,0,144,1,0,0,224,3,0,0,196,0,0,0,64,1,0,0,154,2,0,0,160,0,0,0,74,0,0,0,220,5,0,0,26,1,0,0,146,2,0,0,232,7,0,0,190,0,0,0,124,2,0,0,248,1,0,0,84,0,0,0,180,1,0,0,162,1,0,0,156,2,0,0,214,0,0,0,96,2,0,0,44,0,0,0,44,0,0,0,44,0,0,0,108,1,0,0,210,0,0,0,226,3,0,0,58,0,0,0,66,3,0,0,0,1,0,0,186,6,0,0,136,1,0,0,198,9,0,0,206,3,0,0,222,2,0,0,18,1,0,0,16,7,0,0,96,6,0,0,62,4,0,0,48,1,0,0,146,1,0,0,26,2,0,0,148,0,0,0,228,1,0,0,132,1,0,0,172,3,0,0,198,1,0,0,246,3,0,0,42,1,0,0,188,2,0,0,10,6,0,0,228,5,0,0,138,9,0,0,82,0,0,0,120,6,0,0,60,2,0,0,86,3,0,0,116,1,0,0,78,4,0,0,118,0,0,0,164,1,0,0,36,1,0,0,64,5,0,0,212,10,0,0,132,3,0,0,198,2,0,0,148,9,0,0,64,2,0,0,60,0,0,0,52,9,0,0,218,1,0,0,2,1,0,0,92,0,0,0,60,0,0,0,142,3,0,0,182,0,0,0,164,0,0,0,184,10,0,0,192,8,0,0,92,9,0,0,14,1,0,0,202,0,0,0,122,0,0,0,4,6,0,0,246,0,0,0,70,5,0,0,42,9,0,0,64,6,0,0,244,3,0,0,4,5,0,0,152,6,0,0,62,1,0,0,222,1,0,0,86,2,0,0,190,10,0,0,78,0,0,0,144,7,0,0,42,7,0,0,234,0,0,0,74,6,0,0,24,10,0,0,254,0,0,0,180,2,0,0,12,1,0,0,244,1,0,0,136,1,0,0,48,0,0,0,188,0,0,0,6,3,0,0,8,3,0,0,84,0,0,0,140,0,0,0,120,2,0,0,242,4,0,0,162,6,0,0,70,3,0,0,16,3,0,0,206,0,0,0,132,0,0,0,66,0,0,0,30,4,0,0,54,0,0,0,116,0,0,0,128,7,0,0,232,4,0,0,234,0,0,0,128,0,0,0,62,1,0,0,34,3,0,0,60,2,0,0,100,0,0,0,92,0,0,0,170,6,0,0,166,4,0,0,194,7,0,0,134,10,0,0,104,5,0,0,94,0,0,0,192,6,0,0,118,5,0,0,222,1,0,0,232,8,0,0,136,2,0,0,18,2,0,0,146,0,0,0,52,0,0,0,40,9,0,0,104,2,0,0,94,9,0,0,134,1,0,0,206,0,0,0,24,3,0,0,242,2,0,0,240,0,0,0,234,2,0,0,72,4,0,0,16,2,0,0,218,2,0,0,28,1,0,0,220,1,0,0,184,0,0,0,16,1,0,0,226,0,0,0,40,3,0,0,12,2,0,0,122,2,0,0,56,3,0,0,170,1,0,0,84,7,0,0,6,1,0,0,246,2,0,0,122,0,0,0,200,0,0,0,238,2,0,0,246,0,0,0,160,4,0,0,42,0,0,0,92,1,0,0,228,9,0,0,12,2,0,0,182,0,0,0,204,0,0,0,240,2,0,0,70,2,0,0,98,1,0,0,22,3,0,0,240,1,0,0,108,4,0,0,64,2,0,0,2,3,0,0,162,3,0,0,164,0,0,0,28,1,0,0,38,2,0,0,216,0,0,0,50,2,0,0,170,1,0,0,68,0,0,0,100,2,0,0,58,0,0,0,44,0,0,0,4,3,0,0,116,1,0,0,248,0,0,0,148,1,0,0,92,0,0,0,50,0,0,0,204,3,0,0,136,0,0,0,154,0,0,0,26,3,0,0,4,1,0,0,62,2,0,0,176,1,0,0,130,0,0,0,2,1,0,0,130,5,0,0,168,0,0,0,190,1,0,0,38,1,0,0,140,0,0,0,234,1,0,0,216,3,0,0,20,2,0,0,130,1,0,0,118,4,0,0,234,1,0,0,130,0,0,0,242,5,0,0,194,2,0,0,168,0,0,0,108,1,0,0,124,3,0,0,60,0,0,0,200,1,0,0,130,1,0,0,132,1,0,0,68,4,0,0,24,1,0,0,46,0,0,0,80,1,0,0,156,1,0,0,122,1,0,0,6,3,0,0,176,2,0,0,92,2,0,0,12,1,0,0,140,0,0,0,62,1,0,0,174,1,0,0,96,0,0,0,78,2,0,0,12,9,0,0,204,3,0,0,114,2,0,0,52,6,0,0,10,1,0,0,222,5,0,0,202,7,0,0,38,5,0,0,240,6,0,0,120,0,0,0,56,0,0,0,64,0,0,0,42,0,0,0,126,3,0,0,84,3,0,0,126,0,0,0,70,4,0,0,40,3,0,0,52,1,0,0,170,5,0,0,150,8,0,0,48,3,0,0,124,1,0,0,14,3,0,0,126,8,0,0,16,3,0,0,220,0,0,0,112,10,0,0,242,1,0,0,32,4,0,0,54,3,0,0,162,1,0,0,54,0,0,0,220,2,0,0,230,7,0,0,46,0,0,0,106,2,0,0,214,1,0,0,124,0,0,0,142,0,0,0,154,1,0,0,26,2,0,0,90,0,0,0,96,0,0,0,42,0,0,0,48,10,0,0,72,8,0,0,52,3,0,0,232,1,0,0,248,3,0,0,246,7,0,0,38,10,0,0,90,1,0,0,30,2,0,0,112,2,0,0,70,6,0,0,128,0,0,0,84,10,0,0,56,6,0,0,78,9,0,0,178,6,0,0,0,2,0,0,118,6,0,0,62,2,0,0,2,4,0,0,120,1,0,0,196,0,0,0,226,2,0,0,88,3,0,0,36,7,0,0,88,2,0,0,72,0,0,0,86,0,0,0,64,4,0,0,92,4,0,0,32,5,0,0,100,1,0,0,94,6,0,0,84,9,0,0,18,7,0,0,154,6,0,0,190,1,0,0,188,1,0,0,108,0,0,0,152,4,0,0,176,4,0,0,64,3,0,0,142,0,0,0,36,2,0,0,180,9,0,0,40,8,0,0,202,0,0,0,236,2,0,0,38,1,0,0,72,4,0,0,46,0,0,0,50,0,0,0,96,4,0,0,212,0,0,0,184,0,0,0,4,2,0,0,76,9,0,0,144,5,0,0,170,6,0,0,94,0,0,0,72,2,0,0,62,0,0,0,160,10,0,0,50,0,0,0,54,0,0,0,182,1,0,0,188,4,0,0,130,2,0,0,70,8,0,0,92,1,0,0,64,0,0,0,50,0,0,0,246,9,0,0,152,1,0,0,134,1,0,0,124,5,0,0,72,0,0,0,90,2,0,0,64,0,0,0,246,2,0,0,46,8,0,0,110,0,0,0,102,0,0,0,114,4,0,0,30,1,0,0,120,0,0,0,60,9,0,0,74,0,0,0,202,3,0,0,160,5,0,0,48,2,0,0,118,8,0,0,182,6,0,0,216,0,0,0,104,10,0,0,252,4,0,0,50,2,0,0,190,2,0,0,224,5,0,0,160,7,0,0,176,5,0,0,22,4,0,0,92,0,0,0,24,2,0,0,52,0,0,0,138,6,0,0,40,2,0,0,6,1,0,0,214,7,0,0,76,1,0,0,48,0,0,0,88,1,0,0,212,2,0,0,210,5,0,0,74,0,0,0,54,2,0,0,254,1,0,0,126,0,0,0,56,9,0,0,150,1,0,0,198,1,0,0,114,3,0,0,0,1,0,0,116,8,0,0,150,10,0,0,70,10,0,0,46,2,0,0,234,1,0,0,66,4,0,0,182,8,0,0,254,5,0,0,194,1,0,0,164,3,0,0,140,5,0,0,6,1,0,0,206,2,0,0,186,1,0,0,68,0,0,0,146,3,0,0,190,4,0,0,156,7,0,0,212,6,0,0,18,1,0,0,78,0,0,0,0,4,0,0,84,8,0,0,174,1,0,0,176,10,0,0,178,0,0,0,18,3,0,0,20,1,0,0,200,3,0,0,102,0,0,0,150,1,0,0,78,0,0,0,56,2,0,0,212,7,0,0,22,2,0,0,92,0,0,0,112,2,0,0,178,9,0,0,194,8,0,0,184,5,0,0,208,4,0,0,130,2,0,0,152,3,0,0,12,4,0,0,86,0,0,0,244,4,0,0,34,6,0,0,230,5,0,0,190,9,0,0,222,0,0,0,142,2,0,0,46,0,0,0,90,1,0,0,68,0,0,0,244,9,0,0,68,0,0,0,246,4,0,0,116,7,0,0,202,10,0,0,220,3,0,0,88,5,0,0,66,6,0,0,222,1,0,0,176,0,0,0,24,6,0,0,218,0,0,0,154,8,0,0,184,4,0,0,136,3,0,0,186,1,0,0,170,2,0,0,44,0,0,0,140,1,0,0,42,0,0,0,124,2,0,0,188,0,0,0,106,0,0,0,70,0,0,0,166,5,0,0,212,4,0,0,6,2,0,0,74,2,0,0,72,0,0,0,184,2,0,0,48,0,0,0,130,7,0,0,78,6,0,0,96,2,0,0,72,9,0,0,248,2,0,0,48,0,0,0,60,0,0,0,74,0,0,0,166,2,0,0,134,2,0,0,4,1,0,0,222,4,0,0,46,0,0,0,164,1,0,0,122,3,0,0,78,0,0,0,108,1,0,0,246,1,0,0,182,9,0,0,134,0,0,0,244,5,0,0,118,6,0,0,190,3,0,0,146,2,0,0,224,7,0,0,156,6,0,0,76,1,0,0,82,4,0,0,76,0,0,0,144,3,0,0,156,1,0,0,194,0,0,0,208,1,0,0,66,1,0,0,144,5,0,0,138,5,0,0,160,1,0,0,8,2,0,0,220,1,0,0,216,0,0,0,194,1,0,0,56,0,0,0,216,5,0,0,48,0,0,0,44,0,0,0,242,5,0,0,184,2,0,0,48,0,0,0,176,3,0,0,130,8,0,0,200,0,0,0,66,0,0,0,74,0,0,0,194,0,0,0,6,3,0,0,122,4,0,0,214,8,0,0,82,0,0,0,52,0,0,0,198,6,0,0,194,0,0,0,180,5,0,0,204,6,0,0,164,1,0,0,196,2,0,0,196,1,0,0,72,6,0,0,124,3,0,0,92,6,0,0,236,4,0,0,60,0,0,0,48,0,0,0,52,0,0,0,88,10,0,0,54,0,0,0,244,8,0,0,46,0,0,0,134,7,0,0,220,8,0,0,10,2,0,0,134,3,0,0,248,8,0,0,180,2,0,0,156,3,0,0,168,2,0,0,208,3,0,0,62,2,0,0,248,1,0,0,20,1,0,0,18,3,0,0,242,6,0,0,198,1,0,0,134,1,0,0,48,0,0,0,56,0,0,0,200,5,0,0,70,1,0,0,214,2,0,0,182,4,0,0,88,0,0,0,14,8,0,0,136,0,0,0,50,0,0,0,130,3,0,0,94,3,0,0,160,6,0,0,0,1,0,0,52,2,0,0,146,0,0,0,114,1,0,0,110,0,0,0,34,8,0,0,52,0,0,0,46,0,0,0,238,9,0,0,62,5,0,0,132,1,0,0,114,0,0,0,44,0,0,0,146,1,0,0,106,4,0,0,42,0,0,0,186,10,0,0,92,1,0,0,56,1,0,0,216,2,0,0,118,1,0,0,190,0,0,0,150,1,0,0,154,0,0,0,150,0,0,0,212,3,0,0,22,2,0,0,214,0,0,0,4,2,0,0,226,2,0,0,118,0,0,0,68,0,0,0,136,4,0,0,222,3,0,0,84,2,0,0,54,0,0,0,72,0,0,0,248,9,0,0,204,0,0,0,176,0,0,0,78,3,0,0,4,2,0,0,92,0,0,0,154,0,0,0,206,1,0,0,120,8,0,0,8,1,0,0,20,5,0,0,124,2,0,0,56,2,0,0,242,1,0,0,222,6,0,0,142,0,0,0,216,2,0,0,76,6,0,0,166,0,0,0,106,1,0,0,214,0,0,0,152,8,0,0,90,0,0,0,168,8,0,0,110,7,0,0,158,9,0,0,224,3,0,0,34,1,0,0,198,1,0,0,84,0,0,0,62,0,0,0,44,1,0,0,212,0,0,0,180,6,0,0,68,0,0,0,138,7,0,0,142,2,0,0,2,7,0,0,188,1,0,0,126,0,0,0,32,1,0,0,188,0,0,0,202,9,0,0,42,1,0,0,30,9,0,0,2,2,0,0,24,1,0,0,84,0,0,0,96,0,0,0,84,6,0,0,6,2,0,0,254,6,0,0,62,0,0,0,100,6,0,0,80,6,0,0,56,0,0,0,98,8,0,0,128,5,0,0,176,1,0,0,92,1,0,0,252,0,0,0,68,1,0,0,236,0,0,0,242,0,0,0,20,6,0,0,96,1,0,0,250,0,0,0,116,1,0,0,194,9,0,0,44,0,0,0,220,1,0,0,168,0,0,0,42,0,0,0,88,2,0,0,122,9,0,0,6,7,0,0,48,0,0,0,28,4,0,0,96,9,0,0,42,0,0,0,168,0,0,0,100,3,0,0,98,0,0,0,232,5,0,0,200,0,0,0,242,0,0,0,62,8,0,0,50,0,0,0,152,0,0,0,166,10,0,0,32,5,0,0,190,2,0,0,60,1,0,0,60,5,0,0,196,5,0,0,248,1,0,0,150,7,0,0,136,1,0,0,24,1,0,0,182,6,0,0,46,2,0,0,172,0,0,0,134,0,0,0,60,0,0,0,34,2,0,0,60,10,0,0,42,0,0,0,74,9,0,0,190,8,0,0,94,1,0,0,210,0,0,0,212,0,0,0,80,3,0,0,122,5,0,0,142,8,0,0,196,2,0,0,10,4,0,0,82,2,0,0,104,8,0,0,104,0,0,0,252,1,0,0,16,1,0,0,32,1,0,0,72,0,0,0,156,5,0,0,92,8,0,0,182,1,0,0,166,6,0,0,192,1,0,0,114,0,0,0,118,0,0,0,164,2,0,0,64,0,0,0,142,1,0,0,60,1,0,0,82,1,0,0,62,0,0,0,128,10,0,0,80,0,0,0,68,7,0,0,122,0,0,0,10,5,0,0,198,0,0,0,42,0,0,0,132,0,0,0,62,0,0,0,44,0,0,0,52,0,0,0,54,0,0,0,46,0,0,0,42,0,0,0,42,0,0,0,62,0,0,0,66,1,0,0,90,0,0,0,80,1,0,0,60,1,0,0,64,1,0,0,210,2,0,0,96,0,0,0,66,3,0,0,202,1,0,0,18,3,0,0,4,1,0,0,244,2,0,0,132,2,0,0,92,0,0,0,110,0,0,0,236,2,0,0,14,1,0,0,196,6,0,0,80,9,0,0,178,0,0,0,82,6,0,0,198,0,0,0,88,0,0,0,94,2,0,0,54,0,0,0,140,10,0,0,248,2,0,0,78,0,0,0,240,5,0,0,228,1,0,0,214,0,0,0,162,0,0,0,172,1,0,0,56,2,0,0,190,0,0,0,88,0,0,0,74,5,0,0,164,1,0,0,48,0,0,0,248,1,0,0,192,7,0,0,28,1,0,0,88,1,0,0,110,1,0,0,36,9,0,0,182,2,0,0,0,2,0,0,24,1,0,0,230,1,0,0,34,1,0,0,196,9,0,0,144,0,0,0,166,0,0,0,0,3,0,0,30,1,0,0,78,0,0,0,66,9,0,0,64,2,0,0,196,1,0,0,118,0,0,0,0,3,0,0,206,6,0,0,110,1,0,0,76,0,0,0,224,2,0,0,146,0,0,0,44,0,0,0,44,1,0,0,150,0,0,0,8,1,0,0,168,6,0,0,124,7,0,0,116,10,0,0,252,3,0,0,42,2,0,0,228,7,0,0,58,5,0,0,228,4,0,0,180,0,0,0,88,1,0,0,226,1,0,0,18,2,0,0,54,1,0,0,198,8,0,0,250,3,0,0,138,1,0,0,24,5,0,0,32,2,0,0,106,1,0,0,22,1,0,0,36,5,0,0,164,1,0,0,58,1,0,0,70,0,0,0,52,0,0,0,250,3,0,0,166,6,0,0,42,1,0,0,138,8,0,0,92,10,0,0,198,2,0,0,130,6,0,0,66,0,0,0,176,9,0,0,46,3,0,0,140,2,0,0,70,4,0,0,32,1,0,0,254,4,0,0,152,1,0,0,96,3,0,0,6,4,0,0,134,2,0,0,46,0,0,0,154,4,0,0,146,0,0,0,126,0,0,0,206,10,0,0,198,1,0,0,196,1,0,0,0,2,0,0,158,10,0,0,204,0,0,0,10,8,0,0,138,0,0,0,96,8,0,0,148,6,0,0,102,7,0,0,132,0,0,0,158,2,0,0,192,0,0,0,28,9,0,0,98,1,0,0,224,2,0,0,10,10,0,0,198,4,0,0,54,8,0,0,144,2,0,0,48,2,0,0,56,0,0,0,140,2,0,0,226,3,0,0,66,5,0,0,116,2,0,0,30,3,0,0,152,1,0,0,206,6,0,0,84,1,0,0,58,0,0,0,70,0,0,0,178,1,0,0,86,4,0,0,26,2,0,0,228,3,0,0,24,3,0,0,58,3,0,0,154,4,0,0,204,2,0,0,6,4,0,0,70,1,0,0,34,2,0,0,44,0,0,0,72,0,0,0,14,1,0,0,234,2,0,0,130,2,0,0,150,1,0,0,74,2,0,0,236,1,0,0,14,3,0,0,150,1,0,0,80,6,0,0,4,10,0,0,16,10,0,0,186,3,0,0,212,1,0,0,42,0,0,0,204,2,0,0,224,1,0,0,8,2,0,0,20,7,0,0,232,9,0,0,210,10,0,0,42,0,0,0,74,1,0,0,68,0,0,0,162,1,0,0,70,1,0,0,2,1,0,0,62,0,0,0,60,0,0,0,54,0,0,0,40,4,0,0,86,0,0,0,176,1,0,0,60,0,0,0,10,1,0,0,172,0,0,0,84,0,0,0,52,0,0,0,98,1,0,0,44,0,0,0,108,2,0,0,194,1,0,0,86,2,0,0,190,0,0,0,12,1,0,0,8,2,0,0,144,1,0,0,178,1,0,0,12,1,0,0,190,4,0,0,42,0,0,0,68,0,0,0,66,0,0,0,186,8,0,0,140,1,0,0,172,5,0,0,152,0,0,0,48,0,0,0,172,7,0,0,16,5,0,0,248,4,0,0,88,2,0,0,46,1,0,0,38,6,0,0,164,8,0,0,74,4,0,0,54,0,0,0,76,2,0,0,4,3,0,0,60,2,0,0,118,1,0,0,190,1,0,0,50,0,0,0,30,1,0,0,182,10,0,0,192,2,0,0,72,3,0,0,228,0,0,0,76,0,0,0,244,0,0,0,148,3,0,0,42,0,0,0,224,1,0,0,234,9,0,0,68,3,0,0,168,2,0,0,70,2,0,0,8,4,0,0,114,0,0,0,228,2,0,0,76,1,0,0,246,1,0,0,42,0,0,0,106,7,0,0,150,3,0,0,192,1,0,0,236,3,0,0,238,0,0,0,110,0,0,0,170,3,0,0,152,1,0,0,88,0,0,0,124,0,0,0,216,9,0,0,130,0,0,0,48,3,0,0,136,0,0,0,192,0,0,0,132,1,0,0,128,0,0,0,224,1,0,0,2,2,0,0,6,1,0,0,228,2,0,0,112,0,0,0,190,6,0,0,18,4,0,0,118,0,0,0,84,0,0,0,90,5,0,0,246,2,0,0,124,4,0,0,80,1,0,0,34,3,0,0,188,1,0,0,100,5,0,0,188,0,0,0,114,1,0,0,54,0,0,0,68,0,0,0,186,1,0,0,100,0,0,0,156,1,0,0,0,0,0,0,10,215,163,60,0,0,0,0,99,111,110,118,101,120,83,119,101,101,112,84,101,115,116,0,67,67,68,32,109,111,116,105,111,110,32,99,108,97,109,112,105,110,103,0,0,0,0,0,82,111,111,116,0,0,0,0,46,46,47,46,46,47,115,114,99,47,66,117,108,108,101,116,67,111,108,108,105,115,105,111,110,47,78,97,114,114,111,119,80,104,97,115,101,67,111,108,108,105,115,105,111,110,47,98,116,80,111,108,121,104,101,100,114,97,108,67,111,110,116,97,99,116,67,108,105,112,112,105,110,103,46,99,112,112,0,0,99,111,110,118,101,120,83,119,101,101,112,67,111,109,112,111,117,110,100,0,0,0,0,0,85,110,105,102,111,114,109,83,99,97,108,105,110,103,83,104,97,112,101,0,0,0,0,0,84,82,73,65,78,71,76,69,77,69,83,72,0,0,0,0,105,110,116,101,103,114,97,116,101,84,114,97,110,115,102,111,114,109,115,0,0,0,0,0,98,116,73,110,116,73,110,100,101,120,68,97,116,97,0,0,98,116,83,116,97,116,105,99,80,108,97,110,101,83,104,97,112,101,68,97,116,97,0,0,100,105,115,112,97,116,99,104,65,108,108,67,111,108,108,105,115,105,111,110,80,97,105,114,115,0,0,0,0,0,0,0,105,115,108,97,110,100,85,110,105,111,110,70,105,110,100,65,110,100,81,117,105,99,107,83,111,114,116,0,0,0,0,0,98,116,83,99,97,108,101,100,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,68,97,116,97,0,0,0,99,97,108,99,117,108,97,116,101,83,105,109,117,108,97,116,105,111,110,73,115,108,97,110,100,115,0,0,0,0,0,0,98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110,116,101,114,102,97,99,101,68,97,116,97,0,0,0,0,0,98,116,79,112,116,105,109,105,122,101,100,66,118,104,78,111,100,101,68,97,116,97,0,0,99,97,108,99,117,108,97,116,101,79,118,101,114,108,97,112,112,105,110,103,80,97,105,114,115,0,0,0,0,0,0,0,98,116,80,111,115,105,116,105,111,110,65,110,100,82,97,100,105,117,115,0,0,0,0,0,115,111,108,118,101,67,111,110,115,116,114,97,105,110,116,115,0,0,0,0,0,0,0,0,72,69,73,71,72,84,70,73,69,76,68,0,0,0,0,0,69,109,112,116,121,0,0,0,98,116,77,101,115,104,80,97,114,116,68,97,116,97,0,0,112,101,114,102,111,114,109,68,105,115,99,114,101,116,101,67,111,108,108,105,115,105,111,110,68,101,116,101,99,116,105,111,110,0,0,0,0,0,0,0,67,121,108,105,110,100,101,114,90,0,0,0,0,0,0,0,117,112,100,97,116,101,65,99,116,105,118,97,116,105,111,110,83,116,97,116,101,0,0,0,98,116,86,101,99,116,111,114,51,68,111,117,98,108,101,68,97,116,97,0,0,0,0,0,98,116,67,111,109,112,111,117,110,100,83,104,97,112,101,67,104,105,108,100,68,97,116,97,0,0,0,0,0,0,0,0,67,121,108,105,110,100,101,114,89,0,0,0,0,0,0,0,117,112,100,97,116,101,65,97,98,98,115,0,0,0,0,0,67,97,112,115,117,108,101,83,104,97,112,101,0,0,0,0,79,118,101,114,102,108,111,119,32,105,110,32,65,65,66,66,44,32,111,98,106,101,99,116,32,114,101,109,111,118,101,100,32,102,114,111,109,32,115,105,109,117,108,97,116,105,111,110,0,0,0,0,0,0,0,0,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,68,97,116,97,0,0,0,0,117,112,100,97,116,101,65,99,116,105,111,110,115,0,0,0,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,70,108,111,97,116,68,97,116,97,0,0,0,0,0,0,98,116,86,101,99,116,111,114,51,70,108,111,97,116,68,97,116,97,0,0,0,0,0,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,70,108,111,97,116,68,97,116,97,0,67,97,112,115,117,108,101,88,0,0,0,0,0,0,0,0,98,116,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,68,97,116,97,0,98,116,67,111,110,118,101,120,73,110,116,101,114,110,97,108,83,104,97,112,101,68,97,116,97,0,0,0,0,0,0,0,84,104,97,110,107,115,46,10,0,0,0,0,0,0,0,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,0,98,116,84,121,112,101,100,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,0,0,105,110,116,101,114,110,97,108,83,105,110,103,108,101,83,116,101,112,83,105,109,117,108,97,116,105,111,110,0,0,0,0,100,49,62,61,48,46,48,102,0,0,0,0,0,0,0,0,98,116,83,108,105,100,101,114,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,0,115,111,108,118,101,71,114,111,117,112,67,97,99,104,101,70,114,105,101,110,100,108,121,83,101,116,117,112,0,0,0,0,98,116,67,104,97,114,73,110,100,101,120,84,114,105,112,108,101,116,68,97,116,97,0,0,100,101,98,117,103,68,114,97,119,87,111,114,108,100,0,0,98,116,66,118,104,83,117,98,116,114,101,101,73,110,102,111,68,97,116,97,0,0,0,0,77,117,108,116,105,83,112,104,101,114,101,0,0,0,0,0,98,116,67,121,108,105,110,100,101,114,83,104,97,112,101,68,97,116,97,0,0,0,0,0,67,111,110,118,101,120,0,0,67,111,109,112,111,117,110,100,0,0,0,0,0,0,0,0,80,108,101,97,115,101,32,105,110,99,108,117,100,101,32,97,98,111,118,101,32,105,110,102,111,114,109,97,116,105,111,110,44,32,121,111,117,114,32,80,108,97,116,102,111,114,109,44,32,118,101,114,115,105,111,110,32,111,102,32,79,83,46,10,0,0,0,0,0,0,0,0,116,111,105,32,61,32,37,102,10,0,0,0,0,0,0,0,98,116,82,105,103,105,100,66,111,100,121,70,108,111,97,116,68,97,116,97,0,0,0,0,98,116,67,97,112,115,117,108,101,83,104,97,112,101,68,97,116,97,0,0,0,0,0,0,115,111,108,118,101,71,114,111,117,112,0,0,0,0,0,0,115,116,101,112,83,105,109,117,108,97,116,105,111,110,0,0,98,116,80,111,105,110,116,50,80,111,105,110,116,67,111,110,115,116,114,97,105,110,116,70,108,111,97,116,68,97,116,97,0,0,0,0,0,0,0,0,100,48,62,61,48,46,48,102,0,0,0,0,0,0,0,0,98,116,66,85,95,83,105,109,112,108,101,120,49,116,111,52,0,0,0,0,0,0,0,0,98,116,83,104,111,114,116,73,110,116,73,110,100,101,120,84,114,105,112,108,101,116,68,97,116,97,0,0,0,0,0,0,83,84,65,84,73,67,80,76,65,78,69,0,0,0,0,0,83,80,72,69,82,69,0,0,112,114,111,99,101,115,115,73,115,108,97,110,100,115,0,0,83,67,65,76,69,68,66,86,72,84,82,73,65,78,71,76,69,77,69,83,72,0,0,0,84,114,105,97,110,103,108,101,0,0,0,0,0,0,0,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,78,111,100,101,68,97,116,97,0,0,98,116,72,105,110,103,101,67,111,110,115,116,114,97,105,110,116,70,108,111,97,116,68,97,116,97,0,0,0,0,0,0,98,116,77,117,108,116,105,83,112,104,101,114,101,83,104,97,112,101,68,97,116,97,0,0,67,121,108,105,110,100,101,114,88,0,0,0,0,0,0,0,67,111,110,118,101,120,84,114,105,109,101,115,104,0,0,0,98,116,67,111,110,118,101,120,72,117,108,108,83,104,97,112,101,68,97,116,97,0,0,0,98,116,71,101,110,101,114,105,99,54,68,111,102,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,0,0,0,0,67,111,110,101,0,0,0,0,98,116,67,111,109,112,111,117,110,100,83,104,97,112,101,68,97,116,97,0,0,0,0,0,73,102,32,121,111,117,32,99,97,110,32,114,101,112,114,111,100,117,99,101,32,116,104,105,115,44,32,112,108,101,97,115,101,32,101,109,97,105,108,32,98,117,103,115,64,99,111,110,116,105,110,117,111,117,115,112,104,121,115,105,99,115,46,99,111,109,10,0,0,0,0,0,67,97,112,115,117,108,101,90,0,0,0,0,0,0,0,0,66,86,72,84,82,73,65,78,71,76,69,77,69,83,72,0,66,111,120,0,0,0,0,0,115,121,110,99,104,114,111,110,105,122,101,77,111,116,105,111,110,83,116,97,116,101,115,0,115,111,108,118,101,71,114,111,117,112,67,97,99,104,101,70,114,105,101,110,100,108,121,73,116,101,114,97,116,105,111,110,115,0,0,0,0,0,0,0,112,114,101,100,105,99,116,85,110,99,111,110,115,116,114,97,105,110,116,77,111,116,105,111,110,0,0,0,0,0,0,0,115,101,97,114,99,104,32,115,112,101,99,117,108,97,116,105,118,101,32,99,111,110,116,97,99,116,115,0,0,0,0,0,97,100,100,83,112,101,99,117,108,97,116,105,118,101,67,111,110,116,97,99,116,115,0,0,98,116,67,111,110,101,84,119,105,115,116,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,0,0,0,0,0,0,98,111,111,108,32,84,101,115,116,83,101,112,65,120,105,115,40,99,111,110,115,116,32,98,116,67,111,110,118,101,120,80,111,108,121,104,101,100,114,111,110,32,38,44,32,99,111,110,115,116,32,98,116,67,111,110,118,101,120,80,111,108,121,104,101,100,114,111,110,32,38,44,32,99,111,110,115,116,32,98,116,84,114,97,110,115,102,111,114,109,32,38,44,32,99,111,110,115,116,32,98,116,84,114,97,110,115,102,111,114,109,32,38,44,32,99,111,110,115,116,32,98,116,86,101,99,116,111,114,51,32,38,44,32,102,108,111,97,116,32,38,41,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,208,132,0,0,120,0,0,0,2,4,0,0,72,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,132,0,0,196,1,0,0,228,3,0,0,184,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,132,0,0,112,0,0,0,186,3,0,0,30,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,0,0,144,3,0,0,210,0,0,0,118,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,133,0,0,194,1,0,0,196,2,0,0,176,0,0,0,54,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,133,0,0,192,3,0,0,34,3,0,0,62,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,133,0,0,86,2,0,0,228,1,0,0,204,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,133,0,0,30,4,0,0,14,4,0,0,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,133,0,0,120,1,0,0,212,3,0,0,112,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,133,0,0,132,1,0,0,94,2,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,133,0,0,4,4,0,0,220,0,0,0,120,1,0,0,102,1,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,133,0,0,180,0,0,0,34,1,0,0,78,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,133,0,0,182,2,0,0,228,0,0,0,122,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,133,0,0,18,2,0,0,54,0,0,0,166,1,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,133,0,0,88,3,0,0,58,0,0,0,166,1,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,133,0,0,182,0,0,0,200,3,0,0,230,1,0,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,133,0,0,88,1,0,0,138,0,0,0,238,0,0,0,26,3,0,0,60,0,0,0,88,1,0,0,154,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,133,0,0,116,2,0,0,140,2,0,0,122,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,133,0,0,134,2,0,0,156,0,0,0,122,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,0,0,236,2,0,0,160,0,0,0,86,1,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,134,0,0,104,0,0,0,66,0,0,0,220,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,134,0,0,206,2,0,0,126,1,0,0,186,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,134,0,0,164,2,0,0,148,2,0,0,66,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,134,0,0,18,4,0,0,186,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,134,0,0,32,2,0,0,6,1,0,0,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,134,0,0,172,0,0,0,166,1,0,0,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,134,0,0,76,2,0,0,254,2,0,0,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,134,0,0,0,4,0,0,70,1,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,134,0,0,176,2,0,0,102,3,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,134,0,0,108,1,0,0,4,3,0,0,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,134,0,0,224,3,0,0,42,3,0,0,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,134,0,0,248,0,0,0,174,0,0,0,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,134,0,0,22,2,0,0,206,0,0,0,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,135,0,0,60,0,0,0,32,3,0,0,180,1,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,135,0,0,4,2,0,0,202,2,0,0,148,1,0,0,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,135,0,0,190,2,0,0,70,3,0,0,148,1,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,135,0,0,172,1,0,0,0,4,0,0,182,1,0,0,96,0,0,0,94,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,135,0,0,0,2,0,0,144,0,0,0,82,0,0,0,232,1,0,0,174,0,0,0,70,0,0,0,112,0,0,0,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,135,0,0,238,1,0,0,190,0,0,0,204,0,0,0,46,0,0,0,250,1,0,0,158,2,0,0,52,0,0,0,42,0,0,0,44,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,135,0,0,136,0,0,0,2,1,0,0,90,0,0,0,66,0,0,0,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,135,0,0,232,2,0,0,248,3,0,0,52,0,0,0,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,135,0,0,64,0,0,0,116,3,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,135,0,0,106,3,0,0,238,3,0,0,118,0,0,0,50,0,0,0,146,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,0,0,188,3,0,0,72,0,0,0,56,0,0,0,62,0,0,0,132,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,136,0,0,112,2,0,0,44,1,0,0,174,10,0,0,144,3,0,0,86,9,0,0,4,1,0,0,234,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,136,0,0,28,4,0,0,146,3,0,0,128,0,0,0,44,0,0,0,192,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,136,0,0,208,0,0,0,118,1,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,136,0,0,74,3,0,0,126,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,136,0,0,196,0,0,0,166,3,0,0,48,2,0,0,68,0,0,0,28,3,0,0,148,3,0,0,56,0,0,0,62,0,0,0,98,0,0,0,6,10,0,0,242,0,0,0,132,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,136,0,0,154,2,0,0,84,1,0,0,240,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,136,0,0,52,2,0,0,68,3,0,0,20,2,0,0,48,1,0,0,202,2,0,0,58,0,0,0,70,6,0,0,250,7,0,0,106,0,0,0,112,8,0,0,92,1,0,0,72,2,0,0,56,8,0,0,210,0,0,0,154,1,0,0,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,136,0,0,124,2,0,0,212,0,0,0,124,0,0,0,94,0,0,0,84,1,0,0,162,5,0,0,32,6,0,0,98,7,0,0,246,0,0,0,86,7,0,0,118,1,0,0,248,2,0,0,208,0,0,0,234,0,0,0,96,7,0,0,112,5,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,136,0,0,92,2,0,0,242,3,0,0,130,0,0,0,60,0,0,0,108,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,136,0,0,96,2,0,0,212,2,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,136,0,0,16,4,0,0,58,2,0,0,106,0,0,0,48,0,0,0,58,0,0,0,92,4,0,0,28,6,0,0,26,6,0,0,204,3,0,0,194,4,0,0,202,8,0,0,98,0,0,0,24,1,0,0,142,9,0,0,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,136,0,0,14,3,0,0,170,3,0,0,80,0,0,0,56,0,0,0,154,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,137,0,0])
.concat([184,2,0,0,234,3,0,0,148,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,137,0,0,226,0,0,0,2,2,0,0,114,1,0,0,190,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,137,0,0,198,3,0,0,26,1,0,0,152,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,36,6,0,0,110,9,0,0,82,0,0,0,210,6,0,0,92,1,0,0,72,2,0,0,110,4,0,0,90,0,0,0,154,1,0,0,78,2,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,137,0,0,216,1,0,0,142,3,0,0,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,137,0,0,172,1,0,0,244,1,0,0,202,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,52,4,0,0,140,9,0,0,94,0,0,0,30,8,0,0,172,0,0,0,58,2,0,0,86,6,0,0,118,0,0,0,154,1,0,0,46,0,0,0,110,1,0,0,58,0,0,0,120,1,0,0,220,6,0,0,64,1,0,0,90,8,0,0,4,4,0,0,228,1,0,0,228,1,0,0,124,0,0,0,214,5,0,0,70,1,0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,137,0,0,142,0,0,0,210,3,0,0,168,1,0,0,44,5,0,0,186,3,0,0,246,1,0,0,42,2,0,0,168,1,0,0,180,1,0,0,236,0,0,0,112,3,0,0,242,3,0,0,52,0,0,0,190,1,0,0,54,3,0,0,90,3,0,0,140,3,0,0,4,4,0,0,130,6,0,0,134,0,0,0,198,0,0,0,66,2,0,0,190,1,0,0,228,5,0,0,214,2,0,0,162,9,0,0,212,1,0,0,222,1,0,0,16,6,0,0,90,1,0,0,164,4,0,0,88,0,0,0,58,2,0,0,116,2,0,0,48,2,0,0,90,0,0,0,228,1,0,0,94,0,0,0,12,2,0,0,114,1,0,0,46,2,0,0,62,2,0,0,238,5,0,0,62,1,0,0,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,137,0,0,250,2,0,0,84,2,0,0,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,137,0,0,114,3,0,0,186,2,0,0,36,1,0,0,186,0,0,0,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,137,0,0,46,1,0,0,12,2,0,0,106,1,0,0,220,3,0,0,58,9,0,0,244,0,0,0,232,3,0,0,14,1,0,0,76,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,137,0,0,224,2,0,0,252,3,0,0,136,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,137,0,0,124,0,0,0,80,3,0,0,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,137,0,0,54,3,0,0,202,3,0,0,164,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,224,1,0,0,76,7,0,0,94,0,0,0,42,0,0,0,172,0,0,0,58,2,0,0,86,6,0,0,118,0,0,0,154,1,0,0,112,0,0,0,44,1,0,0,188,1,0,0,120,1,0,0,220,6,0,0,64,1,0,0,90,8,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,137,0,0,122,2,0,0,144,2,0,0,44,3,0,0,68,0,0,0,254,3,0,0,98,6,0,0,56,0,0,0,66,0,0,0,66,0,0,0,240,3,0,0,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,0,0,184,3,0,0,8,2,0,0,48,2,0,0,68,0,0,0,28,3,0,0,148,4,0,0,56,0,0,0,62,0,0,0,98,0,0,0,102,10,0,0,252,0,0,0,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,138,0,0,246,3,0,0,118,2,0,0,168,1,0,0,44,5,0,0,186,3,0,0,246,1,0,0,42,2,0,0,168,1,0,0,180,1,0,0,236,0,0,0,112,3,0,0,242,3,0,0,52,0,0,0,190,1,0,0,54,3,0,0,90,3,0,0,140,3,0,0,4,4,0,0,130,6,0,0,134,0,0,0,198,0,0,0,66,2,0,0,190,1,0,0,228,5,0,0,214,2,0,0,162,9,0,0,212,1,0,0,222,1,0,0,138,4,0,0,90,1,0,0,164,4,0,0,88,0,0,0,58,2,0,0,116,2,0,0,48,2,0,0,90,0,0,0,228,1,0,0,94,0,0,0,12,2,0,0,10,1,0,0,46,2,0,0,62,2,0,0,238,5,0,0,62,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,138,0,0,240,3,0,0,78,2,0,0,100,0,0,0,52,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,138,0,0,42,2,0,0,196,3,0,0,168,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,138,0,0,20,3,0,0,184,0,0,0,36,1,0,0,186,0,0,0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,138,0,0,102,0,0,0,96,3,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,138,0,0,214,3,0,0,98,2,0,0,238,0,0,0,158,5,0,0,60,0,0,0,88,1,0,0,154,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,138,0,0,162,3,0,0,72,1,0,0,182,0,0,0,48,1,0,0,202,2,0,0,58,0,0,0,72,1,0,0,166,4,0,0,120,0,0,0,98,10,0,0,92,1,0,0,72,2,0,0,84,3,0,0,148,0,0,0,154,1,0,0,210,1,0,0,66,0,0,0,200,0,0,0,58,1,0,0,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,138,0,0,180,3,0,0,148,0,0,0,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,138,0,0,36,3,0,0,204,1,0,0,48,2,0,0,68,0,0,0,28,3,0,0,148,4,0,0,56,0,0,0,62,0,0,0,98,0,0,0,102,10,0,0,252,0,0,0,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,138,0,0,24,4,0,0,92,3,0,0,198,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,22,5,0,0,106,6,0,0,102,0,0,0,132,4,0,0,110,0,0,0,214,2,0,0,110,4,0,0,90,0,0,0,154,1,0,0,126,1,0,0,56,1,0,0,122,1,0,0,16,2,0,0,66,1,0,0,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,138,0,0,130,3,0,0,190,3,0,0,22,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,138,0,0,182,3,0,0,110,0,0,0,80,2,0,0,44,5,0,0,186,3,0,0,222,2,0,0,42,2,0,0,168,1,0,0,194,1,0,0,66,2,0,0,112,3,0,0,160,3,0,0,48,0,0,0,232,0,0,0,90,6,0,0,28,5,0,0,30,6,0,0,2,6,0,0,192,2,0,0,218,3,0,0,212,5,0,0,14,2,0,0,206,2,0,0,18,4,0,0,20,4,0,0,94,2,0,0,112,1,0,0,120,0,0,0,226,1,0,0,182,1,0,0,248,4,0,0,130,5,0,0,86,6,0,0,178,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,139,0,0,158,0,0,0,110,3,0,0,38,3,0,0,68,0,0,0,88,6,0,0,66,4,0,0,66,0,0,0,60,0,0,0,62,0,0,0,12,7,0,0,74,0,0,0,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,139,0,0,222,3,0,0,30,3,0,0,48,0,0,0,220,0,0,0,254,0,0,0,220,4,0,0,62,0,0,0,250,0,0,0,34,2,0,0,192,10,0,0,184,1,0,0,144,9,0,0,164,3,0,0,210,7,0,0,40,1,0,0,36,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,139,0,0,16,3,0,0,252,1,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,139,0,0,172,2,0,0,6,2,0,0,210,5,0,0,96,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,139,0,0,146,0,0,0,100,3,0,0,42,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,139,0,0,242,0,0,0,250,1,0,0,46,0,0,0,74,0,0,0,88,0,0,0,86,2,0,0,64,0,0,0,234,0,0,0,64,1,0,0,120,7,0,0,180,8,0,0,22,1,0,0,208,4,0,0,230,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,139,0,0,26,2,0,0,236,1,0,0,54,0,0,0,52,1,0,0,72,0,0,0,230,0,0,0,54,0,0,0,192,1,0,0,150,3,0,0,130,2,0,0,248,6,0,0,172,1,0,0,112,3,0,0,24,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,139,0,0,98,3,0,0,180,1,0,0,238,0,0,0,254,4,0,0,60,0,0,0,88,1,0,0,154,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,139,0,0,70,2,0,0,22,1,0,0,182,0,0,0,48,1,0,0,202,2,0,0,58,0,0,0,88,5,0,0,166,4,0,0,120,0,0,0,0,6,0,0,92,1,0,0,72,2,0,0,110,4,0,0,90,0,0,0,154,1,0,0,190,1,0,0,66,0,0,0,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,139,0,0,100,1,0,0,142,2,0,0,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,139,0,0,176,0,0,0,140,3,0,0,78,0,0,0,74,0,0,0,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,139,0,0,156,3,0,0,100,2,0,0,238,0,0,0,188,0,0,0,60,0,0,0,88,1,0,0,154,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,139,0,0,218,1,0,0,102,1,0,0,156,0,0,0,48,1,0,0,202,2,0,0,58,0,0,0,44,3,0,0,44,6,0,0,112,0,0,0,114,9,0,0,92,1,0,0,72,2,0,0,248,7,0,0,224,0,0,0,154,1,0,0,78,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,139,0,0,132,2,0,0,178,1,0,0,152,2,0,0,68,0,0,0,146,1,0,0,238,3,0,0,56,0,0,0,42,0,0,0,58,0,0,0,250,2,0,0,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,139,0,0,136,2,0,0,12,4,0,0,56,0,0,0,218,0,0,0,64,0,0,0,252,1,0,0,90,0,0,0,94,1,0,0,174,4,0,0,88,7,0,0,218,6,0,0,20,1,0,0,44,0,0,0,22,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,140,0,0,66,1,0,0,254,1,0,0,126,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,158,6,0,0,76,7,0,0,46,0,0,0,100,4,0,0,172,0,0,0,58,2,0,0,88,9,0,0,226,0,0,0,154,1,0,0,112,0,0,0,184,0,0,0,44,2,0,0,120,1,0,0,220,6,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,140,0,0,158,3,0,0,50,1,0,0,48,2,0,0,68,0,0,0,28,3,0,0,148,3,0,0,56,0,0,0,62,0,0,0,98,0,0,0,6,10,0,0,242,0,0,0,132,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,140,0,0,44,2,0,0,178,3,0,0,182,0,0,0,172,1,0,0,60,0,0,0,88,1,0,0,154,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,140,0,0,230,3,0,0,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,140,0,0,130,0,0,0,78,3,0,0,152,2,0,0,68,0,0,0,42,0,0,0,42,0,0,0,56,0,0,0,42,0,0,0,42,0,0,0,34,5,0,0,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,140,0,0,48,0,0,0,30,1,0,0,40,3,0,0,68,0,0,0,102,5,0,0,230,2,0,0,56,0,0,0,64,0,0,0,50,0,0,0,184,7,0,0,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,140,0,0,216,2,0,0,232,3,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,140,0,0,58,3,0,0,154,3,0,0,202,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,116,6,0,0,76,7,0,0,94,0,0,0,152,7,0,0,172,0,0,0,58,2,0,0,230,9,0,0,152,0,0,0,154,1,0,0,248,0,0,0,254,0,0,0,142,1,0,0,120,1,0,0,220,6,0,0,64,1,0,0,90,8,0,0,190,5,0,0,170,0,0,0,100,0,0,0,40,1,0,0,132,9,0,0,40,2,0,0,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,140,0,0,46,1,0,0,110,2,0,0,0,3,0,0,220,3,0,0,58,9,0,0,244,0,0,0,232,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,140,0,0,240,0,0,0,146,1,0,0,54,0,0,0,52,1,0,0,72,0,0,0,230,0,0,0,54,0,0,0,192,1,0,0,150,3,0,0,130,2,0,0,248,6,0,0,172,1,0,0,112,3,0,0,24,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,140,0,0,6,3,0,0,142,1,0,0,178,1,0,0,218,0,0,0,252,255,255,255,184,140,0,0,118,0,0,0,72,3,0,0,54,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,140,0,0,84,3,0,0,36,2,0,0,42,0,0,0,46,4,0,0,78,1,0,0,86,1,0,0,128,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,140,0,0,14,1,0,0,148,3,0,0,8,1,0,0,142,1,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,140,0,0,10,1,0,0,26,4,0,0,36,1,0,0,186,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,141,0,0,106,0,0,0,114,1,0,0,138,0,0,0,46,0,0,0,230,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,141,0,0,78,0,0,0,28,3,0,0,58,0,0,0,46,1,0,0,124,0,0,0,130,1,0,0,78,0,0,0,68,0,0,0,246,0,0,0,252,9,0,0,20,2,0,0,138,1,0,0,146,5,0,0,52,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,141,0,0,80,1,0,0,78,1,0,0,12,2,0,0,48,1,0,0,202,2,0,0,58,0,0,0,106,2,0,0,76,7,0,0,72,0,0,0,216,10,0,0,32,2,0,0,58,2,0,0,224,10,0,0,246,0,0,0,154,1,0,0,80,0,0,0,42,0,0,0,248,1,0,0,120,1,0,0,220,6,0,0,64,1,0,0,68,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,141,0,0,76,0,0,0,194,2,0,0,12,2,0,0,48,1,0,0,202,2,0,0,58,0,0,0,106,2,0,0,76,7,0,0,72,0,0,0,184,9,0,0,32,2,0,0,58,2,0,0,224,10,0,0,246,0,0,0,154,1,0,0,80,0,0,0,42,1,0,0,160,0,0,0,120,1,0,0,220,6,0,0,64,1,0,0,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,141,0,0,114,0,0,0,250,0,0,0,168,1,0,0,44,5,0,0,186,3,0,0,84,0,0,0,42,2,0,0,168,1,0,0,194,1,0,0,46,5,0,0,112,3,0,0,160,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,141,0,0,150,3,0,0,244,2,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,141,0,0,220,3,0,0,40,1,0,0,70,0,0,0,48,1,0,0,202,2,0,0,58,0,0,0,90,5,0,0,76,7,0,0,94,0,0,0,62,10,0,0,172,0,0,0,58,2,0,0,86,6,0,0,118,0,0,0,154,1,0,0,112,0,0,0,44,1,0,0,188,1,0,0,120,1,0,0,220,6,0,0,64,1,0,0,90,8,0,0,20,10,0,0,194,4,0,0,164,0,0,0,96,0,0,0,164,9,0,0,0,2,0,0,56,0,0,0,208,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,141,0,0,116,1,0,0,116,0,0,0,168,0,0,0,48,1,0,0,202,2,0,0,58,0,0,0,224,1,0,0,76,7,0,0,54,0,0,0,108,2,0,0,172,0,0,0,58,2,0,0,86,6,0,0,118,0,0,0,154,1,0,0,112,0,0,0,96,1,0,0,18,1,0,0,120,1,0,0,248,3,0,0,108,1,0,0,90,8,0,0,52,4,0,0,106,8,0,0,98,0,0,0,194,1,0,0,52,6,0,0,162,0,0,0,48,0,0,0,36,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,141,0,0,48,3,0,0,120,3,0,0,156,0,0,0,46,0,0,0,220,0,0,0,38,7,0,0,68,5,0,0,200,0,0,0,170,0,0,0,244,0,0,0,134,1,0,0,26,6,0,0,228,0,0,0,116,0,0,0,146,6,0,0,90,0,0,0,238,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,141,0,0,82,3,0,0,114,2,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,141,0,0,204,0,0,0,104,2,0,0,12,2,0,0,48,1,0,0,202,2,0,0,58,0,0,0,106,2,0,0,76,7,0,0,72,0,0,0,158,5,0,0,32,2,0,0,58,2,0,0,224,10,0,0,246,0,0,0,154,1,0,0,80,0,0,0,170,1,0,0,88,1,0,0,120,1,0,0,220,6,0,0,64,1,0,0,250,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,141,0,0,202,1,0,0,122,0,0,0,26,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,182,1,0,0,142,1,0,0,100,0,0,0,10,9,0,0,184,1,0,0,170,2,0,0,120,4,0,0,240,0,0,0,154,1,0,0,124,0,0,0,20,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,141,0,0,66,2,0,0,240,2,0,0,200,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,26,4,0,0,76,7,0,0,50,0,0,0,28,10,0,0,196,1,0,0,58,2,0,0,174,3,0,0,186,0,0,0,154,1,0,0,112,0,0,0,26,1,0,0,244,0,0,0,120,1,0,0,220,6,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,141,0,0,226,1,0,0,42,1,0,0,200,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,26,4,0,0,76,7,0,0,50,0,0,0,72,7,0,0,196,1,0,0,58,2,0,0,174,3,0,0,186,0,0,0,154,1,0,0,112,0,0,0,26,1,0,0,244,0,0,0,120,1,0,0,220,6,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,141,0,0,72,2,0,0,62,3,0,0,106,0,0,0,48,0,0,0,58,0,0,0,92,4,0,0,28,6,0,0,26,6,0,0,134,6,0,0,102,3,0,0,202,8,0,0,98,0,0,0,24,1,0,0,142,9,0,0,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,142,0,0,68,0,0,0,200,1,0,0,72,0,0,0,60,0,0,0,202,0,0,0,170,3,0,0,252,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,142,0,0,38,2,0,0,126,3,0,0,72,0,0,0,60,0,0,0,202,0,0,0,170,3,0,0,252,5,0,0,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,142,0,0,180,2,0,0,168,3,0,0,200,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,26,4,0,0,76,7,0,0,50,0,0,0,136,8,0,0,196,1,0,0,58,2,0,0,174,3,0,0,186,0,0,0,154,1,0,0,112,0,0,0,26,1,0,0,244,0,0,0,120,1,0,0,220,6,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,142,0,0,62,0,0,0,248,2,0,0,66,0,0,0,48,1,0,0,202,2,0,0,58,0,0,0,224,1,0,0,76,7,0,0,136,0,0,0,250,6,0,0,108,0,0,0,28,2,0,0,86,6,0,0,118,0,0,0,154,1,0,0,16,1,0,0,68,1,0,0,110,1,0,0,120,1,0,0,220,6,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,142,0,0,46,1,0,0,56,3,0,0,170,1,0,0,220,3,0,0,58,9,0,0,244,0,0,0,232,3,0,0,2,1,0,0,52,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,142,0,0,28,2,0,0,178,0,0,0,64,2,0,0,48,1,0,0,202,2,0,0,58,0,0,0,14,4,0,0,114,8,0,0,90,0,0,0,150,6,0,0,92,1,0,0,72,2,0,0,110,4,0,0,90,0,0,0,154,1,0,0,10,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,142,0,0,160,2,0,0,134,3,0,0,164,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,36,3,0,0,76,7,0,0,76,0,0,0,234,4,0,0,172,0,0,0,58,2,0,0,86,6,0,0,118,0,0,0,154,1,0,0,58,1,0,0,60,1,0,0,84,1,0,0,120,1,0,0,220,6,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,142,0,0,122,3,0,0,220,2,0,0,164,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,36,3,0,0,76,7,0,0,76,0,0,0,234,4,0,0,172,0,0,0,58,2,0,0,86,6,0,0,118,0,0,0,154,1,0,0,58,1,0,0,60,1,0,0,84,1,0,0,120,1,0,0,220,6,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,142,0,0,194,3,0,0,46,2,0,0,46,0,0,0,74,0,0,0,88,0,0,0,86,2,0,0,64,0,0,0,234,0,0,0,64,1,0,0,120,7,0,0,180,8,0,0,22,1,0,0,208,4,0,0,230,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,142,0,0,184,0,0,0,198,0,0,0,208,1,0,0,220,3,0,0,196,8,0,0,208,0,0,0,68,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,142,0,0,30,2,0,0,148,1,0,0,164,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,36,3,0,0,76,7,0,0,76,0,0,0,234,4,0,0,172,0,0,0,58,2,0,0,86,6,0,0,118,0,0,0,154,1,0,0,58,1,0,0,60,1,0,0,84,1,0,0,120,1,0,0,220,6,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,142,0,0,104,1,0,0,166,2,0,0,138,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,220,5,0,0,76,7,0,0,56,0,0,0,6,8,0,0,26,1,0,0,58,2,0,0,86,6,0,0,118,0,0,0,154,1,0,0,214,0,0,0,60,0,0,0,134,1,0,0,120,1,0,0,214,6,0,0,146,1,0,0,90,8,0,0,204,8,0,0,136,6,0,0,238,1,0,0,38,1,0,0,78,4,0,0,250,0,0,0,72,0,0,0,188,1,0,0,0,0,0,0,0,0,0,0,90,78,75,50,53,98,116,67,111,110,118,101,120,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,51,49,99,97,108,99,117,108,97,116,101,80,114,105,110,99,105,112,97,108,65,120,105,115,84,114,97,110,115,102,111,114,109,69,82,49,49,98,116,84,114,97,110,115,102,111,114,109,82,57,98,116,86,101,99,116,111,114,51,82,102,69,49,53,73,110,101,114,116,105,97,67,97,108,108,98,97,99,107,95,48,0,90,78,75,50,53,98,116,67,111,110,118,101,120,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,51,49,99,97,108,99,117,108,97,116,101,80,114,105,110,99,105,112,97,108,65,120,105,115,84,114,97,110,115,102,111,114,109,69,82,49,49,98,116,84,114,97,110,115,102,111,114,109,82,57,98,116,86,101,99,116,111,114,51,82,102,69,49,52,67,101,110,116,101,114,67,97,108,108,98,97,99,107,0,0,0,0,90,78,75,50,50,98,116,66,118,104,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,49,57,112,114,111,99,101,115,115,65,108,108,84,114,105,97,110,103,108,101,115,69,80,49,56,98,116,84,114,105,97,110,103,108,101,67,97,108,108,98,97,99,107,82,75,57,98,116,86,101,99,116,111,114,51,83,52,95,69,50,49,77,121,78,111,100,101,79,118,101,114,108,97,112,67,97,108,108,98,97,99,107,0,0,0,90,78,75,49,57,98,116,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,49,57,112,114,111,99,101,115,115,65,108,108,84,114,105,97,110,103,108,101,115,69,80,49,56,98,116,84,114,105,97,110,103,108,101,67,97,108,108,98,97,99,107,82,75,57,98,116,86,101,99,116,111,114,51,83,52,95,69,49,54,70,105,108,116,101,114,101,100,67,97,108,108,98,97,99,107,0,0,0,90,78,51,51,98,116,77,105,110,107,111,119,115,107,105,80,101,110,101,116,114,97,116,105,111,110,68,101,112,116,104,83,111,108,118,101,114,49,50,99,97,108,99,80,101,110,68,101,112,116,104,69,82,50,50,98,116,86,111,114,111,110,111,105,83,105,109,112,108,101,120,83,111,108,118,101,114,80,75,49,51,98,116,67,111,110,118,101,120,83,104,97,112,101,83,52,95,82,75,49,49,98,116,84,114,97,110,115,102,111,114,109,83,55,95,82,57,98,116,86,101,99,116,111,114,51,83,57,95,83,57,95,80,49,50,98,116,73,68,101,98,117,103,68,114,97,119,80,49,50,98,116,83,116,97,99,107,65,108,108,111,99,69,50,48,98,116,73,110,116,101,114,109,101,100,105,97,116,101,82,101,115,117,108,116,0,0,0,0,0,0,0,90,78,51,51,98,116,67,111,110,118,101,120,67,111,110,99,97,118,101,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,50,49,99,97,108,99,117,108,97,116,101,84,105,109,101,79,102,73,109,112,97,99,116,69,80,49,55,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,83,49,95,82,75,49,54,98,116,68,105,115,112,97,116,99,104,101,114,73,110,102,111,80,49,54,98,116,77,97,110,105,102,111,108,100,82,101,115,117,108,116,69,51,49,76,111,99,97,108,84,114,105,97,110,103,108,101,83,112,104,101,114,101,67,97,115,116,67,97,108,108,98,97,99,107,0,0,0,90,78,50,56,98,116,72,97,115,104,101,100,79,118,101,114,108,97,112,112,105,110,103,80,97,105,114,67,97,99,104,101,51,55,114,101,109,111,118,101,79,118,101,114,108,97,112,112,105,110,103,80,97,105,114,115,67,111,110,116,97,105,110,105,110,103,80,114,111,120,121,69,80,49,55,98,116,66,114,111,97,100,112,104,97,115,101,80,114,111,120,121,80,49,50,98,116,68,105,115,112,97,116,99,104,101,114,69,49,56,82,101,109,111,118,101,80,97,105,114,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,0,90,78,50,56,98,116,72,97,115,104,101,100,79,118,101,114,108,97,112,112,105,110,103,80,97,105,114,67,97,99,104,101,49,57,99,108,101,97,110,80,114,111,120,121,70,114,111,109,80,97,105,114,115,69,80,49,55,98,116,66,114,111,97,100,112,104,97,115,101,80,114,111,120,121,80,49,50,98,116,68,105,115,112,97,116,99,104,101,114,69,49,55,67,108,101,97,110,80,97,105,114,67,97,108,108,98,97,99,107,0,0,0,90,78,50,51,98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110,116,101,114,102,97,99,101,50,51,99,97,108,99,117,108,97,116,101,65,97,98,98,66,114,117,116,101,70,111,114,99,101,69,82,57,98,116,86,101,99,116,111,114,51,83,49,95,69,50,51,65,97,98,98,67,97,108,99,117,108,97,116,105,111,110,67,97,108,108,98,97,99,107,0,0,0,90,78,50,51,98,116,68,105,115,99,114,101,116,101,68,121,110,97,109,105,99,115,87,111,114,108,100,49,54,115,111,108,118,101,67,111,110,115,116,114,97,105,110,116,115,69,82,49,57,98,116,67,111,110,116,97,99,116,83,111,108,118,101,114,73,110,102,111,69,50,55,73,110,112,108,97,99,101,83,111,108,118,101,114,73,115,108,97,110,100,67,97,108,108,98,97,99,107,0,0,0,0,0,0,90,78,50,51,98,116,67,111,110,118,101,120,67,111,110,118,101,120,65,108,103,111,114,105,116,104,109,49,54,112,114,111,99,101,115,115,67,111,108,108,105,115,105,111,110,69,80,49,55,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,83,49,95,82,75,49,54,98,116,68,105,115,112,97,116,99,104,101,114,73,110,102,111,80,49,54,98,116,77,97,110,105,102,111,108,100,82,101,115,117,108,116,69,49,51,98,116,68,117,109,109,121,82,101,115,117,108,116,0,0,0,0,90,78,50,50,98,116,66,118,104,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,49,55,112,101,114,102,111,114,109,67,111,110,118,101,120,99,97,115,116,69,80,49,56,98,116,84,114,105,97,110,103,108,101,67,97,108,108,98,97,99,107,82,75,57,98,116,86,101,99,116,111,114,51,83,52,95,83,52,95,83,52,95,69,50,49,77,121,78,111,100,101,79,118,101,114,108,97,112,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,0,90,78,50,50,98,116,66,118,104,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,49,52,112,101,114,102,111,114,109,82,97,121,99,97,115,116,69,80,49,56,98,116,84,114,105,97,110,103,108,101,67,97,108,108,98,97,99,107,82,75,57,98,116,86,101,99,116,111,114,51,83,52,95,69,50,49,77,121,78,111,100,101,79,118,101,114,108,97,112,67,97,108,108,98,97,99,107,0,90,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,49,55,111,98,106,101,99,116,81,117,101,114,121,83,105,110,103,108,101,69,80,75,49,51,98,116,67,111,110,118,101,120,83,104,97,112,101,82,75,49,49,98,116,84,114,97,110,115,102,111,114,109,83,53,95,80,49,55,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,80,75,49,54,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,83,53,95,82,78,83,95,50,48,67,111,110,118,101,120,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,102,69,51,50,66,114,105,100,103,101,84,114,105,97,110,103,108,101,67,111,110,118,101,120,99,97,115,116,67,97,108,108,98,97,99,107,95,48,0,90,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,49,55,111,98,106,101,99,116,81,117,101,114,121,83,105,110,103,108,101,69,80,75,49,51,98,116,67,111,110,118,101,120,83,104,97,112,101,82,75,49,49,98,116,84,114,97,110,115,102,111,114,109,83,53,95,80,49,55,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,80,75,49,54,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,83,53,95,82,78,83,95,50,48,67,111,110,118,101,120,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,102,69,51,50,66,114,105,100,103,101,84,114,105,97,110,103,108,101,67,111,110,118,101,120,99,97,115,116,67,97,108,108,98,97,99,107,0,0,0,90,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,49,55,111,98,106,101,99,116,81,117,101,114,121,83,105,110,103,108,101,69,80,75,49,51,98,116,67,111,110,118,101,120,83,104,97,112,101,82,75,49,49,98,116,84,114,97,110,115,102,111,114,109,83,53,95,80,49,55,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,80,75,49,54,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,83,53,95,82,78,83,95,50,48,67,111,110,118,101,120,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,102,69,49,52,76,111,99,97,108,73,110,102,111,65,100,100,101,114,95,49,0,0,0,90,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,49,51,114,97,121,84,101,115,116,83,105,110,103,108,101,69,82,75,49,49,98,116,84,114,97,110,115,102,111,114,109,83,50,95,80,49,55,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,80,75,49,54,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,83,50,95,82,78,83,95,49,55,82,97,121,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,69,57,82,97,121,84,101,115,116,101,114,95,49,0,0,90,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,49,51,114,97,121,84,101,115,116,83,105,110,103,108,101,69,82,75,49,49,98,116,84,114,97,110,115,102,111,114,109,83,50,95,80,49,55,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,80,75,49,54,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,83,50,95,82,78,83,95,49,55,82,97,121,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,69,50,57,66,114,105,100,103,101,84,114,105,97,110,103,108,101,82,97,121,99,97,115,116,67,97,108,108,98,97,99,107,95,48,0,0,0,0,0,90,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,49,51,114,97,121,84,101,115,116,83,105,110,103,108,101,69,82,75,49,49,98,116,84,114,97,110,115,102,111,114,109,83,50,95,80,49,55,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,80,75,49,54,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,83,50,95,82,78,83,95,49,55,82,97,121,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,69,50,57,66,114,105,100,103,101,84,114,105,97,110,103,108,101,82,97,121,99,97,115,116,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,90,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,49,51,114,97,121,84,101,115,116,83,105,110,103,108,101,69,82,75,49,49,98,116,84,114,97,110,115,102,111,114,109,83,50,95,80,49,55,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,80,75,49,54,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,83,50,95,82,78,83,95,49,55,82,97,121,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,69,49,53,76,111,99,97,108,73,110,102,111,65,100,100,101,114,50,0,0,0,0,0,90,78,49,52,98,116,79,112,116,105,109,105,122,101,100,66,118,104,53,98,117,105,108,100,69,80,50,51,98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110,116,101,114,102,97,99,101,98,82,75,57,98,116,86,101,99,116,111,114,51,83,52,95,69,50,57,81,117,97,110,116,105,122,101,100,78,111,100,101,84,114,105,97,110,103,108,101,67,97,108,108,98,97,99,107,0,0,0,0,0,90,78,49,52,98,116,79,112,116,105,109,105,122,101,100,66,118,104,53,98,117,105,108,100,69,80,50,51,98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110,116,101,114,102,97,99,101,98,82,75,57,98,116,86,101,99,116,111,114,51,83,52,95,69,50,48,78,111,100,101,84,114,105,97,110,103,108,101,67,97,108,108,98,97,99,107,95,48,0,0,0,0,83,116,57,116,121,112,101,95,105,110,102,111,0,0,0,0,83,116,57,101,120,99,101,112,116,105,111,110,0,0,0,0,83,116,57,98,97,100,95,97,108,108,111,99,0,0,0,0,78,54,98,116,68,98,118,116,56,73,67,111,108,108,105,100,101,69,0,0,0,0,0,0,78,51,54,98,116,68,105,115,99,114,101,116,101,67,111,108,108,105,115,105,111,110,68,101,116,101,99,116,111,114,73,110,116,101,114,102,97,99,101,54,82,101,115,117,108,116,69,0,78,51,52,98,116,83,112,104,101,114,101,84,114,105,97,110,103,108,101,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,49,48,67,114,101,97,116,101,70,117,110,99,69,0,0,0,0,0,0,78,51,51,98,116,67,111,110,118,101,120,67,111,110,99,97,118,101,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,49,55,83,119,97,112,112,101,100,67,114,101,97,116,101,70,117,110,99,69,0,0,0,0,0,0,0,0,78,51,51,98,116,67,111,110,118,101,120,67,111,110,99,97,118,101,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,49,48,67,114,101,97,116,101,70,117,110,99,69,0,0,0,0,0,0,0,78,51,50,98,116,83,112,104,101,114,101,83,112,104,101,114,101,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,49,48,67,114,101,97,116,101,70,117,110,99,69,0,0,0,0,0,0,0,0,78,51,49,98,116,67,111,110,118,101,120,80,108,97,110,101,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,49,48,67,114,101,97,116,101,70,117,110,99,69,0,78,50,56,98,116,67,111,109,112,111,117,110,100,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,49,55,83,119,97,112,112,101,100,67,114,101,97,116,101,70,117,110,99,69,0,0,0,0,0,78,50,56,98,116,67,111,109,112,111,117,110,100,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,49,48,67,114,101,97,116,101,70,117,110,99,69,0,0,0,0,78,50,54,98,116,66,111,120,66,111,120,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,49,48,67,114,101,97,116,101,70,117,110,99,69,0,0,0,0,0,0,78,50,53,98,116,83,105,109,117,108,97,116,105,111,110,73,115,108,97,110,100,77,97,110,97,103,101,114,49,52,73,115,108,97,110,100,67,97,108,108,98,97,99,107,69,0,0,0,78,50,51,98,116,67,111,110,118,101,120,67,111,110,118,101,120,65,108,103,111,114,105,116,104,109,49,48,67,114,101,97,116,101,70,117,110,99,69,0,78,49,54,98,116,69,109,112,116,121,65,108,103,111,114,105,116,104,109,49,48,67,114,101,97,116,101,70,117,110,99,69,0,0,0,0,0,0,0,0,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,50,55,67,108,111,115,101,115,116,67,111,110,118,101,120,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,0,0,0,0,0,0,0,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,50,52,67,108,111,115,101,115,116,82,97,121,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,0,0,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,50,52,65,108,108,72,105,116,115,82,97,121,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,0,0,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,50,49,67,111,110,116,97,99,116,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,0,0,0,0,0,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,50,48,67,111,110,118,101,120,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,0,0,0,0,0,0,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,49,55,82,97,121,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,0,78,49,50,98,116,67,111,110,118,101,120,67,97,115,116,49,48,67,97,115,116,82,101,115,117,108,116,69,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,49,95,95,118,109,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,0,0,0,51,54,98,116,68,105,115,99,114,101,116,101,67,111,108,108,105,115,105,111,110,68,101,116,101,99,116,111,114,73,110,116,101,114,102,97,99,101,0,0,51,53,98,116,83,101,113,117,101,110,116,105,97,108,73,109,112,117,108,115,101,67,111,110,115,116,114,97,105,110,116,83,111,108,118,101,114,0,0,0,51,52,98,116,83,112,104,101,114,101,84,114,105,97,110,103,108,101,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,0,0,0,0,51,52,98,116,80,111,108,121,104,101,100,114,97,108,67,111,110,118,101,120,65,97,98,98,67,97,99,104,105,110,103,83,104,97,112,101,0,0,0,0,51,52,98,116,67,108,111,115,101,115,116,78,111,116,77,101,67,111,110,118,101,120,82,101,115,117,108,116,67,97,108,108,98,97,99,107,0,0,0,0,51,51,98,116,77,105,110,107,111,119,115,107,105,80,101,110,101,116,114,97,116,105,111,110,68,101,112,116,104,83,111,108,118,101,114,0,0,0,0,0,51,51,98,116,67,111,110,118,101,120,67,111,110,99,97,118,101,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,0,0,0,0,0,51,50,98,116,83,112,104,101,114,101,83,112,104,101,114,101,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116])
.concat([104,109,0,0,0,0,0,0,51,50,98,116,67,111,110,118,101,120,73,110,116,101,114,110,97,108,65,97,98,98,67,97,99,104,105,110,103,83,104,97,112,101,0,0,0,0,0,0,51,49,98,116,73,110,116,101,114,110,97,108,84,114,105,97,110,103,108,101,73,110,100,101,120,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,51,49,98,116,68,101,102,97,117,108,116,67,111,108,108,105,115,105,111,110,67,111,110,102,105,103,117,114,97,116,105,111,110,0,0,0,0,0,0,0,51,49,98,116,67,111,110,118,101,120,80,108,97,110,101,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,0,0,0,0,0,0,0,51,48,98,116,71,106,107,69,112,97,80,101,110,101,116,114,97,116,105,111,110,68,101,112,116,104,83,111,108,118,101,114,0,0,0,0,0,0,0,0,51,48,98,116,67,111,110,118,101,120,80,101,110,101,116,114,97,116,105,111,110,68,101,112,116,104,83,111,108,118,101,114,0,0,0,0,0,0,0,0,51,48,98,116,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,67,114,101,97,116,101,70,117,110,99,0,0,0,0,0,0,0,0,51,48,98,116,65,99,116,105,118,97,116,105,110,103,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,0,0,0,0,0,0,0,0,50,57,98,116,71,101,110,101,114,105,99,54,68,111,102,83,112,114,105,110,103,67,111,110,115,116,114,97,105,110,116,0,50,57,67,111,110,99,114,101,116,101,67,111,110,116,97,99,116,82,101,115,117,108,116,67,97,108,108,98,97,99,107,0,50,56,98,116,84,114,105,97,110,103,108,101,67,111,110,118,101,120,99,97,115,116,67,97,108,108,98,97,99,107,0,0,50,56,98,116,83,99,97,108,101,100,66,118,104,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,0,0,50,56,98,116,72,97,115,104,101,100,79,118,101,114,108,97,112,112,105,110,103,80,97,105,114,67,97,99,104,101,0,0,50,56,98,116,67,111,109,112,111,117,110,100,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,0,0,50,55,98,116,67,111,110,116,105,110,117,111,117,115,67,111,110,118,101,120,67,111,108,108,105,115,105,111,110,0,0,0,50,54,98,116,84,114,105,97,110,103,108,101,73,110,100,101,120,86,101,114,116,101,120,65,114,114,97,121,0,0,0,0,50,54,98,116,66,111,120,66,111,120,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,0,0,0,0,50,54,76,111,99,97,108,83,117,112,112,111,114,116,86,101,114,116,101,120,67,97,108,108,98,97,99,107,0,0,0,0,50,53,98,116,84,114,105,97,110,103,108,101,82,97,121,99,97,115,116,67,97,108,108,98,97,99,107,0,0,0,0,0,50,53,98,116,83,105,109,117,108,97,116,105,111,110,73,115,108,97,110,100,77,97,110,97,103,101,114,0,0,0,0,0,50,53,98,116,79,118,101,114,108,97,112,112,105,110,103,80,97,105,114,67,97,108,108,98,97,99,107,0,0,0,0,0,50,53,98,116,72,101,105,103,104,116,102,105,101,108,100,84,101,114,114,97,105,110,83,104,97,112,101,0,0,0,0,0,50,53,98,116,68,101,102,97,117,108,116,86,101,104,105,99,108,101,82,97,121,99,97,115,116,101,114,0,0,0,0,0,50,53,98,116,67,111,110,118,101,120,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,0,0,0,0,0,50,53,98,116,67,111,110,116,105,110,117,111,117,115,68,121,110,97,109,105,99,115,87,111,114,108,100,0,0,0,0,0,50,52,98,116,83,99,97,108,101,100,84,114,105,97,110,103,108,101,67,97,108,108,98,97,99,107,0,0,0,0,0,0,50,52,98,116,80,101,114,116,117,114,98,101,100,67,111,110,116,97,99,116,82,101,115,117,108,116,0,0,0,0,0,0,50,52,98,116,80,97,105,114,67,97,99,104,105,110,103,71,104,111,115,116,79,98,106,101,99,116,0,0,0,0,0,0,50,52,98,116,67,111,110,118,101,120,84,114,105,97,110,103,108,101,67,97,108,108,98,97,99,107,0,0,0,0,0,0,50,52,98,116,67,111,108,108,105,115,105,111,110,67,111,110,102,105,103,117,114,97,116,105,111,110,0,0,0,0,0,0,50,52,98,116,66,114,111,97,100,112,104,97,115,101,65,97,98,98,67,97,108,108,98,97,99,107,0,0,0,0,0,0,50,51,98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110,116,101,114,102,97,99,101,0,0,0,0,0,0,0,50,51,98,116,83,105,110,103,108,101,67,111,110,116,97,99,116,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,50,51,98,116,80,111,108,121,104,101,100,114,97,108,67,111,110,118,101,120,83,104,97,112,101,0,0,0,0,0,0,0,50,51,98,116,80,111,105,110,116,50,80,111,105,110,116,67,111,110,115,116,114,97,105,110,116,0,0,0,0,0,0,0,50,51,98,116,71,101,110,101,114,105,99,54,68,111,102,67,111,110,115,116,114,97,105,110,116,0,0,0,0,0,0,0,50,51,98,116,68,105,115,99,114,101,116,101,68,121,110,97,109,105,99,115,87,111,114,108,100,0,0,0,0,0,0,0,50,51,98,116,67,111,110,118,101,120,67,111,110,118,101,120,65,108,103,111,114,105,116,104,109,0,0,0,0,0,0,0,50,51,98,116,67,111,108,108,105,115,105,111,110,80,97,105,114,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,50,51,98,116,66,114,111,97,100,112,104,97,115,101,82,97,121,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,50,51,98,116,66,114,105,100,103,101,100,77,97,110,105,102,111,108,100,82,101,115,117,108,116,0,0,0,0,0,0,0,50,50,98,116,83,117,98,115,105,109,112,108,101,120,67,111,110,118,101,120,67,97,115,116,0,0,0,0,0,0,0,0,50,50,98,116,79,118,101,114,108,97,112,112,105,110,103,80,97,105,114,67,97,99,104,101,0,0,0,0,0,0,0,0,50,50,98,116,67,111,109,112,111,117,110,100,76,101,97,102,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,0,50,50,98,116,66,118,104,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,0,0,0,0,0,0,0,0,50,50,83,112,104,101,114,101,84,114,105,97,110,103,108,101,68,101,116,101,99,116,111,114,0,0,0,0,0,0,0,0,50,49,98,116,85,110,105,118,101,114,115,97,108,67,111,110,115,116,114,97,105,110,116,0,50,49,98,116,85,110,105,102,111,114,109,83,99,97,108,105,110,103,83,104,97,112,101,0,50,49,98,116,83,105,110,103,108,101,83,119,101,101,112,67,97,108,108,98,97,99,107,0,50,49,98,116,83,105,109,112,108,101,68,121,110,97,109,105,99,115,87,111,114,108,100,0,50,49,98,116,78,111,100,101,79,118,101,114,108,97,112,67,97,108,108,98,97,99,107,0,50,49,98,116,67,111,110,118,101,120,73,110,116,101,114,110,97,108,83,104,97,112,101,0,50,49,98,116,67,111,110,101,84,119,105,115,116,67,111,110,115,116,114,97,105,110,116,0,50,49,98,116,67,111,108,108,105,115,105,111,110,68,105,115,112,97,116,99,104,101,114,0,50,49,98,116,66,114,111,97,100,112,104,97,115,101,73,110,116,101,114,102,97,99,101,0,50,49,83,117,112,112,111,114,116,86,101,114,116,101,120,67,97,108,108,98,97,99,107,0,50,48,98,116,68,101,102,97,117,108,116,77,111,116,105,111,110,83,116,97,116,101,0,0,50,48,98,116,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,0,0,50,48,98,116,65,120,105,115,83,119,101,101,112,51,73,110,116,101,114,110,97,108,73,116,69,0,0,0,0,0,0,0,50,48,98,116,65,120,105,115,83,119,101,101,112,51,73,110,116,101,114,110,97,108,73,106,69,0,0,0,0,0,0,0,50,48,66,114,111,97,100,112,104,97,115,101,65,97,98,98,84,101,115,116,101,114,0,0,49,57,98,116,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,0,0,0,49,57,98,116,83,105,110,103,108,101,82,97,121,67,97,108,108,98,97,99,107,0,0,0,49,57,98,116,71,104,111,115,116,80,97,105,114,67,97,108,108,98,97,99,107,0,0,0,49,57,66,114,111,97,100,112,104,97,115,101,82,97,121,84,101,115,116,101,114,0,0,0,49,56,98,116,86,101,104,105,99,108,101,82,97,121,99,97,115,116,101,114,0,0,0,0,49,56,98,116,84,114,105,97,110,103,108,101,67,97,108,108,98,97,99,107,0,0,0,0,49,56,98,116,83,116,97,116,105,99,80,108,97,110,101,83,104,97,112,101,0,0,0,0,49,56,98,116,83,108,105,100,101,114,67,111,110,115,116,114,97,105,110,116,0,0,0,0,49,56,98,116,83,105,109,112,108,101,66,114,111,97,100,112,104,97,115,101,0,0,0,0,49,56,98,116,77,117,108,116,105,83,112,104,101,114,101,83,104,97,112,101,0,0,0,0,49,56,98,116,72,105,110,103,101,50,67,111,110,115,116,114,97,105,110,116,0,0,0,0,49,56,98,116,68,98,118,116,84,114,101,101,67,111,108,108,105,100,101,114,0,0,0,0,49,56,98,116,67,111,110,118,101,120,80,111,108,121,104,101,100,114,111,110,0,0,0,0,49,56,98,116,67,111,110,115,116,114,97,105,110,116,83,111,108,118,101,114,0,0,0,0,49,55,98,116,84,121,112,101,100,67,111,110,115,116,114,97,105,110,116,0,0,0,0,0,49,55,98,116,79,118,101,114,108,97,112,67,97,108,108,98,97,99,107,0,0,0,0,0,49,55,98,116,72,105,110,103,101,67,111,110,115,116,114,97,105,110,116,0,0,0,0,0,49,55,98,116,71,106,107,80,97,105,114,68,101,116,101,99,116,111,114,0,0,0,0,0,49,55,98,116,67,111,110,118,101,120,72,117,108,108,83,104,97,112,101,0,0,0,0,0,49,55,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,0,0,0,0,0,49,55,98,116,65,99,116,105,111,110,73,110,116,101,114,102,97,99,101,0,0,0,0,0,49,55,98,116,51,50,66,105,116,65,120,105,115,83,119,101,101,112,51,0,0,0,0,0,49,55,68,101,98,117,103,68,114,97,119,99,97,108,108,98,97,99,107,0,0,0,0,0,49,54,98,116,82,97,121,99,97,115,116,86,101,104,105,99,108,101,0,0,0,0,0,0,49,54,98,116,80,111,105,110,116,67,111,108,108,101,99,116,111,114,0,0,0,0,0,0,49,54,98,116,77,97,110,105,102,111,108,100,82,101,115,117,108,116,0,0,0,0,0,0,49,54,98,116,69,109,112,116,121,65,108,103,111,114,105,116,104,109,0,0,0,0,0,0,49,54,98,116,68,98,118,116,66,114,111,97,100,112,104,97,115,101,0,0,0,0,0,0,49,54,98,116,67,121,108,105,110,100,101,114,83,104,97,112,101,90,0,0,0,0,0,0,49,54,98,116,67,121,108,105,110,100,101,114,83,104,97,112,101,88,0,0,0,0,0,0,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,0,0,0,0,0,0,49,54,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,0,0,0,0,0,0,49,54,98,116,66,111,120,66,111,120,68,101,116,101,99,116,111,114,0,0,0,0,0,0,49,54,98,116,66,85,95,83,105,109,112,108,101,120,49,116,111,52,0,0,0,0,0,0,49,53,98,116,84,114,105,97,110,103,108,101,83,104,97,112,101,0,0,0,0,0,0,0,49,53,98,116,78,117,108,108,80,97,105,114,67,97,99,104,101,0,0,0,0,0,0,0,49,53,98,116,71,106,107,67,111,110,118,101,120,67,97,115,116,0,0,0,0,0,0,0,49,53,98,116,68,121,110,97,109,105,99,115,87,111,114,108,100,0,0,0,0,0,0,0,49,53,98,116,67,121,108,105,110,100,101,114,83,104,97,112,101,0,0,0,0,0,0,0,49,53,98,116,67,111,109,112,111,117,110,100,83,104,97,112,101,0,0,0,0,0,0,0,49,53,98,116,67,97,112,115,117,108,101,83,104,97,112,101,90,0,0,0,0,0,0,0,49,53,98,116,67,97,112,115,117,108,101,83,104,97,112,101,88,0,0,0,0,0,0,0,49,52,98,116,84,114,105,97,110,103,108,101,77,101,115,104,0,0,0,0,0,0,0,0,49,52,98,116,81,117,97,110,116,105,122,101,100,66,118,104,0,0,0,0,0,0,0,0,49,52,98,116,79,112,116,105,109,105,122,101,100,66,118,104,0,0,0,0,0,0,0,0,49,52,98,116,67,111,110,99,97,118,101,83,104,97,112,101,0,0,0,0,0,0,0,0,49,52,98,116,67,97,112,115,117,108,101,83,104,97,112,101,0,0,0,0,0,0,0,0,49,51,98,116,84,121,112,101,100,79,98,106,101,99,116,0,49,51,98,116,83,112,104,101,114,101,83,104,97,112,101,0,49,51,98,116,77,111,116,105,111,110,83,116,97,116,101,0,49,51,98,116,71,104,111,115,116,79,98,106,101,99,116,0,49,51,98,116,67,111,110,118,101,120,83,104,97,112,101,0,49,50,98,116,69,109,112,116,121,83,104,97,112,101,0,0,49,50,98,116,68,105,115,112,97,116,99,104,101,114,0,0,49,50,98,116,67,111,110,118,101,120,67,97,115,116,0,0,49,50,98,116,67,111,110,101,83,104,97,112,101,90,0,0,49,50,98,116,67,111,110,101,83,104,97,112,101,88,0,0,49,50,98,116,65,120,105,115,83,119,101,101,112,51,0,0,49,49,98,116,82,105,103,105,100,66,111,100,121,0,0,0,49,49,98,116,67,111,110,101,83,104,97,112,101,0,0,0,49,48,98,116,66,111,120,83,104,97,112,101,0,0,0,0,0,0,0,0,216,102,0,0,32,136,0,0,0,0,0,0,0,0,0,0,72,103,0,0,32,136,0,0,0,0,0,0,0,0,0,0,184,103,0,0,240,138,0,0,0,0,0,0,0,0,0,0,40,104,0,0,32,136,0,0,0,0,0,0,0,0,0,0,144,104,0,0,88,134,0,0,0,0,0,0,0,0,0,0,80,105,0,0,208,139,0,0,0,0,0,0,0,0,0,0,240,105,0,0,96,140,0,0,0,0,0,0,0,0,0,0,120,106,0,0,96,140,0,0,0,0,0,0,0,0,0,0,232,106,0,0,32,136,0,0,0,0,0,0,0,0,0,0,72,107,0,0,224,134,0,0,0,0,0,0,0,0,0,0,176,107,0,0,88,134,0,0,0,0,0,0,0,0,0,0,48,108,0,0,240,138,0,0,0,0,0,0,0,0,0,0,168,108,0,0,240,138,0,0,0,0,0,0,0,0,0,0,16,109,0,0,152,136,0,0,0,0,0,0,0,0,0,0,200,109,0,0,152,136,0,0,0,0,0,0,0,0,0,0,128,110,0,0,64,135,0,0,0,0,0,0,0,0,0,0,40,111,0,0,80,134,0,0,0,0,0,0,0,0,0,0,176,111,0,0,24,137,0,0,0,0,0,0,0,0,0,0,80,112,0,0,24,137,0,0,0,0,0,0,0,0,0,0,240,112,0,0,72,135,0,0,0,0,0,0,0,0,0,0,128,113,0,0,32,136,0,0,0,0,0,0,0,0,0,0,232,113,0,0,32,136,0,0,0,0,0,0,0,0,0,0,72,114,0,0,0,0,0,0,88,114,0,0,0,0,0,0,104,114,0,0,56,134,0,0,0,0,0,0,0,0,0,0,120,114,0,0,0,0,0,0,144,114,0,0,0,0,0,0,192,114,0,0,96,136,0,0,0,0,0,0,0,0,0,0,248,114,0,0,96,136,0,0,0,0,0,0,0,0,0,0,56,115,0,0,96,136,0,0,0,0,0,0,0,0,0,0,112,115,0,0,96,136,0,0,0,0,0,0,0,0,0,0,168,115,0,0,96,136,0,0,0,0,0,0,0,0,0,0,216,115,0,0,96,136,0,0,0,0,0,0,0,0,0,0,16,116,0,0,96,136,0,0,0,0,0,0,0,0,0,0,64,116,0,0,96,136,0,0,0,0,0,0,0,0,0,0,112,116,0,0,0,0,0,0,160,116,0,0,96,136,0,0,0,0,0,0,0,0,0,0,200,116,0,0,96,136,0,0,0,0,0,0,0,0,0,0,240,116,0,0,64,135,0,0,0,0,0,0,0,0,0,0,40,117,0,0,72,135,0,0,0,0,0,0,0,0,0,0,88,117,0,0,72,135,0,0,0,0,0,0,0,0,0,0,136,117,0,0,0,0,0,0,184,117,0,0,0,0,0,0,232,117,0,0,0,0,0,0,16,118,0,0,0,0,0,0,48,118,0,0,120,135,0,0,0,0,0,0,0,0,0,0,88,118,0,0,120,135,0,0,0,0,0,0,0,0,0,0,128,118,0,0,136,135,0,0,0,0,0,0,0,0,0,0,168,118,0,0,48,134,0,0,0,0,0,0,0,0,0,0,208,118,0,0,0,0,0,0,248,118,0,0,64,140,0,0,0,0,0,0,0,0,0,0,32,119,0,0,104,136,0,0,0,0,0,0,0,0,0,0,72,119,0,0,224,137,0,0,0,0,0,0,0,0,0,0,112,119,0,0,8,135,0,0,0,0,0,0,0,0,0,0,152,119,0,0,88,136,0,0,0,0,0,0,0,0,0,0,192,119,0,0,104,136,0,0,0,0,0,0,0,0,0,0,232,119,0,0,104,136,0,0,0,0,0,0,0,0,0,0,16,120,0,0,248,138,0,0,0,0,0,0,0,0,0,0,56,120,0,0,0,0,0,0,96,120,0,0,184,137,0,0,0,0,0,0,0,0,0,0,136,120,0,0,80,139,0,0,0,0,0,0,0,0,0,0,176,120,0,0,88,136,0,0,0,0,0,0,0,0,0,0,216,120,0,0,0,0,0,0,0,121,0,0,0,0,0,0,40,121,0,0,80,139,0,0,0,0,0,0,0,0,0,0,80,121,0,0,0,138,0,0,0,0,0,0,0,0,0,0,112,121,0,0,56,135,0,0,0,0,0,0,0,0,0,0,144,121,0,0,208,139,0,0,0,0,0,0,0,0,0,0,176,121,0,0,32,142,0,0,0,0,0,0,0,0,0,0,208,121,0,0,112,138,0,0,0,0,0,0,0,0,0,0,240,121,0,0,104,136,0,0,0,0,0,0,0,0,0,0,16,122,0,0,152,142,0,0,0,0,0,0,0,0,0,0,48,122,0,0,200,137,0,0,0,0,0,0,0,0,0,0,80,122,0,0,104,136,0,0,0,0,0,0,0,0,0,0,112,122,0,0,32,136,0,0,0,0,0,0,0,0,0,0,144,122,0,0,208,139,0,0,0,0,0,0,0,0,0,0,176,122,0,0,0,0,0,0,208,122,0,0,0,0,0,0,240,122,0,0,32,142,0,0,0,0,0,0,0,0,0,0,16,123,0,0,200,139,0,0,0,0,0,0,0,0,0,0,48,123,0,0,192,135,0,0,0,0,0,0,0,0,0,0,80,123,0,0,16,138,0,0,0,0,0,0,0,0,0,0,112,123,0,0,208,139,0,0,0,0,0,0,0,0,0,0,144,123,0,0,248,140,0,0,0,0,0,0,0,0,0,0,176,123,0,0,96,142,0,0,0,0,0,0,0,0,0,0,208,123,0,0,208,139,0,0,0,0,0,0,0,0,0,0,240,123,0,0,0,0,0,0,16,124,0,0,0,0,0,0,48,124,0,0,0,0,0,0,80,124,0,0,192,137,0,0,0,0,0,0,0,0,0,0,112,124,0,0,248,138,0,0,0,0,0,0,0,0,0,0,144,124,0,0,72,140,0,0,0,0,0,0,0,0,0,0,176,124,0,0,72,140,0,0,0,0,0,0,0,0,0,0,208,124,0,0,168,141,0,0,0,0,0,0,0,0,0,0,240,124,0,0,104,136,0,0,0,0,0,0,0,0,0,0,16,125,0,0,96,140,0,0,0,0,0,0,0,0,0,0,48,125,0,0,192,137,0,0,0,0,0,0,0,0,0,0,80,125,0,0,248,140,0,0,0,0,0,0,0,0,0,0,112,125,0,0,152,142,0,0,0,0,0,0,0,0,0,0,144,125,0,0,48,137,0,0,0,0,0,0,0,0,0,0,176,125,0,0,80,134,0,0,0,0,0,0,0,0,0,0,208,125,0,0,136,139,0,0,0,0,0,0,0,0,0,0,240,125,0,0,152,135,0,0,0,0,0,0,0,0,0,0,16,126,0,0,0,138,0,0,0,0,0,0,0,0,0,0,40,126,0,0,112,142,0,0,0,0,0,0,0,0,0,0,64,126,0,0,64,138,0,0,0,0,0,0,0,0,0,0,88,126,0,0,168,141,0,0,0,0,0,0,0,0,0,0,112,126,0,0,0,0,0,0,136,126,0,0,112,142,0,0,0,0,0,0,0,0,0,0,160,126,0,0,72,140,0,0,0,0,0,0,0,0,0,0,184,126,0,0,144,142,0,0,0,0,0,0,0,0,0,0,208,126,0,0,0,0,0,0,232,126,0,0,208,139,0,0,0,0,0,0,0,0,0,0,0,127,0,0,88,142,0,0,0,0,0,0,0,0,0,0,24,127,0,0,0,0,0,0,48,127,0,0,40,139,0,0,0,0,0,0,0,0,0,0,80,127,0,0,40,139,0,0,0,0,0,0,0,0,0,0,112,127,0,0,80,134,0,0,0,0,0,0,0,0,0,0,136,127,0,0,32,142,0,0,0,0,0,0,0,0,0,0,160,127,0,0,64,138,0,0,0,0,0,0,0,0,0,0,184,127,0,0,48,137,0,0,0,0,0,0,0,0,0,0,208,127,0,0,80,134,0,0,0,0,0,0,0,0,0,0,232,127,0,0,0,0,0,0,0,128,0,0,0,0,0,0,24,128,0,0,32,142,0,0,0,0,0,0,0,0,0,0,48,128,0,0,72,140,0,0,0,0,0,0,0,0,0,0,72,128,0,0,40,139,0,0,0,0,0,0,0,0,0,0,96,128,0,0,16,136,0,0,0,0,0,0,0,0,0,0,120,128,0,0,120,136,0,0,0,0,0,0,0,0,0,0,144,128,0,0,80,134,0,0,0,0,0,0,0,0,0,0,168,128,0,0,0,0,0,0,192,128,0,0,128,76,0,0,216,128,0,0,0,0,0,0,1,0,0,0,64,142,0,0,2,4,0,0,0,0,0,0,240,128,0,0,0,0,0,0,8,129,0,0,72,140,0,0,0,0,0,0,0,0,0,0,32,129,0,0,152,135,0,0,0,0,0,0,0,0,0,0,56,129,0,0,192,135,0,0,0,0,0,0,0,0,0,0,80,129,0,0,0,0,0,0,104,129,0,0,0,0,0,0,128,129,0,0,104,139,0,0,0,0,0,0,128,76,0,0,152,129,0,0,0,0,0,0,2,0,0,0,208,139,0,0,2,0,0,0,32,136,0,0,2,4,0,0,0,0,0,0,176,129,0,0,160,140,0,0,0,0,0,0,0,0,0,0,200,129,0,0,88,134,0,0,0,0,0,0,0,0,0,0,224,129,0,0,88,134,0,0,0,0,0,0,0,0,0,0,248,129,0,0,80,139,0,0,0,0,0,0,0,0,0,0,16,130,0,0,40,139,0,0,0,0,0,0,0,0,0,0,40,130,0,0,184,141,0,0,0,0,0,0,0,0,0,0,64,130,0,0,184,141,0,0,0,0,0,0,0,0,0,0,88,130,0,0,0,0,0,0,112,130,0,0,0,0,0,0,136,130,0,0,152,135,0,0,0,0,0,0,0,0,0,0,160,130,0,0,192,135,0,0,0,0,0,0,0,0,0,0,184,130,0,0,224,137,0,0,0,0,0,0,0,0,0,0,208,130,0,0,112,138,0,0,0,0,0,0,0,0,0,0,232,130,0,0,152,142,0,0,0,0,0,0,0,0,0,0,0,131,0,0,72,141,0,0,0,0,0,0,0,0,0,0,24,131,0,0,248,138,0,0,0,0,0,0,0,0,0,0,48,131,0,0,80,141,0,0,0,0,0,0,0,0,0,0,72,131,0,0,48,142,0,0,0,0,0,0,0,0,0,0,96,131,0,0,48,142,0,0,0,0,0,0,0,0,0,0,120,131,0,0,232,136,0,0,0,0,0,0,0,0,0,0,144,131,0,0,0,0,0,0,168,131,0,0,8,142,0,0,0,0,0,0,0,0,0,0,192,131,0,0,80,141,0,0,0,0,0,0,0,0,0,0,216,131,0,0,248,138,0,0,0,0,0,0,0,0,0,0,240,131,0,0,0,0,0,0,0,132,0,0,248,138,0,0,0,0,0,0,0,0,0,0,16,132,0,0,0,0,0,0,32,132,0,0,152,140,0,0,0,0,0,0,0,0,0,0,48,132,0,0,80,141,0,0,0,0,0,0,0,0,0,0,64,132,0,0,32,142,0,0,0,0,0,0,0,0,0,0,80,132,0,0,0,0,0,0,96,132,0,0,0,0,0,0,112,132,0,0,224,142,0,0,0,0,0,0,0,0,0,0,128,132,0,0,224,142,0,0,0,0,0,0,0,0,0,0,144,132,0,0,88,139,0,0,0,0,0,0,0,0,0,0,160,132,0,0,152,140,0,0,0,0,0,0,0,0,0,0,176,132,0,0,248,138,0,0,0,0,0,0,0,0,0,0,192,132,0,0,224,137,0,0,0,0,0,0,160,167,0,0,0,0,0,0])
, "i8", ALLOC_NONE, Runtime.GLOBAL_BASE)
var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8);
assert(tempDoublePtr % 8 == 0);
function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much
  HEAP8[tempDoublePtr] = HEAP8[ptr];
  HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];
  HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];
  HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];
}
function copyTempDouble(ptr) {
  HEAP8[tempDoublePtr] = HEAP8[ptr];
  HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];
  HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];
  HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];
  HEAP8[tempDoublePtr+4] = HEAP8[ptr+4];
  HEAP8[tempDoublePtr+5] = HEAP8[ptr+5];
  HEAP8[tempDoublePtr+6] = HEAP8[ptr+6];
  HEAP8[tempDoublePtr+7] = HEAP8[ptr+7];
}
  function ___gxx_personality_v0() {
    }
  function ___cxa_guard_acquire(variable) {
      if (!HEAP8[(variable)]) { // ignore SAFE_HEAP stuff because llvm mixes i64 and i8 here
        HEAP8[(variable)]=1;
        return 1;
      }
      return 0;
    }
  function ___cxa_guard_abort() {}
  function ___cxa_guard_release() {}
  Module["_memcpy"] = _memcpy;var _llvm_memcpy_p0i8_p0i8_i32=_memcpy;
  function __exit(status) {
      // void _exit(int status);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html
      Module.print('exit(' + status + ') called');
      Module['exit'](status);
    }function _exit(status) {
      __exit(status);
    }function __ZSt9terminatev() {
      _exit(-1234);
    }
  function __ZN20btAxisSweep3InternalItE26processAllOverlappingPairsEP17btOverlapCallback() {
  Module['printErr']('missing function: _ZN20btAxisSweep3InternalItE26processAllOverlappingPairsEP17btOverlapCallback'); abort(-1);
  }
  function __ZN20btAxisSweep3InternalIjE26processAllOverlappingPairsEP17btOverlapCallback() {
  Module['printErr']('missing function: _ZN20btAxisSweep3InternalIjE26processAllOverlappingPairsEP17btOverlapCallback'); abort(-1);
  }
  function ___cxa_pure_virtual() {
      ABORT = true;
      throw 'Pure virtual function called!';
    }
  var _sqrtf=Math.sqrt;
  var _acosf=Math.acos;
  var _sinf=Math.sin;
  var _cosf=Math.cos;
  var _llvm_pow_f32=Math.pow;
  function _fmod(x, y) {
      return x % y;
    }var _fmodf=_fmod;
  var _fabsf=Math.abs;
  var _asinf=Math.asin;
  var _atan2f=Math.atan2;
  Module["_memset"] = _memset;var _llvm_memset_p0i8_i64=_memset;
  function _llvm_lifetime_start() {}
  function _llvm_lifetime_end() {}
  var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:35,EIDRM:36,ECHRNG:37,EL2NSYNC:38,EL3HLT:39,EL3RST:40,ELNRNG:41,EUNATCH:42,ENOCSI:43,EL2HLT:44,EDEADLK:45,ENOLCK:46,EBADE:50,EBADR:51,EXFULL:52,ENOANO:53,EBADRQC:54,EBADSLT:55,EDEADLOCK:56,EBFONT:57,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:74,EDOTDOT:76,EBADMSG:77,ENOTUNIQ:80,EBADFD:81,EREMCHG:82,ELIBACC:83,ELIBBAD:84,ELIBSCN:85,ELIBMAX:86,ELIBEXEC:87,ENOSYS:88,ENOTEMPTY:90,ENAMETOOLONG:91,ELOOP:92,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:106,EPROTOTYPE:107,ENOTSOCK:108,ENOPROTOOPT:109,ESHUTDOWN:110,ECONNREFUSED:111,EADDRINUSE:112,ECONNABORTED:113,ENETUNREACH:114,ENETDOWN:115,ETIMEDOUT:116,EHOSTDOWN:117,EHOSTUNREACH:118,EINPROGRESS:119,EALREADY:120,EDESTADDRREQ:121,EMSGSIZE:122,EPROTONOSUPPORT:123,ESOCKTNOSUPPORT:124,EADDRNOTAVAIL:125,ENETRESET:126,EISCONN:127,ENOTCONN:128,ETOOMANYREFS:129,EUSERS:131,EDQUOT:132,ESTALE:133,ENOTSUP:134,ENOMEDIUM:135,EILSEQ:138,EOVERFLOW:139,ECANCELED:140,ENOTRECOVERABLE:141,EOWNERDEAD:142,ESTRPIPE:143};
  var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"No message of desired type",36:"Identifier removed",37:"Channel number out of range",38:"Level 2 not synchronized",39:"Level 3 halted",40:"Level 3 reset",41:"Link number out of range",42:"Protocol driver not attached",43:"No CSI structure available",44:"Level 2 halted",45:"Deadlock condition",46:"No record locks available",50:"Invalid exchange",51:"Invalid request descriptor",52:"Exchange full",53:"No anode",54:"Invalid request code",55:"Invalid slot",56:"File locking deadlock error",57:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",74:"Multihop attempted",76:"Cross mount point (not really error)",77:"Trying to read unreadable message",80:"Given log. name not unique",81:"f.d. invalid for this operation",82:"Remote address changed",83:"Can   access a needed shared lib",84:"Accessing a corrupted shared lib",85:".lib section in a.out corrupted",86:"Attempting to link in too many libs",87:"Attempting to exec a shared library",88:"Function not implemented",90:"Directory not empty",91:"File or path name too long",92:"Too many symbolic links",95:"Operation not supported on transport endpoint",96:"Protocol family not supported",104:"Connection reset by peer",105:"No buffer space available",106:"Address family not supported by protocol family",107:"Protocol wrong type for socket",108:"Socket operation on non-socket",109:"Protocol not available",110:"Can't send after socket shutdown",111:"Connection refused",112:"Address already in use",113:"Connection aborted",114:"Network is unreachable",115:"Network interface is not configured",116:"Connection timed out",117:"Host is down",118:"Host is unreachable",119:"Connection already in progress",120:"Socket already connected",121:"Destination address required",122:"Message too long",123:"Unknown protocol",124:"Socket type not supported",125:"Address not available",126:"Connection reset by network",127:"Socket is already connected",128:"Socket is not connected",129:"Too many references",131:"Too many users",132:"Quota exceeded",133:"Stale file handle",134:"Not supported",135:"No medium (in tape drive)",138:"Illegal byte sequence",139:"Value too large for defined data type",140:"Operation canceled",141:"State not recoverable",142:"Previous owner died",143:"Streams pipe error"};
  var ___errno_state=0;function ___setErrNo(value) {
      // For convenient setting and returning of errno.
      HEAP32[((___errno_state)>>2)]=value
      return value;
    }
  var VFS=undefined;
  var PATH={splitPath:function (filename) {
        var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
        return splitPathRe.exec(filename).slice(1);
      },normalizeArray:function (parts, allowAboveRoot) {
        // if the path tries to go above the root, `up` ends up > 0
        var up = 0;
        for (var i = parts.length - 1; i >= 0; i--) {
          var last = parts[i];
          if (last === '.') {
            parts.splice(i, 1);
          } else if (last === '..') {
            parts.splice(i, 1);
            up++;
          } else if (up) {
            parts.splice(i, 1);
            up--;
          }
        }
        // if the path is allowed to go above the root, restore leading ..s
        if (allowAboveRoot) {
          for (; up--; up) {
            parts.unshift('..');
          }
        }
        return parts;
      },normalize:function (path) {
        var isAbsolute = path.charAt(0) === '/',
            trailingSlash = path.substr(-1) === '/';
        // Normalize the path
        path = PATH.normalizeArray(path.split('/').filter(function(p) {
          return !!p;
        }), !isAbsolute).join('/');
        if (!path && !isAbsolute) {
          path = '.';
        }
        if (path && trailingSlash) {
          path += '/';
        }
        return (isAbsolute ? '/' : '') + path;
      },dirname:function (path) {
        var result = PATH.splitPath(path),
            root = result[0],
            dir = result[1];
        if (!root && !dir) {
          // No dirname whatsoever
          return '.';
        }
        if (dir) {
          // It has a dirname, strip trailing slash
          dir = dir.substr(0, dir.length - 1);
        }
        return root + dir;
      },basename:function (path, ext) {
        // EMSCRIPTEN return '/'' for '/', not an empty string
        if (path === '/') return '/';
        var f = PATH.splitPath(path)[2];
        if (ext && f.substr(-1 * ext.length) === ext) {
          f = f.substr(0, f.length - ext.length);
        }
        return f;
      },join:function () {
        var paths = Array.prototype.slice.call(arguments, 0);
        return PATH.normalize(paths.filter(function(p, index) {
          if (typeof p !== 'string') {
            throw new TypeError('Arguments to path.join must be strings');
          }
          return p;
        }).join('/'));
      },resolve:function () {
        var resolvedPath = '',
          resolvedAbsolute = false;
        for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
          var path = (i >= 0) ? arguments[i] : FS.cwd();
          // Skip empty and invalid entries
          if (typeof path !== 'string') {
            throw new TypeError('Arguments to path.resolve must be strings');
          } else if (!path) {
            continue;
          }
          resolvedPath = path + '/' + resolvedPath;
          resolvedAbsolute = path.charAt(0) === '/';
        }
        // At this point the path should be resolved to a full absolute path, but
        // handle relative paths to be safe (might happen when process.cwd() fails)
        resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) {
          return !!p;
        }), !resolvedAbsolute).join('/');
        return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
      },relative:function (from, to) {
        from = PATH.resolve(from).substr(1);
        to = PATH.resolve(to).substr(1);
        function trim(arr) {
          var start = 0;
          for (; start < arr.length; start++) {
            if (arr[start] !== '') break;
          }
          var end = arr.length - 1;
          for (; end >= 0; end--) {
            if (arr[end] !== '') break;
          }
          if (start > end) return [];
          return arr.slice(start, end - start + 1);
        }
        var fromParts = trim(from.split('/'));
        var toParts = trim(to.split('/'));
        var length = Math.min(fromParts.length, toParts.length);
        var samePartsLength = length;
        for (var i = 0; i < length; i++) {
          if (fromParts[i] !== toParts[i]) {
            samePartsLength = i;
            break;
          }
        }
        var outputParts = [];
        for (var i = samePartsLength; i < fromParts.length; i++) {
          outputParts.push('..');
        }
        outputParts = outputParts.concat(toParts.slice(samePartsLength));
        return outputParts.join('/');
      }};
  var TTY={ttys:[],register:function (dev, ops) {
        TTY.ttys[dev] = { input: [], output: [], ops: ops };
        FS.registerDevice(dev, TTY.stream_ops);
      },stream_ops:{open:function (stream) {
          // this wouldn't be required if the library wasn't eval'd at first...
          if (!TTY.utf8) {
            TTY.utf8 = new Runtime.UTF8Processor();
          }
          var tty = TTY.ttys[stream.node.rdev];
          if (!tty) {
            throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
          }
          stream.tty = tty;
          stream.seekable = false;
        },close:function (stream) {
          // flush any pending line data
          if (stream.tty.output.length) {
            stream.tty.ops.put_char(stream.tty, 10);
          }
        },read:function (stream, buffer, offset, length, pos /* ignored */) {
          if (!stream.tty || !stream.tty.ops.get_char) {
            throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
          }
          var bytesRead = 0;
          for (var i = 0; i < length; i++) {
            var result;
            try {
              result = stream.tty.ops.get_char(stream.tty);
            } catch (e) {
              throw new FS.ErrnoError(ERRNO_CODES.EIO);
            }
            if (result === undefined && bytesRead === 0) {
              throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
            }
            if (result === null || result === undefined) break;
            bytesRead++;
            buffer[offset+i] = result;
          }
          if (bytesRead) {
            stream.node.timestamp = Date.now();
          }
          return bytesRead;
        },write:function (stream, buffer, offset, length, pos) {
          if (!stream.tty || !stream.tty.ops.put_char) {
            throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
          }
          for (var i = 0; i < length; i++) {
            try {
              stream.tty.ops.put_char(stream.tty, buffer[offset+i]);
            } catch (e) {
              throw new FS.ErrnoError(ERRNO_CODES.EIO);
            }
          }
          if (length) {
            stream.node.timestamp = Date.now();
          }
          return i;
        }},default_tty_ops:{get_char:function (tty) {
          if (!tty.input.length) {
            var result = null;
            if (ENVIRONMENT_IS_NODE) {
              if (process.stdin.destroyed) {
                return undefined;
              }
              result = process.stdin.read();
            } else if (typeof window != 'undefined' &&
              typeof window.prompt == 'function') {
              // Browser.
              result = window.prompt('Input: ');  // returns null on cancel
              if (result !== null) {
                result += '\n';
              }
            } else if (typeof readline == 'function') {
              // Command line.
              result = readline();
              if (result !== null) {
                result += '\n';
              }
            }
            if (!result) {
              return null;
            }
            tty.input = intArrayFromString(result, true);
          }
          return tty.input.shift();
        },put_char:function (tty, val) {
          if (val === null || val === 10) {
            Module['print'](tty.output.join(''));
            tty.output = [];
          } else {
            tty.output.push(TTY.utf8.processCChar(val));
          }
        }},default_tty1_ops:{put_char:function (tty, val) {
          if (val === null || val === 10) {
            Module['printErr'](tty.output.join(''));
            tty.output = [];
          } else {
            tty.output.push(TTY.utf8.processCChar(val));
          }
        }}};
  var MEMFS={CONTENT_OWNING:1,CONTENT_FLEXIBLE:2,CONTENT_FIXED:3,ensureFlexible:function (node) {
        if (node.contentMode !== MEMFS.CONTENT_FLEXIBLE) {
          var contents = node.contents;
          node.contents = Array.prototype.slice.call(contents);
          if (node.contentMode === MEMFS.CONTENT_OWNING) {
            assert(contents.byteOffset);
            Module['_free'](contents.byteOffset);
          }
          node.contentMode = MEMFS.CONTENT_FLEXIBLE;
        }
      },mount:function (mount) {
        return MEMFS.create_node(null, '/', 0040000 | 0777, 0);
      },create_node:function (parent, name, mode, dev) {
        if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
          // no supported
          throw new FS.ErrnoError(ERRNO_CODES.EPERM);
        }
        var node = FS.createNode(parent, name, mode, dev);
        if (FS.isDir(node.mode)) {
          node.node_ops = {
            getattr: MEMFS.node_ops.getattr,
            setattr: MEMFS.node_ops.setattr,
            lookup: MEMFS.node_ops.lookup,
            mknod: MEMFS.node_ops.mknod,
            mknod: MEMFS.node_ops.mknod,
            rename: MEMFS.node_ops.rename,
            unlink: MEMFS.node_ops.unlink,
            rmdir: MEMFS.node_ops.rmdir,
            readdir: MEMFS.node_ops.readdir,
            symlink: MEMFS.node_ops.symlink
          };
          node.stream_ops = {
            llseek: MEMFS.stream_ops.llseek
          };
          node.contents = {};
        } else if (FS.isFile(node.mode)) {
          node.node_ops = {
            getattr: MEMFS.node_ops.getattr,
            setattr: MEMFS.node_ops.setattr
          };
          node.stream_ops = {
            llseek: MEMFS.stream_ops.llseek,
            read: MEMFS.stream_ops.read,
            write: MEMFS.stream_ops.write,
            allocate: MEMFS.stream_ops.allocate,
            mmap: MEMFS.stream_ops.mmap
          };
          node.contents = [];
          node.contentMode = MEMFS.CONTENT_FLEXIBLE;
        } else if (FS.isLink(node.mode)) {
          node.node_ops = {
            getattr: MEMFS.node_ops.getattr,
            setattr: MEMFS.node_ops.setattr,
            readlink: MEMFS.node_ops.readlink
          };
          node.stream_ops = {};
        } else if (FS.isChrdev(node.mode)) {
          node.node_ops = {
            getattr: MEMFS.node_ops.getattr,
            setattr: MEMFS.node_ops.setattr
          };
          node.stream_ops = FS.chrdev_stream_ops;
        }
        node.timestamp = Date.now();
        // add the new node to the parent
        if (parent) {
          parent.contents[name] = node;
        }
        return node;
      },node_ops:{getattr:function (node) {
          var attr = {};
          // device numbers reuse inode numbers.
          attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
          attr.ino = node.id;
          attr.mode = node.mode;
          attr.nlink = 1;
          attr.uid = 0;
          attr.gid = 0;
          attr.rdev = node.rdev;
          if (FS.isDir(node.mode)) {
            attr.size = 4096;
          } else if (FS.isFile(node.mode)) {
            attr.size = node.contents.length;
          } else if (FS.isLink(node.mode)) {
            attr.size = node.link.length;
          } else {
            attr.size = 0;
          }
          attr.atime = new Date(node.timestamp);
          attr.mtime = new Date(node.timestamp);
          attr.ctime = new Date(node.timestamp);
          // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize),
          //       but this is not required by the standard.
          attr.blksize = 4096;
          attr.blocks = Math.ceil(attr.size / attr.blksize);
          return attr;
        },setattr:function (node, attr) {
          if (attr.mode !== undefined) {
            node.mode = attr.mode;
          }
          if (attr.timestamp !== undefined) {
            node.timestamp = attr.timestamp;
          }
          if (attr.size !== undefined) {
            MEMFS.ensureFlexible(node);
            var contents = node.contents;
            if (attr.size < contents.length) contents.length = attr.size;
            else while (attr.size > contents.length) contents.push(0);
          }
        },lookup:function (parent, name) {
          throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
        },mknod:function (parent, name, mode, dev) {
          return MEMFS.create_node(parent, name, mode, dev);
        },rename:function (old_node, new_dir, new_name) {
          // if we're overwriting a directory at new_name, make sure it's empty.
          if (FS.isDir(old_node.mode)) {
            var new_node;
            try {
              new_node = FS.lookupNode(new_dir, new_name);
            } catch (e) {
            }
            if (new_node) {
              for (var i in new_node.contents) {
                throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
              }
            }
          }
          // do the internal rewiring
          delete old_node.parent.contents[old_node.name];
          old_node.name = new_name;
          new_dir.contents[new_name] = old_node;
        },unlink:function (parent, name) {
          delete parent.contents[name];
        },rmdir:function (parent, name) {
          var node = FS.lookupNode(parent, name);
          for (var i in node.contents) {
            throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
          }
          delete parent.contents[name];
        },readdir:function (node) {
          var entries = ['.', '..']
          for (var key in node.contents) {
            if (!node.contents.hasOwnProperty(key)) {
              continue;
            }
            entries.push(key);
          }
          return entries;
        },symlink:function (parent, newname, oldpath) {
          var node = MEMFS.create_node(parent, newname, 0777 | 0120000, 0);
          node.link = oldpath;
          return node;
        },readlink:function (node) {
          if (!FS.isLink(node.mode)) {
            throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
          }
          return node.link;
        }},stream_ops:{read:function (stream, buffer, offset, length, position) {
          var contents = stream.node.contents;
          var size = Math.min(contents.length - position, length);
          if (size > 8 && contents.subarray) { // non-trivial, and typed array
            buffer.set(contents.subarray(position, position + size), offset);
          } else
          {
            for (var i = 0; i < size; i++) {
              buffer[offset + i] = contents[position + i];
            }
          }
          return size;
        },write:function (stream, buffer, offset, length, position, canOwn) {
          var node = stream.node;
          node.timestamp = Date.now();
          var contents = node.contents;
          if (length && contents.length === 0 && position === 0 && buffer.subarray) {
            // just replace it with the new data
            assert(buffer.length);
            if (canOwn && buffer.buffer === HEAP8.buffer && offset === 0) {
              node.contents = buffer; // this is a subarray of the heap, and we can own it
              node.contentMode = MEMFS.CONTENT_OWNING;
            } else {
              node.contents = new Uint8Array(buffer.subarray(offset, offset+length));
              node.contentMode = MEMFS.CONTENT_FIXED;
            }
            return length;
          }
          MEMFS.ensureFlexible(node);
          var contents = node.contents;
          while (contents.length < position) contents.push(0);
          for (var i = 0; i < length; i++) {
            contents[position + i] = buffer[offset + i];
          }
          return length;
        },llseek:function (stream, offset, whence) {
          var position = offset;
          if (whence === 1) {  // SEEK_CUR.
            position += stream.position;
          } else if (whence === 2) {  // SEEK_END.
            if (FS.isFile(stream.node.mode)) {
              position += stream.node.contents.length;
            }
          }
          if (position < 0) {
            throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
          }
          stream.ungotten = [];
          stream.position = position;
          return position;
        },allocate:function (stream, offset, length) {
          MEMFS.ensureFlexible(stream.node);
          var contents = stream.node.contents;
          var limit = offset + length;
          while (limit > contents.length) contents.push(0);
        },mmap:function (stream, buffer, offset, length, position, prot, flags) {
          if (!FS.isFile(stream.node.mode)) {
            throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
          }
          var ptr;
          var allocated;
          var contents = stream.node.contents;
          // Only make a new copy when MAP_PRIVATE is specified.
          if ( !(flags & 0x02) &&
                (contents.buffer === buffer || contents.buffer === buffer.buffer) ) {
            // We can't emulate MAP_SHARED when the file is not backed by the buffer
            // we're mapping to (e.g. the HEAP buffer).
            allocated = false;
            ptr = contents.byteOffset;
          } else {
            // Try to avoid unnecessary slices.
            if (position > 0 || position + length < contents.length) {
              if (contents.subarray) {
                contents = contents.subarray(position, position + length);
              } else {
                contents = Array.prototype.slice.call(contents, position, position + length);
              }
            }
            allocated = true;
            ptr = _malloc(length);
            if (!ptr) {
              throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);
            }
            buffer.set(contents, ptr);
          }
          return { ptr: ptr, allocated: allocated };
        }}};
  var _stdin=allocate(1, "i32*", ALLOC_STATIC);
  var _stdout=allocate(1, "i32*", ALLOC_STATIC);
  var _stderr=allocate(1, "i32*", ALLOC_STATIC);
  function _fflush(stream) {
      // int fflush(FILE *stream);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html
      // we don't currently perform any user-space buffering of data
    }var FS={root:null,nodes:[null],devices:[null],streams:[null],nextInode:1,name_table:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:function ErrnoError(errno) {
          this.errno = errno;
          for (var key in ERRNO_CODES) {
            if (ERRNO_CODES[key] === errno) {
              this.code = key;
              break;
            }
          }
          this.message = ERRNO_MESSAGES[errno];
        },handleFSError:function (e) {
        if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + new Error().stack;
        return ___setErrNo(e.errno);
      },hashName:function (parentid, name) {
        var hash = 0;
        for (var i = 0; i < name.length; i++) {
          hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0;
        }
        return ((parentid + hash) >>> 0) % FS.name_table.length;
      },hashAddNode:function (node) {
        var hash = FS.hashName(node.parent.id, node.name);
        node.name_next = FS.name_table[hash];
        FS.name_table[hash] = node;
      },hashRemoveNode:function (node) {
        var hash = FS.hashName(node.parent.id, node.name);
        if (FS.name_table[hash] === node) {
          FS.name_table[hash] = node.name_next;
        } else {
          var current = FS.name_table[hash];
          while (current) {
            if (current.name_next === node) {
              current.name_next = node.name_next;
              break;
            }
            current = current.name_next;
          }
        }
      },lookupNode:function (parent, name) {
        var err = FS.mayLookup(parent);
        if (err) {
          throw new FS.ErrnoError(err);
        }
        var hash = FS.hashName(parent.id, name);
        for (var node = FS.name_table[hash]; node; node = node.name_next) {
          if (node.parent.id === parent.id && node.name === name) {
            return node;
          }
        }
        // if we failed to find it in the cache, call into the VFS
        return FS.lookup(parent, name);
      },createNode:function (parent, name, mode, rdev) {
        var node = {
          id: FS.nextInode++,
          name: name,
          mode: mode,
          node_ops: {},
          stream_ops: {},
          rdev: rdev,
          parent: null,
          mount: null
        };
        if (!parent) {
          parent = node;  // root node sets parent to itself
        }
        node.parent = parent;
        node.mount = parent.mount;
        // compatibility
        var readMode = 292 | 73;
        var writeMode = 146;
        // NOTE we must use Object.defineProperties instead of individual calls to
        // Object.defineProperty in order to make closure compiler happy
        Object.defineProperties(node, {
          read: {
            get: function() { return (node.mode & readMode) === readMode; },
            set: function(val) { val ? node.mode |= readMode : node.mode &= ~readMode; }
          },
          write: {
            get: function() { return (node.mode & writeMode) === writeMode; },
            set: function(val) { val ? node.mode |= writeMode : node.mode &= ~writeMode; }
          },
          isFolder: {
            get: function() { return FS.isDir(node.mode); },
          },
          isDevice: {
            get: function() { return FS.isChrdev(node.mode); },
          },
        });
        FS.hashAddNode(node);
        return node;
      },destroyNode:function (node) {
        FS.hashRemoveNode(node);
      },isRoot:function (node) {
        return node === node.parent;
      },isMountpoint:function (node) {
        return node.mounted;
      },isFile:function (mode) {
        return (mode & 0170000) === 0100000;
      },isDir:function (mode) {
        return (mode & 0170000) === 0040000;
      },isLink:function (mode) {
        return (mode & 0170000) === 0120000;
      },isChrdev:function (mode) {
        return (mode & 0170000) === 0020000;
      },isBlkdev:function (mode) {
        return (mode & 0170000) === 0060000;
      },isFIFO:function (mode) {
        return (mode & 0170000) === 0010000;
      },cwd:function () {
        return FS.currentPath;
      },lookupPath:function (path, opts) {
        path = PATH.resolve(FS.currentPath, path);
        opts = opts || { recurse_count: 0 };
        if (opts.recurse_count > 8) {  // max recursive lookup of 8
          throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
        }
        // split the path
        var parts = PATH.normalizeArray(path.split('/').filter(function(p) {
          return !!p;
        }), false);
        // start at the root
        var current = FS.root;
        var current_path = '/';
        for (var i = 0; i < parts.length; i++) {
          var islast = (i === parts.length-1);
          if (islast && opts.parent) {
            // stop resolving
            break;
          }
          current = FS.lookupNode(current, parts[i]);
          current_path = PATH.join(current_path, parts[i]);
          // jump to the mount's root node if this is a mountpoint
          if (FS.isMountpoint(current)) {
            current = current.mount.root;
          }
          // follow symlinks
          // by default, lookupPath will not follow a symlink if it is the final path component.
          // setting opts.follow = true will override this behavior.
          if (!islast || opts.follow) {
            var count = 0;
            while (FS.isLink(current.mode)) {
              var link = FS.readlink(current_path);
              current_path = PATH.resolve(PATH.dirname(current_path), link);
              var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count });
              current = lookup.node;
              if (count++ > 40) {  // limit max consecutive symlinks to 40 (SYMLOOP_MAX).
                throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
              }
            }
          }
        }
        return { path: current_path, node: current };
      },getPath:function (node) {
        var path;
        while (true) {
          if (FS.isRoot(node)) {
            return path ? PATH.join(node.mount.mountpoint, path) : node.mount.mountpoint;
          }
          path = path ? PATH.join(node.name, path) : node.name;
          node = node.parent;
        }
      },flagModes:{"r":0,"rs":8192,"r+":2,"w":1537,"wx":3585,"xw":3585,"w+":1538,"wx+":3586,"xw+":3586,"a":521,"ax":2569,"xa":2569,"a+":522,"ax+":2570,"xa+":2570},modeStringToFlags:function (str) {
        var flags = FS.flagModes[str];
        if (typeof flags === 'undefined') {
          throw new Error('Unknown file open mode: ' + str);
        }
        return flags;
      },flagsToPermissionString:function (flag) {
        var accmode = flag & 3;
        var perms = ['r', 'w', 'rw'][accmode];
        if ((flag & 1024)) {
          perms += 'w';
        }
        return perms;
      },nodePermissions:function (node, perms) {
        if (FS.ignorePermissions) {
          return 0;
        }
        // return 0 if any user, group or owner bits are set.
        if (perms.indexOf('r') !== -1 && !(node.mode & 292)) {
          return ERRNO_CODES.EACCES;
        } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) {
          return ERRNO_CODES.EACCES;
        } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) {
          return ERRNO_CODES.EACCES;
        }
        return 0;
      },mayLookup:function (dir) {
        return FS.nodePermissions(dir, 'x');
      },mayMknod:function (mode) {
        switch (mode & 0170000) {
          case 0100000:
          case 0020000:
          case 0060000:
          case 0010000:
          case 0140000:
            return 0;
          default:
            return ERRNO_CODES.EINVAL;
        }
      },mayCreate:function (dir, name) {
        try {
          var node = FS.lookupNode(dir, name);
          return ERRNO_CODES.EEXIST;
        } catch (e) {
        }
        return FS.nodePermissions(dir, 'wx');
      },mayDelete:function (dir, name, isdir) {
        var node;
        try {
          node = FS.lookupNode(dir, name);
        } catch (e) {
          return e.errno;
        }
        var err = FS.nodePermissions(dir, 'wx');
        if (err) {
          return err;
        }
        if (isdir) {
          if (!FS.isDir(node.mode)) {
            return ERRNO_CODES.ENOTDIR;
          }
          if (FS.isRoot(node) || FS.getPath(node) === FS.currentPath) {
            return ERRNO_CODES.EBUSY;
          }
        } else {
          if (FS.isDir(node.mode)) {
            return ERRNO_CODES.EISDIR;
          }
        }
        return 0;
      },mayOpen:function (node, flags) {
        if (!node) {
          return ERRNO_CODES.ENOENT;
        }
        if (FS.isLink(node.mode)) {
          return ERRNO_CODES.ELOOP;
        } else if (FS.isDir(node.mode)) {
          if ((flags & 3) !== 0 ||  // opening for write
              (flags & 1024)) {
            return ERRNO_CODES.EISDIR;
          }
        }
        return FS.nodePermissions(node, FS.flagsToPermissionString(flags));
      },chrdev_stream_ops:{open:function (stream) {
          var device = FS.getDevice(stream.node.rdev);
          // override node's stream ops with the device's
          stream.stream_ops = device.stream_ops;
          // forward the open call
          if (stream.stream_ops.open) {
            stream.stream_ops.open(stream);
          }
        },llseek:function () {
          throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
        }},major:function (dev) {
        return ((dev) >> 8);
      },minor:function (dev) {
        return ((dev) & 0xff);
      },makedev:function (ma, mi) {
        return ((ma) << 8 | (mi));
      },registerDevice:function (dev, ops) {
        FS.devices[dev] = { stream_ops: ops };
      },getDevice:function (dev) {
        return FS.devices[dev];
      },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) {
        fd_start = fd_start || 1;
        fd_end = fd_end || FS.MAX_OPEN_FDS;
        for (var fd = fd_start; fd <= fd_end; fd++) {
          if (!FS.streams[fd]) {
            return fd;
          }
        }
        throw new FS.ErrnoError(ERRNO_CODES.EMFILE);
      },getStream:function (fd) {
        return FS.streams[fd];
      },createStream:function (stream, fd_start, fd_end) {
        var fd = FS.nextfd(fd_start, fd_end);
        stream.fd = fd;
        // compatibility
        Object.defineProperties(stream, {
          object: {
            get: function() { return stream.node; },
            set: function(val) { stream.node = val; }
          },
          isRead: {
            get: function() { return (stream.flags & 3) !== 1; }
          },
          isWrite: {
            get: function() { return (stream.flags & 3) !== 0; }
          },
          isAppend: {
            get: function() { return (stream.flags & 8); }
          }
        });
        FS.streams[fd] = stream;
        return stream;
      },closeStream:function (fd) {
        FS.streams[fd] = null;
      },getMode:function (canRead, canWrite) {
        var mode = 0;
        if (canRead) mode |= 292 | 73;
        if (canWrite) mode |= 146;
        return mode;
      },joinPath:function (parts, forceRelative) {
        var path = PATH.join.apply(null, parts);
        if (forceRelative && path[0] == '/') path = path.substr(1);
        return path;
      },absolutePath:function (relative, base) {
        return PATH.resolve(base, relative);
      },standardizePath:function (path) {
        return PATH.normalize(path);
      },findObject:function (path, dontResolveLastLink) {
        var ret = FS.analyzePath(path, dontResolveLastLink);
        if (ret.exists) {
          return ret.object;
        } else {
          ___setErrNo(ret.error);
          return null;
        }
      },analyzePath:function (path, dontResolveLastLink) {
        // operate from within the context of the symlink's target
        try {
          var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
          path = lookup.path;
        } catch (e) {
        }
        var ret = {
          isRoot: false, exists: false, error: 0, name: null, path: null, object: null,
          parentExists: false, parentPath: null, parentObject: null
        };
        try {
          var lookup = FS.lookupPath(path, { parent: true });
          ret.parentExists = true;
          ret.parentPath = lookup.path;
          ret.parentObject = lookup.node;
          ret.name = PATH.basename(path);
          lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
          ret.exists = true;
          ret.path = lookup.path;
          ret.object = lookup.node;
          ret.name = lookup.node.name;
          ret.isRoot = lookup.path === '/';
        } catch (e) {
          ret.error = e.errno;
        };
        return ret;
      },createFolder:function (parent, name, canRead, canWrite) {
        var path = PATH.join(typeof parent === 'string' ? parent : FS.getPath(parent), name);
        var mode = FS.getMode(canRead, canWrite);
        return FS.mkdir(path, mode);
      },createPath:function (parent, path, canRead, canWrite) {
        parent = typeof parent === 'string' ? parent : FS.getPath(parent);
        var parts = path.split('/').reverse();
        while (parts.length) {
          var part = parts.pop();
          if (!part) continue;
          var current = PATH.join(parent, part);
          try {
            FS.mkdir(current, 0777);
          } catch (e) {
            // ignore EEXIST
          }
          parent = current;
        }
        return current;
      },createFile:function (parent, name, properties, canRead, canWrite) {
        var path = PATH.join(typeof parent === 'string' ? parent : FS.getPath(parent), name);
        var mode = FS.getMode(canRead, canWrite);
        return FS.create(path, mode);
      },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) {
        var path = PATH.join(typeof parent === 'string' ? parent : FS.getPath(parent), name);
        var mode = FS.getMode(canRead, canWrite);
        var node = FS.create(path, mode);
        if (data) {
          if (typeof data === 'string') {
            var arr = new Array(data.length);
            for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);
            data = arr;
          }
          // make sure we can write to the file
          FS.chmod(path, mode | 146);
          var stream = FS.open(path, 'w');
          FS.write(stream, data, 0, data.length, 0, canOwn);
          FS.close(stream);
          FS.chmod(path, mode);
        }
        return node;
      },createDevice:function (parent, name, input, output) {
        var path = PATH.join(typeof parent === 'string' ? parent : FS.getPath(parent), name);
        var mode = input && output ? 0777 : (input ? 0333 : 0555);
        if (!FS.createDevice.major) FS.createDevice.major = 64;
        var dev = FS.makedev(FS.createDevice.major++, 0);
        // Create a fake device that a set of stream ops to emulate
        // the old behavior.
        FS.registerDevice(dev, {
          open: function(stream) {
            stream.seekable = false;
          },
          close: function(stream) {
            // flush any pending line data
            if (output && output.buffer && output.buffer.length) {
              output(10);
            }
          },
          read: function(stream, buffer, offset, length, pos /* ignored */) {
            var bytesRead = 0;
            for (var i = 0; i < length; i++) {
              var result;
              try {
                result = input();
              } catch (e) {
                throw new FS.ErrnoError(ERRNO_CODES.EIO);
              }
              if (result === undefined && bytesRead === 0) {
                throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
              }
              if (result === null || result === undefined) break;
              bytesRead++;
              buffer[offset+i] = result;
            }
            if (bytesRead) {
              stream.node.timestamp = Date.now();
            }
            return bytesRead;
          },
          write: function(stream, buffer, offset, length, pos) {
            for (var i = 0; i < length; i++) {
              try {
                output(buffer[offset+i]);
              } catch (e) {
                throw new FS.ErrnoError(ERRNO_CODES.EIO);
              }
            }
            if (length) {
              stream.node.timestamp = Date.now();
            }
            return i;
          }
        });
        return FS.mkdev(path, mode, dev);
      },createLink:function (parent, name, target, canRead, canWrite) {
        var path = PATH.join(typeof parent === 'string' ? parent : FS.getPath(parent), name);
        return FS.symlink(target, path);
      },forceLoadFile:function (obj) {
        if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;
        var success = true;
        if (typeof XMLHttpRequest !== 'undefined') {
          throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");
        } else if (Module['read']) {
          // Command-line.
          try {
            // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as
            //          read() will try to parse UTF8.
            obj.contents = intArrayFromString(Module['read'](obj.url), true);
          } catch (e) {
            success = false;
          }
        } else {
          throw new Error('Cannot load without read() or XMLHttpRequest.');
        }
        if (!success) ___setErrNo(ERRNO_CODES.EIO);
        return success;
      },createLazyFile:function (parent, name, url, canRead, canWrite) {
        if (typeof XMLHttpRequest !== 'undefined') {
          if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc';
          // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse.
          var LazyUint8Array = function() {
            this.lengthKnown = false;
            this.chunks = []; // Loaded chunks. Index is the chunk number
          }
          LazyUint8Array.prototype.get = function(idx) {
            if (idx > this.length-1 || idx < 0) {
              return undefined;
            }
            var chunkOffset = idx % this.chunkSize;
            var chunkNum = Math.floor(idx / this.chunkSize);
            return this.getter(chunkNum)[chunkOffset];
          }
          LazyUint8Array.prototype.setDataGetter = function(getter) {
            this.getter = getter;
          }
          LazyUint8Array.prototype.cacheLength = function() {
              // Find length
              var xhr = new XMLHttpRequest();
              xhr.open('HEAD', url, false);
              xhr.send(null);
              if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
              var datalength = Number(xhr.getResponseHeader("Content-length"));
              var header;
              var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";
              var chunkSize = 1024*1024; // Chunk size in bytes
              if (!hasByteServing) chunkSize = datalength;
              // Function to get a range from the remote URL.
              var doXHR = (function(from, to) {
                if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!");
                if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!");
                // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available.
                var xhr = new XMLHttpRequest();
                xhr.open('GET', url, false);
                if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);
                // Some hints to the browser that we want binary data.
                if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer';
                if (xhr.overrideMimeType) {
                  xhr.overrideMimeType('text/plain; charset=x-user-defined');
                }
                xhr.send(null);
                if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
                if (xhr.response !== undefined) {
                  return new Uint8Array(xhr.response || []);
                } else {
                  return intArrayFromString(xhr.responseText || '', true);
                }
              });
              var lazyArray = this;
              lazyArray.setDataGetter(function(chunkNum) {
                var start = chunkNum * chunkSize;
                var end = (chunkNum+1) * chunkSize - 1; // including this byte
                end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block
                if (typeof(lazyArray.chunks[chunkNum]) === "undefined") {
                  lazyArray.chunks[chunkNum] = doXHR(start, end);
                }
                if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!");
                return lazyArray.chunks[chunkNum];
              });
              this._length = datalength;
              this._chunkSize = chunkSize;
              this.lengthKnown = true;
          }
          var lazyArray = new LazyUint8Array();
          Object.defineProperty(lazyArray, "length", {
              get: function() {
                  if(!this.lengthKnown) {
                      this.cacheLength();
                  }
                  return this._length;
              }
          });
          Object.defineProperty(lazyArray, "chunkSize", {
              get: function() {
                  if(!this.lengthKnown) {
                      this.cacheLength();
                  }
                  return this._chunkSize;
              }
          });
          var properties = { isDevice: false, contents: lazyArray };
        } else {
          var properties = { isDevice: false, url: url };
        }
        var node = FS.createFile(parent, name, properties, canRead, canWrite);
        // This is a total hack, but I want to get this lazy file code out of the
        // core of MEMFS. If we want to keep this lazy file concept I feel it should
        // be its own thin LAZYFS proxying calls to MEMFS.
        if (properties.contents) {
          node.contents = properties.contents;
        } else if (properties.url) {
          node.contents = null;
          node.url = properties.url;
        }
        // override each stream op with one that tries to force load the lazy file first
        var stream_ops = {};
        var keys = Object.keys(node.stream_ops);
        keys.forEach(function(key) {
          var fn = node.stream_ops[key];
          stream_ops[key] = function() {
            if (!FS.forceLoadFile(node)) {
              throw new FS.ErrnoError(ERRNO_CODES.EIO);
            }
            return fn.apply(null, arguments);
          };
        });
        // use a custom read function
        stream_ops.read = function(stream, buffer, offset, length, position) {
          if (!FS.forceLoadFile(node)) {
            throw new FS.ErrnoError(ERRNO_CODES.EIO);
          }
          var contents = stream.node.contents;
          var size = Math.min(contents.length - position, length);
          if (contents.slice) { // normal array
            for (var i = 0; i < size; i++) {
              buffer[offset + i] = contents[position + i];
            }
          } else {
            for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR
              buffer[offset + i] = contents.get(position + i);
            }
          }
          return size;
        };
        node.stream_ops = stream_ops;
        return node;
      },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn) {
        Browser.init();
        // TODO we should allow people to just pass in a complete filename instead
        // of parent and name being that we just join them anyways
        var fullname = PATH.resolve(PATH.join(parent, name));
        function processData(byteArray) {
          function finish(byteArray) {
            if (!dontCreateFile) {
              FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);
            }
            if (onload) onload();
            removeRunDependency('cp ' + fullname);
          }
          var handled = false;
          Module['preloadPlugins'].forEach(function(plugin) {
            if (handled) return;
            if (plugin['canHandle'](fullname)) {
              plugin['handle'](byteArray, fullname, finish, function() {
                if (onerror) onerror();
                removeRunDependency('cp ' + fullname);
              });
              handled = true;
            }
          });
          if (!handled) finish(byteArray);
        }
        addRunDependency('cp ' + fullname);
        if (typeof url == 'string') {
          Browser.asyncLoad(url, function(byteArray) {
            processData(byteArray);
          }, onerror);
        } else {
          processData(url);
        }
      },createDefaultDirectories:function () {
        FS.mkdir('/tmp', 0777);
      },createDefaultDevices:function () {
        // create /dev
        FS.mkdir('/dev', 0777);
        // setup /dev/null
        FS.registerDevice(FS.makedev(1, 3), {
          read: function() { return 0; },
          write: function() { return 0; }
        });
        FS.mkdev('/dev/null', 0666, FS.makedev(1, 3));
        // setup /dev/tty and /dev/tty1
        // stderr needs to print output using Module['printErr']
        // so we register a second tty just for it.
        TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
        TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
        FS.mkdev('/dev/tty', 0666, FS.makedev(5, 0));
        FS.mkdev('/dev/tty1', 0666, FS.makedev(6, 0));
        // we're not going to emulate the actual shm device,
        // just create the tmp dirs that reside in it commonly
        FS.mkdir('/dev/shm', 0777);
        FS.mkdir('/dev/shm/tmp', 0777);
      },createStandardStreams:function () {
        // TODO deprecate the old functionality of a single
        // input / output callback and that utilizes FS.createDevice
        // and instead require a unique set of stream ops
        // by default, we symlink the standard streams to the
        // default tty devices. however, if the standard streams
        // have been overwritten we create a unique device for
        // them instead.
        if (Module['stdin']) {
          FS.createDevice('/dev', 'stdin', Module['stdin']);
        } else {
          FS.symlink('/dev/tty', '/dev/stdin');
        }
        if (Module['stdout']) {
          FS.createDevice('/dev', 'stdout', null, Module['stdout']);
        } else {
          FS.symlink('/dev/tty', '/dev/stdout');
        }
        if (Module['stderr']) {
          FS.createDevice('/dev', 'stderr', null, Module['stderr']);
        } else {
          FS.symlink('/dev/tty1', '/dev/stderr');
        }
        // open default streams for the stdin, stdout and stderr devices
        var stdin = FS.open('/dev/stdin', 'r');
        HEAP32[((_stdin)>>2)]=stdin.fd;
        assert(stdin.fd === 1, 'invalid handle for stdin (' + stdin.fd + ')');
        var stdout = FS.open('/dev/stdout', 'w');
        HEAP32[((_stdout)>>2)]=stdout.fd;
        assert(stdout.fd === 2, 'invalid handle for stdout (' + stdout.fd + ')');
        var stderr = FS.open('/dev/stderr', 'w');
        HEAP32[((_stderr)>>2)]=stderr.fd;
        assert(stderr.fd === 3, 'invalid handle for stderr (' + stderr.fd + ')');
      },staticInit:function () {
        FS.name_table = new Array(4096);
        FS.root = FS.createNode(null, '/', 0040000 | 0777, 0);
        FS.mount(MEMFS, {}, '/');
        FS.createDefaultDirectories();
        FS.createDefaultDevices();
      },init:function (input, output, error) {
        assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)');
        FS.init.initialized = true;
        // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here
        Module['stdin'] = input || Module['stdin'];
        Module['stdout'] = output || Module['stdout'];
        Module['stderr'] = error || Module['stderr'];
        FS.createStandardStreams();
      },quit:function () {
        FS.init.initialized = false;
        for (var i = 0; i < FS.streams.length; i++) {
          var stream = FS.streams[i];
          if (!stream) {
            continue;
          }
          FS.close(stream);
        }
      },mount:function (type, opts, mountpoint) {
        var mount = {
          type: type,
          opts: opts,
          mountpoint: mountpoint,
          root: null
        };
        var lookup;
        if (mountpoint) {
          lookup = FS.lookupPath(mountpoint, { follow: false });
        }
        // create a root node for the fs
        var root = type.mount(mount);
        root.mount = mount;
        mount.root = root;
        // assign the mount info to the mountpoint's node
        if (lookup) {
          lookup.node.mount = mount;
          lookup.node.mounted = true;
          // compatibility update FS.root if we mount to /
          if (mountpoint === '/') {
            FS.root = mount.root;
          }
        }
        return root;
      },lookup:function (parent, name) {
        return parent.node_ops.lookup(parent, name);
      },mknod:function (path, mode, dev) {
        var lookup = FS.lookupPath(path, { parent: true });
        var parent = lookup.node;
        var name = PATH.basename(path);
        var err = FS.mayCreate(parent, name);
        if (err) {
          throw new FS.ErrnoError(err);
        }
        if (!parent.node_ops.mknod) {
          throw new FS.ErrnoError(ERRNO_CODES.EPERM);
        }
        return parent.node_ops.mknod(parent, name, mode, dev);
      },create:function (path, mode) {
        mode &= 4095;
        mode |= 0100000;
        return FS.mknod(path, mode, 0);
      },mkdir:function (path, mode) {
        mode &= 511 | 0001000;
        mode |= 0040000;
        return FS.mknod(path, mode, 0);
      },mkdev:function (path, mode, dev) {
        mode |= 0020000;
        return FS.mknod(path, mode, dev);
      },symlink:function (oldpath, newpath) {
        var lookup = FS.lookupPath(newpath, { parent: true });
        var parent = lookup.node;
        var newname = PATH.basename(newpath);
        var err = FS.mayCreate(parent, newname);
        if (err) {
          throw new FS.ErrnoError(err);
        }
        if (!parent.node_ops.symlink) {
          throw new FS.ErrnoError(ERRNO_CODES.EPERM);
        }
        return parent.node_ops.symlink(parent, newname, oldpath);
      },rename:function (old_path, new_path) {
        var old_dirname = PATH.dirname(old_path);
        var new_dirname = PATH.dirname(new_path);
        var old_name = PATH.basename(old_path);
        var new_name = PATH.basename(new_path);
        // parents must exist
        var lookup, old_dir, new_dir;
        try {
          lookup = FS.lookupPath(old_path, { parent: true });
          old_dir = lookup.node;
          lookup = FS.lookupPath(new_path, { parent: true });
          new_dir = lookup.node;
        } catch (e) {
          throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
        }
        // need to be part of the same mount
        if (old_dir.mount !== new_dir.mount) {
          throw new FS.ErrnoError(ERRNO_CODES.EXDEV);
        }
        // source must exist
        var old_node = FS.lookupNode(old_dir, old_name);
        // old path should not be an ancestor of the new path
        var relative = PATH.relative(old_path, new_dirname);
        if (relative.charAt(0) !== '.') {
          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
        }
        // new path should not be an ancestor of the old path
        relative = PATH.relative(new_path, old_dirname);
        if (relative.charAt(0) !== '.') {
          throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
        }
        // see if the new path already exists
        var new_node;
        try {
          new_node = FS.lookupNode(new_dir, new_name);
        } catch (e) {
          // not fatal
        }
        // early out if nothing needs to change
        if (old_node === new_node) {
          return;
        }
        // we'll need to delete the old entry
        var isdir = FS.isDir(old_node.mode);
        var err = FS.mayDelete(old_dir, old_name, isdir);
        if (err) {
          throw new FS.ErrnoError(err);
        }
        // need delete permissions if we'll be overwriting.
        // need create permissions if new doesn't already exist.
        err = new_node ?
          FS.mayDelete(new_dir, new_name, isdir) :
          FS.mayCreate(new_dir, new_name);
        if (err) {
          throw new FS.ErrnoError(err);
        }
        if (!old_dir.node_ops.rename) {
          throw new FS.ErrnoError(ERRNO_CODES.EPERM);
        }
        if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) {
          throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
        }
        // if we are going to change the parent, check write permissions
        if (new_dir !== old_dir) {
          err = FS.nodePermissions(old_dir, 'w');
          if (err) {
            throw new FS.ErrnoError(err);
          }
        }
        // remove the node from the lookup hash
        FS.hashRemoveNode(old_node);
        // do the underlying fs rename
        try {
          old_dir.node_ops.rename(old_node, new_dir, new_name);
        } catch (e) {
          throw e;
        } finally {
          // add the node back to the hash (in case node_ops.rename
          // changed its name)
          FS.hashAddNode(old_node);
        }
      },rmdir:function (path) {
        var lookup = FS.lookupPath(path, { parent: true });
        var parent = lookup.node;
        var name = PATH.basename(path);
        var node = FS.lookupNode(parent, name);
        var err = FS.mayDelete(parent, name, true);
        if (err) {
          throw new FS.ErrnoError(err);
        }
        if (!parent.node_ops.rmdir) {
          throw new FS.ErrnoError(ERRNO_CODES.EPERM);
        }
        if (FS.isMountpoint(node)) {
          throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
        }
        parent.node_ops.rmdir(parent, name);
        FS.destroyNode(node);
      },readdir:function (path) {
        var lookup = FS.lookupPath(path, { follow: true });
        var node = lookup.node;
        if (!node.node_ops.readdir) {
          throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
        }
        return node.node_ops.readdir(node);
      },unlink:function (path) {
        var lookup = FS.lookupPath(path, { parent: true });
        var parent = lookup.node;
        var name = PATH.basename(path);
        var node = FS.lookupNode(parent, name);
        var err = FS.mayDelete(parent, name, false);
        if (err) {
          // POSIX says unlink should set EPERM, not EISDIR
          if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM;
          throw new FS.ErrnoError(err);
        }
        if (!parent.node_ops.unlink) {
          throw new FS.ErrnoError(ERRNO_CODES.EPERM);
        }
        if (FS.isMountpoint(node)) {
          throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
        }
        parent.node_ops.unlink(parent, name);
        FS.destroyNode(node);
      },readlink:function (path) {
        var lookup = FS.lookupPath(path, { follow: false });
        var link = lookup.node;
        if (!link.node_ops.readlink) {
          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
        }
        return link.node_ops.readlink(link);
      },stat:function (path, dontFollow) {
        var lookup = FS.lookupPath(path, { follow: !dontFollow });
        var node = lookup.node;
        if (!node.node_ops.getattr) {
          throw new FS.ErrnoError(ERRNO_CODES.EPERM);
        }
        return node.node_ops.getattr(node);
      },lstat:function (path) {
        return FS.stat(path, true);
      },chmod:function (path, mode, dontFollow) {
        var node;
        if (typeof path === 'string') {
          var lookup = FS.lookupPath(path, { follow: !dontFollow });
          node = lookup.node;
        } else {
          node = path;
        }
        if (!node.node_ops.setattr) {
          throw new FS.ErrnoError(ERRNO_CODES.EPERM);
        }
        node.node_ops.setattr(node, {
          mode: (mode & 4095) | (node.mode & ~4095),
          timestamp: Date.now()
        });
      },lchmod:function (path, mode) {
        FS.chmod(path, mode, true);
      },fchmod:function (fd, mode) {
        var stream = FS.getStream(fd);
        if (!stream) {
          throw new FS.ErrnoError(ERRNO_CODES.EBADF);
        }
        FS.chmod(stream.node, mode);
      },chown:function (path, uid, gid, dontFollow) {
        var node;
        if (typeof path === 'string') {
          var lookup = FS.lookupPath(path, { follow: !dontFollow });
          node = lookup.node;
        } else {
          node = path;
        }
        if (!node.node_ops.setattr) {
          throw new FS.ErrnoError(ERRNO_CODES.EPERM);
        }
        node.node_ops.setattr(node, {
          timestamp: Date.now()
          // we ignore the uid / gid for now
        });
      },lchown:function (path, uid, gid) {
        FS.chown(path, uid, gid, true);
      },fchown:function (fd, uid, gid) {
        var stream = FS.getStream(fd);
        if (!stream) {
          throw new FS.ErrnoError(ERRNO_CODES.EBADF);
        }
        FS.chown(stream.node, uid, gid);
      },truncate:function (path, len) {
        if (len < 0) {
          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
        }
        var node;
        if (typeof path === 'string') {
          var lookup = FS.lookupPath(path, { follow: true });
          node = lookup.node;
        } else {
          node = path;
        }
        if (!node.node_ops.setattr) {
          throw new FS.ErrnoError(ERRNO_CODES.EPERM);
        }
        if (FS.isDir(node.mode)) {
          throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
        }
        if (!FS.isFile(node.mode)) {
          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
        }
        var err = FS.nodePermissions(node, 'w');
        if (err) {
          throw new FS.ErrnoError(err);
        }
        node.node_ops.setattr(node, {
          size: len,
          timestamp: Date.now()
        });
      },ftruncate:function (fd, len) {
        var stream = FS.getStream(fd);
        if (!stream) {
          throw new FS.ErrnoError(ERRNO_CODES.EBADF);
        }
        if ((stream.flags & 3) === 0) {
          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
        }
        FS.truncate(stream.node, len);
      },utime:function (path, atime, mtime) {
        var lookup = FS.lookupPath(path, { follow: true });
        var node = lookup.node;
        node.node_ops.setattr(node, {
          timestamp: Math.max(atime, mtime)
        });
      },open:function (path, flags, mode, fd_start, fd_end) {
        path = PATH.normalize(path);
        flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags;
        mode = typeof mode === 'undefined' ? 0666 : mode;
        if ((flags & 512)) {
          mode = (mode & 4095) | 0100000;
        } else {
          mode = 0;
        }
        var node;
        try {
          var lookup = FS.lookupPath(path, {
            follow: !(flags & 0200000)
          });
          node = lookup.node;
          path = lookup.path;
        } catch (e) {
          // ignore
        }
        // perhaps we need to create the node
        if ((flags & 512)) {
          if (node) {
            // if O_CREAT and O_EXCL are set, error out if the node already exists
            if ((flags & 2048)) {
              throw new FS.ErrnoError(ERRNO_CODES.EEXIST);
            }
          } else {
            // node doesn't exist, try to create it
            node = FS.mknod(path, mode, 0);
          }
        }
        if (!node) {
          throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
        }
        // can't truncate a device
        if (FS.isChrdev(node.mode)) {
          flags &= ~1024;
        }
        // check permissions
        var err = FS.mayOpen(node, flags);
        if (err) {
          throw new FS.ErrnoError(err);
        }
        // do truncation if necessary
        if ((flags & 1024)) {
          FS.truncate(node, 0);
        }
        // register the stream with the filesystem
        var stream = FS.createStream({
          path: path,
          node: node,
          flags: flags,
          seekable: true,
          position: 0,
          stream_ops: node.stream_ops,
          // used by the file family libc calls (fopen, fwrite, ferror, etc.)
          ungotten: [],
          error: false
        }, fd_start, fd_end);
        // call the new stream's open function
        if (stream.stream_ops.open) {
          stream.stream_ops.open(stream);
        }
        return stream;
      },close:function (stream) {
        try {
          if (stream.stream_ops.close) {
            stream.stream_ops.close(stream);
          }
        } catch (e) {
          throw e;
        } finally {
          FS.closeStream(stream.fd);
        }
      },llseek:function (stream, offset, whence) {
        if (!stream.seekable || !stream.stream_ops.llseek) {
          throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
        }
        return stream.stream_ops.llseek(stream, offset, whence);
      },read:function (stream, buffer, offset, length, position) {
        if (length < 0 || position < 0) {
          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
        }
        if ((stream.flags & 3) === 1) {
          throw new FS.ErrnoError(ERRNO_CODES.EBADF);
        }
        if (FS.isDir(stream.node.mode)) {
          throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
        }
        if (!stream.stream_ops.read) {
          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
        }
        var seeking = true;
        if (typeof position === 'undefined') {
          position = stream.position;
          seeking = false;
        } else if (!stream.seekable) {
          throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
        }
        var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);
        if (!seeking) stream.position += bytesRead;
        return bytesRead;
      },write:function (stream, buffer, offset, length, position, canOwn) {
        if (length < 0 || position < 0) {
          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
        }
        if ((stream.flags & 3) === 0) {
          throw new FS.ErrnoError(ERRNO_CODES.EBADF);
        }
        if (FS.isDir(stream.node.mode)) {
          throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
        }
        if (!stream.stream_ops.write) {
          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
        }
        var seeking = true;
        if (typeof position === 'undefined') {
          position = stream.position;
          seeking = false;
        } else if (!stream.seekable) {
          throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
        }
        if (stream.flags & 8) {
          // seek to the end before writing in append mode
          FS.llseek(stream, 0, 2);
        }
        var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);
        if (!seeking) stream.position += bytesWritten;
        return bytesWritten;
      },allocate:function (stream, offset, length) {
        if (offset < 0 || length <= 0) {
          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
        }
        if ((stream.flags & 3) === 0) {
          throw new FS.ErrnoError(ERRNO_CODES.EBADF);
        }
        if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) {
          throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
        }
        if (!stream.stream_ops.allocate) {
          throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
        }
        stream.stream_ops.allocate(stream, offset, length);
      },mmap:function (stream, buffer, offset, length, position, prot, flags) {
        // TODO if PROT is PROT_WRITE, make sure we have write access
        if ((stream.flags & 3) === 1) {
          throw new FS.ErrnoError(ERRNO_CODES.EACCES);
        }
        if (!stream.stream_ops.mmap) {
          throw new FS.errnoError(ERRNO_CODES.ENODEV);
        }
        return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags);
      }};
  function _send(fd, buf, len, flags) {
      var info = FS.getStream(fd);
      if (!info) {
        ___setErrNo(ERRNO_CODES.EBADF);
        return -1;
      }
      if (info.socket.readyState === WebSocket.CLOSING || info.socket.readyState === WebSocket.CLOSED) {
        ___setErrNo(ERRNO_CODES.ENOTCONN);
        return -1;
      } else if (info.socket.readyState === WebSocket.CONNECTING) {
        ___setErrNo(ERRNO_CODES.EAGAIN);
        return -1;
      }
      info.sender(HEAPU8.subarray(buf, buf+len));
      return len;
    }
  function _pwrite(fildes, buf, nbyte, offset) {
      // ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html
      var stream = FS.getStream(fildes);
      if (!stream) {
        ___setErrNo(ERRNO_CODES.EBADF);
        return -1;
      }
      try {
        var slab = HEAP8;
        return FS.write(stream, slab, buf, nbyte, offset);
      } catch (e) {
        FS.handleFSError(e);
        return -1;
      }
    }function _write(fildes, buf, nbyte) {
      // ssize_t write(int fildes, const void *buf, size_t nbyte);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html
      var stream = FS.getStream(fildes);
      if (!stream) {
        ___setErrNo(ERRNO_CODES.EBADF);
        return -1;
      }
      if (stream && ('socket' in stream)) {
        return _send(fildes, buf, nbyte, 0);
      }
      try {
        var slab = HEAP8;
        return FS.write(stream, slab, buf, nbyte);
      } catch (e) {
        FS.handleFSError(e);
        return -1;
      }
    }function _fwrite(ptr, size, nitems, stream) {
      // size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/fwrite.html
      var bytesToWrite = nitems * size;
      if (bytesToWrite == 0) return 0;
      var bytesWritten = _write(stream, ptr, bytesToWrite);
      if (bytesWritten == -1) {
        var streamObj = FS.getStream(stream);
        if (streamObj) streamObj.error = true;
        return 0;
      } else {
        return Math.floor(bytesWritten / size);
      }
    }
  Module["_strlen"] = _strlen;
  function __reallyNegative(x) {
      return x < 0 || (x === 0 && (1/x) === -Infinity);
    }function __formatString(format, varargs) {
      var textIndex = format;
      var argIndex = 0;
      function getNextArg(type) {
        // NOTE: Explicitly ignoring type safety. Otherwise this fails:
        //       int x = 4; printf("%c\n", (char)x);
        var ret;
        if (type === 'double') {
          ret = HEAPF64[(((varargs)+(argIndex))>>3)];
        } else if (type == 'i64') {
          ret = [HEAP32[(((varargs)+(argIndex))>>2)],
                 HEAP32[(((varargs)+(argIndex+8))>>2)]];
          argIndex += 8; // each 32-bit chunk is in a 64-bit block
        } else {
          type = 'i32'; // varargs are always i32, i64, or double
          ret = HEAP32[(((varargs)+(argIndex))>>2)];
        }
        argIndex += Math.max(Runtime.getNativeFieldSize(type), Runtime.getAlignSize(type, null, true));
        return ret;
      }
      var ret = [];
      var curr, next, currArg;
      while(1) {
        var startTextIndex = textIndex;
        curr = HEAP8[(textIndex)];
        if (curr === 0) break;
        next = HEAP8[((textIndex+1)|0)];
        if (curr == 37) {
          // Handle flags.
          var flagAlwaysSigned = false;
          var flagLeftAlign = false;
          var flagAlternative = false;
          var flagZeroPad = false;
          flagsLoop: while (1) {
            switch (next) {
              case 43:
                flagAlwaysSigned = true;
                break;
              case 45:
                flagLeftAlign = true;
                break;
              case 35:
                flagAlternative = true;
                break;
              case 48:
                if (flagZeroPad) {
                  break flagsLoop;
                } else {
                  flagZeroPad = true;
                  break;
                }
              default:
                break flagsLoop;
            }
            textIndex++;
            next = HEAP8[((textIndex+1)|0)];
          }
          // Handle width.
          var width = 0;
          if (next == 42) {
            width = getNextArg('i32');
            textIndex++;
            next = HEAP8[((textIndex+1)|0)];
          } else {
            while (next >= 48 && next <= 57) {
              width = width * 10 + (next - 48);
              textIndex++;
              next = HEAP8[((textIndex+1)|0)];
            }
          }
          // Handle precision.
          var precisionSet = false;
          if (next == 46) {
            var precision = 0;
            precisionSet = true;
            textIndex++;
            next = HEAP8[((textIndex+1)|0)];
            if (next == 42) {
              precision = getNextArg('i32');
              textIndex++;
            } else {
              while(1) {
                var precisionChr = HEAP8[((textIndex+1)|0)];
                if (precisionChr < 48 ||
                    precisionChr > 57) break;
                precision = precision * 10 + (precisionChr - 48);
                textIndex++;
              }
            }
            next = HEAP8[((textIndex+1)|0)];
          } else {
            var precision = 6; // Standard default.
          }
          // Handle integer sizes. WARNING: These assume a 32-bit architecture!
          var argSize;
          switch (String.fromCharCode(next)) {
            case 'h':
              var nextNext = HEAP8[((textIndex+2)|0)];
              if (nextNext == 104) {
                textIndex++;
                argSize = 1; // char (actually i32 in varargs)
              } else {
                argSize = 2; // short (actually i32 in varargs)
              }
              break;
            case 'l':
              var nextNext = HEAP8[((textIndex+2)|0)];
              if (nextNext == 108) {
                textIndex++;
                argSize = 8; // long long
              } else {
                argSize = 4; // long
              }
              break;
            case 'L': // long long
            case 'q': // int64_t
            case 'j': // intmax_t
              argSize = 8;
              break;
            case 'z': // size_t
            case 't': // ptrdiff_t
            case 'I': // signed ptrdiff_t or unsigned size_t
              argSize = 4;
              break;
            default:
              argSize = null;
          }
          if (argSize) textIndex++;
          next = HEAP8[((textIndex+1)|0)];
          // Handle type specifier.
          switch (String.fromCharCode(next)) {
            case 'd': case 'i': case 'u': case 'o': case 'x': case 'X': case 'p': {
              // Integer.
              var signed = next == 100 || next == 105;
              argSize = argSize || 4;
              var currArg = getNextArg('i' + (argSize * 8));
              var argText;
              // Flatten i64-1 [low, high] into a (slightly rounded) double
              if (argSize == 8) {
                currArg = Runtime.makeBigInt(currArg[0], currArg[1], next == 117);
              }
              // Truncate to requested size.
              if (argSize <= 4) {
                var limit = Math.pow(256, argSize) - 1;
                currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8);
              }
              // Format the number.
              var currAbsArg = Math.abs(currArg);
              var prefix = '';
              if (next == 100 || next == 105) {
                argText = reSign(currArg, 8 * argSize, 1).toString(10);
              } else if (next == 117) {
                argText = unSign(currArg, 8 * argSize, 1).toString(10);
                currArg = Math.abs(currArg);
              } else if (next == 111) {
                argText = (flagAlternative ? '0' : '') + currAbsArg.toString(8);
              } else if (next == 120 || next == 88) {
                prefix = (flagAlternative && currArg != 0) ? '0x' : '';
                if (currArg < 0) {
                  // Represent negative numbers in hex as 2's complement.
                  currArg = -currArg;
                  argText = (currAbsArg - 1).toString(16);
                  var buffer = [];
                  for (var i = 0; i < argText.length; i++) {
                    buffer.push((0xF - parseInt(argText[i], 16)).toString(16));
                  }
                  argText = buffer.join('');
                  while (argText.length < argSize * 2) argText = 'f' + argText;
                } else {
                  argText = currAbsArg.toString(16);
                }
                if (next == 88) {
                  prefix = prefix.toUpperCase();
                  argText = argText.toUpperCase();
                }
              } else if (next == 112) {
                if (currAbsArg === 0) {
                  argText = '(nil)';
                } else {
                  prefix = '0x';
                  argText = currAbsArg.toString(16);
                }
              }
              if (precisionSet) {
                while (argText.length < precision) {
                  argText = '0' + argText;
                }
              }
              // Add sign if needed
              if (flagAlwaysSigned) {
                if (currArg < 0) {
                  prefix = '-' + prefix;
                } else {
                  prefix = '+' + prefix;
                }
              }
              // Add padding.
              while (prefix.length + argText.length < width) {
                if (flagLeftAlign) {
                  argText += ' ';
                } else {
                  if (flagZeroPad) {
                    argText = '0' + argText;
                  } else {
                    prefix = ' ' + prefix;
                  }
                }
              }
              // Insert the result into the buffer.
              argText = prefix + argText;
              argText.split('').forEach(function(chr) {
                ret.push(chr.charCodeAt(0));
              });
              break;
            }
            case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': {
              // Float.
              var currArg = getNextArg('double');
              var argText;
              if (isNaN(currArg)) {
                argText = 'nan';
                flagZeroPad = false;
              } else if (!isFinite(currArg)) {
                argText = (currArg < 0 ? '-' : '') + 'inf';
                flagZeroPad = false;
              } else {
                var isGeneral = false;
                var effectivePrecision = Math.min(precision, 20);
                // Convert g/G to f/F or e/E, as per:
                // http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html
                if (next == 103 || next == 71) {
                  isGeneral = true;
                  precision = precision || 1;
                  var exponent = parseInt(currArg.toExponential(effectivePrecision).split('e')[1], 10);
                  if (precision > exponent && exponent >= -4) {
                    next = ((next == 103) ? 'f' : 'F').charCodeAt(0);
                    precision -= exponent + 1;
                  } else {
                    next = ((next == 103) ? 'e' : 'E').charCodeAt(0);
                    precision--;
                  }
                  effectivePrecision = Math.min(precision, 20);
                }
                if (next == 101 || next == 69) {
                  argText = currArg.toExponential(effectivePrecision);
                  // Make sure the exponent has at least 2 digits.
                  if (/[eE][-+]\d$/.test(argText)) {
                    argText = argText.slice(0, -1) + '0' + argText.slice(-1);
                  }
                } else if (next == 102 || next == 70) {
                  argText = currArg.toFixed(effectivePrecision);
                  if (currArg === 0 && __reallyNegative(currArg)) {
                    argText = '-' + argText;
                  }
                }
                var parts = argText.split('e');
                if (isGeneral && !flagAlternative) {
                  // Discard trailing zeros and periods.
                  while (parts[0].length > 1 && parts[0].indexOf('.') != -1 &&
                         (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) {
                    parts[0] = parts[0].slice(0, -1);
                  }
                } else {
                  // Make sure we have a period in alternative mode.
                  if (flagAlternative && argText.indexOf('.') == -1) parts[0] += '.';
                  // Zero pad until required precision.
                  while (precision > effectivePrecision++) parts[0] += '0';
                }
                argText = parts[0] + (parts.length > 1 ? 'e' + parts[1] : '');
                // Capitalize 'E' if needed.
                if (next == 69) argText = argText.toUpperCase();
                // Add sign.
                if (flagAlwaysSigned && currArg >= 0) {
                  argText = '+' + argText;
                }
              }
              // Add padding.
              while (argText.length < width) {
                if (flagLeftAlign) {
                  argText += ' ';
                } else {
                  if (flagZeroPad && (argText[0] == '-' || argText[0] == '+')) {
                    argText = argText[0] + '0' + argText.slice(1);
                  } else {
                    argText = (flagZeroPad ? '0' : ' ') + argText;
                  }
                }
              }
              // Adjust case.
              if (next < 97) argText = argText.toUpperCase();
              // Insert the result into the buffer.
              argText.split('').forEach(function(chr) {
                ret.push(chr.charCodeAt(0));
              });
              break;
            }
            case 's': {
              // String.
              var arg = getNextArg('i8*');
              var argLength = arg ? _strlen(arg) : '(null)'.length;
              if (precisionSet) argLength = Math.min(argLength, precision);
              if (!flagLeftAlign) {
                while (argLength < width--) {
                  ret.push(32);
                }
              }
              if (arg) {
                for (var i = 0; i < argLength; i++) {
                  ret.push(HEAPU8[((arg++)|0)]);
                }
              } else {
                ret = ret.concat(intArrayFromString('(null)'.substr(0, argLength), true));
              }
              if (flagLeftAlign) {
                while (argLength < width--) {
                  ret.push(32);
                }
              }
              break;
            }
            case 'c': {
              // Character.
              if (flagLeftAlign) ret.push(getNextArg('i8'));
              while (--width > 0) {
                ret.push(32);
              }
              if (!flagLeftAlign) ret.push(getNextArg('i8'));
              break;
            }
            case 'n': {
              // Write the length written so far to the next parameter.
              var ptr = getNextArg('i32*');
              HEAP32[((ptr)>>2)]=ret.length
              break;
            }
            case '%': {
              // Literal percent sign.
              ret.push(curr);
              break;
            }
            default: {
              // Unknown specifiers remain untouched.
              for (var i = startTextIndex; i < textIndex + 2; i++) {
                ret.push(HEAP8[(i)]);
              }
            }
          }
          textIndex += 2;
          // TODO: Support a/A (hex float) and m (last error) specifiers.
          // TODO: Support %1${specifier} for arg selection.
        } else {
          ret.push(curr);
          textIndex += 1;
        }
      }
      return ret;
    }function _fprintf(stream, format, varargs) {
      // int fprintf(FILE *restrict stream, const char *restrict format, ...);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html
      var result = __formatString(format, varargs);
      var stack = Runtime.stackSave();
      var ret = _fwrite(allocate(result, 'i8', ALLOC_STACK), 1, result.length, stream);
      Runtime.stackRestore(stack);
      return ret;
    }function _printf(format, varargs) {
      // int printf(const char *restrict format, ...);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html
      var stdout = HEAP32[((_stdout)>>2)];
      return _fprintf(stdout, format, varargs);
    }
  function _atexit(func, arg) {
      __ATEXIT__.unshift({ func: func, arg: arg });
    }var ___cxa_atexit=_atexit;
  var _llvm_memset_p0i8_i32=_memset;
  function _llvm_umul_with_overflow_i32(x, y) {
      x = x>>>0;
      y = y>>>0;
      return ((asm["setTempRet0"](x*y > 4294967295),(x*y)>>>0)|0);
    }
  function _llvm_bswap_i16(x) {
      return ((x&0xff)<<8) | ((x>>8)&0xff);
    }
  function _llvm_bswap_i32(x) {
      return ((x&0xff)<<24) | (((x>>8)&0xff)<<16) | (((x>>16)&0xff)<<8) | (x>>>24);
    }
  function ___assert_func(filename, line, func, condition) {
      throw 'Assertion failed: ' + (condition ? Pointer_stringify(condition) : 'unknown condition') + ', at: ' + [filename ? Pointer_stringify(filename) : 'unknown filename', line, func ? Pointer_stringify(func) : 'unknown function'] + ' at ' + new Error().stack;
    }
  Module["_llvm_uadd_with_overflow_i64"] = _llvm_uadd_with_overflow_i64;
  function _gettimeofday(ptr) {
      // %struct.timeval = type { i32, i32 }
      var now = Date.now();
      HEAP32[((ptr)>>2)]=Math.floor(now/1000); // seconds
      HEAP32[(((ptr)+(4))>>2)]=Math.floor((now-1000*Math.floor(now/1000))*1000); // microseconds
      return 0;
    }
  function _abort() {
      Module['abort']();
    }
  function ___errno_location() {
      return ___errno_state;
    }var ___errno=___errno_location;
  function _sbrk(bytes) {
      // Implement a Linux-like 'memory area' for our 'process'.
      // Changes the size of the memory area by |bytes|; returns the
      // address of the previous top ('break') of the memory area
      // We control the "dynamic" memory - DYNAMIC_BASE to DYNAMICTOP
      var self = _sbrk;
      if (!self.called) {
        DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned
        self.called = true;
        assert(Runtime.dynamicAlloc);
        self.alloc = Runtime.dynamicAlloc;
        Runtime.dynamicAlloc = function() { abort('cannot dynamically allocate, sbrk now has control') };
      }
      var ret = DYNAMICTOP;
      if (bytes != 0) self.alloc(bytes);
      return ret;  // Previous break location.
    }
  function _sysconf(name) {
      // long sysconf(int name);
      // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html
      switch(name) {
        case 8: return PAGE_SIZE;
        case 54:
        case 56:
        case 21:
        case 61:
        case 63:
        case 22:
        case 67:
        case 23:
        case 24:
        case 25:
        case 26:
        case 27:
        case 69:
        case 28:
        case 101:
        case 70:
        case 71:
        case 29:
        case 30:
        case 199:
        case 75:
        case 76:
        case 32:
        case 43:
        case 44:
        case 80:
        case 46:
        case 47:
        case 45:
        case 48:
        case 49:
        case 42:
        case 82:
        case 33:
        case 7:
        case 108:
        case 109:
        case 107:
        case 112:
        case 119:
        case 121:
          return 200809;
        case 13:
        case 104:
        case 94:
        case 95:
        case 34:
        case 35:
        case 77:
        case 81:
        case 83:
        case 84:
        case 85:
        case 86:
        case 87:
        case 88:
        case 89:
        case 90:
        case 91:
        case 94:
        case 95:
        case 110:
        case 111:
        case 113:
        case 114:
        case 115:
        case 116:
        case 117:
        case 118:
        case 120:
        case 40:
        case 16:
        case 79:
        case 19:
          return -1;
        case 92:
        case 93:
        case 5:
        case 72:
        case 6:
        case 74:
        case 92:
        case 93:
        case 96:
        case 97:
        case 98:
        case 99:
        case 102:
        case 103:
        case 105:
          return 1;
        case 38:
        case 66:
        case 50:
        case 51:
        case 4:
          return 1024;
        case 15:
        case 64:
        case 41:
          return 32;
        case 55:
        case 37:
        case 17:
          return 2147483647;
        case 18:
        case 1:
          return 47839;
        case 59:
        case 57:
          return 99;
        case 68:
        case 58:
          return 2048;
        case 0: return 2097152;
        case 3: return 65536;
        case 14: return 32768;
        case 73: return 32767;
        case 39: return 16384;
        case 60: return 1000;
        case 106: return 700;
        case 52: return 256;
        case 62: return 255;
        case 2: return 100;
        case 65: return 64;
        case 36: return 20;
        case 100: return 16;
        case 20: return 6;
        case 53: return 4;
        case 10: return 1;
      }
      ___setErrNo(ERRNO_CODES.EINVAL);
      return -1;
    }
  function _time(ptr) {
      var ret = Math.floor(Date.now()/1000);
      if (ptr) {
        HEAP32[((ptr)>>2)]=ret
      }
      return ret;
    }
  function ___cxa_allocate_exception(size) {
      return _malloc(size);
    }
  function _llvm_eh_exception() {
      return HEAP32[((_llvm_eh_exception.buf)>>2)];
    }
  function __ZSt18uncaught_exceptionv() { // std::uncaught_exception()
      return !!__ZSt18uncaught_exceptionv.uncaught_exception;
    }
  function ___cxa_is_number_type(type) {
      var isNumber = false;
      try { if (type == __ZTIi) isNumber = true } catch(e){}
      try { if (type == __ZTIj) isNumber = true } catch(e){}
      try { if (type == __ZTIl) isNumber = true } catch(e){}
      try { if (type == __ZTIm) isNumber = true } catch(e){}
      try { if (type == __ZTIx) isNumber = true } catch(e){}
      try { if (type == __ZTIy) isNumber = true } catch(e){}
      try { if (type == __ZTIf) isNumber = true } catch(e){}
      try { if (type == __ZTId) isNumber = true } catch(e){}
      try { if (type == __ZTIe) isNumber = true } catch(e){}
      try { if (type == __ZTIc) isNumber = true } catch(e){}
      try { if (type == __ZTIa) isNumber = true } catch(e){}
      try { if (type == __ZTIh) isNumber = true } catch(e){}
      try { if (type == __ZTIs) isNumber = true } catch(e){}
      try { if (type == __ZTIt) isNumber = true } catch(e){}
      return isNumber;
    }function ___cxa_does_inherit(definiteType, possibilityType, possibility) {
      if (possibility == 0) return false;
      if (possibilityType == 0 || possibilityType == definiteType)
        return true;
      var possibility_type_info;
      if (___cxa_is_number_type(possibilityType)) {
        possibility_type_info = possibilityType;
      } else {
        var possibility_type_infoAddr = HEAP32[((possibilityType)>>2)] - 8;
        possibility_type_info = HEAP32[((possibility_type_infoAddr)>>2)];
      }
      switch (possibility_type_info) {
      case 0: // possibility is a pointer
        // See if definite type is a pointer
        var definite_type_infoAddr = HEAP32[((definiteType)>>2)] - 8;
        var definite_type_info = HEAP32[((definite_type_infoAddr)>>2)];
        if (definite_type_info == 0) {
          // Also a pointer; compare base types of pointers
          var defPointerBaseAddr = definiteType+8;
          var defPointerBaseType = HEAP32[((defPointerBaseAddr)>>2)];
          var possPointerBaseAddr = possibilityType+8;
          var possPointerBaseType = HEAP32[((possPointerBaseAddr)>>2)];
          return ___cxa_does_inherit(defPointerBaseType, possPointerBaseType, possibility);
        } else
          return false; // one pointer and one non-pointer
      case 1: // class with no base class
        return false;
      case 2: // class with base class
        var parentTypeAddr = possibilityType + 8;
        var parentType = HEAP32[((parentTypeAddr)>>2)];
        return ___cxa_does_inherit(definiteType, parentType, possibility);
      default:
        return false; // some unencountered type
      }
    }
  function ___resumeException(ptr) {
      if (HEAP32[((_llvm_eh_exception.buf)>>2)] == 0) HEAP32[((_llvm_eh_exception.buf)>>2)]=ptr;
      throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";;
    }function ___cxa_find_matching_catch(thrown, throwntype) {
      if (thrown == -1) thrown = HEAP32[((_llvm_eh_exception.buf)>>2)];
      if (throwntype == -1) throwntype = HEAP32[(((_llvm_eh_exception.buf)+(4))>>2)];
      var typeArray = Array.prototype.slice.call(arguments, 2);
      // If throwntype is a pointer, this means a pointer has been
      // thrown. When a pointer is thrown, actually what's thrown
      // is a pointer to the pointer. We'll dereference it.
      if (throwntype != 0 && !___cxa_is_number_type(throwntype)) {
        var throwntypeInfoAddr= HEAP32[((throwntype)>>2)] - 8;
        var throwntypeInfo= HEAP32[((throwntypeInfoAddr)>>2)];
        if (throwntypeInfo == 0)
          thrown = HEAP32[((thrown)>>2)];
      }
      // The different catch blocks are denoted by different types.
      // Due to inheritance, those types may not precisely match the
      // type of the thrown object. Find one which matches, and
      // return the type of the catch block which should be called.
      for (var i = 0; i < typeArray.length; i++) {
        if (___cxa_does_inherit(typeArray[i], throwntype, thrown))
          return ((asm["setTempRet0"](typeArray[i]),thrown)|0);
      }
      // Shouldn't happen unless we have bogus data in typeArray
      // or encounter a type for which emscripten doesn't have suitable
      // typeinfo defined. Best-efforts match just in case.
      return ((asm["setTempRet0"](throwntype),thrown)|0);
    }function ___cxa_throw(ptr, type, destructor) {
      if (!___cxa_throw.initialized) {
        try {
          HEAP32[((__ZTVN10__cxxabiv119__pointer_type_infoE)>>2)]=0; // Workaround for libcxxabi integration bug
        } catch(e){}
        try {
          HEAP32[((__ZTVN10__cxxabiv117__class_type_infoE)>>2)]=1; // Workaround for libcxxabi integration bug
        } catch(e){}
        try {
          HEAP32[((__ZTVN10__cxxabiv120__si_class_type_infoE)>>2)]=2; // Workaround for libcxxabi integration bug
        } catch(e){}
        ___cxa_throw.initialized = true;
      }
      HEAP32[((_llvm_eh_exception.buf)>>2)]=ptr
      HEAP32[(((_llvm_eh_exception.buf)+(4))>>2)]=type
      HEAP32[(((_llvm_eh_exception.buf)+(8))>>2)]=destructor
      if (!("uncaught_exception" in __ZSt18uncaught_exceptionv)) {
        __ZSt18uncaught_exceptionv.uncaught_exception = 1;
      } else {
        __ZSt18uncaught_exceptionv.uncaught_exception++;
      }
      throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";;
    }
  function ___cxa_call_unexpected(exception) {
      Module.printErr('Unexpected exception thrown, this is not properly supported - aborting');
      ABORT = true;
      throw exception;
    }
  Module["_memmove"] = _memmove;var _llvm_memmove_p0i8_p0i8_i32=_memmove;
  var Browser={mainLoop:{scheduler:null,shouldPause:false,paused:false,queue:[],pause:function () {
          Browser.mainLoop.shouldPause = true;
        },resume:function () {
          if (Browser.mainLoop.paused) {
            Browser.mainLoop.paused = false;
            Browser.mainLoop.scheduler();
          }
          Browser.mainLoop.shouldPause = false;
        },updateStatus:function () {
          if (Module['setStatus']) {
            var message = Module['statusMessage'] || 'Please wait...';
            var remaining = Browser.mainLoop.remainingBlockers;
            var expected = Browser.mainLoop.expectedBlockers;
            if (remaining) {
              if (remaining < expected) {
                Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')');
              } else {
                Module['setStatus'](message);
              }
            } else {
              Module['setStatus']('');
            }
          }
        }},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () {
        if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers
        if (Browser.initted || ENVIRONMENT_IS_WORKER) return;
        Browser.initted = true;
        try {
          new Blob();
          Browser.hasBlobConstructor = true;
        } catch(e) {
          Browser.hasBlobConstructor = false;
          console.log("warning: no blob constructor, cannot create blobs with mimetypes");
        }
        Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null));
        Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined;
        if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') {
          console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");
          Module.noImageDecoding = true;
        }
        // Support for plugins that can process preloaded files. You can add more of these to
        // your app by creating and appending to Module.preloadPlugins.
        //
        // Each plugin is asked if it can handle a file based on the file's name. If it can,
        // it is given the file's raw data. When it is done, it calls a callback with the file's
        // (possibly modified) data. For example, a plugin might decompress a file, or it
        // might create some side data structure for use later (like an Image element, etc.).
        var imagePlugin = {};
        imagePlugin['canHandle'] = function(name) {
          return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name);
        };
        imagePlugin['handle'] = function(byteArray, name, onload, onerror) {
          var b = null;
          if (Browser.hasBlobConstructor) {
            try {
              b = new Blob([byteArray], { type: Browser.getMimetype(name) });
              if (b.size !== byteArray.length) { // Safari bug #118630
                // Safari's Blob can only take an ArrayBuffer
                b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) });
              }
            } catch(e) {
              Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder');
            }
          }
          if (!b) {
            var bb = new Browser.BlobBuilder();
            bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range
            b = bb.getBlob();
          }
          var url = Browser.URLObject.createObjectURL(b);
          var img = new Image();
          img.onload = function() {
            assert(img.complete, 'Image ' + name + ' could not be decoded');
            var canvas = document.createElement('canvas');
            canvas.width = img.width;
            canvas.height = img.height;
            var ctx = canvas.getContext('2d');
            ctx.drawImage(img, 0, 0);
            Module["preloadedImages"][name] = canvas;
            Browser.URLObject.revokeObjectURL(url);
            if (onload) onload(byteArray);
          };
          img.onerror = function(event) {
            console.log('Image ' + url + ' could not be decoded');
            if (onerror) onerror();
          };
          img.src = url;
        };
        Module['preloadPlugins'].push(imagePlugin);
        var audioPlugin = {};
        audioPlugin['canHandle'] = function(name) {
          return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 };
        };
        audioPlugin['handle'] = function(byteArray, name, onload, onerror) {
          var done = false;
          function finish(audio) {
            if (done) return;
            done = true;
            Module["preloadedAudios"][name] = audio;
            if (onload) onload(byteArray);
          }
          function fail() {
            if (done) return;
            done = true;
            Module["preloadedAudios"][name] = new Audio(); // empty shim
            if (onerror) onerror();
          }
          if (Browser.hasBlobConstructor) {
            try {
              var b = new Blob([byteArray], { type: Browser.getMimetype(name) });
            } catch(e) {
              return fail();
            }
            var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this!
            var audio = new Audio();
            audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926
            audio.onerror = function(event) {
              if (done) return;
              console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach');
              function encode64(data) {
                var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
                var PAD = '=';
                var ret = '';
                var leftchar = 0;
                var leftbits = 0;
                for (var i = 0; i < data.length; i++) {
                  leftchar = (leftchar << 8) | data[i];
                  leftbits += 8;
                  while (leftbits >= 6) {
                    var curr = (leftchar >> (leftbits-6)) & 0x3f;
                    leftbits -= 6;
                    ret += BASE[curr];
                  }
                }
                if (leftbits == 2) {
                  ret += BASE[(leftchar&3) << 4];
                  ret += PAD + PAD;
                } else if (leftbits == 4) {
                  ret += BASE[(leftchar&0xf) << 2];
                  ret += PAD;
                }
                return ret;
              }
              audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray);
              finish(audio); // we don't wait for confirmation this worked - but it's worth trying
            };
            audio.src = url;
            // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror
            Browser.safeSetTimeout(function() {
              finish(audio); // try to use it even though it is not necessarily ready to play
            }, 10000);
          } else {
            return fail();
          }
        };
        Module['preloadPlugins'].push(audioPlugin);
        // Canvas event setup
        var canvas = Module['canvas'];
        canvas.requestPointerLock = canvas['requestPointerLock'] ||
                                    canvas['mozRequestPointerLock'] ||
                                    canvas['webkitRequestPointerLock'];
        canvas.exitPointerLock = document['exitPointerLock'] ||
                                 document['mozExitPointerLock'] ||
                                 document['webkitExitPointerLock'] ||
                                 function(){}; // no-op if function does not exist
        canvas.exitPointerLock = canvas.exitPointerLock.bind(document);
        function pointerLockChange() {
          Browser.pointerLock = document['pointerLockElement'] === canvas ||
                                document['mozPointerLockElement'] === canvas ||
                                document['webkitPointerLockElement'] === canvas;
        }
        document.addEventListener('pointerlockchange', pointerLockChange, false);
        document.addEventListener('mozpointerlockchange', pointerLockChange, false);
        document.addEventListener('webkitpointerlockchange', pointerLockChange, false);
        if (Module['elementPointerLock']) {
          canvas.addEventListener("click", function(ev) {
            if (!Browser.pointerLock && canvas.requestPointerLock) {
              canvas.requestPointerLock();
              ev.preventDefault();
            }
          }, false);
        }
      },createContext:function (canvas, useWebGL, setInModule) {
        var ctx;
        try {
          if (useWebGL) {
            ctx = canvas.getContext('experimental-webgl', {
              alpha: false
            });
          } else {
            ctx = canvas.getContext('2d');
          }
          if (!ctx) throw ':(';
        } catch (e) {
          Module.print('Could not create canvas - ' + e);
          return null;
        }
        if (useWebGL) {
          // Set the background of the WebGL canvas to black
          canvas.style.backgroundColor = "black";
          // Warn on context loss
          canvas.addEventListener('webglcontextlost', function(event) {
            alert('WebGL context lost. You will need to reload the page.');
          }, false);
        }
        if (setInModule) {
          Module.ctx = ctx;
          Module.useWebGL = useWebGL;
          Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() });
          Browser.init();
        }
        return ctx;
      },destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (lockPointer, resizeCanvas) {
        Browser.lockPointer = lockPointer;
        Browser.resizeCanvas = resizeCanvas;
        if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true;
        if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false;
        var canvas = Module['canvas'];
        function fullScreenChange() {
          Browser.isFullScreen = false;
          if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] ||
               document['mozFullScreenElement'] || document['mozFullscreenElement'] ||
               document['fullScreenElement'] || document['fullscreenElement']) === canvas) {
            canvas.cancelFullScreen = document['cancelFullScreen'] ||
                                      document['mozCancelFullScreen'] ||
                                      document['webkitCancelFullScreen'];
            canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document);
            if (Browser.lockPointer) canvas.requestPointerLock();
            Browser.isFullScreen = true;
            if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize();
          } else if (Browser.resizeCanvas){
            Browser.setWindowedCanvasSize();
          }
          if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen);
        }
        if (!Browser.fullScreenHandlersInstalled) {
          Browser.fullScreenHandlersInstalled = true;
          document.addEventListener('fullscreenchange', fullScreenChange, false);
          document.addEventListener('mozfullscreenchange', fullScreenChange, false);
          document.addEventListener('webkitfullscreenchange', fullScreenChange, false);
        }
        canvas.requestFullScreen = canvas['requestFullScreen'] ||
                                   canvas['mozRequestFullScreen'] ||
                                   (canvas['webkitRequestFullScreen'] ? function() { canvas['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null);
        canvas.requestFullScreen();
      },requestAnimationFrame:function (func) {
        if (!window.requestAnimationFrame) {
          window.requestAnimationFrame = window['requestAnimationFrame'] ||
                                         window['mozRequestAnimationFrame'] ||
                                         window['webkitRequestAnimationFrame'] ||
                                         window['msRequestAnimationFrame'] ||
                                         window['oRequestAnimationFrame'] ||
                                         window['setTimeout'];
        }
        window.requestAnimationFrame(func);
      },safeCallback:function (func) {
        return function() {
          if (!ABORT) return func.apply(null, arguments);
        };
      },safeRequestAnimationFrame:function (func) {
        return Browser.requestAnimationFrame(function() {
          if (!ABORT) func();
        });
      },safeSetTimeout:function (func, timeout) {
        return setTimeout(function() {
          if (!ABORT) func();
        }, timeout);
      },safeSetInterval:function (func, timeout) {
        return setInterval(function() {
          if (!ABORT) func();
        }, timeout);
      },getMimetype:function (name) {
        return {
          'jpg': 'image/jpeg',
          'jpeg': 'image/jpeg',
          'png': 'image/png',
          'bmp': 'image/bmp',
          'ogg': 'audio/ogg',
          'wav': 'audio/wav',
          'mp3': 'audio/mpeg'
        }[name.substr(name.lastIndexOf('.')+1)];
      },getUserMedia:function (func) {
        if(!window.getUserMedia) {
          window.getUserMedia = navigator['getUserMedia'] ||
                                navigator['mozGetUserMedia'];
        }
        window.getUserMedia(func);
      },getMovementX:function (event) {
        return event['movementX'] ||
               event['mozMovementX'] ||
               event['webkitMovementX'] ||
               0;
      },getMovementY:function (event) {
        return event['movementY'] ||
               event['mozMovementY'] ||
               event['webkitMovementY'] ||
               0;
      },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup
        if (Browser.pointerLock) {
          // When the pointer is locked, calculate the coordinates
          // based on the movement of the mouse.
          // Workaround for Firefox bug 764498
          if (event.type != 'mousemove' &&
              ('mozMovementX' in event)) {
            Browser.mouseMovementX = Browser.mouseMovementY = 0;
          } else {
            Browser.mouseMovementX = Browser.getMovementX(event);
            Browser.mouseMovementY = Browser.getMovementY(event);
          }
          // check if SDL is available
          if (typeof SDL != "undefined") {
          	Browser.mouseX = SDL.mouseX + Browser.mouseMovementX;
          	Browser.mouseY = SDL.mouseY + Browser.mouseMovementY;
          } else {
          	// just add the mouse delta to the current absolut mouse position
          	// FIXME: ideally this should be clamped against the canvas size and zero
          	Browser.mouseX += Browser.mouseMovementX;
          	Browser.mouseY += Browser.mouseMovementY;
          }        
        } else {
          // Otherwise, calculate the movement based on the changes
          // in the coordinates.
          var rect = Module["canvas"].getBoundingClientRect();
          var x, y;
          if (event.type == 'touchstart' ||
              event.type == 'touchend' ||
              event.type == 'touchmove') {
            var t = event.touches.item(0);
            if (t) {
              x = t.pageX - (window.scrollX + rect.left);
              y = t.pageY - (window.scrollY + rect.top);
            } else {
              return;
            }
          } else {
            x = event.pageX - (window.scrollX + rect.left);
            y = event.pageY - (window.scrollY + rect.top);
          }
          // the canvas might be CSS-scaled compared to its backbuffer;
          // SDL-using content will want mouse coordinates in terms
          // of backbuffer units.
          var cw = Module["canvas"].width;
          var ch = Module["canvas"].height;
          x = x * (cw / rect.width);
          y = y * (ch / rect.height);
          Browser.mouseMovementX = x - Browser.mouseX;
          Browser.mouseMovementY = y - Browser.mouseY;
          Browser.mouseX = x;
          Browser.mouseY = y;
        }
      },xhrLoad:function (url, onload, onerror) {
        var xhr = new XMLHttpRequest();
        xhr.open('GET', url, true);
        xhr.responseType = 'arraybuffer';
        xhr.onload = function() {
          if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0
            onload(xhr.response);
          } else {
            onerror();
          }
        };
        xhr.onerror = onerror;
        xhr.send(null);
      },asyncLoad:function (url, onload, onerror, noRunDep) {
        Browser.xhrLoad(url, function(arrayBuffer) {
          assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).');
          onload(new Uint8Array(arrayBuffer));
          if (!noRunDep) removeRunDependency('al ' + url);
        }, function(event) {
          if (onerror) {
            onerror();
          } else {
            throw 'Loading data file "' + url + '" failed.';
          }
        });
        if (!noRunDep) addRunDependency('al ' + url);
      },resizeListeners:[],updateResizeListeners:function () {
        var canvas = Module['canvas'];
        Browser.resizeListeners.forEach(function(listener) {
          listener(canvas.width, canvas.height);
        });
      },setCanvasSize:function (width, height, noUpdates) {
        var canvas = Module['canvas'];
        canvas.width = width;
        canvas.height = height;
        if (!noUpdates) Browser.updateResizeListeners();
      },windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () {
        var canvas = Module['canvas'];
        this.windowedWidth = canvas.width;
        this.windowedHeight = canvas.height;
        canvas.width = screen.width;
        canvas.height = screen.height;
        // check if SDL is available   
        if (typeof SDL != "undefined") {
        	var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)];
        	flags = flags | 0x00800000; // set SDL_FULLSCREEN flag
        	HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags
        }
        Browser.updateResizeListeners();
      },setWindowedCanvasSize:function () {
        var canvas = Module['canvas'];
        canvas.width = this.windowedWidth;
        canvas.height = this.windowedHeight;
        // check if SDL is available       
        if (typeof SDL != "undefined") {
        	var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)];
        	flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag
        	HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags
        }
        Browser.updateResizeListeners();
      }};
FS.staticInit();__ATINIT__.unshift({ func: function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() } });__ATMAIN__.push({ func: function() { FS.ignorePermissions = false } });__ATEXIT__.push({ func: function() { FS.quit() } });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice;
___errno_state = Runtime.staticAlloc(4); HEAP32[((___errno_state)>>2)]=0;
_llvm_eh_exception.buf = allocate(12, "void*", ALLOC_STATIC);
Module["requestFullScreen"] = function(lockPointer, resizeCanvas) { Browser.requestFullScreen(lockPointer, resizeCanvas) };
  Module["requestAnimationFrame"] = function(func) { Browser.requestAnimationFrame(func) };
  Module["setCanvasSize"] = function(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) };
  Module["pauseMainLoop"] = function() { Browser.mainLoop.pause() };
  Module["resumeMainLoop"] = function() { Browser.mainLoop.resume() };
  Module["getUserMedia"] = function() { Browser.getUserMedia() }
STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
staticSealed = true; // seal the static portion of memory
STACK_MAX = STACK_BASE + 5242880;
DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX);
assert(DYNAMIC_BASE < TOTAL_MEMORY); // Stack must fit in TOTAL_MEMORY; allocations from here on may enlarge TOTAL_MEMORY
var Math_min = Math.min;
function invoke_viiiii(index,a1,a2,a3,a4,a5) {
  try {
    Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iiiiiif(index,a1,a2,a3,a4,a5,a6) {
  try {
    return Module["dynCall_iiiiiif"](index,a1,a2,a3,a4,a5,a6);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_vif(index,a1,a2) {
  try {
    Module["dynCall_vif"](index,a1,a2);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viifii(index,a1,a2,a3,a4,a5) {
  try {
    Module["dynCall_viifii"](index,a1,a2,a3,a4,a5);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viiiifffffif(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) {
  try {
    Module["dynCall_viiiifffffif"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_vi(index,a1) {
  try {
    Module["dynCall_vi"](index,a1);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iiiiiffii(index,a1,a2,a3,a4,a5,a6,a7,a8) {
  try {
    return Module["dynCall_iiiiiffii"](index,a1,a2,a3,a4,a5,a6,a7,a8);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_vii(index,a1,a2) {
  try {
    Module["dynCall_vii"](index,a1,a2);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viiifii(index,a1,a2,a3,a4,a5,a6) {
  try {
    Module["dynCall_viiifii"](index,a1,a2,a3,a4,a5,a6);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_ifffffffff(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) {
  try {
    return Module["dynCall_ifffffffff"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viiiif(index,a1,a2,a3,a4,a5) {
  try {
    Module["dynCall_viiiif"](index,a1,a2,a3,a4,a5);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viiiiffffii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) {
  try {
    Module["dynCall_viiiiffffii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_ii(index,a1) {
  try {
    return Module["dynCall_ii"](index,a1);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iiiiiiifif(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) {
  try {
    return Module["dynCall_iiiiiiifif"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_vifffi(index,a1,a2,a3,a4,a5) {
  try {
    Module["dynCall_vifffi"](index,a1,a2,a3,a4,a5);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_ifiii(index,a1,a2,a3,a4) {
  try {
    return Module["dynCall_ifiii"](index,a1,a2,a3,a4);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viifi(index,a1,a2,a3,a4) {
  try {
    Module["dynCall_viifi"](index,a1,a2,a3,a4);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) {
  try {
    Module["dynCall_viiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viiiiiiff(index,a1,a2,a3,a4,a5,a6,a7,a8) {
  try {
    Module["dynCall_viiiiiiff"](index,a1,a2,a3,a4,a5,a6,a7,a8);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iiiifiii(index,a1,a2,a3,a4,a5,a6,a7) {
  try {
    return Module["dynCall_iiiifiii"](index,a1,a2,a3,a4,a5,a6,a7);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) {
  try {
    return Module["dynCall_iiiiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viffff(index,a1,a2,a3,a4,a5) {
  try {
    Module["dynCall_viffff"](index,a1,a2,a3,a4,a5);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viffiii(index,a1,a2,a3,a4,a5,a6) {
  try {
    Module["dynCall_viffiii"](index,a1,a2,a3,a4,a5,a6);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) {
  try {
    return Module["dynCall_iiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_fififii(index,a1,a2,a3,a4,a5,a6) {
  try {
    return Module["dynCall_fififii"](index,a1,a2,a3,a4,a5,a6);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_fiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) {
  try {
    return Module["dynCall_fiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_fiifii(index,a1,a2,a3,a4,a5) {
  try {
    return Module["dynCall_fiifii"](index,a1,a2,a3,a4,a5);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_ifff(index,a1,a2,a3) {
  try {
    return Module["dynCall_ifff"](index,a1,a2,a3);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viiff(index,a1,a2,a3,a4) {
  try {
    Module["dynCall_viiff"](index,a1,a2,a3,a4);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iifi(index,a1,a2,a3) {
  try {
    return Module["dynCall_iifi"](index,a1,a2,a3);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iiii(index,a1,a2,a3) {
  try {
    return Module["dynCall_iiii"](index,a1,a2,a3);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viiiifffffi(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) {
  try {
    Module["dynCall_viiiifffffi"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_fif(index,a1,a2) {
  try {
    return Module["dynCall_fif"](index,a1,a2);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iiiiff(index,a1,a2,a3,a4,a5) {
  try {
    return Module["dynCall_iiiiff"](index,a1,a2,a3,a4,a5);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viff(index,a1,a2,a3) {
  try {
    Module["dynCall_viff"](index,a1,a2,a3);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_vifi(index,a1,a2,a3) {
  try {
    Module["dynCall_vifi"](index,a1,a2,a3);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viiiiif(index,a1,a2,a3,a4,a5,a6) {
  try {
    Module["dynCall_viiiiif"](index,a1,a2,a3,a4,a5,a6);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_vifff(index,a1,a2,a3,a4) {
  try {
    Module["dynCall_vifff"](index,a1,a2,a3,a4);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6) {
  try {
    Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_fiiff(index,a1,a2,a3,a4) {
  try {
    return Module["dynCall_fiiff"](index,a1,a2,a3,a4);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iiif(index,a1,a2,a3) {
  try {
    return Module["dynCall_iiif"](index,a1,a2,a3);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7) {
  try {
    return Module["dynCall_iiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8) {
  try {
    Module["dynCall_viiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viffffff(index,a1,a2,a3,a4,a5,a6,a7) {
  try {
    Module["dynCall_viffffff"](index,a1,a2,a3,a4,a5,a6,a7);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_fiii(index,a1,a2,a3) {
  try {
    return Module["dynCall_fiii"](index,a1,a2,a3);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) {
  try {
    return Module["dynCall_iiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_fiif(index,a1,a2,a3) {
  try {
    return Module["dynCall_fiif"](index,a1,a2,a3);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_fiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) {
  try {
    return Module["dynCall_fiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_ifii(index,a1,a2,a3) {
  try {
    return Module["dynCall_ifii"](index,a1,a2,a3);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_fiffiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) {
  try {
    return Module["dynCall_fiffiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) {
  try {
    return Module["dynCall_iiiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_fiiiii(index,a1,a2,a3,a4,a5) {
  try {
    return Module["dynCall_fiiiii"](index,a1,a2,a3,a4,a5);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iif(index,a1,a2) {
  try {
    return Module["dynCall_iif"](index,a1,a2);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_if(index,a1) {
  try {
    return Module["dynCall_if"](index,a1);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_vifffff(index,a1,a2,a3,a4,a5,a6) {
  try {
    Module["dynCall_vifffff"](index,a1,a2,a3,a4,a5,a6);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viiiiiiiif(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) {
  try {
    Module["dynCall_viiiiiiiif"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_vifii(index,a1,a2,a3,a4) {
  try {
    Module["dynCall_vifii"](index,a1,a2,a3,a4);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_fi(index,a1) {
  try {
    return Module["dynCall_fi"](index,a1);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) {
  try {
    Module["dynCall_viiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iii(index,a1,a2) {
  try {
    return Module["dynCall_iii"](index,a1,a2);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iiiiii(index,a1,a2,a3,a4,a5) {
  try {
    return Module["dynCall_iiiiii"](index,a1,a2,a3,a4,a5);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6) {
  try {
    return Module["dynCall_iiiiiii"](index,a1,a2,a3,a4,a5,a6);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viiiiiiif(index,a1,a2,a3,a4,a5,a6,a7,a8) {
  try {
    Module["dynCall_viiiiiiif"](index,a1,a2,a3,a4,a5,a6,a7,a8);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_fii(index,a1,a2) {
  try {
    return Module["dynCall_fii"](index,a1,a2);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_vifffffffff(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) {
  try {
    Module["dynCall_vifffffffff"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_fiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8) {
  try {
    return Module["dynCall_fiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iifif(index,a1,a2,a3,a4) {
  try {
    return Module["dynCall_iifif"](index,a1,a2,a3,a4);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iffff(index,a1,a2,a3,a4) {
  try {
    return Module["dynCall_iffff"](index,a1,a2,a3,a4);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viiiiffffiif(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) {
  try {
    Module["dynCall_viiiiffffiif"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iiiiif(index,a1,a2,a3,a4,a5) {
  try {
    return Module["dynCall_iiiiif"](index,a1,a2,a3,a4,a5);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iiff(index,a1,a2,a3) {
  try {
    return Module["dynCall_iiff"](index,a1,a2,a3);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viiif(index,a1,a2,a3,a4) {
  try {
    Module["dynCall_viiif"](index,a1,a2,a3,a4);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_i(index) {
  try {
    return Module["dynCall_i"](index);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viiiifii(index,a1,a2,a3,a4,a5,a6,a7) {
  try {
    Module["dynCall_viiiifii"](index,a1,a2,a3,a4,a5,a6,a7);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iiiifffiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) {
  try {
    return Module["dynCall_iiiifffiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viii(index,a1,a2,a3) {
  try {
    Module["dynCall_viii"](index,a1,a2,a3);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iff(index,a1,a2) {
  try {
    return Module["dynCall_iff"](index,a1,a2);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_v(index) {
  try {
    Module["dynCall_v"](index);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8) {
  try {
    return Module["dynCall_iiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iiiii(index,a1,a2,a3,a4) {
  try {
    return Module["dynCall_iiiii"](index,a1,a2,a3,a4);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viif(index,a1,a2,a3) {
  try {
    Module["dynCall_viif"](index,a1,a2,a3);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_iiiif(index,a1,a2,a3,a4) {
  try {
    return Module["dynCall_iiiif"](index,a1,a2,a3,a4);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_fiiifii(index,a1,a2,a3,a4,a5,a6) {
  try {
    return Module["dynCall_fiiifii"](index,a1,a2,a3,a4,a5,a6);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function invoke_viiii(index,a1,a2,a3,a4) {
  try {
    Module["dynCall_viiii"](index,a1,a2,a3,a4);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}
function asmPrintInt(x, y) {
  Module.print('int ' + x + ',' + y);// + ' ' + new Error().stack);
}
function asmPrintFloat(x, y) {
  Module.print('float ' + x + ',' + y);// + ' ' + new Error().stack);
}
// EMSCRIPTEN_START_ASM
var asm=(function(global,env,buffer){"use asm";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.STACKTOP|0;var j=env.STACK_MAX|0;var k=env.tempDoublePtr|0;var l=env.ABORT|0;var m=env.__ZTVN10__cxxabiv117__class_type_infoE|0;var n=env.__ZTVN10__cxxabiv120__si_class_type_infoE|0;var o=env.___dso_handle|0;var p=+env.NaN;var q=+env.Infinity;var r=0;var s=0;var t=0;var u=0;var v=0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0,D=0.0;var E=0;var F=0;var G=0;var H=0;var I=0;var J=0;var K=0;var L=0;var M=0;var N=0;var O=global.Math.floor;var P=global.Math.abs;var Q=global.Math.sqrt;var R=global.Math.pow;var S=global.Math.cos;var T=global.Math.sin;var U=global.Math.tan;var V=global.Math.acos;var W=global.Math.asin;var X=global.Math.atan;var Y=global.Math.atan2;var Z=global.Math.exp;var _=global.Math.log;var $=global.Math.ceil;var aa=global.Math.imul;var ab=env.abort;var ac=env.assert;var ad=env.asmPrintInt;var ae=env.asmPrintFloat;var af=env.min;var ag=env.jsCall;var ah=env.invoke_viiiii;var ai=env.invoke_iiiiiif;var aj=env.invoke_vif;var ak=env.invoke_viifii;var al=env.invoke_viiiifffffif;var am=env.invoke_vi;var an=env.invoke_iiiiiffii;var ao=env.invoke_vii;var ap=env.invoke_viiifii;var aq=env.invoke_ifffffffff;var ar=env.invoke_viiiif;var as=env.invoke_viiiiffffii;var at=env.invoke_ii;var au=env.invoke_iiiiiiifif;var av=env.invoke_vifffi;var aw=env.invoke_ifiii;var ax=env.invoke_viifi;var ay=env.invoke_viiiiiiiii;var az=env.invoke_viiiiiiff;var aA=env.invoke_iiiifiii;var aB=env.invoke_iiiiiiiiiiiiii;var aC=env.invoke_viffff;var aD=env.invoke_viffiii;var aE=env.invoke_iiiiiiiiiiii;var aF=env.invoke_fififii;var aG=env.invoke_fiiiiiiiiiii;var aH=env.invoke_fiifii;var aI=env.invoke_ifff;var aJ=env.invoke_viiff;var aK=env.invoke_iifi;var aL=env.invoke_iiii;var aM=env.invoke_viiiifffffi;var aN=env.invoke_fif;var aO=env.invoke_iiiiff;var aP=env.invoke_viff;var aQ=env.invoke_vifi;var aR=env.invoke_viiiiif;var aS=env.invoke_vifff;var aT=env.invoke_viiiiii;var aU=env.invoke_fiiff;var aV=env.invoke_iiif;var aW=env.invoke_iiiiiiii;var aX=env.invoke_viiiiiiii;var aY=env.invoke_viffffff;var aZ=env.invoke_fiii;var a_=env.invoke_iiiiiiiiii;var a$=env.invoke_fiif;var a0=env.invoke_fiiiiiiiiii;var a1=env.invoke_ifii;var a2=env.invoke_fiffiiiiiii;var a3=env.invoke_iiiiiiiiiiiii;var a4=env.invoke_fiiiii;var a5=env.invoke_iif;var a6=env.invoke_if;var a7=env.invoke_vifffff;var a8=env.invoke_viiiiiiiif;var a9=env.invoke_vifii;var ba=env.invoke_fi;var bb=env.invoke_viiiiiiiiii;var bc=env.invoke_iii;var bd=env.invoke_iiiiii;var be=env.invoke_iiiiiii;var bf=env.invoke_viiiiiiif;var bg=env.invoke_fii;var bh=env.invoke_vifffffffff;var bi=env.invoke_fiiiiiiii;var bj=env.invoke_iifif;var bk=env.invoke_iffff;var bl=env.invoke_viiiiffffiif;var bm=env.invoke_iiiiif;var bn=env.invoke_iiff;var bo=env.invoke_viiif;var bp=env.invoke_i;var bq=env.invoke_viiiifii;var br=env.invoke_iiiifffiii;var bs=env.invoke_viii;var bt=env.invoke_iff;var bu=env.invoke_v;var bv=env.invoke_iiiiiiiii;var bw=env.invoke_iiiii;var bx=env.invoke_viif;var by=env.invoke_iiiif;var bz=env.invoke_fiiifii;var bA=env.invoke_viiii;var bB=env._llvm_lifetime_end;var bC=env._cosf;var bD=env._fabsf;var bE=env._sysconf;var bF=env.___cxa_throw;var bG=env._atexit;var bH=env._abort;var bI=env._fprintf;var bJ=env._llvm_eh_exception;var bK=env._printf;var bL=env._acosf;var bM=env._fflush;var bN=env._sqrtf;var bO=env._write;var bP=env.___setErrNo;var bQ=env._fwrite;var bR=env._send;var bS=env._llvm_pow_f32;var bT=env._llvm_umul_with_overflow_i32;var bU=env._exit;var bV=env._atan2f;var bW=env.___cxa_pure_virtual;var bX=env._llvm_bswap_i16;var bY=env.__formatString;var bZ=env.__reallyNegative;var b_=env._time;var b$=env._asinf;var b0=env.___cxa_does_inherit;var b1=env.___cxa_guard_acquire;var b2=env.__ZSt9terminatev;var b3=env._gettimeofday;var b4=env.___cxa_find_matching_catch;var b5=env._sinf;var b6=env.__ZN20btAxisSweep3InternalItE26processAllOverlappingPairsEP17btOverlapCallback;var b7=env.___assert_func;var b8=env.__ZSt18uncaught_exceptionv;var b9=env._pwrite;var ca=env.___cxa_call_unexpected;var cb=env._sbrk;var cc=env.___cxa_guard_abort;var cd=env.___cxa_allocate_exception;var ce=env.___errno_location;var cf=env.___gxx_personality_v0;var cg=env.__ZN20btAxisSweep3InternalIjE26processAllOverlappingPairsEP17btOverlapCallback;var ch=env._llvm_lifetime_start;var ci=env.___cxa_is_number_type;var cj=env._llvm_bswap_i32;var ck=env._fmod;var cl=env.___cxa_guard_release;var cm=env.__exit;var cn=env.___resumeException;
// EMSCRIPTEN_START_FUNCS
function dJ(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+7>>3<<3;return b|0}function dK(){return i|0}function dL(a){a=a|0;i=a}function dM(a,b){a=a|0;b=b|0;if((r|0)==0){r=a;s=b}}function dN(b){b=b|0;a[k]=a[b];a[k+1|0]=a[b+1|0];a[k+2|0]=a[b+2|0];a[k+3|0]=a[b+3|0]}function dO(b){b=b|0;a[k]=a[b];a[k+1|0]=a[b+1|0];a[k+2|0]=a[b+2|0];a[k+3|0]=a[b+3|0];a[k+4|0]=a[b+4|0];a[k+5|0]=a[b+5|0];a[k+6|0]=a[b+6|0];a[k+7|0]=a[b+7|0]}function dP(a){a=a|0;E=a}function dQ(a){a=a|0;F=a}function dR(a){a=a|0;G=a}function dS(a){a=a|0;H=a}function dT(a){a=a|0;I=a}function dU(a){a=a|0;J=a}function dV(a){a=a|0;K=a}function dW(a){a=a|0;L=a}function dX(a){a=a|0;M=a}function dY(a){a=a|0;N=a}function dZ(){c[n+8>>2]=512;c[n+12>>2]=384;c[n+16>>2]=82;c[n+20>>2]=488;c[n+24>>2]=174;c[n+28>>2]=80;c[n+32>>2]=104;c[n+36>>2]=224;c[m+8>>2]=512;c[m+12>>2]=440;c[m+16>>2]=82;c[m+20>>2]=488;c[m+24>>2]=174;c[m+28>>2]=52;c[m+32>>2]=96;c[m+36>>2]=544;c[8500]=n+8;c[8504]=n+8;c[8508]=n+8;c[8512]=n+8;c[8516]=n+8;c[8520]=n+8;c[8524]=n+8;c[8528]=n+8;c[8532]=n+8;c[8536]=n+8;c[8540]=n+8;c[8544]=n+8;c[8548]=n+8;c[8552]=n+8;c[8556]=n+8;c[8560]=n+8;c[8564]=n+8;c[8568]=n+8;c[8572]=n+8;c[8576]=n+8;c[8580]=n+8;c[8584]=n+8;c[8588]=m+8;c[8590]=m+8;c[8592]=n+8;c[8596]=m+8;c[8598]=m+8;c[8600]=n+8;c[8604]=n+8;c[8608]=n+8;c[8612]=n+8;c[8616]=n+8;c[8620]=n+8;c[8624]=n+8;c[8628]=n+8;c[8632]=m+8;c[8634]=n+8;c[8638]=n+8;c[8642]=n+8;c[8646]=n+8;c[8650]=n+8;c[8654]=m+8;c[8656]=m+8;c[8658]=m+8;c[8660]=m+8;c[8662]=n+8;c[8666]=n+8;c[8670]=n+8;c[8674]=n+8;c[8678]=m+8;c[8680]=n+8;c[8684]=n+8;c[8688]=n+8;c[8692]=n+8;c[8696]=n+8;c[8700]=n+8;c[8704]=n+8;c[8708]=n+8;c[8712]=m+8;c[8714]=n+8;c[8718]=n+8;c[8722]=n+8;c[8726]=m+8;c[8728]=m+8;c[8730]=n+8;c[8734]=n+8;c[8738]=n+8;c[8742]=n+8;c[8746]=n+8;c[8750]=n+8;c[8754]=n+8;c[8758]=n+8;c[8762]=n+8;c[8766]=n+8;c[8770]=n+8;c[8774]=n+8;c[8778]=m+8;c[8780]=m+8;c[8782]=n+8;c[8786]=n+8;c[8790]=n+8;c[8794]=n+8;c[8798]=n+8;c[8802]=n+8;c[8806]=n+8;c[8810]=n+8;c[8814]=m+8;c[8816]=m+8;c[8818]=m+8;c[8820]=n+8;c[8824]=n+8;c[8828]=n+8;c[8832]=n+8;c[8836]=n+8;c[8840]=n+8;c[8844]=n+8;c[8848]=n+8;c[8852]=n+8;c[8856]=n+8;c[8860]=n+8;c[8864]=n+8;c[8868]=n+8;c[8872]=n+8;c[8876]=n+8;c[8880]=n+8;c[8884]=n+8;c[8888]=n+8;c[8892]=m+8;c[8894]=n+8;c[8898]=n+8;c[8902]=n+8;c[8906]=m+8;c[8908]=n+8;c[8912]=n+8;c[8916]=m+8;c[8918]=n+8;c[8922]=n+8;c[8926]=n+8;c[8930]=n+8;c[8934]=n+8;c[8938]=n+8;c[8942]=n+8;c[8946]=m+8;c[8948]=m+8;c[8950]=n+8;c[8954]=n+8;c[8958]=n+8;c[8962]=n+8;c[8966]=n+8;c[8970]=n+8;c[8974]=m+8;c[8976]=m+8;c[8984]=m+8;c[8986]=n+8;c[8990]=n+8;c[8994]=n+8;c[8998]=m+8;c[9e3]=m+8;c[9002]=n+8;c[9014]=n+8;c[9018]=n+8;c[9022]=n+8;c[9026]=n+8;c[9030]=n+8;c[9034]=n+8;c[9038]=n+8;c[9042]=m+8;c[9044]=m+8;c[9046]=n+8;c[9050]=n+8;c[9054]=n+8;c[9058]=n+8;c[9062]=n+8;c[9066]=n+8;c[9070]=n+8;c[9074]=n+8;c[9078]=n+8;c[9082]=n+8;c[9086]=n+8;c[9090]=m+8;c[9092]=n+8;c[9096]=n+8;c[9100]=n+8;c[9104]=m+8;c[9106]=n+8;c[9110]=m+8;c[9112]=n+8;c[9116]=n+8;c[9120]=n+8;c[9124]=m+8;c[9126]=m+8;c[9128]=n+8;c[9132]=n+8;c[9136]=n+8;c[9140]=n+8;c[9144]=n+8;c[9148]=n+8}function d_(a){a=a|0;return 44}function d$(a,b,c,d,e,f,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0;l=a+48|0;m=a|0;do{m=m+16|0;}while((m|0)!=(l|0));g[a>>2]=+g[b>>2];g[a+4>>2]=+g[c>>2];g[a+8>>2]=+g[d>>2];g[a+12>>2]=0.0;g[a+16>>2]=+g[e>>2];g[a+20>>2]=+g[f>>2];g[a+24>>2]=+g[h>>2];g[a+28>>2]=0.0;g[a+32>>2]=+g[i>>2];g[a+36>>2]=+g[j>>2];g[a+40>>2]=+g[k>>2];g[a+44>>2]=0.0;return}function d0(a,b){a=a|0;b=b|0;var c=0,d=0;c=0;while(1){if((c|0)<3){d=0}else{break}while(1){if((d|0)>=4){break}g[b+(c<<4)+(d<<2)>>2]=+g[a+(c<<4)+(d<<2)>>2];d=d+1|0}c=c+1|0}return}function d1(a,b){a=a|0;b=b|0;var c=0,d=0;c=0;while(1){if((c|0)<3){d=0}else{break}while(1){if((d|0)>=4){break}g[a+(c<<4)+(d<<2)>>2]=+h[b+(c<<5)+(d<<3)>>3];d=d+1|0}c=c+1|0}return}function d2(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0,f=0,h=0.0,i=0,j=0.0,k=0,l=0.0,m=0,n=0.0,o=0,p=0.0,q=0,r=0.0,s=0,t=0.0;c=a|0;d=a+4|0;e=+g[d>>2]- +g[b+4>>2];f=a+8|0;h=+g[f>>2]- +g[b+8>>2];i=a+16|0;j=+g[i>>2]- +g[b+16>>2];k=a+20|0;l=+g[k>>2]- +g[b+20>>2];m=a+24|0;n=+g[m>>2]- +g[b+24>>2];o=a+32|0;p=+g[o>>2]- +g[b+32>>2];q=a+36|0;r=+g[q>>2]- +g[b+36>>2];s=a+40|0;t=+g[s>>2]- +g[b+40>>2];g[c>>2]=+g[c>>2]- +g[b>>2];g[d>>2]=e;g[f>>2]=h;g[a+12>>2]=0.0;g[i>>2]=j;g[k>>2]=l;g[m>>2]=n;g[a+28>>2]=0.0;g[o>>2]=p;g[q>>2]=r;g[s>>2]=t;g[a+44>>2]=0.0;return a|0}function d3(a,b){a=a|0;b=b|0;return+(+g[a+8>>2]*+g[b>>2]+ +g[a+24>>2]*+g[b+4>>2]+ +g[a+40>>2]*+g[b+8>>2])}function d4(a,b){a=a|0;b=b|0;var c=0,d=0;c=0;while(1){if((c|0)<3){d=0}else{break}while(1){if((d|0)>=4){break}g[b+(c<<4)+(d<<2)>>2]=+g[a+(c<<4)+(d<<2)>>2];d=d+1|0}c=c+1|0}return}function d5(a,b){a=a|0;b=b|0;return+(+g[a>>2]*+g[b>>2]+ +g[a+16>>2]*+g[b+4>>2]+ +g[a+32>>2]*+g[b+8>>2])}function d6(a,b){a=a|0;b=b|0;return+(+g[a+4>>2]*+g[b>>2]+ +g[a+20>>2]*+g[b+4>>2]+ +g[a+36>>2]*+g[b+8>>2])}function d7(b,c){b=b|0;c=c|0;var d=0.0,e=0.0;do{if((a[43976]|0)==0){if((b1(43976)|0)==0){break}}}while(0);d=+g[b+16+(c<<2)>>2];e=+g[b+32+(c<<2)>>2];g[9778]=+g[b+(c<<2)>>2];g[9779]=d;g[9780]=e;g[9781]=0.0;return 39112}function d8(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0;e=i;i=i+120|0;f=e|0;h=e+8|0;j=e+16|0;k=e+24|0;l=e+32|0;m=e+40|0;n=e+48|0;o=e+56|0;p=e+64|0;q=e+72|0;do{if((a[44104]|0)==0){if((b1(44104)|0)==0){break}else{r=39064}do{r=r+16|0;}while((r|0)!=39112)}}while(0);s=+g[d>>2];g[f>>2]=+g[b>>2]*s;t=+g[d+4>>2];g[h>>2]=+g[b+4>>2]*t;u=+g[d+8>>2];g[j>>2]=+g[b+8>>2]*u;g[k>>2]=+g[b+16>>2]*s;g[l>>2]=+g[b+20>>2]*t;g[m>>2]=+g[b+24>>2]*u;g[n>>2]=+g[b+32>>2]*s;g[o>>2]=+g[b+36>>2]*t;g[p>>2]=+g[b+40>>2]*u;d$(q,f,h,j,k,l,m,n,o,p);p=q;c[9766]=c[p>>2];c[9767]=c[p+4>>2];c[9768]=c[p+8>>2];c[9769]=c[p+12>>2];p=q+16|0;c[9770]=c[p>>2];c[39084>>2]=c[p+4>>2];c[39088>>2]=c[p+8>>2];c[39092>>2]=c[p+12>>2];p=q+32|0;c[9774]=c[p>>2];c[39100>>2]=c[p+4>>2];c[39104>>2]=c[p+8>>2];c[39108>>2]=c[p+12>>2];i=e;return 39064}function d9(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+48|0;f=e|0;do{if((a[43888]|0)==0){if((b1(43888)|0)==0){break}else{g=38264}do{g=g+16|0;}while((g|0)!=38312)}}while(0);ea(f,b,d);d=f;c[9566]=c[d>>2];c[9567]=c[d+4>>2];c[9568]=c[d+8>>2];c[9569]=c[d+12>>2];d=f+16|0;c[9570]=c[d>>2];c[38284>>2]=c[d+4>>2];c[38288>>2]=c[d+8>>2];c[38292>>2]=c[d+12>>2];d=f+32|0;c[9574]=c[d>>2];c[38300>>2]=c[d+4>>2];c[38304>>2]=c[d+8>>2];c[38308>>2]=c[d+12>>2];i=e;return 38264}function ea(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0;d=i;i=i+72|0;e=d|0;f=d+8|0;h=d+16|0;j=d+24|0;k=d+32|0;l=d+40|0;m=d+48|0;n=d+56|0;o=d+64|0;p=+g[b>>2];q=+g[c>>2];r=+g[b+16>>2];s=+g[c+16>>2];t=+g[b+32>>2];u=+g[c+32>>2];g[e>>2]=p*q+r*s+t*u;v=+g[c+4>>2];w=+g[c+20>>2];x=+g[c+36>>2];g[f>>2]=p*v+r*w+t*x;y=+g[c+8>>2];z=+g[c+24>>2];A=+g[c+40>>2];g[h>>2]=p*y+r*z+t*A;t=+g[b+4>>2];r=+g[b+20>>2];p=+g[b+36>>2];g[j>>2]=t*q+r*s+p*u;g[k>>2]=t*v+r*w+p*x;g[l>>2]=t*y+r*z+p*A;p=+g[b+8>>2];r=+g[b+24>>2];t=+g[b+40>>2];g[m>>2]=p*q+r*s+t*u;g[n>>2]=p*v+r*w+t*x;g[o>>2]=p*y+r*z+t*A;d$(a,e,f,h,j,k,l,m,n,o);i=d;return}function eb(a,b){a=a|0;b=b|0;ec(a,b);return}function ec(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0,f=0.0,h=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;c=i;i=i+16|0;d=c|0;e=+g[a>>2];f=+g[a+20>>2];h=+g[a+40>>2];j=e+f+h;if(j>0.0){k=+Q(+(j+1.0));j=k*.5;g[d+12>>2]=j;l=.5/k;k=(+g[a+36>>2]- +g[a+24>>2])*l;g[d>>2]=k;m=(+g[a+8>>2]- +g[a+32>>2])*l;g[d+4>>2]=m;n=(+g[a+16>>2]- +g[a+4>>2])*l;g[d+8>>2]=n;o=k;p=m;q=n;r=j;s=b|0;g[s>>2]=o;t=b+4|0;g[t>>2]=p;u=b+8|0;g[u>>2]=q;v=b+12|0;g[v>>2]=r;i=c;return}if(e<f){w=f<h?2:1}else{w=e<h?2:0}x=((w+1|0)>>>0)%3|0;y=((w+2|0)>>>0)%3|0;h=+Q(+(+g[a+(w<<4)+(w<<2)>>2]- +g[a+(x<<4)+(x<<2)>>2]- +g[a+(y<<4)+(y<<2)>>2]+1.0));g[d+(w<<2)>>2]=h*.5;e=.5/h;z=d+12|0;g[z>>2]=(+g[a+(y<<4)+(x<<2)>>2]- +g[a+(x<<4)+(y<<2)>>2])*e;g[d+(x<<2)>>2]=(+g[a+(x<<4)+(w<<2)>>2]+ +g[a+(w<<4)+(x<<2)>>2])*e;g[d+(y<<2)>>2]=(+g[a+(y<<4)+(w<<2)>>2]+ +g[a+(w<<4)+(y<<2)>>2])*e;o=+g[d>>2];p=+g[d+4>>2];q=+g[d+8>>2];r=+g[z>>2];s=b|0;g[s>>2]=o;t=b+4|0;g[t>>2]=p;u=b+8|0;g[u>>2]=q;v=b+12|0;g[v>>2]=r;i=c;return}function ed(b){b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=i;i=i+120|0;e=d|0;f=d+8|0;h=d+16|0;j=d+24|0;k=d+32|0;l=d+40|0;m=d+48|0;n=d+56|0;o=d+64|0;p=d+72|0;do{if((a[44032]|0)==0){if((b1(44032)|0)==0){break}else{q=38056}do{q=q+16|0;}while((q|0)!=38104)}}while(0);g[e>>2]=+P(+(+g[b>>2]));g[f>>2]=+P(+(+g[b+4>>2]));g[h>>2]=+P(+(+g[b+8>>2]));g[j>>2]=+P(+(+g[b+16>>2]));g[k>>2]=+P(+(+g[b+20>>2]));g[l>>2]=+P(+(+g[b+24>>2]));g[m>>2]=+P(+(+g[b+32>>2]));g[n>>2]=+P(+(+g[b+36>>2]));g[o>>2]=+P(+(+g[b+40>>2]));d$(p,e,f,h,j,k,l,m,n,o);o=p;c[9514]=c[o>>2];c[9515]=c[o+4>>2];c[9516]=c[o+8>>2];c[9517]=c[o+12>>2];o=p+16|0;c[9518]=c[o>>2];c[38076>>2]=c[o+4>>2];c[38080>>2]=c[o+8>>2];c[38084>>2]=c[o+12>>2];o=p+32|0;c[9522]=c[o>>2];c[38092>>2]=c[o+4>>2];c[38096>>2]=c[o+8>>2];c[38100>>2]=c[o+12>>2];i=d;return 38056}function ee(){var a=0,b=0,d=0,e=0;while(1){a=aDx(48)|0;if((a|0)!=0){break}b=(C=c[10744]|0,c[10744]=C+0,C);if((b|0)==0){d=65;break}dC[b&63]()}if((d|0)==65){d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}d=a;b=a+48|0;e=a;do{e=e+16|0;}while((e|0)!=(b|0));return d|0}function ef(a){a=a|0;var b=0,d=0,e=0,f=0;while(1){b=aDx(48)|0;if((b|0)!=0){break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){e=79;break}dC[d&63]()}if((e|0)==79){e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}e=b;d=b+48|0;f=b;do{f=f+16|0;}while((f|0)!=(d|0));em(e,a);return e|0}function eg(a,b,d,e,f,h,j,k,l){a=+a;b=+b;d=+d;e=+e;f=+f;h=+h;j=+j;k=+k;l=+l;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;m=i;i=i+72|0;n=m|0;o=m+8|0;p=m+16|0;q=m+24|0;r=m+32|0;s=m+40|0;t=m+48|0;u=m+56|0;v=m+64|0;g[n>>2]=a;g[o>>2]=b;g[p>>2]=d;g[q>>2]=e;g[r>>2]=f;g[s>>2]=h;g[t>>2]=j;g[u>>2]=k;g[v>>2]=l;while(1){w=aDx(48)|0;if((w|0)!=0){x=96;break}y=(C=c[10744]|0,c[10744]=C+0,C);if((y|0)==0){break}dC[y&63]()}if((x|0)==96){x=w;d$(x,n,o,p,q,r,s,t,u,v);i=m;return x|0}x=cd(4)|0;c[x>>2]=19096;bF(x|0,34368,676);return 0}function eh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+(+g[a+(b<<4)+(c<<2)>>2]*+g[a+(d<<4)+(e<<2)>>2]- +g[a+(b<<4)+(e<<2)>>2]*+g[a+(d<<4)+(c<<2)>>2])}function ei(a,b){a=a|0;b=b|0;var c=0,d=0;c=0;while(1){if((c|0)<3){d=0}else{break}while(1){if((d|0)>=4){break}g[a+(c<<4)+(d<<2)>>2]=+g[b+(c<<4)+(d<<2)>>2];d=d+1|0}c=c+1|0}return}function ej(a,b){a=a|0;b=b|0;return a+(b<<4)|0}function ek(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0,f=0,h=0.0,i=0,j=0.0,k=0,l=0.0,m=0,n=0.0,o=0,p=0.0,q=0,r=0.0,s=0,t=0.0;c=a|0;d=a+4|0;e=+g[d>>2]+ +g[b+4>>2];f=a+8|0;h=+g[f>>2]+ +g[b+8>>2];i=a+16|0;j=+g[i>>2]+ +g[b+16>>2];k=a+20|0;l=+g[k>>2]+ +g[b+20>>2];m=a+24|0;n=+g[m>>2]+ +g[b+24>>2];o=a+32|0;p=+g[o>>2]+ +g[b+32>>2];q=a+36|0;r=+g[q>>2]+ +g[b+36>>2];s=a+40|0;t=+g[s>>2]+ +g[b+40>>2];g[c>>2]=+g[c>>2]+ +g[b>>2];g[d>>2]=e;g[f>>2]=h;g[a+12>>2]=0.0;g[i>>2]=j;g[k>>2]=l;g[m>>2]=n;g[a+28>>2]=0.0;g[o>>2]=p;g[q>>2]=r;g[s>>2]=t;g[a+44>>2]=0.0;return a|0}function el(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0;c=+g[b>>2];d=a|0;e=+g[d>>2];f=+g[b+16>>2];h=+g[a+4>>2];i=+g[b+32>>2];j=+g[a+8>>2];k=+g[b+4>>2];l=+g[b+20>>2];m=+g[b+36>>2];n=+g[b+8>>2];o=+g[b+24>>2];p=+g[b+40>>2];q=+g[a+16>>2];r=+g[a+20>>2];s=+g[a+24>>2];t=+g[a+32>>2];u=+g[a+36>>2];v=+g[a+40>>2];g[d>>2]=c*e+f*h+i*j;g[a+4>>2]=k*e+l*h+m*j;g[a+8>>2]=n*e+o*h+p*j;g[a+12>>2]=0.0;g[a+16>>2]=c*q+f*r+i*s;g[a+20>>2]=k*q+l*r+m*s;g[a+24>>2]=n*q+o*r+p*s;g[a+28>>2]=0.0;g[a+32>>2]=c*t+f*u+i*v;g[a+36>>2]=k*t+l*u+m*v;g[a+40>>2]=n*t+o*u+p*v;g[a+44>>2]=0.0;return a|0}function em(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;c=+g[b>>2];d=+g[b+4>>2];e=+g[b+8>>2];f=+g[b+12>>2];h=2.0/(c*c+d*d+e*e+f*f);i=c*h;j=d*h;k=e*h;h=f*i;l=f*j;m=f*k;f=c*i;i=c*j;n=c*k;c=d*j;j=d*k;d=e*k;g[a>>2]=1.0-(c+d);g[a+4>>2]=i-m;g[a+8>>2]=n+l;g[a+12>>2]=0.0;g[a+16>>2]=i+m;g[a+20>>2]=1.0-(f+d);g[a+24>>2]=j-h;g[a+28>>2]=0.0;g[a+32>>2]=n-l;g[a+36>>2]=j+h;g[a+40>>2]=1.0-(f+c);g[a+44>>2]=0.0;return}function en(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,h=0.0;b=+g[a+20>>2];c=+g[a+40>>2];d=+g[a+24>>2];e=+g[a+36>>2];f=+g[a+32>>2];h=+g[a+16>>2];return+(+g[a>>2]*(b*c-d*e)+ +g[a+4>>2]*(d*f-h*c)+ +g[a+8>>2]*(h*e-b*f))}function eo(a,b,c,d,e,f,h,i,j,k){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;h=+h;i=+i;j=+j;k=+k;g[a>>2]=b;g[a+4>>2]=c;g[a+8>>2]=d;g[a+12>>2]=0.0;g[a+16>>2]=e;g[a+20>>2]=f;g[a+24>>2]=h;g[a+28>>2]=0.0;g[a+32>>2]=i;g[a+36>>2]=j;g[a+40>>2]=k;g[a+44>>2]=0.0;return}function ep(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+48|0;e=d|0;do{if((a[44056]|0)==0){if((b1(44056)|0)==0){break}else{f=37848}do{f=f+16|0;}while((f|0)!=37896)}}while(0);eq(e,b);b=e;c[9462]=c[b>>2];c[9463]=c[b+4>>2];c[9464]=c[b+8>>2];c[9465]=c[b+12>>2];b=e+16|0;c[9466]=c[b>>2];c[37868>>2]=c[b+4>>2];c[37872>>2]=c[b+8>>2];c[37876>>2]=c[b+12>>2];b=e+32|0;c[9470]=c[b>>2];c[37884>>2]=c[b+4>>2];c[37888>>2]=c[b+8>>2];c[37892>>2]=c[b+12>>2];i=d;return 37848}function eq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0;c=i;i=i+72|0;d=c|0;e=c+8|0;f=c+16|0;h=c+24|0;j=c+32|0;k=c+40|0;l=c+48|0;m=c+56|0;n=c+64|0;o=+g[b+20>>2];p=+g[b+40>>2];q=+g[b+24>>2];r=+g[b+36>>2];s=o*p-q*r;t=+g[b+32>>2];u=+g[b+16>>2];v=q*t-u*p;w=u*r-o*t;x=+g[b>>2];y=+g[b+4>>2];z=+g[b+8>>2];A=1.0/(x*s+y*v+z*w);g[d>>2]=s*A;g[e>>2]=(z*r-y*p)*A;g[f>>2]=(y*q-z*o)*A;g[h>>2]=v*A;g[j>>2]=(x*p-z*t)*A;g[k>>2]=(z*u-x*q)*A;g[l>>2]=w*A;g[m>>2]=(y*t-x*r)*A;g[n>>2]=(x*o-y*u)*A;d$(a,d,e,f,h,j,k,l,m,n);i=c;return}function er(){es();return 42816}function es(){var b=0,c=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0;b=i;i=i+72|0;c=b|0;d=b+8|0;e=b+16|0;f=b+24|0;h=b+32|0;j=b+40|0;k=b+48|0;l=b+56|0;m=b+64|0;if((a[43048]|0)!=0){i=b;return}if((b1(43048)|0)==0){i=b;return}g[c>>2]=1.0;g[d>>2]=0.0;g[e>>2]=0.0;g[f>>2]=0.0;g[h>>2]=1.0;g[j>>2]=0.0;g[k>>2]=0.0;g[l>>2]=0.0;g[m>>2]=1.0;d$(42816,c,d,e,f,h,j,k,l,m);i=b;return}function et(b){b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;d=i;i=i+120|0;e=d|0;f=d+8|0;h=d+16|0;j=d+24|0;k=d+32|0;l=d+40|0;m=d+48|0;n=d+56|0;o=d+64|0;p=d+72|0;do{if((a[44064]|0)==0){if((b1(44064)|0)==0){break}else{q=37640}do{q=q+16|0;}while((q|0)!=37688)}}while(0);r=+g[b+20>>2];s=+g[b+40>>2];t=+g[b+24>>2];u=+g[b+36>>2];g[e>>2]=r*s-t*u;v=+g[b+8>>2];w=+g[b+4>>2];g[f>>2]=v*u-w*s;g[h>>2]=w*t-v*r;x=+g[b+32>>2];y=+g[b+16>>2];g[j>>2]=t*x-y*s;z=+g[b>>2];g[k>>2]=z*s-v*x;g[l>>2]=v*y-z*t;g[m>>2]=y*u-r*x;g[n>>2]=w*x-z*u;g[o>>2]=z*r-w*y;d$(p,e,f,h,j,k,l,m,n,o);o=p;c[9410]=c[o>>2];c[9411]=c[o+4>>2];c[9412]=c[o+8>>2];c[9413]=c[o+12>>2];o=p+16|0;c[9414]=c[o>>2];c[37660>>2]=c[o+4>>2];c[37664>>2]=c[o+8>>2];c[37668>>2]=c[o+12>>2];o=p+32|0;c[9418]=c[o>>2];c[37676>>2]=c[o+4>>2];c[37680>>2]=c[o+8>>2];c[37684>>2]=c[o+12>>2];i=d;return 37640}function eu(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ev(a,b,c,d);return}function ev(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;g[b>>2]=1.0;aDD(b+4|0,0,16);g[b+20>>2]=1.0;aDD(b+24|0,0,16);g[b+40>>2]=1.0;g[b+44>>2]=0.0;e=a+4|0;f=a+8|0;h=a+24|0;i=a|0;j=a+20|0;k=a+40|0;l=d;while(1){if((l|0)<=0){m=147;break}n=+P(+(+g[e>>2]));o=+P(+(+g[f>>2]));d=o>n;p=d?o:n;n=+P(+(+g[h>>2]));if(n>p){q=1;r=2;s=0;t=n}else{q=0;r=d?2:1;s=d?1:2;t=p}p=+P(+(+g[i>>2]));n=p+ +P(+(+g[j>>2]));p=(n+ +P(+(+g[k>>2])))*c;if(t>p){u=l}else{if(t>p*1.1920928955078125e-7){u=1}else{m=148;break}}d=a+(q<<4)+(r<<2)|0;p=+g[d>>2];v=a+(r<<4)+(r<<2)|0;w=a+(q<<4)+(q<<2)|0;n=(+g[v>>2]- +g[w>>2])/(p*2.0);o=n*n;if(o*o<83886080.0){x=+Q(+(o+1.0));if(n<0.0){y=n-x}else{y=n+x}x=1.0/y;z=1.0/+Q(+(x*x+1.0));A=z*x;B=z;C=x}else{x=1.0/(n*(.5/o+2.0));o=1.0-x*.5*x;A=o*x;B=o;C=x}g[a+(r<<4)+(q<<2)>>2]=0.0;g[d>>2]=0.0;x=C*p;g[w>>2]=+g[w>>2]-x;g[v>>2]=+g[v>>2]+x;v=a+(s<<4)+(q<<2)|0;x=+g[v>>2];w=a+(s<<4)+(r<<2)|0;p=+g[w>>2];o=B*x-A*p;g[a+(q<<4)+(s<<2)>>2]=o;g[v>>2]=o;o=B*p+A*x;g[a+(r<<4)+(s<<2)>>2]=o;g[w>>2]=o;w=0;while(1){if((w|0)>=3){break}o=+g[b+(w<<4)+(q<<2)>>2];x=+g[b+(w<<4)+(r<<2)>>2];g[b+(w<<4)+(q<<2)>>2]=B*o-A*x;g[b+(w<<4)+(r<<2)>>2]=B*x+A*o;w=w+1|0}l=u-1|0}if((m|0)==147){return}else if((m|0)==148){return}}function ew(a,b){a=a|0;b=b|0;em(a,b);return}function ex(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ey(a,b,c,d);return}function ey(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;e=+S(+b);f=+S(+c);h=+S(+d);i=+T(+b);b=+T(+c);c=+T(+d);d=e*h;j=e*c;k=i*h;l=i*c;g[a>>2]=f*h;g[a+4>>2]=b*k-j;g[a+8>>2]=b*d+l;g[a+12>>2]=0.0;g[a+16>>2]=f*c;g[a+20>>2]=b*l+d;g[a+24>>2]=b*j-k;g[a+28>>2]=0.0;g[a+32>>2]=-0.0-b;g[a+36>>2]=f*i;g[a+40>>2]=f*e;g[a+44>>2]=0.0;return}function ez(a){a=a|0;g[a>>2]=1.0;aDD(a+4|0,0,16);g[a+20>>2]=1.0;aDD(a+24|0,0,16);g[a+40>>2]=1.0;g[a+44>>2]=0.0;return}function eA(a,b){a=a|0;b=b|0;var d=0,e=0;d=a;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+16|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+32|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return a|0}function eB(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;var e=0,f=0,h=0,j=0;e=i;i=i+24|0;f=e|0;h=e+8|0;j=e+16|0;g[f>>2]=b;g[h>>2]=c;g[j>>2]=d;eC(a,f,h,j,1);i=e;return}function eC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0;f=+g[a+32>>2];if(+P(+f)<1.0){do{if(f<-1.0){h=-1.0}else{if(f<=1.0){h=f;break}h=1.0}}while(0);i=+W(+h);h=-0.0-i;j=i+3.1415927410125732;i=+g[a+36>>2];k=+S(+h);l=+g[a+40>>2];m=+Y(+(i/k),+(l/k));n=+S(+j);o=+Y(+(i/n),+(l/n));l=+g[a+16>>2];i=+g[a>>2];p=+Y(+(l/k),+(i/k));q=m;r=+Y(+(l/n),+(i/n));s=j;t=o;u=p;v=h}else{h=+Y(+(+g[a>>2]),+(+g[a+8>>2]))+1.5707963705062866;p=f>0.0?1.5707963705062866:-1.5707963705062866;q=h;r=0.0;s=p;t=h;u=0.0;v=p}a=(e|0)==1;g[b>>2]=a?u:r;g[c>>2]=a?v:s;g[d>>2]=a?q:t;return}function eD(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;var f=0,h=0,j=0,k=0;f=i;i=i+24|0;h=f|0;j=f+8|0;k=f+16|0;g[h>>2]=b;g[j>>2]=c;g[k>>2]=d;eC(a,h,j,k,e);i=f;return}function eE(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ey(a,d,c,b);return}function eF(a,b){a=a|0;b=b|0;var c=0,d=0;c=0;while(1){if((c|0)<3){d=0}else{break}while(1){if((d|0)>=4){break}g[a+(c<<4)+(d<<2)>>2]=+g[b+(c<<4)+(d<<2)>>2];d=d+1|0}c=c+1|0}return}function eG(a,b){a=a|0;b=b|0;return a+(b<<4)|0}function eH(b,c){b=b|0;c=c|0;a[b+24|0]=c&1;return}function eI(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function eJ(a){a=a|0;return+(+g[a+12>>2])}function eK(a){a=a|0;return c[a+4>>2]|0}function eL(b){b=b|0;return(a[b+26|0]&1)!=0|0}function eM(b){b=b|0;return(a[b+16|0]&1)!=0|0}function eN(b,c){b=b|0;c=c|0;a[b+16|0]=c&1;return}function eO(a){a=a|0;return c[a+8>>2]|0}function eP(a,b){a=a|0;b=b|0;c[a+40>>2]=b;return}function eQ(a){a=a|0;return c[a+40>>2]|0}function eR(a){a=a|0;return+(+g[a>>2])}function eS(a){a=a|0;return+(+g[a+36>>2])}function eT(b){b=b|0;return(a[b+24|0]&1)!=0|0}function eU(a,b){a=a|0;b=+b;g[a+28>>2]=b;return}function eV(a,b){a=a|0;b=+b;g[a>>2]=b;return}function eW(a,b){a=a|0;b=+b;g[a+12>>2]=b;return}function eX(b,c){b=b|0;c=c|0;a[b+32|0]=c&1;return}function eY(b){b=b|0;return(a[b+32|0]&1)!=0|0}function eZ(a){a=a|0;return+(+g[a+28>>2])}function e_(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function e$(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function e0(b){b=b|0;return(a[b+25|0]&1)!=0|0}function e1(b,c){b=b|0;c=c|0;a[b+25|0]=c&1;return}function e2(b,c){b=b|0;c=c|0;a[b+26|0]=c&1;return}function e3(a){a=a|0;return(c[a+4>>2]|0)==31|0}function e4(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function e5(a){a=a|0;return c[a+52>>2]|0}function e6(a){a=a|0;return(c[a+4>>2]|0)<7|0}function e7(a){a=a|0;return+(+g[a+28+((((c[a+52>>2]|0)+2|0)%3|0)<<2)>>2])}function e8(a){a=a|0;return+(+g[a+28+(c[a+52>>2]<<2)>>2])}function e9(a){a=a|0;return a+12|0}function fa(a){a=a|0;return+(+g[a+44>>2])}function fb(a){a=a|0;return(c[a+4>>2]|0)<20|0}function fc(a){a=a|0;return(c[a+4>>2]|0)==28|0}function fd(a){a=a|0;return c[a+8>>2]|0}function fe(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function ff(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function fg(a){a=a|0;return(c[a+4>>2]|0)==32|0}function fh(a){a=a|0;return a+28|0}function fi(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function fj(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+48|0;e=d|0;do{if((a[43968]|0)==0){if((b1(43968)|0)==0){break}else{f=37432}do{f=f+16|0;}while((f|0)!=37480)}}while(0);d$(e,b|0,b+16|0,b+32|0,b+4|0,b+20|0,b+36|0,b+8|0,b+24|0,b+40|0);b=e;c[9358]=c[b>>2];c[9359]=c[b+4>>2];c[9360]=c[b+8>>2];c[9361]=c[b+12>>2];b=e+16|0;c[9362]=c[b>>2];c[37452>>2]=c[b+4>>2];c[37456>>2]=c[b+8>>2];c[37460>>2]=c[b+12>>2];b=e+32|0;c[9366]=c[b>>2];c[37468>>2]=c[b+4>>2];c[37472>>2]=c[b+8>>2];c[37476>>2]=c[b+12>>2];i=d;return 37432}function fk(a){a=a|0;if((a|0)==0){return}aDB(a);return}function fl(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0;e=i;i=i+120|0;f=e|0;h=e+8|0;j=e+16|0;k=e+24|0;l=e+32|0;m=e+40|0;n=e+48|0;o=e+56|0;p=e+64|0;q=e+72|0;do{if((a[43896]|0)==0){if((b1(43896)|0)==0){break}else{r=37224}do{r=r+16|0;}while((r|0)!=37272)}}while(0);s=+g[b>>2];t=+g[d>>2];u=+g[b+4>>2];v=+g[d+4>>2];w=+g[b+8>>2];x=+g[d+8>>2];g[f>>2]=s*t+u*v+w*x;y=+g[d+16>>2];z=+g[d+20>>2];A=+g[d+24>>2];g[h>>2]=s*y+u*z+w*A;B=+g[d+32>>2];C=+g[d+36>>2];D=+g[d+40>>2];g[j>>2]=s*B+u*C+w*D;w=+g[b+16>>2];u=+g[b+20>>2];s=+g[b+24>>2];g[k>>2]=w*t+u*v+s*x;g[l>>2]=w*y+u*z+s*A;g[m>>2]=w*B+u*C+s*D;s=+g[b+32>>2];u=+g[b+36>>2];w=+g[b+40>>2];g[n>>2]=s*t+u*v+w*x;g[o>>2]=s*y+u*z+w*A;g[p>>2]=s*B+u*C+w*D;d$(q,f,h,j,k,l,m,n,o,p);p=q;c[9306]=c[p>>2];c[9307]=c[p+4>>2];c[9308]=c[p+8>>2];c[9309]=c[p+12>>2];p=q+16|0;c[9310]=c[p>>2];c[37244>>2]=c[p+4>>2];c[37248>>2]=c[p+8>>2];c[37252>>2]=c[p+12>>2];p=q+32|0;c[9314]=c[p>>2];c[37260>>2]=c[p+4>>2];c[37264>>2]=c[p+8>>2];c[37268>>2]=c[p+12>>2];i=e;return 37224}function fm(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;var e=0.0;d=+g[a+32>>2];do{if(d>1.0){e=-1.0}else{if(d>=-1.0){e=-0.0-d;break}e=1.0}}while(0);+P(+(+W(+e)));return}function fn(a){a=a|0;if((a|0)==0){return}aDB(a);return}function fo(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function fp(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43720]|0)==0){if((b1(43720)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9262]=c[d>>2];c[9263]=c[d+4>>2];c[9264]=c[d+8>>2];c[9265]=c[d+12>>2];i=e;return 37048}function fq(a,b){a=+a;b=+b;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(75)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}c[e+8>>2]=0;g[e+12>>2]=1.0;g[e+16>>2]=1.0;g[e+20>>2]=1.0;g[e+24>>2]=0.0;g[e+44>>2]=.03999999910593033;c[e>>2]=25424;c[e+4>>2]=10;c[e+52>>2]=1;g[e+28>>2]=a;g[e+32>>2]=b*.5;g[e+36>>2]=a;g[e+40>>2]=0.0;return e|0}function fr(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function fs(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function ft(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function fu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function fv(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function fw(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function fx(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43256]|0)==0){if((b1(43256)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9218]=c[d>>2];c[9219]=c[d+4>>2];c[9220]=c[d+8>>2];c[9221]=c[d+12>>2];i=e;return 36872}function fy(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43416]|0)==0){if((b1(43416)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9762]=c[d>>2];c[9763]=c[d+4>>2];c[9764]=c[d+8>>2];c[9765]=c[d+12>>2];i=e;return 39048}function fz(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function fA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function fB(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43576]|0)==0){if((b1(43576)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9718]=c[d>>2];c[9719]=c[d+4>>2];c[9720]=c[d+8>>2];c[9721]=c[d+12>>2];i=e;return 38872}function fC(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function fD(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function fE(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function fF(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a,b);return}function fG(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function fH(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 0:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function fI(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function fJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function fK(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function fL(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function fM(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function fN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function fO(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function fP(){var b=0,d=0,e=0;while(1){b=aDx(44)|0;if((b|0)!=0){d=299;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==299){g[b>>2]=0.0;c[b+4>>2]=0;c[b+8>>2]=1;g[b+12>>2]=1.0;a[b+16|0]=1;c[b+20>>2]=0;a[b+24|0]=0;a[b+25|0]=1;a[b+26|0]=1;g[b+28>>2]=.03999999910593033;a[b+32|0]=0;g[b+36>>2]=0.0;c[b+40>>2]=0;return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function fQ(a){a=a|0;return c[a+4>>2]|0}function fR(a){a=a|0;return(c[a+4>>2]|0)<20|0}function fS(a){a=a|0;return(c[a+4>>2]|0)<7|0}function fT(a){a=a|0;return c[a+104>>2]|0}function fU(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function fV(a){a=a|0;return a+12|0}function fW(a){a=a|0;return+(+g[a+44>>2])}function fX(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function fY(a){a=a|0;return(c[a+4>>2]|0)==28|0}function fZ(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function f_(a){a=a|0;return c[a+8>>2]|0}function f$(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function f0(a){a=a|0;return(c[a+4>>2]|0)==32|0}function f1(a){a=a|0;return c[a+104>>2]|0}function f2(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function f3(a){a=a|0;return cA[c[(c[a>>2]|0)+104>>2]&4095](a)|0}function f4(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43632]|0)==0){if((b1(43632)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b,d);d=f;c[9674]=c[d>>2];c[9675]=c[d+4>>2];c[9676]=c[d+8>>2];c[9677]=c[d+12>>2];i=e;return 38696}function f5(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function f6(b,d){b=b|0;d=d|0;var e=0,f=0.0,h=0.0;do{if((a[43840]|0)==0){if((b1(43840)|0)==0){break}}}while(0);e=c[b+104>>2]|0;f=+g[e+(d<<4)+4>>2]*+g[b+16>>2];h=+g[e+(d<<4)+8>>2]*+g[b+20>>2];g[9630]=+g[e+(d<<4)>>2]*+g[b+12>>2];g[9631]=f;g[9632]=h;g[9633]=0.0;return 38520}function f7(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+96>>2]&1023](a,b,d,e);return}function f8(a){a=a|0;return cA[c[(c[a>>2]|0)+88>>2]&4095](a)|0}function f9(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function ga(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function gb(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+100>>2]&511](a,b,d);return}function gc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function gd(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function ge(a){a=a|0;return cA[c[(c[a>>2]|0)+92>>2]&4095](a)|0}function gf(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function gg(){var a=0,b=0,d=0;c[9806]=(c[9806]|0)+1;a=aDx(131)|0;if((a|0)==0){b=0}else{d=-(a+4|0)&15;c[a+d>>2]=a;b=a+(d+4)|0}d=b;avo(d,0,0,16);return d|0}function gh(a){a=a|0;var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(131)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}e=d;avo(e,a,0,16);return e|0}function gi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(131)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}f=e;avo(f,a,b,16);return f|0}function gj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;c[9806]=(c[9806]|0)+1;e=aDx(131)|0;if((e|0)==0){f=0}else{g=-(e+4|0)&15;c[e+g>>2]=e;f=e+(g+4)|0}g=f;avo(g,a,b,d);return g|0}function gk(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43160]|0)==0){if((b1(43160)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9598]=c[d>>2];c[9599]=c[d+4>>2];c[9600]=c[d+8>>2];c[9601]=c[d+12>>2];i=e;return 38392}function gl(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function gm(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function gn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function go(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43472]|0)==0){if((b1(43472)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9594]=c[d>>2];c[9595]=c[d+4>>2];c[9596]=c[d+8>>2];c[9597]=c[d+12>>2];i=e;return 38376}function gp(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function gq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=b+96|0;f=c[e>>2]|0;g=b+100|0;do{if((f|0)==(c[g>>2]|0)){h=(f|0)==0?1:f<<1;if((f|0)>=(h|0)){i=f;break}if((h|0)==0){j=0;k=f}else{c[9806]=(c[9806]|0)+1;l=aDx((h<<4|4)+15|0)|0;if((l|0)==0){m=0}else{n=-(l+4|0)&15;c[l+n>>2]=l;m=l+(n+4)|0}j=m;k=c[e>>2]|0}n=b+104|0;if((k|0)>0){l=0;do{o=j+(l<<4)|0;if((o|0)!=0){p=o;o=(c[n>>2]|0)+(l<<4)|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2]}l=l+1|0;}while((l|0)<(k|0))}l=c[n>>2]|0;o=b+108|0;if((l|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-16+12>>2]|0)}c[n>>2]=0}a[o]=1;c[n>>2]=j;c[g>>2]=h;i=c[e>>2]|0}else{i=f}}while(0);f=(c[b+104>>2]|0)+(i<<4)|0;if((f|0)==0){q=i;r=q+1|0;c[e>>2]=r;s=b|0;aze(s);return}i=f;f=d;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];q=c[e>>2]|0;r=q+1|0;c[e>>2]=r;s=b|0;aze(s);return}function gr(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function gs(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function gt(a){a=a|0;aze(a|0);return}function gu(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function gv(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function gw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;gx(a|0,b,c,d,e);return}function gx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;f=i;i=i+120|0;h=f|0;j=f+8|0;k=f+16|0;l=f+24|0;m=f+32|0;n=f+40|0;o=f+48|0;p=f+56|0;q=f+64|0;r=f+72|0;s=+g[a+72>>2];t=+g[a+56>>2];u=+g[a+76>>2];v=+g[a+60>>2];w=+g[a+80>>2];x=+g[a+64>>2];y=(s-t)*.5+e;z=(u-v)*.5+e;A=(w-x)*.5+e;e=(s+t)*.5;t=(u+v)*.5;v=(w+x)*.5;a=b|0;g[h>>2]=+P(+(+g[a>>2]));B=b+4|0;g[j>>2]=+P(+(+g[B>>2]));C=b+8|0;g[k>>2]=+P(+(+g[C>>2]));D=b+16|0;g[l>>2]=+P(+(+g[D>>2]));E=b+20|0;g[m>>2]=+P(+(+g[E>>2]));F=b+24|0;g[n>>2]=+P(+(+g[F>>2]));G=b+32|0;g[o>>2]=+P(+(+g[G>>2]));H=b+36|0;g[p>>2]=+P(+(+g[H>>2]));I=b+40|0;g[q>>2]=+P(+(+g[I>>2]));d$(r,h,j,k,l,m,n,o,p,q);x=+g[a>>2]*e+ +g[B>>2]*t+ +g[C>>2]*v+ +g[b+48>>2];w=+g[D>>2]*e+ +g[E>>2]*t+ +g[F>>2]*v+ +g[b+52>>2];u=+g[G>>2]*e+ +g[H>>2]*t+ +g[I>>2]*v+ +g[b+56>>2];v=+g[r>>2]*y+ +g[r+4>>2]*z+ +g[r+8>>2]*A;t=+g[r+16>>2]*y+ +g[r+20>>2]*z+ +g[r+24>>2]*A;e=+g[r+32>>2]*y+ +g[r+36>>2]*z+ +g[r+40>>2]*A;g[c>>2]=x-v;g[c+4>>2]=w-t;g[c+8>>2]=u-e;g[c+12>>2]=0.0;g[d>>2]=x+v;g[d+4>>2]=w+t;g[d+8>>2]=u+e;g[d+12>>2]=0.0;i=f;return}function gy(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43336]|0)==0){if((b1(43336)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9590]=c[d>>2];c[9591]=c[d+4>>2];c[9592]=c[d+8>>2];c[9593]=c[d+12>>2];i=e;return 38360}function gz(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 5:case 4:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 0:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function gA(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function gB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function gC(a){a=a|0;return a+28|0}function gD(a){a=a|0;return(c[a+4>>2]|0)==31|0}function gE(a){a=a|0;return c[a+52>>2]|0}function gF(a){a=a|0;return c[a+4>>2]|0}function gG(a){a=a|0;return c[a+96>>2]|0}function gH(a){a=a|0;return c[a>>2]|0}function gI(a){a=a|0;return c[a>>2]|0}function gJ(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function gK(a){a=a|0;return c[a+12>>2]|0}function gL(a){a=a|0;return c[a+16>>2]|0}function gM(a,b){a=a|0;b=b|0;c[a+24>>2]=b;return}function gN(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function gO(a){a=a|0;return c[a+28>>2]|0}function gP(a){a=a|0;return c[a+20>>2]|0}function gQ(a){a=a|0;return c[a>>2]|0}function gR(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function gS(a,b){a=a|0;b=b|0;c[a+28>>2]=b;return}function gT(a){a=a|0;return c[a+24>>2]|0}function gU(a,b){a=a|0;b=b|0;c[a+16>>2]=b;return}function gV(a){a=a|0;return c[a+4>>2]|0}function gW(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function gX(a,b){a=a|0;b=b|0;c[a+20>>2]=b;return}function gY(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function gZ(a){a=a|0;return c[a+8>>2]|0}function g_(a){a=a|0;return+(+g[a+224>>2])}function g$(a,b){a=a|0;b=+b;g[a+184>>2]=b;return}function g0(a){a=a|0;return+(+g[a+220>>2])}function g1(a,b){a=a|0;b=+b;g[a+224>>2]=b;return}function g2(a,b){a=a|0;b=b|0;c[a+196>>2]=b;return}function g3(a){a=a|0;var b=0;if((c[a+204>>2]&3|0)!=0){return}b=a+216|0;if(((c[b>>2]|0)-4|0)>>>0>=2){c[b>>2]=1}g[a+220>>2]=0.0;return}function g4(a,b){a=a|0;b=b|0;do{if(!b){if((c[a+204>>2]&3|0)==0){break}return}}while(0);b=a+216|0;if(((c[b>>2]|0)-4|0)>>>0>=2){c[b>>2]=1}g[a+220>>2]=0.0;return}function g5(a){a=a|0;return a+132|0}function g6(a){a=a|0;return(c[a+204>>2]&7|0)==0|0}function g7(a,b){a=a|0;b=+b;g[a+248>>2]=b;return}function g8(a){a=a|0;return c[a+208>>2]|0}function g9(a,b){a=a|0;b=b|0;c[a+212>>2]=b;return}function ha(a){a=a|0;return+(+g[a+248>>2])}function hb(a,b){a=a|0;b=b|0;c[a+236>>2]=b;return}function hc(a){a=a|0;return a+164|0}function hd(a){a=a|0;return a+148|0}function he(a,b){a=a|0;b=b|0;c[a+216>>2]=b;return}function hf(a){a=a|0;return a+68|0}function hg(a,b){a=a|0;b=b|0;c[a+208>>2]=b;return}function hh(a,b){a=a|0;b=+b;g[a+240>>2]=b;return}function hi(a){a=a|0;return c[a+204>>2]|0}function hj(a){a=a|0;return(c[a+204>>2]&1|0)!=0|0}function hk(a){a=a|0;return c[a+192>>2]|0}function hl(a){a=a|0;return c[a+188>>2]|0}function hm(a){a=a|0;return+(+g[a+228>>2])}function hn(a){a=a|0;return c[a+236>>2]|0}function ho(a,b){a=a|0;b=+b;g[a+244>>2]=b;return}function hp(a){a=a|0;return a+4|0}function hq(a){a=a|0;var b=0.0;b=+g[a+248>>2];return+(b*b)}function hr(a,b){a=a|0;b=b|0;c[a+192>>2]=b;return}function hs(a){a=a|0;return c[a+212>>2]|0}function ht(a){a=a|0;var b=0;b=c[a+216>>2]|0;return((b|0)==2?0:(b|0)!=5)|0}function hu(a){a=a|0;return c[a+232>>2]|0}function hv(a){a=a|0;return c[a+216>>2]|0}function hw(a){a=a|0;return(c[a+204>>2]&4|0)==0|0}function hx(a,b){a=a|0;b=b|0;var d=0;d=a+216|0;if(((c[d>>2]|0)-4|0)>>>0<2){return}c[d>>2]=b;return}function hy(a){a=a|0;return c[a+200>>2]|0}function hz(a){a=a|0;return+(+g[a+184>>2])}function hA(a){a=a|0;return+(+g[a+240>>2])}function hB(a){a=a|0;return+(+g[a+244>>2])}function hC(a,b){a=a|0;b=+b;g[a+220>>2]=b;return}function hD(a){a=a|0;return c[a+196>>2]|0}function hE(a,b){a=a|0;b=b|0;c[a+204>>2]=b;return}function hF(a){a=a|0;return(c[a+204>>2]&3|0)!=0|0}function hG(a,b){a=a|0;b=+b;g[a+228>>2]=b;return}function hH(a){a=a|0;return(c[a+180>>2]|0)!=0|0}function hI(a,b){a=a|0;b=b|0;c[a+188>>2]=b;return}function hJ(a){a=a|0;return(c[a+204>>2]&2|0)!=0|0}function hK(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function hL(a){a=a|0;return c[a+92>>2]|0}function hM(a){a=a|0;return(c[a+4>>2]|0)<7|0}function hN(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function hO(a,b,d){a=a|0;b=b|0;d=+d;return c0[c[(c[a>>2]|0)+112>>2]&127](a,b,d)|0}function hP(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function hQ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function hR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+108>>2]&1023](a,b,d,e);return}function hS(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function hT(a){a=a|0;return cA[c[(c[a>>2]|0)+84>>2]&4095](a|0)|0}function hU(a){a=a|0;if((a|0)==0){return}aDB(a);return}function hV(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-32+28>>2]|0);return}function hW(){var a=0,b=0,d=0;c[9806]=(c[9806]|0)+1;a=aDx(51)|0;if((a|0)==0){b=0}else{d=-(a+4|0)&15;c[a+d>>2]=a;b=a+(d+4)|0}c[b+24>>2]=2;c[b+28>>2]=0;return b|0}function hX(a,b){a=a|0;b=b|0;var d=0;d=a+132|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function hY(a,b){a=a|0;b=b|0;var d=0;d=a+148|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function hZ(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+20>>2]&511](a,b,d)|0}function h_(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+68|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+84|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+100|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+116|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function h$(){var a=0,b=0,d=0;c[9806]=(c[9806]|0)+1;a=aDx(275)|0;if((a|0)==0){b=0}else{d=-(a+4|0)&15;c[a+d>>2]=a;b=a+(d+4)|0}c[b>>2]=23736;g[b+164>>2]=1.0;g[b+168>>2]=1.0;g[b+172>>2]=1.0;g[b+176>>2]=0.0;c[b+180>>2]=0;g[b+184>>2]=999999984306749400.0;aDD(b+188|0,0,16);c[b+204>>2]=1;c[b+208>>2]=-1;c[b+212>>2]=-1;c[b+216>>2]=1;g[b+220>>2]=0.0;g[b+224>>2]=.5;g[b+228>>2]=0.0;c[b+232>>2]=1;c[b+236>>2]=0;g[b+240>>2]=1.0;g[b+244>>2]=0.0;g[b+248>>2]=0.0;c[b+252>>2]=0;g[b+4>>2]=1.0;aDD(b+8|0,0,16);g[b+24>>2]=1.0;aDD(b+28|0,0,16);g[b+44>>2]=1.0;aDD(b+48|0,0,20);return b|0}function h0(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a,b);return}function h1(a,b){a=a|0;b=b|0;var d=0;if((c[a+252>>2]|0)==0){d=1;return d|0}d=dj[c[c[a>>2]>>2]&511](a,b)|0;return d|0}function h2(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a)|0}function h3(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function h4(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+164|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];do{if(+g[b>>2]!=1.0){f=1}else{if(+g[b+4>>2]!=1.0){f=1;break}f=+g[b+8>>2]!=1.0|0}}while(0);c[a+180>>2]=f;return}function h5(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function h6(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+20|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+36|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+52|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function h7(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function h8(a){a=a|0;return cA[c[(c[a>>2]|0)+104>>2]&4095](a)|0}function h9(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43448]|0)==0){if((b1(43448)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b,d);d=f;c[9586]=c[d>>2];c[9587]=c[d+4>>2];c[9588]=c[d+8>>2];c[9589]=c[d+12>>2];i=e;return 38344}function ia(a,b,d){a=a|0;b=b|0;d=+d;return c0[c[(c[a>>2]|0)+112>>2]&127](a,b,d)|0}function ib(a){a=a|0;return cA[c[(c[a>>2]|0)+88>>2]&4095](a)|0}function ic(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function id(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+100>>2]&511](a,b,d);return}function ie(a){a=a|0;var b=0,d=0,e=0;while(1){b=aDx(4)|0;if((b|0)!=0){d=578;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==578){c[b>>2]=a;return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function ig(a){a=a|0;return a+12|0}function ih(a){a=a|0;return+(+g[a+44>>2])}function ii(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function ij(a){a=a|0;return(c[a+4>>2]|0)<20|0}function ik(a){a=a|0;return(c[a+4>>2]|0)==28|0}function il(a){a=a|0;return c[a+8>>2]|0}function im(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function io(a){a=a|0;return(c[a+4>>2]|0)==32|0}function ip(a){a=a|0;return a+28|0}function iq(a){a=a|0;return(c[a+4>>2]|0)==31|0}function ir(a){a=a|0;return c[a+52>>2]|0}function is(a){a=a|0;return c[a+4>>2]|0}function it(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function iu(a){a=a|0;return+(+g[a+20>>2])}function iv(b){b=b|0;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(115)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}c[e+8>>2]=0;g[e+12>>2]=1.0;g[e+16>>2]=1.0;g[e+20>>2]=1.0;g[e+24>>2]=0.0;g[e+44>>2]=.03999999910593033;c[e+52>>2]=0;g[e+56>>2]=1.0;g[e+60>>2]=1.0;g[e+64>>2]=1.0;g[e+68>>2]=0.0;g[e+72>>2]=-1.0;g[e+76>>2]=-1.0;g[e+80>>2]=-1.0;g[e+84>>2]=0.0;a[e+88|0]=0;c[e>>2]=20672;c[e+92>>2]=b;c[e+4>>2]=3;aze(e);return e|0}function iw(b,d){b=b|0;d=d|0;var e=0,f=0,h=0;c[9806]=(c[9806]|0)+1;e=aDx(115)|0;if((e|0)==0){f=0}else{h=-(e+4|0)&15;c[e+h>>2]=e;f=e+(h+4)|0}h=f;c[f+8>>2]=0;g[f+12>>2]=1.0;g[f+16>>2]=1.0;g[f+20>>2]=1.0;g[f+24>>2]=0.0;g[f+44>>2]=.03999999910593033;c[f+52>>2]=0;g[f+56>>2]=1.0;g[f+60>>2]=1.0;g[f+64>>2]=1.0;g[f+68>>2]=0.0;g[f+72>>2]=-1.0;g[f+76>>2]=-1.0;g[f+80>>2]=-1.0;g[f+84>>2]=0.0;a[f+88|0]=0;c[f>>2]=20672;c[f+92>>2]=b;c[f+4>>2]=3;if(!d){return h|0}aze(f);return h|0}function ix(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43280]|0)==0){if((b1(43280)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9582]=c[d>>2];c[9583]=c[d+4>>2];c[9584]=c[d+8>>2];c[9585]=c[d+12>>2];i=e;return 38328}function iy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function iz(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function iA(a){a=a|0;return cA[c[(c[a>>2]|0)+92>>2]&4095](a)|0}function iB(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function iC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+96>>2]&1023](a,b,d,e);return}function iD(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43088]|0)==0){if((b1(43088)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9578]=c[d>>2];c[9579]=c[d+4>>2];c[9580]=c[d+8>>2];c[9581]=c[d+12>>2];i=e;return 38312}function iE(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function iF(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function iG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function iH(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function iI(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function iJ(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function iK(a){a=a|0;aze(a|0);return}function iL(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function iM(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function iN(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;gx(a|0,b,c,d,e);return}function iO(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43152]|0)==0){if((b1(43152)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9562]=c[d>>2];c[9563]=c[d+4>>2];c[9564]=c[d+8>>2];c[9565]=c[d+12>>2];i=e;return 38248}function iP(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 13:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 0:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function iQ(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function iR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function iS(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function iT(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function iU(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function iV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function iW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+108>>2]&1023](a,b,d,e);return}function iX(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function iY(b,d,e,f){b=b|0;d=d|0;e=e|0;f=+f;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0;h=i;i=i+168|0;j=h|0;k=h+48|0;l=h+64|0;m=h+80|0;n=h+152|0;c[j>>2]=18392;a[j+4|0]=1;o=j+8|0;aDD(o|0,0,36);p=k|0;g[p>>2]=999999984306749400.0;q=k+4|0;g[q>>2]=999999984306749400.0;r=k+8|0;g[r>>2]=999999984306749400.0;g[k+12>>2]=0.0;s=b+92|0;b=c[s>>2]|0;t=c[(c[b>>2]|0)+8>>2]|0;g[l>>2]=-999999984306749400.0;g[l+4>>2]=-999999984306749400.0;g[l+8>>2]=-999999984306749400.0;g[l+12>>2]=0.0;dI[t&1023](b,j|0,l,k);f=+g[j+40>>2];if(f>0.0){u=1.0/f;v=u*+g[j+24>>2];w=u*+g[j+28>>2];x=u*+g[j+32>>2];y=0.0}else{v=+g[o>>2];w=+g[j+12>>2];x=+g[j+16>>2];y=+g[j+20>>2]}g[d+48>>2]=v;g[d+52>>2]=w;g[d+56>>2]=x;g[d+60>>2]=y;c[m>>2]=18360;aDD(m+4|0,0,48);g[m+52>>2]=v;g[m+56>>2]=w;g[m+60>>2]=x;g[m+64>>2]=y;j=c[s>>2]|0;s=c[(c[j>>2]|0)+8>>2]|0;y=-0.0- +g[q>>2];x=-0.0- +g[r>>2];g[n>>2]=-0.0- +g[p>>2];g[n+4>>2]=y;g[n+8>>2]=x;g[n+12>>2]=0.0;dI[s&1023](j,m|0,n,k);k=m+4|0;ev(k,d|0,9999999747378752.0e-21,20);x=+g[k>>2];y=+g[m+24>>2];w=+g[m+44>>2];g[e+12>>2]=0.0;v=1.0/(f*.1666666716337204);g[e>>2]=v*x;g[e+4>>2]=v*y;g[e+8>>2]=v*w;i=h;return}function iZ(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function i_(a){a=a|0;return cA[c[(c[a>>2]|0)+84>>2]&4095](a|0)|0}function i$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+32|0;g=f|0;h=f+16|0;j=c[(c[a>>2]|0)+24>>2]|0;aDD(g|0,0,16);aDD(h|0,0,16);c_[j&127](a,b,d,e,g,h);i=f;return}function i0(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;i=i+16|0;h=g|0;j=c[(c[a>>2]|0)+24>>2]|0;aDD(h|0,0,16);c_[j&127](a,b,d,e,f,h);i=g;return}function i1(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;c_[c[(c[a>>2]|0)+24>>2]&127](a,b,d,e,f,g);return}function i2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+16>>2]&255](a,b,d,e,f);return}function i3(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function i4(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+48>>2]&2047](a,b);return}function i5(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+32>>2]&2047](a,b);return}function i6(a){a=a|0;ct[c[(c[a>>2]|0)+52>>2]&2047](a);return}function i7(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+20>>2]&1023](a,b,d,e);return}function i8(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+28>>2]&1023](a,b,d,e);return}function i9(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return c5[c[(c[a>>2]|0)+8>>2]&63](a,b,d,e,f,g,h,i,j)|0}function ja(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+44>>2]&511](a,b,d);return}function jb(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+12>>2]&511](a,b,d);return}function jc(a){a=a|0;return+(+g[a+20>>2]*+g[a+24>>2])}function jd(b){b=b|0;return(a[b+28|0]&1)!=0|0}function je(a){a=a|0;return+(+g[a+12>>2])}function jf(a){a=a|0;return+(+g[a+24>>2])}function jg(a){a=a|0;return+(+g[a+8>>2])}function jh(a){a=a|0;return+(+g[a+4>>2])}function ji(a){a=a|0;return+(+g[a+16>>2])}function jj(a){a=a|0;var b=0;b=c[a+40>>2]|0;c[b+16>>2]=3;c[b+20>>2]=3;return}function jk(a,b){a=a|0;b=b|0;var d=0;d=c[a+40>>2]|0;c[d+16>>2]=b;c[d+20>>2]=3;return}function jl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+40>>2]|0;c[e+16>>2]=b;c[e+20>>2]=d;return}function jm(a,c){a=a|0;c=c|0;b[a+4>>1]=c;return}function jn(a,c){a=a|0;c=c|0;b[a+6>>1]=c;return}function jo(a){a=a|0;return b[a+6>>1]|0}function jp(a){a=a|0;return b[a+4>>1]|0}function jq(a,b){a=a|0;b=+b;var c=0,d=0;c=i;i=i+8|0;d=c|0;g[d>>2]=b;aq4(a,d);i=c;return}function jr(a){a=a|0;if((a|0)==0){return}aDB(a);return}function js(a,b,c){a=a|0;b=+b;c=+c;var d=0.0,e=0.0;d=(c-b)*.5;g[a+4>>2]=d;c=+ck(+(d+b),6.2831854820251465);do{if(c<-3.1415927410125732){e=c+6.2831854820251465}else{if(c<=3.1415927410125732){e=c;break}e=c-6.2831854820251465}}while(0);g[a>>2]=e;g[a+8>>2]=.8999999761581421;g[a+12>>2]=.30000001192092896;g[a+16>>2]=1.0;return}function jt(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;var e=0.0,f=0.0;e=(c-b)*.5;g[a+4>>2]=e;c=+ck(+(e+b),6.2831854820251465);do{if(c<-3.1415927410125732){f=c+6.2831854820251465}else{if(c<=3.1415927410125732){f=c;break}f=c-6.2831854820251465}}while(0);g[a>>2]=f;g[a+8>>2]=d;g[a+12>>2]=.30000001192092896;g[a+16>>2]=1.0;return}function ju(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0.0,h=0.0;f=(c-b)*.5;g[a+4>>2]=f;c=+ck(+(f+b),6.2831854820251465);do{if(c<-3.1415927410125732){h=c+6.2831854820251465}else{if(c<=3.1415927410125732){h=c;break}h=c-6.2831854820251465}}while(0);g[a>>2]=h;g[a+8>>2]=d;g[a+12>>2]=e;g[a+16>>2]=1.0;return}function jv(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var h=0.0,i=0.0;h=(c-b)*.5;g[a+4>>2]=h;c=+ck(+(h+b),6.2831854820251465);do{if(c<-3.1415927410125732){i=c+6.2831854820251465}else{if(c<=3.1415927410125732){i=c;break}i=c-6.2831854820251465}}while(0);g[a>>2]=i;g[a+8>>2]=d;g[a+12>>2]=e;g[a+16>>2]=f;return}function jw(a){a=a|0;var b=0.0,c=0.0;b=+ck(+(+g[a>>2]+ +g[a+4>>2]),6.2831854820251465);if(b<-3.1415927410125732){c=b+6.2831854820251465;return+c}if(b<=3.1415927410125732){c=b;return+c}c=b-6.2831854820251465;return+c}function jx(b,c){b=b|0;c=+c;var d=0,e=0,f=0,h=0,i=0.0,j=0.0;d=b+20|0;g[d>>2]=0.0;e=b+24|0;g[e>>2]=0.0;f=b+28|0;a[f]=0;h=b+4|0;if(+g[h>>2]<0.0){return}i=+ck(+(c- +g[b>>2]),6.2831854820251465);do{if(i<-3.1415927410125732){j=i+6.2831854820251465}else{if(i<=3.1415927410125732){j=i;break}j=i-6.2831854820251465}}while(0);i=+g[h>>2];if(j<-0.0-i){a[f]=1;g[d>>2]=-0.0-(j+i);g[e>>2]=1.0;return}if(j<=i){return}a[f]=1;g[d>>2]=i-j;g[e>>2]=-1.0;return}function jy(a){a=a|0;var b=0.0,c=0.0;b=+ck(+(+g[a>>2]- +g[a+4>>2]),6.2831854820251465);if(b<-3.1415927410125732){c=b+6.2831854820251465;return+c}if(b<=3.1415927410125732){c=b;return+c}c=b-6.2831854820251465;return+c}function jz(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function jA(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a)|0}function jB(a){a=a|0;return cA[c[(c[a>>2]|0)+8>>2]&4095](a)|0}function jC(a){a=a|0;return cA[c[(c[a>>2]|0)+24>>2]&4095](a)|0}function jD(a){a=a|0;return cA[c[(c[a>>2]|0)+12>>2]&4095](a)|0}function jE(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+20>>2]&511](a,b,d)|0}function jF(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return+(+dq[c[(c[a>>2]|0)+12>>2]&63](a,b,d,e,f,g,h,i))}function jG(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+8>>2]&511](a,b)|0}function jH(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function jI(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;return+(+db[c[(c[a>>2]|0)+12>>2]&127](a,b,d,e,f))}function jJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+8>>2]&255](a,b,d,e,f);return}function jK(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function jL(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function jM(){var b=0,d=0,e=0;while(1){b=aDx(32)|0;if((b|0)!=0){d=792;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==792){g[b>>2]=0.0;g[b+4>>2]=-1.0;g[b+8>>2]=.8999999761581421;g[b+12>>2]=.30000001192092896;g[b+16>>2]=1.0;g[b+20>>2]=0.0;g[b+24>>2]=0.0;a[b+28|0]=0;return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function jN(){var a=0,b=0,d=0,e=0,f=0;a=i;i=i+32|0;b=a|0;while(1){d=aDx(88)|0;if((d|0)!=0){e=804;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){break}dC[f&63]()}if((e|0)==804){e=d;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=4096;c[b+16>>2]=4096;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=1;aw$(e,b);i=a;return e|0}e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}function jO(a){a=a|0;var b=0,d=0,e=0;while(1){b=aDx(88)|0;if((b|0)!=0){d=816;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==816){d=b;aw$(d,a);return d|0}d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}function jP(a){a=a|0;var b=0,d=0,e=0;while(1){b=aDx(16)|0;if((b|0)!=0){d=828;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==828){d=b;c[d>>2]=22536;c[b+4>>2]=c[a>>2];c[d>>2]=19832;return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function jQ(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;while(1){g=aDx(16)|0;if((g|0)!=0){break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){i=837;break}dC[h&63]()}if((i|0)==837){i=cd(4)|0;c[i>>2]=19096;bF(i|0,34368,676);return 0}i=g;h=g;c[h>>2]=22536;j=c[d>>2]|0;c[g+4>>2]=j;c[h>>2]=19832;h=g+8|0;a[h]=0;d=g+12|0;c[d>>2]=b;if((b|0)!=0){return i|0}c[d>>2]=cS[c[(c[j>>2]|0)+12>>2]&511](j,e,f)|0;a[h]=1;return i|0}function jR(){var a=0,b=0,d=0;while(1){a=aDx(40)|0;if((a|0)!=0){b=856;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){b=853;break}dC[d&63]()}if((b|0)==853){d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}else if((b|0)==856){b=a;az0(b,16384,0);return b|0}return 0}function jS(a){a=a|0;var b=0,d=0,e=0;while(1){b=aDx(40)|0;if((b|0)!=0){d=870;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){d=867;break}dC[e&63]()}if((d|0)==867){e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}else if((d|0)==870){d=b;az0(d,a,0);return d|0}return 0}function jT(a,b){a=a|0;b=b|0;return}function jU(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(+g[b+16>>2]>+g[c+32>>2]){d=0;return d|0}if(+g[c+16>>2]>+g[b+32>>2]){d=0;return d|0}if(+g[b+20>>2]>+g[c+36>>2]){d=0;return d|0}if(+g[c+20>>2]>+g[b+36>>2]){d=0;return d|0}if(+g[b+24>>2]>+g[c+40>>2]){d=0;return d|0}d=+g[c+24>>2]<=+g[b+40>>2];return d|0}function jV(a,b){a=a|0;b=b|0;var c=0;if(+g[a+16>>2]>+g[b+32>>2]){c=0;return c|0}if(+g[b+16>>2]>+g[a+32>>2]){c=0;return c|0}if(+g[a+20>>2]>+g[b+36>>2]){c=0;return c|0}if(+g[b+20>>2]>+g[a+36>>2]){c=0;return c|0}if(+g[a+24>>2]>+g[b+40>>2]){c=0;return c|0}c=+g[b+24>>2]<=+g[a+40>>2];return c|0}function jW(a){a=a|0;return c[a+1116>>2]|0}function jX(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function jY(a){a=a|0;return c[a+1112>>2]|0}function jZ(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;d=+g[b+80>>2];if((c[b+144>>2]|0)>1){e=+g[a+1120>>2];f=d<=e;return f|0}else{e=+g[a+1124>>2];f=d<=e;return f|0}return 0}function j_(a){a=a|0;return c[a>>2]|0}function j$(a,b){a=a|0;b=b|0;c[a+1136>>2]=b;return}function j0(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,h=0.0,i=0.0,j=0.0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0;d=+g[a+1120>>2];e=c[a+1116>>2]|0;if((e|0)<=0){f=-1;return f|0}h=+g[b>>2];i=+g[b+4>>2];j=+g[b+8>>2];b=0;k=-1;l=d*d;while(1){d=+g[a+4+(b*276|0)>>2]-h;m=+g[a+4+(b*276|0)+4>>2]-i;n=+g[a+4+(b*276|0)+8>>2]-j;o=d*d+m*m+n*n;p=o<l;q=p?b:k;r=b+1|0;if((r|0)<(e|0)){b=r;k=q;l=p?o:l}else{f=q;break}}return f|0}function j1(a){a=a|0;return c[a>>2]|0}function j2(a,b){a=a|0;b=b|0;return a+4+(b*276|0)|0}function j3(a){a=a|0;return+(+g[a+1120>>2])}function j4(a){a=a|0;var b=0,d=0;b=a+1116|0;a=c[b>>2]|0;d=0;while(1){if((d|0)>=(a|0)){break}d=d+1|0}c[b>>2]=0;return}function j5(a){a=a|0;return c[a+1108>>2]|0}function j6(a,b,d){a=a|0;b=b|0;d=d|0;c[a+1108>>2]=b;c[a+1112>>2]=d;return}function j7(a){a=a|0;return c[a+1136>>2]|0}function j8(a){a=a|0;return+(+g[a+1124>>2])}function j9(a){a=a|0;return c[a+1132>>2]|0}function ka(a){a=a|0;return c[a+1128>>2]|0}function kb(a,b){a=a|0;b=b|0;c[a+1132>>2]=b;return}function kc(a,b){a=a|0;b=b|0;c[a+1128>>2]=b;return}function kd(a){a=a|0;return c[a+64>>2]|0}function ke(a){a=a|0;return(c[a+4>>2]|0)<20|0}function kf(a){a=a|0;return c[a+68>>2]|0}function kg(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+16>>2]&255](a,b,d,e,f);return}function kh(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function ki(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+32|0;g=f|0;h=f+16|0;j=c[(c[a>>2]|0)+24>>2]|0;aDD(g|0,0,16);aDD(h|0,0,16);c_[j&127](a,b,d,e,g,h);i=f;return}function kj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;i=i+16|0;h=g|0;j=c[(c[a>>2]|0)+24>>2]|0;aDD(h|0,0,16);c_[j&127](a,b,d,e,f,h);i=g;return}function kk(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;c_[c[(c[a>>2]|0)+24>>2]&127](a,b,d,e,f,g);return}function kl(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+32>>2]&2047](a,b);return}function km(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+20>>2]&1023](a,b,d,e);return}function kn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+28>>2]&1023](a,b,d,e);return}function ko(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return c5[c[(c[a>>2]|0)+8>>2]&63](a,b,d,e,f,g,h,i,j)|0}function kp(a){a=a|0;ct[c[(c[a>>2]|0)+52>>2]&2047](a);return}function kq(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+44>>2]&511](a,b,d);return}function kr(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+12>>2]&511](a,b,d);return}function ks(a){a=a|0;return cA[c[(c[a>>2]|0)+8>>2]&4095](a)|0}function kt(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a)|0}function ku(a){a=a|0;return cA[c[(c[a>>2]|0)+12>>2]&4095](a)|0}function kv(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+20>>2]&511](a,b,d)|0}function kw(a,b,c){a=a|0;b=b|0;c=c|0;ay6(a,b,c);return}function kx(){var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(1159)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}c[d>>2]=1025;c[d+112>>2]=0;g[d+116>>2]=0.0;a[d+120|0]=0;aDD(d+124|0,0,28);c[d+388>>2]=0;g[d+392>>2]=0.0;a[d+396|0]=0;aDD(d+400|0,0,28);c[d+664>>2]=0;g[d+668>>2]=0.0;a[d+672|0]=0;aDD(d+676|0,0,28);c[d+940>>2]=0;g[d+944>>2]=0.0;a[d+948|0]=0;aDD(d+952|0,0,28);c[d+1108>>2]=0;c[d+1112>>2]=0;c[d+1116>>2]=0;c[d+1136>>2]=0;return d|0}function ky(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=+f;h=+h;var i=0,j=0,k=0;c[9806]=(c[9806]|0)+1;e=aDx(1159)|0;i=-(e+4|0)&15;c[e+i>>2]=e;j=e+(i+4)|0;c[j>>2]=1025;i=j+1108|0;e=j+4|0;while(1){c[e+108>>2]=0;g[e+112>>2]=0.0;a[e+116|0]=0;k=e+276|0;aDD(e+120|0,0,28);if((k|0)==(i|0)){break}else{e=k}}c[j+1108>>2]=b;c[j+1112>>2]=d;c[j+1116>>2]=0;g[j+1120>>2]=f;g[j+1124>>2]=h;return j|0}function kz(a,b){a=a|0;b=b|0;return ay5(a,b)|0}function kA(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0;e=b+1116|0;f=c[e>>2]|0;h=f-1|0;if((h|0)==(d|0)){i=f;j=i-1|0;c[e>>2]=j;return}f=b+4+(d*276|0)|0;d=b+4+(h*276|0)|0;aDC(f|0,d|0,276)|0;c[b+4+(h*276|0)+108>>2]=0;g[b+4+(h*276|0)+208>>2]=0.0;g[b+4+(h*276|0)+240>>2]=0.0;g[b+4+(h*276|0)+272>>2]=0.0;g[b+4+(h*276|0)+112>>2]=0.0;a[b+4+(h*276|0)+116|0]=0;g[b+4+(h*276|0)+120>>2]=0.0;g[b+4+(h*276|0)+124>>2]=0.0;c[b+4+(h*276|0)+144>>2]=0;i=c[e>>2]|0;j=i-1|0;c[e>>2]=j;return}function kB(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-1140+1136>>2]|0);return}function kC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0.0,j=0,k=0.0,l=0,m=0.0,n=0,o=0,p=0,q=0;e=a+4+(d*276|0)+144|0;f=c[e>>2]|0;h=a+4+(d*276|0)+208|0;i=+g[h>>2];j=a+4+(d*276|0)+240|0;k=+g[j>>2];l=a+4+(d*276|0)+272|0;m=+g[l>>2];n=a+4+(d*276|0)+108|0;o=c[n>>2]|0;p=a+4+(d*276|0)|0;q=b;aDC(p|0,q|0,276)|0;c[n>>2]=o;g[a+4+(d*276|0)+112>>2]=i;g[a+4+(d*276|0)+120>>2]=k;g[a+4+(d*276|0)+124>>2]=m;g[h>>2]=i;g[j>>2]=k;g[l>>2]=m;c[e>>2]=f;return}function kD(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+8>>2]&511](a,b,d);return}function kE(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function kF(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function kG(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function kH(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=i;i=i+48|0;e=d|0;f=d+16|0;g=e;h=f;j=b+64|0;if((c[j>>2]|0)!=0){i=d;return}c[9806]=(c[9806]|0)+1;k=aDx(59)|0;do{if((k|0)==0){l=0}else{m=-(k+4|0)&15;n=k+(m+4)|0;c[k+m>>2]=k;if((n|0)==0){l=0;break}a[k+(m+40)|0]=1;c[k+(m+36)>>2]=0;c[k+(m+28)>>2]=0;c[k+(m|32)>>2]=0;c[n>>2]=0;c[k+(m+8)>>2]=0;c[k+(m+12)>>2]=-1;c[k+(m|16)>>2]=0;c[k+(m+20)>>2]=0;l=n}}while(0);c[j>>2]=l;l=b+16|0;if((c[l>>2]|0)<=0){i=d;return}k=b+24|0;b=f+16|0;n=f|0;f=0;do{m=c[k>>2]|0;o=c[m+(f*80|0)+64>>2]|0;dI[c[(c[o>>2]|0)+8>>2]&1023](o,m+(f*80|0)|0,n,e);c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[b+8>>2]=c[g+8>>2];c[b+12>>2]=c[g+12>>2];o=c[j>>2]|0;p=o+4|0;q=c[p>>2]|0;do{if((q|0)==0){c[9806]=(c[9806]|0)+1;r=aDx(63)|0;if((r|0)==0){s=0;break}t=-(r+4|0)&15;u=r+(t+4)|0;c[r+t>>2]=r;if((u|0)==0){s=0;break}aDD(u|0,0,44);s=u}else{c[p>>2]=0;s=q}}while(0);c[s+32>>2]=0;c[s+36>>2]=f;c[s+40>>2]=0;q=s;aDC(q|0,h|0,32)|0;awv(o,c[o>>2]|0,s);q=o+12|0;c[q>>2]=(c[q>>2]|0)+1;c[m+(f*80|0)+76>>2]=s;f=f+1|0;}while((f|0)<(c[l>>2]|0));i=d;return}function kI(){var a=0,b=0,d=0;c[9806]=(c[9806]|0)+1;a=aDx(111)|0;if((a|0)==0){b=0}else{d=-(a+4|0)&15;c[a+d>>2]=a;b=a+(d+4)|0}d=b;auE(d,1);return d|0}function kJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;while(1){d=aDx(40)|0;if((d|0)!=0){e=1008;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){e=1005;break}dC[f&63]()}if((e|0)==1005){f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}else if((e|0)==1008){e=d;az0(e,a,b);return e|0}return 0}function kK(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function kL(a){a=a|0;return(c[a+4>>2]|0)==31|0}function kM(a){a=a|0;return(c[a+4>>2]|0)<7|0}function kN(a,b){a=a|0;b=b|0;return c[(c[a+24>>2]|0)+(b*80|0)+64>>2]|0}function kO(a){a=a|0;return(c[a+4>>2]|0)==28|0}function kP(a,b){a=a|0;b=b|0;return(c[a+24>>2]|0)+(b*80|0)|0}function kQ(a){a=a|0;return c[a+8>>2]|0}function kR(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function kS(a){a=a|0;return c[a+24>>2]|0}function kT(a){a=a|0;return c[a+16>>2]|0}function kU(a){a=a|0;return(c[a+4>>2]|0)==32|0}function kV(a){a=a|0;var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(111)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}e=d;auE(e,a);return e|0}function kW(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function kX(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function kY(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function kZ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function k_(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function k$(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;f=i;i=i+128|0;h=f+64|0;j=f+80|0;k=f+96|0;l=f|0;m=f+16|0;n=f+32|0;o=f+48|0;p=h;q=j;r=k;s=b+68|0;c[s>>2]=(c[s>>2]|0)+1;s=d;c[l>>2]=c[s>>2];c[l+4>>2]=c[s+4>>2];c[l+8>>2]=c[s+8>>2];c[l+12>>2]=c[s+12>>2];s=d+16|0;c[m>>2]=c[s>>2];c[m+4>>2]=c[s+4>>2];c[m+8>>2]=c[s+8>>2];c[m+12>>2]=c[s+12>>2];s=d+32|0;c[n>>2]=c[s>>2];c[n+4>>2]=c[s+4>>2];c[n+8>>2]=c[s+8>>2];c[n+12>>2]=c[s+12>>2];s=d+48|0;c[o>>2]=c[s>>2];c[o+4>>2]=c[s+4>>2];c[o+8>>2]=c[s+8>>2];c[o+12>>2]=c[s+12>>2];s=c[e+4>>2]|0;t=+dh[c[(c[e>>2]|0)+44>>2]&1023](e);dI[c[(c[e>>2]|0)+8>>2]&1023](e,d,h,j);d=b+32|0;u=+g[h>>2];if(+g[d>>2]>u){g[d>>2]=u}d=b+48|0;u=+g[j>>2];if(+g[d>>2]<u){g[d>>2]=u}d=b+36|0;u=+g[h+4>>2];if(+g[d>>2]>u){g[d>>2]=u}d=b+52|0;u=+g[j+4>>2];if(+g[d>>2]<u){g[d>>2]=u}d=b+40|0;u=+g[h+8>>2];if(+g[d>>2]>u){g[d>>2]=u}d=b+56|0;u=+g[j+8>>2];if(+g[d>>2]<u){g[d>>2]=u}d=c[b+64>>2]|0;if((d|0)==0){v=0;w=b+16|0}else{c[r>>2]=c[p>>2];c[r+4>>2]=c[p+4>>2];c[r+8>>2]=c[p+8>>2];c[r+12>>2]=c[p+12>>2];p=k+16|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];q=b+16|0;p=c[q>>2]|0;k=d+4|0;j=c[k>>2]|0;do{if((j|0)==0){c[9806]=(c[9806]|0)+1;h=aDx(63)|0;if((h|0)==0){x=0;break}y=-(h+4|0)&15;z=h+(y+4)|0;c[h+y>>2]=h;if((z|0)==0){x=0;break}aDD(z|0,0,44);x=z}else{c[k>>2]=0;x=j}}while(0);c[x+32>>2]=0;c[x+36>>2]=p;c[x+40>>2]=0;p=x;aDC(p|0,r|0,32)|0;awv(d,c[d>>2]|0,x);r=d+12|0;c[r>>2]=(c[r>>2]|0)+1;v=x;w=q}q=c[w>>2]|0;x=b+20|0;do{if((q|0)==(c[x>>2]|0)){r=(q|0)==0?1:q<<1;if((q|0)>=(r|0)){A=q;break}do{if((r|0)==0){B=0}else{c[9806]=(c[9806]|0)+1;d=aDx((r*80|0|4)+15|0)|0;if((d|0)==0){B=0;break}p=-(d+4|0)&15;c[d+p>>2]=d;B=d+(p+4)|0}}while(0);p=c[b+16>>2]|0;d=b+24|0;if((p|0)>0){j=0;do{k=c[d>>2]|0;z=B+(j*80|0)|0;h=k+(j*80|0)|0;c[z>>2]=c[h>>2];c[z+4>>2]=c[h+4>>2];c[z+8>>2]=c[h+8>>2];c[z+12>>2]=c[h+12>>2];h=B+(j*80|0)+16|0;z=k+(j*80|0)+16|0;c[h>>2]=c[z>>2];c[h+4>>2]=c[z+4>>2];c[h+8>>2]=c[z+8>>2];c[h+12>>2]=c[z+12>>2];z=B+(j*80|0)+32|0;h=k+(j*80|0)+32|0;c[z>>2]=c[h>>2];c[z+4>>2]=c[h+4>>2];c[z+8>>2]=c[h+8>>2];c[z+12>>2]=c[h+12>>2];h=B+(j*80|0)+48|0;z=k+(j*80|0)+48|0;c[h>>2]=c[z>>2];c[h+4>>2]=c[z+4>>2];c[h+8>>2]=c[z+8>>2];c[h+12>>2]=c[z+12>>2];c[B+(j*80|0)+64>>2]=c[k+(j*80|0)+64>>2];c[B+(j*80|0)+68>>2]=c[k+(j*80|0)+68>>2];g[B+(j*80|0)+72>>2]=+g[k+(j*80|0)+72>>2];c[B+(j*80|0)+76>>2]=c[k+(j*80|0)+76>>2];j=j+1|0;}while((j|0)<(p|0))}p=c[d>>2]|0;j=b+28|0;if((p|0)!=0){if((a[j]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[p-80+76>>2]|0)}c[d>>2]=0}a[j]=1;c[d>>2]=B;c[x>>2]=r;A=c[w>>2]|0}else{A=q}}while(0);q=c[b+24>>2]|0;b=q+(A*80|0)|0;c[b>>2]=c[l>>2];c[b+4>>2]=c[l+4>>2];c[b+8>>2]=c[l+8>>2];c[b+12>>2]=c[l+12>>2];l=q+(A*80|0)+16|0;c[l>>2]=c[m>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];m=q+(A*80|0)+32|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];n=q+(A*80|0)+48|0;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];c[q+(A*80|0)+64>>2]=e;c[q+(A*80|0)+68>>2]=s;g[q+(A*80|0)+72>>2]=t;c[q+(A*80|0)+76>>2]=v;c[w>>2]=(c[w>>2]|0)+1;i=f;return}function k0(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a))}function k1(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a,b);return}function k2(a,b){a=a|0;b=b|0;auH(a,b);return}function k3(a){a=a|0;ct[c[(c[a>>2]|0)+64>>2]&2047](a);return}function k4(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function k5(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;e=i;i=i+48|0;f=e|0;g=e+16|0;h=f;j=g;k=a+24|0;l=c[k>>2]|0;m=l+(b*80|0)|0;n=d;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];n=l+(b*80|0)+16|0;m=d+16|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];m=l+(b*80|0)+32|0;n=d+32|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];n=l+(b*80|0)+48|0;l=d+48|0;c[n>>2]=c[l>>2];c[n+4>>2]=c[l+4>>2];c[n+8>>2]=c[l+8>>2];c[n+12>>2]=c[l+12>>2];l=a+64|0;if((c[l>>2]|0)==0){o=a;p=c[o>>2]|0;q=p+64|0;r=c[q>>2]|0;ct[r&2047](a);i=e;return}n=c[(c[k>>2]|0)+(b*80|0)+64>>2]|0;dI[c[(c[n>>2]|0)+8>>2]&1023](n,d,g|0,f);f=g+16|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];h=c[l>>2]|0;l=c[(c[k>>2]|0)+(b*80|0)+76>>2]|0;b=aww(h,l)|0;L1123:do{if((b|0)==0){s=0}else{k=c[h+8>>2]|0;if((k|0)>-1){t=0;u=b}else{s=c[h>>2]|0;break}while(1){if((t|0)>=(k|0)){s=u;break L1123}f=c[u+32>>2]|0;if((f|0)==0){s=u;break}else{t=t+1|0;u=f}}}}while(0);u=l;aDC(u|0,j|0,32)|0;awv(h,s,l);o=a;p=c[o>>2]|0;q=p+64|0;r=c[q>>2]|0;ct[r&2047](a);i=e;return}function k6(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;i=i+48|0;g=f|0;h=f+16|0;j=g;k=h;l=a+24|0;m=c[l>>2]|0;n=m+(b*80|0)|0;o=d;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];o=m+(b*80|0)+16|0;n=d+16|0;c[o>>2]=c[n>>2];c[o+4>>2]=c[n+4>>2];c[o+8>>2]=c[n+8>>2];c[o+12>>2]=c[n+12>>2];n=m+(b*80|0)+32|0;o=d+32|0;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];o=m+(b*80|0)+48|0;m=d+48|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];m=a+64|0;if((c[m>>2]|0)!=0){o=c[(c[l>>2]|0)+(b*80|0)+64>>2]|0;dI[c[(c[o>>2]|0)+8>>2]&1023](o,d,h|0,g);g=h+16|0;c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];j=c[m>>2]|0;m=c[(c[l>>2]|0)+(b*80|0)+76>>2]|0;b=aww(j,m)|0;L1135:do{if((b|0)==0){p=0}else{l=c[j+8>>2]|0;if((l|0)>-1){q=0;r=b}else{p=c[j>>2]|0;break}while(1){if((q|0)>=(l|0)){p=r;break L1135}g=c[r+32>>2]|0;if((g|0)==0){p=r;break}else{q=q+1|0;r=g}}}}while(0);r=m;aDC(r|0,k|0,32)|0;awv(j,p,m)}if(!e){i=f;return}ct[c[(c[a>>2]|0)+64>>2]&2047](a);i=f;return}function k7(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function k8(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function k9(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function la(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function lb(a){a=a|0;return c[a+4>>2]|0}function lc(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function ld(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function le(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function lf(a){a=a|0;return(c[a+4>>2]|0)==31|0}function lg(a){a=a|0;return(c[a+4>>2]|0)<7|0}function lh(a){a=a|0;return c[a+32>>2]|0}function li(a){a=a|0;return(c[a+4>>2]|0)<20|0}function lj(a){a=a|0;return(c[a+4>>2]|0)==28|0}function lk(a){a=a|0;return c[a+8>>2]|0}function ll(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function lm(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function ln(a){a=a|0;return(c[a+4>>2]|0)==32|0}function lo(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function lp(a){a=a|0;return c[a+4>>2]|0}function lq(a){a=a|0;return a+100|0}function lr(a){a=a|0;return c[a+24>>2]|0}function ls(a,b){a=a|0;b=b|0;c[a+76>>2]=b;return}function lt(a){a=a|0;return a+4|0}function lu(a,b){a=a|0;b=b|0;c[a+88>>2]=b;c[a+96>>2]=0;return}function lv(a,b,d){a=a|0;b=b|0;d=d|0;c[a+88>>2]=b;c[a+96>>2]=d;return}function lw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(e){c[a+92>>2]=b}else{c[a+88>>2]=b}c[a+96>>2]=d;return}function lx(b){b=b|0;return(a[b+84|0]&1)!=0|0}function ly(a){a=a|0;return c[a+8>>2]|0}function lz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0.0,N=0,O=0.0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0;f=i;i=i+64|0;h=f|0;j=f+48|0;k=h;l=c[a+16>>2]|0;m=(l|0)>0;if(m){n=c[a+24>>2]|0;o=0.0;p=0.0;q=0.0;r=0.0;s=0;while(1){t=+g[b+(s<<2)>>2];u=r+ +g[n+(s*80|0)+48>>2]*t;v=q+t*+g[n+(s*80|0)+52>>2];w=p+t*+g[n+(s*80|0)+56>>2];x=o+t;y=s+1|0;if((y|0)<(l|0)){o=x;p=w;q=v;r=u;s=y}else{z=x;A=w;B=v;C=u;break}}}else{z=0.0;A=0.0;B=0.0;C=0.0}r=1.0/z;z=C*r;C=B*r;B=A*r;g[d+48>>2]=z;g[d+52>>2]=C;g[d+56>>2]=B;g[d+60>>2]=0.0;s=h|0;n=h+4|0;y=h+8|0;D=h+16|0;E=h+20|0;F=h+24|0;G=h+32|0;H=h+36|0;I=h+40|0;aDD(k|0,0,48);if(!m){J=d|0;ev(h,J,9999999747378752.0e-21,20);K=+g[s>>2];L=e|0;g[L>>2]=K;M=+g[E>>2];N=e+4|0;g[N>>2]=M;O=+g[I>>2];P=e+8|0;g[P>>2]=O;Q=e+12|0;g[Q>>2]=0.0;i=f;return}m=a+24|0;a=j|0;k=j+4|0;R=j+8|0;S=0;T=c[m>>2]|0;r=0.0;A=0.0;q=0.0;p=0.0;o=0.0;u=0.0;v=0.0;w=0.0;x=0.0;do{U=c[T+(S*80|0)+64>>2]|0;V=b+(S<<2)|0;cX[c[(c[U>>2]|0)+32>>2]&255](U,+g[V>>2],j);T=c[m>>2]|0;t=+g[T+(S*80|0)+48>>2]-z;W=+g[T+(S*80|0)+52>>2]-C;X=+g[T+(S*80|0)+56>>2]-B;Y=+g[T+(S*80|0)>>2];Z=+g[T+(S*80|0)+16>>2];_=+g[T+(S*80|0)+32>>2];$=+g[T+(S*80|0)+4>>2];aa=+g[T+(S*80|0)+20>>2];ab=+g[T+(S*80|0)+36>>2];ac=+g[T+(S*80|0)+8>>2];ad=+g[T+(S*80|0)+24>>2];ae=+g[T+(S*80|0)+40>>2];af=+g[a>>2];ag=Y*af;ah=Z*af;ai=_*af;af=+g[k>>2];aj=$*af;ak=aa*af;al=ab*af;af=+g[R>>2];am=ac*af;an=ad*af;ao=ae*af;af=t*t+W*W+X*X;ap=-0.0-t;aq=-0.0-W;ar=-0.0-X;as=+g[V>>2];r=(t*ap+af)*as+(r+(Y*ag+$*aj+ac*am));g[s>>2]=r;A=(W*ap+0.0)*as+(A+(Y*ah+$*ak+ac*an));g[n>>2]=A;q=(X*ap+0.0)*as+(Y*ai+$*al+ac*ao+q);g[y>>2]=q;p=(t*aq+0.0)*as+(Z*ag+aa*aj+ad*am+p);g[D>>2]=p;o=(W*aq+af)*as+(Z*ah+aa*ak+ad*an+o);g[E>>2]=o;u=(X*aq+0.0)*as+(Z*ai+aa*al+ad*ao+u);g[F>>2]=u;v=(t*ar+0.0)*as+(_*ag+ab*aj+ae*am+v);g[G>>2]=v;w=(W*ar+0.0)*as+(_*ah+ab*ak+ae*an+w);g[H>>2]=w;x=(X*ar+af)*as+(_*ai+ab*al+ae*ao+x);g[I>>2]=x;S=S+1|0;}while((S|0)<(l|0));J=d|0;ev(h,J,9999999747378752.0e-21,20);K=+g[s>>2];L=e|0;g[L>>2]=K;M=+g[E>>2];N=e+4|0;g[N>>2]=M;O=+g[I>>2];P=e+8|0;g[P>>2]=O;Q=e+12|0;g[Q>>2]=0.0;i=f;return}function lA(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+60>>2]&2047](a,b);return}function lB(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function lC(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function lD(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function lE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+60>>2]&1023](a,b,d,e);return}function lF(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function lG(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function lH(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function lI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function lJ(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function lK(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function lL(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function lM(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function lN(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function lO(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function lP(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function lQ(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function lR(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+68>>2]&2047](a,b);return}function lS(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+60>>2]&2047](a,b);return}function lT(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+44>>2]&2047](a|0,b);return}function lU(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+80>>2]&2047](a,b);return}function lV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+84>>2]&1023](a,b,d,e);return}function lW(a){a=a|0;ct[c[(c[a>>2]|0)+116>>2]&2047](a);return}function lX(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+124>>2]&2047](a,b);return}function lY(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a|0)|0}function lZ(a){a=a|0;ct[c[(c[a>>2]|0)+40>>2]&2047](a|0);return}function l_(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+24>>2]&1023](a|0,b,d,e);return}function l$(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a,b);return}function l0(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+28>>2]&1023](a|0,b,d,e);return}function l1(a){a=a|0;return cA[c[(c[a>>2]|0)+100>>2]&4095](a)|0}function l2(a,b){a=a|0;b=b|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b,1,-1);return}function l3(a,b,d){a=a|0;b=b|0;d=d|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b,d,-1);return}function l4(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b,d,e);return}function l5(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+88>>2]&2047](a,b);return}function l6(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+48|0;f=e|0;g=e+16|0;h=e+32|0;j=c[b+192>>2]|0;dI[c[(c[j>>2]|0)+8>>2]&1023](j,b+4|0,f,g);c[h>>2]=21168;c[h+4>>2]=b;c[h+8>>2]=a;c[h+12>>2]=d;d=c[a+76>>2]|0;dI[c[(c[d>>2]|0)+28>>2]&1023](d,f,g,h|0);i=e;return}function l7(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a|0);return}function l8(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a|0,b);return}function l9(a){a=a|0;ct[c[(c[a>>2]|0)+76>>2]&2047](a);return}function ma(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;atO(a|0,b,c,d,e,0.0);return}function mb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;atO(a|0,b,c,d,e,f);return}function mc(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function md(a,b){a=a|0;b=b|0;dA[c[(c[a>>2]|0)+52>>2]&511](a,b,0);return}function me(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+52>>2]&511](a,b,d);return}function mf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+168|0;g=f|0;h=a+24|0;j=c[h>>2]|0;k=dE[c[(c[j>>2]|0)+8>>2]&127](j,b,d,0)|0;if((k|0)==0){i=f;return}c[g+4>>2]=0;c[g+136>>2]=b;c[g+140>>2]=d;j=g+8|0;l=b+4|0;aDD(g+144|0,-1|0,16);c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+24|0;j=b+20|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+40|0;l=b+36|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+56|0;j=b+52|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+72|0;l=d+4|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+88|0;j=d+20|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+104|0;l=d+36|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+120|0;j=d+52|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];c[g>>2]=21728;c[g+160>>2]=e;co[c[(c[k>>2]|0)+8>>2]&255](k,b,d,a+28|0,g|0);ct[c[c[k>>2]>>2]&2047](k);g=c[h>>2]|0;cv[c[(c[g>>2]|0)+60>>2]&2047](g,k);i=f;return}function mg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;while(1){d=aDx(36)|0;if((d|0)!=0){e=1205;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){break}dC[f&63]()}if((e|0)==1205){e=d+4|0;c[e>>2]=35;c[d+8>>2]=0;g[d+12>>2]=0.0;c[d>>2]=20128;f=d+16|0;h=b;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];c[d+32>>2]=a;c[e>>2]=22;return d|0}d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}function mh(a){a=a|0;return c[a+76>>2]|0}function mi(b,c){b=b|0;c=c|0;a[b+84|0]=c&1;return}function mj(a,b){a=a|0;b=b|0;c[a+96>>2]=b;return}function mk(a){a=a|0;return c[a+96>>2]|0}function ml(a){a=a|0;return a+28|0}function mm(a,b){a=a|0;b=+b;g[a+8>>2]=b;return}function mn(a){a=a|0;return+(+g[a+4>>2])}function mo(a){a=a|0;return+(+g[a+8>>2])}function mp(a,b){a=a|0;b=+b;g[a>>2]=b;return}function mq(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function mr(a){a=a|0;return+(+g[a>>2])}function ms(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+8|0;e=c[d>>2]|0;f=e+b|0;if(f>>>0>=(c[a+4>>2]|0)>>>0){g=0;return g|0}c[d>>2]=f;g=(c[a>>2]|0)+e|0;return g|0}function mt(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=a+8|0;d=c[b>>2]|0;e=d+8|0;if(e>>>0<(c[a+4>>2]|0)>>>0){c[b>>2]=e;e=a|0;f=(c[e>>2]|0)+d|0;g=e}else{f=0;g=a|0}e=f;d=a+12|0;c[f>>2]=c[d>>2];c[f+4>>2]=(c[g>>2]|0)+(c[b>>2]|0);c[d>>2]=e;return e|0}function mu(a){a=a|0;return(c[a+4>>2]|0)-(c[a+8>>2]|0)|0}function mv(a,b){a=a|0;b=b|0;var d=0;d=a+12|0;if((c[d>>2]|0)!=(b|0)){return}c[d>>2]=c[b>>2];c[a+8>>2]=(c[b+4>>2]|0)-(c[a>>2]|0)-8;return}function mw(a){a=a|0;return c[a+28>>2]|0}function mx(a){a=a|0;return c[a+12>>2]|0}function my(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function mz(b,c){b=b|0;c=c|0;a[b+20|0]=c&1;return}function mA(a){a=a|0;return a+40|0}function mB(a,b){a=a|0;b=b|0;return+(+g[a+1248+(b<<2)>>2])}function mC(a){a=a|0;return a+104|0}function mD(a){a=a|0;return a+1056|0}function mE(a){a=a|0;return c[a+12>>2]|0}function mF(a){a=a|0;return c[a+4>>2]|0}function mG(a){a=a|0;return c[a+24>>2]|0}function mH(a){a=a|0;return+(+g[a+16>>2])}function mI(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d|0;do{if((a[43912]|0)==0){if((b1(43912)|0)==0){break}}}while(0);cv[c[(c[b>>2]|0)+72>>2]&2047](e,b);b=e;c[9558]=c[b>>2];c[9559]=c[b+4>>2];c[9560]=c[b+8>>2];c[9561]=c[b+12>>2];i=d;return 38232}function mJ(a){a=a|0;ct[c[(c[a>>2]|0)+20>>2]&2047](a);return}function mK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;atG(a,b,c,d,e,f);return}function mL(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+64>>2]&2047](a,b);return}function mM(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+132>>2]&2047](a,b);return}function mN(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+104>>2]&511](a,b)|0}function mO(a){a=a|0;return cA[c[(c[a>>2]|0)+96>>2]&4095](a)|0}function mP(a,b){a=a|0;b=+b;return dr[c[(c[a>>2]|0)+48>>2]&63](a,b,1,.01666666753590107)|0}function mQ(a,b,d){a=a|0;b=+b;d=d|0;return dr[c[(c[a>>2]|0)+48>>2]&63](a,b,d,.01666666753590107)|0}function mR(a,b,d,e){a=a|0;b=+b;d=d|0;e=+e;return dr[c[(c[a>>2]|0)+48>>2]&63](a,b,d,e)|0}function mS(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+128>>2]&2047](a,b);return}function mT(a){a=a|0;return cA[c[(c[a>>2]|0)+112>>2]&4095](a)|0}function mU(a,b){a=a|0;b=b|0;atC(a|0,b);return}function mV(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+120>>2]&2047](a,b);return}function mW(a){a=a|0;var b=0;b=c[a+76>>2]|0;return cA[c[(c[b>>2]|0)+36>>2]&4095](b)|0}function mX(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+36>>2]&2047](a|0,b);return}function mY(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+92>>2]&2047](a,b);return}function mZ(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;atI(a,b,c,d,e,f,g,h);return}function m_(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function m$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+8>>2]&127](a,b,d,e)|0}function m0(a){a=a|0;if((a|0)==0){return}aDB(a);return}function m1(b){b=b|0;var d=0,e=0,f=0,g=0;if((b|0)==0){return}d=b+8|0;L1333:do{if((c[d>>2]|0)==0){e=b|0;do{if((a[b+16|0]&1)==0){f=c[e>>2]|0;if((f|0)==0){c[e>>2]=0;c[d>>2]=0;break L1333}else{c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0);g=e;break}}else{g=e}}while(0);c[g>>2]=0;c[d>>2]=0}}while(0);aDB(b);return}function m2(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=b+8|0;if((c[e>>2]|0)==0){f=b|0;do{if((a[b+16|0]&1)==0){g=c[f>>2]|0;if((g|0)==0){h=f;break}c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0);h=f}else{h=f}}while(0);c[h>>2]=0;c[e>>2]=0}c[9806]=(c[9806]|0)+1;e=aDx(d+19|0)|0;if((e|0)==0){i=0;j=b|0;c[j>>2]=i;k=b+4|0;c[k>>2]=d;return}h=-(e+4|0)&15;c[e+h>>2]=e;i=e+(h+4)|0;j=b|0;c[j>>2]=i;k=b+4|0;c[k>>2]=d;return}function m3(b){b=b|0;var d=0,e=0,f=0,g=0;d=b+8|0;if((c[d>>2]|0)!=0){return}e=b|0;do{if((a[b+16|0]&1)==0){f=c[e>>2]|0;if((f|0)==0){g=e;break}c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0);g=e}else{g=e}}while(0);c[g>>2]=0;c[d>>2]=0;return}function m4(a){a=a|0;if((a|0)==0){return}aDB(a);return}function m5(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a|0);return}function m6(a,b,d){a=a|0;b=b|0;d=+d;cE[c[(c[a>>2]|0)+28>>2]&127](a|0,b,d,-1);return}function m7(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;cE[c[(c[a>>2]|0)+28>>2]&127](a|0,b,d,e);return}function m8(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;apb(a|0,b,c,d,e,f,g,h);return}function m9(a,b){a=a|0;b=b|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a|0,b,-1))}function na(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a|0,b,d))}function nb(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0,f=0,h=0.0;d=i;i=i+16|0;e=d|0;g[e>>2]=0.0;g[e+4>>2]=b;g[e+8>>2]=c;g[e+12>>2]=0.0;f=0;while(1){if((f|0)>=3){break}c=+ck(+(+g[e+(f<<2)>>2]),6.2831854820251465);do{if(c<-3.1415927410125732){h=c+6.2831854820251465}else{if(c<=3.1415927410125732){h=c;break}h=c-6.2831854820251465}}while(0);g[a+860+(f<<6)+4>>2]=h;f=f+1|0}i=d;return}function nc(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a|0,b);return}function nd(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a|0,b);return}function ne(a){a=a|0;var b=0,d=0,e=0;while(1){b=aDx(8)|0;if((b|0)!=0){d=1337;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==1337){c[b>>2]=20640;c[b+4>>2]=a;return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function nf(){var a=0,b=0,d=0;while(1){a=aDx(12)|0;if((a|0)!=0){b=1349;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==1349){g[a>>2]=.30000001192092896;g[a+4>>2]=1.0;g[a+8>>2]=0.0;return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function ng(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;while(1){b=aDx(20)|0;if((b|0)!=0){break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){e=1358;break}dC[d&63]()}if((e|0)==1358){e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}e=b;d=b;f=b+4|0;aDD(b|0,0,17);c[d>>2]=0;c[b+8>>2]=0;c[9806]=(c[9806]|0)+1;b=aDx(a+19|0)|0;if((b|0)==0){g=0;c[d>>2]=g;c[f>>2]=a;return e|0}h=-(b+4|0)&15;c[b+h>>2]=b;g=b+(h+4)|0;c[d>>2]=g;c[f>>2]=a;return e|0}function nh(){var a=0,b=0,d=0;while(1){a=aDx(72)|0;if((a|0)!=0){b=1377;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==1377){g[a>>2]=.6000000238418579;g[a+4>>2]=1.0;g[a+8>>2]=.30000001192092896;g[a+16>>2]=0.0;g[a+24>>2]=20.0;c[a+20>>2]=10;g[a+32>>2]=.20000000298023224;g[a+36>>2]=.10000000149011612;g[a+40>>2]=0.0;g[a+28>>2]=1.0;c[a+44>>2]=0;g[a+48>>2]=-.019999999552965164;g[a+52>>2]=0.0;g[a+56>>2]=.8500000238418579;c[a+60>>2]=260;c[a+64>>2]=2;c[a+68>>2]=128;return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function ni(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=3){break}g[b+(c<<2)>>2]=+g[a+860+(c<<6)>>2];c=c+1|0}return}function nj(a){a=a|0;return+(+g[a+32>>2])}function nk(b){b=b|0;return(a[b+20|0]&1)!=0|0}function nl(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function nm(a){a=a|0;return c[a+4>>2]|0}function nn(b,c){b=b|0;c=c|0;a[b+21|0]=c&1;return}function no(a){a=a|0;return a+1104|0}function np(b,c){b=b|0;c=c|0;a[b+1293|0]=c&1;return}function nq(a,b){a=a|0;b=b|0;var c=0,d=0;if((b|0)<3){c=+g[a+688+(b<<2)>>2]>=+g[a+672+(b<<2)>>2];return c|0}d=b-3|0;if(+g[a+860+(d<<6)>>2]>+g[a+860+(d<<6)+4>>2]){c=0;return c|0}c=1;return c|0}function nr(a){a=a|0;return+(+g[a+1188>>2])}function ns(a,b){a=a|0;b=b|0;return a+860+(b<<6)|0}function nt(a){a=a|0;return+(+g[a+1192>>2])}function nu(b,d){b=b|0;d=d|0;var e=0;e=d|0;if((a[b+1300|0]&1)==0){c[e>>2]=6;c[d+4>>2]=0;return}else{c[e>>2]=0;c[d+4>>2]=0;return}}function nv(a){a=a|0;return a+1168|0}function nw(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function nx(b){b=b|0;return(a[b+1293|0]&1)!=0|0}function ny(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function nz(a){a=a|0;return a+1120|0}function nA(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function nB(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function nC(b){b=b|0;return(a[b+1300|0]&1)!=0|0}function nD(a){a=a|0;return+(+g[a+32>>2])}function nE(a){a=a|0;ct[c[(c[a>>2]|0)+44>>2]&2047](a|0);return}function nF(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function nG(b,c){b=b|0;c=c|0;do{if((a[43872]|0)==0){if((b1(43872)|0)==0){break}}}while(0);aDG(38216,b+1200+(c<<4)|0,16);return 38216}function nH(a,b){a=a|0;b=b|0;var d=0;d=b;b=a+688|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];return}function nI(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+40>>2]&511](a|0,b,d)|0}function nJ(a,b){a=a|0;b=b|0;var d=0;d=a+672|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function nK(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function nL(a,b){a=a|0;b=b|0;var d=0;d=b;b=a+672|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];return}function nM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a|0;f=a+40|0;g=b;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+56|0;f=b+16|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=a+72|0;g=b+32|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+88|0;f=b+48|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=a+104|0;g=d;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+120|0;f=d+16|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=a+136|0;g=d+32|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+152|0;f=d+48|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];ct[c[(c[a>>2]|0)+8>>2]&2047](e);aoZ(e,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);return}function nN(a){a=a|0;aoZ(a|0,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);return}function nO(a,b,c){a=a|0;b=b|0;c=c|0;aoZ(a|0,b,c);return}function nP(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ao7(a|0,b,c,d,e,f,g,h,i,j,k,l,0)|0}function nQ(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ao7(a|0,b,c,d,e,f,g,h,i,j,k,l,m)|0}function nR(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;nS(a|0,b,c,d);return}function nS(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;var e=0.0,f=0.0,h=0.0,i=0;if((b|0)<3){g[a+672+(b<<2)>>2]=c;g[a+688+(b<<2)>>2]=d;return}e=+ck(+c,6.2831854820251465);do{if(e<-3.1415927410125732){f=e+6.2831854820251465}else{if(e<=3.1415927410125732){f=e;break}f=e-6.2831854820251465}}while(0);e=+ck(+d,6.2831854820251465);do{if(e<-3.1415927410125732){h=e+6.2831854820251465}else{if(e<=3.1415927410125732){h=e;break}h=e-6.2831854820251465}}while(0);i=b-3|0;g[a+860+(i<<6)>>2]=f;g[a+860+(i<<6)+4>>2]=h;return}function nT(a,b){a=a|0;b=+b;return}function nU(a){a=a|0;return a+672|0}function nV(b){b=b|0;return(a[b+21|0]&1)!=0|0}function nW(a,b){a=a|0;b=b|0;return+(+g[a+1184+(b<<2)>>2])}function nX(b,c){b=b|0;c=c|0;a[b+1300|0]=c&1;return}function nY(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=3){break}g[b+(c<<2)>>2]=+g[a+860+(c<<6)+4>>2];c=c+1|0}return}function nZ(a){a=a|0;return c[a+4>>2]|0}function n_(a){a=a|0;return c[a+8>>2]|0}function n$(a){a=a|0;return+(+g[a+36>>2])}function n0(a){a=a|0;return a+1320|0}function n1(a){a=a|0;return c[a+12>>2]|0}function n2(a){a=a|0;return a+1336|0}function n3(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0,f=0,h=0.0;d=i;i=i+16|0;e=d|0;g[e>>2]=0.0;g[e+4>>2]=b;g[e+8>>2]=c;g[e+12>>2]=0.0;f=0;while(1){if((f|0)>=3){break}c=+ck(+(+g[e+(f<<2)>>2]),6.2831854820251465);do{if(c<-3.1415927410125732){h=c+6.2831854820251465}else{if(c<=3.1415927410125732){h=c;break}h=c-6.2831854820251465}}while(0);g[a+860+(f<<6)>>2]=h;f=f+1|0}i=d;return}function n4(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;cy[c[(c[a>>2]|0)+12>>2]&127](a|0,b,d,e,f);return}function n5(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=0;while(1){if((c|0)>=3){break}d=+ck(+(+g[b+(c<<2)>>2]),6.2831854820251465);do{if(d<-3.1415927410125732){e=d+6.2831854820251465}else{if(d<=3.1415927410125732){e=d;break}e=d-6.2831854820251465}}while(0);g[a+860+(c<<6)>>2]=e;c=c+1|0}return}function n6(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+24>>2]&127](a|0,b,d,e);return}function n7(a,b){a=a|0;b=b|0;var d=0;d=a+688|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function n8(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=0;while(1){if((c|0)>=3){break}d=+ck(+(+g[b+(c<<2)>>2]),6.2831854820251465);do{if(d<-3.1415927410125732){e=d+6.2831854820251465}else{if(d<=3.1415927410125732){e=d;break}e=d-6.2831854820251465}}while(0);g[a+860+(c<<6)+4>>2]=e;c=c+1|0}return}function n9(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0,S=0.0,T=0,U=0;while(1){i=aDx(1352)|0;if((i|0)!=0){break}j=(C=c[10744]|0,c[10744]=C+0,C);if((j|0)==0){k=1500;break}dC[j&63]()}if((k|0)==1500){k=cd(4)|0;c[k>>2]=19096;bF(k|0,34368,676);return 0}k=i;j=i;do{if((a[43040]|0)==0){if((b1(43040)|0)==0){break}do{if((a[43048]|0)==0){if((b1(43048)|0)==0){break}g[10704]=1.0;aDD(42820,0,16);g[10709]=1.0;aDD(42840,0,16);g[10714]=1.0;g[10715]=0.0}}while(0);c[10688]=c[10704];c[10689]=c[10705];c[10690]=c[10706];c[10691]=c[10707];c[10692]=c[10708];c[42772>>2]=c[42836>>2];c[42776>>2]=c[42840>>2];c[42780>>2]=c[42844>>2];c[10696]=c[10712];c[42788>>2]=c[42852>>2];c[42792>>2]=c[42856>>2];c[42796>>2]=c[42860>>2];aDD(42800,0,16)}}while(0);do{if((a[43040]|0)==0){if((b1(43040)|0)==0){break}do{if((a[43048]|0)==0){if((b1(43048)|0)==0){break}g[10704]=1.0;aDD(42820,0,16);g[10709]=1.0;aDD(42840,0,16);g[10714]=1.0;g[10715]=0.0}}while(0);c[10688]=c[10704];c[10689]=c[10705];c[10690]=c[10706];c[10691]=c[10707];c[10692]=c[10708];c[42772>>2]=c[42836>>2];c[42776>>2]=c[42840>>2];c[42780>>2]=c[42844>>2];c[10696]=c[10712];c[42788>>2]=c[42852>>2];c[42792>>2]=c[42856>>2];c[42796>>2]=c[42860>>2];aDD(42800,0,16)}}while(0);aoY(j,b,d,42752,42752,1);c[i>>2]=21976;j=i+1304|0;l=e;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=i+1320|0;j=f;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=i+1336|0;l=h;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=f|0;m=+g[l>>2];j=f+4|0;n=+g[j>>2];o=f+8|0;p=+g[o>>2];q=1.0/+Q(+(m*m+n*n+p*p));r=m*q;g[l>>2]=r;m=n*q;g[j>>2]=m;n=p*q;g[o>>2]=n;o=h|0;q=+g[o>>2];j=h+4|0;p=+g[j>>2];l=h+8|0;s=+g[l>>2];t=1.0/+Q(+(q*q+p*p+s*s));u=q*t;g[o>>2]=u;q=p*t;g[j>>2]=q;p=s*t;g[l>>2]=p;t=n*q-m*p;s=r*p-n*u;v=m*u-r*q;w=+g[e>>2];x=+g[e+4>>2];y=+g[e+8>>2];z=+g[b+4>>2];A=+g[b+20>>2];B=+g[b+36>>2];D=+g[b+8>>2];E=+g[b+24>>2];F=+g[b+40>>2];G=+g[b+12>>2];H=+g[b+28>>2];I=+g[b+44>>2];J=-0.0- +g[b+52>>2];K=-0.0- +g[b+56>>2];L=-0.0- +g[b+60>>2];g[i+40>>2]=t*z+s*A+v*B;g[i+44>>2]=u*z+q*A+p*B;g[i+48>>2]=r*z+m*A+n*B;g[i+52>>2]=0.0;g[i+56>>2]=t*D+s*E+v*F;g[i+60>>2]=u*D+q*E+p*F;g[i+64>>2]=r*D+m*E+n*F;g[i+68>>2]=0.0;g[i+72>>2]=t*G+s*H+v*I;g[i+76>>2]=u*G+q*H+p*I;g[i+80>>2]=r*G+m*H+n*I;g[i+84>>2]=0.0;g[i+88>>2]=w*z+x*A+y*B+(z*J+A*K+B*L);g[i+92>>2]=w*D+x*E+y*F+(D*J+E*K+F*L);g[i+96>>2]=w*G+x*H+y*I+(G*J+H*K+I*L);g[i+100>>2]=0.0;L=+g[d+4>>2];I=+g[d+20>>2];K=+g[d+36>>2];H=+g[d+8>>2];J=+g[d+24>>2];G=+g[d+40>>2];F=+g[d+12>>2];E=+g[d+28>>2];D=+g[d+44>>2];B=-0.0- +g[d+52>>2];A=-0.0- +g[d+56>>2];z=-0.0- +g[d+60>>2];g[i+104>>2]=t*L+s*I+v*K;g[i+108>>2]=u*L+q*I+p*K;g[i+112>>2]=r*L+m*I+n*K;g[i+116>>2]=0.0;g[i+120>>2]=t*H+s*J+v*G;g[i+124>>2]=u*H+q*J+p*G;g[i+128>>2]=r*H+m*J+n*G;g[i+132>>2]=0.0;g[i+136>>2]=t*F+s*E+v*D;g[i+140>>2]=u*F+q*E+p*D;g[i+144>>2]=r*F+m*E+n*D;g[i+148>>2]=0.0;g[i+152>>2]=w*L+x*I+y*K+(L*B+I*A+K*z);g[i+156>>2]=w*H+x*J+y*G+(H*B+J*A+G*z);g[i+160>>2]=w*F+x*E+y*D+(F*B+E*A+D*z);g[i+164>>2]=0.0;aDD(i+672|0,0,32);z=+ck(0.0,6.2831854820251465);do{if(z<-3.1415927410125732){M=z+6.2831854820251465}else{if(z<=3.1415927410125732){M=z;break}M=z-6.2831854820251465}}while(0);g[i+860>>2]=M;M=+ck(-1.5607963800430298,6.2831854820251465);do{if(M<-3.1415927410125732){N=M+6.2831854820251465}else{if(M<=3.1415927410125732){N=M;break}N=M-6.2831854820251465}}while(0);g[i+924>>2]=N;N=+ck(-3.1315927505493164,6.2831854820251465);do{if(N<-3.1415927410125732){O=N+6.2831854820251465}else{if(N<=3.1415927410125732){O=N;break}O=N-6.2831854820251465}}while(0);g[i+988>>2]=O;O=+ck(0.0,6.2831854820251465);do{if(O<-3.1415927410125732){P=O+6.2831854820251465}else{if(O<=3.1415927410125732){P=O;break}P=O-6.2831854820251465}}while(0);g[i+864>>2]=P;P=+ck(1.5607963800430298,6.2831854820251465);do{if(P<-3.1415927410125732){R=P+6.2831854820251465}else{if(P<=3.1415927410125732){R=P;break}R=P-6.2831854820251465}}while(0);g[i+928>>2]=R;R=+ck(3.1315927505493164,6.2831854820251465);if(R<-3.1415927410125732){S=R+6.2831854820251465;T=i+992|0;U=T;g[U>>2]=S;return k|0}if(R<=3.1415927410125732){S=R;T=i+992|0;U=T;g[U>>2]=S;return k|0}S=R-6.2831854820251465;T=i+992|0;U=T;g[U>>2]=S;return k|0}function oa(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function ob(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function oc(a){a=a|0;return(c[a+4>>2]|0)==31|0}function od(a){a=a|0;return(c[a+4>>2]|0)<7|0}function oe(a){a=a|0;return(c[a+4>>2]|0)<20|0}function of(a){a=a|0;return(c[a+4>>2]|0)==28|0}function og(a){a=a|0;return c[a+8>>2]|0}function oh(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function oi(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function oj(a){a=a|0;return(c[a+4>>2]|0)==32|0}function ok(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function ol(a){a=a|0;return c[a+4>>2]|0}function om(a,b){a=a|0;b=+b;var d=0,e=0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0;d=a+216|0;e=c[d>>2]|0;if((e|0)==2|(e|0)==4){return}f=+g[a+304>>2];h=+g[a+308>>2];i=+g[a+312>>2];j=+g[a+464>>2];do{if(f*f+h*h+i*i<j*j){k=+g[a+320>>2];l=+g[a+324>>2];m=+g[a+328>>2];n=+g[a+468>>2];if(k*k+l*l+m*m>=n*n){break}o=a+220|0;g[o>>2]=+g[o>>2]+b;return}}while(0);g[a+220>>2]=0.0;if((e-4|0)>>>0<2){return}c[d>>2]=0;return}function on(a,b){a=a|0;b=b|0;c[a+236>>2]=b;return}function oo(b){b=b|0;var d=0,e=0;d=c[b+216>>2]|0;do{if((d|0)==4){e=0}else{if((a[39240]&1)!=0){e=0;break}if((d-2|0)>>>0<2){e=1;break}if(+g[b+220>>2]>2.0){e=1;break}e=0}}while(0);return e|0}function op(a){a=a|0;return a+132|0}function oq(a,b){a=a|0;b=b|0;c[a+604>>2]=b;return}function or(a){a=a|0;return+(+g[a+240>>2])}function os(a){a=a|0;return a+584|0}function ot(a){a=a|0;return a+552|0}function ou(a,b){a=a|0;b=b|0;c[a+208>>2]=b;return}function ov(a){a=a|0;return+(+g[a+336>>2])}function ow(a){a=a|0;return c[a+204>>2]|0}function ox(a){a=a|0;return a+404|0}function oy(a){a=a|0;return a+52|0}function oz(a){a=a|0;return+(+g[a+220>>2])}function oA(a){a=a|0;return c[a+200>>2]|0}function oB(a){a=a|0;return a+372|0}function oC(a,b){a=a|0;b=b|0;c[a+496>>2]=b;return}function oD(a){a=a|0;var b=0;b=c[a+216>>2]|0;return((b|0)==2?0:(b|0)!=5)|0}function oE(a){a=a|0;return c[a+216>>2]|0}function oF(a){a=a|0;return a+420|0}function oG(a){a=a|0;return a+256|0}function oH(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0;d=+g[b>>2]- +g[a+52>>2];e=+g[b+4>>2]- +g[a+56>>2];f=+g[b+8>>2]- +g[a+60>>2];h=+g[c+8>>2];i=+g[c+4>>2];j=e*h-f*i;k=+g[c>>2];l=f*k-d*h;m=d*i-e*k;n=+g[a+256>>2]*j+ +g[a+272>>2]*l+ +g[a+288>>2]*m;o=+g[a+260>>2]*j+ +g[a+276>>2]*l+ +g[a+292>>2]*m;p=+g[a+264>>2]*j+ +g[a+280>>2]*l+ +g[a+296>>2]*m;return+(+g[a+336>>2]+(k*(o*f-p*e)+i*(p*d-n*f)+h*(n*e-o*d)))}function oI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0;e=a+1320|0;f=b;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+1336|0;e=d;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];h=+g[b>>2];i=+g[b+4>>2];j=+g[b+8>>2];k=1.0/+Q(+(h*h+i*i+j*j));l=h*k;h=i*k;i=j*k;k=+g[d>>2];j=+g[d+4>>2];m=+g[d+8>>2];n=1.0/+Q(+(k*k+j*j+m*m));o=k*n;k=j*n;j=m*n;n=i*k-h*j;m=l*j-i*o;p=h*o-l*k;q=+g[a+1304>>2];r=+g[a+1308>>2];s=+g[a+1312>>2];d=c[a+24>>2]|0;t=+g[d+4>>2];u=+g[d+20>>2];v=+g[d+36>>2];w=+g[d+8>>2];x=+g[d+24>>2];y=+g[d+40>>2];z=+g[d+12>>2];A=+g[d+28>>2];B=+g[d+44>>2];C=-0.0- +g[d+52>>2];D=-0.0- +g[d+56>>2];E=-0.0- +g[d+60>>2];g[a+40>>2]=n*t+m*u+p*v;g[a+44>>2]=o*t+k*u+j*v;g[a+48>>2]=l*t+h*u+i*v;g[a+52>>2]=0.0;g[a+56>>2]=n*w+m*x+p*y;g[a+60>>2]=o*w+k*x+j*y;g[a+64>>2]=l*w+h*x+i*y;g[a+68>>2]=0.0;g[a+72>>2]=n*z+m*A+p*B;g[a+76>>2]=o*z+k*A+j*B;g[a+80>>2]=l*z+h*A+i*B;g[a+84>>2]=0.0;g[a+88>>2]=q*t+r*u+s*v+(t*C+u*D+v*E);g[a+92>>2]=q*w+r*x+s*y+(w*C+x*D+y*E);g[a+96>>2]=q*z+r*A+s*B+(z*C+A*D+B*E);g[a+100>>2]=0.0;b=c[a+28>>2]|0;E=+g[b+4>>2];B=+g[b+20>>2];D=+g[b+36>>2];A=+g[b+8>>2];C=+g[b+24>>2];z=+g[b+40>>2];y=+g[b+12>>2];x=+g[b+28>>2];w=+g[b+44>>2];v=-0.0- +g[b+52>>2];u=-0.0- +g[b+56>>2];t=-0.0- +g[b+60>>2];g[a+104>>2]=n*E+m*B+p*D;g[a+108>>2]=o*E+k*B+j*D;g[a+112>>2]=l*E+h*B+i*D;g[a+116>>2]=0.0;g[a+120>>2]=n*A+m*C+p*z;g[a+124>>2]=o*A+k*C+j*z;g[a+128>>2]=l*A+h*C+i*z;g[a+132>>2]=0.0;g[a+136>>2]=n*y+m*x+p*w;g[a+140>>2]=o*y+k*x+j*w;g[a+144>>2]=l*y+h*x+i*w;g[a+148>>2]=0.0;g[a+152>>2]=q*E+r*B+s*D+(E*v+B*u+D*t);g[a+156>>2]=q*A+r*C+s*z+(A*v+C*u+z*t);g[a+160>>2]=q*y+r*x+s*w+(y*v+x*u+w*t);g[a+164>>2]=0.0;aoZ(a|0,d+4|0,b+4|0);return}function oJ(a,b){a=a|0;b=b|0;return ao$(a|0,b)|0}function oK(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function oL(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function oM(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function oN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+60>>2]&1023](a,b,d,e);return}function oO(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function oP(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function oQ(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function oR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function oS(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function oT(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function oU(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function oV(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function oW(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function oX(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function oY(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function oZ(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function o_(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d|0;do{if((a[43880]|0)==0){if((b1(43880)|0)==0){break}}}while(0);ec(b+4|0,e);b=e;c[9550]=c[b>>2];c[9551]=c[b+4>>2];c[9552]=c[b+8>>2];c[9553]=c[b+12>>2];i=d;return 38200}function o$(a,b,c){a=a|0;b=+b;c=c|0;apV(a,b,c);return}function o0(a,b){a=a|0;b=b|0;c[a+472>>2]=b;if((b|0)==0){return}cv[c[(c[b>>2]|0)+8>>2]&2047](b,a+4|0);return}function o1(a){a=a|0;aDD(a+404|0,0,32);return}function o2(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a|0,b);return}function o3(a,b){a=a|0;b=b|0;ap4(a,b);return}function o4(){var a=0,b=0,d=0;while(1){a=aDx(32)|0;if((a|0)!=0){b=1645;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==1645){c[a+8>>2]=0;g[a+12>>2]=0.0;c[a>>2]=25688;c[a+4>>2]=27;return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function o5(a){a=a|0;return+(+g[a+464>>2])}function o6(a){a=a|0;return c[a+196>>2]|0}function o7(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0,h=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;d=b|0;e=+g[a+340>>2];f=b+4|0;h=+g[a+344>>2];i=+g[f>>2]*h;j=b+8|0;k=+g[a+348>>2];l=+g[j>>2]*k;b=a+404|0;g[b>>2]=+g[b>>2]+ +g[d>>2]*e;b=a+408|0;g[b>>2]=+g[b>>2]+i;b=a+412|0;g[b>>2]=+g[b>>2]+l;l=+g[d>>2]*e;e=+g[f>>2]*h;h=+g[j>>2]*k;k=+g[c+4>>2];i=+g[c+8>>2];m=+g[c>>2];n=(i*l-m*h)*+g[a+540>>2];o=(m*e-k*l)*+g[a+544>>2];c=a+420|0;g[c>>2]=+g[c>>2]+(k*h-i*e)*+g[a+536>>2];c=a+424|0;g[c>>2]=+g[c>>2]+n;c=a+428|0;g[c>>2]=+g[c>>2]+o;return}function o8(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;d=+g[a+320>>2]+ +g[a+520>>2];e=+g[a+324>>2]+ +g[a+524>>2];f=+g[a+328>>2]+ +g[a+528>>2];h=+g[b+8>>2];i=+g[b+4>>2];j=+g[b>>2];k=+g[a+308>>2]+ +g[a+508>>2]+(f*j-d*h);l=+g[a+312>>2]+ +g[a+512>>2]+(d*i-e*j);g[c>>2]=+g[a+304>>2]+ +g[a+504>>2]+(e*h-f*i);g[c+4>>2]=k;g[c+8>>2]=l;g[c+12>>2]=0.0;return}function o9(a){a=a|0;return(c[a+204>>2]&7|0)==0|0}function pa(a){a=a|0;return+(+g[a+224>>2])}function pb(a,b){a=a|0;b=+b;g[a+184>>2]=b;return}function pc(a){a=a|0;return a+520|0}function pd(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0;c=+g[b+4>>2]*+g[a+344>>2];d=+g[b+8>>2]*+g[a+348>>2];e=a+404|0;g[e>>2]=+g[e>>2]+ +g[b>>2]*+g[a+340>>2];b=a+408|0;g[b>>2]=+g[b>>2]+c;b=a+412|0;g[b>>2]=+g[b>>2]+d;return}function pe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0.0,h=0,i=0.0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;d=+g[a+336>>2];if(d==0.0){return}e=b|0;f=+g[a+340>>2];h=b+4|0;i=+g[a+344>>2];j=b+8|0;k=+g[a+348>>2];l=+g[h>>2]*i*d;m=+g[j>>2]*k*d;b=a+304|0;g[b>>2]=+g[b>>2]+ +g[e>>2]*f*d;b=a+308|0;g[b>>2]=+g[b>>2]+l;b=a+312|0;g[b>>2]=+g[b>>2]+m;if((a+536|0)==0){return}m=+g[e>>2]*f;f=+g[h>>2]*i;i=+g[j>>2]*k;k=+g[c+4>>2];l=+g[c+8>>2];d=k*i-l*f;n=+g[c>>2];o=l*m-n*i;i=n*f-k*m;m=(+g[a+272>>2]*d+ +g[a+276>>2]*o+ +g[a+280>>2]*i)*+g[a+540>>2];k=(+g[a+288>>2]*d+ +g[a+292>>2]*o+ +g[a+296>>2]*i)*+g[a+544>>2];c=a+320|0;g[c>>2]=+g[c>>2]+(+g[a+256>>2]*d+ +g[a+260>>2]*o+ +g[a+264>>2]*i)*+g[a+536>>2];c=a+324|0;g[c>>2]=+g[c>>2]+m;c=a+328|0;g[c>>2]=+g[c>>2]+k;return}function pf(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0;c=+g[b+4>>2]*+g[a+540>>2];d=+g[b+8>>2]*+g[a+544>>2];e=a+420|0;g[e>>2]=+g[e>>2]+ +g[b>>2]*+g[a+536>>2];b=a+424|0;g[b>>2]=+g[b>>2]+c;b=a+428|0;g[b>>2]=+g[b>>2]+d;return}function pg(a){a=a|0;return c[a+208>>2]|0}function ph(a){a=a|0;return a+536|0}function pi(a){a=a|0;return a+148|0}function pj(a,b){a=a|0;b=b|0;c[a+216>>2]=b;return}function pk(a){a=a|0;return a+320|0}function pl(a){a=a|0;return a+304|0}function pm(a){a=a|0;return c[a+188>>2]|0}function pn(a){a=a|0;return c[a+236>>2]|0}function po(a,b){a=a|0;b=+b;g[a+244>>2]=b;return}function pp(a){a=a|0;return(c[a+188>>2]|0)!=0|0}function pq(a,b){a=a|0;b=b|0;c[a+192>>2]=b;return}function pr(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0;c=+g[b>>2];d=+g[b+4>>2];e=+g[b+8>>2];return+(c*(+g[a+256>>2]*c+ +g[a+272>>2]*d+ +g[a+288>>2]*e)+d*(+g[a+260>>2]*c+ +g[a+276>>2]*d+ +g[a+292>>2]*e)+e*(+g[a+264>>2]*c+ +g[a+280>>2]*d+ +g[a+296>>2]*e))}function ps(a){a=a|0;return+(+g[a+440>>2])}function pt(a,b){a=a|0;b=b|0;c[a+188>>2]=b;return}function pu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;d=a+480|0;e=c[d>>2]|0;f=a+488|0;g=0;while(1){if((g|0)>=(e|0)){h=e;i=1683;break}j=c[f>>2]|0;k=j+(g<<2)|0;if((c[k>>2]|0)==(b|0)){break}else{g=g+1|0}}if((i|0)==1683){l=(h|0)>0;m=l&1;n=a+252|0;c[n>>2]=m;return}i=e-1|0;c[k>>2]=c[j+(i<<2)>>2];c[(c[f>>2]|0)+(i<<2)>>2]=b;b=(c[d>>2]|0)-1|0;c[d>>2]=b;h=b;l=(h|0)>0;m=l&1;n=a+252|0;c[n>>2]=m;return}function pv(a){a=a|0;return a+536|0}function pw(a){a=a|0;return(c[a+204>>2]&3|0)!=0|0}function px(a,b){a=a|0;b=+b;g[a+228>>2]=b;return}function py(a){a=a|0;return(c[a+204>>2]&2|0)!=0|0}function pz(a){a=a|0;var b=0.0,c=0.0;if(+g[a+336>>2]==0.0){return}b=+g[a+308>>2]+ +g[a+508>>2];c=+g[a+312>>2]+ +g[a+512>>2];g[a+304>>2]=+g[a+304>>2]+ +g[a+504>>2];g[a+308>>2]=b;g[a+312>>2]=c;g[a+316>>2]=0.0;c=+g[a+324>>2]+ +g[a+524>>2];b=+g[a+328>>2]+ +g[a+528>>2];g[a+320>>2]=+g[a+320>>2]+ +g[a+520>>2];g[a+324>>2]=c;g[a+328>>2]=b;g[a+332>>2]=0.0;return}function pA(b){b=b|0;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(627)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}f=e;g[e+164>>2]=1.0;g[e+168>>2]=1.0;g[e+172>>2]=1.0;g[e+176>>2]=0.0;c[e+180>>2]=0;g[e+184>>2]=999999984306749400.0;aDD(e+188|0,0,16);c[e+204>>2]=1;c[e+208>>2]=-1;c[e+212>>2]=-1;c[e+216>>2]=1;g[e+220>>2]=0.0;g[e+224>>2]=.5;g[e+228>>2]=0.0;c[e+232>>2]=1;c[e+236>>2]=0;g[e+240>>2]=1.0;g[e+244>>2]=0.0;g[e+248>>2]=0.0;c[e+252>>2]=0;g[e+4>>2]=1.0;aDD(e+8|0,0,16);g[e+24>>2]=1.0;aDD(e+28|0,0,16);g[e+44>>2]=1.0;aDD(e+48|0,0,20);c[e>>2]=26048;a[e+492|0]=1;c[e+488>>2]=0;c[e+480>>2]=0;c[e+484>>2]=0;ap_(f,b);return f|0}function pB(a,b,d){a=+a;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e|0;c[9806]=(c[9806]|0)+1;g=aDx(627)|0;if((g|0)==0){h=0}else{j=-(g+4|0)&15;c[g+j>>2]=g;h=g+(j+4)|0}j=h;aDD(f|0,0,16);ap$(j,a,b,d,f);i=e;return j|0}function pC(a,b,d,e){a=+a;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;c[9806]=(c[9806]|0)+1;f=aDx(627)|0;if((f|0)==0){g=0}else{h=-(f+4|0)&15;c[f+h>>2]=f;g=f+(h+4)|0}h=g;ap$(h,a,b,d,e);return h|0}function pD(a,b,c){a=a|0;b=b|0;c=c|0;pe(a,b,c);return}function pE(a,b,c){a=a|0;b=+b;c=c|0;anY(a+4|0,+g[a+304>>2],+g[a+308>>2],+g[a+312>>2],a+320|0,b,c);return}function pF(a,b){a=a|0;b=b|0;return dj[c[c[a>>2]>>2]&511](a,b)|0}function pG(a,b){a=a|0;b=b|0;var d=0;d=a+320|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function pH(a,b){a=a|0;b=b|0;ap6(a,b);return}function pI(a,b){a=a|0;b=+b;ap5(a,b);return}function pJ(a,b){a=a|0;b=b|0;ap4(a,b);return}function pK(a,b){a=a|0;b=+b;var d=0,e=0,f=0,h=0,j=0,k=0.0,l=0,m=0.0;d=i;i=i+64|0;e=d|0;f=e;if(+g[a+336>>2]==0.0){i=d;return}h=a+304|0;j=a+308|0;k=+g[j>>2]+ +g[a+508>>2];l=a+312|0;m=+g[l>>2]+ +g[a+512>>2];g[h>>2]=+g[h>>2]+ +g[a+504>>2];g[j>>2]=k;g[l>>2]=m;g[a+316>>2]=0.0;l=a+320|0;j=a+324|0;m=+g[j>>2]+ +g[a+524>>2];h=a+328|0;k=+g[h>>2]+ +g[a+528>>2];g[l>>2]=+g[l>>2]+ +g[a+520>>2];g[j>>2]=m;g[h>>2]=k;g[a+332>>2]=0.0;h=a+4|0;anY(h,+g[a+568>>2],+g[a+572>>2],+g[a+576>>2],a+584|0,b,e);j=h;c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];f=a+20|0;j=e+16|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];j=a+36|0;f=e+32|0;c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];f=a+52|0;a=e+48|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];i=d;return}function pL(a,b){a=a|0;b=b|0;var d=0;d=a+132|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function pM(a){a=a|0;var b=0.0,d=0.0,e=0;if((c[a+204>>2]&3|0)!=0){return}b=+g[a+360>>2]*+g[a+344>>2];d=+g[a+364>>2]*+g[a+348>>2];e=a+404|0;g[e>>2]=+g[a+356>>2]*+g[a+340>>2]+ +g[e>>2];e=a+408|0;g[e>>2]=b+ +g[e>>2];e=a+412|0;g[e>>2]=d+ +g[e>>2];return}function pN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0.0,f=0.0,h=0;if(+g[a+336>>2]==0.0){return}e=+g[b+4>>2]*d;f=+g[b+8>>2]*d;h=a+504|0;g[h>>2]=+g[h>>2]+ +g[b>>2]*d;b=a+508|0;g[b>>2]=+g[b>>2]+e;b=a+512|0;g[b>>2]=+g[b>>2]+f;f=+g[c+4>>2]*+g[a+540>>2]*d;e=+g[c+8>>2]*+g[a+544>>2]*d;b=a+520|0;g[b>>2]=+g[b>>2]+ +g[c>>2]*+g[a+536>>2]*d;c=a+524|0;g[c>>2]=+g[c>>2]+f;c=a+528|0;g[c>>2]=+g[c>>2]+e;return}function pO(a,b){a=a|0;b=b|0;c[a+196>>2]=b;return}function pP(a){a=a|0;var b=0;if((c[a+204>>2]&3|0)!=0){return}b=a+216|0;if(((c[b>>2]|0)-4|0)>>>0>=2){c[b>>2]=1}g[a+220>>2]=0.0;return}function pQ(a,b){a=a|0;b=b|0;do{if(!b){if((c[a+204>>2]&3|0)==0){break}return}}while(0);b=a+216|0;if(((c[b>>2]|0)-4|0)>>>0>=2){c[b>>2]=1}g[a+220>>2]=0.0;return}function pR(a){a=a|0;return c[a+472>>2]|0}function pS(a,b){a=a|0;b=b|0;c[a+212>>2]=b;return}function pT(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0.0,f=0.0,h=0;if(+g[a+336>>2]==0.0){return}e=+g[b+4>>2]*d;f=+g[b+8>>2]*d;h=a+568|0;g[h>>2]=+g[h>>2]+ +g[b>>2]*d;b=a+572|0;g[b>>2]=+g[b>>2]+e;b=a+576|0;g[b>>2]=+g[b>>2]+f;f=+g[c+4>>2]*+g[a+540>>2]*d;e=+g[c+8>>2]*+g[a+544>>2]*d;b=a+584|0;g[b>>2]=+g[b>>2]+ +g[c>>2]*+g[a+536>>2]*d;c=a+588|0;g[c>>2]=+g[c>>2]+f;c=a+592|0;g[c>>2]=+g[c>>2]+e;return}function pU(a,b){a=a|0;b=+b;g[a+248>>2]=b;return}function pV(a){a=a|0;return+(+g[a+248>>2])}function pW(a){a=a|0;return a+340|0}function pX(a){a=a|0;return a+164|0}function pY(a){a=a|0;return+(+g[a+468>>2])}function pZ(a){a=a|0;return a+68|0}function p_(a,b){a=a|0;b=b|0;var c=0;c=a+52|0;g[c>>2]=+g[c>>2]+ +g[b>>2];c=a+56|0;g[c>>2]=+g[c>>2]+ +g[b+4>>2];c=a+60|0;g[c>>2]=+g[c>>2]+ +g[b+8>>2];return}function p$(a){a=a|0;return a+4|0}function p0(a){a=a|0;return c[a+188>>2]|0}function p1(a){a=a|0;return c[a+192>>2]|0}function p2(a){a=a|0;return c[a+600>>2]|0}function p3(a){a=a|0;return a+504|0}function p4(a){a=a|0;return(c[a+204>>2]&4|0)==0|0}function p5(a){a=a|0;var b=0;if((c[a+232>>2]&2|0)==0){b=0}else{b=a}return b|0}function p6(a){a=a|0;return c[a+212>>2]|0}function p7(a,b){a=a|0;b=b|0;var d=0;d=a+216|0;if(((c[d>>2]|0)-4|0)>>>0<2){return}c[d>>2]=b;return}function p8(a){a=a|0;return a+520|0}function p9(a){a=a|0;return+(+g[a+244>>2])}function qa(a,b){a=a|0;b=b|0;return c[(c[a+488>>2]|0)+(b<<2)>>2]|0}function qb(a,b){a=a|0;b=+b;g[a+220>>2]=b;return}function qc(a){a=a|0;return a+4|0}function qd(a){a=a|0;return(c[a+180>>2]|0)!=0|0}function qe(a,b){a=a|0;b=b|0;c[a+188>>2]=b;return}function qf(a){a=a|0;return c[a+496>>2]|0}function qg(a){a=a|0;var b=0.0;b=+g[a+248>>2];return+(b*b)}function qh(a){a=a|0;return a+568|0}function qi(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;b=+g[a+4>>2];c=+g[a+388>>2];d=b*c;e=+g[a+8>>2];f=+g[a+392>>2];h=e*f;i=+g[a+12>>2];j=+g[a+396>>2];k=i*j;l=+g[a+20>>2];m=c*l;n=+g[a+24>>2];o=f*n;p=+g[a+28>>2];q=j*p;r=+g[a+36>>2];s=c*r;c=+g[a+40>>2];t=f*c;f=+g[a+44>>2];u=j*f;g[a+256>>2]=b*d+e*h+i*k;g[a+260>>2]=d*l+h*n+k*p;g[a+264>>2]=d*r+h*c+k*f;g[a+268>>2]=0.0;g[a+272>>2]=b*m+e*o+i*q;g[a+276>>2]=l*m+n*o+p*q;g[a+280>>2]=m*r+o*c+q*f;g[a+284>>2]=0.0;g[a+288>>2]=b*s+e*t+i*u;g[a+292>>2]=l*s+n*t+p*u;g[a+296>>2]=r*s+c*t+f*u;g[a+300>>2]=0.0;return}function qj(a,b){a=a|0;b=+b;g[a+224>>2]=b;return}function qk(a,b,c){a=a|0;b=+b;c=+c;var d=0.0,e=0.0;if(b<0.0){d=0.0}else{d=b>1.0?1.0:b}g[a+436>>2]=d;if(c<0.0){e=0.0}else{e=c>1.0?1.0:c}g[a+440>>2]=e;return}function ql(a){a=a|0;return c[a+232>>2]|0}function qm(a,b){a=a|0;b=b|0;c[a+600>>2]=b;return}function qn(a){a=a|0;return a+388|0}function qo(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,h=0.0;c=+g[b>>2];d=+g[b+4>>2];e=+g[b+8>>2];f=(+g[a+272>>2]*c+ +g[a+276>>2]*d+ +g[a+280>>2]*e)*+g[a+540>>2];h=(+g[a+288>>2]*c+ +g[a+292>>2]*d+ +g[a+296>>2]*e)*+g[a+544>>2];b=a+320|0;g[b>>2]=+g[b>>2]+(+g[a+256>>2]*c+ +g[a+260>>2]*d+ +g[a+264>>2]*e)*+g[a+536>>2];b=a+324|0;g[b>>2]=+g[b>>2]+f;b=a+328|0;g[b>>2]=+g[b>>2]+h;return}function qp(a){a=a|0;return a+568|0}function qq(a){a=a|0;return(c[a+204>>2]&1|0)!=0|0}function qr(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0;c=+g[a+336>>2];d=+g[b+4>>2]*+g[a+344>>2]*c;e=+g[b+8>>2]*+g[a+348>>2]*c;f=a+304|0;g[f>>2]=+g[f>>2]+ +g[b>>2]*+g[a+340>>2]*c;b=a+308|0;g[b>>2]=+g[b>>2]+d;b=a+312|0;g[b>>2]=+g[b>>2]+e;return}function qs(a,b){a=a|0;b=b|0;c[a+204>>2]=b;return}function qt(a){a=a|0;return a+504|0}function qu(a,b,c){a=a|0;b=+b;c=+c;g[a+464>>2]=b;g[a+468>>2]=c;return}function qv(a){a=a|0;return c[a+604>>2]|0}function qw(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+g[a+324>>2]+ +g[a+524>>2];d=+g[a+328>>2]+ +g[a+528>>2];g[b>>2]=+g[a+320>>2]+ +g[a+520>>2];g[b+4>>2]=c;g[b+8>>2]=d;g[b+12>>2]=0.0;return}function qx(a){a=a|0;return c[a+480>>2]|0}function qy(a){a=a|0;return+(+g[a+228>>2])}function qz(a){a=a|0;return+(+g[a+184>>2])}function qA(a){a=a|0;return a+584|0}function qB(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+20>>2]&511](a,b,d)|0}function qC(b,c){b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;do{if((a[43792]|0)==0){if((b1(43792)|0)==0){break}}}while(0);d=+g[b+324>>2];e=+g[c+8>>2];f=+g[b+328>>2];h=+g[c+4>>2];i=+g[c>>2];j=+g[b+320>>2];k=+g[b+308>>2]+(f*i-j*e);l=+g[b+312>>2]+(j*h-d*i);g[9546]=+g[b+304>>2]+(d*e-f*h);g[9547]=k;g[9548]=l;g[9549]=0.0;return 38184}function qD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+192>>2]|0;dI[c[(c[e>>2]|0)+8>>2]&1023](e,a+4|0,b,d);return}function qE(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function qF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+164|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];do{if(+g[b>>2]!=1.0){f=1}else{if(+g[b+4>>2]!=1.0){f=1;break}f=+g[b+8>>2]!=1.0|0}}while(0);c[a+180>>2]=f;return}function qG(a,b){a=a|0;b=+b;ap0(a,b);return}function qH(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+20|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+36|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+52|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function qI(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,h=0;d=+g[a+336>>2];if(d!=0.0){e=1.0/d;d=e*+g[b+4>>2];f=e*+g[b+8>>2];g[a+356>>2]=e*+g[b>>2];g[a+360>>2]=d;g[a+364>>2]=f;g[a+368>>2]=0.0}h=a+372|0;a=b;c[h>>2]=c[a>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];return}function qJ(a,b){a=a|0;b=b|0;var d=0;d=a+536|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function qK(a,b){a=a|0;b=b|0;var d=0;d=a+148|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function qL(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a)|0}function qM(a,b){a=a|0;b=b|0;var d=0;if((c[a+252>>2]|0)==0){d=1;return d|0}d=dj[c[c[a>>2]>>2]&511](a|0,b)|0;return d|0}function qN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0.0,i=0.0,j=0.0;d=a+340|0;e=d;f=b;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];h=+g[a+336>>2];i=+g[a+344>>2]*h;j=+g[a+348>>2]*h;g[a+552>>2]=+g[d>>2]*h;g[a+556>>2]=i;g[a+560>>2]=j;g[a+564>>2]=0.0;return}function qO(a,b){a=a|0;b=b|0;var d=0;d=a+304|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function qP(a,b){a=a|0;b=b|0;var d=0;d=a+388|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function qQ(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function qR(){return 0}function qS(a,b){a=a|0;b=+b;g[a+240>>2]=b;return}function qT(a){a=a|0;return+(+g[a+436>>2])}function qU(a){a=a|0;return a+104|0}function qV(b,c,d){b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0;e=+g[c>>2]+-1.0;f=+g[c+4>>2]+-1.0;h=+g[c+8>>2]+-1.0;g[b+4>>2]=e;g[b+8>>2]=f;g[b+12>>2]=h;g[b+16>>2]=0.0;i=+g[d>>2]+1.0;j=+g[d+4>>2]+1.0;k=+g[d+8>>2]+1.0;g[b+20>>2]=i;g[b+24>>2]=j;g[b+28>>2]=k;g[b+32>>2]=0.0;g[b+36>>2]=65533.0/(i-e);g[b+40>>2]=65533.0/(j-f);g[b+44>>2]=65533.0/(k-h);g[b+48>>2]=0.0;a[b+60|0]=1;return}function qW(b,c,d,e){b=b|0;c=c|0;d=d|0;e=+e;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;f=+g[c>>2]-e;h=+g[c+4>>2]-e;i=+g[c+8>>2]-e;g[b+4>>2]=f;g[b+8>>2]=h;g[b+12>>2]=i;g[b+16>>2]=0.0;j=+g[d>>2]+e;k=+g[d+4>>2]+e;l=+g[d+8>>2]+e;g[b+20>>2]=j;g[b+24>>2]=k;g[b+28>>2]=l;g[b+32>>2]=0.0;g[b+36>>2]=65533.0/(j-f);g[b+40>>2]=65533.0/(k-h);g[b+44>>2]=65533.0/(l-i);g[b+48>>2]=0.0;a[b+60|0]=1;return}function qX(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0;f=(+g[d>>2]- +g[a+4>>2])*+g[a+36>>2];h=(+g[d+4>>2]- +g[a+8>>2])*+g[a+40>>2];i=(+g[d+8>>2]- +g[a+12>>2])*+g[a+44>>2];if((e|0)==0){b[c>>1]=~~f&-2;b[c+2>>1]=~~h&-2;b[c+4>>1]=~~i&-2;return}else{b[c>>1]=~~(f+1.0)|1;b[c+2>>1]=~~(h+1.0)|1;b[c+4>>1]=~~(i+1.0)|1;return}}function qY(b){b=b|0;return(a[b+60|0]&1)!=0|0}function qZ(b){b=b|0;return(c[b+168>>2]<<5)+172+(c[b+56>>2]<<((a[b+60|0]&1)==0?6:4))|0}function q_(a){a=a|0;return a+124|0}function q$(a){a=a|0;return a+148|0}function q0(a){a=a|0;return c[a+28>>2]|0}function q1(a){a=a|0;return c[a+24>>2]|0}function q2(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function q3(b,c){b=b|0;c=c|0;a[b+21|0]=c&1;return}function q4(a){a=a|0;return c[a+12>>2]|0}function q5(a){a=a|0;return c[a+4>>2]|0}function q6(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function q7(b){b=b|0;return(a[b+20|0]&1)!=0|0}function q8(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function q9(a){a=a|0;return c[a+4>>2]|0}function ra(a){a=a|0;return+(+g[a+36>>2])}function rb(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function rc(b){b=b|0;return(a[b+21|0]&1)!=0|0}function rd(a){a=a|0;return c[a+4>>2]|0}function re(a){a=a|0;return c[a+12>>2]|0}function rf(b,c){b=b|0;c=c|0;a[b+20|0]=c&1;return}function rg(a){a=a|0;return c[a+12>>2]|0}function rh(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function ri(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function rj(a){a=a|0;return+(+g[a+32>>2])}function rk(a){a=a|0;return+(+g[a+16>>2])}function rl(a){a=a|0;return c[a+8>>2]|0}function rm(a){a=a|0;return+(+g[a+32>>2])}function rn(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function ro(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function rp(a){a=a|0;return(c[a+4>>2]|0)<7|0}function rq(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+68|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+84|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+100|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+116|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function rr(a,b){a=a|0;b=+b;ap3(a,b);return}function rs(a){a=a|0;azj(a|0);return}function rt(a,b,d){a=a|0;b=b|0;d=d|0;return(cS[c[(c[a>>2]|0)+16>>2]&511](a|0,b,d)|0)!=0|0}function ru(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+8>>2]&127](a|0,b,d,e)|0}function rv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qX(a|0,b,c,d);return}function rw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ayA(a,b,c,d);return}function rx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;azn(a|0,b,c,d);return}function ry(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0;h=i;i=i+32|0;j=h|0;k=h+16|0;l=b|0;aDD(j|0,0,16);aDD(k|0,0,16);if((a[b+60|0]&1)==0){azp(l,d,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],j,k);i=h;return}else{azq(l,d,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],j,k,c[b+56>>2]|0);i=h;return}}function rz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ayv(a,b,c,d,e);return}function rA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ayB(a,b,+g[c>>2],+g[c+4>>2],+g[c+8>>2],+g[d>>2],+g[d+4>>2],+g[d+8>>2]);return}function rB(a,b,c){a=a|0;b=b|0;c=c|0;return azs(a,b,c)|0}function rC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;rD(a|0,b,c,d);return}function rD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0.0;f=i;i=i+16|0;h=f|0;j=h;k=d;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];k=h|0;l=+g[k>>2];m=+g[a+4>>2];if(l<m){g[k>>2]=m;n=m}else{n=l}j=h+4|0;l=+g[j>>2];m=+g[a+8>>2];if(l<m){g[j>>2]=m;o=m}else{o=l}d=h+8|0;l=+g[d>>2];m=+g[a+12>>2];if(l<m){g[d>>2]=m;p=m}else{p=l}q=h+12|0;l=+g[q>>2];m=+g[a+16>>2];if(l<m){g[q>>2]=m;r=m}else{r=l}l=+g[a+20>>2];if(l<n){g[k>>2]=l}l=+g[a+24>>2];if(l<o){g[j>>2]=l}l=+g[a+28>>2];if(l<p){g[d>>2]=l}l=+g[a+32>>2];if(l>=r){qX(a,b,h,e);i=f;return}g[q>>2]=l;qX(a,b,h,e);i=f;return}function rE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ayw(a,b,c,d);return}function rF(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function rG(a){a=a|0;return cA[c[(c[a>>2]|0)+12>>2]&4095](a|0)|0}function rH(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function rI(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a|0,b);return}function rJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,e)|0}function rK(b,c){b=b|0;c=c|0;var d=0.0,f=0.0;do{if((a[43928]|0)==0){if((b1(43928)|0)==0){break}}}while(0);d=+((e[c+2>>1]|0)>>>0)/+g[b+40>>2]+ +g[b+8>>2];f=+((e[c+4>>1]|0)>>>0)/+g[b+44>>2]+ +g[b+12>>2];g[9542]=+((e[c>>1]|0)>>>0)/+g[b+36>>2]+ +g[b+4>>2];g[9543]=d;g[9544]=f;g[9545]=0.0;return 38168}function rL(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0;j=b|0;if((a[b+60|0]&1)==0){azp(j,d,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],h,i);return}else{azq(j,d,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],h,i,c[b+56>>2]|0);return}}function rM(){var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(191)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}c[d+52>>2]=278;a[d+60|0]=0;a[d+80|0]=1;c[d+76>>2]=0;c[d+68>>2]=0;c[d+72>>2]=0;a[d+100|0]=1;c[d+96>>2]=0;c[d+88>>2]=0;c[d+92>>2]=0;a[d+120|0]=1;c[d+116>>2]=0;c[d+108>>2]=0;c[d+112>>2]=0;a[d+140|0]=1;c[d+136>>2]=0;c[d+128>>2]=0;c[d+132>>2]=0;c[d+144>>2]=0;a[d+164|0]=1;c[d+160>>2]=0;c[d+152>>2]=0;c[d+156>>2]=0;c[d+168>>2]=0;g[d+4>>2]=-3.4028234663852886e+38;g[d+8>>2]=-3.4028234663852886e+38;g[d+12>>2]=-3.4028234663852886e+38;g[d+16>>2]=0.0;g[d+20>>2]=3.4028234663852886e+38;g[d+24>>2]=3.4028234663852886e+38;g[d+28>>2]=3.4028234663852886e+38;g[d+32>>2]=0.0;c[d>>2]=25376;return d|0}function rN(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function rO(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+40>>2]&511](a,b,d)|0}function rP(a,b,d){a=a|0;b=b|0;d=+d;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,-1);return}function rQ(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,e);return}function rR(a,b){a=a|0;b=b|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,-1))}function rS(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,d))}function rT(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function rU(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function rV(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function rW(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function rX(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;cy[c[(c[a>>2]|0)+12>>2]&127](a,b,d,e,f);return}function rY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+24>>2]&127](a,b,d,e);return}function rZ(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function r_(a){a=a|0;return cA[c[(c[a>>2]|0)+104>>2]&4095](a)|0}function r$(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43488]|0)==0){if((b1(43488)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9538]=c[d>>2];c[9539]=c[d+4>>2];c[9540]=c[d+8>>2];c[9541]=c[d+12>>2];i=e;return 38152}function r0(a,b,d){a=a|0;b=b|0;d=+d;return c0[c[(c[a>>2]|0)+112>>2]&127](a,b,d)|0}function r1(a){a=a|0;return cA[c[(c[a>>2]|0)+88>>2]&4095](a)|0}function r2(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function r3(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function r4(a){a=a|0;return}function r5(a){a=a|0;return a+12|0}function r6(a){a=a|0;return+(+g[a+44>>2])}function r7(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function r8(a){a=a|0;return(c[a+4>>2]|0)<20|0}function r9(a){a=a|0;return(c[a+4>>2]|0)==28|0}function sa(a){a=a|0;return c[a+8>>2]|0}function sb(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function sc(a){a=a|0;return(c[a+4>>2]|0)==32|0}function sd(a){a=a|0;return a+28|0}function se(a){a=a|0;return(c[a+4>>2]|0)==31|0}function sf(a){a=a|0;return c[a+52>>2]|0}function sg(a){a=a|0;return c[a+4>>2]|0}function sh(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function si(a,b){a=a|0;b=b|0;c[a+140>>2]=b;return}function sj(b){b=b|0;return(a[b+153|0]&1)!=0|0}function sk(b,c){b=b|0;c=c|0;a[b+152|0]=c&1;return}function sl(a){a=a|0;return c[a+112>>2]|0}function sm(a,b){a=a|0;b=b|0;c[a+96>>2]=b;return}function sn(b){b=b|0;return(a[b+152|0]&1)!=0|0}function so(a,b){a=a|0;b=b|0;c[a+108>>2]=b;return}function sp(b,c){b=b|0;c=c|0;a[b+153|0]=c&1;return}function sq(a,b){a=a|0;b=b|0;c[a+144>>2]=b;return}function sr(a,b){a=a|0;b=b|0;c[a+120>>2]=b;return}function ss(a){a=a|0;return c[a+124>>2]|0}function st(a,b){a=a|0;b=b|0;c[a+148>>2]=b;return}function su(a){a=a|0;return c[a+104>>2]|0}function sv(a,b){a=a|0;b=b|0;c[a+128>>2]=b;return}function sw(b,c){b=b|0;c=c|0;a[b+154|0]=c&1;return}function sx(a,b){a=a|0;b=b|0;c[a+132>>2]=b;return}function sy(a){a=a|0;return c[a+108>>2]|0}function sz(a){a=a|0;return c[a+140>>2]|0}function sA(a,b){a=a|0;b=b|0;c[a+112>>2]=b;return}function sB(a){a=a|0;return c[a+144>>2]|0}function sC(a,b){a=a|0;b=+b;g[a+136>>2]=b;return}function sD(a,b){a=a|0;b=+b;g[a+100>>2]=b;return}function sE(a){a=a|0;return c[a+128>>2]|0}function sF(a){a=a|0;return c[a+116>>2]|0}function sG(a,b){a=a|0;b=b|0;c[a+116>>2]=b;return}function sH(a){a=a|0;return+(+g[a+100>>2])}function sI(a){a=a|0;return c[a+148>>2]|0}function sJ(b){b=b|0;return(a[b+154|0]&1)!=0|0}function sK(a){a=a|0;return c[a+120>>2]|0}function sL(a){a=a|0;return+(+g[a+136>>2])}function sM(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+100>>2]&511](a,b,d);return}function sN(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43328]|0)==0){if((b1(43328)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9534]=c[d>>2];c[9535]=c[d+4>>2];c[9536]=c[d+8>>2];c[9537]=c[d+12>>2];i=e;return 38136}function sO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function sP(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function sQ(a){a=a|0;return cA[c[(c[a>>2]|0)+92>>2]&4095](a)|0}function sR(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function sS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+96>>2]&1023](a,b,d,e);return}function sT(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43104]|0)==0){if((b1(43104)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9530]=c[d>>2];c[9531]=c[d+4>>2];c[9532]=c[d+8>>2];c[9533]=c[d+12>>2];i=e;return 38120}function sU(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43168]|0)==0){if((b1(43168)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9526]=c[d>>2];c[9527]=c[d+4>>2];c[9528]=c[d+8>>2];c[9529]=c[d+12>>2];i=e;return 38104}function sV(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function sW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function sX(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function sY(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function sZ(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function s_(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function s$(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function s0(a){a=a|0;return cA[c[(c[a>>2]|0)+84>>2]&4095](a)|0}function s1(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function s2(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 13:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 0:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function s3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function s4(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function s5(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function s6(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function s7(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function s8(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+108>>2]&1023](a,b,d,e);return}function s9(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function ta(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+40>>2]&511](a,b,d);return}function tb(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;cY[c[(c[a>>2]|0)+28>>2]&63](a,b,d,e,f,g);return}function tc(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=+j;df[c[(c[a>>2]|0)+24>>2]&63](a,b,d,e,f,g,h,i,j);return}function td(a,b,d,e,f,g){a=a|0;b=+b;d=+d;e=e|0;f=f|0;g=g|0;cK[c[(c[a>>2]|0)+84>>2]&63](a,b,d,e,f,g);return}function te(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;g=g|0;cw[c[(c[a>>2]|0)+32>>2]&63](a,b,d,e,f,g);return}function tf(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;h=+h;i=+i;j=j|0;k=k|0;dt[c[(c[a>>2]|0)+60>>2]&63](a,b,d,e,f,g,h,i,j,k,10.0);return}function tg(a,b,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;h=+h;i=+i;j=j|0;k=k|0;l=+l;dt[c[(c[a>>2]|0)+60>>2]&63](a,b,d,e,f,g,h,i,j,k,l);return}function th(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function ti(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+12>>2]&255](a,b,d,e,f);return}function tj(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+36>>2]&2047](a,b);return}function tk(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function tl(a,b,d,e,f,g){a=a|0;b=+b;d=+d;e=e|0;f=f|0;g=g|0;cK[c[(c[a>>2]|0)+80>>2]&63](a,b,d,e,f,g);return}function tm(a,b,d){a=a|0;b=b|0;d=+d;dF[c[(c[a>>2]|0)+56>>2]&255](a,b,d);return}function tn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+52>>2]&1023](a,b,d,e);return}function to(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=e|0;f=f|0;cr[c[(c[a>>2]|0)+88>>2]&63](a,b,d,e,f);return}function tp(a,b,d,e,f,g){a=a|0;b=+b;d=+d;e=e|0;f=f|0;g=g|0;cK[c[(c[a>>2]|0)+76>>2]&63](a,b,d,e,f,g);return}function tq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function tr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+72>>2]&255](a,b,d,e,f);return}function ts(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+44>>2]&2047](a,b);return}function tt(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;h=+h;i=+i;j=+j;k=k|0;cs[c[(c[a>>2]|0)+64>>2]&63](a,b,d,e,f,g,h,i,j,k,10.0);return}function tu(a,b,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;h=+h;i=+i;j=+j;k=k|0;l=+l;cs[c[(c[a>>2]|0)+64>>2]&63](a,b,d,e,f,g,h,i,j,k,l);return}function tv(a,b,d,e){a=a|0;b=+b;d=d|0;e=e|0;dg[c[(c[a>>2]|0)+16>>2]&63](a,b,d,e);return}function tw(a,b){a=a|0;b=b|0;awS(a,b);return}function tx(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+32>>2]&2047](a,b);return}function ty(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+32|0;g=f|0;h=f+16|0;j=c[(c[a>>2]|0)+24>>2]|0;aDD(g|0,0,16);aDD(h|0,0,16);c_[j&127](a,b,d,e,g,h);i=f;return}function tz(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;i=i+16|0;h=g|0;j=c[(c[a>>2]|0)+24>>2]|0;aDD(h|0,0,16);c_[j&127](a,b,d,e,f,h);i=g;return}function tA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;c_[c[(c[a>>2]|0)+24>>2]&127](a,b,d,e,f,g);return}function tB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+16>>2]&255](a,b,d,e,f);return}function tC(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+48>>2]&2047](a,b);return}function tD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+20>>2]&1023](a,b,d,e);return}function tE(a,b){a=a|0;b=b|0;awR(a,b);return}function tF(a){a=a|0;ct[c[(c[a>>2]|0)+52>>2]&2047](a);return}function tG(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return c5[c[(c[a>>2]|0)+8>>2]&63](a,b,d,e,f,g,h,i,j)|0}function tH(a){a=a|0;aws(a+4|0);aws(a+44|0);return}function tI(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function tJ(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function tK(){var a=0,b=0,d=0;while(1){a=aDx(156)|0;if((a|0)!=0){b=2117;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){b=2114;break}dC[d&63]()}if((b|0)==2114){d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}else if((b|0)==2117){b=a;awx(b,0);return b|0}return 0}function tL(a){a=a|0;var b=0,d=0,e=0;while(1){b=aDx(156)|0;if((b|0)!=0){d=2131;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){d=2128;break}dC[e&63]()}if((d|0)==2128){e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}else if((d|0)==2131){d=b;awx(d,a);return d|0}return 0}function tM(a){a=a|0;return(a|0)==28|0}function tN(a){a=a|0;return(a|0)==31|0}function tO(a){a=a|0;return(a|0)<7|0}function tP(a){a=a|0;return(a|0)<20|0}function tQ(a){a=a|0;return((a|0)>20&(a|0)<30?(a|0)!=25:0)|0}function tR(a){a=a|0;return((a|0)==17?1:(a|0)==18)|0}function tS(a){a=a|0;return(a|0)==32|0}function tT(a){a=a|0;return((a|0)>20?(a|0)<30:0)|0}function tU(a,b){a=a|0;b=+b;g[a+100>>2]=b;return}function tV(a){a=a|0;return+(+g[a+100>>2])}function tW(a){a=a|0;return c[a+96>>2]|0}function tX(a){a=a|0;return c[a+132>>2]|0}function tY(a,b){a=a|0;b=b|0;c[a+124>>2]=b;return}function tZ(a,b){a=a|0;b=b|0;c[a+104>>2]=b;return}function t_(a){a=a|0;return c[a>>2]|0}function t$(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function t0(a,b){a=a|0;b=b|0;c[a+48>>2]=b;return}function t1(a){a=a|0;return c[a+48>>2]|0}function t2(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function t3(a){a=a|0;return a+16|0}function t4(a){a=a|0;return b[a+6>>1]|0}function t5(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function t6(a){a=a|0;return c[a+48>>2]|0}function t7(a){a=a|0;return c[a+12>>2]|0}function t8(a){a=a|0;return a+32|0}function t9(a,c){a=a|0;c=c|0;b[a+4>>1]=c;return}function ua(a){a=a|0;return c[a+12>>2]|0}function ub(a,b){a=a|0;b=b|0;c[a+48>>2]=b;return}function uc(a,c){a=a|0;c=c|0;b[a+6>>1]=c;return}function ud(a){a=a|0;return c[a+8>>2]|0}function ue(a){a=a|0;return b[a+4>>1]|0}function uf(a,b){a=a|0;b=b|0;c[a+188>>2]=b;return}function ug(a){a=a|0;return c[a+188>>2]|0}function uh(a){a=a|0;return c[a+4>>2]|0}function ui(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function uj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a+200+(b*144|0)+(d<<2)>>2]=e;return}function uk(a,b){a=a|0;b=b|0;c[a+5384>>2]=b;return}function ul(a){a=a|0;return c[a+5384>>2]|0}function um(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;g=i;i=i+48|0;h=g|0;j=g+32|0;k=h;l=d;m=e;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];e=h+16|0;h=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];e=d+60|0;if((c[e>>2]|0)==2){f=b+44|0;n=d+48|0;o=c[n>>2]|0;aww(f,o)|0;f=b+48|0;p=c[f>>2]|0;if((p|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[p-44+40>>2]|0)}c[f>>2]=o;o=b+56|0;c[o>>2]=(c[o>>2]|0)-1;o=b+4|0;f=b+8|0;p=c[f>>2]|0;do{if((p|0)==0){c[9806]=(c[9806]|0)+1;q=aDx(63)|0;if((q|0)==0){r=0;break}s=-(q+4|0)&15;t=q+(s+4)|0;c[q+s>>2]=q;if((t|0)==0){r=0;break}aDD(t|0,0,44);r=t}else{c[f>>2]=0;r=p}}while(0);c[r+32>>2]=0;c[r+36>>2]=d;c[r+40>>2]=0;p=r;aDC(p|0,k|0,32)|0;awv(o,c[o>>2]|0,r);r=b+16|0;c[r>>2]=(c[r>>2]|0)+1;c[n>>2]=p}else{p=b+128|0;c[p>>2]=(c[p>>2]|0)+1;p=b+4|0;n=c[d+48>>2]|0;r=aww(p,n)|0;L2259:do{if((r|0)==0){u=0}else{o=c[b+12>>2]|0;if((o|0)>-1){v=0;w=r}else{u=c[p>>2]|0;break}while(1){if((v|0)>=(o|0)){u=w;break L2259}f=c[w+32>>2]|0;if((f|0)==0){u=w;break}else{v=v+1|0;w=f}}}}while(0);w=n;aDC(w|0,k|0,32)|0;awv(p,u,n);n=b+132|0;c[n>>2]=(c[n>>2]|0)+1}n=d+52|0;u=c[n>>2]|0;p=d+56|0;k=c[p>>2]|0;if((u|0)==0){c[b+84+(c[e>>2]<<2)>>2]=k}else{c[u+56>>2]=k}k=c[p>>2]|0;if((k|0)!=0){c[k+52>>2]=c[n>>2]}k=d+16|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];m=d+32|0;c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];c[m+12>>2]=c[h+12>>2];h=b+104|0;c[e>>2]=c[h>>2];e=b+84+(c[h>>2]<<2)|0;c[n>>2]=0;c[p>>2]=c[e>>2];p=c[e>>2]|0;if((p|0)!=0){c[p+52>>2]=l}c[e>>2]=l;a[b+154|0]=1;if((a[b+153|0]&1)!=0){x=32;y=0;i=g;return}c[j>>2]=23368;c[j+4>>2]=b;l=b+44|0;e=d+48|0;d=j|0;awL(l,c[l>>2]|0,c[e>>2]|0,d);l=b+4|0;awL(l,c[l>>2]|0,c[e>>2]|0,d);x=32;y=0;i=g;return}function un(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+28>>2]&1023](a,b,d,e);return}function uo(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+44>>2]&511](a,b,d);return}function up(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+12>>2]&511](a,b,d);return}function uq(){var a=0,b=0,d=0;c[9806]=(c[9806]|0)+1;a=aDx(71)|0;if((a|0)==0){b=0}else{d=-(a+4|0)&15;c[a+d>>2]=a;b=a+(d+4)|0}c[b>>2]=0;c[b+8>>2]=0;return b|0}function ur(a,d,e,f,g,h,i){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0;c[9806]=(c[9806]|0)+1;e=aDx(71)|0;if((e|0)==0){j=0}else{k=-(e+4|0)&15;c[e+k>>2]=e;j=e+(k+4)|0}c[j>>2]=f;b[j+4>>1]=g;b[j+6>>1]=h;h=j+16|0;g=a;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];g=j+32|0;h=d;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];c[j+8>>2]=i;return j|0}function us(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function ut(a,b){a=a|0;b=b|0;var d=0;d=a+32|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function uu(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-52+48>>2]|0);return}function uv(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+60>>2]&2047](a,b);return}function uw(a,b,d){a=a|0;b=b|0;d=d|0;return dE[c[(c[a>>2]|0)+8>>2]&127](a,b,d,0)|0}function ux(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+8>>2]&127](a,b,d,e)|0}function uy(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+28>>2]&511](a,b,d)|0}function uz(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function uA(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+40>>2]&511](a,b)|0}function uB(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+24>>2]&511](a,b,d)|0}function uC(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function uD(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function uE(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+12>>2]&511](a,b,d)|0}function uF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,d,e);return}function uG(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+56>>2]&511](a,b)|0}function uH(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function uI(a){a=a|0;return cA[c[(c[a>>2]|0)+44>>2]&4095](a)|0}function uJ(a,b,c){a=a|0;b=b|0;c=c|0;ata(a,b,c);return}function uK(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function uL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(135)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}f=e;aq6(f,a,b,16384,0,0);return f|0}function uM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;c[9806]=(c[9806]|0)+1;e=aDx(135)|0;if((e|0)==0){f=0}else{g=-(e+4|0)&15;c[e+g>>2]=e;f=e+(g+4)|0}g=f;aq6(g,a,b,d,0,0);return g|0}function uN(b){b=b|0;var d=0,e=0,f=0,g=0;while(1){d=aDx(5388)|0;if((d|0)!=0){break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){f=2257;break}dC[e&63]()}if((f|0)==2257){f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}f=d;c[d>>2]=22392;c[d+4>>2]=2;a[d+24|0]=1;c[d+20>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+28>>2]=24e3;aDD(d+172|0,-1|0,16);e=d+5384|0;c[e>>2]=b;c[d+188>>2]=156;g=b;c[d+192>>2]=cA[c[(c[g>>2]|0)+12>>2]&4095](b)|0;c[d+196>>2]=cA[c[(c[g>>2]|0)+8>>2]&4095](b)|0;b=0;do{g=0;do{d=c[e>>2]|0;c[f+200+(b*144|0)+(g<<2)>>2]=cS[c[(c[d>>2]|0)+20>>2]&511](d,b,g)|0;g=g+1|0;}while((g|0)<36);b=b+1|0;}while((b|0)<36);return f|0}function uO(a){a=a|0;return b[a+56>>1]|0}function uP(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0,k=0,l=0,m=0;f=(+g[d>>2]- +g[a+8>>2])*+g[a+40>>2];h=(+g[d+4>>2]- +g[a+12>>2])*+g[a+44>>2];i=(+g[d+8>>2]- +g[a+16>>2])*+g[a+48>>2];do{if(f>0.0){d=b[a+6>>1]|0;if(f<+(d&65535|0)){j=(~~f&b[a+4>>1]&65535|e)&65535;break}else{j=(d&b[a+4>>1]&65535|e)&65535;break}}else{j=e&65535}}while(0);b[c>>1]=j;do{if(h>0.0){j=b[a+6>>1]|0;if(h<+(j&65535|0)){k=(~~h&b[a+4>>1]&65535|e)&65535;break}else{k=(j&b[a+4>>1]&65535|e)&65535;break}}else{k=e&65535}}while(0);b[c+2>>1]=k;if(i<=0.0){l=e&65535;m=c+4|0;b[m>>1]=l;return}k=b[a+6>>1]|0;if(i<+(k&65535|0)){l=(~~i&b[a+4>>1]&65535|e)&65535;m=c+4|0;b[m>>1]=l;return}else{l=(k&b[a+4>>1]&65535|e)&65535;m=c+4|0;b[m>>1]=l;return}}function uQ(a){a=a|0;return c[a+96>>2]|0}function uR(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,f=0;a=b;b=c;c=0;while(1){if((c|0)>=3){d=1;f=2303;break}if((e[a+54+(c<<1)>>1]|0)<(e[b+48+(c<<1)>>1]|0)){d=0;f=2304;break}if((e[b+54+(c<<1)>>1]|0)<(e[a+48+(c<<1)>>1]|0)){d=0;f=2302;break}c=c+1|0}if((f|0)==2302){return d|0}else if((f|0)==2303){return d|0}else if((f|0)==2304){return d|0}return 0}function uS(a,b){a=a|0;b=b|0;c[a+96>>2]=b;return}function uT(a,d,f,h){a=a|0;d=d|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0;i=d;j=c[a+68>>2]|0;k=(b[j+((e[d+54>>1]|0)<<2)>>1]|0)+1&65535;l=c[a+72>>2]|0;m=(b[l+((e[d+56>>1]|0)<<2)>>1]|0)+1&65535;n=c[a+76>>2]|0;o=(b[n+((e[i+58>>1]|0)<<2)>>1]|0)+1&65535;p=a+40|0;q=+((e[j+((e[d+48>>1]|0)<<2)>>1]|0)>>>0)/+g[p>>2];j=a+44|0;r=+((e[l+((e[i+50>>1]|0)<<2)>>1]|0)>>>0)/+g[j>>2];i=a+48|0;s=+((e[n+((e[d+52>>1]|0)<<2)>>1]|0)>>>0)/+g[i>>2];d=f|0;g[d>>2]=q;n=f+4|0;g[n>>2]=r;l=f+8|0;g[l>>2]=s;g[f+12>>2]=0.0;f=a+8|0;g[d>>2]=q+ +g[f>>2];d=a+12|0;g[n>>2]=r+ +g[d>>2];n=a+16|0;g[l>>2]=s+ +g[n>>2];s=+((k&65535)>>>0)/+g[p>>2];r=+((m&65535)>>>0)/+g[j>>2];q=+((o&65535)>>>0)/+g[i>>2];i=h|0;g[i>>2]=s;o=h+4|0;g[o>>2]=r;j=h+8|0;g[j>>2]=q;g[h+12>>2]=0.0;g[i>>2]=s+ +g[f>>2];g[o>>2]=r+ +g[d>>2];g[j>>2]=q+ +g[n>>2];return}function uU(a,b){a=a|0;b=b|0;return(c[a+60>>2]|0)+((b&65535)<<6)|0}function uV(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function uW(a){a=a|0;return c[a>>2]|0}function uX(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function uY(a){a=a|0;return c[a+4>>2]|0}function uZ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;c[9806]=(c[9806]|0)+1;f=aDx(135)|0;if((f|0)==0){g=0}else{h=-(f+4|0)&15;c[f+h>>2]=f;g=f+(h+4)|0}h=g;aq6(h,a,b,d,e,0);return h|0}function u_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;c[9806]=(c[9806]|0)+1;g=aDx(135)|0;if((g|0)==0){h=0}else{i=-(g+4|0)&15;c[g+i>>2]=g;h=g+(i+4)|0}i=h;aq6(i,a,b,d,e,f);return i|0}function u$(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return u0(a|0,b,c,d,e,f,g,h)|0}function u0(a,d,f,g,h,j,k,l){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,x=0,y=0;m=i;i=i+16|0;n=m|0;o=m+8|0;uP(a,n|0,d,0);uP(a,o|0,f,1);f=a+64|0;d=b[f>>1]|0;p=a+60|0;q=c[p>>2]|0;r=d&65535;b[f>>1]=b[q+(r<<6)+48>>1]|0;f=a+56|0;b[f>>1]=(b[f>>1]|0)+1&65535;c[q+(r<<6)+12>>2]=r;c[q+(r<<6)>>2]=g;b[q+(r<<6)+4>>1]=h;b[q+(r<<6)+6>>1]=j;c[q+(r<<6)+8>>2]=l;l=b[f>>1]<<1;f=l&65535;j=f|1;h=f-1|0;g=l-1&65535;s=0;while(1){if((s&65535)>=3){break}t=s&65535;u=(c[p>>2]|0)+54+(t<<1)|0;b[u>>1]=(b[u>>1]|0)+2&65535;u=a+68+(t<<2)|0;v=c[u>>2]|0;x=v+(h<<2)|0;y=v+(j<<2)|0;w=e[x>>1]|e[x+2>>1]<<16;b[y>>1]=w&65535;b[y+2>>1]=w>>16;b[(c[u>>2]|0)+(h<<2)>>1]=b[n+(t<<1)>>1]|0;b[(c[u>>2]|0)+(h<<2)+2>>1]=d;b[(c[u>>2]|0)+(f<<2)>>1]=b[o+(t<<1)>>1]|0;b[(c[u>>2]|0)+(f<<2)+2>>1]=d;b[q+(r<<6)+48+(t<<1)>>1]=g;b[q+(r<<6)+54+(t<<1)>>1]=l;s=s+1&65535}and(a,0,b[q+(r<<6)+48>>1]|0,0);ang(a,0,b[q+(r<<6)+54>>1]|0,k,0);and(a,1,b[q+(r<<6)+50>>1]|0,0);ang(a,1,b[q+(r<<6)+56>>1]|0,k,0);and(a,2,b[q+(r<<6)+52>>1]|0,1);ang(a,2,b[q+(r<<6)+58>>1]|0,k,1);i=m;return d|0}function u1(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;uP(a|0,b,c,d);return}function u2(a,b,c){a=a|0;b=b|0;c=c|0;u3(a|0,b,c);return}function u3(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=a+60|0;h=c[g>>2]|0;i=d&65535;j=a+92|0;k=c[j>>2]|0;if(!(cA[c[(c[k>>2]|0)+56>>2]&4095](k)|0)){k=c[j>>2]|0;dA[c[(c[k>>2]|0)+16>>2]&511](k|0,h+(i<<6)|0,f)}k=a+56|0;j=(e[k>>1]|0)<<1;l=0;while(1){if((l|0)>=3){break}m=(c[g>>2]|0)+54+(l<<1)|0;b[m>>1]=(b[m>>1]|0)-2&65535;l=l+1|0}l=a+6|0;m=j-1|0;j=0;while(1){if((j|0)>=3){break}n=c[a+68+(j<<2)>>2]|0;o=b[h+(i<<6)+54+(j<<1)>>1]|0;b[n+((o&65535)<<2)>>1]=b[l>>1]|0;ane(a,j,o,0);o=b[h+(i<<6)+48+(j<<1)>>1]|0;b[n+((o&65535)<<2)>>1]=b[l>>1]|0;anf(a,j,o,f,0);b[n+(m<<2)+2>>1]=0;b[n+(m<<2)>>1]=b[l>>1]|0;j=j+1|0}j=a+64|0;b[(c[g>>2]|0)+(i<<6)+48>>1]=b[j>>1]|0;b[j>>1]=d;b[k>>1]=(b[k>>1]|0)-1&65535;return}function u4(a,b){a=a|0;b=b|0;b6(a|0,b|0);return}function u5(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+32|0;g=f|0;h=f+16|0;j=c[(c[a>>2]|0)+24>>2]|0;aDD(g|0,0,16);aDD(h|0,0,16);c_[j&127](a|0,b,d,e,g,h);i=f;return}function u6(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;i=i+16|0;h=g|0;j=c[(c[a>>2]|0)+24>>2]|0;aDD(h|0,0,16);c_[j&127](a|0,b,d,e,f,h);i=g;return}function u7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;c_[c[(c[a>>2]|0)+24>>2]&127](a|0,b,d,e,f,g);return}function u8(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+16>>2]&255](a|0,b,d,e,f);return}function u9(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+48>>2]&2047](a|0,b);return}function va(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+20>>2]&1023](a|0,b,d,e);return}function vb(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;vc(a|0,b,c,d,e);return}function vc(a,d,f,g,h){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;j=i;i=i+16|0;k=j|0;l=j+8|0;m=c[a+60>>2]|0;n=d&65535;uP(a,k|0,f,0);uP(a,l|0,g,1);g=0;while(1){if((g|0)>=3){break}f=b[m+(n<<6)+48+(g<<1)>>1]|0;d=b[m+(n<<6)+54+(g<<1)>>1]|0;o=b[k+(g<<1)>>1]|0;p=a+68+(g<<2)|0;q=c[p>>2]|0;r=q+((f&65535)<<2)|0;s=(o&65535)-(e[r>>1]|0)|0;t=b[l+(g<<1)>>1]|0;u=d&65535;v=(t&65535)-(e[q+(u<<2)>>1]|0)|0;b[r>>1]=o;b[(c[p>>2]|0)+(u<<2)>>1]=t;if((s|0)<0){and(a,g,f,1)}if((v|0)>0){ane(a,g,d,1)}if((s|0)>0){anf(a,g,f,h,1)}if((v|0)<0){ang(a,g,d,h,1)}g=g+1|0}i=j;return}function vd(a){a=a|0;ct[c[(c[a>>2]|0)+52>>2]&2047](a|0);return}function ve(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return c5[c[(c[a>>2]|0)+8>>2]&63](a|0,b,d,e,f,g,h,i,j)|0}function vf(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function vg(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+32>>2]&2047](a|0,b);return}function vh(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function vi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+28>>2]&1023](a|0,b,d,e);return}function vj(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+44>>2]&511](a|0,b,d);return}function vk(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,d);return}function vl(a){a=a|0;if((a|0)==0){return}aDB(a);return}function vm(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+68>>2]&2047](a,b);return}function vn(){var a=0,b=0,d=0;while(1){a=aDx(8)|0;if((a|0)!=0){b=2391;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==2391){c[a>>2]=0;c[a+4>>2]=0;return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function vo(a,b){a=a|0;b=b|0;var d=0,e=0;while(1){d=aDx(8)|0;if((d|0)!=0){e=2403;break}b=(C=c[10744]|0,c[10744]=C+0,C);if((b|0)==0){break}dC[b&63]()}if((e|0)==2403){c[d>>2]=a;return d|0}d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}function vp(a){a=a|0;return a+100|0}function vq(a){a=a|0;return c[a+24>>2]|0}function vr(a){a=a|0;return a|0}function vs(a,b){a=a|0;b=b|0;c[a+76>>2]=b;return}function vt(b){b=b|0;return(a[b+242|0]&1)!=0|0}function vu(b,c){b=b|0;c=c|0;a[b+242|0]=c&1;return}function vv(a){a=a|0;return a+4|0}function vw(a,b){a=a|0;b=b|0;c[a+88>>2]=b;c[a+96>>2]=0;return}function vx(a,b,d){a=a|0;b=b|0;d=d|0;c[a+88>>2]=b;c[a+96>>2]=d;return}function vy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(e){c[a+92>>2]=b}else{c[a+88>>2]=b}c[a+96>>2]=d;return}function vz(b){b=b|0;return(a[b+84|0]&1)!=0|0}function vA(a){a=a|0;return c[a+8>>2]|0}function vB(a,b){a=a|0;b=b|0;c[a+96>>2]=b;return}function vC(a){a=a|0;return c[a+96>>2]|0}function vD(a){a=a|0;return c[a+76>>2]|0}function vE(b,c){b=b|0;c=c|0;a[b+84|0]=c&1;return}function vF(a){a=a|0;return c[a+176>>2]|0}function vG(a){a=a|0;return a+28|0}function vH(a){a=a|0;return c[a+28>>2]|0}function vI(a){a=a|0;return c[a+24>>2]|0}function vJ(b){b=b|0;return(a[b+518|0]&1)!=0|0}function vK(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function vL(b,c){b=b|0;c=c|0;a[b+20|0]=c&1;return}function vM(a){a=a|0;return a+292|0}function vN(a){a=a|0;return a+356|0}function vO(a){a=a|0;return+(+g[a+440>>2])}function vP(a){a=a|0;return+(+g[a+436>>2])}function vQ(a){a=a|0;return c[a+4>>2]|0}function vR(a,b){a=a|0;b=+b;g[a+432>>2]=b;return}function vS(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function vT(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+60>>2]&2047](a,b);return}function vU(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a|0)|0}function vV(a){a=a|0;ct[c[(c[a>>2]|0)+164>>2]&2047](a);return}function vW(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+44>>2]&2047](a,b);return}function vX(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+80>>2]&2047](a,b);return}function vY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+84>>2]&1023](a,b,d,e);return}function vZ(a){a=a|0;ct[c[(c[a>>2]|0)+116>>2]&2047](a);return}function v_(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+124>>2]&2047](a,b);return}function v$(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+168>>2]&2047](a,b);return}function v0(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+24>>2]&1023](a|0,b,d,e);return}function v1(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a,b);return}function v2(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+28>>2]&1023](a|0,b,d,e);return}function v3(a){a=a|0;return cA[c[(c[a>>2]|0)+100>>2]&4095](a)|0}function v4(a,b){a=a|0;b=b|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,2,-3);return}function v5(a,b,d){a=a|0;b=b|0;d=d|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,d,-3);return}function v6(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,d,e);return}function v7(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+88>>2]&2047](a,b);return}function v8(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+48|0;f=e|0;g=e+16|0;h=e+32|0;j=c[b+192>>2]|0;dI[c[(c[j>>2]|0)+8>>2]&1023](j,b+4|0,f,g);c[h>>2]=21168;c[h+4>>2]=b;c[h+8>>2]=a;c[h+12>>2]=d;d=c[a+76>>2]|0;dI[c[(c[d>>2]|0)+28>>2]&1023](d,f,g,h|0);i=e;return}function v9(a){a=a|0;ct[c[(c[a>>2]|0)+40>>2]&2047](a|0);return}function wa(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a|0);return}function wb(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a|0,b);return}function wc(a,b){a=a|0;b=b|0;aoh(a,b);return}function wd(a){a=a|0;ct[c[(c[a>>2]|0)+20>>2]&2047](a);return}function we(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;atO(a|0,b,c,d,e,0.0);return}function wf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;atO(a|0,b,c,d,e,f);return}function wg(a,b){a=a|0;b=b|0;dA[c[(c[a>>2]|0)+52>>2]&511](a,b,0);return}function wh(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+52>>2]&511](a,b,d);return}function wi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+168|0;g=f|0;h=a+24|0;j=c[h>>2]|0;k=dE[c[(c[j>>2]|0)+8>>2]&127](j,b,d,0)|0;if((k|0)==0){i=f;return}c[g+4>>2]=0;c[g+136>>2]=b;c[g+140>>2]=d;j=g+8|0;l=b+4|0;aDD(g+144|0,-1|0,16);c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+24|0;j=b+20|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+40|0;l=b+36|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+56|0;j=b+52|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+72|0;l=d+4|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+88|0;j=d+20|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+104|0;l=d+36|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+120|0;j=d+52|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];c[g>>2]=21728;c[g+160>>2]=e;co[c[(c[k>>2]|0)+8>>2]&255](k,b,d,a+28|0,g|0);ct[c[c[k>>2]>>2]&2047](k);g=c[h>>2]|0;cv[c[(c[g>>2]|0)+60>>2]&2047](g,k);i=f;return}function wj(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d|0;do{if((a[43816]|0)==0){if((b1(43816)|0)==0){break}}}while(0);cv[c[(c[b>>2]|0)+72>>2]&2047](e,b);b=e;c[9510]=c[b>>2];c[9511]=c[b+4>>2];c[9512]=c[b+8>>2];c[9513]=c[b+12>>2];i=d;return 38040}function wk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;atG(a,b,c,d,e,f);return}function wl(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+64>>2]&2047](a,b);return}function wm(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function wn(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+132>>2]&2047](a,b);return}function wo(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+104>>2]&511](a,b)|0}function wp(a){a=a|0;return cA[c[(c[a>>2]|0)+96>>2]&4095](a)|0}function wq(a,b){a=a|0;b=+b;return dr[c[(c[a>>2]|0)+48>>2]&63](a,b,1,.01666666753590107)|0}function wr(a,b,d){a=a|0;b=+b;d=d|0;return dr[c[(c[a>>2]|0)+48>>2]&63](a,b,d,.01666666753590107)|0}function ws(a,b,d,e){a=a|0;b=+b;d=d|0;e=+e;return dr[c[(c[a>>2]|0)+48>>2]&63](a,b,d,e)|0}function wt(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+128>>2]&2047](a,b);return}function wu(a){a=a|0;return cA[c[(c[a>>2]|0)+112>>2]&4095](a)|0}function wv(a,b){a=a|0;b=b|0;atC(a|0,b);return}function ww(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+172>>2]&1023](a,b);return}function wx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+64|0;e=d|0;f=b+472|0;if((c[f>>2]|0)==0){i=d;return}if((c[b+204>>2]&3|0)!=0){i=d;return}anY(b+68|0,+g[b+132>>2],+g[b+136>>2],+g[b+140>>2],b+148|0,+g[a+236>>2]*+g[b+240>>2],e);b=c[f>>2]|0;cv[c[(c[b>>2]|0)+12>>2]&2047](b,e);i=d;return}function wy(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+120>>2]&2047](a,b);return}function wz(a){a=a|0;var b=0;b=c[a+76>>2]|0;return cA[c[(c[b>>2]|0)+36>>2]&4095](b)|0}function wA(a){a=a|0;ct[c[(c[a>>2]|0)+76>>2]&2047](a);return}function wB(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+36>>2]&2047](a,b);return}function wC(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+92>>2]&2047](a,b);return}function wD(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;atI(a,b,c,d,e,f,g,h);return}function wE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function wF(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function wG(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;anP(a,b,c,d,e);return}function wH(a,b,d){a=a|0;b=b|0;d=+d;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,-1);return}function wI(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,e);return}function wJ(a,b){a=a|0;b=b|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,-1))}function wK(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,d))}function wL(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function wM(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function wN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;while(1){f=aDx(268)|0;if((f|0)!=0){g=2523;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){g=2520;break}dC[h&63]()}if((g|0)==2523){h=f;aob(h,a,b,d,e);return h|0}else if((g|0)==2520){g=cd(4)|0;c[g>>2]=19096;bF(g|0,34368,676);return 0}return 0}function wO(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0;while(1){e=aDx(600)|0;if((e|0)!=0){f=2537;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){f=2534;break}dC[h&63]()}if((f|0)==2534){h=cd(4)|0;c[h>>2]=19096;bF(h|0,34368,676);return 0}else if((f|0)==2537){aq1(e,5,b);c[e>>2]=22328;b=e+292|0;f=d;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=e+308|0;h=d+16|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];h=e+324|0;i=d+32|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];i=e+340|0;j=d+48|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];j=e+356|0;a[e+519|0]=0;c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];b=e+372|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=e+388|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];h=e+404|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];a[e+516|0]=0;a[e+517|0]=0;a[e+518|0]=0;a[e+544|0]=0;g[e+564>>2]=-1.0;g[e+436>>2]=999999984306749400.0;g[e+440>>2]=999999984306749400.0;g[e+444>>2]=999999984306749400.0;g[e+420>>2]=1.0;g[e+424>>2]=.30000001192092896;g[e+428>>2]=1.0;g[e+432>>2]=.009999999776482582;g[e+448>>2]=.05000000074505806;c[e+584>>2]=0;g[e+588>>2]=0.0;g[e+592>>2]=.699999988079071;g[e+596>>2]=0.0;return e|0}return 0}function wP(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function wQ(b){b=b|0;return(a[b+20|0]&1)!=0|0}function wR(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function wS(a){a=a|0;return c[a+4>>2]|0}function wT(a){a=a|0;return+(+g[a+504>>2])}function wU(b,c){b=b|0;c=+c;g[b+564>>2]=c;a[b+545|0]=1;return}function wV(b,c){b=b|0;c=c|0;a[b+21|0]=c&1;return}function wW(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function wX(b){b=b|0;return(a[b+21|0]&1)!=0|0}function wY(a){a=a|0;return c[a+4>>2]|0}function wZ(b){b=b|0;return a[b+517|0]&1|0}function w_(a){a=a|0;return c[a+12>>2]|0}function w$(b,c){b=b|0;c=c|0;a[b+544|0]=c&1;return}function w0(a){a=a|0;return a+356|0}function w1(a,b){a=a|0;b=b|0;c[b>>2]=6;c[b+4>>2]=0;return}function w2(a){a=a|0;return c[a+12>>2]|0}function w3(a){a=a|0;return+(+g[a+36>>2])}function w4(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function w5(a){a=a|0;return+(+g[a+448>>2])}function w6(b){b=b|0;return a[b+517|0]&1|0}function w7(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function w8(a){a=a|0;return+(+g[a+32>>2])}function w9(b,c){b=b|0;c=c|0;a[b+516|0]=c&1;return}function xa(a,b,c){a=a|0;b=b|0;c=+c;if((b|0)==3){g[a+444>>2]=c;return}else if((b|0)==5){g[a+436>>2]=c;return}else if((b|0)==4){g[a+440>>2]=c;return}else{return}}function xb(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;g[a+436>>2]=b;g[a+440>>2]=c;g[a+444>>2]=d;g[a+420>>2]=1.0;g[a+424>>2]=.30000001192092896;g[a+428>>2]=1.0;return}function xc(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;g[a+436>>2]=b;g[a+440>>2]=c;g[a+444>>2]=d;g[a+420>>2]=e;g[a+424>>2]=.30000001192092896;g[a+428>>2]=1.0;return}function xd(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g[a+436>>2]=b;g[a+440>>2]=c;g[a+444>>2]=d;g[a+420>>2]=e;g[a+424>>2]=f;g[a+428>>2]=1.0;return}function xe(a,b,c,d,e,f,h){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;h=+h;g[a+436>>2]=b;g[a+440>>2]=c;g[a+444>>2]=d;g[a+420>>2]=e;g[a+424>>2]=f;g[a+428>>2]=h;return}function xf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0;d=i;i=i+208|0;e=d|0;f=d+80|0;h=d+160|0;j=d+176|0;k=d+192|0;l=c[a+24>>2]|0;m=+g[l+4>>2];n=+g[l+8>>2];o=+g[l+12>>2];p=+g[l+20>>2];q=+g[l+24>>2];r=+g[l+28>>2];s=+g[l+36>>2];t=+g[l+40>>2];u=+g[l+44>>2];v=+g[l+52>>2];w=+g[l+56>>2];x=+g[l+60>>2];l=c[a+28>>2]|0;y=+g[l+4>>2];z=+g[l+8>>2];A=+g[l+12>>2];B=+g[l+20>>2];C=+g[l+24>>2];D=+g[l+28>>2];E=+g[l+36>>2];F=+g[l+40>>2];G=+g[l+44>>2];H=+g[l+52>>2];I=+g[l+56>>2];J=+g[l+60>>2];K=-0.0-H;L=-0.0-I;M=-0.0-J;g[e>>2]=m*y+p*B+s*E;g[e+4>>2]=n*y+q*B+t*E;g[e+8>>2]=o*y+r*B+u*E;g[e+12>>2]=0.0;g[e+16>>2]=m*z+p*C+s*F;g[e+20>>2]=n*z+q*C+t*F;g[e+24>>2]=o*z+r*C+u*F;g[e+28>>2]=0.0;g[e+32>>2]=m*A+p*D+s*G;g[e+36>>2]=n*A+q*D+t*G;g[e+40>>2]=o*A+r*D+u*G;g[e+44>>2]=0.0;g[e+48>>2]=v*y+w*B+x*E+(y*K+B*L+E*M);g[e+52>>2]=v*z+w*C+x*F+(z*K+C*L+F*M);g[e+56>>2]=v*A+w*D+x*G+(A*K+D*L+G*M);g[e+60>>2]=0.0;ec(e|0,d+64|0);e=a+356|0;M=+g[e>>2];L=+g[a+372>>2];K=+g[a+388>>2];N=y*M+z*L+A*K;O=+g[a+360>>2];P=+g[a+376>>2];Q=+g[a+392>>2];R=y*O+z*P+A*Q;S=+g[a+364>>2];T=+g[a+380>>2];U=+g[a+396>>2];V=y*S+z*T+A*U;W=B*M+C*L+D*K;X=B*O+C*P+D*Q;Y=B*S+C*T+D*U;Z=E*M+F*L+G*K;K=E*O+F*P+G*Q;Q=E*S+F*T+G*U;U=+g[a+404>>2];T=+g[a+408>>2];S=+g[a+412>>2];P=-0.0-(H+(y*U+z*T+A*S));A=-0.0-(I+(B*U+C*T+D*S));D=-0.0-(J+(E*U+F*T+G*S));l=a+292|0;S=+g[l>>2];G=+g[a+308>>2];T=+g[a+324>>2];F=m*S+n*G+o*T;U=+g[a+296>>2];E=+g[a+312>>2];J=+g[a+328>>2];C=m*U+n*E+o*J;B=+g[a+300>>2];I=+g[a+316>>2];z=+g[a+332>>2];y=m*B+n*I+o*z;H=p*S+q*G+r*T;O=p*U+q*E+r*J;L=p*B+q*I+r*z;M=s*S+t*G+u*T;T=s*U+t*E+u*J;J=s*B+t*I+u*z;z=+g[a+340>>2];I=+g[a+344>>2];B=+g[a+348>>2];E=v+(m*z+n*I+o*B);o=w+(p*z+q*I+r*B);r=x+(s*z+t*I+u*B);g[f>>2]=Z*M+(N*F+W*H);g[f+4>>2]=Z*T+(N*C+W*O);g[f+8>>2]=Z*J+(N*y+W*L);g[f+12>>2]=0.0;g[f+16>>2]=K*M+(R*F+X*H);g[f+20>>2]=K*T+(R*C+X*O);g[f+24>>2]=K*J+(R*y+X*L);g[f+28>>2]=0.0;g[f+32>>2]=Q*M+(V*F+Y*H);g[f+36>>2]=Q*T+(V*C+Y*O);g[f+40>>2]=Q*J+(V*y+Y*L);g[f+44>>2]=0.0;g[f+48>>2]=Z*D+(N*P+W*A)+(Z*r+(N*E+W*o));g[f+52>>2]=K*D+(R*P+X*A)+(K*r+(R*E+X*o));g[f+56>>2]=Q*D+(V*P+Y*A)+(Q*r+(V*E+Y*o));g[f+60>>2]=0.0;ec(f|0,d+144|0);ec(e|0,j);o=-0.0- +g[j>>2];Y=-0.0- +g[j+4>>2];E=-0.0- +g[j+8>>2];V=+g[j+12>>2];r=+g[b>>2];Q=+g[b+12>>2];A=+g[b+8>>2];P=+g[b+4>>2];D=V*r+Q*o+A*Y-P*E;X=r*E+(Q*Y+V*P)-A*o;R=Q*E+V*A+P*o-r*Y;K=V*Q-r*o-P*Y-A*E;ec(l|0,k);E=+g[k>>2];A=+g[k+12>>2];Y=+g[k+8>>2];P=+g[k+4>>2];g[h>>2]=E*K+D*A+X*Y-R*P;g[h+4>>2]=E*R+(A*X+K*P)-D*Y;g[h+8>>2]=A*R+K*Y+D*P-E*X;g[h+12>>2]=K*A-E*D-X*P-R*Y;an_(a,h);i=d;return}function xg(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function xh(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+40>>2]&511](a,b,d)|0}function xi(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function xj(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+44>>2]&511](a,b,d);return}function xk(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0;while(1){h=aDx(600)|0;if((h|0)!=0){i=2596;break}j=(C=c[10744]|0,c[10744]=C+0,C);if((j|0)==0){break}dC[j&63]()}if((i|0)==2596){c[h+4>>2]=5;c[h+8>>2]=-1;c[h+12>>2]=-1;g[h+16>>2]=3.4028234663852886e+38;a[h+20|0]=1;a[h+21|0]=0;c[h+24>>2]=b;c[h+28>>2]=d;g[h+32>>2]=0.0;g[h+36>>2]=.30000001192092896;c[h>>2]=22328;d=h+292|0;b=e;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];b=h+308|0;d=e+16|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];d=h+324|0;b=e+32|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];b=h+340|0;d=e+48|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];d=h+356|0;b=f;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];b=h+372|0;d=f+16|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];d=h+388|0;b=f+32|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];b=h+404|0;d=f+48|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];a[h+544|0]=0;d=h+516|0;w=0;a[d]=w&255;w=w>>8;a[d+1|0]=w&255;w=w>>8;a[d+2|0]=w&255;w=w>>8;a[d+3|0]=w&255;g[h+564>>2]=-1.0;g[h+436>>2]=999999984306749400.0;g[h+440>>2]=999999984306749400.0;g[h+444>>2]=999999984306749400.0;g[h+420>>2]=1.0;g[h+424>>2]=.30000001192092896;g[h+428>>2]=1.0;g[h+432>>2]=.009999999776482582;g[h+448>>2]=.05000000074505806;c[h+584>>2]=0;g[h+588>>2]=0.0;g[h+592>>2]=.699999988079071;g[h+596>>2]=0.0;return h|0}h=cd(4)|0;c[h>>2]=19096;bF(h|0,34368,676);return 0}function xl(a,b){a=a|0;b=+b;return}function xm(a){a=a|0;return+(+g[a+32>>2])}function xn(a){a=a|0;return+(+g[a+492>>2])}function xo(b,c){b=b|0;c=+c;g[b+564>>2]=c;a[b+545|0]=0;return}function xp(a){a=a|0;return c[a+12>>2]|0}function xq(a,b){a=a|0;b=+b;g[a+448>>2]=b;return}function xr(a){a=a|0;return+(+g[a+16>>2])}function xs(a){a=a|0;return c[a+8>>2]|0}function xt(a){a=a|0;return+(+g[a+444>>2])}function xu(a){a=a|0;return a+292|0}function xv(a){a=a|0;return c[a+28>>2]|0}function xw(a){a=a|0;return c[a+24>>2]|0}function xx(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function xy(a){a=a|0;return+(+g[a+672>>2])}function xz(a){a=a|0;return a+544|0}function xA(a){a=a|0;return a+608|0}function xB(a,b){a=a|0;b=+b;g[a+676>>2]=b;return}function xC(a){a=a|0;return c[a+4>>2]|0}function xD(b,c,d,e){b=b|0;c=c|0;d=+d;e=+e;a[b+729|0]=c&1;g[b+672>>2]=d;g[b+676>>2]=e;return}function xE(a){a=a|0;return+(+g[a+704>>2])}function xF(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;cy[c[(c[a>>2]|0)+12>>2]&127](a|0,b,d,e,f);return}function xG(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;anR(a,b,c,d,e,f);return}function xH(a,b){a=a|0;b=b|0;an_(a,b);return}function xI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+24>>2]&127](a,b,d,e);return}function xJ(b,d,e){b=b|0;d=+d;e=+e;var f=0,g=0;f=i;i=i+16|0;g=f|0;do{if((a[43744]|0)==0){if((b1(43744)|0)==0){break}}}while(0);anZ(g,b,d,e);b=g;c[9506]=c[b>>2];c[9507]=c[b+4>>2];c[9508]=c[b+8>>2];c[9509]=c[b+12>>2];i=f;return 38024}function xK(b){b=b|0;var d=0,e=0,f=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0.0,F=0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0;d=b+496|0;g[d>>2]=0.0;g[b+492>>2]=0.0;e=b+517|0;a[e]=0;f=b+518|0;a[f]=0;h=c[b+24>>2]|0;i=+g[b+292>>2];j=+g[b+308>>2];k=+g[b+324>>2];l=+g[h+4>>2];m=+g[h+8>>2];n=+g[h+12>>2];o=i*l+j*m+k*n;p=+g[h+20>>2];q=+g[h+24>>2];r=+g[h+28>>2];s=i*p+j*q+k*r;t=+g[h+36>>2];u=+g[h+40>>2];v=+g[h+44>>2];w=i*t+j*u+k*v;h=c[b+28>>2]|0;k=+g[b+356>>2];j=+g[b+372>>2];i=+g[b+388>>2];x=h+4|0;y=h+8|0;z=h+12|0;A=k*+g[x>>2]+j*+g[y>>2]+i*+g[z>>2];B=h+20|0;C=h+24|0;D=h+28|0;E=k*+g[B>>2]+j*+g[C>>2]+i*+g[D>>2];F=h+36|0;G=h+40|0;H=h+44|0;I=k*+g[F>>2]+j*+g[G>>2]+i*+g[H>>2];i=+g[b+436>>2];if(i<.05000000074505806){J=0.0;K=0.0;L=0.0;M=0.0}else{j=+g[b+296>>2];k=+g[b+312>>2];N=+g[b+328>>2];O=l*j+m*k+n*N;R=p*j+q*k+r*N;S=t*j+u*k+v*N;N=o*A+s*E+w*I;k=I*S+(A*O+E*R);j=+P(+k);if(N<0.0){T=2.356194496154785-(N+j)/(j-N)*.7853981852531433}else{T=.7853981852531433-(N-j)/(N+j)*.7853981852531433}if(k<0.0){U=-0.0-T}else{U=T}T=(N*N+k*k)*10.0*10.0;J=U*(T/(T+1.0));K=O;L=R;M=S}S=+g[b+440>>2];if(S<.05000000074505806){V=0.0;W=0.0;X=0.0;Y=0.0}else{R=+g[b+300>>2];O=+g[b+316>>2];T=+g[b+332>>2];U=R*l+O*m+T*n;n=R*p+O*q+T*r;r=R*t+O*u+T*v;v=o*A+s*E+w*I;T=A*U+E*n+I*r;u=+P(+T);if(v<0.0){Z=2.356194496154785-(v+u)/(u-v)*.7853981852531433}else{Z=.7853981852531433-(v-u)/(v+u)*.7853981852531433}if(T<0.0){_=-0.0-Z}else{_=Z}Z=(v*v+T*T)*10.0*10.0;V=_*(Z/(Z+1.0));W=U;X=n;Y=r}r=1.0/(i*i)*+P(+(J*J));J=r+1.0/(S*S)*+P(+(V*V));if(J>1.0){g[d>>2]=J+-1.0;a[f]=1;J=I*M+(E*L+A*K);V=I*Y+(E*X+A*W);S=K*J+W*V;r=L*J+X*V;i=M*J+Y*V;V=E*i-I*r;J=I*S-A*i;i=A*r-E*S;g[b+464>>2]=0.0;S=1.0/+Q(+(V*V+J*J+i*i));r=o*A+s*E+w*I>=0.0?1.0:-1.0;g[b+452>>2]=r*V*S;g[b+456>>2]=r*J*S;g[b+460>>2]=r*i*S}S=+g[b+444>>2];if(S<0.0){return}i=+g[b+360>>2];r=+g[b+376>>2];J=+g[b+392>>2];V=i*+g[x>>2]+r*+g[y>>2]+J*+g[z>>2];n=i*+g[B>>2]+r*+g[C>>2]+J*+g[D>>2];U=i*+g[F>>2]+r*+g[G>>2]+J*+g[H>>2];J=o*A+s*E+w*I;do{if(J<-.9999998807907104){if(+P(+I)>.7071067690849304){r=1.0/+Q(+(E*E+I*I));$=0.0;aa=r*(-0.0-I);ab=E*r;ac=0.0;break}else{r=1.0/+Q(+(A*A+E*E));$=r*(-0.0-E);aa=A*r;ab=0.0;ac=0.0;break}}else{r=+Q(+((J+1.0)*2.0));i=1.0/r;$=(w*E-s*I)*i;aa=(o*I-w*A)*i;ab=(s*A-o*E)*i;ac=r*.5}}while(0);J=V*ac+U*aa-n*ab;r=n*ac+V*ab-U*$;i=U*ac+n*$-V*aa;Z=-0.0-$;$=V*Z-n*aa-U*ab;U=-0.0-aa;aa=-0.0-ab;ab=r*aa+(ac*J+$*Z)-i*U;n=i*Z+(ac*r+$*U)-J*aa;V=J*U+(ac*i+$*aa)-r*Z;Z=Y*V+(W*ab+X*n);X=M*V+(K*ab+L*n);n=+P(+Z);if(X<0.0){ad=2.356194496154785-(n+X)/(n-X)*.7853981852531433}else{ad=.7853981852531433-(X-n)/(n+X)*.7853981852531433}if(Z<0.0){ae=-0.0-ad}else{ae=ad}g[b+504>>2]=ae;ad=S>.05000000074505806?1.0:0.0;if(ae<=ad*(-0.0-S)){g[b+500>>2]=-0.0-(ae+S);a[e]=1;Z=(o+A)*.5;X=(s+E)*.5;n=(w+I)*.5;g[b+480>>2]=0.0;L=1.0/+Q(+(Z*Z+X*X+n*n));g[b+468>>2]=Z*L*-1.0;g[b+472>>2]=X*L*-1.0;g[b+476>>2]=n*L*-1.0;return}if(ae<=S*ad){return}g[b+500>>2]=ae-S;a[e]=1;S=(o+A)*.5;A=(s+E)*.5;E=(w+I)*.5;g[b+480>>2]=0.0;I=1.0/+Q(+(S*S+A*A+E*E));g[b+468>>2]=S*I;g[b+472>>2]=A*I;g[b+476>>2]=E*I;return}function xL(b,c,d,e,f,h){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0.0,j=0,k=0,l=0,m=0,n=0.0,o=0.0;i=+apy(b,d,e);g[b+720>>2]=i;j=b+700|0;g[j>>2]=0.0;k=b+704|0;g[k>>2]=0.0;l=b+708|0;a[l]=0;m=b+684|0;do{if(+g[m>>2]>=0.0){n=+ck(+(i- +g[b+680>>2]),6.2831854820251465);do{if(n<-3.1415927410125732){o=n+6.2831854820251465}else{if(n<=3.1415927410125732){o=n;break}o=n-6.2831854820251465}}while(0);n=+g[m>>2];if(o<-0.0-n){a[l]=1;g[j>>2]=-0.0-(o+n);g[k>>2]=1.0;break}if(o<=n){break}a[l]=1;g[j>>2]=n-o;g[k>>2]=-1.0}}while(0);apx(b,c,d,e,f,h);return}function xM(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function xN(a){a=a|0;return+(+apy(a,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0))}function xO(a,b,c){a=a|0;b=b|0;c=c|0;return+(+apy(a,b,c))}function xP(b,c,d){b=b|0;c=c|0;d=d|0;var e=0.0,f=0,h=0,i=0.0,j=0.0;e=+apy(b,c,d);g[b+720>>2]=e;d=b+700|0;g[d>>2]=0.0;c=b+704|0;g[c>>2]=0.0;f=b+708|0;a[f]=0;h=b+684|0;if(+g[h>>2]<0.0){return}i=+ck(+(e- +g[b+680>>2]),6.2831854820251465);do{if(i<-3.1415927410125732){j=i+6.2831854820251465}else{if(i<=3.1415927410125732){j=i;break}j=i-6.2831854820251465}}while(0);i=+g[h>>2];if(j<-0.0-i){a[f]=1;g[d>>2]=-0.0-(j+i);g[c>>2]=1.0;return}if(j<=i){return}a[f]=1;g[d>>2]=i-j;g[c>>2]=-1.0;return}function xQ(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function xR(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;apx(a,b,c,d,e,f);return}function xS(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function xT(a){a=a|0;var b=0.0,c=0.0;b=+ck(+(+g[a+680>>2]+ +g[a+684>>2]),6.2831854820251465);if(b<-3.1415927410125732){c=b+6.2831854820251465;return+c}if(b<=3.1415927410125732){c=b;return+c}c=b-6.2831854820251465;return+c}function xU(a,b){a=a|0;b=+b;return}function xV(b){b=b|0;return(a[b+20|0]&1)!=0|0}function xW(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function xX(b,c){b=b|0;c=c|0;a[b+20|0]=c&1;return}function xY(a){a=a|0;return c[a+4>>2]|0}function xZ(b,c){b=b|0;c=c|0;a[b+21|0]=c&1;return}function x_(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function x$(a){a=a|0;return+(+g[a+676>>2])}function x0(b,c){b=b|0;c=c|0;a[b+731|0]=c&1;return}function x1(b){b=b|0;return(a[b+729|0]&1)!=0|0}function x2(b){b=b|0;return(a[b+21|0]&1)!=0|0}function x3(a){a=a|0;return c[a+4>>2]|0}function x4(a){a=a|0;return c[a+12>>2]|0}function x5(b,c){b=b|0;c=c|0;a[b+729|0]=c&1;return}function x6(a){a=a|0;return a+608|0}function x7(b,d){b=b|0;d=d|0;var e=0;e=d|0;if((a[b+730|0]&1)==0){c[e>>2]=6;c[d+4>>2]=0;return}else{c[e>>2]=0;c[d+4>>2]=0;return}}function x8(a){a=a|0;return c[a+12>>2]|0}function x9(a){a=a|0;return+(+g[a+36>>2])}function ya(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function yb(b){b=b|0;return(a[b+731|0]&1)!=0|0}function yc(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function yd(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function ye(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function yf(a){a=a|0;return+(+g[a+32>>2])}function yg(b,c){b=b|0;c=c|0;a[b+728|0]=c&1;return}function yh(b){b=b|0;return a[b+708|0]&1|0}function yi(a){a=a|0;return c[a+12>>2]|0}function yj(a){a=a|0;return+(+g[a+16>>2])}function yk(a){a=a|0;return c[a+8>>2]|0}function yl(b){b=b|0;return(a[b+728|0]&1)!=0|0}function ym(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+24>>2]&127](a|0,b,d,e);return}function yn(a){a=a|0;var b=0.0,c=0.0;b=+ck(+(+g[a+680>>2]- +g[a+684>>2]),6.2831854820251465);if(b<-3.1415927410125732){c=b+6.2831854820251465;return+c}if(b<=3.1415927410125732){c=b;return+c}c=b-6.2831854820251465;return+c}function yo(a,b,d){a=a|0;b=b|0;d=+d;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,-1);return}function yp(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,e);return}function yq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;aps(a,b,c,d,e,f);return}function yr(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+40>>2]&511](a,b,d)|0}function ys(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function yt(a,b){a=a|0;b=b|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,-1))}function yu(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,d))}function yv(a,b,c){a=a|0;b=+b;c=+c;var d=0.0,e=0.0;d=(c-b)*.5;g[a+684>>2]=d;c=+ck(+(d+b),6.2831854820251465);do{if(c<-3.1415927410125732){e=c+6.2831854820251465}else{if(c<=3.1415927410125732){e=c;break}e=c-6.2831854820251465}}while(0);g[a+680>>2]=e;g[a+688>>2]=.8999999761581421;g[a+692>>2]=.30000001192092896;g[a+696>>2]=1.0;return}function yw(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;var e=0.0,f=0.0;e=(c-b)*.5;g[a+684>>2]=e;c=+ck(+(e+b),6.2831854820251465);do{if(c<-3.1415927410125732){f=c+6.2831854820251465}else{if(c<=3.1415927410125732){f=c;break}f=c-6.2831854820251465}}while(0);g[a+680>>2]=f;g[a+688>>2]=d;g[a+692>>2]=.30000001192092896;g[a+696>>2]=1.0;return}function yx(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0.0,h=0.0;f=(c-b)*.5;g[a+684>>2]=f;c=+ck(+(f+b),6.2831854820251465);do{if(c<-3.1415927410125732){h=c+6.2831854820251465}else{if(c<=3.1415927410125732){h=c;break}h=c-6.2831854820251465}}while(0);g[a+680>>2]=h;g[a+688>>2]=d;g[a+692>>2]=e;g[a+696>>2]=1.0;return}function yy(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var h=0.0,i=0.0;h=(c-b)*.5;g[a+684>>2]=h;c=+ck(+(h+b),6.2831854820251465);do{if(c<-3.1415927410125732){i=c+6.2831854820251465}else{if(c<=3.1415927410125732){i=c;break}i=c-6.2831854820251465}}while(0);g[a+680>>2]=i;g[a+688>>2]=d;g[a+692>>2]=e;g[a+696>>2]=f;return}function yz(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function yA(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;cy[c[(c[a>>2]|0)+12>>2]&127](a|0,b,d,e,f);return}function yB(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,R=0.0,S=0.0,T=0.0,U=0;e=i;i=i+40|0;f=e|0;h=e+8|0;j=e+24|0;ec(a+608|0,h);k=-0.0- +g[h>>2];l=-0.0- +g[h+4>>2];m=-0.0- +g[h+8>>2];n=+g[h+12>>2];o=+g[b>>2];q=+g[b+12>>2];r=+g[b+8>>2];s=+g[b+4>>2];t=n*o+q*k+r*l-s*m;u=o*m+(q*l+n*s)-r*k;v=q*m+n*r+s*k-o*l;w=n*q-o*k-s*l-r*m;ec(a+544|0,j);m=+g[j>>2];r=+g[j+12>>2];l=+g[j+8>>2];s=+g[j+4>>2];k=m*w+t*r+u*l-v*s;o=m*v+(r*u+w*s)-t*l;q=r*v+w*l+t*s-m*u;n=w*r-m*t-u*s-v*l;l=1.0/+Q(+(n*n+(q*q+(k*k+o*o))));v=k*l;k=l*o;o=l*q;q=l*n;n=q*0.0;l=o*0.0;s=n+k-l;u=l+n-v;n=k*0.0;l=q+v*0.0-n;t=-0.0-v;m=v*-0.0-n-o;n=-0.0-k;r=-0.0-o;w=u*r+(q*s+m*t)-l*n;x=l*t+(q*u+m*n)-s*r;y=s*n+(q*l+m*r)-u*t;t=1.0/+Q(+(y*y+(w*w+x*x)));u=t*w;w=t*x;x=t*y;y=u*0.0;t=w*0.0;r=x+(t+y);do{if(r<-.9999998807907104){if(+P(1.0)>.7071067690849304){z=0.0;A=-1.0;B=0.0;C=0.0;break}z=p;A=p;B=0.0;C=0.0}else{m=x*0.0;l=+Q(+((r+1.0)*2.0));n=1.0/l;z=(m-w)*n;A=(u-m)*n;B=(t-y)*n;C=l*.5}}while(0);y=-0.0-z;z=-0.0-A;A=-0.0-B;B=o*z+(v*C+q*y)-k*A;t=v*A+(k*C+q*z)-o*y;u=o*C+q*A+k*y-v*z;w=q*C-v*y-k*z-o*A;A=1.0/+Q(+(w*w+(u*u+(t*t+B*B))));B=A*u;u=A*w;w=u<-1.0?-1.0:u;A=+V(+(w>1.0?1.0:w))*2.0;if(A>3.1415927410125732){w=u>1.0?-1.0:-0.0-u;D=+V(+(w>1.0?1.0:w))*2.0;E=-0.0-B}else{D=A;E=B}if(E>=0.0){F=D;G=f;g[f>>2]=F;H=a+680|0;aq4(H,f);I=a+24|0;J=c[I>>2]|0;K=J+4|0;L=a+28|0;M=c[L>>2]|0;N=M+4|0;O=+apy(a,K,N);R=+g[f>>2];S=R-O;T=S/d;U=a+672|0;g[U>>2]=T;i=e;return}F=-0.0-D;G=f;g[f>>2]=F;H=a+680|0;aq4(H,f);I=a+24|0;J=c[I>>2]|0;K=J+4|0;L=a+28|0;M=c[L>>2]|0;N=M+4|0;O=+apy(a,K,N);R=+g[f>>2];S=R-O;T=S/d;U=a+672|0;g[U>>2]=T;i=e;return}function yC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;while(1){e=aDx(756)|0;if((e|0)!=0){f=2798;break}g=(C=c[10744]|0,c[10744]=C+0,C);if((g|0)==0){f=2795;break}dC[g&63]()}if((f|0)==2798){g=e;apo(g,a,b,d,0);return g|0}else if((f|0)==2795){f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}return 0}function yD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;while(1){f=aDx(756)|0;if((f|0)!=0){g=2812;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){g=2809;break}dC[h&63]()}if((g|0)==2812){h=f;apo(h,a,b,d,e);return h|0}else if((g|0)==2809){g=cd(4)|0;c[g>>2]=19096;bF(g|0,34368,676);return 0}return 0}function yE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;while(1){h=aDx(756)|0;if((h|0)!=0){i=2826;break}j=(C=c[10744]|0,c[10744]=C+0,C);if((j|0)==0){break}dC[j&63]()}if((i|0)==2826){i=h;apn(i,a,b,d,e,f,g,0);return i|0}i=cd(4)|0;c[i>>2]=19096;bF(i|0,34368,676);return 0}function yF(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;while(1){i=aDx(756)|0;if((i|0)!=0){j=2838;break}k=(C=c[10744]|0,c[10744]=C+0,C);if((k|0)==0){break}dC[k&63]()}if((j|0)==2838){j=i;apn(j,a,b,d,e,f,g,h);return j|0}j=cd(4)|0;c[j>>2]=19096;bF(j|0,34368,676);return 0}function yG(a){a=a|0;return+(+g[a+32>>2])}function yH(a){a=a|0;return a+544|0}function yI(a,b){a=a|0;b=+b;g[a>>2]=b;return}function yJ(a,b){a=a|0;b=+b;g[a+48>>2]=b;return}function yK(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function yL(b){b=b|0;var d=0;do{if((c[b+56>>2]|0)==0){if((a[b+44|0]&1)==0){d=0}else{break}return d|0}}while(0);d=1;return d|0}function yM(a,b){a=a|0;b=+b;g[a+52>>2]=b;return}function yN(b,d,e,f,h,i){b=b|0;d=+d;e=e|0;f=+f;h=h|0;i=i|0;var j=0.0,k=0.0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0;do{if((c[b+56>>2]|0)==0){if((a[b+44|0]&1)==0){j=0.0;return+j}else{k=+g[b+8>>2];l=b+12|0;break}}else{k=+g[b+48>>2]*(-0.0- +g[b+32>>2])/d;l=b+16|0}}while(0);m=+g[l>>2]*d;l=h+520|0;n=h+524|0;o=h+528|0;p=i+520|0;q=i+524|0;r=i+528|0;s=e|0;t=e+4|0;u=e+8|0;d=+g[b+24>>2]*(k- +g[b+20>>2]*((+g[h+320>>2]+ +g[l>>2]-(+g[i+320>>2]+ +g[p>>2]))*+g[s>>2]+(+g[h+324>>2]+ +g[n>>2]-(+g[i+324>>2]+ +g[q>>2]))*+g[t>>2]+(+g[h+328>>2]+ +g[o>>2]-(+g[i+328>>2]+ +g[r>>2]))*+g[u>>2]));if(d<1.1920928955078125e-7&d>-1.1920928955078125e-7){j=0.0;return+j}k=d*(+g[b+40>>2]+1.0)*f;if(k>0.0){v=k>m?m:k}else{f=-0.0-m;v=k<f?f:k}e=b+60|0;k=+g[e>>2];f=v+k;if(f>999999984306749400.0){w=0.0}else{w=f<-999999984306749400.0?0.0:f}g[e>>2]=w;f=w-k;k=+g[s>>2];w=+g[t>>2];v=+g[u>>2];if(+g[h+336>>2]!=0.0){m=w*+g[h+292>>2]+k*+g[h+288>>2]+v*+g[h+296>>2];d=w*+g[h+276>>2]+k*+g[h+272>>2]+v*+g[h+280>>2];x=w*+g[h+260>>2]+k*+g[h+256>>2]+v*+g[h+264>>2];y=f*0.0;e=h+504|0;g[e>>2]=y+ +g[e>>2];e=h+508|0;g[e>>2]=y+ +g[e>>2];e=h+512|0;g[e>>2]=y+ +g[e>>2];y=d*f*+g[h+540>>2];d=m*f*+g[h+544>>2];g[l>>2]=x*f*+g[h+536>>2]+ +g[l>>2];g[n>>2]=y+ +g[n>>2];g[o>>2]=d+ +g[o>>2];z=+g[s>>2];A=+g[t>>2];B=+g[u>>2]}else{z=k;A=w;B=v}v=-0.0-f;if(+g[i+336>>2]==0.0){j=f;return+j}w=A*+g[i+292>>2]+z*+g[i+288>>2]+B*+g[i+296>>2];k=A*+g[i+276>>2]+z*+g[i+272>>2]+B*+g[i+280>>2];d=A*+g[i+260>>2]+z*+g[i+256>>2]+B*+g[i+264>>2];B=f*-0.0;u=i+504|0;g[u>>2]=B+ +g[u>>2];u=i+508|0;g[u>>2]=B+ +g[u>>2];u=i+512|0;g[u>>2]=B+ +g[u>>2];B=k*+g[i+540>>2]*v;k=w*+g[i+544>>2]*v;g[p>>2]=d*+g[i+536>>2]*v+ +g[p>>2];g[q>>2]=B+ +g[q>>2];g[r>>2]=k+ +g[r>>2];j=f;return+j}function yO(a){a=a|0;return+(+g[a+32>>2])}function yP(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function yQ(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function yR(a){a=a|0;return+(+g[a+52>>2])}function yS(a){a=a|0;return+(+g[a+36>>2])}function yT(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+544|0;f=b;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+560|0;e=b+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+576|0;f=b+32|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+592|0;e=b+48|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+608|0;f=d;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+624|0;e=d+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+640|0;f=d+32|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+656|0;e=d+48|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function yU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0;d=i;i=i+272|0;e=d|0;f=d+32|0;h=d+80|0;j=d+96|0;k=d+112|0;l=d+176|0;m=d+224|0;n=k;o=l;anN(b,h,j);p=+g[a+592>>2];q=+g[a+596>>2];r=+g[a+600>>2];s=b|0;t=b+4|0;u=b+8|0;v=+g[h>>2];g[a+544>>2]=v;g[a+548>>2]=+g[j>>2];g[a+552>>2]=+g[s>>2];g[a+556>>2]=0.0;w=+g[h+4>>2];g[a+560>>2]=w;g[a+564>>2]=+g[j+4>>2];g[a+568>>2]=+g[t>>2];g[a+572>>2]=0.0;x=+g[h+8>>2];g[a+576>>2]=x;g[a+580>>2]=+g[j+8>>2];g[a+584>>2]=+g[u>>2];g[a+588>>2]=0.0;j=a+24|0;h=c[j>>2]|0;y=+g[s>>2];z=+g[t>>2];A=+g[u>>2];B=+g[h+4>>2]*y+ +g[h+8>>2]*z+ +g[h+12>>2]*A;C=+g[h+20>>2]*y+ +g[h+24>>2]*z+ +g[h+28>>2]*A;D=+g[h+36>>2]*y+ +g[h+40>>2]*z+ +g[h+44>>2]*A;E=y*B+z*C+A*D;if(E<-.9999998807907104){anN(b,e,d+16|0);F=0.0;G=+g[e+8>>2];H=+g[e+4>>2];I=+g[e>>2]}else{J=+Q(+((E+1.0)*2.0));E=1.0/J;F=J*.5;G=(y*C-z*B)*E;H=(A*B-y*D)*E;I=(z*D-A*C)*E}E=F*v+H*x-G*w;A=F*w+G*v-I*x;z=F*x+I*w-H*v;y=-0.0-I;I=v*y-H*w-G*x;x=-0.0-H;H=-0.0-G;G=I*y+E*F+A*H-z*x;w=I*x+A*F+z*y-E*H;v=I*H+z*F+E*x-A*y;y=C*v-D*w;A=D*G-B*v;x=B*w-C*G;e=a+28|0;b=c[e>>2]|0;h=f;d$(f,b+4|0,b+20|0,b+36|0,b+8|0,b+24|0,b+40|0,b+12|0,b+28|0,b+44|0);E=-0.0- +g[b+52>>2];F=-0.0- +g[b+56>>2];z=-0.0- +g[b+60>>2];H=+g[f>>2]*E+ +g[f+4>>2]*F+ +g[f+8>>2]*z;I=+g[f+16>>2]*E+ +g[f+20>>2]*F+ +g[f+24>>2]*z;J=+g[f+32>>2]*E+ +g[f+36>>2]*F+ +g[f+40>>2]*z;b=k+48|0;u=k|0;do{u=u+16|0;}while((u|0)!=(b|0));c[n>>2]=c[h>>2];c[n+4>>2]=c[h+4>>2];c[n+8>>2]=c[h+8>>2];c[n+12>>2]=c[h+12>>2];h=k+16|0;n=f+16|0;c[h>>2]=c[n>>2];c[h+4>>2]=c[n+4>>2];c[h+8>>2]=c[n+8>>2];c[h+12>>2]=c[n+12>>2];n=k+32|0;h=f+32|0;c[n>>2]=c[h>>2];c[n+4>>2]=c[h+4>>2];c[n+8>>2]=c[h+8>>2];c[n+12>>2]=c[h+12>>2];g[k+48>>2]=H;g[k+52>>2]=I;g[k+56>>2]=J;g[k+60>>2]=0.0;h=c[j>>2]|0;z=+g[h+4>>2]*p+ +g[h+8>>2]*q+ +g[h+12>>2]*r+ +g[h+52>>2];F=+g[h+20>>2]*p+ +g[h+24>>2]*q+ +g[h+28>>2]*r+ +g[h+56>>2];E=+g[h+36>>2]*p+ +g[h+40>>2]*q+ +g[h+44>>2]*r+ +g[h+60>>2];r=+g[k+16>>2]*z+ +g[k+20>>2]*F+ +g[k+24>>2]*E+I;I=+g[k+32>>2]*z+ +g[k+36>>2]*F+ +g[k+40>>2]*E+J;g[a+656>>2]=+g[k>>2]*z+ +g[k+4>>2]*F+ +g[k+8>>2]*E+H;g[a+660>>2]=r;g[a+664>>2]=I;g[a+668>>2]=0.0;k=a+608|0;g[k>>2]=G;g[a+612>>2]=y;g[a+616>>2]=B;g[a+620>>2]=0.0;g[a+624>>2]=w;g[a+628>>2]=A;g[a+632>>2]=C;g[a+636>>2]=0.0;g[a+640>>2]=v;g[a+644>>2]=x;g[a+648>>2]=D;g[a+652>>2]=0.0;eq(m,(c[e>>2]|0)+4|0);anx(l,m,k);m=k;c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];o=a+624|0;m=l+16|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];m=a+640|0;a=l+32|0;c[m>>2]=c[a>>2];c[m+4>>2]=c[a+4>>2];c[m+8>>2]=c[a+8>>2];c[m+12>>2]=c[a+12>>2];i=d;return}function yV(){var b=0,d=0,e=0;while(1){b=aDx(64)|0;if((b|0)!=0){d=2893;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==2893){g[b+60>>2]=0.0;g[b+8>>2]=0.0;g[b+12>>2]=.10000000149011612;g[b+16>>2]=300.0;g[b>>2]=1.0;g[b+4>>2]=-1.0;g[b+28>>2]=0.0;g[b+32>>2]=.20000000298023224;g[b+36>>2]=0.0;g[b+40>>2]=0.0;g[b+20>>2]=1.0;g[b+24>>2]=.5;c[b+56>>2]=0;g[b+48>>2]=0.0;a[b+44|0]=0;return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function yW(b){b=b|0;return(a[b+44|0]&1)!=0|0}function yX(b,c){b=b|0;c=c|0;a[b+44|0]=c&1;return}function yY(a,b){a=a|0;b=+b;var d=0.0,e=0.0,f=0,h=0;d=+g[a>>2];e=+g[a+4>>2];if(d>e){c[a+56>>2]=0;f=0;return f|0}if(d>b){c[a+56>>2]=1;g[a+48>>2]=b-d;f=1;return f|0}h=a+56|0;if(e<b){c[h>>2]=2;g[a+48>>2]=b-e;f=2;return f|0}else{c[h>>2]=0;f=0;return f|0}return 0}function yZ(a){a=a|0;return+(+g[a+48>>2])}function y_(a,b){a=a|0;b=+b;g[a+24>>2]=b;return}function y$(a){a=a|0;return+(+g[a>>2])}function y0(a){a=a|0;return c[a+56>>2]|0}function y1(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function y2(a){a=a|0;return+(+g[a+40>>2])}function y3(a){a=a|0;return+(+g[a+8>>2])}function y4(a){a=a|0;return+(+g[a+60>>2])}function y5(a,b){a=a|0;b=+b;g[a+20>>2]=b;return}function y6(a,b){a=a|0;b=+b;g[a+12>>2]=b;return}function y7(a,b){a=a|0;b=+b;g[a+28>>2]=b;return}function y8(a){a=a|0;return+(+g[a+16>>2])}function y9(a){a=a|0;return+(+g[a+20>>2])}function za(a){a=a|0;return+(+g[a+28>>2])}function zb(a){a=a|0;return+(+g[a+4>>2])}function zc(a,b){a=a|0;b=+b;g[a+60>>2]=b;return}function zd(a,b){a=a|0;b=+b;g[a+8>>2]=b;return}function ze(a){a=a|0;return(+g[a>>2]>+g[a+4>>2]?0:1)|0}function zf(a){a=a|0;return+(+g[a+12>>2])}function zg(a,b){a=a|0;b=b|0;c[a+56>>2]=b;return}function zh(a,b){a=a|0;b=+b;g[a+40>>2]=b;return}function zi(a){a=a|0;return+(+g[a+24>>2])}function zj(a){a=a|0;return(c[a+4>>2]|0)==31|0}function zk(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function zl(a){a=a|0;return+(+g[a+44>>2])}function zm(a){a=a|0;return(c[a+4>>2]|0)<7|0}function zn(a){a=a|0;return+(+g[a+56>>2])}function zo(a){a=a|0;return+(+g[a+60>>2])}function zp(a){a=a|0;return a+12|0}function zq(a,b){a=a|0;b=b|0;if((b|0)==0){c[a+64>>2]=1;c[a+68>>2]=0;c[a+72>>2]=2;return}else if((b|0)==2){c[a+64>>2]=0;c[a+68>>2]=2;c[a+72>>2]=1;return}else if((b|0)==1){c[a+64>>2]=0;c[a+68>>2]=1;c[a+72>>2]=2;return}else{return}}function zr(a){a=a|0;return(c[a+4>>2]|0)<20|0}function zs(a){a=a|0;return(c[a+4>>2]|0)==28|0}function zt(a){a=a|0;return c[a+8>>2]|0}function zu(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function zv(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function zw(a){a=a|0;return(c[a+4>>2]|0)==32|0}function zx(a){a=a|0;return a+28|0}function zy(a){a=a|0;return c[a+68>>2]|0}function zz(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function zA(a){a=a|0;return c[a+4>>2]|0}function zB(a){a=a|0;return(c[a+4>>2]|0)==31|0}function zC(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function zD(a){a=a|0;return+(+g[a+44>>2])}function zE(a){a=a|0;return(c[a+4>>2]|0)<7|0}function zF(a){a=a|0;return+(+g[a+56>>2])}function zG(a){a=a|0;if((a|0)==0){return}aDB(a);return}function zH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+8>>2]&127](a,b,d,e)|0}function zI(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function zJ(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43760]|0)==0){if((b1(43760)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9502]=c[d>>2];c[9503]=c[d+4>>2];c[9504]=c[d+8>>2];c[9505]=c[d+12>>2];i=e;return 38008}function zK(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function zL(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function zM(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function zN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function zO(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function zP(a,b){a=+a;b=+b;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(95)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}c[e+8>>2]=0;g[e+12>>2]=1.0;g[e+16>>2]=1.0;g[e+20>>2]=1.0;g[e+24>>2]=0.0;g[e+44>>2]=.03999999910593033;g[e+56>>2]=a;g[e+60>>2]=b;c[e+4>>2]=11;g[e+52>>2]=a/+Q(+(a*a+b*b));c[e>>2]=25768;c[e+64>>2]=0;c[e+68>>2]=2;c[e+72>>2]=1;return e|0}function zQ(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function zR(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43296]|0)==0){if((b1(43296)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9498]=c[d>>2];c[9499]=c[d+4>>2];c[9500]=c[d+8>>2];c[9501]=c[d+12>>2];i=e;return 37992}function zS(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43456]|0)==0){if((b1(43456)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b|0,d);d=f;c[9494]=c[d>>2];c[9495]=c[d+4>>2];c[9496]=c[d+8>>2];c[9497]=c[d+12>>2];i=e;return 37976}function zT(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function zU(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function zV(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43600]|0)==0){if((b1(43600)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9490]=c[d>>2];c[9491]=c[d+4>>2];c[9492]=c[d+8>>2];c[9493]=c[d+12>>2];i=e;return 37960}function zW(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function zX(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function zY(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function zZ(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function z_(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function z$(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 10:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 0:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function z0(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function z1(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a|0,b,d,e);return}function z2(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function z3(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function z4(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function z5(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function z6(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function z7(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function z8(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43768]|0)==0){if((b1(43768)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9486]=c[d>>2];c[9487]=c[d+4>>2];c[9488]=c[d+8>>2];c[9489]=c[d+12>>2];i=e;return 37944}function z9(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function Aa(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function Ab(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function Ac(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function Ad(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function Ae(b){b=b|0;var d=0,e=0,f=0;while(1){d=aDx(64)|0;if((d|0)!=0){e=3041;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){break}dC[f&63]()}if((e|0)==3041){g[d+8>>2]=+g[b+8>>2];g[d+12>>2]=+g[b+12>>2];g[d+24>>2]=+g[b+24>>2];g[d>>2]=+g[b>>2];g[d+4>>2]=+g[b+4>>2];g[d+28>>2]=+g[b+28>>2];g[d+32>>2]=+g[b+32>>2];g[d+36>>2]=+g[b+36>>2];g[d+40>>2]=+g[b+40>>2];c[d+56>>2]=c[b+56>>2];g[d+48>>2]=+g[b+48>>2];a[d+44|0]=a[b+44|0]&1;return d|0}d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}function Af(a){a=a|0;return+(+g[a+60>>2])}function Ag(a){a=a|0;return a+12|0}function Ah(a,b){a=a|0;b=b|0;if((b|0)==1){c[a+64>>2]=0;c[a+68>>2]=1;c[a+72>>2]=2;return}else if((b|0)==2){c[a+64>>2]=0;c[a+68>>2]=2;c[a+72>>2]=1;return}else if((b|0)==0){c[a+64>>2]=1;c[a+68>>2]=0;c[a+72>>2]=2;return}else{return}}function Ai(a){a=a|0;return(c[a+4>>2]|0)<20|0}function Aj(a){a=a|0;return(c[a+4>>2]|0)==28|0}function Ak(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function Al(a){a=a|0;return c[a+8>>2]|0}function Am(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function An(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function Ao(a){a=a|0;return(c[a+4>>2]|0)==32|0}function Ap(a){a=a|0;return a+28|0}function Aq(a){a=a|0;return c[a+68>>2]|0}function Ar(a){a=a|0;return c[a+4>>2]|0}function As(a){a=a|0;return+(+g[a+168>>2])}function At(b){b=b|0;return(a[b+165|0]&1)!=0|0}function Au(a){a=a|0;return a+4|0}function Av(a,b){a=a|0;b=+b;g[a+168>>2]=b;return}function Aw(b){b=b|0;return(a[b+164|0]&1)!=0|0}function Ax(b){b=b|0;return(c[((a[b+164|0]&1)==0?b+148|0:b+128|0)>>2]|0)/3|0|0}function Ay(a){a=a|0;return a+20|0}function Az(a,b){a=+a;b=+b;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(95)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}c[e+8>>2]=0;g[e+12>>2]=1.0;g[e+16>>2]=1.0;g[e+20>>2]=1.0;g[e+24>>2]=0.0;g[e+44>>2]=.03999999910593033;g[e+56>>2]=a;g[e+60>>2]=b;c[e+4>>2]=11;g[e+52>>2]=a/+Q(+(a*a+b*b));c[e>>2]=25872;c[e+64>>2]=1;c[e+68>>2]=0;c[e+72>>2]=2;return e|0}function AA(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43304]|0)==0){if((b1(43304)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9482]=c[d>>2];c[9483]=c[d+4>>2];c[9484]=c[d+8>>2];c[9485]=c[d+12>>2];i=e;return 37928}function AB(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43464]|0)==0){if((b1(43464)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b|0,d);d=f;c[9478]=c[d>>2];c[9479]=c[d+4>>2];c[9480]=c[d+8>>2];c[9481]=c[d+12>>2];i=e;return 37912}function AC(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function AD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function AE(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43608]|0)==0){if((b1(43608)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9474]=c[d>>2];c[9475]=c[d+4>>2];c[9476]=c[d+8>>2];c[9477]=c[d+12>>2];i=e;return 37896}function AF(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function AG(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function AH(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function AI(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function AJ(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function AK(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 10:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 0:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function AL(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function AM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a|0,b,d,e);return}function AN(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function AO(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function AP(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function AQ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function AR(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function AS(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function AT(a,b){a=a|0;b=b|0;aBk(a,b);return}function AU(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+32>>2]&2047](a,b);return}function AV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+40|0;f=e|0;c[f>>2]=18624;g[f+4>>2]=999999984306749400.0;g[f+8>>2]=999999984306749400.0;g[f+12>>2]=999999984306749400.0;g[f+16>>2]=0.0;g[f+20>>2]=-999999984306749400.0;g[f+24>>2]=-999999984306749400.0;g[f+28>>2]=-999999984306749400.0;g[f+32>>2]=0.0;g[b>>2]=-999999984306749400.0;g[b+4>>2]=-999999984306749400.0;g[b+8>>2]=-999999984306749400.0;g[b+12>>2]=0.0;g[d>>2]=999999984306749400.0;g[d+4>>2]=999999984306749400.0;g[d+8>>2]=999999984306749400.0;g[d+12>>2]=0.0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,f|0,b,d);a=b;b=f+4|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];b=d;d=f+20|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];i=e;return}function AW(a,b,c){a=a|0;b=b|0;c=c|0;return aBn(a,b,c)|0}function AX(a,b){a=a|0;b=b|0;AY(a|0,b,2);return}function AY(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=b+24|0;g=c[f>>2]|0;h=b+28|0;do{if((g|0)==(c[h>>2]|0)){i=(g|0)==0?1:g<<1;if((g|0)>=(i|0)){j=g;break}do{if((i|0)==0){k=0}else{c[9806]=(c[9806]|0)+1;l=aDx((i<<5|4)+15|0)|0;if((l|0)==0){k=0;break}m=-(l+4|0)&15;c[l+m>>2]=l;k=l+(m+4)|0}}while(0);m=c[f>>2]|0;l=b+32|0;n=0;while(1){if((n|0)>=(m|0)){break}o=k+(n<<5)|0;p=(c[l>>2]|0)+(n<<5)|0;aDC(o|0,p|0,32)|0;n=n+1|0}n=c[f>>2]|0;m=0;while(1){if((m|0)>=(n|0)){break}m=m+1|0}m=c[l>>2]|0;p=b+36|0;if((m|0)==0){q=n;r=p}else{if((a[p]&1)==0){s=n}else{c[9804]=(c[9804]|0)+1;aDB(c[m-32+28>>2]|0);s=c[f>>2]|0}c[l>>2]=0;q=s;r=p}a[r]=1;c[l>>2]=k;c[h>>2]=i;j=q}else{j=g}}while(0);g=b+32|0;b=(c[g>>2]|0)+(j<<5)|0;j=d;aDC(b|0,j|0,32)|0;j=c[f>>2]|0;c[f>>2]=j+1;c[(c[g>>2]|0)+(j<<5)+24>>2]=e;return}function AZ(a,b,c){a=a|0;b=b|0;c=c|0;AY(a|0,b,c);return}function A_(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+48>>2]&511](a|0,b,d);return}function A$(a){a=a|0;return cA[c[(c[a>>2]|0)+52>>2]&4095](a|0)|0}function A0(){var a=0,b=0,d=0;c[9806]=(c[9806]|0)+1;a=aDx(191)|0;if((a|0)==0){b=0}else{d=-(a+4|0)&15;c[a+d>>2]=a;b=a+(d+4)|0}d=b;aBj(d,1,1);return d|0}function A1(a){a=a|0;var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(191)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}e=d;aBj(e,a,1);return e|0}function A2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(191)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}f=e;aBj(f,a,b);return f|0}function A3(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+44>>2]&511](a|0,b,d);return}function A4(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function A5(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function A6(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function A7(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;di[c[(c[a>>2]|0)+16>>2]&63](a|0,b,d,e,f,g,h,i,j,0);return}function A8(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;di[c[(c[a>>2]|0)+16>>2]&63](a|0,b,d,e,f,g,h,i,j,k);return}function A9(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+36>>2]&2047](a,b);return}function Ba(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+56>>2]&511](a|0,b,d)|0}function Bb(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a|0,b);return}function Bc(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function Bd(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function Be(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;di[c[(c[a>>2]|0)+12>>2]&63](a|0,b,d,e,f,g,h,i,j,0);return}function Bf(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;di[c[(c[a>>2]|0)+12>>2]&63](a|0,b,d,e,f,g,h,i,j,k);return}function Bg(a){a=a|0;return cA[c[(c[a>>2]|0)+40>>2]&4095](a|0)|0}function Bh(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function Bi(a){a=a|0;return c[a>>2]|0}function Bj(a){a=a|0;return c[a+4>>2]|0}function Bk(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function Bl(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function Bm(a){a=a|0;return c[a+12>>2]|0}function Bn(a){a=a|0;return c[a+12>>2]|0}function Bo(a){a=a|0;return c[a+8>>2]|0}function Bp(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function Bq(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Br(a){a=a|0;return a+4|0}function Bs(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function Bt(a){a=a|0;return+(+g[a+32>>2])}function Bu(a){a=a|0;return+(+g[a+4>>2])}function Bv(a,c){a=a|0;c=c|0;b[a+8>>1]=c;return}function Bw(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function Bx(a,c){a=a|0;c=c|0;b[a+10>>1]=c;return}function By(a){a=a|0;return+g[a+4>>2]<1.0|0}function Bz(a){a=a|0;return b[a+10>>1]|0}function BA(a){a=a|0;return b[a+8>>1]|0}function BB(a){a=a|0;return a+132|0}function BC(a){a=a|0;return c[a+196>>2]|0}function BD(a){a=a|0;return a+4|0}function BE(a,b){a=a|0;b=b|0;c[a+196>>2]=b;return}function BF(a){a=a|0;return a+68|0}function BG(a){a=a|0;return a+100|0}function BH(a){a=a|0;return c[a+24>>2]|0}function BI(a){a=a|0;return a|0}function BJ(a,b){a=a|0;b=b|0;c[a+76>>2]=b;return}function BK(b){b=b|0;return(a[b+242|0]&1)!=0|0}function BL(b,c){b=b|0;c=c|0;a[b+242|0]=c&1;return}function BM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=c[a+32>>2]|0;c[f>>2]=(c[f>>2]|0)+1;aBk(a,aBn(a,b,0)|0);aBk(a,aBn(a,d,0)|0);aBk(a,aBn(a,e,0)|0);return}function BN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=c[a+32>>2]|0;c[g>>2]=(c[g>>2]|0)+1;aBk(a,aBn(a,b,f)|0);aBk(a,aBn(a,d,f)|0);aBk(a,aBn(a,e,f)|0);return}function BO(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+8>>2]&511](a,b)|0}function BP(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-16+12>>2]|0);return}function BQ(){var a=0,b=0,d=0;c[9806]=(c[9806]|0)+1;a=aDx(35)|0;if((a|0)==0){b=0}else{d=-(a+4|0)&15;c[a+d>>2]=a;b=a+(d+4)|0}aDD(b|0,0,16);return b|0}function BR(a){a=a|0;var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(35)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return d|0}function BS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;c[9806]=(c[9806]|0)+1;d=aDx(35)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}f=e|0;if((c[a+12>>2]|0)<(c[b+12>>2]|0)){c[f>>2]=a;c[e+4>>2]=b;g=e+8|0;c[g>>2]=0;h=e+12|0;c[h>>2]=0;return e|0}else{c[f>>2]=b;c[e+4>>2]=a;g=e+8|0;c[g>>2]=0;h=e+12|0;c[h>>2]=0;return e|0}return 0}function BT(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+8>>2]&511](a|0,b)|0}function BU(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function BV(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+8>>2]&511](a,b)|0}function BW(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+12>>2]&127](a,b,d))}function BX(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function BY(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+8>>2]&2047](a,b);return}function BZ(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+132|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+148|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+164|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+180|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function B_(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a,b);return}function B$(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+20|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+36|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+52|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function B0(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;c[a>>2]=22504;e=a+4|0;f=a+52|0;g=e|0;do{g=g+16|0;}while((g|0)!=(f|0));f=e;e=b;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];f=a+20|0;g=b+16|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];f=a+36|0;h=b+32|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];f=a+52|0;i=b+48|0;c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];f=a+68|0;b=a+116|0;j=f|0;do{j=j+16|0;}while((j|0)!=(b|0));b=f;f=d;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=a+84|0;b=d+16|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];b=a+100|0;f=d+32|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=a+116|0;b=d+48|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];b=a+132|0;f=a+180|0;d=b|0;do{d=d+16|0;}while((d|0)!=(f|0));f=b;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+148|0;c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];g=a+164|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];h=a+180|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];c[a+196>>2]=0;return}function B1(){var b=0;if((a[43040]|0)!=0){return}if((b1(43040)|0)==0){return}es();b=42752;do{b=b+16|0;}while((b|0)!=42800);c[10688]=c[10704];c[10689]=c[10705];c[10690]=c[10706];c[10691]=c[10707];c[10692]=c[10708];c[42772>>2]=c[42836>>2];c[42776>>2]=c[42840>>2];c[42780>>2]=c[42844>>2];c[10696]=c[10712];c[42788>>2]=c[42852>>2];c[42792>>2]=c[42856>>2];c[42796>>2]=c[42860>>2];aDD(42800,0,16);return}function B2(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+68|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+84|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+100|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+116|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function B3(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+68>>2]&2047](a|0,b);return}function B4(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+60>>2]&2047](a|0,b);return}function B5(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a|0)|0}function B6(a){a=a|0;ct[c[(c[a>>2]|0)+164>>2]&2047](a|0);return}function B7(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+44>>2]&2047](a|0,b);return}function B8(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+80>>2]&2047](a|0,b);return}function B9(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+84>>2]&1023](a|0,b,d,e);return}function Ca(a){a=a|0;ct[c[(c[a>>2]|0)+116>>2]&2047](a|0);return}function Cb(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+124>>2]&2047](a|0,b);return}function Cc(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+156>>2]&1023](a,b);return}function Cd(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+168>>2]&2047](a|0,b);return}function Ce(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+176>>2]&1023](a,b);return}function Cf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+24>>2]&1023](a|0,b,d,e);return}function Cg(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function Ch(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+28>>2]&1023](a|0,b,d,e);return}function Ci(a){a=a|0;return cA[c[(c[a>>2]|0)+100>>2]&4095](a|0)|0}function Cj(a,b){a=a|0;b=b|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b,2,-3);return}function Ck(a,b,d){a=a|0;b=b|0;d=d|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b,d,-3);return}function Cl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b,d,e);return}function Cm(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+88>>2]&2047](a|0,b);return}function Cn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+48|0;f=e|0;g=e+16|0;h=e+32|0;j=c[b+192>>2]|0;dI[c[(c[j>>2]|0)+8>>2]&1023](j,b+4|0,f,g);c[h>>2]=21168;c[h+4>>2]=b;c[h+8>>2]=a;c[h+12>>2]=d;d=c[a+76>>2]|0;dI[c[(c[d>>2]|0)+28>>2]&1023](d,f,g,h|0);i=e;return}function Co(){var a=0,b=0,d=0;while(1){a=aDx(200)|0;if((a|0)!=0){break}b=(C=c[10744]|0,c[10744]=C+0,C);if((b|0)==0){d=3290;break}dC[b&63]()}if((d|0)==3290){d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}d=a;B1();B1();B0(d,42752,42752);return d|0}function Cp(a){a=a|0;var b=0,d=0,e=0;while(1){b=aDx(200)|0;if((b|0)!=0){d=3308;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){d=3305;break}dC[e&63]()}if((d|0)==3305){e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}else if((d|0)==3308){d=b;B1();B0(d,a,42752);return d|0}return 0}function Cq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;while(1){d=aDx(200)|0;if((d|0)!=0){e=3322;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){break}dC[f&63]()}if((e|0)==3322){e=d;B0(e,a,b);return e|0}e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}function Cr(a,b){a=a|0;b=b|0;c[a+88>>2]=b;c[a+96>>2]=0;return}function Cs(a,b,d){a=a|0;b=b|0;d=d|0;c[a+88>>2]=b;c[a+96>>2]=d;return}function Ct(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(e){c[a+92>>2]=b}else{c[a+88>>2]=b}c[a+96>>2]=d;return}function Cu(b){b=b|0;return(a[b+84|0]&1)!=0|0}function Cv(a){a=a|0;return c[a+8>>2]|0}function Cw(a,b){a=a|0;b=b|0;c[a+96>>2]=b;return}function Cx(a){a=a|0;return c[a+96>>2]|0}function Cy(a){a=a|0;return c[a+76>>2]|0}function Cz(b,c){b=b|0;c=c|0;a[b+84|0]=c&1;return}function CA(a){a=a|0;return a+4|0}function CB(a){a=a|0;return c[a+176>>2]|0}function CC(a){a=a|0;return a+28|0}function CD(a){a=a|0;return(c[a+4>>2]|0)==31|0}function CE(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function CF(a){a=a|0;return+(+g[a+44>>2])}function CG(a){a=a|0;return(c[a+4>>2]|0)<7|0}function CH(a){a=a|0;return+(+g[a+56>>2])}function CI(a){a=a|0;return+(+g[a+60>>2])}function CJ(a){a=a|0;return a+12|0}function CK(a,b){a=a|0;b=b|0;if((b|0)==0){c[a+64>>2]=1;c[a+68>>2]=0;c[a+72>>2]=2;return}else if((b|0)==2){c[a+64>>2]=0;c[a+68>>2]=2;c[a+72>>2]=1;return}else if((b|0)==1){c[a+64>>2]=0;c[a+68>>2]=1;c[a+72>>2]=2;return}else{return}}function CL(a){a=a|0;return(c[a+4>>2]|0)<20|0}function CM(a){a=a|0;return(c[a+4>>2]|0)==28|0}function CN(a){a=a|0;return c[a+8>>2]|0}function CO(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function CP(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function CQ(a){a=a|0;return(c[a+4>>2]|0)==32|0}function CR(a){a=a|0;ct[c[(c[a>>2]|0)+40>>2]&2047](a|0);return}function CS(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a|0);return}function CT(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a|0,b);return}function CU(a,b){a=a|0;b=b|0;aoh(a|0,b);return}function CV(a){a=a|0;ct[c[(c[a>>2]|0)+20>>2]&2047](a|0);return}function CW(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;atO(a|0,b,c,d,e,0.0);return}function CX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;atO(a|0,b,c,d,e,f);return}function CY(a,b){a=a|0;b=b|0;dA[c[(c[a>>2]|0)+52>>2]&511](a|0,b,0);return}function CZ(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d);return}function C_(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+168|0;g=f|0;h=a+24|0;j=c[h>>2]|0;k=dE[c[(c[j>>2]|0)+8>>2]&127](j,b,d,0)|0;if((k|0)==0){i=f;return}c[g+4>>2]=0;c[g+136>>2]=b;c[g+140>>2]=d;j=g+8|0;l=b+4|0;aDD(g+144|0,-1|0,16);c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+24|0;j=b+20|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+40|0;l=b+36|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+56|0;j=b+52|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+72|0;l=d+4|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+88|0;j=d+20|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+104|0;l=d+36|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+120|0;j=d+52|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];c[g>>2]=21728;c[g+160>>2]=e;co[c[(c[k>>2]|0)+8>>2]&255](k,b,d,a+28|0,g|0);ct[c[c[k>>2]>>2]&2047](k);g=c[h>>2]|0;cv[c[(c[g>>2]|0)+60>>2]&2047](g,k);i=f;return}function C$(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d|0;do{if((a[43776]|0)==0){if((b1(43776)|0)==0){break}}}while(0);cv[c[(c[b>>2]|0)+72>>2]&2047](e,b|0);b=e;c[9458]=c[b>>2];c[9459]=c[b+4>>2];c[9460]=c[b+8>>2];c[9461]=c[b+12>>2];i=d;return 37832}function C0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;atG(a,b,c,d,e,f);return}function C1(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+64>>2]&2047](a|0,b);return}function C2(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function C3(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+132>>2]&2047](a|0,b);return}function C4(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+104>>2]&511](a|0,b)|0}function C5(a){a=a|0;return cA[c[(c[a>>2]|0)+96>>2]&4095](a|0)|0}function C6(a,b){a=a|0;b=+b;return dr[c[(c[a>>2]|0)+48>>2]&63](a|0,b,1,.01666666753590107)|0}function C7(a,b,d){a=a|0;b=+b;d=d|0;return dr[c[(c[a>>2]|0)+48>>2]&63](a|0,b,d,.01666666753590107)|0}function C8(a,b,d,e){a=a|0;b=+b;d=d|0;e=+e;return dr[c[(c[a>>2]|0)+48>>2]&63](a|0,b,d,e)|0}function C9(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+128>>2]&2047](a|0,b);return}function Da(a){a=a|0;return cA[c[(c[a>>2]|0)+112>>2]&4095](a)|0}function Db(a,b){a=a|0;b=b|0;atC(a|0,b);return}function Dc(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+172>>2]&1023](a|0,b);return}function Dd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+64|0;e=d|0;f=b+472|0;if((c[f>>2]|0)==0){i=d;return}if((c[b+204>>2]&3|0)!=0){i=d;return}anY(b+68|0,+g[b+132>>2],+g[b+136>>2],+g[b+140>>2],b+148|0,+g[a+236>>2]*+g[b+240>>2],e);b=c[f>>2]|0;cv[c[(c[b>>2]|0)+12>>2]&2047](b,e);i=d;return}function De(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+120>>2]&2047](a|0,b);return}function Df(a){a=a|0;var b=0;b=c[a+76>>2]|0;return cA[c[(c[b>>2]|0)+36>>2]&4095](b)|0}function Dg(a){a=a|0;ct[c[(c[a>>2]|0)+76>>2]&2047](a|0);return}function Dh(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+36>>2]&2047](a|0,b);return}function Di(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+92>>2]&2047](a|0,b);return}function Dj(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;atI(a,b,c,d,e,f,g,h);return}function Dk(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function Dl(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43784]|0)==0){if((b1(43784)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b,d);d=f;c[9454]=c[d>>2];c[9455]=c[d+4>>2];c[9456]=c[d+8>>2];c[9457]=c[d+12>>2];i=e;return 37816}function Dm(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function Dn(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function Do(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function Dp(a,b){a=+a;b=+b;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(95)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}c[e+8>>2]=0;g[e+12>>2]=1.0;g[e+16>>2]=1.0;g[e+20>>2]=1.0;g[e+24>>2]=0.0;g[e+44>>2]=.03999999910593033;c[e>>2]=26096;g[e+56>>2]=a;g[e+60>>2]=b;c[e+4>>2]=11;c[e+64>>2]=0;c[e+68>>2]=1;c[e+72>>2]=2;g[e+52>>2]=a/+Q(+(a*a+b*b));return e|0}function Dq(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function Dr(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function Ds(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43320]|0)==0){if((b1(43320)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9450]=c[d>>2];c[9451]=c[d+4>>2];c[9452]=c[d+8>>2];c[9453]=c[d+12>>2];i=e;return 37800}function Dt(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43480]|0)==0){if((b1(43480)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9446]=c[d>>2];c[9447]=c[d+4>>2];c[9448]=c[d+8>>2];c[9449]=c[d+12>>2];i=e;return 37784}function Du(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function Dv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function Dw(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43624]|0)==0){if((b1(43624)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9442]=c[d>>2];c[9443]=c[d+4>>2];c[9444]=c[d+8>>2];c[9445]=c[d+12>>2];i=e;return 37768}function Dx(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function Dy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function Dz(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function DA(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function DB(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function DC(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function DD(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 10:{d=+g[b+44>>2];break};case 0:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 1:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function DE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;while(1){f=aDx(268)|0;if((f|0)!=0){g=3461;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){g=3458;break}dC[h&63]()}if((g|0)==3461){aob(f,a,b,d,e);c[f>>2]=20808;return f|0}else if((g|0)==3458){g=cd(4)|0;c[g>>2]=19096;bF(g|0,34368,676);return 0}return 0}function DF(a){a=a|0;return a+28|0}function DG(a){a=a|0;return c[a+68>>2]|0}function DH(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function DI(a){a=a|0;return c[a+4>>2]|0}function DJ(a,b){a=a|0;b=+b;g[a+208>>2]=b;return}function DK(a){a=a|0;return+(+g[a+212>>2])}function DL(a){a=a|0;return+(+g[a+204>>2])}function DM(a,b){a=a|0;b=+b;g[a+216>>2]=b;return}function DN(a,b){a=a|0;b=+b;g[a+212>>2]=b;return}function DO(a){a=a|0;return+(+g[a+248>>2])}function DP(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0;e=i;f=d;d=i;i=i+92|0;i=i+7>>3<<3;aDC(d,f,92)|0;if((a[b+84|0]&1)==0){g[b+32>>2]=+g[b+204>>2];g[b+272>>2]=0.0;h=-0.0- +g[b+56>>2];j=-0.0- +g[b+60>>2];g[b>>2]=-0.0- +g[b+52>>2];g[b+4>>2]=h;g[b+8>>2]=j;g[b+12>>2]=0.0;g[b+268>>2]=1.0;i=e;return}j=+g[b>>2];h=+g[b+4>>2];k=+g[b+8>>2];l=j*+g[b+52>>2]+h*+g[b+56>>2]+k*+g[b+60>>2];m=+g[b+16>>2]- +g[c+52>>2];n=+g[b+20>>2]- +g[c+56>>2];o=+g[b+24>>2]- +g[c+60>>2];p=+g[c+324>>2];q=+g[c+328>>2];r=+g[c+320>>2];if(l<-.10000000149011612){s=-1.0/l;g[b+272>>2]=s*(h*(m*q-o*r+ +g[c+308>>2])+j*(p*o-n*q+ +g[c+304>>2])+k*(n*r-m*p+ +g[c+312>>2]));g[b+268>>2]=s;i=e;return}else{g[b+272>>2]=0.0;g[b+268>>2]=10.0;i=e;return}}function DQ(a){a=a|0;return+(+g[a+220>>2])}function DR(a){a=a|0;return+(+g[a+268>>2])}function DS(a){a=a|0;return a+92|0}function DT(a){a=a|0;return+(+g[a+228>>2])}function DU(b){b=b|0;return(a[b+260|0]&1)!=0|0}function DV(a,b){a=a|0;b=+b;g[a+252>>2]=b;return}function DW(a){a=a|0;return+(+g[a+252>>2])}function DX(a){a=a|0;return+(+g[a+232>>2])}function DY(a){a=a|0;return+(+g[a+244>>2])}function DZ(a){a=a|0;return+(+g[a+272>>2])}function D_(a,b){a=a|0;b=b|0;c[a+264>>2]=b;return}function D$(a,b){a=a|0;b=+b;g[a+256>>2]=b;return}function D0(a,b){a=a|0;b=+b;g[a+272>>2]=b;return}function D1(b,c){b=b|0;c=c|0;a[b+260|0]=c&1;return}function D2(a,b){a=a|0;b=+b;g[a+220>>2]=b;return}function D3(a,b){a=a|0;b=+b;g[a+240>>2]=b;return}function D4(a){a=a|0;return c[a+264>>2]|0}function D5(a,b){a=a|0;b=+b;g[a+228>>2]=b;return}function D6(a){a=a|0;return+(+g[a+280>>2])}function D7(a){a=a|0;return+(+g[a+204>>2])}function D8(a){a=a|0;return+(+g[a+224>>2])}function D9(a){a=a|0;return+(+g[a+208>>2])}function Ea(a,b){a=a|0;b=+b;g[a+232>>2]=b;return}function Eb(a){a=a|0;return a+156|0}function Ec(a){a=a|0;return+(+g[a+256>>2])}function Ed(a,b){a=a|0;b=+b;g[a+280>>2]=b;return}function Ee(a){a=a|0;return+(+g[a+276>>2])}function Ef(a,b){a=a|0;b=+b;g[a+204>>2]=b;return}function Eg(a,b){a=a|0;b=+b;g[a+244>>2]=b;return}function Eh(a){a=a|0;return+(+g[a+236>>2])}function Ei(a,b){a=a|0;b=+b;g[a+224>>2]=b;return}function Ej(a){a=a|0;return a+172|0}function Ek(a){a=a|0;return+(+g[a+216>>2])}function El(a,b){a=a|0;b=+b;g[a+268>>2]=b;return}function Em(a,b){a=a|0;b=+b;g[a+236>>2]=b;return}function En(a){a=a|0;return a+188|0}function Eo(a,b){a=a|0;b=+b;g[a+276>>2]=b;return}function Ep(a,b){a=a|0;b=+b;g[a+248>>2]=b;return}function Eq(a){a=a|0;return+(+g[a+240>>2])}function Er(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Es(a){a=a|0;return(c[a+4>>2]|0)<7|0}function Et(a){a=a|0;return a+12|0}function Eu(a){a=a|0;return+(+g[a+44>>2])}function Ev(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function Ew(a){a=a|0;return(c[a+4>>2]|0)<20|0}function Ex(a){a=a|0;return(c[a+4>>2]|0)==28|0}function Ey(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function Ez(a){a=a|0;return c[a+8>>2]|0}function EA(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function EB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function EC(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function ED(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function EE(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function EF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function EG(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function EH(a,b){a=a|0;b=b|0;var d=0;d=a+156|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function EI(a,b){a=a|0;b=b|0;var d=0;d=a+172|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function EJ(a,b){a=a|0;b=b|0;var d=0;d=a+188|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function EK(a){a=a|0;if((a|0)==0){return}aDB(a);return}function EL(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+92|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+108|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+124|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+140|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function EM(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function EN(a){a=a|0;return cA[c[(c[a>>2]|0)+104>>2]&4095](a)|0}function EO(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43680]|0)==0){if((b1(43680)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9438]=c[d>>2];c[9439]=c[d+4>>2];c[9440]=c[d+8>>2];c[9441]=c[d+12>>2];i=e;return 37752}function EP(a,b,d){a=a|0;b=b|0;d=+d;return c0[c[(c[a>>2]|0)+112>>2]&127](a,b,d)|0}function EQ(a){a=a|0;return cA[c[(c[a>>2]|0)+88>>2]&4095](a)|0}function ER(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+92|0;e=c[d>>2]|0;c[d>>2]=e+1;d=a+96+(e<<4)|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];aze(a|0);return}function ES(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function ET(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function EU(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+100>>2]&511](a,b,d);return}function EV(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43520]|0)==0){if((b1(43520)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9434]=c[d>>2];c[9435]=c[d+4>>2];c[9436]=c[d+8>>2];c[9437]=c[d+12>>2];i=e;return 37736}function EW(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+116>>2]&511](a,b)|0}function EX(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function EY(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function EZ(a){a=a|0;return cA[c[(c[a>>2]|0)+92>>2]&4095](a)|0}function E_(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function E$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+96>>2]&1023](a,b,d,e);return}function E0(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43192]|0)==0){if((b1(43192)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9430]=c[d>>2];c[9431]=c[d+4>>2];c[9432]=c[d+8>>2];c[9433]=c[d+12>>2];i=e;return 37720}function E1(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function E2(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function E3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function E4(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function E5(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function E6(){var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(179)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}c[d+8>>2]=0;g[d+12>>2]=1.0;g[d+16>>2]=1.0;g[d+20>>2]=1.0;g[d+24>>2]=0.0;g[d+44>>2]=.03999999910593033;c[d+52>>2]=0;g[d+56>>2]=1.0;g[d+60>>2]=1.0;g[d+64>>2]=1.0;g[d+68>>2]=0.0;g[d+72>>2]=-1.0;g[d+76>>2]=-1.0;g[d+80>>2]=-1.0;g[d+84>>2]=0.0;a[d+88|0]=0;c[d>>2]=24456;c[d+92>>2]=0;c[d+4>>2]=2;return d|0}function E7(b){b=b|0;var d=0,e=0,f=0,h=0;while(1){d=aDx(284)|0;if((d|0)!=0){break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){f=3593;break}dC[e&63]()}if((f|0)==3593){f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}f=d;e=d+140|0;h=d+92|0;do{h=h+16|0;}while((h|0)!=(e|0));g[d+204>>2]=+g[b+48>>2];g[d+208>>2]=+g[b+52>>2];g[d+212>>2]=+g[b+56>>2];g[d+216>>2]=+g[b+60>>2];g[d+220>>2]=+g[b+64>>2];g[d+224>>2]=+g[b+68>>2];e=d+156|0;h=b;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];h=d+172|0;e=b+16|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];e=d+188|0;h=b+32|0;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];g[d+228>>2]=+g[b+72>>2];g[d+232>>2]=0.0;g[d+252>>2]=0.0;g[d+236>>2]=0.0;g[d+240>>2]=0.0;g[d+256>>2]=0.0;g[d+244>>2]=.10000000149011612;a[d+260|0]=a[b+80|0]&1;g[d+248>>2]=+g[b+76>>2];return f|0}function E8(a){a=a|0;return(c[a+4>>2]|0)==32|0}function E9(a){a=a|0;c[a+92>>2]=0;return}function Fa(a){a=a|0;return a+28|0}function Fb(a){a=a|0;return(c[a+4>>2]|0)==31|0}function Fc(a){a=a|0;return c[a+52>>2]|0}function Fd(a){a=a|0;return c[a+4>>2]|0}function Fe(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function Ff(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=a|0;d=+g[b>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+4|0;d=+g[b+4>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+8|0;d=+g[b+8>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+12|0;d=+g[b+12>>2];if(d>=+g[c>>2]){return}g[c>>2]=d;return}function Fg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,h=0;e=a+8|0;f=-0.0- +g[e>>2];h=a+4|0;g[b>>2]=0.0;g[b+4>>2]=f;g[b+8>>2]=+g[h>>2];g[b+12>>2]=0.0;b=a|0;f=-0.0- +g[b>>2];g[c>>2]=+g[e>>2];g[c+4>>2]=0.0;g[c+8>>2]=f;g[c+12>>2]=0.0;g[d>>2]=-0.0- +g[h>>2];g[d+4>>2]=+g[b>>2];g[d+8>>2]=0.0;g[d+12>>2]=0.0;return}function Fh(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}g[b+(c<<2)>>2]=+g[a+(c<<2)>>2];c=c+1|0}return}function Fi(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}g[a+(c<<2)>>2]=+h[b+(c<<3)>>3];c=c+1|0}return}function Fj(a){a=a|0;return+(+g[a>>2])}function Fk(a){a=a|0;var b=0.0,c=0,d=0.0,e=0,f=0.0,h=0;b=+g[a>>2];c=b<999999984306749400.0;d=c?b:999999984306749400.0;b=+g[a+4>>2];e=b<d;f=e?b:d;d=+g[a+8>>2];h=d<f;return(+g[a+12>>2]<(h?d:f)?3:h?2:e?1:c?0:-1)|0}function Fl(a){a=a|0;return+(+g[a+8>>2])}function Fm(b){b=b|0;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(179)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}c[e+8>>2]=0;g[e+12>>2]=1.0;g[e+16>>2]=1.0;g[e+20>>2]=1.0;g[e+24>>2]=0.0;g[e+44>>2]=.03999999910593033;c[e+52>>2]=0;g[e+56>>2]=1.0;g[e+60>>2]=1.0;g[e+64>>2]=1.0;g[e+68>>2]=0.0;g[e+72>>2]=-1.0;g[e+76>>2]=-1.0;g[e+80>>2]=-1.0;g[e+84>>2]=0.0;a[e+88|0]=0;c[e>>2]=24456;f=e+96|0;c[e+4>>2]=2;c[e+92>>2]=1;d=b;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];aze(e);return e|0}function Fn(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0;c[9806]=(c[9806]|0)+1;e=aDx(179)|0;if((e|0)==0){f=0}else{h=-(e+4|0)&15;c[e+h>>2]=e;f=e+(h+4)|0}h=f;e=f;c[f+8>>2]=0;g[f+12>>2]=1.0;g[f+16>>2]=1.0;g[f+20>>2]=1.0;g[f+24>>2]=0.0;g[f+44>>2]=.03999999910593033;c[f+52>>2]=0;g[f+56>>2]=1.0;g[f+60>>2]=1.0;g[f+64>>2]=1.0;g[f+68>>2]=0.0;g[f+72>>2]=-1.0;g[f+76>>2]=-1.0;g[f+80>>2]=-1.0;g[f+84>>2]=0.0;a[f+88|0]=0;c[f>>2]=24456;i=f+92|0;j=f+96|0;c[f+4>>2]=2;c[i>>2]=1;f=b;c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];aze(e);f=c[i>>2]|0;c[i>>2]=f+1;i=h+96+(f<<4)|0;f=d;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];aze(e);return h|0}function Fo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0;c[9806]=(c[9806]|0)+1;f=aDx(179)|0;if((f|0)==0){h=0}else{i=-(f+4|0)&15;c[f+i>>2]=f;h=f+(i+4)|0}i=h;f=h;c[h+8>>2]=0;g[h+12>>2]=1.0;g[h+16>>2]=1.0;g[h+20>>2]=1.0;g[h+24>>2]=0.0;g[h+44>>2]=.03999999910593033;c[h+52>>2]=0;g[h+56>>2]=1.0;g[h+60>>2]=1.0;g[h+64>>2]=1.0;g[h+68>>2]=0.0;g[h+72>>2]=-1.0;g[h+76>>2]=-1.0;g[h+80>>2]=-1.0;g[h+84>>2]=0.0;a[h+88|0]=0;c[h>>2]=24456;j=h+92|0;k=h+96|0;c[h+4>>2]=2;c[j>>2]=1;h=b;c[k>>2]=c[h>>2];c[k+4>>2]=c[h+4>>2];c[k+8>>2]=c[h+8>>2];c[k+12>>2]=c[h+12>>2];aze(f);h=c[j>>2]|0;c[j>>2]=h+1;k=i+96+(h<<4)|0;h=d;c[k>>2]=c[h>>2];c[k+4>>2]=c[h+4>>2];c[k+8>>2]=c[h+8>>2];c[k+12>>2]=c[h+12>>2];aze(f);h=c[j>>2]|0;c[j>>2]=h+1;j=i+96+(h<<4)|0;h=e;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];aze(f);return i|0}function Fp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0;c[9806]=(c[9806]|0)+1;h=aDx(179)|0;if((h|0)==0){i=0}else{j=-(h+4|0)&15;c[h+j>>2]=h;i=h+(j+4)|0}j=i;h=i;c[i+8>>2]=0;g[i+12>>2]=1.0;g[i+16>>2]=1.0;g[i+20>>2]=1.0;g[i+24>>2]=0.0;g[i+44>>2]=.03999999910593033;c[i+52>>2]=0;g[i+56>>2]=1.0;g[i+60>>2]=1.0;g[i+64>>2]=1.0;g[i+68>>2]=0.0;g[i+72>>2]=-1.0;g[i+76>>2]=-1.0;g[i+80>>2]=-1.0;g[i+84>>2]=0.0;a[i+88|0]=0;c[i>>2]=24456;k=i+92|0;l=i+96|0;c[i+4>>2]=2;c[k>>2]=1;i=b;c[l>>2]=c[i>>2];c[l+4>>2]=c[i+4>>2];c[l+8>>2]=c[i+8>>2];c[l+12>>2]=c[i+12>>2];aze(h);i=c[k>>2]|0;c[k>>2]=i+1;l=j+96+(i<<4)|0;i=d;c[l>>2]=c[i>>2];c[l+4>>2]=c[i+4>>2];c[l+8>>2]=c[i+8>>2];c[l+12>>2]=c[i+12>>2];aze(h);i=c[k>>2]|0;c[k>>2]=i+1;l=j+96+(i<<4)|0;i=e;c[l>>2]=c[i>>2];c[l+4>>2]=c[i+4>>2];c[l+8>>2]=c[i+8>>2];c[l+12>>2]=c[i+12>>2];aze(h);i=c[k>>2]|0;c[k>>2]=i+1;k=j+96+(i<<4)|0;i=f;c[k>>2]=c[i>>2];c[k+4>>2]=c[i+4>>2];c[k+8>>2]=c[i+8>>2];c[k+12>>2]=c[i+12>>2];aze(h);return j|0}function Fq(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function Fr(a){a=a|0;aze(a|0);return}function Fs(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function Ft(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function Fu(a){a=a|0;return cA[c[(c[a>>2]|0)+84>>2]&4095](a|0)|0}function Fv(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43368]|0)==0){if((b1(43368)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b|0,d);d=f;c[9426]=c[d>>2];c[9427]=c[d+4>>2];c[9428]=c[d+8>>2];c[9429]=c[d+12>>2];i=e;return 37704}function Fw(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 5:case 4:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 1:{d=+g[b+44>>2];break};case 0:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function Fx(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function Fy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a|0,b,d,e);return}function Fz(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function FA(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function FB(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function FC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function FD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+108>>2]&1023](a,b,d,e);return}function FE(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function FF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;gx(a|0,b,c,d,e);return}function FG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0.0;e=1.0-d;g[a>>2]=e*+g[b>>2]+ +g[c>>2]*d;g[a+4>>2]=e*+g[b+4>>2]+ +g[c+4>>2]*d;g[a+8>>2]=e*+g[b+8>>2]+ +g[c+8>>2]*d;return}function FH(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0;d=+g[b+4>>2];e=+g[c+8>>2];f=+g[b+8>>2];h=+g[c+4>>2];i=+g[c>>2];j=+g[b>>2];return+(+g[a>>2]*(d*e-f*h)+ +g[a+4>>2]*(f*i-j*e)+ +g[a+8>>2]*(j*h-d*i))}function FI(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}g[a+(c<<2)>>2]=+g[b+(c<<2)>>2];c=c+1|0}return}function FJ(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=a|0;d=+g[b>>2];if(+g[c>>2]<d){g[c>>2]=d}c=a+4|0;d=+g[b+4>>2];if(+g[c>>2]<d){g[c>>2]=d}c=a+8|0;d=+g[b+8>>2];if(+g[c>>2]<d){g[c>>2]=d}c=a+12|0;d=+g[b+12>>2];if(+g[c>>2]>=d){return}g[c>>2]=d;return}function FK(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}h[b+(c<<3)>>3]=+g[a+(c<<2)>>2];c=c+1|0}return}function FL(a){a=a|0;return+(+g[a+12>>2])}function FM(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0;c=+g[b>>2]- +g[a>>2];d=+g[b+4>>2]- +g[a+4>>2];e=+g[b+8>>2]- +g[a+8>>2];return+(c*c+d*d+e*e)}function FN(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;g[a>>2]=b;g[a+4>>2]=c;g[a+8>>2]=d;g[a+12>>2]=e;return}function FO(a){a=a|0;var b=0.0,c=0.0,d=0.0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];return b*b+c*c+d*d<1.1920928955078125e-7|0}function FP(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}g[a+(c<<2)>>2]=+g[b+(c<<2)>>2];c=c+1|0}return}function FQ(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];if(b<c){e=b<d?0:2;return e|0}else{e=c<d?1:2;return e|0}return 0}function FR(a){a=a|0;var b=0;if(+g[a>>2]!=0.0){b=0;return b|0}if(+g[a+4>>2]!=0.0){b=0;return b|0}b=+g[a+8>>2]==0.0;return b|0}function FS(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}g[b+(c<<2)>>2]=+g[a+(c<<2)>>2];c=c+1|0}return}function FT(a,b){a=a|0;b=+b;g[a>>2]=b;return}function FU(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function FV(a,b){a=a|0;b=+b;g[a+8>>2]=b;return}function FW(a){a=a|0;var b=0.0,c=0,d=0.0,e=0,f=0.0,h=0;b=+g[a>>2];c=b>-999999984306749400.0;d=c?b:-999999984306749400.0;b=+g[a+4>>2];e=b>d;f=e?b:d;d=+g[a+8>>2];h=d>f;return(+g[a+12>>2]>(h?d:f)?3:h?2:e?1:c?0:-1)|0}function FX(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];if(b<c){e=c<d?2:1;return e|0}else{e=b<d?2:0;return e|0}return 0}function FY(a){a=a|0;return+(+g[a+4>>2])}function FZ(a){a=a|0;var b=0.0,c=0.0,d=0.0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];return+(b*b+c*c+d*d)}function F_(b){b=b|0;var c=0.0,d=0.0,e=0.0;do{if((a[44072]|0)==0){if((b1(44072)|0)==0){break}}}while(0);c=+P(+(+g[b>>2]));d=+P(+(+g[b+4>>2]));e=+P(+(+g[b+8>>2]));g[9422]=c;g[9423]=d;g[9424]=e;g[9425]=0.0;return 37688}function F$(a){a=a|0;var b=0,c=0.0,d=0,e=0.0,f=0,h=0.0,i=0.0;b=a|0;c=+g[b>>2];d=a+4|0;e=+g[d>>2];f=a+8|0;h=+g[f>>2];i=1.0/+Q(+(c*c+e*e+h*h));g[b>>2]=c*i;g[d>>2]=e*i;g[f>>2]=h*i;return a|0}function F0(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;c=+g[a>>2];d=+g[a+4>>2];e=+g[a+8>>2];f=+g[b>>2];h=+g[b+4>>2];i=+g[b+8>>2];j=(c*f+d*h+e*i)/+Q(+((c*c+d*d+e*e)*(f*f+h*h+i*i)));if(j<-1.0){k=-1.0;l=+V(+k);return+l}if(j<=1.0){k=j;l=+V(+k);return+l}k=1.0;l=+V(+k);return+l}function F1(b,c,d){b=b|0;c=c|0;d=+d;var e=0.0,f=0.0,h=0.0,i=0.0;do{if((a[44144]|0)==0){if((b1(44144)|0)==0){break}}}while(0);e=+g[b>>2];f=+g[b+4>>2];h=f+(+g[c+4>>2]-f)*d;f=+g[b+8>>2];i=f+(+g[c+8>>2]-f)*d;g[9406]=e+(+g[c>>2]-e)*d;g[9407]=h;g[9408]=i;g[9409]=0.0;return 37624}function F2(b,c){b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0;do{if((a[44128]|0)==0){if((b1(44128)|0)==0){break}}}while(0);d=+g[b+4>>2];e=+g[c+8>>2];f=+g[b+8>>2];h=+g[c+4>>2];i=+g[c>>2];j=+g[b>>2];g[9402]=d*e-f*h;g[9403]=f*i-j*e;g[9404]=j*h-d*i;g[9405]=0.0;return 37608}function F3(b){b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0;do{if((a[44040]|0)==0){if((b1(44040)|0)==0){break}}}while(0);c=+P(+(+g[b>>2]));d=+P(+(+g[b+4>>2]));e=+P(+(+g[b+8>>2]));f=+P(+(+g[b+12>>2]));g[9398]=c;g[9399]=d;g[9400]=e;g[9401]=f;return 37592}function F4(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0;b=+P(+(+g[a>>2]));c=+P(+(+g[a+4>>2]));d=+P(+(+g[a+8>>2]));if(b<c){e=c<d?2:1;return e|0}else{e=b<d?2:0;return e|0}return 0}function F5(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0;c=+g[b>>2]- +g[a>>2];d=+g[b+4>>2]- +g[a+4>>2];e=+g[b+8>>2]- +g[a+8>>2];return+(+Q(+(c*c+d*d+e*e)))}function F6(a){a=a|0;return F7(a|0)|0}function F7(a){a=a|0;var b=0,c=0,d=0,e=0.0,f=0.0,h=0,j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0;b=i;i=i+16|0;c=b|0;d=a|0;e=+g[d>>2];f=+P(+e);h=a+4|0;j=+g[h>>2];k=+P(+j);l=a+8|0;m=+g[l>>2];n=+P(+m);g[c>>2]=f;g[c+4>>2]=k;g[c+8>>2]=n;g[c+12>>2]=0.0;if(f<k){o=k<n?2:1}else{o=f<n?2:0}n=+g[c+(o<<2)>>2];if(n>0.0){f=1.0/n;n=e*f;e=j*f;j=m*f;f=1.0/+Q(+(n*n+e*e+j*j));g[d>>2]=n*f;g[h>>2]=e*f;g[l>>2]=j*f;i=b;return a|0}else{g[d>>2]=1.0;g[h>>2]=0.0;g[l>>2]=0.0;g[a+12>>2]=0.0;i=b;return a|0}return 0}function F8(b){b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0;do{if((a[43984]|0)==0){if((b1(43984)|0)==0){break}}}while(0);c=+g[b>>2];d=+g[b+4>>2];e=+g[b+8>>2];f=1.0/+Q(+(c*c+d*d+e*e));g[9394]=c*f;g[9395]=d*f;g[9396]=e*f;g[9397]=0.0;return 37576}function F9(a){a=a|0;if((a|0)==0){return}aDB(a);return}function Ga(b,d,e){b=b|0;d=d|0;e=+e;var f=0,g=0;f=i;i=i+16|0;g=f|0;do{if((a[44112]|0)==0){if((b1(44112)|0)==0){break}}}while(0);Gb(g,b|0,d,e);d=g;c[9390]=c[d>>2];c[9391]=c[d+4>>2];c[9392]=c[d+8>>2];c[9393]=c[d+12>>2];i=f;return 37560}function Gb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0;e=+g[c>>2];f=+g[b>>2];h=+g[c+4>>2];i=+g[b+4>>2];j=+g[c+8>>2];k=+g[b+8>>2];l=e*f+h*i+j*k;m=e*l;n=h*l;o=j*l;l=+S(+d);p=+T(+d);g[a>>2]=m+(f-m)*l+(h*k-j*i)*p;g[a+4>>2]=n+(i-n)*l+(j*f-e*k)*p;g[a+8>>2]=o+(k-o)*l+(e*i-h*f)*p;g[a+12>>2]=0.0;return}function Gc(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0,f=0.0,h=0,i=0;b=+P(+(+g[a>>2]));c=+P(+(+g[a+4>>2]));d=+P(+(+g[a+8>>2]));e=b>-999999984306749400.0;f=e?b:-999999984306749400.0;h=c>f;b=h?c:f;i=d>b;return(+P(+(+g[a+12>>2]))>(i?d:b)?3:i?2:h?1:e?0:-1)|0}function Gd(a){a=a|0;aDD(a|0,0,16);return}function Ge(){var a=0,b=0,d=0;while(1){a=aDx(16)|0;if((a|0)!=0){b=3828;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==3828){return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function Gf(a,b,d,e){a=+a;b=+b;d=+d;e=+e;var f=0,h=0,i=0;while(1){f=aDx(16)|0;if((f|0)!=0){h=3840;break}i=(C=c[10744]|0,c[10744]=C+0,C);if((i|0)==0){break}dC[i&63]()}if((h|0)==3840){g[f>>2]=a;g[f+4>>2]=b;g[f+8>>2]=d;g[f+12>>2]=e;return f|0}f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}function Gg(a,b){a=a|0;b=+b;g[a+12>>2]=b;return}function Gh(a){a=a|0;return+(+g[a+12>>2])}function Gi(a){a=a|0;return+(+g[a+4>>2])}function Gj(a){a=a|0;return+(+g[a>>2])}function Gk(a){a=a|0;return+(+g[a+8>>2])}function Gl(a,b){a=a|0;b=b|0;return+(+g[a>>2]*+g[b>>2]+ +g[a+4>>2]*+g[b+4>>2]+ +g[a+8>>2]*+g[b+8>>2])}function Gm(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=a|0;d=+g[b>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+4|0;d=+g[b+4>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+8|0;d=+g[b+8>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+12|0;d=+g[b+12>>2];if(d>=+g[c>>2]){return}g[c>>2]=d;return}function Gn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,h=0;e=a+8|0;f=-0.0- +g[e>>2];h=a+4|0;g[b>>2]=0.0;g[b+4>>2]=f;g[b+8>>2]=+g[h>>2];g[b+12>>2]=0.0;b=a|0;f=-0.0- +g[b>>2];g[c>>2]=+g[e>>2];g[c+4>>2]=0.0;g[c+8>>2]=f;g[c+12>>2]=0.0;g[d>>2]=-0.0- +g[h>>2];g[d+4>>2]=+g[b>>2];g[d+8>>2]=0.0;g[d+12>>2]=0.0;return}function Go(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}g[b+(c<<2)>>2]=+g[a+(c<<2)>>2];c=c+1|0}return}function Gp(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}g[a+(c<<2)>>2]=+h[b+(c<<3)>>3];c=c+1|0}return}function Gq(a){a=a|0;return+(+g[a>>2])}function Gr(a){a=a|0;return+(+g[a+4>>2])}function Gs(a){a=a|0;return+(+g[a+8>>2])}function Gt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0.0;e=1.0-d;g[a>>2]=e*+g[b>>2]+ +g[c>>2]*d;g[a+4>>2]=e*+g[b+4>>2]+ +g[c+4>>2]*d;g[a+8>>2]=e*+g[b+8>>2]+ +g[c+8>>2]*d;return}function Gu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0;d=+g[b+4>>2];e=+g[c+8>>2];f=+g[b+8>>2];h=+g[c+4>>2];i=+g[c>>2];j=+g[b>>2];return+(+g[a>>2]*(d*e-f*h)+ +g[a+4>>2]*(f*i-j*e)+ +g[a+8>>2]*(j*h-d*i))}function Gv(a,b){a=a|0;b=b|0;var c=0;c=a|0;g[c>>2]=+g[c>>2]- +g[b>>2];c=a+4|0;g[c>>2]=+g[c>>2]- +g[b+4>>2];c=a+8|0;g[c>>2]=+g[c>>2]- +g[b+8>>2];return a|0}function Gw(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=a|0;d=+g[b>>2];if(+g[c>>2]<d){g[c>>2]=d}c=a+4|0;d=+g[b+4>>2];if(+g[c>>2]<d){g[c>>2]=d}c=a+8|0;d=+g[b+8>>2];if(+g[c>>2]<d){g[c>>2]=d}c=a+12|0;d=+g[b+12>>2];if(+g[c>>2]>=d){return}g[c>>2]=d;return}function Gx(a,b){a=a|0;b=b|0;var c=0;c=a|0;g[c>>2]=+g[c>>2]+ +g[b>>2];c=a+4|0;g[c>>2]=+g[c>>2]+ +g[b+4>>2];c=a+8|0;g[c>>2]=+g[c>>2]+ +g[b+8>>2];return a|0}function Gy(a,b){a=a|0;b=b|0;var c=0;if(+g[a+12>>2]!=+g[b+12>>2]){c=0;return c|0}if(+g[a+8>>2]!=+g[b+8>>2]){c=0;return c|0}if(+g[a+4>>2]!=+g[b+4>>2]){c=0;return c|0}c=+g[a>>2]==+g[b>>2];return c|0}function Gz(a,b){a=a|0;b=+b;var c=0;c=a|0;g[c>>2]=+g[c>>2]*b;c=a+4|0;g[c>>2]=+g[c>>2]*b;c=a+8|0;g[c>>2]=+g[c>>2]*b;return a|0}function GA(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}h[b+(c<<3)>>3]=+g[a+(c<<2)>>2];c=c+1|0}return}function GB(a){a=a|0;var b=0;if(+g[a>>2]!=0.0){b=0;return b|0}if(+g[a+4>>2]!=0.0){b=0;return b|0}b=+g[a+8>>2]==0.0;return b|0}function GC(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0;c=+g[b>>2]- +g[a>>2];d=+g[b+4>>2]- +g[a+4>>2];e=+g[b+8>>2]- +g[a+8>>2];return+(c*c+d*d+e*e)}function GD(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;g[a>>2]=b;g[a+4>>2]=c;g[a+8>>2]=d;g[a+12>>2]=0.0;return}function GE(a){a=a|0;var b=0.0,c=0.0,d=0.0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];return b*b+c*c+d*d<1.1920928955078125e-7|0}function GF(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}g[a+(c<<2)>>2]=+g[b+(c<<2)>>2];c=c+1|0}return}function GG(a,b){a=a|0;b=+b;var c=0.0,d=0;c=1.0/b;d=a|0;g[d>>2]=+g[d>>2]*c;d=a+4|0;g[d>>2]=+g[d>>2]*c;d=a+8|0;g[d>>2]=+g[d>>2]*c;return a|0}function GH(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];if(b<c){e=b<d?0:2;return e|0}else{e=c<d?1:2;return e|0}return 0}function GI(a){a=a|0;var b=0.0,c=0.0,d=0.0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];return+(+Q(+(b*b+c*c+d*d)))}function GJ(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0;b=+P(+(+g[a>>2]));c=+P(+(+g[a+4>>2]));d=+P(+(+g[a+8>>2]));if(b<c){e=b<d?0:2;return e|0}else{e=c<d?1:2;return e|0}return 0}function GK(a,b,d){a=a|0;b=b|0;d=+d;dF[c[(c[a>>2]|0)+8>>2]&255](a,b,d);return}function GL(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a,b);return}function GM(b){b=b|0;var c=0.0,d=0.0,e=0.0;do{if((a[44080]|0)==0){if((b1(44080)|0)==0){break}}}while(0);c=+P(+(+g[b>>2]));d=+P(+(+g[b+4>>2]));e=+P(+(+g[b+8>>2]));g[9386]=c;g[9387]=d;g[9388]=e;g[9389]=0.0;return 37544}function GN(a){a=a|0;var b=0,c=0.0,d=0,e=0.0,f=0,h=0.0,i=0.0;b=a|0;c=+g[b>>2];d=a+4|0;e=+g[d>>2];f=a+8|0;h=+g[f>>2];i=1.0/+Q(+(c*c+e*e+h*h));g[b>>2]=c*i;g[d>>2]=e*i;g[f>>2]=h*i;return a|0}function GO(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;c=+g[a>>2];d=+g[a+4>>2];e=+g[a+8>>2];f=+g[b>>2];h=+g[b+4>>2];i=+g[b+8>>2];j=(c*f+d*h+e*i)/+Q(+((c*c+d*d+e*e)*(f*f+h*h+i*i)));if(j<-1.0){k=-1.0;l=+V(+k);return+l}if(j<=1.0){k=j;l=+V(+k);return+l}k=1.0;l=+V(+k);return+l}function GP(b,c,d){b=b|0;c=c|0;d=+d;var e=0.0,f=0.0,h=0.0,i=0.0;do{if((a[44152]|0)==0){if((b1(44152)|0)==0){break}}}while(0);e=+g[b>>2];f=+g[b+4>>2];h=f+(+g[c+4>>2]-f)*d;f=+g[b+8>>2];i=f+(+g[c+8>>2]-f)*d;g[9382]=e+(+g[c>>2]-e)*d;g[9383]=h;g[9384]=i;g[9385]=0.0;return 37528}function GQ(b,c){b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0;do{if((a[44136]|0)==0){if((b1(44136)|0)==0){break}}}while(0);d=+g[b+4>>2];e=+g[c+8>>2];f=+g[b+8>>2];h=+g[c+4>>2];i=+g[c>>2];j=+g[b>>2];g[9378]=d*e-f*h;g[9379]=f*i-j*e;g[9380]=j*h-d*i;g[9381]=0.0;return 37512}function GR(a){a=a|0;if((a|0)==0){return}aDB(a);return}function GS(a,b){a=a|0;b=b|0;var d=0,e=0;d=a;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return(a|0)!=0|0}function GT(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0;b=+P(+(+g[a>>2]));c=+P(+(+g[a+4>>2]));d=+P(+(+g[a+8>>2]));if(b<c){e=c<d?2:1;return e|0}else{e=b<d?2:0;return e|0}return 0}function GU(a){a=a|0;return F7(a)|0}function GV(b){b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0;do{if((a[43992]|0)==0){if((b1(43992)|0)==0){break}}}while(0);c=+g[b>>2];d=+g[b+4>>2];e=+g[b+8>>2];f=1.0/+Q(+(c*c+d*d+e*e));g[9374]=c*f;g[9375]=d*f;g[9376]=e*f;g[9377]=0.0;return 37496}function GW(){var a=0,b=0,d=0;while(1){a=aDx(16)|0;if((a|0)!=0){b=3977;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==3977){return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function GX(a,b,d){a=+a;b=+b;d=+d;var e=0,f=0,h=0;while(1){e=aDx(16)|0;if((e|0)!=0){f=3989;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){break}dC[h&63]()}if((f|0)==3989){g[e>>2]=a;g[e+4>>2]=b;g[e+8>>2]=d;g[e+12>>2]=0.0;return e|0}e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}function GY(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}g[b+(c<<2)>>2]=+g[a+(c<<2)>>2];c=c+1|0}return}function GZ(a,b){a=a|0;b=+b;g[a>>2]=b;return}function G_(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function G$(a,b){a=a|0;b=+b;g[a+8>>2]=b;return}function G0(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];if(b<c){e=c<d?2:1;return e|0}else{e=b<d?2:0;return e|0}return 0}function G1(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}g[a+(c<<2)>>2]=+g[b+(c<<2)>>2];c=c+1|0}return}function G2(a){a=a|0;var b=0.0,c=0.0,d=0.0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];return+(b*b+c*c+d*d)}function G3(a,b){a=a|0;b=+b;g[a+12>>2]=b;return}function G4(a,b){a=a|0;b=b|0;return+(+g[a>>2]*+g[b>>2]+ +g[a+4>>2]*+g[b+4>>2]+ +g[a+8>>2]*+g[b+8>>2])}function G5(a){a=a|0;return+(+g[a+12>>2])}function G6(a){a=a|0;return+(+g[a+4>>2])}function G7(a){a=a|0;return+(+g[a>>2])}function G8(a){a=a|0;return+(+g[a+8>>2])}function G9(a,b){a=a|0;b=+b;g[a+12>>2]=b;return}function Ha(a){a=a|0;return+(+g[a+8>>2])}function Hb(a){a=a|0;return+(+g[a+4>>2])}function Hc(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function Hd(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function He(a){a=a|0;return+(+g[a+12>>2])}function Hf(a,b){a=a|0;b=+b;g[a+8>>2]=b;return}function Hg(a){a=a|0;return c[a>>2]|0}function Hh(a,c){a=a|0;c=c|0;b[a+12>>1]=c;return}function Hi(a){a=a|0;return a+36|0}function Hj(a){a=a|0;return a+68|0}function Hk(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Hl(a){a=a|0;return c[a+8>>2]|0}function Hm(a,b){a=a|0;b=b|0;c[a+16>>2]=b;return}function Hn(a){a=a|0;return a+20|0}function Ho(a){a=a|0;return b[a+14>>1]|0}function Hp(a){a=a|0;return+(+g[a+4>>2])}function Hq(a){a=a|0;return c[a+16>>2]|0}function Hr(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function Hs(a,c){a=a|0;c=c|0;b[a+14>>1]=c;return}function Ht(a){a=a|0;return(c[a+8>>2]|0)!=0|0}function Hu(a){a=a|0;return a+52|0}function Hv(a){a=a|0;return b[a+12>>1]|0}function Hw(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function Hx(a){a=a|0;return a+8|0}function Hy(a,b){a=a|0;b=+b;g[a+24>>2]=b;return}function Hz(a){a=a|0;return+(+g[a+24>>2])}function HA(a){a=a|0;return c[a+4>>2]|0}function HB(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function HC(a){a=a|0;return c[a>>2]|0}function HD(a){a=a|0;return c[a+28>>2]|0}function HE(a){a=a|0;return c[a+12>>2]|0}function HF(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function HG(b,c){b=b|0;c=c|0;a[b+20|0]=c&1;return}function HH(a){a=a|0;return a+40|0}function HI(a,b){a=a|0;b=b|0;return+(+g[a+1248+(b<<2)>>2])}function HJ(a){a=a|0;return a+1120|0}function HK(a){a=a|0;return a+1056|0}function HL(a){a=a|0;return c[a+12>>2]|0}function HM(a){a=a|0;return c[a+4>>2]|0}function HN(a){a=a|0;return c[a+24>>2]|0}function HO(a){a=a|0;return+(+g[a+16>>2])}function HP(a,b,c){a=a|0;b=b|0;c=+c;g[a+1356+(b<<2)>>2]=c;return}function HQ(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0;c=+g[b>>2]- +g[a>>2];d=+g[b+4>>2]- +g[a+4>>2];e=+g[b+8>>2]- +g[a+8>>2];return+(+Q(+(c*c+d*d+e*e)))}function HR(b,d,e){b=b|0;d=d|0;e=+e;var f=0,g=0;f=i;i=i+16|0;g=f|0;do{if((a[44120]|0)==0){if((b1(44120)|0)==0){break}}}while(0);Gb(g,b,d,e);d=g;c[9370]=c[d>>2];c[9371]=c[d+4>>2];c[9372]=c[d+8>>2];c[9373]=c[d+12>>2];i=f;return 37480}function HS(a){a=a|0;aDD(a|0,0,16);return}function HT(a){a=a|0;var b=0.0,c=0.0,d=0.0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];return+(+Q(+(b*b+c*c+d*d)))}function HU(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0;b=+P(+(+g[a>>2]));c=+P(+(+g[a+4>>2]));d=+P(+(+g[a+8>>2]));if(b<c){e=b<d?0:2;return e|0}else{e=c<d?1:2;return e|0}return 0}function HV(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a,b);return}function HW(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+40>>2]&511](a,b)|0}function HX(a){a=a|0;ct[c[(c[a>>2]|0)+32>>2]&2047](a);return}function HY(a){a=a|0;return cA[c[(c[a>>2]|0)+52>>2]&4095](a)|0}function HZ(a){a=a|0;ct[c[(c[a>>2]|0)+36>>2]&2047](a);return}function H_(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+28>>2]&511](a,b)|0}function H$(a){a=a|0;return cA[c[(c[a>>2]|0)+8>>2]&4095](a)|0}function H0(a){a=a|0;return cA[c[(c[a>>2]|0)+12>>2]&4095](a)|0}function H1(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+20>>2]&255](a,b,d,e,f);return}function H2(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+48>>2]&2047](a,b);return}function H3(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+24>>2]&511](a,b)|0}function H4(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+44>>2]&511](a,b,d);return}function H5(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+16>>2]&511](a,b,d)|0}function H6(a){a=a|0;if((a|0)==0){return}aDB(a);return}function H7(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+12>>2]&127](a,b,d))}function H8(a,b){a=a|0;b=b|0;var d=0;d=a+36|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function H9(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+8>>2]&511](a|0,b)|0}function Ia(a,b){a=a|0;b=b|0;var d=0;d=a+52|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Ib(a,b){a=a|0;b=b|0;var d=0;d=a+68|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Ic(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function Id(a,b){a=a|0;b=b|0;var d=0;d=a+20|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Ie(a){a=a|0;if((a|0)==0){return}aDB(a);return}function If(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Ig(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function Ih(a,b,d){a=a|0;b=b|0;d=+d;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,-1);return}function Ii(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,e);return}function Ij(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+40>>2]&511](a|0,b,d)|0}function Ik(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0.0;c=i;i=i+16|0;d=c|0;e=a;g[d>>2]=-1.0;g[d+4>>2]=0.0;g[d+8>>2]=b;g[d+12>>2]=0.0;a=0;while(1){if((a|0)>=3){break}b=+ck(+(+g[d+(a<<2)>>2]),6.2831854820251465);do{if(b<-3.1415927410125732){f=b+6.2831854820251465}else{if(b<=3.1415927410125732){f=b;break}f=b-6.2831854820251465}}while(0);g[e+860+(a<<6)+4>>2]=f;a=a+1|0}i=c;return}function Il(a,b){a=a|0;b=b|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,-1))}function Im(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,d))}function In(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function Io(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a|0,b);return}function Ip(a){a=a|0;ct[c[(c[a>>2]|0)+44>>2]&2047](a);return}function Iq(){var a=0,b=0,d=0;while(1){a=aDx(16)|0;if((a|0)!=0){b=4133;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==4133){g[a+4>>2]=6.2831854820251465;g[a+8>>2]=6.2831854820251465;g[a+12>>2]=6.2831854820251465;c[a>>2]=0;return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function Ir(a,d){a=a|0;d=d|0;var e=0,f=0,h=0;while(1){e=aDx(84)|0;if((e|0)!=0){f=4145;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){break}dC[h&63]()}if((f|0)==4145){g[e+4>>2]=1.0;c[e+8>>2]=0;b[e+12>>1]=1;b[e+14>>1]=-1;c[e+16>>2]=0;c[e>>2]=19480;f=e+20|0;h=a;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];h=e+36|0;f=d;c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];return e|0}e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}function Is(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,h=0,i=0;while(1){f=aDx(28)|0;if((f|0)!=0){h=4157;break}i=(C=c[10744]|0,c[10744]=C+0,C);if((i|0)==0){break}dC[i&63]()}if((h|0)==4157){c[f>>2]=a;c[f+4>>2]=b;b=f+8|0;a=d;c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];g[f+24>>2]=e;return f|0}f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}function It(a,b){a=a|0;b=+b;return}function Iu(a,b){a=a|0;b=b|0;var c=0;c=a;a=0;while(1){if((a|0)>=3){break}g[b+(a<<2)>>2]=+g[c+860+(a<<6)>>2];a=a+1|0}return}function Iv(a,b,c){a=a|0;b=b|0;c=+c;g[a+1308+(b<<2)>>2]=c;return}function Iw(a){a=a|0;return+(+g[a+32>>2])}function Ix(b){b=b|0;return(a[b+20|0]&1)!=0|0}function Iy(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function Iz(a){a=a|0;return c[a+4>>2]|0}function IA(b,c){b=b|0;c=c|0;a[b+21|0]=c&1;return}function IB(a){a=a|0;return a+1104|0}function IC(b,c){b=b|0;c=c|0;a[b+1293|0]=c&1;return}function ID(a,b){a=a|0;b=b|0;var c=0,d=0;c=a;if((b|0)<3){d=+g[a+688+(b<<2)>>2]>=+g[a+672+(b<<2)>>2];return d|0}a=b-3|0;if(+g[c+860+(a<<6)>>2]>+g[c+860+(a<<6)+4>>2]){d=0;return d|0}d=1;return d|0}function IE(a){a=a|0;return+(+g[a+1184>>2])}function IF(a,b){a=a|0;b=b|0;return a+860+(b<<6)|0}function IG(a){a=a|0;return+(+g[a+1192>>2])}function IH(b,d){b=b|0;d=d|0;var e=0;e=d|0;if((a[b+1300|0]&1)==0){c[e>>2]=6;c[d+4>>2]=0;return}else{c[e>>2]=0;c[d+4>>2]=0;return}}function II(a){a=a|0;return a+104|0}function IJ(a){a=a|0;return a+1168|0}function IK(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function IL(b){b=b|0;return(a[b+1293|0]&1)!=0|0}function IM(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function IN(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=d&1;a[b+1301+c|0]=e;if((c|0)<3){a[b+(c+780)|0]=e;return}else{a[b+860+(c-3<<6)+44|0]=e;return}}function IO(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function IP(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function IQ(a,b,c){a=a|0;b=b|0;c=+c;g[a+1332+(b<<2)>>2]=c;return}function IR(b){b=b|0;return(a[b+1300|0]&1)!=0|0}function IS(a){a=a|0;return+(+g[a+32>>2])}function IT(b,c){b=b|0;c=c|0;a[b+1300|0]=c&1;return}function IU(a){a=a|0;return a+672|0}function IV(b){b=b|0;return(a[b+21|0]&1)!=0|0}function IW(a,b){a=a|0;b=b|0;return+(+g[a+1184+(b<<2)>>2])}function IX(a,b){a=a|0;b=b|0;var c=0;c=a;a=0;while(1){if((a|0)>=3){break}g[b+(a<<2)>>2]=+g[c+860+(a<<6)+4>>2];a=a+1|0}return}function IY(a){a=a|0;return c[a+4>>2]|0}function IZ(a){a=a|0;return c[a+8>>2]|0}function I_(a){a=a|0;return+(+g[a+36>>2])}function I$(a){a=a|0;return a+1396|0}function I0(a){a=a|0;return c[a+12>>2]|0}function I1(a){a=a|0;return a+1412|0}function I2(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function I3(a){a=a|0;aoZ(a,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);g[a+1308>>2]=+g[a+1248>>2];g[a+1312>>2]=+g[a+1252>>2];g[a+1316>>2]=+g[a+1256>>2];g[a+1320>>2]=+g[a+1184>>2];g[a+1324>>2]=+g[a+1188>>2];g[a+1328>>2]=+g[a+1192>>2];return}function I4(a,b){a=a|0;b=b|0;aoZ(a,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);if((b|0)<3){g[a+1308+(b<<2)>>2]=+g[a+1248+(b<<2)>>2];return}else{g[a+1308+(b<<2)>>2]=+g[a+1184+(b-3<<2)>>2];return}}function I5(b,c){b=b|0;c=c|0;do{if((a[43904]|0)==0){if((b1(43904)|0)==0){break}}}while(0);aDG(37416,b+1200+(c<<4)|0,16);return 37416}function I6(a,b){a=a|0;b=b|0;var d=0;d=a+688|0;a=b;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];return}function I7(a,b){a=a|0;b=b|0;var d=0;d=a+672|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function I8(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function I9(a,b){a=a|0;b=b|0;var d=0;d=a+672|0;a=b;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];return}function Ja(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a;f=a+40|0;g=b;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+56|0;f=b+16|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=a+72|0;g=b+32|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+88|0;f=b+48|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=a+104|0;g=d;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+120|0;f=d+16|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=a+136|0;g=d+32|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+152|0;f=d+48|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];ct[c[(c[a>>2]|0)+8>>2]&2047](e);aoZ(e,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);return}function Jb(a){a=a|0;aoZ(a,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);return}function Jc(a,b,c){a=a|0;b=b|0;c=c|0;aoZ(a,b,c);return}function Jd(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ao7(a,b,c,d,e,f,g,h,i,j,k,l,0)|0}function Je(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ao7(a,b,c,d,e,f,g,h,i,j,k,l,m)|0}function Jf(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;nS(a,b,c,d);return}function Jg(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0.0;c=i;i=i+16|0;d=c|0;e=a;g[d>>2]=1.0;g[d+4>>2]=0.0;g[d+8>>2]=b;g[d+12>>2]=0.0;a=0;while(1){if((a|0)>=3){break}b=+ck(+(+g[d+(a<<2)>>2]),6.2831854820251465);do{if(b<-3.1415927410125732){f=b+6.2831854820251465}else{if(b<=3.1415927410125732){f=b;break}f=b-6.2831854820251465}}while(0);g[e+860+(a<<6)>>2]=f;a=a+1|0}i=c;return}function Jh(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;cy[c[(c[a>>2]|0)+12>>2]&127](a,b,d,e,f);return}function Ji(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;apb(a,b,c,d,e,f,g,h);return}function Jj(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=a;a=0;while(1){if((a|0)>=3){break}d=+ck(+(+g[b+(a<<2)>>2]),6.2831854820251465);do{if(d<-3.1415927410125732){e=d+6.2831854820251465}else{if(d<=3.1415927410125732){e=d;break}e=d-6.2831854820251465}}while(0);g[c+860+(a<<6)>>2]=e;a=a+1|0}return}function Jk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+24>>2]&127](a,b,d,e);return}function Jl(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function Jm(b,d){b=b|0;d=+d;var e=0,f=0,h=0,i=0.0,j=0.0,k=0;d=1.0/+g[(c[b+116>>2]|0)+336>>2];e=b+136|0;if((c[e>>2]|0)<=0){return}f=b+144|0;b=0;do{h=c[f>>2]|0;do{if((a[h+(b*284|0)+84|0]&1)==0){g[h+(b*284|0)+276>>2]=0.0}else{i=+g[h+(b*284|0)+272>>2];j=d*(+g[h+(b*284|0)+216>>2]*(+g[h+(b*284|0)+204>>2]- +g[h+(b*284|0)+32>>2])*+g[h+(b*284|0)+268>>2]-i*+g[(i<0.0?h+(b*284|0)+220|0:h+(b*284|0)+224|0)>>2]);k=h+(b*284|0)+276|0;g[k>>2]=j;if(j>=0.0){break}g[k>>2]=0.0}}while(0);b=b+1|0;}while((b|0)<(c[e>>2]|0));return}function Jn(a){a=a|0;return c[a+116>>2]|0}function Jo(a){a=a|0;return c[a+88>>2]|0}function Jp(a,b){a=a|0;b=b|0;return(c[a+144>>2]|0)+(b*284|0)+92|0}function Jq(a,b){a=a|0;b=b|0;var d=0;d=a+688|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Jr(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=a;a=0;while(1){if((a|0)>=3){break}d=+ck(+(+g[b+(a<<2)>>2]),6.2831854820251465);do{if(d<-3.1415927410125732){e=d+6.2831854820251465}else{if(d<=3.1415927410125732){e=d;break}e=d-6.2831854820251465}}while(0);g[c+860+(a<<6)+4>>2]=e;a=a+1|0}return}function Js(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+48>>2]&511](a|0,b,d);return}function Jt(a,b){a=a|0;b=b|0;return ao$(a,b)|0}function Ju(a){a=a|0;ct[c[(c[a>>2]|0)+20>>2]&2047](a);return}function Jv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+16>>2]&1023](a,b,d,e);return}function Jw(a,b,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return+(+cN[c[(c[a>>2]|0)+12>>2]&63](a,b,d,e,f,g,h,i,j,k,l))}function Jx(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+8>>2]&511](a,b,d);return}function Jy(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0.0,A=0.0,B=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0.0,ap=0,aq=0,ar=0.0,as=0,at=0,au=0.0,av=0,aw=0,ax=0.0,ay=0,az=0,aA=0.0,aB=0,aC=0,aD=0.0;while(1){i=aDx(1428)|0;if((i|0)!=0){break}j=(C=c[10744]|0,c[10744]=C+0,C);if((j|0)==0){k=4300;break}dC[j&63]()}if((k|0)==4300){k=cd(4)|0;c[k>>2]=19096;bF(k|0,34368,676);return 0}k=i;do{if((a[43040]|0)==0){if((b1(43040)|0)==0){break}do{if((a[43048]|0)==0){if((b1(43048)|0)==0){break}g[10704]=1.0;aDD(42820,0,16);g[10709]=1.0;aDD(42840,0,16);g[10714]=1.0;g[10715]=0.0}}while(0);c[10688]=c[10704];c[10689]=c[10705];c[10690]=c[10706];c[10691]=c[10707];c[10692]=c[10708];c[42772>>2]=c[42836>>2];c[42776>>2]=c[42840>>2];c[42780>>2]=c[42844>>2];c[10696]=c[10712];c[42788>>2]=c[42852>>2];c[42792>>2]=c[42856>>2];c[42796>>2]=c[42860>>2];aDD(42800,0,16)}}while(0);do{if((a[43040]|0)==0){if((b1(43040)|0)==0){break}do{if((a[43048]|0)==0){if((b1(43048)|0)==0){break}g[10704]=1.0;aDD(42820,0,16);g[10709]=1.0;aDD(42840,0,16);g[10714]=1.0;g[10715]=0.0}}while(0);c[10688]=c[10704];c[10689]=c[10705];c[10690]=c[10706];c[10691]=c[10707];c[10692]=c[10708];c[42772>>2]=c[42836>>2];c[42776>>2]=c[42840>>2];c[42780>>2]=c[42844>>2];c[10696]=c[10712];c[42788>>2]=c[42852>>2];c[42792>>2]=c[42856>>2];c[42796>>2]=c[42860>>2];aDD(42800,0,16)}}while(0);j=i;aoY(j,b,d,42752,42752,1);c[i+4>>2]=9;a[i+1301|0]=0;l=i+1308|0;g[l>>2]=0.0;g[i+1332>>2]=0.0;g[i+1356>>2]=1.0;a[i+1302|0]=0;m=i+1312|0;g[m>>2]=0.0;g[i+1336>>2]=0.0;g[i+1360>>2]=1.0;n=i+1303|0;a[n]=0;o=i+1316|0;g[o>>2]=0.0;p=i+1340|0;g[p>>2]=0.0;q=i+1364|0;g[q>>2]=1.0;a[i+1304|0]=0;r=i+1320|0;g[r>>2]=0.0;g[i+1344>>2]=0.0;g[i+1368>>2]=1.0;a[i+1305|0]=0;s=i+1324|0;g[s>>2]=0.0;g[i+1348>>2]=0.0;g[i+1372>>2]=1.0;a[i+1306|0]=0;t=i+1328|0;g[t>>2]=0.0;g[i+1352>>2]=0.0;g[i+1376>>2]=1.0;c[i>>2]=23296;u=i+1380|0;v=e;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];v=i+1396|0;u=f;c[v>>2]=c[u>>2];c[v+4>>2]=c[u+4>>2];c[v+8>>2]=c[u+8>>2];c[v+12>>2]=c[u+12>>2];u=i+1412|0;v=h;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];v=f|0;w=+g[v>>2];u=f+4|0;x=+g[u>>2];y=f+8|0;z=+g[y>>2];A=1.0/+Q(+(w*w+x*x+z*z));B=w*A;g[v>>2]=B;w=x*A;g[u>>2]=w;x=z*A;g[y>>2]=x;y=h|0;A=+g[y>>2];u=h+4|0;z=+g[u>>2];v=h+8|0;D=+g[v>>2];E=1.0/+Q(+(A*A+z*z+D*D));F=A*E;g[y>>2]=F;A=z*E;g[u>>2]=A;z=D*E;g[v>>2]=z;E=w*z-x*A;D=x*F-B*z;G=B*A-w*F;H=+g[e>>2];I=+g[e+4>>2];J=+g[e+8>>2];K=+g[b+4>>2];L=+g[b+20>>2];M=+g[b+36>>2];N=+g[b+8>>2];O=+g[b+24>>2];P=+g[b+40>>2];R=+g[b+12>>2];S=+g[b+28>>2];T=+g[b+44>>2];U=-0.0- +g[b+52>>2];V=-0.0- +g[b+56>>2];W=-0.0- +g[b+60>>2];g[i+40>>2]=F*K+A*L+z*M;g[i+44>>2]=E*K+D*L+G*M;g[i+48>>2]=B*K+w*L+x*M;g[i+52>>2]=0.0;g[i+56>>2]=F*N+A*O+z*P;g[i+60>>2]=E*N+D*O+G*P;g[i+64>>2]=B*N+w*O+x*P;g[i+68>>2]=0.0;g[i+72>>2]=F*R+A*S+z*T;g[i+76>>2]=E*R+D*S+G*T;g[i+80>>2]=B*R+w*S+x*T;g[i+84>>2]=0.0;g[i+88>>2]=H*K+I*L+J*M+(K*U+L*V+M*W);g[i+92>>2]=H*N+I*O+J*P+(N*U+O*V+P*W);g[i+96>>2]=H*R+I*S+J*T+(R*U+S*V+T*W);g[i+100>>2]=0.0;W=+g[d+4>>2];T=+g[d+20>>2];V=+g[d+36>>2];S=+g[d+8>>2];U=+g[d+24>>2];R=+g[d+40>>2];P=+g[d+12>>2];O=+g[d+28>>2];N=+g[d+44>>2];M=-0.0- +g[d+52>>2];L=-0.0- +g[d+56>>2];K=-0.0- +g[d+60>>2];g[i+104>>2]=F*W+A*T+z*V;g[i+108>>2]=E*W+D*T+G*V;g[i+112>>2]=B*W+w*T+x*V;g[i+116>>2]=0.0;g[i+120>>2]=F*S+A*U+z*R;g[i+124>>2]=E*S+D*U+G*R;g[i+128>>2]=B*S+w*U+x*R;g[i+132>>2]=0.0;g[i+136>>2]=F*P+A*O+z*N;g[i+140>>2]=E*P+D*O+G*N;g[i+144>>2]=B*P+w*O+x*N;g[i+148>>2]=0.0;g[i+152>>2]=H*W+I*T+J*V+(W*M+T*L+V*K);g[i+156>>2]=H*S+I*U+J*R+(S*M+U*L+R*K);g[i+160>>2]=H*P+I*O+J*N+(P*M+O*L+N*K);g[i+164>>2]=0.0;g[i+672>>2]=0.0;g[i+676>>2]=0.0;g[i+680>>2]=-1.0;g[i+684>>2]=0.0;g[i+688>>2]=0.0;g[i+692>>2]=0.0;g[i+696>>2]=1.0;g[i+700>>2]=0.0;K=+ck(1.0,6.2831854820251465);do{if(K<-3.1415927410125732){X=K+6.2831854820251465}else{if(K<=3.1415927410125732){X=K;break}X=K-6.2831854820251465}}while(0);g[i+860>>2]=X;X=+ck(0.0,6.2831854820251465);do{if(X<-3.1415927410125732){Y=X+6.2831854820251465}else{if(X<=3.1415927410125732){Y=X;break}Y=X-6.2831854820251465}}while(0);g[i+924>>2]=Y;Y=+ck(-.7853981852531433,6.2831854820251465);do{if(Y<-3.1415927410125732){Z=Y+6.2831854820251465}else{if(Y<=3.1415927410125732){Z=Y;break}Z=Y-6.2831854820251465}}while(0);g[i+988>>2]=Z;Z=+ck(-1.0,6.2831854820251465);do{if(Z<-3.1415927410125732){_=Z+6.2831854820251465}else{if(Z<=3.1415927410125732){_=Z;break}_=Z-6.2831854820251465}}while(0);g[i+864>>2]=_;_=+ck(0.0,6.2831854820251465);do{if(_<-3.1415927410125732){$=_+6.2831854820251465}else{if(_<=3.1415927410125732){$=_;break}$=_-6.2831854820251465}}while(0);g[i+928>>2]=$;$=+ck(.7853981852531433,6.2831854820251465);if($<-3.1415927410125732){aa=$+6.2831854820251465;ab=i+992|0;ac=ab;g[ac>>2]=aa;a[n]=1;ad=i+782|0;a[ad]=1;g[p>>2]=39.47842025756836;g[q>>2]=.009999999776482582;ae=i+24|0;af=ae;ag=c[af>>2]|0;ah=ag+4|0;ai=i+28|0;aj=ai;ak=c[aj>>2]|0;al=ak+4|0;aoZ(j,ah,al);am=i+1248|0;an=am;ao=+g[an>>2];g[l>>2]=ao;ap=i+1252|0;aq=ap;ar=+g[aq>>2];g[m>>2]=ar;as=i+1256|0;at=as;au=+g[at>>2];g[o>>2]=au;av=i+1184|0;aw=av;ax=+g[aw>>2];g[r>>2]=ax;ay=i+1188|0;az=ay;aA=+g[az>>2];g[s>>2]=aA;aB=i+1192|0;aC=aB;aD=+g[aC>>2];g[t>>2]=aD;return k|0}if($<=3.1415927410125732){aa=$;ab=i+992|0;ac=ab;g[ac>>2]=aa;a[n]=1;ad=i+782|0;a[ad]=1;g[p>>2]=39.47842025756836;g[q>>2]=.009999999776482582;ae=i+24|0;af=ae;ag=c[af>>2]|0;ah=ag+4|0;ai=i+28|0;aj=ai;ak=c[aj>>2]|0;al=ak+4|0;aoZ(j,ah,al);am=i+1248|0;an=am;ao=+g[an>>2];g[l>>2]=ao;ap=i+1252|0;aq=ap;ar=+g[aq>>2];g[m>>2]=ar;as=i+1256|0;at=as;au=+g[at>>2];g[o>>2]=au;av=i+1184|0;aw=av;ax=+g[aw>>2];g[r>>2]=ax;ay=i+1188|0;az=ay;aA=+g[az>>2];g[s>>2]=aA;aB=i+1192|0;aC=aB;aD=+g[aC>>2];g[t>>2]=aD;return k|0}aa=$-6.2831854820251465;ab=i+992|0;ac=ab;g[ac>>2]=aa;a[n]=1;ad=i+782|0;a[ad]=1;g[p>>2]=39.47842025756836;g[q>>2]=.009999999776482582;ae=i+24|0;af=ae;ag=c[af>>2]|0;ah=ag+4|0;ai=i+28|0;aj=ai;ak=c[aj>>2]|0;al=ak+4|0;aoZ(j,ah,al);am=i+1248|0;an=am;ao=+g[an>>2];g[l>>2]=ao;ap=i+1252|0;aq=ap;ar=+g[aq>>2];g[m>>2]=ar;as=i+1256|0;at=as;au=+g[at>>2];g[o>>2]=au;av=i+1184|0;aw=av;ax=+g[aw>>2];g[r>>2]=ax;ay=i+1188|0;az=ay;aA=+g[az>>2];g[s>>2]=aA;aB=i+1192|0;aC=aB;aD=+g[aC>>2];g[t>>2]=aD;return k|0}function Jz(a,b){a=a|0;b=b|0;c[a+88>>2]=b;return}function JA(a){a=a|0;return c[a+136>>2]|0}function JB(a){a=a|0;return c[a+120>>2]|0}function JC(a,b,d){a=a|0;b=+b;d=d|0;g[(c[a+144>>2]|0)+(d*284|0)+252>>2]=b;return}function JD(a,b){a=a|0;b=b|0;return(c[a+144>>2]|0)+(b*284|0)|0}function JE(a){a=a|0;return(c[a+116>>2]|0)+4|0}function JF(a){a=a|0;var b=0,d=0,e=0,f=0.0,h=0.0;b=a+136|0;if((c[b>>2]|0)<=0){return}d=a+144|0;a=0;do{e=c[d>>2]|0;g[e+(a*284|0)+32>>2]=+g[e+(a*284|0)+204>>2];g[e+(a*284|0)+272>>2]=0.0;f=-0.0- +g[e+(a*284|0)+56>>2];h=-0.0- +g[e+(a*284|0)+60>>2];g[e+(a*284|0)>>2]=-0.0- +g[e+(a*284|0)+52>>2];g[e+(a*284|0)+4>>2]=f;g[e+(a*284|0)+8>>2]=h;g[e+(a*284|0)+12>>2]=0.0;g[e+(a*284|0)+268>>2]=1.0;a=a+1|0;}while((a|0)<(c[b>>2]|0));return}function JG(a,b){a=a|0;b=b|0;c[a+84>>2]=b;return}function JH(a){a=a|0;return c[a+128>>2]|0}function JI(a,b){a=a|0;b=b|0;return+(+g[(c[a+144>>2]|0)+(b*284|0)+232>>2])}function JJ(a){a=a|0;return c[a+84>>2]|0}function JK(a){a=a|0;return c[a+124>>2]|0}function JL(a,b){a=a|0;b=+b;g[a+104>>2]=b;return}function JM(a){a=a|0;return+(+g[a+112>>2])}function JN(a,b,d){a=a|0;b=+b;d=d|0;g[(c[a+144>>2]|0)+(d*284|0)+256>>2]=b;return}function JO(a,b,d){a=a|0;b=+b;d=d|0;g[(c[a+144>>2]|0)+(d*284|0)+232>>2]=b;return}function JP(a,c){a=a|0;c=c|0;b[a+12>>1]=c;return}function JQ(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function JR(a,c){a=a|0;c=c|0;b[a+14>>1]=c;return}function JS(a){a=a|0;return+(+g[a+4>>2])}function JT(a,b){a=a|0;b=b|0;c[a+16>>2]=b;return}function JU(a){a=a|0;return b[a+14>>1]|0}function JV(a){a=a|0;return a+56|0}function JW(a){a=a|0;return c[a+16>>2]|0}function JX(a){a=a|0;return a+40|0}function JY(a){a=a|0;return b[a+12>>1]|0}function JZ(a){a=a|0;return(c[a+8>>2]|0)!=0|0}function J_(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function J$(a){a=a|0;return c[a+8>>2]|0}function J0(a){a=a|0;return(c[a+4>>2]|0)==31|0}
function J1(b,d,e,f,h,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;h=+h;j=+j;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;m=i;i=i+256|0;n=m+48|0;o=l&1;l=m|0;p=m+16|0;q=m+32|0;r=n;s=d;c[l>>2]=c[s>>2];c[l+4>>2]=c[s+4>>2];c[l+8>>2]=c[s+8>>2];c[l+12>>2]=c[s+12>>2];s=e;c[p>>2]=c[s>>2];c[p+4>>2]=c[s+4>>2];c[p+8>>2]=c[s+8>>2];c[p+12>>2]=c[s+12>>2];s=f;c[q>>2]=c[s>>2];c[q+4>>2]=c[s+4>>2];c[q+8>>2]=c[s+8>>2];c[q+12>>2]=c[s+12>>2];t=+g[k>>2];u=+g[k+4>>2];v=+g[k+8>>2];w=+g[k+16>>2];x=+g[k+12>>2];y=+g[k+20>>2];k=n+156|0;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];l=n+172|0;c[l>>2]=c[p>>2];c[l+4>>2]=c[p+4>>2];c[l+8>>2]=c[p+8>>2];c[l+12>>2]=c[p+12>>2];p=n+188|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];q=b+136|0;s=c[q>>2]|0;f=b+140|0;do{if((s|0)==(c[f>>2]|0)){e=(s|0)==0?1:s<<1;if((s|0)>=(e|0)){z=s;break}if((e|0)==0){A=0;B=s}else{c[9806]=(c[9806]|0)+1;d=aDx((e*284|0)+19|0)|0;if((d|0)==0){C=0}else{D=-(d+4|0)&15;c[d+D>>2]=d;C=d+(D+4)|0}A=C;B=c[q>>2]|0}D=b+144|0;if((B|0)>0){d=0;while(1){E=A+(d*284|0)|0;if((E|0)!=0){F=c[D>>2]|0;G=E;E=F+(d*284|0)|0;aDC(G|0,E|0,92)|0;E=A+(d*284|0)+92|0;G=F+(d*284|0)+92|0;c[E>>2]=c[G>>2];c[E+4>>2]=c[G+4>>2];c[E+8>>2]=c[G+8>>2];c[E+12>>2]=c[G+12>>2];G=A+(d*284|0)+108|0;E=F+(d*284|0)+108|0;c[G>>2]=c[E>>2];c[G+4>>2]=c[E+4>>2];c[G+8>>2]=c[E+8>>2];c[G+12>>2]=c[E+12>>2];E=A+(d*284|0)+124|0;G=F+(d*284|0)+124|0;c[E>>2]=c[G>>2];c[E+4>>2]=c[G+4>>2];c[E+8>>2]=c[G+8>>2];c[E+12>>2]=c[G+12>>2];G=A+(d*284|0)+140|0;E=F+(d*284|0)+140|0;c[G>>2]=c[E>>2];c[G+4>>2]=c[E+4>>2];c[G+8>>2]=c[E+8>>2];c[G+12>>2]=c[E+12>>2];E=A+(d*284|0)+156|0;G=F+(d*284|0)+156|0;c[E>>2]=c[G>>2];c[E+4>>2]=c[G+4>>2];c[E+8>>2]=c[G+8>>2];c[E+12>>2]=c[G+12>>2];G=A+(d*284|0)+172|0;E=F+(d*284|0)+172|0;c[G>>2]=c[E>>2];c[G+4>>2]=c[E+4>>2];c[G+8>>2]=c[E+8>>2];c[G+12>>2]=c[E+12>>2];E=A+(d*284|0)+188|0;G=F+(d*284|0)+188|0;c[E>>2]=c[G>>2];c[E+4>>2]=c[G+4>>2];c[E+8>>2]=c[G+8>>2];c[E+12>>2]=c[G+12>>2];g[A+(d*284|0)+204>>2]=+g[F+(d*284|0)+204>>2];g[A+(d*284|0)+208>>2]=+g[F+(d*284|0)+208>>2];g[A+(d*284|0)+212>>2]=+g[F+(d*284|0)+212>>2];g[A+(d*284|0)+216>>2]=+g[F+(d*284|0)+216>>2];g[A+(d*284|0)+220>>2]=+g[F+(d*284|0)+220>>2];g[A+(d*284|0)+224>>2]=+g[F+(d*284|0)+224>>2];g[A+(d*284|0)+228>>2]=+g[F+(d*284|0)+228>>2];g[A+(d*284|0)+232>>2]=+g[F+(d*284|0)+232>>2];g[A+(d*284|0)+236>>2]=+g[F+(d*284|0)+236>>2];g[A+(d*284|0)+240>>2]=+g[F+(d*284|0)+240>>2];g[A+(d*284|0)+244>>2]=+g[F+(d*284|0)+244>>2];g[A+(d*284|0)+248>>2]=+g[F+(d*284|0)+248>>2];g[A+(d*284|0)+252>>2]=+g[F+(d*284|0)+252>>2];g[A+(d*284|0)+256>>2]=+g[F+(d*284|0)+256>>2];a[A+(d*284|0)+260|0]=a[F+(d*284|0)+260|0]&1;c[A+(d*284|0)+264>>2]=c[F+(d*284|0)+264>>2];g[A+(d*284|0)+268>>2]=+g[F+(d*284|0)+268>>2];g[A+(d*284|0)+272>>2]=+g[F+(d*284|0)+272>>2];g[A+(d*284|0)+276>>2]=+g[F+(d*284|0)+276>>2];g[A+(d*284|0)+280>>2]=+g[F+(d*284|0)+280>>2]}F=d+1|0;if((F|0)<(B|0)){d=F}else{H=D;break}}}else{H=D}d=c[H>>2]|0;F=b+148|0;if((d|0)!=0){if((a[F]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-284+280>>2]|0)}c[H>>2]=0}a[F]=1;c[H>>2]=A;c[f>>2]=e;z=c[q>>2]|0}else{z=s}}while(0);s=b+144|0;f=c[s>>2]|0;A=f+(z*284|0)|0;if((A|0)==0){I=z;J=f;K=I+1|0;c[q>>2]=K;L=J+(I*284|0)|0;apO(b,L,0);M=c[q>>2]|0;N=M-1|0;apP(b,N,0);O=16;P=0;Q=16;R=0;S=16;T=0;U=204;V=0;i=m;return L|0}H=A;aDC(H|0,r|0,92)|0;r=f+(z*284|0)+92|0;H=n+92|0;c[r>>2]=c[H>>2];c[r+4>>2]=c[H+4>>2];c[r+8>>2]=c[H+8>>2];c[r+12>>2]=c[H+12>>2];H=f+(z*284|0)+108|0;r=n+108|0;c[H>>2]=c[r>>2];c[H+4>>2]=c[r+4>>2];c[H+8>>2]=c[r+8>>2];c[H+12>>2]=c[r+12>>2];r=f+(z*284|0)+124|0;H=n+124|0;c[r>>2]=c[H>>2];c[r+4>>2]=c[H+4>>2];c[r+8>>2]=c[H+8>>2];c[r+12>>2]=c[H+12>>2];H=f+(z*284|0)+140|0;r=n+140|0;c[H>>2]=c[r>>2];c[H+4>>2]=c[r+4>>2];c[H+8>>2]=c[r+8>>2];c[H+12>>2]=c[r+12>>2];r=f+(z*284|0)+156|0;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];c[r+8>>2]=c[k+8>>2];c[r+12>>2]=c[k+12>>2];k=f+(z*284|0)+172|0;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];l=f+(z*284|0)+188|0;c[l>>2]=c[p>>2];c[l+4>>2]=c[p+4>>2];c[l+8>>2]=c[p+8>>2];c[l+12>>2]=c[p+12>>2];g[f+(z*284|0)+204>>2]=h;g[f+(z*284|0)+208>>2]=x;g[f+(z*284|0)+212>>2]=j;g[f+(z*284|0)+216>>2]=t;g[f+(z*284|0)+220>>2]=u;g[f+(z*284|0)+224>>2]=v;g[f+(z*284|0)+228>>2]=w;g[f+(z*284|0)+232>>2]=0.0;g[f+(z*284|0)+236>>2]=0.0;g[f+(z*284|0)+240>>2]=0.0;g[f+(z*284|0)+244>>2]=.10000000149011612;g[f+(z*284|0)+248>>2]=y;g[f+(z*284|0)+252>>2]=0.0;g[f+(z*284|0)+256>>2]=0.0;a[f+(z*284|0)+260|0]=o;I=c[q>>2]|0;J=c[s>>2]|0;K=I+1|0;c[q>>2]=K;L=J+(I*284|0)|0;apO(b,L,0);M=c[q>>2]|0;N=M-1|0;apP(b,N,0);O=16;P=0;Q=16;R=0;S=16;T=0;U=204;V=0;i=m;return L|0}function J2(a,b){a=a|0;b=b|0;apP(a,b,1);return}function J3(a,b,c){a=a|0;b=b|0;c=c|0;apP(a,b,c);return}function J4(a,b){a=a|0;b=b|0;return+(+apQ(a,b))}function J5(b){b=b|0;var d=0,e=0,f=0.0,h=0.0;do{if((a[43824]|0)==0){if((b1(43824)|0)==0){break}}}while(0);d=c[b+116>>2]|0;e=c[b+128>>2]|0;f=+g[d+20+(e<<2)>>2];h=+g[d+36+(e<<2)>>2];g[9350]=+g[d+4+(e<<2)>>2];g[9351]=f;g[9352]=h;g[9353]=0.0;return 37400}function J6(a,b){a=a|0;b=b|0;apO(a,b,1);return}function J7(a,b,c){a=a|0;b=b|0;c=c|0;apO(a,b,c);return}function J8(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+24>>2]&1023](a,b,d,e);return}function J9(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a,b);return}function Ka(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function Kb(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+20>>2]&1023](a,b);return}function Kc(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+16>>2]&1023](a,b);return}function Kd(a,b,d){a=a|0;b=b|0;d=+d;dF[c[(c[a>>2]|0)+8>>2]&255](a,b,d);return}function Ke(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function Kf(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+8>>2]&511](a|0,b)|0}function Kg(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+12>>2]&127](a,b,d))}function Kh(a,b){a=a|0;b=b|0;var d=0;d=a+56|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Ki(a,b){a=a|0;b=b|0;var d=0;d=a+40|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Kj(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function Kk(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0;while(1){f=aDx(152)|0;if((f|0)!=0){h=4445;break}b=(C=c[10744]|0,c[10744]=C+0,C);if((b|0)==0){break}dC[b&63]()}if((h|0)==4445){c[f>>2]=23912;a[f+20|0]=1;c[f+16>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;a[f+40|0]=1;c[f+36>>2]=0;c[f+28>>2]=0;c[f+32>>2]=0;a[f+60|0]=1;c[f+56>>2]=0;c[f+48>>2]=0;c[f+52>>2]=0;a[f+80|0]=1;c[f+76>>2]=0;c[f+68>>2]=0;c[f+72>>2]=0;c[f+100>>2]=e;g[f+104>>2]=0.0;a[f+148|0]=1;c[f+144>>2]=0;c[f+136>>2]=0;c[f+140>>2]=0;c[f+116>>2]=d;c[f+120>>2]=0;c[f+124>>2]=2;c[f+128>>2]=1;g[f+112>>2]=0.0;g[f+108>>2]=0.0;return f|0}f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}function Kl(d,e){d=d|0;e=e|0;var f=0,h=0,i=0;while(1){f=aDx(132)|0;if((f|0)!=0){h=4457;break}i=(C=c[10744]|0,c[10744]=C+0,C);if((i|0)==0){break}dC[i&63]()}if((h|0)==4457){g[f+4>>2]=1.0;c[f+8>>2]=0;b[f+12>>1]=1;b[f+14>>1]=-1;c[f+16>>2]=0;c[f>>2]=19512;a[f+36|0]=1;c[f+32>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;h=f+40|0;i=d;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];i=f+56|0;h=e;c[i>>2]=c[h>>2];c[i+4>>2]=c[h+4>>2];c[i+8>>2]=c[h+8>>2];c[i+12>>2]=c[h+12>>2];a[f+88|0]=1;c[f+84>>2]=0;c[f+76>>2]=0;c[f+80>>2]=0;a[f+108|0]=1;c[f+104>>2]=0;c[f+96>>2]=0;c[f+100>>2]=0;a[f+128|0]=1;c[f+124>>2]=0;c[f+116>>2]=0;c[f+120>>2]=0;return f|0}f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}function Km(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Kn(a){a=a|0;return c[a+52>>2]|0}function Ko(a){a=a|0;return(c[a+4>>2]|0)<7|0}function Kp(a){a=a|0;return a+12|0}function Kq(a){a=a|0;return+(+g[a+44>>2])}function Kr(a){a=a|0;return(c[a+4>>2]|0)<20|0}function Ks(a){a=a|0;return(c[a+4>>2]|0)==28|0}function Kt(a){a=a|0;return c[a+8>>2]|0}function Ku(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function Kv(a){a=a|0;return a+28|0}function Kw(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function Kx(a){a=a|0;return(c[a+4>>2]|0)==32|0}function Ky(a){a=a|0;return a+28|0}function Kz(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function KA(a){a=a|0;return c[a+4>>2]|0}function KB(a){a=a|0;return+(+g[a+4>>2])}function KC(a,c){a=a|0;c=c|0;b[a+12>>1]=c;return}function KD(a){a=a|0;return c[a+16>>2]|0}function KE(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function KF(a,c){a=a|0;c=c|0;b[a+14>>1]=c;return}function KG(a,b){a=a|0;b=b|0;c[a+16>>2]=b;return}function KH(a){a=a|0;return(c[a+8>>2]|0)!=0|0}function KI(a){a=a|0;return b[a+14>>1]|0}function KJ(a){a=a|0;return b[a+12>>1]|0}function KK(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function KL(a){a=a|0;return c[a+8>>2]|0}function KM(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function KN(a){a=a|0;return(c[a+4>>2]|0)<7|0}function KO(a){a=a|0;return(c[a+4>>2]|0)==31|0}function KP(a){a=a|0;return c[a+12>>2]|0}function KQ(a){a=a|0;return(c[a+4>>2]|0)<20|0}function KR(a){a=a|0;return(c[a+4>>2]|0)==28|0}function KS(a){a=a|0;return c[a+8>>2]|0}function KT(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function KU(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function KV(a){a=a|0;return(c[a+4>>2]|0)==32|0}function KW(a){a=a|0;return+(+g[a+16>>2])}function KX(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43664]|0)==0){if((b1(43664)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9346]=c[d>>2];c[9347]=c[d+4>>2];c[9348]=c[d+8>>2];c[9349]=c[d+12>>2];i=e;return 37384}function KY(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function KZ(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function K_(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function K$(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function K0(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+84>>2]&1023](a))}function K1(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function K2(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function K3(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function K4(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43184]|0)==0){if((b1(43184)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9342]=c[d>>2];c[9343]=c[d+4>>2];c[9344]=c[d+8>>2];c[9345]=c[d+12>>2];i=e;return 37368}function K5(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43360]|0)==0){if((b1(43360)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9338]=c[d>>2];c[9339]=c[d+4>>2];c[9340]=c[d+8>>2];c[9341]=c[d+12>>2];i=e;return 37352}function K6(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function K7(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function K8(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43504]|0)==0){if((b1(43504)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9334]=c[d>>2];c[9335]=c[d+4>>2];c[9336]=c[d+8>>2];c[9337]=c[d+12>>2];i=e;return 37336}function K9(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function La(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function Lb(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function Lc(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Ld(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 1:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 0:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function Le(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function Lf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function Lg(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function Lh(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function Li(a){a=a|0;var b=0,d=0,e=0,f=0,h=0.0,i=0.0;c[9806]=(c[9806]|0)+1;b=aDx(75)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}e=d+4|0;c[e>>2]=35;c[d+8>>2]=0;b=d|0;g[d+12>>2]=1.0;g[d+16>>2]=1.0;g[d+20>>2]=1.0;g[d+24>>2]=0.0;g[d+44>>2]=.03999999910593033;c[b>>2]=24848;f=d+52|0;c[f>>2]=1;h=+g[a+4>>2]+-.03999999910593033;i=+g[a+8>>2]+-.03999999910593033;g[d+28>>2]=+g[a>>2]+-.03999999910593033;g[d+32>>2]=h;g[d+36>>2]=i;g[d+40>>2]=0.0;c[e>>2]=13;c[b>>2]=24256;c[f>>2]=0;return d|0}function Lj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function Lk(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function Ll(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function Lm(b){b=b|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0,j=0,k=0.0,l=0.0,m=0.0;do{if((a[43672]|0)==0){if((b1(43672)|0)==0){break}}}while(0);d=+g[b+28>>2];e=+g[b+32>>2];f=+g[b+36>>2];h=+g[b+40>>2];i=b|0;j=b;k=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);l=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);m=f+ +dh[c[(c[j>>2]|0)+44>>2]&1023](i);g[9330]=d+k;g[9331]=e+l;g[9332]=m;g[9333]=h;return 37320}function Ln(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+12>>2]&127](a,b,d))}function Lo(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+8>>2]&511](a,b)|0}function Lp(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function Lq(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43560]|0)==0){if((b1(43560)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b,d);d=f;c[9326]=c[d>>2];c[9327]=c[d+4>>2];c[9328]=c[d+8>>2];c[9329]=c[d+12>>2];i=e;return 37304}function Lr(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function Ls(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function Lt(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a)|0}function Lu(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43376]|0)==0){if((b1(43376)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9322]=c[d>>2];c[9323]=c[d+4>>2];c[9324]=c[d+8>>2];c[9325]=c[d+12>>2];i=e;return 37288}function Lv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function Lw(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function Lx(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function Ly(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43112]|0)==0){if((b1(43112)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9318]=c[d>>2];c[9319]=c[d+4>>2];c[9320]=c[d+8>>2];c[9321]=c[d+12>>2];i=e;return 37272}function Lz(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function LA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function LB(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function LC(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function LD(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a))}function LE(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a,b,d);return}function LF(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a,b);return}function LG(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43232]|0)==0){if((b1(43232)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9302]=c[d>>2];c[9303]=c[d+4>>2];c[9304]=c[d+8>>2];c[9305]=c[d+12>>2];i=e;return 37208}function LH(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 0:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function LI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function LJ(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function LK(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function LL(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function LM(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function LN(a){a=a|0;return c[a+4>>2]|0}function LO(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function LP(a){a=a|0;return a+16|0}function LQ(a){a=a|0;return a|0}function LR(a){a=a|0;return+(+g[a+32>>2])}function LS(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=a|0;d=+g[b>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+4|0;d=+g[b+4>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+8|0;d=+g[b+8>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+12|0;d=+g[b+12>>2];if(d>=+g[c>>2]){return}g[c>>2]=d;return}function LT(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;g[a>>2]=b;g[a+4>>2]=c;g[a+8>>2]=d;g[a+12>>2]=0.0;return}function LU(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;g[a>>2]=b;g[a+4>>2]=c;g[a+8>>2]=d;g[a+12>>2]=e;return}function LV(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=a|0;d=+g[b>>2];if(+g[c>>2]<d){g[c>>2]=d}c=a+4|0;d=+g[b+4>>2];if(+g[c>>2]<d){g[c>>2]=d}c=a+8|0;d=+g[b+8>>2];if(+g[c>>2]<d){g[c>>2]=d}c=a+12|0;d=+g[b+12>>2];if(+g[c>>2]>=d){return}g[c>>2]=d;return}function LW(a,b){a=a|0;b=b|0;var c=0;if(+g[a+12>>2]!=+g[b+12>>2]){c=0;return c|0}if(+g[a+8>>2]!=+g[b+8>>2]){c=0;return c|0}if(+g[a+4>>2]!=+g[b+4>>2]){c=0;return c|0}c=+g[a>>2]==+g[b>>2];return c|0}function LX(a){a=a|0;return+(+g[a>>2])}function LY(a){a=a|0;return+(+g[a+4>>2])}function LZ(a){a=a|0;return+(+g[a+8>>2])}function L_(a,b){a=a|0;b=+b;g[a+12>>2]=b;return}function L$(a){a=a|0;return+(+g[a+12>>2])}function L0(a){a=a|0;return+(+g[a+4>>2])}function L1(a){a=a|0;return+(+g[a>>2])}function L2(a){a=a|0;return+(+g[a+8>>2])}function L3(a,b){a=a|0;b=+b;g[a>>2]=b;return}function L4(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function L5(a,b){a=a|0;b=+b;g[a+8>>2]=b;return}function L6(a){a=a|0;return(c[a+4>>2]|0)==31|0}function L7(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function L8(a){a=a|0;return c[a+52>>2]|0}function L9(a){a=a|0;return(c[a+4>>2]|0)<7|0}function Ma(a){a=a|0;return a+12|0}function Mb(a){a=a|0;return+(+g[a+44>>2])}function Mc(a){a=a|0;return(c[a+4>>2]|0)<20|0}function Md(a){a=a|0;return(c[a+4>>2]|0)==28|0}function Me(a){a=a|0;return c[a+8>>2]|0}function Mf(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function Mg(a){a=a|0;return a+28|0}function Mh(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function Mi(a){a=a|0;return(c[a+4>>2]|0)==32|0}function Mj(a){a=a|0;return a+28|0}function Mk(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function Ml(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a,b,d,e);return}function Mm(a,b){a=a|0;b=+b;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(39)|0;e=-(d+4|0)&15;c[d+e>>2]=d;f=d+(e+4)|0;c[f+8>>2]=0;c[f>>2]=22040;c[f+12>>2]=a;g[f+16>>2]=b;c[f+4>>2]=14;return f|0}function Mn(a){a=a|0;if((a|0)==0){return}aDB(a);return}function Mo(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Mp(a,b){a=a|0;b=b|0;var d=0;d=a;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Mq(a){a=a|0;if((a|0)==0){return}aDB(a);return}function Mr(a,b){a=a|0;b=b|0;var d=0,e=0;d=a;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return(a|0)!=0|0}function Ms(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function Mt(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43688]|0)==0){if((b1(43688)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b,d);d=f;c[9298]=c[d>>2];c[9299]=c[d+4>>2];c[9300]=c[d+8>>2];c[9301]=c[d+12>>2];i=e;return 37192}function Mu(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function Mv(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function Mw(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function Mx(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+84>>2]&1023](a))}function My(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function Mz(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function MA(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function MB(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43200]|0)==0){if((b1(43200)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9294]=c[d>>2];c[9295]=c[d+4>>2];c[9296]=c[d+8>>2];c[9297]=c[d+12>>2];i=e;return 37176}function MC(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43384]|0)==0){if((b1(43384)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9290]=c[d>>2];c[9291]=c[d+4>>2];c[9292]=c[d+8>>2];c[9293]=c[d+12>>2];i=e;return 37160}function MD(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function ME(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function MF(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43528]|0)==0){if((b1(43528)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9286]=c[d>>2];c[9287]=c[d+4>>2];c[9288]=c[d+8>>2];c[9289]=c[d+12>>2];i=e;return 37144}function MG(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function MH(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function MI(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function MJ(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function MK(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 1:{d=+g[b+44>>2];break};case 0:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function ML(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function MM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function MN(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function MO(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function MP(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function MQ(){var a=0,b=0,d=0;while(1){a=aDx(36)|0;if((a|0)!=0){b=4740;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==4740){g[a+32>>2]=-1.0;return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function MR(){var a=0,b=0,d=0;while(1){a=aDx(16)|0;if((a|0)!=0){b=4752;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==4752){return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function MS(a,b,d){a=+a;b=+b;d=+d;var e=0,f=0,h=0;while(1){e=aDx(16)|0;if((e|0)!=0){f=4764;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){break}dC[h&63]()}if((f|0)==4764){g[e>>2]=a;g[e+4>>2]=b;g[e+8>>2]=d;g[e+12>>2]=0.0;return e|0}e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}function MT(a,b,d,e){a=+a;b=+b;d=+d;e=+e;var f=0,h=0,i=0;while(1){f=aDx(16)|0;if((f|0)!=0){h=4776;break}i=(C=c[10744]|0,c[10744]=C+0,C);if((i|0)==0){break}dC[i&63]()}if((h|0)==4776){g[f>>2]=a;g[f+4>>2]=b;g[f+8>>2]=d;g[f+12>>2]=e;return f|0}f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}function MU(a){a=a|0;return(a|0)==31|0}function MV(a){a=a|0;return(a|0)<7|0}function MW(a){a=a|0;return(a|0)<20|0}function MX(a){a=a|0;return((a|0)>20&(a|0)<30?(a|0)!=25:0)|0}function MY(a){a=a|0;return(a|0)==32|0}function MZ(a){a=a|0;return(a|0)==28|0}function M_(a){a=a|0;return((a|0)>20?(a|0)<30:0)|0}function M$(a){a=a|0;return((a|0)==17?1:(a|0)==18)|0}function M0(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function M1(a){a=a|0;return c[a+4>>2]|0}function M2(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function M3(a){a=a|0;return+(+g[a+36>>2])}function M4(a){a=a|0;return a+20|0}function M5(a){a=a|0;return a+4|0}function M6(a){a=a|0;return c[a>>2]|0}function M7(a){a=a|0;return c[a+60>>2]|0}function M8(a,b){a=a|0;b=b|0;c[a+60>>2]=b;return}function M9(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function Na(a){a=a|0;return c[a+48>>2]|0}function Nb(a){a=a|0;return a+16|0}function Nc(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function Nd(a){a=a|0;return b[a+6>>1]|0}function Ne(a){a=a|0;return c[a+12>>2]|0}function Nf(a){a=a|0;return a+32|0}function Ng(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Nh(a,c){a=a|0;c=c|0;b[a+4>>1]=c;return}function Ni(a){a=a|0;return c[a+12>>2]|0}function Nj(a,c){a=a|0;c=c|0;b[a+6>>1]=c;return}function Nk(a,b){a=a|0;b=b|0;c[a+48>>2]=b;return}function Nl(a){a=a|0;return c[a+8>>2]|0}function Nm(a){a=a|0;return b[a+4>>1]|0}function Nn(a,c){a=a|0;c=c|0;b[a+4>>1]=c;return}function No(a,c){a=a|0;c=c|0;b[a+6>>1]=c;return}function Np(a){a=a|0;return b[a+6>>1]|0}function Nq(a){a=a|0;return b[a+4>>1]|0}function Nr(a){a=a|0;var b=0;b=a+124|0;a=(aa(c[b>>2]|0,1664525)|0)+1013904223|0;c[b>>2]=a;return a|0}function Ns(a){a=a|0;return c[a+124>>2]|0}function Nt(a,b){a=a|0;b=b|0;c[a+124>>2]=b;return}function Nu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+124|0;a=(aa(c[d>>2]|0,1664525)|0)+1013904223|0;c[d>>2]=a;do{if(b>>>0<65537){d=a>>>16^a;if(b>>>0>=257){e=d;break}f=d>>>8^d;if(b>>>0>=17){e=f;break}d=f>>>4^f;if(b>>>0>=5){e=d;break}f=d>>>2^d;if(b>>>0>=3){e=f;break}e=f>>>1^f}else{e=a}}while(0);return(e>>>0)%(b>>>0)|0|0}function Nv(a){a=a|0;return a+100|0}function Nw(a){a=a|0;return c[a+24>>2]|0}function Nx(a,b){a=a|0;b=b|0;c[a+76>>2]=b;return}function Ny(a){a=a|0;return a+4|0}function Nz(a,b){a=a|0;b=b|0;c[a+88>>2]=b;c[a+96>>2]=0;return}function NA(a,b,d){a=a|0;b=b|0;d=d|0;c[a+88>>2]=b;c[a+96>>2]=d;return}function NB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(e){c[a+92>>2]=b}else{c[a+88>>2]=b}c[a+96>>2]=d;return}function NC(b){b=b|0;return(a[b+84|0]&1)!=0|0}function ND(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function NE(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a,b);return}function NF(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function NG(a){a=a|0;var b=0,d=0,e=0,f=0.0,h=0.0;c[9806]=(c[9806]|0)+1;b=aDx(75)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}e=d+4|0;c[e>>2]=35;c[d+8>>2]=0;g[d+12>>2]=1.0;g[d+16>>2]=1.0;g[d+20>>2]=1.0;g[d+24>>2]=0.0;g[d+44>>2]=.03999999910593033;c[d>>2]=24848;c[d+52>>2]=1;f=+g[a+4>>2]+-.03999999910593033;h=+g[a+8>>2]+-.03999999910593033;g[d+28>>2]=+g[a>>2]+-.03999999910593033;g[d+32>>2]=f;g[d+36>>2]=h;g[d+40>>2]=0.0;c[e>>2]=13;return d|0}function NH(b){b=b|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0,j=0,k=0.0,l=0.0,m=0.0;do{if((a[43696]|0)==0){if((b1(43696)|0)==0){break}}}while(0);d=+g[b+28>>2];e=+g[b+32>>2];f=+g[b+36>>2];h=+g[b+40>>2];i=b|0;j=b;k=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);l=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);m=f+ +dh[c[(c[j>>2]|0)+44>>2]&1023](i);g[9282]=d+k;g[9283]=e+l;g[9284]=m;g[9285]=h;return 37128}function NI(a,b){a=a|0;b=b|0;var d=0;d=a+20|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function NJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+16>>2]&127](a,b,d,e);return}function NK(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function NL(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,d);return}function NM(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+8>>2]&511](a|0,b,d);return}function NN(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function NO(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;c[9806]=(c[9806]|0)+1;h=aDx(83)|0;if((h|0)==0){i=0}else{j=-(h+4|0)&15;c[h+j>>2]=h;i=h+(j+4)|0}c[i>>2]=e;b[i+4>>1]=f;b[i+6>>1]=g;g=i+16|0;f=a;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=i+32|0;g=d;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];c[i+8>>2]=0;c[i+56>>2]=0;c[i+52>>2]=0;return i|0}function NP(a,b){a=a|0;b=b|0;var d=0;d=a+32|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function NQ(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-64+60>>2]|0);return}function NR(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function NS(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return+(+dq[c[(c[a>>2]|0)+12>>2]&63](a,b,d,e,f,g,h,i))}function NT(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+8>>2]&511](a|0,b)|0}function NU(a){a=a|0;ct[c[(c[a>>2]|0)+20>>2]&2047](a);return}function NV(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function NW(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+8>>2]&511](a|0,b,d);return}function NX(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+16>>2]&1023](a|0,b,d,e);return}function NY(a,b,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return+(+cN[c[(c[a>>2]|0)+12>>2]&63](a,b,d,e,f,g,h,i,j,k,l))}function NZ(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+68>>2]&2047](a,b);return}function N_(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+60>>2]&2047](a,b);return}function N$(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+44>>2]&2047](a|0,b);return}function N0(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+80>>2]&2047](a,b);return}function N1(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+84>>2]&1023](a,b,d,e);return}function N2(a){a=a|0;ct[c[(c[a>>2]|0)+116>>2]&2047](a);return}function N3(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+124>>2]&2047](a|0,b);return}function N4(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a|0)|0}function N5(a){a=a|0;ct[c[(c[a>>2]|0)+40>>2]&2047](a|0);return}function N6(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+24>>2]&1023](a|0,b,d,e);return}function N7(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function N8(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+28>>2]&1023](a|0,b,d,e);return}function N9(a){a=a|0;return cA[c[(c[a>>2]|0)+100>>2]&4095](a|0)|0}function Oa(a,b){a=a|0;b=b|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b,1,-1);return}function Ob(a,b,d){a=a|0;b=b|0;d=d|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b,d,-1);return}function Oc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b,d,e);return}function Od(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+88>>2]&2047](a,b);return}function Oe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+48|0;f=e|0;g=e+16|0;h=e+32|0;j=c[b+192>>2]|0;dI[c[(c[j>>2]|0)+8>>2]&1023](j,b+4|0,f,g);c[h>>2]=21168;c[h+4>>2]=b;c[h+8>>2]=a;c[h+12>>2]=d;d=c[a+76>>2]|0;dI[c[(c[d>>2]|0)+28>>2]&1023](d,f,g,h|0);i=e;return}function Of(){var a=0,d=0,e=0;while(1){a=aDx(8)|0;if((a|0)!=0){d=4903;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==4903){b[a+4>>1]=1;b[a+6>>1]=-1;c[a>>2]=20096;return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function Og(){var b=0,d=0,e=0;while(1){b=aDx(128)|0;if((b|0)!=0){d=4915;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==4915){c[b>>2]=19632;a[b+20|0]=1;c[b+16>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;a[b+40|0]=1;c[b+36>>2]=0;c[b+28>>2]=0;c[b+32>>2]=0;a[b+60|0]=1;c[b+56>>2]=0;c[b+48>>2]=0;c[b+52>>2]=0;a[b+80|0]=1;c[b+76>>2]=0;c[b+68>>2]=0;c[b+72>>2]=0;a[b+100|0]=1;c[b+96>>2]=0;c[b+88>>2]=0;c[b+92>>2]=0;a[b+120|0]=1;c[b+116>>2]=0;c[b+108>>2]=0;c[b+112>>2]=0;c[b+124>>2]=0;return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function Oh(a){a=a|0;return c[a+8>>2]|0}function Oi(a,b){a=a|0;b=b|0;c[a+96>>2]=b;return}function Oj(a){a=a|0;return c[a+96>>2]|0}function Ok(a){a=a|0;return c[a+76>>2]|0}function Ol(b,c){b=b|0;c=c|0;a[b+84|0]=c&1;return}function Om(a){a=a|0;return a+28|0}function On(a){a=a|0;return c[a+4>>2]|0}function Oo(a){a=a|0;return c[a+136>>2]|0}function Op(a){a=a|0;return c[a+140>>2]|0}function Oq(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function Or(a){a=a|0;return(c[a+4>>2]|0)==31|0}function Os(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Ot(a){a=a|0;return+(+g[a+44>>2])}function Ou(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function Ov(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a|0,b);return}function Ow(a){a=a|0;ct[c[(c[a>>2]|0)+20>>2]&2047](a);return}function Ox(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;atO(a|0,b,c,d,e,0.0);return}function Oy(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;atO(a|0,b,c,d,e,f);return}function Oz(a,b){a=a|0;b=b|0;dA[c[(c[a>>2]|0)+52>>2]&511](a|0,b,0);return}function OA(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d);return}function OB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+168|0;g=f|0;h=a+24|0;j=c[h>>2]|0;k=dE[c[(c[j>>2]|0)+8>>2]&127](j,b,d,0)|0;if((k|0)==0){i=f;return}c[g+4>>2]=0;c[g+136>>2]=b;c[g+140>>2]=d;j=g+8|0;l=b+4|0;aDD(g+144|0,-1|0,16);c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+24|0;j=b+20|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+40|0;l=b+36|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+56|0;j=b+52|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+72|0;l=d+4|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+88|0;j=d+20|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+104|0;l=d+36|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+120|0;j=d+52|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];c[g>>2]=21728;c[g+160>>2]=e;co[c[(c[k>>2]|0)+8>>2]&255](k,b,d,a+28|0,g|0);ct[c[c[k>>2]>>2]&2047](k);g=c[h>>2]|0;cv[c[(c[g>>2]|0)+60>>2]&2047](g,k);i=f;return}function OC(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d|0;do{if((a[43832]|0)==0){if((b1(43832)|0)==0){break}}}while(0);cv[c[(c[b>>2]|0)+72>>2]&2047](e,b);b=e;c[9278]=c[b>>2];c[9279]=c[b+4>>2];c[9280]=c[b+8>>2];c[9281]=c[b+12>>2];i=d;return 37112}function OD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;atG(a,b,c,d,e,f);return}function OE(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+64>>2]&2047](a,b);return}function OF(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function OG(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+132>>2]&2047](a|0,b);return}function OH(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+104>>2]&511](a|0,b)|0}function OI(a){a=a|0;return cA[c[(c[a>>2]|0)+96>>2]&4095](a)|0}function OJ(a,b){a=a|0;b=+b;return dr[c[(c[a>>2]|0)+48>>2]&63](a,b,1,.01666666753590107)|0}function OK(a,b,d){a=a|0;b=+b;d=d|0;return dr[c[(c[a>>2]|0)+48>>2]&63](a,b,d,.01666666753590107)|0}function OL(a,b,d,e){a=a|0;b=+b;d=d|0;e=+e;return dr[c[(c[a>>2]|0)+48>>2]&63](a,b,d,e)|0}function OM(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+128>>2]&2047](a|0,b);return}function ON(a){a=a|0;return cA[c[(c[a>>2]|0)+112>>2]&4095](a)|0}function OO(a,b){a=a|0;b=b|0;atC(a|0,b);return}function OP(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+120>>2]&2047](a|0,b);return}function OQ(a){a=a|0;var b=0;b=c[a+76>>2]|0;return cA[c[(c[b>>2]|0)+36>>2]&4095](b)|0}function OR(a){a=a|0;ct[c[(c[a>>2]|0)+76>>2]&2047](a);return}function OS(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+36>>2]&2047](a,b);return}function OT(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+92>>2]&2047](a,b);return}function OU(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;atI(a,b,c,d,e,f,g,h);return}function OV(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function OW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+16>>2]&127](a,b,d,e);return}function OX(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+12>>2]&511](a,b,d);return}function OY(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+8>>2]&511](a,b,d);return}function OZ(a){a=a|0;var b=0;b=c[a+4>>2]|0;if((c[b+1116>>2]|0)==0){return}if((c[b+1108>>2]|0)==(c[a+136>>2]|0)){ay6(b,a+8|0,a+72|0);return}else{ay6(b,a+72|0,a+8|0);return}}function O_(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function O$(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43616]|0)==0){if((b1(43616)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9274]=c[d>>2];c[9275]=c[d+4>>2];c[9276]=c[d+8>>2];c[9277]=c[d+12>>2];i=e;return 37096}function O0(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function O1(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0;while(1){h=aDx(196)|0;if((h|0)!=0){i=5e3;break}j=(C=c[10744]|0,c[10744]=C+0,C);if((j|0)==0){i=4997;break}dC[j&63]()}if((i|0)==4997){j=cd(4)|0;c[j>>2]=19096;bF(j|0,34368,676);return 0}else if((i|0)==5e3){aty(h,b,d,f);c[h+88>>2]=0;c[h+92>>2]=0;c[h+96>>2]=0;g[h+100>>2]=.6000000238418579;g[h+104>>2]=1.0;g[h+108>>2]=.30000001192092896;g[h+116>>2]=0.0;g[h+124>>2]=20.0;c[h+120>>2]=10;g[h+132>>2]=.20000000298023224;g[h+136>>2]=.10000000149011612;g[h+140>>2]=0.0;g[h+128>>2]=1.0;c[h+144>>2]=0;g[h+148>>2]=-.019999999552965164;g[h+152>>2]=0.0;g[h+156>>2]=.8500000238418579;c[h+160>>2]=260;c[h+164>>2]=2;c[h+168>>2]=128;c[h>>2]=22176;c[h+172>>2]=e;a[h+176|0]=0;g[h+180>>2]=0.0;g[h+184>>2]=0.0;g[h+188>>2]=-10.0;g[h+192>>2]=0.0;return h|0}return 0}function O2(){var a=0,b=0,d=0,e=0;while(1){a=aDx(160)|0;if((a|0)!=0){break}b=(C=c[10744]|0,c[10744]=C+0,C);if((b|0)==0){d=5011;break}dC[b&63]()}if((d|0)==5011){d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}d=a;c[a>>2]=24e3;b=a+56|0;e=a+8|0;do{e=e+16|0;}while((e|0)!=(b|0));b=a+120|0;e=a+72|0;do{e=e+16|0;}while((e|0)!=(b|0));aDD(a+144|0,-1|0,16);return d|0}function O3(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;while(1){d=aDx(160)|0;if((d|0)!=0){e=5030;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){break}dC[f&63]()}if((e|0)==5030){c[d>>2]=24e3;c[d+4>>2]=0;e=d+8|0;f=d+72|0;c[d+136>>2]=a;c[d+140>>2]=b;g=a+4|0;aDD(d+144|0,-1|0,16);c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];g=d+24|0;e=a+20|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];e=d+40|0;g=a+36|0;c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];g=d+56|0;e=a+52|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];e=b+4|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=d+88|0;f=b+20|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=d+104|0;e=b+36|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=d+120|0;f=b+52|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];return d|0}d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}function O4(a){a=a|0;return(c[a+4>>2]|0)<7|0}function O5(a,b){a=a|0;b=b|0;return+(+g[(c[a+120>>2]|0)+(b<<2)>>2])}function O6(a){a=a|0;return c[a+92>>2]|0}function O7(a){a=a|0;return a+12|0}function O8(a,b){a=a|0;b=b|0;return(c[a+100>>2]|0)+(b<<4)|0}function O9(a){a=a|0;return(c[a+4>>2]|0)<20|0}function Pa(a){a=a|0;return(c[a+4>>2]|0)==28|0}function Pb(a){a=a|0;return c[a+8>>2]|0}function Pc(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function Pd(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function Pe(a){a=a|0;return(c[a+4>>2]|0)==32|0}function Pf(a){a=a|0;return a+28|0}function Pg(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function Ph(a){a=a|0;return c[a+4>>2]|0}function Pi(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Pj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;f=i;i=i+16|0;c[9806]=(c[9806]|0)+1;h=aDx(147)|0;if((h|0)==0){j=0}else{k=-(h+4|0)&15;c[h+k>>2]=h;j=h+(k+4)|0}k=j;h=f|0;l=j;c[j+8>>2]=0;g[j+12>>2]=1.0;g[j+16>>2]=1.0;g[j+20>>2]=1.0;g[j+24>>2]=0.0;g[j+44>>2]=.03999999910593033;g[j+52>>2]=1.0;g[j+56>>2]=1.0;g[j+60>>2]=1.0;g[j+64>>2]=0.0;g[j+68>>2]=-1.0;g[j+72>>2]=-1.0;g[j+76>>2]=-1.0;g[j+80>>2]=0.0;a[j+84|0]=0;c[j>>2]=23192;m=j+104|0;a[m]=1;n=j+100|0;c[n>>2]=0;o=j+92|0;c[o>>2]=0;p=j+96|0;c[p>>2]=0;q=j+124|0;a[q]=1;r=j+120|0;c[r>>2]=0;s=j+112|0;c[s>>2]=0;t=j+116|0;c[t>>2]=0;c[j+4>>2]=9;j=(e|0)>0;if(j){c[9806]=(c[9806]|0)+1;u=aDx((e<<4|4)+15|0)|0;if((u|0)==0){v=0}else{w=-(u+4|0)&15;c[u+w>>2]=u;v=u+(w+4)|0}w=c[o>>2]|0;if((w|0)>0){u=0;do{x=v+(u<<4)|0;if((x|0)!=0){y=x;x=(c[n>>2]|0)+(u<<4)|0;c[y>>2]=c[x>>2];c[y+4>>2]=c[x+4>>2];c[y+8>>2]=c[x+8>>2];c[y+12>>2]=c[x+12>>2]}u=u+1|0;}while((u|0)<(w|0))}w=c[n>>2]|0;if((w|0)!=0){if((a[m]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[w-16+12>>2]|0)}c[n>>2]=0}a[m]=1;c[n>>2]=v;c[p>>2]=e;p=0;m=v;while(1){v=m+(p<<4)|0;if((v|0)!=0){w=v;c[w>>2]=c[h>>2];c[w+4>>2]=c[h+4>>2];c[w+8>>2]=c[h+8>>2];c[w+12>>2]=c[h+12>>2]}w=p+1|0;if((w|0)>=(e|0)){break}p=w;m=c[n>>2]|0}z=c[s>>2]|0}else{z=0}c[o>>2]=e;if((z|0)<(e|0)){if((c[t>>2]|0)<(e|0)){if((e|0)==0){A=0;B=z}else{c[9806]=(c[9806]|0)+1;o=aDx((e<<2)+19|0)|0;if((o|0)==0){C=0}else{m=-(o+4|0)&15;c[o+m>>2]=o;C=o+(m+4)|0}A=C;B=c[s>>2]|0}if((B|0)>0){C=0;do{m=A+(C<<2)|0;if((m|0)!=0){g[m>>2]=+g[(c[r>>2]|0)+(C<<2)>>2]}C=C+1|0;}while((C|0)<(B|0))}B=c[r>>2]|0;if((B|0)!=0){if((a[q]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[B-4>>2]|0)}c[r>>2]=0}a[q]=1;c[r>>2]=A;c[t>>2]=e;D=z}else{D=z}do{z=(c[r>>2]|0)+(D<<2)|0;if((z|0)!=0){g[z>>2]=0.0}D=D+1|0;}while((D|0)<(e|0))}c[s>>2]=e;if(j){j=0;do{s=(c[n>>2]|0)+(j<<4)|0;D=b+(j<<4)|0;c[s>>2]=c[D>>2];c[s+4>>2]=c[D+4>>2];c[s+8>>2]=c[D+8>>2];c[s+12>>2]=c[D+12>>2];g[(c[r>>2]|0)+(j<<2)>>2]=+g[d+(j<<2)>>2];j=j+1|0;}while((j|0)<(e|0))}avA(l);i=f;return k|0}function Pk(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function Pl(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43440]|0)==0){if((b1(43440)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9270]=c[d>>2];c[9271]=c[d+4>>2];c[9272]=c[d+8>>2];c[9273]=c[d+12>>2];i=e;return 37080}function Pm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function Pn(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function Po(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function Pp(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43144]|0)==0){if((b1(43144)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9266]=c[d>>2];c[9267]=c[d+4>>2];c[9268]=c[d+8>>2];c[9269]=c[d+12>>2];i=e;return 37064}function Pq(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Pr(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function Ps(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function Pt(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function Pu(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function Pv(a){a=a|0;avA(a|0);return}function Pw(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function Px(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function Py(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function Pz(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43312]|0)==0){if((b1(43312)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9258]=c[d>>2];c[9259]=c[d+4>>2];c[9260]=c[d+8>>2];c[9261]=c[d+12>>2];i=e;return 37032}function PA(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 1:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 0:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function PB(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function PC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function PD(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function PE(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function PF(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function PG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function PH(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function PI(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function PJ(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function PK(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function PL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+60>>2]&1023](a,b,d,e);return}function PM(a,b,d,e,f,h,i){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0;while(1){j=aDx(124)|0;if((j|0)!=0){k=5158;break}l=(C=c[10744]|0,c[10744]=C+0,C);if((l|0)==0){break}dC[l&63]()}if((k|0)==5158){k=j;c[j+4>>2]=35;c[j+8>>2]=0;g[j+12>>2]=0.0;c[j>>2]=20552;ax$(k,a,b,d,e/65535.0,0.0,e,f,h?0:5,i);return k|0}k=cd(4)|0;c[k>>2]=19096;bF(k|0,34368,676);return 0}function PN(a,b,d,e,f,h,i,j,k){a=a|0;b=b|0;d=d|0;e=+e;f=+f;h=+h;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0;while(1){l=aDx(124)|0;if((l|0)!=0){m=5170;break}n=(C=c[10744]|0,c[10744]=C+0,C);if((n|0)==0){break}dC[n&63]()}if((m|0)==5170){m=l;c[l+4>>2]=35;c[l+8>>2]=0;g[l+12>>2]=0.0;c[l>>2]=20552;ax$(m,a,b,d,e,f,h,i,j,k);return m|0}m=cd(4)|0;c[m>>2]=19096;bF(m|0,34368,676);return 0}function PO(a){a=a|0;return(c[a+4>>2]|0)==31|0}function PP(a){a=a|0;return(c[a+4>>2]|0)<7|0}function PQ(b){b=b|0;a[b+101|0]=1;return}function PR(b,c){b=b|0;c=c|0;a[b+101|0]=c&1;return}function PS(a){a=a|0;return(c[a+4>>2]|0)<20|0}function PT(a){a=a|0;return(c[a+4>>2]|0)==28|0}function PU(a){a=a|0;return c[a+8>>2]|0}function PV(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function PW(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function PX(a){a=a|0;return(c[a+4>>2]|0)==32|0}function PY(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function PZ(a){a=a|0;return c[a+4>>2]|0}function P_(a){a=a|0;return(c[a+4>>2]|0)==31|0}function P$(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function P0(a){a=a|0;return+(+g[a+44>>2])}function P1(a){a=a|0;return(c[a+4>>2]|0)<7|0}function P2(a){a=a|0;return a+12|0}function P3(a){a=a|0;return(c[a+4>>2]|0)<20|0}function P4(a){a=a|0;return(c[a+4>>2]|0)==28|0}function P5(a){a=a|0;return c[a+8>>2]|0}function P6(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function P7(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function P8(a){a=a|0;return(c[a+4>>2]|0)==32|0}function P9(a){a=a|0;return a+28|0}function Qa(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function Qb(a){a=a|0;return c[a+4>>2]|0}function Qc(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Qd(a){a=a|0;return(c[a+4>>2]|0)<7|0}function Qe(a){a=a|0;return(c[a+4>>2]|0)==31|0}function Qf(a){a=a|0;return(c[a+4>>2]|0)<20|0}function Qg(a){a=a|0;return(c[a+4>>2]|0)==28|0}function Qh(a){a=a|0;return c[a+8>>2]|0}function Qi(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function Qj(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function Qk(a){a=a|0;return(c[a+4>>2]|0)==32|0}function Ql(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function Qm(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function Qn(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function Qo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function Qp(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function Qq(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function Qr(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function Qs(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function Qt(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function Qu(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function Qv(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function Qw(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function Qx(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function Qy(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43288]|0)==0){if((b1(43288)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9254]=c[d>>2];c[9255]=c[d+4>>2];c[9256]=c[d+8>>2];c[9257]=c[d+12>>2];i=e;return 37016}function Qz(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function QA(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function QB(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function QC(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43136]|0)==0){if((b1(43136)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9250]=c[d>>2];c[9251]=c[d+4>>2];c[9252]=c[d+8>>2];c[9253]=c[d+12>>2];i=e;return 37e3}function QD(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function QE(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function QF(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function QG(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43072]|0)==0){if((b1(43072)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9246]=c[d>>2];c[9247]=c[d+4>>2];c[9248]=c[d+8>>2];c[9249]=c[d+12>>2];i=e;return 36984}function QH(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function QI(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function QJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function QK(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function QL(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function QM(a){a=a|0;avA(a);return}function QN(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function QO(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function QP(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43096]|0)==0){if((b1(43096)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b|0,d);d=f;c[9242]=c[d>>2];c[9243]=c[d+4>>2];c[9244]=c[d+8>>2];c[9245]=c[d+12>>2];i=e;return 36968}function QQ(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 0:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 10:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function QR(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function QS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a|0,b,d,e);return}function QT(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function QU(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function QV(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function QW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function QX(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function QY(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function QZ(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43736]|0)==0){if((b1(43736)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b,d);d=f;c[9238]=c[d>>2];c[9239]=c[d+4>>2];c[9240]=c[d+8>>2];c[9241]=c[d+12>>2];i=e;return 36952}function Q_(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function Q$(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function Q0(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a)|0}function Q1(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43592]|0)==0){if((b1(43592)|0)==0){break}}}while(0);avC(f,b,d);d=f;c[9234]=c[d>>2];c[9235]=c[d+4>>2];c[9236]=c[d+8>>2];c[9237]=c[d+12>>2];i=e;return 36936}function Q2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a,b,c,d);return}function Q3(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function Q4(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function Q5(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43272]|0)==0){if((b1(43272)|0)==0){break}}}while(0);avB(f,b,d);d=f;c[9230]=c[d>>2];c[9231]=c[d+4>>2];c[9232]=c[d+8>>2];c[9233]=c[d+12>>2];i=e;return 36920}function Q6(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function Q7(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function Q8(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function Q9(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a))}function Ra(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a,b,d);return}function Rb(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a,b);return}function Rc(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43432]|0)==0){if((b1(43432)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9226]=c[d>>2];c[9227]=c[d+4>>2];c[9228]=c[d+8>>2];c[9229]=c[d+12>>2];i=e;return 36904}function Rd(a){a=a|0;var b=0.0;switch(c[a+4>>2]|0){case 13:{b=+g[a+44>>2];break};case 8:{b=+g[a+28>>2]*+g[a+12>>2];break};case 1:{b=+g[a+44>>2];break};case 0:{b=+g[a+44>>2];break};case 10:{b=+g[a+44>>2];break};case 5:case 4:{b=+g[a+44>>2];break};default:{b=+dh[c[(c[a>>2]|0)+44>>2]&1023](a)}}return+b}function Re(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function Rf(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function Rg(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function Rh(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function Ri(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function Rj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a,b,d,e);return}function Rk(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function Rl(a){a=a|0;return c[a+4>>2]|0}function Rm(a,b){a=a|0;b=b|0;c[a+20>>2]=b;return}function Rn(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Ro(a){a=a|0;return c[a+20>>2]|0}function Rp(a){a=a|0;return c[a+4>>2]|0}function Rq(a,b){a=a|0;b=b|0;c[a+28>>2]=b;return}function Rr(a){a=a|0;return c[a+24>>2]|0}function Rs(a,b){a=a|0;b=b|0;c[a+24>>2]=b;return}function Rt(a){a=a|0;return c[a+16>>2]|0}function Ru(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function Rv(a){a=a|0;return c[a+28>>2]|0}function Rw(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function Rx(a){a=a|0;return c[a+8>>2]|0}function Ry(a){a=a|0;return c[a>>2]|0}function Rz(a,b){a=a|0;b=b|0;c[a+16>>2]=b;return}function RA(a){a=a|0;return c[a+12>>2]|0}function RB(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function RC(a){a=a|0;return a+32|0}function RD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;co[c[(c[a>>2]|0)+8>>2]&255](a,b,d,e,0);return}function RE(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+8>>2]&255](a,b,d,e,f);return}function RF(a){a=a|0;if((a|0)==0){return}aDB(a);return}function RG(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+56>>2]&511](a,b)|0}function RH(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+40>>2]&511](a,b)|0}function RI(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function RJ(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function RK(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+60>>2]&2047](a,b);return}function RL(a){a=a|0;return cA[c[(c[a>>2]|0)+44>>2]&4095](a)|0}function RM(a,b,d){a=a|0;b=b|0;d=d|0;return dE[c[(c[a>>2]|0)+8>>2]&127](a,b,d,0)|0}function RN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+8>>2]&127](a,b,d,e)|0}function RO(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+28>>2]&511](a,b,d)|0}function RP(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+12>>2]&511](a,b,d)|0}function RQ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,d,e);return}function RR(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function RS(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+24>>2]&511](a,b,d)|0}function RT(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function RU(a){a=a|0;if((a|0)==0){return}aDB(a);return}function RV(a,b){a=a|0;b=b|0;var d=0;d=a;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function RW(){var a=0,b=0,d=0;while(1){a=aDx(32)|0;if((a|0)!=0){b=5374;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==5374){c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=4096;c[a+16>>2]=4096;c[a+20>>2]=0;c[a+24>>2]=0;c[a+28>>2]=1;return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function RX(){var a=0,b=0,d=0;while(1){a=aDx(84)|0;if((a|0)!=0){b=5386;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==5386){return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function RY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;while(1){f=aDx(84)|0;if((f|0)!=0){h=5398;break}i=(C=c[10744]|0,c[10744]=C+0,C);if((i|0)==0){break}dC[i&63]()}if((h|0)==5398){h=f+16|0;i=a;aDD(f|0,0,16);c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];j=-0.0- +g[b>>2];k=-0.0- +g[b+4>>2];l=-0.0- +g[b+8>>2];g[f+32>>2]=j;g[f+36>>2]=k;g[f+40>>2]=l;g[f+44>>2]=0.0;m=+g[h>>2];n=+g[d>>2]*m;o=+g[f+20>>2];p=+g[d+4>>2]*o;q=+g[f+24>>2];r=+g[d+8>>2]*q;g[f+48>>2]=n;g[f+52>>2]=p;g[f+56>>2]=r;g[f+60>>2]=0.0;s=+g[e>>2]*j;t=+g[e+4>>2]*k;u=+g[e+8>>2]*l;g[f+64>>2]=s;g[f+68>>2]=t;g[f+72>>2]=u;g[f+76>>2]=0.0;g[f+80>>2]=n*m+p*o+r*q+(s*j+t*k+u*l);return f|0}f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}function RZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0.0,l=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0;while(1){h=aDx(84)|0;if((h|0)!=0){i=5410;break}j=(C=c[10744]|0,c[10744]=C+0,C);if((j|0)==0){break}dC[j&63]()}if((i|0)==5410){aDD(h|0,0,16);i=a|0;k=+g[i>>2];j=a+4|0;l=+g[j>>2];m=a+8|0;n=+g[m>>2];o=+g[b>>2]*k+ +g[b+4>>2]*l+ +g[b+8>>2]*n;p=+g[b+16>>2]*k+ +g[b+20>>2]*l+ +g[b+24>>2]*n;q=+g[b+32>>2]*k+ +g[b+36>>2]*l+ +g[b+40>>2]*n;g[h+16>>2]=o;g[h+20>>2]=p;g[h+24>>2]=q;g[h+28>>2]=0.0;n=-0.0- +g[i>>2];l=-0.0- +g[j>>2];k=-0.0- +g[m>>2];r=+g[d>>2]*n+ +g[d+4>>2]*l+ +g[d+8>>2]*k;s=+g[d+16>>2]*n+ +g[d+20>>2]*l+ +g[d+24>>2]*k;t=+g[d+32>>2]*n+ +g[d+36>>2]*l+ +g[d+40>>2]*k;g[h+32>>2]=r;g[h+36>>2]=s;g[h+40>>2]=t;g[h+44>>2]=0.0;k=+g[e>>2]*o;l=+g[e+4>>2]*p;n=+g[e+8>>2]*q;g[h+48>>2]=k;g[h+52>>2]=l;g[h+56>>2]=n;g[h+60>>2]=0.0;u=+g[f>>2]*r;v=+g[f+4>>2]*s;w=+g[f+8>>2]*t;g[h+64>>2]=u;g[h+68>>2]=v;g[h+72>>2]=w;g[h+76>>2]=0.0;g[h+80>>2]=k*o+l*p+n*q+(u*r+v*s+w*t);return h|0}h=cd(4)|0;c[h>>2]=19096;bF(h|0,34368,676);return 0}function R_(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;var i=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,D=0.0,E=0.0;while(1){i=aDx(84)|0;if((i|0)!=0){j=5422;break}k=(C=c[10744]|0,c[10744]=C+0,C);if((k|0)==0){break}dC[k&63]()}if((j|0)==5422){j=e;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];l=+g[b+4>>2];j=e+8|0;m=+g[j>>2];n=+g[b+8>>2];k=e+4|0;o=+g[k>>2];p=l*m-n*o;q=e|0;r=+g[q>>2];s=+g[b>>2];t=n*r-s*m;m=s*o-l*r;b=a|0;e=a+4|0;u=a+8|0;r=+g[b>>2]*p+ +g[e>>2]*t+ +g[u>>2]*m;v=a+16|0;w=a+20|0;x=a+24|0;l=+g[v>>2]*p+ +g[w>>2]*t+ +g[x>>2]*m;y=a+32|0;z=a+36|0;A=a+40|0;o=+g[y>>2]*p+ +g[z>>2]*t+ +g[A>>2]*m;g[i+16>>2]=r;g[i+20>>2]=l;g[i+24>>2]=o;g[i+28>>2]=0.0;m=-0.0- +g[q>>2];t=-0.0- +g[k>>2];p=-0.0- +g[j>>2];s=+g[d+4>>2];n=+g[d+8>>2];B=s*p-n*t;D=+g[d>>2];E=n*m-D*p;p=D*t-s*m;m=+g[v>>2]*B+ +g[w>>2]*E+ +g[x>>2]*p;s=+g[y>>2]*B+ +g[z>>2]*E+ +g[A>>2]*p;g[i+32>>2]=+g[b>>2]*B+ +g[e>>2]*E+ +g[u>>2]*p;g[i+36>>2]=m;g[i+40>>2]=s;g[i+44>>2]=0.0;s=+g[f>>2]*r;m=+g[f+4>>2]*l;p=+g[f+8>>2]*o;g[i+48>>2]=s;g[i+52>>2]=m;g[i+56>>2]=p;aDD(i+60|0,0,20);g[i+80>>2]=s*r+m*l+p*o+h;return i|0}i=cd(4)|0;c[i>>2]=19096;bF(i|0,34368,676);return 0}function R$(a){a=a|0;return a|0}function R0(a){a=a|0;return+(+g[a+80>>2])}function R1(a,b){a=a|0;b=+b;g[a+80>>2]=b;return}function R2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+(+g[c>>2]*+g[a+16>>2]+ +g[e>>2]*+g[a+32>>2]+(+g[b>>2]- +g[d>>2])*+g[a>>2]+(+g[c+4>>2]*+g[a+20>>2]+ +g[e+4>>2]*+g[a+36>>2]+(+g[b+4>>2]- +g[d+4>>2])*+g[a+4>>2])+(+g[c+8>>2]*+g[a+24>>2]+ +g[e+8>>2]*+g[a+40>>2]+(+g[b+8>>2]- +g[d+8>>2])*+g[a+8>>2])+1.1920928955078125e-7)}function R3(a){a=a|0;return+(+g[a+80>>2])}function R4(a,b,c){a=a|0;b=b|0;c=+c;return+((+g[a>>2]*+g[b>>2]+ +g[a+4>>2]*+g[b+4>>2]+ +g[a+8>>2]*+g[b+8>>2])*c+(+g[a+48>>2]*+g[b+16>>2]+ +g[a+52>>2]*+g[b+20>>2]+ +g[a+56>>2]*+g[b+24>>2]))}function R5(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;var e=0.0,f=0.0,h=0.0;e=+g[a>>2]*+g[b>>2];f=+g[a+4>>2]*+g[b+4>>2];h=+g[a+8>>2]*+g[b+8>>2];return+(+g[a+48>>2]*+g[b+16>>2]+ +g[a+64>>2]*+g[b+32>>2]+e*c+e*d+(+g[a+52>>2]*+g[b+20>>2]+ +g[a+68>>2]*+g[b+36>>2]+f*c+f*d)+(+g[a+56>>2]*+g[b+24>>2]+ +g[a+72>>2]*+g[b+40>>2]+h*c+h*d))}function R6(a){a=a|0;return a+48|0}function R7(a){a=a|0;return a+16|0}function R8(a){a=a|0;return a+64|0}function R9(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function Sa(a,b){a=a|0;b=b|0;return(c[a>>2]|0)==(c[b>>2]|0)|0}function Sb(a){a=a|0;return c[a>>2]|0}function Sc(a){a=a|0;var b=0;b=c[a>>2]|0;a=b+~(b<<15)|0;b=(a^a>>10)*9|0;a=b^b>>6;b=a+~(a<<11)|0;return b^b>>16|0}function Sd(b){b=b|0;return(a[b+4|0]&1)!=0|0}function Se(b,c){b=b|0;c=c|0;a[b+4|0]=c&1;return}function Sf(a,b){a=a|0;b=b|0;c[a+76>>2]=b;return}function Sg(a){a=a|0;return c[a+24>>2]|0}function Sh(a){a=a|0;return a+28|0}function Si(a){a=a|0;return a+4|0}function Sj(b){b=b|0;return(a[b+84|0]&1)!=0|0}function Sk(a){a=a|0;return c[a+8>>2]|0}function Sl(a){a=a|0;return c[a+76>>2]|0}function Sm(b,c){b=b|0;c=c|0;a[b+84|0]=c&1;return}function Sn(b,d){b=b|0;d=d|0;var e=0;do{if((c[b+176+(d<<2)>>2]|0)==0){if((a[b+108+d|0]&1)==0){e=0}else{break}return e|0}}while(0);e=1;return e|0}function So(a){a=a|0;return a+144|0}function Sp(a){a=a|0;return a+160|0}function Sq(a){a=a|0;return a+76|0}function Sr(a){a=a|0;return a+92|0}function Ss(a){a=a|0;return a|0}function St(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Su(a,b){a=a|0;b=b|0;var d=0;d=a+32|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Sv(a,b){a=a|0;b=b|0;var d=0;d=a+64|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Sw(a,b){a=a|0;b=b|0;var d=0;d=a+48|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Sx(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+8>>2]&511](a,b,d)|0}function Sy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+12>>2]&127](a,b,d,e)|0}function Sz(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+16>>2]&511](a,b,d);return}function SA(a){a=a|0;if((a|0)==0){return}aDB(a);return}function SB(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function SC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+8>>2]&127](a,b,d,e)|0}function SD(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+44>>2]&2047](a,b);return}function SE(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a)|0}function SF(a){a=a|0;ct[c[(c[a>>2]|0)+40>>2]&2047](a);return}function SG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+24>>2]&1023](a,b,d,e);return}function SH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+28>>2]&1023](a,b,d,e);return}function SI(a,b){a=a|0;b=b|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,1,-1);return}function SJ(a,b,d){a=a|0;b=b|0;d=d|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,d,-1);return}function SK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,d,e);return}function SL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+48|0;f=e|0;g=e+16|0;h=e+32|0;j=c[b+192>>2]|0;dI[c[(c[j>>2]|0)+8>>2]&1023](j,b+4|0,f,g);c[h>>2]=21168;c[h+4>>2]=b;c[h+8>>2]=a;c[h+12>>2]=d;d=c[a+76>>2]|0;dI[c[(c[d>>2]|0)+28>>2]&1023](d,f,g,h|0);i=e;return}function SM(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function SN(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a,b);return}function SO(a){a=a|0;ct[c[(c[a>>2]|0)+20>>2]&2047](a);return}function SP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;atO(a,b,c,d,e,0.0);return}function SQ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;atO(a,b,c,d,e,f);return}function SR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+168|0;g=f|0;h=a+24|0;j=c[h>>2]|0;k=dE[c[(c[j>>2]|0)+8>>2]&127](j,b,d,0)|0;if((k|0)==0){i=f;return}c[g+4>>2]=0;c[g+136>>2]=b;c[g+140>>2]=d;j=g+8|0;l=b+4|0;aDD(g+144|0,-1|0,16);c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+24|0;j=b+20|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+40|0;l=b+36|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+56|0;j=b+52|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+72|0;l=d+4|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+88|0;j=d+20|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+104|0;l=d+36|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+120|0;j=d+52|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];c[g>>2]=21728;c[g+160>>2]=e;co[c[(c[k>>2]|0)+8>>2]&255](k,b,d,a+28|0,g|0);ct[c[c[k>>2]>>2]&2047](k);g=c[h>>2]|0;cv[c[(c[g>>2]|0)+60>>2]&2047](g,k);i=f;return}function SS(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;atG(a,b,c,d,e,f);return}function ST(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function SU(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;atI(a,b,c,d,e,f,g,h);return}function SV(a,b){a=a|0;b=b|0;atC(a,b);return}function SW(a){a=a|0;var b=0;b=c[a+76>>2]|0;return cA[c[(c[b>>2]|0)+36>>2]&4095](b)|0}function SX(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+36>>2]&2047](a,b);return}function SY(a,b){a=a|0;b=b|0;var d=0;d=a+144|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function SZ(a,b){a=a|0;b=b|0;var d=0;d=a+76|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function S_(a,b){a=a|0;b=b|0;var d=0;d=a+92|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function S$(a,b){a=a|0;b=b|0;var d=0;d=a+128|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function S0(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;i=i|0;j=+j;var k=0,l=0,m=0;while(1){k=aDx(84)|0;if((k|0)!=0){l=5520;break}m=(C=c[10744]|0,c[10744]=C+0,C);if((m|0)==0){break}dC[m&63]()}if((l|0)==5520){l=k;anz(l,a,b,d,e,f,g,h,i,j);return l|0}l=cd(4)|0;c[l>>2]=19096;bF(l|0,34368,676);return 0}function S1(a){a=a|0;var b=0,d=0,e=0;while(1){b=aDx(4)|0;if((b|0)!=0){d=5532;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==5532){c[b>>2]=a;return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function S2(){var b=0,d=0,e=0;while(1){b=aDx(8)|0;if((b|0)!=0){d=5544;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==5544){c[b>>2]=19992;a[b+4|0]=0;return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function S3(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;while(1){e=aDx(88)|0;if((e|0)!=0){f=5556;break}g=(C=c[10744]|0,c[10744]=C+0,C);if((g|0)==0){f=5553;break}dC[g&63]()}if((f|0)==5553){g=cd(4)|0;c[g>>2]=19096;bF(g|0,34368,676);return 0}else if((f|0)==5556){f=e;aty(f,a,b,d);return f|0}return 0}function S4(a,b,d){a=a|0;b=b|0;d=+d;var e=0.0,f=0.0,h=0,i=0;e=+g[a+(b<<2)>>2];f=+g[a+16+(b<<2)>>2];if(e>f){c[a+176+(b<<2)>>2]=0;g[a+144+(b<<2)>>2]=0.0;h=0;return h|0}if(e>d){c[a+176+(b<<2)>>2]=2;g[a+144+(b<<2)>>2]=d-e;h=2;return h|0}i=a+176+(b<<2)|0;if(f<d){c[i>>2]=1;g[a+144+(b<<2)>>2]=d-f;h=1;return h|0}else{c[i>>2]=0;g[a+144+(b<<2)>>2]=0.0;h=0;return h|0}return 0}function S5(a,b){a=a|0;b=+b;g[a+56>>2]=b;return}function S6(a,b){a=a|0;b=+b;g[a+48>>2]=b;return}function S7(a){a=a|0;return+(+g[a+56>>2])}function S8(a){a=a|0;return a+112|0}function S9(a){a=a|0;return a+128|0}function Ta(a,b){a=a|0;b=+b;g[a+52>>2]=b;return}function Tb(a){a=a|0;return a+16|0}function Tc(a){a=a|0;return+(+g[a+52>>2])}function Td(a){a=a|0;return a+60|0}function Te(a,b){a=a|0;b=b|0;return+g[a+16+(b<<2)>>2]>=+g[a+(b<<2)>>2]|0}function Tf(a){a=a|0;return a+32|0}function Tg(a){a=a|0;return+(+g[a+48>>2])}function Th(a,b,c,d,e,f,h,i,j,k){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0.0,E=0,F=0.0,G=0,H=0.0,I=0,J=0.0,K=0,L=0.0,M=0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0;l=+g[k>>2];m=l- +g[d+52>>2];n=+g[k+4>>2];o=n- +g[d+56>>2];p=+g[k+8>>2];q=p- +g[d+60>>2];r=l- +g[f+52>>2];l=n- +g[f+56>>2];n=p- +g[f+60>>2];k=d+504|0;s=d+508|0;t=d+512|0;u=d+520|0;p=+g[d+320>>2]+ +g[u>>2];v=d+524|0;w=+g[d+324>>2]+ +g[v>>2];x=d+528|0;y=+g[d+328>>2]+ +g[x>>2];z=f+504|0;A=f+508|0;B=f+512|0;C=f+520|0;D=+g[f+320>>2]+ +g[C>>2];E=f+524|0;F=+g[f+324>>2]+ +g[E>>2];G=f+528|0;H=+g[f+328>>2]+ +g[G>>2];I=j|0;J=+g[I>>2];K=j+4|0;L=+g[K>>2];M=j+8|0;N=+g[M>>2];O=N*(+g[d+312>>2]+ +g[t>>2]+(o*p-m*w)-(+g[f+312>>2]+ +g[B>>2]+(l*D-r*F)))+(J*(+g[d+304>>2]+ +g[k>>2]+(q*w-o*y)-(+g[f+304>>2]+ +g[z>>2]+(n*F-l*H)))+L*(+g[d+308>>2]+ +g[s>>2]+(m*y-q*p)-(+g[f+308>>2]+ +g[A>>2]+(r*H-n*D))));D=-0.0-(J*(+g[e>>2]- +g[h>>2])+L*(+g[e+4>>2]- +g[h+4>>2])+N*(+g[e+8>>2]- +g[h+8>>2]));N=+g[a+(i<<2)>>2];L=+g[a+16+(i<<2)>>2];do{if(N<L){if(L<D){P=D-L;Q=0.0;R=999999984306749400.0;break}if(N>D){P=D-N;Q=-999999984306749400.0;R=0.0;break}else{S=0.0;return+S}}else{P=D;Q=-999999984306749400.0;R=999999984306749400.0}}while(0);h=a+32+(i<<2)|0;D=+g[h>>2];N=D+ +g[a+48>>2]*(P*+g[a+56>>2]/b-O*+g[a+52>>2])*c;if(N>R){T=0.0}else{T=N<Q?0.0:N}g[h>>2]=T;N=T-D;D=+g[I>>2];T=+g[K>>2];Q=+g[M>>2];R=o*Q-q*T;c=q*D-m*Q;q=m*T-o*D;o=l*Q-n*T;m=n*D-r*Q;n=r*T-l*D;l=+g[d+336>>2];if(l!=0.0){r=c*+g[d+292>>2]+R*+g[d+288>>2]+q*+g[d+296>>2];O=c*+g[d+276>>2]+R*+g[d+272>>2]+q*+g[d+280>>2];b=c*+g[d+260>>2]+R*+g[d+256>>2]+q*+g[d+264>>2];g[k>>2]=N*D*l+ +g[k>>2];g[s>>2]=N*T*l+ +g[s>>2];g[t>>2]=N*Q*l+ +g[t>>2];l=O*N*+g[d+540>>2];O=r*N*+g[d+544>>2];g[u>>2]=b*N*+g[d+536>>2]+ +g[u>>2];g[v>>2]=l+ +g[v>>2];g[x>>2]=O+ +g[x>>2]}O=+g[f+336>>2];l=-0.0-N;if(O==0.0){S=N;return+S}b=m*+g[f+292>>2]+o*+g[f+288>>2]+n*+g[f+296>>2];r=m*+g[f+276>>2]+o*+g[f+272>>2]+n*+g[f+280>>2];Q=m*+g[f+260>>2]+o*+g[f+256>>2]+n*+g[f+264>>2];n=O*+g[K>>2]*l;o=O*+g[M>>2]*l;g[z>>2]=+g[z>>2]+O*+g[I>>2]*l;g[A>>2]=n+ +g[A>>2];g[B>>2]=o+ +g[B>>2];o=r*+g[f+540>>2]*l;r=b*+g[f+544>>2]*l;g[C>>2]=Q*+g[f+536>>2]*l+ +g[C>>2];g[E>>2]=o+ +g[E>>2];g[G>>2]=r+ +g[G>>2];S=N;return+S}function Ti(a){a=a|0;return(c[a+4>>2]|0)==31|0}function Tj(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Tk(a){a=a|0;return+(+g[a+44>>2])}function Tl(a){a=a|0;return(c[a+4>>2]|0)<7|0}function Tm(a){a=a|0;return a+12|0}function Tn(a){a=a|0;return(c[a+4>>2]|0)<20|0}function To(a){a=a|0;return(c[a+4>>2]|0)==28|0}function Tp(a){a=a|0;return c[a+8>>2]|0}function Tq(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function Tr(a,b){a=a|0;b=b|0;var d=0;d=a+160|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Ts(a,b){a=a|0;b=b|0;var d=0;d=a+32|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Tt(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Tu(a){a=a|0;if((a|0)==0){return}aDB(a);return}function Tv(a,b){a=a|0;b=b|0;var d=0;d=a+60|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Tw(a,b){a=a|0;b=b|0;var d=0;d=a+112|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Tx(a,b){a=a|0;b=b|0;var d=0;d=a;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Ty(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function Tz(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function TA(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43568]|0)==0){if((b1(43568)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b,d);d=f;c[9222]=c[d>>2];c[9223]=c[d+4>>2];c[9224]=c[d+8>>2];c[9225]=c[d+12>>2];i=e;return 36888}function TB(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function TC(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function TD(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a)|0}function TE(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43392]|0)==0){if((b1(43392)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9214]=c[d>>2];c[9215]=c[d+4>>2];c[9216]=c[d+8>>2];c[9217]=c[d+12>>2];i=e;return 36856}function TF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function TG(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function TH(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function TI(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43128]|0)==0){if((b1(43128)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9210]=c[d>>2];c[9211]=c[d+4>>2];c[9212]=c[d+8>>2];c[9213]=c[d+12>>2];i=e;return 36840}function TJ(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function TK(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function TL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function TM(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function TN(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a))}function TO(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a,b,d);return}function TP(){var b=0,d=0,e=0,f=0;while(1){b=aDx(188)|0;if((b|0)!=0){break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){e=5652;break}dC[d&63]()}if((e|0)==5652){e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}e=b;aDD(b|0,0,48);aDD(b+60|0,0,16);g[b+76>>2]=.20000000298023224;g[b+80>>2]=.20000000298023224;g[b+84>>2]=.20000000298023224;aDD(b+88|0,0,20);g[b+48>>2]=.699999988079071;g[b+52>>2]=1.0;g[b+56>>2]=.5;d=b+112|0;f=b+128|0;b=0;while(1){if((b|0)>=3){break}a[e+108+b|0]=0;g[d+(b<<2)>>2]=0.0;g[f+(b<<2)>>2]=0.0;b=b+1|0}return e|0}function TQ(b){b=b|0;var d=0,e=0,f=0,h=0;while(1){d=aDx(188)|0;if((d|0)!=0){break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){f=5667;break}dC[e&63]()}if((f|0)==5667){f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}f=d;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=d+16|0;h=b+16|0;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];h=d+32|0;e=b+32|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];g[d+48>>2]=+g[b+48>>2];g[d+52>>2]=+g[b+52>>2];g[d+56>>2]=+g[b+56>>2];e=d+60|0;h=b+60|0;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];h=d+76|0;e=b+76|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];e=d+92|0;h=b+92|0;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];h=d+112|0;e=d+128|0;d=0;while(1){if((d|0)>=3){break}a[f+108+d|0]=a[b+108+d|0]&1;g[h+(d<<2)>>2]=+g[b+112+(d<<2)>>2];g[e+(d<<2)>>2]=+g[b+128+(d<<2)>>2];d=d+1|0}return f|0}function TR(a,b){a=a|0;b=b|0;return(c[a>>2]|0)==(c[b>>2]|0)|0}function TS(a){a=a|0;return c[a>>2]|0}function TT(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function TU(a){a=a|0;return(c[a+4>>2]|0)==32|0}function TV(a){a=a|0;return a+28|0}function TW(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function TX(a){a=a|0;return c[a+4>>2]|0}function TY(a){a=a|0;var b=0;b=c[a>>2]|0;a=b+~(b<<15)|0;b=(a^a>>10)*9|0;a=b^b>>6;b=a+~(a<<11)|0;return b^b>>16|0}function TZ(a){a=a|0;return+(+g[a+224>>2])}function T_(a){a=a|0;return+(+g[a+220>>2])}function T$(a,b){a=a|0;b=b|0;c[a+212>>2]=b;return}function T0(a){a=a|0;return+(+g[a+244>>2])}function T1(a,b){a=a|0;b=+b;g[a+224>>2]=b;return}function T2(a,b){a=a|0;b=b|0;c[a+196>>2]=b;return}function T3(a,b){a=a|0;b=+b;g[a+184>>2]=b;return}function T4(a){a=a|0;return a+132|0}function T5(a){a=a|0;return(c[a+204>>2]&7|0)==0|0}function T6(a,b){a=a|0;b=+b;g[a+248>>2]=b;return}function T7(a){a=a|0;return c[a+208>>2]|0}function T8(a){a=a|0;return c[a+260>>2]|0}function T9(a,b){a=a|0;b=b|0;c[a+236>>2]=b;return}function Ua(a){a=a|0;return a+148|0}function Ub(a,b){a=a|0;b=b|0;c[a+216>>2]=b;return}function Uc(a){a=a|0;var b=0;if((c[a+204>>2]&3|0)!=0){return}b=a+216|0;if(((c[b>>2]|0)-4|0)>>>0>=2){c[b>>2]=1}g[a+220>>2]=0.0;return}function Ud(a,b){a=a|0;b=b|0;do{if(!b){if((c[a+204>>2]&3|0)==0){break}return}}while(0);b=a+216|0;if(((c[b>>2]|0)-4|0)>>>0>=2){c[b>>2]=1}g[a+220>>2]=0.0;return}function Ue(a,b){a=a|0;b=b|0;c[a+208>>2]=b;return}function Uf(a,b){a=a|0;b=+b;g[a+240>>2]=b;return}function Ug(a){a=a|0;return a+68|0}function Uh(a){a=a|0;return+(+g[a+240>>2])}function Ui(a,b){a=a|0;b=b|0;return c[(c[a+268>>2]|0)+(b<<2)>>2]|0}function Uj(a){a=a|0;return(c[a+204>>2]&1|0)!=0|0}function Uk(a){a=a|0;return c[a+192>>2]|0}function Ul(a){a=a|0;return c[a+216>>2]|0}function Um(a){a=a|0;return c[a+188>>2]|0}function Un(a){a=a|0;return+(+g[a+228>>2])}function Uo(a){a=a|0;return c[a+236>>2]|0}function Up(a,b){a=a|0;b=+b;g[a+244>>2]=b;return}function Uq(a){a=a|0;return a+4|0}function Ur(a){a=a|0;var b=0.0;b=+g[a+248>>2];return+(b*b)}function Us(a,b){a=a|0;b=b|0;c[a+192>>2]=b;return}function Ut(a){a=a|0;return+(+g[a+248>>2])}function Uu(a){a=a|0;return c[a+212>>2]|0}function Uv(a){a=a|0;var b=0;b=c[a+216>>2]|0;return((b|0)==2?0:(b|0)!=5)|0}function Uw(a){a=a|0;return c[a+232>>2]|0}function Ux(a){a=a|0;return(c[a+204>>2]&4|0)==0|0}function Uy(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a,b);return}function Uz(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43248]|0)==0){if((b1(43248)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b|0,d);d=f;c[9206]=c[d>>2];c[9207]=c[d+4>>2];c[9208]=c[d+8>>2];c[9209]=c[d+12>>2];i=e;return 36824}function UA(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 13:{d=+g[b+44>>2];break};case 0:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function UB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a|0,b,d,e);return}function UC(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function UD(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function UE(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function UF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a,b,d,e);return}function UG(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function UH(a){a=a|0;if((a|0)==0){return}aDB(a);return}function UI(a,b,d){a=a|0;b=b|0;d=d|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,d,0);return}function UJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,d,e);return}function UK(a,b){a=a|0;b=b|0;var d=0;d=a+132|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function UL(a,b){a=a|0;b=b|0;var d=0;d=a+148|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function UM(){var b=0,d=0,e=0,f=0,h=0,i=0,j=0,k=0;c[9806]=(c[9806]|0)+1;b=aDx(299)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}e=d;g[d+164>>2]=1.0;g[d+168>>2]=1.0;g[d+172>>2]=1.0;g[d+176>>2]=0.0;c[d+180>>2]=0;g[d+184>>2]=999999984306749400.0;aDD(d+188|0,0,16);c[d+204>>2]=1;c[d+208>>2]=-1;c[d+212>>2]=-1;c[d+216>>2]=1;g[d+220>>2]=0.0;g[d+224>>2]=.5;g[d+228>>2]=0.0;c[d+236>>2]=0;g[d+240>>2]=1.0;g[d+244>>2]=0.0;g[d+248>>2]=0.0;c[d+252>>2]=0;g[d+4>>2]=1.0;aDD(d+8|0,0,16);g[d+24>>2]=1.0;aDD(d+28|0,0,16);g[d+44>>2]=1.0;aDD(d+48|0,0,20);a[d+272|0]=1;c[d+268>>2]=0;c[d+260>>2]=0;c[d+264>>2]=0;c[d+232>>2]=4;c[d>>2]=21080;c[9806]=(c[9806]|0)+1;b=aDx(95)|0;if((b|0)==0){f=0;h=d+276|0;i=h;c[i>>2]=f;return e|0}j=-(b+4|0)&15;k=b+(j+4)|0;c[b+j>>2]=b;if((k|0)==0){f=0;h=d+276|0;i=h;c[i>>2]=f;return e|0}b=k;ayI(b);f=b;h=d+276|0;i=h;c[i>>2]=f;return e|0}function UN(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+68|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+84|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+100|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+116|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function UO(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a|0,b);return}function UP(a,b){a=a|0;b=b|0;dA[c[(c[a>>2]|0)+28>>2]&511](a,b,0);return}function UQ(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+28>>2]&511](a,b,d);return}function UR(a,b){a=a|0;b=b|0;var d=0;if((c[a+252>>2]|0)==0){d=1;return d|0}d=dj[c[c[a>>2]>>2]&511](a|0,b)|0;return d|0}function US(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0;f=i;i=i+128|0;h=f|0;j=f+64|0;g[h>>2]=1.0;aDD(h+4|0,0,16);g[h+20>>2]=1.0;aDD(h+24|0,0,16);g[h+40>>2]=1.0;c[h+44>>2]=0;k=h+48|0;l=b;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];g[j>>2]=1.0;aDD(j+4|0,0,16);g[j+20>>2]=1.0;aDD(j+24|0,0,16);g[j+40>>2]=1.0;c[j+44>>2]=0;l=j+48|0;k=d;c[l>>2]=c[k>>2];c[l+4>>2]=c[k+4>>2];c[l+8>>2]=c[k+8>>2];c[l+12>>2]=c[k+12>>2];k=a+260|0;if((c[k>>2]|0)<=0){i=f;return}l=a+268|0;a=e;d=0;do{b=c[(c[l>>2]|0)+(d<<2)>>2]|0;if(dj[c[(c[a>>2]|0)+8>>2]&511](e,c[b+188>>2]|0)|0){atG(h,j,b,c[b+192>>2]|0,b+4|0,e)}d=d+1|0;}while((d|0)<(c[k>>2]|0));i=f;return}function UT(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a|0)|0}function UU(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;axT(a|0,b,c,d,e,0.0);return}function UV(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;axT(a|0,b,c,d,e,f);return}function UW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+164|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];do{if(+g[b>>2]!=1.0){f=1}else{if(+g[b+4>>2]!=1.0){f=1;break}f=+g[b+8>>2]!=1.0|0}}while(0);c[a+180>>2]=f;return}function UX(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+20|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+36|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+52|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function UY(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+20>>2]&511](a|0,b,d)|0}function UZ(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function U_(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function U$(a){a=a|0;var b=0,d=0,e=0;while(1){b=aDx(8)|0;if((b|0)!=0){d=5820;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==5820){c[b>>2]=a;return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function U0(a){a=a|0;var b=0;if((c[a+232>>2]|0)==4){b=a}else{b=0}return b|0}function U1(a,b){a=a|0;b=b|0;var d=0;d=a+216|0;if(((c[d>>2]|0)-4|0)>>>0<2){return}c[d>>2]=b;return}function U2(a){a=a|0;return c[a+200>>2]|0}function U3(a){a=a|0;return+(+g[a+184>>2])}function U4(a){a=a|0;return c[a+204>>2]|0}function U5(a){a=a|0;return c[a+276>>2]|0}function U6(a){a=a|0;return a+164|0}function U7(a,b){a=a|0;b=+b;g[a+220>>2]=b;return}function U8(a){a=a|0;return c[a+196>>2]|0}function U9(a,b){a=a|0;b=b|0;c[a+204>>2]=b;return}function Va(a){a=a|0;return(c[a+204>>2]&3|0)!=0|0}function Vb(a,b){a=a|0;b=+b;g[a+228>>2]=b;return}function Vc(a){a=a|0;return(c[a+180>>2]|0)!=0|0}function Vd(a,b){a=a|0;b=b|0;c[a+188>>2]=b;return}function Ve(a){a=a|0;return(c[a+204>>2]&2|0)!=0|0}function Vf(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Vg(a){a=a|0;return(c[a+4>>2]|0)==31|0}function Vh(a){a=a|0;return(c[a+4>>2]|0)<7|0}function Vi(a){a=a|0;return a+48|0}function Vj(a){a=a|0;return(c[a+4>>2]|0)<20|0}function Vk(a){a=a|0;return(c[a+4>>2]|0)==28|0}function Vl(a){a=a|0;return c[a+8>>2]|0}function Vm(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function Vn(a){a=a|0;return+(+g[a+64>>2])}function Vo(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function Vp(a){a=a|0;return(c[a+4>>2]|0)==32|0}function Vq(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function Vr(a){a=a|0;return c[a+4>>2]|0}function Vs(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Vt(a){a=a|0;return(c[a+4>>2]|0)==31|0}function Vu(a){a=a|0;return(c[a+4>>2]|0)<7|0}function Vv(a){a=a|0;return(c[a+4>>2]|0)<20|0}function Vw(a){a=a|0;return(c[a+4>>2]|0)==28|0}function Vx(a){a=a|0;return c[a+8>>2]|0}function Vy(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function Vz(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function VA(a){a=a|0;return(c[a+4>>2]|0)==32|0}function VB(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function VC(a){a=a|0;return c[a+4>>2]|0}function VD(a){a=a|0;return c[a+28>>2]|0}function VE(a){a=a|0;return c[a+12>>2]|0}function VF(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function VG(b,c){b=b|0;c=c|0;a[b+20|0]=c&1;return}function VH(a){a=a|0;return a+40|0}function VI(a,b){a=a|0;b=b|0;return+(+g[a+1248+(b<<2)>>2])}function VJ(a){a=a|0;return a+104|0}function VK(a){a=a|0;return a+1056|0}function VL(a){a=a|0;return c[a+12>>2]|0}function VM(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+8>>2]&511](a,b)|0}function VN(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function VO(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function VP(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function VQ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+60>>2]&1023](a,b,d,e);return}function VR(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function VS(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function VT(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function VU(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function VV(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function VW(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function VX(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function VY(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function VZ(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function V_(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function V$(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function V0(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function V1(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+64>>2]&2047](a,b);return}function V2(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+60>>2]&2047](a,b);return}function V3(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+8>>2]&511](a|0,b,d)|0}function V4(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+16>>2]&511](a|0,b,d);return}function V5(a){a=a|0;return cA[c[(c[a>>2]|0)+56>>2]&4095](a)|0}function V6(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function V7(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function V8(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+40>>2]&511](a,b,d);return}function V9(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+32>>2]&511](a,b,d);return}function Wa(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function Wb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+12>>2]&127](a|0,b,d,e)|0}function Wc(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+44>>2]&2047](a,b);return}function Wd(a){a=a|0;return cA[c[(c[a>>2]|0)+20>>2]&4095](a)|0}function We(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+48>>2]&511](a,b,d);return}function Wf(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function Wg(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function Wh(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function Wi(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function Wj(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function Wk(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function Wl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function Wm(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a,b))}function Wn(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a))}function Wo(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a,b);return}function Wp(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a,b,c,d,e,f,g);return}function Wq(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a,b,f);i=e;return}function Wr(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a))}function Ws(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a,b);return}function Wt(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function Wu(a,b,d){a=a|0;b=b|0;d=+d;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,-1);return}function Wv(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,e);return}function Ww(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;apb(a,b,c,d,e,f,g,h);return}function Wx(a,b){a=a|0;b=+b;var d=0,e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0;while(1){d=aDx(84)|0;if((d|0)!=0){e=5939;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){break}dC[f&63]()}if((e|0)==5939){e=d+4|0;c[e>>2]=35;c[d+8>>2]=0;g[d+12>>2]=0.0;c[d>>2]=22976;h=+g[a>>2];i=+g[a+4>>2];j=+g[a+8>>2];k=1.0/+Q(+(h*h+i*i+j*j));g[d+48>>2]=h*k;g[d+52>>2]=i*k;g[d+56>>2]=j*k;g[d+60>>2]=0.0;g[d+64>>2]=b;aDD(d+68|0,0,16);c[e>>2]=28;return d|0}d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}function Wy(a,b){a=a|0;b=+b;return}function Wz(a){a=a|0;return c[a+24>>2]|0}function WA(a){a=a|0;return+(+g[a+16>>2])}function WB(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=3){break}g[b+(c<<2)>>2]=+g[a+860+(c<<6)>>2];c=c+1|0}return}function WC(a){a=a|0;return+(+g[a+32>>2])}function WD(b){b=b|0;return(a[b+20|0]&1)!=0|0}function WE(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function WF(a){a=a|0;return c[a+4>>2]|0}function WG(b,c){b=b|0;c=c|0;a[b+21|0]=c&1;return}function WH(b,c){b=b|0;c=c|0;a[b+1293|0]=c&1;return}function WI(b){b=b|0;return(a[b+21|0]&1)!=0|0}function WJ(a){a=a|0;return c[a+4>>2]|0}function WK(a,b){a=a|0;b=b|0;return a+860+(b<<6)|0}function WL(b,d){b=b|0;d=d|0;var e=0;e=d|0;if((a[b+1300|0]&1)==0){c[e>>2]=6;c[d+4>>2]=0;return}else{c[e>>2]=0;c[d+4>>2]=0;return}}function WM(a){a=a|0;return+(+g[a+36>>2])}function WN(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function WO(a,b){a=a|0;b=b|0;var c=0,d=0;if((b|0)<3){c=+g[a+688+(b<<2)>>2]>=+g[a+672+(b<<2)>>2];return c|0}d=b-3|0;if(+g[a+860+(d<<6)>>2]>+g[a+860+(d<<6)+4>>2]){c=0;return c|0}c=1;return c|0}function WP(b){b=b|0;return(a[b+1293|0]&1)!=0|0}function WQ(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function WR(a){a=a|0;return a+1120|0}function WS(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function WT(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function WU(b){b=b|0;return(a[b+1300|0]&1)!=0|0}function WV(a){a=a|0;return+(+g[a+32>>2])}function WW(b,c){b=b|0;c=c|0;a[b+1300|0]=c&1;return}function WX(a){a=a|0;return a+672|0}function WY(a,b){a=a|0;b=b|0;return+(+g[a+1184+(b<<2)>>2])}function WZ(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=3){break}g[b+(c<<2)>>2]=+g[a+860+(c<<6)+4>>2];c=c+1|0}return}function W_(a){a=a|0;return c[a+4>>2]|0}function W$(a){a=a|0;return c[a+8>>2]|0}function W0(a){a=a|0;return c[a+12>>2]|0}function W1(a,b){a=a|0;b=b|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,-1))}function W2(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,d))}function W3(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function W4(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function W5(a){a=a|0;ct[c[(c[a>>2]|0)+44>>2]&2047](a);return}function W6(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function W7(b,c){b=b|0;c=c|0;do{if((a[43848]|0)==0){if((b1(43848)|0)==0){break}}}while(0);aDG(36808,b+1200+(c<<4)|0,16);return 36808}function W8(a,b){a=a|0;b=b|0;var d=0;d=b;b=a+688|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];return}function W9(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+40>>2]&511](a,b,d)|0}function Xa(a,b){a=a|0;b=b|0;var d=0;d=a+672|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Xb(a,b){a=a|0;b=b|0;var d=0;d=b;b=a+672|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];return}function Xc(a){a=a|0;aoZ(a,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);return}function Xd(a,b,c){a=a|0;b=b|0;c=c|0;aoZ(a,b,c);return}function Xe(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ao7(a,b,c,d,e,f,g,h,i,j,k,l,0)|0}function Xf(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ao7(a,b,c,d,e,f,g,h,i,j,k,l,m)|0}function Xg(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;nS(a,b,c,d);return}function Xh(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function Xi(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;cy[c[(c[a>>2]|0)+12>>2]&127](a|0,b,d,e,f);return}function Xj(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=0;while(1){if((c|0)>=3){break}d=+ck(+(+g[b+(c<<2)>>2]),6.2831854820251465);do{if(d<-3.1415927410125732){e=d+6.2831854820251465}else{if(d<=3.1415927410125732){e=d;break}e=d-6.2831854820251465}}while(0);g[a+860+(c<<6)>>2]=e;c=c+1|0}return}function Xk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+24>>2]&127](a|0,b,d,e);return}function Xl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+40|0;f=b;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+56|0;e=b+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+72|0;f=b+32|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+88|0;e=b+48|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+104|0;f=d;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+120|0;e=d+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+136|0;f=d+32|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+152|0;e=d+48|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];ct[c[(c[a>>2]|0)+8>>2]&2047](a);aoZ(a,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);return}function Xm(a,b){a=a|0;b=b|0;var d=0;d=a+688|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Xn(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=0;while(1){if((c|0)>=3){break}d=+ck(+(+g[b+(c<<2)>>2]),6.2831854820251465);do{if(d<-3.1415927410125732){e=d+6.2831854820251465}else{if(d<=3.1415927410125732){e=d;break}e=d-6.2831854820251465}}while(0);g[a+860+(c<<6)+4>>2]=e;c=c+1|0}return}function Xo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0;f=i;i=i+112|0;h=f|0;j=f+48|0;k=e&1;while(1){l=aDx(1304)|0;if((l|0)!=0){break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){m=6041;break}dC[e&63]()}if((m|0)==6041){m=cd(4)|0;c[m>>2]=19096;bF(m|0,34368,676);return 0}m=l;e=j;aq2();c[l+4>>2]=6;c[l+8>>2]=-1;c[l+12>>2]=-1;g[l+16>>2]=3.4028234663852886e+38;a[l+20|0]=1;a[l+21|0]=0;n=l+24|0;c[n>>2]=41520;o=l+28|0;c[o>>2]=b;g[l+32>>2]=0.0;g[l+36>>2]=.30000001192092896;c[l>>2]=21400;p=l+104|0;q=d;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];q=l+120|0;r=d+16|0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];r=l+136|0;q=d+32|0;c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];q=l+152|0;r=d+48|0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];r=l+40|0;aDD(l+672|0,0,48);aDD(l+732|0,0,16);g[l+748>>2]=.20000000298023224;g[l+752>>2]=.20000000298023224;g[l+756>>2]=.20000000298023224;aDD(l+760|0,0,20);g[l+720>>2]=.699999988079071;g[l+724>>2]=1.0;g[l+728>>2]=.5;a[l+780|0]=0;g[l+784>>2]=0.0;g[l+800>>2]=0.0;a[l+781|0]=0;g[l+788>>2]=0.0;g[l+804>>2]=0.0;a[l+782|0]=0;g[l+792>>2]=0.0;g[l+808>>2]=0.0;g[l+920>>2]=0.0;g[l+868>>2]=0.0;g[l+872>>2]=.10000000149011612;g[l+876>>2]=300.0;g[l+860>>2]=1.0;g[l+864>>2]=-1.0;g[l+888>>2]=0.0;g[l+892>>2]=.20000000298023224;g[l+896>>2]=0.0;g[l+900>>2]=0.0;g[l+880>>2]=1.0;g[l+884>>2]=.5;c[l+916>>2]=0;g[l+908>>2]=0.0;a[l+904|0]=0;g[l+984>>2]=0.0;g[l+932>>2]=0.0;g[l+936>>2]=.10000000149011612;g[l+940>>2]=300.0;g[l+924>>2]=1.0;g[l+928>>2]=-1.0;g[l+952>>2]=0.0;g[l+956>>2]=.20000000298023224;g[l+960>>2]=0.0;g[l+964>>2]=0.0;g[l+944>>2]=1.0;g[l+948>>2]=.5;c[l+980>>2]=0;g[l+972>>2]=0.0;a[l+968|0]=0;g[l+1048>>2]=0.0;g[l+996>>2]=0.0;g[l+1e3>>2]=.10000000149011612;g[l+1004>>2]=300.0;g[l+988>>2]=1.0;g[l+992>>2]=-1.0;g[l+1016>>2]=0.0;g[l+1020>>2]=.20000000298023224;g[l+1024>>2]=0.0;g[l+1028>>2]=0.0;g[l+1008>>2]=1.0;g[l+1012>>2]=.5;c[l+1044>>2]=0;g[l+1036>>2]=0.0;a[l+1032|0]=0;a[l+1292|0]=k;a[l+1293|0]=1;c[l+1296>>2]=0;a[l+1300|0]=0;k=b+4|0;q=h;anx(h,k|0,p);s=+g[l+152>>2];t=+g[l+156>>2];u=+g[l+160>>2];v=+g[k>>2]*s+ +g[b+8>>2]*t+ +g[b+12>>2]*u+ +g[b+52>>2];w=+g[b+20>>2]*s+ +g[b+24>>2]*t+ +g[b+28>>2]*u+ +g[b+56>>2];x=+g[b+36>>2]*s+ +g[b+40>>2]*t+ +g[b+44>>2]*u+ +g[b+60>>2];b=j+48|0;k=j|0;do{k=k+16|0;}while((k|0)!=(b|0));c[e>>2]=c[q>>2];c[e+4>>2]=c[q+4>>2];c[e+8>>2]=c[q+8>>2];c[e+12>>2]=c[q+12>>2];q=j+16|0;b=h+16|0;c[q>>2]=c[b>>2];c[q+4>>2]=c[b+4>>2];c[q+8>>2]=c[b+8>>2];c[q+12>>2]=c[b+12>>2];b=j+32|0;k=h+32|0;c[b>>2]=c[k>>2];c[b+4>>2]=c[k+4>>2];c[b+8>>2]=c[k+8>>2];c[b+12>>2]=c[k+12>>2];g[j+48>>2]=v;g[j+52>>2]=w;g[j+56>>2]=x;g[j+60>>2]=0.0;c[r>>2]=c[e>>2];c[r+4>>2]=c[e+4>>2];c[r+8>>2]=c[e+8>>2];c[r+12>>2]=c[e+12>>2];e=l+56|0;c[e>>2]=c[q>>2];c[e+4>>2]=c[q+4>>2];c[e+8>>2]=c[q+8>>2];c[e+12>>2]=c[q+12>>2];q=l+72|0;c[q>>2]=c[b>>2];c[q+4>>2]=c[b+4>>2];c[q+8>>2]=c[b+8>>2];c[q+12>>2]=c[b+12>>2];b=l+88|0;l=j+48|0;c[b>>2]=c[l>>2];c[b+4>>2]=c[l+4>>2];c[b+8>>2]=c[l+8>>2];c[b+12>>2]=c[l+12>>2];aoZ(m,(c[n>>2]|0)+4|0,(c[o>>2]|0)+4|0);i=f;return m|0}function Xp(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;while(1){g=aDx(1304)|0;if((g|0)!=0){h=6060;break}i=(C=c[10744]|0,c[10744]=C+0,C);if((i|0)==0){break}dC[i&63]()}if((h|0)==6060){h=g;aoY(h,a,b,d,e,f);return h|0}h=cd(4)|0;c[h>>2]=19096;bF(h|0,34368,676);return 0}function Xq(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function Xr(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[b>>2]|0;b=c[a>>2]|0;e=c[d+4>>2]|0;c[b>>2]=c[d>>2];c[b+4>>2]=e;return a|0}function Xs(a,b){a=a|0;b=b|0;g[a>>2]=+g[b>>2];g[a+4>>2]=+g[b+16>>2];g[a+8>>2]=+g[b+32>>2];g[a+12>>2]=0.0;g[a+16>>2]=+g[b+4>>2];g[a+20>>2]=+g[b+20>>2];g[a+24>>2]=+g[b+36>>2];g[a+28>>2]=0.0;g[a+32>>2]=+g[b+8>>2];g[a+36>>2]=+g[b+24>>2];g[a+40>>2]=+g[b+40>>2];g[a+44>>2]=0.0;g[a+48>>2]=+g[b+48>>2];g[a+52>>2]=+g[b+52>>2];g[a+56>>2]=+g[b+56>>2];g[a+60>>2]=0.0;return}function Xt(a){a=a|0;return a+48|0}function Xu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=0;while(1){if((c|0)<3){d=0}else{e=0;break}while(1){if((d|0)>=4){break}g[a+(c<<4)+(d<<2)>>2]=+h[b+(c<<5)+(d<<3)>>3];d=d+1|0}c=c+1|0}while(1){if((e|0)>=4){break}g[a+48+(e<<2)>>2]=+h[b+96+(e<<3)>>3];e=e+1|0}return}function Xv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=0;while(1){if((c|0)<3){d=0}else{e=0;break}while(1){if((d|0)>=4){break}g[a+(c<<4)+(d<<2)>>2]=+g[b+(c<<4)+(d<<2)>>2];d=d+1|0}c=c+1|0}while(1){if((e|0)>=4){break}g[a+48+(e<<2)>>2]=+g[b+48+(e<<2)>>2];e=e+1|0}return}function Xw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;e=+g[b>>2];f=+g[b+4>>2];h=+g[b+8>>2];i=1.0/+Q(+(e*e+f*f+h*h));j=e*i;e=f*i;f=h*i;i=+g[d>>2];h=+g[d+4>>2];k=+g[d+8>>2];l=1.0/+Q(+(i*i+h*h+k*k));m=i*l;i=h*l;h=k*l;l=f*i-e*h;k=j*h-f*m;n=e*m-j*i;d=c[a+24>>2]|0;o=+g[d+4>>2];p=+g[d+20>>2];q=+g[d+36>>2];r=+g[d+8>>2];s=+g[d+24>>2];t=+g[d+40>>2];u=+g[d+12>>2];v=+g[d+28>>2];w=+g[d+44>>2];x=-0.0- +g[d+52>>2];y=-0.0- +g[d+56>>2];z=-0.0- +g[d+60>>2];g[a+40>>2]=o*l+k*p+n*q;g[a+44>>2]=m*o+i*p+h*q;g[a+48>>2]=j*o+e*p+f*q;g[a+52>>2]=0.0;g[a+56>>2]=l*r+k*s+n*t;g[a+60>>2]=m*r+i*s+h*t;g[a+64>>2]=j*r+e*s+f*t;g[a+68>>2]=0.0;g[a+72>>2]=l*u+k*v+n*w;g[a+76>>2]=m*u+i*v+h*w;g[a+80>>2]=j*u+e*v+f*w;g[a+84>>2]=0.0;g[a+88>>2]=o*0.0+p*0.0+q*0.0+(o*x+p*y+q*z);g[a+92>>2]=r*0.0+s*0.0+t*0.0+(r*x+s*y+t*z);g[a+96>>2]=u*0.0+v*0.0+w*0.0+(u*x+v*y+w*z);g[a+100>>2]=0.0;b=c[a+28>>2]|0;z=+g[b+4>>2];w=+g[b+20>>2];y=+g[b+36>>2];v=+g[b+8>>2];x=+g[b+24>>2];u=+g[b+40>>2];t=+g[b+12>>2];s=+g[b+28>>2];r=+g[b+44>>2];q=-0.0- +g[b+52>>2];p=-0.0- +g[b+56>>2];o=-0.0- +g[b+60>>2];g[a+104>>2]=l*z+k*w+n*y;g[a+108>>2]=m*z+i*w+h*y;g[a+112>>2]=j*z+e*w+f*y;g[a+116>>2]=0.0;g[a+120>>2]=l*v+k*x+n*u;g[a+124>>2]=m*v+i*x+h*u;g[a+128>>2]=j*v+e*x+f*u;g[a+132>>2]=0.0;g[a+136>>2]=l*t+k*s+n*r;g[a+140>>2]=m*t+i*s+h*r;g[a+144>>2]=j*t+e*s+f*r;g[a+148>>2]=0.0;g[a+152>>2]=z*0.0+w*0.0+y*0.0+(z*q+w*p+y*o);g[a+156>>2]=v*0.0+x*0.0+u*0.0+(v*q+x*p+u*o);g[a+160>>2]=t*0.0+s*0.0+r*0.0+(t*q+s*p+r*o);g[a+164>>2]=0.0;aoZ(a,d+4|0,b+4|0);return}function Xx(a,b){a=a|0;b=b|0;return ao$(a,b)|0}function Xy(a){a=a|0;b3(c[a>>2]|0,0)|0;return}function Xz(a){a=a|0;var b=0;if((a|0)==0){return}b=c[a>>2]|0;if((b|0)!=0){aDB(b)}aDB(a);return}function XA(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+8|0;d=b|0;b3(d|0,0)|0;e=c[a>>2]|0;i=b;return(((c[d+4>>2]|0)-(c[e+4>>2]|0)|0)/1e3|0)+(((c[d>>2]|0)-(c[e>>2]|0)|0)*1e3|0)|0}function XB(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+8|0;d=b|0;b3(d|0,0)|0;e=c[a>>2]|0;i=b;return(c[d+4>>2]|0)-(c[e+4>>2]|0)+(((c[d>>2]|0)-(c[e>>2]|0)|0)*1e6|0)|0}function XC(a,b){a=a|0;b=b|0;var d=0,e=0;d=a;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+16|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+32|0;a=b+32|0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function XD(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d|0;do{if((a[43944]|0)==0){if((b1(43944)|0)==0){break}}}while(0);ec(b|0,e);b=e;c[9198]=c[b>>2];c[9199]=c[b+4>>2];c[9200]=c[b+8>>2];c[9201]=c[b+12>>2];i=d;return 36792}function XE(b){b=b|0;var d=0,e=0,f=0,h=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0;d=i;i=i+112|0;e=d|0;f=d+48|0;do{if((a[44048]|0)==0){if((b1(44048)|0)==0){break}else{h=36728}do{h=h+16|0;}while((h|0)!=36776)}}while(0);h=e;d$(e,b|0,b+16|0,b+32|0,b+4|0,b+20|0,b+36|0,b+8|0,b+24|0,b+40|0);j=-0.0- +g[b+48>>2];k=-0.0- +g[b+52>>2];l=-0.0- +g[b+56>>2];m=+g[e>>2]*j+ +g[e+4>>2]*k+ +g[e+8>>2]*l;n=+g[e+16>>2]*j+ +g[e+20>>2]*k+ +g[e+24>>2]*l;o=+g[e+32>>2]*j+ +g[e+36>>2]*k+ +g[e+40>>2]*l;b=f+48|0;p=f|0;do{p=p+16|0;}while((p|0)!=(b|0));b=f;c[b>>2]=c[h>>2];c[b+4>>2]=c[h+4>>2];c[b+8>>2]=c[h+8>>2];c[b+12>>2]=c[h+12>>2];h=f+16|0;p=e+16|0;c[h>>2]=c[p>>2];c[h+4>>2]=c[p+4>>2];c[h+8>>2]=c[p+8>>2];c[h+12>>2]=c[p+12>>2];p=f+32|0;h=e+32|0;c[p>>2]=c[h>>2];c[p+4>>2]=c[h+4>>2];c[p+8>>2]=c[h+8>>2];c[p+12>>2]=c[h+12>>2];g[f+48>>2]=m;g[f+52>>2]=n;g[f+56>>2]=o;g[f+60>>2]=0.0;c[9182]=c[b>>2];c[9183]=c[b+4>>2];c[9184]=c[b+8>>2];c[9185]=c[b+12>>2];b=f+16|0;c[9186]=c[b>>2];c[36748>>2]=c[b+4>>2];c[36752>>2]=c[b+8>>2];c[36756>>2]=c[b+12>>2];b=f+32|0;c[9190]=c[b>>2];c[36764>>2]=c[b+4>>2];c[36768>>2]=c[b+8>>2];c[36772>>2]=c[b+12>>2];b=f+48|0;c[9194]=c[b>>2];c[36780>>2]=c[b+4>>2];c[36784>>2]=c[b+8>>2];c[36788>>2]=c[b+12>>2];i=d;return 36728}function XF(){B1();return 42752}function XG(){var a=0,b=0,d=0,e=0,f=0;while(1){a=aDx(4)|0;if((a|0)!=0){break}b=(C=c[10744]|0,c[10744]=C+0,C);if((b|0)==0){d=6114;break}dC[b&63]()}if((d|0)==6114){b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}b=a;while(1){e=aDx(8)|0;if((e|0)!=0){d=6128;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){d=6126;break}dC[f&63]()}if((d|0)==6126){f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}else if((d|0)==6128){c[a>>2]=e;b3(e|0,0)|0;return b|0}return 0}function XH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;while(1){b=aDx(4)|0;if((b|0)!=0){break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){e=6140;break}dC[d&63]()}if((e|0)==6140){d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}d=b;while(1){f=aDx(8)|0;if((f|0)!=0){e=6154;break}g=(C=c[10744]|0,c[10744]=C+0,C);if((g|0)==0){break}dC[g&63]()}if((e|0)==6154){c[b>>2]=f;b=c[a>>2]|0;a=f;f=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=f;return d|0}d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}function XI(a,b){a=a|0;b=b|0;g[b>>2]=+g[a>>2];g[b+4>>2]=+g[a+16>>2];g[b+8>>2]=+g[a+32>>2];g[b+12>>2]=0.0;g[b+16>>2]=+g[a+4>>2];g[b+20>>2]=+g[a+20>>2];g[b+24>>2]=+g[a+36>>2];g[b+28>>2]=0.0;g[b+32>>2]=+g[a+8>>2];g[b+36>>2]=+g[a+24>>2];g[b+40>>2]=+g[a+40>>2];g[b+44>>2]=0.0;g[b+48>>2]=+g[a+48>>2];g[b+52>>2]=+g[a+52>>2];g[b+56>>2]=+g[a+56>>2];g[b+60>>2]=1.0;return}function XJ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=0;while(1){if((c|0)<3){d=0}else{e=0;break}while(1){if((d|0)>=4){break}g[b+(c<<4)+(d<<2)>>2]=+g[a+(c<<4)+(d<<2)>>2];d=d+1|0}c=c+1|0}while(1){if((e|0)>=4){break}g[b+48+(e<<2)>>2]=+g[a+48+(e<<2)>>2];e=e+1|0}return}function XK(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=0;while(1){if((c|0)<3){d=0}else{e=0;break}while(1){if((d|0)>=4){break}g[a+(c<<4)+(d<<2)>>2]=+g[b+(c<<4)+(d<<2)>>2];d=d+1|0}c=c+1|0}while(1){if((e|0)>=4){break}g[a+48+(e<<2)>>2]=+g[b+48+(e<<2)>>2];e=e+1|0}return}function XL(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=0;while(1){if((c|0)<3){d=0}else{e=0;break}while(1){if((d|0)>=4){break}g[b+(c<<4)+(d<<2)>>2]=+g[a+(c<<4)+(d<<2)>>2];d=d+1|0}c=c+1|0}while(1){if((e|0)>=4){break}g[b+48+(e<<2)>>2]=+g[a+48+(e<<2)>>2];e=e+1|0}return}function XM(a){a=a|0;return a|0}function XN(a){a=a|0;return+(+g[a+104>>2])}function XO(b){b=b|0;return(a[b+116|0]&1)!=0|0}function XP(a,b){a=a|0;b=+b;g[a>>2]=b;return}function XQ(b,c){b=b|0;c=c|0;a[b+116|0]=c&1;return}function XR(a,b){a=a|0;b=+b;g[a+112>>2]=b;return}function XS(a,b){a=a|0;b=+b;g[a+96>>2]=b;return}function XT(a){a=a|0;return+(+g[a+108>>2])}function XU(a,b){a=a|0;b=+b;g[a+100>>2]=b;return}function XV(a){a=a|0;return+(+g[a+92>>2])}function XW(a){a=a|0;return+(+g[a+96>>2])}function XX(a){a=a|0;return+(+g[a>>2])}function XY(a,b){a=a|0;b=+b;g[a+92>>2]=b;return}function XZ(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0;e=i;i=i+112|0;f=e|0;h=e+48|0;do{if((a[43936]|0)==0){if((b1(43936)|0)==0){break}else{j=36664}do{j=j+16|0;}while((j|0)!=36712)}}while(0);j=f;k=+g[d+48>>2]- +g[b+48>>2];l=+g[d+52>>2]- +g[b+52>>2];m=+g[d+56>>2]- +g[b+56>>2];ea(f,b|0,d|0);n=+g[b>>2]*k+ +g[b+16>>2]*l+ +g[b+32>>2]*m;o=+g[b+4>>2]*k+ +g[b+20>>2]*l+ +g[b+36>>2]*m;p=+g[b+8>>2]*k+ +g[b+24>>2]*l+ +g[b+40>>2]*m;b=h+48|0;d=h|0;do{d=d+16|0;}while((d|0)!=(b|0));b=h;c[b>>2]=c[j>>2];c[b+4>>2]=c[j+4>>2];c[b+8>>2]=c[j+8>>2];c[b+12>>2]=c[j+12>>2];j=h+16|0;d=f+16|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];d=h+32|0;j=f+32|0;c[d>>2]=c[j>>2];c[d+4>>2]=c[j+4>>2];c[d+8>>2]=c[j+8>>2];c[d+12>>2]=c[j+12>>2];g[h+48>>2]=n;g[h+52>>2]=o;g[h+56>>2]=p;g[h+60>>2]=0.0;c[9166]=c[b>>2];c[9167]=c[b+4>>2];c[9168]=c[b+8>>2];c[9169]=c[b+12>>2];b=h+16|0;c[9170]=c[b>>2];c[36684>>2]=c[b+4>>2];c[36688>>2]=c[b+8>>2];c[36692>>2]=c[b+12>>2];b=h+32|0;c[9174]=c[b>>2];c[36700>>2]=c[b+4>>2];c[36704>>2]=c[b+8>>2];c[36708>>2]=c[b+12>>2];b=h+48|0;c[9178]=c[b>>2];c[36716>>2]=c[b+4>>2];c[36720>>2]=c[b+8>>2];c[36724>>2]=c[b+12>>2];i=e;return 36664}function X_(b,c){b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0;do{if((a[44088]|0)==0){if((b1(44088)|0)==0){break}}}while(0);d=+g[c>>2];e=+g[c+4>>2];f=+g[c+8>>2];h=+g[b+16>>2]*d+ +g[b+20>>2]*e+ +g[b+24>>2]*f+ +g[b+52>>2];i=+g[b+32>>2]*d+ +g[b+36>>2]*e+ +g[b+40>>2]*f+ +g[b+56>>2];g[9162]=+g[b>>2]*d+ +g[b+4>>2]*e+ +g[b+8>>2]*f+ +g[b+48>>2];g[9163]=h;g[9164]=i;g[9165]=0.0;return 36648}function X$(a,b){a=a|0;b=b|0;em(a|0,b);return}function X0(a){a=a|0;X1(a);return}function X1(a){a=a|0;g[a>>2]=1.0;aDD(a+4|0,0,16);g[a+20>>2]=1.0;aDD(a+24|0,0,16);g[a+40>>2]=1.0;g[a+44>>2]=0.0;aDD(a+48|0,0,16);return}function X2(a,b){a=a|0;b=b|0;var d=0,e=0;d=a;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+16|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+32|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+48|0;d=b+48|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];return a|0}function X3(b,c){b=b|0;c=c|0;var d=0,e=0,f=0.0,h=0.0,j=0.0,k=0.0,l=0.0;d=i;i=i+48|0;e=d|0;do{if((a[44e3]|0)==0){if((b1(44e3)|0)==0){break}}}while(0);f=+g[c>>2]- +g[b+48>>2];h=+g[c+4>>2]- +g[b+52>>2];j=+g[c+8>>2]- +g[b+56>>2];d$(e,b|0,b+16|0,b+32|0,b+4|0,b+20|0,b+36|0,b+8|0,b+24|0,b+40|0);k=+g[e+16>>2]*f+ +g[e+20>>2]*h+ +g[e+24>>2]*j;l=+g[e+32>>2]*f+ +g[e+36>>2]*h+ +g[e+40>>2]*j;g[9158]=+g[e>>2]*f+ +g[e+4>>2]*h+ +g[e+8>>2]*j;g[9159]=k;g[9160]=l;g[9161]=0.0;i=d;return 36632}function X4(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;e=i;i=i+48|0;f=e|0;h=f;anx(f,b|0,d|0);j=a;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];h=a+16|0;j=f+16|0;c[h>>2]=c[j>>2];c[h+4>>2]=c[j+4>>2];c[h+8>>2]=c[j+8>>2];c[h+12>>2]=c[j+12>>2];j=a+32|0;h=f+32|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];k=+g[d+48>>2];l=+g[d+52>>2];m=+g[d+56>>2];n=+g[b+16>>2]*k+ +g[b+20>>2]*l+ +g[b+24>>2]*m+ +g[b+52>>2];o=+g[b+32>>2]*k+ +g[b+36>>2]*l+ +g[b+40>>2]*m+ +g[b+56>>2];g[a+48>>2]=+g[b>>2]*k+ +g[b+4>>2]*l+ +g[b+8>>2]*m+ +g[b+48>>2];g[a+52>>2]=n;g[a+56>>2]=o;g[a+60>>2]=0.0;i=e;return}function X5(a){a=a|0;if((a|0)==0){return}aDB(a);return}function X6(a,b){a=a|0;b=b|0;var d=0;d=a+48|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function X7(){var a=0,b=0,d=0,e=0;while(1){a=aDx(64)|0;if((a|0)!=0){break}b=(C=c[10744]|0,c[10744]=C+0,C);if((b|0)==0){d=6229;break}dC[b&63]()}if((d|0)==6229){d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}d=a;b=a+48|0;e=a;do{e=e+16|0;}while((e|0)!=(b|0));return d|0}function X8(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;while(1){b=aDx(64)|0;if((b|0)!=0){break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){e=6243;break}dC[d&63]()}if((e|0)==6243){e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}e=b;d=b+48|0;f=d;g=b;do{g=g+16|0;}while((g|0)!=(f|0));f=a;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=b+16|0;g=a+16|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=b+32|0;b=a+32|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];b=a+48|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];return e|0}function X9(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;while(1){d=aDx(64)|0;if((d|0)!=0){break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){f=6257;break}dC[e&63]()}if((f|0)==6257){f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}f=d;e=d;g=d+48|0;h=g;i=d;do{i=i+16|0;}while((i|0)!=(h|0));em(e,a);a=b;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];return f|0}function Ya(b,d,e){b=+b;d=d|0;e=e|0;var f=0,h=0,i=0,j=0;while(1){f=aDx(136)|0;if((f|0)!=0){break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){i=6271;break}dC[h&63]()}if((i|0)==6271){i=cd(4)|0;c[i>>2]=19096;bF(i|0,34368,676);return 0}i=f;g[f>>2]=b;c[f+4>>2]=d;d=f+8|0;h=f+56|0;j=d;do{j=j+16|0;}while((j|0)!=(h|0));c[f+72>>2]=e;aDD(f+76|0,0,24);g[f+100>>2]=.5;g[f+104>>2]=0.0;g[f+108>>2]=.800000011920929;g[f+112>>2]=1.0;a[f+116|0]=0;g[f+120>>2]=.004999999888241291;g[f+124>>2]=.009999999776482582;g[f+128>>2]=.009999999776482582;g[f+132>>2]=.009999999776482582;X1(d);return i|0}function Yb(a,b){a=a|0;b=+b;g[a+104>>2]=b;return}function Yc(a){a=a|0;return+(+g[a+132>>2])}function Yd(a){a=a|0;return+(+g[a+128>>2])}function Ye(a,b){a=a|0;b=b|0;c[a+72>>2]=b;return}function Yf(a,b){a=a|0;b=+b;g[a+128>>2]=b;return}function Yg(a,b){a=a|0;b=+b;g[a+124>>2]=b;return}function Yh(a){a=a|0;return c[a+72>>2]|0}function Yi(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function Yj(a){a=a|0;return+(+g[a+100>>2])}function Yk(a,b){a=a|0;b=+b;g[a+108>>2]=b;return}function Yl(a){a=a|0;return a+8|0}function Ym(a){a=a|0;return a+76|0}function Yn(a){a=a|0;return c[a+4>>2]|0}function Yo(a){a=a|0;return+(+g[a+120>>2])}function Yp(a){a=a|0;return+(+g[a+124>>2])}function Yq(a,b){a=a|0;b=+b;g[a+120>>2]=b;return}function Yr(a){a=a|0;return+(+g[a+112>>2])}function Ys(a,b){a=a|0;b=+b;g[a+132>>2]=b;return}function Yt(a){a=a|0;return c[a+20>>2]|0}function Yu(a){a=a|0;return c[a+4>>2]|0}function Yv(a){a=a|0;return c[a>>2]|0}function Yw(a){a=a|0;return+(+g[a+8>>2])}function Yx(a){a=a|0;return c[a+28>>2]|0}function Yy(a){a=a|0;return c[a+24>>2]|0}function Yz(a){a=a|0;return+(+g[a+128>>2])}function YA(a){a=a|0;return a|0}function YB(a){a=a|0;return a+64|0}function YC(a,b){a=a|0;b=b|0;c[a+132>>2]=b;return}function YD(a){a=a|0;return c[a+132>>2]|0}function YE(a,b){a=a|0;b=+b;g[a+128>>2]=b;return}function YF(a){a=a|0;return a+32|0}function YG(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+8|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+24|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+40|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+56|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function YH(a,b){a=a|0;b=b|0;var d=0;d=a+76|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function YI(a){a=a|0;if((a|0)==0){return}aDB(a);return}function YJ(a){a=a|0;aDg(a);return}function YK(a){a=a|0;if((a|0)==0){return}aDh(a);aDB(a);return}function YL(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0;b=i;i=i+8|0;d=b|0;e=a+16|0;f=(c[e>>2]|0)-1|0;c[e>>2]=f;if((f|0)!=0){h=f;j=(h|0)==0;i=b;return j|0}if((c[a+4>>2]|0)==0){h=0;j=(h|0)==0;i=b;return j|0}b3(d|0,0)|0;f=c[10742]|0;k=a+8|0;g[k>>2]=+(((c[d+4>>2]|0)-(c[f+4>>2]|0)+(((c[d>>2]|0)-(c[f>>2]|0)|0)*1e6|0)-(c[a+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[k>>2];h=c[e>>2]|0;j=(h|0)==0;i=b;return j|0}function YM(a){a=a|0;var b=0,d=0;b=a+24|0;d=c[b>>2]|0;if((d|0)!=0){aDh(d);aDB(d)}c[b>>2]=0;b=a+28|0;a=c[b>>2]|0;if((a|0)==0){c[b>>2]=0;return}aDh(a);aDB(a);c[b>>2]=0;return}function YN(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+8|0;d=b|0;e=a+4|0;c[e>>2]=(c[e>>2]|0)+1;e=a+16|0;f=c[e>>2]|0;c[e>>2]=f+1;if((f|0)!=0){i=b;return}b3(d|0,0)|0;f=c[10742]|0;c[a+12>>2]=(c[d+4>>2]|0)-(c[f+4>>2]|0)+(((c[d>>2]|0)-(c[f>>2]|0)|0)*1e6|0);i=b;return}function YO(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+64|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+80|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+96|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+112|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function YP(a,b){a=a|0;b=b|0;var d=0,e=0;d=a;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+16|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+32|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+48|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function YQ(a){a=a|0;if((a|0)==0){return}aDB(a);return}function YR(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function YS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(95)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}f=e;asr(f,a,b,1);return f|0}function YT(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;c[9806]=(c[9806]|0)+1;e=aDx(95)|0;if((e|0)==0){f=0}else{g=-(e+4|0)&15;c[e+g>>2]=e;f=e+(g+4)|0}g=f;asr(g,a,b,d);return g|0}function YU(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;c[9806]=(c[9806]|0)+1;f=aDx(95)|0;if((f|0)==0){g=0}else{h=-(f+4|0)&15;c[f+h>>2]=f;g=f+(h+4)|0}h=g;ass(h,a,b,d,e,1);return h|0}function YV(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;c[9806]=(c[9806]|0)+1;g=aDx(95)|0;if((g|0)==0){h=0}else{i=-(g+4|0)&15;c[g+i>>2]=g;h=g+(i+4)|0}i=h;ass(i,a,b,d,e,f);return i|0}function YW(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+76>>2]&2047](a,b);return}function YX(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function YY(b,d,e,f){b=+b;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0;while(1){h=aDx(136)|0;if((h|0)!=0){break}i=(C=c[10744]|0,c[10744]=C+0,C);if((i|0)==0){j=6393;break}dC[i&63]()}if((j|0)==6393){j=cd(4)|0;c[j>>2]=19096;bF(j|0,34368,676);return 0}j=h;g[h>>2]=b;c[h+4>>2]=d;d=h+8|0;i=h+56|0;k=d;do{k=k+16|0;}while((k|0)!=(i|0));c[h+72>>2]=e;e=h+76|0;i=f;c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];g[h+92>>2]=0.0;g[h+96>>2]=0.0;g[h+100>>2]=.5;g[h+104>>2]=0.0;g[h+108>>2]=.800000011920929;g[h+112>>2]=1.0;a[h+116|0]=0;g[h+120>>2]=.004999999888241291;g[h+124>>2]=.009999999776482582;g[h+128>>2]=.009999999776482582;g[h+132>>2]=.009999999776482582;X1(d);return j|0}function YZ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=a+24|0;e=d;while(1){f=c[e>>2]|0;if((f|0)==0){break}if((c[f>>2]|0)==(b|0)){g=f;h=6414;break}else{e=f+28|0}}if((h|0)==6414){return g|0}while(1){i=aDx(32)|0;if((i|0)!=0){h=6412;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){h=6409;break}dC[e&63]()}if((h|0)==6409){e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}else if((h|0)==6412){h=i;c[i>>2]=b;aDD(i+4|0,0,16);c[i+20>>2]=a;c[i+24>>2]=0;a=i+28|0;c[a>>2]=0;aDg(h);c[a>>2]=c[d>>2];c[d>>2]=h;g=h;return g|0}return 0}function Y_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;while(1){d=aDx(32)|0;if((d|0)!=0){e=6427;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){break}dC[f&63]()}if((e|0)==6427){e=d;c[d>>2]=a;aDD(d+4|0,0,16);c[d+20>>2]=b;c[d+24>>2]=0;c[d+28>>2]=0;aDg(e);return e|0}e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}function Y$(){var a=0,b=0,d=0,e=0;while(1){a=aDx(136)|0;if((a|0)!=0){break}b=(C=c[10744]|0,c[10744]=C+0,C);if((b|0)==0){d=6436;break}dC[b&63]()}if((d|0)==6436){d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}d=a;b=a+48|0;e=a;do{e=e+16|0;}while((e|0)!=(b|0));b=a+112|0;e=a+64|0;do{e=e+16|0;}while((e|0)!=(b|0));g[a+128>>2]=999999984306749400.0;c[a+132>>2]=0;return d|0}function Y0(b){b=b|0;return(a[b+61|0]&1)!=0|0}function Y1(a){a=a|0;return c[a+48>>2]|0}function Y2(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Y3(a,b){a=a|0;b=b|0;c[a+56>>2]=b;return}function Y4(b){b=b|0;return(a[b+60|0]&1)!=0|0}function Y5(a){a=a|0;return c[a+56>>2]|0}function Y6(a){a=a|0;return(c[a+4>>2]|0)==31|0}function Y7(a){a=a|0;return(c[a+4>>2]|0)<7|0}function Y8(a){a=a|0;return c[a+52>>2]|0}function Y9(a){a=a|0;return a+16|0}function Za(a){a=a|0;return(c[a+4>>2]|0)<20|0}function Zb(a){a=a|0;return(c[a+4>>2]|0)==28|0}function Zc(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function Zd(a){a=a|0;return c[a+8>>2]|0}function Ze(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function Zf(a){a=a|0;return(c[a+4>>2]|0)==32|0}function Zg(a){a=a|0;return c[a+4>>2]|0}function Zh(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function Zi(a){a=a|0;return c[a+28>>2]|0}function Zj(a){a=a|0;return c[a+24>>2]|0}function Zk(a){a=a|0;return+(+g[a+1080>>2])}function Zl(a){a=a|0;return+(+g[a+1108>>2])}function Zm(a){a=a|0;return+(+g[a+1076>>2])}function Zn(a,b){a=a|0;b=+b;g[a+244>>2]=b;return}function Zo(b){b=b|0;return(a[b+20|0]&1)!=0|0}function Zp(b){b=b|0;return(a[b+1088|0]&1)!=0|0}function Zq(b,c){b=b|0;c=c|0;a[b+41|0]=c&1;return}function Zr(a,b){a=a|0;b=+b;g[a+224>>2]=b;return}function Zs(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43552]|0)==0){if((b1(43552)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b|0,d);d=f;c[9154]=c[d>>2];c[9155]=c[d+4>>2];c[9156]=c[d+8>>2];c[9157]=c[d+12>>2];i=e;return 36616}function Zt(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function Zu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+60>>2]&1023](a,b,d,e);return}function Zv(a,b,d){a=a|0;b=b|0;d=d|0;ayw(c[a+52>>2]|0,c[a+48>>2]|0,b,d);aBy(a|0);return}function Zw(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function Zx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0;h=i;i=i+48|0;j=h|0;k=h+16|0;l=h+32|0;m=c[b+48>>2]|0;c[l>>2]=18760;c[l+4>>2]=m;c[l+8>>2]=d;d=c[b+52>>2]|0;b=d|0;m=l|0;aDD(j|0,0,16);aDD(k|0,0,16);if((a[d+60|0]&1)==0){azp(b,m,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],j,k);i=h;return}else{azq(b,m,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],j,k,c[d+56>>2]|0);i=h;return}}function Zy(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function Zz(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function ZA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function ZB(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function ZC(b){b=b|0;var d=0,e=0,f=0,h=0,i=0;d=b+61|0;e=b+52|0;do{if((a[d]&1)!=0){f=c[e>>2]|0;ct[c[c[f>>2]>>2]&2047](f);f=c[e>>2]|0;if((f|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[f-172+168>>2]|0)}}while(0);c[9806]=(c[9806]|0)+1;f=aDx(191)|0;if((f|0)==0){h=0}else{i=-(f+4|0)&15;c[f+i>>2]=f;h=f+(i+4)|0}c[h+52>>2]=278;a[h+60|0]=0;a[h+80|0]=1;c[h+76>>2]=0;c[h+68>>2]=0;c[h+72>>2]=0;a[h+100|0]=1;c[h+96>>2]=0;c[h+88>>2]=0;c[h+92>>2]=0;a[h+120|0]=1;c[h+116>>2]=0;c[h+108>>2]=0;c[h+112>>2]=0;a[h+140|0]=1;c[h+136>>2]=0;c[h+128>>2]=0;c[h+132>>2]=0;c[h+144>>2]=0;a[h+164|0]=1;c[h+160>>2]=0;c[h+152>>2]=0;c[h+156>>2]=0;c[h+168>>2]=0;g[h+4>>2]=-3.4028234663852886e+38;g[h+8>>2]=-3.4028234663852886e+38;g[h+12>>2]=-3.4028234663852886e+38;g[h+16>>2]=0.0;g[h+20>>2]=3.4028234663852886e+38;g[h+24>>2]=3.4028234663852886e+38;g[h+28>>2]=3.4028234663852886e+38;g[h+32>>2]=0.0;c[h>>2]=25376;c[e>>2]=h;ayv(h,c[b+48>>2]|0,(a[b+60|0]&1)!=0,b+16|0,b+32|0);a[d]=1;return}function ZD(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function ZE(a){a=a|0;aBy(a|0);return}function ZF(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function ZG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0.0;e=b|0;f=b+4|0;h=b+8|0;i=d|0;j=d+4|0;k=d+8|0;ayB(c[a+52>>2]|0,c[a+48>>2]|0,+g[e>>2],+g[f>>2],+g[h>>2],+g[i>>2],+g[j>>2],+g[k>>2]);l=a+16|0;m=+g[e>>2];if(m<+g[l>>2]){g[l>>2]=m}l=a+20|0;m=+g[f>>2];if(m<+g[l>>2]){g[l>>2]=m}l=a+24|0;m=+g[h>>2];if(m<+g[l>>2]){g[l>>2]=m}l=a+28|0;m=+g[b+12>>2];if(m<+g[l>>2]){g[l>>2]=m}l=a+32|0;m=+g[i>>2];if(+g[l>>2]<m){g[l>>2]=m}l=a+36|0;m=+g[j>>2];if(+g[l>>2]<m){g[l>>2]=m}l=a+40|0;m=+g[k>>2];if(+g[l>>2]<m){g[l>>2]=m}l=a+44|0;m=+g[d+12>>2];if(+g[l>>2]>=m){return}g[l>>2]=m;return}function ZH(b,d,e,f,h,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0;k=i;i=i+16|0;l=k|0;m=c[b+48>>2]|0;c[l>>2]=18728;c[l+4>>2]=m;c[l+8>>2]=d;d=c[b+52>>2]|0;b=d|0;m=l|0;if((a[d+60|0]&1)==0){azp(b,m,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],h,j);i=k;return}else{azq(b,m,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],h,j,c[d+56>>2]|0);i=k;return}}function ZI(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43224]|0)==0){if((b1(43224)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+68>>2]&511](f,b|0,d);d=f;c[9758]=c[d>>2];c[9759]=c[d+4>>2];c[9760]=c[d+8>>2];c[9761]=c[d+12>>2];i=e;return 39032}function ZJ(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function ZK(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function ZL(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function ZM(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function ZN(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function ZO(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+72>>2]&2047](a,b);return}function ZP(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0.0,k=0.0,l=0.0;e=i;i=i+16|0;f=e|0;g[f>>2]=1.0;g[f+4>>2]=1.0;g[f+8>>2]=1.0;g[f+12>>2]=0.0;c[b+52>>2]=d;a[b+61|0]=0;d=b|0;h=cA[c[(c[b>>2]|0)+28>>2]&4095](d)|0;j=+g[h>>2]+-1.0;k=+g[h+4>>2]+-1.0;l=+g[h+8>>2]+-1.0;if(j*j+k*k+l*l<=1.1920928955078125e-7){i=e;return}aBB(d,f);i=e;return}function ZQ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0.0,i=0.0,j=0.0;c[b+52>>2]=d;a[b+61|0]=0;d=b|0;f=cA[c[(c[b>>2]|0)+28>>2]&4095](d)|0;h=+g[f>>2]- +g[e>>2];i=+g[f+4>>2]- +g[e+4>>2];j=+g[f+8>>2]- +g[e+8>>2];if(h*h+i*i+j*j<=1.1920928955078125e-7){return}aBB(d,e);return}function ZR(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+8>>2]&511](a,b,d)|0}function ZS(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a|0,b);return}function ZT(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;return+(+db[c[(c[a>>2]|0)+12>>2]&127](a|0,b,d,e,f))}function ZU(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+8>>2]&255](a|0,b,d,e,f);return}function ZV(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a|0);return}function ZW(a,b){a=a|0;b=b|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,-1))}function ZX(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,d))}function ZY(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function ZZ(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function Z_(b){b=b|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0;do{if((a[43864]|0)==0){if((b1(43864)|0)==0){break}}}while(0);d=(+g[b+176>>2]+ +g[b+180>>2])*.5;e=+g[b+944>>2]*d+ +g[b+960>>2];f=d*+g[b+948>>2]+ +g[b+964>>2];h=d*+g[b+952>>2]+ +g[b+968>>2];i=c[b+24>>2]|0;d=+g[i+4>>2];j=+g[i+20>>2];k=+g[i+36>>2];l=+g[i+8>>2];m=+g[i+24>>2];n=+g[i+40>>2];o=+g[i+12>>2];p=+g[i+28>>2];q=+g[i+44>>2];r=-0.0- +g[i+52>>2];s=-0.0- +g[i+56>>2];t=-0.0- +g[i+60>>2];g[9754]=d*r+j*s+k*t+(d*e+j*f+k*h);g[9755]=l*r+m*s+n*t+(l*e+m*f+n*h);g[9756]=o*r+p*s+q*t+(o*e+p*f+q*h);g[9757]=0.0;return 39016}function Z$(a,b){a=a|0;b=+b;g[a+216>>2]=b;return}function Z0(b){b=b|0;return(a[b+288|0]&1)!=0|0}function Z1(b){b=b|0;return(a[b+41|0]&1)!=0|0}function Z2(a){a=a|0;return+(+g[a+1112>>2])}function Z3(a,b){a=a|0;b=+b;g[a+212>>2]=b;return}function Z4(b){b=b|0;return(a[b+21|0]&1)!=0|0}function Z5(a){a=a|0;return+(+g[a+1096>>2])}function Z6(a){a=a|0;return c[a+4>>2]|0}function Z7(a,b){a=a|0;b=+b;g[a+264>>2]=b;return}function Z8(b){b=b|0;return(a[b+289|0]&1)!=0|0}function Z9(b,c){b=b|0;c=c|0;a[b+1104|0]=c&1;return}function _a(b,c){b=b|0;c=c|0;a[b+21|0]=c&1;return}function _b(a){a=a|0;return+(+g[a+1072>>2])}function _c(a){a=a|0;return a+880|0}function _d(a){a=a|0;return a+816|0}function _e(a){a=a|0;return c[a+4>>2]|0}function _f(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function _g(a,b){a=a|0;b=+b;g[a+200>>2]=b;return}function _h(a){a=a|0;return+(+g[a+188>>2])}function _i(a){a=a|0;return+(+g[a+244>>2])}function _j(a){a=a|0;return+(+g[a+256>>2])}function _k(a,b){a=a|0;b=+b;g[a+176>>2]=b;return}function _l(a){a=a|0;return+(+g[a+196>>2])}function _m(a,b){a=a|0;b=b|0;c[b>>2]=6;c[b+4>>2]=0;return}function _n(a,b){a=a|0;b=+b;g[a+228>>2]=b;return}function _o(a){a=a|0;return c[a+12>>2]|0}function _p(a,b){a=a|0;b=+b;g[a+1092>>2]=b;return}function _q(a){a=a|0;return+(+g[a+180>>2])}function _r(a,b){a=a|0;b=+b;g[a+1096>>2]=b;return}function _s(a){a=a|0;return+(+g[a+184>>2])}function _t(a){a=a|0;return+(+g[a+16>>2])}function _u(a,b){a=a|0;b=+b;g[a+192>>2]=b;return}function _v(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function _w(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function _x(a){a=a|0;return a+44|0}function _y(a){a=a|0;return a+108|0}function _z(a){a=a|0;return+(+g[a+216>>2])}function _A(a){a=a|0;return+(+g[a+228>>2])}function _B(a){a=a|0;return+(+g[a+272>>2])}function _C(a,b){a=a|0;b=+b;g[a+256>>2]=b;return}function _D(a,b){a=a|0;b=+b;g[a+240>>2]=b;return}function _E(a){a=a|0;return+(+g[a+200>>2])}function _F(a){a=a|0;return+(+g[a+36>>2])}function _G(a){a=a|0;return c[a+12>>2]|0}function _H(a){a=a|0;return+(+g[a+224>>2])}function _I(b,c){b=b|0;c=c|0;a[b+20|0]=c&1;return}function _J(b,c){b=b|0;c=c|0;a[b+1088|0]=c&1;return}function _K(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function _L(a){a=a|0;return+(+g[a+1024>>2])}function _M(a){a=a|0;return+(+g[a+232>>2])}function _N(a){a=a|0;return+(+g[a+212>>2])}function _O(a){a=a|0;return+(+g[a+32>>2])}function _P(a){a=a|0;return+(+g[a+248>>2])}function _Q(a,b){a=a|0;b=+b;g[a+260>>2]=b;return}function _R(a,b){a=a|0;b=+b;g[a+196>>2]=b;return}function _S(a,b){a=a|0;b=+b;g[a+248>>2]=b;return}function _T(b){b=b|0;do{if((a[43856]|0)==0){if((b1(43856)|0)==0){break}}}while(0);aDG(39e3,b+156|0,16);return 39e3}function _U(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;cy[c[(c[a>>2]|0)+12>>2]&127](a|0,b,d,e,f);return}function _V(a){a=a|0;aqT(a);return}function _W(a,b){a=a|0;b=+b;var c=0.0,d=0.0;c=+ck(+b,6.2831854820251465);do{if(c<-3.1415927410125732){d=c+6.2831854820251465}else{if(c<=3.1415927410125732){d=c;break}d=c-6.2831854820251465}}while(0);g[a+188>>2]=d;return}function _X(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;aqV(a,b,c,d,e,f,g,h);return}function _Y(a,b,c){a=a|0;b=b|0;c=c|0;aqR(a,b,c);return}function _Z(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+40>>2]&511](a,b,d)|0}function __(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+24>>2]&127](a|0,b,d,e);return}function _$(a,b,d){a=a|0;b=b|0;d=+d;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,-1);return}function _0(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,e);return}function _1(a){a=a|0;return c[a+12>>2]|0}function _2(a,b){a=a|0;b=+b;g[a+208>>2]=b;return}function _3(a,b){a=a|0;b=+b;g[a+180>>2]=b;return}function _4(a,b){a=a|0;b=+b;g[a+1108>>2]=b;return}function _5(a){a=a|0;return+(+g[a+208>>2])}function _6(a,b){a=a|0;b=+b;g[a+1112>>2]=b;return}function _7(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function _8(a){a=a|0;return c[a+4>>2]|0}function _9(b){b=b|0;return(a[b+1104|0]&1)!=0|0}function $a(a){a=a|0;return+(+g[a+280>>2])}function $b(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function $c(a){a=a|0;return+(+g[a+260>>2])}function $d(a){a=a|0;return+(+g[a+1092>>2])}function $e(b){b=b|0;var c=0,d=0,e=0.0,f=0.0,h=0.0;c=b+288|0;a[c]=0;d=b+1024|0;e=+g[d>>2];g[b+1072>>2]=e;f=+g[b+176>>2];h=+g[b+180>>2];if(f>h){g[d>>2]=0.0;return}if(e>h){g[d>>2]=e-h;a[c]=1;return}if(e<f){g[d>>2]=e-f;a[c]=1;return}else{g[d>>2]=0.0;return}}function $f(a){a=a|0;return+(+g[a+176>>2])}function $g(a,b){a=a|0;b=+b;g[a+280>>2]=b;return}function $h(a){a=a|0;return c[a+8>>2]|0}function $i(a,b){a=a|0;b=+b;g[a+276>>2]=b;return}function $j(a){a=a|0;return+(+g[a+276>>2])}function $k(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function $l(a){a=a|0;return+(+g[a+264>>2])}function $m(a){a=a|0;return+(+g[a+32>>2])}function $n(a){a=a|0;return+(+g[a+240>>2])}function $o(a,b){a=a|0;b=+b;g[a+272>>2]=b;return}function $p(a,b){a=a|0;b=+b;g[a+232>>2]=b;return}function $q(a){a=a|0;return+(+g[a+192>>2])}function $r(b){b=b|0;return(a[b+172|0]&1)!=0|0}function $s(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function $t(a,b){a=a|0;b=+b;g[a+12>>2]=b;return}function $u(a){a=a|0;return+(+g[a+12>>2])}function $v(a,b){a=a|0;b=+b;g[a>>2]=b;return}function $w(a){a=a|0;return+(+g[a+16>>2])}function $x(a){a=a|0;return+(+g[a+8>>2])}function $y(a){a=a|0;return+(+g[a>>2])}function $z(a){a=a|0;return+(+g[a+4>>2])}function $A(a,b){a=a|0;b=+b;g[a+8>>2]=b;return}function $B(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function $C(a,b){a=a|0;b=+b;g[a+20>>2]=b;return}function $D(a){a=a|0;return+(+g[a+20>>2])}function $E(a){a=a|0;return c[a+28>>2]|0}function $F(a){a=a|0;return c[a+24>>2]|0}function $G(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function $H(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function $I(a,b){a=a|0;b=+b;var c=0.0,d=0.0;c=+ck(+b,6.2831854820251465);do{if(c<-3.1415927410125732){d=c+6.2831854820251465}else{if(c<=3.1415927410125732){d=c;break}d=c-6.2831854820251465}}while(0);g[a+184>>2]=d;return}function $J(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function $K(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+44|0;f=b;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+60|0;e=b+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+76|0;f=b+32|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+92|0;e=b+48|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+108|0;f=d;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+124|0;e=d+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+140|0;f=d+32|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+156|0;e=d+48|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];aqR(a,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);ct[c[(c[a>>2]|0)+8>>2]&2047](a|0);return}function $L(a){a=a|0;if((a|0)==0){return}aDB(a);return}function $M(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function $N(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0;f=i;i=i+112|0;h=f|0;j=f+48|0;k=e&1;while(1){l=aDx(1120)|0;if((l|0)!=0){break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){m=80;break}dC[e&63]()}if((m|0)==80){m=cd(4)|0;c[m>>2]=19096;bF(m|0,34368,676);return 0}m=l;e=j;aq2();c[l+4>>2]=7;c[l+8>>2]=-1;c[l+12>>2]=-1;g[l+16>>2]=3.4028234663852886e+38;a[l+20|0]=1;a[l+21|0]=0;n=l+24|0;c[n>>2]=41520;o=l+28|0;c[o>>2]=b;g[l+32>>2]=0.0;g[l+36>>2]=.30000001192092896;c[l>>2]=23056;a[l+40|0]=0;p=l+108|0;q=d;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];q=l+124|0;r=d+16|0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];r=l+140|0;q=d+32|0;c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];q=l+156|0;r=d+48|0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];a[l+172|0]=k;k=l+44|0;r=b+4|0;q=h;anx(h,r|0,p);s=+g[l+156>>2];t=+g[l+160>>2];u=+g[l+164>>2];v=+g[r>>2]*s+ +g[b+8>>2]*t+ +g[b+12>>2]*u+ +g[b+52>>2];w=+g[b+20>>2]*s+ +g[b+24>>2]*t+ +g[b+28>>2]*u+ +g[b+56>>2];x=+g[b+36>>2]*s+ +g[b+40>>2]*t+ +g[b+44>>2]*u+ +g[b+60>>2];b=j+48|0;r=j|0;do{r=r+16|0;}while((r|0)!=(b|0));c[e>>2]=c[q>>2];c[e+4>>2]=c[q+4>>2];c[e+8>>2]=c[q+8>>2];c[e+12>>2]=c[q+12>>2];q=j+16|0;b=h+16|0;c[q>>2]=c[b>>2];c[q+4>>2]=c[b+4>>2];c[q+8>>2]=c[b+8>>2];c[q+12>>2]=c[b+12>>2];b=j+32|0;r=h+32|0;c[b>>2]=c[r>>2];c[b+4>>2]=c[r+4>>2];c[b+8>>2]=c[r+8>>2];c[b+12>>2]=c[r+12>>2];g[j+48>>2]=v;g[j+52>>2]=w;g[j+56>>2]=x;g[j+60>>2]=0.0;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];e=l+60|0;c[e>>2]=c[q>>2];c[e+4>>2]=c[q+4>>2];c[e+8>>2]=c[q+8>>2];c[e+12>>2]=c[q+12>>2];q=l+76|0;c[q>>2]=c[b>>2];c[q+4>>2]=c[b+4>>2];c[q+8>>2]=c[b+8>>2];c[q+12>>2]=c[b+12>>2];b=l+92|0;q=j+48|0;c[b>>2]=c[q>>2];c[b+4>>2]=c[q+4>>2];c[b+8>>2]=c[q+8>>2];c[b+12>>2]=c[q+12>>2];g[l+176>>2]=1.0;g[l+180>>2]=-1.0;g[l+184>>2]=0.0;g[l+188>>2]=0.0;g[l+192>>2]=1.0;g[l+196>>2]=.699999988079071;g[l+200>>2]=0.0;g[l+204>>2]=0.0;g[l+208>>2]=1.0;g[l+212>>2]=.699999988079071;g[l+216>>2]=0.0;g[l+220>>2]=0.0;g[l+256>>2]=1.0;g[l+260>>2]=.699999988079071;g[l+264>>2]=1.0;g[l+268>>2]=0.0;g[l+272>>2]=1.0;g[l+276>>2]=.699999988079071;g[l+280>>2]=1.0;g[l+284>>2]=0.0;g[l+224>>2]=1.0;g[l+228>>2]=.699999988079071;g[l+232>>2]=1.0;g[l+236>>2]=0.0;g[l+240>>2]=1.0;g[l+244>>2]=.699999988079071;g[l+248>>2]=1.0;g[l+252>>2]=0.0;a[l+1088|0]=0;g[l+1108>>2]=0.0;g[l+1112>>2]=0.0;g[l+1116>>2]=0.0;c[l+292>>2]=0;aDD(l+1092|0,0,13);a[l+41|0]=1;aqR(m,(c[n>>2]|0)+4|0,(c[o>>2]|0)+4|0);i=f;return m|0}function $O(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0;i=h&1;while(1){j=aDx(1120)|0;if((j|0)!=0){k=99;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){break}dC[h&63]()}if((k|0)==99){k=j;c[j+4>>2]=7;c[j+8>>2]=-1;c[j+12>>2]=-1;g[j+16>>2]=3.4028234663852886e+38;a[j+20|0]=1;a[j+21|0]=0;c[j+24>>2]=b;c[j+28>>2]=d;g[j+32>>2]=0.0;g[j+36>>2]=.30000001192092896;c[j>>2]=23056;a[j+40|0]=0;h=j+44|0;l=e;c[h>>2]=c[l>>2];c[h+4>>2]=c[l+4>>2];c[h+8>>2]=c[l+8>>2];c[h+12>>2]=c[l+12>>2];l=j+60|0;h=e+16|0;c[l>>2]=c[h>>2];c[l+4>>2]=c[h+4>>2];c[l+8>>2]=c[h+8>>2];c[l+12>>2]=c[h+12>>2];h=j+76|0;l=e+32|0;c[h>>2]=c[l>>2];c[h+4>>2]=c[l+4>>2];c[h+8>>2]=c[l+8>>2];c[h+12>>2]=c[l+12>>2];l=j+92|0;h=e+48|0;c[l>>2]=c[h>>2];c[l+4>>2]=c[h+4>>2];c[l+8>>2]=c[h+8>>2];c[l+12>>2]=c[h+12>>2];h=j+108|0;l=f;c[h>>2]=c[l>>2];c[h+4>>2]=c[l+4>>2];c[h+8>>2]=c[l+8>>2];c[h+12>>2]=c[l+12>>2];l=j+124|0;h=f+16|0;c[l>>2]=c[h>>2];c[l+4>>2]=c[h+4>>2];c[l+8>>2]=c[h+8>>2];c[l+12>>2]=c[h+12>>2];h=j+140|0;l=f+32|0;c[h>>2]=c[l>>2];c[h+4>>2]=c[l+4>>2];c[h+8>>2]=c[l+8>>2];c[h+12>>2]=c[l+12>>2];l=j+156|0;h=f+48|0;c[l>>2]=c[h>>2];c[l+4>>2]=c[h+4>>2];c[l+8>>2]=c[h+8>>2];c[l+12>>2]=c[h+12>>2];a[j+172|0]=i;g[j+176>>2]=1.0;g[j+180>>2]=-1.0;g[j+184>>2]=0.0;g[j+188>>2]=0.0;g[j+192>>2]=1.0;g[j+196>>2]=.699999988079071;g[j+200>>2]=0.0;g[j+204>>2]=0.0;g[j+208>>2]=1.0;g[j+212>>2]=.699999988079071;g[j+216>>2]=0.0;g[j+220>>2]=0.0;g[j+256>>2]=1.0;g[j+260>>2]=.699999988079071;g[j+264>>2]=1.0;g[j+268>>2]=0.0;g[j+272>>2]=1.0;g[j+276>>2]=.699999988079071;g[j+280>>2]=1.0;g[j+284>>2]=0.0;g[j+224>>2]=1.0;g[j+228>>2]=.699999988079071;g[j+232>>2]=1.0;g[j+236>>2]=0.0;g[j+240>>2]=1.0;g[j+244>>2]=.699999988079071;g[j+248>>2]=1.0;g[j+252>>2]=0.0;a[j+1088|0]=0;g[j+1108>>2]=0.0;g[j+1112>>2]=0.0;g[j+1116>>2]=0.0;c[j+292>>2]=0;aDD(j+1092|0,0,13);a[j+41|0]=1;aqR(k,b+4|0,d+4|0);return k|0}k=cd(4)|0;c[k>>2]=19096;bF(k|0,34368,676);return 0}function $P(){var a=0,b=0,d=0;while(1){a=aDx(24)|0;if((a|0)!=0){b=111;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==111){g[a>>2]=5.880000114440918;g[a+4>>2]=.8299999833106995;g[a+8>>2]=.8799999952316284;g[a+12>>2]=500.0;g[a+16>>2]=10.5;g[a+20>>2]=6.0e3;return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function $Q(b,c){b=b|0;c=c|0;a[b+21|0]=c&1;return}function $R(a){a=a|0;return a+40|0}function $S(a){a=a|0;return c[a+12>>2]|0}function $T(a){a=a|0;return c[a+4>>2]|0}function $U(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function $V(b){b=b|0;return(a[b+20|0]&1)!=0|0}function $W(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function $X(a){a=a|0;return c[a+4>>2]|0}function $Y(a){a=a|0;return+(+g[a+36>>2])}function $Z(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function $_(b){b=b|0;return(a[b+21|0]&1)!=0|0}function $$(a){a=a|0;return c[a+4>>2]|0}function $0(a){a=a|0;return c[a+12>>2]|0}function $1(b,c){b=b|0;c=c|0;a[b+20|0]=c&1;return}function $2(a){a=a|0;return c[a+12>>2]|0}function $3(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function $4(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function $5(a){a=a|0;return+(+g[a+32>>2])}function $6(a){a=a|0;return+(+g[a+16>>2])}function $7(a){a=a|0;return c[a+8>>2]|0}function $8(a){a=a|0;return+(+g[a+32>>2])}function $9(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function aaa(a){a=a|0;return+(+g[a+136>>2])}function aab(a){a=a|0;return+(+g[a+140>>2])}function aac(a,b){a=a|0;b=+b;g[a+112>>2]=b;return}function aad(a,b){a=a|0;b=+b;g[a+136>>2]=b;return}function aae(a){a=a|0;return+(+g[a+84>>2])}function aaf(a){a=a|0;return c[a+92>>2]|0}function aag(a){a=a|0;return c[a+96>>2]|0}function aah(a){a=a|0;return a+64|0}function aai(a,b){a=a|0;b=+b;g[a+84>>2]=b;return}function aaj(a){a=a|0;return c[a+104>>2]|0}function aak(a){a=a|0;return c[a+100>>2]|0}function aal(a,b){a=a|0;b=b|0;c[a+108>>2]=b;return}function aam(a,b){a=a|0;b=+b;g[a+140>>2]=b;return}function aan(a){a=a|0;return+(+g[a+112>>2])}function aao(a){a=a|0;return c[a+108>>2]|0}function aap(a){a=a|0;return+(+g[a+80>>2])}function aaq(a){a=a|0;return c[a+144>>2]|0}function aar(a){a=a|0;return a+32|0}function aas(a){a=a|0;return a+48|0}function aat(a,b){a=a|0;b=b|0;c[a+92>>2]=b;return}function aau(a,b){a=a|0;b=b|0;c[a+96>>2]=b;return}function aav(a,b){a=a|0;b=+b;g[a+80>>2]=b;return}function aaw(a){a=a|0;return+(+g[a+120>>2])}function aax(a){a=a|0;return+(+g[a+124>>2])}function aay(b,c){b=b|0;c=c|0;a[b+116|0]=c&1;return}function aaz(a){a=a|0;return c[a+144>>2]|0}function aaA(a,b){a=a|0;b=b|0;c[a+100>>2]=b;return}function aaB(a){a=a|0;return+(+g[a+128>>2])}function aaC(a){a=a|0;return+(+g[a+132>>2])}function aaD(a,b){a=a|0;b=b|0;c[a+104>>2]=b;return}function aaE(a){a=a|0;return a+148|0}function aaF(a,b){a=a|0;b=+b;g[a+88>>2]=b;return}function aaG(a){a=a|0;return a+48|0}function aaH(a){a=a|0;return a+164|0}function aaI(a){a=a|0;return a+32|0}function aaJ(a,b){a=a|0;b=+b;g[a+120>>2]=b;return}function aaK(a,b){a=a|0;b=+b;g[a+124>>2]=b;return}function aaL(b){b=b|0;return(a[b+116|0]&1)!=0|0}function aaM(a){a=a|0;return+(+g[a+88>>2])}function aaN(a,b){a=a|0;b=+b;g[a+128>>2]=b;return}function aaO(a,b){a=a|0;b=+b;g[a+132>>2]=b;return}function aaP(a){a=a|0;return a+16|0}function aaQ(a){a=a|0;return a|0}function aaR(a,b){a=a|0;b=+b;g[a+80>>2]=b;return}function aaS(a){a=a|0;return+(+g[a+80>>2])}function aaT(a){a=a|0;return+(+g[a+112>>2])}function aaU(a,b){a=a|0;b=b|0;c[a+144>>2]=b;return}function aaV(a){a=a|0;return a+4|0}function aaW(a){a=a|0;return c[a+28>>2]|0}function aaX(a){a=a|0;return c[a+12>>2]|0}function aaY(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function aaZ(b,c){b=b|0;c=c|0;a[b+20|0]=c&1;return}function aa_(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function aa$(a){a=a|0;return c[a+12>>2]|0}function aa0(a){a=a|0;return c[a+4>>2]|0}function aa1(a){a=a|0;return c[a+24>>2]|0}function aa2(b,c){b=b|0;c=c|0;a[b+336|0]=c&1;return}function aa3(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+40>>2]&511](a|0,b,d)|0}function aa4(a,b,d){a=a|0;b=b|0;d=+d;cE[c[(c[a>>2]|0)+28>>2]&127](a|0,b,d,-1);return}function aa5(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;cE[c[(c[a>>2]|0)+28>>2]&127](a|0,b,d,e);return}function aa6(a,b){a=a|0;b=b|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a|0,b,-1))}function aa7(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a|0,b,d))}function aa8(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function aa9(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function aba(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function abb(a,b){a=a|0;b=b|0;var c=0;c=a+40|0;a=b;aDC(c|0,a|0,1140)|0;return}function abc(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function abd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;cy[c[(c[a>>2]|0)+12>>2]&127](a|0,b,d,e,f);return}function abe(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+24>>2]&127](a|0,b,d,e);return}function abf(a,b){a=a|0;b=b|0;var d=0;d=a+148|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function abg(a,b){a=a|0;b=b|0;var d=0;d=a+48|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function abh(a,b){a=a|0;b=b|0;var d=0;d=a+32|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function abi(a){a=a|0;if((a|0)==0){return}aDB(a);return}function abj(a,b){a=a|0;b=b|0;var d=0;d=a+64|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function abk(a,b){a=a|0;b=b|0;var d=0;d=a+164|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function abl(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function abm(a,b){a=a|0;b=b|0;var d=0;d=a;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function abn(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;di[c[(c[a>>2]|0)+16>>2]&63](a,b,d,e,f,g,h,i,j,0);return}function abo(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;di[c[(c[a>>2]|0)+16>>2]&63](a,b,d,e,f,g,h,i,j,k);return}function abp(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+36>>2]&2047](a,b);return}function abq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+40|0;f=e|0;c[f>>2]=18624;g[f+4>>2]=999999984306749400.0;g[f+8>>2]=999999984306749400.0;g[f+12>>2]=999999984306749400.0;g[f+16>>2]=0.0;g[f+20>>2]=-999999984306749400.0;g[f+24>>2]=-999999984306749400.0;g[f+28>>2]=-999999984306749400.0;g[f+32>>2]=0.0;g[b>>2]=-999999984306749400.0;g[b+4>>2]=-999999984306749400.0;g[b+8>>2]=-999999984306749400.0;g[b+12>>2]=0.0;g[d>>2]=999999984306749400.0;g[d+4>>2]=999999984306749400.0;g[d+8>>2]=999999984306749400.0;g[d+12>>2]=0.0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,f|0,b,d);a=b;b=f+4|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];b=d;d=f+20|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];i=e;return}function abr(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+56>>2]&511](a,b,d)|0}function abs(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+32>>2]&2047](a,b);return}function abt(a){a=a|0;return cA[c[(c[a>>2]|0)+52>>2]&4095](a)|0}function abu(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function abv(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+44>>2]&511](a,b,d);return}function abw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function abx(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+48>>2]&511](a,b,d);return}function aby(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function abz(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;di[c[(c[a>>2]|0)+12>>2]&63](a,b,d,e,f,g,h,i,j,0);return}function abA(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;di[c[(c[a>>2]|0)+12>>2]&63](a,b,d,e,f,g,h,i,j,k);return}function abB(a){a=a|0;return cA[c[(c[a>>2]|0)+40>>2]&4095](a)|0}function abC(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function abD(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function abE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;apD(a,b,c,d);return}function abF(a,b,d){a=a|0;b=b|0;d=+d;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,-1);return}function abG(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,e);return}function abH(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+40>>2]&511](a,b,d)|0}function abI(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function abJ(a,b){a=a|0;b=b|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,-1))}function abK(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,d))}function abL(){var b=0,d=0,e=0;while(1){b=aDx(276)|0;if((b|0)!=0){d=254;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==254){c[b+108>>2]=0;g[b+112>>2]=0.0;a[b+116|0]=0;aDD(b+120|0,0,28);return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function abM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0;while(1){h=aDx(276)|0;if((h|0)!=0){i=266;break}j=(C=c[10744]|0,c[10744]=C+0,C);if((j|0)==0){break}dC[j&63]()}if((i|0)==266){i=b;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];i=h+16|0;b=d;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];b=h+64|0;i=e;c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];g[h+80>>2]=f;g[h+84>>2]=0.0;g[h+88>>2]=0.0;c[h+108>>2]=0;g[h+112>>2]=0.0;a[h+116|0]=0;g[h+208>>2]=0.0;g[h+240>>2]=0.0;g[h+272>>2]=0.0;aDD(h+120|0,0,28);return h|0}h=cd(4)|0;c[h>>2]=19096;bF(h|0,34368,676);return 0}function abN(a,b){a=a|0;b=+b;return}function abO(a){a=a|0;return c[a+4>>2]|0}function abP(a){a=a|0;return a+292|0}function abQ(a){a=a|0;return a+308|0}function abR(a){a=a|0;return a+340|0}function abS(b){b=b|0;return(a[b+20|0]&1)!=0|0}function abT(a){a=a|0;return c[a+4>>2]|0}function abU(b,c){b=b|0;c=c|0;a[b+21|0]=c&1;return}function abV(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function abW(b){b=b|0;return(a[b+21|0]&1)!=0|0}function abX(a){a=a|0;return c[a+12>>2]|0}function abY(b,d){b=b|0;d=d|0;var e=0;e=d|0;if((a[b+336|0]&1)==0){c[e>>2]=3;c[d+4>>2]=3;return}else{c[e>>2]=0;c[d+4>>2]=0;return}}function abZ(a){a=a|0;return+(+g[a+36>>2])}function ab_(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function ab$(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function ab0(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function ab1(a){a=a|0;return+(+g[a+32>>2])}function ab2(b){b=b|0;return(a[b+336|0]&1)!=0|0}function ab3(a){a=a|0;return+(+g[a+16>>2])}function ab4(a){a=a|0;return c[a+8>>2]|0}function ab5(a){a=a|0;return+(+g[a+32>>2])}function ab6(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function ab7(a){a=a|0;return(c[a+4>>2]|0)==31|0}function ab8(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function ab9(a){a=a|0;return c[a+52>>2]|0}function aca(a){a=a|0;return(c[a+4>>2]|0)<7|0}function acb(a){a=a|0;return a+12|0}function acc(a){a=a|0;return+(+g[a+44>>2])}function acd(a){a=a|0;return(c[a+4>>2]|0)<20|0}function ace(a){a=a|0;return(c[a+4>>2]|0)==28|0}function acf(a){a=a|0;return c[a+8>>2]|0}function acg(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function ach(a){a=a|0;return a+28|0}function aci(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function acj(a){a=a|0;return(c[a+4>>2]|0)==32|0}function ack(a){a=a|0;return a+28|0}function acl(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function acm(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function acn(a,b){a=a|0;b=b|0;var d=0;d=a+340|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];return}function aco(a,b){a=a|0;b=b|0;var d=0;d=a+292|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function acp(a,b){a=a|0;b=b|0;var d=0;d=a+308|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function acq(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function acr(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function acs(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;cy[c[(c[a>>2]|0)+12>>2]&127](a|0,b,d,e,f);return}function act(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+24>>2]&127](a|0,b,d,e);return}function acu(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function acv(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43648]|0)==0){if((b1(43648)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9746]=c[d>>2];c[9747]=c[d+4>>2];c[9748]=c[d+8>>2];c[9749]=c[d+12>>2];i=e;return 38984}function acw(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function acx(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function acy(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function acz(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+84>>2]&1023](a))}function acA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function acB(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function acC(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function acD(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43176]|0)==0){if((b1(43176)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9742]=c[d>>2];c[9743]=c[d+4>>2];c[9744]=c[d+8>>2];c[9745]=c[d+12>>2];i=e;return 38968}function acE(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function acF(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function acG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function acH(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43496]|0)==0){if((b1(43496)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9738]=c[d>>2];c[9739]=c[d+4>>2];c[9740]=c[d+8>>2];c[9741]=c[d+12>>2];i=e;return 38952}function acI(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function acJ(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function acK(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function acL(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43352]|0)==0){if((b1(43352)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9734]=c[d>>2];c[9735]=c[d+4>>2];c[9736]=c[d+8>>2];c[9737]=c[d+12>>2];i=e;return 38936}function acM(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 1:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 0:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function acN(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function acO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function acP(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function acQ(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function acR(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function acS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function acT(a){a=a|0;var b=0,d=0,e=0,f=0,h=0.0,i=0.0;c[9806]=(c[9806]|0)+1;b=aDx(75)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}e=d+4|0;c[e>>2]=35;c[d+8>>2]=0;b=d|0;g[d+12>>2]=1.0;g[d+16>>2]=1.0;g[d+20>>2]=1.0;g[d+24>>2]=0.0;g[d+44>>2]=.03999999910593033;c[b>>2]=24848;f=d+52|0;c[f>>2]=1;h=+g[a+4>>2]+-.03999999910593033;i=+g[a+8>>2]+-.03999999910593033;g[d+28>>2]=+g[a>>2]+-.03999999910593033;g[d+32>>2]=h;g[d+36>>2]=i;g[d+40>>2]=0.0;c[e>>2]=13;c[b>>2]=24152;c[f>>2]=2;return d|0}function acU(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function acV(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function acW(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;while(1){e=aDx(352)|0;if((e|0)!=0){f=386;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){f=383;break}dC[h&63]()}if((f|0)==383){h=cd(4)|0;c[h>>2]=19096;bF(h|0,34368,676);return 0}else if((f|0)==386){aq1(e,3,b);c[e>>2]=21336;f=e+292|0;h=d;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];i=+g[d>>2];j=+g[d+4>>2];k=+g[d+8>>2];l=+g[b+56>>2]+(i*+g[b+20>>2]+j*+g[b+24>>2]+k*+g[b+28>>2]);m=+g[b+60>>2]+(i*+g[b+36>>2]+j*+g[b+40>>2]+k*+g[b+44>>2]);g[e+308>>2]=+g[b+52>>2]+(+g[b+4>>2]*i+ +g[b+8>>2]*j+ +g[b+12>>2]*k);g[e+312>>2]=l;g[e+316>>2]=m;g[e+320>>2]=0.0;c[e+324>>2]=0;a[e+336|0]=0;g[e+340>>2]=.30000001192092896;g[e+344>>2]=1.0;g[e+348>>2]=0.0;return e|0}return 0}function acX(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0;while(1){h=aDx(352)|0;if((h|0)!=0){i=400;break}j=(C=c[10744]|0,c[10744]=C+0,C);if((j|0)==0){break}dC[j&63]()}if((i|0)==400){c[h+4>>2]=3;c[h+8>>2]=-1;c[h+12>>2]=-1;g[h+16>>2]=3.4028234663852886e+38;a[h+20|0]=1;a[h+21|0]=0;c[h+24>>2]=b;c[h+28>>2]=d;g[h+32>>2]=0.0;g[h+36>>2]=.30000001192092896;c[h>>2]=21336;d=h+292|0;b=e;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];b=h+308|0;d=f;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[h+324>>2]=0;a[h+336|0]=0;g[h+340>>2]=.30000001192092896;g[h+344>>2]=1.0;g[h+348>>2]=0.0;return h|0}h=cd(4)|0;c[h>>2]=19096;bF(h|0,34368,676);return 0}function acY(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function acZ(a){a=a|0;return c[a+4>>2]|0}function ac_(a){a=a|0;return c[a+16>>2]|0}function ac$(a){a=a|0;return c[a+12>>2]|0}function ac0(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function ac1(a,c){a=a|0;c=c|0;b[a>>1]=b[c>>1]|0;b[a+2>>1]=b[c+2>>1]|0;b[a+4>>1]=b[c+4>>1]|0;b[a+6>>1]=b[c+6>>1]|0;b[a+8>>1]=b[c+8>>1]|0;b[a+10>>1]=b[c+10>>1]|0;return}function ac2(a,b){a=a|0;b=b|0;c[a+16>>2]=b;return}function ac3(a){a=a|0;return a+28|0}function ac4(a,c){a=a|0;c=c|0;b[a+8>>1]=c;return}function ac5(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function ac6(a){a=a|0;return+(+g[a+4>>2])}function ac7(a){a=a|0;return c[a+76>>2]|0}function ac8(a,b){a=a|0;b=b|0;c[a+76>>2]=b;return}function ac9(a){a=a|0;return a+44|0}function ada(a){a=a|0;return a+60|0}function adb(a){a=a|0;return b[a+10>>1]|0}function adc(a){a=a|0;return+g[a+4>>2]<1.0|0}function add(a){a=a|0;return a+12|0}function ade(a){a=a|0;return b[a+8>>1]|0}function adf(a,c){a=a|0;c=c|0;b[a+10>>1]=c;return}function adg(a){a=a|0;return+(+g[a+88>>2])}function adh(a){a=a|0;return c[a+28>>2]|0}function adi(a){a=a|0;return c[a+12>>2]|0}function adj(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function adk(b,c){b=b|0;c=c|0;a[b+20|0]=c&1;return}function adl(a){a=a|0;return a+40|0}function adm(a,b){a=a|0;b=b|0;return+(+g[a+1248+(b<<2)>>2])}function adn(a){a=a|0;return a+104|0}function ado(a){a=a|0;return a+1056|0}function adp(a){a=a|0;return c[a+12>>2]|0}function adq(a){a=a|0;return c[a+4>>2]|0}function adr(a){a=a|0;return c[a+24>>2]|0}function ads(a){a=a|0;return+(+g[a+16>>2])}function adt(a,b,c){a=a|0;b=b|0;c=+c;g[a+1356+(b<<2)>>2]=c;return}function adu(a,b){a=a|0;b=b|0;var c=0;c=a;a=0;while(1){if((a|0)>=3){break}g[b+(a<<2)>>2]=+g[c+860+(a<<6)>>2];a=a+1|0}return}function adv(a,b,c){a=a|0;b=b|0;c=+c;g[a+1308+(b<<2)>>2]=c;return}function adw(b){b=b|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0,j=0,k=0.0,l=0.0,m=0.0;do{if((a[43656]|0)==0){if((b1(43656)|0)==0){break}}}while(0);d=+g[b+28>>2];e=+g[b+32>>2];f=+g[b+36>>2];h=+g[b+40>>2];i=b|0;j=b;k=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);l=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);m=f+ +dh[c[(c[j>>2]|0)+44>>2]&1023](i);g[9730]=d+k;g[9731]=e+l;g[9732]=m;g[9733]=h;return 38920}function adx(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-32+28>>2]|0);return}function ady(){var a=0,b=0,d=0;c[9806]=(c[9806]|0)+1;a=aDx(51)|0;if((a|0)==0){b=0;return b|0}d=-(a+4|0)&15;c[a+d>>2]=a;b=a+(d+4)|0;return b|0}function adz(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a,b);return}function adA(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+8>>2]&2047](a,b);return}function adB(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function adC(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+8>>2]&511](a|0,b)|0}function adD(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+12>>2]&127](a,b,d))}function adE(a,b){a=a|0;b=b|0;var d=0;d=a+60|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function adF(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function adG(a,b){a=a|0;b=b|0;var d=0;d=a+44|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function adH(a,b){a=a|0;b=b|0;var d=0;d=a+12|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function adI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0;e=i;i=i+96|0;f=e|0;h=e+16|0;j=e+32|0;k=e+48|0;l=e+64|0;m=e+80|0;n=f;o=h;p=b+48|0;q=d+48|0;ec(b|0,f);ec(d|0,h);d=a+88|0;b=a+32|0;if(+g[d>>2]>0.0){anu(b,p,a|0,f,j,k);f=a+48|0;r=a+16|0;anu(f,q,r,h,l,m);s=+g[k>>2];t=+g[k+4>>2];u=+g[k+8>>2];v=+Q(+(s*s+t*t+u*u));u=v*+g[a+80>>2];v=+g[m>>2];t=+g[m+4>>2];s=+g[m+8>>2];w=+Q(+(v*v+t*t+s*s));s=(+g[l>>2]- +g[j>>2])*+g[a+64>>2]+(+g[l+4>>2]- +g[j+4>>2])*+g[a+68>>2]+(+g[l+8>>2]- +g[j+8>>2])*+g[a+72>>2];g[d>>2]=+g[d>>2]-(u+w*+g[a+84>>2]+(s<0.0?0.0:s));x=b;y=f;z=r}else{x=b;y=a+48|0;z=a+16|0}b=x;x=p;c[b>>2]=c[x>>2];c[b+4>>2]=c[x+4>>2];c[b+8>>2]=c[x+8>>2];c[b+12>>2]=c[x+12>>2];x=y;y=q;c[x>>2]=c[y>>2];c[x+4>>2]=c[y+4>>2];c[x+8>>2]=c[y+8>>2];c[x+12>>2]=c[y+12>>2];y=a;c[y>>2]=c[n>>2];c[y+4>>2]=c[n+4>>2];c[y+8>>2]=c[n+8>>2];c[y+12>>2]=c[n+12>>2];n=z;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];i=e;return}function adJ(a){a=a|0;if((a|0)==0){return}aDB(a);return}function adK(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;i=i+32|0;j=h|0;k=h+16|0;l=j;m=k;g[a+88>>2]=d;if(d<=0.0){i=h;return}n=a+64|0;o=b;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];ec(e|0,j);ec(f|0,k);k=a+32|0;j=e+48|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];j=a+48|0;k=f+48|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];k=a;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];l=a+16|0;c[l>>2]=c[m>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];i=h;return}function adL(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function adM(a,b,d){a=a|0;b=b|0;d=+d;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,-1);return}function adN(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,e);return}function adO(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;apb(a,b,c,d,e,f,g,h);return}function adP(a,b){a=a|0;b=b|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,-1))}function adQ(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,d))}function adR(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function adS(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function adT(a){a=a|0;ct[c[(c[a>>2]|0)+44>>2]&2047](a);return}function adU(a){a=a|0;aoZ(a,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);g[a+1308>>2]=+g[a+1248>>2];g[a+1312>>2]=+g[a+1252>>2];g[a+1316>>2]=+g[a+1256>>2];g[a+1320>>2]=+g[a+1184>>2];g[a+1324>>2]=+g[a+1188>>2];g[a+1328>>2]=+g[a+1192>>2];return}function adV(a,b){a=a|0;b=b|0;aoZ(a,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);if((b|0)<3){g[a+1308+(b<<2)>>2]=+g[a+1248+(b<<2)>>2];return}else{g[a+1308+(b<<2)>>2]=+g[a+1184+(b-3<<2)>>2];return}}function adW(a,d){a=a|0;d=d|0;var e=0,f=0,h=0;while(1){e=aDx(80)|0;if((e|0)!=0){f=508;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){break}dC[h&63]()}if((f|0)==508){g[e+4>>2]=1.0;b[e+8>>1]=1;b[e+10>>1]=-1;c[e>>2]=19448;f=e+12|0;h=a;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];h=e+28|0;f=d;c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];c[e+76>>2]=0;return e|0}e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}function adX(a,b){a=+a;b=+b;var d=0,e=0,f=0;while(1){d=aDx(92)|0;if((d|0)!=0){e=520;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){break}dC[f&63]()}if((e|0)==520){g[d+80>>2]=a;g[d+84>>2]=b;g[d+88>>2]=0.0;return d|0}d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}function adY(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0;while(1){i=aDx(1380)|0;if((i|0)!=0){j=532;break}k=(C=c[10744]|0,c[10744]=C+0,C);if((k|0)==0){break}dC[k&63]()}if((j|0)==532){aoY(i,b,d,e,f,h);c[i>>2]=20024;c[i+4>>2]=9;a[i+1301|0]=0;g[i+1308>>2]=0.0;g[i+1332>>2]=0.0;g[i+1356>>2]=1.0;a[i+1302|0]=0;g[i+1312>>2]=0.0;g[i+1336>>2]=0.0;g[i+1360>>2]=1.0;a[i+1303|0]=0;g[i+1316>>2]=0.0;g[i+1340>>2]=0.0;g[i+1364>>2]=1.0;a[i+1304|0]=0;g[i+1320>>2]=0.0;g[i+1344>>2]=0.0;g[i+1368>>2]=1.0;a[i+1305|0]=0;g[i+1324>>2]=0.0;g[i+1348>>2]=0.0;g[i+1372>>2]=1.0;a[i+1306|0]=0;g[i+1328>>2]=0.0;g[i+1352>>2]=0.0;g[i+1376>>2]=1.0;return i|0}i=cd(4)|0;c[i>>2]=19096;bF(i|0,34368,676);return 0}function adZ(a,b){a=a|0;b=+b;return}function ad_(a){a=a|0;return(a|0)==28|0}function ad$(a){a=a|0;return(a|0)==31|0}function ad0(a){a=a|0;return(a|0)<7|0}function ad1(a){a=a|0;return(a|0)<20|0}function ad2(a){a=a|0;return((a|0)>20&(a|0)<30?(a|0)!=25:0)|0}function ad3(a){a=a|0;return((a|0)==17?1:(a|0)==18)|0}function ad4(a){a=a|0;return(a|0)==32|0}function ad5(a){a=a|0;return((a|0)>20?(a|0)<30:0)|0}function ad6(a){a=a|0;return+(+g[a+32>>2])}function ad7(b){b=b|0;return(a[b+20|0]&1)!=0|0}function ad8(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function ad9(a){a=a|0;return c[a+4>>2]|0}function aea(b,c){b=b|0;c=c|0;a[b+21|0]=c&1;return}function aeb(b,c){b=b|0;c=c|0;a[b+1293|0]=c&1;return}function aec(b){b=b|0;return(a[b+21|0]&1)!=0|0}function aed(a){a=a|0;return c[a+4>>2]|0}function aee(a,b){a=a|0;b=b|0;return a+860+(b<<6)|0}function aef(b,d){b=b|0;d=d|0;var e=0;e=d|0;if((a[b+1300|0]&1)==0){c[e>>2]=6;c[d+4>>2]=0;return}else{c[e>>2]=0;c[d+4>>2]=0;return}}function aeg(a){a=a|0;return+(+g[a+36>>2])}function aeh(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function aei(a,b){a=a|0;b=b|0;var c=0,d=0;c=a;if((b|0)<3){d=+g[a+688+(b<<2)>>2]>=+g[a+672+(b<<2)>>2];return d|0}a=b-3|0;if(+g[c+860+(a<<6)>>2]>+g[c+860+(a<<6)+4>>2]){d=0;return d|0}d=1;return d|0}function aej(b){b=b|0;return(a[b+1293|0]&1)!=0|0}function aek(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function ael(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=d&1;a[b+1301+c|0]=e;if((c|0)<3){a[b+(c+780)|0]=e;return}else{a[b+860+(c-3<<6)+44|0]=e;return}}function aem(a){a=a|0;return a+1120|0}function aen(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function aeo(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function aep(b){b=b|0;return(a[b+1300|0]&1)!=0|0}function aeq(a){a=a|0;return+(+g[a+32>>2])}function aer(b,c){b=b|0;c=c|0;a[b+1300|0]=c&1;return}function aes(a){a=a|0;return a+672|0}function aet(a,b){a=a|0;b=b|0;return+(+g[a+1184+(b<<2)>>2])}function aeu(a,b){a=a|0;b=b|0;var c=0;c=a;a=0;while(1){if((a|0)>=3){break}g[b+(a<<2)>>2]=+g[c+860+(a<<6)+4>>2];a=a+1|0}return}function aev(a){a=a|0;return c[a+8>>2]|0}function aew(a,b,c){a=a|0;b=b|0;c=+c;g[a+1332+(b<<2)>>2]=c;return}function aex(a){a=a|0;return c[a+12>>2]|0}function aey(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function aez(a){a=a|0;return c[a>>2]|0}function aeA(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function aeB(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function aeC(a){a=a|0;return a+16|0}function aeD(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function aeE(a){a=a|0;return b[a+6>>1]|0}function aeF(a){a=a|0;return c[a+12>>2]|0}function aeG(a){a=a|0;return a+32|0}function aeH(a,c){a=a|0;c=c|0;b[a+4>>1]=c;return}function aeI(a){a=a|0;return c[a+12>>2]|0}function aeJ(a,c){a=a|0;c=c|0;b[a+6>>1]=c;return}function aeK(a){a=a|0;return c[a+8>>2]|0}function aeL(a){a=a|0;return b[a+4>>1]|0}function aeM(a){a=a|0;return a+20|0}function aeN(a){a=a|0;return a+4|0}function aeO(b,c){b=b|0;c=c|0;do{if((a[43752]|0)==0){if((b1(43752)|0)==0){break}}}while(0);aDG(38904,b+1200+(c<<4)|0,16);return 38904}function aeP(a,b){a=a|0;b=b|0;var d=0;d=a+688|0;a=b;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];return}function aeQ(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+40>>2]&511](a,b,d)|0}function aeR(a,b){a=a|0;b=b|0;var d=0;d=a+672|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function aeS(a,b){a=a|0;b=b|0;var d=0;d=a+672|0;a=b;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];return}function aeT(a){a=a|0;aoZ(a,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);return}function aeU(a,b,c){a=a|0;b=b|0;c=c|0;aoZ(a,b,c);return}function aeV(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function aeW(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ao7(a,b,c,d,e,f,g,h,i,j,k,l,0)|0}function aeX(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ao7(a,b,c,d,e,f,g,h,i,j,k,l,m)|0}function aeY(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;nS(a,b,c,d);return}function aeZ(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function ae_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;cy[c[(c[a>>2]|0)+12>>2]&127](a,b,d,e,f);return}function ae$(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=a;a=0;while(1){if((a|0)>=3){break}d=+ck(+(+g[b+(a<<2)>>2]),6.2831854820251465);do{if(d<-3.1415927410125732){e=d+6.2831854820251465}else{if(d<=3.1415927410125732){e=d;break}e=d-6.2831854820251465}}while(0);g[c+860+(a<<6)>>2]=e;a=a+1|0}return}function ae0(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+24>>2]&127](a,b,d,e);return}function ae1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a;f=a+40|0;g=b;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+56|0;f=b+16|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=a+72|0;g=b+32|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+88|0;f=b+48|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=a+104|0;g=d;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+120|0;f=d+16|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=a+136|0;g=d+32|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+152|0;f=d+48|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];ct[c[(c[a>>2]|0)+8>>2]&2047](e);aoZ(e,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);return}function ae2(a,b){a=a|0;b=b|0;var d=0;d=a+688|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function ae3(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=a;a=0;while(1){if((a|0)>=3){break}d=+ck(+(+g[b+(a<<2)>>2]),6.2831854820251465);do{if(d<-3.1415927410125732){e=d+6.2831854820251465}else{if(d<=3.1415927410125732){e=d;break}e=d-6.2831854820251465}}while(0);g[c+860+(a<<6)+4>>2]=e;a=a+1|0}return}function ae4(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+48>>2]&511](a,b,d);return}function ae5(a,b){a=a|0;b=b|0;return ao$(a,b)|0}function ae6(){var a=0,b=0,d=0;c[9806]=(c[9806]|0)+1;a=aDx(67)|0;if((a|0)==0){b=0}else{d=-(a+4|0)&15;c[a+d>>2]=a;b=a+(d+4)|0}c[b>>2]=0;c[b+8>>2]=0;return b|0}function ae7(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;c[9806]=(c[9806]|0)+1;h=aDx(67)|0;if((h|0)==0){i=0}else{j=-(h+4|0)&15;c[h+j>>2]=h;i=h+(j+4)|0}c[i>>2]=e;b[i+4>>1]=f;b[i+6>>1]=g;g=i+16|0;f=a;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=i+32|0;g=d;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];c[i+8>>2]=0;return i|0}function ae8(a,d,e,f,g,h){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;c[9806]=(c[9806]|0)+1;i=aDx(67)|0;if((i|0)==0){j=0}else{k=-(i+4|0)&15;c[i+k>>2]=i;j=i+(k+4)|0}c[j>>2]=e;b[j+4>>1]=f;b[j+6>>1]=g;g=j+16|0;f=a;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=j+32|0;g=d;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];c[j+8>>2]=h;return j|0}function ae9(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function afa(a,b){a=a|0;b=b|0;var d=0;d=a+32|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function afb(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-48+44>>2]|0);return}function afc(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;di[c[(c[a>>2]|0)+16>>2]&63](a,b,d,e,f,g,h,i,j,0);return}function afd(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;di[c[(c[a>>2]|0)+16>>2]&63](a,b,d,e,f,g,h,i,j,k);return}function afe(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+36>>2]&2047](a,b);return}function aff(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+40|0;f=e|0;c[f>>2]=18624;g[f+4>>2]=999999984306749400.0;g[f+8>>2]=999999984306749400.0;g[f+12>>2]=999999984306749400.0;g[f+16>>2]=0.0;g[f+20>>2]=-999999984306749400.0;g[f+24>>2]=-999999984306749400.0;g[f+28>>2]=-999999984306749400.0;g[f+32>>2]=0.0;g[b>>2]=-999999984306749400.0;g[b+4>>2]=-999999984306749400.0;g[b+8>>2]=-999999984306749400.0;g[b+12>>2]=0.0;g[d>>2]=999999984306749400.0;g[d+4>>2]=999999984306749400.0;g[d+8>>2]=999999984306749400.0;g[d+12>>2]=0.0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,f|0,b,d);a=b;b=f+4|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];b=d;d=f+20|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];i=e;return}function afg(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function afh(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+32>>2]&2047](a,b);return}function afi(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+56>>2]&511](a|0,b,d)|0}function afj(){var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(103)|0;d=-(b+4|0)&15;c[b+d>>2]=b;e=b+(d+4)|0;g[e+4>>2]=1.0;g[e+8>>2]=1.0;g[e+12>>2]=1.0;g[e+16>>2]=0.0;c[e>>2]=20368;a[e+36|0]=1;c[e+32>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;c[e+48>>2]=0;return e|0}function afk(b,d,e,f,h,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0;k=i;i=i+32|0;l=k|0;c[9806]=(c[9806]|0)+1;m=aDx(103)|0;if((m|0)==0){n=0}else{o=-(m+4|0)&15;c[m+o>>2]=m;n=m+(o+4)|0}g[n+4>>2]=1.0;g[n+8>>2]=1.0;g[n+12>>2]=1.0;g[n+16>>2]=0.0;c[n>>2]=20368;a[n+36|0]=1;c[n+32>>2]=0;c[n+24>>2]=0;c[n+28>>2]=0;c[n+48>>2]=0;c[l+24>>2]=2;c[l+28>>2]=0;c[l>>2]=b;c[l+4>>2]=d;c[l+8>>2]=e;c[l+12>>2]=f;c[l+16>>2]=h;c[l+20>>2]=j;AY(n,l,2);i=k;return n|0}function afl(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function afm(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function afn(a){a=a|0;return(c[a+4>>2]|0)<7|0}function afo(a){a=a|0;return a+12|0}function afp(a){a=a|0;return(c[a+4>>2]|0)==31|0}function afq(a){a=a|0;return+(+g[a+44>>2])}function afr(a){a=a|0;return(c[a+4>>2]|0)<20|0}function afs(a){a=a|0;return(c[a+4>>2]|0)==28|0}function aft(a){a=a|0;return c[a+8>>2]|0}function afu(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function afv(a){a=a|0;return a+28|0}function afw(a){a=a|0;return(c[a+4>>2]|0)==32|0}function afx(a){a=a|0;return a+28|0}function afy(a){a=a|0;return c[a+52>>2]|0}function afz(a){a=a|0;return c[a+4>>2]|0}function afA(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function afB(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function afC(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function afD(a){a=a|0;return(c[a+4>>2]|0)<7|0}function afE(a){a=a|0;return a+12|0}function afF(a){a=a|0;return cA[c[(c[a>>2]|0)+52>>2]&4095](a|0)|0}function afG(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+44>>2]&511](a,b,d);return}function afH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function afI(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+48>>2]&511](a,b,d);return}function afJ(a,b){a=a|0;b=b|0;AY(a,b,2);return}function afK(a,b,c){a=a|0;b=b|0;c=c|0;AY(a,b,c);return}function afL(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function afM(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;di[c[(c[a>>2]|0)+12>>2]&63](a,b,d,e,f,g,h,i,j,0);return}function afN(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;di[c[(c[a>>2]|0)+12>>2]&63](a,b,d,e,f,g,h,i,j,k);return}function afO(a){a=a|0;return cA[c[(c[a>>2]|0)+40>>2]&4095](a)|0}function afP(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function afQ(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function afR(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function afS(a){a=a|0;return cA[c[(c[a>>2]|0)+104>>2]&4095](a)|0}function afT(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43800]|0)==0){if((b1(43800)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b,d);d=f;c[9722]=c[d>>2];c[9723]=c[d+4>>2];c[9724]=c[d+8>>2];c[9725]=c[d+12>>2];i=e;return 38888}function afU(a,b,d){a=a|0;b=b|0;d=+d;return c0[c[(c[a>>2]|0)+112>>2]&127](a,b,d)|0}function afV(a){a=a|0;return cA[c[(c[a>>2]|0)+88>>2]&4095](a)|0}function afW(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function afX(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a)|0}function afY(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43344]|0)==0){if((b1(43344)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9714]=c[d>>2];c[9715]=c[d+4>>2];c[9716]=c[d+8>>2];c[9717]=c[d+12>>2];i=e;return 38856}function afZ(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+100>>2]&511](a,b,d);return}function af_(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+116>>2]&511](a,b,d);return}function af$(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43640]|0)==0){if((b1(43640)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9710]=c[d>>2];c[9711]=c[d+4>>2];c[9712]=c[d+8>>2];c[9713]=c[d+12>>2];i=e;return 38840}function af0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function af1(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function af2(a){a=a|0;return cA[c[(c[a>>2]|0)+92>>2]&4095](a)|0}function af3(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function af4(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+96>>2]&1023](a,b,d,e);return}function af5(a){a=a|0;var b=0,d=0,e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0;c[9806]=(c[9806]|0)+1;b=aDx(75)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}c[d+8>>2]=0;e=d+12|0;g[e>>2]=1.0;g[d+16>>2]=1.0;g[d+20>>2]=1.0;g[d+24>>2]=0.0;g[d+44>>2]=.03999999910593033;c[d+52>>2]=0;c[d>>2]=26200;c[d+4>>2]=0;b=d;f=d;h=+ar4(b);i=+dh[c[(c[f>>2]|0)+44>>2]&1023](b);j=+dh[c[(c[f>>2]|0)+44>>2]&1023](b);k=+g[a+4>>2]*+g[d+16>>2]-i;i=+g[a+8>>2]*+g[d+20>>2]-j;g[d+28>>2]=+g[a>>2]*+g[e>>2]-h;g[d+32>>2]=k;g[d+36>>2]=i;g[d+40>>2]=0.0;return d|0}function af6(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function af7(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function af8(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function af9(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function aga(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function agb(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function agc(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a,b,d);return}function agd(a){a=a|0;return cA[c[(c[a>>2]|0)+84>>2]&4095](a|0)|0}function age(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43512]|0)==0){if((b1(43512)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9706]=c[d>>2];c[9707]=c[d+4>>2];c[9708]=c[d+8>>2];c[9709]=c[d+12>>2];i=e;return 38824}function agf(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 13:{d=+g[b+44>>2];break};case 0:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function agg(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function agh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function agi(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function agj(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function agk(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function agl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function agm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+108>>2]&1023](a,b,d,e);return}function agn(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a,b);return}function ago(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function agp(b){b=b|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0,j=0,k=0.0,l=0.0,m=0.0;do{if((a[43808]|0)==0){if((b1(43808)|0)==0){break}}}while(0);d=+g[b+28>>2];e=+g[b+32>>2];f=+g[b+36>>2];h=+g[b+40>>2];i=b|0;j=b;k=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);l=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);m=f+ +dh[c[(c[j>>2]|0)+44>>2]&1023](i);g[9702]=d+k;g[9703]=e+l;g[9704]=m;g[9705]=h;return 38808}function agq(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+12>>2]&511](a,b,d);return}function agr(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+8>>2]&511](a,b,d);return}function ags(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+16>>2]&127](a,b,d,e);return}function agt(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function agu(a){a=a|0;return cA[c[(c[a>>2]|0)+104>>2]&4095](a|0)|0}function agv(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43240]|0)==0){if((b1(43240)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9698]=c[d>>2];c[9699]=c[d+4>>2];c[9700]=c[d+8>>2];c[9701]=c[d+12>>2];i=e;return 38792}function agw(a,b,d){a=a|0;b=b|0;d=+d;return c0[c[(c[a>>2]|0)+112>>2]&127](a|0,b,d)|0}function agx(a){a=a|0;return cA[c[(c[a>>2]|0)+88>>2]&4095](a|0)|0}function agy(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function agz(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function agA(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+100>>2]&511](a|0,b,d);return}function agB(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43120]|0)==0){if((b1(43120)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9694]=c[d>>2];c[9695]=c[d+4>>2];c[9696]=c[d+8>>2];c[9697]=c[d+12>>2];i=e;return 38776}function agC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function agD(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function agE(a){a=a|0;return cA[c[(c[a>>2]|0)+92>>2]&4095](a|0)|0}function agF(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function agG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+96>>2]&1023](a|0,b,d,e);return}function agH(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43064]|0)==0){if((b1(43064)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9690]=c[d>>2];c[9691]=c[d+4>>2];c[9692]=c[d+8>>2];c[9693]=c[d+12>>2];i=e;return 38760}function agI(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function agJ(a){a=a|0;return(c[a+4>>2]|0)<20|0}function agK(a){a=a|0;return(c[a+4>>2]|0)==28|0}function agL(a){a=a|0;return c[a+8>>2]|0}function agM(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function agN(a){a=a|0;return+(+g[a+44>>2])}function agO(a){a=a|0;return(c[a+4>>2]|0)==32|0}function agP(a){a=a|0;return a+28|0}function agQ(a){a=a|0;return(c[a+4>>2]|0)==31|0}function agR(a){a=a|0;return c[a+52>>2]|0}function agS(a){a=a|0;return c[a+4>>2]|0}function agT(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function agU(a){a=a|0;return(c[a+4>>2]|0)==31|0}function agV(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function agW(a){a=a|0;return c[a+52>>2]|0}function agX(a){a=a|0;return(c[a+4>>2]|0)<7|0}function agY(a){a=a|0;return+(+g[a+28+((((c[a+52>>2]|0)+2|0)%3|0)<<2)>>2])}function agZ(a){a=a|0;return+(+g[a+28+(c[a+52>>2]<<2)>>2])}function ag_(a){a=a|0;return a+12|0}function ag$(a){a=a|0;return+(+g[a+44>>2])}function ag0(a){a=a|0;return(c[a+4>>2]|0)<20|0}function ag1(a){a=a|0;return(c[a+4>>2]|0)==28|0}function ag2(a){a=a|0;return c[a+8>>2]|0}function ag3(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function ag4(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function ag5(a){a=a|0;return(c[a+4>>2]|0)==32|0}function ag6(a){a=a|0;return a+28|0}function ag7(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function ag8(a){a=a|0;return c[a+4>>2]|0}function ag9(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43080]|0)==0){if((b1(43080)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b|0,d);d=f;c[9686]=c[d>>2];c[9687]=c[d+4>>2];c[9688]=c[d+8>>2];c[9689]=c[d+12>>2];i=e;return 38744}function aha(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function ahb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function ahc(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function ahd(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function ahe(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function ahf(a){a=a|0;aze(a);return}function ahg(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function ahh(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function ahi(a){a=a|0;return cA[c[(c[a>>2]|0)+84>>2]&4095](a|0)|0}function ahj(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function ahk(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 0:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function ahl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a|0,b,d,e);return}function ahm(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function ahn(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function aho(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function ahp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function ahq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+108>>2]&1023](a|0,b,d,e);return}function ahr(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function ahs(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;gx(a,b,c,d,e);return}function aht(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0;b=i;i=i+8|0;d=b|0;if((a|0)==0){i=b;return}e=c[9152]|0;f=e+16|0;h=(c[f>>2]|0)-1|0;c[f>>2]=h;do{if((h|0)==0){if((c[e+4>>2]|0)==0){j=e}else{b3(d|0,0)|0;k=c[10742]|0;l=e+8|0;g[l>>2]=+(((c[d+4>>2]|0)-(c[k+4>>2]|0)+(((c[d>>2]|0)-(c[k>>2]|0)|0)*1e6|0)-(c[e+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[l>>2];if((c[f>>2]|0)!=0){break}j=c[9152]|0}c[9152]=c[j+20>>2]}}while(0);aDB(a|0);i=b;return}function ahu(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function ahv(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43712]|0)==0){if((b1(43712)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9682]=c[d>>2];c[9683]=c[d+4>>2];c[9684]=c[d+8>>2];c[9685]=c[d+12>>2];i=e;return 38728}function ahw(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function ahx(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function ahy(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function ahz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function ahA(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function ahB(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function ahC(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43216]|0)==0){if((b1(43216)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9678]=c[d>>2];c[9679]=c[d+4>>2];c[9680]=c[d+8>>2];c[9681]=c[d+12>>2];i=e;return 38712}function ahD(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43408]|0)==0){if((b1(43408)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b|0,d);d=f;c[9670]=c[d>>2];c[9671]=c[d+4>>2];c[9672]=c[d+8>>2];c[9673]=c[d+12>>2];i=e;return 38680}function ahE(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function ahF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function ahG(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43544]|0)==0){if((b1(43544)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9666]=c[d>>2];c[9667]=c[d+4>>2];c[9668]=c[d+8>>2];c[9669]=c[d+12>>2];i=e;return 38664}function ahH(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function ahI(a,b){a=+a;b=+b;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(75)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}c[e+8>>2]=0;g[e+12>>2]=1.0;g[e+16>>2]=1.0;g[e+20>>2]=1.0;g[e+24>>2]=0.0;g[e+44>>2]=.03999999910593033;c[e+4>>2]=10;c[e>>2]=25144;c[e+52>>2]=0;g[e+28>>2]=b*.5;g[e+32>>2]=a;g[e+36>>2]=a;g[e+40>>2]=0.0;return e|0}function ahJ(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function ahK(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function ahL(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function ahM(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function ahN(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 0:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function ahO(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function ahP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a|0,b,d,e);return}function ahQ(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function ahR(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function ahS(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function ahT(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function ahU(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function ahV(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[44008]|0)==0){if((b1(44008)|0)==0){break}}}while(0);ah6(f,b,d);d=f;c[9662]=c[d>>2];c[9663]=c[d+4>>2];c[9664]=c[d+8>>2];c[9665]=c[d+12>>2];i=e;return 38648}function ahW(a){a=a|0;var b=0,d=0,e=0;while(1){b=aDx(1)|0;if((b|0)!=0){d=950;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){d=947;break}dC[e&63]()}if((d|0)==947){e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}else if((d|0)==950){aDo(a);return b|0}return 0}function ahX(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=a|0;d=+g[b>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+4|0;d=+g[b+4>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+8|0;d=+g[b+8>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+12|0;d=+g[b+12>>2];if(d>=+g[c>>2]){return}g[c>>2]=d;return}function ahY(a){a=a|0;return+(+g[a>>2])}function ahZ(a){a=a|0;return+(+g[a+4>>2])}function ah_(a){a=a|0;return+(+g[a+8>>2])}function ah$(a,b){a=a|0;b=b|0;var c=0;c=a|0;g[c>>2]=+g[c>>2]- +g[b>>2];c=a+4|0;g[c>>2]=+g[c>>2]- +g[b+4>>2];c=a+8|0;g[c>>2]=+g[c>>2]- +g[b+8>>2];c=a+12|0;g[c>>2]=+g[c>>2]- +g[b+12>>2];return a|0}function ah0(a){a=a|0;return+(+g[a+12>>2])}function ah1(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=a|0;d=+g[b>>2];if(+g[c>>2]<d){g[c>>2]=d}c=a+4|0;d=+g[b+4>>2];if(+g[c>>2]<d){g[c>>2]=d}c=a+8|0;d=+g[b+8>>2];if(+g[c>>2]<d){g[c>>2]=d}c=a+12|0;d=+g[b+12>>2];if(+g[c>>2]>=d){return}g[c>>2]=d;return}function ah2(a,b){a=a|0;b=b|0;var c=0;c=a|0;g[c>>2]=+g[c>>2]+ +g[b>>2];c=a+4|0;g[c>>2]=+g[c>>2]+ +g[b+4>>2];c=a+8|0;g[c>>2]=+g[c>>2]+ +g[b+8>>2];c=a+12|0;g[c>>2]=+g[c>>2]+ +g[b+12>>2];return a|0}function ah3(a,b){a=a|0;b=+b;var c=0;c=a|0;g[c>>2]=+g[c>>2]*b;c=a+4|0;g[c>>2]=+g[c>>2]*b;c=a+8|0;g[c>>2]=+g[c>>2]*b;c=a+12|0;g[c>>2]=+g[c>>2]*b;return a|0}function ah4(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;g[a>>2]=b;g[a+4>>2]=c;g[a+8>>2]=d;g[a+12>>2]=0.0;return}function ah5(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;g[a>>2]=b;g[a+4>>2]=c;g[a+8>>2]=d;g[a+12>>2]=e;return}function ah6(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0;e=+g[b>>2];f=+g[d>>2];h=e-f;i=+g[b+4>>2];j=+g[d+4>>2];k=i-j;l=+g[b+8>>2];m=+g[d+8>>2];n=l-m;o=+g[b+12>>2];p=+g[d+12>>2];q=o-p;r=e+f;e=i+j;i=l+m;l=o+p;if(h*h+k*k+n*n+q*q<r*r+e*e+i*i+l*l){b=a;s=d;c[b>>2]=c[s>>2];c[b+4>>2]=c[s+4>>2];c[b+8>>2]=c[s+8>>2];c[b+12>>2]=c[s+12>>2];return}else{g[a>>2]=-0.0-f;g[a+4>>2]=-0.0-j;g[a+8>>2]=-0.0-m;g[a+12>>2]=-0.0-p;return}}function ah7(b,c){b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;do{if((a[43960]|0)==0){if((b1(43960)|0)==0){break}}}while(0);d=+g[b>>2];e=+g[c>>2];f=d-e;h=+g[b+4>>2];i=+g[c+4>>2];j=h-i;k=+g[b+8>>2];l=+g[c+8>>2];m=k-l;n=+g[b+12>>2];o=+g[c+12>>2];p=n-o;q=d+e;d=h+i;h=k+l;k=n+o;if(f*f+j*j+m*m+p*p>q*q+d*d+h*h+k*k){r=e;s=i;t=l;u=o;g[9658]=r;g[9659]=s;g[9660]=t;g[9661]=u;return 38632}r=-0.0-e;s=-0.0-i;t=-0.0-l;u=-0.0-o;g[9658]=r;g[9659]=s;g[9660]=t;g[9661]=u;return 38632}function ah8(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;ah9(a,b,c,f);i=e;return}function ah9(a,b,c,d){a=a|0;b=+b;c=+c;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;e=b*.5;b=c*.5;c=+g[d>>2]*.5;f=+S(+e);h=+T(+e);e=+S(+b);i=+T(+b);b=+S(+c);j=+T(+c);c=b*i;k=j*e;l=b*e;e=j*i;g[a>>2]=c*f+k*h;g[a+4>>2]=l*h-e*f;g[a+8>>2]=k*f-c*h;g[a+12>>2]=l*f+e*h;return}function aia(a){a=a|0;var b=0,c=0.0,d=0,e=0.0,f=0,h=0.0,i=0,j=0.0,k=0.0;b=a|0;c=+g[b>>2];d=a+4|0;e=+g[d>>2];f=a+8|0;h=+g[f>>2];i=a+12|0;j=+g[i>>2];k=1.0/+Q(+(c*c+e*e+h*h+j*j));g[b>>2]=c*k;g[d>>2]=e*k;g[f>>2]=h*k;g[i>>2]=j*k;return a|0}function aib(b,c,d){b=b|0;c=c|0;d=+d;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0;do{if((a[44096]|0)==0){if((b1(44096)|0)==0){break}}}while(0);e=+aie(b,c);if(e==0.0){f=+g[b>>2];h=+g[b+4>>2];i=+g[b+8>>2];j=+g[b+12>>2];g[9654]=f;g[9655]=h;g[9656]=i;g[9657]=j;return 38616}k=1.0/+T(+e);l=+T(+((1.0-d)*e));m=+T(+(e*d));d=+g[b>>2];e=+g[c>>2];n=+g[b+4>>2];o=+g[c+4>>2];p=+g[b+8>>2];q=+g[c+8>>2];r=+g[b+12>>2];s=+g[c+12>>2];t=d*l;if(d*e+n*o+p*q+r*s<0.0){f=(t+m*(-0.0-e))*k;h=(n*l+m*(-0.0-o))*k;i=(p*l+m*(-0.0-q))*k;j=(r*l+m*(-0.0-s))*k;g[9654]=f;g[9655]=h;g[9656]=i;g[9657]=j;return 38616}else{f=(t+e*m)*k;h=(n*l+o*m)*k;i=(p*l+q*m)*k;j=(r*l+s*m)*k;g[9654]=f;g[9655]=h;g[9656]=i;g[9657]=j;return 38616}return 0}function aic(b){b=b|0;var c=0.0,d=0.0,e=0.0;do{if((a[44016]|0)==0){if((b1(44016)|0)==0){break}}}while(0);c=-0.0- +g[b+4>>2];d=-0.0- +g[b+8>>2];e=+g[b+12>>2];g[9650]=-0.0- +g[b>>2];g[9651]=c;g[9652]=d;g[9653]=e;return 38600}function aid(a,b){a=a|0;b=b|0;return+(+aie(a,b))}function aie(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;c=+g[a>>2];d=+g[a+4>>2];e=+g[a+8>>2];f=+g[a+12>>2];h=+g[b>>2];i=+g[b+4>>2];j=+g[b+8>>2];k=+g[b+12>>2];l=(c*h+d*i+e*j+f*k)/+Q(+((c*c+d*d+e*e+f*f)*(h*h+i*i+j*j+k*k)));if(l<-1.0){m=-1.0;n=+V(+m);return+n}if(l<=1.0){m=l;n=+V(+m);return+n}m=1.0;n=+V(+m);return+n}function aif(b){b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,h=0.0;do{if((a[44024]|0)==0){if((b1(44024)|0)==0){break}}}while(0);c=1.0- +R(+(+g[b+12>>2]),2.0);if(c<11920928955078125.0e-22){d=1.0;e=0.0;f=0.0}else{h=+Q(+c);d=+g[b>>2]/h;e=+g[b+4>>2]/h;f=+g[b+8>>2]/h}g[9646]=d;g[9647]=e;g[9648]=f;g[9649]=0.0;return 38584}function aig(){if((a[43032]|0)!=0){return 42736}if((b1(43032)|0)==0){return 42736}g[10684]=0.0;g[10685]=0.0;g[10686]=0.0;g[10687]=1.0;return 42736}function aih(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0;d=+g[b>>2];e=+g[b+4>>2];f=+g[b+8>>2];h=+Q(+(d*d+e*e+f*f));i=c*.5;c=+T(+i)/h;h=+S(+i);g[a>>2]=d*c;g[a+4>>2]=e*c;g[a+8>>2]=f*c;g[a+12>>2]=h;return}function aii(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0;e=b*.5;b=c*.5;c=d*.5;d=+S(+e);f=+T(+e);e=+S(+b);h=+T(+b);b=+S(+c);i=+T(+c);c=i*e;j=b*h;k=b*e;e=i*h;g[a>>2]=c*d-j*f;g[a+4>>2]=j*d+c*f;g[a+8>>2]=k*f-e*d;g[a+12>>2]=k*d+e*f;return}function aij(){var a=0,b=0,d=0;while(1){a=aDx(16)|0;if((a|0)!=0){b=1051;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==1051){return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function aik(a,b){a=a|0;b=+b;var d=0,e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;while(1){d=aDx(16)|0;if((d|0)!=0){e=1063;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){break}dC[f&63]()}if((e|0)==1063){h=+g[a>>2];i=+g[a+4>>2];j=+g[a+8>>2];k=+Q(+(h*h+i*i+j*j));l=b*.5;b=+T(+l)/k;k=+S(+l);g[d>>2]=h*b;g[d+4>>2]=i*b;g[d+8>>2]=j*b;g[d+12>>2]=k;return d|0}d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}function ail(a,b,d){a=+a;b=+b;d=+d;var e=0,f=0,h=0,j=0,k=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;while(1){h=aDx(16)|0;if((h|0)!=0){j=1075;break}k=(C=c[10744]|0,c[10744]=C+0,C);if((k|0)==0){break}dC[k&63]()}if((j|0)==1075){j=h;ah9(j,a,b,f);i=e;return j|0}j=cd(4)|0;c[j>>2]=19096;bF(j|0,34368,676);return 0}function aim(a,b){a=a|0;b=+b;var c=0.0,d=0;c=1.0/b;d=a|0;g[d>>2]=+g[d>>2]*c;d=a+4|0;g[d>>2]=+g[d>>2]*c;d=a+8|0;g[d>>2]=+g[d>>2]*c;d=a+12|0;g[d>>2]=+g[d>>2]*c;return a|0}function ain(a,b){a=a|0;b=+b;g[a+12>>2]=b;return}function aio(a,b){a=a|0;b=+b;g[a>>2]=b;return}function aip(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function aiq(a,b){a=a|0;b=+b;g[a+8>>2]=b;return}function air(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];e=+g[a+12>>2];return+(b*b+c*c+d*d+e*e)}function ais(a){a=a|0;return+(+g[a+12>>2])}function ait(a){a=a|0;return+(+g[a+4>>2])}function aiu(a){a=a|0;return+(+g[a>>2])}function aiv(a){a=a|0;return+(+g[a+8>>2])}function aiw(a,b){a=a|0;b=b|0;return+(+g[a>>2]*+g[b>>2]+ +g[a+4>>2]*+g[b+4>>2]+ +g[a+8>>2]*+g[b+8>>2]+ +g[a+12>>2]*+g[b+12>>2])}function aix(a){a=a|0;return(c[a+4>>2]|0)==31|0}function aiy(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function aiz(a){a=a|0;return c[a+52>>2]|0}function aiA(a){a=a|0;return(c[a+4>>2]|0)<7|0}function aiB(a){a=a|0;return+(+g[a+28+((((c[a+52>>2]|0)+2|0)%3|0)<<2)>>2])}function aiC(a){a=a|0;return+(+g[a+28+(c[a+52>>2]<<2)>>2])}function aiD(a){a=a|0;return a+12|0}function aiE(a){a=a|0;return+(+g[a+44>>2])}function aiF(a){a=a|0;return(c[a+4>>2]|0)<20|0}function aiG(a){a=a|0;return(c[a+4>>2]|0)==28|0}function aiH(a){a=a|0;return c[a+8>>2]|0}function aiI(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function aiJ(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function aiK(a){a=a|0;return(c[a+4>>2]|0)==32|0}function aiL(a){a=a|0;return a+28|0}function aiM(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function aiN(a){a=a|0;return c[a+4>>2]|0}function aiO(a){a=a|0;return+(+g[a+224>>2])}function aiP(a){a=a|0;return+(+g[a+220>>2])}function aiQ(a,b){a=a|0;b=b|0;c[a+212>>2]=b;return}function aiR(a){a=a|0;return+(+g[a+244>>2])}function aiS(a,b){a=a|0;b=+b;g[a+224>>2]=b;return}function aiT(a,b){a=a|0;b=b|0;c[a+196>>2]=b;return}function aiU(a,b){a=a|0;b=+b;g[a+184>>2]=b;return}function aiV(a){a=a|0;return a+132|0}function aiW(a){a=a|0;return(c[a+204>>2]&7|0)==0|0}function aiX(a,b){a=a|0;b=+b;g[a+248>>2]=b;return}function aiY(a){a=a|0;return c[a+208>>2]|0}function aiZ(a){a=a|0;return c[a+260>>2]|0}function ai_(a,b){a=a|0;b=b|0;c[a+236>>2]=b;return}function ai$(b){b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,h=0.0;do{if((a[43952]|0)==0){if((b1(43952)|0)==0){break}}}while(0);c=+g[b>>2];d=+g[b+4>>2];e=+g[b+8>>2];f=+g[b+12>>2];h=1.0/+Q(+(c*c+d*d+e*e+f*f));g[9642]=c*h;g[9643]=d*h;g[9644]=e*h;g[9645]=f*h;return 38568}function ai0(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ai1(a){a=a|0;var b=0.0,c=0.0;b=+g[a+12>>2];do{if(b<-1.0){c=-1.0}else{if(b<=1.0){c=b;break}c=1.0}}while(0);return+(+V(+c)*2.0)}function ai2(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];e=+g[a+12>>2];return+(+Q(+(b*b+c*c+d*d+e*e)))}function ai3(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function ai4(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43704]|0)==0){if((b1(43704)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9638]=c[d>>2];c[9639]=c[d+4>>2];c[9640]=c[d+8>>2];c[9641]=c[d+12>>2];i=e;return 38552}function ai5(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function ai6(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function ai7(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function ai8(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function ai9(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function aja(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function ajb(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43208]|0)==0){if((b1(43208)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9634]=c[d>>2];c[9635]=c[d+4>>2];c[9636]=c[d+8>>2];c[9637]=c[d+12>>2];i=e;return 38536}function ajc(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43400]|0)==0){if((b1(43400)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b|0,d);d=f;c[9626]=c[d>>2];c[9627]=c[d+4>>2];c[9628]=c[d+8>>2];c[9629]=c[d+12>>2];i=e;return 38504}function ajd(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function aje(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function ajf(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43536]|0)==0){if((b1(43536)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9622]=c[d>>2];c[9623]=c[d+4>>2];c[9624]=c[d+8>>2];c[9625]=c[d+12>>2];i=e;return 38488}function ajg(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function ajh(a,b){a=+a;b=+b;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(75)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}c[e+8>>2]=0;g[e+12>>2]=1.0;g[e+16>>2]=1.0;g[e+20>>2]=1.0;g[e+24>>2]=0.0;g[e+44>>2]=.03999999910593033;c[e+4>>2]=10;c[e>>2]=25040;c[e+52>>2]=2;g[e+28>>2]=a;g[e+32>>2]=a;g[e+36>>2]=b*.5;g[e+40>>2]=0.0;return e|0}function aji(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function ajj(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function ajk(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function ajl(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function ajm(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 0:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function ajn(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function ajo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a|0,b,d,e);return}function ajp(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function ajq(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function ajr(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function ajs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function ajt(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function aju(a,b,d){a=a|0;b=b|0;d=d|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,d,0);return}function ajv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,d,e);return}function ajw(a,b){a=a|0;b=b|0;var d=0;d=a+132|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function ajx(a,b){a=a|0;b=b|0;var d=0;d=a+148|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function ajy(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+20>>2]&511](a|0,b,d)|0}function ajz(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+68|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+84|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+100|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+116|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function ajA(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a|0,b);return}function ajB(a,b){a=a|0;b=b|0;dA[c[(c[a>>2]|0)+28>>2]&511](a,b,0);return}function ajC(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+28>>2]&511](a,b,d);return}function ajD(a,b){a=a|0;b=b|0;var d=0;if((c[a+252>>2]|0)==0){d=1;return d|0}d=dj[c[c[a>>2]>>2]&511](a|0,b)|0;return d|0}function ajE(a,b,d,e){a=+a;b=+b;d=+d;e=+e;var f=0,h=0,i=0;while(1){f=aDx(16)|0;if((f|0)!=0){h=1209;break}i=(C=c[10744]|0,c[10744]=C+0,C);if((i|0)==0){break}dC[i&63]()}if((h|0)==1209){g[f>>2]=a;g[f+4>>2]=b;g[f+8>>2]=d;g[f+12>>2]=e;return f|0}f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}function ajF(a){a=a|0;return a+148|0}function ajG(a,b){a=a|0;b=b|0;c[a+216>>2]=b;return}function ajH(a){a=a|0;var b=0;if((c[a+204>>2]&3|0)!=0){return}b=a+216|0;if(((c[b>>2]|0)-4|0)>>>0>=2){c[b>>2]=1}g[a+220>>2]=0.0;return}function ajI(a,b){a=a|0;b=b|0;do{if(!b){if((c[a+204>>2]&3|0)==0){break}return}}while(0);b=a+216|0;if(((c[b>>2]|0)-4|0)>>>0>=2){c[b>>2]=1}g[a+220>>2]=0.0;return}function ajJ(a,b){a=a|0;b=b|0;c[a+208>>2]=b;return}function ajK(a,b){a=a|0;b=+b;g[a+240>>2]=b;return}function ajL(a,b){a=a|0;b=+b;g[a+244>>2]=b;return}function ajM(a){a=a|0;return a+68|0}function ajN(a,b){a=a|0;b=b|0;return c[(c[a+268>>2]|0)+(b<<2)>>2]|0}function ajO(a){a=a|0;return(c[a+204>>2]&1|0)!=0|0}function ajP(a){a=a|0;return c[a+192>>2]|0}function ajQ(a){a=a|0;return c[a+216>>2]|0}function ajR(a){a=a|0;return c[a+188>>2]|0}function ajS(a){a=a|0;return+(+g[a+228>>2])}function ajT(a){a=a|0;return c[a+236>>2]|0}function ajU(a){a=a|0;return a+4|0}function ajV(a){a=a|0;var b=0.0;b=+g[a+248>>2];return+(b*b)}function ajW(a,b){a=a|0;b=b|0;c[a+192>>2]=b;return}function ajX(a){a=a|0;return+(+g[a+248>>2])}function ajY(a){a=a|0;return c[a+212>>2]|0}function ajZ(a){a=a|0;var b=0;b=c[a+216>>2]|0;return((b|0)==2?0:(b|0)!=5)|0}function aj_(a){a=a|0;return c[a+232>>2]|0}function aj$(a){a=a|0;return(c[a+204>>2]&4|0)==0|0}function aj0(a){a=a|0;var b=0;if((c[a+232>>2]|0)==4){b=a}else{b=0}return b|0}function aj1(a,b){a=a|0;b=b|0;var d=0;d=a+216|0;if(((c[d>>2]|0)-4|0)>>>0<2){return}c[d>>2]=b;return}function aj2(a){a=a|0;return c[a+200>>2]|0}function aj3(a){a=a|0;return+(+g[a+184>>2])}function aj4(a){a=a|0;return c[a+204>>2]|0}function aj5(a){a=a|0;return+(+g[a+240>>2])}function aj6(a){a=a|0;return a+164|0}function aj7(a,b){a=a|0;b=+b;g[a+220>>2]=b;return}function aj8(a){a=a|0;return c[a+196>>2]|0}function aj9(a,b){a=a|0;b=b|0;c[a+204>>2]=b;return}function aka(a){a=a|0;return(c[a+204>>2]&3|0)!=0|0}function akb(a,b){a=a|0;b=+b;g[a+228>>2]=b;return}function akc(a){a=a|0;return(c[a+180>>2]|0)!=0|0}function akd(a,b){a=a|0;b=b|0;c[a+188>>2]=b;return}function ake(a){a=a|0;return(c[a+204>>2]&2|0)!=0|0}function akf(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function akg(a){a=a|0;return(c[a+4>>2]|0)==31|0}function akh(a){a=a|0;return(c[a+4>>2]|0)<7|0}function aki(a){a=a|0;return(c[a+4>>2]|0)<20|0}function akj(a){a=a|0;return(c[a+4>>2]|0)==28|0}function akk(a){a=a|0;return c[a+8>>2]|0}function akl(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function akm(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function akn(a){a=a|0;return(c[a+4>>2]|0)==32|0}function ako(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function akp(a){a=a|0;return c[a+4>>2]|0}function akq(a){a=a|0;return+(+g[a+104>>2])}function akr(a){a=a|0;return+(+g[a+100>>2])}function aks(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0;f=i;i=i+128|0;h=f|0;j=f+64|0;g[h>>2]=1.0;aDD(h+4|0,0,16);g[h+20>>2]=1.0;aDD(h+24|0,0,16);g[h+40>>2]=1.0;c[h+44>>2]=0;k=h+48|0;l=b;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];g[j>>2]=1.0;aDD(j+4|0,0,16);g[j+20>>2]=1.0;aDD(j+24|0,0,16);g[j+40>>2]=1.0;c[j+44>>2]=0;l=j+48|0;k=d;c[l>>2]=c[k>>2];c[l+4>>2]=c[k+4>>2];c[l+8>>2]=c[k+8>>2];c[l+12>>2]=c[k+12>>2];k=a+260|0;if((c[k>>2]|0)<=0){i=f;return}l=a+268|0;a=e;d=0;do{b=c[(c[l>>2]|0)+(d<<2)>>2]|0;if(dj[c[(c[a>>2]|0)+8>>2]&511](e,c[b+188>>2]|0)|0){atG(h,j,b,c[b+192>>2]|0,b+4|0,e)}d=d+1|0;}while((d|0)<(c[k>>2]|0));i=f;return}function akt(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a|0)|0}function aku(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function akv(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;axT(a,b,c,d,e,0.0);return}function akw(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;axT(a,b,c,d,e,f);return}function akx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+164|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];do{if(+g[b>>2]!=1.0){f=1}else{if(+g[b+4>>2]!=1.0){f=1;break}f=+g[b+8>>2]!=1.0|0}}while(0);c[a+180>>2]=f;return}function aky(){var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(295)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}g[d+164>>2]=1.0;g[d+168>>2]=1.0;g[d+172>>2]=1.0;g[d+176>>2]=0.0;c[d+180>>2]=0;g[d+184>>2]=999999984306749400.0;aDD(d+188|0,0,16);c[d+204>>2]=1;c[d+208>>2]=-1;c[d+212>>2]=-1;c[d+216>>2]=1;g[d+220>>2]=0.0;g[d+224>>2]=.5;g[d+228>>2]=0.0;c[d+236>>2]=0;g[d+240>>2]=1.0;g[d+244>>2]=0.0;g[d+248>>2]=0.0;c[d+252>>2]=0;g[d+4>>2]=1.0;aDD(d+8|0,0,16);g[d+24>>2]=1.0;aDD(d+28|0,0,16);g[d+44>>2]=1.0;aDD(d+48|0,0,20);c[d>>2]=25632;a[d+272|0]=1;c[d+268>>2]=0;c[d+260>>2]=0;c[d+264>>2]=0;c[d+232>>2]=4;return d|0}function akz(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+20|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+36|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+52|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function akA(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function akB(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function akC(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function akD(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function akE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+60>>2]&1023](a,b,d,e);return}function akF(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function akG(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function akH(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function akI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function akJ(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function akK(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a))}function akL(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a,b);return}function akM(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function akN(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function akO(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function akP(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function akQ(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function akR(a){a=a|0;return cA[c[(c[a>>2]|0)+8>>2]&4095](a)|0}function akS(a,b){a=a|0;b=+b;g[a+84>>2]=b;return}function akT(a){a=a|0;return+(+g[a+96>>2])}function akU(a,b){a=a|0;b=+b;g[a+92>>2]=b;return}function akV(a,b){a=a|0;b=+b;g[a+88>>2]=b;return}function akW(a){a=a|0;return+(+g[a+92>>2])}function akX(a){a=a|0;return+(+g[a+84>>2])}function akY(a,b){a=a|0;b=+b;g[a+96>>2]=b;return}function akZ(a,b){a=a|0;b=+b;g[a+100>>2]=b;return}function ak_(a,b){a=a|0;b=+b;g[a+104>>2]=b;return}function ak$(a){a=a|0;return+(+g[a+88>>2])}function ak0(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function ak1(a){a=a|0;return a+8|0}function ak2(a){a=a|0;return c[a>>2]|0}function ak3(a,b){a=a|0;b=+b;g[a+40>>2]=b;return}function ak4(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function ak5(a){a=a|0;return+(+g[a+40>>2])}function ak6(a){a=a|0;return c[a+4>>2]|0}function ak7(a){a=a|0;return a+24|0}function ak8(a){a=a|0;return c[a+60>>2]|0}function ak9(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0,k=0,l=0,m=0;f=(+g[d>>2]- +g[a+12>>2])*+g[a+44>>2];h=(+g[d+4>>2]- +g[a+16>>2])*+g[a+48>>2];i=(+g[d+8>>2]- +g[a+20>>2])*+g[a+52>>2];do{if(f>0.0){d=c[a+8>>2]|0;if(f<+(d>>>0>>>0)){j=~~f&c[a+4>>2]|e;break}else{j=d&c[a+4>>2]|e;break}}else{j=e}}while(0);c[b>>2]=j;do{if(h>0.0){j=c[a+8>>2]|0;if(h<+(j>>>0>>>0)){k=~~h&c[a+4>>2]|e;break}else{k=j&c[a+4>>2]|e;break}}else{k=e}}while(0);c[b+4>>2]=k;if(i<=0.0){l=e;m=b+8|0;c[m>>2]=l;return}k=c[a+8>>2]|0;if(i<+(k>>>0>>>0)){l=~~i&c[a+4>>2]|e;m=b+8|0;c[m>>2]=l;return}else{l=k&c[a+4>>2]|e;m=b+8|0;c[m>>2]=l;return}}function ala(a){a=a|0;return c[a+104>>2]|0}function alb(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;e=i;i=i+16|0;f=e|0;h=e+8|0;g[b+84>>2]=+g[d+16>>2];g[b+88>>2]=+g[d+20>>2];g[b+92>>2]=+g[d+24>>2];g[b+96>>2]=+g[d+28>>2];g[b+104>>2]=+g[d+32>>2];j=b+4|0;b=d+40|0;k=c[b>>2]|0;c[f>>2]=0;ant(j,k,f);f=d|0;k=j+12|0;l=0;while(1){if((l|0)>=(c[b>>2]|0)){break}c[(c[k>>2]|0)+(l<<2)>>2]=c[(c[f>>2]|0)+(l<<2)>>2];l=l+1|0}l=d+36|0;f=c[l>>2]|0;c[h>>2]=0;ant(j+20|0,f,h);h=d+4|0;f=j+32|0;k=0;while(1){if((k|0)>=(c[l>>2]|0)){break}c[(c[f>>2]|0)+(k<<2)>>2]=c[(c[h>>2]|0)+(k<<2)>>2];k=k+1|0}k=d+44|0;h=c[k>>2]|0;f=j+44|0;l=c[f>>2]|0;L1395:do{if((h|0)<(l|0)){b=h;while(1){if((b|0)>=(l|0)){break}b=b+1|0}m=j+52|0}else{do{if((h|0)>(l|0)){b=j+48|0;if((c[b>>2]|0)>=(h|0)){break}do{if((h|0)==0){n=0}else{c[9806]=(c[9806]|0)+1;o=aDx((h<<4|4)+15|0)|0;if((o|0)==0){n=0;break}p=-(o+4|0)&15;c[o+p>>2]=o;n=o+(p+4)|0}}while(0);p=c[f>>2]|0;o=j+52|0;q=0;while(1){if((q|0)>=(p|0)){break}r=n+(q<<4)|0;if((r|0)!=0){s=r;r=(c[o>>2]|0)+(q<<4)|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2]}q=q+1|0}q=c[f>>2]|0;p=0;while(1){if((p|0)>=(q|0)){break}p=p+1|0}p=c[o>>2]|0;q=j+56|0;if((p|0)==0){t=q}else{if((a[q]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[p-16+12>>2]|0)}c[o>>2]=0;t=q}a[t]=1;c[o>>2]=n;c[b>>2]=h}}while(0);q=j+52|0;p=l;while(1){if((p|0)>=(h|0)){m=q;break L1395}r=c[q>>2]|0;s=r+(p<<4)|0;if((s|0)!=0){c[s>>2]=0;g[r+(p<<4)+4>>2]=6.2831854820251465;g[r+(p<<4)+8>>2]=6.2831854820251465;g[r+(p<<4)+12>>2]=6.2831854820251465}p=p+1|0}}}while(0);c[f>>2]=h;h=d+8|0;f=0;while(1){if((f|0)>=(c[k>>2]|0)){break}g[(c[m>>2]|0)+(f<<4)+4>>2]=+g[(c[h>>2]|0)+(f<<4)+4>>2];g[(c[m>>2]|0)+(f<<4)+8>>2]=+g[(c[h>>2]|0)+(f<<4)+8>>2];g[(c[m>>2]|0)+(f<<4)+12>>2]=+g[(c[h>>2]|0)+(f<<4)+12>>2];c[(c[m>>2]|0)+(f<<4)>>2]=c[(c[h>>2]|0)+(f<<4)>>2];f=f+1|0}f=d+48|0;h=c[f>>2]|0;m=j+64|0;k=c[m>>2]|0;L1437:do{if((h|0)<(k|0)){l=h;while(1){if((l|0)>=(k|0)){break}l=l+1|0}u=j+72|0}else{do{if((h|0)>(k|0)){l=j+68|0;if((c[l>>2]|0)>=(h|0)){break}do{if((h|0)==0){v=0}else{c[9806]=(c[9806]|0)+1;n=aDx((h<<2)+19|0)|0;if((n|0)==0){v=0;break}t=-(n+4|0)&15;c[n+t>>2]=n;v=n+(t+4)|0}}while(0);b=c[m>>2]|0;o=j+72|0;t=0;while(1){if((t|0)>=(b|0)){break}n=v+(t<<2)|0;if((n|0)!=0){c[n>>2]=c[(c[o>>2]|0)+(t<<2)>>2]}t=t+1|0}t=c[m>>2]|0;b=0;while(1){if((b|0)>=(t|0)){break}b=b+1|0}b=c[o>>2]|0;t=j+76|0;if((b|0)==0){w=t}else{if((a[t]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[b-4>>2]|0)}c[o>>2]=0;w=t}a[w]=1;c[o>>2]=v;c[l>>2]=h}}while(0);t=j+72|0;b=k;while(1){if((b|0)>=(h|0)){u=t;break L1437}n=(c[t>>2]|0)+(b<<2)|0;if((n|0)!=0){c[n>>2]=0}b=b+1|0}}}while(0);c[m>>2]=h;h=d+12|0;d=0;while(1){if((d|0)>=(c[f>>2]|0)){break}c[(c[u>>2]|0)+(d<<2)>>2]=c[(c[h>>2]|0)+(d<<2)>>2];d=d+1|0}i=e;return}function alc(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+12>>2]&511](a,b,d)|0}function ald(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ale(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function alf(a,b){a=a|0;b=b|0;var d=0;d=a+24|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function alg(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return alh(a|0,b,c,d,e,f,g,h)|0}function alh(a,d,e,f,g,h,j,k){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;l=i;i=i+32|0;m=l|0;n=l+16|0;ak9(a,m|0,d,0);ak9(a,n|0,e,1);e=a+72|0;d=c[e>>2]|0;o=a+68|0;p=c[o>>2]|0;c[e>>2]=c[p+(d*76|0)+48>>2];e=a+60|0;c[e>>2]=(c[e>>2]|0)+1;c[p+(d*76|0)+12>>2]=d;c[p+(d*76|0)>>2]=f;b[p+(d*76|0)+4>>1]=g;b[p+(d*76|0)+6>>1]=h;c[p+(d*76|0)+8>>2]=k;k=c[e>>2]<<1;e=k|1;h=k-1|0;g=0;while(1){if(g>>>0>=3){break}f=(c[o>>2]|0)+60+(g<<2)|0;c[f>>2]=(c[f>>2]|0)+2;f=a+76+(g<<2)|0;q=c[f>>2]|0;r=q+(h<<3)|0;s=q+(e<<3)|0;q=c[r+4>>2]|0;c[s>>2]=c[r>>2];c[s+4>>2]=q;c[(c[f>>2]|0)+(h<<3)>>2]=c[m+(g<<2)>>2];c[(c[f>>2]|0)+(h<<3)+4>>2]=d;c[(c[f>>2]|0)+(k<<3)>>2]=c[n+(g<<2)>>2];c[(c[f>>2]|0)+(k<<3)+4>>2]=d;c[p+(d*76|0)+48+(g<<2)>>2]=h;c[p+(d*76|0)+60+(g<<2)>>2]=k;g=g+1|0}am6(a,0,c[p+(d*76|0)+48>>2]|0,0);anc(a,0,c[p+(d*76|0)+60>>2]|0,j,0);am6(a,1,c[p+(d*76|0)+52>>2]|0,0);anc(a,1,c[p+(d*76|0)+64>>2]|0,j,0);am6(a,2,c[p+(d*76|0)+56>>2]|0,1);anc(a,2,c[p+(d*76|0)+68>>2]|0,j,1);i=l;return d|0}function ali(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ak9(a|0,b,c,d);return}function alj(a,b,c){a=a|0;b=b|0;c=c|0;alk(a|0,b,c);return}function alk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+68|0;f=c[e>>2]|0;g=a+100|0;h=c[g>>2]|0;if(!(cA[c[(c[h>>2]|0)+56>>2]&4095](h)|0)){h=c[g>>2]|0;dA[c[(c[h>>2]|0)+16>>2]&511](h|0,f+(b*76|0)|0,d)}h=a+60|0;g=c[h>>2]<<1;i=0;while(1){if((i|0)>=3){break}j=(c[e>>2]|0)+60+(i<<2)|0;c[j>>2]=(c[j>>2]|0)-2;i=i+1|0}i=a+8|0;j=g-1|0;g=0;while(1){if((g|0)>=3){break}k=c[a+76+(g<<2)>>2]|0;l=c[f+(b*76|0)+60+(g<<2)>>2]|0;c[k+(l<<3)>>2]=c[i>>2];ana(a,g,l,0);l=c[f+(b*76|0)+48+(g<<2)>>2]|0;c[k+(l<<3)>>2]=c[i>>2];anb(a,g,l,d,0);c[k+(j<<3)+4>>2]=0;c[k+(j<<3)>>2]=c[i>>2];g=g+1|0}g=a+72|0;c[(c[e>>2]|0)+(b*76|0)+48>>2]=c[g>>2];c[g>>2]=b;c[h>>2]=(c[h>>2]|0)-1;return}function all(a,b){a=a|0;b=b|0;cg(a|0,b|0);return}function alm(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0;while(1){h=aDx(44)|0;if((h|0)!=0){i=1465;break}j=(C=c[10744]|0,c[10744]=C+0,C);if((j|0)==0){break}dC[j&63]()}if((i|0)==1465){c[h>>2]=a;c[h+4>>2]=b;b=h+8|0;a=d;c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];a=h+24|0;b=e;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];g[h+40>>2]=f;return h|0}h=cd(4)|0;c[h>>2]=19096;bF(h|0,34368,676);return 0}function aln(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a=b;b=d;d=0;while(1){if((d|0)>=3){e=1;f=1474;break}if((c[a+60+(d<<2)>>2]|0)>>>0<(c[b+48+(d<<2)>>2]|0)>>>0){e=0;f=1472;break}if((c[b+60+(d<<2)>>2]|0)>>>0<(c[a+48+(d<<2)>>2]|0)>>>0){e=0;f=1473;break}d=d+1|0}if((f|0)==1472){return e|0}else if((f|0)==1473){return e|0}else if((f|0)==1474){return e|0}return 0}function alo(a,b){a=a|0;b=b|0;c[a+104>>2]=b;return}function alp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0;f=c[a+76>>2]|0;h=(c[f+(c[b+60>>2]<<3)>>2]|0)+1&65535;i=c[a+80>>2]|0;j=(c[i+(c[b+64>>2]<<3)>>2]|0)+1&65535;k=c[a+84>>2]|0;l=(c[k+(c[b+68>>2]<<3)>>2]|0)+1&65535;m=a+44|0;n=+((c[f+(c[b+48>>2]<<3)>>2]&65535)>>>0)/+g[m>>2];f=a+48|0;o=+((c[i+(c[b+52>>2]<<3)>>2]&65535)>>>0)/+g[f>>2];i=a+52|0;p=+((c[k+(c[b+56>>2]<<3)>>2]&65535)>>>0)/+g[i>>2];b=d|0;g[b>>2]=n;k=d+4|0;g[k>>2]=o;q=d+8|0;g[q>>2]=p;g[d+12>>2]=0.0;d=a+12|0;g[b>>2]=n+ +g[d>>2];b=a+16|0;g[k>>2]=o+ +g[b>>2];k=a+20|0;g[q>>2]=p+ +g[k>>2];p=+((h&65535)>>>0)/+g[m>>2];o=+((j&65535)>>>0)/+g[f>>2];n=+((l&65535)>>>0)/+g[i>>2];i=e|0;g[i>>2]=p;l=e+4|0;g[l>>2]=o;f=e+8|0;g[f>>2]=n;g[e+12>>2]=0.0;g[i>>2]=p+ +g[d>>2];g[l>>2]=o+ +g[b>>2];g[f>>2]=n+ +g[k>>2];return}function alq(a,b){a=a|0;b=b|0;return(c[a+68>>2]|0)+(b*76|0)|0}function alr(a){a=a|0;return(c[a+4>>2]|0)==31|0}function als(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function alt(a){a=a|0;return+(+g[a+44>>2])}function alu(a){a=a|0;return(c[a+4>>2]|0)<7|0}function alv(a){a=a|0;return+(+g[a+28>>2]*+g[a+12>>2])}function alw(a){a=a|0;return a+12|0}function alx(a,b){a=a|0;b=+b;g[a+28>>2]=b;g[a+44>>2]=b;return}function aly(a){a=a|0;return(c[a+4>>2]|0)<20|0}function alz(a){a=a|0;return(c[a+4>>2]|0)==28|0}function alA(a){a=a|0;return c[a+8>>2]|0}function alB(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function alC(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function alD(a){a=a|0;return(c[a+4>>2]|0)==32|0}function alE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+32|0;g=f|0;h=f+16|0;j=c[(c[a>>2]|0)+24>>2]|0;aDD(g|0,0,16);aDD(h|0,0,16);c_[j&127](a|0,b,d,e,g,h);i=f;return}function alF(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;i=i+16|0;h=g|0;j=c[(c[a>>2]|0)+24>>2]|0;aDD(h|0,0,16);c_[j&127](a|0,b,d,e,f,h);i=g;return}function alG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;c_[c[(c[a>>2]|0)+24>>2]&127](a|0,b,d,e,f,g);return}function alH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+16>>2]&255](a|0,b,d,e,f);return}function alI(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+48>>2]&2047](a|0,b);return}function alJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+20>>2]&1023](a|0,b,d,e);return}function alK(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;alL(a|0,b,c,d,e);return}function alL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=i;i=i+32|0;h=g|0;j=g+16|0;k=c[a+68>>2]|0;ak9(a,h|0,d,0);ak9(a,j|0,e,1);e=0;while(1){if((e|0)>=3){break}d=c[k+(b*76|0)+48+(e<<2)>>2]|0;l=c[k+(b*76|0)+60+(e<<2)>>2]|0;m=c[h+(e<<2)>>2]|0;n=a+76+(e<<2)|0;o=c[n>>2]|0;p=o+(d<<3)|0;q=m-(c[p>>2]|0)|0;r=c[j+(e<<2)>>2]|0;s=r-(c[o+(l<<3)>>2]|0)|0;c[p>>2]=m;c[(c[n>>2]|0)+(l<<3)>>2]=r;if((q|0)<0){am6(a,e,d,1)}if((s|0)>0){ana(a,e,l,1)}if((q|0)>0){anb(a,e,d,f,1)}if((s|0)<0){anc(a,e,l,f,1)}e=e+1|0}i=g;return}function alM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(143)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}f=e;aq7(f,a,b,15e5,0,0);return f|0}function alN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;c[9806]=(c[9806]|0)+1;e=aDx(143)|0;if((e|0)==0){f=0}else{g=-(e+4|0)&15;c[e+g>>2]=e;f=e+(g+4)|0}g=f;aq7(g,a,b,d,0,0);return g|0}function alO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;c[9806]=(c[9806]|0)+1;f=aDx(143)|0;if((f|0)==0){g=0}else{h=-(f+4|0)&15;c[f+h>>2]=f;g=f+(h+4)|0}h=g;aq7(h,a,b,d,e,0);return h|0}function alP(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;c[9806]=(c[9806]|0)+1;g=aDx(143)|0;if((g|0)==0){h=0}else{i=-(g+4|0)&15;c[g+i>>2]=g;h=g+(i+4)|0}i=h;aq7(i,a,b,d,e,f);return i|0}function alQ(a){a=a|0;ct[c[(c[a>>2]|0)+52>>2]&2047](a|0);return}function alR(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return c5[c[(c[a>>2]|0)+8>>2]&63](a|0,b,d,e,f,g,h,i,j)|0}function alS(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function alT(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+32>>2]&2047](a|0,b);return}function alU(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function alV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+28>>2]&1023](a|0,b,d,e);return}function alW(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+44>>2]&511](a|0,b,d);return}function alX(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,d);return}function alY(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function alZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;return+(+db[c[(c[a>>2]|0)+12>>2]&127](a,b,d,e,f))}function al_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+8>>2]&255](a,b,d,e,f);return}function al$(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function al0(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43728]|0)==0){if((b1(43728)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b,d);d=f;c[9618]=c[d>>2];c[9619]=c[d+4>>2];c[9620]=c[d+8>>2];c[9621]=c[d+12>>2];i=e;return 38472}function al1(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function al2(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function al3(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function al4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function al5(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function al6(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function al7(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43264]|0)==0){if((b1(43264)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9614]=c[d>>2];c[9615]=c[d+4>>2];c[9616]=c[d+8>>2];c[9617]=c[d+12>>2];i=e;return 38456}function al8(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function al9(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function ama(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function amb(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43584]|0)==0){if((b1(43584)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9610]=c[d>>2];c[9611]=c[d+4>>2];c[9612]=c[d+8>>2];c[9613]=c[d+12>>2];i=e;return 38440}function amc(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function amd(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a))}function ame(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function amf(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a,b);return}function amg(a){a=+a;var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(71)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}c[d+8>>2]=0;g[d+12>>2]=1.0;g[d+16>>2]=1.0;g[d+20>>2]=1.0;g[d+24>>2]=0.0;c[d>>2]=25528;c[d+4>>2]=8;g[d+28>>2]=a;g[d+44>>2]=a;return d|0}function amh(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43424]|0)==0){if((b1(43424)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9606]=c[d>>2];c[9607]=c[d+4>>2];c[9608]=c[d+8>>2];c[9609]=c[d+12>>2];i=e;return 38424}function ami(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 10:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 0:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function amj(){return 0}function amk(a){a=a|0;return}function aml(a){a=a|0;return}function amm(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return}function amn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return}function amo(a){a=a|0;return a+28|0}function amp(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function amq(a){a=a|0;return c[a+4>>2]|0}function amr(a,b){a=a|0;b=b|0;c[a+144>>2]=b;return}function ams(a){a=a|0;return a+104|0}function amt(b,c,d){b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0;e=+g[c>>2]+-1.0;f=+g[c+4>>2]+-1.0;h=+g[c+8>>2]+-1.0;g[b+4>>2]=e;g[b+8>>2]=f;g[b+12>>2]=h;g[b+16>>2]=0.0;i=+g[d>>2]+1.0;j=+g[d+4>>2]+1.0;k=+g[d+8>>2]+1.0;g[b+20>>2]=i;g[b+24>>2]=j;g[b+28>>2]=k;g[b+32>>2]=0.0;g[b+36>>2]=65533.0/(i-e);g[b+40>>2]=65533.0/(j-f);g[b+44>>2]=65533.0/(k-h);g[b+48>>2]=0.0;a[b+60|0]=1;return}function amu(b,c,d,e){b=b|0;c=c|0;d=d|0;e=+e;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;f=+g[c>>2]-e;h=+g[c+4>>2]-e;i=+g[c+8>>2]-e;g[b+4>>2]=f;g[b+8>>2]=h;g[b+12>>2]=i;g[b+16>>2]=0.0;j=+g[d>>2]+e;k=+g[d+4>>2]+e;l=+g[d+8>>2]+e;g[b+20>>2]=j;g[b+24>>2]=k;g[b+28>>2]=l;g[b+32>>2]=0.0;g[b+36>>2]=65533.0/(j-f);g[b+40>>2]=65533.0/(k-h);g[b+44>>2]=65533.0/(l-i);g[b+48>>2]=0.0;a[b+60|0]=1;return}function amv(b){b=b|0;return(a[b+60|0]&1)!=0|0}function amw(b){b=b|0;return(c[b+168>>2]<<5)+172+(c[b+56>>2]<<((a[b+60|0]&1)==0?6:4))|0}function amx(a){a=a|0;return a+124|0}function amy(a){a=a|0;return a+148|0}function amz(a){a=a|0;return c[a>>2]|0}function amA(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function amB(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function amC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=c[b>>2]|0;b=c[d>>2]|0;if((e|0)==(b|0)){f=1;return f|0}else{g=e;h=b}while(1){i=a[g]|0;j=a[h]|0;if(i<<24>>24!=j<<24>>24){k=1618;break}if(i<<24>>24==0){l=0;break}g=g+1|0;h=h+1|0}do{if((k|0)==1618){h=(i&255)-(j&255)|0;if((h|0)<0){l=-1;break}else{m=h}l=(m|0)>0?1:m}}while(0);f=(l|0)==0;return f|0}function amD(a){a=a|0;return c[a+4>>2]|0}function amE(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;b=d;d=c;while(1){e=a[d]|0;f=a[b]|0;if(e<<24>>24!=f<<24>>24){break}if(e<<24>>24==0){g=0;h=1633;break}b=b+1|0;d=d+1|0}if((h|0)==1633){return g|0}h=(e&255)-(f&255)|0;if((h|0)<0){g=-1;return g|0}else{g=h;return((g|0)>0?1:g)|0}return 0}function amF(a){a=a|0;return c[a+4>>2]|0}function amG(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function amH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function amI(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function amJ(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function amK(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function amL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function amM(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function amN(a){a=a|0;azj(a);return}function amO(a,b,d){a=a|0;b=b|0;d=d|0;return(cS[c[(c[a>>2]|0)+16>>2]&511](a,b,d)|0)!=0|0}function amP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+8>>2]&127](a,b,d,e)|0}function amQ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qX(a,b,c,d);return}function amR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;azn(a,b,c,d);return}function amS(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0;h=i;i=i+32|0;j=h|0;k=h+16|0;aDD(j|0,0,16);aDD(k|0,0,16);if((a[b+60|0]&1)==0){azp(b,d,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],j,k);i=h;return}else{azq(b,d,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],j,k,c[b+56>>2]|0);i=h;return}}function amT(a,b,c){a=a|0;b=b|0;c=c|0;return azs(a,b,c)|0}function amU(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;rD(a,b,c,d);return}function amV(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function amW(a){a=a|0;return cA[c[(c[a>>2]|0)+12>>2]&4095](a)|0}function amX(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function amY(){var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(191)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}c[d>>2]=25328;c[d+52>>2]=278;a[d+60|0]=0;a[d+80|0]=1;c[d+76>>2]=0;c[d+68>>2]=0;c[d+72>>2]=0;a[d+100|0]=1;c[d+96>>2]=0;c[d+88>>2]=0;c[d+92>>2]=0;a[d+120|0]=1;c[d+116>>2]=0;c[d+108>>2]=0;c[d+112>>2]=0;a[d+140|0]=1;c[d+136>>2]=0;c[d+128>>2]=0;c[d+132>>2]=0;c[d+144>>2]=0;a[d+164|0]=1;c[d+160>>2]=0;c[d+152>>2]=0;c[d+156>>2]=0;c[d+168>>2]=0;g[d+4>>2]=-3.4028234663852886e+38;g[d+8>>2]=-3.4028234663852886e+38;g[d+12>>2]=-3.4028234663852886e+38;g[d+16>>2]=0.0;g[d+20>>2]=3.4028234663852886e+38;g[d+24>>2]=3.4028234663852886e+38;g[d+28>>2]=3.4028234663852886e+38;g[d+32>>2]=0.0;return d|0}function amZ(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function am_(b,c){b=b|0;c=c|0;var d=0.0,f=0.0;do{if((a[43920]|0)==0){if((b1(43920)|0)==0){break}}}while(0);d=+((e[c+2>>1]|0)>>>0)/+g[b+40>>2]+ +g[b+8>>2];f=+((e[c+4>>1]|0)>>>0)/+g[b+44>>2]+ +g[b+12>>2];g[9602]=+((e[c>>1]|0)>>>0)/+g[b+36>>2]+ +g[b+4>>2];g[9603]=d;g[9604]=f;g[9605]=0.0;return 38408}function am$(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;if((a[b+60|0]&1)==0){azp(b,d,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],h,i);return}else{azq(b,d,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],h,i,c[b+56>>2]|0);return}}function am0(a){a=a|0;if((a|0)==0){return}aDB(a);return}function am1(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+8>>2]&511](a,b,d)|0}function am2(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+12>>2]&127](a,b,d,e)|0}function am3(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function am4(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+16>>2]&511](a,b,d);return}function am5(a){a=a|0;if((a|0)==0){return}aDB(a);return}function am6(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;f=c[a+76+(b<<2)>>2]|0;g=c[f+(d<<3)+4>>2]|0;h=a+68|0;i=c[h>>2]|0;j=i+(g*76|0)+48+(b<<2)|0;k=1<<b&3;l=1<<k&3;m=i+(g*76|0)+60+(k<<2)|0;n=a+100|0;o=i+(g*76|0)|0;p=a+104|0;a=i+(g*76|0)+48+(k<<2)|0;q=i+(g*76|0)+60+(l<<2)|0;r=i+(g*76|0)+48+(l<<2)|0;g=f+(d<<3)|0;i=f+(d-1<<3)|0;while(1){d=c[i>>2]|0;if((c[g>>2]|0)>>>0>=d>>>0){break}f=c[i+4>>2]|0;s=c[h>>2]|0;if((d&1|0)==0){d=s+(f*76|0)+48+(b<<2)|0;c[d>>2]=(c[d>>2]|0)+1}else{do{if(e){if((c[m>>2]|0)>>>0<(c[s+(f*76|0)+48+(k<<2)>>2]|0)>>>0){break}if((c[s+(f*76|0)+60+(k<<2)>>2]|0)>>>0<(c[a>>2]|0)>>>0){break}if((c[q>>2]|0)>>>0<(c[s+(f*76|0)+48+(l<<2)>>2]|0)>>>0){break}if((c[s+(f*76|0)+60+(l<<2)>>2]|0)>>>0<(c[r>>2]|0)>>>0){break}d=c[n>>2]|0;t=d|0;u=c[(c[d>>2]|0)+8>>2]|0;d=s+(f*76|0)|0;cS[u&511](t,o,d)|0;t=c[p>>2]|0;if((t|0)==0){break}u=c[(c[t>>2]|0)+8>>2]|0;cS[u&511](t,o,d)|0}}while(0);d=s+(f*76|0)+60+(b<<2)|0;c[d>>2]=(c[d>>2]|0)+1}c[j>>2]=(c[j>>2]|0)-1;d=g;t=c[d>>2]|0;u=c[d+4>>2]|0;v=i;w=c[v+4>>2]|0;c[d>>2]=c[v>>2];c[d+4>>2]=w;c[v>>2]=t;c[v+4>>2]=u;g=g-8|0;i=i-8|0}return}function am7(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;while(1){d=aDx(8)|0;if((d|0)!=0){break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){f=1720;break}dC[e&63]()}if((f|0)==1720){f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}f=d;c[d>>2]=b;e=0;g=-2128831035;while(1){h=a[b+e|0]|0;if(h<<24>>24==0){break}e=e+1|0;g=aa(g^h<<24>>24,16777619)|0}c[d+4>>2]=g;return f|0}function am8(){var a=0,b=0,d=0;while(1){a=aDx(4)|0;if((a|0)!=0){b=1738;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==1738){c[a>>2]=22888;return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function am9(a){a=a|0;return}function ana(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;f=c[a+76+(b<<2)>>2]|0;g=c[f+(d<<3)+4>>2]|0;h=a+68|0;i=c[h>>2]|0;j=1<<b&3;k=1<<j&3;l=i+(g*76|0)+60+(j<<2)|0;m=a+100|0;n=a+104|0;a=i+(g*76|0)+48+(j<<2)|0;o=i+(g*76|0)+60+(k<<2)|0;p=i+(g*76|0)+48+(k<<2)|0;q=i+(g*76|0)+60+(b<<2)|0;g=f+(d<<3)|0;i=f+(d+1<<3)|0;while(1){d=c[i+4>>2]|0;if((d|0)==0){r=1755;break}f=c[i>>2]|0;if((c[g>>2]|0)>>>0<f>>>0){r=1756;break}s=c[h>>2]|0;if((f&1|0)==0){do{if(e){if((c[l>>2]|0)>>>0<(c[s+(d*76|0)+48+(j<<2)>>2]|0)>>>0){break}if((c[s+(d*76|0)+60+(j<<2)>>2]|0)>>>0<(c[a>>2]|0)>>>0){break}if((c[o>>2]|0)>>>0<(c[s+(d*76|0)+48+(k<<2)>>2]|0)>>>0){break}if((c[s+(d*76|0)+60+(k<<2)>>2]|0)>>>0<(c[p>>2]|0)>>>0){break}f=c[m>>2]|0;t=f|0;u=c[(c[f>>2]|0)+8>>2]|0;f=s+((c[g+4>>2]|0)*76|0)|0;v=s+(d*76|0)|0;cS[u&511](t,f,v)|0;t=c[n>>2]|0;if((t|0)==0){break}u=c[(c[t>>2]|0)+8>>2]|0;cS[u&511](t,f,v)|0}}while(0);v=s+(d*76|0)+48+(b<<2)|0;c[v>>2]=(c[v>>2]|0)-1}else{v=s+(d*76|0)+60+(b<<2)|0;c[v>>2]=(c[v>>2]|0)-1}c[q>>2]=(c[q>>2]|0)+1;v=g;f=c[v>>2]|0;t=c[v+4>>2]|0;u=i;w=c[u+4>>2]|0;c[v>>2]=c[u>>2];c[v+4>>2]=w;c[u>>2]=f;c[u+4>>2]=t;g=g+8|0;i=i+8|0}if((r|0)==1755){return}else if((r|0)==1756){return}}function anb(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=c[a+76+(b<<2)>>2]|0;h=a+68|0;i=(c[h>>2]|0)+((c[g+(d<<3)+4>>2]|0)*76|0)+48+(b<<2)|0;j=1<<b&3;k=1<<j&3;l=a+100|0;m=a+104|0;a=g+(d<<3)|0;n=g+(d+1<<3)|0;while(1){d=c[n+4>>2]|0;if((d|0)==0){o=1773;break}g=c[n>>2]|0;if((c[a>>2]|0)>>>0<g>>>0){o=1772;break}p=c[h>>2]|0;if((g&1|0)==0){g=p+(d*76|0)+48+(b<<2)|0;c[g>>2]=(c[g>>2]|0)-1}else{g=c[a+4>>2]|0;do{if(f){if((c[p+(g*76|0)+60+(j<<2)>>2]|0)>>>0<(c[p+(d*76|0)+48+(j<<2)>>2]|0)>>>0){break}if((c[p+(d*76|0)+60+(j<<2)>>2]|0)>>>0<(c[p+(g*76|0)+48+(j<<2)>>2]|0)>>>0){break}if((c[p+(g*76|0)+60+(k<<2)>>2]|0)>>>0<(c[p+(d*76|0)+48+(k<<2)>>2]|0)>>>0){break}if((c[p+(d*76|0)+60+(k<<2)>>2]|0)>>>0<(c[p+(g*76|0)+48+(k<<2)>>2]|0)>>>0){break}q=c[l>>2]|0;r=q|0;s=c[(c[q>>2]|0)+12>>2]|0;q=p+(g*76|0)|0;t=p+(d*76|0)|0;dE[s&127](r,q,t,e)|0;r=c[m>>2]|0;if((r|0)==0){break}s=c[(c[r>>2]|0)+12>>2]|0;dE[s&127](r,q,t,e)|0}}while(0);g=p+(d*76|0)+60+(b<<2)|0;c[g>>2]=(c[g>>2]|0)-1}c[i>>2]=(c[i>>2]|0)+1;g=a;t=c[g>>2]|0;q=c[g+4>>2]|0;r=n;s=c[r+4>>2]|0;c[g>>2]=c[r>>2];c[g+4>>2]=s;c[r>>2]=t;c[r+4>>2]=q;a=a+8|0;n=n+8|0}if((o|0)==1772){return}else if((o|0)==1773){return}}function anc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=c[a+76+(b<<2)>>2]|0;h=a+68|0;i=1<<b&3;j=1<<i&3;k=a+100|0;l=a+104|0;a=(c[h>>2]|0)+((c[g+(d<<3)+4>>2]|0)*76|0)+60+(b<<2)|0;m=g+(d<<3)|0;n=g+(d-1<<3)|0;while(1){d=c[n>>2]|0;if((c[m>>2]|0)>>>0>=d>>>0){break}g=c[n+4>>2]|0;o=c[h>>2]|0;if((d&1|0)==0){d=c[m+4>>2]|0;do{if(f){if((c[o+(d*76|0)+60+(i<<2)>>2]|0)>>>0<(c[o+(g*76|0)+48+(i<<2)>>2]|0)>>>0){break}if((c[o+(g*76|0)+60+(i<<2)>>2]|0)>>>0<(c[o+(d*76|0)+48+(i<<2)>>2]|0)>>>0){break}if((c[o+(d*76|0)+60+(j<<2)>>2]|0)>>>0<(c[o+(g*76|0)+48+(j<<2)>>2]|0)>>>0){break}if((c[o+(g*76|0)+60+(j<<2)>>2]|0)>>>0<(c[o+(d*76|0)+48+(j<<2)>>2]|0)>>>0){break}p=c[k>>2]|0;q=p|0;r=c[(c[p>>2]|0)+12>>2]|0;p=o+(d*76|0)|0;s=o+(g*76|0)|0;dE[r&127](q,p,s,e)|0;q=c[l>>2]|0;if((q|0)==0){break}r=c[(c[q>>2]|0)+12>>2]|0;dE[r&127](q,p,s,e)|0}}while(0);d=o+(g*76|0)+48+(b<<2)|0;c[d>>2]=(c[d>>2]|0)+1}else{d=o+(g*76|0)+60+(b<<2)|0;c[d>>2]=(c[d>>2]|0)+1}c[a>>2]=(c[a>>2]|0)-1;d=m;s=c[d>>2]|0;p=c[d+4>>2]|0;q=n;r=c[q+4>>2]|0;c[d>>2]=c[q>>2];c[d+4>>2]=r;c[q>>2]=s;c[q+4>>2]=p;m=m-8|0;n=n-8|0}return}function and(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,x=0;h=c[a+68+(d<<2)>>2]|0;i=f&65535;f=a+60|0;j=c[f>>2]|0;k=e[h+(i<<2)+2>>1]|0;l=j+(k<<6)+48+(d<<1)|0;m=1<<d&3;n=1<<m&3;o=j+(k<<6)+54+(m<<1)|0;p=a+92|0;q=j+(k<<6)|0;r=a+96|0;a=j+(k<<6)+48+(m<<1)|0;s=j+(k<<6)+54+(n<<1)|0;t=j+(k<<6)+48+(n<<1)|0;k=h+(i<<2)|0;j=h+(i-1<<2)|0;while(1){i=b[j>>1]|0;if((e[k>>1]|0)>=(i&65535)){break}h=c[f>>2]|0;u=e[j+2>>1]|0;if((i&1)==0){i=h+(u<<6)+48+(d<<1)|0;b[i>>1]=(b[i>>1]|0)+1&65535}else{do{if(g){if((e[o>>1]|0)<(e[h+(u<<6)+48+(m<<1)>>1]|0)){break}if((e[h+(u<<6)+54+(m<<1)>>1]|0)<(e[a>>1]|0)){break}if((e[s>>1]|0)<(e[h+(u<<6)+48+(n<<1)>>1]|0)){break}if((e[h+(u<<6)+54+(n<<1)>>1]|0)<(e[t>>1]|0)){break}i=c[p>>2]|0;v=i|0;x=c[(c[i>>2]|0)+8>>2]|0;i=h+(u<<6)|0;cS[x&511](v,q,i)|0;v=c[r>>2]|0;if((v|0)==0){break}x=c[(c[v>>2]|0)+8>>2]|0;cS[x&511](v,q,i)|0}}while(0);i=h+(u<<6)+54+(d<<1)|0;b[i>>1]=(b[i>>1]|0)+1&65535}b[l>>1]=(b[l>>1]|0)-1&65535;i=k;v=e[i>>1]|e[i+2>>1]<<16;x=j;w=e[x>>1]|e[x+2>>1]<<16;b[i>>1]=w&65535;b[i+2>>1]=w>>16;w=v;b[x>>1]=w&65535;b[x+2>>1]=w>>16;k=k-4|0;j=j-4|0}return}function ane(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,x=0,y=0;h=c[a+68+(d<<2)>>2]|0;i=f&65535;f=a+60|0;j=c[f>>2]|0;k=e[h+(i<<2)+2>>1]|0;l=1<<d&3;m=1<<l&3;n=j+(k<<6)+54+(l<<1)|0;o=a+92|0;p=a+96|0;a=j+(k<<6)+48+(l<<1)|0;q=j+(k<<6)+54+(m<<1)|0;r=j+(k<<6)+48+(m<<1)|0;s=j+(k<<6)+54+(d<<1)|0;k=h+(i<<2)|0;j=h+(i+1<<2)|0;while(1){i=b[j+2>>1]|0;if(i<<16>>16==0){t=1817;break}h=b[j>>1]|0;if((e[k>>1]|0)<(h&65535)){t=1818;break}u=c[f>>2]|0;v=i&65535;if((h&1)==0){do{if(g){if((e[n>>1]|0)<(e[u+(v<<6)+48+(l<<1)>>1]|0)){break}if((e[u+(v<<6)+54+(l<<1)>>1]|0)<(e[a>>1]|0)){break}if((e[q>>1]|0)<(e[u+(v<<6)+48+(m<<1)>>1]|0)){break}if((e[u+(v<<6)+54+(m<<1)>>1]|0)<(e[r>>1]|0)){break}h=c[o>>2]|0;i=h|0;x=c[(c[h>>2]|0)+8>>2]|0;h=u+((e[k+2>>1]|0)<<6)|0;y=u+(v<<6)|0;cS[x&511](i,h,y)|0;i=c[p>>2]|0;if((i|0)==0){break}x=c[(c[i>>2]|0)+8>>2]|0;cS[x&511](i,h,y)|0}}while(0);y=u+(v<<6)+48+(d<<1)|0;b[y>>1]=(b[y>>1]|0)-1&65535}else{y=u+(v<<6)+54+(d<<1)|0;b[y>>1]=(b[y>>1]|0)-1&65535}b[s>>1]=(b[s>>1]|0)+1&65535;y=k;h=e[y>>1]|e[y+2>>1]<<16;i=j;w=e[i>>1]|e[i+2>>1]<<16;b[y>>1]=w&65535;b[y+2>>1]=w>>16;w=h;b[i>>1]=w&65535;b[i+2>>1]=w>>16;k=k+4|0;j=j+4|0}if((t|0)==1817){return}else if((t|0)==1818){return}}function anf(a,d,f,g,h){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;i=c[a+68+(d<<2)>>2]|0;j=f&65535;f=a+60|0;k=(c[f>>2]|0)+((e[i+(j<<2)+2>>1]|0)<<6)+48+(d<<1)|0;l=1<<d&3;m=1<<l&3;n=a+92|0;o=a+96|0;a=i+(j<<2)|0;p=i+(j+1<<2)|0;while(1){j=b[p+2>>1]|0;if(j<<16>>16==0){q=1834;break}i=b[p>>1]|0;if((e[a>>1]|0)<(i&65535)){q=1835;break}r=c[f>>2]|0;s=j&65535;if((i&1)==0){i=r+(s<<6)+48+(d<<1)|0;b[i>>1]=(b[i>>1]|0)-1&65535}else{i=e[a+2>>1]|0;do{if(h){if((e[r+(i<<6)+54+(l<<1)>>1]|0)<(e[r+(s<<6)+48+(l<<1)>>1]|0)){break}if((e[r+(s<<6)+54+(l<<1)>>1]|0)<(e[r+(i<<6)+48+(l<<1)>>1]|0)){break}if((e[r+(i<<6)+54+(m<<1)>>1]|0)<(e[r+(s<<6)+48+(m<<1)>>1]|0)){break}if((e[r+(s<<6)+54+(m<<1)>>1]|0)<(e[r+(i<<6)+48+(m<<1)>>1]|0)){break}j=c[n>>2]|0;t=j|0;u=c[(c[j>>2]|0)+12>>2]|0;j=r+(i<<6)|0;v=r+(s<<6)|0;dE[u&127](t,j,v,g)|0;t=c[o>>2]|0;if((t|0)==0){break}u=c[(c[t>>2]|0)+12>>2]|0;dE[u&127](t,j,v,g)|0}}while(0);i=r+(s<<6)+54+(d<<1)|0;b[i>>1]=(b[i>>1]|0)-1&65535}b[k>>1]=(b[k>>1]|0)+1&65535;i=a;v=e[i>>1]|e[i+2>>1]<<16;j=p;w=e[j>>1]|e[j+2>>1]<<16;b[i>>1]=w&65535;b[i+2>>1]=w>>16;w=v;b[j>>1]=w&65535;b[j+2>>1]=w>>16;a=a+4|0;p=p+4|0}if((q|0)==1834){return}else if((q|0)==1835){return}}function ang(a,d,f,g,h){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;i=c[a+68+(d<<2)>>2]|0;j=f&65535;f=a+60|0;k=1<<d&3;l=1<<k&3;m=a+92|0;n=a+96|0;a=(c[f>>2]|0)+((e[i+(j<<2)+2>>1]|0)<<6)+54+(d<<1)|0;o=i+(j<<2)|0;p=i+(j-1<<2)|0;while(1){j=b[p>>1]|0;if((e[o>>1]|0)>=(j&65535)){break}i=c[f>>2]|0;q=e[p+2>>1]|0;if((j&1)==0){j=e[o+2>>1]|0;do{if(h){if((e[i+(j<<6)+54+(k<<1)>>1]|0)<(e[i+(q<<6)+48+(k<<1)>>1]|0)){break}if((e[i+(q<<6)+54+(k<<1)>>1]|0)<(e[i+(j<<6)+48+(k<<1)>>1]|0)){break}if((e[i+(j<<6)+54+(l<<1)>>1]|0)<(e[i+(q<<6)+48+(l<<1)>>1]|0)){break}if((e[i+(q<<6)+54+(l<<1)>>1]|0)<(e[i+(j<<6)+48+(l<<1)>>1]|0)){break}r=c[m>>2]|0;s=r|0;t=c[(c[r>>2]|0)+12>>2]|0;r=i+(j<<6)|0;u=i+(q<<6)|0;dE[t&127](s,r,u,g)|0;s=c[n>>2]|0;if((s|0)==0){break}t=c[(c[s>>2]|0)+12>>2]|0;dE[t&127](s,r,u,g)|0}}while(0);j=i+(q<<6)+48+(d<<1)|0;b[j>>1]=(b[j>>1]|0)+1&65535}else{j=i+(q<<6)+54+(d<<1)|0;b[j>>1]=(b[j>>1]|0)+1&65535}b[a>>1]=(b[a>>1]|0)-1&65535;j=o;u=e[j>>1]|e[j+2>>1]<<16;r=p;w=e[r>>1]|e[r+2>>1]<<16;b[j>>1]=w&65535;b[j+2>>1]=w>>16;w=u;b[r>>1]=w&65535;b[r+2>>1]=w>>16;o=o-4|0;p=p-4|0}return}function anh(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ani(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;a=c[b>>2]|0;e=c[d>>2]|0;if((c[a+232>>2]|0)==4){f=a}else{f=0}if((c[e+232>>2]|0)==4){g=e}else{g=0}if((f|0)!=0){dA[c[(c[f>>2]|0)+28>>2]&511](f,d,b)}if((g|0)==0){return 0}dA[c[(c[g>>2]|0)+28>>2]&511](g,b,d);return 0}function anj(a,b,c){a=a|0;b=b|0;c=c|0;return}function ank(a){a=a|0;return}function anl(a){a=a|0;return}function anm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function ann(a){a=a|0;return}function ano(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+0.0}function anp(a,b){a=a|0;b=+b;g[a+44>>2]=b;return}function anq(a,c){a=a|0;c=c|0;var d=0;if((b[c+4>>1]&b[a+10>>1])<<16>>16==0){d=0;return d|0}d=(b[a+8>>1]&b[c+6>>1])<<16>>16!=0;return d|0}function anr(a,c){a=a|0;c=c|0;var d=0;if((b[c+4>>1]&b[a+6>>1])<<16>>16==0){d=0;return d|0}d=(b[a+4>>1]&b[c+6>>1])<<16>>16!=0;return d|0}function ans(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a=c[b>>2]|0;f=c[d>>2]|0;if((c[a+232>>2]|0)==4){g=a}else{g=0}if((c[f+232>>2]|0)==4){h=f}else{h=0}if((g|0)!=0){dI[c[(c[g>>2]|0)+32>>2]&1023](g,d,e,b)}if((h|0)==0){return 0}dI[c[(c[h>>2]|0)+32>>2]&1023](h,b,e,d);return 0}function ant(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=b+4|0;g=c[f>>2]|0;if((g|0)>(d|0)){h=d;while(1){if((h|0)>=(g|0)){break}h=h+1|0}c[f>>2]=d;return}do{if((g|0)<(d|0)){h=b+8|0;if((c[h>>2]|0)>=(d|0)){break}do{if((d|0)==0){i=0}else{c[9806]=(c[9806]|0)+1;j=aDx((d<<2)+19|0)|0;if((j|0)==0){i=0;break}k=-(j+4|0)&15;c[j+k>>2]=j;i=j+(k+4)|0}}while(0);k=c[f>>2]|0;j=b+12|0;l=0;while(1){if((l|0)>=(k|0)){break}m=i+(l<<2)|0;if((m|0)!=0){c[m>>2]=c[(c[j>>2]|0)+(l<<2)>>2]}l=l+1|0}l=c[f>>2]|0;k=0;while(1){if((k|0)>=(l|0)){break}k=k+1|0}k=c[j>>2]|0;l=b+16|0;if((k|0)==0){n=l}else{if((a[l]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[k-4>>2]|0)}c[j>>2]=0;n=l}a[n]=1;c[j>>2]=i;c[h>>2]=d}}while(0);i=b+12|0;b=g;while(1){if((b|0)>=(d|0)){break}g=(c[i>>2]|0)+(b<<2)|0;if((g|0)!=0){c[g>>2]=c[e>>2]}b=b+1|0}c[f>>2]=d;return}function anu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0;h=i;i=i+16|0;j=h|0;k=+g[b+4>>2]- +g[a+4>>2];l=+g[b+8>>2]- +g[a+8>>2];g[e>>2]=+g[b>>2]- +g[a>>2];g[e+4>>2]=k;g[e+8>>2]=l;g[e+12>>2]=0.0;e=c+12|0;a=c+8|0;do{if(+g[e>>2]==+g[d+12>>2]){if(+g[a>>2]!=+g[d+8>>2]){m=a;n=1926;break}b=c+4|0;if(+g[b>>2]!=+g[d+4>>2]){m=a;n=1926;break}o=c|0;if(+g[o>>2]!=+g[d>>2]){p=o;q=b;r=a;break}aDD(f|0,0,16);i=h;return}else{m=a;n=1926}}while(0);if((n|0)==1926){p=c|0;q=c+4|0;r=m}ah6(j,c,d);l=-0.0- +g[p>>2];k=-0.0- +g[q>>2];s=-0.0- +g[r>>2];t=+g[e>>2];u=+g[j+12>>2];v=+g[j>>2];w=+g[j+4>>2];x=+g[j+8>>2];y=u*l+v*t+w*s-x*k;z=u*k+w*t+x*l-v*s;A=u*s+x*t+v*k-w*l;B=u*t-v*l-w*k-x*s;do{if(B<-1.0){C=-1.0}else{if(B<=1.0){C=B;break}C=1.0}}while(0);B=+V(+C)*2.0;C=y*y+z*z+A*A;if(C<1.4210854715202004e-14){D=0.0;E=0.0;F=1.0}else{s=1.0/+Q(+C);D=A*s;E=z*s;F=y*s}g[f>>2]=F*B;g[f+4>>2]=E*B;g[f+8>>2]=D*B;g[f+12>>2]=0.0;i=h;return}function anv(a){a=a|0;if((a|0)==0){return}aDB(a);return}function anw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0;e=b+40|0;g[a+4>>2]=+g[e>>2];f=c[b>>2]|0;c[a+76>>2]=f;if(d){d=a+44|0;h=b+8|0;c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];i=a+60|0;j=b+24|0;k=i;l=j;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];m=+g[e>>2];return+m}else{n=+g[b+8>>2];o=+g[b+12>>2];p=+g[b+16>>2];q=+g[f+20>>2]*n+ +g[f+24>>2]*o+ +g[f+28>>2]*p;r=+g[f+36>>2]*n+ +g[f+40>>2]*o+ +g[f+44>>2]*p;g[a+44>>2]=+g[f+4>>2]*n+ +g[f+8>>2]*o+ +g[f+12>>2]*p;g[a+48>>2]=q;g[a+52>>2]=r;g[a+56>>2]=0.0;i=a+60|0;j=b+24|0;k=i;l=j;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];m=+g[e>>2];return+m}return 0.0}function anx(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0;d=i;i=i+72|0;e=d|0;f=d+8|0;h=d+16|0;j=d+24|0;k=d+32|0;l=d+40|0;m=d+48|0;n=d+56|0;o=d+64|0;p=+g[c>>2];q=+g[b>>2];r=+g[c+16>>2];s=+g[b+4>>2];t=+g[c+32>>2];u=+g[b+8>>2];g[e>>2]=p*q+r*s+t*u;v=+g[c+4>>2];w=+g[c+20>>2];x=+g[c+36>>2];g[f>>2]=v*q+w*s+x*u;y=+g[c+8>>2];z=+g[c+24>>2];A=+g[c+40>>2];g[h>>2]=y*q+z*s+A*u;u=+g[b+16>>2];s=+g[b+20>>2];q=+g[b+24>>2];g[j>>2]=p*u+r*s+t*q;g[k>>2]=v*u+w*s+x*q;g[l>>2]=y*u+z*s+A*q;q=+g[b+32>>2];s=+g[b+36>>2];u=+g[b+40>>2];g[m>>2]=p*q+r*s+t*u;g[n>>2]=v*q+w*s+x*u;g[o>>2]=y*q+z*s+A*u;d$(a,e,f,h,j,k,l,m,n,o);i=d;return}function any(a){a=a|0;if((a|0)==0){return}aDB(a);return}function anz(a,b,d,e,f,h,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=+j;k=k|0;l=+l;var m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;m=a;n=h;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];o=+g[e+4>>2];p=+g[a+8>>2];q=+g[e+8>>2];r=+g[a+4>>2];s=o*p-q*r;t=+g[a>>2];u=+g[e>>2];v=q*t-u*p;q=u*r-o*t;o=+g[b>>2]*s+ +g[b+4>>2]*v+ +g[b+8>>2]*q;u=+g[b+16>>2]*s+ +g[b+20>>2]*v+ +g[b+24>>2]*q;w=+g[b+32>>2]*s+ +g[b+36>>2]*v+ +g[b+40>>2]*q;g[a+16>>2]=o;g[a+20>>2]=u;g[a+24>>2]=w;g[a+28>>2]=0.0;q=-0.0-t;t=-0.0-r;r=-0.0-p;p=+g[f+4>>2];v=+g[f+8>>2];s=p*r-v*t;x=+g[f>>2];y=v*q-x*r;r=x*t-p*q;q=+g[d>>2]*s+ +g[d+4>>2]*y+ +g[d+8>>2]*r;p=+g[d+16>>2]*s+ +g[d+20>>2]*y+ +g[d+24>>2]*r;t=+g[d+32>>2]*s+ +g[d+36>>2]*y+ +g[d+40>>2]*r;g[a+32>>2]=q;g[a+36>>2]=p;g[a+40>>2]=t;g[a+44>>2]=0.0;r=+g[i>>2]*o;y=+g[i+4>>2]*u;s=+g[i+8>>2]*w;g[a+48>>2]=r;g[a+52>>2]=y;g[a+56>>2]=s;g[a+60>>2]=0.0;x=+g[k>>2]*q;v=+g[k+4>>2]*p;z=+g[k+8>>2]*t;g[a+64>>2]=x;g[a+68>>2]=v;g[a+72>>2]=z;g[a+76>>2]=0.0;g[a+80>>2]=r*o+y*u+s*w+j+l+(x*q+v*p+z*t);return}function anA(a){a=a|0;if((a|0)==0){return}aDB(a);return}function anB(a){a=a|0;return}function anC(a){a=a|0;return}function anD(a,c){a=a|0;c=c|0;var d=0;if((b[c+4>>1]&b[a+14>>1])<<16>>16==0){d=0;return d|0}d=(b[a+12>>1]&b[c+6>>1])<<16>>16!=0;return d|0}function anE(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;c[b>>2]=19512;d=b+116|0;e=c[d>>2]|0;f=0;while(1){if((f|0)>=(e|0)){break}f=f+1|0}f=b+124|0;e=c[f>>2]|0;g=b+128|0;if((e|0)==0){h=g}else{if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[e-4>>2]|0)}c[f>>2]=0;h=g}a[h]=1;c[f>>2]=0;c[d>>2]=0;c[b+120>>2]=0;d=b+96|0;f=c[d>>2]|0;h=0;while(1){if((h|0)>=(f|0)){break}h=h+1|0}h=b+104|0;f=c[h>>2]|0;g=b+108|0;if((f|0)==0){i=g}else{if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-16+12>>2]|0)}c[h>>2]=0;i=g}a[i]=1;c[h>>2]=0;c[d>>2]=0;c[b+100>>2]=0;d=b+76|0;h=c[d>>2]|0;i=0;while(1){if((i|0)>=(h|0)){break}i=i+1|0}i=b+84|0;h=c[i>>2]|0;g=b+88|0;if((h|0)==0){j=g}else{if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[h-16+12>>2]|0)}c[i>>2]=0;j=g}a[j]=1;c[i>>2]=0;c[d>>2]=0;c[b+80>>2]=0;d=b+24|0;i=c[d>>2]|0;j=0;while(1){if((j|0)>=(i|0)){break}j=j+1|0}j=b+32|0;i=c[j>>2]|0;g=b+36|0;if((i|0)==0){k=g;a[k]=1;c[j>>2]=0;c[d>>2]=0;l=b+28|0;c[l>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[i-4>>2]|0)}c[j>>2]=0;k=g;a[k]=1;c[j>>2]=0;c[d>>2]=0;l=b+28|0;c[l>>2]=0;return}function anF(a){a=a|0;anE(a);if((a|0)==0){return}aDB(a);return}function anG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0;f=i;i=i+32|0;h=f|0;j=f+16|0;k=d|0;l=b+8|0;c[l>>2]=c[k>>2];m=b+24|0;n=c[m>>2]|0;o=b+28|0;do{if((n|0)==(c[o>>2]|0)){p=(n|0)==0?1:n<<1;if((n|0)>=(p|0)){q=n;break}do{if((p|0)==0){r=0}else{c[9806]=(c[9806]|0)+1;s=aDx((p<<2)+19|0)|0;if((s|0)==0){r=0;break}t=-(s+4|0)&15;c[s+t>>2]=s;r=s+(t+4)|0}}while(0);t=c[m>>2]|0;s=b+32|0;u=0;while(1){if((u|0)>=(t|0)){break}v=r+(u<<2)|0;if((v|0)!=0){c[v>>2]=c[(c[s>>2]|0)+(u<<2)>>2]}u=u+1|0}u=c[m>>2]|0;t=0;while(1){if((t|0)>=(u|0)){break}t=t+1|0}t=c[s>>2]|0;v=b+36|0;if((t|0)==0){w=u;x=v}else{if((a[v]&1)==0){y=u}else{c[9804]=(c[9804]|0)+1;aDB(c[t-4>>2]|0);y=c[m>>2]|0}c[s>>2]=0;w=y;x=v}a[x]=1;c[s>>2]=r;c[o>>2]=p;q=w}else{q=n}}while(0);n=(c[b+32>>2]|0)+(q<<2)|0;if((n|0)==0){z=q}else{c[n>>2]=c[k>>2];z=c[m>>2]|0}c[m>>2]=z+1;if(e){e=h;z=d+8|0;c[e>>2]=c[z>>2];c[e+4>>2]=c[z+4>>2];c[e+8>>2]=c[z+8>>2];c[e+12>>2]=c[z+12>>2]}else{z=c[l>>2]|0;A=+g[d+8>>2];B=+g[d+12>>2];C=+g[d+16>>2];D=+g[z+20>>2]*A+ +g[z+24>>2]*B+ +g[z+28>>2]*C;E=+g[z+36>>2]*A+ +g[z+40>>2]*B+ +g[z+44>>2]*C;g[h>>2]=+g[z+4>>2]*A+ +g[z+8>>2]*B+ +g[z+12>>2]*C;g[h+4>>2]=D;g[h+8>>2]=E;g[h+12>>2]=0.0}anH(b+72|0,h);h=d+24|0;E=+g[h>>2];D=1.0-E;g[j>>2]=D*+g[b+40>>2]+ +g[b+56>>2]*E;g[j+4>>2]=D*+g[b+44>>2]+E*+g[b+60>>2];g[j+8>>2]=D*+g[b+48>>2]+E*+g[b+64>>2];anH(b+92|0,j);j=b+116|0;d=c[j>>2]|0;z=b+120|0;do{if((d|0)==(c[z>>2]|0)){l=(d|0)==0?1:d<<1;if((d|0)>=(l|0)){F=d;break}do{if((l|0)==0){G=0}else{c[9806]=(c[9806]|0)+1;e=aDx((l<<2)+19|0)|0;if((e|0)==0){G=0;break}m=-(e+4|0)&15;c[e+m>>2]=e;G=e+(m+4)|0}}while(0);p=c[j>>2]|0;s=b+124|0;u=0;while(1){if((u|0)>=(p|0)){break}m=G+(u<<2)|0;if((m|0)!=0){g[m>>2]=+g[(c[s>>2]|0)+(u<<2)>>2]}u=u+1|0}u=c[j>>2]|0;p=0;while(1){if((p|0)>=(u|0)){break}p=p+1|0}p=c[s>>2]|0;m=b+128|0;if((p|0)==0){H=u;I=m}else{if((a[m]&1)==0){J=u}else{c[9804]=(c[9804]|0)+1;aDB(c[p-4>>2]|0);J=c[j>>2]|0}c[s>>2]=0;H=J;I=m}a[I]=1;c[s>>2]=G;c[z>>2]=l;F=H}else{F=d}}while(0);d=(c[b+124>>2]|0)+(F<<2)|0;if((d|0)==0){K=F;L=K+1|0;c[j>>2]=L;M=b+4|0;N=+g[M>>2];i=f;return+N}g[d>>2]=+g[h>>2];K=c[j>>2]|0;L=K+1|0;c[j>>2]=L;M=b+4|0;N=+g[M>>2];i=f;return+N}function anH(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;e=b+4|0;f=c[e>>2]|0;g=b+8|0;do{if((f|0)==(c[g>>2]|0)){h=(f|0)==0?1:f<<1;if((f|0)>=(h|0)){i=f;break}do{if((h|0)==0){j=0}else{c[9806]=(c[9806]|0)+1;k=aDx((h<<4|4)+15|0)|0;if((k|0)==0){j=0;break}l=-(k+4|0)&15;c[k+l>>2]=k;j=k+(l+4)|0}}while(0);l=c[e>>2]|0;k=b+12|0;m=0;while(1){if((m|0)>=(l|0)){break}n=j+(m<<4)|0;if((n|0)!=0){o=n;n=(c[k>>2]|0)+(m<<4)|0;c[o>>2]=c[n>>2];c[o+4>>2]=c[n+4>>2];c[o+8>>2]=c[n+8>>2];c[o+12>>2]=c[n+12>>2]}m=m+1|0}m=c[e>>2]|0;l=0;while(1){if((l|0)>=(m|0)){break}l=l+1|0}l=c[k>>2]|0;n=b+16|0;if((l|0)==0){p=m;q=n}else{if((a[n]&1)==0){r=m}else{c[9804]=(c[9804]|0)+1;aDB(c[l-16+12>>2]|0);r=c[e>>2]|0}c[k>>2]=0;p=r;q=n}a[q]=1;c[k>>2]=j;c[g>>2]=h;i=p}else{i=f}}while(0);f=(c[b+12>>2]|0)+(i<<4)|0;if((f|0)==0){s=i;t=s+1|0;c[e>>2]=t;return}i=f;f=d;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];s=c[e>>2]|0;t=s+1|0;c[e>>2]=t;return}function anI(a){a=a|0;if((a|0)==0){return}aDB(a);return}function anJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;e=b+24|0;g[a+4>>2]=+g[e>>2];f=c[b>>2]|0;c[a+8>>2]=f;if(d){d=a+52|0;h=b+8|0;c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2]}else{i=+g[b+8>>2];j=+g[b+12>>2];k=+g[b+16>>2];l=+g[f+20>>2]*i+ +g[f+24>>2]*j+ +g[f+28>>2]*k;m=+g[f+36>>2]*i+ +g[f+40>>2]*j+ +g[f+44>>2]*k;g[a+52>>2]=+g[f+4>>2]*i+ +g[f+8>>2]*j+ +g[f+12>>2]*k;g[a+56>>2]=l;g[a+60>>2]=m;g[a+64>>2]=0.0}m=+g[e>>2];l=1.0-m;g[a+68>>2]=l*+g[a+20>>2]+ +g[a+36>>2]*m;g[a+72>>2]=l*+g[a+24>>2]+m*+g[a+40>>2];g[a+76>>2]=l*+g[a+28>>2]+m*+g[a+44>>2];return+(+g[e>>2])}function anK(a){a=a|0;if((a|0)==0){return}aDB(a);return}function anL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0;d=i;i=i+224|0;e=d|0;f=d+48|0;h=d+96|0;j=d+160|0;k=f;d$(f,a+68|0,a+84|0,a+100|0,a+72|0,a+88|0,a+104|0,a+76|0,a+92|0,a+108|0);l=-0.0- +g[a+116>>2];m=-0.0- +g[a+120>>2];n=-0.0- +g[a+124>>2];o=+g[f>>2]*l+ +g[f+4>>2]*m+ +g[f+8>>2]*n;p=+g[f+16>>2]*l+ +g[f+20>>2]*m+ +g[f+24>>2]*n;q=+g[f+32>>2]*l+ +g[f+36>>2]*m+ +g[f+40>>2]*n;r=j+48|0;s=j|0;do{s=s+16|0;}while((s|0)!=(r|0));r=j;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];c[r+8>>2]=c[k+8>>2];c[r+12>>2]=c[k+12>>2];k=j+16|0;r=f+16|0;c[k>>2]=c[r>>2];c[k+4>>2]=c[r+4>>2];c[k+8>>2]=c[r+8>>2];c[k+12>>2]=c[r+12>>2];r=j+32|0;k=f+32|0;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];c[r+8>>2]=c[k+8>>2];c[r+12>>2]=c[k+12>>2];k=j+48|0;g[k>>2]=o;r=j+52|0;g[r>>2]=p;f=j+56|0;g[f>>2]=q;g[j+60>>2]=0.0;s=e;anx(e,j|0,a+4|0);q=+g[a+52>>2];p=+g[a+56>>2];o=+g[a+60>>2];n=+g[j>>2]*q+ +g[j+4>>2]*p+ +g[j+8>>2]*o+ +g[k>>2];m=+g[j+16>>2]*q+ +g[j+20>>2]*p+ +g[j+24>>2]*o+ +g[r>>2];l=+g[j+32>>2]*q+ +g[j+36>>2]*p+ +g[j+40>>2]*o+ +g[f>>2];f=h+48|0;j=h|0;do{j=j+16|0;}while((j|0)!=(f|0));f=h;c[f>>2]=c[s>>2];c[f+4>>2]=c[s+4>>2];c[f+8>>2]=c[s+8>>2];c[f+12>>2]=c[s+12>>2];s=h+16|0;j=e+16|0;c[s>>2]=c[j>>2];c[s+4>>2]=c[j+4>>2];c[s+8>>2]=c[j+8>>2];c[s+12>>2]=c[j+12>>2];j=h+32|0;s=e+32|0;c[j>>2]=c[s>>2];c[j+4>>2]=c[s+4>>2];c[j+8>>2]=c[s+8>>2];c[j+12>>2]=c[s+12>>2];g[h+48>>2]=n;g[h+52>>2]=m;g[h+56>>2]=l;g[h+60>>2]=0.0;s=b;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];f=b+16|0;s=h+16|0;c[f>>2]=c[s>>2];c[f+4>>2]=c[s+4>>2];c[f+8>>2]=c[s+8>>2];c[f+12>>2]=c[s+12>>2];s=b+32|0;f=h+32|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];f=b+48|0;b=h+48|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];i=d;return}function anM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0;d=i;i=i+112|0;e=d|0;f=d+48|0;h=a+4|0;j=e;anx(e,b|0,a+68|0);k=+g[a+116>>2];l=+g[a+120>>2];m=+g[a+124>>2];n=+g[b>>2]*k+ +g[b+4>>2]*l+ +g[b+8>>2]*m+ +g[b+48>>2];o=+g[b+16>>2]*k+ +g[b+20>>2]*l+ +g[b+24>>2]*m+ +g[b+52>>2];p=+g[b+32>>2]*k+ +g[b+36>>2]*l+ +g[b+40>>2]*m+ +g[b+56>>2];b=f+48|0;q=f|0;do{q=q+16|0;}while((q|0)!=(b|0));b=f;c[b>>2]=c[j>>2];c[b+4>>2]=c[j+4>>2];c[b+8>>2]=c[j+8>>2];c[b+12>>2]=c[j+12>>2];j=f+16|0;q=e+16|0;c[j>>2]=c[q>>2];c[j+4>>2]=c[q+4>>2];c[j+8>>2]=c[q+8>>2];c[j+12>>2]=c[q+12>>2];q=f+32|0;j=e+32|0;c[q>>2]=c[j>>2];c[q+4>>2]=c[j+4>>2];c[q+8>>2]=c[j+8>>2];c[q+12>>2]=c[j+12>>2];g[f+48>>2]=n;g[f+52>>2]=o;g[f+56>>2]=p;g[f+60>>2]=0.0;j=h;c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];b=a+20|0;j=f+16|0;c[b>>2]=c[j>>2];c[b+4>>2]=c[j+4>>2];c[b+8>>2]=c[j+8>>2];c[b+12>>2]=c[j+12>>2];j=a+36|0;b=f+32|0;c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];b=a+52|0;a=f+48|0;c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];i=d;return}function anN(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0,h=0.0,i=0.0,j=0,k=0;d=a+8|0;e=+g[d>>2];if(+P(+e)>.7071067690849304){f=a+4|0;h=+g[f>>2];i=h*h+e*e;e=1.0/+Q(+i);g[b>>2]=0.0;j=b+4|0;g[j>>2]=e*(-0.0- +g[d>>2]);k=b+8|0;g[k>>2]=+g[f>>2]*e;g[c>>2]=i*e;f=a|0;g[c+4>>2]=+g[k>>2]*(-0.0- +g[f>>2]);g[c+8>>2]=+g[f>>2]*+g[j>>2];return}else{j=a|0;e=+g[j>>2];i=+g[a+4>>2];h=e*e+i*i;e=1.0/+Q(+h);a=b|0;g[a>>2]=e*(-0.0-i);i=+g[j>>2]*e;g[b+4>>2]=i;g[b+8>>2]=0.0;g[c>>2]=i*(-0.0- +g[d>>2]);g[c+4>>2]=+g[d>>2]*+g[a>>2];g[c+8>>2]=h*e;return}}function anO(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0.0;e=d|0;if((a[b+519|0]&1)!=0){c[e>>2]=0;c[d+4>>2]=0;return}c[e>>2]=3;f=d+4|0;c[f>>2]=3;d=c[b+24>>2]|0;h=c[b+28>>2]|0;anP(b,d+4|0,h+4|0,d+256|0,h+256|0);do{if((a[b+518|0]&1)!=0){h=c[e>>2]|0;c[e>>2]=h+1;d=c[f>>2]|0;c[f>>2]=d-1;i=+g[b+448>>2];if(+g[b+436>>2]>=i){break}if(+g[b+440>>2]>=i){break}c[e>>2]=h+2;c[f>>2]=d-2}}while(0);if((a[b+517|0]&1)==0){return}c[e>>2]=(c[e>>2]|0)+1;c[f>>2]=(c[f>>2]|0)-1;return}function anP(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0,M=0.0,N=0.0,O=0,R=0,U=0,W=0,X=0.0,Z=0.0,_=0.0,$=0,aa=0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0.0,aB=0.0,aC=0.0,aD=0.0,aE=0.0,aF=0.0,aG=0,aH=0.0,aI=0.0,aJ=0.0,aK=0.0,aL=0.0,aM=0.0,aN=0.0,aO=0.0,aP=0.0,aQ=0.0,aR=0.0,aS=0.0,aT=0.0,aU=0.0,aV=0.0,aW=0.0,aX=0.0,aY=0.0,aZ=0.0,a_=0.0;j=i;i=i+368|0;k=j|0;l=j+48|0;m=j+96|0;n=j+160|0;o=j+224|0;q=j+288|0;r=j+304|0;s=j+320|0;t=j+336|0;u=j+352|0;v=b+496|0;g[v>>2]=0.0;g[b+492>>2]=0.0;w=b+517|0;a[w]=0;x=b+518|0;a[x]=0;do{if((a[b+544|0]&1)!=0){if((a[b+519|0]&1)!=0){break}y=+g[b+548>>2];z=+g[b+552>>2];A=+g[b+556>>2];B=+g[b+560>>2];C=2.0/(y*y+z*z+A*A+B*B);D=y*C;E=z*C;F=A*C;C=B*D;G=B*E;H=B*F;B=y*D;D=y*E;I=y*F;y=z*E;E=z*F;z=A*F;F=1.0-(y+z);A=D-H;J=I+G;K=D+H;H=1.0-(B+z);z=E-C;D=I-G;G=E+C;C=1.0-(B+y);L=l;anx(l,d|0,b+292|0);y=+g[b+340>>2];B=+g[b+344>>2];E=+g[b+348>>2];I=+g[d>>2]*y+ +g[d+4>>2]*B+ +g[d+8>>2]*E+ +g[d+48>>2];M=+g[d+16>>2]*y+ +g[d+20>>2]*B+ +g[d+24>>2]*E+ +g[d+52>>2];N=+g[d+32>>2]*y+ +g[d+36>>2]*B+ +g[d+40>>2]*E+ +g[d+56>>2];O=m+48|0;R=m|0;do{R=R+16|0;}while((R|0)!=(O|0));O=m;c[O>>2]=c[L>>2];c[O+4>>2]=c[L+4>>2];c[O+8>>2]=c[L+8>>2];c[O+12>>2]=c[L+12>>2];O=m+16|0;R=l+16|0;c[O>>2]=c[R>>2];c[O+4>>2]=c[R+4>>2];c[O+8>>2]=c[R+8>>2];c[O+12>>2]=c[R+12>>2];R=m+32|0;O=l+32|0;c[R>>2]=c[O>>2];c[R+4>>2]=c[O+4>>2];c[R+8>>2]=c[O+8>>2];c[R+12>>2]=c[O+12>>2];O=m+48|0;g[O>>2]=I;R=m+52|0;g[R>>2]=M;U=m+56|0;g[U>>2]=N;g[m+60>>2]=0.0;W=k;anx(k,e|0,b+356|0);E=+g[b+404>>2];B=+g[b+408>>2];y=+g[b+412>>2];X=+g[e>>2]*E+ +g[e+4>>2]*B+ +g[e+8>>2]*y+ +g[e+48>>2];Z=+g[e+16>>2]*E+ +g[e+20>>2]*B+ +g[e+24>>2]*y+ +g[e+52>>2];_=+g[e+32>>2]*E+ +g[e+36>>2]*B+ +g[e+40>>2]*y+ +g[e+56>>2];$=n+48|0;aa=n|0;do{aa=aa+16|0;}while((aa|0)!=($|0));$=n;c[$>>2]=c[W>>2];c[$+4>>2]=c[W+4>>2];c[$+8>>2]=c[W+8>>2];c[$+12>>2]=c[W+12>>2];$=n+16|0;aa=k+16|0;c[$>>2]=c[aa>>2];c[$+4>>2]=c[aa+4>>2];c[$+8>>2]=c[aa+8>>2];c[$+12>>2]=c[aa+12>>2];aa=n+32|0;$=k+32|0;c[aa>>2]=c[$>>2];c[aa+4>>2]=c[$+4>>2];c[aa+8>>2]=c[$+8>>2];c[aa+12>>2]=c[$+12>>2];g[n+48>>2]=X;g[n+52>>2]=Z;g[n+56>>2]=_;g[n+60>>2]=0.0;N=+g[n>>2];M=+g[n+4>>2];I=+g[n+8>>2];y=N*F+K*M+D*I;B=N*A+M*H+G*I;E=N*J+z*M+C*I;ab=+g[n+16>>2];ac=+g[n+20>>2];ad=+g[n+24>>2];ae=F*ab+K*ac+D*ad;af=A*ab+H*ac+G*ad;ag=J*ab+z*ac+C*ad;ah=+g[n+32>>2];ai=+g[n+36>>2];aj=+g[n+40>>2];ak=F*ah+K*ai+D*aj;al=A*ah+H*ai+G*aj;am=J*ah+z*ai+C*aj;an=+g[m>>2];ao=+g[m+16>>2];ap=+g[m+32>>2];aq=+g[m+4>>2];ar=+g[m+20>>2];as=+g[m+36>>2];at=+g[m+8>>2];au=+g[m+24>>2];av=+g[m+40>>2];aw=-0.0- +g[O>>2];ax=-0.0- +g[R>>2];ay=-0.0- +g[U>>2];az=an*aw+ao*ax+ap*ay;aA=aq*aw+ar*ax+as*ay;aB=at*aw+au*ax+av*ay;g[o>>2]=y*an+B*aq+E*at;g[o+4>>2]=y*ao+B*ar+E*au;g[o+8>>2]=y*ap+B*as+E*av;g[o+12>>2]=0.0;g[o+16>>2]=ae*an+af*aq+ag*at;g[o+20>>2]=ae*ao+af*ar+ag*au;g[o+24>>2]=ae*ap+af*as+ag*av;g[o+28>>2]=0.0;g[o+32>>2]=ak*an+al*aq+am*at;g[o+36>>2]=ak*ao+al*ar+am*au;g[o+40>>2]=ak*ap+al*as+am*av;g[o+44>>2]=0.0;g[o+48>>2]=N*0.0+M*0.0+I*0.0+X+(E*aB+(y*az+B*aA));g[o+52>>2]=ab*0.0+ac*0.0+ad*0.0+Z+(ag*aB+(ae*az+af*aA));g[o+56>>2]=ah*0.0+ai*0.0+aj*0.0+_+(am*aB+(ak*az+al*aA));g[o+60>>2]=0.0;ec(o|0,q);aA=+g[q>>2];al=+g[q+4>>2];az=+g[q+8>>2];g[b+464>>2]=0.0;ak=1.0/+Q(+(aA*aA+al*al+az*az));g[b+452>>2]=aA*ak;g[b+456>>2]=al*ak;g[b+460>>2]=az*ak;ak=+g[q+12>>2];az=ak<-1.0?-1.0:ak;ak=+V(+(az>1.0?1.0:az))*2.0;g[v>>2]=ak;if(+P(+ak)<1.1920928955078125e-7){i=j;return}a[x]=1;i=j;return}}while(0);ec(d|0,r);q=b+292|0;ec(q,s);ak=+g[r+12>>2];az=+g[s>>2];al=+g[r>>2];aA=+g[s+12>>2];aB=+g[r+4>>2];am=+g[s+8>>2];aj=+g[r+8>>2];ai=+g[s+4>>2];ah=ak*az+al*aA+aB*am-aj*ai;af=az*aj+(aA*aB+ak*ai)-al*am;ae=ak*am+aA*aj+al*ai-az*aB;ag=ak*aA-az*al-aB*ai-am*aj;ec(e|0,t);s=b+356|0;ec(s,u);aj=+g[t+12>>2];am=+g[u>>2];ai=+g[t>>2];aB=+g[u+12>>2];al=+g[t+4>>2];az=+g[u+8>>2];aA=+g[t+8>>2];ak=+g[u+4>>2];ad=aj*am+ai*aB+al*az-aA*ak;ac=am*aA+(aB*al+aj*ak)-ai*az;ab=aj*az+aB*aA+ai*ak-am*al;B=aj*aB-am*ai-al*ak-az*aA;aA=-0.0-ad;az=-0.0-ac;ak=-0.0-ab;al=ah*B+ag*aA+ae*az-af*ak;ai=ah*ak+(af*B+ag*az)-ae*aA;am=af*aA+(ae*B+ag*ak)-ah*az;aB=ag*B-ah*aA-af*az-ae*ak;aj=ai*0.0;y=am*0.0;E=aB+aj-y;I=aB*0.0;M=al*0.0;N=am+I-M;av=I+M-ai;M=-0.0-al;I=M-aj-y;y=-0.0-ai;aj=-0.0-am;as=N*aj+(aB*E+I*M)-av*y;ap=av*M+(aB*N+I*y)-E*aj;au=E*y+(aB*av+I*aj)-N*M;M=1.0/+Q(+(au*au+(as*as+ap*ap)));N=M*as;as=M*ap;ap=M*au;au=as*0.0;M=ap*0.0;aj=M+(au+N);do{if(aj<-.9999998807907104){if(+P(0.0)>.7071067690849304){aC=0.0;aD=p;aE=p;aF=0.0;break}aC=-0.0;aD=1.0;aE=0.0;aF=0.0}else{I=N*0.0;av=+Q(+((aj+1.0)*2.0));y=1.0/av;aC=(M-au)*y;aD=(I-ap)*y;aE=(as-I)*y;aF=av*.5}}while(0);as=1.0/+Q(+(aF*aF+(aE*aE+(aD*aD+aC*aC))));ap=aC*as;aC=aD*as;aD=aE*as;aE=aF*as;as=-0.0-ap;aF=-0.0-aC;au=-0.0-aD;M=am*aF+(al*aE+aB*as)-ai*au;aj=al*au+(ai*aE+aB*aF)-am*as;N=ai*as+(am*aE+aB*au)-al*aF;av=aB*aE-al*as-ai*aF-am*au;au=1.0/+Q(+(av*av+(N*N+(M*M+aj*aj))));am=au*M;M=au*aj;aj=au*N;N=au*av;av=+g[b+436>>2];au=+g[b+448>>2];u=av<au;do{if(u){aG=2138}else{aF=+g[b+440>>2];if(aF<au){aG=2138;break}ai=aE<-1.0?-1.0:aE;as=+V(+(ai>1.0?1.0:ai))*2.0;do{if(as>1.1920928955078125e-7){ai=1.0/+Q(+(aD*aD+(ap*ap+aC*aC)));al=ap*ai;aB=aC*ai;y=aD*ai;if(+P(+aB)<=1.1920928955078125e-7){aH=al;aI=aB;aJ=y;aK=av;break}ai=y*y/(aB*aB);aH=al;aI=aB;aJ=y;aK=+Q(+((ai+1.0)/(1.0/(aF*aF)+ai/(av*av))))}else{aH=0.0;aI=0.0;aJ=0.0;aK=0.0}}while(0);_=+g[b+420>>2];Z=aK*_;if(as<=Z){break}a[x]=1;X=as-Z;if(as<aK&_<.9999998807907104){aL=X/(aK-Z)}else{aL=1.0}g[b+520>>2]=aL;g[v>>2]=X;if(+P(+aI)>1.1920928955078125e-7){X=+P(+(aI*(-0.0-aJ)/aI*(aF/av)));if(aJ<-0.0){aM=X}else{aM=-0.0-X}X=aM;Z=1.0/+Q(+(aI*aI+aH*aH+X*X));aN=aH*Z;aO=aI*Z;aP=Z*(-0.0-X)}else{aN=aH;aO=aI;aP=aJ}X=-0.0-aN;Z=-0.0-aO;_=-0.0-aP;C=ac*_+B*X-ab*Z;z=B*Z+ab*X-ad*_;J=B*_+ad*Z-ac*X;X=ad*aN-ac*Z-ab*_;_=z*ak+(X*aA+B*C)-J*az;Z=J*aA+(X*az+B*z)-C*ak;G=C*az+(B*J+X*ak)-z*aA;g[b+452>>2]=_;g[b+456>>2]=Z;g[b+460>>2]=G;g[b+464>>2]=0.0;aDD(b+528|0,0,16);g[b+484>>2]=1.0/(_*(+g[f>>2]*_+ +g[f+16>>2]*Z+ +g[f+32>>2]*G)+Z*(_*+g[f+4>>2]+Z*+g[f+20>>2]+G*+g[f+36>>2])+G*(_*+g[f+8>>2]+Z*+g[f+24>>2]+G*+g[f+40>>2])+(_*(_*+g[h>>2]+Z*+g[h+16>>2]+G*+g[h+32>>2])+Z*(_*+g[h+4>>2]+Z*+g[h+20>>2]+G*+g[h+36>>2])+G*(_*+g[h+8>>2]+Z*+g[h+24>>2]+G*+g[h+40>>2])))}}while(0);L2289:do{if((aG|0)==2138){aN=+g[q>>2];aP=+g[b+308>>2];aO=+g[b+324>>2];aJ=+g[d>>2];aI=+g[d+4>>2];aH=+g[d+8>>2];aM=aN*aJ+aP*aI+aO*aH;aL=+g[d+16>>2];aK=+g[d+20>>2];aD=+g[d+24>>2];aC=aN*aL+aP*aK+aO*aD;ap=+g[d+32>>2];aE=+g[d+36>>2];G=+g[d+40>>2];Z=aN*ap+aP*aE+aO*G;aO=+g[b+296>>2];aP=+g[b+312>>2];aN=+g[b+328>>2];_=aJ*aO+aI*aP+aH*aN;z=aL*aO+aK*aP+aD*aN;X=ap*aO+aE*aP+G*aN;aN=+g[b+300>>2];aP=+g[b+316>>2];aO=+g[b+332>>2];J=aJ*aN+aI*aP+aH*aO;aH=aL*aN+aK*aP+aD*aO;aD=ap*aN+aE*aP+G*aO;aO=+g[s>>2];G=+g[b+372>>2];aP=+g[b+388>>2];aE=aO*+g[e>>2]+G*+g[e+4>>2]+aP*+g[e+8>>2];aN=aO*+g[e+16>>2]+G*+g[e+20>>2]+aP*+g[e+24>>2];ap=aO*+g[e+32>>2]+G*+g[e+36>>2]+aP*+g[e+40>>2];aP=aM*aE+aC*aN+Z*ap;G=_*aE+z*aN+X*ap;aO=J*aE+aH*aN+aD*ap;do{if(av<au){aK=+g[b+440>>2];U=+P(+G)<1.1920928955078125e-7;if(aK<au){if(U){if(+P(+aO)<1.1920928955078125e-7){break L2289}}a[x]=1;g[b+452>>2]=-0.0-(Z*aN-aC*ap);g[b+456>>2]=-0.0-(aM*ap-Z*aE);g[b+460>>2]=-0.0-(aC*aE-aM*aN);g[b+464>>2]=0.0;break L2289}if(U){aQ=aP;aR=G;aS=aO;break}a[x]=1;if(aK<au){aQ=aP;aR=G;aS=aO;break}aL=+Y(+aO,+aP);if(aL>aK){aI=+S(+aK);aQ=aI;aR=0.0;aS=+T(+aK);break}if(aL>=-0.0-aK){aQ=aP;aR=0.0;aS=aO;break}aL=+S(+aK);aQ=aL;aR=0.0;aS=-0.0- +T(+aK)}else{if(+P(+aO)<1.1920928955078125e-7){aQ=aP;aR=G;aS=aO;break}a[x]=1;if(u){aQ=aP;aR=G;aS=aO;break}aK=+Y(+G,+aP);if(aK>av){aL=+S(+av);aQ=aL;aR=+T(+av);aS=0.0;break}if(aK>=-0.0-av){aQ=aP;aR=G;aS=0.0;break}aK=+S(+av);aQ=aK;aR=-0.0- +T(+av);aS=0.0}}while(0);G=J*aS+(_*aR+aM*aQ);aP=aH*aS+(z*aR+aC*aQ);aO=aD*aS+(X*aR+Z*aQ);aF=1.0/+Q(+(aO*aO+(G*G+aP*aP)));as=aF*G;G=aF*aP;aP=aF*aO;aO=aN*aP-ap*G;aF=ap*as-aE*aP;aP=aE*G-aN*as;g[b+464>>2]=0.0;as=+Q(+(aO*aO+aF*aF+aP*aP));g[v>>2]=as;G=1.0/as;g[b+452>>2]=G*(-0.0-aO);g[b+456>>2]=G*(-0.0-aF);g[b+460>>2]=G*(-0.0-aP)}}while(0);aQ=+g[b+444>>2];v=b+504|0;if(aQ<0.0){g[v>>2]=0.0;i=j;return}aR=N<-1.0?-1.0:N;aS=+V(+(aR>1.0?1.0:aR))*2.0;if(aS>3.1415927410125732){aR=N>1.0?-1.0:-0.0-N;aT=-0.0-am;aU=-0.0-M;aV=-0.0-aj;aW=+V(+(aR>1.0?1.0:aR))*2.0}else{aT=am;aU=M;aV=aj;aW=aS}g[v>>2]=aW;if(aW>1.1920928955078125e-7){aS=1.0/+Q(+(aV*aV+(aU*aU+aT*aT)));aX=aT*aS;aY=aU*aS;aZ=aV*aS}else{aX=aT;aY=aU;aZ=aV}aV=+g[b+420>>2];aU=aQ*aV;if(aW>aU+1.0e-4){a[w]=1;aT=aW-aU;if(aW<aQ&aV<.9999998807907104){a_=aT/(aQ-aU)}else{a_=1.0}g[b+524>>2]=a_;g[b+500>>2]=aT;aT=-0.0-aX;a_=-0.0-aY;aU=-0.0-aZ;aQ=ac*aU+B*aT-ab*a_;aV=B*a_+ab*aT-ad*aU;aW=B*aU+ad*a_-ac*aT;aT=ad*aX-ac*a_-ab*aU;aU=aV*ak+(aT*aA+B*aQ)-aW*az;ab=aW*aA+(aT*az+B*aV)-aQ*ak;a_=aQ*az+(B*aW+aT*ak)-aV*aA;g[b+468>>2]=aU;g[b+472>>2]=ab;g[b+476>>2]=a_;g[b+480>>2]=0.0;g[b+488>>2]=1.0/(aU*(+g[f>>2]*aU+ +g[f+16>>2]*ab+ +g[f+32>>2]*a_)+ab*(aU*+g[f+4>>2]+ab*+g[f+20>>2]+a_*+g[f+36>>2])+a_*(aU*+g[f+8>>2]+ab*+g[f+24>>2]+a_*+g[f+40>>2])+(aU*(aU*+g[h>>2]+ab*+g[h+16>>2]+a_*+g[h+32>>2])+ab*(aU*+g[h+4>>2]+ab*+g[h+20>>2]+a_*+g[h+36>>2])+a_*(aU*+g[h+8>>2]+ab*+g[h+24>>2]+a_*+g[h+40>>2])))}if((a[x]&1)==0){i=j;return}a_=-0.0-aX;ab=-0.0-aY;aY=-0.0-aZ;aZ=af*aY+ag*a_-ae*ab;aU=ag*ab+ae*a_-ah*aY;aA=ag*aY+ah*ab-af*a_;a_=-0.0-ah;aV=ah*aX-af*ab-ae*aY;aY=-0.0-af;af=-0.0-ae;g[b+528>>2]=aU*af+(aV*a_+ag*aZ)-aA*aY;g[b+532>>2]=aA*a_+(aV*aY+ag*aU)-aZ*af;g[b+536>>2]=aZ*aY+(ag*aA+aV*af)-aU*a_;g[b+540>>2]=0.0;i=j;return}function anQ(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+24>>2]|0;e=c[a+28>>2]|0;anR(a,b,d+4|0,e+4|0,d+256|0,e+256|0);return}
function anR(b,d,e,f,h,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0.0,o=0,p=0.0,q=0,r=0.0,s=0.0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0.0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0,W=0,X=0,Y=0.0;k=i;i=i+112|0;l=k|0;m=k+48|0;anP(b,e,f,h,j);j=d+8|0;g[c[j>>2]>>2]=1.0;h=d+24|0;g[(c[j>>2]|0)+((c[h>>2]|0)+1<<2)>>2]=1.0;g[(c[j>>2]|0)+((c[h>>2]<<1)+2<<2)>>2]=1.0;j=e|0;n=+g[b+340>>2];o=e+4|0;p=+g[b+344>>2];q=e+8|0;r=+g[b+348>>2];s=+g[j>>2]*n+ +g[o>>2]*p+ +g[q>>2]*r;t=e+16|0;u=e+20|0;v=e+24|0;w=n*+g[t>>2]+p*+g[u>>2]+r*+g[v>>2];x=e+32|0;y=e+36|0;z=e+40|0;A=n*+g[x>>2]+p*+g[y>>2]+r*+g[z>>2];B=d+12|0;C=c[B>>2]|0;D=c[h>>2]|0;E=D<<1;g[C>>2]=0.0;g[C+4>>2]=A;g[C+8>>2]=-0.0-w;g[C+12>>2]=0.0;g[C+(D<<2)>>2]=-0.0-A;g[C+(D+1<<2)>>2]=0.0;g[C+(D+2<<2)>>2]=s;g[C+(D+3<<2)>>2]=0.0;g[C+(E<<2)>>2]=w;g[C+((E|1)<<2)>>2]=-0.0-s;g[C+(E+2<<2)>>2]=0.0;g[C+(E+3<<2)>>2]=0.0;r=+g[b+404>>2];p=+g[b+408>>2];n=+g[b+412>>2];F=+g[f>>2]*r+ +g[f+4>>2]*p+ +g[f+8>>2]*n;G=r*+g[f+16>>2]+p*+g[f+20>>2]+n*+g[f+24>>2];H=r*+g[f+32>>2]+p*+g[f+36>>2]+n*+g[f+40>>2];E=d+20|0;C=c[E>>2]|0;D=c[h>>2]|0;I=D<<1;g[C>>2]=0.0;g[C+4>>2]=-0.0-H;g[C+8>>2]=G;g[C+12>>2]=0.0;g[C+(D<<2)>>2]=H;g[C+(D+1<<2)>>2]=0.0;g[C+(D+2<<2)>>2]=-0.0-F;g[C+(D+3<<2)>>2]=0.0;g[C+(I<<2)>>2]=-0.0-G;g[C+((I|1)<<2)>>2]=F;g[C+(I+2<<2)>>2]=0.0;g[C+(I+3<<2)>>2]=0.0;I=b+584|0;C=d|0;n=+g[((c[I>>2]&2|0)==0?d+4|0:b+592|0)>>2]*+g[C>>2];D=d+28|0;J=d+36|0;K=d+40|0;L=b+588|0;M=d+32|0;d=e+48|0;g[c[D>>2]>>2]=n*(F+ +g[f+48>>2]-s- +g[d>>2]);g[c[J>>2]>>2]=-3.4028234663852886e+38;g[c[K>>2]>>2]=3.4028234663852886e+38;if((c[I>>2]&1|0)!=0){g[c[M>>2]>>2]=+g[L>>2]}N=e+52|0;g[(c[D>>2]|0)+(c[h>>2]<<2)>>2]=n*(G+ +g[f+52>>2]-w- +g[N>>2]);g[(c[J>>2]|0)+(c[h>>2]<<2)>>2]=-3.4028234663852886e+38;g[(c[K>>2]|0)+(c[h>>2]<<2)>>2]=3.4028234663852886e+38;if((c[I>>2]&1|0)!=0){g[(c[M>>2]|0)+(c[h>>2]<<2)>>2]=+g[L>>2]}O=e+56|0;g[(c[D>>2]|0)+(c[h>>2]<<1<<2)>>2]=n*(H+ +g[f+56>>2]-A- +g[O>>2]);g[(c[J>>2]|0)+(c[h>>2]<<1<<2)>>2]=-3.4028234663852886e+38;g[(c[K>>2]|0)+(c[h>>2]<<1<<2)>>2]=3.4028234663852886e+38;if((c[I>>2]&1|0)!=0){g[(c[M>>2]|0)+(c[h>>2]<<1<<2)>>2]=+g[L>>2]}L=(c[h>>2]|0)*3|0;L2345:do{if((a[b+518|0]&1)==0){P=L}else{f=c[B>>2]|0;Q=c[E>>2]|0;A=+g[b+448>>2];do{if(+g[b+436>>2]<A){if(+g[b+440>>2]>=A){break}R=l;anx(l,e|0,b+292|0);H=+g[b+340>>2];n=+g[b+344>>2];w=+g[b+348>>2];G=+g[j>>2]*H+ +g[o>>2]*n+ +g[q>>2]*w+ +g[d>>2];s=+g[t>>2]*H+ +g[u>>2]*n+ +g[v>>2]*w+ +g[N>>2];F=+g[x>>2]*H+ +g[y>>2]*n+ +g[z>>2]*w+ +g[O>>2];S=m+48|0;T=m|0;do{T=T+16|0;}while((T|0)!=(S|0));S=m;c[S>>2]=c[R>>2];c[S+4>>2]=c[R+4>>2];c[S+8>>2]=c[R+8>>2];c[S+12>>2]=c[R+12>>2];S=m+16|0;T=l+16|0;c[S>>2]=c[T>>2];c[S+4>>2]=c[T+4>>2];c[S+8>>2]=c[T+8>>2];c[S+12>>2]=c[T+12>>2];T=m+32|0;S=l+32|0;c[T>>2]=c[S>>2];c[T+4>>2]=c[S+4>>2];c[T+8>>2]=c[S+8>>2];c[T+12>>2]=c[S+12>>2];g[m+48>>2]=G;g[m+52>>2]=s;g[m+56>>2]=F;g[m+60>>2]=0.0;w=+g[m+4>>2];n=+g[m+20>>2];H=+g[m+36>>2];p=+g[m+8>>2];r=+g[m+24>>2];U=+g[m+40>>2];S=(c[h>>2]|0)+L|0;g[f+(L<<2)>>2]=w;T=L+1|0;g[f+(T<<2)>>2]=n;V=L+2|0;g[f+(V<<2)>>2]=H;g[f+(S<<2)>>2]=p;W=S+1|0;g[f+(W<<2)>>2]=r;X=S+2|0;g[f+(X<<2)>>2]=U;g[Q+(L<<2)>>2]=-0.0-w;g[Q+(T<<2)>>2]=-0.0-n;g[Q+(V<<2)>>2]=-0.0-H;g[Q+(S<<2)>>2]=-0.0-p;g[Q+(W<<2)>>2]=-0.0-r;g[Q+(X<<2)>>2]=-0.0-U;Y=+g[C>>2]*+g[b+428>>2];X=b+452|0;W=b+456|0;V=b+460|0;g[(c[D>>2]|0)+(L<<2)>>2]=Y*(w*+g[X>>2]+n*+g[W>>2]+H*+g[V>>2]);g[(c[D>>2]|0)+(S<<2)>>2]=Y*(p*+g[X>>2]+r*+g[W>>2]+U*+g[V>>2]);g[(c[J>>2]|0)+(L<<2)>>2]=-3.4028234663852886e+38;g[(c[K>>2]|0)+(L<<2)>>2]=3.4028234663852886e+38;g[(c[J>>2]|0)+(S<<2)>>2]=-3.4028234663852886e+38;g[(c[K>>2]|0)+(S<<2)>>2]=3.4028234663852886e+38;P=(c[h>>2]|0)+S|0;break L2345}}while(0);A=+g[b+428>>2];U=A*+g[b+452>>2]*A;r=A*A*+g[b+456>>2];p=A*A*+g[b+460>>2];g[f+(L<<2)>>2]=U;S=L+1|0;g[f+(S<<2)>>2]=r;V=L+2|0;g[f+(V<<2)>>2]=p;g[Q+(L<<2)>>2]=-0.0-U;g[Q+(S<<2)>>2]=-0.0-r;g[Q+(V<<2)>>2]=-0.0-p;g[(c[D>>2]|0)+(L<<2)>>2]=+g[C>>2]*+g[b+424>>2]*+g[b+496>>2];if((c[I>>2]&4|0)!=0){g[(c[M>>2]|0)+(L<<2)>>2]=+g[b+596>>2]}g[(c[J>>2]|0)+(L<<2)>>2]=0.0;g[(c[K>>2]|0)+(L<<2)>>2]=3.4028234663852886e+38;P=(c[h>>2]|0)+L|0}}while(0);if((a[b+517|0]&1)==0){i=k;return}p=+g[b+428>>2];r=p*+g[b+468>>2]*p;U=p*p*+g[b+472>>2];A=p*p*+g[b+476>>2];L=c[B>>2]|0;B=c[E>>2]|0;g[L+(P<<2)>>2]=r;E=P+1|0;g[L+(E<<2)>>2]=U;h=P+2|0;g[L+(h<<2)>>2]=A;g[B+(P<<2)>>2]=-0.0-r;g[B+(E<<2)>>2]=-0.0-U;g[B+(h<<2)>>2]=-0.0-A;h=b+500|0;g[(c[D>>2]|0)+(P<<2)>>2]=+g[C>>2]*+g[b+424>>2]*+g[h>>2];if((c[I>>2]&4|0)!=0){g[(c[M>>2]|0)+(P<<2)>>2]=+g[b+596>>2]}if(+g[b+444>>2]<=0.0){g[(c[J>>2]|0)+(P<<2)>>2]=-3.4028234663852886e+38;g[(c[K>>2]|0)+(P<<2)>>2]=3.4028234663852886e+38;i=k;return}b=(c[J>>2]|0)+(P<<2)|0;if(+g[h>>2]>0.0){g[b>>2]=0.0;g[(c[K>>2]|0)+(P<<2)>>2]=3.4028234663852886e+38;i=k;return}else{g[b>>2]=-3.4028234663852886e+38;g[(c[K>>2]|0)+(P<<2)>>2]=0.0;i=k;return}}function anS(b){b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0;d=i;i=i+176|0;e=d|0;f=d+48|0;h=d+96|0;j=d+144|0;k=d+160|0;if((a[b+519|0]&1)==0){i=d;return}g[b+32>>2]=0.0;g[b+512>>2]=0.0;g[b+508>>2]=0.0;aDD(b+568|0,0,16);l=b+24|0;if((a[b+516|0]&1)==0){m=c[l>>2]|0;n=+g[b+340>>2];o=+g[b+344>>2];p=+g[b+348>>2];q=+g[m+56>>2]+(n*+g[m+20>>2]+o*+g[m+24>>2]+p*+g[m+28>>2]);r=b+28|0;s=c[r>>2]|0;t=+g[b+404>>2];u=+g[b+408>>2];v=+g[b+412>>2];w=+g[s+56>>2]+(t*+g[s+20>>2]+u*+g[s+24>>2]+v*+g[s+28>>2]);x=+g[s+60>>2]+(t*+g[s+36>>2]+u*+g[s+40>>2]+v*+g[s+44>>2]);y=w-q;z=+g[m+52>>2]+(+g[m+4>>2]*n+ +g[m+8>>2]*o+ +g[m+12>>2]*p);A=+g[m+60>>2]+(n*+g[m+36>>2]+o*+g[m+40>>2]+p*+g[m+44>>2]);p=+g[s+52>>2]+(+g[s+4>>2]*t+ +g[s+8>>2]*u+ +g[s+12>>2]*v);v=p-z;u=x-A;t=v*v+y*y+u*u;if(t>1.1920928955078125e-7){o=1.0/+Q(+t);t=v*o;v=y*o;y=u*o;g[e>>2]=t;g[e+4>>2]=v;g[e+8>>2]=y;g[e+12>>2]=0.0;B=y;C=v;D=t}else{g[e>>2]=1.0;g[e+4>>2]=0.0;g[e+8>>2]=0.0;g[e+12>>2]=0.0;B=0.0;C=0.0;D=1.0}s=e+16|0;m=e+32|0;if(+P(+B)>.7071067690849304){t=B*B+C*C;v=1.0/+Q(+t);g[s>>2]=0.0;y=v*(-0.0-B);g[e+20>>2]=y;o=v*C;g[e+24>>2]=o;g[m>>2]=t*v;g[e+36>>2]=o*(-0.0-D);g[e+40>>2]=D*y}else{y=D*D+C*C;o=1.0/+Q(+y);v=o*(-0.0-C);g[s>>2]=v;C=o*D;g[e+20>>2]=C;g[e+24>>2]=0.0;g[m>>2]=C*(-0.0-B);g[e+36>>2]=B*v;g[e+40>>2]=y*o}m=f|0;s=f+4|0;E=f+8|0;F=f+12|0;G=f+16|0;H=f+20|0;I=f+24|0;J=f+28|0;K=f+32|0;L=f+36|0;M=f+40|0;N=f+44|0;O=h|0;R=h+4|0;S=h+8|0;T=h+12|0;U=h+16|0;V=h+20|0;W=h+24|0;X=h+28|0;Y=h+32|0;Z=h+36|0;_=h+40|0;$=h+44|0;aa=j|0;ab=j+4|0;ac=j+8|0;ad=j+12|0;ae=k|0;af=k+4|0;ag=k+8|0;ah=k+12|0;ai=0;while(1){aj=b+40+(ai*84|0)|0;if((aj|0)!=0){ak=c[l>>2]|0;g[m>>2]=+g[ak+4>>2];g[s>>2]=+g[ak+20>>2];g[E>>2]=+g[ak+36>>2];g[F>>2]=0.0;g[G>>2]=+g[ak+8>>2];g[H>>2]=+g[ak+24>>2];g[I>>2]=+g[ak+40>>2];g[J>>2]=0.0;g[K>>2]=+g[ak+12>>2];g[L>>2]=+g[ak+28>>2];g[M>>2]=+g[ak+44>>2];g[N>>2]=0.0;al=c[r>>2]|0;g[O>>2]=+g[al+4>>2];g[R>>2]=+g[al+20>>2];g[S>>2]=+g[al+36>>2];g[T>>2]=0.0;g[U>>2]=+g[al+8>>2];g[V>>2]=+g[al+24>>2];g[W>>2]=+g[al+40>>2];g[X>>2]=0.0;g[Y>>2]=+g[al+12>>2];g[Z>>2]=+g[al+28>>2];g[_>>2]=+g[al+44>>2];g[$>>2]=0.0;o=q- +g[ak+56>>2];y=A- +g[ak+60>>2];g[aa>>2]=z- +g[ak+52>>2];g[ab>>2]=o;g[ac>>2]=y;g[ad>>2]=0.0;y=w- +g[al+56>>2];o=x- +g[al+60>>2];g[ae>>2]=p- +g[al+52>>2];g[af>>2]=y;g[ag>>2]=o;g[ah>>2]=0.0;anz(aj,f,h,j,k,e+(ai<<4)|0,ak+388|0,+g[ak+336>>2],al+388|0,+g[al+336>>2])}al=ai+1|0;if((al|0)<3){ai=al}else{am=r;break}}}else{am=b+28|0}r=c[l>>2]|0;l=c[am>>2]|0;anP(b,r+4|0,l+4|0,r+256|0,l+256|0);i=d;return}function anT(b,d,e,f){b=b|0;d=d|0;e=e|0;f=+f;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0.0,B=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0,Z=0,_=0,$=0.0,aa=0,ab=0.0,ac=0,ad=0.0,ae=0,af=0,ag=0,ah=0,ai=0.0,aj=0,ak=0.0,al=0,am=0.0,an=0.0,ao=0.0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0.0,aD=0,aE=0.0,aF=0.0,aG=0.0,aH=0.0,aI=0.0,aJ=0.0,aK=0.0,aL=0.0,aM=0.0,aN=0.0,aO=0.0,aP=0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$=0,a0=0,a1=0.0,a2=0.0,a3=0.0,a4=0.0,a5=0.0,a6=0.0,a7=0.0,a8=0.0,a9=0.0,ba=0.0,bb=0.0,bc=0.0,bd=0.0,be=0.0,bf=0.0,bg=0,bh=0.0,bi=0.0,bj=0.0,bk=0.0,bl=0.0;h=i;i=i+464|0;j=h|0;k=h+16|0;l=h+24|0;m=h+40|0;n=h+48|0;o=h+112|0;p=h+176|0;q=h+192|0;r=h+208|0;s=h+272|0;t=h+336|0;u=h+400|0;if((a[b+519|0]&1)==0){i=h;return}v=b+24|0;w=c[v>>2]|0;x=b+340|0;y=+g[x>>2];z=b+344|0;A=+g[z>>2];B=b+348|0;C=+g[B>>2];D=+g[w+52>>2];E=D+(+g[w+4>>2]*y+ +g[w+8>>2]*A+ +g[w+12>>2]*C);F=+g[w+56>>2];G=F+(y*+g[w+20>>2]+A*+g[w+24>>2]+C*+g[w+28>>2]);H=+g[w+60>>2];I=H+(y*+g[w+36>>2]+A*+g[w+40>>2]+C*+g[w+44>>2]);J=b+28|0;K=c[J>>2]|0;L=b+404|0;C=+g[L>>2];M=b+408|0;A=+g[M>>2];N=b+412|0;y=+g[N>>2];O=+g[K+52>>2];P=O+(+g[K+4>>2]*C+ +g[K+8>>2]*A+ +g[K+12>>2]*y);R=+g[K+56>>2];S=R+(C*+g[K+20>>2]+A*+g[K+24>>2]+y*+g[K+28>>2]);T=+g[K+60>>2];U=T+(C*+g[K+36>>2]+A*+g[K+40>>2]+y*+g[K+44>>2]);L2399:do{if((a[b+516|0]&1)==0){y=E-D;A=G-F;C=I-H;V=P-O;W=S-R;X=U-T;K=d+504|0;Y=d+508|0;Z=d+512|0;_=d+520|0;$=+g[d+320>>2]+ +g[_>>2];aa=d+524|0;ab=+g[d+324>>2]+ +g[aa>>2];ac=d+528|0;ad=+g[d+328>>2]+ +g[ac>>2];ae=e+504|0;af=e+508|0;ag=e+512|0;ah=e+520|0;ai=+g[e+320>>2]+ +g[ah>>2];aj=e+524|0;ak=+g[e+324>>2]+ +g[aj>>2];al=e+528|0;am=+g[e+328>>2]+ +g[al>>2];an=+g[d+304>>2]+ +g[K>>2]+(C*ab-A*ad)-(+g[e+304>>2]+ +g[ae>>2]+(X*ak-W*am));ao=+g[d+308>>2]+ +g[Y>>2]+(y*ad-C*$)-(+g[e+308>>2]+ +g[af>>2]+(V*am-X*ai));am=+g[d+312>>2]+ +g[Z>>2]+(A*$-y*ab)-(+g[e+312>>2]+ +g[ag>>2]+(W*ai-V*ak));ak=E-P;ai=G-S;ab=I-U;ap=b+32|0;aq=d+336|0;ar=d+536|0;as=d+540|0;at=d+544|0;au=e+336|0;av=e+536|0;aw=e+540|0;ax=e+544|0;ay=0;az=w;while(1){$=1.0/+g[b+40+(ay*84|0)+80>>2];aA=b+40+(ay*84|0)|0;ad=+g[aA>>2];aB=b+40+(ay*84|0)+4|0;aC=+g[aB>>2];aD=b+40+(ay*84|0)+8|0;aE=+g[aD>>2];aF=$*((ak*ad+ai*aC+ab*aE)*-.30000001192092896/f)-$*(an*ad+ao*aC+am*aE);g[ap>>2]=+g[ap>>2]+aF;aE=+g[aD>>2];aC=+g[aB>>2];ad=A*aE-C*aC;$=+g[aA>>2];aG=C*$-y*aE;aH=y*aC-A*$;aI=W*aE-X*aC;aJ=X*$-V*aE;aK=V*aC-W*$;aL=+g[az+336>>2];if(+g[aq>>2]!=0.0){aM=aG*+g[az+292>>2]+ad*+g[az+288>>2]+aH*+g[az+296>>2];aN=aG*+g[az+276>>2]+ad*+g[az+272>>2]+aH*+g[az+280>>2];aO=aG*+g[az+260>>2]+ad*+g[az+256>>2]+aH*+g[az+264>>2];g[K>>2]=aF*$*aL+ +g[K>>2];g[Y>>2]=aF*aC*aL+ +g[Y>>2];g[Z>>2]=aF*aE*aL+ +g[Z>>2];aL=aN*aF*+g[as>>2];aN=aM*aF*+g[at>>2];g[_>>2]=aO*aF*+g[ar>>2]+ +g[_>>2];g[aa>>2]=aL+ +g[aa>>2];g[ac>>2]=aN+ +g[ac>>2]}aP=c[J>>2]|0;aN=+g[aP+336>>2];aL=-0.0-aF;if(+g[au>>2]!=0.0){aF=aJ*+g[aP+292>>2]+aI*+g[aP+288>>2]+aK*+g[aP+296>>2];aO=aJ*+g[aP+276>>2]+aI*+g[aP+272>>2]+aK*+g[aP+280>>2];aM=aJ*+g[aP+260>>2]+aI*+g[aP+256>>2]+aK*+g[aP+264>>2];aK=aN*+g[aB>>2]*aL;aI=aN*+g[aD>>2]*aL;g[ae>>2]=+g[ae>>2]+aN*+g[aA>>2]*aL;g[af>>2]=aK+ +g[af>>2];g[ag>>2]=aI+ +g[ag>>2];aI=aO*+g[aw>>2]*aL;aO=aF*+g[ax>>2]*aL;g[ah>>2]=aM*+g[av>>2]*aL+ +g[ah>>2];g[aj>>2]=aI+ +g[aj>>2];g[al>>2]=aO+ +g[al>>2]}aA=ay+1|0;if((aA|0)>=3){break L2399}ay=aA;az=c[v>>2]|0}}}while(0);do{if((a[b+544|0]&1)==0){U=+g[b+432>>2];w=d+320|0;if(U<=1.1920928955078125e-7){aQ=w;aR=d+520|0;aS=d+324|0;aT=d+524|0;aU=d+328|0;aV=d+528|0;aW=e+320|0;aX=e+520|0;aY=e+324|0;aZ=e+524|0;a_=e+328|0;a$=e+528|0;break}az=d+520|0;I=+g[az>>2];ay=d+324|0;al=d+524|0;S=+g[al>>2];aj=d+328|0;ah=d+528|0;G=+g[ah>>2];av=e+320|0;ax=e+520|0;aw=e+324|0;ag=e+524|0;af=e+328|0;ae=e+528|0;P=+g[av>>2]+ +g[ax>>2]-(+g[w>>2]+I);E=+g[aw>>2]+ +g[ag>>2]-(+g[ay>>2]+S);T=+g[af>>2]+ +g[ae>>2]-(+g[aj>>2]+G);R=P*P+E*E+T*T;if(R<=1.1920928955078125e-7){aQ=w;aR=az;aS=ay;aT=al;aU=aj;aV=ah;aW=av;aX=ax;aY=aw;aZ=ag;a_=af;a$=ae;break}O=1.0/+Q(+R);R=P*O;H=E*O;F=T*O;au=c[v>>2]|0;O=+g[au+256>>2];D=+g[au+272>>2];W=+g[au+288>>2];V=+g[au+260>>2];X=+g[au+276>>2];A=+g[au+292>>2];y=+g[au+264>>2];C=+g[au+280>>2];am=+g[au+296>>2];au=c[J>>2]|0;ao=U*(1.0/(R*(R*O+H*D+F*W)+H*(R*V+H*X+F*A)+F*(R*y+H*C+F*am)+(R*(R*+g[au+256>>2]+H*+g[au+272>>2]+F*+g[au+288>>2])+H*(R*+g[au+260>>2]+H*+g[au+276>>2]+F*+g[au+292>>2])+F*(R*+g[au+264>>2]+H*+g[au+280>>2]+F*+g[au+296>>2]))));F=P*ao;P=E*ao;E=T*ao;ao=+Q(+(E*E+(F*F+P*P)));T=1.0/ao;H=T*F;F=T*P;P=T*E;if(+g[d+336>>2]!=0.0){E=ao*0.0;ac=d+504|0;g[ac>>2]=E+ +g[ac>>2];ac=d+508|0;g[ac>>2]=E+ +g[ac>>2];ac=d+512|0;g[ac>>2]=E+ +g[ac>>2];E=(F*X+H*D+P*C)*ao*+g[d+540>>2];C=(F*A+H*W+P*am)*ao*+g[d+544>>2];g[az>>2]=(F*V+H*O+P*y)*ao*+g[d+536>>2]+I;g[al>>2]=E+S;g[ah>>2]=C+G;a0=c[J>>2]|0}else{a0=au}G=-0.0-ao;if(+g[e+336>>2]==0.0){aQ=w;aR=az;aS=ay;aT=al;aU=aj;aV=ah;aW=av;aX=ax;aY=aw;aZ=ag;a_=af;a$=ae;break}C=F*+g[a0+292>>2]+H*+g[a0+288>>2]+P*+g[a0+296>>2];S=F*+g[a0+276>>2]+H*+g[a0+272>>2]+P*+g[a0+280>>2];E=F*+g[a0+260>>2]+H*+g[a0+256>>2]+P*+g[a0+264>>2];P=ao*-0.0;au=e+504|0;g[au>>2]=P+ +g[au>>2];au=e+508|0;g[au>>2]=P+ +g[au>>2];au=e+512|0;g[au>>2]=P+ +g[au>>2];P=S*+g[e+540>>2]*G;S=C*+g[e+544>>2]*G;g[ax>>2]=E*+g[e+536>>2]*G+ +g[ax>>2];g[ag>>2]=P+ +g[ag>>2];g[ae>>2]=S+ +g[ae>>2];aQ=w;aR=az;aS=ay;aT=al;aU=aj;aV=ah;aW=av;aX=ax;aY=aw;aZ=ag;a_=af;a$=ae}else{ae=c[v>>2]|0;af=n;ag=ae+4|0;c[af>>2]=c[ag>>2];c[af+4>>2]=c[ag+4>>2];c[af+8>>2]=c[ag+8>>2];c[af+12>>2]=c[ag+12>>2];ag=n+16|0;af=ae+20|0;c[ag>>2]=c[af>>2];c[ag+4>>2]=c[af+4>>2];c[ag+8>>2]=c[af+8>>2];c[ag+12>>2]=c[af+12>>2];af=n+32|0;ag=ae+36|0;c[af>>2]=c[ag>>2];c[af+4>>2]=c[ag+4>>2];c[af+8>>2]=c[ag+8>>2];c[af+12>>2]=c[ag+12>>2];ag=n+48|0;af=ae+52|0;c[ag>>2]=c[af>>2];c[ag+4>>2]=c[af+4>>2];c[ag+8>>2]=c[af+8>>2];c[ag+12>>2]=c[af+12>>2];af=c[J>>2]|0;ag=o;ae=af+4|0;c[ag>>2]=c[ae>>2];c[ag+4>>2]=c[ae+4>>2];c[ag+8>>2]=c[ae+8>>2];c[ag+12>>2]=c[ae+12>>2];ae=o+16|0;ag=af+20|0;c[ae>>2]=c[ag>>2];c[ae+4>>2]=c[ag+4>>2];c[ae+8>>2]=c[ag+8>>2];c[ae+12>>2]=c[ag+12>>2];ag=o+32|0;ae=af+36|0;c[ag>>2]=c[ae>>2];c[ag+4>>2]=c[ae+4>>2];c[ag+8>>2]=c[ae+8>>2];c[ag+12>>2]=c[ae+12>>2];ae=o+48|0;ag=af+52|0;c[ae>>2]=c[ag>>2];c[ae+4>>2]=c[ag+4>>2];c[ae+8>>2]=c[ag+8>>2];c[ae+12>>2]=c[ag+12>>2];ag=d+320|0;ae=d+520|0;af=d+324|0;aw=d+524|0;S=+g[af>>2]+ +g[aw>>2];ax=d+328|0;av=d+528|0;P=+g[ax>>2]+ +g[av>>2];ah=p|0;g[ah>>2]=+g[ag>>2]+ +g[ae>>2];aj=p+4|0;g[aj>>2]=S;al=p+8|0;g[al>>2]=P;g[p+12>>2]=0.0;ay=e+320|0;az=e+520|0;w=e+324|0;au=e+524|0;P=+g[w>>2]+ +g[au>>2];ac=e+328|0;aa=e+528|0;S=+g[ac>>2]+ +g[aa>>2];_=q|0;g[_>>2]=+g[ay>>2]+ +g[az>>2];ar=q+4|0;g[ar>>2]=P;at=q+8|0;g[at>>2]=S;g[q+12>>2]=0.0;as=r|0;g[as>>2]=1.0;Z=r+4|0;Y=r+20|0;aDD(Z|0,0,16);g[Y>>2]=1.0;K=r+24|0;aq=r+40|0;aDD(K|0,0,16);g[aq>>2]=1.0;aDD(r+44|0,0,20);anY(n,0.0,0.0,0.0,p,f,r);ap=s|0;g[ap>>2]=1.0;aA=s+4|0;aD=s+20|0;aDD(aA|0,0,16);g[aD>>2]=1.0;aB=s+24|0;aP=s+40|0;aDD(aB|0,0,16);g[aP>>2]=1.0;aDD(s+44|0,0,20);anY(o,0.0,0.0,0.0,q,f,s);S=+g[b+548>>2];P=+g[b+552>>2];G=+g[b+556>>2];E=+g[b+560>>2];C=2.0/(S*S+P*P+G*G+E*E);ao=S*C;H=P*C;F=G*C;C=E*ao;I=E*H;y=E*F;E=S*ao;ao=S*H;O=S*F;S=P*H;H=P*F;P=G*F;F=1.0-(S+P);G=ao-y;V=O+I;am=ao+y;y=1.0-(E+P);P=H-C;ao=O-I;I=H+C;C=1.0-(E+S);S=+g[b+356>>2];E=+g[b+360>>2];H=+g[b+364>>2];O=ao*H+(E*am+S*F);W=H*I+(S*G+E*y);A=S*V+E*P+H*C;D=+g[b+372>>2];X=+g[b+376>>2];T=+g[b+380>>2];R=F*D+am*X+ao*T;U=G*D+y*X+I*T;an=V*D+P*X+C*T;ab=+g[b+388>>2];ai=+g[b+392>>2];ak=+g[b+396>>2];aO=F*ab+am*ai+ao*ak;ao=G*ab+y*ai+I*ak;I=V*ab+P*ai+C*ak;C=+g[b+292>>2];P=+g[b+308>>2];V=+g[b+324>>2];y=+g[b+296>>2];G=+g[b+312>>2];am=+g[b+328>>2];F=+g[b+300>>2];aI=+g[b+316>>2];aL=+g[b+332>>2];aM=-0.0- +g[x>>2];aF=-0.0- +g[z>>2];aK=-0.0- +g[B>>2];aN=C*aM+P*aF+V*aK;aJ=y*aM+G*aF+am*aK;aE=F*aM+aI*aF+aL*aK;aK=O*C+W*y+A*F;aF=O*P+W*G+A*aI;aM=O*V+W*am+A*aL;aC=R*C+U*y+an*F;$=R*P+U*G+an*aI;aH=R*V+U*am+an*aL;ad=aO*C+ao*y+I*F;F=aO*P+ao*G+I*aI;aI=aO*V+ao*am+I*aL;aL=S*0.0+E*0.0+H*0.0+ +g[L>>2]+(A*aE+(O*aN+W*aJ));W=D*0.0+X*0.0+T*0.0+ +g[M>>2]+(an*aE+(R*aN+U*aJ));U=ab*0.0+ai*0.0+ak*0.0+ +g[N>>2]+(I*aE+(aO*aN+ao*aJ));aJ=+g[ap>>2];ao=+g[aA>>2];aN=+g[s+8>>2];aO=+g[s+16>>2];aE=+g[aD>>2];I=+g[aB>>2];ak=+g[s+32>>2];ai=+g[s+36>>2];ab=+g[aP>>2];R=+g[s+48>>2]+(aN*U+(aJ*aL+ao*W));an=I*U+(aO*aL+aE*W)+ +g[s+52>>2];T=aL*ak+W*ai+U*ab+ +g[s+56>>2];g[t>>2]=aK*aJ+aC*ao+ad*aN;g[t+4>>2]=aF*aJ+$*ao+F*aN;g[t+8>>2]=aM*aJ+aH*ao+aI*aN;g[t+12>>2]=0.0;g[t+16>>2]=aK*aO+aC*aE+ad*I;g[t+20>>2]=aF*aO+$*aE+F*I;g[t+24>>2]=aM*aO+aH*aE+aI*I;g[t+28>>2]=0.0;g[t+32>>2]=aK*ak+aC*ai+ad*ab;g[t+36>>2]=aF*ak+$*ai+F*ab;g[t+40>>2]=aM*ak+aH*ai+aI*ab;g[t+44>>2]=0.0;g[t+48>>2]=R;g[t+52>>2]=an;g[t+56>>2]=T;g[t+60>>2]=0.0;T=-0.0-aL;aL=-0.0-W;W=-0.0-U;U=ad*W+(aK*T+aC*aL);an=F*W+(aF*T+$*aL);R=aI*W+(aM*T+aH*aL);aL=+g[as>>2];T=+g[Z>>2];W=+g[r+8>>2];ab=+g[r+16>>2];ai=+g[Y>>2];ak=+g[K>>2];I=+g[r+32>>2];aE=+g[r+36>>2];aO=+g[aq>>2];aN=U*aL+an*T+R*W+ +g[r+48>>2];ao=U*ab+an*ai+R*ak+ +g[r+52>>2];aJ=U*I+an*aE+R*aO+ +g[r+56>>2];g[u>>2]=aK*aL+aF*T+aM*W;g[u+4>>2]=aC*aL+$*T+aH*W;g[u+8>>2]=ad*aL+F*T+aI*W;g[u+12>>2]=0.0;g[u+16>>2]=aK*ab+aF*ai+aM*ak;g[u+20>>2]=aC*ab+$*ai+aH*ak;g[u+24>>2]=ad*ab+F*ai+aI*ak;g[u+28>>2]=0.0;g[u+32>>2]=aK*I+aF*aE+aM*aO;g[u+36>>2]=aC*I+$*aE+aH*aO;g[u+40>>2]=ad*I+F*aE+aI*aO;g[u+44>>2]=0.0;g[u+48>>2]=aN;g[u+52>>2]=ao;g[u+56>>2]=aJ;g[u+60>>2]=0.0;aJ=1.0/f;an6(n,t,j,k);ao=+g[k>>2];aN=aJ*+g[j>>2]*ao;aO=aJ*ao*+g[j+4>>2];aI=aJ*ao*+g[j+8>>2];an6(o,u,l,m);ao=+g[m>>2];aE=aN- +g[ah>>2];aN=aO- +g[aj>>2];aO=aI- +g[al>>2];aI=aJ*+g[l>>2]*ao- +g[_>>2];F=aJ*ao*+g[l+4>>2]- +g[ar>>2];I=aJ*ao*+g[l+8>>2]- +g[at>>2];ao=aE*aE+aN*aN+aO*aO;if(ao>1.1920928955078125e-7){aJ=1.0/+Q(+ao);ao=aE*aJ;ad=aN*aJ;aH=aO*aJ;at=c[v>>2]|0;a1=ao*(ao*+g[at+256>>2]+ad*+g[at+272>>2]+aH*+g[at+288>>2])+ad*(ao*+g[at+260>>2]+ad*+g[at+276>>2]+aH*+g[at+292>>2])+aH*(ao*+g[at+264>>2]+ad*+g[at+280>>2]+aH*+g[at+296>>2]);a2=ao;a3=ad;a4=aH}else{a1=0.0;a2=0.0;a3=0.0;a4=0.0}aH=aI*aI+F*F+I*I;if(aH>1.1920928955078125e-7){ad=1.0/+Q(+aH);aH=aI*ad;ao=F*ad;aJ=I*ad;at=c[J>>2]|0;a5=aH*(aH*+g[at+256>>2]+ao*+g[at+272>>2]+aJ*+g[at+288>>2])+ao*(aH*+g[at+260>>2]+ao*+g[at+276>>2]+aJ*+g[at+292>>2])+aJ*(aH*+g[at+264>>2]+ao*+g[at+280>>2]+aJ*+g[at+296>>2]);a6=aH;a7=ao;a8=aJ}else{a5=0.0;a6=0.0;a7=0.0;a8=0.0}aJ=a2*a1+a6*a5;ao=a3*a1+a7*a5;aH=a4*a1+a8*a5;ad=aH*aH+(aJ*aJ+ao*ao);if(ad<=1.1920928955078125e-7){aQ=ag;aR=ae;aS=af;aT=aw;aU=ax;aV=av;aW=ay;aX=az;aY=w;aZ=au;a_=ac;a$=aa;break}$=1.0/+Q(+ad);ad=aJ*$;aJ=ao*$;ao=aH*$;at=c[v>>2]|0;ar=at+256|0;_=at+272|0;al=at+288|0;aj=at+260|0;ah=at+276|0;aq=at+292|0;K=at+264|0;Y=at+280|0;Z=at+296|0;$=ad*(ad*+g[ar>>2]+aJ*+g[_>>2]+ao*+g[al>>2])+aJ*(ad*+g[aj>>2]+aJ*+g[ah>>2]+ao*+g[aq>>2])+ao*(ad*+g[K>>2]+aJ*+g[Y>>2]+ao*+g[Z>>2]);at=c[J>>2]|0;aH=ad*(ad*+g[at+256>>2]+aJ*+g[at+272>>2]+ao*+g[at+288>>2])+aJ*(ad*+g[at+260>>2]+aJ*+g[at+276>>2]+ao*+g[at+292>>2])+ao*(ad*+g[at+264>>2]+aJ*+g[at+280>>2]+ao*+g[at+296>>2]);ao=$+aH;aJ=1.0/(ao*ao);ao=aJ*(aE*$-aI*aH);aI=aJ*(aN*$-F*aH);F=aJ*(aO*$-I*aH);aH=+g[b+564>>2];if(aH<0.0){a9=ao;ba=aI;bb=F}else{if((a[b+545|0]&1)==0){bc=aH}else{bc=aH/$}as=b+568|0;$=+g[as>>2];aH=ao+$;aP=b+572|0;I=+g[aP>>2];aO=aI+I;aB=b+576|0;aJ=+g[aB>>2];aN=F+aJ;aE=+Q(+(aH*aH+aO*aO+aN*aN));if(aE>bc){ad=1.0/aE;bd=bc*aH*ad-$;be=bc*aO*ad-I;bf=bc*aN*ad-aJ}else{bd=ao;be=aI;bf=F}g[as>>2]=bd+$;g[aP>>2]=be+I;g[aB>>2]=bf+aJ;a9=bd;ba=be;bb=bf}aJ=+Q(+(bb*bb+(ba*ba+a9*a9)));I=1.0/aJ;$=a9*I;F=ba*I;aI=bb*I;if(+g[d+336>>2]!=0.0){I=F*+g[aq>>2]+$*+g[al>>2]+aI*+g[Z>>2];ao=F*+g[ah>>2]+$*+g[_>>2]+aI*+g[Y>>2];ad=F*+g[aj>>2]+$*+g[ar>>2]+aI*+g[K>>2];aN=aJ*0.0;K=d+504|0;g[K>>2]=aN+ +g[K>>2];K=d+508|0;g[K>>2]=aN+ +g[K>>2];K=d+512|0;g[K>>2]=aN+ +g[K>>2];aN=ao*aJ*+g[d+540>>2];ao=I*aJ*+g[d+544>>2];g[ae>>2]=ad*aJ*+g[d+536>>2]+ +g[ae>>2];g[aw>>2]=aN+ +g[aw>>2];g[av>>2]=ao+ +g[av>>2];bg=c[J>>2]|0}else{bg=at}ao=-0.0-aJ;if(+g[e+336>>2]==0.0){aQ=ag;aR=ae;aS=af;aT=aw;aU=ax;aV=av;aW=ay;aX=az;aY=w;aZ=au;a_=ac;a$=aa;break}aN=F*+g[bg+292>>2]+$*+g[bg+288>>2]+aI*+g[bg+296>>2];ad=F*+g[bg+276>>2]+$*+g[bg+272>>2]+aI*+g[bg+280>>2];I=F*+g[bg+260>>2]+$*+g[bg+256>>2]+aI*+g[bg+264>>2];aI=aJ*-0.0;at=e+504|0;g[at>>2]=aI+ +g[at>>2];at=e+508|0;g[at>>2]=aI+ +g[at>>2];at=e+512|0;g[at>>2]=aI+ +g[at>>2];aI=ad*+g[e+540>>2]*ao;ad=aN*+g[e+544>>2]*ao;g[az>>2]=I*+g[e+536>>2]*ao+ +g[az>>2];g[au>>2]=aI+ +g[au>>2];g[aa>>2]=ad+ +g[aa>>2];aQ=ag;aR=ae;aS=af;aT=aw;aU=ax;aV=av;aW=ay;aX=az;aY=w;aZ=au;a_=ac;a$=aa}}while(0);bb=+g[aQ>>2]+ +g[aR>>2];ba=+g[aS>>2]+ +g[aT>>2];a9=+g[aU>>2]+ +g[aV>>2];bf=+g[aW>>2]+ +g[aX>>2];be=+g[aY>>2]+ +g[aZ>>2];bd=+g[a_>>2]+ +g[a$>>2];do{if((a[b+518|0]&1)!=0){bc=+g[b+520>>2];a5=bc*+g[b+496>>2]*+g[b+424>>2]/f;a8=+g[b+452>>2];a1=+g[b+456>>2];a4=+g[b+460>>2];a7=(bf-bb)*a8+(be-ba)*a1+(bd-a9)*a4;if(a7>0.0){bh=a5+bc*a7*+g[b+428>>2]}else{bh=a5}a_=b+508|0;a5=+g[a_>>2];a7=a5+bh*+g[b+484>>2];bc=a7>0.0?a7:0.0;g[a_>>2]=bc;a7=bc-a5;a5=a8*a7;a8=a1*a7;a1=a4*a7;a7=+g[b+528>>2];a4=+g[b+532>>2];bc=+g[b+536>>2];a3=a7*a5+a8*a4+a1*bc;a6=a5-a7*a3;a7=a8-a4*a3;a4=a1-bc*a3;a3=+Q(+(a4*a4+(a6*a6+a7*a7)));bc=1.0/a3;a1=bc*a6;a6=bc*a7;a7=bc*a4;a_=c[v>>2]|0;if(+g[d+336>>2]!=0.0){a4=a6*+g[a_+292>>2]+a1*+g[a_+288>>2]+a7*+g[a_+296>>2];bc=a6*+g[a_+276>>2]+a1*+g[a_+272>>2]+a7*+g[a_+280>>2];a8=a6*+g[a_+260>>2]+a1*+g[a_+256>>2]+a7*+g[a_+264>>2];a5=a3*0.0;a_=d+504|0;g[a_>>2]=a5+ +g[a_>>2];a_=d+508|0;g[a_>>2]=a5+ +g[a_>>2];a_=d+512|0;g[a_>>2]=a5+ +g[a_>>2];a5=bc*a3*+g[d+540>>2];bc=a4*a3*+g[d+544>>2];g[aR>>2]=a8*a3*+g[d+536>>2]+ +g[aR>>2];g[aT>>2]=a5+ +g[aT>>2];g[aV>>2]=bc+ +g[aV>>2]}a_=c[J>>2]|0;bc=-0.0-a3;if(+g[e+336>>2]==0.0){break}a5=a6*+g[a_+292>>2]+a1*+g[a_+288>>2]+a7*+g[a_+296>>2];a8=a6*+g[a_+276>>2]+a1*+g[a_+272>>2]+a7*+g[a_+280>>2];a4=a6*+g[a_+260>>2]+a1*+g[a_+256>>2]+a7*+g[a_+264>>2];a7=a3*-0.0;a_=e+504|0;g[a_>>2]=a7+ +g[a_>>2];a_=e+508|0;g[a_>>2]=a7+ +g[a_>>2];a_=e+512|0;g[a_>>2]=a7+ +g[a_>>2];a7=a8*+g[e+540>>2]*bc;a8=a5*+g[e+544>>2]*bc;g[aX>>2]=a4*+g[e+536>>2]*bc+ +g[aX>>2];g[aZ>>2]=a7+ +g[aZ>>2];g[a$>>2]=a8+ +g[a$>>2]}}while(0);if((a[b+517|0]&1)==0){i=h;return}bh=+g[b+524>>2];a8=bh*+g[b+500>>2]*+g[b+424>>2]/f;a_=b+468|0;f=+g[a_>>2];aY=b+472|0;a7=+g[aY>>2];aW=b+476|0;bc=+g[aW>>2];a4=(bf-bb)*f+(be-ba)*a7+(bd-a9)*bc;if(a4>0.0){bi=a8+bh*a4*+g[b+428>>2]}else{bi=a8}aU=b+512|0;a8=+g[aU>>2];a4=a8+bi*+g[b+488>>2];bi=a4>0.0?a4:0.0;g[aU>>2]=bi;a4=bi-a8;aU=c[v>>2]|0;if(+g[d+336>>2]!=0.0){a8=a7*+g[aU+292>>2]+f*+g[aU+288>>2]+bc*+g[aU+296>>2];bi=a7*+g[aU+276>>2]+f*+g[aU+272>>2]+bc*+g[aU+280>>2];bh=a7*+g[aU+260>>2]+f*+g[aU+256>>2]+bc*+g[aU+264>>2];a9=a4*0.0;aU=d+504|0;g[aU>>2]=a9+ +g[aU>>2];aU=d+508|0;g[aU>>2]=a9+ +g[aU>>2];aU=d+512|0;g[aU>>2]=a9+ +g[aU>>2];a9=bi*a4*+g[d+540>>2];bi=a8*a4*+g[d+544>>2];g[aR>>2]=bh*a4*+g[d+536>>2]+ +g[aR>>2];g[aT>>2]=a9+ +g[aT>>2];g[aV>>2]=bi+ +g[aV>>2];bj=+g[a_>>2];bk=+g[aY>>2];bl=+g[aW>>2]}else{bj=f;bk=a7;bl=bc}aW=c[J>>2]|0;bc=-0.0-a4;if(+g[e+336>>2]==0.0){i=h;return}a7=bk*+g[aW+292>>2]+bj*+g[aW+288>>2]+bl*+g[aW+296>>2];f=bk*+g[aW+276>>2]+bj*+g[aW+272>>2]+bl*+g[aW+280>>2];bi=bk*+g[aW+260>>2]+bj*+g[aW+256>>2]+bl*+g[aW+264>>2];bl=a4*-0.0;aW=e+504|0;g[aW>>2]=bl+ +g[aW>>2];aW=e+508|0;g[aW>>2]=bl+ +g[aW>>2];aW=e+512|0;g[aW>>2]=bl+ +g[aW>>2];bl=f*+g[e+540>>2]*bc;f=a7*+g[e+544>>2]*bc;g[aX>>2]=bi*+g[e+536>>2]*bc+ +g[aX>>2];g[aZ>>2]=bl+ +g[aZ>>2];g[a$>>2]=f+ +g[a$>>2];i=h;return}function anU(a){a=a|0;return}function anV(a){a=a|0;return 204}function anW(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0;if((b|0)==1|(b|0)==2){if(e>>>0<3){g[a+592>>2]=d;f=a+584|0;c[f>>2]=c[f>>2]|2;return}else{g[a+424>>2]=d;return}}else if((b|0)==3|(b|0)==4){if(e>>>0<3){g[a+588>>2]=d;e=a+584|0;c[e>>2]=c[e>>2]|1;return}else{g[a+596>>2]=d;e=a+584|0;c[e>>2]=c[e>>2]|4;return}}else{return}}function anX(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;do{if((b|0)==1|(b|0)==2){if(c>>>0<3){d=+g[a+592>>2];break}if((c-3|0)>>>0>=3){d=0.0;break}d=+g[a+424>>2]}else if((b|0)==3|(b|0)==4){if(c>>>0<3){d=+g[a+588>>2];break}if((c-3|0)>>>0>=3){d=0.0;break}d=+g[a+596>>2]}else{d=0.0}}while(0);return+d}function anY(a,b,c,d,e,f,h){a=a|0;b=+b;c=+c;d=+d;e=e|0;f=+f;h=h|0;var j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0;j=i;i=i+16|0;k=j|0;l=c*f+ +g[a+52>>2];c=d*f+ +g[a+56>>2];g[h+48>>2]=b*f+ +g[a+48>>2];g[h+52>>2]=l;g[h+56>>2]=c;g[h+60>>2]=0.0;c=+g[e>>2];l=+g[e+4>>2];b=+g[e+8>>2];d=+Q(+(c*c+l*l+b*b));if(d*f>.7853981852531433){m=.7853981852531433/f}else{m=d}if(m<.0010000000474974513){n=f*.5-m*f*f*f*.02083333395421505*m}else{n=+T(+(m*.5*f))/m}d=n*c;c=n*l;l=n*b;b=+S(+(m*f*.5));ec(a|0,k);f=+g[k>>2];m=+g[k+12>>2];n=+g[k+8>>2];o=+g[k+4>>2];p=b*f+d*m+c*n-l*o;q=l*f+(c*m+b*o)-d*n;r=l*m+b*n+d*o-c*f;s=b*m-d*f-c*o-l*n;n=1.0/+Q(+(s*s+(r*r+(p*p+q*q))));l=p*n;p=n*q;q=n*r;r=n*s;s=2.0/(r*r+(q*q+(l*l+p*p)));n=l*s;o=s*p;c=s*q;s=r*n;f=r*o;d=r*c;r=l*n;n=l*o;m=l*c;l=p*o;o=p*c;p=q*c;g[h>>2]=1.0-(p+l);g[h+4>>2]=n-d;g[h+8>>2]=m+f;g[h+12>>2]=0.0;g[h+16>>2]=d+n;g[h+20>>2]=1.0-(r+p);g[h+24>>2]=o-s;g[h+28>>2]=0.0;g[h+32>>2]=m-f;g[h+36>>2]=s+o;g[h+40>>2]=1.0-(r+l);g[h+44>>2]=0.0;i=j;return}function anZ(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;e=+S(+c);f=+T(+c);c=+g[b+436>>2];if(+P(+e)>1.1920928955078125e-7){h=f*f;i=e*e;j=h/i;k=+g[b+440>>2];l=+Q(+((j+1.0)/(1.0/(k*k)+j/(c*c))));m=i;n=h}else{l=c;m=e*e;n=f*f}c=+Q(+(m+0.0+n));n=l*.5;l=+T(+n)/c;c=l*0.0;m=e*l;e=l*(-0.0-f);f=+S(+n);n=m*0.0;l=e*0.0;h=f*d+n-l;i=f*0.0;j=c*0.0;k=e*d+i-j;o=i+j-m*d;j=-0.0-c;c=d*j-n-l;l=-0.0-m;m=-0.0-e;g[a>>2]=k*m+(f*h+c*j)-o*l;g[a+4>>2]=o*j+(f*k+c*l)-h*m;g[a+8>>2]=h*l+(f*o+c*m)-k*j;g[a+12>>2]=0.0;return}function an_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,R=0.0,U=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0;d=a+548|0;e=d;f=b;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+560|0;h=+g[f>>2];e=a+552|0;i=+g[e>>2];j=i*0.0;b=a+556|0;k=+g[b>>2];l=k*0.0;m=h+j-l;n=h*0.0;o=+g[d>>2];q=o*0.0;r=k+n-q;s=n+q-i;q=-0.0-o;n=q-j-l;l=-0.0-i;j=-0.0-k;t=r*j+(h*m+n*q)-s*l;u=s*q+(h*r+n*l)-m*j;v=m*l+(h*s+n*j)-r*q;q=u*0.0;r=v*0.0;j=r+(q+t);do{if(j<-.9999998807907104){if(+P(0.0)>.7071067690849304){w=0.0;x=p;y=p;z=0.0;break}w=-0.0;x=1.0;y=0.0;z=0.0}else{n=t*0.0;s=+Q(+((j+1.0)*2.0));l=1.0/s;w=(r-q)*l;x=(n-v)*l;y=(u-n)*l;z=s*.5}}while(0);u=1.0/+Q(+(z*z+(y*y+(x*x+w*w))));v=w*u;w=x*u;x=y*u;y=z*u;u=-0.0-v;z=-0.0-w;q=-0.0-x;r=y*o+h*u+k*z-i*q;j=o*q+(h*z+y*i)-k*u;t=h*q+y*k+i*u-o*z;s=y*h-o*u-i*z-k*q;q=1.0/+Q(+(s*s+(t*t+(r*r+j*j))));k=r*q;r=q*j;j=q*t;t=q*s;s=+g[a+436>>2];do{if(s<.05000000074505806){A=v;B=w;C=x;D=y}else{q=+g[a+440>>2];if(q<.05000000074505806){A=v;B=w;C=x;D=y;break}z=y<-1.0?-1.0:y;i=+V(+(z>1.0?1.0:z))*2.0;do{if(i>1.1920928955078125e-7){z=1.0/+Q(+(x*x+(v*v+w*w)));u=v*z;o=w*z;h=x*z;if(+P(+o)<=1.1920928955078125e-7){E=u;F=o;G=h;H=s;break}z=h*h/(o*o);E=u;F=o;G=h;H=+Q(+((z+1.0)/(1.0/(q*q)+z/(s*s))))}else{E=0.0;F=0.0;G=0.0;H=0.0}}while(0);if(+P(+i)<=1.1920928955078125e-7){A=v;B=w;C=x;D=y;break}do{if(i>H){I=H}else{q=-0.0-H;if(i>=q){I=i;break}I=q}}while(0);i=+Q(+(G*G+(F*F+E*E)));q=I*.5;z=+T(+q)/i;A=E*z;B=F*z;C=G*z;D=+S(+q)}}while(0);G=+g[a+444>>2];do{if(G<.05000000074505806){J=k;K=r;L=j;M=t}else{F=t<-1.0?-1.0:t;E=+V(+(F>1.0?1.0:F))*2.0;if(E>3.1415927410125732){F=t>1.0?-1.0:-0.0-t;N=-0.0-k;O=-0.0-r;R=-0.0-j;U=+V(+(F>1.0?1.0:F))*2.0}else{N=k;O=r;R=j;U=E}if(U>1.1920928955078125e-7){E=1.0/+Q(+(R*R+(O*O+N*N)));W=N*E;X=O*E;Y=R*E}else{W=N;X=O;Y=R}if(+P(+U)<=1.1920928955078125e-7){J=k;K=r;L=j;M=t;break}do{if(U>G){Z=G}else{E=-0.0-G;if(U>=E){Z=U;break}Z=E}}while(0);E=+Q(+(Y*Y+(X*X+W*W)));F=Z*.5;I=+T(+F)/E;J=W*I;K=X*I;L=Y*I;M=+S(+F)}}while(0);g[a+548>>2]=B*L+(A*M+D*J)-C*K;g[e>>2]=C*J+(B*M+D*K)-A*L;g[b>>2]=C*M+D*L+A*K-B*J;g[f>>2]=D*M-A*J-B*K-C*L;return}function an$(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+292|0;f=b;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+308|0;e=b+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+324|0;f=b+32|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+340|0;e=b+48|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+356|0;f=d;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+372|0;e=d+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+388|0;f=d+32|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+404|0;e=d+48|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function an0(a){a=a|0;if((a|0)==0){return}aDB(a);return}function an1(a){a=a|0;return 3}function an2(a,b){a=a|0;b=b|0;return}function an3(a,b){a=a|0;b=b|0;c[a+80>>2]=b;return}function an4(a){a=a|0;return c[a+80>>2]|0}function an5(a,b,c){a=a|0;b=b|0;c=c|0;aq3(a|0,b,c)|0;g[b+44>>2]=+g[a+292>>2];g[b+48>>2]=+g[a+296>>2];g[b+52>>2]=+g[a+300>>2];g[b+56>>2]=+g[a+304>>2];g[b+60>>2]=+g[a+308>>2];g[b+64>>2]=+g[a+312>>2];g[b+68>>2]=+g[a+316>>2];g[b+72>>2]=+g[a+320>>2];g[b+76>>2]=+g[a+324>>2];g[b+80>>2]=+g[a+328>>2];g[b+84>>2]=+g[a+332>>2];g[b+88>>2]=+g[a+336>>2];g[b+92>>2]=+g[a+340>>2];g[b+96>>2]=+g[a+344>>2];g[b+100>>2]=+g[a+348>>2];g[b+104>>2]=+g[a+352>>2];g[b+108>>2]=+g[a+356>>2];g[b+112>>2]=+g[a+360>>2];g[b+116>>2]=+g[a+364>>2];g[b+120>>2]=+g[a+368>>2];g[b+124>>2]=+g[a+372>>2];g[b+128>>2]=+g[a+376>>2];g[b+132>>2]=+g[a+380>>2];g[b+136>>2]=+g[a+384>>2];g[b+140>>2]=+g[a+388>>2];g[b+144>>2]=+g[a+392>>2];g[b+148>>2]=+g[a+396>>2];g[b+152>>2]=+g[a+400>>2];g[b+156>>2]=+g[a+404>>2];g[b+160>>2]=+g[a+408>>2];g[b+164>>2]=+g[a+412>>2];g[b+168>>2]=+g[a+416>>2];g[b+172>>2]=+g[a+436>>2];g[b+176>>2]=+g[a+440>>2];g[b+180>>2]=+g[a+444>>2];g[b+184>>2]=+g[a+420>>2];g[b+188>>2]=+g[a+424>>2];g[b+192>>2]=+g[a+428>>2];g[b+196>>2]=+g[a+432>>2];return 18136}function an6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0;e=i;i=i+64|0;f=e|0;h=e+48|0;j=+g[a+20>>2];k=+g[a+40>>2];l=+g[a+24>>2];m=+g[a+36>>2];n=j*k-l*m;o=+g[a+32>>2];p=+g[a+16>>2];q=l*o-k*p;r=m*p-j*o;s=+g[a>>2];t=+g[a+4>>2];u=+g[a+8>>2];v=1.0/(n*s+t*q+r*u);w=n*v;n=v*(m*u-k*t);x=v*(l*t-j*u);y=q*v;q=v*(k*s-o*u);k=v*(p*u-l*s);l=r*v;r=v*(o*t-m*s);m=v*(j*s-p*t);t=+g[b>>2];p=+g[b+4>>2];s=+g[b+8>>2];j=+g[b+16>>2];v=+g[b+20>>2];o=+g[b+24>>2];u=+g[b+32>>2];z=+g[b+36>>2];A=+g[b+40>>2];g[f>>2]=w*t+y*p+l*s;g[f+4>>2]=t*n+p*q+r*s;g[f+8>>2]=t*x+p*k+m*s;g[f+12>>2]=0.0;g[f+16>>2]=w*j+y*v+l*o;g[f+20>>2]=n*j+q*v+r*o;g[f+24>>2]=x*j+k*v+m*o;g[f+28>>2]=0.0;g[f+32>>2]=w*u+y*z+l*A;g[f+36>>2]=n*u+q*z+r*A;g[f+40>>2]=x*u+k*z+m*A;g[f+44>>2]=0.0;ec(f,h);f=h|0;A=+g[f>>2];b=h+4|0;m=+g[b>>2];a=h+8|0;z=+g[a>>2];B=h+12|0;k=+g[B>>2];u=1.0/+Q(+(A*A+m*m+z*z+k*k));x=A*u;g[f>>2]=x;A=m*u;g[b>>2]=A;m=z*u;g[a>>2]=m;z=k*u;g[B>>2]=z;u=z<-1.0?-1.0:z;g[d>>2]=+V(+(u>1.0?1.0:u))*2.0;d=c|0;g[d>>2]=x;B=c+4|0;g[B>>2]=A;a=c+8|0;g[a>>2]=m;b=c+12|0;g[b>>2]=0.0;u=x*x+A*A+m*m;if(u<1.4210854715202004e-14){g[d>>2]=1.0;g[B>>2]=0.0;g[a>>2]=0.0;g[b>>2]=0.0;i=e;return}else{z=1.0/+Q(+u);g[d>>2]=x*z;g[B>>2]=z*A;g[a>>2]=z*m;i=e;return}}function an7(a){a=a|0;aof(a|0);if((a|0)==0){return}aDB(a);return}function an8(a){a=a|0;aof(a|0);return}function an9(a,b){a=a|0;b=+b;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,P=0;d=i;i=i+32|0;e=d|0;f=d+16|0;h=a+8|0;j=c[h>>2]|0;if((j|0)>0){k=a+16|0;l=f|0;m=f+4|0;n=f+8|0;o=e|0;p=e+4|0;q=e+8|0;r=e+12|0;s=f+12|0;t=a+76|0;u=a+24|0;v=0;w=j;while(1){j=c[(c[k>>2]|0)+(v<<2)>>2]|0;if((c[j+232>>2]&2|0)==0|(j|0)==0){x=w}else{y=c[j+192>>2]|0;dI[c[(c[y>>2]|0)+8>>2]&1023](y,j+4|0,e,f);z=+g[l>>2];A=+g[m>>2];B=+g[n>>2];C=+g[o>>2];D=+g[p>>2];E=+g[q>>2];F=+g[j+304>>2]*b;G=+g[j+308>>2]*b;H=+g[j+312>>2]*b;if(F>0.0){I=C;J=z+F}else{I=C+F;J=z}if(G>0.0){K=D;L=A+G}else{K=D+G;L=A}if(H>0.0){M=E;N=B+H}else{M=E+H;N=B}g[o>>2]=I;g[p>>2]=K;g[q>>2]=M;g[r>>2]=0.0;g[s>>2]=0.0;g[l>>2]=J+0.0;g[m>>2]=L+0.0;g[n>>2]=N+0.0;y=c[t>>2]|0;co[c[(c[y>>2]|0)+16>>2]&255](y,c[j+188>>2]|0,e,f,c[u>>2]|0);x=c[h>>2]|0}j=v+1|0;if((j|0)<(x|0)){v=j;w=x}else{O=t;P=u;break}}}else{O=a+76|0;P=a+24|0}u=c[O>>2]|0;cv[c[(c[u>>2]|0)+32>>2]&2047](u,c[P>>2]|0);P=a+28|0;g[P>>2]=b;g[a+40>>2]=1.0;c[a+32>>2]=0;u=a+36|0;c[u>>2]=2;O=a+24|0;t=c[O>>2]|0;if((t|0)==0){c[u>>2]=1;i=d;return}x=c[(c[t>>2]|0)+32>>2]|0;w=c[a+76>>2]|0;a=cA[c[(c[w>>2]|0)+36>>2]&4095](w)|0;dI[x&1023](t,a,P,c[O>>2]|0);c[u>>2]=1;i=d;return}function aoa(a,b){a=a|0;b=+b;var d=0,e=0,f=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0;d=i;i=i+16|0;e=d|0;f=a|0;aDi();j=a|0;k=c[a+92>>2]|0;if((k|0)!=0){cq[k&1023](j,b)}k=a|0;l=a;ct[c[(c[l>>2]|0)+8>>2]&2047](k);m=a;cq[c[(c[m>>2]|0)+136>>2]&1023](f,b);g[a+28>>2]=b;c[a+32>>2]=0;c[a+48>>2]=cA[c[(c[a>>2]|0)+16>>2]&4095](k)|0;ct[c[(c[l>>2]|0)+40>>2]&2047](k);ct[c[(c[a>>2]|0)+148>>2]&2047](f);g[a+112>>2]=b;cv[c[(c[a>>2]|0)+152>>2]&2047](f,a+100|0);cq[c[(c[a>>2]|0)+176>>2]&1023](a,b);n=+g[a+40>>2];if(n<0.0){o=n;bK(17384,(l=i,i=i+8|0,h[l>>3]=o,l)|0)|0;i=l}cq[c[(c[m>>2]|0)+140>>2]&1023](f,n*b);aDo(16856);m=a+248|0;if((c[m>>2]|0)>0){l=a+256|0;p=0;do{q=c[(c[l>>2]|0)+(p<<2)>>2]|0;dF[c[(c[q>>2]|0)+8>>2]&255](q,k,b);p=p+1|0;}while((p|0)<(c[m>>2]|0))}m=c[9152]|0;p=m+16|0;k=(c[p>>2]|0)-1|0;c[p>>2]=k;do{if((k|0)==0){if((c[m+4>>2]|0)==0){r=m}else{b3(e|0,0)|0;l=c[10742]|0;q=m+8|0;g[q>>2]=+(((c[e+4>>2]|0)-(c[l+4>>2]|0)+(((c[e>>2]|0)-(c[l>>2]|0)|0)*1e6|0)-(c[m+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[q>>2];if((c[p>>2]|0)!=0){break}r=c[9152]|0}c[9152]=c[r+20>>2]}}while(0);aom(f,b);f=c[a+88>>2]|0;if((f|0)==0){i=d;return}cq[f&1023](j,b);i=d;return}function aob(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0;aty(b|0,d,e,h);c[b+88>>2]=0;c[b+92>>2]=0;c[b+96>>2]=0;g[b+100>>2]=.6000000238418579;g[b+104>>2]=1.0;g[b+108>>2]=.30000001192092896;g[b+116>>2]=0.0;g[b+124>>2]=20.0;c[b+120>>2]=10;g[b+132>>2]=.20000000298023224;g[b+136>>2]=.10000000149011612;g[b+140>>2]=0.0;g[b+128>>2]=1.0;c[b+144>>2]=0;g[b+148>>2]=-.019999999552965164;g[b+152>>2]=0.0;g[b+156>>2]=.8500000238418579;c[b+160>>2]=260;c[b+164>>2]=2;c[b+168>>2]=128;c[b>>2]=21464;h=b+172|0;c[h>>2]=f;a[b+196|0]=1;c[b+192>>2]=0;c[b+184>>2]=0;c[b+188>>2]=0;a[b+216|0]=1;c[b+212>>2]=0;c[b+204>>2]=0;c[b+208>>2]=0;g[b+220>>2]=0.0;g[b+224>>2]=-10.0;g[b+228>>2]=0.0;g[b+232>>2]=0.0;g[b+236>>2]=0.0;a[b+242|0]=0;a[b+260|0]=1;c[b+256>>2]=0;c[b+248>>2]=0;c[b+252>>2]=0;c[b+264>>2]=0;if((f|0)==0){c[9806]=(c[9806]|0)+1;f=aDx(147)|0;do{if((f|0)==0){i=0}else{e=-(f+4|0)&15;d=f+(e+4)|0;c[f+e>>2]=f;if((d|0)==0){i=0;break}c[d>>2]=19632;a[f+(e+24)|0]=1;c[f+(e+20)>>2]=0;c[f+(e+12)>>2]=0;c[f+(e|16)>>2]=0;a[f+(e+44)|0]=1;c[f+(e+40)>>2]=0;c[f+(e|32)>>2]=0;c[f+(e+36)>>2]=0;a[f+(e|64)|0]=1;c[f+(e+60)>>2]=0;c[f+(e+52)>>2]=0;c[f+(e+56)>>2]=0;a[f+(e+84)|0]=1;c[f+(e|80)>>2]=0;c[f+(e+72)>>2]=0;c[f+(e+76)>>2]=0;a[f+(e+104)|0]=1;c[f+(e+100)>>2]=0;c[f+(e+92)>>2]=0;c[f+(e|96)>>2]=0;a[f+(e+124)|0]=1;c[f+(e+120)>>2]=0;c[f+(e|112)>>2]=0;c[f+(e+116)>>2]=0;c[f+(e|128)>>2]=0;i=d}}while(0);c[h>>2]=i;a[b+241|0]=1}else{a[b+241|0]=0}c[9806]=(c[9806]|0)+1;i=aDx(87)|0;if((i|0)==0){j=0;k=b+176|0;c[k>>2]=j;l=b+240|0;a[l]=1;return}h=-(i+4|0)&15;f=i+(h+4)|0;c[i+h>>2]=i;if((f|0)==0){j=0;k=b+176|0;c[k>>2]=j;l=b+240|0;a[l]=1;return}c[f>>2]=20520;a[i+(h+24)|0]=1;c[i+(h+20)>>2]=0;c[i+(h+12)>>2]=0;c[i+(h|16)>>2]=0;a[i+(h+44)|0]=1;c[i+(h+40)>>2]=0;c[i+(h|32)>>2]=0;c[i+(h+36)>>2]=0;a[i+(h|64)|0]=1;c[i+(h+60)>>2]=0;c[i+(h+52)>>2]=0;c[i+(h+56)>>2]=0;a[i+(h+68)|0]=1;j=f;k=b+176|0;c[k>>2]=j;l=b+240|0;a[l]=1;return}function aoc(a){a=a|0;aof(a);if((a|0)==0){return}aDB(a);return}function aod(a,b){a=a|0;b=+b;var d=0,e=0,f=0,g=0,h=0;d=a+8|0;e=c[d>>2]|0;if((e|0)<=0){return}f=a+16|0;a=0;g=e;while(1){e=c[(c[f>>2]|0)+(a<<2)>>2]|0;do{if((c[e+232>>2]&2|0)==0){h=g}else{if((e|0)==0){h=g;break}if((c[e+216>>2]|0)==2){h=g;break}if((c[e+204>>2]&2|0)==0){h=g;break}ap0(e,b);h=c[d>>2]|0}}while(0);e=a+1|0;if((e|0)<(h|0)){a=e;g=h}else{break}}return}function aoe(a,b){a=a|0;b=+b;var d=0,e=0,f=0,h=0,j=0,k=0,l=0;d=i;i=i+16|0;e=d|0;aDo(16856);f=a+248|0;if((c[f>>2]|0)>0){h=a+256|0;j=a|0;a=0;do{k=c[(c[h>>2]|0)+(a<<2)>>2]|0;dF[c[(c[k>>2]|0)+8>>2]&255](k,j,b);a=a+1|0;}while((a|0)<(c[f>>2]|0))}f=c[9152]|0;a=f+16|0;j=(c[a>>2]|0)-1|0;c[a>>2]=j;if((j|0)!=0){i=d;return}do{if((c[f+4>>2]|0)==0){l=f}else{b3(e|0,0)|0;j=c[10742]|0;h=f+8|0;g[h>>2]=+(((c[e+4>>2]|0)-(c[j+4>>2]|0)+(((c[e>>2]|0)-(c[j>>2]|0)|0)*1e6|0)-(c[f+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[h>>2];if((c[a>>2]|0)==0){l=c[9152]|0;break}else{i=d;return}}}while(0);c[9152]=c[l+20>>2];i=d;return}function aof(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;c[b>>2]=21464;do{if((a[b+240|0]&1)!=0){d=b+176|0;e=c[d>>2]|0;ct[c[c[e>>2]>>2]&2047](e);e=c[d>>2]|0;if((e|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[e-68+64>>2]|0)}}while(0);do{if((a[b+241|0]&1)!=0){e=b+172|0;d=c[e>>2]|0;ct[c[c[d>>2]>>2]&2047](d);d=c[e>>2]|0;if((d|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}}while(0);d=b+248|0;e=b+256|0;f=c[e>>2]|0;g=b+260|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+252>>2]=0;d=b+204|0;e=b+212|0;g=c[e>>2]|0;f=b+216|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+208>>2]=0;d=b+184|0;e=b+192|0;f=c[e>>2]|0;g=b+196|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+188|0;c[h>>2]=0;i=b|0;atA(i);return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+188|0;c[h>>2]=0;i=b|0;atA(i);return}function aog(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0;b=i;i=i+16|0;d=b|0;aDo(17208);e=a|0;atR(e);f=a;L2701:do{if((cA[c[(c[f>>2]|0)+16>>2]&4095](e)|0)!=0){h=cA[c[(c[f>>2]|0)+16>>2]&4095](e)|0;if(((cA[c[(c[h>>2]|0)+48>>2]&4095](h)|0)&6144|0)==0){break}h=a;j=cA[c[(c[a>>2]|0)+100>>2]&4095](a)|0;while(1){k=j-1|0;if((j|0)<=0){break L2701}aoh(a,dj[c[(c[h>>2]|0)+104>>2]&511](a,k)|0);j=k}}}while(0);do{if((cA[c[(c[f>>2]|0)+16>>2]&4095](e)|0)!=0){j=cA[c[(c[f>>2]|0)+16>>2]&4095](e)|0;if(((cA[c[(c[j>>2]|0)+48>>2]&4095](j)|0)&3|0)==0){break}if((cA[c[(c[f>>2]|0)+16>>2]&4095](e)|0)==0){break}j=cA[c[(c[f>>2]|0)+16>>2]&4095](e)|0;if((cA[c[(c[j>>2]|0)+48>>2]&4095](j)|0)==0){break}j=a+248|0;if((c[j>>2]|0)<=0){break}h=a+256|0;k=a+80|0;l=0;do{m=c[(c[h>>2]|0)+(l<<2)>>2]|0;cv[c[(c[m>>2]|0)+12>>2]&2047](m,c[k>>2]|0);l=l+1|0;}while((l|0)<(c[j>>2]|0))}}while(0);a=c[9152]|0;e=a+16|0;f=(c[e>>2]|0)-1|0;c[e>>2]=f;if((f|0)!=0){i=b;return}do{if((c[a+4>>2]|0)==0){n=a}else{b3(d|0,0)|0;f=c[10742]|0;j=a+8|0;g[j>>2]=+(((c[d+4>>2]|0)-(c[f+4>>2]|0)+(((c[d>>2]|0)-(c[f>>2]|0)|0)*1e6|0)-(c[a+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[j>>2];if((c[e>>2]|0)==0){n=c[9152]|0;break}else{i=b;return}}}while(0);c[9152]=c[n+20>>2];i=b;return}function aoh(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0,ak=0,al=0,am=0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0;e=i;i=i+1392|0;f=e|0;h=e+48|0;j=e+96|0;k=e+144|0;l=e+192|0;m=e+240|0;n=e+288|0;o=e+336|0;p=e+384|0;q=e+448|0;r=e+512|0;s=e+576|0;t=e+592|0;u=e+608|0;v=e+624|0;w=e+688|0;x=e+752|0;y=e+768|0;z=e+784|0;A=e+800|0;B=e+816|0;C=e+880|0;D=e+944|0;E=e+960|0;F=e+976|0;G=e+992|0;H=e+1008|0;I=e+1072|0;J=e+1088|0;K=e+1104|0;L=e+1120|0;M=e+1136|0;N=e+1152|0;O=e+1168|0;P=e+1184|0;Q=e+1200|0;R=e+1216|0;U=e+1232|0;V=e+1296|0;W=e+1312|0;X=e+1328|0;Y=e+1344|0;Z=e+1360|0;_=e+1376|0;$=b|0;aa=b;b=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;ab=(cA[c[(c[b>>2]|0)+48>>2]&4095](b)|0)>>>11;b=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;ac=(cA[c[(c[b>>2]|0)+48>>2]&4095](b)|0)>>>12;ad=+g[d+36>>2];if(ad<=0.0){i=e;return}switch(c[d+4>>2]|0){case 3:{g[p>>2]=1.0;aDD(p+4|0,0,16);g[p+20>>2]=1.0;aDD(p+24|0,0,16);g[p+40>>2]=1.0;aDD(p+44|0,0,20);ae=+g[d+292>>2];af=+g[d+296>>2];ag=+g[d+300>>2];b=c[d+24>>2]|0;ah=+g[b+56>>2]+(ae*+g[b+20>>2]+af*+g[b+24>>2]+ag*+g[b+28>>2]);ai=+g[b+60>>2]+(ae*+g[b+36>>2]+af*+g[b+40>>2]+ag*+g[b+44>>2]);aj=p+48|0;g[aj>>2]=+g[b+52>>2]+(ae*+g[b+4>>2]+af*+g[b+8>>2]+ag*+g[b+12>>2]);b=p+52|0;g[b>>2]=ah;ak=p+56|0;g[ak>>2]=ai;al=p+60|0;g[al>>2]=0.0;am=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;dF[c[(c[am>>2]|0)+56>>2]&255](am,p,ad);ai=+g[d+308>>2];ah=+g[d+312>>2];ag=+g[d+316>>2];am=c[d+28>>2]|0;af=+g[am+56>>2]+(ai*+g[am+20>>2]+ah*+g[am+24>>2]+ag*+g[am+28>>2]);ae=+g[am+60>>2]+(ai*+g[am+36>>2]+ah*+g[am+40>>2]+ag*+g[am+44>>2]);g[aj>>2]=+g[am+52>>2]+(ai*+g[am+4>>2]+ah*+g[am+8>>2]+ag*+g[am+12>>2]);g[b>>2]=af;g[ak>>2]=ae;g[al>>2]=0.0;if((ab&1|0)==0){i=e;return}al=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;dF[c[(c[al>>2]|0)+56>>2]&255](al,p,ad);i=e;return};case 4:{p=c[d+24>>2]|0;al=p+4|0;ak=d+544|0;b=o;anx(o,al|0,ak);ae=+g[ak+48>>2];af=+g[ak+52>>2];ag=+g[ak+56>>2];ah=+g[al>>2]*ae+ +g[p+8>>2]*af+ +g[p+12>>2]*ag+ +g[p+52>>2];ai=+g[p+20>>2]*ae+ +g[p+24>>2]*af+ +g[p+28>>2]*ag+ +g[p+56>>2];an=+g[p+36>>2]*ae+ +g[p+40>>2]*af+ +g[p+44>>2]*ag+ +g[p+60>>2];p=q+48|0;al=q|0;do{al=al+16|0;}while((al|0)!=(p|0));p=q;c[p>>2]=c[b>>2];c[p+4>>2]=c[b+4>>2];c[p+8>>2]=c[b+8>>2];c[p+12>>2]=c[b+12>>2];b=q+16|0;al=o+16|0;c[b>>2]=c[al>>2];c[b+4>>2]=c[al+4>>2];c[b+8>>2]=c[al+8>>2];c[b+12>>2]=c[al+12>>2];al=q+32|0;ak=o+32|0;c[al>>2]=c[ak>>2];c[al+4>>2]=c[ak+4>>2];c[al+8>>2]=c[ak+8>>2];c[al+12>>2]=c[ak+12>>2];g[q+48>>2]=ah;g[q+52>>2]=ai;g[q+56>>2]=an;g[q+60>>2]=0.0;if((ab&1|0)==0){ak=c[d+28>>2]|0;o=ak+4|0;am=d+608|0;aj=m;anx(m,o|0,am);an=+g[am+48>>2];ai=+g[am+52>>2];ah=+g[am+56>>2];ag=+g[o>>2]*an+ +g[ak+8>>2]*ai+ +g[ak+12>>2]*ah+ +g[ak+52>>2];af=+g[ak+20>>2]*an+ +g[ak+24>>2]*ai+ +g[ak+28>>2]*ah+ +g[ak+56>>2];ae=+g[ak+36>>2]*an+ +g[ak+40>>2]*ai+ +g[ak+44>>2]*ah+ +g[ak+60>>2];ak=r+48|0;o=r|0;do{o=o+16|0;}while((o|0)!=(ak|0));ak=r;c[ak>>2]=c[aj>>2];c[ak+4>>2]=c[aj+4>>2];c[ak+8>>2]=c[aj+8>>2];c[ak+12>>2]=c[aj+12>>2];aj=r+16|0;o=m+16|0;c[aj>>2]=c[o>>2];c[aj+4>>2]=c[o+4>>2];c[aj+8>>2]=c[o+8>>2];c[aj+12>>2]=c[o+12>>2];o=r+32|0;am=m+32|0;c[o>>2]=c[am>>2];c[o+4>>2]=c[am+4>>2];c[o+8>>2]=c[am+8>>2];c[o+12>>2]=c[am+12>>2];g[r+48>>2]=ag;g[r+52>>2]=af;g[r+56>>2]=ae;g[r+60>>2]=0.0;c[p>>2]=c[ak>>2];c[p+4>>2]=c[ak+4>>2];c[p+8>>2]=c[ak+8>>2];c[p+12>>2]=c[ak+12>>2];c[b>>2]=c[aj>>2];c[b+4>>2]=c[aj+4>>2];c[b+8>>2]=c[aj+8>>2];c[b+12>>2]=c[aj+12>>2];c[al>>2]=c[o>>2];c[al+4>>2]=c[o+4>>2];c[al+8>>2]=c[o+8>>2];c[al+12>>2]=c[o+12>>2];o=q+48|0;aj=r+48|0;c[o>>2]=c[aj>>2];c[o+4>>2]=c[aj+4>>2];c[o+8>>2]=c[aj+8>>2];c[o+12>>2]=c[aj+12>>2]}else{aj=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;dF[c[(c[aj>>2]|0)+56>>2]&255](aj,q,ad);aj=c[d+28>>2]|0;o=aj+4|0;ak=d+608|0;am=n;anx(n,o|0,ak);ae=+g[ak+48>>2];af=+g[ak+52>>2];ag=+g[ak+56>>2];ah=+g[o>>2]*ae+ +g[aj+8>>2]*af+ +g[aj+12>>2]*ag+ +g[aj+52>>2];ai=+g[aj+20>>2]*ae+ +g[aj+24>>2]*af+ +g[aj+28>>2]*ag+ +g[aj+56>>2];an=+g[aj+36>>2]*ae+ +g[aj+40>>2]*af+ +g[aj+44>>2]*ag+ +g[aj+60>>2];aj=r+48|0;o=r|0;do{o=o+16|0;}while((o|0)!=(aj|0));aj=r;c[aj>>2]=c[am>>2];c[aj+4>>2]=c[am+4>>2];c[aj+8>>2]=c[am+8>>2];c[aj+12>>2]=c[am+12>>2];am=r+16|0;o=n+16|0;c[am>>2]=c[o>>2];c[am+4>>2]=c[o+4>>2];c[am+8>>2]=c[o+8>>2];c[am+12>>2]=c[o+12>>2];o=r+32|0;ak=n+32|0;c[o>>2]=c[ak>>2];c[o+4>>2]=c[ak+4>>2];c[o+8>>2]=c[ak+8>>2];c[o+12>>2]=c[ak+12>>2];g[r+48>>2]=ah;g[r+52>>2]=ai;g[r+56>>2]=an;g[r+60>>2]=0.0;c[p>>2]=c[aj>>2];c[p+4>>2]=c[aj+4>>2];c[p+8>>2]=c[aj+8>>2];c[p+12>>2]=c[aj+12>>2];c[b>>2]=c[am>>2];c[b+4>>2]=c[am+4>>2];c[b+8>>2]=c[am+8>>2];c[b+12>>2]=c[am+12>>2];c[al>>2]=c[o>>2];c[al+4>>2]=c[o+4>>2];c[al+8>>2]=c[o+8>>2];c[al+12>>2]=c[o+12>>2];o=q+48|0;al=r+48|0;c[o>>2]=c[al>>2];c[o+4>>2]=c[al+4>>2];c[o+8>>2]=c[al+8>>2];c[o+12>>2]=c[al+12>>2];al=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;dF[c[(c[al>>2]|0)+56>>2]&255](al,q,ad)}al=d+680|0;o=d+684|0;an=+ck(+(+g[al>>2]- +g[o>>2]),6.2831854820251465);do{if(an<-3.1415927410125732){ao=an+6.2831854820251465}else{if(an<=3.1415927410125732){ao=an;break}ao=an-6.2831854820251465}}while(0);an=+ck(+(+g[al>>2]+ +g[o>>2]),6.2831854820251465);do{if(an<-3.1415927410125732){ap=an+6.2831854820251465}else{if(an<=3.1415927410125732){ap=an;break}ap=an-6.2831854820251465}}while(0);if(ao==ap){i=e;return}o=ao>ap;if((ac&1|0)==0){i=e;return}g[s>>2]=+g[q+8>>2];g[s+4>>2]=+g[q+24>>2];g[s+8>>2]=+g[q+40>>2];g[s+12>>2]=0.0;g[t>>2]=+g[q>>2];g[t+4>>2]=+g[q+16>>2];g[t+8>>2]=+g[q+32>>2];g[t+12>>2]=0.0;al=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;r=c[(c[al>>2]|0)+60>>2]|0;aDD(u|0,0,16);dt[r&63](al,q+48|0,s,t,ad,ad,o?0.0:ao,o?6.2831854820251465:ap,u,o^1,10.0);i=e;return};case 7:{o=d+816|0;u=U;t=o;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];t=U+16|0;s=o+16|0;c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];s=U+32|0;q=o+32|0;c[s>>2]=c[q>>2];c[s+4>>2]=c[q+4>>2];c[s+8>>2]=c[q+8>>2];c[s+12>>2]=c[q+12>>2];q=U+48|0;al=o+48|0;c[q>>2]=c[al>>2];c[q+4>>2]=c[al+4>>2];c[q+8>>2]=c[al+8>>2];c[q+12>>2]=c[al+12>>2];if((ab&1|0)==0){al=d+880|0;c[u>>2]=c[al>>2];c[u+4>>2]=c[al+4>>2];c[u+8>>2]=c[al+8>>2];c[u+12>>2]=c[al+12>>2];al=d+896|0;c[t>>2]=c[al>>2];c[t+4>>2]=c[al+4>>2];c[t+8>>2]=c[al+8>>2];c[t+12>>2]=c[al+12>>2];al=d+912|0;c[s>>2]=c[al>>2];c[s+4>>2]=c[al+4>>2];c[s+8>>2]=c[al+8>>2];c[s+12>>2]=c[al+12>>2];al=d+928|0;c[q>>2]=c[al>>2];c[q+4>>2]=c[al+4>>2];c[q+8>>2]=c[al+8>>2];c[q+12>>2]=c[al+12>>2]}else{al=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;dF[c[(c[al>>2]|0)+56>>2]&255](al,U,ad);al=d+880|0;c[u>>2]=c[al>>2];c[u+4>>2]=c[al+4>>2];c[u+8>>2]=c[al+8>>2];c[u+12>>2]=c[al+12>>2];al=d+896|0;c[t>>2]=c[al>>2];c[t+4>>2]=c[al+4>>2];c[t+8>>2]=c[al+8>>2];c[t+12>>2]=c[al+12>>2];al=d+912|0;c[s>>2]=c[al>>2];c[s+4>>2]=c[al+4>>2];c[s+8>>2]=c[al+8>>2];c[s+12>>2]=c[al+12>>2];al=d+928|0;c[q>>2]=c[al>>2];c[q+4>>2]=c[al+4>>2];c[q+8>>2]=c[al+8>>2];c[q+12>>2]=c[al+12>>2];al=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;dF[c[(c[al>>2]|0)+56>>2]&255](al,U,ad)}if((ac&1|0)==0){i=e;return}U=(a[d+172|0]&1)!=0?o:d+880|0;ap=+g[U>>2];ao=+g[U+4>>2];an=+g[U+16>>2];ai=+g[U+20>>2];ah=+g[U+32>>2];ag=+g[U+36>>2];af=+g[U+48>>2];ae=+g[U+52>>2];aq=+g[U+56>>2];ar=+g[d+176>>2];as=ao*0.0;at=+g[U+8>>2]*0.0;au=ai*0.0;av=+g[U+24>>2]*0.0;aw=ag*0.0;ax=+g[U+40>>2]*0.0;g[V>>2]=af+(at+(as+ap*ar));g[V+4>>2]=ae+(av+(au+an*ar));g[V+8>>2]=aq+(ax+(aw+ah*ar));g[V+12>>2]=0.0;ar=+g[d+180>>2];g[W>>2]=af+(at+(as+ap*ar));g[W+4>>2]=ae+(av+(au+an*ar));g[W+8>>2]=aq+(ax+(aw+ah*ar));g[W+12>>2]=0.0;U=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;o=c[(c[U>>2]|0)+8>>2]|0;aDD(X|0,0,16);dI[o&1023](U,V,W,X);g[Y>>2]=ap;g[Y+4>>2]=an;g[Y+8>>2]=ah;g[Y+12>>2]=0.0;g[Z>>2]=ao;g[Z+4>>2]=ai;g[Z+8>>2]=ag;g[Z+12>>2]=0.0;ag=+g[d+184>>2];ai=+g[d+188>>2];X=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;W=c[(c[X>>2]|0)+60>>2]|0;aDD(_|0,0,16);dt[W&63](X,d+928|0,Y,Z,ad,ad,ag,ai,_,1,10.0);i=e;return};case 9:case 6:{_=d+1056|0;Z=H;Y=_;c[Z>>2]=c[Y>>2];c[Z+4>>2]=c[Y+4>>2];c[Z+8>>2]=c[Y+8>>2];c[Z+12>>2]=c[Y+12>>2];X=H+16|0;W=_+16|0;c[X>>2]=c[W>>2];c[X+4>>2]=c[W+4>>2];c[X+8>>2]=c[W+8>>2];c[X+12>>2]=c[W+12>>2];V=H+32|0;U=_+32|0;c[V>>2]=c[U>>2];c[V+4>>2]=c[U+4>>2];c[V+8>>2]=c[U+8>>2];c[V+12>>2]=c[U+12>>2];o=H+48|0;al=_+48|0;c[o>>2]=c[al>>2];c[o+4>>2]=c[al+4>>2];c[o+8>>2]=c[al+8>>2];c[o+12>>2]=c[al+12>>2];if((ab&1|0)==0){_=d+1120|0;c[Z>>2]=c[_>>2];c[Z+4>>2]=c[_+4>>2];c[Z+8>>2]=c[_+8>>2];c[Z+12>>2]=c[_+12>>2];_=d+1136|0;c[X>>2]=c[_>>2];c[X+4>>2]=c[_+4>>2];c[X+8>>2]=c[_+8>>2];c[X+12>>2]=c[_+12>>2];_=d+1152|0;c[V>>2]=c[_>>2];c[V+4>>2]=c[_+4>>2];c[V+8>>2]=c[_+8>>2];c[V+12>>2]=c[_+12>>2];_=d+1168|0;c[o>>2]=c[_>>2];c[o+4>>2]=c[_+4>>2];c[o+8>>2]=c[_+8>>2];c[o+12>>2]=c[_+12>>2]}else{_=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;dF[c[(c[_>>2]|0)+56>>2]&255](_,H,ad);_=d+1120|0;c[Z>>2]=c[_>>2];c[Z+4>>2]=c[_+4>>2];c[Z+8>>2]=c[_+8>>2];c[Z+12>>2]=c[_+12>>2];_=d+1136|0;c[X>>2]=c[_>>2];c[X+4>>2]=c[_+4>>2];c[X+8>>2]=c[_+8>>2];c[X+12>>2]=c[_+12>>2];_=d+1152|0;c[V>>2]=c[_>>2];c[V+4>>2]=c[_+4>>2];c[V+8>>2]=c[_+8>>2];c[V+12>>2]=c[_+12>>2];_=d+1168|0;c[o>>2]=c[_>>2];c[o+4>>2]=c[_+4>>2];c[o+8>>2]=c[_+8>>2];c[o+12>>2]=c[_+12>>2];_=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;dF[c[(c[_>>2]|0)+56>>2]&255](_,H,ad)}if((ac&1|0)==0){i=e;return}c[Z>>2]=c[Y>>2];c[Z+4>>2]=c[Y+4>>2];c[Z+8>>2]=c[Y+8>>2];c[Z+12>>2]=c[Y+12>>2];c[X>>2]=c[W>>2];c[X+4>>2]=c[W+4>>2];c[X+8>>2]=c[W+8>>2];c[X+12>>2]=c[W+12>>2];c[V>>2]=c[U>>2];c[V+4>>2]=c[U+4>>2];c[V+8>>2]=c[U+8>>2];c[V+12>>2]=c[U+12>>2];c[o>>2]=c[al>>2];c[o+4>>2]=c[al+4>>2];c[o+8>>2]=c[al+8>>2];c[o+12>>2]=c[al+12>>2];_=d+1168|0;q=_;g[I>>2]=+g[H+8>>2];g[I+4>>2]=+g[H+24>>2];g[I+8>>2]=+g[H+40>>2];g[I+12>>2]=0.0;s=H|0;t=H+16|0;u=H+32|0;r=J|0;g[r>>2]=+g[s>>2];am=J+4|0;g[am>>2]=+g[t>>2];b=J+8|0;g[b>>2]=+g[u>>2];aj=J+12|0;g[aj>>2]=0.0;p=d+924|0;ai=+g[p>>2];ag=+g[p+4>>2];p=d+988|0;ao=+g[p>>2];ah=+g[p+4>>2];p=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;ak=c[(c[p>>2]|0)+64>>2]|0;aDD(K|0,0,16);cs[ak&63](p,q,I,J,ad*.8999999761581421,ai,ag,ao,ah,K,10.0);ah=+g[H+4>>2];ao=+g[H+20>>2];ag=+g[H+36>>2];g[r>>2]=ah;g[am>>2]=ao;g[b>>2]=ag;g[aj>>2]=0.0;ai=+g[d+1188>>2];an=+g[d+1192>>2];ap=+S(+ai);ar=+T(+ai);ai=+S(+an);aw=+T(+an);g[L>>2]=ap*ai*ah+ap*aw*ao-ar*ag;g[L+4>>2]=ah*(-0.0-aw)+ai*ao;g[L+8>>2]=ar*ai*ah+ar*aw*ao+ap*ag;aj=d+1120|0;c[Z>>2]=c[aj>>2];c[Z+4>>2]=c[aj+4>>2];c[Z+8>>2]=c[aj+8>>2];c[Z+12>>2]=c[aj+12>>2];aj=d+1136|0;c[X>>2]=c[aj>>2];c[X+4>>2]=c[aj+4>>2];c[X+8>>2]=c[aj+8>>2];c[X+12>>2]=c[aj+12>>2];aj=d+1152|0;c[V>>2]=c[aj>>2];c[V+4>>2]=c[aj+4>>2];c[V+8>>2]=c[aj+8>>2];c[V+12>>2]=c[aj+12>>2];aj=_;c[o>>2]=c[aj>>2];c[o+4>>2]=c[aj+4>>2];c[o+8>>2]=c[aj+8>>2];c[o+12>>2]=c[aj+12>>2];ag=-0.0- +g[t>>2];ap=-0.0- +g[u>>2];g[M>>2]=-0.0- +g[s>>2];g[M+4>>2]=ag;g[M+8>>2]=ap;g[M+12>>2]=0.0;s=d+860|0;ap=+g[s>>2];ag=+g[s+4>>2];do{if(ap>ag){s=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;u=c[(c[s>>2]|0)+60>>2]|0;aDD(N|0,0,16);dt[u&63](s,q,M,L,ad,ad,-3.1415927410125732,3.1415927410125732,N,0,10.0)}else{if(ap>=ag){break}s=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;u=c[(c[s>>2]|0)+60>>2]|0;aDD(O|0,0,16);dt[u&63](s,q,M,L,ad,ad,ap,ag,O,1,10.0)}}while(0);c[Z>>2]=c[Y>>2];c[Z+4>>2]=c[Y+4>>2];c[Z+8>>2]=c[Y+8>>2];c[Z+12>>2]=c[Y+12>>2];c[X>>2]=c[W>>2];c[X+4>>2]=c[W+4>>2];c[X+8>>2]=c[W+8>>2];c[X+12>>2]=c[W+12>>2];c[V>>2]=c[U>>2];c[V+4>>2]=c[U+4>>2];c[V+8>>2]=c[U+8>>2];c[V+12>>2]=c[U+12>>2];c[o>>2]=c[al>>2];c[o+4>>2]=c[al+4>>2];c[o+8>>2]=c[al+8>>2];c[o+12>>2]=c[al+12>>2];al=d+672|0;o=P;U=al;c[o>>2]=c[U>>2];c[o+4>>2]=c[U+4>>2];c[o+8>>2]=c[U+8>>2];c[o+12>>2]=c[U+12>>2];U=Q;o=al+16|0;c[U>>2]=c[o>>2];c[U+4>>2]=c[o+4>>2];c[U+8>>2]=c[o+8>>2];c[U+12>>2]=c[o+12>>2];o=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;U=c[(c[o>>2]|0)+72>>2]|0;aDD(R|0,0,16);co[U&255](o,P,Q,H,R);i=e;return};case 5:{R=d;H=d+24|0;Q=c[H>>2]|0;P=Q+4|0;o=d+292|0;U=l;al=o;anx(l,P|0,al);V=o+48|0;ag=+g[V>>2];W=o+52|0;ap=+g[W>>2];X=o+56|0;ao=+g[X>>2];aw=+g[P>>2]*ag+ +g[Q+8>>2]*ap+ +g[Q+12>>2]*ao+ +g[Q+52>>2];ar=+g[Q+20>>2]*ag+ +g[Q+24>>2]*ap+ +g[Q+28>>2]*ao+ +g[Q+56>>2];ah=+g[Q+36>>2]*ag+ +g[Q+40>>2]*ap+ +g[Q+44>>2]*ao+ +g[Q+60>>2];Q=v+48|0;P=v|0;do{P=P+16|0;}while((P|0)!=(Q|0));Q=v;c[Q>>2]=c[U>>2];c[Q+4>>2]=c[U+4>>2];c[Q+8>>2]=c[U+8>>2];c[Q+12>>2]=c[U+12>>2];U=v+16|0;P=l+16|0;c[U>>2]=c[P>>2];c[U+4>>2]=c[P+4>>2];c[U+8>>2]=c[P+8>>2];c[U+12>>2]=c[P+12>>2];P=v+32|0;o=l+32|0;c[P>>2]=c[o>>2];c[P+4>>2]=c[o+4>>2];c[P+8>>2]=c[o+8>>2];c[P+12>>2]=c[o+12>>2];o=v+48|0;g[o>>2]=aw;l=v+52|0;g[l>>2]=ar;Y=v+56|0;g[Y>>2]=ah;g[v+60>>2]=0.0;if((ab&1|0)==0){ab=c[d+28>>2]|0;Z=ab+4|0;O=d+356|0;L=j;anx(j,Z|0,O);ah=+g[O+48>>2];ar=+g[O+52>>2];aw=+g[O+56>>2];ao=+g[Z>>2]*ah+ +g[ab+8>>2]*ar+ +g[ab+12>>2]*aw+ +g[ab+52>>2];ap=+g[ab+20>>2]*ah+ +g[ab+24>>2]*ar+ +g[ab+28>>2]*aw+ +g[ab+56>>2];ag=+g[ab+36>>2]*ah+ +g[ab+40>>2]*ar+ +g[ab+44>>2]*aw+ +g[ab+60>>2];ab=w+48|0;Z=w|0;do{Z=Z+16|0;}while((Z|0)!=(ab|0));ab=w;c[ab>>2]=c[L>>2];c[ab+4>>2]=c[L+4>>2];c[ab+8>>2]=c[L+8>>2];c[ab+12>>2]=c[L+12>>2];L=w+16|0;Z=j+16|0;c[L>>2]=c[Z>>2];c[L+4>>2]=c[Z+4>>2];c[L+8>>2]=c[Z+8>>2];c[L+12>>2]=c[Z+12>>2];Z=w+32|0;O=j+32|0;c[Z>>2]=c[O>>2];c[Z+4>>2]=c[O+4>>2];c[Z+8>>2]=c[O+8>>2];c[Z+12>>2]=c[O+12>>2];g[w+48>>2]=ao;g[w+52>>2]=ap;g[w+56>>2]=ag;g[w+60>>2]=0.0;c[Q>>2]=c[ab>>2];c[Q+4>>2]=c[ab+4>>2];c[Q+8>>2]=c[ab+8>>2];c[Q+12>>2]=c[ab+12>>2];c[U>>2]=c[L>>2];c[U+4>>2]=c[L+4>>2];c[U+8>>2]=c[L+8>>2];c[U+12>>2]=c[L+12>>2];c[P>>2]=c[Z>>2];c[P+4>>2]=c[Z+4>>2];c[P+8>>2]=c[Z+8>>2];c[P+12>>2]=c[Z+12>>2];Z=v+48|0;L=w+48|0;c[Z>>2]=c[L>>2];c[Z+4>>2]=c[L+4>>2];c[Z+8>>2]=c[L+8>>2];c[Z+12>>2]=c[L+12>>2]}else{L=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;dF[c[(c[L>>2]|0)+56>>2]&255](L,v,ad);L=c[d+28>>2]|0;Z=L+4|0;ab=d+356|0;O=k;anx(k,Z|0,ab);ag=+g[ab+48>>2];ap=+g[ab+52>>2];ao=+g[ab+56>>2];aw=+g[Z>>2]*ag+ +g[L+8>>2]*ap+ +g[L+12>>2]*ao+ +g[L+52>>2];ar=+g[L+20>>2]*ag+ +g[L+24>>2]*ap+ +g[L+28>>2]*ao+ +g[L+56>>2];ah=+g[L+36>>2]*ag+ +g[L+40>>2]*ap+ +g[L+44>>2]*ao+ +g[L+60>>2];L=w+48|0;Z=w|0;do{Z=Z+16|0;}while((Z|0)!=(L|0));L=w;c[L>>2]=c[O>>2];c[L+4>>2]=c[O+4>>2];c[L+8>>2]=c[O+8>>2];c[L+12>>2]=c[O+12>>2];O=w+16|0;Z=k+16|0;c[O>>2]=c[Z>>2];c[O+4>>2]=c[Z+4>>2];c[O+8>>2]=c[Z+8>>2];c[O+12>>2]=c[Z+12>>2];Z=w+32|0;ab=k+32|0;c[Z>>2]=c[ab>>2];c[Z+4>>2]=c[ab+4>>2];c[Z+8>>2]=c[ab+8>>2];c[Z+12>>2]=c[ab+12>>2];g[w+48>>2]=aw;g[w+52>>2]=ar;g[w+56>>2]=ah;g[w+60>>2]=0.0;c[Q>>2]=c[L>>2];c[Q+4>>2]=c[L+4>>2];c[Q+8>>2]=c[L+8>>2];c[Q+12>>2]=c[L+12>>2];c[U>>2]=c[O>>2];c[U+4>>2]=c[O+4>>2];c[U+8>>2]=c[O+8>>2];c[U+12>>2]=c[O+12>>2];c[P>>2]=c[Z>>2];c[P+4>>2]=c[Z+4>>2];c[P+8>>2]=c[Z+8>>2];c[P+12>>2]=c[Z+12>>2];Z=v+48|0;O=w+48|0;c[Z>>2]=c[O>>2];c[Z+4>>2]=c[O+4>>2];c[Z+8>>2]=c[O+8>>2];c[Z+12>>2]=c[O+12>>2];O=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;dF[c[(c[O>>2]|0)+56>>2]&255](O,v,ad)}if((ac&1|0)==0){i=e;return}anZ(x,R,6.0868353843688965,ad);ac=v|0;O=x|0;ah=+g[O>>2];Z=v+4|0;w=x+4|0;ar=+g[w>>2];L=v+8|0;ab=x+8|0;aw=+g[ab>>2];k=v+16|0;j=v+20|0;M=v+24|0;ao=+g[l>>2]+(ah*+g[k>>2]+ar*+g[j>>2]+aw*+g[M>>2]);q=v+32|0;N=v+36|0;s=v+40|0;ap=+g[Y>>2]+(ah*+g[q>>2]+ar*+g[N>>2]+aw*+g[s>>2]);u=x;g[O>>2]=+g[o>>2]+(+g[ac>>2]*ah+ +g[Z>>2]*ar+ +g[L>>2]*aw);g[w>>2]=ao;g[ab>>2]=ap;g[x+12>>2]=0.0;ab=y|0;w=y+4|0;O=y+8|0;t=y;aj=y+12|0;_=v+48|0;v=z;b=A;am=0;do{anZ(y,R,+(am|0)*6.283185005187988*.03125,ad);ap=+g[ab>>2];ao=+g[w>>2];aw=+g[O>>2];ar=+g[l>>2]+(ap*+g[k>>2]+ao*+g[j>>2]+aw*+g[M>>2]);ah=+g[Y>>2]+(ap*+g[q>>2]+ao*+g[N>>2]+aw*+g[s>>2]);g[ab>>2]=+g[o>>2]+(+g[ac>>2]*ap+ +g[Z>>2]*ao+ +g[L>>2]*aw);g[w>>2]=ar;g[O>>2]=ah;g[aj>>2]=0.0;r=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;K=c[(c[r>>2]|0)+8>>2]|0;aDD(v|0,0,16);dI[K&1023](r,x,y,z);if((am&3|0)==0){r=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;K=c[(c[r>>2]|0)+8>>2]|0;aDD(b|0,0,16);dI[K&1023](r,_,y,A)}c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];am=am+1|0;}while((am|0)<32);ah=+g[d+444>>2];ar=+g[d+504>>2];am=c[d+28>>2]|0;if(+g[am+336>>2]>0.0){t=am+4|0;u=d+356|0;d=h;anx(h,t|0,u);aw=+g[u+48>>2];ao=+g[u+52>>2];ap=+g[u+56>>2];ag=+g[t>>2]*aw+ +g[am+8>>2]*ao+ +g[am+12>>2]*ap+ +g[am+52>>2];ai=+g[am+20>>2]*aw+ +g[am+24>>2]*ao+ +g[am+28>>2]*ap+ +g[am+56>>2];an=+g[am+36>>2]*aw+ +g[am+40>>2]*ao+ +g[am+44>>2]*ap+ +g[am+60>>2];am=B+48|0;t=B|0;do{t=t+16|0;}while((t|0)!=(am|0));am=B;c[am>>2]=c[d>>2];c[am+4>>2]=c[d+4>>2];c[am+8>>2]=c[d+8>>2];c[am+12>>2]=c[d+12>>2];d=B+16|0;t=h+16|0;c[d>>2]=c[t>>2];c[d+4>>2]=c[t+4>>2];c[d+8>>2]=c[t+8>>2];c[d+12>>2]=c[t+12>>2];t=B+32|0;u=h+32|0;c[t>>2]=c[u>>2];c[t+4>>2]=c[u+4>>2];c[t+8>>2]=c[u+8>>2];c[t+12>>2]=c[u+12>>2];g[B+48>>2]=ag;g[B+52>>2]=ai;g[B+56>>2]=an;g[B+60>>2]=0.0;c[Q>>2]=c[am>>2];c[Q+4>>2]=c[am+4>>2];c[Q+8>>2]=c[am+8>>2];c[Q+12>>2]=c[am+12>>2];c[U>>2]=c[d>>2];c[U+4>>2]=c[d+4>>2];c[U+8>>2]=c[d+8>>2];c[U+12>>2]=c[d+12>>2];c[P>>2]=c[t>>2];c[P+4>>2]=c[t+4>>2];c[P+8>>2]=c[t+8>>2];c[P+12>>2]=c[t+12>>2];t=_;d=B+48|0;c[t>>2]=c[d>>2];c[t+4>>2]=c[d+4>>2];c[t+8>>2]=c[d+8>>2];c[t+12>>2]=c[d+12>>2]}else{d=c[H>>2]|0;H=d+4|0;t=f;anx(f,H|0,al);an=+g[V>>2];ai=+g[W>>2];ag=+g[X>>2];ap=+g[H>>2]*an+ +g[d+8>>2]*ai+ +g[d+12>>2]*ag+ +g[d+52>>2];ao=+g[d+20>>2]*an+ +g[d+24>>2]*ai+ +g[d+28>>2]*ag+ +g[d+56>>2];aw=+g[d+36>>2]*an+ +g[d+40>>2]*ai+ +g[d+44>>2]*ag+ +g[d+60>>2];d=C+48|0;H=C|0;do{H=H+16|0;}while((H|0)!=(d|0));d=C;c[d>>2]=c[t>>2];c[d+4>>2]=c[t+4>>2];c[d+8>>2]=c[t+8>>2];c[d+12>>2]=c[t+12>>2];t=C+16|0;H=f+16|0;c[t>>2]=c[H>>2];c[t+4>>2]=c[H+4>>2];c[t+8>>2]=c[H+8>>2];c[t+12>>2]=c[H+12>>2];H=C+32|0;X=f+32|0;c[H>>2]=c[X>>2];c[H+4>>2]=c[X+4>>2];c[H+8>>2]=c[X+8>>2];c[H+12>>2]=c[X+12>>2];g[C+48>>2]=ap;g[C+52>>2]=ao;g[C+56>>2]=aw;g[C+60>>2]=0.0;c[Q>>2]=c[d>>2];c[Q+4>>2]=c[d+4>>2];c[Q+8>>2]=c[d+8>>2];c[Q+12>>2]=c[d+12>>2];c[U>>2]=c[t>>2];c[U+4>>2]=c[t+4>>2];c[U+8>>2]=c[t+8>>2];c[U+12>>2]=c[t+12>>2];c[P>>2]=c[H>>2];c[P+4>>2]=c[H+4>>2];c[P+8>>2]=c[H+8>>2];c[P+12>>2]=c[H+12>>2];H=_;P=C+48|0;c[H>>2]=c[P>>2];c[H+4>>2]=c[P+4>>2];c[H+8>>2]=c[P+8>>2];c[H+12>>2]=c[P+12>>2]}P=D;H=_;c[P>>2]=c[H>>2];c[P+4>>2]=c[H+4>>2];c[P+8>>2]=c[H+8>>2];c[P+12>>2]=c[H+12>>2];g[E>>2]=+g[ac>>2];g[E+4>>2]=+g[k>>2];g[E+8>>2]=+g[q>>2];g[E+12>>2]=0.0;g[F>>2]=+g[Z>>2];g[F+4>>2]=+g[j>>2];g[F+8>>2]=+g[N>>2];g[F+12>>2]=0.0;N=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;$=c[(c[N>>2]|0)+60>>2]|0;aDD(G|0,0,16);dt[$&63](N,D,E,F,ad,ad,-0.0-ar-ah,ah-ar,G,1,10.0);i=e;return};default:{i=e;return}}}function aoi(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,i=0,j=0.0,k=0.0,l=0;b=a+204|0;d=c[b>>2]|0;if((d|0)<=0){return}e=a+212|0;a=0;f=d;while(1){d=c[(c[e>>2]|0)+(a<<2)>>2]|0;h=c[d+216>>2]|0;do{if((h|0)==5|(h|0)==2){i=f}else{if((c[d+204>>2]&3|0)!=0){i=f;break}j=+g[d+360>>2]*+g[d+344>>2];k=+g[d+364>>2]*+g[d+348>>2];l=d+404|0;g[l>>2]=+g[d+356>>2]*+g[d+340>>2]+ +g[l>>2];l=d+408|0;g[l>>2]=j+ +g[l>>2];l=d+412|0;g[l>>2]=k+ +g[l>>2];i=c[b>>2]|0}}while(0);d=a+1|0;if((d|0)<(i|0)){a=d;f=i}else{break}}return}function aoj(a){a=a|0;var b=0,d=0;b=a+204|0;if((c[b>>2]|0)<=0){return}d=a+212|0;a=0;do{aDD((c[(c[d>>2]|0)+(a<<2)>>2]|0)+404|0,0,32);a=a+1|0;}while((a|0)<(c[b>>2]|0));return}function aok(b){b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=i;i=i+144|0;e=d|0;f=d+16|0;h=d+80|0;aDo(17984);do{if((a[b+242|0]&1)==0){j=b+204|0;k=c[j>>2]|0;if((k|0)<=0){break}l=b+212|0;m=b+236|0;n=0;o=k;while(1){k=c[(c[l>>2]|0)+(n<<2)>>2]|0;p=c[k+216>>2]|0;do{if((p|0)==5|(p|0)==2){q=o}else{r=k+472|0;if((c[r>>2]|0)==0){q=o;break}if((c[k+204>>2]&3|0)!=0){q=o;break}anY(k+68|0,+g[k+132>>2],+g[k+136>>2],+g[k+140>>2],k+148|0,+g[m>>2]*+g[k+240>>2],h);s=c[r>>2]|0;cv[c[(c[s>>2]|0)+12>>2]&2047](s,h);q=c[j>>2]|0}}while(0);k=n+1|0;if((k|0)<(q|0)){n=k;o=q}else{break}}}else{o=b+8|0;n=c[o>>2]|0;if((n|0)<=0){break}j=b+16|0;m=b+236|0;l=0;k=n;while(1){n=c[(c[j>>2]|0)+(l<<2)>>2]|0;do{if((c[n+232>>2]&2|0)==0|(n|0)==0){t=k}else{p=n+472|0;if((c[p>>2]|0)==0){t=k;break}if((c[n+204>>2]&3|0)!=0){t=k;break}anY(n+68|0,+g[n+132>>2],+g[n+136>>2],+g[n+140>>2],n+148|0,+g[m>>2]*+g[n+240>>2],f);s=c[p>>2]|0;cv[c[(c[s>>2]|0)+12>>2]&2047](s,f);t=c[o>>2]|0}}while(0);n=l+1|0;if((n|0)<(t|0)){l=n;k=t}else{break}}}}while(0);t=c[9152]|0;f=t+16|0;b=(c[f>>2]|0)-1|0;c[f>>2]=b;if((b|0)!=0){i=d;return}do{if((c[t+4>>2]|0)==0){u=t}else{b3(e|0,0)|0;b=c[10742]|0;q=t+8|0;g[q>>2]=+(((c[e+4>>2]|0)-(c[b+4>>2]|0)+(((c[e>>2]|0)-(c[b>>2]|0)|0)*1e6|0)-(c[t+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[q>>2];if((c[f>>2]|0)==0){u=c[9152]|0;break}else{i=d;return}}}while(0);c[9152]=c[u+20>>2];i=d;return}function aol(b,d,e,f){b=b|0;d=+d;e=e|0;f=+f;var h=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0.0,q=0,r=0;h=i;i=i+16|0;j=h|0;aDi();aDo(17464);k=b+236|0;do{if((e|0)==0){g[k>>2]=d;l=+P(+d)>=1.1920928955078125e-7|0;m=l;n=d;o=l}else{p=+g[k>>2]+d;g[k>>2]=p;if(p<f){m=e;n=f;o=0;break}l=~~(p/f);g[k>>2]=p- +(l|0)*f;m=e;n=f;o=l}}while(0);e=b|0;k=b;if((cA[c[(c[k>>2]|0)+16>>2]&4095](e)|0)!=0){l=cA[c[(c[k>>2]|0)+16>>2]&4095](e)|0;a[39240]=(cA[c[(c[l>>2]|0)+48>>2]&4095](l)|0)>>>4&1}do{if((o|0)==0){ct[c[(c[b>>2]|0)+76>>2]&2047](b)}else{l=(o|0)>(m|0)?m:o;e=b;cq[c[(c[e>>2]|0)+160>>2]&1023](b,n*+(l|0));k=b;ct[c[(c[k>>2]|0)+164>>2]&2047](b);if((l|0)>0){q=0}else{break}do{cq[c[(c[e>>2]|0)+156>>2]&1023](b,n);ct[c[(c[k>>2]|0)+76>>2]&2047](b);q=q+1|0;}while((q|0)<(l|0))}}while(0);ct[c[(c[b>>2]|0)+116>>2]&2047](b);c[10736]=(c[10736]|0)+1;b=c[9152]|0;q=b+16|0;m=(c[q>>2]|0)-1|0;c[q>>2]=m;if((m|0)!=0){i=h;return o|0}do{if((c[b+4>>2]|0)==0){r=b}else{b3(j|0,0)|0;m=c[10742]|0;l=b+8|0;g[l>>2]=+(((c[j+4>>2]|0)-(c[m+4>>2]|0)+(((c[j>>2]|0)-(c[m>>2]|0)|0)*1e6|0)-(c[b+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[l>>2];if((c[q>>2]|0)==0){r=c[9152]|0;break}else{i=h;return o|0}}}while(0);c[9152]=c[r+20>>2];i=h;return o|0}function aom(b,d){b=b|0;d=+d;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0,B=0;e=i;i=i+8|0;f=e|0;aDo(16648);h=b+204|0;if((c[h>>2]|0)>0){j=b+212|0;b=(a[39240]&1)==0;k=0;do{l=c[(c[j>>2]|0)+(k<<2)>>2]|0;L2926:do{if((l|0)!=0){m=l+216|0;n=c[m>>2]|0;L2928:do{if((n|0)==2|(n|0)==4){o=n;p=2712}else{q=+g[l+304>>2];r=+g[l+308>>2];s=+g[l+312>>2];t=+g[l+464>>2];do{if(q*q+r*r+s*s<t*t){u=+g[l+320>>2];v=+g[l+324>>2];w=+g[l+328>>2];x=+g[l+468>>2];if(u*u+v*v+w*w>=x*x){break}y=l+220|0;g[y>>2]=+g[y>>2]+d;o=n;p=2712;break L2928}}while(0);g[l+220>>2]=0.0;if((n-4|0)>>>0<2){o=n;p=2712;break}c[m>>2]=0;z=0}}while(0);if((p|0)==2712){p=0;if((o|0)==4){break}else{z=o}}do{if(b){if((z-2|0)>>>0>=2){if(+g[l+220>>2]<=2.0){break}}if((c[l+204>>2]&3|0)!=0){if((z-4|0)>>>0<2){break L2926}c[m>>2]=2;break L2926}if((z|0)==1){c[m>>2]=3;break L2926}else{A=z}if((A|0)!=2){break L2926}aDD(l+304|0,0,32);break L2926}}while(0);if((z-4|0)>>>0<2){break}c[m>>2]=1}}while(0);k=k+1|0;}while((k|0)<(c[h>>2]|0))}h=c[9152]|0;k=h+16|0;z=(c[k>>2]|0)-1|0;c[k>>2]=z;if((z|0)!=0){i=e;return}do{if((c[h+4>>2]|0)==0){B=h}else{b3(f|0,0)|0;z=c[10742]|0;A=h+8|0;g[A>>2]=+(((c[f+4>>2]|0)-(c[z+4>>2]|0)+(((c[f>>2]|0)-(c[z>>2]|0)|0)*1e6|0)-(c[h+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[A>>2];if((c[k>>2]|0)==0){B=c[9152]|0;break}else{i=e;return}}}while(0);c[9152]=c[B+20>>2];i=e;return}function aon(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0;d=a+220|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];d=a+204|0;f=c[d>>2]|0;if((f|0)<=0){return}h=a+212|0;a=b|0;i=b+4|0;j=b+8|0;b=0;k=f;while(1){f=c[(c[h>>2]|0)+(b<<2)>>2]|0;l=c[f+216>>2]|0;do{if((l|0)==5|(l|0)==2){m=k}else{if((c[f+496>>2]&1|0)!=0){m=k;break}n=+g[f+336>>2];if(n!=0.0){o=1.0/n;n=o*+g[i>>2];p=o*+g[j>>2];g[f+356>>2]=o*+g[a>>2];g[f+360>>2]=n;g[f+364>>2]=p;g[f+368>>2]=0.0}q=f+372|0;c[q>>2]=c[e>>2];c[q+4>>2]=c[e+4>>2];c[q+8>>2]=c[e+8>>2];c[q+12>>2]=c[e+12>>2];m=c[d>>2]|0}}while(0);f=b+1|0;if((f|0)<(m|0)){b=f;k=m}else{break}}return}function aoo(a,b){a=a|0;b=b|0;var d=0;d=a;a=b+220|0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function aop(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;atB(a|0,b,c,d);return}function aoq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!((c[b+232>>2]&2|0)==0|(b|0)==0)){cv[c[(c[a>>2]|0)+88>>2]&2047](a,b);return}d=b+188|0;e=c[d>>2]|0;if((e|0)!=0){f=a+76|0;g=c[f>>2]|0;h=cA[c[(c[g>>2]|0)+36>>2]&4095](g)|0;g=a+24|0;dA[c[(c[h>>2]|0)+40>>2]&511](h,e,c[g>>2]|0);h=c[f>>2]|0;dA[c[(c[h>>2]|0)+12>>2]&511](h,e,c[g>>2]|0);c[d>>2]=0}d=a+8|0;g=c[d>>2]|0;e=a+16|0;a=0;while(1){if((a|0)>=(g|0)){i=2759;break}j=c[e>>2]|0;k=j+(a<<2)|0;if((c[k>>2]|0)==(b|0)){break}else{a=a+1|0}}if((i|0)==2759){return}i=g-1|0;c[k>>2]=c[j+(i<<2)>>2];c[(c[e>>2]|0)+(i<<2)>>2]=b;c[d>>2]=(c[d>>2]|0)-1;return}function aor(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=a+204|0;e=c[d>>2]|0;f=a+212|0;g=0;while(1){if((g|0)>=(e|0)){break}h=c[f>>2]|0;i=h+(g<<2)|0;if((c[i>>2]|0)==(b|0)){j=2763;break}else{g=g+1|0}}if((j|0)==2763){g=e-1|0;c[i>>2]=c[h+(g<<2)>>2];c[(c[f>>2]|0)+(g<<2)>>2]=b;c[d>>2]=(c[d>>2]|0)-1}d=b|0;g=b+188|0;b=c[g>>2]|0;if((b|0)!=0){f=a+76|0;h=c[f>>2]|0;i=cA[c[(c[h>>2]|0)+36>>2]&4095](h)|0;h=a+24|0;dA[c[(c[i>>2]|0)+40>>2]&511](i,b,c[h>>2]|0);i=c[f>>2]|0;dA[c[(c[i>>2]|0)+12>>2]&511](i,b,c[h>>2]|0);c[g>>2]=0}g=a+8|0;h=c[g>>2]|0;b=a+16|0;a=0;while(1){if((a|0)>=(h|0)){j=2772;break}k=c[b>>2]|0;l=k+(a<<2)|0;if((c[l>>2]|0)==(d|0)){break}else{a=a+1|0}}if((j|0)==2772){return}j=h-1|0;c[l>>2]=c[k+(j<<2)>>2];c[(c[b>>2]|0)+(j<<2)>>2]=d;c[g>>2]=(c[g>>2]|0)-1;return}function aos(b,d){b=b|0;d=+d;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=i;i=i+32|0;f=e|0;h=e+8|0;aDo(17080);j=b|0;k=c[b+92>>2]|0;if((k|0)!=0){cq[k&1023](j,d)}k=b;cq[c[(c[k>>2]|0)+136>>2]&1023](b,d);l=b|0;g[b+28>>2]=d;c[b+32>>2]=0;c[b+48>>2]=cA[c[(c[b>>2]|0)+16>>2]&4095](l)|0;ct[c[(c[b>>2]|0)+40>>2]&2047](l);if((a[b+44|0]&1)!=0){cq[c[(c[k>>2]|0)+144>>2]&1023](b,d)}ct[c[(c[b>>2]|0)+148>>2]&2047](b);g[b+112>>2]=d;cv[c[(c[b>>2]|0)+152>>2]&2047](b,b+100|0);cq[c[(c[k>>2]|0)+140>>2]&1023](b,d);aDo(16856);k=b+248|0;if((c[k>>2]|0)>0){m=b+256|0;n=0;do{o=c[(c[m>>2]|0)+(n<<2)>>2]|0;dF[c[(c[o>>2]|0)+8>>2]&255](o,l,d);n=n+1|0;}while((n|0)<(c[k>>2]|0))}k=c[9152]|0;n=k+16|0;l=(c[n>>2]|0)-1|0;c[n>>2]=l;do{if((l|0)==0){if((c[k+4>>2]|0)==0){p=k}else{b3(h|0,0)|0;m=c[10742]|0;o=k+8|0;g[o>>2]=+(((c[h+4>>2]|0)-(c[m+4>>2]|0)+(((c[h>>2]|0)-(c[m>>2]|0)|0)*1e6|0)-(c[k+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[o>>2];if((c[n>>2]|0)!=0){break}p=c[9152]|0}c[9152]=c[p+20>>2]}}while(0);aom(b,d);p=c[b+88>>2]|0;if((p|0)!=0){cq[p&1023](j,d)}j=c[9152]|0;p=j+16|0;b=(c[p>>2]|0)-1|0;c[p>>2]=b;if((b|0)!=0){i=e;return}do{if((c[j+4>>2]|0)==0){q=j}else{b3(f|0,0)|0;b=c[10742]|0;n=j+8|0;g[n>>2]=+(((c[f+4>>2]|0)-(c[b+4>>2]|0)+(((c[f>>2]|0)-(c[b>>2]|0)|0)*1e6|0)-(c[j+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[n>>2];if((c[p>>2]|0)==0){q=c[9152]|0;break}else{i=e;return}}}while(0);c[9152]=c[q+20>>2];i=e;return}function aot(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=a+184|0;e=c[d>>2]|0;f=a+192|0;a=0;while(1){if((a|0)>=(e|0)){break}g=c[f>>2]|0;h=g+(a<<2)|0;if((c[h>>2]|0)==(b|0)){i=2825;break}else{a=a+1|0}}if((i|0)==2825){a=e-1|0;c[h>>2]=c[g+(a<<2)>>2];c[(c[f>>2]|0)+(a<<2)>>2]=b;c[d>>2]=(c[d>>2]|0)-1}d=c[b+24>>2]|0;a=d+480|0;f=c[a>>2]|0;g=d+488|0;h=0;while(1){if((h|0)>=(f|0)){j=f;break}k=c[g>>2]|0;l=k+(h<<2)|0;if((c[l>>2]|0)==(b|0)){i=2829;break}else{h=h+1|0}}if((i|0)==2829){h=f-1|0;c[l>>2]=c[k+(h<<2)>>2];c[(c[g>>2]|0)+(h<<2)>>2]=b;h=(c[a>>2]|0)-1|0;c[a>>2]=h;j=h}c[d+252>>2]=(j|0)>0;j=c[b+28>>2]|0;d=j+480|0;h=c[d>>2]|0;a=j+488|0;g=0;while(1){if((g|0)>=(h|0)){m=h;i=2835;break}n=c[a>>2]|0;o=n+(g<<2)|0;if((c[o>>2]|0)==(b|0)){break}else{g=g+1|0}}if((i|0)==2835){p=(m|0)>0;q=p&1;r=j+252|0;c[r>>2]=q;return}i=h-1|0;c[o>>2]=c[n+(i<<2)>>2];c[(c[a>>2]|0)+(i<<2)>>2]=b;b=(c[d>>2]|0)-1|0;c[d>>2]=b;m=b;p=(m|0)>0;q=p&1;r=j+252|0;c[r>>2]=q;return}function aou(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=a+248|0;e=c[d>>2]|0;f=a+256|0;a=0;while(1){if((a|0)>=(e|0)){g=2843;break}h=c[f>>2]|0;i=h+(a<<2)|0;if((c[i>>2]|0)==(b|0)){break}else{a=a+1|0}}if((g|0)==2843){return}g=e-1|0;c[i>>2]=c[h+(g<<2)>>2];c[(c[f>>2]|0)+(g<<2)>>2]=b;c[d>>2]=(c[d>>2]|0)-1;return}function aov(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0.0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;e=d|0;f=d+204|0;h=c[f>>2]|0;do{if((h&3|0)==0){if((c[d+496>>2]&1|0)!=0){break}i=b+220|0;j=+g[d+336>>2];if(j!=0.0){k=1.0/j;j=k*+g[b+224>>2];l=k*+g[b+228>>2];g[d+356>>2]=k*+g[i>>2];g[d+360>>2]=j;g[d+364>>2]=l;g[d+368>>2]=0.0}m=d+372|0;n=i;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2]}}while(0);if((c[d+192>>2]|0)==0){return}do{if((h&1|0)==0){n=b+204|0;m=c[n>>2]|0;i=b+208|0;do{if((m|0)==(c[i>>2]|0)){o=(m|0)==0?1:m<<1;if((m|0)>=(o|0)){p=m;break}if((o|0)==0){q=0;r=m}else{c[9806]=(c[9806]|0)+1;s=aDx((o<<2)+19|0)|0;if((s|0)==0){t=0}else{u=-(s+4|0)&15;c[s+u>>2]=s;t=s+(u+4)|0}q=t;r=c[n>>2]|0}u=b+212|0;if((r|0)>0){s=0;do{v=q+(s<<2)|0;if((v|0)!=0){c[v>>2]=c[(c[u>>2]|0)+(s<<2)>>2]}s=s+1|0;}while((s|0)<(r|0))}s=c[u>>2]|0;v=b+216|0;if((s|0)!=0){if((a[v]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[s-4>>2]|0)}c[u>>2]=0}a[v]=1;c[u>>2]=q;c[i>>2]=o;p=c[n>>2]|0}else{p=m}}while(0);m=(c[b+212>>2]|0)+(p<<2)|0;if((m|0)==0){w=p}else{c[m>>2]=d;w=c[n>>2]|0}c[n>>2]=w+1;x=c[f>>2]|0}else{m=d+216|0;if(((c[m>>2]|0)-4|0)>>>0<2){x=h;break}c[m>>2]=2;x=h}}while(0);if((x&1|0)==0){y=(x&2|0)==0}else{y=0}dI[c[(c[b>>2]|0)+32>>2]&1023](b,e,y?1:2,y?-1:-3);return}function aow(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=d|0;i=c[d+204>>2]|0;do{if((i&3|0)==0){if((c[d+496>>2]&1|0)!=0){break}j=b+220|0;k=+g[d+336>>2];if(k!=0.0){l=1.0/k;k=l*+g[b+224>>2];m=l*+g[b+228>>2];g[d+356>>2]=l*+g[j>>2];g[d+360>>2]=k;g[d+364>>2]=m;g[d+368>>2]=0.0}n=d+372|0;o=j;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2]}}while(0);if((c[d+192>>2]|0)==0){return}do{if((i&1|0)==0){o=b+204|0;n=c[o>>2]|0;j=b+208|0;do{if((n|0)==(c[j>>2]|0)){p=(n|0)==0?1:n<<1;if((n|0)>=(p|0)){q=n;break}if((p|0)==0){r=0;s=n}else{c[9806]=(c[9806]|0)+1;t=aDx((p<<2)+19|0)|0;if((t|0)==0){u=0}else{v=-(t+4|0)&15;c[t+v>>2]=t;u=t+(v+4)|0}r=u;s=c[o>>2]|0}v=b+212|0;if((s|0)>0){t=0;do{w=r+(t<<2)|0;if((w|0)!=0){c[w>>2]=c[(c[v>>2]|0)+(t<<2)>>2]}t=t+1|0;}while((t|0)<(s|0))}t=c[v>>2]|0;w=b+216|0;if((t|0)!=0){if((a[w]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[t-4>>2]|0)}c[v>>2]=0}a[w]=1;c[v>>2]=r;c[j>>2]=p;q=c[o>>2]|0}else{q=n}}while(0);n=(c[b+212>>2]|0)+(q<<2)|0;if((n|0)==0){x=q}else{c[n>>2]=d;x=c[o>>2]|0}c[o>>2]=x+1}else{n=d+216|0;if(((c[n>>2]|0)-4|0)>>>0<2){break}c[n>>2]=2}}while(0);dI[c[(c[b>>2]|0)+32>>2]&1023](b,h,e,f);return}function aox(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=b+184|0;g=c[f>>2]|0;h=b+188|0;do{if((g|0)==(c[h>>2]|0)){i=(g|0)==0?1:g<<1;if((g|0)>=(i|0)){j=g;break}if((i|0)==0){k=0;l=g}else{c[9806]=(c[9806]|0)+1;m=aDx((i<<2)+19|0)|0;if((m|0)==0){n=0}else{o=-(m+4|0)&15;c[m+o>>2]=m;n=m+(o+4)|0}k=n;l=c[f>>2]|0}o=b+192|0;if((l|0)>0){m=0;do{p=k+(m<<2)|0;if((p|0)!=0){c[p>>2]=c[(c[o>>2]|0)+(m<<2)>>2]}m=m+1|0;}while((m|0)<(l|0))}m=c[o>>2]|0;p=b+196|0;if((m|0)!=0){if((a[p]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[m-4>>2]|0)}c[o>>2]=0}a[p]=1;c[o>>2]=k;c[h>>2]=i;j=c[f>>2]|0}else{j=g}}while(0);g=(c[b+192>>2]|0)+(j<<2)|0;if((g|0)==0){q=j}else{c[g>>2]=d;q=c[f>>2]|0}c[f>>2]=q+1;if(!e){return}ap6(c[d+24>>2]|0,d);ap6(c[d+28>>2]|0,d);return}function aoy(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=b+248|0;f=c[e>>2]|0;g=b+252|0;do{if((f|0)==(c[g>>2]|0)){h=(f|0)==0?1:f<<1;if((f|0)>=(h|0)){i=f;break}if((h|0)==0){j=0;k=f}else{c[9806]=(c[9806]|0)+1;l=aDx((h<<2)+19|0)|0;if((l|0)==0){m=0}else{n=-(l+4|0)&15;c[l+n>>2]=l;m=l+(n+4)|0}j=m;k=c[e>>2]|0}n=b+256|0;if((k|0)>0){l=0;do{o=j+(l<<2)|0;if((o|0)!=0){c[o>>2]=c[(c[n>>2]|0)+(l<<2)>>2]}l=l+1|0;}while((l|0)<(k|0))}l=c[n>>2]|0;o=b+260|0;if((l|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-4>>2]|0)}c[n>>2]=0}a[o]=1;c[n>>2]=j;c[g>>2]=h;i=c[e>>2]|0}else{i=f}}while(0);f=(c[b+256>>2]|0)+(i<<2)|0;if((f|0)==0){p=i;q=p+1|0;c[e>>2]=q;return}c[f>>2]=d;p=c[e>>2]|0;q=p+1|0;c[e>>2]=q;return}function aoz(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+60>>2]&2047](a,b);return}function aoA(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+64>>2]&2047](a,b);return}function aoB(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+60>>2]&2047](a,b);return}function aoC(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+64>>2]&2047](a,b);return}function aoD(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0;e=i;i=i+176|0;f=e+8|0;h=e+16|0;j=e+32|0;k=e+48|0;l=e+56|0;m=e+80|0;aDo(16528);n=l+16|0;a[n]=1;o=l+12|0;c[o>>2]=0;p=l+4|0;c[p>>2]=0;q=l+8|0;c[q>>2]=0;r=c[b+184>>2]|0;L3236:do{if((r|0)>0){c[9806]=(c[9806]|0)+1;s=aDx((r<<2)+19|0)|0;if((s|0)==0){t=0}else{u=-(s+4|0)&15;c[s+u>>2]=s;t=s+(u+4)|0}u=c[p>>2]|0;if((u|0)>0){s=0;do{v=t+(s<<2)|0;if((v|0)!=0){c[v>>2]=c[(c[o>>2]|0)+(s<<2)>>2]}s=s+1|0;}while((s|0)<(u|0))}u=c[o>>2]|0;if((u|0)!=0){if((a[n]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[u-4>>2]|0)}c[o>>2]=0}a[n]=1;c[o>>2]=t;c[q>>2]=r;u=0;s=t;while(1){v=s+(u<<2)|0;if((v|0)!=0){c[v>>2]=0}v=u+1|0;if((v|0)>=(r|0)){break L3236}u=v;s=c[o>>2]|0}}}while(0);c[p>>2]=r;r=b;t=b+192|0;s=0;while(1){if((s|0)>=(cA[c[(c[r>>2]|0)+100>>2]&4095](b)|0)){break}c[(c[o>>2]|0)+(s<<2)>>2]=c[(c[t>>2]|0)+(s<<2)>>2];s=s+1|0}s=c[p>>2]|0;if((s|0)>1){aoR(l,0,s-1|0)}s=(cA[c[(c[r>>2]|0)+100>>2]&4095](b)|0)==0;r=s?0:c[o>>2]|0;s=b+172|0;l=c[s>>2]|0;t=c[p>>2]|0;u=b+80|0;v=c[u>>2]|0;w=b+72|0;x=c[w>>2]|0;y=b+24|0;z=c[y>>2]|0;c[m>>2]=18656;c[m+4>>2]=d;c[m+8>>2]=l;c[m+12>>2]=r;c[m+16>>2]=t;c[m+20>>2]=v;c[m+24>>2]=x;c[m+28>>2]=z;a[m+48|0]=1;c[m+44>>2]=0;c[m+36>>2]=0;c[m+40>>2]=0;a[m+68|0]=1;c[m+64>>2]=0;c[m+56>>2]=0;c[m+60>>2]=0;a[m+88|0]=1;c[m+84>>2]=0;c[m+76>>2]=0;c[m+80>>2]=0;x=c[(c[l>>2]|0)+8>>2]|0;v=b+8|0;t=c[v>>2]|0;r=cA[c[(c[z>>2]|0)+36>>2]&4095](z)|0;dA[x&511](l,t,r);r=c[b+176>>2]|0;t=c[y>>2]|0;y=m|0;aDo(16320);l=r+28|0;x=c[l>>2]|0;if((x|0)<0){z=r+32|0;A=r+36|0;if((c[z>>2]|0)<0){B=c[A>>2]|0;C=r+40|0;if((B|0)!=0){if((a[C]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[B-4>>2]|0)}c[A>>2]=0}a[C]=1;c[A>>2]=0;c[z>>2]=0;D=x}else{D=x}do{x=(c[A>>2]|0)+(D<<2)|0;if((x|0)!=0){c[x>>2]=0}D=D+1|0;}while((D|0)<0)}c[l>>2]=0;D=r+4|0;A=r+8|0;x=c[A>>2]|0;do{if((x|0)>0){z=r+16|0;C=0;do{B=c[z>>2]|0;E=B+(C<<3)|0;F=c[E>>2]|0;if((F|0)==(C|0)){G=C;H=B}else{I=B;B=E;E=F;while(1){F=I+(E<<3)|0;c[B>>2]=c[F>>2];J=c[F>>2]|0;F=c[z>>2]|0;K=F+(J<<3)|0;L=c[K>>2]|0;if((J|0)==(L|0)){G=J;H=F;break}else{I=F;B=K;E=L}}}c[H+(C<<3)>>2]=G;C=C+1|0;}while((C|0)<(x|0));C=c[A>>2]|0;z=k|0;if((C|0)>1){aBX(D,0,C-1|0);M=z;N=c[A>>2]|0}else{M=z;N=C}if((N|0)<=0){break}C=r+16|0;z=b+16|0;E=0;while(1){B=c[C>>2]|0;I=c[B+(E<<3)>>2]|0;L=E;do{L=L+1|0;O=(L|0)<(N|0);if(!O){break}}while((c[B+(L<<3)>>2]|0)==(I|0));L3309:do{if((E|0)<(L|0)){K=c[z>>2]|0;F=E;J=1;while(1){P=c[K+(c[B+(F<<3)+4>>2]<<2)>>2]|0;if((c[P+208>>2]|0)==(I|0)){Q=c[P+216>>2]|0;R=J&(Q|0)!=1&(Q|0)!=4}else{R=J}Q=F+1|0;if((Q|0)<(L|0)){F=Q;J=R}else{break}}if(R){J=E;F=B;Q=K;while(1){P=c[Q+(c[F+(J<<3)+4>>2]<<2)>>2]|0;do{if((c[P+208>>2]|0)==(I|0)){S=P+216|0;if(((c[S>>2]|0)-4|0)>>>0<2){break}c[S>>2]=2}}while(0);P=J+1|0;if((P|0)>=(L|0)){break L3309}J=P;F=c[C>>2]|0;Q=c[z>>2]|0}}else{Q=E;F=B;J=K;while(1){P=c[J+(c[F+(Q<<3)+4>>2]<<2)>>2]|0;do{if((c[P+208>>2]|0)==(I|0)){S=P+216|0;if((c[S>>2]|0)!=2){break}c[S>>2]=3;g[P+220>>2]=0.0}}while(0);P=Q+1|0;if((P|0)>=(L|0)){break L3309}Q=P;F=c[C>>2]|0;J=c[z>>2]|0}}}}while(0);if(O){E=L}else{break}}}else{}}while(0);O=t;R=cA[c[(c[O>>2]|0)+36>>2]&4095](t)|0;if((R|0)>0){N=t;M=r+64|0;D=t;k=r+32|0;x=r+36|0;G=r+40|0;H=0;do{E=dj[c[(c[N>>2]|0)+40>>2]&511](t,H)|0;z=c[E+1108>>2]|0;C=z;I=c[E+1112>>2]|0;B=I;if((z|0)==0){T=3037}else{if((c[z+216>>2]|0)==2){T=3037}else{T=3039}}do{if((T|0)==3037){T=0;if((I|0)==0){break}if((c[I+216>>2]|0)!=2){T=3039}}}while(0);do{if((T|0)==3039){T=0;J=z+204|0;do{if((c[J>>2]&2|0)!=0){if((c[z+216>>2]|0)==2){break}if((c[I+204>>2]&3|0)!=0){break}F=I+216|0;if(((c[F>>2]|0)-4|0)>>>0>=2){c[F>>2]=1}g[I+220>>2]=0.0}}while(0);do{if((c[I+204>>2]&2|0)!=0){if((c[I+216>>2]|0)==2){break}if((c[J>>2]&3|0)!=0){break}L=z+216|0;if(((c[L>>2]|0)-4|0)>>>0>=2){c[L>>2]=1}g[z+220>>2]=0.0}}while(0);if((a[M]&1)==0){break}if(!(cS[c[(c[D>>2]|0)+28>>2]&511](t,C,B)|0)){break}J=c[l>>2]|0;do{if((J|0)==(c[k>>2]|0)){L=(J|0)==0?1:J<<1;if((J|0)>=(L|0)){U=J;break}if((L|0)==0){V=0;W=J}else{c[9806]=(c[9806]|0)+1;F=aDx((L<<2)+19|0)|0;if((F|0)==0){X=0}else{Q=-(F+4|0)&15;c[F+Q>>2]=F;X=F+(Q+4)|0}V=X;W=c[l>>2]|0}if((W|0)>0){Q=0;do{F=V+(Q<<2)|0;if((F|0)!=0){c[F>>2]=c[(c[x>>2]|0)+(Q<<2)>>2]}Q=Q+1|0;}while((Q|0)<(W|0))}Q=c[x>>2]|0;if((Q|0)!=0){if((a[G]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[Q-4>>2]|0)}c[x>>2]=0}a[G]=1;c[x>>2]=V;c[k>>2]=L;U=c[l>>2]|0}else{U=J}}while(0);J=(c[x>>2]|0)+(U<<2)|0;if((J|0)==0){Y=U}else{c[J>>2]=E;Y=c[l>>2]|0}c[l>>2]=Y+1}}while(0);H=H+1|0;}while((H|0)<(R|0))}R=c[9152]|0;H=R+16|0;Y=(c[H>>2]|0)-1|0;c[H>>2]=Y;do{if((Y|0)==0){if((c[R+4>>2]|0)==0){Z=R}else{b3(j|0,0)|0;U=c[10742]|0;x=R+8|0;g[x>>2]=+(((c[j+4>>2]|0)-(c[U+4>>2]|0)+(((c[j>>2]|0)-(c[U>>2]|0)|0)*1e6|0)-(c[R+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[x>>2];if((c[H>>2]|0)!=0){break}Z=c[9152]|0}c[9152]=c[Z+20>>2]}}while(0);Z=c[A>>2]|0;aDo(17616);do{if((a[r+64|0]&1)==0){A=cA[c[(c[t>>2]|0)+44>>2]&4095](t)|0;H=cA[c[(c[O>>2]|0)+36>>2]&4095](t)|0;c_[c[(c[m>>2]|0)+8>>2]&127](y,c[b+16>>2]|0,c[v>>2]|0,A,H,-1)}else{H=c[l>>2]|0;if((H|0)>1){aAo(r+24|0,0,H-1|0)}if((Z|0)<=0){break}A=r+16|0;R=r+36|0;j=r+48|0;Y=r+52|0;x=r+56|0;U=r+60|0;k=m;V=b+16|0;G=1;W=0;X=0;while(1){D=c[A>>2]|0;M=c[D+(X<<3)>>2]|0;L3414:do{if((X|0)<(Z|0)){T=1;N=X;E=D;B=M;while(1){if((B|0)!=(M|0)){_=T;$=N;break L3414}C=c[(c[V>>2]|0)+(c[E+(N<<3)+4>>2]<<2)>>2]|0;z=c[j>>2]|0;do{if((z|0)==(c[Y>>2]|0)){I=(z|0)==0?1:z<<1;if((z|0)>=(I|0)){aa=z;break}if((I|0)==0){ab=0;ac=z}else{c[9806]=(c[9806]|0)+1;J=aDx((I<<2)+19|0)|0;if((J|0)==0){ad=0}else{Q=-(J+4|0)&15;c[J+Q>>2]=J;ad=J+(Q+4)|0}ab=ad;ac=c[j>>2]|0}if((ac|0)>0){Q=0;do{J=ab+(Q<<2)|0;if((J|0)!=0){c[J>>2]=c[(c[x>>2]|0)+(Q<<2)>>2]}Q=Q+1|0;}while((Q|0)<(ac|0))}Q=c[x>>2]|0;if((Q|0)!=0){if((a[U]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[Q-4>>2]|0)}c[x>>2]=0}a[U]=1;c[x>>2]=ab;c[Y>>2]=I;aa=c[j>>2]|0}else{aa=z}}while(0);z=(c[x>>2]|0)+(aa<<2)|0;if((z|0)==0){ae=aa}else{c[z>>2]=C;ae=c[j>>2]|0}c[j>>2]=ae+1;z=c[C+216>>2]|0;Q=T&((z|0)==2|(z|0)==5);z=N+1|0;if((z|0)>=(Z|0)){_=Q;$=z;break L3414}J=c[A>>2]|0;T=Q;N=z;E=J;B=c[J+(z<<3)>>2]|0}}else{_=1;$=X}}while(0);do{if((W|0)<(H|0)){D=c[R>>2]|0;B=D+(W<<2)|0;E=c[B>>2]|0;N=c[(c[E+1108>>2]|0)+208>>2]|0;if((N|0)>-1){af=N}else{af=c[(c[E+1112>>2]|0)+208>>2]|0}if((af|0)==(M|0)){ag=W}else{ah=0;ai=0;aj=G;break}do{ag=ag+1|0;if((ag|0)>=(H|0)){break}E=c[D+(ag<<2)>>2]|0;N=c[(c[E+1108>>2]|0)+208>>2]|0;if((N|0)>-1){ak=N}else{ak=c[(c[E+1112>>2]|0)+208>>2]|0}}while((M|0)==(ak|0));ah=B;ai=ag-W|0;aj=ag}else{ah=0;ai=0;aj=G}}while(0);if(!_){c_[c[(c[k>>2]|0)+8>>2]&127](y,c[x>>2]|0,c[j>>2]|0,ah,ai,M)}D=(ai|0)==0?W:aj;E=c[j>>2]|0;if((E|0)<0){if((c[Y>>2]|0)<0){N=c[x>>2]|0;if((N|0)!=0){if((a[U]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[N-4>>2]|0)}c[x>>2]=0}a[U]=1;c[x>>2]=0;c[Y>>2]=0;al=E}else{al=E}do{E=(c[x>>2]|0)+(al<<2)|0;if((E|0)!=0){c[E>>2]=0}al=al+1|0;}while((al|0)<0)}c[j>>2]=0;if(($|0)<(Z|0)){G=aj;W=D;X=$}else{break}}}}while(0);$=c[9152]|0;aj=$+16|0;Z=(c[aj>>2]|0)-1|0;c[aj>>2]=Z;do{if((Z|0)==0){if((c[$+4>>2]|0)==0){am=$}else{b3(h|0,0)|0;al=c[10742]|0;ai=$+8|0;g[ai>>2]=+(((c[h+4>>2]|0)-(c[al+4>>2]|0)+(((c[h>>2]|0)-(c[al>>2]|0)|0)*1e6|0)-(c[$+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[ai>>2];if((c[aj>>2]|0)!=0){break}am=c[9152]|0}c[9152]=c[am+20>>2]}}while(0);aoE(m);am=c[s>>2]|0;dI[c[(c[am>>2]|0)+16>>2]&1023](am,d,c[u>>2]|0,c[w>>2]|0);aoV(m);m=c[o>>2]|0;if((m|0)!=0){if((a[n]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[m-4>>2]|0)}c[o>>2]=0}a[n]=1;c[o>>2]=0;c[p>>2]=0;c[q>>2]=0;q=c[9152]|0;p=q+16|0;o=(c[p>>2]|0)-1|0;c[p>>2]=o;if((o|0)!=0){i=e;return}do{if((c[q+4>>2]|0)==0){an=q}else{b3(f|0,0)|0;o=c[10742]|0;n=q+8|0;g[n>>2]=+(((c[f+4>>2]|0)-(c[o+4>>2]|0)+(((c[f>>2]|0)-(c[o>>2]|0)|0)*1e6|0)-(c[q+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[n>>2];if((c[p>>2]|0)==0){an=c[9152]|0;break}else{i=e;return}}}while(0);c[9152]=c[an+20>>2];i=e;return}function aoE(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;d=b+56|0;e=c[d>>2]|0;f=b+76|0;g=c[f>>2]|0;if((g+e|0)>0){h=c[b+8>>2]|0;i=c[(c[h>>2]|0)+12>>2]|0;j=c[b+44>>2]|0;k=b+36|0;l=c[k>>2]|0;m=c[b+64>>2]|0;n=c[b+84>>2]|0;o=c[b+4>>2]|0;p=c[b+20>>2]|0;q=c[b+24>>2]|0;r=c[b+28>>2]|0;+cN[i&63](h,j,l,m,e,n,g,o,p,q,r);s=k}else{s=b+36|0}k=c[s>>2]|0;if((k|0)<0){r=b+40|0;q=b+44|0;if((c[r>>2]|0)<0){p=c[q>>2]|0;o=b+48|0;if((p|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[p-4>>2]|0)}c[q>>2]=0}a[o]=1;c[q>>2]=0;c[r>>2]=0;t=k}else{t=k}do{k=(c[q>>2]|0)+(t<<2)|0;if((k|0)!=0){c[k>>2]=0}t=t+1|0;}while((t|0)<0)}c[s>>2]=0;s=c[d>>2]|0;if((s|0)<0){t=b+60|0;q=b+64|0;if((c[t>>2]|0)<0){k=c[q>>2]|0;r=b+68|0;if((k|0)!=0){if((a[r]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[k-4>>2]|0)}c[q>>2]=0}a[r]=1;c[q>>2]=0;c[t>>2]=0;u=s}else{u=s}do{s=(c[q>>2]|0)+(u<<2)|0;if((s|0)!=0){c[s>>2]=0}u=u+1|0;}while((u|0)<0)}c[d>>2]=0;d=c[f>>2]|0;if((d|0)>=0){c[f>>2]=0;return}u=b+80|0;q=b+84|0;if((c[u>>2]|0)<0){s=c[q>>2]|0;t=b+88|0;if((s|0)!=0){if((a[t]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[s-4>>2]|0)}c[q>>2]=0}a[t]=1;c[q>>2]=0;c[u>>2]=0;v=d}else{v=d}do{d=(c[q>>2]|0)+(v<<2)|0;if((d|0)!=0){c[d>>2]=0}v=v+1|0;}while((v|0)<0);c[f>>2]=0;return}function aoF(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;b=i;i=i+16|0;d=b|0;aDo(16384);e=a+176|0;f=c[e>>2]|0;h=a|0;dA[c[(c[f>>2]|0)+8>>2]&511](f,h,c[a+24>>2]|0);f=c[a+184>>2]|0;if((f|0)>0){j=a+192|0;a=0;do{k=c[(c[j>>2]|0)+(a<<2)>>2]|0;l=c[k+24>>2]|0;m=c[k+28>>2]|0;do{if((l|0)!=0){if((c[l+204>>2]&3|0)!=0|(m|0)==0){break}if((c[m+204>>2]&3|0)!=0){break}k=c[l+216>>2]|0;if((k|0)==5|(k|0)==2){k=c[m+216>>2]|0;if((k|0)==5|(k|0)==2){break}}k=c[l+208>>2]|0;n=c[m+208>>2]|0;o=(c[e>>2]|0)+16|0;p=c[o>>2]|0;q=p+(k<<3)|0;r=c[q>>2]|0;if((r|0)==(k|0)){s=k;t=p}else{k=p;p=q;q=r;while(1){r=k+(q<<3)|0;c[p>>2]=c[r>>2];u=c[r>>2]|0;r=c[o>>2]|0;v=r+(u<<3)|0;w=c[v>>2]|0;if((u|0)==(w|0)){s=u;t=r;break}else{k=r;p=v;q=w}}}q=t+(n<<3)|0;p=c[q>>2]|0;if((p|0)==(n|0)){x=n;y=t}else{k=t;w=q;q=p;while(1){p=k+(q<<3)|0;c[w>>2]=c[p>>2];v=c[p>>2]|0;p=c[o>>2]|0;r=p+(v<<3)|0;u=c[r>>2]|0;if((v|0)==(u|0)){x=v;y=p;break}else{k=p;w=r;q=u}}}if((s|0)==(x|0)){break}c[y+(s<<3)>>2]=x;q=c[o>>2]|0;w=q+(x<<3)+4|0;c[w>>2]=(c[w>>2]|0)+(c[q+(s<<3)+4>>2]|0)}}while(0);a=a+1|0;}while((a|0)<(f|0))}f=c[e>>2]|0;cv[c[(c[f>>2]|0)+12>>2]&2047](f,h);h=c[9152]|0;f=h+16|0;e=(c[f>>2]|0)-1|0;c[f>>2]=e;if((e|0)!=0){i=b;return}do{if((c[h+4>>2]|0)==0){z=h}else{b3(d|0,0)|0;e=c[10742]|0;a=h+8|0;g[a>>2]=+(((c[d+4>>2]|0)-(c[e+4>>2]|0)+(((c[d>>2]|0)-(c[e>>2]|0)|0)*1e6|0)-(c[h+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[a>>2];if((c[f>>2]|0)==0){z=c[9152]|0;break}else{i=b;return}}}while(0);c[9152]=c[z+20>>2];i=b;return}function aoG(a){a=a|0;return}function aoH(d,e){d=d|0;e=+e;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0.0,aK=0,aL=0.0,aM=0,aN=0.0,aO=0.0,aP=0.0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0.0,aW=0.0,aX=0.0,aY=0.0,aZ=0.0,a_=0.0,a$=0.0,a0=0.0,a1=0.0,a2=0.0,a3=0.0,a4=0.0,a5=0.0,a6=0.0,a7=0.0,a8=0.0,a9=0.0,ba=0.0,bb=0.0,bc=0.0,bd=0.0,be=0,bf=0,bg=0,bh=0,bi=0;f=i;i=i+376|0;h=f+8|0;j=f+16|0;k=f+24|0;l=f+40|0;m=f+56|0;n=f+72|0;o=f+96|0;p=f+160|0;q=f+256|0;r=f+312|0;aDo(16224);s=d+204|0;if((c[s>>2]|0)>0){t=d+212|0;u=o+48|0;v=u|0;w=o+52|0;x=o+56|0;y=d|0;z=d+44|0;A=d+76|0;B=d+24|0;C=p|0;D=p+4|0;E=p+8|0;F=p+10|0;G=p+12|0;H=p+28|0;I=u;u=p+76|0;J=p+80|0;K=p+84|0;L=p+88|0;M=p+92|0;N=q|0;O=q+4|0;P=q+28|0;Q=q+44|0;R=d+56|0;S=p|0;T=r;U=r+16|0;V=r+32|0;W=r+48|0;X=q|0;Y=q+8|0;Z=q+12|0;_=q+16|0;$=q+20|0;aa=q+24|0;q=p+60|0;ab=p+64|0;ac=p+68|0;ad=k|0;ae=k+4|0;af=k+8|0;ag=k+12|0;ah=l|0;ai=l+4|0;aj=l+8|0;ak=l+12|0;al=p+44|0;am=p+48|0;an=p+52|0;p=d+132|0;ao=d+112|0;d=m|0;ap=m+4|0;aq=m+8|0;ar=m+12|0;as=n|0;at=n+4|0;au=n+8|0;av=n+12|0;aw=h|0;ax=h+4|0;ay=0;do{az=c[(c[t>>2]|0)+(ay<<2)>>2]|0;aA=az|0;aB=az+240|0;g[aB>>2]=1.0;aC=c[az+216>>2]|0;L3601:do{if(!((aC|0)==5|(aC|0)==2)){if((c[az+204>>2]&3|0)!=0){break}aD=az+4|0;aE=az+320|0;aF=az+304|0;aG=az+308|0;aH=az+312|0;anY(aD,+g[aF>>2],+g[aG>>2],+g[aH>>2],aE,e,o);aI=az+52|0;aJ=+g[v>>2]- +g[aI>>2];aK=az+56|0;aL=+g[w>>2]- +g[aK>>2];aM=az+60|0;aN=+g[x>>2]- +g[aM>>2];do{if((a[z]&1)!=0){aO=+g[az+248>>2];aP=aO*aO;if(!(aP!=0.0&aP<aJ*aJ+aL*aL+aN*aN)){break}aDo(16048);do{if((c[(c[az+192>>2]|0)+4>>2]|0)<20){c[9802]=(c[9802]|0)+1;aQ=c[A>>2]|0;aR=cA[c[(c[aQ>>2]|0)+36>>2]&4095](aQ)|0;aQ=c[B>>2]|0;g[D>>2]=1.0;b[E>>1]=1;b[F>>1]=-1;c[C>>2]=19448;aS=aI;c[G>>2]=c[aS>>2];c[G+4>>2]=c[aS+4>>2];c[G+8>>2]=c[aS+8>>2];c[G+12>>2]=c[aS+12>>2];c[H>>2]=c[I>>2];c[H+4>>2]=c[I+4>>2];c[H+8>>2]=c[I+8>>2];c[H+12>>2]=c[I+12>>2];c[u>>2]=0;c[C>>2]=19728;c[J>>2]=aA;g[K>>2]=0.0;c[L>>2]=aR;c[M>>2]=aQ;aP=+g[az+244>>2];c[Y>>2]=0;g[Z>>2]=1.0;g[_>>2]=1.0;g[$>>2]=1.0;g[aa>>2]=0.0;c[N>>2]=25528;c[O>>2]=8;g[P>>2]=aP;g[Q>>2]=aP;g[K>>2]=+g[R>>2];aQ=az+188|0;b[E>>1]=b[(c[aQ>>2]|0)+4>>1]|0;b[F>>1]=b[(c[aQ>>2]|0)+6>>1]|0;c[W>>2]=c[I>>2];c[W+4>>2]=c[I+4>>2];c[W+8>>2]=c[I+8>>2];c[W+12>>2]=c[I+12>>2];aQ=aD;c[T>>2]=c[aQ>>2];c[T+4>>2]=c[aQ+4>>2];c[T+8>>2]=c[aQ+8>>2];c[T+12>>2]=c[aQ+12>>2];aQ=az+20|0;c[U>>2]=c[aQ>>2];c[U+4>>2]=c[aQ+4>>2];c[U+8>>2]=c[aQ+8>>2];c[U+12>>2]=c[aQ+12>>2];aQ=az+36|0;c[V>>2]=c[aQ>>2];c[V+4>>2]=c[aQ+4>>2];c[V+8>>2]=c[aQ+8>>2];c[V+12>>2]=c[aQ+12>>2];atO(y,X,aD,r,S,0.0);aP=+g[D>>2];if(aP>=1.0){aT=0;break}g[aB>>2]=aP;anY(aD,+g[aF>>2],+g[aG>>2],+g[aH>>2],aE,aP*e,o);g[aB>>2]=0.0;ap4(az,o);aQ=c[u>>2]|0;if((c[aQ+232>>2]&2|0)==0){aU=0}else{aU=aQ}aP=+g[q>>2];aO=aP- +g[az+52>>2];aV=+g[ab>>2];aW=aV- +g[aK>>2];aX=+g[ac>>2];aY=aX- +g[aM>>2];g[ad>>2]=aO;g[ae>>2]=aW;g[af>>2]=aY;g[ag>>2]=0.0;aZ=aP- +g[aQ+52>>2];a_=aV- +g[aQ+56>>2];a$=aX- +g[aQ+60>>2];g[ah>>2]=aZ;g[ai>>2]=a_;g[aj>>2]=a$;g[ak>>2]=0.0;a0=+g[az+324>>2];a1=+g[az+328>>2];a2=+g[az+320>>2];aR=(aU|0)!=0;if(aR){a3=+g[aU+324>>2];a4=+g[aU+328>>2];a5=+g[aU+320>>2];a6=a3*a$-a4*a_+ +g[aU+304>>2];a7=+g[aU+308>>2]+(a4*aZ-a$*a5);a8=a_*a5-a3*aZ+ +g[aU+312>>2]}else{a6=0.0;a7=0.0;a8=0.0}aZ=+g[al>>2];a3=+g[am>>2];a5=+g[an>>2];a_=aZ*(a0*aY-a1*aW+ +g[aF>>2]-a6)+(+g[aG>>2]+(a1*aO-aY*a2)-a7)*a3+(aW*a2-a0*aO+ +g[aH>>2]-a8)*a5;a0=a5*aW-a3*aY;a2=aZ*aY-a5*aO;a1=a3*aO-aZ*aW;a$=a1*+g[az+288>>2]+(+g[az+256>>2]*a0+ +g[az+272>>2]*a2);a4=a0*+g[az+260>>2]+a2*+g[az+276>>2]+a1*+g[az+292>>2];a9=a0*+g[az+264>>2]+a2*+g[az+280>>2]+a1*+g[az+296>>2];if(aR){a1=aP- +g[aU+52>>2];aP=aV- +g[aU+56>>2];aV=aX- +g[aU+60>>2];aX=a5*aP-a3*aV;a2=aZ*aV-a5*a1;a0=a3*a1-aZ*aP;ba=a0*+g[aU+288>>2]+(+g[aU+256>>2]*aX+ +g[aU+272>>2]*a2);bb=aX*+g[aU+260>>2]+a2*+g[aU+276>>2]+a0*+g[aU+292>>2];bc=aX*+g[aU+264>>2]+a2*+g[aU+280>>2]+a0*+g[aU+296>>2];bd=+g[aU+336>>2]+(a5*(aP*ba-a1*bb)+(aZ*(aV*bb-aP*bc)+a3*(a1*bc-aV*ba)));be=1}else{bd=0.0;be=0}ba=1.0/(+g[az+336>>2]+(a5*(aW*a$-aO*a4)+(aZ*(aY*a4-aW*a9)+a3*(aO*a9-aY*a$)))+bd);a$=+g[p>>2]*-0.0/+g[ao>>2]*ba+a_*(-0.0-(+g[az+228>>2]*+g[aQ+228>>2]*(-0.0-a_)+1.0))*ba;ba=a$<0.0?0.0:a$;g[d>>2]=aZ*ba;g[ap>>2]=a3*ba;g[aq>>2]=a5*ba;g[ar>>2]=0.0;pe(az,m,k);if(!be){aT=4;break}a5=ba*(-0.0- +g[am>>2]);a3=ba*(-0.0- +g[an>>2]);g[as>>2]=ba*(-0.0- +g[al>>2]);g[at>>2]=a5;g[au>>2]=a3;g[av>>2]=0.0;pe(aU,n,l);aT=4}else{aT=0}}while(0);aQ=c[9152]|0;aR=aQ+16|0;aS=(c[aR>>2]|0)-1|0;c[aR>>2]=aS;do{if((aS|0)==0){if((c[aQ+4>>2]|0)==0){bf=aQ}else{b3(h|0,0)|0;bg=c[10742]|0;bh=aQ+8|0;g[bh>>2]=+(((c[ax>>2]|0)-(c[bg+4>>2]|0)+(((c[aw>>2]|0)-(c[bg>>2]|0)|0)*1e6|0)-(c[aQ+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[bh>>2];if((c[aR>>2]|0)!=0){break}bf=c[9152]|0}c[9152]=c[bf+20>>2]}}while(0);if((aT|0)==4){break L3601}}}while(0);ap4(az,o)}}while(0);ay=ay+1|0;}while((ay|0)<(c[s>>2]|0))}s=c[9152]|0;ay=s+16|0;o=(c[ay>>2]|0)-1|0;c[ay>>2]=o;if((o|0)!=0){i=f;return}do{if((c[s+4>>2]|0)==0){bi=s}else{b3(j|0,0)|0;o=c[10742]|0;aT=s+8|0;g[aT>>2]=+(((c[j+4>>2]|0)-(c[o+4>>2]|0)+(((c[j>>2]|0)-(c[o>>2]|0)|0)*1e6|0)-(c[s+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[aT>>2];if((c[ay>>2]|0)==0){bi=c[9152]|0;break}else{i=f;return}}}while(0);c[9152]=c[bi+20>>2];i=f;return}function aoI(a){a=a|0;return 2}function aoJ(a){a=a|0;return c[a+172>>2]|0}function aoK(a){a=a|0;return c[a+184>>2]|0}function aoL(a,b){a=a|0;b=b|0;return c[(c[a+192>>2]|0)+(b<<2)>>2]|0}function aoM(a,b){a=a|0;b=b|0;return c[(c[a+192>>2]|0)+(b<<2)>>2]|0}function aoN(a,b){a=a|0;b=+b;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0;d=i;i=i+8|0;e=d|0;aDo(18048);f=a+204|0;h=c[f>>2]|0;if((h|0)>0){j=a+212|0;a=0;k=h;while(1){h=c[(c[j>>2]|0)+(a<<2)>>2]|0;if((c[h+204>>2]&3|0)==0){ap5(h,b);ap3(h,b);anY(h+4|0,+g[h+304>>2],+g[h+308>>2],+g[h+312>>2],h+320|0,b,h+68|0);l=c[f>>2]|0}else{l=k}h=a+1|0;if((h|0)<(l|0)){a=h;k=l}else{break}}}l=c[9152]|0;k=l+16|0;a=(c[k>>2]|0)-1|0;c[k>>2]=a;if((a|0)!=0){i=d;return}do{if((c[l+4>>2]|0)==0){m=l}else{b3(e|0,0)|0;a=c[10742]|0;f=l+8|0;g[f>>2]=+(((c[e+4>>2]|0)-(c[a+4>>2]|0)+(((c[e>>2]|0)-(c[a>>2]|0)|0)*1e6|0)-(c[l+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[f>>2];if((c[k>>2]|0)==0){m=c[9152]|0;break}else{i=d;return}}}while(0);c[9152]=c[m+20>>2];i=d;return}function aoO(b,d){b=b|0;d=d|0;var e=0,f=0;e=b+241|0;f=b+172|0;do{if((a[e]&1)!=0){b=c[f>>2]|0;if((b|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[b-4>>2]|0)}}while(0);a[e]=0;c[f>>2]=d;return}function aoP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=b;ct[c[(c[d>>2]|0)+32>>2]&2047](b);e=a+8|0;f=c[e>>2]|0;if((f|0)>0){g=a+16|0;h=b;i=b;j=0;k=f;while(1){f=c[(c[g>>2]|0)+(j<<2)>>2]|0;if((c[f+232>>2]&2|0)==0){l=k}else{m=cA[c[(c[f>>2]|0)+16>>2]&4095](f)|0;n=cS[c[(c[h>>2]|0)+16>>2]&511](b,m,1)|0;m=cS[c[(c[f>>2]|0)+20>>2]&511](f,c[n+8>>2]|0,b)|0;co[c[(c[i>>2]|0)+20>>2]&255](b,n,m,1497645650,f);l=c[e>>2]|0}f=j+1|0;if((f|0)<(l|0)){j=f;k=l}else{break}}}l=a+184|0;if((c[l>>2]|0)<=0){o=a|0;atW(o,b);p=c[d>>2]|0;q=p+36|0;r=c[q>>2]|0;ct[r&2047](b);return}k=a+192|0;j=b;e=b;i=0;do{h=c[(c[k>>2]|0)+(i<<2)>>2]|0;g=cA[c[(c[h>>2]|0)+36>>2]&4095](h)|0;f=cS[c[(c[j>>2]|0)+16>>2]&511](b,g,1)|0;g=cS[c[(c[h>>2]|0)+40>>2]&511](h,c[f+8>>2]|0,b)|0;co[c[(c[e>>2]|0)+20>>2]&255](b,f,g,1397641027,h);i=i+1|0;}while((i|0)<(c[l>>2]|0));o=a|0;atW(o,b);p=c[d>>2]|0;q=p+36|0;r=c[q>>2]|0;ct[r&2047](b);return}function aoQ(d,e){d=d|0;e=+e;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0,aM=0,aN=0.0,aO=0,aP=0.0,aQ=0,aR=0.0,aS=0.0,aT=0.0,aU=0,aV=0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$=0.0,a0=0,a1=0;f=i;i=i+528|0;h=f|0;j=f+16|0;k=f+32|0;l=f+96|0;m=f+192|0;n=f+248|0;o=f+312|0;p=f+336|0;q=f+496|0;r=f+512|0;aDo(18112);s=d+204|0;if((c[s>>2]|0)>0){t=d+212|0;u=k+48|0;v=u|0;w=k+52|0;x=k+56|0;y=d|0;z=d+76|0;A=d+24|0;d=l|0;B=l+4|0;C=l+8|0;D=l+10|0;E=l+12|0;F=l+28|0;G=u;u=l+76|0;H=l+80|0;I=l+84|0;J=l+88|0;K=l+92|0;L=m|0;M=m+4|0;N=m+28|0;O=m+44|0;P=l|0;R=n;S=n+16|0;T=n+32|0;U=n+48|0;V=U;W=m|0;X=o+16|0;Y=o+12|0;Z=o+4|0;_=o+8|0;$=p+4|0;aa=U|0;U=n+52|0;ab=n+56|0;ac=q;ad=l+60|0;ae=q|0;af=q+4|0;ag=q+8|0;ah=l+44|0;ai=ah|0;aj=l+48|0;ak=l+52|0;l=r|0;al=r+4|0;am=r+8|0;an=r+12|0;ao=m+8|0;ap=m+12|0;aq=m+16|0;ar=m+20|0;as=m+24|0;m=p|0;at=p+136|0;au=p+140|0;av=p+8|0;aw=p+144|0;ax=p+24|0;ay=p+40|0;az=p+56|0;aA=p+72|0;aB=p+88|0;aC=p+104|0;aD=p+120|0;aE=h|0;aF=h+4|0;aG=0;do{aH=c[(c[t>>2]|0)+(aG<<2)>>2]|0;aI=aH|0;g[aH+240>>2]=1.0;aJ=c[aH+216>>2]|0;do{if(!((aJ|0)==5|(aJ|0)==2)){if((c[aH+204>>2]&3|0)!=0){break}aK=aH+4|0;anY(aK,+g[aH+304>>2],+g[aH+308>>2],+g[aH+312>>2],aH+320|0,e,k);aL=aH+52|0;aM=aL|0;aN=+g[v>>2]- +g[aM>>2];aO=aH+56|0;aP=+g[w>>2]- +g[aO>>2];aQ=aH+60|0;aR=+g[x>>2]- +g[aQ>>2];aS=+g[aH+248>>2];aT=aS*aS;if(!(aT!=0.0&aT<aN*aN+aP*aP+aR*aR)){break}aDo(18080);do{if((c[(c[aH+192>>2]|0)+4>>2]|0)<20){c[9802]=(c[9802]|0)+1;aU=c[z>>2]|0;aV=cA[c[(c[aU>>2]|0)+36>>2]&4095](aU)|0;aU=c[A>>2]|0;g[B>>2]=1.0;b[C>>1]=1;b[D>>1]=-1;c[d>>2]=19448;aW=aL;c[E>>2]=c[aW>>2];c[E+4>>2]=c[aW+4>>2];c[E+8>>2]=c[aW+8>>2];c[E+12>>2]=c[aW+12>>2];c[F>>2]=c[G>>2];c[F+4>>2]=c[G+4>>2];c[F+8>>2]=c[G+8>>2];c[F+12>>2]=c[G+12>>2];c[u>>2]=0;c[d>>2]=19728;c[H>>2]=aI;g[I>>2]=0.0;c[J>>2]=aV;c[K>>2]=aU;aR=+g[aH+244>>2];c[ao>>2]=0;g[ap>>2]=1.0;g[aq>>2]=1.0;g[ar>>2]=1.0;g[as>>2]=0.0;c[L>>2]=25528;c[M>>2]=8;g[N>>2]=aR;g[O>>2]=aR;aU=aH+188|0;b[C>>1]=b[(c[aU>>2]|0)+4>>1]|0;b[D>>1]=b[(c[aU>>2]|0)+6>>1]|0;c[V>>2]=c[G>>2];c[V+4>>2]=c[G+4>>2];c[V+8>>2]=c[G+8>>2];c[V+12>>2]=c[G+12>>2];aV=aK;c[R>>2]=c[aV>>2];c[R+4>>2]=c[aV+4>>2];c[R+8>>2]=c[aV+8>>2];c[R+12>>2]=c[aV+12>>2];aX=aH+20|0;c[S>>2]=c[aX>>2];c[S+4>>2]=c[aX+4>>2];c[S+8>>2]=c[aX+8>>2];c[S+12>>2]=c[aX+12>>2];aY=aH+36|0;c[T>>2]=c[aY>>2];c[T+4>>2]=c[aY+4>>2];c[T+8>>2]=c[aY+8>>2];c[T+12>>2]=c[aY+12>>2];atO(y,W,aK,n,P,0.0);if(+g[B>>2]>=1.0){break}aZ=c[J>>2]|0;a_=cS[c[(c[aZ>>2]|0)+52>>2]&511](aZ,c[aU>>2]|0,c[(c[u>>2]|0)+188>>2]|0)|0;if((a_|0)==0){break}aU=a_+8|0;if((c[aU>>2]|0)==0){break}a[X]=1;c[Y>>2]=0;c[Z>>2]=0;c[_>>2]=0;a_=c[aU>>2]|0;cv[c[(c[a_>>2]|0)+16>>2]&2047](a_,o);do{if((c[Z>>2]|0)!=0){a_=c[u>>2]|0;c[m>>2]=24e3;c[at>>2]=aI;c[au>>2]=a_;aDD(aw|0,-1|0,16);c[av>>2]=c[aV>>2];c[av+4>>2]=c[aV+4>>2];c[av+8>>2]=c[aV+8>>2];c[av+12>>2]=c[aV+12>>2];c[ax>>2]=c[aX>>2];c[ax+4>>2]=c[aX+4>>2];c[ax+8>>2]=c[aX+8>>2];c[ax+12>>2]=c[aX+12>>2];c[ay>>2]=c[aY>>2];c[ay+4>>2]=c[aY+4>>2];c[ay+8>>2]=c[aY+8>>2];c[ay+12>>2]=c[aY+12>>2];c[az>>2]=c[aW>>2];c[az+4>>2]=c[aW+4>>2];c[az+8>>2]=c[aW+8>>2];c[az+12>>2]=c[aW+12>>2];aU=a_+4|0;c[aA>>2]=c[aU>>2];c[aA+4>>2]=c[aU+4>>2];c[aA+8>>2]=c[aU+8>>2];c[aA+12>>2]=c[aU+12>>2];aU=a_+20|0;c[aB>>2]=c[aU>>2];c[aB+4>>2]=c[aU+4>>2];c[aB+8>>2]=c[aU+8>>2];c[aB+12>>2]=c[aU+12>>2];aU=a_+36|0;c[aC>>2]=c[aU>>2];c[aC+4>>2]=c[aU+4>>2];c[aC+8>>2]=c[aU+8>>2];c[aC+12>>2]=c[aU+12>>2];aU=a_+52|0;c[aD>>2]=c[aU>>2];c[aD+4>>2]=c[aU+4>>2];c[aD+8>>2]=c[aU+8>>2];c[aD+12>>2]=c[aU+12>>2];aU=c[c[Y>>2]>>2]|0;c[$>>2]=aU;aR=+g[B>>2];aP=(+g[aa>>2]- +g[aM>>2])*aR;aN=(+g[U>>2]- +g[aO>>2])*aR;aT=aR*(+g[ab>>2]- +g[aQ>>2]);aR=aT*aT+(aP*aP+aN*aN);c[ac>>2]=c[ad>>2];c[ac+4>>2]=c[ad+4>>2];c[ac+8>>2]=c[ad+8>>2];c[ac+12>>2]=c[ad+12>>2];if(aR>1.1920928955078125e-7){aS=+Q(+aR);g[ae>>2]=+g[ae>>2]-aP;g[af>>2]=+g[af>>2]-aN;g[ag>>2]=+g[ag>>2]-aT;a$=aS}else{a$=0.0}if((c[aU+1108>>2]|0)==(aH|0)){aya(p,ah,q,a$);break}else{aS=-0.0- +g[aj>>2];aT=-0.0- +g[ak>>2];g[l>>2]=-0.0- +g[ai>>2];g[al>>2]=aS;g[am>>2]=aT;g[an>>2]=0.0;aya(p,r,q,a$);break}}}while(0);aW=c[Y>>2]|0;if((aW|0)!=0){if((a[X]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aW-4>>2]|0)}c[Y>>2]=0}a[X]=1;c[Y>>2]=0;c[Z>>2]=0;c[_>>2]=0}}while(0);aQ=c[9152]|0;aO=aQ+16|0;aM=(c[aO>>2]|0)-1|0;c[aO>>2]=aM;if((aM|0)!=0){break}if((c[aQ+4>>2]|0)==0){a0=aQ}else{b3(h|0,0)|0;aM=c[10742]|0;aK=aQ+8|0;g[aK>>2]=+(((c[aF>>2]|0)-(c[aM+4>>2]|0)+(((c[aE>>2]|0)-(c[aM>>2]|0)|0)*1e6|0)-(c[aQ+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[aK>>2];if((c[aO>>2]|0)!=0){break}a0=c[9152]|0}c[9152]=c[a0+20>>2]}}while(0);aG=aG+1|0;}while((aG|0)<(c[s>>2]|0))}s=c[9152]|0;aG=s+16|0;a0=(c[aG>>2]|0)-1|0;c[aG>>2]=a0;if((a0|0)!=0){i=f;return}do{if((c[s+4>>2]|0)==0){a1=s}else{b3(j|0,0)|0;a0=c[10742]|0;aE=s+8|0;g[aE>>2]=+(((c[j+4>>2]|0)-(c[a0+4>>2]|0)+(((c[j>>2]|0)-(c[a0>>2]|0)|0)*1e6|0)-(c[s+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[aE>>2];if((c[aG>>2]|0)==0){a1=c[9152]|0;break}else{i=f;return}}}while(0);c[9152]=c[a1+20>>2];i=f;return}function aoR(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;e=a+12|0;f=c[e>>2]|0;g=c[f+(((d+b|0)/2|0)<<2)>>2]|0;h=g+24|0;i=g+28|0;g=b;j=d;k=f;while(1){f=c[(c[h>>2]|0)+208>>2]|0;l=(f|0)>-1;if(l){m=g;while(1){n=c[k+(m<<2)>>2]|0;o=c[(c[n+24>>2]|0)+208>>2]|0;if((o|0)>-1){p=o}else{p=c[(c[n+28>>2]|0)+208>>2]|0}if((p|0)<(f|0)){m=m+1|0}else{q=m;r=n;break}}}else{m=c[(c[i>>2]|0)+208>>2]|0;n=g;while(1){o=c[k+(n<<2)>>2]|0;s=c[(c[o+24>>2]|0)+208>>2]|0;if((s|0)>-1){t=s}else{t=c[(c[o+28>>2]|0)+208>>2]|0}if((t|0)<(m|0)){n=n+1|0}else{q=n;r=o;break}}}if(l){n=j;while(1){m=c[k+(n<<2)>>2]|0;o=c[(c[m+24>>2]|0)+208>>2]|0;if((o|0)>-1){u=o}else{u=c[(c[m+28>>2]|0)+208>>2]|0}if((f|0)<(u|0)){n=n-1|0}else{v=n;w=m;break}}}else{n=c[(c[i>>2]|0)+208>>2]|0;f=j;while(1){l=c[k+(f<<2)>>2]|0;m=c[(c[l+24>>2]|0)+208>>2]|0;if((m|0)>-1){x=m}else{x=c[(c[l+28>>2]|0)+208>>2]|0}if((n|0)<(x|0)){f=f-1|0}else{v=f;w=l;break}}}if((q|0)>(v|0)){y=q;z=v}else{c[k+(q<<2)>>2]=w;c[(c[e>>2]|0)+(v<<2)>>2]=r;y=q+1|0;z=v-1|0}if((y|0)>(z|0)){break}g=y;j=z;k=c[e>>2]|0}if((z|0)>(b|0)){aoR(a,b,z)}if((y|0)>=(d|0)){return}aoR(a,y,d);return}function aoS(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aoT(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;e=c[d>>2]|0;f=c[a+80>>2]|0;if((e|0)==(f|0)){g=0;return g|0}if((b[a+10>>1]&b[d+4>>1])<<16>>16==0){g=0;return g|0}if((b[d+6>>1]&b[a+8>>1])<<16>>16==0){g=0;return g|0}d=c[a+92>>2]|0;g=cS[c[(c[d>>2]|0)+28>>2]&511](d,f,e)|0;return g|0}function aoU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;e=b|0;f=c[e>>2]|0;if((f|0)==(c[a+80>>2]|0)){h=1.0;return+h}if((c[f+204>>2]&4|0)!=0){h=1.0;return+h}f=b+8|0;i=b+12|0;j=b+16|0;if((+g[a+28>>2]- +g[a+12>>2])*+g[f>>2]+(+g[a+32>>2]- +g[a+16>>2])*+g[i>>2]+(+g[a+36>>2]- +g[a+20>>2])*+g[j>>2]>=-0.0- +g[a+84>>2]){h=1.0;return+h}k=b+40|0;g[a+4>>2]=+g[k>>2];l=c[e>>2]|0;c[a+76>>2]=l;if(d){d=a+44|0;e=f;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2]}else{m=+g[b+8>>2];n=+g[i>>2];o=+g[j>>2];p=m*+g[l+20>>2]+n*+g[l+24>>2]+o*+g[l+28>>2];q=m*+g[l+36>>2]+n*+g[l+40>>2]+o*+g[l+44>>2];g[a+44>>2]=+g[l+4>>2]*m+ +g[l+8>>2]*n+ +g[l+12>>2]*o;g[a+48>>2]=p;g[a+52>>2]=q;g[a+56>>2]=0.0}l=a+60|0;a=b+24|0;c[l>>2]=c[a>>2];c[l+4>>2]=c[a+4>>2];c[l+8>>2]=c[a+8>>2];c[l+12>>2]=c[a+12>>2];h=+g[k>>2];return+h}function aoV(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;c[b>>2]=18656;d=b+76|0;e=b+84|0;f=c[e>>2]|0;g=b+88|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+80>>2]=0;d=b+56|0;e=b+64|0;g=c[e>>2]|0;f=b+68|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+60>>2]=0;d=b+36|0;e=b+44|0;f=c[e>>2]|0;g=b+48|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+40|0;c[h>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+40|0;c[h>>2]=0;return}function aoW(a){a=a|0;aoV(a);if((a|0)==0){return}aDB(a);return}function aoX(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;i=c[b+16>>2]|0;if((h|0)<0){if((i|0)==(-g|0)){return}j=c[b+8>>2]|0;k=c[(c[j>>2]|0)+12>>2]|0;l=c[b+12>>2]|0;m=c[b+4>>2]|0;n=c[b+20>>2]|0;o=c[b+24>>2]|0;p=c[b+28>>2]|0;+cN[k&63](j,d,e,f,g,l,i,m,n,o,p);return}p=b+12|0;o=0;while(1){if((o|0)>=(i|0)){q=0;r=0;break}s=c[p>>2]|0;t=s+(o<<2)|0;n=c[t>>2]|0;m=c[(c[n+24>>2]|0)+208>>2]|0;if((m|0)>-1){u=m}else{u=c[(c[n+28>>2]|0)+208>>2]|0}if((u|0)==(h|0)){v=0;w=o;x=3485;break}else{o=o+1|0}}if((x|0)==3485){while(1){x=0;o=c[s+(w<<2)>>2]|0;u=c[(c[o+24>>2]|0)+208>>2]|0;if((u|0)>-1){y=u}else{y=c[(c[o+28>>2]|0)+208>>2]|0}o=((y|0)==(h|0))+v|0;u=w+1|0;if((u|0)<(i|0)){v=o;w=u;x=3485}else{q=o;r=t;break}}}t=b+4|0;x=c[t>>2]|0;if((c[x+68>>2]|0)<2){if((q|0)==(-g|0)){return}w=c[b+8>>2]|0;v=c[(c[w>>2]|0)+12>>2]|0;i=c[b+20>>2]|0;h=c[b+24>>2]|0;y=c[b+28>>2]|0;+cN[v&63](w,d,e,f,g,r,q,x,i,h,y);return}if((e|0)>0){y=b+36|0;h=b+40|0;i=b+44|0;x=b+48|0;w=0;v=c[y>>2]|0;do{s=d+(w<<2)|0;do{if((v|0)==(c[h>>2]|0)){o=(v|0)==0?1:v<<1;if((v|0)>=(o|0)){z=v;break}if((o|0)==0){A=0;B=v}else{c[9806]=(c[9806]|0)+1;u=aDx((o<<2)+19|0)|0;if((u|0)==0){C=0}else{p=-(u+4|0)&15;c[u+p>>2]=u;C=u+(p+4)|0}A=C;B=c[y>>2]|0}if((B|0)>0){p=0;do{u=A+(p<<2)|0;if((u|0)!=0){c[u>>2]=c[(c[i>>2]|0)+(p<<2)>>2]}p=p+1|0;}while((p|0)<(B|0))}p=c[i>>2]|0;if((p|0)!=0){if((a[x]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[p-4>>2]|0)}c[i>>2]=0}a[x]=1;c[i>>2]=A;c[h>>2]=o;z=c[y>>2]|0}else{z=v}}while(0);p=(c[i>>2]|0)+(z<<2)|0;if((p|0)==0){D=z}else{c[p>>2]=c[s>>2];D=c[y>>2]|0}v=D+1|0;c[y>>2]=v;w=w+1|0;}while((w|0)<(e|0))}if((g|0)>0){e=b+56|0;w=b+60|0;v=b+64|0;y=b+68|0;D=0;z=c[e>>2]|0;do{i=f+(D<<2)|0;do{if((z|0)==(c[w>>2]|0)){h=(z|0)==0?1:z<<1;if((z|0)>=(h|0)){E=z;break}if((h|0)==0){F=0;G=z}else{c[9806]=(c[9806]|0)+1;A=aDx((h<<2)+19|0)|0;if((A|0)==0){H=0}else{x=-(A+4|0)&15;c[A+x>>2]=A;H=A+(x+4)|0}F=H;G=c[e>>2]|0}if((G|0)>0){x=0;do{A=F+(x<<2)|0;if((A|0)!=0){c[A>>2]=c[(c[v>>2]|0)+(x<<2)>>2]}x=x+1|0;}while((x|0)<(G|0))}x=c[v>>2]|0;if((x|0)!=0){if((a[y]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[x-4>>2]|0)}c[v>>2]=0}a[y]=1;c[v>>2]=F;c[w>>2]=h;E=c[e>>2]|0}else{E=z}}while(0);s=(c[v>>2]|0)+(E<<2)|0;if((s|0)==0){I=E}else{c[s>>2]=c[i>>2];I=c[e>>2]|0}z=I+1|0;c[e>>2]=z;D=D+1|0;}while((D|0)<(g|0))}g=b+76|0;if((q|0)>0){D=b+80|0;z=b+84|0;e=b+88|0;I=0;E=c[g>>2]|0;while(1){v=r+(I<<2)|0;do{if((E|0)==(c[D>>2]|0)){w=(E|0)==0?1:E<<1;if((E|0)>=(w|0)){J=E;break}if((w|0)==0){K=0;L=E}else{c[9806]=(c[9806]|0)+1;F=aDx((w<<2)+19|0)|0;if((F|0)==0){M=0}else{y=-(F+4|0)&15;c[F+y>>2]=F;M=F+(y+4)|0}K=M;L=c[g>>2]|0}if((L|0)>0){y=0;do{F=K+(y<<2)|0;if((F|0)!=0){c[F>>2]=c[(c[z>>2]|0)+(y<<2)>>2]}y=y+1|0;}while((y|0)<(L|0))}y=c[z>>2]|0;if((y|0)!=0){if((a[e]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[y-4>>2]|0)}c[z>>2]=0}a[e]=1;c[z>>2]=K;c[D>>2]=w;J=c[g>>2]|0}else{J=E}}while(0);i=(c[z>>2]|0)+(J<<2)|0;if((i|0)==0){N=J}else{c[i>>2]=c[v>>2];N=c[g>>2]|0}i=N+1|0;c[g>>2]=i;y=I+1|0;if((y|0)<(q|0)){I=y;E=i}else{O=i;break}}}else{O=c[g>>2]|0}if(((c[b+56>>2]|0)+O|0)<=(c[(c[t>>2]|0)+68>>2]|0)){return}aoE(b);return}function aoY(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0;c[b+4>>2]=6;c[b+8>>2]=-1;c[b+12>>2]=-1;g[b+16>>2]=3.4028234663852886e+38;a[b+20|0]=1;a[b+21|0]=0;c[b+24>>2]=d;c[b+28>>2]=e;g[b+32>>2]=0.0;g[b+36>>2]=.30000001192092896;c[b>>2]=21400;j=b+40|0;k=f;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];k=b+56|0;j=f+16|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];j=b+72|0;k=f+32|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];k=b+88|0;j=f+48|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];j=b+104|0;k=h;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];k=b+120|0;j=h+16|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];j=b+136|0;k=h+32|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];k=b+152|0;j=h+48|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];aDD(b+672|0,0,48);aDD(b+732|0,0,16);g[b+748>>2]=.20000000298023224;g[b+752>>2]=.20000000298023224;g[b+756>>2]=.20000000298023224;aDD(b+760|0,0,20);g[b+720>>2]=.699999988079071;g[b+724>>2]=1.0;g[b+728>>2]=.5;a[b+780|0]=0;g[b+784>>2]=0.0;g[b+800>>2]=0.0;a[b+781|0]=0;g[b+788>>2]=0.0;g[b+804>>2]=0.0;a[b+782|0]=0;g[b+792>>2]=0.0;g[b+808>>2]=0.0;g[b+920>>2]=0.0;g[b+868>>2]=0.0;g[b+872>>2]=.10000000149011612;g[b+876>>2]=300.0;g[b+860>>2]=1.0;g[b+864>>2]=-1.0;g[b+888>>2]=0.0;g[b+892>>2]=.20000000298023224;g[b+896>>2]=0.0;g[b+900>>2]=0.0;g[b+880>>2]=1.0;g[b+884>>2]=.5;c[b+916>>2]=0;g[b+908>>2]=0.0;a[b+904|0]=0;g[b+984>>2]=0.0;g[b+932>>2]=0.0;g[b+936>>2]=.10000000149011612;g[b+940>>2]=300.0;g[b+924>>2]=1.0;g[b+928>>2]=-1.0;g[b+952>>2]=0.0;g[b+956>>2]=.20000000298023224;g[b+960>>2]=0.0;g[b+964>>2]=0.0;g[b+944>>2]=1.0;g[b+948>>2]=.5;c[b+980>>2]=0;g[b+972>>2]=0.0;a[b+968|0]=0;g[b+1048>>2]=0.0;g[b+996>>2]=0.0;g[b+1e3>>2]=.10000000149011612;g[b+1004>>2]=300.0;g[b+988>>2]=1.0;g[b+992>>2]=-1.0;g[b+1016>>2]=0.0;g[b+1020>>2]=.20000000298023224;g[b+1024>>2]=0.0;g[b+1028>>2]=0.0;g[b+1008>>2]=1.0;g[b+1012>>2]=.5;c[b+1044>>2]=0;g[b+1036>>2]=0.0;a[b+1032|0]=0;a[b+1292|0]=i&1;a[b+1293|0]=1;c[b+1296>>2]=0;a[b+1300|0]=0;aoZ(b,d+4|0,e+4|0);return}function aoZ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0,M=0.0;f=i;i=i+224|0;h=f|0;j=f+48|0;k=f+96|0;l=f+160|0;m=b+1056|0;n=j;anx(j,d|0,b+40|0);o=+g[b+88>>2];p=+g[b+92>>2];q=+g[b+96>>2];r=+g[d>>2]*o+ +g[d+4>>2]*p+ +g[d+8>>2]*q+ +g[d+48>>2];s=+g[d+16>>2]*o+ +g[d+20>>2]*p+ +g[d+24>>2]*q+ +g[d+52>>2];t=+g[d+32>>2]*o+ +g[d+36>>2]*p+ +g[d+40>>2]*q+ +g[d+56>>2];d=k+48|0;u=k|0;do{u=u+16|0;}while((u|0)!=(d|0));d=k;c[d>>2]=c[n>>2];c[d+4>>2]=c[n+4>>2];c[d+8>>2]=c[n+8>>2];c[d+12>>2]=c[n+12>>2];n=k+16|0;u=j+16|0;c[n>>2]=c[u>>2];c[n+4>>2]=c[u+4>>2];c[n+8>>2]=c[u+8>>2];c[n+12>>2]=c[u+12>>2];u=k+32|0;v=j+32|0;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];g[k+48>>2]=r;g[k+52>>2]=s;g[k+56>>2]=t;g[k+60>>2]=0.0;v=m;c[v>>2]=c[d>>2];c[v+4>>2]=c[d+4>>2];c[v+8>>2]=c[d+8>>2];c[v+12>>2]=c[d+12>>2];d=b+1072|0;c[d>>2]=c[n>>2];c[d+4>>2]=c[n+4>>2];c[d+8>>2]=c[n+8>>2];c[d+12>>2]=c[n+12>>2];n=b+1088|0;c[n>>2]=c[u>>2];c[n+4>>2]=c[u+4>>2];c[n+8>>2]=c[u+8>>2];c[n+12>>2]=c[u+12>>2];u=b+1104|0;n=k+48|0;c[u>>2]=c[n>>2];c[u+4>>2]=c[n+4>>2];c[u+8>>2]=c[n+8>>2];c[u+12>>2]=c[n+12>>2];n=b+1120|0;u=h;anx(h,e|0,b+104|0);t=+g[b+152>>2];s=+g[b+156>>2];r=+g[b+160>>2];q=+g[e>>2]*t+ +g[e+4>>2]*s+ +g[e+8>>2]*r+ +g[e+48>>2];p=+g[e+16>>2]*t+ +g[e+20>>2]*s+ +g[e+24>>2]*r+ +g[e+52>>2];o=+g[e+32>>2]*t+ +g[e+36>>2]*s+ +g[e+40>>2]*r+ +g[e+56>>2];e=l+48|0;k=l|0;do{k=k+16|0;}while((k|0)!=(e|0));e=l;c[e>>2]=c[u>>2];c[e+4>>2]=c[u+4>>2];c[e+8>>2]=c[u+8>>2];c[e+12>>2]=c[u+12>>2];u=l+16|0;k=h+16|0;c[u>>2]=c[k>>2];c[u+4>>2]=c[k+4>>2];c[u+8>>2]=c[k+8>>2];c[u+12>>2]=c[k+12>>2];k=l+32|0;d=h+32|0;c[k>>2]=c[d>>2];c[k+4>>2]=c[d+4>>2];c[k+8>>2]=c[d+8>>2];c[k+12>>2]=c[d+12>>2];g[l+48>>2]=q;g[l+52>>2]=p;g[l+56>>2]=o;g[l+60>>2]=0.0;d=n;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=b+1136|0;c[e>>2]=c[u>>2];c[e+4>>2]=c[u+4>>2];c[e+8>>2]=c[u+8>>2];c[e+12>>2]=c[u+12>>2];u=b+1152|0;c[u>>2]=c[k>>2];c[u+4>>2]=c[k+4>>2];c[u+8>>2]=c[k+8>>2];c[u+12>>2]=c[k+12>>2];k=b+1168|0;u=l+48|0;c[k>>2]=c[u>>2];c[k+4>>2]=c[u+4>>2];c[k+8>>2]=c[u+8>>2];c[k+12>>2]=c[u+12>>2];o=+g[b+1168>>2]- +g[b+1104>>2];p=+g[b+1172>>2]- +g[b+1108>>2];q=+g[b+1176>>2]- +g[b+1112>>2];r=+g[b+1076>>2];s=+g[b+1096>>2];t=+g[b+1080>>2];w=+g[b+1092>>2];x=r*s-t*w;y=+g[b+1088>>2];z=+g[b+1072>>2];A=t*y-s*z;B=w*z-r*y;C=+g[b+1056>>2];D=+g[b+1060>>2];E=+g[b+1064>>2];F=1.0/(x*C+D*A+B*E);G=x*F;x=F*(w*E-s*D);H=F*(t*D-r*E);I=A*F;A=F*(s*C-y*E);J=F*(z*E-t*C);K=B*F;B=F*(y*D-w*C);w=F*(r*C-z*D);D=G*o+x*p+H*q;z=o*I+p*A+J*q;C=o*K+B*p+w*q;g[b+1248>>2]=D;g[b+1252>>2]=z;g[b+1256>>2]=C;g[b+1260>>2]=0.0;g[b+832>>2]=D;q=+g[b+672>>2];p=+g[b+688>>2];do{if(q>p){c[b+848>>2]=0;g[b+816>>2]=0.0}else{if(q>D){c[b+848>>2]=2;g[b+816>>2]=D-q;break}u=b+848|0;if(p<D){c[u>>2]=1;g[b+816>>2]=D-p;break}else{c[u>>2]=0;g[b+816>>2]=0.0;break}}}while(0);g[b+836>>2]=z;p=+g[b+676>>2];D=+g[b+692>>2];do{if(p>D){c[b+852>>2]=0;g[b+820>>2]=0.0}else{if(p>z){c[b+852>>2]=2;g[b+820>>2]=z-p;break}u=b+852|0;if(D<z){c[u>>2]=1;g[b+820>>2]=z-D;break}else{c[u>>2]=0;g[b+820>>2]=0.0;break}}}while(0);g[b+840>>2]=C;D=+g[b+680>>2];z=+g[b+696>>2];do{if(D>z){c[b+856>>2]=0;g[b+824>>2]=0.0}else{if(D>C){c[b+856>>2]=2;g[b+824>>2]=C-D;break}u=b+856|0;if(z<C){c[u>>2]=1;g[b+824>>2]=C-z;break}else{c[u>>2]=0;g[b+824>>2]=0.0;break}}}while(0);z=+g[b+1120>>2];C=+g[b+1136>>2];D=+g[b+1152>>2];p=z*G+C*x+H*D;q=+g[b+1124>>2];o=+g[b+1140>>2];r=+g[b+1156>>2];F=G*q+x*o+H*r;H=z*I+C*A+J*D;x=I*q+A*o+J*r;J=z*K+B*C+w*D;A=K*q+B*o+w*r;r=K*+g[b+1128>>2]+B*+g[b+1144>>2]+w*+g[b+1160>>2];u=b+1184|0;do{if(J<1.0){if(J>-1.0){g[u>>2]=+Y(+(-0.0-A),+r);w=J<-1.0?-1.0:J;g[b+1188>>2]=+W(+(w>1.0?1.0:w));g[b+1192>>2]=+Y(+(-0.0-H),+p);break}else{g[u>>2]=-0.0- +Y(+F,+x);g[b+1188>>2]=-1.5707963705062866;g[b+1192>>2]=0.0;break}}else{g[u>>2]=+Y(+F,+x);g[b+1188>>2]=1.5707963705062866;g[b+1192>>2]=0.0}}while(0);x=D*t-C*s;F=z*s-D*E;p=C*E-z*t;g[b+1228>>2]=0.0;H=s*F-t*p;J=E*p-s*x;s=t*x-E*F;g[b+1212>>2]=0.0;E=C*p-D*F;t=D*x-z*p;D=z*F-C*x;g[b+1244>>2]=0.0;C=1.0/+Q(+(H*H+J*J+s*s));g[b+1200>>2]=H*C;g[b+1204>>2]=J*C;g[b+1208>>2]=s*C;C=1.0/+Q(+(x*x+F*F+p*p));g[b+1216>>2]=x*C;g[b+1220>>2]=F*C;g[b+1224>>2]=p*C;C=1.0/+Q(+(E*E+t*t+D*D));g[b+1232>>2]=E*C;g[b+1236>>2]=t*C;g[b+1240>>2]=D*C;if((a[b+1293|0]&1)==0){i=f;return}C=+g[(c[b+24>>2]|0)+336>>2];D=+g[(c[b+28>>2]|0)+336>>2];if(C<1.1920928955078125e-7){L=1}else{L=D<1.1920928955078125e-7|0}a[b+1272|0]=L;t=C+D;if(t>0.0){C=D/t;g[b+1264>>2]=C;M=C}else{g[b+1264>>2]=.5;M=.5}g[b+1268>>2]=1.0-M;i=f;return}function ao_(a,b,d,e,f,h,j,k,l){a=a|0;b=b|0;d=d|0;e=+e;f=+f;h=+h;j=+j;k=+k;l=+l;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;m=i;i=i+128|0;n=m|0;o=m+48|0;p=m+96|0;q=m+112|0;if((b|0)==0){i=m;return}r=c[a+24>>2]|0;g[n>>2]=+g[r+4>>2];g[n+4>>2]=+g[r+20>>2];g[n+8>>2]=+g[r+36>>2];g[n+12>>2]=0.0;g[n+16>>2]=+g[r+8>>2];g[n+20>>2]=+g[r+24>>2];g[n+24>>2]=+g[r+40>>2];g[n+28>>2]=0.0;g[n+32>>2]=+g[r+12>>2];g[n+36>>2]=+g[r+28>>2];g[n+40>>2]=+g[r+44>>2];g[n+44>>2]=0.0;s=c[a+28>>2]|0;g[o>>2]=+g[s+4>>2];g[o+4>>2]=+g[s+20>>2];g[o+8>>2]=+g[s+36>>2];g[o+12>>2]=0.0;g[o+16>>2]=+g[s+8>>2];g[o+20>>2]=+g[s+24>>2];g[o+24>>2]=+g[s+40>>2];g[o+28>>2]=0.0;g[o+32>>2]=+g[s+12>>2];g[o+36>>2]=+g[s+28>>2];g[o+40>>2]=+g[s+44>>2];g[o+44>>2]=0.0;t=f- +g[r+56>>2];f=h- +g[r+60>>2];g[p>>2]=e- +g[r+52>>2];g[p+4>>2]=t;g[p+8>>2]=f;g[p+12>>2]=0.0;f=k- +g[s+56>>2];k=l- +g[s+60>>2];g[q>>2]=j- +g[s+52>>2];g[q+4>>2]=f;g[q+8>>2]=k;g[q+12>>2]=0.0;anz(b,n,o,p,q,d,r+388|0,+g[r+336>>2],s+388|0,+g[s+336>>2]);i=m;return}function ao$(b,d){b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0,l=0;e=b+860+(d<<6)|0;f=b+860+(d<<6)+4|0;h=+ao0(+g[b+1184+(d<<2)>>2],+g[e>>2],+g[f>>2]);g[b+860+(d<<6)+52>>2]=h;i=+g[e>>2];j=+g[f>>2];do{if(i>j){c[b+860+(d<<6)+56>>2]=0;k=3614}else{if(i>h){c[b+860+(d<<6)+56>>2]=1;g[b+860+(d<<6)+48>>2]=h-i;break}f=b+860+(d<<6)+56|0;if(j<h){c[f>>2]=2;g[b+860+(d<<6)+48>>2]=h-j;break}else{c[f>>2]=0;k=3614;break}}}while(0);do{if((k|0)==3614){if((a[b+860+(d<<6)+44|0]&1)==0){l=0}else{break}return l|0}}while(0);l=1;return l|0}function ao0(a,b,c){a=+a;b=+b;c=+c;var d=0.0,e=0.0,f=0.0,g=0.0,h=0.0,i=0.0;if(b>=c){d=a;return+d}if(a<b){e=+ck(+(b-a),6.2831854820251465);do{if(e<-3.1415927410125732){f=e+6.2831854820251465}else{if(e<=3.1415927410125732){f=e;break}f=e-6.2831854820251465}}while(0);e=+P(+f);f=+ck(+(c-a),6.2831854820251465);do{if(f<-3.1415927410125732){g=f+6.2831854820251465}else{if(f<=3.1415927410125732){g=f;break}g=f-6.2831854820251465}}while(0);if(e<+P(+g)){d=a;return+d}d=a+6.2831854820251465;return+d}if(a<=c){d=a;return+d}g=+ck(+(a-c),6.2831854820251465);do{if(g<-3.1415927410125732){h=g+6.2831854820251465}else{if(g<=3.1415927410125732){h=g;break}h=g-6.2831854820251465}}while(0);g=+P(+h);h=+ck(+(a-b),6.2831854820251465);do{if(h<-3.1415927410125732){i=h+6.2831854820251465}else{if(h<=3.1415927410125732){i=h;break}i=h-6.2831854820251465}}while(0);if(+P(+i)>=g){d=a;return+d}d=a-6.2831854820251465;return+d}function ao1(b){b=b|0;var d=0,e=0,f=0,h=0,j=0.0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0;d=i;i=i+16|0;e=d|0;if((a[b+1300|0]&1)==0){i=d;return}g[b+920>>2]=0.0;g[b+984>>2]=0.0;g[b+1048>>2]=0.0;f=b+24|0;aDD(b+704|0,0,16);h=b+28|0;aoZ(b,(c[f>>2]|0)+4|0,(c[h>>2]|0)+4|0);ct[c[(c[b>>2]|0)+44>>2]&2047](b);j=+g[b+1276>>2];k=+g[b+1280>>2];l=+g[b+1284>>2];m=b+1292|0;n=e|0;o=e+4|0;p=e+8|0;q=e+12|0;if(+g[b+688>>2]>=+g[b+672>>2]){if((a[m]&1)==0){r=b+1152|0;s=b+1136|0;t=b+1120|0}else{r=b+1088|0;s=b+1072|0;t=b+1056|0}u=+g[r>>2];v=+g[s>>2];g[n>>2]=+g[t>>2];g[o>>2]=v;g[p>>2]=u;g[q>>2]=0.0;ao_(b,b+168|0,e,j,k,l,j,k,l)}if(+g[b+692>>2]>=+g[b+676>>2]){if((a[m]&1)==0){w=b+1156|0;x=b+1140|0;y=b+1124|0}else{w=b+1092|0;x=b+1076|0;y=b+1060|0}u=+g[w>>2];v=+g[x>>2];g[n>>2]=+g[y>>2];g[o>>2]=v;g[p>>2]=u;g[q>>2]=0.0;ao_(b,b+252|0,e,j,k,l,j,k,l)}if(+g[b+696>>2]>=+g[b+680>>2]){if((a[m]&1)==0){z=b+1160|0;A=b+1144|0;B=b+1128|0}else{z=b+1096|0;A=b+1080|0;B=b+1064|0}u=+g[z>>2];v=+g[A>>2];g[n>>2]=+g[B>>2];g[o>>2]=v;g[p>>2]=u;g[q>>2]=0.0;ao_(b,b+336|0,e,j,k,l,j,k,l)}q=e;e=0;do{B=b+860+(e<<6)|0;A=b+860+(e<<6)+4|0;l=+ao0(+g[b+1184+(e<<2)>>2],+g[B>>2],+g[A>>2]);g[b+860+(e<<6)+52>>2]=l;k=+g[B>>2];j=+g[A>>2];do{if(k>j){c[b+860+(e<<6)+56>>2]=0;C=3663}else{if(k>l){c[b+860+(e<<6)+56>>2]=1;g[b+860+(e<<6)+48>>2]=l-k;C=3664;break}A=b+860+(e<<6)+56|0;if(j<l){c[A>>2]=2;g[b+860+(e<<6)+48>>2]=l-j;C=3664;break}else{c[A>>2]=0;C=3663;break}}}while(0);if((C|0)==3663){C=0;if((a[b+860+(e<<6)+44|0]&1)!=0){C=3664}}do{if((C|0)==3664){C=0;A=b+1200+(e<<4)|0;c[q>>2]=c[A>>2];c[q+4>>2]=c[A+4>>2];c[q+8>>2]=c[A+8>>2];c[q+12>>2]=c[A+12>>2];A=b+420+(e*84|0)|0;if((A|0)==0){break}B=c[f>>2]|0;j=+g[B+4>>2];l=+g[B+20>>2];k=+g[B+36>>2];u=+g[B+8>>2];v=+g[B+24>>2];D=+g[B+40>>2];E=+g[B+12>>2];F=+g[B+28>>2];G=+g[B+44>>2];z=c[h>>2]|0;H=+g[z+4>>2];I=+g[z+20>>2];J=+g[z+36>>2];K=+g[z+8>>2];L=+g[z+24>>2];M=+g[z+40>>2];N=+g[z+12>>2];O=+g[z+28>>2];P=+g[z+44>>2];aDD(A|0,0,16);Q=+g[n>>2];R=+g[o>>2];S=+g[p>>2];T=j*Q+l*R+k*S;k=u*Q+v*R+D*S;D=E*Q+F*R+G*S;g[b+420+(e*84|0)+16>>2]=T;g[b+420+(e*84|0)+20>>2]=k;g[b+420+(e*84|0)+24>>2]=D;g[b+420+(e*84|0)+28>>2]=0.0;G=-0.0-Q;Q=-0.0-R;R=-0.0-S;S=H*G+I*Q+J*R;J=K*G+L*Q+M*R;M=N*G+O*Q+P*R;g[b+420+(e*84|0)+32>>2]=S;g[b+420+(e*84|0)+36>>2]=J;g[b+420+(e*84|0)+40>>2]=M;g[b+420+(e*84|0)+44>>2]=0.0;R=T*+g[B+388>>2];P=k*+g[B+392>>2];Q=D*+g[B+396>>2];g[b+420+(e*84|0)+48>>2]=R;g[b+420+(e*84|0)+52>>2]=P;g[b+420+(e*84|0)+56>>2]=Q;g[b+420+(e*84|0)+60>>2]=0.0;O=S*+g[z+388>>2];G=J*+g[z+392>>2];N=M*+g[z+396>>2];g[b+420+(e*84|0)+64>>2]=O;g[b+420+(e*84|0)+68>>2]=G;g[b+420+(e*84|0)+72>>2]=N;g[b+420+(e*84|0)+76>>2]=0.0;g[b+420+(e*84|0)+80>>2]=T*R+k*P+D*Q+(S*O+J*G+M*N)}}while(0);e=e+1|0;}while((e|0)<3);i=d;return}function ao2(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0;if((a[b+1300|0]&1)!=0){c[d>>2]=0;c[d+4>>2]=0;return}aoZ(b,(c[b+24>>2]|0)+4|0,(c[b+28>>2]|0)+4|0);e=d|0;c[e>>2]=0;f=d+4|0;c[f>>2]=6;if((c[b+848>>2]|0)==0){if((a[b+780|0]&1)==0){h=0;i=6}else{j=3684}}else{j=3684}if((j|0)==3684){c[e>>2]=1;c[f>>2]=5;h=1;i=5}if((c[b+852>>2]|0)==0){if((a[b+781|0]&1)==0){k=h;l=i}else{j=3698}}else{j=3698}if((j|0)==3698){d=h+1|0;c[e>>2]=d;h=i-1|0;c[f>>2]=h;k=d;l=h}if((c[b+856>>2]|0)==0){if((a[b+782|0]&1)==0){m=0}else{j=3701}}else{j=3701}if((j|0)==3701){c[e>>2]=k+1;c[f>>2]=l-1;m=0}do{l=b+860+(m<<6)|0;k=b+860+(m<<6)+4|0;n=+ao0(+g[b+1184+(m<<2)>>2],+g[l>>2],+g[k>>2]);g[b+860+(m<<6)+52>>2]=n;o=+g[l>>2];p=+g[k>>2];do{if(o>p){c[b+860+(m<<6)+56>>2]=0;j=3693}else{if(o>n){c[b+860+(m<<6)+56>>2]=1;g[b+860+(m<<6)+48>>2]=n-o;j=3694;break}k=b+860+(m<<6)+56|0;if(p<n){c[k>>2]=2;g[b+860+(m<<6)+48>>2]=n-p;j=3694;break}else{c[k>>2]=0;j=3693;break}}}while(0);if((j|0)==3693){j=0;if((a[b+860+(m<<6)+44|0]&1)!=0){j=3694}}if((j|0)==3694){j=0;c[e>>2]=(c[e>>2]|0)+1;c[f>>2]=(c[f>>2]|0)-1}m=m+1|0;}while((m|0)<3);return}function ao3(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[b+24>>2]|0;f=e+4|0;g=c[b+28>>2]|0;h=g+4|0;i=e+304|0;j=g+304|0;k=e+320|0;e=g+320|0;if((a[b+1293|0]&1)==0){g=ao5(b,d,0,f,h,i,j,k,e)|0;ao4(b,d,g,f,h,i,j,k,e)|0;return}else{g=ao4(b,d,0,f,h,i,j,k,e)|0;ao5(b,d,g,f,h,i,j,k,e)|0;return}}function ao4(b,d,e,f,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;n=i;i=i+16|0;o=n|0;p=o;q=b+1296|0;r=d+32|0;s=d+4|0;t=0;u=e;while(1){e=b+860+(t<<6)|0;if((c[b+860+(t<<6)+56>>2]|0)==0){if((a[b+860+(t<<6)+44|0]&1)==0){v=u}else{w=3713}}else{w=3713}if((w|0)==3713){w=0;x=b+1200+(t<<4)|0;c[p>>2]=c[x>>2];c[p+4>>2]=c[x+4>>2];c[p+8>>2]=c[x+8>>2];c[p+12>>2]=c[x+12>>2];x=c[q>>2]>>(t*3|0)+9;if((x&1|0)==0){g[b+860+(t<<6)+28>>2]=+g[c[r>>2]>>2]}if((x&2|0)==0){g[b+860+(t<<6)+36>>2]=+g[c[r>>2]>>2]}if((x&4|0)==0){g[b+860+(t<<6)+32>>2]=+g[s>>2]}v=(ao7(b,e,f,h,j,k,l,m,d,u,o,1,0)|0)+u|0}e=t+1|0;if((e|0)<3){t=e;u=v}else{break}}i=n;return v|0}function ao5(b,d,e,f,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;n=i;i=i+80|0;o=n|0;p=n+64|0;g[o+60>>2]=0.0;q=o+8|0;g[q>>2]=0.0;r=o+12|0;g[r>>2]=.10000000149011612;s=o+16|0;g[s>>2]=300.0;t=o|0;g[t>>2]=1.0;u=o+4|0;g[u>>2]=-1.0;v=o+28|0;g[v>>2]=0.0;w=o+32|0;g[w>>2]=.20000000298023224;x=o+36|0;g[x>>2]=0.0;y=o+40|0;g[y>>2]=0.0;z=o+20|0;g[z>>2]=1.0;A=o+24|0;g[A>>2]=.5;B=o+56|0;c[B>>2]=0;C=o+48|0;g[C>>2]=0.0;D=o+44|0;a[D]=0;E=o+52|0;F=b+724|0;G=b+720|0;H=p|0;I=p+4|0;J=p+8|0;K=p+12|0;L=b+1296|0;M=d+32|0;N=d+4|0;O=b+1293|0;P=0;Q=e;while(1){e=c[b+848+(P<<2)>>2]|0;R=a[b+780+P|0]&1;do{if((e|0)==0&R<<24>>24==0){S=Q}else{g[y>>2]=0.0;c[B>>2]=e;g[E>>2]=+g[b+832+(P<<2)>>2];g[C>>2]=+g[b+816+(P<<2)>>2];g[z>>2]=+g[F>>2];a[D]=R;g[u>>2]=+g[b+688+(P<<2)>>2];g[A>>2]=+g[G>>2];g[t>>2]=+g[b+672+(P<<2)>>2];g[s>>2]=0.0;g[r>>2]=+g[b+800+(P<<2)>>2];g[q>>2]=+g[b+784+(P<<2)>>2];g[H>>2]=+g[b+1056+(P<<2)>>2];g[I>>2]=+g[b+1072+(P<<2)>>2];g[J>>2]=+g[b+1088+(P<<2)>>2];g[K>>2]=0.0;T=c[L>>2]>>(P*3|0);if((T&1|0)==0){U=c[M>>2]|0}else{U=b+732+(P<<2)|0}g[v>>2]=+g[U>>2];if((T&2|0)==0){V=c[M>>2]|0}else{V=b+764+(P<<2)|0}g[x>>2]=+g[V>>2];if((T&4|0)==0){W=N}else{W=b+748+(P<<2)|0}g[w>>2]=+g[W>>2];if((a[O]&1)==0){S=(ao7(b,o,f,h,j,k,l,m,d,Q,p,0,0)|0)+Q|0;break}T=P+1|0;if((c[b+860+(((T|0)==3?0:T)<<6)+56>>2]|0)==0){X=1}else{X=(c[b+860+(((P+2|0)%3|0)<<6)+56>>2]|0)==0|0}S=(ao7(b,o,f,h,j,k,l,m,d,Q,p,0,X)|0)+Q|0}}while(0);R=P+1|0;if((R|0)<3){P=R;Q=S}else{break}}i=n;return S|0}function ao6(a){a=a|0;return}function ao7(b,d,e,f,h,i,j,k,l,m,n,o,p){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0,D=0.0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,ab=0,ac=0,ad=0.0,ae=0.0,af=0.0;q=aa(c[l+24>>2]|0,m)|0;m=(a[d+44|0]&1)==0;r=c[d+56>>2]|0;if(m&(r|0)==0){s=0;return s|0}t=(o|0)!=0;o=l+12|0;u=c[(t?o:l+8|0)>>2]|0;if(t){v=c[l+20>>2]|0}else{v=0}w=n|0;g[u+(q<<2)>>2]=+g[w>>2];x=n+4|0;y=q+1|0;g[u+(y<<2)>>2]=+g[x>>2];z=n+8|0;n=q+2|0;g[u+(n<<2)>>2]=+g[z>>2];do{if(t){g[v+(q<<2)>>2]=-0.0- +g[w>>2];g[v+(y<<2)>>2]=-0.0- +g[x>>2];g[v+(n<<2)>>2]=-0.0- +g[z>>2]}else{u=b+1168|0;A=+g[u>>2];if((a[b+1293|0]&1)==0){B=A- +g[e+48>>2];C=b+1172|0;D=+g[C>>2]- +g[e+52>>2];E=b+1176|0;F=+g[E>>2]- +g[e+56>>2];G=+g[z>>2];H=+g[x>>2];I=+g[w>>2];g[(c[o>>2]|0)+(q<<2)>>2]=D*G-F*H;g[(c[o>>2]|0)+(y<<2)>>2]=F*I-B*G;g[(c[o>>2]|0)+(n<<2)>>2]=B*H-D*I;I=+g[u>>2]- +g[f+48>>2];D=+g[C>>2]- +g[f+52>>2];H=+g[E>>2]- +g[f+56>>2];B=+g[z>>2];G=+g[x>>2];F=+g[w>>2];E=l+20|0;g[(c[E>>2]|0)+(q<<2)>>2]=-0.0-(D*B-H*G);g[(c[E>>2]|0)+(y<<2)>>2]=-0.0-(H*F-I*B);g[(c[E>>2]|0)+(n<<2)>>2]=-0.0-(I*G-D*F);break}F=A- +g[f+48>>2];A=+g[b+1172>>2]- +g[f+52>>2];D=+g[b+1176>>2]- +g[f+56>>2];G=+g[w>>2];I=+g[x>>2];B=+g[z>>2];H=F*G+A*I+D*B;J=G*H;K=I*H;L=B*H;H=+g[b+1104>>2]- +g[e+48>>2];M=+g[b+1108>>2]- +g[e+52>>2];N=+g[b+1112>>2]- +g[e+56>>2];O=G*H+I*M+B*N;P=G*O;Q=I*O;R=B*O;O=+g[d+52>>2]- +g[d+48>>2];S=P+G*O-J;T=Q+I*O-K;U=R+B*O-L;O=+g[b+1264>>2];V=H-P+O*S;P=M-Q+O*T;Q=N-R+O*U;R=+g[b+1268>>2];N=F-J-R*S;S=A-K-R*T;T=D-L-R*U;U=B*P-I*Q;L=G*Q-B*V;Q=I*V-G*P;P=B*S-I*T;V=G*T-B*N;B=I*N-G*S;if((a[b+1272|0]&1)!=0&(p|0)==0){W=O*U;X=O*L;Y=O*Q;Z=R*P;_=R*V;$=R*B}else{W=U;X=L;Y=Q;Z=P;_=V;$=B}g[(c[o>>2]|0)+(q<<2)>>2]=W;g[(c[o>>2]|0)+(y<<2)>>2]=X;g[(c[o>>2]|0)+(n<<2)>>2]=Y;E=l+20|0;g[(c[E>>2]|0)+(q<<2)>>2]=-0.0-Z;g[(c[E>>2]|0)+(y<<2)>>2]=-0.0-_;g[(c[E>>2]|0)+(n<<2)>>2]=-0.0-$}}while(0);n=(r|0)!=0;do{if(n){if(+g[d>>2]!=+g[d+4>>2]){ab=3753;break}y=l+28|0;g[(c[y>>2]|0)+(q<<2)>>2]=0.0;ac=y}else{ab=3753}}while(0);do{if((ab|0)==3753){y=l+28|0;g[(c[y>>2]|0)+(q<<2)>>2]=0.0;if(!m){g[(c[l+32>>2]|0)+(q<<2)>>2]=+g[d+28>>2];if(n){ac=y;break}$=+g[d+8>>2];if(t){ad=$}else{ad=-0.0-$}_=+g[d+52>>2];Z=+g[d>>2];Y=+g[d+4>>2];X=+g[l>>2]*+g[d+32>>2];L4236:do{if(Z>Y){ae=1.0}else{if(Z==Y){ae=0.0;break}W=ad/X;if(W<0.0){do{if(_>=Z){if(Z-W<=_){break}ae=(Z-_)/W;break L4236}}while(0);ae=_<Z?0.0:1.0;break}if(W<=0.0){ae=0.0;break}do{if(_<=Y){if(Y-W>=_){break}ae=(Y-_)/W;break L4236}}while(0);ae=_>Y?0.0:1.0}}while(0);o=(c[y>>2]|0)+(q<<2)|0;g[o>>2]=ae*$+ +g[o>>2];o=d+12|0;g[(c[l+36>>2]|0)+(q<<2)>>2]=-0.0- +g[o>>2];g[(c[l+40>>2]|0)+(q<<2)>>2]=+g[o>>2]}if(n){ac=y;break}else{s=1}return s|0}}while(0);ae=+g[l>>2]*+g[d+32>>2];if(t){n=(c[ac>>2]|0)+(q<<2)|0;g[n>>2]=+g[d+48>>2]*(-0.0-ae)+ +g[n>>2]}else{n=(c[ac>>2]|0)+(q<<2)|0;g[n>>2]=ae*+g[d+48>>2]+ +g[n>>2]}g[(c[l+32>>2]|0)+(q<<2)>>2]=+g[d+36>>2];if(+g[d>>2]==+g[d+4>>2]){g[(c[l+36>>2]|0)+(q<<2)>>2]=-3.4028234663852886e+38;g[(c[l+40>>2]|0)+(q<<2)>>2]=3.4028234663852886e+38;s=1;return s|0}n=(r|0)==1;r=(c[l+36>>2]|0)+(q<<2)|0;if(n){g[r>>2]=0.0;g[(c[l+40>>2]|0)+(q<<2)>>2]=3.4028234663852886e+38}else{g[r>>2]=-3.4028234663852886e+38;g[(c[l+40>>2]|0)+(q<<2)>>2]=0.0}ae=+g[d+40>>2];if(ae<=0.0){s=1;return s|0}if(t){ad=+g[w>>2];Y=+g[x>>2];_=+g[z>>2];af=+g[j>>2]*ad+ +g[j+4>>2]*Y+ +g[j+8>>2]*_-(ad*+g[k>>2]+Y*+g[k+4>>2]+_*+g[k+8>>2])}else{_=+g[w>>2];Y=+g[x>>2];ad=+g[z>>2];af=+g[h>>2]*_+ +g[h+4>>2]*Y+ +g[h+8>>2]*ad-(_*+g[i>>2]+Y*+g[i+4>>2]+ad*+g[i+8>>2])}if(n){if(af>=0.0){s=1;return s|0}ad=af*(-0.0-ae);n=(c[ac>>2]|0)+(q<<2)|0;if(ad<=+g[n>>2]){s=1;return s|0}g[n>>2]=ad;s=1;return s|0}else{if(af<=0.0){s=1;return s|0}ad=af*(-0.0-ae);n=(c[ac>>2]|0)+(q<<2)|0;if(ad>=+g[n>>2]){s=1;return s|0}g[n>>2]=ad;s=1;return s|0}return 0}function ao8(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0.0;b=+g[(c[a+24>>2]|0)+336>>2];d=+g[(c[a+28>>2]|0)+336>>2];if(d==0.0){e=1.0}else{e=b/(b+d)}d=1.0-e;b=e*+g[a+1108>>2]+d*+g[a+1172>>2];f=e*+g[a+1112>>2]+d*+g[a+1176>>2];g[a+1276>>2]=e*+g[a+1104>>2]+d*+g[a+1168>>2];g[a+1280>>2]=b;g[a+1284>>2]=f;g[a+1288>>2]=0.0;return}function ao9(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0,h=0;if(e>>>0<3){if((b|0)==3){g[a+732+(e<<2)>>2]=d;f=a+1296|0;c[f>>2]=c[f>>2]|1<<(e*3|0);return}else if((b|0)==4){g[a+764+(e<<2)>>2]=d;f=a+1296|0;c[f>>2]=c[f>>2]|2<<(e*3|0);return}else if((b|0)==2){g[a+748+(e<<2)>>2]=d;f=a+1296|0;c[f>>2]=c[f>>2]|4<<(e*3|0);return}else{return}}f=e-3|0;if(f>>>0>=3){return}if((b|0)==2){g[a+860+(f<<6)+32>>2]=d;h=a+1296|0;c[h>>2]=c[h>>2]|4<<(e*3|0);return}else if((b|0)==3){g[a+860+(f<<6)+28>>2]=d;h=a+1296|0;c[h>>2]=c[h>>2]|1<<(e*3|0);return}else if((b|0)==4){g[a+860+(f<<6)+36>>2]=d;f=a+1296|0;c[f>>2]=c[f>>2]|2<<(e*3|0);return}else{return}}function apa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0;do{if(c>>>0<3){if((b|0)==2){d=+g[a+748+(c<<2)>>2];break}else if((b|0)==4){d=+g[a+764+(c<<2)>>2];break}else if((b|0)==3){d=+g[a+732+(c<<2)>>2];break}else{d=0.0;break}}else{e=c-3|0;if(e>>>0>=3){d=0.0;break}if((b|0)==3){d=+g[a+860+(e<<6)+28>>2];break}else if((b|0)==4){d=+g[a+860+(e<<6)+36>>2];break}else if((b|0)==2){d=+g[a+860+(e<<6)+32>>2];break}else{d=0.0;break}}}while(0);return+d}function apb(b,d,e,f,h,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0.0,o=0.0,p=0.0;aoZ(b,e,f);l=b+860|0;m=b+864|0;n=+ao0(+g[b+1184>>2],+g[l>>2],+g[m>>2]);g[b+912>>2]=n;o=+g[l>>2];p=+g[m>>2];do{if(o>p){c[b+916>>2]=0}else{if(o>n){c[b+916>>2]=1;g[b+908>>2]=n-o;break}m=b+916|0;if(p<n){c[m>>2]=2;g[b+908>>2]=n-p;break}else{c[m>>2]=0;break}}}while(0);m=b+924|0;l=b+928|0;p=+ao0(+g[b+1188>>2],+g[m>>2],+g[l>>2]);g[b+976>>2]=p;n=+g[m>>2];o=+g[l>>2];do{if(n>o){c[b+980>>2]=0}else{if(n>p){c[b+980>>2]=1;g[b+972>>2]=p-n;break}l=b+980|0;if(o<p){c[l>>2]=2;g[b+972>>2]=p-o;break}else{c[l>>2]=0;break}}}while(0);l=b+988|0;m=b+992|0;o=+ao0(+g[b+1192>>2],+g[l>>2],+g[m>>2]);g[b+1040>>2]=o;p=+g[l>>2];n=+g[m>>2];do{if(p>n){c[b+1044>>2]=0}else{if(p>o){c[b+1044>>2]=1;g[b+1036>>2]=o-p;break}m=b+1044|0;if(n<o){c[m>>2]=2;g[b+1036>>2]=o-n;break}else{c[m>>2]=0;break}}}while(0);if((a[b+1293|0]&1)==0){m=ao5(b,d,0,e,f,h,i,j,k)|0;ao4(b,d,m,e,f,h,i,j,k)|0;return}else{m=ao4(b,d,0,e,f,h,i,j,k)|0;ao5(b,d,m,e,f,h,i,j,k)|0;return}}function apc(a){a=a|0;if((a|0)==0){return}aDB(a);return}function apd(a){a=a|0;return 244}function ape(a){a=a|0;return}function apf(a){a=a|0;return 340}function apg(a){a=a|0;return}function aph(b,d,e){b=b|0;d=d|0;e=e|0;aq3(b|0,d,e)|0;g[d+44>>2]=+g[b+40>>2];g[d+48>>2]=+g[b+44>>2];g[d+52>>2]=+g[b+48>>2];g[d+56>>2]=+g[b+52>>2];g[d+60>>2]=+g[b+56>>2];g[d+64>>2]=+g[b+60>>2];g[d+68>>2]=+g[b+64>>2];g[d+72>>2]=+g[b+68>>2];g[d+76>>2]=+g[b+72>>2];g[d+80>>2]=+g[b+76>>2];g[d+84>>2]=+g[b+80>>2];g[d+88>>2]=+g[b+84>>2];g[d+92>>2]=+g[b+88>>2];g[d+96>>2]=+g[b+92>>2];g[d+100>>2]=+g[b+96>>2];g[d+104>>2]=+g[b+100>>2];g[d+108>>2]=+g[b+104>>2];g[d+112>>2]=+g[b+108>>2];g[d+116>>2]=+g[b+112>>2];g[d+120>>2]=+g[b+116>>2];g[d+124>>2]=+g[b+120>>2];g[d+128>>2]=+g[b+124>>2];g[d+132>>2]=+g[b+128>>2];g[d+136>>2]=+g[b+132>>2];g[d+140>>2]=+g[b+136>>2];g[d+144>>2]=+g[b+140>>2];g[d+148>>2]=+g[b+144>>2];g[d+152>>2]=+g[b+148>>2];g[d+156>>2]=+g[b+152>>2];g[d+160>>2]=+g[b+156>>2];g[d+164>>2]=+g[b+160>>2];g[d+168>>2]=+g[b+164>>2];g[d+220>>2]=+g[b+860>>2];g[d+204>>2]=+g[b+864>>2];g[d+188>>2]=+g[b+672>>2];g[d+172>>2]=+g[b+688>>2];g[d+224>>2]=+g[b+924>>2];g[d+208>>2]=+g[b+928>>2];g[d+192>>2]=+g[b+676>>2];g[d+176>>2]=+g[b+692>>2];g[d+228>>2]=+g[b+988>>2];g[d+212>>2]=+g[b+992>>2];g[d+196>>2]=+g[b+680>>2];g[d+180>>2]=+g[b+696>>2];c[d+236>>2]=a[b+1292|0]&1;c[d+240>>2]=a[b+1293|0]&1;return 17808}function api(b,d){b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0;e=d|0;f=d+48|0;if((a[b+1301|0]&1)!=0){h=(+g[b+1248>>2]- +g[b+1308>>2])*+g[b+1332>>2];g[b+784>>2]=h*(+g[e>>2]*+g[b+1356>>2]/+(c[f>>2]|0));i=+P(+h);g[b+800>>2]=i/+g[e>>2]}if((a[b+1302|0]&1)!=0){i=(+g[b+1252>>2]- +g[b+1312>>2])*+g[b+1336>>2];g[b+788>>2]=i*(+g[e>>2]*+g[b+1360>>2]/+(c[f>>2]|0));h=+P(+i);g[b+804>>2]=h/+g[e>>2]}if((a[b+1303|0]&1)!=0){h=(+g[b+1256>>2]- +g[b+1316>>2])*+g[b+1340>>2];g[b+792>>2]=h*(+g[e>>2]*+g[b+1364>>2]/+(c[f>>2]|0));i=+P(+h);g[b+808>>2]=i/+g[e>>2]}if((a[b+1304|0]&1)!=0){i=+g[b+1344>>2]*(-0.0-(+g[b+1184>>2]- +g[b+1320>>2]));g[b+868>>2]=i*(+g[e>>2]*+g[b+1368>>2]/+(c[f>>2]|0));h=+P(+i);g[b+872>>2]=h/+g[e>>2]}if((a[b+1305|0]&1)!=0){h=+g[b+1348>>2]*(-0.0-(+g[b+1188>>2]- +g[b+1324>>2]));g[b+932>>2]=h*(+g[e>>2]*+g[b+1372>>2]/+(c[f>>2]|0));i=+P(+h);g[b+936>>2]=i/+g[e>>2]}if((a[b+1306|0]&1)==0){j=b;ao3(j,d);return}i=+g[b+1352>>2]*(-0.0-(+g[b+1192>>2]- +g[b+1328>>2]));g[b+996>>2]=i*(+g[e>>2]*+g[b+1376>>2]/+(c[f>>2]|0));h=+P(+i);g[b+1e3>>2]=h/+g[e>>2];j=b;ao3(j,d);return}function apj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;e=+g[b>>2];f=+g[b+4>>2];h=+g[b+8>>2];i=1.0/+Q(+(e*e+f*f+h*h));j=e*i;e=f*i;f=h*i;i=+g[d>>2];h=+g[d+4>>2];k=+g[d+8>>2];l=1.0/+Q(+(i*i+h*h+k*k));m=i*l;i=h*l;h=k*l;l=f*i-e*h;k=j*h-f*m;n=e*m-j*i;d=c[a+24>>2]|0;o=+g[d+4>>2];p=+g[d+20>>2];q=+g[d+36>>2];r=+g[d+8>>2];s=+g[d+24>>2];t=+g[d+40>>2];u=+g[d+12>>2];v=+g[d+28>>2];w=+g[d+44>>2];x=-0.0- +g[d+52>>2];y=-0.0- +g[d+56>>2];z=-0.0- +g[d+60>>2];g[a+40>>2]=o*l+k*p+n*q;g[a+44>>2]=m*o+i*p+h*q;g[a+48>>2]=j*o+e*p+f*q;g[a+52>>2]=0.0;g[a+56>>2]=l*r+k*s+n*t;g[a+60>>2]=m*r+i*s+h*t;g[a+64>>2]=j*r+e*s+f*t;g[a+68>>2]=0.0;g[a+72>>2]=l*u+k*v+n*w;g[a+76>>2]=m*u+i*v+h*w;g[a+80>>2]=j*u+e*v+f*w;g[a+84>>2]=0.0;g[a+88>>2]=o*0.0+p*0.0+q*0.0+(o*x+p*y+q*z);g[a+92>>2]=r*0.0+s*0.0+t*0.0+(r*x+s*y+t*z);g[a+96>>2]=u*0.0+v*0.0+w*0.0+(u*x+v*y+w*z);g[a+100>>2]=0.0;b=c[a+28>>2]|0;z=+g[b+4>>2];w=+g[b+20>>2];y=+g[b+36>>2];v=+g[b+8>>2];x=+g[b+24>>2];u=+g[b+40>>2];t=+g[b+12>>2];s=+g[b+28>>2];r=+g[b+44>>2];q=-0.0- +g[b+52>>2];p=-0.0- +g[b+56>>2];o=-0.0- +g[b+60>>2];g[a+104>>2]=l*z+k*w+n*y;g[a+108>>2]=m*z+i*w+h*y;g[a+112>>2]=j*z+e*w+f*y;g[a+116>>2]=0.0;g[a+120>>2]=l*v+k*x+n*u;g[a+124>>2]=m*v+i*x+h*u;g[a+128>>2]=j*v+e*x+f*u;g[a+132>>2]=0.0;g[a+136>>2]=l*t+k*s+n*r;g[a+140>>2]=m*t+i*s+h*r;g[a+144>>2]=j*t+e*s+f*r;g[a+148>>2]=0.0;g[a+152>>2]=z*0.0+w*0.0+y*0.0+(z*q+w*p+y*o);g[a+156>>2]=v*0.0+x*0.0+u*0.0+(v*q+x*p+u*o);g[a+160>>2]=t*0.0+s*0.0+r*0.0+(t*q+s*p+r*o);g[a+164>>2]=0.0;aoZ(a,d+4|0,b+4|0);return}function apk(a){a=a|0;if((a|0)==0){return}aDB(a|0);return}function apl(b,d,e){b=b|0;d=d|0;e=e|0;aph(b,d,e)|0;g[d+268>>2]=+g[b+1308>>2];g[d+316>>2]=+g[b+1356>>2];c[d+244>>2]=a[b+1301|0]&1;g[d+292>>2]=+g[b+1332>>2];g[d+272>>2]=+g[b+1312>>2];g[d+320>>2]=+g[b+1360>>2];c[d+248>>2]=a[b+1302|0]&1;g[d+296>>2]=+g[b+1336>>2];g[d+276>>2]=+g[b+1316>>2];g[d+324>>2]=+g[b+1364>>2];c[d+252>>2]=a[b+1303|0]&1;g[d+300>>2]=+g[b+1340>>2];g[d+280>>2]=+g[b+1320>>2];g[d+328>>2]=+g[b+1368>>2];c[d+256>>2]=a[b+1304|0]&1;g[d+304>>2]=+g[b+1344>>2];g[d+284>>2]=+g[b+1324>>2];g[d+332>>2]=+g[b+1372>>2];c[d+260>>2]=a[b+1305|0]&1;g[d+308>>2]=+g[b+1348>>2];g[d+288>>2]=+g[b+1328>>2];g[d+336>>2]=+g[b+1376>>2];c[d+264>>2]=a[b+1306|0]&1;g[d+312>>2]=+g[b+1352>>2];return 17808}function apm(a){a=a|0;if((a|0)==0){return}aDB(a|0);return}function apn(b,d,e,f,h,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0;c[b+4>>2]=4;c[b+8>>2]=-1;c[b+12>>2]=-1;g[b+16>>2]=3.4028234663852886e+38;a[b+20|0]=1;a[b+21|0]=0;c[b+24>>2]=d;c[b+28>>2]=e;g[b+32>>2]=0.0;g[b+36>>2]=.30000001192092896;c[b>>2]=23504;g[b+680>>2]=0.0;g[b+684>>2]=-1.0;g[b+688>>2]=.8999999761581421;g[b+692>>2]=.30000001192092896;g[b+696>>2]=1.0;g[b+700>>2]=0.0;g[b+704>>2]=0.0;a[b+708|0]=0;a[b+728|0]=0;a[b+729|0]=0;a[b+730|0]=0;a[b+731|0]=1;a[b+732|0]=k&1;c[b+740>>2]=0;e=b+592|0;l=f;c[e>>2]=c[l>>2];c[e+4>>2]=c[l+4>>2];c[e+8>>2]=c[l+8>>2];c[e+12>>2]=c[l+12>>2];m=+g[d+4>>2];n=+g[d+20>>2];o=+g[d+36>>2];l=i|0;p=+g[l>>2];e=i+4|0;q=+g[e>>2];f=i+8|0;r=+g[f>>2];s=m*p+n*q+o*r;do{if(s<.9999998807907104){if(s>-.9999998807907104){t=o*q-n*r;u=m*r-o*p;v=n*p-m*q;w=t;x=u;y=v;z=r*u-q*v;A=p*v-r*t;B=q*t-p*u;break}else{w=+g[d+8>>2];x=+g[d+24>>2];y=+g[d+40>>2];z=+g[d+12>>2];A=+g[d+28>>2];B=+g[d+44>>2];break}}else{w=+g[d+8>>2];x=+g[d+24>>2];y=+g[d+40>>2];z=-0.0- +g[d+12>>2];A=-0.0- +g[d+28>>2];B=-0.0- +g[d+44>>2]}}while(0);g[b+544>>2]=z;g[b+548>>2]=w;g[b+552>>2]=+g[l>>2];g[b+556>>2]=0.0;g[b+560>>2]=A;g[b+564>>2]=x;g[b+568>>2]=+g[e>>2];g[b+572>>2]=0.0;g[b+576>>2]=B;g[b+580>>2]=y;g[b+584>>2]=+g[f>>2];g[b+588>>2]=0.0;y=+g[e>>2];e=j+8|0;x=+g[e>>2];w=+g[f>>2];f=j+4|0;p=+g[f>>2];d=j|0;q=+g[d>>2];r=+g[l>>2];m=x*w+(y*p+q*r);do{if(m<-.9999998807907104){if(+P(+w)>.7071067690849304){n=1.0/+Q(+(y*y+w*w));C=0.0;D=n*(-0.0-w);E=y*n;F=0.0;break}else{n=1.0/+Q(+(y*y+r*r));C=n*(-0.0-y);D=r*n;E=0.0;F=0.0;break}}else{n=+Q(+((m+1.0)*2.0));o=1.0/n;C=(y*x-w*p)*o;D=(w*q-x*r)*o;E=(p*r-y*q)*o;F=n*.5}}while(0);y=z*F+B*D-A*E;r=A*F+z*E-B*C;w=B*F+A*C-z*D;m=-0.0-C;C=z*m-A*D-B*E;B=-0.0-D;D=-0.0-E;E=r*D+(F*y+C*m)-w*B;A=w*m+(F*r+C*B)-y*D;z=y*B+(F*w+C*D)-r*m;l=b+656|0;j=h;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];g[b+608>>2]=E;g[b+612>>2]=p*z-x*A;g[b+616>>2]=+g[d>>2];g[b+620>>2]=0.0;g[b+624>>2]=A;g[b+628>>2]=x*E-q*z;g[b+632>>2]=+g[f>>2];g[b+636>>2]=0.0;g[b+640>>2]=z;g[b+644>>2]=q*A-p*E;g[b+648>>2]=+g[e>>2];g[b+652>>2]=0.0;g[b+724>>2]=k?-1.0:1.0;return}function apo(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0;aq1(b|0,4,d);c[b>>2]=23504;g[b+680>>2]=0.0;g[b+684>>2]=-1.0;g[b+688>>2]=.8999999761581421;g[b+692>>2]=.30000001192092896;g[b+696>>2]=1.0;g[b+700>>2]=0.0;g[b+704>>2]=0.0;a[b+708|0]=0;a[b+728|0]=0;a[b+729|0]=0;a[b+730|0]=0;a[b+731|0]=1;a[b+732|0]=h&1;c[b+740>>2]=0;i=f|0;j=f+8|0;k=+g[j>>2];if(+P(+k)>.7071067690849304){l=+g[f+4>>2];m=k*k+l*l;n=1.0/+Q(+m);o=n*(-0.0-k);p=l*n;l=+g[i>>2];q=m*n;r=p*(-0.0-l);s=l*o;t=0.0;u=o;v=p}else{p=+g[i>>2];o=+g[f+4>>2];l=p*p+o*o;n=1.0/+Q(+l);m=n*(-0.0-o);o=p*n;q=o*(-0.0-k);r=k*m;s=l*n;t=m;u=o;v=0.0}w=b+592|0;x=e;c[w>>2]=c[x>>2];c[w+4>>2]=c[x+4>>2];c[w+8>>2]=c[x+8>>2];c[w+12>>2]=c[x+12>>2];x=f+4|0;g[b+544>>2]=t;g[b+548>>2]=q;g[b+552>>2]=+g[i>>2];g[b+556>>2]=0.0;g[b+560>>2]=u;g[b+564>>2]=r;g[b+568>>2]=+g[x>>2];g[b+572>>2]=0.0;g[b+576>>2]=v;g[b+580>>2]=s;g[b+584>>2]=+g[j>>2];g[b+588>>2]=0.0;s=+g[d+4>>2];r=+g[i>>2];q=+g[d+8>>2];o=+g[x>>2];m=+g[d+12>>2];n=+g[j>>2];l=s*r+q*o+m*n;k=+g[d+20>>2];p=+g[d+24>>2];y=+g[d+28>>2];z=r*k+o*p+n*y;A=+g[d+36>>2];B=+g[d+40>>2];C=+g[d+44>>2];D=r*A+o*B+n*C;E=r*l+o*z+n*D;do{if(E<-.9999998807907104){if(+P(+n)>.7071067690849304){F=1.0/+Q(+(o*o+n*n));G=0.0;H=F*(-0.0-n);I=o*F;J=0.0;break}else{F=1.0/+Q(+(r*r+o*o));G=F*(-0.0-o);H=r*F;I=0.0;J=0.0;break}}else{F=+Q(+((E+1.0)*2.0));K=1.0/F;G=(o*D-n*z)*K;H=(n*l-r*D)*K;I=(r*z-o*l)*K;J=F*.5}}while(0);o=t*J+v*H-u*I;r=u*J+t*I-v*G;n=v*J+u*G-t*H;E=-0.0-G;G=t*E-u*H-v*I;v=-0.0-H;H=-0.0-I;I=r*H+(J*o+G*E)-n*v;u=n*E+(J*r+G*v)-o*H;t=o*v+(J*n+G*H)-r*E;E=+g[e>>2];r=+g[e+4>>2];H=+g[e+8>>2];G=+g[d+56>>2]+(E*k+r*p+H*y);y=+g[d+60>>2]+(E*A+r*B+H*C);g[b+656>>2]=+g[d+52>>2]+(s*E+q*r+m*H);g[b+660>>2]=G;g[b+664>>2]=y;g[b+668>>2]=0.0;g[b+608>>2]=I;g[b+612>>2]=z*t-D*u;g[b+616>>2]=l;g[b+620>>2]=0.0;g[b+624>>2]=u;g[b+628>>2]=D*I-l*t;g[b+632>>2]=z;g[b+636>>2]=0.0;g[b+640>>2]=t;g[b+644>>2]=l*u-z*I;g[b+648>>2]=D;g[b+652>>2]=0.0;g[b+724>>2]=h?-1.0:1.0;return}function app(b){b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0,az=0,aA=0.0;d=i;i=i+176|0;e=d|0;f=d+48|0;h=d+96|0;j=d+144|0;k=d+160|0;if((a[b+730|0]&1)==0){i=d;return}g[b+32>>2]=0.0;g[b+736>>2]=0.0;if((a[b+728|0]&1)==0){l=b+24|0;m=c[l>>2]|0;n=+g[b+592>>2];o=+g[b+596>>2];p=+g[b+600>>2];q=+g[m+56>>2]+(n*+g[m+20>>2]+o*+g[m+24>>2]+p*+g[m+28>>2]);r=b+28|0;s=c[r>>2]|0;t=+g[b+656>>2];u=+g[b+660>>2];v=+g[b+664>>2];w=+g[s+56>>2]+(t*+g[s+20>>2]+u*+g[s+24>>2]+v*+g[s+28>>2]);x=+g[s+60>>2]+(t*+g[s+36>>2]+u*+g[s+40>>2]+v*+g[s+44>>2]);y=w-q;z=+g[m+52>>2]+(+g[m+4>>2]*n+ +g[m+8>>2]*o+ +g[m+12>>2]*p);A=+g[m+60>>2]+(n*+g[m+36>>2]+o*+g[m+40>>2]+p*+g[m+44>>2]);p=+g[s+52>>2]+(+g[s+4>>2]*t+ +g[s+8>>2]*u+ +g[s+12>>2]*v);v=p-z;u=x-A;t=v*v+y*y+u*u;if(t>1.1920928955078125e-7){o=1.0/+Q(+t);t=v*o;v=y*o;y=u*o;g[e>>2]=t;g[e+4>>2]=v;g[e+8>>2]=y;g[e+12>>2]=0.0;B=y;C=v;D=t}else{g[e>>2]=1.0;g[e+4>>2]=0.0;g[e+8>>2]=0.0;g[e+12>>2]=0.0;B=0.0;C=0.0;D=1.0}s=e+16|0;m=e+32|0;if(+P(+B)>.7071067690849304){t=B*B+C*C;v=1.0/+Q(+t);g[s>>2]=0.0;y=v*(-0.0-B);g[e+20>>2]=y;o=v*C;g[e+24>>2]=o;g[m>>2]=t*v;g[e+36>>2]=o*(-0.0-D);g[e+40>>2]=D*y}else{y=D*D+C*C;o=1.0/+Q(+y);v=o*(-0.0-C);g[s>>2]=v;C=o*D;g[e+20>>2]=C;g[e+24>>2]=0.0;g[m>>2]=C*(-0.0-B);g[e+36>>2]=B*v;g[e+40>>2]=y*o}m=f|0;s=f+4|0;E=f+8|0;F=f+12|0;G=f+16|0;H=f+20|0;I=f+24|0;J=f+28|0;K=f+32|0;L=f+36|0;M=f+40|0;N=f+44|0;O=h|0;R=h+4|0;S=h+8|0;T=h+12|0;U=h+16|0;V=h+20|0;W=h+24|0;X=h+28|0;Y=h+32|0;Z=h+36|0;_=h+40|0;$=h+44|0;aa=j|0;ab=j+4|0;ac=j+8|0;ad=j+12|0;ae=k|0;af=k+4|0;ag=k+8|0;ah=k+12|0;ai=0;do{aj=b+40+(ai*84|0)|0;if((aj|0)!=0){ak=c[l>>2]|0;g[m>>2]=+g[ak+4>>2];g[s>>2]=+g[ak+20>>2];g[E>>2]=+g[ak+36>>2];g[F>>2]=0.0;g[G>>2]=+g[ak+8>>2];g[H>>2]=+g[ak+24>>2];g[I>>2]=+g[ak+40>>2];g[J>>2]=0.0;g[K>>2]=+g[ak+12>>2];g[L>>2]=+g[ak+28>>2];g[M>>2]=+g[ak+44>>2];g[N>>2]=0.0;al=c[r>>2]|0;g[O>>2]=+g[al+4>>2];g[R>>2]=+g[al+20>>2];g[S>>2]=+g[al+36>>2];g[T>>2]=0.0;g[U>>2]=+g[al+8>>2];g[V>>2]=+g[al+24>>2];g[W>>2]=+g[al+40>>2];g[X>>2]=0.0;g[Y>>2]=+g[al+12>>2];g[Z>>2]=+g[al+28>>2];g[_>>2]=+g[al+44>>2];g[$>>2]=0.0;o=q- +g[ak+56>>2];y=A- +g[ak+60>>2];g[aa>>2]=z- +g[ak+52>>2];g[ab>>2]=o;g[ac>>2]=y;g[ad>>2]=0.0;y=w- +g[al+56>>2];o=x- +g[al+60>>2];g[ae>>2]=p- +g[al+52>>2];g[af>>2]=y;g[ag>>2]=o;g[ah>>2]=0.0;anz(aj,f,h,j,k,e+(ai<<4)|0,ak+388|0,+g[ak+336>>2],al+388|0,+g[al+336>>2])}ai=ai+1|0;}while((ai|0)<3)}ai=b+552|0;e=b+568|0;k=b+584|0;p=+g[ai>>2];x=+g[e>>2];w=+g[k>>2];if(+P(+w)>.7071067690849304){z=x*x+w*w;A=1.0/+Q(+z);q=A*(-0.0-w);o=x*A;am=z*A;an=o*(-0.0-p);ao=p*q;ap=0.0;aq=q;ar=o}else{o=p*p+x*x;q=1.0/+Q(+o);A=q*(-0.0-x);z=p*q;am=z*(-0.0-w);an=w*A;ao=o*q;ap=A;aq=z;ar=0.0}j=b+24|0;h=c[j>>2]|0;f=h+4|0;z=+g[f>>2];ah=h+8|0;A=+g[ah>>2];ag=h+12|0;q=+g[ag>>2];o=ap*z+aq*A+ar*q;af=h+20|0;y=+g[af>>2];ae=h+24|0;v=+g[ae>>2];ad=h+28|0;B=+g[ad>>2];C=ap*y+aq*v+ar*B;ac=h+36|0;D=+g[ac>>2];ab=h+40|0;t=+g[ab>>2];aa=h+44|0;u=+g[aa>>2];n=ap*D+aq*t+ar*u;ar=am*z+an*A+ao*q;aq=am*y+an*v+ao*B;ap=am*D+an*t+ao*u;ao=z*p+A*x+q*w;an=y*p+v*x+B*w;am=D*p+t*x+u*w;$=b+292|0;if(($|0)!=0){_=c[b+28>>2]|0;w=+g[_+4>>2];x=+g[_+20>>2];p=+g[_+36>>2];as=+g[_+8>>2];at=+g[_+24>>2];au=+g[_+40>>2];av=+g[_+12>>2];aw=+g[_+28>>2];ax=+g[_+44>>2];aDD($|0,0,16);ay=z*o+y*C+D*n;D=A*o+v*C+t*n;t=q*o+B*C+u*n;g[b+308>>2]=ay;g[b+312>>2]=D;g[b+316>>2]=t;g[b+320>>2]=0.0;u=-0.0-o;o=-0.0-C;C=-0.0-n;n=w*u+x*o+p*C;p=as*u+at*o+au*C;au=av*u+aw*o+ax*C;g[b+324>>2]=n;g[b+328>>2]=p;g[b+332>>2]=au;g[b+336>>2]=0.0;C=ay*+g[h+388>>2];ax=D*+g[h+392>>2];o=t*+g[h+396>>2];g[b+340>>2]=C;g[b+344>>2]=ax;g[b+348>>2]=o;g[b+352>>2]=0.0;aw=n*+g[_+388>>2];u=p*+g[_+392>>2];av=au*+g[_+396>>2];g[b+356>>2]=aw;g[b+360>>2]=u;g[b+364>>2]=av;g[b+368>>2]=0.0;g[b+372>>2]=ay*C+D*ax+t*o+(n*aw+p*u+au*av)}_=b+376|0;if((_|0)!=0){av=+g[f>>2];au=+g[af>>2];u=+g[ac>>2];p=+g[ah>>2];aw=+g[ae>>2];n=+g[ab>>2];o=+g[ag>>2];t=+g[ad>>2];ax=+g[aa>>2];$=c[b+28>>2]|0;D=+g[$+4>>2];C=+g[$+20>>2];ay=+g[$+36>>2];at=+g[$+8>>2];as=+g[$+24>>2];x=+g[$+40>>2];w=+g[$+12>>2];B=+g[$+28>>2];q=+g[$+44>>2];aDD(_|0,0,16);v=ar*av+aq*au+ap*u;u=ar*p+aq*aw+ap*n;n=ar*o+aq*t+ap*ax;g[b+392>>2]=v;g[b+396>>2]=u;g[b+400>>2]=n;g[b+404>>2]=0.0;ax=-0.0-ar;ar=-0.0-aq;aq=-0.0-ap;ap=D*ax+C*ar+ay*aq;ay=at*ax+as*ar+x*aq;x=w*ax+B*ar+q*aq;g[b+408>>2]=ap;g[b+412>>2]=ay;g[b+416>>2]=x;g[b+420>>2]=0.0;aq=v*+g[h+388>>2];q=u*+g[h+392>>2];ar=n*+g[h+396>>2];g[b+424>>2]=aq;g[b+428>>2]=q;g[b+432>>2]=ar;g[b+436>>2]=0.0;B=ap*+g[$+388>>2];ax=ay*+g[$+392>>2];w=x*+g[$+396>>2];g[b+440>>2]=B;g[b+444>>2]=ax;g[b+448>>2]=w;g[b+452>>2]=0.0;g[b+456>>2]=v*aq+u*q+n*ar+(ap*B+ay*ax+x*w)}$=b+460|0;if(($|0)==0){az=b+28|0}else{w=+g[f>>2];x=+g[af>>2];ax=+g[ac>>2];ay=+g[ah>>2];B=+g[ae>>2];ap=+g[ab>>2];ar=+g[ag>>2];n=+g[ad>>2];q=+g[aa>>2];aa=b+28|0;ad=c[aa>>2]|0;u=+g[ad+4>>2];aq=+g[ad+20>>2];v=+g[ad+36>>2];as=+g[ad+8>>2];at=+g[ad+24>>2];C=+g[ad+40>>2];D=+g[ad+12>>2];t=+g[ad+28>>2];o=+g[ad+44>>2];aDD($|0,0,16);aw=ao*w+an*x+am*ax;ax=ao*ay+an*B+am*ap;ap=ao*ar+an*n+am*q;g[b+476>>2]=aw;g[b+480>>2]=ax;g[b+484>>2]=ap;g[b+488>>2]=0.0;q=-0.0-ao;ao=-0.0-an;an=-0.0-am;am=u*q+aq*ao+v*an;v=as*q+at*ao+C*an;C=D*q+t*ao+o*an;g[b+492>>2]=am;g[b+496>>2]=v;g[b+500>>2]=C;g[b+504>>2]=0.0;an=aw*+g[h+388>>2];o=ax*+g[h+392>>2];ao=ap*+g[h+396>>2];g[b+508>>2]=an;g[b+512>>2]=o;g[b+516>>2]=ao;g[b+520>>2]=0.0;t=am*+g[ad+388>>2];q=v*+g[ad+392>>2];D=C*+g[ad+396>>2];g[b+524>>2]=t;g[b+528>>2]=q;g[b+532>>2]=D;g[b+536>>2]=0.0;g[b+540>>2]=aw*an+ax*o+ap*ao+(am*t+v*q+C*D);az=aa}g[b+716>>2]=0.0;D=+apy(b,h+4|0,(c[az>>2]|0)+4|0);g[b+720>>2]=D;h=b+700|0;g[h>>2]=0.0;aa=b+704|0;g[aa>>2]=0.0;ad=b+708|0;a[ad]=0;$=b+684|0;do{if(+g[$>>2]>=0.0){C=+ck(+(D- +g[b+680>>2]),6.2831854820251465);do{if(C<-3.1415927410125732){aA=C+6.2831854820251465}else{if(C<=3.1415927410125732){aA=C;break}aA=C-6.2831854820251465}}while(0);C=+g[$>>2];if(aA<-0.0-C){a[ad]=1;g[h>>2]=-0.0-(aA+C);g[aa>>2]=1.0;break}if(aA<=C){break}a[ad]=1;g[h>>2]=C-aA;g[aa>>2]=-1.0}}while(0);aa=c[j>>2]|0;aA=+g[ai>>2];D=+g[e>>2];C=+g[k>>2];q=aA*+g[aa+4>>2]+D*+g[aa+8>>2]+C*+g[aa+12>>2];v=aA*+g[aa+20>>2]+D*+g[aa+24>>2]+C*+g[aa+28>>2];t=aA*+g[aa+36>>2]+D*+g[aa+40>>2]+C*+g[aa+44>>2];k=c[az>>2]|0;g[b+712>>2]=1.0/(q*(q*+g[aa+256>>2]+v*+g[aa+272>>2]+t*+g[aa+288>>2])+v*(q*+g[aa+260>>2]+v*+g[aa+276>>2]+t*+g[aa+292>>2])+t*(q*+g[aa+264>>2]+v*+g[aa+280>>2]+t*+g[aa+296>>2])+(q*(q*+g[k+256>>2]+v*+g[k+272>>2]+t*+g[k+288>>2])+v*(q*+g[k+260>>2]+v*+g[k+276>>2]+t*+g[k+292>>2])+t*(q*+g[k+264>>2]+v*+g[k+280>>2]+t*+g[k+296>>2])));i=d;return}function apq(b,d){b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0,j=0,k=0,l=0,m=0.0,n=0.0;e=d|0;if((a[b+730|0]&1)!=0){c[e>>2]=0;c[d+4>>2]=0;return}c[e>>2]=5;f=d+4|0;c[f>>2]=1;h=+apy(b,(c[b+24>>2]|0)+4|0,(c[b+28>>2]|0)+4|0);g[b+720>>2]=h;d=b+700|0;g[d>>2]=0.0;i=b+704|0;g[i>>2]=0.0;j=b+708|0;a[j]=0;k=b+684|0;do{if(+g[k>>2]<0.0){l=3966}else{m=+ck(+(h- +g[b+680>>2]),6.2831854820251465);do{if(m<-3.1415927410125732){n=m+6.2831854820251465}else{if(m<=3.1415927410125732){n=m;break}n=m-6.2831854820251465}}while(0);m=+g[k>>2];if(n<-0.0-m){a[j]=1;g[d>>2]=-0.0-(n+m);g[i>>2]=1.0;break}if(n>m){a[j]=1;g[d>>2]=m-n;g[i>>2]=-1.0;break}else{if((a[j]&1)==0){l=3966;break}else{break}}}}while(0);do{if((l|0)==3966){if((a[b+729|0]&1)!=0){break}return}}while(0);c[e>>2]=(c[e>>2]|0)+1;c[f>>2]=(c[f>>2]|0)-1;return}function apr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=c[b+24>>2]|0;f=e+4|0;g=c[b+28>>2]|0;h=g+4|0;i=e+320|0;e=g+320|0;if((a[b+731|0]&1)==0){apx(b,d,f,h,i,e);return}else{aps(b,d,f,h,i,e);return}}function aps(b,d,e,f,h,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0,w=0.0,x=0,y=0.0,z=0,A=0.0,B=0,C=0.0,D=0.0,E=0.0,F=0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0,aq=0.0,ar=0,as=0.0,at=0.0,au=0.0;k=i;i=i+224|0;l=k|0;m=k+48|0;n=k+96|0;o=k+160|0;p=d+24|0;q=c[p>>2]|0;r=m;anx(m,e|0,b+544|0);s=+g[b+592>>2];t=+g[b+596>>2];u=+g[b+600>>2];v=e+48|0;w=+g[e>>2]*s+ +g[e+4>>2]*t+ +g[e+8>>2]*u+ +g[v>>2];x=e+52|0;y=+g[e+16>>2]*s+ +g[e+20>>2]*t+ +g[e+24>>2]*u+ +g[x>>2];z=e+56|0;A=+g[e+32>>2]*s+ +g[e+36>>2]*t+ +g[e+40>>2]*u+ +g[z>>2];e=n+48|0;B=n|0;do{B=B+16|0;}while((B|0)!=(e|0));e=n;c[e>>2]=c[r>>2];c[e+4>>2]=c[r+4>>2];c[e+8>>2]=c[r+8>>2];c[e+12>>2]=c[r+12>>2];r=n+16|0;e=m+16|0;c[r>>2]=c[e>>2];c[r+4>>2]=c[e+4>>2];c[r+8>>2]=c[e+8>>2];c[r+12>>2]=c[e+12>>2];e=n+32|0;r=m+32|0;c[e>>2]=c[r>>2];c[e+4>>2]=c[r+4>>2];c[e+8>>2]=c[r+8>>2];c[e+12>>2]=c[r+12>>2];r=n+48|0;g[r>>2]=w;e=n+52|0;g[e>>2]=y;m=n+56|0;g[m>>2]=A;g[n+60>>2]=0.0;B=l;anx(l,f|0,b+608|0);A=+g[b+656>>2];y=+g[b+660>>2];w=+g[b+664>>2];u=+g[f+48>>2];t=+g[f>>2]*A+ +g[f+4>>2]*y+ +g[f+8>>2]*w+u;s=+g[f+52>>2];C=+g[f+16>>2]*A+ +g[f+20>>2]*y+ +g[f+24>>2]*w+s;D=+g[f+56>>2];E=+g[f+32>>2]*A+ +g[f+36>>2]*y+ +g[f+40>>2]*w+D;f=o+48|0;F=o|0;do{F=F+16|0;}while((F|0)!=(f|0));f=o;c[f>>2]=c[B>>2];c[f+4>>2]=c[B+4>>2];c[f+8>>2]=c[B+8>>2];c[f+12>>2]=c[B+12>>2];B=o+16|0;f=l+16|0;c[B>>2]=c[f>>2];c[B+4>>2]=c[f+4>>2];c[B+8>>2]=c[f+8>>2];c[B+12>>2]=c[f+12>>2];f=o+32|0;B=l+32|0;c[f>>2]=c[B>>2];c[f+4>>2]=c[B+4>>2];c[f+8>>2]=c[B+8>>2];c[f+12>>2]=c[B+12>>2];g[o+48>>2]=t;g[o+52>>2]=C;g[o+56>>2]=E;g[o+60>>2]=0.0;w=+g[r>>2];y=t-w;A=+g[e>>2];G=C-A;H=+g[m>>2];I=E-H;J=+g[(c[b+24>>2]|0)+336>>2];K=+g[(c[b+28>>2]|0)+336>>2];if(J<1.1920928955078125e-7){L=1}else{L=K<1.1920928955078125e-7}M=J+K;if(M>0.0){N=K/M}else{N=.5}M=1.0-N;K=+g[n+8>>2];J=+g[n+24>>2];O=+g[n+40>>2];P=+g[o+8>>2];R=+g[o+24>>2];S=+g[o+40>>2];T=N*K+M*P;U=N*J+M*R;V=N*O+M*S;W=1.0/+Q(+(T*T+U*U+V*V));X=T*W;T=U*W;U=V*W;o=q<<1;W=t-u;u=C-s;s=E-D;D=W*X+u*T+s*U;E=X*D;C=T*D;t=U*D;D=W-E;W=u-C;u=s-t;s=w- +g[v>>2];w=A- +g[x>>2];A=H- +g[z>>2];H=X*s+T*w+U*A;V=X*H;Y=T*H;Z=U*H;H=s-V;s=w-Y;w=A-Z;A=V-E;E=Y-C;C=Z-t;t=H+N*A;Z=s+N*E;Y=w+N*C;V=D-M*A;A=W-M*E;E=u-M*C;C=N*D+M*H;H=N*W+M*s;s=N*u+M*w;w=C*C+H*H+s*s;if(w>1.1920928955078125e-7){u=1.0/+Q(+w);_=u*s;$=u*H;aa=C*u}else{_=+g[n+36>>2];$=+g[n+20>>2];aa=+g[n+4>>2]}u=T*_-U*$;C=U*aa-_*X;H=$*X-T*aa;n=d+12|0;g[c[n>>2]>>2]=Z*_-Y*$;g[(c[n>>2]|0)+4>>2]=Y*aa-t*_;g[(c[n>>2]|0)+8>>2]=t*$-Z*aa;z=d+20|0;g[c[z>>2]>>2]=-0.0-(A*_-E*$);g[(c[z>>2]|0)+4>>2]=-0.0-(E*aa-V*_);g[(c[z>>2]|0)+8>>2]=-0.0-(V*$-A*aa);s=Z*H-Y*C;w=Y*u-t*H;W=t*C-Z*u;D=A*H-E*C;ab=E*u-V*H;ac=V*C-A*u;do{if(L){if((a[b+708|0]&1)==0){ad=s;ae=w;af=W;ag=D;ah=ab;ai=ac;break}ad=N*s;ae=N*w;af=N*W;ag=M*D;ah=M*ab;ai=M*ac}else{ad=s;ae=w;af=W;ag=D;ah=ab;ai=ac}}while(0);g[(c[n>>2]|0)+(q<<2)>>2]=ad;x=q+1|0;g[(c[n>>2]|0)+(x<<2)>>2]=ae;v=q+2|0;g[(c[n>>2]|0)+(v<<2)>>2]=af;g[(c[z>>2]|0)+(q<<2)>>2]=-0.0-ag;g[(c[z>>2]|0)+(x<<2)>>2]=-0.0-ah;g[(c[z>>2]|0)+(v<<2)>>2]=-0.0-ai;ai=Z*U-Y*T;ah=Y*X-t*U;Y=t*T-Z*X;Z=A*U-E*T;t=E*X-V*U;E=V*T-A*X;if(L){aj=N*ai;ak=N*ah;al=N*Y;am=M*Z;an=M*t;ao=M*E}else{aj=ai;ak=ah;al=Y;am=Z;an=t;ao=E}g[(c[n>>2]|0)+(o<<2)>>2]=aj;L=o|1;g[(c[n>>2]|0)+(L<<2)>>2]=ak;m=o+2|0;g[(c[n>>2]|0)+(m<<2)>>2]=al;g[(c[z>>2]|0)+(o<<2)>>2]=-0.0-am;g[(c[z>>2]|0)+(L<<2)>>2]=-0.0-an;g[(c[z>>2]|0)+(m<<2)>>2]=-0.0-ao;e=d|0;r=d+4|0;ao=+g[e>>2]*+g[r>>2];if((a[b+728|0]&1)==0){B=d+8|0;g[c[B>>2]>>2]=aa;g[(c[B>>2]|0)+4>>2]=$;g[(c[B>>2]|0)+8>>2]=_;g[(c[B>>2]|0)+(q<<2)>>2]=u;g[(c[B>>2]|0)+(x<<2)>>2]=C;g[(c[B>>2]|0)+(v<<2)>>2]=H;g[(c[B>>2]|0)+(o<<2)>>2]=X;g[(c[B>>2]|0)+(L<<2)>>2]=T;g[(c[B>>2]|0)+(m<<2)>>2]=U;m=d+28|0;g[c[m>>2]>>2]=ao*(y*aa+G*$+I*_);g[(c[m>>2]|0)+(q<<2)>>2]=ao*(y*u+G*C+I*H);g[(c[m>>2]|0)+(o<<2)>>2]=ao*(y*X+G*T+I*U);ap=m}else{ap=d+28|0}m=q*3|0;o=q<<2;g[(c[n>>2]|0)+(m<<2)>>2]=aa;q=m+1|0;g[(c[n>>2]|0)+(q<<2)>>2]=$;B=m+2|0;g[(c[n>>2]|0)+(B<<2)>>2]=_;g[(c[n>>2]|0)+(o<<2)>>2]=u;L=o|1;g[(c[n>>2]|0)+(L<<2)>>2]=C;v=o|2;g[(c[n>>2]|0)+(v<<2)>>2]=H;g[(c[z>>2]|0)+(m<<2)>>2]=-0.0-aa;g[(c[z>>2]|0)+(q<<2)>>2]=-0.0-$;g[(c[z>>2]|0)+(B<<2)>>2]=-0.0-_;g[(c[z>>2]|0)+(o<<2)>>2]=-0.0-u;g[(c[z>>2]|0)+(L<<2)>>2]=-0.0-C;g[(c[z>>2]|0)+(v<<2)>>2]=-0.0-H;I=+g[e>>2]*+g[r>>2];G=J*S-O*R;y=O*P-K*S;S=K*R-J*P;g[(c[ap>>2]|0)+(m<<2)>>2]=I*(G*aa+y*$+S*_);g[(c[ap>>2]|0)+(o<<2)>>2]=I*(G*u+y*C+S*H);if((a[b+708|0]&1)==0){aq=0.0;ar=0}else{H=+g[b+700>>2]*+g[b+724>>2];aq=H;ar=H>0.0?1:2}o=(ar|0)!=0;m=(a[b+729|0]&1)==0;if(m&(o^1)){i=k;return}v=(c[p>>2]|0)*5|0;g[(c[n>>2]|0)+(v<<2)>>2]=X;p=v+1|0;g[(c[n>>2]|0)+(p<<2)>>2]=T;L=v+2|0;g[(c[n>>2]|0)+(L<<2)>>2]=U;g[(c[z>>2]|0)+(v<<2)>>2]=-0.0-X;g[(c[z>>2]|0)+(p<<2)>>2]=-0.0-T;g[(c[z>>2]|0)+(L<<2)>>2]=-0.0-U;L=b+680|0;z=b+684|0;H=+ck(+(+g[L>>2]- +g[z>>2]),6.2831854820251465);do{if(H<-3.1415927410125732){as=H+6.2831854820251465}else{if(H<=3.1415927410125732){as=H;break}as=H-6.2831854820251465}}while(0);H=+ck(+(+g[L>>2]+ +g[z>>2]),6.2831854820251465);do{if(H<-3.1415927410125732){at=H+6.2831854820251465}else{if(H<=3.1415927410125732){at=H;break}at=H-6.2831854820251465}}while(0);z=as==at;g[(c[ap>>2]|0)+(v<<2)>>2]=0.0;L=b+740|0;p=c[L>>2]|0;H=+g[((p&2|0)==0?r:b+752|0)>>2];if(!(o&z|m)){if((p&4|0)!=0){g[(c[d+32>>2]|0)+(v<<2)>>2]=+g[b+744>>2]}S=+g[b+720>>2];C=+g[b+672>>2];p=as>at;L4562:do{if(p|z){au=p?1.0:0.0}else{y=C/(H*+g[e>>2]);if(y<0.0){do{if(S>=as){if(as-y<=S){break}au=(as-S)/y;break L4562}}while(0);au=S<as?0.0:1.0;break}if(y<=0.0){au=0.0;break}do{if(S<=at){if(at-y>=S){break}au=(at-S)/y;break L4562}}while(0);au=S>at?0.0:1.0}}while(0);p=(c[ap>>2]|0)+(v<<2)|0;g[p>>2]=au*C*+g[b+724>>2]+ +g[p>>2];p=b+676|0;g[(c[d+36>>2]|0)+(v<<2)>>2]=-0.0- +g[p>>2];g[(c[d+40>>2]|0)+(v<<2)>>2]=+g[p>>2]}if(!o){i=k;return}o=(c[ap>>2]|0)+(v<<2)|0;g[o>>2]=+g[o>>2]+aq*H*+g[e>>2];if((c[L>>2]&1|0)!=0){g[(c[d+32>>2]|0)+(v<<2)>>2]=+g[b+748>>2]}do{if(z){g[(c[d+36>>2]|0)+(v<<2)>>2]=-3.4028234663852886e+38;g[(c[d+40>>2]|0)+(v<<2)>>2]=3.4028234663852886e+38}else{L=(c[d+36>>2]|0)+(v<<2)|0;if((ar|0)==1){g[L>>2]=0.0;g[(c[d+40>>2]|0)+(v<<2)>>2]=3.4028234663852886e+38;break}else{g[L>>2]=-3.4028234663852886e+38;g[(c[d+40>>2]|0)+(v<<2)>>2]=0.0;break}}}while(0);H=+g[b+696>>2];do{if(H>0.0){aq=+g[h>>2]*X+ +g[h+4>>2]*T+ +g[h+8>>2]*U-(X*+g[j>>2]+T*+g[j+4>>2]+U*+g[j+8>>2]);if((ar|0)==1){if(aq>=0.0){break}C=aq*(-0.0-H);d=(c[ap>>2]|0)+(v<<2)|0;if(C<=+g[d>>2]){break}g[d>>2]=C;break}else{if(aq<=0.0){break}C=aq*(-0.0-H);d=(c[ap>>2]|0)+(v<<2)|0;if(C>=+g[d>>2]){break}g[d>>2]=C;break}}}while(0);ar=(c[ap>>2]|0)+(v<<2)|0;g[ar>>2]=+g[b+692>>2]*+g[ar>>2];i=k;return}function apt(a){a=a|0;return}function apu(a){a=a|0;return 212}function apv(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;if(!((e|0)==(-1|0)|(e|0)==5)){return}if((b|0)==3){g[a+744>>2]=d;e=a+740|0;c[e>>2]=c[e>>2]|4;return}else if((b|0)==4){g[a+748>>2]=d;e=a+740|0;c[e>>2]=c[e>>2]|1;return}else if((b|0)==2){g[a+752>>2]=d;b=a+740|0;c[b>>2]=c[b>>2]|2;return}else{return}}function apw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;do{if((c|0)==(-1|0)|(c|0)==5){if((b|0)==2){d=+g[a+752>>2];break}else if((b|0)==4){d=+g[a+748>>2];break}else if((b|0)==3){d=+g[a+744>>2];break}else{d=0.0;break}}else{d=0.0}}while(0);return+d}function apx(b,d,e,f,h,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0,w=0.0,x=0,y=0.0,z=0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0,U=0.0,V=0.0,W=0.0;k=i;i=i+224|0;l=k|0;m=k+48|0;n=k+96|0;o=k+160|0;p=d+24|0;q=c[p>>2]|0;r=m;anx(m,e|0,b+544|0);s=+g[b+592>>2];t=+g[b+596>>2];u=+g[b+600>>2];v=e+48|0;w=+g[e>>2]*s+ +g[e+4>>2]*t+ +g[e+8>>2]*u+ +g[v>>2];x=e+52|0;y=+g[e+16>>2]*s+ +g[e+20>>2]*t+ +g[e+24>>2]*u+ +g[x>>2];z=e+56|0;A=+g[e+32>>2]*s+ +g[e+36>>2]*t+ +g[e+40>>2]*u+ +g[z>>2];e=n+48|0;B=n|0;do{B=B+16|0;}while((B|0)!=(e|0));e=n;c[e>>2]=c[r>>2];c[e+4>>2]=c[r+4>>2];c[e+8>>2]=c[r+8>>2];c[e+12>>2]=c[r+12>>2];r=n+16|0;e=m+16|0;c[r>>2]=c[e>>2];c[r+4>>2]=c[e+4>>2];c[r+8>>2]=c[e+8>>2];c[r+12>>2]=c[e+12>>2];e=n+32|0;r=m+32|0;c[e>>2]=c[r>>2];c[e+4>>2]=c[r+4>>2];c[e+8>>2]=c[r+8>>2];c[e+12>>2]=c[r+12>>2];r=n+48|0;g[r>>2]=w;e=n+52|0;g[e>>2]=y;m=n+56|0;g[m>>2]=A;g[n+60>>2]=0.0;B=l;anx(l,f|0,b+608|0);A=+g[b+656>>2];y=+g[b+660>>2];w=+g[b+664>>2];C=f+48|0;u=+g[f>>2]*A+ +g[f+4>>2]*y+ +g[f+8>>2]*w+ +g[C>>2];D=f+52|0;t=+g[f+16>>2]*A+ +g[f+20>>2]*y+ +g[f+24>>2]*w+ +g[D>>2];E=f+56|0;s=+g[f+32>>2]*A+ +g[f+36>>2]*y+ +g[f+40>>2]*w+ +g[E>>2];f=o+48|0;F=o|0;do{F=F+16|0;}while((F|0)!=(f|0));f=o;c[f>>2]=c[B>>2];c[f+4>>2]=c[B+4>>2];c[f+8>>2]=c[B+8>>2];c[f+12>>2]=c[B+12>>2];B=o+16|0;f=l+16|0;c[B>>2]=c[f>>2];c[B+4>>2]=c[f+4>>2];c[B+8>>2]=c[f+8>>2];c[B+12>>2]=c[f+12>>2];f=o+32|0;B=l+32|0;c[f>>2]=c[B>>2];c[f+4>>2]=c[B+4>>2];c[f+8>>2]=c[B+8>>2];c[f+12>>2]=c[B+12>>2];g[o+48>>2]=u;g[o+52>>2]=t;g[o+56>>2]=s;g[o+60>>2]=0.0;w=+g[r>>2];y=+g[e>>2];A=+g[m>>2];m=b+728|0;if((a[m]&1)==0){e=d+8|0;g[c[e>>2]>>2]=1.0;r=q+1|0;g[(c[e>>2]|0)+(r<<2)>>2]=1.0;B=q<<1;f=B+2|0;g[(c[e>>2]|0)+(f<<2)>>2]=1.0;G=B;H=r;I=f}else{f=q<<1;G=f;H=q+1|0;I=f+2|0}J=w- +g[v>>2];K=y- +g[x>>2];L=A- +g[z>>2];z=d+12|0;x=c[z>>2]|0;g[x>>2]=0.0;g[x+4>>2]=L;g[x+8>>2]=-0.0-K;g[x+12>>2]=0.0;g[x+(q<<2)>>2]=-0.0-L;g[x+(H<<2)>>2]=0.0;v=q+2|0;g[x+(v<<2)>>2]=J;f=q+3|0;g[x+(f<<2)>>2]=0.0;g[x+(G<<2)>>2]=K;r=G|1;g[x+(r<<2)>>2]=-0.0-J;g[x+(I<<2)>>2]=0.0;B=G+3|0;g[x+(B<<2)>>2]=0.0;J=u- +g[C>>2];K=t- +g[D>>2];L=s- +g[E>>2];E=d+20|0;D=c[E>>2]|0;g[D>>2]=0.0;g[D+4>>2]=-0.0-L;g[D+8>>2]=K;g[D+12>>2]=0.0;g[D+(q<<2)>>2]=L;g[D+(H<<2)>>2]=0.0;g[D+(v<<2)>>2]=-0.0-J;g[D+(f<<2)>>2]=0.0;g[D+(G<<2)>>2]=-0.0-K;g[D+(r<<2)>>2]=J;g[D+(I<<2)>>2]=0.0;g[D+(B<<2)>>2]=0.0;B=d|0;D=d+4|0;J=+g[B>>2]*+g[D>>2];I=d+28|0;if((a[m]&1)==0){g[c[I>>2]>>2]=J*(u-w);g[(c[I>>2]|0)+(q<<2)>>2]=J*(t-y);g[(c[I>>2]|0)+(q<<1<<2)>>2]=J*(s-A)}A=+g[n+8>>2];s=+g[n+24>>2];y=+g[n+40>>2];t=+g[n>>2];w=+g[n+16>>2];u=+g[n+32>>2];K=+g[n+4>>2];L=+g[n+20>>2];M=+g[n+36>>2];n=c[p>>2]|0;q=n*3|0;m=n<<2;g[(c[z>>2]|0)+(q<<2)>>2]=t;n=q+1|0;g[(c[z>>2]|0)+(n<<2)>>2]=w;r=q+2|0;g[(c[z>>2]|0)+(r<<2)>>2]=u;g[(c[z>>2]|0)+(m<<2)>>2]=K;G=m|1;g[(c[z>>2]|0)+(G<<2)>>2]=L;f=m|2;g[(c[z>>2]|0)+(f<<2)>>2]=M;g[(c[E>>2]|0)+(q<<2)>>2]=-0.0-t;g[(c[E>>2]|0)+(n<<2)>>2]=-0.0-w;g[(c[E>>2]|0)+(r<<2)>>2]=-0.0-u;g[(c[E>>2]|0)+(m<<2)>>2]=-0.0-K;g[(c[E>>2]|0)+(G<<2)>>2]=-0.0-L;g[(c[E>>2]|0)+(f<<2)>>2]=-0.0-M;N=+g[o+8>>2];O=+g[o+24>>2];P=+g[o+40>>2];Q=s*P-y*O;R=y*N-A*P;P=A*O-s*N;g[(c[I>>2]|0)+(q<<2)>>2]=J*(u*P+(t*Q+w*R));g[(c[I>>2]|0)+(m<<2)>>2]=J*(M*P+(K*Q+L*R));if((a[b+708|0]&1)==0){S=0.0;T=0}else{R=+g[b+700>>2]*+g[b+724>>2];S=R;T=R>0.0?1:2}m=(T|0)!=0;q=(a[b+729|0]&1)==0;if(q&(m^1)){i=k;return}o=(c[p>>2]|0)*5|0;g[(c[z>>2]|0)+(o<<2)>>2]=A;p=o+1|0;g[(c[z>>2]|0)+(p<<2)>>2]=s;f=o+2|0;g[(c[z>>2]|0)+(f<<2)>>2]=y;g[(c[E>>2]|0)+(o<<2)>>2]=-0.0-A;g[(c[E>>2]|0)+(p<<2)>>2]=-0.0-s;g[(c[E>>2]|0)+(f<<2)>>2]=-0.0-y;f=b+680|0;E=b+684|0;R=+ck(+(+g[f>>2]- +g[E>>2]),6.2831854820251465);do{if(R<-3.1415927410125732){U=R+6.2831854820251465}else{if(R<=3.1415927410125732){U=R;break}U=R-6.2831854820251465}}while(0);R=+ck(+(+g[f>>2]+ +g[E>>2]),6.2831854820251465);do{if(R<-3.1415927410125732){V=R+6.2831854820251465}else{if(R<=3.1415927410125732){V=R;break}V=R-6.2831854820251465}}while(0);E=U==V;g[(c[I>>2]|0)+(o<<2)>>2]=0.0;f=b+740|0;p=c[f>>2]|0;R=+g[((p&2|0)==0?D:b+752|0)>>2];if(!(m&E|q)){if((p&4|0)!=0){g[(c[d+32>>2]|0)+(o<<2)>>2]=+g[b+744>>2]}L=+g[b+720>>2];Q=+g[b+672>>2];p=U>V;L4659:do{if(p|E){W=p?1.0:0.0}else{K=Q/(R*+g[B>>2]);if(K<0.0){do{if(L>=U){if(U-K<=L){break}W=(U-L)/K;break L4659}}while(0);W=L<U?0.0:1.0;break}if(K<=0.0){W=0.0;break}do{if(L<=V){if(V-K>=L){break}W=(V-L)/K;break L4659}}while(0);W=L>V?0.0:1.0}}while(0);p=(c[I>>2]|0)+(o<<2)|0;g[p>>2]=W*Q*+g[b+724>>2]+ +g[p>>2];p=b+676|0;g[(c[d+36>>2]|0)+(o<<2)>>2]=-0.0- +g[p>>2];g[(c[d+40>>2]|0)+(o<<2)>>2]=+g[p>>2]}if(!m){i=k;return}m=(c[I>>2]|0)+(o<<2)|0;g[m>>2]=+g[m>>2]+S*R*+g[B>>2];if((c[f>>2]&1|0)!=0){g[(c[d+32>>2]|0)+(o<<2)>>2]=+g[b+748>>2]}do{if(E){g[(c[d+36>>2]|0)+(o<<2)>>2]=-3.4028234663852886e+38;g[(c[d+40>>2]|0)+(o<<2)>>2]=3.4028234663852886e+38}else{f=(c[d+36>>2]|0)+(o<<2)|0;if((T|0)==1){g[f>>2]=0.0;g[(c[d+40>>2]|0)+(o<<2)>>2]=3.4028234663852886e+38;break}else{g[f>>2]=-3.4028234663852886e+38;g[(c[d+40>>2]|0)+(o<<2)>>2]=0.0;break}}}while(0);R=+g[b+696>>2];do{if(R>0.0){S=A*+g[h>>2]+s*+g[h+4>>2]+y*+g[h+8>>2]-(A*+g[j>>2]+s*+g[j+4>>2]+y*+g[j+8>>2]);if((T|0)==1){if(S>=0.0){break}Q=S*(-0.0-R);d=(c[I>>2]|0)+(o<<2)|0;if(Q<=+g[d>>2]){break}g[d>>2]=Q;break}else{if(S<=0.0){break}Q=S*(-0.0-R);d=(c[I>>2]|0)+(o<<2)|0;if(Q>=+g[d>>2]){break}g[d>>2]=Q;break}}}while(0);T=(c[I>>2]|0)+(o<<2)|0;g[T>>2]=+g[b+692>>2]*+g[T>>2];i=k;return}function apy(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0;d=+g[a+544>>2];e=+g[a+560>>2];f=+g[a+576>>2];h=+g[b>>2];i=+g[b+4>>2];j=+g[b+8>>2];k=+g[b+16>>2];l=+g[b+20>>2];m=+g[b+24>>2];n=+g[b+32>>2];o=+g[b+36>>2];p=+g[b+40>>2];q=+g[a+548>>2];r=+g[a+564>>2];s=+g[a+580>>2];t=+g[a+612>>2];u=+g[a+628>>2];v=+g[a+644>>2];w=t*+g[c>>2]+u*+g[c+4>>2]+v*+g[c+8>>2];x=t*+g[c+16>>2]+u*+g[c+20>>2]+v*+g[c+24>>2];y=t*+g[c+32>>2]+u*+g[c+36>>2]+v*+g[c+40>>2];v=+Y(+((d*h+e*i+f*j)*w+(d*k+e*l+f*m)*x+(d*n+e*o+f*p)*y),+((h*q+i*r+j*s)*w+(k*q+l*r+m*s)*x+(n*q+o*r+p*s)*y));return+(v*+g[a+724>>2])}function apz(a){a=a|0;if((a|0)==0){return}aDB(a);return}function apA(a){a=a|0;return}function apB(a){a=a|0;return 76}function apC(b,d){b=b|0;d=d|0;var e=0;e=d|0;if((a[b+336|0]&1)==0){c[e>>2]=3;c[d+4>>2]=3;return}else{c[e>>2]=0;c[d+4>>2]=0;return}}function apD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0.0,x=0;f=b+8|0;g[c[f>>2]>>2]=1.0;h=b+24|0;g[(c[f>>2]|0)+((c[h>>2]|0)+1<<2)>>2]=1.0;g[(c[f>>2]|0)+((c[h>>2]<<1)+2<<2)>>2]=1.0;i=+g[a+292>>2];j=+g[a+296>>2];k=+g[a+300>>2];l=+g[d>>2]*i+ +g[d+4>>2]*j+ +g[d+8>>2]*k;m=i*+g[d+16>>2]+j*+g[d+20>>2]+k*+g[d+24>>2];n=i*+g[d+32>>2]+j*+g[d+36>>2]+k*+g[d+40>>2];f=c[b+12>>2]|0;o=c[h>>2]|0;p=o<<1;g[f>>2]=0.0;g[f+4>>2]=n;g[f+8>>2]=-0.0-m;g[f+12>>2]=0.0;g[f+(o<<2)>>2]=-0.0-n;g[f+(o+1<<2)>>2]=0.0;g[f+(o+2<<2)>>2]=l;g[f+(o+3<<2)>>2]=0.0;g[f+(p<<2)>>2]=m;g[f+((p|1)<<2)>>2]=-0.0-l;g[f+(p+2<<2)>>2]=0.0;g[f+(p+3<<2)>>2]=0.0;k=+g[a+308>>2];j=+g[a+312>>2];i=+g[a+316>>2];q=+g[e>>2]*k+ +g[e+4>>2]*j+ +g[e+8>>2]*i;r=k*+g[e+16>>2]+j*+g[e+20>>2]+i*+g[e+24>>2];s=k*+g[e+32>>2]+j*+g[e+36>>2]+i*+g[e+40>>2];p=c[b+20>>2]|0;f=c[h>>2]|0;o=f<<1;g[p>>2]=0.0;g[p+4>>2]=-0.0-s;g[p+8>>2]=r;g[p+12>>2]=0.0;g[p+(f<<2)>>2]=s;g[p+(f+1<<2)>>2]=0.0;g[p+(f+2<<2)>>2]=-0.0-q;g[p+(f+3<<2)>>2]=0.0;g[p+(o<<2)>>2]=-0.0-r;g[p+((o|1)<<2)>>2]=q;g[p+(o+2<<2)>>2]=0.0;g[p+(o+3<<2)>>2]=0.0;o=a+324|0;i=+g[((c[o>>2]&1|0)==0?b+4|0:a+328|0)>>2]*+g[b>>2];p=b+28|0;g[c[p>>2]>>2]=i*(q+ +g[e+48>>2]-l- +g[d+48>>2]);g[(c[p>>2]|0)+(c[h>>2]<<2)>>2]=i*(r+ +g[e+52>>2]-m- +g[d+52>>2]);g[(c[p>>2]|0)+(c[h>>2]<<1<<2)>>2]=i*(s+ +g[e+56>>2]-n- +g[d+56>>2]);if((c[o>>2]&2|0)!=0){o=a+332|0;d=b+32|0;g[c[d>>2]>>2]=+g[o>>2];g[(c[d>>2]|0)+(c[h>>2]<<2)>>2]=+g[o>>2];g[(c[d>>2]|0)+(c[h>>2]<<1<<2)>>2]=+g[o>>2]}o=a+348|0;n=+g[o>>2];s=-0.0-n;d=b+36|0;e=b+40|0;if(n>0.0){g[c[d>>2]>>2]=s;g[c[e>>2]>>2]=n;t=+g[o>>2]}else{t=n}if(t>0.0){g[(c[d>>2]|0)+(c[h>>2]<<2)>>2]=s;g[(c[e>>2]|0)+(c[h>>2]<<2)>>2]=n;u=+g[o>>2]}else{u=t}if(u<=0.0){v=a+344|0;w=+g[v>>2];x=b+52|0;g[x>>2]=w;return}g[(c[d>>2]|0)+(c[h>>2]<<1<<2)>>2]=s;g[(c[e>>2]|0)+(c[h>>2]<<1<<2)>>2]=n;v=a+344|0;w=+g[v>>2];x=b+52|0;g[x>>2]=w;return}function apE(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;if((e|0)!=-1){return}if((b|0)==1|(b|0)==2){g[a+328>>2]=d;e=a+324|0;c[e>>2]=c[e>>2]|1;return}else if((b|0)==3|(b|0)==4){g[a+332>>2]=d;b=a+324|0;c[b>>2]=c[b>>2]|2;return}else{return}}function apF(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;do{if((c|0)==-1){if((b|0)==3|(b|0)==4){d=+g[a+332>>2];break}else if((b|0)==1|(b|0)==2){d=+g[a+328>>2];break}else{d=3.4028234663852886e+38;break}}else{d=3.4028234663852886e+38}}while(0);return+d}function apG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0.0,w=0,x=0;aq3(b|0,d,e)|0;g[d+44>>2]=+g[b+544>>2];g[d+48>>2]=+g[b+548>>2];g[d+52>>2]=+g[b+552>>2];g[d+56>>2]=+g[b+556>>2];g[d+60>>2]=+g[b+560>>2];g[d+64>>2]=+g[b+564>>2];g[d+68>>2]=+g[b+568>>2];g[d+72>>2]=+g[b+572>>2];g[d+76>>2]=+g[b+576>>2];g[d+80>>2]=+g[b+580>>2];g[d+84>>2]=+g[b+584>>2];g[d+88>>2]=+g[b+588>>2];g[d+92>>2]=+g[b+592>>2];g[d+96>>2]=+g[b+596>>2];g[d+100>>2]=+g[b+600>>2];g[d+104>>2]=+g[b+604>>2];g[d+108>>2]=+g[b+608>>2];g[d+112>>2]=+g[b+612>>2];g[d+116>>2]=+g[b+616>>2];g[d+120>>2]=+g[b+620>>2];g[d+124>>2]=+g[b+624>>2];g[d+128>>2]=+g[b+628>>2];g[d+132>>2]=+g[b+632>>2];g[d+136>>2]=+g[b+636>>2];g[d+140>>2]=+g[b+640>>2];g[d+144>>2]=+g[b+644>>2];g[d+148>>2]=+g[b+648>>2];g[d+152>>2]=+g[b+652>>2];g[d+156>>2]=+g[b+656>>2];g[d+160>>2]=+g[b+660>>2];g[d+164>>2]=+g[b+664>>2];g[d+168>>2]=+g[b+668>>2];c[d+176>>2]=a[b+728|0]&1;c[d+180>>2]=a[b+729|0]&1;g[d+188>>2]=+g[b+676>>2];g[d+184>>2]=+g[b+672>>2];c[d+172>>2]=a[b+732|0]&1;e=b+680|0;f=b+684|0;h=+ck(+(+g[e>>2]- +g[f>>2]),6.2831854820251465);do{if(h<-3.1415927410125732){i=h+6.2831854820251465}else{if(h<=3.1415927410125732){i=h;break}i=h-6.2831854820251465}}while(0);g[d+192>>2]=i;i=+ck(+(+g[e>>2]+ +g[f>>2]),6.2831854820251465);if(i<-3.1415927410125732){j=i+6.2831854820251465;k=d+196|0;l=k;g[l>>2]=j;m=b+688|0;n=+g[m>>2];o=d+200|0;p=o;g[p>>2]=n;q=b+692|0;r=+g[q>>2];s=d+204|0;t=s;g[t>>2]=r;u=b+696|0;v=+g[u>>2];w=d+208|0;x=w;g[x>>2]=v;return 17696}if(i<=3.1415927410125732){j=i;k=d+196|0;l=k;g[l>>2]=j;m=b+688|0;n=+g[m>>2];o=d+200|0;p=o;g[p>>2]=n;q=b+692|0;r=+g[q>>2];s=d+204|0;t=s;g[t>>2]=r;u=b+696|0;v=+g[u>>2];w=d+208|0;x=w;g[x>>2]=v;return 17696}j=i-6.2831854820251465;k=d+196|0;l=k;g[l>>2]=j;m=b+688|0;n=+g[m>>2];o=d+200|0;p=o;g[p>>2]=n;q=b+692|0;r=+g[q>>2];s=d+204|0;t=s;g[t>>2]=r;u=b+696|0;v=+g[u>>2];w=d+208|0;x=w;g[x>>2]=v;return 17696}function apH(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0;b=i;i=i+144|0;d=b|0;e=b+16|0;f=b+64|0;h=b+112|0;j=b+128|0;g[a+32>>2]=0.0;k=a+24|0;l=e|0;m=e+4|0;n=e+8|0;o=e+12|0;p=e+16|0;q=e+20|0;r=e+24|0;s=e+28|0;t=e+32|0;u=e+36|0;v=e+40|0;w=e+44|0;x=a+28|0;y=f|0;z=f+4|0;A=f+8|0;B=f+12|0;C=f+16|0;D=f+20|0;E=f+24|0;F=f+28|0;G=f+32|0;H=f+36|0;I=f+40|0;J=f+44|0;K=a+292|0;L=a+296|0;M=a+300|0;N=h|0;O=h+4|0;P=h+8|0;Q=h+12|0;R=a+308|0;S=a+312|0;T=a+316|0;U=j|0;V=j+4|0;W=j+8|0;X=j+12|0;aDD(d|0,0,16);Y=0;do{Z=d+(Y<<2)|0;g[Z>>2]=1.0;_=a+40+(Y*84|0)|0;if((_|0)!=0){$=c[k>>2]|0;aa=+g[$+4>>2];g[l>>2]=aa;ab=+g[$+20>>2];g[m>>2]=ab;ac=+g[$+36>>2];g[n>>2]=ac;g[o>>2]=0.0;ad=+g[$+8>>2];g[p>>2]=ad;ae=+g[$+24>>2];g[q>>2]=ae;af=+g[$+40>>2];g[r>>2]=af;g[s>>2]=0.0;ag=+g[$+12>>2];g[t>>2]=ag;ah=+g[$+28>>2];g[u>>2]=ah;ai=+g[$+44>>2];g[v>>2]=ai;g[w>>2]=0.0;aj=c[x>>2]|0;ak=+g[aj+4>>2];g[y>>2]=ak;al=+g[aj+20>>2];g[z>>2]=al;am=+g[aj+36>>2];g[A>>2]=am;g[B>>2]=0.0;an=+g[aj+8>>2];g[C>>2]=an;ao=+g[aj+24>>2];g[D>>2]=ao;ap=+g[aj+40>>2];g[E>>2]=ap;g[F>>2]=0.0;aq=+g[aj+12>>2];g[G>>2]=aq;ar=+g[aj+28>>2];g[H>>2]=ar;as=+g[aj+44>>2];g[I>>2]=as;g[J>>2]=0.0;at=+g[K>>2];au=+g[L>>2];av=+g[M>>2];aw=+g[$+52>>2];ax=+g[$+56>>2];ay=+g[$+60>>2];g[N>>2]=aw+(aa*at+ad*au+ag*av)-aw;g[O>>2]=ax+(at*ab+au*ae+av*ah)-ax;g[P>>2]=ay+(at*ac+au*af+av*ai)-ay;g[Q>>2]=0.0;ay=+g[R>>2];ai=+g[S>>2];av=+g[T>>2];af=+g[aj+52>>2];au=+g[aj+56>>2];ac=+g[aj+60>>2];g[U>>2]=af+(ak*ay+an*ai+aq*av)-af;g[V>>2]=au+(ay*al+ai*ao+av*ar)-au;g[W>>2]=ac+(ay*am+ai*ap+av*as)-ac;g[X>>2]=0.0;anz(_,e,f,h,j,d,$+388|0,+g[$+336>>2],aj+388|0,+g[aj+336>>2])}g[Z>>2]=0.0;Y=Y+1|0;}while((Y|0)<3);i=b;return}function apI(a,b){a=a|0;b=b|0;apD(a,b,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);return}function apJ(a){a=a|0;if((a|0)==0){return}aDB(a);return}function apK(a,b,c){a=a|0;b=b|0;c=c|0;aq3(a|0,b,c)|0;g[b+44>>2]=+g[a+292>>2];g[b+48>>2]=+g[a+296>>2];g[b+52>>2]=+g[a+300>>2];g[b+56>>2]=+g[a+304>>2];g[b+60>>2]=+g[a+308>>2];g[b+64>>2]=+g[a+312>>2];g[b+68>>2]=+g[a+316>>2];g[b+72>>2]=+g[a+320>>2];return 17480}function apL(b){b=b|0;var d=0,e=0,f=0,g=0;c[b>>2]=26048;d=b+480|0;e=b+488|0;f=c[e>>2]|0;g=b+492|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+484>>2]=0;return}function apM(a){a=a|0;apN(a);if((a|0)==0){return}aDB(a);return}function apN(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;c[b>>2]=23912;d=b+136|0;e=b+144|0;f=c[e>>2]|0;g=b+148|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-284+280>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+140>>2]=0;d=b+68|0;e=b+76|0;g=c[e>>2]|0;f=b+80|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+72>>2]=0;d=b+48|0;e=b+56|0;f=c[e>>2]|0;g=b+60|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+52>>2]=0;d=b+28|0;e=b+36|0;g=c[e>>2]|0;f=b+40|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-16+12>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+32>>2]=0;d=b+8|0;e=b+16|0;f=c[e>>2]|0;g=b+20|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+12|0;c[h>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-16+12>>2]|0)}c[e>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+12|0;c[h>>2]=0;return}function apO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0;f=i;i=i+64|0;h=f|0;a[d+84|0]=0;j=c[b+116>>2]|0;b=h;k=j+4|0;c[b>>2]=c[k>>2];c[b+4>>2]=c[k+4>>2];c[b+8>>2]=c[k+8>>2];c[b+12>>2]=c[k+12>>2];k=h+16|0;b=j+20|0;c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];b=h+32|0;k=j+36|0;c[b>>2]=c[k>>2];c[b+4>>2]=c[k+4>>2];c[b+8>>2]=c[k+8>>2];c[b+12>>2]=c[k+12>>2];k=h+48|0;b=j+52|0;c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];do{if(e){b=c[j+472>>2]|0;if((b|0)==0){break}cv[c[(c[b>>2]|0)+8>>2]&2047](b,h)}}while(0);l=+g[h>>2];m=+g[d+156>>2];n=+g[h+4>>2];o=+g[d+160>>2];p=+g[h+8>>2];q=+g[d+164>>2];r=+g[h+16>>2];s=+g[h+20>>2];t=+g[h+24>>2];u=+g[h+52>>2]+(m*r+o*s+q*t);v=+g[h+32>>2];w=+g[h+36>>2];x=+g[h+40>>2];y=+g[h+56>>2]+(m*v+o*w+q*x);g[d+36>>2]=+g[h+48>>2]+(l*m+n*o+p*q);g[d+40>>2]=u;g[d+44>>2]=y;g[d+48>>2]=0.0;y=+g[d+172>>2];u=+g[d+176>>2];q=+g[d+180>>2];g[d+52>>2]=l*y+n*u+p*q;g[d+56>>2]=y*r+u*s+q*t;g[d+60>>2]=y*v+u*w+q*x;g[d+64>>2]=0.0;q=+g[d+188>>2];u=+g[d+192>>2];y=+g[d+196>>2];g[d+68>>2]=l*q+n*u+p*y;g[d+72>>2]=q*r+u*s+y*t;g[d+76>>2]=q*v+u*w+y*x;g[d+80>>2]=0.0;i=f;return}function apP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0;e=c[a+144>>2]|0;apO(a,e+(b*284|0)|0,d);f=+g[e+(b*284|0)+52>>2];h=-0.0-f;i=+g[e+(b*284|0)+56>>2];j=-0.0-i;k=+g[e+(b*284|0)+60>>2];l=-0.0-k;m=+g[e+(b*284|0)+76>>2];n=+g[e+(b*284|0)+72>>2];o=m*j-n*l;p=+g[e+(b*284|0)+68>>2];q=p*l-m*h;r=n*h-p*j;s=1.0/+Q(+(r*r+(o*o+q*q)));t=o*s;o=s*q;q=s*r;r=+g[e+(b*284|0)+232>>2];s=+Q(+(f*f+i*i+k*k));u=r*.5;r=+T(+u)/s;s=r*h;v=r*j;w=r*l;r=+S(+u);u=2.0/(r*r+(w*w+(s*s+v*v)));x=s*u;y=v*u;z=w*u;u=r*x;A=r*y;B=r*z;r=s*x;x=s*y;C=s*z;s=v*y;y=v*z;v=w*z;z=1.0-(s+v);w=x-B;D=C+A;E=x+B;B=1.0-(r+v);v=y-u;x=C-A;A=y+u;u=1.0-(r+s);s=+g[e+(b*284|0)+236>>2];r=+Q(+(m*m+(n*n+p*p)));y=s*-.5;s=+T(+y)/r;r=p*s;C=n*s;F=m*s;s=+S(+y);y=2.0/(s*s+(F*F+(r*r+C*C)));G=r*y;H=C*y;I=F*y;y=s*G;J=s*H;K=s*I;s=r*G;G=r*H;L=r*I;r=C*H;H=C*I;C=F*I;I=1.0-(r+C);F=G-K;M=L+J;N=G+K;K=1.0-(s+C);C=H-y;G=L-J;J=H+y;y=1.0-(s+r);r=D*G+(w*N+z*I);s=D*J+(z*F+w*K);H=z*M+w*C+D*y;D=v*G+(B*N+E*I);w=v*J+(E*F+B*K);z=E*M+B*C+v*y;v=u*G+(A*N+x*I);I=u*J+(x*F+A*K);K=x*M+A*C+u*y;g[e+(b*284|0)+92>>2]=m*H+(p*r+n*s);g[e+(b*284|0)+96>>2]=q*H+(t*r+o*s);g[e+(b*284|0)+100>>2]=H*l+(r*h+s*j);g[e+(b*284|0)+104>>2]=0.0;g[e+(b*284|0)+108>>2]=m*z+(p*D+n*w);g[e+(b*284|0)+112>>2]=q*z+(t*D+o*w);g[e+(b*284|0)+116>>2]=z*l+(D*h+w*j);g[e+(b*284|0)+120>>2]=0.0;g[e+(b*284|0)+124>>2]=m*K+(p*v+n*I);g[e+(b*284|0)+128>>2]=q*K+(t*v+o*I);g[e+(b*284|0)+132>>2]=K*l+(v*h+I*j);g[e+(b*284|0)+136>>2]=0.0;j=+g[e+(b*284|0)+32>>2];I=j*i+ +g[e+(b*284|0)+40>>2];i=j*k+ +g[e+(b*284|0)+44>>2];g[e+(b*284|0)+140>>2]=f*j+ +g[e+(b*284|0)+36>>2];g[e+(b*284|0)+144>>2]=I;g[e+(b*284|0)+148>>2]=i;g[e+(b*284|0)+152>>2]=0.0;return}function apQ(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0.0,n=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0;e=i;i=i+72|0;f=e|0;h=e+16|0;j=e+32|0;apO(b,d,0);k=d+204|0;l=d+212|0;m=+g[k>>2]+ +g[l>>2];n=d+52|0;p=d+56|0;q=d+60|0;r=d+36|0;s=d+16|0;t=m*+g[p>>2]+ +g[d+40>>2];u=m*+g[q>>2]+ +g[d+44>>2];v=s;g[d+16>>2]=+g[n>>2]*m+ +g[r>>2];w=d+20|0;g[w>>2]=t;x=d+24|0;g[x>>2]=u;g[d+28>>2]=0.0;y=j+32|0;g[y>>2]=-1.0;z=c[b+100>>2]|0;A=dE[c[(c[z>>2]|0)+8>>2]&127](z,r,s,j)|0;r=d+88|0;c[r>>2]=0;if((A|0)==0){g[d+32>>2]=+g[k>>2];g[d+272>>2]=0.0;u=-0.0- +g[p>>2];t=-0.0- +g[q>>2];g[d>>2]=-0.0- +g[n>>2];g[d+4>>2]=u;g[d+8>>2]=t;g[d+12>>2]=0.0;g[d+268>>2]=1.0;B=-1.0;i=e;return+B}t=m*+g[y>>2];y=d;A=j+16|0;c[y>>2]=c[A>>2];c[y+4>>2]=c[A+4>>2];c[y+8>>2]=c[A+8>>2];c[y+12>>2]=c[A+12>>2];a[d+84|0]=1;A=f;y=h;do{if((a[43024]|0)==0){if((b1(43024)|0)==0){break}aDD(A|0,0,16);ap$(42128,0.0,0,0,f);bG(198,42128,o|0)|0}}while(0);aDD(y|0,0,16);apV(42128,0.0,h);c[r>>2]=42128;m=t- +g[l>>2];l=d+32|0;g[l>>2]=m;u=+g[k>>2];C=+g[d+208>>2]*.009999999776482582;D=u-C;E=u+C;if(m<D){g[l>>2]=D;F=D}else{F=m}if(F>E){g[l>>2]=E}l=j;c[v>>2]=c[l>>2];c[v+4>>2]=c[l+4>>2];c[v+8>>2]=c[l+8>>2];c[v+12>>2]=c[l+12>>2];E=+g[d>>2];F=+g[d+4>>2];m=+g[d+8>>2];D=E*+g[n>>2]+F*+g[p>>2]+m*+g[q>>2];q=c[b+116>>2]|0;C=+g[s>>2]- +g[q+52>>2];u=+g[w>>2]- +g[q+56>>2];G=+g[x>>2]- +g[q+60>>2];H=+g[q+324>>2];I=+g[q+328>>2];J=+g[q+320>>2];if(D<-.10000000149011612){K=-1.0/D;g[d+272>>2]=K*(F*(C*I-G*J+ +g[q+308>>2])+E*(H*G-u*I+ +g[q+304>>2])+m*(u*J-C*H+ +g[q+312>>2]));g[d+268>>2]=K;B=t;i=e;return+B}else{g[d+272>>2]=0.0;g[d+268>>2]=10.0;B=t;i=e;return+B}return 0.0}function apR(b,d){b=b|0;d=+d;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0;e=i;i=i+32|0;f=e|0;h=e+16|0;j=b+136|0;k=c[j>>2]|0;if((k|0)>0){l=0;while(1){apP(b,l,0);m=l+1|0;n=c[j>>2]|0;if((m|0)<(n|0)){l=m}else{o=n;break}}}else{o=k}k=b+116|0;l=c[k>>2]|0;n=l+304|0;p=+g[n>>2];m=l+308|0;q=+g[m>>2];r=l+312|0;s=+g[r>>2];t=+Q(+(p*p+q*q+s*s))*3.5999999046325684;u=b+112|0;g[u>>2]=t;v=b+128|0;w=c[v>>2]|0;if(+g[l+4+(w<<2)>>2]*+g[n>>2]+ +g[l+20+(w<<2)>>2]*+g[m>>2]+ +g[l+36+(w<<2)>>2]*+g[r>>2]<0.0){g[u>>2]=t*-1.0}do{if((o|0)>0){u=b+144|0;r=0;do{+apQ(b,(c[u>>2]|0)+(r*284|0)|0);r=r+1|0;x=c[j>>2]|0;}while((r|0)<(x|0));t=1.0/+g[(c[k>>2]|0)+336>>2];if((x|0)>0){y=0}else{break}do{r=c[u>>2]|0;do{if((a[r+(y*284|0)+84|0]&1)==0){g[r+(y*284|0)+276>>2]=0.0}else{s=+g[r+(y*284|0)+272>>2];q=t*(+g[r+(y*284|0)+216>>2]*(+g[r+(y*284|0)+204>>2]- +g[r+(y*284|0)+32>>2])*+g[r+(y*284|0)+268>>2]-s*+g[(s<0.0?r+(y*284|0)+220|0:r+(y*284|0)+224|0)>>2]);w=r+(y*284|0)+276|0;g[w>>2]=q;if(q>=0.0){break}g[w>>2]=0.0}}while(0);y=y+1|0;z=c[j>>2]|0;}while((y|0)<(z|0));if((z|0)<=0){break}r=f|0;w=f+4|0;l=f+8|0;m=f+12|0;n=h|0;A=h+4|0;B=h+8|0;C=h+12|0;D=0;do{E=c[u>>2]|0;t=+g[E+(D*284|0)+276>>2];q=+g[E+(D*284|0)+248>>2];s=t>q?q:t;t=s*+g[E+(D*284|0)+4>>2]*d;q=s*+g[E+(D*284|0)+8>>2]*d;g[r>>2]=+g[E+(D*284|0)>>2]*s*d;g[w>>2]=t;g[l>>2]=q;g[m>>2]=0.0;F=c[k>>2]|0;q=+g[E+(D*284|0)+20>>2]- +g[F+56>>2];t=+g[E+(D*284|0)+24>>2]- +g[F+60>>2];g[n>>2]=+g[E+(D*284|0)+16>>2]- +g[F+52>>2];g[A>>2]=q;g[B>>2]=t;g[C>>2]=0.0;pe(F,f,h);D=D+1|0;}while((D|0)<(c[j>>2]|0))}}while(0);cq[c[(c[b>>2]|0)+20>>2]&1023](b,d);if((c[j>>2]|0)<=0){i=e;return}h=b+144|0;b=0;do{f=c[h>>2]|0;z=c[k>>2]|0;t=+g[f+(b*284|0)+36>>2]- +g[z+52>>2];q=+g[f+(b*284|0)+40>>2]- +g[z+56>>2];s=+g[f+(b*284|0)+44>>2]- +g[z+60>>2];p=+g[z+324>>2];G=+g[z+328>>2];H=+g[z+320>>2];if((a[f+(b*284|0)+84|0]&1)==0){I=+g[f+(b*284|0)+240>>2];y=f+(b*284|0)+236|0;g[y>>2]=I+ +g[y>>2];J=I}else{y=c[v>>2]|0;I=+g[z+4+(y<<2)>>2];K=+g[z+20+(y<<2)>>2];L=+g[z+36+(y<<2)>>2];M=+g[f+(b*284|0)>>2];N=+g[f+(b*284|0)+4>>2];O=+g[f+(b*284|0)+8>>2];P=I*M+K*N+L*O;R=((q*H-t*p+ +g[z+312>>2])*(L-O*P)+((p*s-q*G+ +g[z+304>>2])*(I-M*P)+(t*G-s*H+ +g[z+308>>2])*(K-N*P)))*d/+g[f+(b*284|0)+212>>2];g[f+(b*284|0)+240>>2]=R;z=f+(b*284|0)+236|0;g[z>>2]=R+ +g[z>>2];J=R}g[f+(b*284|0)+240>>2]=J*.9900000095367432;b=b+1|0;}while((b|0)<(c[j>>2]|0));i=e;return}function apS(b,d){b=b|0;d=+d;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0.0,ar=0.0,as=0,at=0,au=0.0,av=0,aw=0.0,ax=0,ay=0.0,az=0.0,aA=0.0,aB=0,aC=0.0,aD=0.0,aE=0.0,aF=0.0,aG=0.0,aH=0.0,aI=0.0,aJ=0.0,aK=0,aL=0,aM=0,aN=0.0,aO=0.0,aP=0.0,aQ=0.0,aR=0.0,aS=0.0,aT=0.0,aU=0.0,aV=0.0,aW=0,aX=0,aY=0,aZ=0,a_=0;e=i;i=i+376|0;f=e|0;h=e+16|0;j=e+32|0;k=e+120|0;l=e+168|0;m=e+216|0;n=e+232|0;o=e+248|0;p=e+296|0;q=e+312|0;r=e+328|0;s=e+344|0;t=e+360|0;u=b+136|0;v=c[u>>2]|0;if((v|0)==0){i=e;return}w=b+8|0;x=c[w>>2]|0;if((x|0)<(v|0)){y=b+12|0;if((c[y>>2]|0)<(v|0)){c[9806]=(c[9806]|0)+1;z=aDx((v<<4|4)+15|0)|0;if((z|0)==0){A=0}else{B=-(z+4|0)&15;c[z+B>>2]=z;A=z+(B+4)|0}B=c[w>>2]|0;z=b+16|0;if((B|0)>0){C=0;do{D=A+(C<<4)|0;if((D|0)!=0){E=D;D=(c[z>>2]|0)+(C<<4)|0;c[E>>2]=c[D>>2];c[E+4>>2]=c[D+4>>2];c[E+8>>2]=c[D+8>>2];c[E+12>>2]=c[D+12>>2]}C=C+1|0;}while((C|0)<(B|0))}B=c[z>>2]|0;C=b+20|0;if((B|0)!=0){if((a[C]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[B-16+12>>2]|0)}c[z>>2]=0}a[C]=1;c[z>>2]=A;c[y>>2]=v;F=z}else{F=b+16|0}z=m;m=x;do{x=(c[F>>2]|0)+(m<<4)|0;if((x|0)!=0){y=x;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2]}m=m+1|0;}while((m|0)<(v|0))}c[w>>2]=v;w=b+28|0;m=c[w>>2]|0;if((m|0)<(v|0)){z=b+32|0;if((c[z>>2]|0)<(v|0)){c[9806]=(c[9806]|0)+1;F=aDx((v<<4|4)+15|0)|0;if((F|0)==0){G=0}else{y=-(F+4|0)&15;c[F+y>>2]=F;G=F+(y+4)|0}y=c[w>>2]|0;F=b+36|0;if((y|0)>0){x=0;do{A=G+(x<<4)|0;if((A|0)!=0){C=A;A=(c[F>>2]|0)+(x<<4)|0;c[C>>2]=c[A>>2];c[C+4>>2]=c[A+4>>2];c[C+8>>2]=c[A+8>>2];c[C+12>>2]=c[A+12>>2]}x=x+1|0;}while((x|0)<(y|0))}y=c[F>>2]|0;x=b+40|0;if((y|0)!=0){if((a[x]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[y-16+12>>2]|0)}c[F>>2]=0}a[x]=1;c[F>>2]=G;c[z>>2]=v;H=F}else{H=b+36|0}F=n;n=m;do{m=(c[H>>2]|0)+(n<<4)|0;if((m|0)!=0){z=m;c[z>>2]=c[F>>2];c[z+4>>2]=c[F+4>>2];c[z+8>>2]=c[F+8>>2];c[z+12>>2]=c[F+12>>2]}n=n+1|0;}while((n|0)<(v|0))}c[w>>2]=v;w=b+48|0;n=c[w>>2]|0;if((n|0)<(v|0)){F=b+52|0;if((c[F>>2]|0)<(v|0)){c[9806]=(c[9806]|0)+1;H=aDx((v<<2)+19|0)|0;if((H|0)==0){I=0}else{z=-(H+4|0)&15;c[H+z>>2]=H;I=H+(z+4)|0}z=c[w>>2]|0;H=b+56|0;if((z|0)>0){m=0;do{G=I+(m<<2)|0;if((G|0)!=0){g[G>>2]=+g[(c[H>>2]|0)+(m<<2)>>2]}m=m+1|0;}while((m|0)<(z|0))}z=c[H>>2]|0;m=b+60|0;if((z|0)!=0){if((a[m]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[z-4>>2]|0)}c[H>>2]=0}a[m]=1;c[H>>2]=I;c[F>>2]=v;J=H}else{J=b+56|0}H=n;do{n=(c[J>>2]|0)+(H<<2)|0;if((n|0)!=0){g[n>>2]=0.0}H=H+1|0;}while((H|0)<(v|0))}c[w>>2]=v;w=b+68|0;H=c[w>>2]|0;if((H|0)<(v|0)){J=b+72|0;if((c[J>>2]|0)<(v|0)){c[9806]=(c[9806]|0)+1;n=aDx((v<<2)+19|0)|0;if((n|0)==0){K=0}else{F=-(n+4|0)&15;c[n+F>>2]=n;K=n+(F+4)|0}F=c[w>>2]|0;n=b+76|0;if((F|0)>0){I=0;do{m=K+(I<<2)|0;if((m|0)!=0){g[m>>2]=+g[(c[n>>2]|0)+(I<<2)>>2]}I=I+1|0;}while((I|0)<(F|0))}F=c[n>>2]|0;I=b+80|0;if((F|0)!=0){if((a[I]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[F-4>>2]|0)}c[n>>2]=0}a[I]=1;c[n>>2]=K;c[J>>2]=v;L=n}else{L=b+76|0}n=H;do{H=(c[L>>2]|0)+(n<<2)|0;if((H|0)!=0){g[H>>2]=0.0}n=n+1|0;}while((n|0)<(v|0))}c[w>>2]=v;if((c[u>>2]|0)<=0){i=e;return}v=b+76|0;w=b+56|0;n=0;do{g[(c[v>>2]|0)+(n<<2)>>2]=0.0;g[(c[w>>2]|0)+(n<<2)>>2]=0.0;n=n+1|0;M=c[u>>2]|0;}while((n|0)<(M|0));if((M|0)<=0){i=e;return}n=b+144|0;L=o;H=o+16|0;J=o+32|0;K=b+36|0;I=b+120|0;F=b+16|0;m=b+116|0;z=f|0;G=f+4|0;x=f+8|0;y=f+12|0;A=h|0;C=h+4|0;B=h+8|0;D=h+12|0;E=k|0;N=k+4|0;O=k+8|0;P=k+12|0;R=k+16|0;S=k+20|0;T=k+24|0;U=k+28|0;V=k+32|0;W=k+36|0;X=k+40|0;Y=k+44|0;Z=l|0;_=l+4|0;$=l+8|0;aa=l+12|0;ab=l+16|0;ac=l+20|0;ad=l+24|0;ae=l+28|0;af=l+32|0;ag=l+36|0;ah=l+40|0;ai=l+44|0;aj=j+80|0;ak=0;al=M;while(1){M=c[n>>2]|0;am=c[M+(ak*284|0)+88>>2]|0;if((am|0)==0){an=al}else{ao=M+(ak*284|0)+92|0;c[L>>2]=c[ao>>2];c[L+4>>2]=c[ao+4>>2];c[L+8>>2]=c[ao+8>>2];c[L+12>>2]=c[ao+12>>2];ao=M+(ak*284|0)+108|0;c[H>>2]=c[ao>>2];c[H+4>>2]=c[ao+4>>2];c[H+8>>2]=c[ao+8>>2];c[H+12>>2]=c[ao+12>>2];ao=M+(ak*284|0)+124|0;c[J>>2]=c[ao>>2];c[J+4>>2]=c[ao+4>>2];c[J+8>>2]=c[ao+8>>2];c[J+12>>2]=c[ao+12>>2];ao=c[K>>2]|0;ap=c[I>>2]|0;aq=+g[o+16+(ap<<2)>>2];ar=+g[o+32+(ap<<2)>>2];g[ao+(ak<<4)>>2]=+g[o+(ap<<2)>>2];g[ao+(ak<<4)+4>>2]=aq;g[ao+(ak<<4)+8>>2]=ar;g[ao+(ak<<4)+12>>2]=0.0;ao=c[K>>2]|0;ap=ao+(ak<<4)|0;ar=+g[ap>>2];as=M+(ak*284|0)|0;aq=+g[as>>2];at=ao+(ak<<4)+4|0;au=+g[at>>2];av=M+(ak*284|0)+4|0;aw=+g[av>>2];ax=ao+(ak<<4)+8|0;ay=+g[ax>>2];ao=M+(ak*284|0)+8|0;az=+g[ao>>2];aA=ar*aq+au*aw+ay*az;g[ap>>2]=ar-aq*aA;g[at>>2]=au-aw*aA;g[ax>>2]=ay-az*aA;ax=c[K>>2]|0;at=ax+(ak<<4)|0;aA=+g[at>>2];ap=ax+(ak<<4)+4|0;az=+g[ap>>2];aB=ax+(ak<<4)+8|0;ay=+g[aB>>2];aw=1.0/+Q(+(aA*aA+az*az+ay*ay));g[at>>2]=aA*aw;g[ap>>2]=az*aw;g[aB>>2]=ay*aw;aB=c[F>>2]|0;ap=c[K>>2]|0;aw=+g[av>>2];ay=+g[ap+(ak<<4)+8>>2];az=+g[ao>>2];aA=+g[ap+(ak<<4)+4>>2];au=+g[ap+(ak<<4)>>2];aq=+g[as>>2];g[aB+(ak<<4)>>2]=aw*ay-az*aA;g[aB+(ak<<4)+4>>2]=az*au-ay*aq;g[aB+(ak<<4)+8>>2]=aA*aq-aw*au;g[aB+(ak<<4)+12>>2]=0.0;aB=c[F>>2]|0;as=aB+(ak<<4)|0;au=+g[as>>2];ap=aB+(ak<<4)+4|0;aw=+g[ap>>2];ao=aB+(ak<<4)+8|0;aq=+g[ao>>2];aA=1.0/+Q(+(au*au+aw*aw+aq*aq));g[as>>2]=au*aA;g[ap>>2]=aw*aA;g[ao>>2]=aq*aA;ao=c[m>>2]|0;ap=c[K>>2]|0;as=ap+(ak<<4)|0;aB=(c[v>>2]|0)+(ak<<2)|0;av=as|0;aA=+g[av>>2];at=ap+(ak<<4)+4|0;aq=+g[at>>2];ax=ap+(ak<<4)+8|0;aw=+g[ax>>2];if(aA*aA+aq*aq+aw*aw>1.100000023841858){aC=0.0}else{aw=+g[M+(ak*284|0)+16>>2];aq=aw- +g[ao+52>>2];aA=+g[M+(ak*284|0)+20>>2];au=aA- +g[ao+56>>2];ay=+g[M+(ak*284|0)+24>>2];az=ay- +g[ao+60>>2];g[z>>2]=aq;g[G>>2]=au;g[x>>2]=az;g[y>>2]=0.0;ar=aw- +g[am+52>>2];aw=aA- +g[am+56>>2];aA=ay- +g[am+60>>2];g[A>>2]=ar;g[C>>2]=aw;g[B>>2]=aA;g[D>>2]=0.0;ay=+g[ao+324>>2];aD=+g[ao+328>>2];aE=+g[ao+320>>2];aF=+g[am+324>>2];aG=+g[am+328>>2];aH=+g[am+320>>2];aI=ay*az-aD*au+ +g[ao+304>>2]-(aF*aA-aG*aw+ +g[am+304>>2]);aJ=+g[ao+308>>2]+(aD*aq-az*aE)-(+g[am+308>>2]+(aG*ar-aA*aH));aA=au*aE-ay*aq+ +g[ao+312>>2]-(aw*aH-aF*ar+ +g[am+312>>2]);g[E>>2]=+g[ao+4>>2];g[N>>2]=+g[ao+20>>2];g[O>>2]=+g[ao+36>>2];g[P>>2]=0.0;g[R>>2]=+g[ao+8>>2];g[S>>2]=+g[ao+24>>2];g[T>>2]=+g[ao+40>>2];g[U>>2]=0.0;g[V>>2]=+g[ao+12>>2];g[W>>2]=+g[ao+28>>2];g[X>>2]=+g[ao+44>>2];g[Y>>2]=0.0;g[Z>>2]=+g[am+4>>2];g[_>>2]=+g[am+20>>2];g[$>>2]=+g[am+36>>2];g[aa>>2]=0.0;g[ab>>2]=+g[am+8>>2];g[ac>>2]=+g[am+24>>2];g[ad>>2]=+g[am+40>>2];g[ae>>2]=0.0;g[af>>2]=+g[am+12>>2];g[ag>>2]=+g[am+28>>2];g[ah>>2]=+g[am+44>>2];g[ai>>2]=0.0;anz(j,k,l,f,h,as,ao+388|0,+g[ao+336>>2],am+388|0,+g[am+336>>2]);aC=1.0/+g[aj>>2]*(aI*+g[av>>2]+aJ*+g[at>>2]+aA*+g[ax>>2])*-.20000000298023224}g[aB>>2]=aC;an=c[u>>2]|0}aB=ak+1|0;if((aB|0)<(an|0)){ak=aB;al=an}else{break}}if((an|0)>0){aK=0;aL=0}else{i=e;return}while(1){an=c[n>>2]|0;al=c[an+(aK*284|0)+88>>2]|0;do{if((al|0)==0){g[(c[w>>2]|0)+(aK<<2)>>2]=0.0;g[(c[n>>2]|0)+(aK*284|0)+280>>2]=1.0;aM=aL}else{aC=+g[an+(aK*284|0)+252>>2];if(aC!=0.0){g[(c[w>>2]|0)+(aK<<2)>>2]=0.0;g[(c[n>>2]|0)+(aK*284|0)+280>>2]=1.0;aN=aC*d}else{aC=+g[an+(aK*284|0)+256>>2];aA=aC!=0.0?aC:0.0;ak=c[m>>2]|0;aj=c[F>>2]|0;aC=+g[an+(aK*284|0)+16>>2];aJ=+g[an+(aK*284|0)+20>>2];aI=+g[an+(aK*284|0)+24>>2];ar=+g[aj+(aK<<4)>>2];aF=+g[aj+(aK<<4)+4>>2];aH=+g[aj+(aK<<4)+8>>2];aw=aC- +g[ak+52>>2];aq=aJ- +g[ak+56>>2];ay=aI- +g[ak+60>>2];aE=aq*aH-ay*aF;au=ay*ar-aw*aH;aG=aw*aF-aq*ar;az=+g[ak+256>>2]*aE+ +g[ak+272>>2]*au+aG*+g[ak+288>>2];aD=aE*+g[ak+260>>2]+au*+g[ak+276>>2]+aG*+g[ak+292>>2];aO=aE*+g[ak+264>>2]+au*+g[ak+280>>2]+aG*+g[ak+296>>2];aG=aC- +g[al+52>>2];aC=aJ- +g[al+56>>2];aJ=aI- +g[al+60>>2];aI=aH*aC-aF*aJ;au=ar*aJ-aH*aG;aE=aF*aG-ar*aC;aP=aE*+g[al+288>>2]+(+g[al+256>>2]*aI+ +g[al+272>>2]*au);aQ=aI*+g[al+260>>2]+au*+g[al+276>>2]+aE*+g[al+292>>2];aR=aI*+g[al+264>>2]+au*+g[al+280>>2]+aE*+g[al+296>>2];aE=+g[ak+324>>2];au=+g[ak+328>>2];aI=+g[ak+320>>2];aS=+g[al+324>>2];aT=+g[al+328>>2];aU=+g[al+320>>2];aV=1.0/(+g[ak+336>>2]+(aH*(aq*az-aw*aD)+(ar*(ay*aD-aq*aO)+aF*(aw*aO-ay*az)))+(+g[al+336>>2]+(aH*(aC*aP-aG*aQ)+(ar*(aJ*aQ-aC*aR)+aF*(aG*aR-aJ*aP)))))*(-0.0-((ay*aE-aq*au+ +g[ak+304>>2]-(aJ*aS-aC*aT+ +g[al+304>>2]))*ar+(+g[ak+308>>2]+(aw*au-ay*aI)-(+g[al+308>>2]+(aG*aT-aJ*aU)))*aF+(aq*aI-aw*aE+ +g[ak+312>>2]-(aC*aU-aG*aS+ +g[al+312>>2]))*aH));aH=aA<aV?aA:aV;aV=-0.0-aA;g[(c[w>>2]|0)+(aK<<2)>>2]=0.0;g[(c[n>>2]|0)+(aK*284|0)+280>>2]=1.0;aN=aH<aV?aV:aH}g[(c[n>>2]|0)+(aK*284|0)+280>>2]=1.0;aH=+g[an+(aK*284|0)+276>>2]*d*+g[an+(aK*284|0)+228>>2];g[(c[w>>2]|0)+(aK<<2)>>2]=aN;aV=+g[(c[w>>2]|0)+(aK<<2)>>2]*.5;aA=+g[(c[v>>2]|0)+(aK<<2)>>2];aS=aV*aV+aA*aA;if(aS<=aH*aH){aM=aL;break}aA=aH/+Q(+aS);ak=(c[n>>2]|0)+(aK*284|0)+280|0;g[ak>>2]=aA*+g[ak>>2];aM=1}}while(0);an=aK+1|0;aW=c[u>>2]|0;if((an|0)<(aW|0)){aK=an;aL=aM}else{break}}if(aM){if((aW|0)>0){aX=0;aY=aW}else{i=e;return}while(1){do{if(+g[(c[v>>2]|0)+(aX<<2)>>2]!=0.0){aN=+g[(c[n>>2]|0)+(aX*284|0)+280>>2];if(aN>=1.0){aZ=aY;break}aM=(c[w>>2]|0)+(aX<<2)|0;g[aM>>2]=aN*+g[aM>>2];aM=(c[v>>2]|0)+(aX<<2)|0;g[aM>>2]=+g[(c[n>>2]|0)+(aX*284|0)+280>>2]*+g[aM>>2];aZ=c[u>>2]|0}else{aZ=aY}}while(0);aM=aX+1|0;if((aM|0)<(aZ|0)){aX=aM;aY=aZ}else{a_=aZ;break}}}else{a_=aW}if((a_|0)<=0){i=e;return}a_=p|0;aW=p+4|0;aZ=p+8|0;aY=p+12|0;aX=q|0;aM=q+4|0;aL=q+8|0;aK=q+12|0;an=r|0;al=r+4|0;ak=r+8|0;aj=r+12|0;h=s|0;f=s+4|0;l=s+8|0;k=s+12|0;j=b+124|0;b=t|0;ai=t+4|0;ah=t+8|0;ag=t+12|0;af=0;do{ae=c[n>>2]|0;ad=c[m>>2]|0;ac=ae+(af*284|0)+16|0;ab=ae+(af*284|0)+20|0;aN=+g[ab>>2]- +g[ad+56>>2];aa=ae+(af*284|0)+24|0;d=+g[aa>>2]- +g[ad+60>>2];g[a_>>2]=+g[ac>>2]- +g[ad+52>>2];g[aW>>2]=aN;g[aZ>>2]=d;g[aY>>2]=0.0;d=+g[(c[w>>2]|0)+(af<<2)>>2];if(d!=0.0){$=c[F>>2]|0;aN=d*+g[$+(af<<4)+4>>2];aA=d*+g[$+(af<<4)+8>>2];g[aX>>2]=d*+g[$+(af<<4)>>2];g[aM>>2]=aN;g[aL>>2]=aA;g[aK>>2]=0.0;pe(ad,q,p)}aA=+g[(c[v>>2]|0)+(af<<2)>>2];if(aA!=0.0){ad=c[(c[n>>2]|0)+(af*284|0)+88>>2]|0;aN=+g[ab>>2]- +g[ad+56>>2];d=+g[aa>>2]- +g[ad+60>>2];g[an>>2]=+g[ac>>2]- +g[ad+52>>2];g[al>>2]=aN;g[ak>>2]=d;g[aj>>2]=0.0;ac=c[K>>2]|0;d=aA*+g[ac+(af<<4)+4>>2];aN=aA*+g[ac+(af<<4)+8>>2];g[h>>2]=+g[ac+(af<<4)>>2]*aA;g[f>>2]=d;g[l>>2]=aN;g[k>>2]=0.0;ac=c[m>>2]|0;aa=c[j>>2]|0;aN=+g[ac+4+(aa<<2)>>2];d=+g[ac+20+(aa<<2)>>2];aA=+g[ac+36+(aa<<2)>>2];aS=+g[a_>>2];aH=+g[aW>>2];aV=+g[aZ>>2];aG=(aN*aS+d*aH+aA*aV)*(1.0- +g[ae+(af*284|0)+244>>2]);g[a_>>2]=aS-aN*aG;g[aW>>2]=aH-d*aG;g[aZ>>2]=aV-aA*aG;pe(ac,s,p);aG=-0.0- +g[f>>2];aA=-0.0- +g[l>>2];g[b>>2]=-0.0- +g[h>>2];g[ai>>2]=aG;g[ah>>2]=aA;g[ag>>2]=0.0;pe(ad,t,r)}af=af+1|0;}while((af|0)<(c[u>>2]|0));i=e;return}function apT(a){a=a|0;return}function apU(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a+120>>2]=b;c[a+124>>2]=d;c[a+128>>2]=e;return}function apV(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;e=a+204|0;f=c[e>>2]|0;if(b==0.0){c[e>>2]=f|1;g[a+336>>2]=0.0;h=0.0}else{c[e>>2]=f&-2;i=1.0/b;g[a+336>>2]=i;h=i}i=+g[a+376>>2]*b;j=+g[a+380>>2]*b;g[a+356>>2]=+g[a+372>>2]*b;g[a+360>>2]=i;g[a+364>>2]=j;g[a+368>>2]=0.0;j=+g[d>>2];if(j!=0.0){k=1.0/j}else{k=0.0}j=+g[d+4>>2];if(j!=0.0){l=1.0/j}else{l=0.0}j=+g[d+8>>2];if(j!=0.0){m=1.0/j}else{m=0.0}g[a+388>>2]=k;g[a+392>>2]=l;g[a+396>>2]=m;g[a+400>>2]=0.0;m=h*+g[a+344>>2];l=h*+g[a+348>>2];g[a+552>>2]=+g[a+340>>2]*h;g[a+556>>2]=m;g[a+560>>2]=l;g[a+564>>2]=0.0;return}function apW(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0;e=i;i=i+48|0;f=e|0;h=e+16|0;j=e+32|0;k=b+136|0;if((c[k>>2]|0)<=0){i=e;return}l=f|0;m=f+4|0;n=f+8|0;o=f+12|0;p=b+144|0;q=h;r=b+120|0;b=d;s=h|0;t=h+4|0;u=h+8|0;v=j|0;w=j+4|0;x=j+8|0;y=j+12|0;z=0;do{g[l>>2]=0.0;g[m>>2]=1.0;g[n>>2]=1.0;g[o>>2]=0.0;A=c[p>>2]|0;g[l>>2]=(a[A+(z*284|0)+84|0]&1)==0?1.0:0.0;g[m>>2]=0.0;g[n>>2]=1.0;g[o>>2]=0.0;B=A+(z*284|0)+140|0;c[q>>2]=c[B>>2];c[q+4>>2]=c[B+4>>2];c[q+8>>2]=c[B+8>>2];c[q+12>>2]=c[B+12>>2];B=c[r>>2]|0;C=c[(c[b>>2]|0)+8>>2]|0;D=+g[A+(z*284|0)+108+(B<<2)>>2]+ +g[t>>2];E=+g[A+(z*284|0)+124+(B<<2)>>2]+ +g[u>>2];g[v>>2]=+g[A+(z*284|0)+92+(B<<2)>>2]+ +g[s>>2];g[w>>2]=D;g[x>>2]=E;g[y>>2]=0.0;dI[C&1023](d,h,j,f);dI[c[(c[b>>2]|0)+8>>2]&1023](d,h,(c[p>>2]|0)+(z*284|0)+16|0,f);z=z+1|0;}while((z|0)<(c[k>>2]|0));i=e;return}function apX(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0;h=i;i=i+88|0;j=h|0;k=j+4|0;g[k>>2]=1.0;l=j+8|0;c[l>>2]=0;b[j+12>>1]=1;b[j+14>>1]=-1;c[j+16>>2]=0;c[j>>2]=19480;m=j+20|0;n=d;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];n=j+36|0;m=e;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];m=c[a+4>>2]|0;dI[c[(c[m>>2]|0)+28>>2]&1023](m|0,d,e,j|0);e=c[l>>2]|0;if((e|0)==0){o=0;i=h;return o|0}if((c[e+232>>2]&2|0)==0){o=0;i=h;return o|0}if((c[e+204>>2]&4|0)!=0){o=0;i=h;return o|0}l=f;d=j+68|0;c[l>>2]=c[d>>2];c[l+4>>2]=c[d+4>>2];c[l+8>>2]=c[d+8>>2];c[l+12>>2]=c[d+12>>2];d=f+16|0;l=d;m=j+52|0;c[l>>2]=c[m>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];m=d|0;p=+g[m>>2];d=f+20|0;q=+g[d>>2];l=f+24|0;r=+g[l>>2];s=1.0/+Q(+(p*p+q*q+r*r));g[m>>2]=p*s;g[d>>2]=q*s;g[l>>2]=r*s;g[f+32>>2]=+g[k>>2];o=e;i=h;return o|0}function apY(a,b,d){a=a|0;b=b|0;d=+d;cq[c[(c[a>>2]|0)+16>>2]&1023](a,d);return}function apZ(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ap_(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0;c[b+232>>2]=2;aDD(b+304|0,0,32);g[b+536>>2]=1.0;g[b+540>>2]=1.0;g[b+544>>2]=1.0;g[b+548>>2]=0.0;e=b+340|0;g[e>>2]=1.0;f=b+344|0;g[f>>2]=1.0;h=b+348|0;g[h>>2]=1.0;aDD(b+352|0,0,36);aDD(b+404|0,0,32);i=+g[d+92>>2];j=+g[d+96>>2];if(i<0.0){k=0.0}else{k=i>1.0?1.0:i}g[b+436>>2]=k;if(j<0.0){l=0.0}else{l=j>1.0?1.0:j}g[b+440>>2]=l;g[b+464>>2]=+g[d+108>>2];g[b+468>>2]=+g[d+112>>2];m=c[d+4>>2]|0;c[b+472>>2]=m;c[b+600>>2]=0;c[b+604>>2]=0;a[b+444|0]=a[d+116|0]&1;g[b+448>>2]=+g[d+120>>2];g[b+452>>2]=+g[d+124>>2];g[b+456>>2]=+g[d+128>>2];g[b+460>>2]=+g[d+132>>2];if((m|0)==0){n=b+4|0;o=d+8|0;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];o=b+20|0;p=d+24|0;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];p=b+36|0;q=d+40|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];q=b+52|0;r=d+56|0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];s=n;t=o;u=p;v=q}else{q=b+4|0;cv[c[(c[m>>2]|0)+8>>2]&2047](m,q);s=q;t=b+20|0;u=b+36|0;v=b+52|0}q=b+68|0;c[q>>2]=c[s>>2];c[q+4>>2]=c[s+4>>2];c[q+8>>2]=c[s+8>>2];c[q+12>>2]=c[s+12>>2];s=b+84|0;c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];t=b+100|0;c[t>>2]=c[u>>2];c[t+4>>2]=c[u+4>>2];c[t+8>>2]=c[u+8>>2];c[t+12>>2]=c[u+12>>2];u=b+116|0;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];aDD(b+132|0,0,32);g[b+224>>2]=+g[d+100>>2];g[b+228>>2]=+g[d+104>>2];cv[c[(c[b>>2]|0)+12>>2]&2047](b|0,c[d+72>>2]|0);v=c[10738]|0;c[10738]=v+1;c[b+500>>2]=v;l=+g[d>>2];v=b+204|0;u=c[v>>2]|0;if(l==0.0){c[v>>2]=u|1;g[b+336>>2]=0.0;w=0.0}else{c[v>>2]=u&-2;j=1.0/l;g[b+336>>2]=j;w=j}j=l*+g[b+376>>2];k=l*+g[b+380>>2];g[b+356>>2]=l*+g[b+372>>2];g[b+360>>2]=j;g[b+364>>2]=k;g[b+368>>2]=0.0;k=+g[d+76>>2];if(k!=0.0){x=1.0/k}else{x=0.0}k=+g[d+80>>2];if(k!=0.0){y=1.0/k}else{y=0.0}k=+g[d+84>>2];if(k!=0.0){z=1.0/k}else{z=0.0}g[b+388>>2]=x;g[b+392>>2]=y;g[b+396>>2]=z;g[b+400>>2]=0.0;k=w*+g[e>>2];j=w*+g[f>>2];l=w*+g[h>>2];w=+g[b+4>>2];i=w*x;A=+g[b+8>>2];B=A*y;C=+g[b+12>>2];D=C*z;E=+g[b+20>>2];F=x*E;G=+g[b+24>>2];H=y*G;I=+g[b+28>>2];J=z*I;K=+g[b+36>>2];L=x*K;x=+g[b+40>>2];M=y*x;y=+g[b+44>>2];N=z*y;g[b+256>>2]=w*i+A*B+C*D;g[b+260>>2]=i*E+B*G+D*I;g[b+264>>2]=i*K+B*x+D*y;g[b+268>>2]=0.0;g[b+272>>2]=w*F+A*H+C*J;g[b+276>>2]=E*F+G*H+I*J;g[b+280>>2]=F*K+H*x+J*y;g[b+284>>2]=0.0;g[b+288>>2]=w*L+A*M+C*N;g[b+292>>2]=E*L+G*M+I*N;g[b+296>>2]=K*L+x*M+y*N;g[b+300>>2]=0.0;c[b+496>>2]=0;aDD(b+504|0,0,32);g[b+552>>2]=k;g[b+556>>2]=j;g[b+560>>2]=l;aDD(b+564|0,0,36);return}function ap$(b,d,e,f,h){b=b|0;d=+d;e=e|0;f=f|0;h=h|0;var j=0,k=0;j=i;i=i+136|0;k=j|0;g[b+164>>2]=1.0;g[b+168>>2]=1.0;g[b+172>>2]=1.0;g[b+176>>2]=0.0;c[b+180>>2]=0;g[b+184>>2]=999999984306749400.0;aDD(b+188|0,0,16);c[b+204>>2]=1;c[b+208>>2]=-1;c[b+212>>2]=-1;c[b+216>>2]=1;g[b+220>>2]=0.0;g[b+224>>2]=.5;g[b+228>>2]=0.0;c[b+232>>2]=1;c[b+236>>2]=0;g[b+240>>2]=1.0;g[b+244>>2]=0.0;g[b+248>>2]=0.0;c[b+252>>2]=0;g[b+4>>2]=1.0;aDD(b+8|0,0,16);g[b+24>>2]=1.0;aDD(b+28|0,0,16);g[b+44>>2]=1.0;aDD(b+48|0,0,20);c[b>>2]=26048;a[b+492|0]=1;c[b+488>>2]=0;c[b+480>>2]=0;c[b+484>>2]=0;g[k>>2]=d;c[k+4>>2]=e;c[k+72>>2]=f;f=k+76|0;e=h;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];g[k+92>>2]=0.0;g[k+96>>2]=0.0;g[k+100>>2]=.5;g[k+104>>2]=0.0;g[k+108>>2]=.800000011920929;g[k+112>>2]=1.0;a[k+116|0]=0;g[k+120>>2]=.004999999888241291;g[k+124>>2]=.009999999776482582;g[k+128>>2]=.009999999776482582;g[k+132>>2]=.009999999776482582;g[k+8>>2]=1.0;aDD(k+12|0,0,16);g[k+28>>2]=1.0;aDD(k+32|0,0,16);g[k+48>>2]=1.0;aDD(k+52|0,0,20);ap_(b,k);i=j;return}function ap0(a,b){a=a|0;b=+b;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0;d=i;i=i+24|0;e=d|0;f=d+16|0;if(b==0.0){i=d;return}h=c[a+472>>2]|0;if((h|0)==0){j=a+4|0}else{k=a+4|0;cv[c[(c[h>>2]|0)+8>>2]&2047](h,k);j=k}k=a+68|0;h=a+304|0;l=a+320|0;m=1.0/b;b=(+g[a+56>>2]- +g[a+120>>2])*m;n=m*(+g[a+60>>2]- +g[a+124>>2]);g[h>>2]=(+g[a+52>>2]- +g[a+116>>2])*m;g[a+308>>2]=b;g[a+312>>2]=n;g[a+316>>2]=0.0;an6(k,j,e,f);n=+g[f>>2];b=m*n*+g[e+4>>2];o=m*n*+g[e+8>>2];g[l>>2]=m*+g[e>>2]*n;g[a+324>>2]=b;g[a+328>>2]=o;g[a+332>>2]=0.0;e=a+132|0;f=h;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+148|0;e=l;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=k;k=j;c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];c[e+8>>2]=c[k+8>>2];c[e+12>>2]=c[k+12>>2];k=a+84|0;e=a+20|0;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];e=a+100|0;k=a+36|0;c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];c[e+8>>2]=c[k+8>>2];c[e+12>>2]=c[k+12>>2];k=a+116|0;e=a+52|0;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];i=d;return}function ap1(a){a=a|0;return 480}function ap2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if((c[b+232>>2]&2|0)==0){d=1;return d|0}e=b;b=a+488|0;f=c[a+480>>2]|0;a=0;while(1){if((a|0)>=(f|0)){d=1;g=4452;break}h=c[(c[b>>2]|0)+(a<<2)>>2]|0;if((c[h+24>>2]|0)==(e|0)){d=0;g=4455;break}if((c[h+28>>2]|0)==(e|0)){d=0;g=4453;break}else{a=a+1|0}}if((g|0)==4455){return d|0}else if((g|0)==4452){return d|0}else if((g|0)==4453){return d|0}return 0}function ap3(b,c){b=b|0;c=+c;var d=0.0,e=0.0,f=0,h=0.0,i=0,j=0.0,k=0,l=0.0,m=0.0,n=0,o=0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0;d=+g[b+436>>2];e=+R(+(1.0-d),+c);f=b+304|0;h=e*+g[f>>2];g[f>>2]=h;i=b+308|0;j=e*+g[i>>2];g[i>>2]=j;k=b+312|0;l=e*+g[k>>2];g[k>>2]=l;e=+g[b+440>>2];m=+R(+(1.0-e),+c);n=b+320|0;c=m*+g[n>>2];g[n>>2]=c;o=b+324|0;p=m*+g[o>>2];g[o>>2]=p;q=b+328|0;r=m*+g[q>>2];g[q>>2]=r;if((a[b+444|0]&1)==0){return}do{if(r*r+(c*c+p*p)<+g[b+456>>2]){if(h*h+j*j+l*l>=+g[b+452>>2]){s=h;t=j;u=l;v=c;w=p;x=r;break}m=+g[b+448>>2];y=c*m;g[n>>2]=y;z=m*p;g[o>>2]=z;A=m*r;g[q>>2]=A;B=m*h;g[f>>2]=B;C=m*j;g[i>>2]=C;D=m*l;g[k>>2]=D;s=B;t=C;u=D;v=y;w=z;x=A}else{s=h;t=j;u=l;v=c;w=p;x=r}}while(0);r=+Q(+(s*s+t*t+u*u));do{if(r<d){if(r>.004999999888241291){p=1.0/r;g[f>>2]=s-s*p*.004999999888241291;g[i>>2]=t-t*p*.004999999888241291;g[k>>2]=u-u*p*.004999999888241291;break}else{aDD(f|0,0,16);break}}}while(0);u=+Q(+(v*v+w*w+x*x));if(u>=e){return}if(u>.004999999888241291){e=1.0/u;g[n>>2]=v-v*e*.004999999888241291;g[o>>2]=w-w*e*.004999999888241291;g[q>>2]=x-x*e*.004999999888241291;return}else{aDD(n|0,0,16);return}}function ap4(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0;d=a+68|0;if((c[a+204>>2]&3|0)==0){e=d;f=b;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];e=a+84|0;h=b+16|0;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];e=a+100|0;i=b+32|0;c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];e=a+116|0;j=b+48|0;c[e>>2]=c[j>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];c[e+12>>2]=c[j+12>>2];k=a+4|0;l=f;m=a+20|0;n=h;o=a+36|0;p=i;q=a+52|0;r=j}else{j=d;d=a+4|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];j=a+84|0;i=a+20|0;c[j>>2]=c[i>>2];c[j+4>>2]=c[i+4>>2];c[j+8>>2]=c[i+8>>2];c[j+12>>2]=c[i+12>>2];j=a+100|0;h=a+36|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];j=a+116|0;f=a+52|0;c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];k=d;l=b;m=i;n=b+16|0;o=h;p=b+32|0;q=f;r=b+48|0}b=a+132|0;f=a+304|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=a+148|0;b=a+320|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];s=+g[a+4>>2];t=+g[a+388>>2];u=s*t;v=+g[a+8>>2];w=+g[a+392>>2];x=v*w;y=+g[a+12>>2];z=+g[a+396>>2];A=y*z;B=+g[a+20>>2];C=t*B;D=+g[a+24>>2];E=w*D;F=+g[a+28>>2];G=z*F;H=+g[a+36>>2];I=t*H;t=+g[a+40>>2];J=w*t;w=+g[a+44>>2];K=z*w;g[a+256>>2]=s*u+v*x+y*A;g[a+260>>2]=u*B+x*D+A*F;g[a+264>>2]=u*H+x*t+A*w;g[a+268>>2]=0.0;g[a+272>>2]=s*C+v*E+y*G;g[a+276>>2]=B*C+D*E+F*G;g[a+280>>2]=C*H+E*t+G*w;g[a+284>>2]=0.0;g[a+288>>2]=s*I+v*J+y*K;g[a+292>>2]=B*I+D*J+F*K;g[a+296>>2]=H*I+t*J+w*K;g[a+300>>2]=0.0;return}function ap5(a,b){a=a|0;b=+b;var d=0.0,e=0.0,f=0.0,h=0,i=0.0,j=0.0,k=0.0,l=0,m=0;if((c[a+204>>2]&3|0)!=0){return}d=+g[a+336>>2]*b;e=d*+g[a+408>>2];f=d*+g[a+412>>2];h=a+304|0;g[h>>2]=+g[a+404>>2]*d+ +g[h>>2];h=a+308|0;g[h>>2]=e+ +g[h>>2];h=a+312|0;g[h>>2]=f+ +g[h>>2];f=+g[a+420>>2];e=+g[a+424>>2];d=+g[a+428>>2];i=(f*+g[a+272>>2]+e*+g[a+276>>2]+d*+g[a+280>>2])*b;j=(f*+g[a+288>>2]+e*+g[a+292>>2]+d*+g[a+296>>2])*b;h=a+320|0;k=(+g[a+256>>2]*f+ +g[a+260>>2]*e+ +g[a+264>>2]*d)*b+ +g[h>>2];g[h>>2]=k;l=a+324|0;d=i+ +g[l>>2];g[l>>2]=d;m=a+328|0;i=j+ +g[m>>2];g[m>>2]=i;j=+Q(+(i*i+(k*k+d*d)));if(j*b<=1.5707963705062866){return}e=1.5707963705062866/b/j;g[h>>2]=k*e;g[l>>2]=e*d;g[m>>2]=e*i;return}function ap6(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=b+480|0;f=c[e>>2]|0;g=b+488|0;h=0;while(1){if((h|0)>=(f|0)){break}if((c[(c[g>>2]|0)+(h<<2)>>2]|0)==(d|0)){i=4487;break}else{h=h+1|0}}do{if((i|0)==4487){if((h|0)==(f|0)){break}j=b+252|0;c[j>>2]=1;return}}while(0);h=b+484|0;do{if((f|0)==(c[h>>2]|0)){i=(f|0)==0?1:f<<1;if((f|0)>=(i|0)){k=f;break}if((i|0)==0){l=0;m=f}else{c[9806]=(c[9806]|0)+1;n=aDx((i<<2)+19|0)|0;if((n|0)==0){o=0}else{p=-(n+4|0)&15;c[n+p>>2]=n;o=n+(p+4)|0}l=o;m=c[e>>2]|0}if((m|0)>0){p=0;do{n=l+(p<<2)|0;if((n|0)!=0){c[n>>2]=c[(c[g>>2]|0)+(p<<2)>>2]}p=p+1|0;}while((p|0)<(m|0))}p=c[g>>2]|0;n=b+492|0;if((p|0)!=0){if((a[n]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[p-4>>2]|0)}c[g>>2]=0}a[n]=1;c[g>>2]=l;c[h>>2]=i;k=c[e>>2]|0}else{k=f}}while(0);f=(c[g>>2]|0)+(k<<2)|0;if((f|0)==0){q=k}else{c[f>>2]=d;q=c[e>>2]|0}c[e>>2]=q+1;j=b+252|0;c[j>>2]=1;return}function ap7(b,d,e){b=b|0;d=d|0;e=e|0;atq(b|0,d,e)|0;g[d+248>>2]=+g[b+256>>2];g[d+252>>2]=+g[b+260>>2];g[d+256>>2]=+g[b+264>>2];g[d+260>>2]=+g[b+268>>2];g[d+264>>2]=+g[b+272>>2];g[d+268>>2]=+g[b+276>>2];g[d+272>>2]=+g[b+280>>2];g[d+276>>2]=+g[b+284>>2];g[d+280>>2]=+g[b+288>>2];g[d+284>>2]=+g[b+292>>2];g[d+288>>2]=+g[b+296>>2];g[d+292>>2]=+g[b+300>>2];g[d+296>>2]=+g[b+304>>2];g[d+300>>2]=+g[b+308>>2];g[d+304>>2]=+g[b+312>>2];g[d+308>>2]=+g[b+316>>2];g[d+312>>2]=+g[b+320>>2];g[d+316>>2]=+g[b+324>>2];g[d+320>>2]=+g[b+328>>2];g[d+324>>2]=+g[b+332>>2];g[d+440>>2]=+g[b+336>>2];g[d+328>>2]=+g[b+536>>2];g[d+332>>2]=+g[b+540>>2];g[d+336>>2]=+g[b+544>>2];g[d+340>>2]=+g[b+548>>2];g[d+344>>2]=+g[b+340>>2];g[d+348>>2]=+g[b+344>>2];g[d+352>>2]=+g[b+348>>2];g[d+356>>2]=+g[b+352>>2];g[d+360>>2]=+g[b+356>>2];g[d+364>>2]=+g[b+360>>2];g[d+368>>2]=+g[b+364>>2];g[d+372>>2]=+g[b+368>>2];g[d+376>>2]=+g[b+372>>2];g[d+380>>2]=+g[b+376>>2];g[d+384>>2]=+g[b+380>>2];g[d+388>>2]=+g[b+384>>2];g[d+392>>2]=+g[b+388>>2];g[d+396>>2]=+g[b+392>>2];g[d+400>>2]=+g[b+396>>2];g[d+404>>2]=+g[b+400>>2];g[d+408>>2]=+g[b+404>>2];g[d+412>>2]=+g[b+408>>2];g[d+416>>2]=+g[b+412>>2];g[d+420>>2]=+g[b+416>>2];g[d+424>>2]=+g[b+420>>2];g[d+428>>2]=+g[b+424>>2];g[d+432>>2]=+g[b+428>>2];g[d+436>>2]=+g[b+432>>2];g[d+444>>2]=+g[b+436>>2];g[d+448>>2]=+g[b+440>>2];c[d+476>>2]=a[b+444|0]&1;g[d+452>>2]=+g[b+448>>2];g[d+456>>2]=+g[b+452>>2];g[d+460>>2]=+g[b+456>>2];g[d+464>>2]=+g[b+460>>2];g[d+468>>2]=+g[b+464>>2];g[d+472>>2]=+g[b+468>>2];return 17400}function ap8(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[(c[b>>2]|0)+16>>2]|0;e=cA[c[(c[a>>2]|0)+16>>2]&4095](a)|0;f=cS[d&511](b,e,1)|0;e=cS[c[(c[a>>2]|0)+20>>2]&511](a,c[f+8>>2]|0,b)|0;co[c[(c[b>>2]|0)+20>>2]&255](b,f,e,1497645650,a);return}function ap9(a,b){a=a|0;b=b|0;c[a+192>>2]=b;c[a+200>>2]=b;return}function aqa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0,h=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;d=c+84|0;e=+g[d>>2];f=c+16|0;h=+g[f>>2];i=a+504|0;j=c+20|0;k=+g[j>>2];l=a+508|0;m=c+24|0;n=+g[m>>2];o=a+512|0;p=a+520|0;q=a+524|0;r=a+528|0;s=b+504|0;t=b+508|0;u=b+512|0;v=b+520|0;w=b+524|0;x=b+528|0;y=+g[c+92>>2];z=+g[c+116>>2]-e*+g[c+120>>2]-(h*+g[i>>2]+k*+g[l>>2]+n*+g[o>>2]+(+g[c>>2]*+g[p>>2]+ +g[c+4>>2]*+g[q>>2]+ +g[c+8>>2]*+g[r>>2]))*y-y*(+g[c+32>>2]*+g[v>>2]+ +g[c+36>>2]*+g[w>>2]+ +g[c+40>>2]*+g[x>>2]-(h*+g[s>>2]+k*+g[t>>2]+n*+g[u>>2]));y=e+z;A=+g[c+124>>2];do{if(y<A){g[d>>2]=A;B=A-e}else{C=+g[c+128>>2];if(y>C){g[d>>2]=C;B=C-e;break}else{g[d>>2]=y;B=z;break}}}while(0);if(+g[a+336>>2]!=0.0){z=B*+g[a+556>>2]*k;k=B*+g[a+560>>2]*n;g[i>>2]=+g[i>>2]+B*+g[a+552>>2]*h;g[l>>2]=z+ +g[l>>2];g[o>>2]=k+ +g[o>>2];k=B*+g[a+540>>2]*+g[c+52>>2];z=B*+g[a+544>>2]*+g[c+56>>2];g[p>>2]=B*+g[a+536>>2]*+g[c+48>>2]+ +g[p>>2];g[q>>2]=k+ +g[q>>2];g[r>>2]=z+ +g[r>>2]}if(+g[b+336>>2]==0.0){return}z=B*+g[b+556>>2]*(-0.0- +g[j>>2]);k=B*+g[b+560>>2]*(-0.0- +g[m>>2]);g[s>>2]=+g[s>>2]+B*+g[b+552>>2]*(-0.0- +g[f>>2]);g[t>>2]=z+ +g[t>>2];g[u>>2]=k+ +g[u>>2];k=B*+g[b+540>>2]*+g[c+68>>2];z=B*+g[b+544>>2]*+g[c+72>>2];g[v>>2]=B*+g[b+536>>2]*+g[c+64>>2]+ +g[v>>2];g[w>>2]=k+ +g[w>>2];g[x>>2]=z+ +g[x>>2];return}function aqb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0,h=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;d=c+84|0;e=+g[d>>2];f=c+16|0;h=+g[f>>2];i=a+504|0;j=c+20|0;k=+g[j>>2];l=a+508|0;m=c+24|0;n=+g[m>>2];o=a+512|0;p=a+520|0;q=a+524|0;r=a+528|0;s=b+504|0;t=b+508|0;u=b+512|0;v=b+520|0;w=b+524|0;x=b+528|0;y=+g[c+92>>2];z=+g[c+116>>2]-e*+g[c+120>>2]-(h*+g[i>>2]+k*+g[l>>2]+n*+g[o>>2]+(+g[c>>2]*+g[p>>2]+ +g[c+4>>2]*+g[q>>2]+ +g[c+8>>2]*+g[r>>2]))*y-y*(+g[c+32>>2]*+g[v>>2]+ +g[c+36>>2]*+g[w>>2]+ +g[c+40>>2]*+g[x>>2]-(h*+g[s>>2]+k*+g[t>>2]+n*+g[u>>2]));y=e+z;A=+g[c+124>>2];if(y<A){B=A-e;C=A}else{B=z;C=y}g[d>>2]=C;if(+g[a+336>>2]!=0.0){C=B*+g[a+556>>2]*k;k=B*+g[a+560>>2]*n;g[i>>2]=+g[i>>2]+B*+g[a+552>>2]*h;g[l>>2]=C+ +g[l>>2];g[o>>2]=k+ +g[o>>2];k=B*+g[a+540>>2]*+g[c+52>>2];C=B*+g[a+544>>2]*+g[c+56>>2];g[p>>2]=B*+g[a+536>>2]*+g[c+48>>2]+ +g[p>>2];g[q>>2]=k+ +g[q>>2];g[r>>2]=C+ +g[r>>2]}if(+g[b+336>>2]==0.0){return}C=B*+g[b+556>>2]*(-0.0- +g[j>>2]);k=B*+g[b+560>>2]*(-0.0- +g[m>>2]);g[s>>2]=+g[s>>2]+B*+g[b+552>>2]*(-0.0- +g[f>>2]);g[t>>2]=C+ +g[t>>2];g[u>>2]=k+ +g[u>>2];k=B*+g[b+540>>2]*+g[c+68>>2];C=B*+g[b+544>>2]*+g[c+72>>2];g[v>>2]=B*+g[b+536>>2]*+g[c+64>>2]+ +g[v>>2];g[w>>2]=k+ +g[w>>2];g[x>>2]=C+ +g[x>>2];return}function aqc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,h=0.0,i=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0;e=+g[d+132>>2];if(e==0.0){return}c[9794]=(c[9794]|0)+1;f=d+80|0;h=+g[f>>2];i=d+16|0;j=+g[i>>2];k=a+568|0;l=d+20|0;m=+g[l>>2];n=a+572|0;o=d+24|0;p=+g[o>>2];q=a+576|0;r=a+584|0;s=a+588|0;t=a+592|0;u=b+568|0;v=b+572|0;w=b+576|0;x=b+584|0;y=b+588|0;z=b+592|0;A=+g[d+92>>2];B=e-h*+g[d+120>>2]-(j*+g[k>>2]+m*+g[n>>2]+p*+g[q>>2]+(+g[d>>2]*+g[r>>2]+ +g[d+4>>2]*+g[s>>2]+ +g[d+8>>2]*+g[t>>2]))*A-A*(+g[d+32>>2]*+g[x>>2]+ +g[d+36>>2]*+g[y>>2]+ +g[d+40>>2]*+g[z>>2]-(j*+g[u>>2]+m*+g[v>>2]+p*+g[w>>2]));A=h+B;e=+g[d+124>>2];if(A<e){C=e-h;D=e}else{C=B;D=A}g[f>>2]=D;if(+g[a+336>>2]!=0.0){D=C*+g[a+556>>2]*m;m=C*+g[a+560>>2]*p;g[k>>2]=+g[k>>2]+C*+g[a+552>>2]*j;g[n>>2]=D+ +g[n>>2];g[q>>2]=m+ +g[q>>2];m=C*+g[a+540>>2]*+g[d+52>>2];D=C*+g[a+544>>2]*+g[d+56>>2];g[r>>2]=C*+g[a+536>>2]*+g[d+48>>2]+ +g[r>>2];g[s>>2]=m+ +g[s>>2];g[t>>2]=D+ +g[t>>2]}if(+g[b+336>>2]==0.0){return}D=C*+g[b+556>>2]*(-0.0- +g[l>>2]);m=C*+g[b+560>>2]*(-0.0- +g[o>>2]);g[u>>2]=+g[u>>2]+C*+g[b+552>>2]*(-0.0- +g[i>>2]);g[v>>2]=D+ +g[v>>2];g[w>>2]=m+ +g[w>>2];m=C*+g[b+540>>2]*+g[d+68>>2];D=C*+g[b+544>>2]*+g[d+72>>2];g[x>>2]=C*+g[b+536>>2]*+g[d+64>>2]+ +g[x>>2];g[y>>2]=m+ +g[y>>2];g[z>>2]=D+ +g[z>>2];return}function aqd(b){b=b|0;var d=0,e=0,f=0,g=0;c[b>>2]=26048;d=b+480|0;e=b+488|0;f=c[e>>2]|0;g=b+492|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+484>>2]=0}else{if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+484>>2]=0}c[9804]=(c[9804]|0)+1;aDB(c[b-608+604>>2]|0);return}function aqe(a){a=a|0;aqf(a);if((a|0)==0){return}aDB(a);return}function aqf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;c[b>>2]=19632;d=b+108|0;e=b+116|0;f=c[e>>2]|0;g=b+120|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-8+4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+112>>2]=0;d=b+88|0;e=b+96|0;g=c[e>>2]|0;f=b+100|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+92>>2]=0;d=b+68|0;e=b+76|0;f=c[e>>2]|0;g=b+80|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+72>>2]=0;d=b+48|0;e=b+56|0;g=c[e>>2]|0;f=b+60|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-136+132>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+52>>2]=0;d=b+28|0;e=b+36|0;f=c[e>>2]|0;g=b+40|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-136+132>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+32>>2]=0;d=b+8|0;e=b+16|0;g=c[e>>2]|0;f=b+20|0;if((g|0)==0){a[f]=1;c[e>>2]=0;c[d>>2]=0;h=b+12|0;c[h>>2]=0;return}if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-136+132>>2]|0)}c[e>>2]=0;a[f]=1;c[e>>2]=0;c[d>>2]=0;h=b+12|0;c[h>>2]=0;return}function aqg(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,h=0.0,i=0,j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0;if((a|0)==0){return}if((c[a+180>>2]|0)==0){return}d=+g[a+4>>2];e=b|0;f=+g[e>>2];h=+g[a+20>>2];i=b+4|0;j=+g[i>>2];k=+g[a+36>>2];l=b+8|0;m=+g[l>>2];n=+g[a+8>>2];o=+g[a+24>>2];p=+g[a+40>>2];q=+g[a+12>>2];r=+g[a+28>>2];s=+g[a+44>>2];t=(d*f+h*j+k*m)*+g[a+164>>2];u=(f*n+j*o+m*p)*+g[a+168>>2];v=(f*q+j*r+m*s)*+g[a+172>>2];g[e>>2]=d*t+n*u+q*v;g[i>>2]=h*t+o*u+r*v;g[l>>2]=k*t+p*u+s*v;g[b+12>>2]=0.0;return}function aqh(b,d,e,f,h,j,k,l,m,n,p){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=+m;n=+n;p=+p;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0,ax=0,ay=0,az=0;q=i;i=i+64|0;r=q|0;s=q+16|0;t=q+32|0;u=q+48|0;v=b+48|0;w=c[v>>2]|0;x=b+52|0;do{if((w|0)==(c[x>>2]|0)){y=(w|0)==0?1:w<<1;if((w|0)>=(y|0)){z=w;break}if((y|0)==0){A=0;B=w}else{c[9806]=(c[9806]|0)+1;C=aDx((y*136|0|4)+15|0)|0;if((C|0)==0){D=0}else{E=-(C+4|0)&15;c[C+E>>2]=C;D=C+(E+4)|0}A=D;B=c[v>>2]|0}E=b+56|0;if((B|0)>0){C=0;do{F=A+(C*136|0)|0;G=(c[E>>2]|0)+(C*136|0)|0;aDC(F|0,G|0,136)|0;C=C+1|0;}while((C|0)<(B|0))}C=c[E>>2]|0;G=b+60|0;if((C|0)!=0){if((a[G]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[C-136+132>>2]|0)}c[E>>2]=0}a[G]=1;c[E>>2]=A;c[x>>2]=y;z=c[v>>2]|0}else{z=w}}while(0);c[v>>2]=z+1;z=c[b+56>>2]|0;c[z+(w*136|0)+100>>2]=e;if((c[k+232>>2]&2|0)==0){H=0}else{H=k}if((c[l+232>>2]&2|0)==0){I=0}else{I=l}l=z+(w*136|0)+16|0;k=l;e=d;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];e=(H|0)!=0;if(e){J=H}else{k=r;b=s;do{if((a[42984]|0)==0){if((b1(42984)|0)==0){break}aDD(k|0,0,16);ap$(39728,0.0,0,0,r);bG(198,39728,o|0)|0}}while(0);aDD(b|0,0,16);apV(39728,0.0,s);J=39728}c[z+(w*136|0)+104>>2]=J;J=(I|0)!=0;if(J){K=I}else{s=t;b=u;do{if((a[42984]|0)==0){if((b1(42984)|0)==0){break}aDD(s|0,0,16);ap$(39728,0.0,0,0,t);bG(198,39728,o|0)|0}}while(0);aDD(b|0,0,16);apV(39728,0.0,u);K=39728}c[z+(w*136|0)+108>>2]=K;g[z+(w*136|0)+88>>2]=+g[f+84>>2];c[z+(w*136|0)+112>>2]=0;g[z+(w*136|0)+84>>2]=0.0;g[z+(w*136|0)+80>>2]=0.0;f=h+4|0;L=+g[f>>2];M=+g[z+(w*136|0)+24>>2];K=h+8|0;N=+g[K>>2];O=+g[z+(w*136|0)+20>>2];P=L*M-N*O;Q=+g[l>>2];l=h|0;R=+g[l>>2];S=N*Q-M*R;N=O*R-L*Q;g[z+(w*136|0)>>2]=P;g[z+(w*136|0)+4>>2]=S;g[z+(w*136|0)+8>>2]=N;g[z+(w*136|0)+12>>2]=0.0;if(e){T=(P*+g[H+256>>2]+S*+g[H+260>>2]+N*+g[H+264>>2])*+g[H+536>>2];U=(P*+g[H+272>>2]+S*+g[H+276>>2]+N*+g[H+280>>2])*+g[H+540>>2];V=(P*+g[H+288>>2]+S*+g[H+292>>2]+N*+g[H+296>>2])*+g[H+544>>2]}else{T=0.0;U=0.0;V=0.0}g[z+(w*136|0)+48>>2]=T;g[z+(w*136|0)+52>>2]=U;g[z+(w*136|0)+56>>2]=V;g[z+(w*136|0)+60>>2]=0.0;L=-0.0-Q;R=-0.0-O;W=-0.0-M;h=j+4|0;X=+g[h>>2];u=j+8|0;Y=+g[u>>2];Z=X*W-Y*R;b=j|0;_=+g[b>>2];$=Y*L-_*W;W=_*R-X*L;g[z+(w*136|0)+32>>2]=Z;g[z+(w*136|0)+36>>2]=$;g[z+(w*136|0)+40>>2]=W;g[z+(w*136|0)+44>>2]=0.0;if(J){aa=(Z*+g[I+256>>2]+$*+g[I+260>>2]+W*+g[I+264>>2])*+g[I+536>>2];ab=(Z*+g[I+272>>2]+$*+g[I+276>>2]+W*+g[I+280>>2])*+g[I+540>>2];ac=(Z*+g[I+288>>2]+$*+g[I+292>>2]+W*+g[I+296>>2])*+g[I+544>>2]}else{aa=0.0;ab=0.0;ac=0.0}g[z+(w*136|0)+64>>2]=aa;g[z+(w*136|0)+68>>2]=ab;g[z+(w*136|0)+72>>2]=ac;g[z+(w*136|0)+76>>2]=0.0;if(e){L=+g[K>>2];X=+g[f>>2];R=+g[l>>2];ad=+g[H+336>>2]+((U*L-V*X)*+g[d>>2]+(V*R-L*T)*+g[d+4>>2]+(X*T-U*R)*+g[d+8>>2])}else{ad=0.0}if(J){R=-0.0-aa;aa=-0.0-ab;ab=-0.0-ac;ac=+g[u>>2];U=+g[h>>2];T=+g[b>>2];ae=+g[I+336>>2]+((ac*aa-U*ab)*+g[d>>2]+(T*ab-ac*R)*+g[d+4>>2]+(U*R-T*aa)*+g[d+8>>2])}else{ae=0.0}aa=m/(ad+ae);g[z+(w*136|0)+92>>2]=aa;if(e){af=+g[H+320>>2];ag=+g[H+324>>2];ah=+g[H+328>>2];ai=+g[H+304>>2]*Q+ +g[H+308>>2]*O+ +g[H+312>>2]*M}else{af=0.0;ag=0.0;ah=0.0;ai=Q*0.0+O*0.0+M*0.0}ae=ai+(af*P+ag*S+ah*N);if(J){aj=+g[I+320>>2];ak=+g[I+324>>2];al=+g[I+328>>2];am=+g[I+304>>2]*Q+ +g[I+308>>2]*O+ +g[I+312>>2]*M;an=aj*Z;ao=ak*$;ap=an+ao;aq=al*W;ar=ap+aq;as=ar-am;at=ae+as;au=n-at;av=aa*au;aw=z+(w*136|0)+116|0;g[aw>>2]=av;ax=z+(w*136|0)+120|0;g[ax>>2]=p;ay=z+(w*136|0)+124|0;g[ay>>2]=0.0;az=z+(w*136|0)+128|0;g[az>>2]=1.0e10;i=q;return}else{aj=0.0;ak=0.0;al=0.0;am=Q*0.0+O*0.0+M*0.0;an=aj*Z;ao=ak*$;ap=an+ao;aq=al*W;ar=ap+aq;as=ar-am;at=ae+as;au=n-at;av=aa*au;aw=z+(w*136|0)+116|0;g[aw>>2]=av;ax=z+(w*136|0)+120|0;g[ax>>2]=p;ay=z+(w*136|0)+124|0;g[ay>>2]=0.0;az=z+(w*136|0)+128|0;g[az>>2]=1.0e10;i=q;return}}function aqi(b,d,e,f,h,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0.0,ax=0.0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0,aM=0,aN=0,aO=0,aP=0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$=0,a0=0,a1=0,a2=0,a3=0.0,a4=0.0,a5=0.0,a6=0.0,a7=0.0,a8=0.0,a9=0.0,ba=0.0,bb=0.0,bc=0.0,bd=0.0,be=0,bf=0,bg=0,bh=0,bi=0,bj=0,bk=0,bl=0,bm=0,bn=0,bo=0.0,bp=0.0,bq=0.0,br=0.0,bs=0.0,bt=0.0,bu=0.0,bv=0.0,bw=0,bx=0,by=0,bz=0,bA=0,bB=0,bC=0.0,bD=0.0,bE=0.0,bF=0.0,bH=0.0,bI=0.0,bJ=0.0,bK=0.0,bL=0.0,bM=0.0,bN=0.0,bO=0.0,bP=0.0,bQ=0.0,bR=0.0,bS=0.0,bT=0.0,bU=0.0,bV=0.0,bW=0,bX=0,bY=0,bZ=0,b_=0,b$=0,b0=0,b2=0,b4=0,b5=0,b6=0;n=i;i=i+304|0;m=n|0;p=n+8|0;q=n+24|0;r=n+40|0;s=n+56|0;t=n+72|0;u=n+88|0;v=n+112|0;w=n+248|0;aDo(17152);do{if((k|0)!=(-h|0)){x=l+44|0;y=(e|0)>0;do{if((c[x>>2]|0)==0){if(y){z=0}else{break}do{A=c[d+(z<<2)>>2]|0;if(!((c[A+232>>2]&2|0)==0|(A|0)==0)){aDD(A+504|0,0,32)}z=z+1|0;}while((z|0)<(e|0))}else{if(y){B=0}else{break}do{A=c[d+(B<<2)>>2]|0;if(!((c[A+232>>2]&2|0)==0|(A|0)==0)){aDD(A+504|0,0,32);aDD(A+568|0,0,32)}B=B+1|0;}while((B|0)<(e|0))}}while(0);y=(k|0)>0;if(y){A=0;do{C=c[j+(A<<2)>>2]|0;ct[c[(c[C>>2]|0)+8>>2]&2047](C);g[C+32>>2]=0.0;A=A+1|0;}while((A|0)<(k|0))}A=b+108|0;C=c[A>>2]|0;if((C|0)<(k|0)){D=b+112|0;if((c[D>>2]|0)<(k|0)){if((k|0)==0){E=0;F=C}else{c[9806]=(c[9806]|0)+1;G=aDx((k<<3|4)+15|0)|0;if((G|0)==0){H=0}else{I=-(G+4|0)&15;c[G+I>>2]=G;H=G+(I+4)|0}E=H;F=c[A>>2]|0}I=b+116|0;if((F|0)>0){G=0;do{J=E+(G<<3)|0;if((J|0)!=0){K=(c[I>>2]|0)+(G<<3)|0;L=J;J=c[K+4>>2]|0;c[L>>2]=c[K>>2];c[L+4>>2]=J}G=G+1|0;}while((G|0)<(F|0))}G=c[I>>2]|0;J=b+120|0;if((G|0)!=0){if((a[J]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[G-8+4>>2]|0)}c[I>>2]=0}a[J]=1;c[I>>2]=E;c[D>>2]=k;M=I}else{M=b+116|0}J=C;do{G=(c[M>>2]|0)+(J<<3)|0;if((G|0)!=0){L=G;c[L>>2]=0;c[L+4>>2]=0}J=J+1|0;}while((J|0)<(k|0))}c[A>>2]=k;if(y){J=b+116|0;C=0;I=0;while(1){D=c[J>>2]|0;L=D+(C<<3)|0;G=c[j+(C<<2)>>2]|0;if((a[G+20|0]&1)==0){c[L>>2]=0;c[D+(C<<3)+4>>2]=0;N=0}else{cv[c[(c[G>>2]|0)+16>>2]&2047](G,L);N=c[L>>2]|0}L=N+I|0;G=C+1|0;if((G|0)<(k|0)){C=G;I=L}else{O=L;break}}}else{O=0}I=v;aDD(I|0,0,136);C=b+28|0;J=c[C>>2]|0;if((J|0)<(O|0)){A=b+32|0;if((c[A>>2]|0)<(O|0)){if((O|0)==0){R=0;S=J}else{c[9806]=(c[9806]|0)+1;L=aDx((O*136|0|4)+15|0)|0;if((L|0)==0){T=0}else{G=-(L+4|0)&15;c[L+G>>2]=L;T=L+(G+4)|0}R=T;S=c[C>>2]|0}G=b+36|0;if((S|0)>0){L=0;do{D=R+(L*136|0)|0;K=(c[G>>2]|0)+(L*136|0)|0;aDC(D|0,K|0,136)|0;L=L+1|0;}while((L|0)<(S|0))}L=c[G>>2]|0;K=b+40|0;if((L|0)!=0){if((a[K]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[L-136+132>>2]|0)}c[G>>2]=0}a[K]=1;c[G>>2]=R;c[A>>2]=O;U=G}else{U=b+36|0}K=J;do{L=(c[U>>2]|0)+(K*136|0)|0;aDC(L|0,I|0,136)|0;K=K+1|0;}while((K|0)<(O|0))}c[C>>2]=O;if(y){K=b+116|0;I=b+36|0;J=l+12|0;G=w|0;A=l+32|0;L=w+4|0;D=w+8|0;V=w+12|0;W=w+16|0;X=w+20|0;Y=w+24|0;Z=w+28|0;_=l+40|0;$=l+4|0;aa=w+52|0;ab=w+32|0;ac=w+36|0;ad=w+40|0;ae=l+20|0;af=w+48|0;ag=0;ah=0;ai=c[K>>2]|0;while(1){aj=ai+(ah<<3)|0;ak=c[aj>>2]|0;if((ak|0)==0){al=ai;am=0}else{an=c[I>>2]|0;ao=j+(ah<<2)|0;ap=c[ao>>2]|0;aq=ap+24|0;ar=c[aq>>2]|0;as=ap+28|0;at=c[as>>2]|0;if((ak|0)>0){ak=0;do{au=ak+ag|0;aDD(an+(au*136|0)|0,0,136);g[an+(au*136|0)+124>>2]=-3.4028234663852886e+38;g[an+(au*136|0)+128>>2]=3.4028234663852886e+38;g[an+(au*136|0)+84>>2]=0.0;g[an+(au*136|0)+80>>2]=0.0;c[an+(au*136|0)+104>>2]=ar;c[an+(au*136|0)+108>>2]=at;ak=ak+1|0;}while((ak|0)<(c[aj>>2]|0))}aDD(ar+504|0,0,32);aDD(at+504|0,0,32);g[G>>2]=1.0/+g[J>>2];g[L>>2]=+g[A>>2];c[D>>2]=an+(ag*136|0)+16;c[V>>2]=an+(ag*136|0);c[W>>2]=0;c[X>>2]=an+(ag*136|0)+32;c[Y>>2]=34;c[Z>>2]=an+(ag*136|0)+116;ak=an+(ag*136|0)+120|0;g[ak>>2]=+g[_>>2];g[aa>>2]=+g[$>>2];c[ab>>2]=ak;ak=an+(ag*136|0)+124|0;c[ac>>2]=ak;au=an+(ag*136|0)+128|0;c[ad>>2]=au;c[af>>2]=c[ae>>2];av=c[ao>>2]|0;cv[c[(c[av>>2]|0)+20>>2]&2047](av,w);aw=+g[(c[ao>>2]|0)+16>>2];if(+g[au>>2]>aw){g[au>>2]=aw;ax=+g[(c[ao>>2]|0)+16>>2]}else{ax=aw}aw=-0.0-ax;if(+g[ak>>2]<aw){g[ak>>2]=aw}if((c[aj>>2]|0)>0){ak=ap;au=ar+336|0;av=ar+256|0;ay=ar+260|0;az=ar+264|0;aA=ar+272|0;aB=ar+276|0;aC=ar+280|0;aD=ar+288|0;aE=ar+292|0;aF=ar+296|0;aG=at+336|0;aH=at+256|0;aI=at+260|0;aJ=at+264|0;aK=at+272|0;aL=at+276|0;aM=at+280|0;aN=at+288|0;aO=at+292|0;aP=at+296|0;aQ=ar+304|0;aR=ar+308|0;aS=ar+312|0;aT=ar+320|0;aU=ar+324|0;aV=ar+328|0;aW=at+304|0;aX=at+308|0;aY=at+312|0;aZ=at+320|0;a_=at+324|0;a$=at+328|0;a0=0;do{a1=a0+ag|0;c[an+(a1*136|0)+112>>2]=ak;a2=c[aq>>2]|0;aw=+g[an+(a1*136|0)>>2];a3=+g[an+(a1*136|0)+4>>2];a4=+g[an+(a1*136|0)+8>>2];a5=(aw*+g[a2+272>>2]+a3*+g[a2+276>>2]+a4*+g[a2+280>>2])*+g[a2+540>>2];a6=(aw*+g[a2+288>>2]+a3*+g[a2+292>>2]+a4*+g[a2+296>>2])*+g[a2+544>>2];g[an+(a1*136|0)+48>>2]=(+g[a2+256>>2]*aw+ +g[a2+260>>2]*a3+ +g[a2+264>>2]*a4)*+g[a2+536>>2];g[an+(a1*136|0)+52>>2]=a5;g[an+(a1*136|0)+56>>2]=a6;g[an+(a1*136|0)+60>>2]=0.0;a2=c[as>>2]|0;a6=+g[an+(a1*136|0)+32>>2];a5=+g[an+(a1*136|0)+36>>2];a7=+g[an+(a1*136|0)+40>>2];a8=(a6*+g[a2+272>>2]+a5*+g[a2+276>>2]+a7*+g[a2+280>>2])*+g[a2+540>>2];a9=(a6*+g[a2+288>>2]+a5*+g[a2+292>>2]+a7*+g[a2+296>>2])*+g[a2+544>>2];g[an+(a1*136|0)+64>>2]=(+g[a2+256>>2]*a6+ +g[a2+260>>2]*a5+ +g[a2+264>>2]*a7)*+g[a2+536>>2];g[an+(a1*136|0)+68>>2]=a8;g[an+(a1*136|0)+72>>2]=a9;g[an+(a1*136|0)+76>>2]=0.0;a9=+g[au>>2];a8=+g[an+(a1*136|0)+16>>2];ba=+g[an+(a1*136|0)+20>>2];bb=+g[an+(a1*136|0)+24>>2];bc=+g[aG>>2];bd=1.0/(a8*a9*a8+ba*a9*ba+bb*a9*bb+(aw*(+g[av>>2]*aw+ +g[ay>>2]*a3+ +g[az>>2]*a4)+a3*(aw*+g[aA>>2]+a3*+g[aB>>2]+a4*+g[aC>>2])+a4*(aw*+g[aD>>2]+a3*+g[aE>>2]+a4*+g[aF>>2]))+(bb*bb*bc+(a8*a8*bc+ba*ba*bc))+(a6*(+g[aH>>2]*a6+ +g[aI>>2]*a5+ +g[aJ>>2]*a7)+a5*(a6*+g[aK>>2]+a5*+g[aL>>2]+a7*+g[aM>>2])+a7*(a6*+g[aN>>2]+a5*+g[aO>>2]+a7*+g[aP>>2])));g[an+(a1*136|0)+92>>2]=bd;a2=an+(a1*136|0)+116|0;g[a2>>2]=bd*+g[a2>>2]+bd*(0.0- +g[aa>>2]*(a8*+g[aQ>>2]+ba*+g[aR>>2]+bb*+g[aS>>2]+(aw*+g[aT>>2]+a3*+g[aU>>2]+a4*+g[aV>>2])+(a6*+g[aZ>>2]+a5*+g[a_>>2]+a7*+g[a$>>2]-(a8*+g[aW>>2]+ba*+g[aX>>2]+bb*+g[aY>>2]))));g[an+(a1*136|0)+84>>2]=0.0;a0=a0+1|0;}while((a0|0)<(c[aj>>2]|0))}aj=c[K>>2]|0;al=aj;am=c[aj+(ah<<3)>>2]|0}aj=ah+1|0;if((aj|0)<(k|0)){ag=am+ag|0;ah=aj;ai=al}else{break}}}if((h|0)>0){ai=b+8|0;ah=b+12|0;ag=b+16|0;K=b+20|0;aa=r;ae=s;af=p;ad=q;ac=b+48|0;ab=l+60|0;$=t|0;_=t+4|0;Z=t+8|0;Y=t+12|0;X=u|0;W=u+4|0;V=u+8|0;D=u+12|0;A=l+52|0;L=l+64|0;J=l+12|0;G=b+56|0;I=l+56|0;y=l+48|0;C=l+32|0;aj=0;while(1){a0=c[f+(aj<<2)>>2]|0;an=c[a0+1108>>2]|0;aY=an;aX=c[a0+1112>>2]|0;aW=aX;a$=an+232|0;if((c[a$>>2]&2|0)==0){be=0}else{be=an}a_=aX+232|0;if((c[a_>>2]&2|0)==0){bf=0}else{bf=aX}if((be|0)==0){bg=4731}else{if(+g[be+336>>2]!=0.0){bg=4733}else{bg=4731}}do{if((bg|0)==4731){bg=0;if((bf|0)==0){break}if(+g[bf+336>>2]!=0.0){bg=4733}}}while(0);do{if((bg|0)==4733){bg=0;aZ=a0+1116|0;aV=c[aZ>>2]|0;if((aV|0)<=0){break}aU=a0+1124|0;aT=aX;aS=an;aR=an+52|0;aQ=an+56|0;aP=an+60|0;aO=aX+52|0;aN=aX+56|0;aM=aX+60|0;aL=0;aK=aV;while(1){aV=a0+4+(aL*276|0)|0;aJ=a0+4+(aL*276|0)+80|0;if(+g[aJ>>2]>+g[aU>>2]){bh=aK}else{aI=c[ai>>2]|0;do{if((aI|0)==(c[ah>>2]|0)){aH=(aI|0)==0?1:aI<<1;if((aI|0)>=(aH|0)){bi=aI;break}if((aH|0)==0){bj=0;bk=aI}else{c[9806]=(c[9806]|0)+1;aF=aDx((aH*136|0|4)+15|0)|0;if((aF|0)==0){bl=0}else{aE=-(aF+4|0)&15;c[aF+aE>>2]=aF;bl=aF+(aE+4)|0}bj=bl;bk=c[ai>>2]|0}if((bk|0)>0){aE=0;do{aF=bj+(aE*136|0)|0;aD=(c[ag>>2]|0)+(aE*136|0)|0;aDC(aF|0,aD|0,136)|0;aE=aE+1|0;}while((aE|0)<(bk|0))}aE=c[ag>>2]|0;if((aE|0)!=0){if((a[K]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aE-136+132>>2]|0)}c[ag>>2]=0}a[K]=1;c[ag>>2]=bj;c[ah>>2]=aH;bi=c[ai>>2]|0}else{bi=aI}}while(0);c[ai>>2]=bi+1;aE=c[ag>>2]|0;aD=(c[a$>>2]&2|0)==0?0:aS;aF=(c[a_>>2]&2|0)==0?0:aT;aC=(aD|0)==0;if(aC){do{if((a[42984]|0)==0){if((b1(42984)|0)==0){break}aDD(aa|0,0,16);ap$(39728,0.0,0,0,r);bG(198,39728,o|0)|0}}while(0);aDD(ae|0,0,16);apV(39728,0.0,s);bm=39728}else{bm=aD}c[aE+(aI*136|0)+104>>2]=bm;aB=(aF|0)==0;if(aB){do{if((a[42984]|0)==0){if((b1(42984)|0)==0){break}aDD(af|0,0,16);ap$(39728,0.0,0,0,p);bG(198,39728,o|0)|0}}while(0);aDD(ad|0,0,16);apV(39728,0.0,q);bn=39728}else{bn=aF}c[aE+(aI*136|0)+108>>2]=bn;c[aE+(aI*136|0)+112>>2]=aV;aA=(c[a$>>2]&2|0)==0?0:aS;az=(c[a_>>2]&2|0)==0?0:aT;bb=+g[a0+4+(aL*276|0)+48>>2]- +g[aR>>2];ba=+g[a0+4+(aL*276|0)+52>>2]- +g[aQ>>2];a8=+g[a0+4+(aL*276|0)+56>>2]- +g[aP>>2];g[$>>2]=bb;g[_>>2]=ba;g[Z>>2]=a8;g[Y>>2]=0.0;a7=+g[a0+4+(aL*276|0)+32>>2]- +g[aO>>2];a5=+g[a0+4+(aL*276|0)+36>>2]- +g[aN>>2];a6=+g[a0+4+(aL*276|0)+40>>2]- +g[aM>>2];g[X>>2]=a7;g[W>>2]=a5;g[V>>2]=a6;g[D>>2]=0.0;ay=a0+4+(aL*276|0)+64|0;av=a0+4+(aL*276|0)+72|0;a4=+g[av>>2];aG=a0+4+(aL*276|0)+68|0;a3=+g[aG>>2];aw=ba*a4-a8*a3;au=ay|0;bd=+g[au>>2];bc=a8*bd-a4*bb;a4=a3*bb-ba*bd;as=(aA|0)!=0;if(as){bo=(aw*+g[aA+256>>2]+bc*+g[aA+260>>2]+a4*+g[aA+264>>2])*+g[aA+536>>2];bp=(aw*+g[aA+272>>2]+bc*+g[aA+276>>2]+a4*+g[aA+280>>2])*+g[aA+540>>2];bq=(aw*+g[aA+288>>2]+bc*+g[aA+292>>2]+a4*+g[aA+296>>2])*+g[aA+544>>2]}else{bo=0.0;bp=0.0;bq=0.0}aq=aE+(aI*136|0)+48|0;g[aq>>2]=bo;ak=aE+(aI*136|0)+52|0;g[ak>>2]=bp;at=aE+(aI*136|0)+56|0;g[at>>2]=bq;g[aE+(aI*136|0)+60>>2]=0.0;a4=+g[av>>2];bc=+g[aG>>2];aw=+g[au>>2];ar=(az|0)!=0;if(ar){bd=-0.0-(a5*a4-a6*bc);a3=-0.0-(a6*aw-a4*a7);a4=-0.0-(bc*a7-a5*aw);br=(+g[az+256>>2]*bd+ +g[az+260>>2]*a3+ +g[az+264>>2]*a4)*+g[az+536>>2];bs=(+g[az+272>>2]*bd+ +g[az+276>>2]*a3+ +g[az+280>>2]*a4)*+g[az+540>>2];bt=(+g[az+288>>2]*bd+ +g[az+292>>2]*a3+ +g[az+296>>2]*a4)*+g[az+544>>2]}else{br=0.0;bs=0.0;bt=0.0}ap=aE+(aI*136|0)+64|0;g[ap>>2]=br;ao=aE+(aI*136|0)+68|0;g[ao>>2]=bs;a1=aE+(aI*136|0)+72|0;g[a1>>2]=bt;g[aE+(aI*136|0)+76>>2]=0.0;if(as){bu=+g[aA+336>>2]+((bp*a8-bq*ba)*+g[au>>2]+(bq*bb-a8*bo)*+g[aG>>2]+(ba*bo-bp*bb)*+g[av>>2])}else{bu=0.0}if(ar){a4=-0.0-br;a3=-0.0-bs;bd=-0.0-bt;bv=+g[az+336>>2]+((a6*a3-a5*bd)*+g[au>>2]+(a7*bd-a6*a4)*+g[aG>>2]+(a5*a4-a7*a3)*+g[av>>2])}else{bv=0.0}a2=aE+(aI*136|0)+92|0;g[a2>>2]=1.0/(bu+bv);bw=aE+(aI*136|0)+16|0;bx=bw;by=ay;c[bx>>2]=c[by>>2];c[bx+4>>2]=c[by+4>>2];c[bx+8>>2]=c[by+8>>2];c[bx+12>>2]=c[by+12>>2];a3=+g[av>>2];a4=+g[aG>>2];bd=+g[au>>2];by=aE+(aI*136|0)|0;g[by>>2]=ba*a3-a8*a4;bx=aE+(aI*136|0)+4|0;g[bx>>2]=a8*bd-a3*bb;ay=aE+(aI*136|0)+8|0;g[ay>>2]=a4*bb-ba*bd;g[aE+(aI*136|0)+12>>2]=0.0;bd=-0.0- +g[au>>2];a4=-0.0- +g[aG>>2];a3=-0.0- +g[av>>2];bz=aE+(aI*136|0)+32|0;g[bz>>2]=a5*a3-a6*a4;bA=aE+(aI*136|0)+36|0;g[bA>>2]=a6*bd-a7*a3;bB=aE+(aI*136|0)+40|0;g[bB>>2]=a7*a4-a5*bd;g[aE+(aI*136|0)+44>>2]=0.0;if(as){bd=+g[aA+324>>2];a4=+g[aA+328>>2];a3=+g[aA+320>>2];bC=bd*a8-a4*ba+ +g[aA+304>>2];bD=+g[aA+308>>2]+(a4*bb-a8*a3);bE=ba*a3-bd*bb+ +g[aA+312>>2]}else{bC=0.0;bD=0.0;bE=0.0}if(ar){bb=+g[az+324>>2];bd=+g[az+328>>2];a3=+g[az+320>>2];bF=bb*a6-bd*a5+ +g[az+304>>2];bH=+g[az+308>>2]+(bd*a7-a6*a3);bI=a5*a3-bb*a7+ +g[az+312>>2]}else{bF=0.0;bH=0.0;bI=0.0}a7=bC-bF;bb=bD-bH;a3=bE-bI;a5=+g[au>>2]*a7+ +g[aG>>2]*bb+ +g[av>>2]*a3;a6=+g[aJ>>2]+ +g[A>>2];g[aE+(aI*136|0)+88>>2]=+g[a0+4+(aL*276|0)+84>>2];do{if((c[a0+4+(aL*276|0)+144>>2]|0)>(c[L>>2]|0)){bJ=0.0}else{bd=+g[a0+4+(aL*276|0)+88>>2]*(-0.0-a5);if(bd>0.0){bJ=bd;break}bJ=0.0}}while(0);do{if((c[ab>>2]&4|0)==0){g[aE+(aI*136|0)+84>>2]=0.0}else{bd=+g[a0+4+(aL*276|0)+112>>2]*+g[I>>2];aJ=aE+(aI*136|0)+84|0;g[aJ>>2]=bd;do{if(as){ba=+g[aA+336>>2];if(ba==0.0){break}a8=bd*ba*+g[aE+(aI*136|0)+20>>2]*+g[aA+344>>2];a4=bd*ba*+g[aE+(aI*136|0)+24>>2]*+g[aA+348>>2];au=aA+504|0;g[au>>2]=+g[au>>2]+bd*ba*+g[bw>>2]*+g[aA+340>>2];au=aA+508|0;g[au>>2]=a8+ +g[au>>2];au=aA+512|0;g[au>>2]=a4+ +g[au>>2];a4=bd*+g[aA+540>>2]*+g[ak>>2];a8=bd*+g[aA+544>>2]*+g[at>>2];au=aA+520|0;g[au>>2]=bd*+g[aA+536>>2]*+g[aq>>2]+ +g[au>>2];au=aA+524|0;g[au>>2]=a4+ +g[au>>2];au=aA+528|0;g[au>>2]=a8+ +g[au>>2]}}while(0);if(!ar){break}bd=+g[az+336>>2];a8=-0.0- +g[aJ>>2];if(bd==0.0){break}a4=-0.0- +g[a1>>2];ba=-0.0- +g[ao>>2];aw=-0.0- +g[ap>>2];bc=bd*+g[aE+(aI*136|0)+20>>2]*+g[az+344>>2]*a8;a9=bd*+g[aE+(aI*136|0)+24>>2]*+g[az+348>>2]*a8;aH=az+504|0;g[aH>>2]=+g[aH>>2]+bd*+g[bw>>2]*+g[az+340>>2]*a8;aH=az+508|0;g[aH>>2]=bc+ +g[aH>>2];aH=az+512|0;g[aH>>2]=a9+ +g[aH>>2];a9=+g[az+540>>2]*a8*ba;ba=+g[az+544>>2]*a8*a4;aH=az+520|0;g[aH>>2]=+g[az+536>>2]*a8*aw+ +g[aH>>2];aH=az+524|0;g[aH>>2]=a9+ +g[aH>>2];aH=az+528|0;g[aH>>2]=ba+ +g[aH>>2]}}while(0);g[aE+(aI*136|0)+80>>2]=0.0;if(as){bK=+g[aA+304>>2];bL=+g[aA+308>>2];bM=+g[aA+312>>2]}else{bK=0.0;bL=0.0;bM=0.0}ba=+g[bw>>2];a9=+g[aE+(aI*136|0)+20>>2];aw=+g[aE+(aI*136|0)+24>>2];if(as){bN=+g[aA+320>>2];bO=+g[aA+324>>2];bP=+g[aA+328>>2]}else{bN=0.0;bO=0.0;bP=0.0}if(ar){bQ=+g[az+320>>2];bR=+g[az+324>>2];bS=+g[az+328>>2];bT=+g[az+304>>2]*ba+ +g[az+308>>2]*a9+ +g[az+312>>2]*aw}else{bQ=0.0;bR=0.0;bS=0.0;bT=ba*0.0+a9*0.0+aw*0.0}a8=bJ-(bK*ba+bL*a9+bM*aw+(bN*+g[by>>2]+bO*+g[bx>>2]+bP*+g[ay>>2])+(bQ*+g[bz>>2]+bR*+g[bA>>2]+bS*+g[bB>>2]-bT));if(a6>0.0){bU=a8-a6/+g[J>>2];bV=0.0}else{bU=a8;bV=+g[C>>2]*(-0.0-a6)/+g[J>>2]}a8=+g[a2>>2];aw=bV*a8;a9=bU*a8;do{if((c[x>>2]|0)==0){bg=4798}else{if(a6>+g[y>>2]){bg=4798;break}g[aE+(aI*136|0)+116>>2]=a9;g[aE+(aI*136|0)+132>>2]=aw}}while(0);if((bg|0)==4798){bg=0;g[aE+(aI*136|0)+116>>2]=aw+a9;g[aE+(aI*136|0)+132>>2]=0.0}g[aE+(aI*136|0)+120>>2]=0.0;g[aE+(aI*136|0)+124>>2]=0.0;g[aE+(aI*136|0)+128>>2]=1.0e10;a2=aE+(aI*136|0)+100|0;c[a2>>2]=c[ac>>2];do{if((c[ab>>2]&32|0)==0){bg=4802}else{if((a[a0+4+(aL*276|0)+116|0]&1)==0){bg=4802;break}aqh(b,a0+4+(aL*276|0)+148|0,aI,aV,t,u,aY,aW,1.0,+g[a0+4+(aL*276|0)+128>>2],+g[a0+4+(aL*276|0)+136>>2]);if((c[ab>>2]&16|0)==0){break}aqh(b,a0+4+(aL*276|0)+164|0,aI,aV,t,u,aY,aW,1.0,+g[a0+4+(aL*276|0)+132>>2],+g[a0+4+(aL*276|0)+140>>2])}}while(0);do{if((bg|0)==4802){bg=0;aE=a0+4+(aL*276|0)+148|0;a9=+g[a0+4+(aL*276|0)+64>>2];aw=+g[aG>>2];a6=+g[av>>2];a8=a7-a9*a5;ba=bb-a5*aw;a4=a3-a5*a6;g[a0+4+(aL*276|0)+148>>2]=a8;bB=a0+4+(aL*276|0)+152|0;g[bB>>2]=ba;bA=a0+4+(aL*276|0)+156|0;g[bA>>2]=a4;g[a0+4+(aL*276|0)+160>>2]=0.0;bz=aE|0;bc=a8*a8+ba*ba+a4*a4;if((c[ab>>2]&64|0)==0&bc>1.1920928955078125e-7){bd=1.0/+Q(+bc);bc=a8*bd;g[bz>>2]=bc;a8=bd*ba;g[bB>>2]=a8;ba=bd*a4;g[bA>>2]=ba;if((c[ab>>2]&16|0)!=0){ay=a0+4+(aL*276|0)+164|0;a4=a8*a6-ba*aw;bd=ba*a9-a6*bc;ba=aw*bc-a8*a9;g[a0+4+(aL*276|0)+164>>2]=a4;g[a0+4+(aL*276|0)+176>>2]=0.0;a8=1.0/+Q(+(a4*a4+bd*bd+ba*ba));g[ay>>2]=a4*a8;g[a0+4+(aL*276|0)+168>>2]=bd*a8;g[a0+4+(aL*276|0)+172>>2]=ba*a8;aqg(aY,ay);aqg(aW,ay);aqh(b,ay,aI,aV,t,u,aY,aW,1.0,0.0,0.0)}aqg(aY,aE);aqg(aW,aE);aqh(b,aE,aI,aV,t,u,aY,aW,1.0,0.0,0.0);a[a0+4+(aL*276|0)+116|0]=1;break}ay=a0+4+(aL*276|0)+164|0;if(+P(+a6)>.7071067690849304){a8=a6*a6+aw*aw;ba=1.0/+Q(+a8);g[bz>>2]=0.0;bd=ba*(-0.0-a6);g[bB>>2]=bd;a4=ba*aw;g[bA>>2]=a4;g[ay>>2]=a8*ba;g[a0+4+(aL*276|0)+168>>2]=a4*(-0.0-a9);g[a0+4+(aL*276|0)+172>>2]=a9*bd}else{bd=a9*a9+aw*aw;a4=1.0/+Q(+bd);ba=a4*(-0.0-aw);g[bz>>2]=ba;aw=a4*a9;g[bB>>2]=aw;g[bA>>2]=0.0;g[ay>>2]=aw*(-0.0-a6);g[a0+4+(aL*276|0)+168>>2]=a6*ba;g[a0+4+(aL*276|0)+172>>2]=bd*a4}if((c[ab>>2]&16|0)!=0){aqg(aY,ay);aqg(aW,ay);aqh(b,ay,aI,aV,t,u,aY,aW,1.0,0.0,0.0)}aqg(aY,aE);aqg(aW,aE);aqh(b,aE,aI,aV,t,u,aY,aW,1.0,0.0,0.0);a[a0+4+(aL*276|0)+116|0]=1}}while(0);aV=c[ab>>2]|0;aI=c[a2>>2]|0;av=c[G>>2]|0;do{if((aV&8|0)==0){g[av+(aI*136|0)+84>>2]=0.0;if((c[ab>>2]&16|0)==0){break}g[(c[G>>2]|0)+(((c[a2>>2]|0)+1|0)*136|0)+84>>2]=0.0}else{do{if((aV&4|0)==0){g[av+(aI*136|0)+84>>2]=0.0}else{a5=+g[a0+4+(aL*276|0)+120>>2]*+g[I>>2];aG=av+(aI*136|0)+84|0;g[aG>>2]=a5;do{if(!aC){a3=+g[aD+336>>2];if(a3==0.0){break}bb=a5*a3*+g[av+(aI*136|0)+20>>2]*+g[aD+344>>2];a7=a5*a3*+g[av+(aI*136|0)+24>>2]*+g[aD+348>>2];aE=aD+504|0;g[aE>>2]=+g[aE>>2]+a5*a3*+g[av+(aI*136|0)+16>>2]*+g[aD+340>>2];aE=aD+508|0;g[aE>>2]=bb+ +g[aE>>2];aE=aD+512|0;g[aE>>2]=a7+ +g[aE>>2];a7=a5*+g[aD+540>>2]*+g[av+(aI*136|0)+52>>2];bb=a5*+g[aD+544>>2]*+g[av+(aI*136|0)+56>>2];aE=aD+520|0;g[aE>>2]=a5*+g[aD+536>>2]*+g[av+(aI*136|0)+48>>2]+ +g[aE>>2];aE=aD+524|0;g[aE>>2]=a7+ +g[aE>>2];aE=aD+528|0;g[aE>>2]=bb+ +g[aE>>2]}}while(0);if(aB){break}a5=+g[aF+336>>2];bb=-0.0- +g[aG>>2];if(a5==0.0){break}a7=-0.0- +g[av+(aI*136|0)+72>>2];a3=-0.0- +g[av+(aI*136|0)+68>>2];a4=-0.0- +g[av+(aI*136|0)+64>>2];bd=a5*+g[av+(aI*136|0)+20>>2]*+g[aF+344>>2]*bb;ba=a5*+g[av+(aI*136|0)+24>>2]*+g[aF+348>>2]*bb;aE=aF+504|0;g[aE>>2]=+g[aE>>2]+a5*+g[av+(aI*136|0)+16>>2]*+g[aF+340>>2]*bb;aE=aF+508|0;g[aE>>2]=bd+ +g[aE>>2];aE=aF+512|0;g[aE>>2]=ba+ +g[aE>>2];ba=+g[aF+540>>2]*bb*a3;a3=+g[aF+544>>2]*bb*a7;aE=aF+520|0;g[aE>>2]=+g[aF+536>>2]*bb*a4+ +g[aE>>2];aE=aF+524|0;g[aE>>2]=ba+ +g[aE>>2];aE=aF+528|0;g[aE>>2]=a3+ +g[aE>>2]}}while(0);aJ=c[ab>>2]|0;if((aJ&16|0)==0){break}aE=(c[a2>>2]|0)+1|0;ay=c[G>>2]|0;if((aJ&4|0)==0){g[ay+(aE*136|0)+84>>2]=0.0;break}a3=+g[a0+4+(aL*276|0)+124>>2]*+g[I>>2];aJ=ay+(aE*136|0)+84|0;g[aJ>>2]=a3;do{if(!aC){ba=+g[aD+336>>2];if(ba==0.0){break}a4=a3*ba*+g[ay+(aE*136|0)+20>>2];bb=a3*ba*+g[ay+(aE*136|0)+24>>2];bA=aD+504|0;g[bA>>2]=+g[bA>>2]+a3*ba*+g[ay+(aE*136|0)+16>>2];bA=aD+508|0;g[bA>>2]=a4+ +g[bA>>2];bA=aD+512|0;g[bA>>2]=bb+ +g[bA>>2];bb=a3*+g[aD+540>>2]*+g[ay+(aE*136|0)+52>>2];a4=a3*+g[aD+544>>2]*+g[ay+(aE*136|0)+56>>2];bA=aD+520|0;g[bA>>2]=a3*+g[aD+536>>2]*+g[ay+(aE*136|0)+48>>2]+ +g[bA>>2];bA=aD+524|0;g[bA>>2]=bb+ +g[bA>>2];bA=aD+528|0;g[bA>>2]=a4+ +g[bA>>2]}}while(0);if(aB){break}a3=+g[aF+336>>2];a4=-0.0- +g[aJ>>2];if(a3==0.0){break}bb=-0.0- +g[ay+(aE*136|0)+72>>2];ba=-0.0- +g[ay+(aE*136|0)+68>>2];a7=-0.0- +g[ay+(aE*136|0)+64>>2];bd=a3*+g[ay+(aE*136|0)+20>>2]*a4;a5=a3*+g[ay+(aE*136|0)+24>>2]*a4;bA=aF+504|0;g[bA>>2]=+g[bA>>2]+a3*+g[ay+(aE*136|0)+16>>2]*a4;bA=aF+508|0;g[bA>>2]=bd+ +g[bA>>2];bA=aF+512|0;g[bA>>2]=a5+ +g[bA>>2];a5=+g[aF+540>>2]*a4*ba;ba=+g[aF+544>>2]*a4*bb;bA=aF+520|0;g[bA>>2]=+g[aF+536>>2]*a4*a7+ +g[bA>>2];bA=aF+524|0;g[bA>>2]=a5+ +g[bA>>2];bA=aF+528|0;g[bA>>2]=ba+ +g[bA>>2]}}while(0);bh=c[aZ>>2]|0}aF=aL+1|0;if((aF|0)<(bh|0)){aL=aF;aK=bh}else{break}}}}while(0);a0=aj+1|0;if((a0|0)<(h|0)){aj=a0}else{bW=ai;bX=ac;break}}}else{bW=b+8|0;bX=b+48|0}ac=c[bW>>2]|0;ai=c[bX>>2]|0;aj=b+68|0;I=c[aj>>2]|0;if((I|0)<(ac|0)){G=b+72|0;if((c[G>>2]|0)<(ac|0)){if((ac|0)==0){bY=0;bZ=I}else{c[9806]=(c[9806]|0)+1;ab=aDx((ac<<2)+19|0)|0;if((ab|0)==0){b_=0}else{y=-(ab+4|0)&15;c[ab+y>>2]=ab;b_=ab+(y+4)|0}bY=b_;bZ=c[aj>>2]|0}y=b+76|0;if((bZ|0)>0){ab=0;do{x=bY+(ab<<2)|0;if((x|0)!=0){c[x>>2]=c[(c[y>>2]|0)+(ab<<2)>>2]}ab=ab+1|0;}while((ab|0)<(bZ|0))}ab=c[y>>2]|0;x=b+80|0;if((ab|0)!=0){if((a[x]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[ab-4>>2]|0)}c[y>>2]=0}a[x]=1;c[y>>2]=bY;c[G>>2]=ac;b$=y}else{b$=b+76|0}x=I;do{ab=(c[b$>>2]|0)+(x<<2)|0;if((ab|0)!=0){c[ab>>2]=0}x=x+1|0;}while((x|0)<(ac|0))}c[aj>>2]=ac;x=b+88|0;I=c[x>>2]|0;if((I|0)<(ai|0)){y=b+92|0;if((c[y>>2]|0)<(ai|0)){if((ai|0)==0){b0=0;b2=I}else{c[9806]=(c[9806]|0)+1;G=aDx((ai<<2)+19|0)|0;if((G|0)==0){b4=0}else{ab=-(G+4|0)&15;c[G+ab>>2]=G;b4=G+(ab+4)|0}b0=b4;b2=c[x>>2]|0}ab=b+96|0;if((b2|0)>0){G=0;do{J=b0+(G<<2)|0;if((J|0)!=0){c[J>>2]=c[(c[ab>>2]|0)+(G<<2)>>2]}G=G+1|0;}while((G|0)<(b2|0))}G=c[ab>>2]|0;aj=b+100|0;if((G|0)!=0){if((a[aj]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[G-4>>2]|0)}c[ab>>2]=0}a[aj]=1;c[ab>>2]=b0;c[y>>2]=ai;b5=ab}else{b5=b+96|0}aj=I;do{G=(c[b5>>2]|0)+(aj<<2)|0;if((G|0)!=0){c[G>>2]=0}aj=aj+1|0;}while((aj|0)<(ai|0))}c[x>>2]=ai;if((ac|0)>0){aj=b+76|0;I=0;do{c[(c[aj>>2]|0)+(I<<2)>>2]=I;I=I+1|0;}while((I|0)<(ac|0))}if((ai|0)<=0){break}ac=b+96|0;I=0;do{c[(c[ac>>2]|0)+(I<<2)>>2]=I;I=I+1|0;}while((I|0)<(ai|0))}}while(0);b=c[9152]|0;b5=b+16|0;b0=(c[b5>>2]|0)-1|0;c[b5>>2]=b0;if((b0|0)!=0){i=n;return+0.0}do{if((c[b+4>>2]|0)==0){b6=b}else{b3(m|0,0)|0;b0=c[10742]|0;b2=b+8|0;g[b2>>2]=+(((c[m+4>>2]|0)-(c[b0+4>>2]|0)+(((c[m>>2]|0)-(c[b0>>2]|0)|0)*1e6|0)-(c[b+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[b2>>2];if((c[b5>>2]|0)==0){b6=c[9152]|0;break}else{i=n;return+0.0}}}while(0);c[9152]=c[b6+20>>2];i=n;return+0.0}function aqj(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0;if((c[i+44>>2]|0)==0){return}k=i+20|0;j=c[k>>2]|0;h=(j|0)>0;if((c[i+60>>2]&256|0)==0){if(!h){return}i=a+8|0;g=a+76|0;f=a+16|0;e=1;d=j;while(1){b=c[i>>2]|0;if((b|0)>0){l=0;do{m=c[(c[g>>2]|0)+(l<<2)>>2]|0;n=c[f>>2]|0;aqc(c[n+(m*136|0)+104>>2]|0,c[n+(m*136|0)+108>>2]|0,n+(m*136|0)|0);l=l+1|0;}while((l|0)<(b|0));o=c[k>>2]|0}else{o=d}if((e|0)>=(o|0)){break}e=e+1|0;d=o}return}else{if(!h){return}h=a+8|0;o=a+76|0;d=a+16|0;a=1;e=j;while(1){j=c[h>>2]|0;if((j|0)>0){f=0;do{g=c[(c[o>>2]|0)+(f<<2)>>2]|0;i=c[d>>2]|0;aqc(c[i+(g*136|0)+104>>2]|0,c[i+(g*136|0)+108>>2]|0,i+(g*136|0)|0);f=f+1|0;}while((f|0)<(j|0));p=c[k>>2]|0}else{p=e}if((a|0)>=(p|0)){break}a=a+1|0;e=p}return}}function aqk(a,b,d,e,f,h,j,k,l,m){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0,P=0;n=i;i=i+16|0;o=n|0;aDo(18008);di[c[(c[a>>2]|0)+24>>2]&63](a,b,d,e,f,h,j,k,l,m);m=k+20|0;if((c[m>>2]|0)>0){l=a+8|0;f=a+48|0;e=k+60|0;d=a+28|0;b=a+36|0;p=(j|0)>0;q=k+12|0;k=a+76|0;r=a+16|0;s=a+96|0;t=a+56|0;u=a+124|0;a=0;do{v=c[l>>2]|0;w=c[f>>2]|0;x=c[e>>2]|0;do{if((x&1|0)==0){y=x}else{if((a&7|0)!=0){y=x;break}if((v|0)>0){z=0;do{A=c[k>>2]|0;B=A+(z<<2)|0;C=c[B>>2]|0;z=z+1|0;D=(aa(c[u>>2]|0,1664525)|0)+1013904223|0;c[u>>2]=D;do{if(z>>>0<65537){E=D>>>16^D;if(z>>>0>=257){F=E;break}G=E>>>8^E;if(z>>>0>=17){F=G;break}E=G>>>4^G;if(z>>>0>=5){F=E;break}G=E>>>2^E;if(z>>>0>=3){F=G;break}F=G>>>1^G}else{F=D}}while(0);D=(F>>>0)%(z>>>0)|0;c[B>>2]=c[A+(D<<2)>>2];c[(c[k>>2]|0)+(D<<2)>>2]=C;}while((z|0)<(v|0))}if((w|0)>0){z=0;do{D=c[s>>2]|0;G=D+(z<<2)|0;E=c[G>>2]|0;z=z+1|0;H=(aa(c[u>>2]|0,1664525)|0)+1013904223|0;c[u>>2]=H;do{if(z>>>0<65537){I=H>>>16^H;if(z>>>0>=257){J=I;break}K=I>>>8^I;if(z>>>0>=17){J=K;break}I=K>>>4^K;if(z>>>0>=5){J=I;break}K=I>>>2^I;if(z>>>0>=3){J=K;break}J=K>>>1^K}else{J=H}}while(0);H=(J>>>0)%(z>>>0)|0;c[G>>2]=c[D+(H<<2)>>2];c[(c[s>>2]|0)+(H<<2)>>2]=E;}while((z|0)<(w|0))}y=c[e>>2]|0}}while(0);w=(c[d>>2]|0)>0;do{if((y&256|0)==0){if(w){v=0;do{x=c[b>>2]|0;aqa(c[x+(v*136|0)+104>>2]|0,c[x+(v*136|0)+108>>2]|0,x+(v*136|0)|0);v=v+1|0;}while((v|0)<(c[d>>2]|0))}if(p){v=0;do{x=c[h+(v<<2)>>2]|0;dw[c[(c[x>>2]|0)+24>>2]&127](x,c[x+24>>2]|0,c[x+28>>2]|0,+g[q>>2]);v=v+1|0;}while((v|0)<(j|0))}v=c[l>>2]|0;if((v|0)>0){x=0;do{z=c[(c[k>>2]|0)+(x<<2)>>2]|0;H=c[r>>2]|0;aqb(c[H+(z*136|0)+104>>2]|0,c[H+(z*136|0)+108>>2]|0,H+(z*136|0)|0);x=x+1|0;}while((x|0)<(v|0))}v=c[f>>2]|0;if((v|0)>0){L=0}else{break}do{x=c[(c[s>>2]|0)+(L<<2)>>2]|0;z=c[t>>2]|0;M=+g[(c[r>>2]|0)+((c[z+(x*136|0)+100>>2]|0)*136|0)+84>>2];if(M>0.0){N=M*+g[z+(x*136|0)+88>>2];g[z+(x*136|0)+124>>2]=-0.0-N;g[z+(x*136|0)+128>>2]=N;aqa(c[z+(x*136|0)+104>>2]|0,c[z+(x*136|0)+108>>2]|0,z+(x*136|0)|0)}L=L+1|0;}while((L|0)<(v|0))}else{if(w){v=0;do{x=c[b>>2]|0;aqa(c[x+(v*136|0)+104>>2]|0,c[x+(v*136|0)+108>>2]|0,x+(v*136|0)|0);v=v+1|0;}while((v|0)<(c[d>>2]|0))}if(p){v=0;do{x=c[h+(v<<2)>>2]|0;dw[c[(c[x>>2]|0)+24>>2]&127](x,c[x+24>>2]|0,c[x+28>>2]|0,+g[q>>2]);v=v+1|0;}while((v|0)<(j|0))}v=c[l>>2]|0;if((v|0)>0){x=0;do{z=c[(c[k>>2]|0)+(x<<2)>>2]|0;H=c[r>>2]|0;aqb(c[H+(z*136|0)+104>>2]|0,c[H+(z*136|0)+108>>2]|0,H+(z*136|0)|0);x=x+1|0;}while((x|0)<(v|0))}v=c[f>>2]|0;if((v|0)>0){O=0}else{break}do{x=c[(c[s>>2]|0)+(O<<2)>>2]|0;z=c[t>>2]|0;N=+g[(c[r>>2]|0)+((c[z+(x*136|0)+100>>2]|0)*136|0)+84>>2];if(N>0.0){M=N*+g[z+(x*136|0)+88>>2];g[z+(x*136|0)+124>>2]=-0.0-M;g[z+(x*136|0)+128>>2]=M;aqa(c[z+(x*136|0)+104>>2]|0,c[z+(x*136|0)+108>>2]|0,z+(x*136|0)|0)}O=O+1|0;}while((O|0)<(v|0))}}while(0);a=a+1|0;}while((a|0)<(c[m>>2]|0))}m=c[9152]|0;a=m+16|0;O=(c[a>>2]|0)-1|0;c[a>>2]=O;if((O|0)!=0){i=n;return+0.0}do{if((c[m+4>>2]|0)==0){P=m}else{b3(o|0,0)|0;O=c[10742]|0;r=m+8|0;g[r>>2]=+(((c[o+4>>2]|0)-(c[O+4>>2]|0)+(((c[o>>2]|0)-(c[O>>2]|0)|0)*1e6|0)-(c[m+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[r>>2];if((c[a>>2]|0)==0){P=c[9152]|0;break}else{i=n;return+0.0}}}while(0);c[9152]=c[P+20>>2];i=n;return+0.0}function aql(a,b,c){a=a|0;b=b|0;c=c|0;return}function aqm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function aqn(a){a=a|0;c[a+124>>2]=0;return}function aqo(b,d,e,f,h,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0,z=0,A=0,B=0,C=0,D=0.0,E=0,F=0,G=0;n=i;i=i+472|0;m=n|0;k=n+64|0;j=n+200|0;h=n+336|0;f=b+8|0;o=c[f>>2]|0;if((o|0)>0){p=b+16|0;q=l+60|0;r=b+56|0;s=0;do{t=c[p>>2]|0;u=c[t+(s*136|0)+112>>2]|0;g[u+112>>2]=+g[t+(s*136|0)+84>>2];if((c[q>>2]&8|0)!=0){v=t+(s*136|0)+100|0;g[u+120>>2]=+g[(c[r>>2]|0)+((c[v>>2]|0)*136|0)+84>>2];g[u+124>>2]=+g[(c[r>>2]|0)+(((c[v>>2]|0)+1|0)*136|0)+84>>2]}s=s+1|0;}while((s|0)<(o|0))}o=b+28|0;s=c[o>>2]|0;if((s|0)>0){r=b+36|0;q=0;do{p=c[r>>2]|0;v=c[p+(q*136|0)+112>>2]|0;u=p+(q*136|0)+84|0;g[v+32>>2]=+g[u>>2];if(+g[u>>2]>+g[v+16>>2]){a[v+20|0]=0}q=q+1|0;}while((q|0)<(s|0))}s=(e|0)>0;do{if((c[l+44>>2]|0)==0){if(s){w=0}else{break}do{q=c[d+(w<<2)>>2]|0;do{if(!((c[q+232>>2]&2|0)==0|(q|0)==0)){if(+g[q+336>>2]==0.0){break}r=q+304|0;v=q+308|0;x=+g[v>>2]+ +g[q+508>>2];u=q+312|0;y=+g[u>>2]+ +g[q+512>>2];g[r>>2]=+g[r>>2]+ +g[q+504>>2];g[v>>2]=x;g[u>>2]=y;g[q+316>>2]=0.0;u=q+320|0;v=q+324|0;y=+g[v>>2]+ +g[q+524>>2];r=q+328|0;x=+g[r>>2]+ +g[q+528>>2];g[u>>2]=+g[u>>2]+ +g[q+520>>2];g[v>>2]=y;g[r>>2]=x;g[q+332>>2]=0.0}}while(0);w=w+1|0;}while((w|0)<(e|0))}else{if(!s){break}q=l+12|0;r=m;v=m+16|0;u=m+32|0;p=m+48|0;t=0;do{z=c[d+(t<<2)>>2]|0;do{if(!((c[z+232>>2]&2|0)==0|(z|0)==0)){x=+g[q>>2];if(+g[z+336>>2]==0.0){break}A=z+304|0;B=z+308|0;y=+g[B>>2]+ +g[z+508>>2];C=z+312|0;D=+g[C>>2]+ +g[z+512>>2];g[A>>2]=+g[A>>2]+ +g[z+504>>2];g[B>>2]=y;g[C>>2]=D;g[z+316>>2]=0.0;C=z+320|0;B=z+324|0;D=+g[B>>2]+ +g[z+524>>2];A=z+328|0;y=+g[A>>2]+ +g[z+528>>2];g[C>>2]=+g[C>>2]+ +g[z+520>>2];g[B>>2]=D;g[A>>2]=y;g[z+332>>2]=0.0;A=z+4|0;anY(A,+g[z+568>>2],+g[z+572>>2],+g[z+576>>2],z+584|0,x,m);B=A;c[B>>2]=c[r>>2];c[B+4>>2]=c[r+4>>2];c[B+8>>2]=c[r+8>>2];c[B+12>>2]=c[r+12>>2];B=z+20|0;c[B>>2]=c[v>>2];c[B+4>>2]=c[v+4>>2];c[B+8>>2]=c[v+8>>2];c[B+12>>2]=c[v+12>>2];B=z+36|0;c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];B=z+52|0;c[B>>2]=c[p>>2];c[B+4>>2]=c[p+4>>2];c[B+8>>2]=c[p+8>>2];c[B+12>>2]=c[p+12>>2]}}while(0);t=t+1|0;}while((t|0)<(e|0))}}while(0);e=k;aDD(e|0,0,136);k=c[f>>2]|0;if((k|0)<0){m=b+12|0;d=b+16|0;if((c[m>>2]|0)<0){l=c[d>>2]|0;s=b+20|0;if((l|0)!=0){if((a[s]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-136+132>>2]|0)}c[d>>2]=0}a[s]=1;c[d>>2]=0;c[m>>2]=0;E=k}else{E=k}do{k=(c[d>>2]|0)+(E*136|0)|0;aDC(k|0,e|0,136)|0;E=E+1|0;}while((E|0)<0)}c[f>>2]=0;f=j;aDD(f|0,0,136);j=c[o>>2]|0;if((j|0)<0){E=b+32|0;e=b+36|0;if((c[E>>2]|0)<0){d=c[e>>2]|0;k=b+40|0;if((d|0)!=0){if((a[k]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-136+132>>2]|0)}c[e>>2]=0}a[k]=1;c[e>>2]=0;c[E>>2]=0;F=j}else{F=j}do{j=(c[e>>2]|0)+(F*136|0)|0;aDC(j|0,f|0,136)|0;F=F+1|0;}while((F|0)<0)}c[o>>2]=0;o=h;aDD(o|0,0,136);h=b+48|0;F=c[h>>2]|0;if((F|0)>=0){c[h>>2]=0;i=n;return+0.0}f=b+52|0;e=b+56|0;if((c[f>>2]|0)<0){j=c[e>>2]|0;E=b+60|0;if((j|0)!=0){if((a[E]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[j-136+132>>2]|0)}c[e>>2]=0}a[E]=1;c[e>>2]=0;c[f>>2]=0;G=F}else{G=F}do{F=(c[e>>2]|0)+(G*136|0)|0;aDC(F|0,o|0,136)|0;G=G+1|0;}while((G|0)<0);c[h>>2]=0;i=n;return+0.0}function aqp(b){b=b|0;var d=0;c[b>>2]=22176;do{if((a[b+176|0]&1)!=0){d=c[b+172>>2]|0;if((d|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}}while(0);atA(b|0);if((b|0)==0){return}aDB(b);return}function aqq(b){b=b|0;var d=0;c[b>>2]=22176;do{if((a[b+176|0]&1)!=0){d=c[b+172>>2]|0;if((d|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}}while(0);atA(b|0);return}function aqr(a,b,d,e){a=a|0;b=+b;d=d|0;e=+e;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;d=i;i=i+136|0;f=d|0;h=d+64|0;j=a+8|0;k=c[j>>2]|0;if((k|0)>0){l=a+16|0;m=0;n=k;while(1){k=c[(c[l>>2]|0)+(m<<2)>>2]|0;do{if((c[k+232>>2]&2|0)==0){o=n}else{p=k;if((k|0)==0){o=n;break}q=c[k+204>>2]|0;if((q&1|0)!=0){o=n;break}r=c[k+216>>2]|0;if((r|0)==5|(r|0)==2){o=n;break}if((q&3|0)==0){e=+g[k+360>>2]*+g[k+344>>2];s=+g[k+364>>2]*+g[k+348>>2];q=k+404|0;g[q>>2]=+g[k+356>>2]*+g[k+340>>2]+ +g[q>>2];q=k+408|0;g[q>>2]=e+ +g[q>>2];q=k+412|0;g[q>>2]=s+ +g[q>>2]}ap5(p,b);ap3(p,b);anY(k+4|0,+g[k+304>>2],+g[k+308>>2],+g[k+312>>2],k+320|0,b,k+68|0);o=c[j>>2]|0}}while(0);k=m+1|0;if((k|0)<(o|0)){m=k;n=o}else{break}}}o=a|0;g[a+28>>2]=b;c[a+32>>2]=0;c[a+48>>2]=cA[c[(c[a>>2]|0)+16>>2]&4095](o)|0;ct[c[(c[a>>2]|0)+40>>2]&2047](o);o=a+24|0;n=c[o>>2]|0;m=cA[c[(c[n>>2]|0)+36>>2]&4095](n)|0;if((m|0)!=0){n=c[o>>2]|0;l=cA[c[(c[n>>2]|0)+44>>2]&4095](n)|0;g[h>>2]=.6000000238418579;g[h+4>>2]=1.0;g[h+8>>2]=.30000001192092896;g[h+16>>2]=0.0;g[h+24>>2]=20.0;c[h+20>>2]=10;g[h+32>>2]=.20000000298023224;g[h+36>>2]=.10000000149011612;g[h+40>>2]=0.0;g[h+28>>2]=1.0;c[h+44>>2]=0;g[h+48>>2]=-.019999999552965164;g[h+52>>2]=0.0;g[h+56>>2]=.8500000238418579;c[h+60>>2]=260;c[h+64>>2]=2;c[h+68>>2]=128;g[h+12>>2]=b;n=a+172|0;k=c[n>>2]|0;dA[c[(c[k>>2]|0)+8>>2]&511](k,0,m);k=c[n>>2]|0;p=c[(c[k>>2]|0)+12>>2]|0;q=c[a+16>>2]|0;r=c[j>>2]|0;t=a+80|0;u=c[t>>2]|0;v=a+72|0;w=c[v>>2]|0;x=c[o>>2]|0;+cN[p&63](k,q,r,l,m,0,0,h,u,w,x);x=c[n>>2]|0;dI[c[(c[x>>2]|0)+16>>2]&1023](x,h,c[t>>2]|0,c[v>>2]|0)}v=c[j>>2]|0;if((v|0)<=0){y=a;z=c[y>>2]|0;A=z+8|0;B=c[A>>2]|0;ct[B&2047](a);C=c[y>>2]|0;D=C+76|0;E=c[D>>2]|0;ct[E&2047](a);F=c[y>>2]|0;G=F+116|0;H=c[G>>2]|0;ct[H&2047](a);i=d;return 1}t=a+16|0;h=0;x=v;while(1){v=c[(c[t>>2]|0)+(h<<2)>>2]|0;do{if((c[v+232>>2]&2|0)==0){I=x}else{if((v|0)==0){I=x;break}n=c[v+216>>2]|0;if((n|0)==5|(n|0)==2){I=x;break}if((c[v+204>>2]&1|0)!=0){I=x;break}anY(v+4|0,+g[v+304>>2],+g[v+308>>2],+g[v+312>>2],v+320|0,b,f);ap4(v,f);I=c[j>>2]|0}}while(0);v=h+1|0;if((v|0)<(I|0)){h=v;x=I}else{break}}y=a;z=c[y>>2]|0;A=z+8|0;B=c[A>>2]|0;ct[B&2047](a);C=c[y>>2]|0;D=C+76|0;E=c[D>>2]|0;ct[E&2047](a);F=c[y>>2]|0;G=F+116|0;H=c[G>>2]|0;ct[H&2047](a);i=d;return 1}function aqs(a,b,d,e,f,h,j,k,l,m,n){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0;n=i;i=i+16|0;o=n+8|0;aDo(17448);p=a;+c7[c[(c[p>>2]|0)+32>>2]&63](a,b,d,e,f,h,j,k,l,m);+c7[c[(c[p>>2]|0)+36>>2]&63](a,b,d,e,f,h,j,k,l,m);+c7[c[(c[p>>2]|0)+28>>2]&63](a,b,d,e,f,h,j,k,l,m);m=c[9152]|0;l=m+16|0;k=(c[l>>2]|0)-1|0;c[l>>2]=k;if((k|0)!=0){i=n;return+0.0}do{if((c[m+4>>2]|0)==0){q=m}else{b3(o|0,0)|0;k=c[10742]|0;j=m+8|0;g[j>>2]=+(((c[o+4>>2]|0)-(c[k+4>>2]|0)+(((c[o>>2]|0)-(c[k>>2]|0)|0)*1e6|0)-(c[m+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[j>>2];if((c[l>>2]|0)==0){q=c[9152]|0;break}else{i=n;return+0.0}}}while(0);c[9152]=c[q+20>>2];i=n;return+0.0}function aqt(a){a=a|0;return}function aqu(a,b){a=a|0;b=b|0;return}function aqv(a,b){a=a|0;b=b|0;return}function aqw(a,b,c){a=a|0;b=b|0;c=c|0;return}function aqx(a,b){a=a|0;b=b|0;return}function aqy(a){a=a|0;return 0}function aqz(a,b){a=a|0;b=b|0;return 0}function aqA(a,b){a=a|0;b=b|0;return 0}function aqB(a){a=a|0;return 1}function aqC(a,b){a=a|0;b=b|0;return}function aqD(a,b){a=a|0;b=b|0;return}function aqE(a,b){a=a|0;b=b|0;return}function aqF(a,b){a=a|0;b=b|0;return}function aqG(a){a=a|0;return c[a+172>>2]|0}function aqH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=a+8|0;d=c[b>>2]|0;if((d|0)<=0){return}e=a+16|0;a=0;f=d;while(1){d=c[(c[e>>2]|0)+(a<<2)>>2]|0;if((c[d+232>>2]&2|0)==0|(d|0)==0){g=f}else{aDD(d+404|0,0,32);g=c[b>>2]|0}d=a+1|0;if((d|0)<(g|0)){a=d;f=g}else{break}}return}function aqI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0;d=a+180|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];d=a+8|0;f=c[d>>2]|0;if((f|0)<=0){return}h=a+16|0;a=b|0;i=b+4|0;j=b+8|0;b=0;k=f;while(1){f=c[(c[h>>2]|0)+(b<<2)>>2]|0;if((c[f+232>>2]&2|0)==0|(f|0)==0){l=k}else{m=+g[f+336>>2];if(m!=0.0){n=1.0/m;m=n*+g[i>>2];o=n*+g[j>>2];g[f+356>>2]=n*+g[a>>2];g[f+360>>2]=m;g[f+364>>2]=o;g[f+368>>2]=0.0}p=f+372|0;c[p>>2]=c[e>>2];c[p+4>>2]=c[e+4>>2];c[p+8>>2]=c[e+8>>2];c[p+12>>2]=c[e+12>>2];l=c[d>>2]|0}p=b+1|0;if((p|0)<(l|0)){b=p;k=l}else{break}}return}function aqJ(a,b){a=a|0;b=b|0;var d=0;d=a;a=b+180|0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function aqK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=b|0;e=b+188|0;b=c[e>>2]|0;if((b|0)!=0){f=a+76|0;g=c[f>>2]|0;h=cA[c[(c[g>>2]|0)+36>>2]&4095](g)|0;g=a+24|0;dA[c[(c[h>>2]|0)+40>>2]&511](h,b,c[g>>2]|0);h=c[f>>2]|0;dA[c[(c[h>>2]|0)+12>>2]&511](h,b,c[g>>2]|0);c[e>>2]=0}e=a+8|0;g=c[e>>2]|0;b=a+16|0;a=0;while(1){if((a|0)>=(g|0)){i=5136;break}j=c[b>>2]|0;k=j+(a<<2)|0;if((c[k>>2]|0)==(d|0)){break}else{a=a+1|0}}if((i|0)==5136){return}i=g-1|0;c[k>>2]=c[j+(i<<2)>>2];c[(c[b>>2]|0)+(i<<2)>>2]=d;c[e>>2]=(c[e>>2]|0)-1;return}function aqL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!((c[b+232>>2]&2|0)==0|(b|0)==0)){cv[c[(c[a>>2]|0)+88>>2]&2047](a,b);return}d=b+188|0;e=c[d>>2]|0;if((e|0)!=0){f=a+76|0;g=c[f>>2]|0;h=cA[c[(c[g>>2]|0)+36>>2]&4095](g)|0;g=a+24|0;dA[c[(c[h>>2]|0)+40>>2]&511](h,e,c[g>>2]|0);h=c[f>>2]|0;dA[c[(c[h>>2]|0)+12>>2]&511](h,e,c[g>>2]|0);c[d>>2]=0}d=a+8|0;g=c[d>>2]|0;e=a+16|0;a=0;while(1){if((a|0)>=(g|0)){i=5148;break}j=c[e>>2]|0;k=j+(a<<2)|0;if((c[k>>2]|0)==(b|0)){break}else{a=a+1|0}}if((i|0)==5148){return}i=g-1|0;c[k>>2]=c[j+(i<<2)>>2];c[(c[e>>2]|0)+(i<<2)>>2]=b;c[d>>2]=(c[d>>2]|0)-1;return}function aqM(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,h=0.0,i=0,j=0;d=a+180|0;e=+g[b+336>>2];if(e!=0.0){f=1.0/e;e=f*+g[a+184>>2];h=f*+g[a+188>>2];g[b+356>>2]=f*+g[d>>2];g[b+360>>2]=e;g[b+364>>2]=h;g[b+368>>2]=0.0}i=b+372|0;j=d;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];if((c[b+192>>2]|0)==0){return}dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b|0,1,-1);return}function aqN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0.0,i=0.0,j=0.0,k=0,l=0;f=a+180|0;h=+g[b+336>>2];if(h!=0.0){i=1.0/h;h=i*+g[a+184>>2];j=i*+g[a+188>>2];g[b+356>>2]=i*+g[f>>2];g[b+360>>2]=h;g[b+364>>2]=j;g[b+368>>2]=0.0}k=b+372|0;l=f;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];if((c[b+192>>2]|0)==0){return}dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b|0,d,e);return}function aqO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;b=i;i=i+32|0;d=b|0;e=b+16|0;f=a+8|0;g=c[f>>2]|0;if((g|0)<=0){i=b;return}h=a+16|0;j=a+76|0;k=a+24|0;a=0;l=g;while(1){g=c[(c[h>>2]|0)+(a<<2)>>2]|0;do{if((c[g+232>>2]&2|0)==0|(g|0)==0){m=l}else{n=c[g+216>>2]|0;if((n|0)==5|(n|0)==2){m=l;break}if((c[g+204>>2]&1|0)!=0){m=l;break}n=c[g+192>>2]|0;dI[c[(c[n>>2]|0)+8>>2]&1023](n,g+4|0,d,e);n=c[j>>2]|0;co[c[(c[n>>2]|0)+16>>2]&255](n,c[g+188>>2]|0,d,e,c[k>>2]|0);m=c[f>>2]|0}}while(0);g=a+1|0;if((g|0)<(m|0)){a=g;l=m}else{break}}i=b;return}function aqP(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+8|0;d=c[b>>2]|0;if((d|0)<=0){return}e=a+16|0;a=0;f=d;while(1){d=c[(c[e>>2]|0)+(a<<2)>>2]|0;do{if((c[d+232>>2]&2|0)==0|(d|0)==0){g=f}else{h=c[d+472>>2]|0;if((h|0)==0){g=f;break}if((c[d+216>>2]|0)==2){g=f;break}cv[c[(c[h>>2]|0)+12>>2]&2047](h,d+4|0);g=c[b>>2]|0}}while(0);d=a+1|0;if((d|0)<(g|0)){a=d;f=g}else{break}}return}function aqQ(b,d){b=b|0;d=d|0;var e=0,f=0;e=b+176|0;f=b+172|0;do{if((a[e]&1)!=0){b=c[f>>2]|0;if((b|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[b-4>>2]|0)}}while(0);a[e]=0;c[f>>2]=d;return}
function aqR(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0,aq=0,ar=0,as=0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0.0,aB=0;f=i;i=i+448|0;h=f|0;j=f+48|0;k=f+96|0;l=f+144|0;m=f+192|0;n=f+256|0;o=f+320|0;p=f+384|0;q=b+172|0;do{if((a[q]&1)==0){if((a[b+40|0]&1)==0){r=3;break}s=b+816|0;t=j;anx(j,e|0,b+108|0);u=+g[b+156>>2];v=+g[b+160>>2];w=+g[b+164>>2];x=+g[e>>2]*u+ +g[e+4>>2]*v+ +g[e+8>>2]*w+ +g[e+48>>2];y=+g[e+16>>2]*u+ +g[e+20>>2]*v+ +g[e+24>>2]*w+ +g[e+52>>2];z=+g[e+32>>2]*u+ +g[e+36>>2]*v+ +g[e+40>>2]*w+ +g[e+56>>2];A=o+48|0;B=o|0;do{B=B+16|0;}while((B|0)!=(A|0));A=o;c[A>>2]=c[t>>2];c[A+4>>2]=c[t+4>>2];c[A+8>>2]=c[t+8>>2];c[A+12>>2]=c[t+12>>2];B=o+16|0;C=j+16|0;c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];c[B+8>>2]=c[C+8>>2];c[B+12>>2]=c[C+12>>2];C=o+32|0;D=j+32|0;c[C>>2]=c[D>>2];c[C+4>>2]=c[D+4>>2];c[C+8>>2]=c[D+8>>2];c[C+12>>2]=c[D+12>>2];g[o+48>>2]=x;g[o+52>>2]=y;g[o+56>>2]=z;g[o+60>>2]=0.0;D=s;c[D>>2]=c[A>>2];c[D+4>>2]=c[A+4>>2];c[D+8>>2]=c[A+8>>2];c[D+12>>2]=c[A+12>>2];A=b+832|0;c[A>>2]=c[B>>2];c[A+4>>2]=c[B+4>>2];c[A+8>>2]=c[B+8>>2];c[A+12>>2]=c[B+12>>2];B=b+848|0;c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];c[B+8>>2]=c[C+8>>2];c[B+12>>2]=c[C+12>>2];C=b+864|0;B=o+48|0;c[C>>2]=c[B>>2];c[C+4>>2]=c[B+4>>2];c[C+8>>2]=c[B+8>>2];c[C+12>>2]=c[B+12>>2];B=b+880|0;C=h;anx(h,d|0,b+44|0);w=+g[b+92>>2];v=+g[b+96>>2];u=+g[b+100>>2];E=+g[d>>2]*w+ +g[d+4>>2]*v+ +g[d+8>>2]*u+ +g[d+48>>2];F=+g[d+16>>2]*w+ +g[d+20>>2]*v+ +g[d+24>>2]*u+ +g[d+52>>2];G=+g[d+32>>2]*w+ +g[d+36>>2]*v+ +g[d+40>>2]*u+ +g[d+56>>2];A=p+48|0;D=p|0;do{D=D+16|0;}while((D|0)!=(A|0));A=p;c[A>>2]=c[C>>2];c[A+4>>2]=c[C+4>>2];c[A+8>>2]=c[C+8>>2];c[A+12>>2]=c[C+12>>2];D=p+16|0;s=h+16|0;c[D>>2]=c[s>>2];c[D+4>>2]=c[s+4>>2];c[D+8>>2]=c[s+8>>2];c[D+12>>2]=c[s+12>>2];s=p+32|0;t=h+32|0;c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];g[p+48>>2]=E;g[p+52>>2]=F;g[p+56>>2]=G;g[p+60>>2]=0.0;t=B;c[t>>2]=c[A>>2];c[t+4>>2]=c[A+4>>2];c[t+8>>2]=c[A+8>>2];c[t+12>>2]=c[A+12>>2];A=b+896|0;c[A>>2]=c[D>>2];c[A+4>>2]=c[D+4>>2];c[A+8>>2]=c[D+8>>2];c[A+12>>2]=c[D+12>>2];D=b+912|0;c[D>>2]=c[s>>2];c[D+4>>2]=c[s+4>>2];c[D+8>>2]=c[s+8>>2];c[D+12>>2]=c[s+12>>2];s=b+928|0;D=p+48|0;c[s>>2]=c[D>>2];c[s+4>>2]=c[D+4>>2];c[s+8>>2]=c[D+8>>2];c[s+12>>2]=c[D+12>>2]}else{r=3}}while(0);if((r|0)==3){r=b+816|0;p=l;anx(l,d|0,b+44|0);z=+g[b+92>>2];y=+g[b+96>>2];x=+g[b+100>>2];u=+g[d>>2]*z+ +g[d+4>>2]*y+ +g[d+8>>2]*x+ +g[d+48>>2];v=+g[d+16>>2]*z+ +g[d+20>>2]*y+ +g[d+24>>2]*x+ +g[d+52>>2];w=+g[d+32>>2]*z+ +g[d+36>>2]*y+ +g[d+40>>2]*x+ +g[d+56>>2];d=m+48|0;h=m|0;do{h=h+16|0;}while((h|0)!=(d|0));d=m;c[d>>2]=c[p>>2];c[d+4>>2]=c[p+4>>2];c[d+8>>2]=c[p+8>>2];c[d+12>>2]=c[p+12>>2];p=m+16|0;h=l+16|0;c[p>>2]=c[h>>2];c[p+4>>2]=c[h+4>>2];c[p+8>>2]=c[h+8>>2];c[p+12>>2]=c[h+12>>2];h=m+32|0;o=l+32|0;c[h>>2]=c[o>>2];c[h+4>>2]=c[o+4>>2];c[h+8>>2]=c[o+8>>2];c[h+12>>2]=c[o+12>>2];g[m+48>>2]=u;g[m+52>>2]=v;g[m+56>>2]=w;g[m+60>>2]=0.0;o=r;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];d=b+832|0;c[d>>2]=c[p>>2];c[d+4>>2]=c[p+4>>2];c[d+8>>2]=c[p+8>>2];c[d+12>>2]=c[p+12>>2];p=b+848|0;c[p>>2]=c[h>>2];c[p+4>>2]=c[h+4>>2];c[p+8>>2]=c[h+8>>2];c[p+12>>2]=c[h+12>>2];h=b+864|0;p=m+48|0;c[h>>2]=c[p>>2];c[h+4>>2]=c[p+4>>2];c[h+8>>2]=c[p+8>>2];c[h+12>>2]=c[p+12>>2];p=b+880|0;h=k;anx(k,e|0,b+108|0);w=+g[b+156>>2];v=+g[b+160>>2];u=+g[b+164>>2];x=+g[e>>2]*w+ +g[e+4>>2]*v+ +g[e+8>>2]*u+ +g[e+48>>2];y=+g[e+16>>2]*w+ +g[e+20>>2]*v+ +g[e+24>>2]*u+ +g[e+52>>2];z=+g[e+32>>2]*w+ +g[e+36>>2]*v+ +g[e+40>>2]*u+ +g[e+56>>2];e=n+48|0;m=n|0;do{m=m+16|0;}while((m|0)!=(e|0));e=n;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];h=n+16|0;m=k+16|0;c[h>>2]=c[m>>2];c[h+4>>2]=c[m+4>>2];c[h+8>>2]=c[m+8>>2];c[h+12>>2]=c[m+12>>2];m=n+32|0;d=k+32|0;c[m>>2]=c[d>>2];c[m+4>>2]=c[d+4>>2];c[m+8>>2]=c[d+8>>2];c[m+12>>2]=c[d+12>>2];g[n+48>>2]=x;g[n+52>>2]=y;g[n+56>>2]=z;g[n+60>>2]=0.0;d=p;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=b+896|0;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];h=b+912|0;c[h>>2]=c[m>>2];c[h+4>>2]=c[m+4>>2];c[h+8>>2]=c[m+8>>2];c[h+12>>2]=c[m+12>>2];m=b+928|0;h=n+48|0;c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];c[m+12>>2]=c[h+12>>2]}h=b+960|0;m=h;n=b+864|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];n=b+976|0;m=n;e=b+928|0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];z=+g[b+816>>2];y=+g[b+832>>2];x=+g[b+848>>2];g[b+944>>2]=z;g[b+948>>2]=y;g[b+952>>2]=x;g[b+956>>2]=0.0;do{if((a[q]&1)==0){if((a[b+40|0]&1)!=0){break}u=+g[h>>2];v=u- +g[n>>2];w=+g[b+964>>2];H=w- +g[b+980>>2];I=+g[b+968>>2];J=I- +g[b+984>>2];g[b+1008>>2]=v;g[b+1012>>2]=H;g[b+1016>>2]=J;g[b+1020>>2]=0.0;K=v;L=H;M=J;N=u;O=w;P=I;Q=z*K;R=y*L;S=Q+R;T=x*M;U=S+T;V=z*U;W=y*U;X=x*U;Y=N+V;Z=O+W;_=P+X;$=b+992|0;g[$>>2]=Y;aa=b+996|0;g[aa>>2]=Z;ab=b+1e3|0;g[ab>>2]=_;ac=b+1004|0;g[ac>>2]=0.0;ad=b+1024|0;g[ad>>2]=U;ae=b+820|0;af=b+836|0;ag=b+852|0;ah=+g[ae>>2];ai=+g[af>>2];aj=+g[ag>>2];ak=ah*K;al=ai*L;am=ak+al;an=aj*M;ao=am+an;ap=b+1028|0;g[ap>>2]=ao;aq=b+824|0;ar=b+840|0;as=b+856|0;at=+g[aq>>2];au=+g[ar>>2];av=+g[as>>2];aw=at*K;ax=au*L;ay=aw+ax;az=av*M;aA=ay+az;aB=b+1032|0;g[aB>>2]=aA;i=f;return}}while(0);I=+g[h>>2];w=+g[n>>2]-I;u=+g[b+964>>2];J=+g[b+980>>2]-u;H=+g[b+968>>2];v=+g[b+984>>2]-H;g[b+1008>>2]=w;g[b+1012>>2]=J;g[b+1016>>2]=v;g[b+1020>>2]=0.0;K=w;L=J;M=v;N=I;O=u;P=H;Q=z*K;R=y*L;S=Q+R;T=x*M;U=S+T;V=z*U;W=y*U;X=x*U;Y=N+V;Z=O+W;_=P+X;$=b+992|0;g[$>>2]=Y;aa=b+996|0;g[aa>>2]=Z;ab=b+1e3|0;g[ab>>2]=_;ac=b+1004|0;g[ac>>2]=0.0;ad=b+1024|0;g[ad>>2]=U;ae=b+820|0;af=b+836|0;ag=b+852|0;ah=+g[ae>>2];ai=+g[af>>2];aj=+g[ag>>2];ak=ah*K;al=ai*L;am=ak+al;an=aj*M;ao=am+an;ap=b+1028|0;g[ap>>2]=ao;aq=b+824|0;ar=b+840|0;as=b+856|0;at=+g[aq>>2];au=+g[ar>>2];av=+g[as>>2];aw=at*K;ax=au*L;ay=aw+ax;az=av*M;aA=ay+az;aB=b+1032|0;g[aB>>2]=aA;i=f;return}function aqS(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0.0,j=0.0,k=0.0,l=0;e=d|0;if((a[b+40|0]&1)!=0){c[e>>2]=0;c[d+4>>2]=0;return}c[e>>2]=4;f=d+4|0;c[f>>2]=2;aqR(b,(c[b+24>>2]|0)+4|0,(c[b+28>>2]|0)+4|0);aqT(b);d=b+288|0;a[d]=0;h=b+1024|0;i=+g[h>>2];g[b+1072>>2]=i;j=+g[b+176>>2];k=+g[b+180>>2];do{if(j>k){l=27}else{if(i>k){g[h>>2]=i-k;a[d]=1;l=28;break}if(i>=j){l=27;break}g[h>>2]=i-j;a[d]=1;l=28}}while(0);if((l|0)==27){g[h>>2]=0.0;if((a[b+1088|0]&1)!=0){l=28}}if((l|0)==28){c[e>>2]=(c[e>>2]|0)+1;c[f>>2]=(c[f>>2]|0)-1}do{if((a[b+289|0]&1)==0){if((a[b+1104|0]&1)!=0){break}return}}while(0);c[e>>2]=(c[e>>2]|0)+1;c[f>>2]=(c[f>>2]|0)-1;return}function aqT(b){b=b|0;var c=0,d=0,e=0,f=0.0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;c=b+1080|0;g[c>>2]=0.0;d=b+289|0;a[d]=0;e=b+184|0;f=+g[e>>2];h=b+188|0;i=+g[h>>2];if(f>i){return}j=+g[b+884>>2];k=+g[b+900>>2];l=+g[b+916>>2];m=+ao0(+Y(+(+g[b+824>>2]*j+ +g[b+840>>2]*k+ +g[b+856>>2]*l),+(+g[b+820>>2]*j+ +g[b+836>>2]*k+ +g[b+852>>2]*l)),f,i);g[b+1076>>2]=m;i=+g[e>>2];if(m<i){g[c>>2]=m-i;a[d]=1;return}i=+g[h>>2];if(m<=i){return}g[c>>2]=m-i;a[d]=1;return}function aqU(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+24>>2]|0;e=c[a+28>>2]|0;aqV(a,b,d+4|0,e+4|0,d+304|0,e+304|0,+g[d+336>>2],+g[e+336>>2]);return}function aqV(b,d,e,f,h,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=+j;k=+k;var l=0,m=0,n=0.0,o=0,p=0,q=0.0,r=0,s=0,t=0.0,u=0,v=0,w=0.0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0,Y=0,Z=0,_=0,$=0.0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0.0,aB=0.0,aC=0.0,aD=0.0,aE=0.0,aF=0.0,aG=0,aH=0,aI=0.0,aJ=0.0,aK=0,aL=0.0,aM=0.0,aN=0.0;l=d+24|0;m=c[l>>2]|0;n=(a[b+172|0]&1)!=0?1.0:-1.0;o=b+928|0;p=b+864|0;q=+g[o>>2]- +g[p>>2];r=b+932|0;s=b+868|0;t=+g[r>>2]- +g[s>>2];u=b+936|0;v=b+872|0;w=+g[u>>2]- +g[v>>2];if(j<1.1920928955078125e-7){x=1}else{x=k<1.1920928955078125e-7}y=j+k;if(y>0.0){z=k/y}else{z=.5}y=1.0-z;k=+g[b+816>>2];j=+g[b+832>>2];A=+g[b+848>>2];B=+g[b+880>>2];C=+g[b+896>>2];D=+g[b+912>>2];E=b+41|0;do{if((a[E]&1)==0){F=k;G=j;H=A;I=+g[b+824>>2];J=+g[b+840>>2];K=+g[b+856>>2];L=+g[b+820>>2];M=+g[b+836>>2];N=+g[b+852>>2]}else{O=z*k+y*B;R=z*j+y*C;S=z*A+y*D;T=1.0/+Q(+(O*O+R*R+S*S));U=O*T;O=R*T;R=S*T;if(+P(+R)>.7071067690849304){T=R*R+O*O;S=1.0/+Q(+T);V=S*(-0.0-R);W=O*S;F=U;G=O;H=R;I=T*S;J=W*(-0.0-U);K=U*V;L=0.0;M=V;N=W;break}else{W=U*U+O*O;V=1.0/+Q(+W);S=V*(-0.0-O);T=U*V;F=U;G=O;H=R;I=T*(-0.0-R);J=R*S;K=W*V;L=S;M=T;N=0.0;break}}}while(0);X=d+12|0;g[c[X>>2]>>2]=L;g[(c[X>>2]|0)+4>>2]=M;g[(c[X>>2]|0)+8>>2]=N;g[(c[X>>2]|0)+(m<<2)>>2]=I;Y=m+1|0;g[(c[X>>2]|0)+(Y<<2)>>2]=J;Z=m+2|0;g[(c[X>>2]|0)+(Z<<2)>>2]=K;_=d+20|0;g[c[_>>2]>>2]=-0.0-L;g[(c[_>>2]|0)+4>>2]=-0.0-M;g[(c[_>>2]|0)+8>>2]=-0.0-N;g[(c[_>>2]|0)+(m<<2)>>2]=-0.0-I;g[(c[_>>2]|0)+(Y<<2)>>2]=-0.0-J;g[(c[_>>2]|0)+(Z<<2)>>2]=-0.0-K;Z=b+292|0;T=+g[b+272>>2];if((c[Z>>2]&128|0)==0){$=T*+g[d+4>>2]}else{$=T}Y=d|0;T=$*+g[Y>>2];$=j*D-A*C;S=A*B-k*D;D=k*C-j*B;ab=d+28|0;g[c[ab>>2]>>2]=T*($*L+S*M+D*N);g[(c[ab>>2]|0)+(m<<2)>>2]=T*($*I+S*J+D*K);if((c[Z>>2]&64|0)!=0){ac=b+284|0;ad=d+32|0;g[c[ad>>2]>>2]=+g[ac>>2];g[(c[ad>>2]|0)+(m<<2)>>2]=+g[ac>>2]}D=+g[e+48>>2];S=+g[e+52>>2];$=+g[e+56>>2];T=+g[f+48>>2];B=+g[f+52>>2];j=+g[f+56>>2];f=m<<1;e=m*3|0;if((a[E]&1)==0){C=T-D;k=B-S;A=j-$;V=k*N-A*M;W=A*L-C*N;R=C*M-k*L;g[(c[X>>2]|0)+(f<<2)>>2]=z*V;m=f|1;g[(c[X>>2]|0)+(m<<2)>>2]=z*W;ac=f+2|0;g[(c[X>>2]|0)+(ac<<2)>>2]=z*R;g[(c[_>>2]|0)+(f<<2)>>2]=y*V;g[(c[_>>2]|0)+(m<<2)>>2]=y*W;g[(c[_>>2]|0)+(ac<<2)>>2]=y*R;R=k*K-A*J;W=A*I-C*K;V=C*J-k*I;g[(c[X>>2]|0)+(e<<2)>>2]=z*R;ad=e+1|0;g[(c[X>>2]|0)+(ad<<2)>>2]=z*W;ae=e+2|0;g[(c[X>>2]|0)+(ae<<2)>>2]=z*V;g[(c[_>>2]|0)+(e<<2)>>2]=y*R;g[(c[_>>2]|0)+(ad<<2)>>2]=y*W;g[(c[_>>2]|0)+(ae<<2)>>2]=y*V;af=d+8|0;g[(c[af>>2]|0)+(f<<2)>>2]=L;g[(c[af>>2]|0)+(m<<2)>>2]=M;g[(c[af>>2]|0)+(ac<<2)>>2]=N;g[(c[af>>2]|0)+(e<<2)>>2]=I;g[(c[af>>2]|0)+(ad<<2)>>2]=J;g[(c[af>>2]|0)+(ae<<2)>>2]=K;ag=C;ah=k;ai=A;aj=0.0;ak=0.0;al=0.0;am=0.0;an=0.0;ao=0.0;ap=L;aq=M;ar=N;as=I;at=J;au=K}else{K=+g[o>>2]-T;T=+g[r>>2]-B;B=+g[u>>2]-j;j=F*K+G*T+H*B;J=F*j;I=G*j;N=H*j;j=K-J;K=T-I;T=B-N;B=+g[p>>2]-D;D=+g[s>>2]-S;S=+g[v>>2]-$;$=F*B+G*D+H*S;M=F*$;L=G*$;A=H*$;$=B-M;B=D-L;D=S-A;S=+g[b+1072>>2]- +g[b+1024>>2];k=M+F*S-J;J=L+G*S-I;I=A+H*S-N;N=$+z*k;S=B+z*J;A=D+z*I;L=j-y*k;k=K-y*J;J=T-y*I;I=z*j+y*$;$=z*K+y*B;B=z*T+y*D;D=I*I+$*$+B*B;if(D>1.1920928955078125e-7){T=1.0/+Q(+D);av=T*B;aw=T*$;ax=I*T}else{av=+g[b+852>>2];aw=+g[b+836>>2];ax=+g[b+820>>2]}T=G*av-H*aw;I=H*ax-F*av;$=F*aw-G*ax;g[(c[X>>2]|0)+(f<<2)>>2]=S*av-A*aw;v=f|1;g[(c[X>>2]|0)+(v<<2)>>2]=A*ax-N*av;s=f+2|0;g[(c[X>>2]|0)+(s<<2)>>2]=N*aw-S*ax;g[(c[_>>2]|0)+(f<<2)>>2]=-0.0-(k*av-J*aw);g[(c[_>>2]|0)+(v<<2)>>2]=-0.0-(J*ax-L*av);g[(c[_>>2]|0)+(s<<2)>>2]=-0.0-(L*aw-k*ax);B=S*$-A*I;D=A*T-N*$;K=N*I-S*T;j=k*$-J*I;M=J*T-L*$;C=L*I-k*T;do{if(x){if((a[b+289|0]&1)==0){ay=B;az=D;aA=K;aB=j;aC=M;aD=C;break}ay=z*B;az=z*D;aA=z*K;aB=y*j;aC=y*M;aD=y*C}else{ay=B;az=D;aA=K;aB=j;aC=M;aD=C}}while(0);g[(c[X>>2]|0)+(e<<2)>>2]=ay;p=e+1|0;g[(c[X>>2]|0)+(p<<2)>>2]=az;u=e+2|0;g[(c[X>>2]|0)+(u<<2)>>2]=aA;g[(c[_>>2]|0)+(e<<2)>>2]=-0.0-aB;g[(c[_>>2]|0)+(p<<2)>>2]=-0.0-aC;g[(c[_>>2]|0)+(u<<2)>>2]=-0.0-aD;r=d+8|0;g[(c[r>>2]|0)+(f<<2)>>2]=ax;g[(c[r>>2]|0)+(v<<2)>>2]=aw;g[(c[r>>2]|0)+(s<<2)>>2]=av;g[(c[r>>2]|0)+(e<<2)>>2]=T;g[(c[r>>2]|0)+(p<<2)>>2]=I;g[(c[r>>2]|0)+(u<<2)>>2]=$;ag=0.0;ah=0.0;ai=0.0;aj=L;ak=k;al=J;am=N;an=S;ao=A;ap=ax;aq=aw;ar=av;as=T;at=I;au=$}$=+g[b+256>>2];if((c[Z>>2]&32|0)==0){aE=$*+g[d+4>>2]}else{aE=$}$=aE*+g[Y>>2];g[(c[ab>>2]|0)+(f<<2)>>2]=$*(q*ap+t*aq+w*ar);g[(c[ab>>2]|0)+(e<<2)>>2]=$*(q*as+t*at+w*au);if((c[Z>>2]&16|0)!=0){u=b+268|0;r=d+32|0;g[(c[r>>2]|0)+(f<<2)>>2]=+g[u>>2];g[(c[r>>2]|0)+(e<<2)>>2]=+g[u>>2]}if((a[b+288|0]&1)==0){aF=0.0;aG=0}else{au=n*+g[b+1024>>2];aF=au;aG=au>0.0?2:1}u=(aG|0)!=0;e=(a[b+1088|0]&1)==0;do{if(e&(u^1)){aH=4}else{r=c[l>>2]<<2;f=d+8|0;g[(c[f>>2]|0)+(r<<2)>>2]=F;p=r|1;g[(c[f>>2]|0)+(p<<2)>>2]=G;s=r|2;g[(c[f>>2]|0)+(s<<2)>>2]=H;do{if((a[E]&1)==0){au=H*ah-G*ai;w=F*ai-H*ag;at=G*ag-F*ah;g[(c[X>>2]|0)+(r<<2)>>2]=z*au;g[(c[X>>2]|0)+(p<<2)>>2]=z*w;g[(c[X>>2]|0)+(s<<2)>>2]=z*at;g[(c[_>>2]|0)+(r<<2)>>2]=y*au;g[(c[_>>2]|0)+(p<<2)>>2]=y*w;g[(c[_>>2]|0)+(s<<2)>>2]=y*at}else{if(x){break}g[(c[X>>2]|0)+(r<<2)>>2]=H*an-G*ao;g[(c[X>>2]|0)+(p<<2)>>2]=F*ao-H*am;g[(c[X>>2]|0)+(s<<2)>>2]=G*am-F*an;g[(c[_>>2]|0)+(r<<2)>>2]=-0.0-(H*ak-G*al);g[(c[_>>2]|0)+(p<<2)>>2]=-0.0-(F*al-H*aj);g[(c[_>>2]|0)+(s<<2)>>2]=-0.0-(G*aj-F*ak)}}while(0);s=b+176|0;p=b+180|0;f=+g[s>>2]==+g[p>>2];g[(c[ab>>2]|0)+(r<<2)>>2]=0.0;v=d+36|0;g[(c[v>>2]|0)+(r<<2)>>2]=0.0;o=d+40|0;g[(c[o>>2]|0)+(r<<2)>>2]=0.0;ae=c[Z>>2]|0;af=b+224|0;at=+g[((ae&512|0)==0?d+4|0:af)>>2];if(!(u&f|e)){if((ae&1|0)!=0){g[(c[d+32>>2]|0)+(r<<2)>>2]=+g[b+204>>2]}w=+g[b+1092>>2];au=+g[b+1072>>2];t=+g[s>>2];as=+g[p>>2];q=at*+g[Y>>2];L112:do{if(t>as){aI=1.0}else{if(t==as){aI=0.0;break}$=w/q;if($<0.0){do{if(au>=t){if(t-$<=au){break}aI=(t-au)/$;break L112}}while(0);aI=au<t?0.0:1.0;break}if($<=0.0){aI=0.0;break}do{if(au<=as){if(as-$>=au){break}aI=(as-au)/$;break L112}}while(0);aI=au>as?0.0:1.0}}while(0);p=(c[ab>>2]|0)+(r<<2)|0;g[p>>2]=+g[p>>2]-n*aI*w;p=b+1096|0;s=(c[v>>2]|0)+(r<<2)|0;g[s>>2]=+g[Y>>2]*(-0.0- +g[p>>2])+ +g[s>>2];s=(c[o>>2]|0)+(r<<2)|0;g[s>>2]=+g[p>>2]*+g[Y>>2]+ +g[s>>2]}if(!u){aH=5;break}s=(c[ab>>2]|0)+(r<<2)|0;g[s>>2]=+g[s>>2]+aF*at*+g[Y>>2];if((c[Z>>2]&256|0)!=0){g[(c[d+32>>2]|0)+(r<<2)>>2]=+g[b+236>>2]}do{if(f){g[(c[v>>2]|0)+(r<<2)>>2]=-3.4028234663852886e+38;g[(c[o>>2]|0)+(r<<2)>>2]=3.4028234663852886e+38}else{s=(c[v>>2]|0)+(r<<2)|0;if((aG|0)==1){g[s>>2]=-3.4028234663852886e+38;g[(c[o>>2]|0)+(r<<2)>>2]=0.0;break}else{g[s>>2]=0.0;g[(c[o>>2]|0)+(r<<2)>>2]=3.4028234663852886e+38;break}}}while(0);at=1.0- +g[b+232>>2];w=+P(+at);do{if(at!=0.0){as=n*(F*+g[h>>2]+G*+g[h+4>>2]+H*+g[h+8>>2]-(F*+g[i>>2]+G*+g[i+4>>2]+H*+g[i+8>>2]));if((aG|0)==1){if(as>=0.0){break}au=as*(-0.0-w);o=(c[ab>>2]|0)+(r<<2)|0;if(au<=+g[o>>2]){break}g[o>>2]=au;break}else{if(as<=0.0){break}au=as*(-0.0-w);o=(c[ab>>2]|0)+(r<<2)|0;if(au>=+g[o>>2]){break}g[o>>2]=au;break}}}while(0);o=(c[ab>>2]|0)+(r<<2)|0;g[o>>2]=+g[af>>2]*+g[o>>2];aH=5}}while(0);if((a[b+289|0]&1)==0){aJ=0.0;aK=0}else{n=+g[b+1080>>2];aJ=n;aK=n>0.0?1:2}aG=(aK|0)!=0;i=(a[b+1104|0]&1)==0;if(i&(aG^1)){return}h=aa(c[l>>2]|0,aH)|0;g[(c[X>>2]|0)+(h<<2)>>2]=F;aH=h+1|0;g[(c[X>>2]|0)+(aH<<2)>>2]=G;l=h+2|0;g[(c[X>>2]|0)+(l<<2)>>2]=H;g[(c[_>>2]|0)+(h<<2)>>2]=-0.0-F;g[(c[_>>2]|0)+(aH<<2)>>2]=-0.0-G;g[(c[_>>2]|0)+(l<<2)>>2]=-0.0-H;l=b+184|0;n=+g[l>>2];_=b+188|0;aF=+g[_>>2];aH=n==aF;X=c[Z>>2]|0;u=b+240|0;aI=+g[((X&2048|0)==0?d+4|0:u)>>2];if(!(aG&aH|i)){if((X&4|0)==0){aL=n;aM=aF}else{g[(c[d+32>>2]|0)+(h<<2)>>2]=+g[b+220>>2];aL=+g[l>>2];aM=+g[_>>2]}aF=+g[b+1076>>2];n=+g[b+1108>>2];ak=aI*+g[Y>>2];L162:do{if(aL>aM){aN=1.0}else{if(aL==aM){aN=0.0;break}aj=n/ak;if(aj<0.0){do{if(aF>=aL){if(aL-aj<=aF){break}aN=(aL-aF)/aj;break L162}}while(0);aN=aF<aL?0.0:1.0;break}if(aj<=0.0){aN=0.0;break}do{if(aF<=aM){if(aM-aj>=aF){break}aN=(aM-aF)/aj;break L162}}while(0);aN=aF>aM?0.0:1.0}}while(0);g[(c[ab>>2]|0)+(h<<2)>>2]=aN*n;af=b+1112|0;g[(c[d+36>>2]|0)+(h<<2)>>2]=+g[Y>>2]*(-0.0- +g[af>>2]);g[(c[d+40>>2]|0)+(h<<2)>>2]=+g[af>>2]*+g[Y>>2]}if(!aG){return}aG=(c[ab>>2]|0)+(h<<2)|0;g[aG>>2]=+g[aG>>2]+aJ*aI*+g[Y>>2];if((c[Z>>2]&1024|0)!=0){g[(c[d+32>>2]|0)+(h<<2)>>2]=+g[b+252>>2]}do{if(aH){g[(c[d+36>>2]|0)+(h<<2)>>2]=-3.4028234663852886e+38;g[(c[d+40>>2]|0)+(h<<2)>>2]=3.4028234663852886e+38}else{Z=(c[d+36>>2]|0)+(h<<2)|0;if((aK|0)==1){g[Z>>2]=0.0;g[(c[d+40>>2]|0)+(h<<2)>>2]=3.4028234663852886e+38;break}else{g[Z>>2]=-3.4028234663852886e+38;g[(c[d+40>>2]|0)+(h<<2)>>2]=0.0;break}}}while(0);aI=1.0- +g[b+248>>2];aJ=+P(+aI);do{if(aI!=0.0){d=c[b+24>>2]|0;aH=c[b+28>>2]|0;n=F*+g[d+320>>2]+G*+g[d+324>>2]+H*+g[d+328>>2]-(F*+g[aH+320>>2]+G*+g[aH+324>>2]+H*+g[aH+328>>2]);if((aK|0)==1){if(n>=0.0){break}aN=n*(-0.0-aJ);aH=(c[ab>>2]|0)+(h<<2)|0;if(aN<=+g[aH>>2]){break}g[aH>>2]=aN;break}else{if(n<=0.0){break}aN=n*(-0.0-aJ);aH=(c[ab>>2]|0)+(h<<2)|0;if(aN>=+g[aH>>2]){break}g[aH>>2]=aN;break}}}while(0);aK=(c[ab>>2]|0)+(h<<2)|0;g[aK>>2]=+g[u>>2]*+g[aK>>2];return}function aqW(a){a=a|0;return}function aqX(a){a=a|0;return 196}function aqY(a){a=a|0;return}function aqZ(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0;if((b|0)==2){if((e|0)<1){g[a+224>>2]=d;f=a+292|0;c[f>>2]=c[f>>2]|512;return}if((e|0)<3){g[a+256>>2]=d;f=a+292|0;c[f>>2]=c[f>>2]|32;return}if((e|0)==3){g[a+240>>2]=d;f=a+292|0;c[f>>2]=c[f>>2]|2048;return}if((e|0)>=6){return}g[a+272>>2]=d;f=a+292|0;c[f>>2]=c[f>>2]|128;return}else if((b|0)==3){if((e|0)<1){g[a+204>>2]=d;f=a+292|0;c[f>>2]=c[f>>2]|1;return}if((e|0)!=3){return}g[a+220>>2]=d;f=a+292|0;c[f>>2]=c[f>>2]|4;return}else if((b|0)==4){if((e|0)<1){g[a+236>>2]=d;b=a+292|0;c[b>>2]=c[b>>2]|256;return}if((e|0)<3){g[a+268>>2]=d;b=a+292|0;c[b>>2]=c[b>>2]|16;return}if((e|0)==3){g[a+252>>2]=d;b=a+292|0;c[b>>2]=c[b>>2]|1024;return}if((e|0)>=6){return}g[a+284>>2]=d;e=a+292|0;c[e>>2]=c[e>>2]|64;return}else{return}}function aq_(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;do{if((b|0)==2){if((c|0)<1){d=+g[a+224>>2];break}if((c|0)<3){d=+g[a+256>>2];break}if((c|0)==3){d=+g[a+240>>2];break}if((c|0)>=6){d=3.4028234663852886e+38;break}d=+g[a+272>>2]}else if((b|0)==3){if((c|0)<1){d=+g[a+204>>2];break}if((c|0)!=3){d=3.4028234663852886e+38;break}d=+g[a+220>>2]}else if((b|0)==4){if((c|0)<1){d=+g[a+236>>2];break}if((c|0)<3){d=+g[a+268>>2];break}if((c|0)==3){d=+g[a+252>>2];break}if((c|0)>=6){d=3.4028234663852886e+38;break}d=+g[a+284>>2]}else{d=3.4028234663852886e+38}}while(0);return+d}function aq$(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aq0(b,d,e){b=b|0;d=d|0;e=e|0;aq3(b|0,d,e)|0;g[d+44>>2]=+g[b+44>>2];g[d+48>>2]=+g[b+48>>2];g[d+52>>2]=+g[b+52>>2];g[d+56>>2]=+g[b+56>>2];g[d+60>>2]=+g[b+60>>2];g[d+64>>2]=+g[b+64>>2];g[d+68>>2]=+g[b+68>>2];g[d+72>>2]=+g[b+72>>2];g[d+76>>2]=+g[b+76>>2];g[d+80>>2]=+g[b+80>>2];g[d+84>>2]=+g[b+84>>2];g[d+88>>2]=+g[b+88>>2];g[d+92>>2]=+g[b+92>>2];g[d+96>>2]=+g[b+96>>2];g[d+100>>2]=+g[b+100>>2];g[d+104>>2]=+g[b+104>>2];g[d+108>>2]=+g[b+108>>2];g[d+112>>2]=+g[b+112>>2];g[d+116>>2]=+g[b+116>>2];g[d+120>>2]=+g[b+120>>2];g[d+124>>2]=+g[b+124>>2];g[d+128>>2]=+g[b+128>>2];g[d+132>>2]=+g[b+132>>2];g[d+136>>2]=+g[b+136>>2];g[d+140>>2]=+g[b+140>>2];g[d+144>>2]=+g[b+144>>2];g[d+148>>2]=+g[b+148>>2];g[d+152>>2]=+g[b+152>>2];g[d+156>>2]=+g[b+156>>2];g[d+160>>2]=+g[b+160>>2];g[d+164>>2]=+g[b+164>>2];g[d+168>>2]=+g[b+168>>2];g[d+172>>2]=+g[b+180>>2];g[d+176>>2]=+g[b+176>>2];g[d+180>>2]=+g[b+188>>2];g[d+184>>2]=+g[b+184>>2];c[d+188>>2]=a[b+172|0]&1;c[d+192>>2]=a[b+41|0]&1;return 17128}function aq1(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0;f=i;i=i+32|0;h=f|0;j=f+16|0;c[b+4>>2]=d;c[b>>2]=23440;c[b+8>>2]=-1;c[b+12>>2]=-1;g[b+16>>2]=3.4028234663852886e+38;a[b+20|0]=1;a[b+21|0]=0;c[b+24>>2]=e;e=b+28|0;d=h;k=j;do{if((a[43016]|0)==0){if((b1(43016)|0)==0){break}aDD(d|0,0,16);ap$(41520,0.0,0,0,h);bG(198,41520,o|0)|0}}while(0);aDD(k|0,0,16);apV(41520,0.0,j);c[e>>2]=41520;g[b+32>>2]=0.0;g[b+36>>2]=.30000001192092896;i=f;return}function aq2(){var b=0,c=0,d=0;b=i;i=i+32|0;c=b|0;d=b+16|0;do{if((a[43016]|0)==0){if((b1(43016)|0)==0){break}aDD(c|0,0,16);ap$(41520,0.0,0,0,c);bG(198,41520,o|0)|0}}while(0);aDD(d|0,0,16);apV(41520,0.0,d);i=b;return}function aq3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;f=e;h=b+24|0;c[d>>2]=dj[c[(c[f>>2]|0)+28>>2]&511](e,c[h>>2]|0)|0;i=b+28|0;c[d+4>>2]=dj[c[(c[f>>2]|0)+28>>2]&511](e,c[i>>2]|0)|0;j=dj[c[(c[f>>2]|0)+40>>2]&511](e,b)|0;k=dj[c[(c[f>>2]|0)+28>>2]&511](e,j)|0;c[d+8>>2]=k;if((k|0)!=0){cv[c[(c[e>>2]|0)+48>>2]&2047](e,j)}c[d+12>>2]=c[b+4>>2];c[d+24>>2]=a[b+21|0]&1;c[d+20>>2]=c[b+12>>2];c[d+16>>2]=c[b+8>>2];g[d+28>>2]=+g[b+32>>2];g[d+32>>2]=+g[b+36>>2];j=d+36|0;c[j>>2]=0;d=c[h>>2]|0;if((c[d+480>>2]|0)>0){e=0;k=d;while(1){if((c[(c[k+488>>2]|0)+(e<<2)>>2]|0)==(b|0)){c[j>>2]=1;l=c[h>>2]|0}else{l=k}d=e+1|0;if((d|0)<(c[l+480>>2]|0)){e=d;k=l}else{break}}}l=c[i>>2]|0;if((c[l+480>>2]|0)>0){m=0;n=l}else{return 17056}while(1){if((c[(c[n+488>>2]|0)+(m<<2)>>2]|0)==(b|0)){c[j>>2]=1;o=c[i>>2]|0}else{o=n}l=m+1|0;if((l|0)<(c[o+480>>2]|0)){m=l;n=o}else{break}}return 17056}function aq4(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0;c=a+4|0;if(+g[c>>2]<=0.0){return}d=a|0;e=+ck(+(+g[b>>2]- +g[d>>2]),6.2831854820251465);do{if(e<-3.1415927410125732){f=e+6.2831854820251465}else{if(e<=3.1415927410125732){f=e;break}f=e-6.2831854820251465}}while(0);e=+g[c>>2];if(f<=e&f>=-0.0-e){return}h=+g[d>>2];if(f>0.0){f=+ck(+(h+e),6.2831854820251465);do{if(f<-3.1415927410125732){i=f+6.2831854820251465}else{if(f<=3.1415927410125732){i=f;break}i=f-6.2831854820251465}}while(0);g[b>>2]=i;return}else{i=+ck(+(h-e),6.2831854820251465);do{if(i<-3.1415927410125732){j=i+6.2831854820251465}else{if(i<=3.1415927410125732){j=i;break}j=i-6.2831854820251465}}while(0);g[b>>2]=j;return}}function aq5(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aq6(d,f,h,i,j,k){d=d|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0,z=0.0,A=0,B=0,C=0,D=0,E=0;l=d|0;c[l>>2]=22576;b[d+4>>1]=-2;m=d+6|0;b[m>>1]=-1;n=d+8|0;o=d+24|0;p=d+92|0;c[p>>2]=j;c[d+96>>2]=0;q=d+100|0;a[q]=0;c[d+104>>2]=0;r=d+108|0;c[r>>2]=0;s=i+1&65535;if((j|0)==0){c[9806]=(c[9806]|0)+1;j=aDx(95)|0;do{if((j|0)==0){t=0}else{i=-(j+4|0)&15;u=j+(i+4)|0;c[j+i>>2]=j;if((u|0)==0){t=0;break}i=u;ayI(i);t=i}}while(0);c[p>>2]=t;a[q]=1}if(!k){c[9806]=(c[9806]|0)+1;k=aDx(43)|0;do{if((k|0)==0){v=0}else{q=-(k+4|0)&15;t=k+(q+4)|0;c[k+q>>2]=k;if((t|0)==0){v=0;break}aDD(t|0,0,24);c[t>>2]=24728;a[k+(q+24)|0]=1;c[k+(q+20)>>2]=0;c[k+(q+12)>>2]=0;c[k+(q|16)>>2]=0;v=t}}while(0);k=d+112|0;c[k>>2]=v;c[9806]=(c[9806]|0)+1;v=aDx(175)|0;do{if((v|0)==0){w=0}else{t=-(v+4|0)&15;q=v+(t+4)|0;c[v+t>>2]=v;if((q|0)==0){w=0;break}t=q;awx(t,c[k>>2]|0);w=t}}while(0);c[r>>2]=w;a[w+153|0]=1}w=n;r=f;c[w>>2]=c[r>>2];c[w+4>>2]=c[r+4>>2];c[w+8>>2]=c[r+8>>2];c[w+12>>2]=c[r+12>>2];r=o;w=h;c[r>>2]=c[w>>2];c[r+4>>2]=c[w+4>>2];c[r+8>>2]=c[w+8>>2];c[r+12>>2]=c[w+12>>2];x=+((e[m>>1]|0)>>>0);y=x/(+g[d+28>>2]- +g[d+12>>2]);z=x/(+g[d+32>>2]- +g[d+16>>2]);g[d+40>>2]=x/(+g[o>>2]- +g[n>>2]);g[d+44>>2]=y;g[d+48>>2]=z;g[d+52>>2]=0.0;n=s&65535;c[9806]=(c[9806]|0)+1;o=aDx((n<<6|4)+15|0)|0;if((o|0)==0){A=0}else{w=-(o+4|0)&15;c[o+w>>2]=o;A=o+(w+4)|0}if(s<<16>>16!=0){w=A+(n<<6)|0;o=A;do{c[o>>2]=0;c[o+8>>2]=0;o=o+64|0;}while((o|0)!=(w|0))}w=d+60|0;c[w>>2]=A;b[d+58>>1]=s;b[d+56>>1]=0;b[d+64>>1]=1;if((s&65535)>1){o=1;r=A;while(1){h=o+1&65535;b[r+((o&65535)<<6)+48>>1]=h;f=c[w>>2]|0;if((h&65535)<(s&65535)){o=h;r=f}else{B=f;break}}}else{B=A}b[B+(n-1<<6)+48>>1]=0;c[9806]=(c[9806]|0)+1;B=(n<<3|4)+15|0;n=aDx(B)|0;do{if((n|0)==0){c[d+80>>2]=0;C=0}else{A=-(n+4|0)&15;r=n+(A+4)|0;c[n+A>>2]=n;c[d+80>>2]=r;if((r|0)==0){C=0;break}C=r}}while(0);n=d+68|0;c[n>>2]=C;c[9806]=(c[9806]|0)+1;C=aDx(B)|0;do{if((C|0)==0){c[d+84>>2]=0;D=0}else{r=-(C+4|0)&15;A=C+(r+4)|0;c[C+r>>2]=C;c[d+84>>2]=A;if((A|0)==0){D=0;break}D=A}}while(0);C=d+72|0;c[C>>2]=D;c[9806]=(c[9806]|0)+1;D=aDx(B)|0;do{if((D|0)==0){c[d+88>>2]=0;E=0}else{B=-(D+4|0)&15;A=D+(B+4)|0;c[D+B>>2]=D;c[d+88>>2]=A;if((A|0)==0){E=0;break}E=A}}while(0);D=d+76|0;c[D>>2]=E;c[c[w>>2]>>2]=0;b[(c[w>>2]|0)+48>>1]=0;b[(c[w>>2]|0)+54>>1]=1;b[c[n>>2]>>1]=0;b[(c[n>>2]|0)+2>>1]=0;b[(c[n>>2]|0)+4>>1]=b[m>>1]|0;b[(c[n>>2]|0)+6>>1]=0;b[(c[w>>2]|0)+50>>1]=0;b[(c[w>>2]|0)+56>>1]=1;b[c[C>>2]>>1]=0;b[(c[C>>2]|0)+2>>1]=0;b[(c[C>>2]|0)+4>>1]=b[m>>1]|0;b[(c[C>>2]|0)+6>>1]=0;b[(c[w>>2]|0)+52>>1]=0;b[(c[w>>2]|0)+58>>1]=1;b[c[D>>2]>>1]=0;b[(c[D>>2]|0)+2>>1]=0;b[(c[D>>2]|0)+4>>1]=b[m>>1]|0;b[(c[D>>2]|0)+6>>1]=0;c[l>>2]=25976;return}function aq7(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,C=0,D=0;j=b|0;c[j>>2]=22648;c[b+4>>2]=-2;k=b+8|0;c[k>>2]=2147483647;l=b+12|0;m=b+28|0;n=b+100|0;c[n>>2]=h;c[b+104>>2]=0;o=b+108|0;a[o]=0;c[b+112>>2]=0;p=b+116|0;c[p>>2]=0;q=f+1|0;if((h|0)==0){c[9806]=(c[9806]|0)+1;h=aDx(95)|0;do{if((h|0)==0){r=0}else{s=-(h+4|0)&15;t=h+(s+4)|0;c[h+s>>2]=h;if((t|0)==0){r=0;break}s=t;ayI(s);r=s}}while(0);c[n>>2]=r;a[o]=1}if(!i){c[9806]=(c[9806]|0)+1;i=aDx(43)|0;do{if((i|0)==0){u=0}else{o=-(i+4|0)&15;r=i+(o+4)|0;c[i+o>>2]=i;if((r|0)==0){u=0;break}aDD(r|0,0,24);c[r>>2]=24728;a[i+(o+24)|0]=1;c[i+(o+20)>>2]=0;c[i+(o+12)>>2]=0;c[i+(o|16)>>2]=0;u=r}}while(0);i=b+120|0;c[i>>2]=u;c[9806]=(c[9806]|0)+1;u=aDx(175)|0;do{if((u|0)==0){v=0}else{r=-(u+4|0)&15;o=u+(r+4)|0;c[u+r>>2]=u;if((o|0)==0){v=0;break}r=o;awx(r,c[i>>2]|0);v=r}}while(0);c[p>>2]=v;a[v+153|0]=1}v=l;p=d;c[v>>2]=c[p>>2];c[v+4>>2]=c[p+4>>2];c[v+8>>2]=c[p+8>>2];c[v+12>>2]=c[p+12>>2];p=m;v=e;c[p>>2]=c[v>>2];c[p+4>>2]=c[v+4>>2];c[p+8>>2]=c[v+8>>2];c[p+12>>2]=c[v+12>>2];w=+((c[k>>2]|0)>>>0>>>0);x=w/(+g[b+32>>2]- +g[b+16>>2]);y=w/(+g[b+36>>2]- +g[b+20>>2]);g[b+44>>2]=w/(+g[m>>2]- +g[l>>2]);g[b+48>>2]=x;g[b+52>>2]=y;g[b+56>>2]=0.0;l=bT(q|0,76)|0;c[9806]=(c[9806]|0)+1;m=aDx(E?18:l+19|0)|0;if((m|0)==0){z=0}else{l=-(m+4|0)&15;c[m+l>>2]=m;z=m+(l+4)|0}if((q|0)!=0){l=z+(q*76|0)|0;m=z;do{c[m>>2]=0;c[m+8>>2]=0;m=m+76|0;}while((m|0)!=(l|0))}l=b+68|0;c[l>>2]=z;c[b+64>>2]=q;c[b+60>>2]=0;c[b+72>>2]=1;if(q>>>0>1){m=1;v=z;while(1){p=m+1|0;c[v+(m*76|0)+48>>2]=p;e=c[l>>2]|0;if(p>>>0<q>>>0){m=p;v=e}else{A=e;break}}}else{A=z}c[A+(f*76|0)+48>>2]=0;c[9806]=(c[9806]|0)+1;f=(q<<4|4)+15|0;q=aDx(f)|0;do{if((q|0)==0){c[b+88>>2]=0;B=0}else{A=-(q+4|0)&15;z=q+(A+4)|0;c[q+A>>2]=q;c[b+88>>2]=z;if((z|0)==0){B=0;break}B=z}}while(0);q=b+76|0;c[q>>2]=B;c[9806]=(c[9806]|0)+1;B=aDx(f)|0;do{if((B|0)==0){c[b+92>>2]=0;C=0}else{z=-(B+4|0)&15;A=B+(z+4)|0;c[B+z>>2]=B;c[b+92>>2]=A;if((A|0)==0){C=0;break}C=A}}while(0);B=b+80|0;c[B>>2]=C;c[9806]=(c[9806]|0)+1;C=aDx(f)|0;do{if((C|0)==0){c[b+96>>2]=0;D=0}else{f=-(C+4|0)&15;A=C+(f+4)|0;c[C+f>>2]=C;c[b+96>>2]=A;if((A|0)==0){D=0;break}D=A}}while(0);C=b+84|0;c[C>>2]=D;c[c[l>>2]>>2]=0;c[(c[l>>2]|0)+48>>2]=0;c[(c[l>>2]|0)+60>>2]=1;c[c[q>>2]>>2]=0;c[(c[q>>2]|0)+4>>2]=0;c[(c[q>>2]|0)+8>>2]=c[k>>2];c[(c[q>>2]|0)+12>>2]=0;c[(c[l>>2]|0)+52>>2]=0;c[(c[l>>2]|0)+64>>2]=1;c[c[B>>2]>>2]=0;c[(c[B>>2]|0)+4>>2]=0;c[(c[B>>2]|0)+8>>2]=c[k>>2];c[(c[B>>2]|0)+12>>2]=0;c[(c[l>>2]|0)+56>>2]=0;c[(c[l>>2]|0)+68>>2]=1;c[c[C>>2]>>2]=0;c[(c[C>>2]|0)+4>>2]=0;c[(c[C>>2]|0)+8>>2]=c[k>>2];c[(c[C>>2]|0)+12>>2]=0;c[j>>2]=23784;return}function aq8(a){a=a|0;arU(a|0);return}function aq9(a){a=a|0;arU(a|0);if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-124+120>>2]|0);return}function ara(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0;k=alh(a,b,d,f,g,h,i,j)|0;j=c[a+68>>2]|0;l=c[a+116>>2]|0;if((l|0)==0){m=j+(k*76|0)|0;return m|0}c[j+(k*76|0)+72>>2]=c5[c[(c[l>>2]|0)+8>>2]&63](l,b,d,e,f,g,h,i,0)|0;m=j+(k*76|0)|0;return m|0}function arb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+116>>2]|0;if((e|0)!=0){dA[c[(c[e>>2]|0)+12>>2]&511](e,c[b+72>>2]|0,d)}alk(a,c[b+12>>2]|0,d);return}function arc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=b+16|0;h=d;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];h=b+32|0;g=e;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];alL(a,c[b+12>>2]|0,d,e,f);g=c[a+116>>2]|0;if((g|0)==0){return}co[c[(c[g>>2]|0)+16>>2]&255](g,c[b+72>>2]|0,d,e,f);return}function ard(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=d;d=b+16|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];d=e;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return}function are(a){a=a|0;return}function arf(a){a=a|0;return}function arg(a){a=a|0;return c[a+100>>2]|0}function arh(a){a=a|0;return c[a+100>>2]|0}function ari(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if((c[a+60>>2]|0)!=0){return}c[a+72>>2]=1;b=a+64|0;d=c[b>>2]|0;e=a+68|0;if(d>>>0>1){a=1;while(1){f=a+1|0;c[(c[e>>2]|0)+(a*76|0)+48>>2]=f;g=c[b>>2]|0;if(f>>>0<g>>>0){a=f}else{h=g;break}}}else{h=d}c[(c[e>>2]|0)+((h-1|0)*76|0)+48>>2]=0;return}function arj(a){a=a|0;return c[a+92>>2]|0}function ark(a){a=a|0;return c[a+92>>2]|0}function arl(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if((b[a+56>>1]|0)!=0){return}b[a+64>>1]=1;d=a+58|0;e=b[d>>1]|0;f=a+60|0;if((e&65535)>1){a=1;while(1){g=a+1&65535;b[(c[f>>2]|0)+((a&65535)<<6)+48>>1]=g;h=b[d>>1]|0;if((g&65535)<(h&65535)){a=g}else{i=h;break}}}else{i=e}b[(c[f>>2]|0)+((i&65535)-1<<6)+48>>1]=0;return}function arm(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=c[a+116>>2]|0;if((h|0)!=0){c_[c[(c[h>>2]|0)+24>>2]&127](h,b,d,e,f,g);return}g=a+60|0;f=c[g>>2]|0;if(f<<1>>>0<=1){return}d=a+76|0;b=e|0;h=e;e=a+68|0;a=1;i=f;while(1){f=c[d>>2]|0;if((c[f+(a<<3)>>2]&1|0)==0){j=i}else{k=c[(c[h>>2]|0)+8>>2]|0;l=(c[e>>2]|0)+((c[f+(a<<3)+4>>2]|0)*76|0)|0;dj[k&511](b,l)|0;j=c[g>>2]|0}l=a+1|0;if(l>>>0<(j<<1|1)>>>0){a=l;i=j}else{break}}return}function arn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;f=c[a+116>>2]|0;if((f|0)!=0){dI[c[(c[f>>2]|0)+28>>2]&1023](f,b,d,e);return}f=a+60|0;h=c[f>>2]|0;if(h<<1>>>0<=1){return}i=a+76|0;j=a+68|0;a=b|0;k=b+8|0;l=b+4|0;b=d+4|0;m=e;n=d+8|0;o=d|0;d=1;p=h;while(1){h=c[i>>2]|0;do{if((c[h+(d<<3)>>2]&1|0)==0){q=p}else{r=c[h+(d<<3)+4>>2]|0;s=c[j>>2]|0;do{if(+g[a>>2]>+g[s+(r*76|0)+32>>2]){t=0}else{if(+g[o>>2]<+g[s+(r*76|0)+16>>2]){t=0;break}t=1}}while(0);do{if(+g[k>>2]>+g[s+(r*76|0)+40>>2]){u=0}else{if(+g[n>>2]<+g[s+(r*76|0)+24>>2]){u=0;break}u=t}}while(0);if(+g[l>>2]>+g[s+(r*76|0)+36>>2]){q=p;break}if(+g[b>>2]<+g[s+(r*76|0)+20>>2]|u^1){q=p;break}v=s+(r*76|0)|0;w=c[(c[m>>2]|0)+8>>2]|0;dj[w&511](e,v)|0;q=c[f>>2]|0}}while(0);h=d+1|0;if(h>>>0<(q<<1|1)>>>0){d=h;p=q}else{break}}return}function aro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;d=i;i=i+40|0;e=d|0;f=d+8|0;g=d+24|0;h=a+100|0;j=c[h>>2]|0;if(!(cA[c[(c[j>>2]|0)+56>>2]&4095](j)|0)){i=d;return}j=c[h>>2]|0;k=cA[c[(c[j>>2]|0)+28>>2]&4095](j)|0;j=k+4|0;l=c[j>>2]|0;if((l|0)>1){arQ(k,0,l-1|0);m=c[j>>2]|0}else{m=l}l=a+112|0;a=m-(c[l>>2]|0)|0;aDD(f|0,0,16);arP(k,a,f);c[l>>2]=0;f=c[j>>2]|0;do{if((f|0)>0){a=k+12|0;m=0;n=0;o=0;p=f;q=0;while(1){r=c[a>>2]|0;s=r+(o<<4)|0;t=s|0;u=c[t>>2]|0;v=r+(o<<4)+4|0;r=c[v>>2]|0;if((u|0)==(n|0)){if((r|0)==(m|0)){w=n;x=m;y=424}else{z=n;y=420}}else{z=u;y=420}L540:do{if((y|0)==420){y=0;u=z+60|0;A=r+60|0;B=r+48|0;C=z+48|0;D=0;while(1){if((D|0)>=3){E=z;F=r;G=p;H=q;break L540}if((c[u+(D<<2)>>2]|0)>>>0<(c[B+(D<<2)>>2]|0)>>>0){w=z;x=r;y=424;break L540}if((c[A+(D<<2)>>2]|0)>>>0<(c[C+(D<<2)>>2]|0)>>>0){w=z;x=r;y=424;break}else{D=D+1|0}}}}while(0);if((y|0)==424){y=0;r=c[h>>2]|0;dA[c[(c[r>>2]|0)+32>>2]&511](r,s,b);c[t>>2]=0;c[v>>2]=0;r=(c[l>>2]|0)+1|0;c[l>>2]=r;c[9792]=(c[9792]|0)-1;E=w;F=x;G=c[j>>2]|0;H=r}r=o+1|0;if((r|0)<(G|0)){m=F;n=E;o=r;p=G;q=H}else{break}}q=e|0;if((G|0)<=1){I=G;J=q;K=H;break}arQ(k,0,G-1|0);I=c[j>>2]|0;J=q;K=c[l>>2]|0}else{I=f;J=e|0;K=0}}while(0);aDD(g|0,0,16);arP(k,I-K|0,g);c[l>>2]=0;i=d;return}function arp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=b;b=a+12|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];b=d;d=a+28|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];return}function arq(a){a=a|0;arR(a|0);return}function arr(a){a=a|0;arR(a|0);if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-116+112>>2]|0);return}function ars(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0;k=u0(a,b,d,f,g,h,i,j)|0;j=c[a+60>>2]|0;l=k&65535;k=c[a+108>>2]|0;if((k|0)==0){m=j+(l<<6)|0;return m|0}c[j+(l<<6)+60>>2]=c5[c[(c[k>>2]|0)+8>>2]&63](k,b,d,e,f,g,h,i,0)|0;m=j+(l<<6)|0;return m|0}function art(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+108>>2]|0;if((e|0)!=0){dA[c[(c[e>>2]|0)+12>>2]&511](e,c[b+60>>2]|0,d)}u3(a,c[b+12>>2]&65535,d);return}function aru(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=b+16|0;h=d;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];h=b+32|0;g=e;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];vc(a,c[b+12>>2]&65535,d,e,f);g=c[a+108>>2]|0;if((g|0)==0){return}co[c[(c[g>>2]|0)+16>>2]&255](g,c[b+60>>2]|0,d,e,f);return}function arv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=d;d=b+16|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];d=e;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return}function arw(a,d,f,g,h,i){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0;j=c[a+108>>2]|0;if((j|0)!=0){c_[c[(c[j>>2]|0)+24>>2]&127](j,d,f,g,h,i);return}i=a+56|0;h=b[i>>1]|0;if((h&65535)<<1>>>0<=1){return}f=a+68|0;d=g|0;j=g;g=a+60|0;a=2;k=1;l=h;while(1){h=c[f>>2]|0;if((b[h+(k<<2)>>1]&1)==0){m=l}else{n=c[(c[j>>2]|0)+8>>2]|0;o=(c[g>>2]|0)+((e[h+(k<<2)+2>>1]|0)<<6)|0;dj[n&511](d,o)|0;m=b[i>>1]|0}o=a&65535;if(o>>>0>=((m&65535)<<1|1)>>>0){break}a=a+1&65535;k=o;l=m}return}function arx(a,d,f,h){a=a|0;d=d|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;i=c[a+108>>2]|0;if((i|0)!=0){dI[c[(c[i>>2]|0)+28>>2]&1023](i,d,f,h);return}i=a+56|0;j=b[i>>1]|0;if((j&65535)<<1>>>0<=1){return}k=a+68|0;l=a+60|0;a=d|0;m=d+8|0;n=d+4|0;d=f+4|0;o=h;p=f+8|0;q=f|0;f=2;r=1;s=j;while(1){j=c[k>>2]|0;do{if((b[j+(r<<2)>>1]&1)==0){t=s}else{u=c[l>>2]|0;v=e[j+(r<<2)+2>>1]|0;do{if(+g[a>>2]>+g[u+(v<<6)+32>>2]){w=0}else{if(+g[q>>2]<+g[u+(v<<6)+16>>2]){w=0;break}w=1}}while(0);do{if(+g[m>>2]>+g[u+(v<<6)+40>>2]){x=0}else{if(+g[p>>2]<+g[u+(v<<6)+24>>2]){x=0;break}x=w}}while(0);if(+g[n>>2]>+g[u+(v<<6)+36>>2]){t=s;break}if(+g[d>>2]<+g[u+(v<<6)+20>>2]|x^1){t=s;break}y=u+(v<<6)|0;z=c[(c[o>>2]|0)+8>>2]|0;dj[z&511](h,y)|0;t=b[i>>1]|0}}while(0);j=f&65535;if(j>>>0>=((t&65535)<<1|1)>>>0){break}f=f+1&65535;r=j;s=t}return}function ary(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;d=i;i=i+40|0;f=d|0;g=d+8|0;h=d+24|0;j=a+92|0;k=c[j>>2]|0;if(!(cA[c[(c[k>>2]|0)+56>>2]&4095](k)|0)){i=d;return}k=c[j>>2]|0;l=cA[c[(c[k>>2]|0)+28>>2]&4095](k)|0;k=l+4|0;m=c[k>>2]|0;if((m|0)>1){arQ(l,0,m-1|0);n=c[k>>2]|0}else{n=m}m=a+104|0;a=n-(c[m>>2]|0)|0;aDD(g|0,0,16);arP(l,a,g);c[m>>2]=0;g=c[k>>2]|0;do{if((g|0)>0){a=l+12|0;n=0;o=0;p=0;q=g;r=0;while(1){s=c[a>>2]|0;t=s+(p<<4)|0;u=t|0;v=c[u>>2]|0;w=s+(p<<4)+4|0;s=c[w>>2]|0;if((v|0)==(o|0)){if((s|0)==(n|0)){x=o;y=n;z=501}else{A=o;z=497}}else{A=v;z=497}L630:do{if((z|0)==497){z=0;v=A+54|0;B=s+54|0;C=s+48|0;D=A+48|0;E=0;while(1){if((E|0)>=3){F=A;G=s;H=q;I=r;break L630}if((e[v+(E<<1)>>1]|0)<(e[C+(E<<1)>>1]|0)){x=A;y=s;z=501;break L630}if((e[B+(E<<1)>>1]|0)<(e[D+(E<<1)>>1]|0)){x=A;y=s;z=501;break}else{E=E+1|0}}}}while(0);if((z|0)==501){z=0;s=c[j>>2]|0;dA[c[(c[s>>2]|0)+32>>2]&511](s,t,b);c[u>>2]=0;c[w>>2]=0;s=(c[m>>2]|0)+1|0;c[m>>2]=s;c[9792]=(c[9792]|0)-1;F=x;G=y;H=c[k>>2]|0;I=s}s=p+1|0;if((s|0)<(H|0)){n=G;o=F;p=s;q=H;r=I}else{break}}r=f|0;if((H|0)<=1){J=H;K=r;L=I;break}arQ(l,0,H-1|0);J=c[k>>2]|0;K=r;L=c[m>>2]|0}else{J=g;K=f|0;L=0}}while(0);aDD(h|0,0,16);arP(l,J-L|0,h);c[m>>2]=0;i=d;return}function arz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=b;b=a+8|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];b=d;d=a+24|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];return}function arA(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function arB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function arC(a,b,c){a=a|0;b=b|0;c=c|0;return}function arD(a,b,c){a=a|0;b=b|0;c=c|0;return}function arE(a){a=a|0;return 0}function arF(a,b,c){a=a|0;b=b|0;c=c|0;return}function arG(a,b){a=a|0;b=b|0;return}function arH(a,b,c){a=a|0;b=b|0;c=c|0;return}function arI(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function arJ(a){a=a|0;return 1}function arK(a,b){a=a|0;b=b|0;return}function arL(a,b){a=a|0;b=b|0;return}function arM(a){a=a|0;return c[a+16>>2]|0}function arN(a){a=a|0;return c[a+16>>2]|0}function arO(a){a=a|0;return a+4|0}function arP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=b+4|0;g=c[f>>2]|0;if(!((g|0)<=(d|0)&(g|0)<(d|0))){c[f>>2]=d;return}h=b+8|0;if((c[h>>2]|0)<(d|0)){if((d|0)==0){i=0;j=g}else{c[9806]=(c[9806]|0)+1;k=aDx((d<<4|4)+15|0)|0;if((k|0)==0){l=0}else{m=-(k+4|0)&15;c[k+m>>2]=k;l=k+(m+4)|0}i=l;j=c[f>>2]|0}l=b+12|0;if((j|0)>0){m=0;do{k=c[l>>2]|0;c[i+(m<<4)>>2]=c[k+(m<<4)>>2];c[i+(m<<4)+4>>2]=c[k+(m<<4)+4>>2];c[i+(m<<4)+8>>2]=c[k+(m<<4)+8>>2];c[i+(m<<4)+12>>2]=c[k+(m<<4)+12>>2];m=m+1|0;}while((m|0)<(j|0))}j=c[l>>2]|0;m=b+16|0;if((j|0)!=0){if((a[m]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[j-16+12>>2]|0)}c[l>>2]=0}a[m]=1;c[l>>2]=i;c[h>>2]=d;n=l}else{n=b+12|0}b=e|0;l=e+4|0;h=e+8|0;i=e+12|0;e=g;do{g=c[n>>2]|0;c[g+(e<<4)>>2]=c[b>>2];c[g+(e<<4)+4>>2]=c[l>>2];c[g+(e<<4)+8>>2]=c[h>>2];c[g+(e<<4)+12>>2]=c[i>>2];e=e+1|0;}while((e|0)<(d|0));c[f>>2]=d;return}function arQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;e=(d+b|0)/2|0;f=a+12|0;g=c[f>>2]|0;h=c[g+(e<<4)>>2]|0;i=c[g+(e<<4)+4>>2]|0;j=c[g+(e<<4)+8>>2]|0;e=(h|0)==0;k=(i|0)==0;l=i+12|0;m=h+12|0;n=d;o=b;p=g;while(1){g=o;L690:while(1){q=c[p+(g<<4)>>2]|0;if((q|0)==0){r=-1}else{r=c[q+12>>2]|0}if(e){s=-1}else{s=c[m>>2]|0}t=c[p+(g<<4)+4>>2]|0;if((t|0)==0){u=-1}else{u=c[t+12>>2]|0}if(k){v=-1}else{v=c[l>>2]|0}do{if((r|0)<=(s|0)){w=(q|0)==(h|0);x=w&(u|0)>(v|0);if(x|w^1){if(x){break}else{break L690}}if((t|0)!=(i|0)){break L690}if((c[p+(g<<4)+8>>2]|0)>>>0<=j>>>0){break L690}}}while(0);g=g+1|0}L712:do{if(e){x=n;while(1){w=c[p+(x<<4)>>2]|0;y=(w|0)==0;if(y){z=-1}else{z=c[w+12>>2]|0}if(k){A=-1}else{A=c[l>>2]|0}w=c[p+(x<<4)+4>>2]|0;if((w|0)==0){B=-1}else{B=c[w+12>>2]|0}do{if((z|0)>=-1){C=y&(A|0)>(B|0);if(C|y^1){if(C){break}else{D=x;break L712}}if((i|0)!=(w|0)){D=x;break L712}if(j>>>0<=(c[p+(x<<4)+8>>2]|0)>>>0){D=x;break L712}}}while(0);x=x-1|0}}else{x=c[m>>2]|0;w=n;while(1){y=c[p+(w<<4)>>2]|0;if((y|0)==0){E=-1}else{E=c[y+12>>2]|0}if(k){F=-1}else{F=c[l>>2]|0}C=c[p+(w<<4)+4>>2]|0;if((C|0)==0){G=-1}else{G=c[C+12>>2]|0}do{if((x|0)<=(E|0)){H=(h|0)==(y|0);I=H&(F|0)>(G|0);if(I|H^1){if(I){break}else{D=w;break L712}}if((i|0)!=(C|0)){D=w;break L712}if(j>>>0<=(c[p+(w<<4)+8>>2]|0)>>>0){D=w;break L712}}}while(0);w=w-1|0}}}while(0);if((g|0)>(D|0)){J=D;K=g}else{w=c[p+(g<<4)+8>>2]|0;x=c[p+(g<<4)+12>>2]|0;C=p+(g<<4)|0;y=p+(D<<4)|0;c[C>>2]=c[y>>2];c[C+4>>2]=c[y+4>>2];c[C+8>>2]=c[y+8>>2];c[C+12>>2]=c[y+12>>2];y=c[f>>2]|0;c[y+(D<<4)>>2]=q;c[y+(D<<4)+4>>2]=t;c[y+(D<<4)+8>>2]=w;c[y+(D<<4)+12>>2]=x;J=D-1|0;K=g+1|0}if((K|0)>(J|0)){break}n=J;o=K;p=c[f>>2]|0}if((J|0)>(b|0)){arQ(a,b,J)}if((K|0)>=(d|0)){return}arQ(a,K,d);return}function arR(b){b=b|0;var d=0,e=0,f=0;c[b>>2]=22576;d=b+108|0;do{if((c[d>>2]|0)!=0){e=b+112|0;f=c[e>>2]|0;ct[c[c[f>>2]>>2]&2047](f);f=c[e>>2]|0;if((f|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}f=c[d>>2]|0;ct[c[c[f>>2]>>2]&2047](f);f=c[d>>2]|0;if((f|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[f-156+152>>2]|0)}}while(0);d=c[b+88>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}d=c[b+84>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}d=c[b+80>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}d=c[b+60>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-64+60>>2]|0)}if((a[b+100|0]&1)==0){return}d=b+92|0;b=c[d>>2]|0;ct[c[c[b>>2]>>2]&2047](b);b=c[d>>2]|0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-4>>2]|0);return}function arS(a){a=a|0;arR(a);return}function arT(a){a=a|0;arR(a);if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-116+112>>2]|0);return}function arU(b){b=b|0;var d=0,e=0,f=0;c[b>>2]=22648;d=b+116|0;do{if((c[d>>2]|0)!=0){e=b+120|0;f=c[e>>2]|0;ct[c[c[f>>2]>>2]&2047](f);f=c[e>>2]|0;if((f|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}f=c[d>>2]|0;ct[c[c[f>>2]>>2]&2047](f);f=c[d>>2]|0;if((f|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[f-156+152>>2]|0)}}while(0);d=c[b+96>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}d=c[b+92>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}d=c[b+88>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}d=c[b+68>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-76+72>>2]|0)}if((a[b+108|0]&1)==0){return}d=b+100|0;b=c[d>>2]|0;ct[c[c[b>>2]>>2]&2047](b);b=c[d>>2]|0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-4>>2]|0);return}function arV(a){a=a|0;arU(a);return}function arW(a){a=a|0;arU(a);if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-124+120>>2]|0);return}function arX(b){b=b|0;var d=0,e=0,f=0,g=0;c[b>>2]=24728;d=b+8|0;e=b+16|0;f=c[e>>2]|0;g=b+20|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-16+12>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+12>>2]=0;return}function arY(b){b=b|0;var d=0;c[b>>2]=24728;d=c[b+16>>2]|0;do{if((d|0)!=0){if((a[b+20|0]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-16+12>>2]|0)}if((b|0)!=0){break}return}}while(0);aDB(b);return}function arZ(a){a=a|0;return 17976|0}function ar_(a){a=a|0;return 52}function ar$(a){a=a|0;return 6}function ar0(a){a=a|0;return 8}function ar1(a){a=a|0;return 12}function ar2(a){a=a|0;return 6}function ar3(a){a=a|0;return a+12|0}function ar4(a){a=a|0;return+(+g[a+44>>2])}function ar5(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0;d=+g[b+28>>2];e=+g[b+32>>2];f=+g[c+4>>2]>=0.0?e:-0.0-e;e=+g[b+36>>2];h=+g[c+8>>2]>=0.0?e:-0.0-e;g[a>>2]=+g[c>>2]>=0.0?d:-0.0-d;g[a+4>>2]=f;g[a+8>>2]=h;g[a+12>>2]=0.0;return}function ar6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0;if((d|0)<=0){return}e=a+28|0;f=a+32|0;h=a+36|0;a=0;do{i=+g[e>>2];j=+g[f>>2];k=+g[b+(a<<4)+4>>2]>=0.0?j:-0.0-j;j=+g[h>>2];l=+g[b+(a<<4)+8>>2]>=0.0?j:-0.0-j;g[c+(a<<4)>>2]=+g[b+(a<<4)>>2]>=0.0?i:-0.0-i;g[c+(a<<4)+4>>2]=k;g[c+(a<<4)+8>>2]=l;g[c+(a<<4)+12>>2]=0.0;a=a+1|0;}while((a|0)<(d|0));return}function ar7(a,b,c){a=a|0;b=b|0;c=c|0;switch(b|0){case 3:{g[c>>2]=0.0;g[c+4>>2]=-1.0;g[c+8>>2]=0.0;g[c+12>>2]=0.0;return};case 4:{g[c>>2]=0.0;g[c+4>>2]=0.0;g[c+8>>2]=1.0;g[c+12>>2]=0.0;return};case 0:{g[c>>2]=1.0;g[c+4>>2]=0.0;g[c+8>>2]=0.0;g[c+12>>2]=0.0;return};case 5:{g[c>>2]=0.0;g[c+4>>2]=0.0;g[c+8>>2]=-1.0;g[c+12>>2]=0.0;return};case 1:{g[c>>2]=-1.0;g[c+4>>2]=0.0;g[c+8>>2]=0.0;g[c+12>>2]=0.0;return};case 2:{g[c>>2]=0.0;g[c+4>>2]=1.0;g[c+8>>2]=0.0;g[c+12>>2]=0.0;return};default:{return}}}function ar8(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0.0,f=0.0,h=0.0,i=0;d=+g[a+28>>2];e=+g[a+32>>2];f=+g[a+36>>2];h=+g[b>>2];if(h>d+c){i=0;return i|0}if(h<-0.0-d-c){i=0;return i|0}d=+g[b+4>>2];if(d>e+c){i=0;return i|0}if(d<-0.0-e-c){i=0;return i|0}e=+g[b+8>>2];if(e>f+c){i=0;return i|0}i=e>=-0.0-f-c;return i|0}function ar9(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;d=+g[a+28>>2];e=+g[a+32>>2];f=+g[a+36>>2];switch(c|0){case 3:{g[b>>2]=0.0;g[b+4>>2]=-1.0;g[b+8>>2]=0.0;g[b+12>>2]=-0.0-e;return};case 4:{g[b>>2]=0.0;g[b+4>>2]=0.0;g[b+8>>2]=1.0;g[b+12>>2]=-0.0-f;return};case 0:{g[b>>2]=1.0;g[b+4>>2]=0.0;g[b+8>>2]=0.0;g[b+12>>2]=-0.0-d;return};case 5:{g[b>>2]=0.0;g[b+4>>2]=0.0;g[b+8>>2]=-1.0;g[b+12>>2]=-0.0-f;return};case 1:{g[b>>2]=-1.0;g[b+4>>2]=0.0;g[b+8>>2]=0.0;g[b+12>>2]=-0.0-d;return};case 2:{g[b>>2]=0.0;g[b+4>>2]=1.0;g[b+8>>2]=0.0;g[b+12>>2]=-0.0-e;return};default:{return}}}function asa(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0;f=+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0);h=f+ +g[a+28>>2];i=f+ +g[a+32>>2];j=f+ +g[a+36>>2];f=+P(+(+g[b>>2]));k=+P(+(+g[b+4>>2]));l=+P(+(+g[b+8>>2]));m=+P(+(+g[b+16>>2]));n=+P(+(+g[b+20>>2]));o=+P(+(+g[b+24>>2]));p=+P(+(+g[b+32>>2]));q=+P(+(+g[b+36>>2]));r=+P(+(+g[b+40>>2]));s=+g[b+48>>2];t=+g[b+52>>2];u=+g[b+56>>2];v=h*f+i*k+j*l;l=h*m+i*n+j*o;o=h*p+i*q+j*r;g[d>>2]=s-v;g[d+4>>2]=t-l;g[d+8>>2]=u-o;g[d+12>>2]=0.0;g[e>>2]=v+s;g[e+4>>2]=l+t;g[e+8>>2]=o+u;g[e+12>>2]=0.0;return}function asb(a,b,d){a=a|0;b=+b;d=d|0;var e=0.0,f=0.0,h=0.0,i=0,j=0,k=0.0,l=0.0,m=0.0;e=+g[a+28>>2];f=+g[a+32>>2];h=+g[a+36>>2];i=a|0;j=a;k=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);l=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);m=(e+k)*2.0;k=(f+l)*2.0;l=(h+ +dh[c[(c[j>>2]|0)+44>>2]&1023](i))*2.0;h=b/12.0;b=k*k;k=l*l;l=m*m;g[d>>2]=h*(b+k);g[d+4>>2]=h*(l+k);g[d+8>>2]=h*(l+b);g[d+12>>2]=0.0;return}function asc(a){a=a|0;var b=0;c[a>>2]=21200;b=c[a+52>>2]|0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-80+76>>2]|0);return}function asd(a){a=a|0;var b=0;c[a>>2]=21200;b=c[a+52>>2]|0;if((b|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[b-80+76>>2]|0)}c[9804]=(c[9804]|0)+1;aDB(c[a-56+52>>2]|0);return}function ase(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,h=0.0,i=0.0,j=0,k=0,l=0.0,m=0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0;d=a|0;e=a;f=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);h=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);i=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);d=a+28|0;e=a+32|0;j=a+36|0;k=a+12|0;l=(f+ +g[d>>2])/+g[k>>2];m=a+16|0;n=(h+ +g[e>>2])/+g[m>>2];o=a+20|0;p=(i+ +g[j>>2])/+g[o>>2];q=+P(+(+g[b>>2]));r=+P(+(+g[b+4>>2]));s=+P(+(+g[b+8>>2]));g[k>>2]=q;g[m>>2]=r;g[o>>2]=s;g[a+24>>2]=0.0;g[d>>2]=l*q-f;g[e>>2]=n*r-h;g[j>>2]=p*s-i;g[a+40>>2]=0.0;return}function asf(a,b){a=a|0;b=+b;var d=0,e=0,f=0.0,h=0.0,i=0.0,j=0,k=0.0,l=0,m=0,n=0.0;d=a|0;e=a;f=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);h=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);i=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);j=a+28|0;k=f+ +g[j>>2];l=a+32|0;f=h+ +g[l>>2];m=a+36|0;h=i+ +g[m>>2];g[a+44>>2]=b;b=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);i=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);n=h- +dh[c[(c[e>>2]|0)+44>>2]&1023](d);g[j>>2]=k-b;g[l>>2]=f-i;g[m>>2]=n;g[a+40>>2]=0.0;return}function asg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0;e=d;f=dj[c[(c[e>>2]|0)+40>>2]&511](d,a)|0;h=dj[c[(c[e>>2]|0)+28>>2]&511](d,f)|0;c[b>>2]=h;if((h|0)!=0){cv[c[(c[d>>2]|0)+48>>2]&2047](d,f)}c[b+4>>2]=c[a+4>>2];g[b+28>>2]=+g[a+28>>2];g[b+32>>2]=+g[a+32>>2];g[b+36>>2]=+g[a+36>>2];g[b+40>>2]=+g[a+40>>2];g[b+12>>2]=+g[a+12>>2];g[b+16>>2]=+g[a+16>>2];g[b+20>>2]=+g[a+20>>2];g[b+24>>2]=+g[a+24>>2];g[b+44>>2]=+g[a+44>>2];return 16992}function ash(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0,j=0,k=0.0,l=0.0,m=0.0;e=+g[b+28>>2];f=+g[b+32>>2];h=+g[b+36>>2];i=b|0;j=b;k=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);l=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);m=e+k;k=f+l;l=h+ +dh[c[(c[j>>2]|0)+44>>2]&1023](i);h=+g[d+4>>2]>=0.0?k:-0.0-k;k=+g[d+8>>2]>=0.0?l:-0.0-l;g[a>>2]=+g[d>>2]>=0.0?m:-0.0-m;g[a+4>>2]=h;g[a+8>>2]=k;g[a+12>>2]=0.0;return}function asi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;switch(b|0){case 6:{f=b;g=2;break};case 7:{f=b;g=3;break};case 8:{f=5;g=4;break};case 9:{f=6;g=4;break};case 10:{f=7;g=5;break};case 11:{f=7;g=6;break};case 2:{f=3;g=1;break};case 3:{f=b;g=2;break};case 5:{f=b;g=1;break};case 0:{f=1;g=0;break};case 1:{f=2;g=0;break};case 4:{f=b;g=0;break};default:{f=0;g=0}}b=a;dA[c[(c[b>>2]|0)+100>>2]&511](a,g,d);dA[c[(c[b>>2]|0)+100>>2]&511](a,f,e);return}function asj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0,j=0,k=0.0,l=0.0,m=0.0;e=+g[a+28>>2];f=+g[a+32>>2];h=+g[a+36>>2];i=a|0;j=a;k=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);l=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);m=e+k;k=f+l;l=h+ +dh[c[(c[j>>2]|0)+44>>2]&1023](i);i=b&1;j=b>>>1&1;a=b>>>2&1;g[d>>2]=+(i^1|0)*m- +(i|0)*m;g[d+4>>2]=+(j^1|0)*k- +(j|0)*k;g[d+8>>2]=+(a^1|0)*l- +(a|0)*l;g[d+12>>2]=0.0;return}function ask(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0;f=i;i=i+48|0;h=f|0;j=f+16|0;k=f+32|0;dA[c[(c[a>>2]|0)+116>>2]&511](a,h,e);l=+g[h>>2];m=+g[h+4>>2];n=+g[h+8>>2];g[b>>2]=l;g[b+4>>2]=m;g[b+8>>2]=n;g[b+12>>2]=0.0;b=c[(c[a>>2]|0)+60>>2]|0;g[k>>2]=-0.0-l;g[k+4>>2]=-0.0-m;g[k+8>>2]=-0.0-n;g[k+12>>2]=0.0;dA[b&511](j,a,k);k=d;d=j;c[k>>2]=c[d>>2];c[k+4>>2]=c[d+4>>2];c[k+8>>2]=c[d+8>>2];c[k+12>>2]=c[d+12>>2];i=f;return}function asl(a){a=a|0;return 17960|0}function asm(a){a=a|0;return 60}function asn(a){a=a|0;return}function aso(a){a=a|0;return}function asp(a,b){a=a|0;b=+b;g[a+12>>2]=b;return}function asq(a){a=a|0;return+(+g[a+12>>2])}function asr(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0;aBr(b|0,d);c[b>>2]=21848;d=b+52|0;c[d>>2]=0;c[b+56>>2]=0;h=b+60|0;a[h]=e&1;e=b+61|0;a[e]=0;c[b+4>>2]=21;if(!f){return}c[9806]=(c[9806]|0)+1;f=aDx(191)|0;if((f|0)==0){i=0}else{j=-(f+4|0)&15;c[f+j>>2]=f;i=f+(j+4)|0}c[i+52>>2]=278;a[i+60|0]=0;a[i+80|0]=1;c[i+76>>2]=0;c[i+68>>2]=0;c[i+72>>2]=0;a[i+100|0]=1;c[i+96>>2]=0;c[i+88>>2]=0;c[i+92>>2]=0;a[i+120|0]=1;c[i+116>>2]=0;c[i+108>>2]=0;c[i+112>>2]=0;a[i+140|0]=1;c[i+136>>2]=0;c[i+128>>2]=0;c[i+132>>2]=0;c[i+144>>2]=0;a[i+164|0]=1;c[i+160>>2]=0;c[i+152>>2]=0;c[i+156>>2]=0;c[i+168>>2]=0;g[i+4>>2]=-3.4028234663852886e+38;g[i+8>>2]=-3.4028234663852886e+38;g[i+12>>2]=-3.4028234663852886e+38;g[i+16>>2]=0.0;g[i+20>>2]=3.4028234663852886e+38;g[i+24>>2]=3.4028234663852886e+38;g[i+28>>2]=3.4028234663852886e+38;g[i+32>>2]=0.0;c[i>>2]=25376;c[d>>2]=i;ayv(i,c[b+48>>2]|0,(a[h]&1)!=0,b+16|0,b+32|0);a[e]=1;return}function ass(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0;aBr(b|0,d);c[b>>2]=21848;j=b+52|0;c[j>>2]=0;c[b+56>>2]=0;k=b+60|0;a[k]=e&1;e=b+61|0;a[e]=0;c[b+4>>2]=21;if(!i){return}c[9806]=(c[9806]|0)+1;i=aDx(191)|0;if((i|0)==0){l=0}else{b=-(i+4|0)&15;c[i+b>>2]=i;l=i+(b+4)|0}c[l+52>>2]=278;a[l+60|0]=0;a[l+80|0]=1;c[l+76>>2]=0;c[l+68>>2]=0;c[l+72>>2]=0;a[l+100|0]=1;c[l+96>>2]=0;c[l+88>>2]=0;c[l+92>>2]=0;a[l+120|0]=1;c[l+116>>2]=0;c[l+108>>2]=0;c[l+112>>2]=0;a[l+140|0]=1;c[l+136>>2]=0;c[l+128>>2]=0;c[l+132>>2]=0;c[l+144>>2]=0;a[l+164|0]=1;c[l+160>>2]=0;c[l+152>>2]=0;c[l+156>>2]=0;c[l+168>>2]=0;g[l+4>>2]=-3.4028234663852886e+38;g[l+8>>2]=-3.4028234663852886e+38;g[l+12>>2]=-3.4028234663852886e+38;g[l+16>>2]=0.0;g[l+20>>2]=3.4028234663852886e+38;g[l+24>>2]=3.4028234663852886e+38;g[l+28>>2]=3.4028234663852886e+38;g[l+32>>2]=0.0;c[l>>2]=25376;c[j>>2]=l;ayv(l,d,(a[k]&1)!=0,f,h);a[e]=1;return}function ast(b){b=b|0;var d=0,e=0;c[b>>2]=21848;do{if((a[b+61|0]&1)!=0){d=b+52|0;e=c[d>>2]|0;ct[c[c[e>>2]>>2]&2047](e);e=c[d>>2]|0;if((e|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[e-172+168>>2]|0)}if((b|0)!=0){break}return}}while(0);c[9804]=(c[9804]|0)+1;aDB(c[b-76+72>>2]|0);return}function asu(b){b=b|0;var d=0;c[b>>2]=21848;if((a[b+61|0]&1)==0){return}d=b+52|0;b=c[d>>2]|0;ct[c[c[b>>2]>>2]&2047](b);b=c[d>>2]|0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-172+168>>2]|0);return}function asv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+64|0;g=f|0;h=c[a+48>>2]|0;c[g>>2]=18424;c[g+4>>2]=h;c[g+8>>2]=b;azn(c[a+52>>2]|0,g|0,d,e);i=f;return}function asw(b,d){b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0,l=0;e=b|0;f=cA[c[(c[b>>2]|0)+28>>2]&4095](e)|0;h=+g[f>>2]- +g[d>>2];i=+g[f+4>>2]- +g[d+4>>2];j=+g[f+8>>2]- +g[d+8>>2];if(h*h+i*i+j*j<=1.1920928955078125e-7){return}aBB(e,d);d=b+61|0;e=b+52|0;do{if((a[d]&1)!=0){f=c[e>>2]|0;ct[c[c[f>>2]>>2]&2047](f);f=c[e>>2]|0;if((f|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[f-172+168>>2]|0)}}while(0);c[9806]=(c[9806]|0)+1;f=aDx(191)|0;if((f|0)==0){k=0}else{l=-(f+4|0)&15;c[f+l>>2]=f;k=f+(l+4)|0}c[k+52>>2]=278;a[k+60|0]=0;a[k+80|0]=1;c[k+76>>2]=0;c[k+68>>2]=0;c[k+72>>2]=0;a[k+100|0]=1;c[k+96>>2]=0;c[k+88>>2]=0;c[k+92>>2]=0;a[k+120|0]=1;c[k+116>>2]=0;c[k+108>>2]=0;c[k+112>>2]=0;a[k+140|0]=1;c[k+136>>2]=0;c[k+128>>2]=0;c[k+132>>2]=0;c[k+144>>2]=0;a[k+164|0]=1;c[k+160>>2]=0;c[k+152>>2]=0;c[k+156>>2]=0;c[k+168>>2]=0;g[k+4>>2]=-3.4028234663852886e+38;g[k+8>>2]=-3.4028234663852886e+38;g[k+12>>2]=-3.4028234663852886e+38;g[k+16>>2]=0.0;g[k+20>>2]=3.4028234663852886e+38;g[k+24>>2]=3.4028234663852886e+38;g[k+28>>2]=3.4028234663852886e+38;g[k+32>>2]=0.0;c[k>>2]=25376;c[e>>2]=k;ayv(k,c[b+48>>2]|0,(a[b+60|0]&1)!=0,b+16|0,b+32|0);a[d]=1;return}function asx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0;e=d;f=dj[c[(c[e>>2]|0)+40>>2]&511](d,a)|0;h=dj[c[(c[e>>2]|0)+28>>2]&511](d,f)|0;c[b>>2]=h;if((h|0)!=0){cv[c[(c[d>>2]|0)+48>>2]&2047](d,f)}c[b+4>>2]=c[a+4>>2];f=c[a+48>>2]|0;cS[c[(c[f>>2]|0)+56>>2]&511](f,b+12|0,d)|0;g[b+52>>2]=+g[a+12>>2];f=a+52|0;do{if((c[f>>2]|0)==0){i=815}else{if(((cA[c[(c[d>>2]|0)+52>>2]&4095](d)|0)&1|0)!=0){i=815;break}h=dj[c[(c[e>>2]|0)+24>>2]&511](d,c[f>>2]|0)|0;if((h|0)==0){c[b+40>>2]=dj[c[(c[e>>2]|0)+28>>2]&511](d,c[f>>2]|0)|0;c[b+44>>2]=0;j=c[f>>2]|0;k=cA[c[(c[j>>2]|0)+12>>2]&4095](j|0)|0;j=cS[c[(c[d>>2]|0)+16>>2]&511](d,k,1)|0;k=c[f>>2]|0;l=cS[c[(c[k>>2]|0)+16>>2]&511](k|0,c[j+8>>2]|0,d)|0;co[c[(c[d>>2]|0)+20>>2]&255](d,j,l,1213612625,c[f>>2]|0);break}else{c[b+40>>2]=h;c[b+44>>2]=0;break}}}while(0);if((i|0)==815){c[b+40>>2]=0;c[b+44>>2]=0}i=a+56|0;do{if((c[i>>2]|0)!=0){if(((cA[c[(c[d>>2]|0)+52>>2]&4095](d)|0)&2|0)!=0){break}a=dj[c[(c[e>>2]|0)+24>>2]&511](d,c[i>>2]|0)|0;if((a|0)==0){c[b+48>>2]=dj[c[(c[e>>2]|0)+28>>2]&511](d,c[i>>2]|0)|0;f=c[i>>2]|0;h=cA[c[(c[f>>2]|0)+8>>2]&4095](f)|0;f=cS[c[(c[d>>2]|0)+16>>2]&511](d,h,1)|0;h=c[i>>2]|0;l=cS[c[(c[h>>2]|0)+12>>2]&511](h,c[f+8>>2]|0,d)|0;co[c[(c[d>>2]|0)+20>>2]&255](d,f,l,1346456916,c[i>>2]|0);return 16968}else{c[b+48>>2]=a;return 16968}}}while(0);c[b+48>>2]=0;return 16968}function asy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+52|0;a=c[d>>2]|0;if((a|0)==0){return}e=cA[c[(c[a>>2]|0)+12>>2]&4095](a|0)|0;a=cS[c[(c[b>>2]|0)+16>>2]&511](b,e,1)|0;e=c[d>>2]|0;f=cS[c[(c[e>>2]|0)+16>>2]&511](e|0,c[a+8>>2]|0,b)|0;co[c[(c[b>>2]|0)+20>>2]&255](b,a,f,1213612625,c[d>>2]|0);return}function asz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+56|0;a=c[d>>2]|0;if((a|0)==0){return}e=cA[c[(c[a>>2]|0)+8>>2]&4095](a)|0;a=cS[c[(c[b>>2]|0)+16>>2]&511](b,e,1)|0;e=c[d>>2]|0;f=cS[c[(c[e>>2]|0)+12>>2]&511](e,c[a+8>>2]|0,b)|0;co[c[(c[b>>2]|0)+20>>2]&255](b,a,f,1346456916,c[d>>2]|0);return}function asA(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[b>>2]|0)+64>>2]&511](a,b,d);return}function asB(a){a=a|0;if((a|0)==0){return}aDB(a);return}function asC(a,b,f){a=a|0;b=b|0;f=f|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0;j=i;i=i+64|0;k=j|0;l=j+16|0;m=j+24|0;n=j+32|0;o=j+40|0;p=j+56|0;q=a+4|0;r=c[q>>2]|0;di[c[(c[r>>2]|0)+16>>2]&63](r,k,j+8|0,l,m,n,o,j+48|0,p,b);r=c[n>>2]|0;n=aa(c[o>>2]|0,f)|0;o=r+n|0;s=o;t=c[q>>2]|0;u=t+4|0;v=t+8|0;w=t+12|0;t=o;o=c[p>>2]|0;p=2;while(1){if((o|0)==2){x=c[s+(p<<2)>>2]|0}else if((o|0)==3){x=e[t+(p<<1)>>1]|0}else{x=d[r+(p+n)|0]|0}y=(c[l>>2]|0)==0;z=c[k>>2]|0;A=aa(c[m>>2]|0,x)|0;B=z+A|0;if(y){C=+g[z+(A+4)>>2]*+g[v>>2];D=+g[z+(A+8)>>2]*+g[w>>2];g[a+12+(p<<4)>>2]=+g[B>>2]*+g[u>>2];g[a+12+(p<<4)+4>>2]=C;g[a+12+(p<<4)+8>>2]=D;g[a+12+(p<<4)+12>>2]=0.0}else{D=+h[z+(A+8)>>3]*+g[v>>2];C=+h[z+(A+16)>>3]*+g[w>>2];g[a+12+(p<<4)>>2]=+h[B>>3]*+g[u>>2];g[a+12+(p<<4)+4>>2]=D;g[a+12+(p<<4)+8>>2]=C;g[a+12+(p<<4)+12>>2]=0.0}if((p|0)>0){p=p-1|0}else{break}}p=c[a+8>>2]|0;dI[c[(c[p>>2]|0)+8>>2]&1023](p,a+12|0,b,f);f=c[q>>2]|0;cv[c[(c[f>>2]|0)+24>>2]&2047](f,b);i=j;return}function asD(a){a=a|0;return}function asE(a){a=a|0;return}function asF(a){a=a|0;return 16760|0}function asG(a){a=a|0;return 60}function asH(a){a=a|0;return 0}function asI(a,b,c){a=a|0;b=b|0;c=c|0;return}function asJ(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,h=0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0;e=i;i=i+16|0;f=e|0;h=c[a+52>>2]|0;j=+g[a+28+(((h+2|0)%3|0)<<2)>>2];k=f|0;g[k>>2]=j;l=f+4|0;g[l>>2]=j;m=f+8|0;g[m>>2]=j;g[f+12>>2]=0.0;n=f+(h<<2)|0;g[n>>2]=+g[a+28+(h<<2)>>2]+ +g[n>>2];j=(+g[k>>2]+.03999999910593033)*2.0;o=(+g[l>>2]+.03999999910593033)*2.0;p=(+g[m>>2]+.03999999910593033)*2.0;q=j*j;j=o*o;o=p*p;p=b*.0833333283662796;g[d>>2]=p*(j+o);g[d+4>>2]=p*(q+o);g[d+8>>2]=p*(q+j);i=e;return}function asK(a){a=a|0;if((a|0)==0){return}aDB(a);return}function asL(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0;f=i;i=i+112|0;j=f|0;k=f+48|0;l=f+64|0;m=f+72|0;n=f+80|0;o=f+88|0;p=f+104|0;q=j|0;r=a+4|0;s=c[r>>2]|0;di[c[(c[s>>2]|0)+16>>2]&63](s,k,f+56|0,l,m,n,o,f+96|0,p,b);s=c[n>>2]|0;n=s+(aa(c[o>>2]|0,d)|0)|0;o=n;s=c[r>>2]|0;t=n;n=s+4|0;u=s+8|0;v=s+12|0;s=(c[p>>2]|0)==3;p=2;while(1){if(s){w=e[t+(p<<1)>>1]|0}else{w=c[o+(p<<2)>>2]|0}x=(c[l>>2]|0)==0;y=c[k>>2]|0;z=aa(c[m>>2]|0,w)|0;A=y+z|0;if(x){B=+g[y+(z+4)>>2]*+g[u>>2];C=+g[y+(z+8)>>2]*+g[v>>2];g[j+(p<<4)>>2]=+g[A>>2]*+g[n>>2];g[j+(p<<4)+4>>2]=B;g[j+(p<<4)+8>>2]=C;g[j+(p<<4)+12>>2]=0.0}else{C=+h[y+(z+8)>>3]*+g[u>>2];B=+h[y+(z+16)>>3]*+g[v>>2];g[j+(p<<4)>>2]=+h[A>>3]*+g[n>>2];g[j+(p<<4)+4>>2]=C;g[j+(p<<4)+8>>2]=B;g[j+(p<<4)+12>>2]=0.0}if((p|0)>0){p=p-1|0}else{break}}p=c[a+8>>2]|0;dI[c[(c[p>>2]|0)+8>>2]&1023](p,q,b,d);d=c[r>>2]|0;cv[c[(c[d>>2]|0)+24>>2]&2047](d,b);i=f;return}function asM(a){a=a|0;if((a|0)==0){return}aDB(a);return}function asN(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0;f=i;i=i+112|0;j=f|0;k=f+48|0;l=f+64|0;m=f+72|0;n=f+80|0;o=f+88|0;p=f+104|0;q=j|0;r=a+4|0;s=c[r>>2]|0;di[c[(c[s>>2]|0)+16>>2]&63](s,k,f+56|0,l,m,n,o,f+96|0,p,b);s=c[n>>2]|0;n=s+(aa(c[o>>2]|0,d)|0)|0;o=n;s=c[r>>2]|0;t=n;n=s+4|0;u=s+8|0;v=s+12|0;s=(c[p>>2]|0)==3;p=2;while(1){if(s){w=e[t+(p<<1)>>1]|0}else{w=c[o+(p<<2)>>2]|0}x=(c[l>>2]|0)==0;y=c[k>>2]|0;z=aa(c[m>>2]|0,w)|0;A=y+z|0;if(x){B=+g[y+(z+4)>>2]*+g[u>>2];C=+g[y+(z+8)>>2]*+g[v>>2];g[j+(p<<4)>>2]=+g[A>>2]*+g[n>>2];g[j+(p<<4)+4>>2]=B;g[j+(p<<4)+8>>2]=C;g[j+(p<<4)+12>>2]=0.0}else{C=+h[y+(z+8)>>3]*+g[u>>2];B=+h[y+(z+16)>>3]*+g[v>>2];g[j+(p<<4)>>2]=+h[A>>3]*+g[n>>2];g[j+(p<<4)+4>>2]=C;g[j+(p<<4)+8>>2]=B;g[j+(p<<4)+12>>2]=0.0}if((p|0)>0){p=p-1|0}else{break}}p=c[a+8>>2]|0;dI[c[(c[p>>2]|0)+8>>2]&1023](p,q,b,d);d=c[r>>2]|0;cv[c[(c[d>>2]|0)+24>>2]&2047](d,b);i=f;return}function asO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0.0,z=0.0,A=0;e=i;i=i+32|0;f=e|0;h=e+16|0;j=a|0;k=a+4|0;l=a+8|0;m=a+12|0;aDD(a|0,0,16);n=+g[d>>2];o=+g[d+4>>2];p=+g[d+8>>2];q=n*n+o*o+p*p;if(q<9999999747378752.0e-20){r=1.0;s=0.0;t=0.0}else{u=1.0/+Q(+q);r=n*u;s=o*u;t=p*u}d=b+52|0;a=c[d>>2]|0;u=+g[b+28+(((a+2|0)%3|0)<<2)>>2];aDD(f|0,0,16);g[f+(a<<2)>>2]=+g[b+28+(a<<2)>>2];a=b|0;v=b+12|0;w=b+16|0;x=b+20|0;p=u*r*+g[v>>2]+ +g[f>>2];o=u*s*+g[w>>2]+ +g[f+4>>2];n=u*t*+g[x>>2]+ +g[f+8>>2];f=b;q=+dh[c[(c[f>>2]|0)+44>>2]&1023](a);y=p-r*q;p=o-s*q;o=n-t*q;q=t*o+(r*y+s*p);if(q>-999999984306749400.0){g[j>>2]=y;g[k>>2]=p;g[l>>2]=o;g[m>>2]=0.0;z=q}else{z=-999999984306749400.0}aDD(h|0,0,16);A=c[d>>2]|0;g[h+(A<<2)>>2]=-0.0- +g[b+28+(A<<2)>>2];q=u*r*+g[v>>2]+ +g[h>>2];o=u*s*+g[w>>2]+ +g[h+4>>2];p=u*t*+g[x>>2]+ +g[h+8>>2];u=+dh[c[(c[f>>2]|0)+44>>2]&1023](a);y=q-r*u;q=o-s*u;o=p-t*u;if(t*o+(r*y+s*q)<=z){i=e;return}g[j>>2]=y;g[k>>2]=q;g[l>>2]=o;g[m>>2]=0.0;i=e;return}function asP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0;f=i;i=i+32|0;h=f|0;j=f+16|0;k=a+52|0;l=c[k>>2]|0;m=+g[a+28+(((l+2|0)%3|0)<<2)>>2];if((e|0)<=0){i=f;return}n=h|0;o=h+4|0;p=h+8|0;q=a|0;r=a+12|0;s=a+16|0;t=a+20|0;u=a;v=j|0;w=j+4|0;x=j+8|0;y=h;z=j;A=0;B=l;while(1){aDD(y|0,0,16);g[h+(B<<2)>>2]=+g[a+28+(B<<2)>>2];l=b+(A<<4)|0;C=b+(A<<4)+4|0;D=b+(A<<4)+8|0;E=m*+g[l>>2]*+g[r>>2]+ +g[n>>2];F=m*+g[C>>2]*+g[s>>2]+ +g[o>>2];G=m*+g[D>>2]*+g[t>>2]+ +g[p>>2];H=+dh[c[(c[u>>2]|0)+44>>2]&1023](q);I=+g[l>>2];J=+g[C>>2];K=+g[D>>2];L=E-H*I;E=F-H*J;F=G-H*K;H=I*L+J*E+K*F;if(H>-999999984306749400.0){g[d+(A<<4)>>2]=L;g[d+(A<<4)+4>>2]=E;g[d+(A<<4)+8>>2]=F;g[d+(A<<4)+12>>2]=0.0;M=H;N=+g[l>>2];O=+g[C>>2];P=+g[D>>2]}else{M=-999999984306749400.0;N=I;O=J;P=K}aDD(z|0,0,16);Q=c[k>>2]|0;g[j+(Q<<2)>>2]=-0.0- +g[a+28+(Q<<2)>>2];K=m*N*+g[r>>2]+ +g[v>>2];J=m*O*+g[s>>2]+ +g[w>>2];I=m*P*+g[t>>2]+ +g[x>>2];H=+dh[c[(c[u>>2]|0)+44>>2]&1023](q);F=+g[l>>2];E=+g[C>>2];L=+g[D>>2];G=K-H*F;K=J-H*E;J=I-H*L;if(F*G+E*K+L*J>M){g[d+(A<<4)>>2]=G;g[d+(A<<4)+4>>2]=K;g[d+(A<<4)+8>>2]=J;g[d+(A<<4)+12>>2]=0.0}D=A+1|0;if((D|0)>=(e|0)){break}A=D;B=c[k>>2]|0}i=f;return}function asQ(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-56+52>>2]|0);return}function asR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0.0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;f=i;i=i+16|0;h=f|0;j=c[a+52>>2]|0;k=+g[a+28+(((j+2|0)%3|0)<<2)>>2];l=h|0;g[l>>2]=k;m=h+4|0;g[m>>2]=k;n=h+8|0;g[n>>2]=k;g[h+12>>2]=0.0;g[h+(j<<2)>>2]=k+ +g[a+28+(j<<2)>>2];j=a|0;h=a;k=+dh[c[(c[h>>2]|0)+44>>2]&1023](j);o=+dh[c[(c[h>>2]|0)+44>>2]&1023](j);p=+dh[c[(c[h>>2]|0)+44>>2]&1023](j);q=k+ +g[l>>2];g[l>>2]=q;k=o+ +g[m>>2];g[m>>2]=k;o=p+ +g[n>>2];p=+P(+(+g[b>>2]));r=+P(+(+g[b+4>>2]));s=+P(+(+g[b+8>>2]));t=+P(+(+g[b+16>>2]));u=+P(+(+g[b+20>>2]));v=+P(+(+g[b+24>>2]));w=+P(+(+g[b+32>>2]));x=+P(+(+g[b+36>>2]));y=+P(+(+g[b+40>>2]));z=+g[b+48>>2];A=+g[b+52>>2];B=+g[b+56>>2];C=o*s+(p*q+r*k);r=o*v+(t*q+u*k);u=o*y+(w*q+x*k);g[d>>2]=z-C;g[d+4>>2]=A-r;g[d+8>>2]=B-u;g[d+12>>2]=0.0;g[e>>2]=z+C;g[e+4>>2]=A+r;g[e+8>>2]=B+u;g[e+12>>2]=0.0;i=f;return}function asS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,h=0.0,i=0.0,j=0,k=0,l=0.0,m=0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0;d=a|0;e=a;f=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);h=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);i=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);d=a+28|0;e=a+32|0;j=a+36|0;k=a+12|0;l=(f+ +g[d>>2])/+g[k>>2];m=a+16|0;n=(h+ +g[e>>2])/+g[m>>2];o=a+20|0;p=(i+ +g[j>>2])/+g[o>>2];q=+P(+(+g[b>>2]));r=+P(+(+g[b+4>>2]));s=+P(+(+g[b+8>>2]));g[k>>2]=q;g[m>>2]=r;g[o>>2]=s;g[a+24>>2]=0.0;g[d>>2]=l*q-f;g[e>>2]=n*r-h;g[j>>2]=p*s-i;g[a+40>>2]=0.0;return}function asT(a,b){a=a|0;b=+b;var d=0,e=0,f=0.0,h=0.0,i=0.0,j=0,k=0.0,l=0,m=0,n=0.0;d=a|0;e=a;f=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);h=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);i=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);j=a+28|0;k=f+ +g[j>>2];l=a+32|0;f=h+ +g[l>>2];m=a+36|0;h=i+ +g[m>>2];g[a+44>>2]=b;b=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);i=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);n=h- +dh[c[(c[e>>2]|0)+44>>2]&1023](d);g[j>>2]=k-b;g[l>>2]=f-i;g[m>>2]=n;g[a+40>>2]=0.0;return}function asU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0;e=d;f=dj[c[(c[e>>2]|0)+40>>2]&511](d,a)|0;h=dj[c[(c[e>>2]|0)+28>>2]&511](d,f)|0;c[b>>2]=h;if((h|0)!=0){cv[c[(c[d>>2]|0)+48>>2]&2047](d,f)}c[b+4>>2]=c[a+4>>2];g[b+28>>2]=+g[a+28>>2];g[b+32>>2]=+g[a+32>>2];g[b+36>>2]=+g[a+36>>2];g[b+40>>2]=+g[a+40>>2];g[b+12>>2]=+g[a+12>>2];g[b+16>>2]=+g[a+16>>2];g[b+20>>2]=+g[a+20>>2];g[b+24>>2]=+g[a+24>>2];g[b+44>>2]=+g[a+44>>2];c[b+52>>2]=c[a+52>>2];return 17424}function asV(a){a=a|0;return}function asW(a){a=a|0;return 17944|0}function asX(a){a=a|0;return}function asY(a){a=a|0;return 16952|0}function asZ(a){a=a|0;return}function as_(a){a=a|0;return}function as$(a){a=a|0;return}function as0(a,b){a=a|0;b=b|0;var d=0;a=b+1116|0;b=c[a>>2]|0;if((b|0)>0){d=0}else{c[a>>2]=0;return}do{d=d+1|0;}while((d|0)<(b|0));c[a>>2]=0;return}function as1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[b+204>>2]|0;do{if((a&4|0)==0){b=c[d+204>>2]|0;if((b&4|0)!=0){e=0;break}if((a&3|0)==0){e=1;break}e=(b&3|0)==0}else{e=0}}while(0);return e|0}function as2(a){a=a|0;return c[a+12>>2]|0}function as3(a,b){a=a|0;b=b|0;return c[(c[a+20>>2]|0)+(b<<2)>>2]|0}function as4(a){a=a|0;return c[a+20>>2]|0}function as5(a){a=a|0;return c[a+196>>2]|0}function as6(a){a=a|0;return c[a+196>>2]|0}function as7(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-56+52>>2]|0);return}function as8(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-56+52>>2]|0);return}function as9(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ata(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0;e=i;i=i+160|0;f=e|0;h=c[c[a>>2]>>2]|0;j=h;k=c[c[a+4>>2]>>2]|0;l=k;if(!(cS[c[(c[b>>2]|0)+24>>2]&511](b,j,l)|0)){i=e;return}m=a+8|0;a=c[m>>2]|0;do{if((a|0)==0){n=dE[c[(c[b>>2]|0)+8>>2]&127](b,j,l,0)|0;c[m>>2]=n;if((n|0)!=0){o=n;break}i=e;return}else{o=a}}while(0);c[f>>2]=24e3;c[f+4>>2]=0;c[f+136>>2]=j;c[f+140>>2]=l;a=h+4|0;m=f+8|0;aDD(f+144|0,-1|0,16);c[m>>2]=c[a>>2];c[m+4>>2]=c[a+4>>2];c[m+8>>2]=c[a+8>>2];c[m+12>>2]=c[a+12>>2];a=h+20|0;m=f+24|0;c[m>>2]=c[a>>2];c[m+4>>2]=c[a+4>>2];c[m+8>>2]=c[a+8>>2];c[m+12>>2]=c[a+12>>2];a=h+36|0;m=f+40|0;c[m>>2]=c[a>>2];c[m+4>>2]=c[a+4>>2];c[m+8>>2]=c[a+8>>2];c[m+12>>2]=c[a+12>>2];a=h+52|0;h=f+56|0;c[h>>2]=c[a>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];a=k+4|0;h=f+72|0;c[h>>2]=c[a>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];a=k+20|0;h=f+88|0;c[h>>2]=c[a>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];a=k+36|0;h=f+104|0;c[h>>2]=c[a>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];a=k+52|0;k=f+120|0;c[k>>2]=c[a>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];if((c[d+8>>2]|0)==1){co[c[(c[o>>2]|0)+8>>2]&255](o,j,l,d,f);i=e;return}p=+db[c[(c[o>>2]|0)+12>>2]&127](o,j,l,d,f);f=d+12|0;if(+g[f>>2]<=p){i=e;return}g[f>>2]=p;i=e;return}function atb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;c[b>>2]=22392;d=b+12|0;e=b+20|0;f=c[e>>2]|0;g=b+24|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+16>>2]=0;h=b;aDB(h);return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+16>>2]=0;h=b;aDB(h);return}function atc(b){b=b|0;var d=0,e=0,f=0,g=0;c[b>>2]=22392;d=b+12|0;e=b+20|0;f=c[e>>2]|0;g=b+24|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+16>>2]=0;return}function atd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;f=i;i=i+16|0;h=f|0;j=f+8|0;c[9796]=(c[9796]|0)+1;k=b+4|0;if((c[k>>2]&2|0)==0){l=16024}else{m=c[d+192>>2]|0;n=+cU[c[(c[m>>2]|0)+20>>2]&127](m,.019999999552965164);g[h>>2]=n;m=c[e+192>>2]|0;o=+cU[c[(c[m>>2]|0)+20>>2]&127](m,.019999999552965164);g[j>>2]=o;l=n<o?h:j}o=+g[l>>2];n=+g[d+184>>2];p=+g[e+184>>2];q=n<p?n:p;l=c[b+196>>2]|0;j=l+8|0;h=c[j>>2]|0;do{if((h|0)==0){if((c[k>>2]&4|0)!=0){r=0;i=f;return r|0}c[9806]=(c[9806]|0)+1;m=aDx(1159)|0;if((m|0)==0){s=0;break}t=-(m+4|0)&15;c[m+t>>2]=m;s=m+(t+4)|0}else{t=l+12|0;m=c[t>>2]|0;c[t>>2]=c[m>>2];c[j>>2]=h-1;s=m}}while(0);h=s;c[s>>2]=1025;c[s+112>>2]=0;g[s+116>>2]=0.0;a[s+120|0]=0;aDD(s+124|0,0,28);c[s+388>>2]=0;g[s+392>>2]=0.0;a[s+396|0]=0;aDD(s+400|0,0,28);c[s+664>>2]=0;g[s+668>>2]=0.0;a[s+672|0]=0;aDD(s+676|0,0,28);c[s+940>>2]=0;g[s+944>>2]=0.0;a[s+948|0]=0;aDD(s+952|0,0,28);c[s+1108>>2]=d;c[s+1112>>2]=e;c[s+1116>>2]=0;g[s+1120>>2]=o;g[s+1124>>2]=q;e=b+12|0;c[s+1136>>2]=c[e>>2];s=c[e>>2]|0;d=b+16|0;do{if((s|0)==(c[d>>2]|0)){j=(s|0)==0?1:s<<1;if((s|0)>=(j|0)){u=s;break}if((j|0)==0){v=0;w=s}else{c[9806]=(c[9806]|0)+1;l=aDx((j<<2)+19|0)|0;if((l|0)==0){x=0}else{k=-(l+4|0)&15;c[l+k>>2]=l;x=l+(k+4)|0}v=x;w=c[e>>2]|0}k=b+20|0;if((w|0)>0){l=0;do{m=v+(l<<2)|0;if((m|0)!=0){c[m>>2]=c[(c[k>>2]|0)+(l<<2)>>2]}l=l+1|0;}while((l|0)<(w|0))}l=c[k>>2]|0;m=b+24|0;if((l|0)!=0){if((a[m]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-4>>2]|0)}c[k>>2]=0}a[m]=1;c[k>>2]=v;c[d>>2]=j;u=c[e>>2]|0}else{u=s}}while(0);s=(c[b+20>>2]|0)+(u<<2)|0;if((s|0)==0){y=u}else{c[s>>2]=h;y=c[e>>2]|0}c[e>>2]=y+1;r=h;i=f;return r|0}function ate(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;c[9796]=(c[9796]|0)-1;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);d=c[b+1136>>2]|0;e=a+12|0;f=(c[e>>2]|0)-1|0;g=a+20|0;h=c[g>>2]|0;i=h+(d<<2)|0;j=c[i>>2]|0;c[i>>2]=c[h+(f<<2)>>2];c[(c[g>>2]|0)+(f<<2)>>2]=j;c[(c[(c[g>>2]|0)+(d<<2)>>2]|0)+1136>>2]=d;c[e>>2]=(c[e>>2]|0)-1;e=c[a+196>>2]|0;a=b;if((b|0)==0){return}d=c[e+16>>2]|0;do{if(d>>>0<=a>>>0){if((d+(aa(c[e>>2]|0,c[e+4>>2]|0)|0)|0)>>>0<=a>>>0){break}g=e+12|0;c[b>>2]=c[g>>2];c[g>>2]=a;g=e+8|0;c[g>>2]=(c[g>>2]|0)+1;return}}while(0);c[9804]=(c[9804]|0)+1;aDB(c[b-1140+1136>>2]|0);return}function atf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+8|0;g=f|0;c[g>>2]=a;c[g+4>>2]=e;e=c[a+200+((c[(c[b+192>>2]|0)+4>>2]|0)*144|0)+(c[(c[d+192>>2]|0)+4>>2]<<2)>>2]|0;a=dE[c[(c[e>>2]|0)+8>>2]&127](e,g,b,d)|0;i=f;return a|0}function atg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a=c[b+216>>2]|0;do{if((a|0)==5|(a|0)==2){e=c[d+216>>2]|0;if((e|0)==5|(e|0)==2){f=0}else{break}return f|0}}while(0);if((c[b+252>>2]|0)==0){f=1;return f|0}f=dj[c[c[b>>2]>>2]&511](b,d)|0;return f|0}function ath(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f|0;c[g>>2]=21696;c[g+4>>2]=d;c[g+8>>2]=a;dA[c[(c[b>>2]|0)+48>>2]&511](b,g|0,e);i=f;return}function ati(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=c[a+192>>2]|0;a=d+8|0;e=c[a>>2]|0;if((e|0)!=0){f=d+12|0;d=c[f>>2]|0;c[f>>2]=c[d>>2];c[a>>2]=e-1;g=d;return g|0}c[9806]=(c[9806]|0)+1;d=aDx(b+19|0)|0;if((d|0)==0){g=0;return g|0}b=-(d+4|0)&15;c[d+b>>2]=d;g=d+(b+4)|0;return g|0}function atj(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+192>>2]|0;if((b|0)==0){return}a=c[d+16>>2]|0;do{if(a>>>0<=b>>>0){if((a+(aa(c[d>>2]|0,c[d+4>>2]|0)|0)|0)>>>0<=b>>>0){break}e=d+12|0;c[b>>2]=c[e>>2];c[e>>2]=b;e=d+8|0;c[e>>2]=(c[e>>2]|0)+1;return}}while(0);c[9804]=(c[9804]|0)+1;aDB(c[b-4>>2]|0);return}function atk(a){a=a|0;if((a|0)==0){return}aDB(a);return}function atl(a,b){a=a|0;b=b|0;var d=0;d=c[a+8>>2]|0;dA[c[d+188>>2]&511](b,d,c[a+4>>2]|0);return 0}function atm(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-256+252>>2]|0);return}function atn(a,b){a=a|0;b=b|0;return 1}function ato(a){a=a|0;return 248}function atp(a){a=a|0;return 12}function atq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0.0,k=0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0.0,v=0,w=0,x=0,y=0;g[b+16>>2]=+g[a+4>>2];g[b+20>>2]=+g[a+8>>2];g[b+24>>2]=+g[a+12>>2];g[b+28>>2]=+g[a+16>>2];g[b+32>>2]=+g[a+20>>2];g[b+36>>2]=+g[a+24>>2];g[b+40>>2]=+g[a+28>>2];g[b+44>>2]=+g[a+32>>2];g[b+48>>2]=+g[a+36>>2];g[b+52>>2]=+g[a+40>>2];g[b+56>>2]=+g[a+44>>2];g[b+60>>2]=+g[a+48>>2];g[b+64>>2]=+g[a+52>>2];g[b+68>>2]=+g[a+56>>2];g[b+72>>2]=+g[a+60>>2];g[b+76>>2]=+g[a+64>>2];g[b+80>>2]=+g[a+68>>2];g[b+84>>2]=+g[a+72>>2];g[b+88>>2]=+g[a+76>>2];g[b+92>>2]=+g[a+80>>2];g[b+96>>2]=+g[a+84>>2];g[b+100>>2]=+g[a+88>>2];g[b+104>>2]=+g[a+92>>2];g[b+108>>2]=+g[a+96>>2];g[b+112>>2]=+g[a+100>>2];g[b+116>>2]=+g[a+104>>2];g[b+120>>2]=+g[a+108>>2];g[b+124>>2]=+g[a+112>>2];g[b+128>>2]=+g[a+116>>2];g[b+132>>2]=+g[a+120>>2];g[b+136>>2]=+g[a+124>>2];g[b+140>>2]=+g[a+128>>2];g[b+144>>2]=+g[a+132>>2];g[b+148>>2]=+g[a+136>>2];g[b+152>>2]=+g[a+140>>2];g[b+156>>2]=+g[a+144>>2];g[b+160>>2]=+g[a+148>>2];g[b+164>>2]=+g[a+152>>2];g[b+168>>2]=+g[a+156>>2];g[b+172>>2]=+g[a+160>>2];g[b+176>>2]=+g[a+164>>2];g[b+180>>2]=+g[a+168>>2];g[b+184>>2]=+g[a+172>>2];g[b+188>>2]=+g[a+176>>2];c[b+220>>2]=c[a+180>>2];g[b+192>>2]=+g[a+184>>2];c[b>>2]=0;e=d;c[b+4>>2]=dj[c[(c[e>>2]|0)+28>>2]&511](d,c[a+192>>2]|0)|0;c[b+8>>2]=0;c[b+224>>2]=c[a+204>>2];c[b+228>>2]=c[a+208>>2];c[b+232>>2]=c[a+212>>2];f=a+216|0;h=b+236|0;c[h>>2]=c[f>>2];c[h>>2]=c[f>>2];g[b+196>>2]=+g[a+220>>2];g[b+200>>2]=+g[a+224>>2];g[b+204>>2]=+g[a+228>>2];c[b+240>>2]=c[a+232>>2];f=dj[c[(c[e>>2]|0)+40>>2]&511](d,a)|0;h=dj[c[(c[e>>2]|0)+28>>2]&511](d,f)|0;c[b+12>>2]=h;if((h|0)==0){i=a+240|0;j=+g[i>>2];k=b+208|0;l=k;g[l>>2]=j;m=a+244|0;n=+g[m>>2];o=b+212|0;p=o;g[p>>2]=n;q=a+248|0;r=+g[q>>2];s=b+216|0;t=s;g[t>>2]=r;u=+g[q>>2];g[t>>2]=u;v=a+252|0;w=c[v>>2]|0;x=b+244|0;y=x;c[y>>2]=w;return 16872}cv[c[(c[d>>2]|0)+48>>2]&2047](d,f);i=a+240|0;j=+g[i>>2];k=b+208|0;l=k;g[l>>2]=j;m=a+244|0;n=+g[m>>2];o=b+212|0;p=o;g[p>>2]=n;q=a+248|0;r=+g[q>>2];s=b+216|0;t=s;g[t>>2]=r;u=+g[q>>2];g[t>>2]=u;v=a+252|0;w=c[v>>2]|0;x=b+244|0;y=x;c[y>>2]=w;return 16872}function atr(a,b){a=a|0;b=b|0;var d=0,e=0;d=cA[c[(c[a>>2]|0)+16>>2]&4095](a)|0;e=cS[c[(c[b>>2]|0)+16>>2]&511](b,d,1)|0;d=cS[c[(c[a>>2]|0)+20>>2]&511](a,c[e+8>>2]|0,b)|0;co[c[(c[b>>2]|0)+20>>2]&255](b,e,d,1245859651,a);return}function ats(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0;e=i;i=i+96|0;f=e|0;h=e+64|0;j=e+80|0;g[f>>2]=1.0;aDD(f+4|0,0,16);g[f+20>>2]=1.0;aDD(f+24|0,0,16);g[f+40>>2]=1.0;aDD(f+44|0,0,20);dI[c[(c[a>>2]|0)+8>>2]&1023](a,f,h,j);k=+g[j>>2];l=+g[h>>2];m=k-l;n=+g[j+4>>2];o=+g[h+4>>2];p=n-o;q=+g[j+8>>2];r=+g[h+8>>2];s=q-r;g[d>>2]=+Q(+(m*m+p*p+s*s))*.5;g[b>>2]=(l+k)*.5;g[b+4>>2]=(o+n)*.5;g[b+8>>2]=(r+q)*.5;g[b+12>>2]=0.0;i=e;return}function att(a,b){a=a|0;b=+b;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a)*b)}function atu(a){a=a|0;var b=0,d=0,e=0,f=0.0,h=0.0,j=0.0,k=0.0;b=i;i=i+24|0;d=b|0;e=b+16|0;dA[c[(c[a>>2]|0)+12>>2]&511](a,d,e);f=+g[d>>2];h=+g[d+4>>2];j=+g[d+8>>2];k=+Q(+(f*f+h*h+j*j));i=b;return+(k+ +g[e>>2])}function atv(a,b,d,e,f,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;h=h|0;i=i|0;var j=0.0,k=0,l=0.0,m=0,n=0.0,o=0,p=0.0,q=0,r=0.0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,h,i);b=i|0;j=+g[b>>2];k=i+4|0;l=+g[k>>2];m=i+8|0;n=+g[m>>2];o=h|0;p=+g[o>>2];q=h+4|0;r=+g[q>>2];s=h+8|0;t=+g[s>>2];u=+g[d>>2]*f;v=+g[d+4>>2]*f;w=+g[d+8>>2]*f;if(u>0.0){x=p;y=j+u}else{x=p+u;y=j}if(v>0.0){z=r;A=l+v}else{z=r+v;A=l}if(w>0.0){B=t;C=n+w}else{B=t+w;C=n}n=+g[e>>2];w=+g[e+4>>2];t=+g[e+8>>2];l=+Q(+(n*n+w*w+t*t));t=l*+dh[c[(c[a>>2]|0)+16>>2]&1023](a)*f;g[o>>2]=x;g[q>>2]=z;g[s>>2]=B;g[h+12>>2]=0.0;g[b>>2]=y;g[k>>2]=A;g[m>>2]=C;g[i+12>>2]=0.0;g[o>>2]=+g[o>>2]-t;g[q>>2]=+g[q>>2]-t;g[s>>2]=+g[s>>2]-t;g[b>>2]=t+ +g[b>>2];g[k>>2]=t+ +g[k>>2];g[m>>2]=t+ +g[m>>2];return}function atw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=d;f=dj[c[(c[e>>2]|0)+40>>2]&511](d,a)|0;g=dj[c[(c[e>>2]|0)+28>>2]&511](d,f)|0;c[b>>2]=g;if((g|0)!=0){cv[c[(c[d>>2]|0)+48>>2]&2047](d,f)}c[b+4>>2]=c[a+4>>2];return 16832}function atx(a,b){a=a|0;b=b|0;var d=0,e=0;d=cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0;e=cS[c[(c[b>>2]|0)+16>>2]&511](b,d,1)|0;d=cS[c[(c[a>>2]|0)+52>>2]&511](a,c[e+8>>2]|0,b)|0;co[c[(c[b>>2]|0)+20>>2]&255](b,e,d,1346455635,a);return}function aty(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;c[b>>2]=24360;a[b+20|0]=1;c[b+16>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+24>>2]=d;g[b+28>>2]=0.0;c[b+32>>2]=0;c[b+36>>2]=1;g[b+40>>2]=1.0;a[b+44|0]=1;c[b+48>>2]=0;a[b+52|0]=0;a[b+53|0]=1;a[b+54|0]=1;g[b+56>>2]=.03999999910593033;a[b+60|0]=0;g[b+64>>2]=0.0;d=b+68|0;c[d>>2]=0;c[b+76>>2]=e;c[b+80>>2]=0;a[b+84|0]=1;e=cA[c[(c[f>>2]|0)+16>>2]&4095](f)|0;c[b+72>>2]=e;c[d>>2]=e;return}function atz(a){a=a|0;atA(a);if((a|0)==0){return}aDB(a);return}function atA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;c[b>>2]=24360;d=b+8|0;e=c[d>>2]|0;f=b+16|0;g=c[f>>2]|0;if((e|0)>0){h=b+76|0;i=b+24|0;j=0;k=g;l=e;while(1){e=(c[k+(j<<2)>>2]|0)+188|0;m=c[e>>2]|0;if((m|0)==0){n=l;o=k}else{p=c[h>>2]|0;q=cA[c[(c[p>>2]|0)+36>>2]&4095](p)|0;dA[c[(c[q>>2]|0)+40>>2]&511](q,m,c[i>>2]|0);q=c[h>>2]|0;dA[c[(c[q>>2]|0)+12>>2]&511](q,m,c[i>>2]|0);c[e>>2]=0;n=c[d>>2]|0;o=c[f>>2]|0}e=j+1|0;if((e|0)<(n|0)){j=e;k=o;l=n}else{r=o;break}}}else{r=g}g=b+20|0;if((r|0)==0){a[g]=1;c[f>>2]=0;c[d>>2]=0;s=b+12|0;c[s>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[r-4>>2]|0)}c[f>>2]=0;a[g]=1;c[f>>2]=0;c[d>>2]=0;s=b+12|0;c[s>>2]=0;return}function atB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;g=i;i=i+96|0;h=g|0;j=g+64|0;k=g+80|0;l=b+8|0;m=c[l>>2]|0;n=b+12|0;do{if((m|0)==(c[n>>2]|0)){o=(m|0)==0?1:m<<1;if((m|0)>=(o|0)){p=m;break}if((o|0)==0){q=0;r=m}else{c[9806]=(c[9806]|0)+1;s=aDx((o<<2)+19|0)|0;if((s|0)==0){t=0}else{u=-(s+4|0)&15;c[s+u>>2]=s;t=s+(u+4)|0}q=t;r=c[l>>2]|0}u=b+16|0;if((r|0)>0){s=0;do{v=q+(s<<2)|0;if((v|0)!=0){c[v>>2]=c[(c[u>>2]|0)+(s<<2)>>2]}s=s+1|0;}while((s|0)<(r|0))}s=c[u>>2]|0;v=b+20|0;if((s|0)!=0){if((a[v]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[s-4>>2]|0)}c[u>>2]=0}a[v]=1;c[u>>2]=q;c[n>>2]=o;p=c[l>>2]|0}else{p=m}}while(0);m=(c[b+16>>2]|0)+(p<<2)|0;if((m|0)==0){w=p}else{c[m>>2]=d;w=c[l>>2]|0}c[l>>2]=w+1;w=h;l=d+4|0;c[w>>2]=c[l>>2];c[w+4>>2]=c[l+4>>2];c[w+8>>2]=c[l+8>>2];c[w+12>>2]=c[l+12>>2];l=h+16|0;w=d+20|0;c[l>>2]=c[w>>2];c[l+4>>2]=c[w+4>>2];c[l+8>>2]=c[w+8>>2];c[l+12>>2]=c[w+12>>2];w=h+32|0;l=d+36|0;c[w>>2]=c[l>>2];c[w+4>>2]=c[l+4>>2];c[w+8>>2]=c[l+8>>2];c[w+12>>2]=c[l+12>>2];l=h+48|0;w=d+52|0;c[l>>2]=c[w>>2];c[l+4>>2]=c[w+4>>2];c[l+8>>2]=c[w+8>>2];c[l+12>>2]=c[w+12>>2];w=d+192|0;l=c[w>>2]|0;dI[c[(c[l>>2]|0)+8>>2]&1023](l,h,j,k);h=c[b+76>>2]|0;c[d+188>>2]=c5[c[(c[h>>2]|0)+8>>2]&63](h,j,k,c[(c[w>>2]|0)+4>>2]|0,d,e,f,c[b+24>>2]|0,0)|0;i=g;return}function atC(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0.0,q=0,r=0.0,s=0,t=0.0,u=0,v=0.0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0;e=i;i=i+64|0;f=e|0;h=e+16|0;j=e+32|0;k=e+48|0;l=d+192|0;m=c[l>>2]|0;dI[c[(c[m>>2]|0)+8>>2]&1023](m,d+4|0,f,h);m=f|0;n=+g[m>>2]+-.019999999552965164;g[m>>2]=n;o=f+4|0;p=+g[o>>2]+-.019999999552965164;g[o>>2]=p;q=f+8|0;r=+g[q>>2]+-.019999999552965164;g[q>>2]=r;s=h|0;t=+g[s>>2]+.019999999552965164;g[s>>2]=t;u=h+4|0;v=+g[u>>2]+.019999999552965164;g[u>>2]=v;w=h+8|0;x=+g[w>>2]+.019999999552965164;g[w>>2]=x;do{if((a[b+44|0]&1)==0){y=t;z=n;A=v;B=p;C=x;D=r}else{if((c[d+232>>2]|0)!=2){y=t;z=n;A=v;B=p;C=x;D=r;break}E=c[l>>2]|0;dI[c[(c[E>>2]|0)+8>>2]&1023](E,d+68|0,j,k);E=j|0;F=+g[E>>2]+-.019999999552965164;g[E>>2]=F;E=j+4|0;G=+g[E>>2]+-.019999999552965164;g[E>>2]=G;E=j+8|0;H=+g[E>>2]+-.019999999552965164;g[E>>2]=H;E=k|0;I=+g[E>>2]+.019999999552965164;g[E>>2]=I;E=k+4|0;J=+g[E>>2]+.019999999552965164;g[E>>2]=J;E=k+8|0;K=+g[E>>2]+.019999999552965164;g[E>>2]=K;L=+g[m>>2];if(F<L){g[m>>2]=F;M=F}else{M=L}L=+g[o>>2];if(G<L){g[o>>2]=G;N=G}else{N=L}L=+g[q>>2];if(H<L){g[q>>2]=H;O=H}else{O=L}E=f+12|0;L=+g[j+12>>2];if(L<+g[E>>2]){g[E>>2]=L}L=+g[s>>2];if(L<I){g[s>>2]=I;P=I}else{P=L}L=+g[u>>2];if(L<J){g[u>>2]=J;Q=J}else{Q=L}L=+g[w>>2];if(L<K){g[w>>2]=K;R=K}else{R=L}E=h+12|0;L=+g[k+12>>2];if(+g[E>>2]>=L){y=P;z=M;A=Q;B=N;C=R;D=O;break}g[E>>2]=L;y=P;z=M;A=Q;B=N;C=R;D=O}}while(0);k=c[b+76>>2]|0;do{if((c[d+204>>2]&1|0)==0){O=y-z;R=A-B;N=C-D;if(O*O+R*R+N*N<999999995904.0){break}w=d+216|0;if(((c[w>>2]|0)-4|0)>>>0>=2){c[w>>2]=5}if(a[18312]|0){i=e;return}w=b+80|0;u=c[w>>2]|0;if((u|0)==0){i=e;return}a[18312]=1;cv[c[(c[u>>2]|0)+36>>2]&2047](u,16776);u=c[w>>2]|0;cv[c[(c[u>>2]|0)+36>>2]&2047](u,17872);u=c[w>>2]|0;cv[c[(c[u>>2]|0)+36>>2]&2047](u,17312);u=c[w>>2]|0;cv[c[(c[u>>2]|0)+36>>2]&2047](u,17024);i=e;return}}while(0);co[c[(c[k>>2]|0)+16>>2]&255](k,c[d+188>>2]|0,f,h,c[b+24>>2]|0);i=e;return}function atD(b){b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=i;i=i+16|0;e=d|0;aDo(16744);f=b+8|0;h=c[f>>2]|0;if((h|0)>0){j=b+16|0;k=b+84|0;l=0;m=h;while(1){h=c[(c[j>>2]|0)+(l<<2)>>2]|0;if((a[k]&1)==0){n=c[h+216>>2]|0;if((n|0)==5|(n|0)==2){o=m}else{p=1171}}else{p=1171}if((p|0)==1171){p=0;atC(b,h);o=c[f>>2]|0}h=l+1|0;if((h|0)<(o|0)){l=h;m=o}else{break}}}o=c[9152]|0;m=o+16|0;l=(c[m>>2]|0)-1|0;c[m>>2]=l;if((l|0)!=0){i=d;return}do{if((c[o+4>>2]|0)==0){q=o}else{b3(e|0,0)|0;l=c[10742]|0;f=o+8|0;g[f>>2]=+(((c[e+4>>2]|0)-(c[l+4>>2]|0)+(((c[e>>2]|0)-(c[l>>2]|0)|0)*1e6|0)-(c[o+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[f>>2];if((c[m>>2]|0)==0){q=c[9152]|0;break}else{i=d;return}}}while(0);c[9152]=c[q+20>>2];i=d;return}function atE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=b+188|0;e=c[d>>2]|0;if((e|0)!=0){f=a+76|0;g=c[f>>2]|0;h=cA[c[(c[g>>2]|0)+36>>2]&4095](g)|0;g=a+24|0;dA[c[(c[h>>2]|0)+40>>2]&511](h,e,c[g>>2]|0);h=c[f>>2]|0;dA[c[(c[h>>2]|0)+12>>2]&511](h,e,c[g>>2]|0);c[d>>2]=0}d=a+8|0;g=c[d>>2]|0;e=a+16|0;a=0;while(1){if((a|0)>=(g|0)){i=1198;break}j=c[e>>2]|0;k=j+(a<<2)|0;if((c[k>>2]|0)==(b|0)){break}else{a=a+1|0}}if((i|0)==1198){return}i=g-1|0;c[k>>2]=c[j+(i<<2)>>2];c[(c[e>>2]|0)+(i<<2)>>2]=b;c[d>>2]=(c[d>>2]|0)-1;return}function atF(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=i;i=i+48|0;d=b+8|0;e=b+16|0;f=b+40|0;aDo(16592);h=a+28|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);aDo(16472);j=a+76|0;k=c[j>>2]|0;l=a+24|0;cv[c[(c[k>>2]|0)+32>>2]&2047](k,c[l>>2]|0);k=c[9152]|0;a=k+16|0;m=(c[a>>2]|0)-1|0;c[a>>2]=m;do{if((m|0)==0){if((c[k+4>>2]|0)==0){n=k}else{b3(f|0,0)|0;o=c[10742]|0;p=k+8|0;g[p>>2]=+(((c[f+4>>2]|0)-(c[o+4>>2]|0)+(((c[f>>2]|0)-(c[o>>2]|0)|0)*1e6|0)-(c[k+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[p>>2];if((c[a>>2]|0)!=0){break}n=c[9152]|0}c[9152]=c[n+20>>2]}}while(0);n=c[l>>2]|0;aDo(16288);if((n|0)!=0){a=c[(c[n>>2]|0)+32>>2]|0;k=c[j>>2]|0;j=cA[c[(c[k>>2]|0)+36>>2]&4095](k)|0;dI[a&1023](n,j,h,c[l>>2]|0)}l=c[9152]|0;h=l+16|0;j=(c[h>>2]|0)-1|0;c[h>>2]=j;do{if((j|0)==0){if((c[l+4>>2]|0)==0){q=l}else{b3(e|0,0)|0;n=c[10742]|0;a=l+8|0;g[a>>2]=+(((c[e+4>>2]|0)-(c[n+4>>2]|0)+(((c[e>>2]|0)-(c[n>>2]|0)|0)*1e6|0)-(c[l+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[a>>2];a=c[9152]|0;if((c[h>>2]|0)==0){q=a}else{r=a;break}}a=c[q+20>>2]|0;c[9152]=a;r=a}else{r=l}}while(0);l=r+16|0;q=(c[l>>2]|0)-1|0;c[l>>2]=q;if((q|0)!=0){i=b;return}do{if((c[r+4>>2]|0)==0){s=r}else{b3(d|0,0)|0;q=c[10742]|0;h=r+8|0;g[h>>2]=+(((c[d+4>>2]|0)-(c[q+4>>2]|0)+(((c[d>>2]|0)-(c[q>>2]|0)|0)*1e6|0)-(c[r+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[h>>2];if((c[l>>2]|0)==0){s=c[9152]|0;break}else{i=b;return}}}while(0);c[9152]=c[s+20>>2];i=b;return}function atG(d,e,f,h,j,k){d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0.0,N=0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0.0,at=0.0,au=0.0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0;l=i;i=i+1408|0;m=l|0;n=l+48|0;o=l+96|0;p=l+112|0;q=l+128|0;r=l+144|0;s=l+176|0;t=l+224|0;u=l+288|0;v=l+320|0;w=l+376|0;x=l+552|0;y=l+912|0;z=l+928|0;A=l+960|0;B=l+976|0;C=l+1096|0;D=l+1216|0;E=l+1232|0;F=l+1248|0;G=l+1280|0;H=l+1344|0;c[v+8>>2]=0;g[v+12>>2]=1.0;g[v+16>>2]=1.0;g[v+20>>2]=1.0;g[v+24>>2]=0.0;c[v>>2]=25528;c[v+4>>2]=8;g[v+28>>2]=0.0;g[v+44>>2]=0.0;I=c[h+4>>2]|0;if((I|0)<20){c[w>>2]=19544;J=w+164|0;c[w+168>>2]=0;g[w+172>>2]=0.0;K=k+4|0;g[J>>2]=+g[K>>2];g[x+308>>2]=9999999747378752.0e-20;b[x+332>>1]=0;c[y>>2]=21768;c[y+4>>2]=x;c[y+8>>2]=v;c[y+12>>2]=h;if(!(aA0(y,d,e,j,j,w)|0)){i=l;return}y=w+132|0;v=y|0;L=+g[v>>2];x=w+136|0;M=+g[x>>2];N=w+140|0;O=+g[N>>2];if(L*L+M*M+O*O<=9999999747378752.0e-20){i=l;return}P=+g[J>>2];if(P>=+g[K>>2]){i=l;return}R=L*+g[d>>2]+M*+g[d+4>>2]+O*+g[d+8>>2];S=L*+g[d+16>>2]+M*+g[d+20>>2]+O*+g[d+24>>2];T=L*+g[d+32>>2]+M*+g[d+36>>2]+O*+g[d+40>>2];g[w+144>>2]=0.0;O=1.0/+Q(+(R*R+S*S+T*T));g[v>>2]=R*O;g[x>>2]=S*O;g[N>>2]=T*O;c[z>>2]=f;c[z+4>>2]=0;N=z+8|0;x=y;c[N>>2]=c[x>>2];c[N+4>>2]=c[x+4>>2];c[N+8>>2]=c[x+8>>2];c[N+12>>2]=c[x+12>>2];g[z+24>>2]=P;x=c[(c[k>>2]|0)+12>>2]|0;+c4[x&127](k,z,1);i=l;return}if((I-21|0)>>>0<9){if((I|0)==21){P=+g[j>>2];O=+g[j+16>>2];T=+g[j+32>>2];S=+g[j+4>>2];R=+g[j+20>>2];M=+g[j+36>>2];L=+g[j+8>>2];U=+g[j+24>>2];V=+g[j+40>>2];W=-0.0- +g[j+48>>2];X=-0.0- +g[j+52>>2];Y=-0.0- +g[j+56>>2];Z=P*W+O*X+T*Y;_=S*W+R*X+M*Y;$=L*W+U*X+V*Y;Y=+g[d+48>>2];X=+g[d+52>>2];W=+g[d+56>>2];g[A>>2]=Z+(P*Y+O*X+T*W);g[A+4>>2]=_+(S*Y+R*X+M*W);g[A+8>>2]=$+(L*Y+U*X+V*W);g[A+12>>2]=0.0;W=+g[e+48>>2];X=+g[e+52>>2];Y=+g[e+56>>2];aa=Z+(P*W+O*X+T*Y);T=_+(S*W+R*X+M*Y);M=$+(L*W+U*X+V*Y);z=c[k+16>>2]|0;x=B+4|0;N=A;c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];g[B+20>>2]=aa;g[B+24>>2]=T;g[B+28>>2]=M;g[B+32>>2]=0.0;c[B+36>>2]=z;c[B>>2]=18968;c[B+44>>2]=k;c[B+48>>2]=f;c[B+52>>2]=h;z=B+56|0;N=j;c[z>>2]=c[N>>2];c[z+4>>2]=c[N+4>>2];c[z+8>>2]=c[N+8>>2];c[z+12>>2]=c[N+12>>2];N=B+72|0;z=j+16|0;c[N>>2]=c[z>>2];c[N+4>>2]=c[z+4>>2];c[N+8>>2]=c[z+8>>2];c[N+12>>2]=c[z+12>>2];z=B+88|0;N=j+32|0;c[z>>2]=c[N>>2];c[z+4>>2]=c[N+4>>2];c[z+8>>2]=c[N+8>>2];c[z+12>>2]=c[N+12>>2];N=B+104|0;z=j+48|0;c[N>>2]=c[z>>2];c[N+4>>2]=c[z+4>>2];c[N+8>>2]=c[z+8>>2];c[N+12>>2]=c[z+12>>2];g[B+40>>2]=+g[k+4>>2];z=c[h+48>>2]|0;c[q>>2]=18760;c[q+4>>2]=z;c[q+8>>2]=B;B=c[h+52>>2]|0;z=B|0;N=q|0;aDD(o|0,0,16);aDD(p|0,0,16);if((a[B+60|0]&1)==0){azp(z,N,A,aa,T,M,o,p);i=l;return}else{azq(z,N,A,aa,T,M,o,p,c[B+56>>2]|0);i=l;return}}B=h;M=+g[j>>2];T=+g[j+16>>2];aa=+g[j+32>>2];Y=+g[j+4>>2];V=+g[j+20>>2];X=+g[j+36>>2];U=+g[j+8>>2];W=+g[j+24>>2];L=+g[j+40>>2];$=-0.0- +g[j+48>>2];R=-0.0- +g[j+52>>2];S=-0.0- +g[j+56>>2];_=M*$+T*R+aa*S;O=Y*$+V*R+X*S;P=U*$+W*R+L*S;S=+g[d+48>>2];R=+g[d+52>>2];$=+g[d+56>>2];Z=_+(M*S+T*R+aa*$);ab=O+(Y*S+V*R+X*$);ac=P+(U*S+W*R+L*$);$=+g[e+48>>2];R=+g[e+52>>2];S=+g[e+56>>2];ad=_+(M*$+T*R+aa*S);aa=O+(Y*$+V*R+X*S);X=P+(U*$+W*R+L*S);p=c[k+16>>2]|0;g[C+4>>2]=Z;g[C+8>>2]=ab;g[C+12>>2]=ac;g[C+16>>2]=0.0;g[C+20>>2]=ad;g[C+24>>2]=aa;g[C+28>>2]=X;g[C+32>>2]=0.0;c[C+36>>2]=p;c[C>>2]=18936;c[C+44>>2]=k;c[C+48>>2]=f;c[C+52>>2]=B;p=C+56|0;o=j;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];o=C+72|0;p=j+16|0;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];p=C+88|0;o=j+32|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];o=C+104|0;p=j+48|0;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];g[C+40>>2]=+g[k+4>>2];p=D|0;g[p>>2]=Z;o=D+4|0;g[o>>2]=ab;A=D+8|0;g[A>>2]=ac;g[D+12>>2]=0.0;if(ad<Z){g[p>>2]=ad}if(aa<ab){g[o>>2]=aa}if(X<ac){g[A>>2]=X}A=E|0;g[A>>2]=Z;o=E+4|0;g[o>>2]=ab;p=E+8|0;g[p>>2]=ac;g[E+12>>2]=0.0;if(Z<ad){g[A>>2]=ad}if(ab<aa){g[o>>2]=aa}if(ac<X){g[p>>2]=X}dI[c[(c[h>>2]|0)+60>>2]&1023](B,C|0,D,E);i=l;return}if((I|0)!=31){i=l;return}I=h;E=c[h+64>>2]|0;c[F>>2]=18888;D=F+4|0;c[D>>2]=f;f=F+8|0;c[f>>2]=I;C=F+12|0;c[C>>2]=j;B=F+16|0;c[B>>2]=d;p=F+20|0;c[p>>2]=e;o=F+24|0;c[o>>2]=k;if((E|0)==0){k=c[h+16>>2]|0;if((k|0)<=0){i=l;return}h=t;A=u|0;N=u+4|0;z=u+8|0;q=u+12|0;x=u+14|0;y=u+16|0;v=u+20|0;w=u+24|0;K=u|0;u=s;J=t|0;ae=t+48|0;af=t+16|0;ag=s+16|0;ah=t+32|0;ai=s+32|0;aj=t+48|0;ak=t+52|0;al=t+56|0;am=t+60|0;an=0;ao=I;I=j;while(1){ap=c[ao+24>>2]|0;aq=c[ap+(an*80|0)+64>>2]|0;anx(s,I|0,ap+(an*80|0)|0);X=+g[ap+(an*80|0)+48>>2];ac=+g[ap+(an*80|0)+52>>2];aa=+g[ap+(an*80|0)+56>>2];ab=+g[I>>2]*X+ +g[I+4>>2]*ac+ +g[I+8>>2]*aa+ +g[I+48>>2];ad=+g[I+16>>2]*X+ +g[I+20>>2]*ac+ +g[I+24>>2]*aa+ +g[I+52>>2];Z=+g[I+32>>2]*X+ +g[I+36>>2]*ac+ +g[I+40>>2]*aa+ +g[I+56>>2];ap=J;do{ap=ap+16|0;}while((ap|0)!=(ae|0));c[h>>2]=c[u>>2];c[h+4>>2]=c[u+4>>2];c[h+8>>2]=c[u+8>>2];c[h+12>>2]=c[u+12>>2];c[af>>2]=c[ag>>2];c[af+4>>2]=c[ag+4>>2];c[af+8>>2]=c[ag+8>>2];c[af+12>>2]=c[ag+12>>2];c[ah>>2]=c[ai>>2];c[ah+4>>2]=c[ai+4>>2];c[ah+8>>2]=c[ai+8>>2];c[ah+12>>2]=c[ai+12>>2];g[aj>>2]=ab;g[ak>>2]=ad;g[al>>2]=Z;g[am>>2]=0.0;ap=(c[D>>2]|0)+192|0;ar=c[ap>>2]|0;c[ap>>2]=aq;ap=c[o>>2]|0;g[N>>2]=1.0;c[z>>2]=0;b[q>>1]=1;b[x>>1]=-1;c[y>>2]=0;c[A>>2]=19e3;c[v>>2]=ap;c[w>>2]=an;g[N>>2]=+g[ap+4>>2];atG(c[B>>2]|0,c[p>>2]|0,c[D>>2]|0,aq,t,K);c[(c[D>>2]|0)+192>>2]=ar;ar=an+1|0;if((ar|0)>=(k|0)){break}an=ar;ao=c[f>>2]|0;I=c[C>>2]|0}i=l;return}C=n;I=j+48|0;aa=+g[d+48>>2]- +g[I>>2];f=j+52|0;ac=+g[d+52>>2]- +g[f>>2];ao=j+56|0;X=+g[d+56>>2]- +g[ao>>2];an=j|0;ea(n,an,d|0);d=j|0;k=j+16|0;D=j+32|0;S=+g[d>>2]*aa+ +g[k>>2]*ac+ +g[D>>2]*X;K=j+4|0;t=j+20|0;p=j+36|0;L=+g[K>>2]*aa+ +g[t>>2]*ac+ +g[p>>2]*X;B=j+8|0;N=j+24|0;w=j+40|0;R=+g[B>>2]*aa+ +g[N>>2]*ac+ +g[w>>2]*X;j=G+48|0;v=G|0;do{v=v+16|0;}while((v|0)!=(j|0));j=G;c[j>>2]=c[C>>2];c[j+4>>2]=c[C+4>>2];c[j+8>>2]=c[C+8>>2];c[j+12>>2]=c[C+12>>2];C=G+16|0;j=n+16|0;c[C>>2]=c[j>>2];c[C+4>>2]=c[j+4>>2];c[C+8>>2]=c[j+8>>2];c[C+12>>2]=c[j+12>>2];j=G+32|0;C=n+32|0;c[j>>2]=c[C>>2];c[j+4>>2]=c[C+4>>2];c[j+8>>2]=c[C+8>>2];c[j+12>>2]=c[C+12>>2];g[G+48>>2]=S;g[G+52>>2]=L;g[G+56>>2]=R;g[G+60>>2]=0.0;G=m;X=+g[e+48>>2]- +g[I>>2];ac=+g[e+52>>2]- +g[f>>2];aa=+g[e+56>>2]- +g[ao>>2];ea(m,an,e|0);W=+g[d>>2]*X+ +g[k>>2]*ac+ +g[D>>2]*aa;$=+g[K>>2]*X+ +g[t>>2]*ac+ +g[p>>2]*aa;U=+g[B>>2]*X+ +g[N>>2]*ac+ +g[w>>2]*aa;w=H+48|0;N=H|0;do{N=N+16|0;}while((N|0)!=(w|0));w=H;c[w>>2]=c[G>>2];c[w+4>>2]=c[G+4>>2];c[w+8>>2]=c[G+8>>2];c[w+12>>2]=c[G+12>>2];G=H+16|0;w=m+16|0;c[G>>2]=c[w>>2];c[G+4>>2]=c[w+4>>2];c[G+8>>2]=c[w+8>>2];c[G+12>>2]=c[w+12>>2];w=H+32|0;G=m+32|0;c[w>>2]=c[G>>2];c[w+4>>2]=c[G+4>>2];c[w+8>>2]=c[G+8>>2];c[w+12>>2]=c[G+12>>2];g[H+48>>2]=W;g[H+52>>2]=$;g[H+56>>2]=U;g[H+60>>2]=0.0;H=c[E>>2]|0;E=F|0;G=r;if((H|0)==0){i=l;return}aa=W-S;W=$-L;$=U-R;U=1.0/+Q(+(aa*aa+W*W+$*$));ac=aa*U;X=W*U;P=$*U;if(ac==0.0){as=999999984306749400.0}else{as=1.0/ac}if(X==0.0){at=999999984306749400.0}else{at=1.0/X}if(P==0.0){au=999999984306749400.0}else{au=1.0/P}w=as<0.0|0;m=at<0.0|0;N=au<0.0|0;U=ac*aa+X*W+P*$;c[9806]=(c[9806]|0)+1;B=aDx(531)|0;if((B|0)==0){av=0}else{p=-(B+4|0)&15;c[B+p>>2]=B;av=B+(p+4)|0}p=0;do{B=av+(p<<2)|0;if((B|0)!=0){c[B>>2]=0}p=p+1|0;}while((p|0)<128);c[av>>2]=H;H=r+16|0;p=r+(w<<4)|0;B=r+((w^1)<<4)|0;w=r+(m<<4)+4|0;t=r+((m^1)<<4)+4|0;m=r+(N<<4)+8|0;K=r+((N^1)<<4)+8|0;N=F;F=1;r=126;D=128;k=128;d=av;while(1){av=F-1|0;e=c[d+(av<<2)>>2]|0;an=e;c[G>>2]=c[an>>2];c[G+4>>2]=c[an+4>>2];c[G+8>>2]=c[an+8>>2];c[G+12>>2]=c[an+12>>2];an=e+16|0;c[H>>2]=c[an>>2];c[H+4>>2]=c[an+4>>2];c[H+8>>2]=c[an+8>>2];c[H+12>>2]=c[an+12>>2];$=as*(+g[p>>2]-S);P=as*(+g[B>>2]-S);W=at*(+g[w>>2]-L);X=at*(+g[t>>2]-L);do{if($>X|W>P){aw=av;ax=r;ay=D;az=k;aA=d}else{aa=W>$?W:$;ac=X<P?X:P;V=au*(+g[m>>2]-R);Y=au*(+g[K>>2]-R);if(aa>Y|V>ac){aw=av;ax=r;ay=D;az=k;aA=d;break}if((V>aa?V:aa)>=U){aw=av;ax=r;ay=D;az=k;aA=d;break}if((Y<ac?Y:ac)<=0.0){aw=av;ax=r;ay=D;az=k;aA=d;break}an=e+40|0;if((c[an>>2]|0)==0){cv[c[(c[N>>2]|0)+12>>2]&2047](E,e);aw=av;ax=r;ay=D;az=k;aA=d;break}if((av|0)>(r|0)){ao=D<<1;if((D|0)<(ao|0)){do{if((k|0)<(ao|0)){do{if((ao|0)==0){aB=0}else{c[9806]=(c[9806]|0)+1;f=aDx((D<<3|4)+15|0)|0;if((f|0)==0){aB=0;break}I=-(f+4|0)&15;c[f+I>>2]=f;aB=f+(I+4)|0}}while(0);if((D|0)>0){I=0;do{f=aB+(I<<2)|0;if((f|0)!=0){c[f>>2]=c[d+(I<<2)>>2]}I=I+1|0;}while((I|0)<(D|0))}if((d|0)==0){aC=ao;aD=aB;break}c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0);aC=ao;aD=aB}else{aC=k;aD=d}}while(0);I=D;while(1){f=aD+(I<<2)|0;if((f|0)!=0){c[f>>2]=0}f=I+1|0;if((f|0)<(ao|0)){I=f}else{aE=aC;aF=aD;break}}}else{aE=k;aF=d}aG=ao-2|0;aH=ao;aI=aE;aJ=aF}else{aG=r;aH=D;aI=k;aJ=d}c[aJ+(av<<2)>>2]=c[e+36>>2];c[aJ+(F<<2)>>2]=c[an>>2];aw=F+1|0;ax=aG;ay=aH;az=aI;aA=aJ}}while(0);if((aw|0)==0){break}else{F=aw;r=ax;D=ay;k=az;d=aA}}if((aA|0)==0){i=l;return}c[9804]=(c[9804]|0)+1;aDB(c[aA-4>>2]|0);i=l;return}function atH(a){a=a|0;return}function atI(d,e,f,h,j,k,l,m){d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=+m;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0.0,R=0,S=0.0,T=0.0,U=0.0,V=0.0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0.0,aC=0.0,aD=0.0,aE=0.0,aF=0.0,aG=0.0,aH=0,aI=0.0,aJ=0.0,aK=0.0,aL=0.0,aM=0.0,aN=0.0,aO=0.0,aP=0.0,aQ=0.0,aR=0.0,aS=0.0,aT=0.0,aU=0,aV=0.0,aW=0.0,aX=0.0,aY=0.0,aZ=0.0,a_=0.0;n=i;i=i+1672|0;o=n|0;p=n+24|0;q=n+32|0;r=n+208|0;s=n+568|0;t=n+576|0;u=n+600|0;v=n+648|0;w=n+664|0;x=n+728|0;y=n+952|0;z=n+968|0;A=n+984|0;B=n+1160|0;C=n+1184|0;D=n+1232|0;E=n+1296|0;F=n+1520|0;G=n+1536|0;H=n+1552|0;I=n+1568|0;J=n+1584|0;K=n+1648|0;L=c[j+4>>2]|0;if((L|0)<20){c[q>>2]=19544;M=q+164|0;c[q+168>>2]=0;g[q+172>>2]=m;N=l+4|0;g[M>>2]=+g[N>>2];g[r+308>>2]=9999999747378752.0e-20;b[r+332>>1]=0;c[s>>2]=19960;c[t>>2]=20336;c[t+4>>2]=r;c[t+8>>2]=s;c[t+12>>2]=d;c[t+16>>2]=j;c[t+20>>2]=0;if(!(ava(t,e,f,k,k,q)|0)){i=n;return}t=q+132|0;s=t|0;O=+g[s>>2];r=q+136|0;P=+g[r>>2];R=q+140|0;S=+g[R>>2];T=O*O+P*P+S*S;if(T<=9999999747378752.0e-20){i=n;return}U=+g[M>>2];if(U>=+g[N>>2]){i=n;return}V=1.0/+Q(+T);g[s>>2]=O*V;g[r>>2]=P*V;g[R>>2]=S*V;c[u>>2]=h;c[u+4>>2]=0;R=u+8|0;r=t;c[R>>2]=c[r>>2];c[R+4>>2]=c[r+4>>2];c[R+8>>2]=c[r+8>>2];c[R+12>>2]=c[r+12>>2];r=u+24|0;R=q+148|0;c[r>>2]=c[R>>2];c[r+4>>2]=c[R+4>>2];c[r+8>>2]=c[R+8>>2];c[r+12>>2]=c[R+12>>2];g[u+40>>2]=U;R=c[(c[l>>2]|0)+12>>2]|0;+c4[R&127](l,u,1);i=n;return}if((L-21|0)>>>0>=9){if((L|0)!=31){i=n;return}aDo(16160);u=j+16|0;if((c[u>>2]|0)>0){R=j+24|0;r=k|0;q=k+4|0;t=k+8|0;s=k+16|0;N=k+20|0;M=k+24|0;W=k+32|0;X=k+36|0;Y=k+40|0;Z=k+48|0;_=k+52|0;$=k+56|0;aa=J|0;ab=J+4|0;ac=J+8|0;ad=J+12|0;ae=J+16|0;af=J+20|0;ag=J+24|0;ah=J+28|0;ai=J+32|0;aj=J+36|0;ak=J+40|0;al=J+44|0;am=J+48|0;an=J+52|0;ao=J+56|0;ap=J+60|0;aq=h+192|0;ar=K|0;as=K+4|0;at=K+8|0;au=K+10|0;av=K+12|0;aw=K+16|0;ax=l+4|0;ay=K|0;K=c[aq>>2]|0;az=0;do{aA=c[R>>2]|0;U=+g[aA+(az*80|0)>>2];V=+g[aA+(az*80|0)+4>>2];S=+g[aA+(az*80|0)+8>>2];P=+g[aA+(az*80|0)+16>>2];O=+g[aA+(az*80|0)+20>>2];T=+g[aA+(az*80|0)+24>>2];aB=+g[aA+(az*80|0)+32>>2];aC=+g[aA+(az*80|0)+36>>2];aD=+g[aA+(az*80|0)+40>>2];aE=+g[aA+(az*80|0)+48>>2];aF=+g[aA+(az*80|0)+52>>2];aG=+g[aA+(az*80|0)+56>>2];aH=c[aA+(az*80|0)+64>>2]|0;aI=+g[r>>2];aJ=+g[q>>2];aK=+g[t>>2];aL=+g[s>>2];aM=+g[N>>2];aN=+g[M>>2];aO=+g[W>>2];aP=+g[X>>2];aQ=+g[Y>>2];aR=aE*aI+aF*aJ+aG*aK+ +g[Z>>2];aS=aE*aL+aF*aM+aG*aN+ +g[_>>2];aT=aE*aO+aF*aP+aG*aQ+ +g[$>>2];g[aa>>2]=U*aI+P*aJ+aB*aK;g[ab>>2]=V*aI+O*aJ+aC*aK;g[ac>>2]=S*aI+T*aJ+aD*aK;g[ad>>2]=0.0;g[ae>>2]=U*aL+P*aM+aB*aN;g[af>>2]=V*aL+O*aM+aC*aN;g[ag>>2]=S*aL+T*aM+aD*aN;g[ah>>2]=0.0;g[ai>>2]=U*aO+P*aP+aB*aQ;g[aj>>2]=V*aO+O*aP+aC*aQ;g[ak>>2]=S*aO+T*aP+aD*aQ;g[al>>2]=0.0;g[am>>2]=aR;g[an>>2]=aS;g[ao>>2]=aT;g[ap>>2]=0.0;c[aq>>2]=aH;b[at>>1]=1;b[au>>1]=-1;c[ar>>2]=18856;c[av>>2]=l;c[aw>>2]=az;g[as>>2]=+g[ax>>2];atI(d,e,f,h,aH,J,ay,m);c[aq>>2]=K;az=az+1|0;}while((az|0)<(c[u>>2]|0))}u=c[9152]|0;az=u+16|0;K=(c[az>>2]|0)-1|0;c[az>>2]=K;if((K|0)!=0){i=n;return}do{if((c[u+4>>2]|0)==0){aU=u}else{b3(p|0,0)|0;K=c[10742]|0;aq=u+8|0;g[aq>>2]=+(((c[p+4>>2]|0)-(c[K+4>>2]|0)+(((c[p>>2]|0)-(c[K>>2]|0)|0)*1e6|0)-(c[u+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[aq>>2];if((c[az>>2]|0)==0){aU=c[9152]|0;break}else{i=n;return}}}while(0);c[9152]=c[aU+20>>2];i=n;return}if((L|0)==21){aT=+g[k>>2];aS=+g[k+16>>2];aR=+g[k+32>>2];aQ=+g[k+4>>2];aD=+g[k+20>>2];aP=+g[k+36>>2];T=+g[k+8>>2];aO=+g[k+24>>2];S=+g[k+40>>2];aC=-0.0- +g[k+48>>2];O=-0.0- +g[k+52>>2];V=-0.0- +g[k+56>>2];aB=aT*aC+aS*O+aR*V;P=aQ*aC+aD*O+aP*V;U=T*aC+aO*O+S*V;V=+g[e+48>>2];O=+g[e+52>>2];aC=+g[e+56>>2];g[v>>2]=aB+(aT*V+aS*O+aR*aC);g[v+4>>2]=P+(aQ*V+aD*O+aP*aC);g[v+8>>2]=U+(T*V+aO*O+S*aC);g[v+12>>2]=0.0;aC=+g[f+48>>2];O=+g[f+52>>2];V=+g[f+56>>2];aN=aB+(aT*aC+aS*O+aR*V);aB=P+(aQ*aC+aD*O+aP*V);P=U+(T*aC+aO*O+S*V);V=+g[f>>2];O=+g[f+16>>2];aC=+g[f+32>>2];U=+g[f+4>>2];aM=+g[f+20>>2];aL=+g[f+36>>2];aK=+g[f+8>>2];aJ=+g[f+24>>2];aI=+g[f+40>>2];g[w>>2]=aT*V+aS*O+aR*aC;g[w+4>>2]=aT*U+aS*aM+aR*aL;g[w+8>>2]=aT*aK+aS*aJ+aR*aI;g[w+12>>2]=0.0;g[w+16>>2]=aQ*V+aD*O+aP*aC;g[w+20>>2]=aQ*U+aD*aM+aP*aL;g[w+24>>2]=aQ*aK+aD*aJ+aP*aI;g[w+28>>2]=0.0;g[w+32>>2]=T*V+aO*O+S*aC;g[w+36>>2]=T*U+aO*aM+S*aL;g[w+40>>2]=T*aK+aO*aJ+S*aI;aDD(w+44|0,0,20);aI=+dh[c[(c[j>>2]|0)+44>>2]&1023](j);c[x+4>>2]=d;aU=x+8|0;az=e;c[aU>>2]=c[az>>2];c[aU+4>>2]=c[az+4>>2];c[aU+8>>2]=c[az+8>>2];c[aU+12>>2]=c[az+12>>2];az=x+24|0;aU=e+16|0;c[az>>2]=c[aU>>2];c[az+4>>2]=c[aU+4>>2];c[az+8>>2]=c[aU+8>>2];c[az+12>>2]=c[aU+12>>2];aU=x+40|0;az=e+32|0;c[aU>>2]=c[az>>2];c[aU+4>>2]=c[az+4>>2];c[aU+8>>2]=c[az+8>>2];c[aU+12>>2]=c[az+12>>2];az=x+56|0;aU=e+48|0;c[az>>2]=c[aU>>2];c[az+4>>2]=c[aU+4>>2];c[az+8>>2]=c[aU+8>>2];c[az+12>>2]=c[aU+12>>2];aU=x+72|0;az=f;c[aU>>2]=c[az>>2];c[aU+4>>2]=c[az+4>>2];c[aU+8>>2]=c[az+8>>2];c[aU+12>>2]=c[az+12>>2];az=x+88|0;aU=f+16|0;c[az>>2]=c[aU>>2];c[az+4>>2]=c[aU+4>>2];c[az+8>>2]=c[aU+8>>2];c[az+12>>2]=c[aU+12>>2];aU=x+104|0;az=f+32|0;c[aU>>2]=c[az>>2];c[aU+4>>2]=c[az+4>>2];c[aU+8>>2]=c[az+8>>2];c[aU+12>>2]=c[az+12>>2];az=x+120|0;aU=f+48|0;c[az>>2]=c[aU>>2];c[az+4>>2]=c[aU+4>>2];c[az+8>>2]=c[aU+8>>2];c[az+12>>2]=c[aU+12>>2];aU=x+136|0;az=k;c[aU>>2]=c[az>>2];c[aU+4>>2]=c[az+4>>2];c[aU+8>>2]=c[az+8>>2];c[aU+12>>2]=c[az+12>>2];az=x+152|0;aU=k+16|0;c[az>>2]=c[aU>>2];c[az+4>>2]=c[aU+4>>2];c[az+8>>2]=c[aU+8>>2];c[az+12>>2]=c[aU+12>>2];aU=x+168|0;az=k+32|0;c[aU>>2]=c[az>>2];c[aU+4>>2]=c[az+4>>2];c[aU+8>>2]=c[az+8>>2];c[aU+12>>2]=c[az+12>>2];az=x+184|0;aU=k+48|0;c[az>>2]=c[aU>>2];c[az+4>>2]=c[aU+4>>2];c[az+8>>2]=c[aU+8>>2];c[az+12>>2]=c[aU+12>>2];g[x+204>>2]=aI;c[x>>2]=18824;c[x+212>>2]=l;c[x+216>>2]=h;c[x+220>>2]=j;g[x+200>>2]=+g[l+4>>2];g[x+208>>2]=m;dI[c[(c[d>>2]|0)+8>>2]&1023](d,w,y,z);w=c[j+48>>2]|0;c[o>>2]=18728;c[o+4>>2]=w;c[o+8>>2]=x;x=c[j+52>>2]|0;w=x|0;aU=o|0;if((a[x+60|0]&1)==0){azp(w,aU,v,aN,aB,P,y,z);i=n;return}else{azq(w,aU,v,aN,aB,P,y,z,c[x+56>>2]|0);i=n;return}}else if((L|0)==28){c[A>>2]=19544;L=A+164|0;c[A+168>>2]=0;g[A+172>>2]=m;x=l+4|0;g[L>>2]=+g[x>>2];c[B>>2]=20336;c[B+4>>2]=0;c[B+8>>2]=0;c[B+12>>2]=d;c[B+16>>2]=0;c[B+20>>2]=j;if(!(ava(B,e,f,k,k,A)|0)){i=n;return}B=A+132|0;z=B|0;P=+g[z>>2];y=A+136|0;aB=+g[y>>2];v=A+140|0;aN=+g[v>>2];aI=P*P+aB*aB+aN*aN;if(aI<=9999999747378752.0e-20){i=n;return}S=+g[L>>2];if(S>=+g[x>>2]){i=n;return}aJ=1.0/+Q(+aI);g[z>>2]=P*aJ;g[y>>2]=aB*aJ;g[v>>2]=aN*aJ;c[C>>2]=h;c[C+4>>2]=0;v=C+8|0;y=B;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];y=C+24|0;v=A+148|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];g[C+40>>2]=S;+c4[c[(c[l>>2]|0)+12>>2]&127](l,C,1);i=n;return}else{C=j;S=+g[k>>2];aJ=+g[k+16>>2];aN=+g[k+32>>2];aB=+g[k+4>>2];P=+g[k+20>>2];aI=+g[k+36>>2];aO=+g[k+8>>2];aK=+g[k+24>>2];T=+g[k+40>>2];aL=-0.0- +g[k+48>>2];aM=-0.0- +g[k+52>>2];U=-0.0- +g[k+56>>2];aC=S*aL+aJ*aM+aN*U;O=aB*aL+P*aM+aI*U;V=aO*aL+aK*aM+T*U;U=+g[e+48>>2];aM=+g[e+52>>2];aL=+g[e+56>>2];aP=aC+(S*U+aJ*aM+aN*aL);aD=O+(aB*U+P*aM+aI*aL);aQ=V+(aO*U+aK*aM+T*aL);aL=+g[f+48>>2];aM=+g[f+52>>2];U=+g[f+56>>2];aR=aC+(S*aL+aJ*aM+aN*U);aC=O+(aB*aL+P*aM+aI*U);O=V+(aO*aL+aK*aM+T*U);U=+g[f>>2];aM=+g[f+16>>2];aL=+g[f+32>>2];V=+g[f+4>>2];aS=+g[f+20>>2];aT=+g[f+36>>2];aG=+g[f+8>>2];aF=+g[f+24>>2];aE=+g[f+40>>2];g[D>>2]=S*U+aJ*aM+aN*aL;g[D+4>>2]=S*V+aJ*aS+aN*aT;g[D+8>>2]=S*aG+aJ*aF+aN*aE;g[D+12>>2]=0.0;g[D+16>>2]=aB*U+P*aM+aI*aL;g[D+20>>2]=aB*V+P*aS+aI*aT;g[D+24>>2]=aB*aG+P*aF+aI*aE;g[D+28>>2]=0.0;g[D+32>>2]=aO*U+aK*aM+T*aL;g[D+36>>2]=aO*V+aK*aS+T*aT;g[D+40>>2]=aO*aG+aK*aF+T*aE;aDD(D+44|0,0,20);aE=+dh[c[(c[j>>2]|0)+44>>2]&1023](C);c[E+4>>2]=d;v=E+8|0;y=e;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];y=E+24|0;v=e+16|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];v=E+40|0;y=e+32|0;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];y=E+56|0;v=e+48|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];v=E+72|0;y=f;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];y=E+88|0;v=f+16|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];v=E+104|0;y=f+32|0;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];y=E+120|0;v=f+48|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];v=E+136|0;y=k;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];y=E+152|0;v=k+16|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];v=E+168|0;y=k+32|0;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];y=E+184|0;v=k+48|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];g[E+204>>2]=aE;c[E>>2]=18792;c[E+212>>2]=l;c[E+216>>2]=h;c[E+220>>2]=C;g[E+200>>2]=+g[l+4>>2];g[E+208>>2]=m;dI[c[(c[d>>2]|0)+8>>2]&1023](d,D,F,G);D=H|0;g[D>>2]=aP;d=H+4|0;g[d>>2]=aD;l=H+8|0;g[l>>2]=aQ;g[H+12>>2]=0.0;if(aR<aP){g[D>>2]=aR;aV=aR}else{aV=aP}if(aC<aD){g[d>>2]=aC;aW=aC}else{aW=aD}if(O<aQ){g[l>>2]=O;aX=O}else{aX=aQ}h=I|0;g[h>>2]=aP;v=I+4|0;g[v>>2]=aD;y=I+8|0;g[y>>2]=aQ;g[I+12>>2]=0.0;if(aP<aR){g[h>>2]=aR;aY=aR}else{aY=aP}if(aD<aC){g[v>>2]=aC;aZ=aC}else{aZ=aD}if(aQ<O){g[y>>2]=O;a_=O}else{a_=aQ}g[D>>2]=+g[F>>2]+aV;g[d>>2]=+g[F+4>>2]+aW;g[l>>2]=+g[F+8>>2]+aX;g[h>>2]=+g[G>>2]+aY;g[v>>2]=+g[G+4>>2]+aZ;g[y>>2]=+g[G+8>>2]+a_;dI[c[(c[j>>2]|0)+60>>2]&1023](C,E|0,H,I);i=n;return}}function atJ(a){a=a|0;return}function atK(a){a=a|0;return}function atL(a){a=a|0;return}function atM(a){a=a|0;return}function atN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0;f=i;i=i+256|0;h=f|0;j=f+224|0;k=f+240|0;c[h>>2]=22856;l=h+36|0;m=l;n=b;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];n=h+52|0;o=n;p=d;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];c[h+212>>2]=a;c[h+216>>2]=e;g[h+68>>2]=1.0;aDD(h+72|0,0,16);g[h+88>>2]=1.0;aDD(h+92|0,0,16);g[h+108>>2]=1.0;c[h+112>>2]=0;e=h+116|0;c[e>>2]=c[m>>2];c[e+4>>2]=c[m+4>>2];c[e+8>>2]=c[m+8>>2];c[e+12>>2]=c[m+12>>2];g[h+132>>2]=1.0;aDD(h+136|0,0,16);g[h+152>>2]=1.0;aDD(h+156|0,0,16);g[h+172>>2]=1.0;c[h+176>>2]=0;m=h+180|0;c[m>>2]=c[p>>2];c[m+4>>2]=c[p+4>>2];c[m+8>>2]=c[p+8>>2];c[m+12>>2]=c[p+12>>2];q=+g[d>>2]- +g[b>>2];r=+g[d+4>>2]- +g[b+4>>2];s=+g[d+8>>2]- +g[b+8>>2];t=1.0/+Q(+(q*q+r*r+s*s));u=q*t;q=r*t;r=s*t;if(u==0.0){v=999999984306749400.0}else{v=1.0/u}g[h+4>>2]=v;if(q==0.0){w=999999984306749400.0}else{w=1.0/q}g[h+8>>2]=w;if(r==0.0){x=999999984306749400.0}else{x=1.0/r}g[h+12>>2]=x;c[h+20>>2]=v<0.0;c[h+24>>2]=w<0.0;c[h+28>>2]=x<0.0;g[h+32>>2]=u*(+g[n>>2]- +g[l>>2])+q*(+g[h+56>>2]- +g[h+40>>2])+r*(+g[h+60>>2]- +g[h+44>>2]);l=c[a+76>>2]|0;a=c[(c[l>>2]|0)+24>>2]|0;aDD(j|0,0,16);aDD(k|0,0,16);c_[a&127](l,b,d,h|0,j,k);i=f;return}function atO(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0;j=i;i=i+512|0;k=j+8|0;l=j+16|0;m=j+32|0;n=j+40|0;o=j+104|0;p=j+168|0;q=j+184|0;r=j+200|0;s=j+216|0;t=j+232|0;u=j+296|0;v=j+312|0;aDo(16032);w=n;x=d;c[w>>2]=c[x>>2];c[w+4>>2]=c[x+4>>2];c[w+8>>2]=c[x+8>>2];c[w+12>>2]=c[x+12>>2];w=n+16|0;y=d+16|0;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];w=n+32|0;z=d+32|0;c[w>>2]=c[z>>2];c[w+4>>2]=c[z+4>>2];c[w+8>>2]=c[z+8>>2];c[w+12>>2]=c[z+12>>2];w=n+48|0;A=w;B=d+48|0;c[A>>2]=c[B>>2];c[A+4>>2]=c[B+4>>2];c[A+8>>2]=c[B+8>>2];c[A+12>>2]=c[B+12>>2];A=o;d=e;c[A>>2]=c[d>>2];c[A+4>>2]=c[d+4>>2];c[A+8>>2]=c[d+8>>2];c[A+12>>2]=c[d+12>>2];A=o+16|0;C=e+16|0;c[A>>2]=c[C>>2];c[A+4>>2]=c[C+4>>2];c[A+8>>2]=c[C+8>>2];c[A+12>>2]=c[C+12>>2];A=o+32|0;D=e+32|0;c[A>>2]=c[D>>2];c[A+4>>2]=c[D+4>>2];c[A+8>>2]=c[D+8>>2];c[A+12>>2]=c[D+12>>2];A=o+48|0;E=A;F=e+48|0;c[E>>2]=c[F>>2];c[E+4>>2]=c[F+4>>2];c[E+8>>2]=c[F+8>>2];c[E+12>>2]=c[F+12>>2];an6(n,o,l,m);G=+g[m>>2];H=G*+g[l+4>>2];I=G*+g[l+8>>2];g[r>>2]=+g[l>>2]*G;g[r+4>>2]=H;g[r+8>>2]=I;g[r+12>>2]=0.0;aDD(s|0,0,16);l=t+4|0;m=l;c[m>>2]=0;c[m+4>>2]=0;m=t+24|0;o=m;c[o>>2]=0;c[o+4>>2]=0;o=t+44|0;aDD(o|0,0,20);ec(n|0,u);I=+g[u>>2];H=+g[u+4>>2];G=+g[u+8>>2];J=+g[u+12>>2];K=2.0/(I*I+H*H+G*G+J*J);L=I*K;M=H*K;N=G*K;K=J*L;O=J*M;P=J*N;J=I*L;L=I*M;R=I*N;I=H*M;M=H*N;H=G*N;g[t>>2]=1.0-(I+H);g[l>>2]=L-P;g[t+8>>2]=R+O;g[t+12>>2]=0.0;g[t+16>>2]=L+P;g[t+20>>2]=1.0-(J+H);g[m>>2]=M-K;g[t+28>>2]=0.0;g[t+32>>2]=R-O;g[t+36>>2]=M+K;g[t+40>>2]=1.0-(J+I);g[o>>2]=0.0;atv(b|0,t,s,r,1.0,p,q);c[v>>2]=22144;r=v+36|0;c[r>>2]=c[x>>2];c[r+4>>2]=c[x+4>>2];c[r+8>>2]=c[x+8>>2];c[r+12>>2]=c[x+12>>2];x=v+52|0;c[x>>2]=c[y>>2];c[x+4>>2]=c[y+4>>2];c[x+8>>2]=c[y+8>>2];c[x+12>>2]=c[y+12>>2];y=v+68|0;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];z=v+84|0;y=z;c[y>>2]=c[B>>2];c[y+4>>2]=c[B+4>>2];c[y+8>>2]=c[B+8>>2];c[y+12>>2]=c[B+12>>2];B=v+100|0;c[B>>2]=c[d>>2];c[B+4>>2]=c[d+4>>2];c[B+8>>2]=c[d+8>>2];c[B+12>>2]=c[d+12>>2];d=v+116|0;c[d>>2]=c[C>>2];c[d+4>>2]=c[C+4>>2];c[d+8>>2]=c[C+8>>2];c[d+12>>2]=c[C+12>>2];C=v+132|0;c[C>>2]=c[D>>2];c[C+4>>2]=c[D+4>>2];c[C+8>>2]=c[D+8>>2];c[C+12>>2]=c[D+12>>2];D=v+148|0;C=D;c[C>>2]=c[F>>2];c[C+4>>2]=c[F+4>>2];c[C+8>>2]=c[F+8>>2];c[C+12>>2]=c[F+12>>2];c[v+180>>2]=a;c[v+184>>2]=f;g[v+188>>2]=h;c[v+192>>2]=b;h=+g[D>>2]- +g[z>>2];I=+g[v+152>>2]- +g[v+88>>2];J=+g[v+156>>2]- +g[v+92>>2];K=1.0/+Q(+(h*h+I*I+J*J));M=h*K;O=I*K;R=J*K;if(M==0.0){S=999999984306749400.0}else{S=1.0/M}g[v+4>>2]=S;if(O==0.0){T=999999984306749400.0}else{T=1.0/O}g[v+8>>2]=T;if(R==0.0){U=999999984306749400.0}else{U=1.0/R}g[v+12>>2]=U;c[v+20>>2]=S<0.0;c[v+24>>2]=T<0.0;c[v+28>>2]=U<0.0;g[v+32>>2]=J*R+(h*M+I*O);z=c[a+76>>2]|0;c_[c[(c[z>>2]|0)+24>>2]&127](z,w,A,v|0,p,q);q=c[9152]|0;p=q+16|0;v=(c[p>>2]|0)-1|0;c[p>>2]=v;if((v|0)!=0){i=j;return}do{if((c[q+4>>2]|0)==0){V=q}else{b3(k|0,0)|0;v=c[10742]|0;A=q+8|0;g[A>>2]=+(((c[k+4>>2]|0)-(c[v+4>>2]|0)+(((c[k>>2]|0)-(c[v>>2]|0)|0)*1e6|0)-(c[q+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[A>>2];if((c[p>>2]|0)==0){V=c[9152]|0;break}else{i=j;return}}}while(0);c[9152]=c[V+20>>2];i=j;return}function atP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0.0,aB=0.0,aC=0.0,aD=0.0,aE=0.0,aF=0.0,aG=0.0,aH=0.0,aI=0.0,aJ=0,aK=0,aL=0.0,aM=0.0,aN=0.0;f=i;i=i+576|0;h=f|0;j=f+64|0;k=f+80|0;l=f+96|0;m=f+160|0;n=f+176|0;o=f+192|0;p=f+208|0;q=f+304|0;r=f+320|0;s=f+336|0;t=f+432|0;u=f+448|0;v=f+464|0;w=f+480|0;x=f+496|0;y=f+512|0;z=f+528|0;A=f+544|0;B=f+560|0;C=a;D=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;dF[c[(c[D>>2]|0)+56>>2]&255](D,b,1.0);D=d+4|0;E=c[D>>2]|0;switch(E|0){case 28:{F=+g[d+64>>2];G=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;cr[c[(c[G>>2]|0)+88>>2]&63](G,d+48|0,F,b,e);i=f;return};case 8:{F=+dh[c[(c[d>>2]|0)+44>>2]&1023](d);G=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;dg[c[(c[G>>2]|0)+16>>2]&63](G,F,b,e);i=f;return};case 10:{G=d;H=c[d+52>>2]|0;F=+g[G+28+(((H+2|0)%3|0)<<2)>>2];I=+g[G+28+(H<<2)>>2];G=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;cK[c[(c[G>>2]|0)+76>>2]&63](G,F,I,H,b,e);i=f;return};case 31:{H=c[d+16>>2]|0;if((H|0)<=0){i=f;return}G=d+24|0;J=a;K=b|0;L=b+4|0;M=b+8|0;N=b+16|0;O=b+20|0;P=b+24|0;Q=b+32|0;R=b+36|0;S=b+40|0;T=b+48|0;U=b+52|0;V=b+56|0;W=h|0;X=h+4|0;Y=h+8|0;Z=h+12|0;_=h+16|0;$=h+20|0;aa=h+24|0;ab=h+28|0;ac=h+32|0;ad=h+36|0;ae=h+40|0;af=h+44|0;ag=h+48|0;ah=h+52|0;ai=h+56|0;aj=h+60|0;ak=H;do{ak=ak-1|0;H=c[G>>2]|0;I=+g[H+(ak*80|0)>>2];F=+g[H+(ak*80|0)+4>>2];al=+g[H+(ak*80|0)+8>>2];am=+g[H+(ak*80|0)+16>>2];an=+g[H+(ak*80|0)+20>>2];ao=+g[H+(ak*80|0)+24>>2];ap=+g[H+(ak*80|0)+32>>2];aq=+g[H+(ak*80|0)+36>>2];ar=+g[H+(ak*80|0)+40>>2];as=+g[H+(ak*80|0)+48>>2];at=+g[H+(ak*80|0)+52>>2];au=+g[H+(ak*80|0)+56>>2];av=c[H+(ak*80|0)+64>>2]|0;H=c[(c[J>>2]|0)+24>>2]|0;aw=+g[K>>2];ax=+g[L>>2];ay=+g[M>>2];az=+g[N>>2];aA=+g[O>>2];aB=+g[P>>2];aC=+g[Q>>2];aD=+g[R>>2];aE=+g[S>>2];aF=as*aw+at*ax+au*ay+ +g[T>>2];aG=as*az+at*aA+au*aB+ +g[U>>2];aH=as*aC+at*aD+au*aE+ +g[V>>2];g[W>>2]=I*aw+am*ax+ap*ay;g[X>>2]=F*aw+an*ax+aq*ay;g[Y>>2]=al*aw+ao*ax+ar*ay;g[Z>>2]=0.0;g[_>>2]=I*az+am*aA+ap*aB;g[$>>2]=F*az+an*aA+aq*aB;g[aa>>2]=al*az+ao*aA+ar*aB;g[ab>>2]=0.0;g[ac>>2]=I*aC+am*aD+ap*aE;g[ad>>2]=F*aC+an*aD+aq*aE;g[ae>>2]=al*aC+ao*aD+ar*aE;g[af>>2]=0.0;g[ag>>2]=aF;g[ah>>2]=aG;g[ai>>2]=aH;g[aj>>2]=0.0;dI[H&1023](a,h,av,e);}while((ak|0)>0);i=f;return};case 11:{aH=+g[d+56>>2];aG=+g[d+60>>2];ak=c[d+68>>2]|0;h=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;cK[c[(c[h>>2]|0)+84>>2]&63](h,aH,aG,ak,b,e);i=f;return};case 9:{ak=c[d+92>>2]|0;if((ak|0)<=0){i=f;return}h=d+100|0;aj=d+120|0;ai=b|0;ah=b+4|0;ag=b+8|0;af=b+16|0;ae=b+20|0;ad=b+24|0;ac=b+32|0;ab=b+36|0;aa=b+40|0;$=b+48|0;_=b+52|0;Z=b+56|0;Y=l|0;X=l+4|0;W=l+8|0;V=l+12|0;U=l+16|0;T=l+20|0;S=l+24|0;R=l+28|0;Q=l+32|0;P=l+36|0;O=l+40|0;N=l+44|0;M=l+48|0;L=l+52|0;K=l+56|0;J=l+60|0;G=ak;do{G=G-1|0;ak=c[h>>2]|0;aG=+g[ak+(G<<4)>>2];aH=+g[ak+(G<<4)+4>>2];aF=+g[ak+(G<<4)+8>>2];ak=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;av=c[(c[ak>>2]|0)+16>>2]|0;aE=+g[(c[aj>>2]|0)+(G<<2)>>2];ar=+g[ai>>2];aD=+g[ah>>2];ao=aD*0.0;aC=+g[ag>>2];al=aC*0.0;aq=ar*0.0;an=+g[af>>2];F=+g[ae>>2];ap=F*0.0;am=+g[ad>>2];I=am*0.0;aB=an*0.0;aA=+g[ac>>2];az=+g[ab>>2];ay=az*0.0;ax=+g[aa>>2];aw=ax*0.0;au=aA*0.0;at=aG*ar+aH*aD+aF*aC+ +g[$>>2];as=aG*an+aH*F+aF*am+ +g[_>>2];aI=aG*aA+aH*az+aF*ax+ +g[Z>>2];g[Y>>2]=ar+ao+al;g[X>>2]=aq+aD+al;g[W>>2]=aC+(aq+ao);g[V>>2]=0.0;g[U>>2]=an+ap+I;g[T>>2]=aB+F+I;g[S>>2]=am+(aB+ap);g[R>>2]=0.0;g[Q>>2]=aA+ay+aw;g[P>>2]=au+az+aw;g[O>>2]=ax+(au+ay);g[N>>2]=0.0;g[M>>2]=at;g[L>>2]=as;g[K>>2]=aI;g[J>>2]=0.0;dg[av&63](ak,aE,l,e);}while((G|0)>0);i=f;return};case 13:{G=c[d+52>>2]|0;aE=+dh[c[(c[d>>2]|0)+84>>2]&1023](d);l=m;J=d+28|0;c[l>>2]=c[J>>2];c[l+4>>2]=c[J+4>>2];c[l+8>>2]=c[J+8>>2];c[l+12>>2]=c[J+12>>2];J=d;l=d;aI=+dh[c[(c[l>>2]|0)+44>>2]&1023](J);as=+dh[c[(c[l>>2]|0)+44>>2]&1023](J);at=+dh[c[(c[l>>2]|0)+44>>2]&1023](J);J=m|0;g[J>>2]=aI+ +g[J>>2];J=m+4|0;g[J>>2]=as+ +g[J>>2];J=m+8|0;g[J>>2]=at+ +g[J>>2];at=+g[m+(G<<2)>>2];m=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;cK[c[(c[m>>2]|0)+80>>2]&63](m,aE,at,G,b,e);i=f;return};case 0:{G=j;m=d+28|0;c[G>>2]=c[m>>2];c[G+4>>2]=c[m+4>>2];c[G+8>>2]=c[m+8>>2];c[G+12>>2]=c[m+12>>2];m=d;G=d;at=+dh[c[(c[G>>2]|0)+44>>2]&1023](m);aE=+dh[c[(c[G>>2]|0)+44>>2]&1023](m);as=+dh[c[(c[G>>2]|0)+44>>2]&1023](m);m=j|0;aI=at+ +g[m>>2];g[m>>2]=aI;m=j+4|0;at=aE+ +g[m>>2];g[m>>2]=at;m=j+8|0;aE=as+ +g[m>>2];g[m>>2]=aE;m=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;G=c[(c[m>>2]|0)+72>>2]|0;g[k>>2]=-0.0-aI;g[k+4>>2]=-0.0-at;g[k+8>>2]=-0.0-aE;g[k+12>>2]=0.0;co[G&255](m,k,j,b,e);i=f;return};default:{if((E-21|0)>>>0<9){g[n>>2]=999999984306749400.0;g[n+4>>2]=999999984306749400.0;g[n+8>>2]=999999984306749400.0;g[n+12>>2]=0.0;g[o>>2]=-999999984306749400.0;g[o+4>>2]=-999999984306749400.0;g[o+8>>2]=-999999984306749400.0;g[o+12>>2]=0.0;j=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;c[p>>2]=23856;c[p+4>>2]=23880;c[p+8>>2]=j;j=p+12|0;k=e;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];k=p+28|0;j=b;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];j=p+44|0;k=b+16|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];k=p+60|0;j=b+32|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];j=p+76|0;k=b+48|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];dI[c[(c[d>>2]|0)+60>>2]&1023](d,p|0,o,n);aJ=c[D>>2]|0}else{aJ=E}if((aJ|0)==3){g[q>>2]=999999984306749400.0;g[q+4>>2]=999999984306749400.0;g[q+8>>2]=999999984306749400.0;g[q+12>>2]=0.0;g[r>>2]=-999999984306749400.0;g[r+4>>2]=-999999984306749400.0;g[r+8>>2]=-999999984306749400.0;g[r+12>>2]=0.0;E=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;c[s>>2]=23856;c[s+4>>2]=23880;c[s+8>>2]=E;E=s+12|0;n=e;c[E>>2]=c[n>>2];c[E+4>>2]=c[n+4>>2];c[E+8>>2]=c[n+8>>2];c[E+12>>2]=c[n+12>>2];n=s+28|0;E=b;c[n>>2]=c[E>>2];c[n+4>>2]=c[E+4>>2];c[n+8>>2]=c[E+8>>2];c[n+12>>2]=c[E+12>>2];E=s+44|0;n=b+16|0;c[E>>2]=c[n>>2];c[E+4>>2]=c[n+4>>2];c[E+8>>2]=c[n+8>>2];c[E+12>>2]=c[n+12>>2];n=s+60|0;E=b+32|0;c[n>>2]=c[E>>2];c[n+4>>2]=c[E+4>>2];c[n+8>>2]=c[E+8>>2];c[n+12>>2]=c[E+12>>2];E=s+76|0;n=b+48|0;c[E>>2]=c[n>>2];c[E+4>>2]=c[n+4>>2];c[E+8>>2]=c[n+8>>2];c[E+12>>2]=c[n+12>>2];n=c[d+92>>2]|0;dI[c[(c[n>>2]|0)+8>>2]&1023](n,s+4|0,r,q);aK=c[D>>2]|0}else{aK=aJ}if((aK|0)>=7){i=f;return}aK=d;aJ=c[d+52>>2]|0;if((aJ|0)==0){D=d;if((cA[c[(c[D>>2]|0)+92>>2]&4095](aK)|0)<=0){i=f;return}q=d;d=b|0;r=y|0;s=b+4|0;n=y+4|0;E=b+8|0;o=y+8|0;p=b+48|0;k=b+16|0;j=b+20|0;m=b+24|0;G=b+52|0;J=b+32|0;l=b+36|0;K=b+40|0;L=b+56|0;M=A|0;N=A+4|0;O=A+8|0;P=A+12|0;Q=z|0;R=z+4|0;S=z+8|0;T=B|0;U=B+4|0;V=B+8|0;W=B+12|0;X=0;do{dI[c[(c[q>>2]|0)+96>>2]&1023](aK,X,y,z);aE=+g[d>>2];at=+g[r>>2];aI=+g[s>>2];as=+g[n>>2];ay=+g[E>>2];au=+g[o>>2];ax=+g[p>>2];aw=+g[k>>2];az=+g[j>>2];aA=+g[m>>2];ap=+g[G>>2];aB=+g[J>>2];am=+g[l>>2];I=+g[K>>2];F=+g[L>>2];g[M>>2]=ax+(aE*at+aI*as+ay*au);g[N>>2]=ap+(at*aw+as*az+au*aA);g[O>>2]=F+(at*aB+as*am+au*I);g[P>>2]=0.0;au=+g[Q>>2];as=+g[R>>2];at=+g[S>>2];g[T>>2]=ax+(aE*au+aI*as+ay*at);g[U>>2]=ap+(au*aw+as*az+at*aA);g[V>>2]=F+(au*aB+as*am+at*I);g[W>>2]=0.0;Y=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;dI[c[(c[Y>>2]|0)+8>>2]&1023](Y,A,B,e);X=X+1|0;}while((X|0)<(cA[c[(c[D>>2]|0)+92>>2]&4095](aK)|0));i=f;return}aK=aJ+28|0;if((c[aK>>2]|0)<=0){i=f;return}D=aJ+36|0;X=v|0;B=v+4|0;A=v+8|0;W=v+12|0;V=b|0;U=b+4|0;T=b+8|0;S=b+48|0;R=b+16|0;Q=b+20|0;P=b+24|0;O=b+52|0;N=b+32|0;M=b+36|0;L=b+40|0;K=b+56|0;b=w|0;l=w+4|0;J=w+8|0;G=w+12|0;m=x|0;j=x+4|0;k=x+8|0;p=x+12|0;o=aJ+16|0;aJ=t|0;E=t+4|0;n=t+8|0;s=t+12|0;r=u|0;d=u+4|0;z=u+8|0;y=u+12|0;q=0;do{Y=c[D>>2]|0;Z=c[Y+(q*56|0)+4>>2]|0;L1758:do{if((Z|0)>0){_=c[Y+(q*56|0)+12>>2]|0;I=0.0;at=0.0;am=0.0;$=c[_+(Z-1<<2)>>2]|0;aa=0;ab=_;while(1){_=c[ab+(aa<<2)>>2]|0;ac=c[o>>2]|0;as=am+ +g[ac+(_<<4)>>2];aB=at+ +g[ac+(_<<4)+4>>2];au=I+ +g[ac+(_<<4)+8>>2];ac=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;ad=c[(c[ac>>2]|0)+8>>2]|0;ae=c[o>>2]|0;F=+g[V>>2];aA=+g[ae+($<<4)>>2];az=+g[U>>2];aw=+g[ae+($<<4)+4>>2];ap=+g[T>>2];ay=+g[ae+($<<4)+8>>2];aI=+g[S>>2];aE=+g[R>>2];ax=+g[Q>>2];an=+g[P>>2];ao=+g[O>>2];aq=+g[N>>2];aC=+g[M>>2];al=+g[L>>2];aD=+g[K>>2];g[aJ>>2]=aI+(F*aA+az*aw+ap*ay);g[E>>2]=ao+(aA*aE+aw*ax+ay*an);g[n>>2]=aD+(aA*aq+aw*aC+ay*al);g[s>>2]=0.0;ae=c[o>>2]|0;ay=+g[ae+(_<<4)>>2];aw=+g[ae+(_<<4)+4>>2];aA=+g[ae+(_<<4)+8>>2];g[r>>2]=aI+(F*ay+az*aw+ap*aA);g[d>>2]=ao+(ay*aE+aw*ax+aA*an);g[z>>2]=aD+(ay*aq+aw*aC+aA*al);g[y>>2]=0.0;dI[ad&1023](ac,t,u,e);ac=aa+1|0;ad=c[D>>2]|0;if((ac|0)>=(c[ad+(q*56|0)+4>>2]|0)){aL=as;aM=aB;aN=au;break L1758}I=au;at=aB;am=as;$=_;aa=ac;ab=c[ad+(q*56|0)+12>>2]|0}}else{aL=0.0;aM=0.0;aN=0.0}}while(0);am=1.0/+(Z|0);at=aL*am;I=aM*am;as=aN*am;g[X>>2]=1.0;g[B>>2]=1.0;g[A>>2]=0.0;g[W>>2]=0.0;Y=c[D>>2]|0;am=+g[Y+(q*56|0)+40>>2];aB=+g[Y+(q*56|0)+44>>2];au=+g[Y+(q*56|0)+48>>2];Y=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;ab=c[(c[Y>>2]|0)+8>>2]|0;al=+g[V>>2];aA=+g[U>>2];aC=+g[T>>2];aw=+g[S>>2];aq=+g[R>>2];ay=+g[Q>>2];aD=+g[P>>2];an=+g[O>>2];ax=+g[N>>2];aE=+g[M>>2];ao=+g[L>>2];ap=+g[K>>2];g[b>>2]=aw+(at*al+I*aA+as*aC);g[l>>2]=an+(at*aq+I*ay+as*aD);g[J>>2]=ap+(at*ax+I*aE+as*ao);g[G>>2]=0.0;az=at+am;am=I+aB;aB=as+au;g[m>>2]=aw+(az*al+am*aA+aB*aC);g[j>>2]=an+(az*aq+am*ay+aB*aD);g[k>>2]=ap+(az*ax+am*aE+aB*ao);g[p>>2]=0.0;dI[ab&1023](Y,w,x,v);q=q+1|0;}while((q|0)<(c[aK>>2]|0));i=f;return}}}function atQ(a){a=a|0;return}function atR(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0;b=i;i=i+112|0;d=b|0;e=b+16|0;f=b+32|0;h=b+48|0;j=b+64|0;k=b+80|0;l=b+96|0;m=a;do{if((cA[c[(c[m>>2]|0)+16>>2]&4095](a)|0)!=0){n=cA[c[(c[m>>2]|0)+16>>2]&4095](a)|0;if(((cA[c[(c[n>>2]|0)+48>>2]&4095](n)|0)&8|0)==0){break}n=a+24|0;o=c[n>>2]|0;p=cA[c[(c[o>>2]|0)+36>>2]&4095](o)|0;aDD(d|0,0,16);if((p|0)>0){q=0}else{break}do{o=c[n>>2]|0;r=dj[c[(c[o>>2]|0)+40>>2]&511](o,q)|0;o=c[r+1116>>2]|0;if((o|0)>0){s=0;do{t=cA[c[(c[m>>2]|0)+16>>2]&4095](a)|0;cw[c[(c[t>>2]|0)+32>>2]&63](t,r+4+(s*276|0)+32|0,r+4+(s*276|0)+64|0,+g[r+4+(s*276|0)+80>>2],c[r+4+(s*276|0)+144>>2]|0,d);s=s+1|0;}while((s|0)<(o|0))}q=q+1|0;}while((q|0)<(p|0))}}while(0);if((cA[c[(c[m>>2]|0)+16>>2]&4095](a)|0)==0){i=b;return}q=cA[c[(c[m>>2]|0)+16>>2]&4095](a)|0;if(((cA[c[(c[q>>2]|0)+48>>2]&4095](q)|0)&3|0)==0){i=b;return}q=a+8|0;if((c[q>>2]|0)<=0){i=b;return}d=a+16|0;p=a+80|0;n=j|0;o=j+4|0;s=j+8|0;r=j+12|0;t=f|0;u=f+4|0;v=f+8|0;w=h|0;x=h+4|0;y=h+8|0;z=k|0;A=k+4|0;B=k+8|0;C=l|0;D=l+4|0;E=l+8|0;F=f+12|0;G=k+12|0;H=h+12|0;I=l+12|0;J=e|0;K=e+4|0;L=e+8|0;M=e+12|0;N=a;O=0;do{P=c[(c[d>>2]|0)+(O<<2)>>2]|0;do{if((c[P+204>>2]&32|0)==0){do{if((cA[c[(c[m>>2]|0)+16>>2]&4095](a)|0)!=0){Q=cA[c[(c[m>>2]|0)+16>>2]&4095](a)|0;if(((cA[c[(c[Q>>2]|0)+48>>2]&4095](Q)|0)&1|0)==0){break}g[J>>2]=1.0;g[K>>2]=1.0;g[L>>2]=1.0;g[M>>2]=0.0;switch(c[P+216>>2]|0){case 1:{g[J>>2]=1.0;g[K>>2]=1.0;g[L>>2]=1.0;g[M>>2]=0.0;break};case 2:{g[J>>2]=0.0;g[K>>2]=1.0;g[L>>2]=0.0;g[M>>2]=0.0;break};case 3:{g[J>>2]=0.0;g[K>>2]=1.0;g[L>>2]=1.0;g[M>>2]=0.0;break};case 4:{g[J>>2]=1.0;g[K>>2]=0.0;g[L>>2]=0.0;g[M>>2]=0.0;break};case 5:{g[J>>2]=1.0;g[K>>2]=1.0;g[L>>2]=0.0;g[M>>2]=0.0;break};default:{g[J>>2]=1.0;g[K>>2]=0.0;g[L>>2]=0.0;g[M>>2]=0.0}}dI[c[(c[N>>2]|0)+24>>2]&1023](a,P+4|0,c[P+192>>2]|0,e)}}while(0);Q=c[p>>2]|0;if((Q|0)==0){break}if(((cA[c[(c[Q>>2]|0)+48>>2]&4095](Q)|0)&2|0)==0){break}g[n>>2]=1.0;g[o>>2]=0.0;g[s>>2]=0.0;g[r>>2]=0.0;Q=P+192|0;R=c[Q>>2]|0;dI[c[(c[R>>2]|0)+8>>2]&1023](R,P+4|0,f,h);g[t>>2]=+g[t>>2]+-.019999999552965164;g[u>>2]=+g[u>>2]+-.019999999552965164;g[v>>2]=+g[v>>2]+-.019999999552965164;g[w>>2]=+g[w>>2]+.019999999552965164;g[x>>2]=+g[x>>2]+.019999999552965164;g[y>>2]=+g[y>>2]+.019999999552965164;do{if((c[P+232>>2]|0)==2){R=c[Q>>2]|0;dI[c[(c[R>>2]|0)+8>>2]&1023](R,P+68|0,k,l);S=+g[z>>2]+-.019999999552965164;g[z>>2]=S;T=+g[A>>2]+-.019999999552965164;g[A>>2]=T;U=+g[B>>2]+-.019999999552965164;g[B>>2]=U;V=+g[C>>2]+.019999999552965164;g[C>>2]=V;W=+g[D>>2]+.019999999552965164;g[D>>2]=W;X=+g[E>>2]+.019999999552965164;g[E>>2]=X;if(S<+g[t>>2]){g[t>>2]=S}if(T<+g[u>>2]){g[u>>2]=T}if(U<+g[v>>2]){g[v>>2]=U}U=+g[G>>2];if(U<+g[F>>2]){g[F>>2]=U}if(+g[w>>2]<V){g[w>>2]=V}if(+g[x>>2]<W){g[x>>2]=W}if(+g[y>>2]<X){g[y>>2]=X}X=+g[I>>2];if(+g[H>>2]>=X){break}g[H>>2]=X}}while(0);Q=c[p>>2]|0;dI[c[(c[Q>>2]|0)+52>>2]&1023](Q,f,h,j)}}while(0);O=O+1|0;}while((O|0)<(c[q>>2]|0));i=b;return}function atS(a){a=a|0;return}function atT(a,b){a=a|0;b=b|0;var d=0;d=b;ct[c[(c[d>>2]|0)+32>>2]&2047](b);atW(a,b);ct[c[(c[d>>2]|0)+36>>2]&2047](b);return}function atU(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=b+64|0;e=b+72|0;f=c[e>>2]|0;g=b+76|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-8+4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+68>>2]=0;d=b+44|0;e=b+52|0;g=c[e>>2]|0;f=b+56|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+48>>2]=0;d=b+24|0;e=b+32|0;f=c[e>>2]|0;g=b+36|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+28>>2]=0;d=b+4|0;e=b+12|0;g=c[e>>2]|0;f=b+16|0;if((g|0)==0){a[f]=1;c[e>>2]=0;c[d>>2]=0;h=b+8|0;c[h>>2]=0;return}if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[e>>2]=0;a[f]=1;c[e>>2]=0;c[d>>2]=0;h=b+8|0;c[h>>2]=0;return}function atV(a){a=a|0;if((a|0)==0){return}aDB(a);return}function atW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0;e=i;i=i+80|0;f=e|0;g=b+8|0;h=c[g>>2]|0;if((h|0)>0){j=b+16|0;k=0;l=h;while(1){m=c[(c[j>>2]|0)+(k<<2)>>2]|0;if((c[m+232>>2]|0)==1){cv[c[(c[m>>2]|0)+24>>2]&2047](m,d);n=c[g>>2]|0}else{n=l}m=k+1|0;if((m|0)<(n|0)){k=m;l=n}else{o=n;break}}}else{o=h}h=f+16|0;a[h]=1;n=f+12|0;c[n>>2]=0;l=f+4|0;c[l>>2]=0;k=f+8|0;c[k>>2]=0;j=f+36|0;a[j]=1;m=f+32|0;c[m>>2]=0;p=f+24|0;c[p>>2]=0;q=f+28|0;c[q>>2]=0;r=f+56|0;a[r]=1;s=f+52|0;c[s>>2]=0;t=f+44|0;c[t>>2]=0;u=f+48|0;c[u>>2]=0;v=f+76|0;a[v]=1;w=f+72|0;c[w>>2]=0;x=f+64|0;c[x>>2]=0;y=f+68|0;c[y>>2]=0;if((o|0)<=0){atU(f);i=e;return}z=b+16|0;b=0;A=-1;B=0;C=o;o=0;D=0;E=0;while(1){F=c[(c[(c[z>>2]|0)+(b<<2)>>2]|0)+192>>2]|0;G=F;H=G+~(G<<15)|0;I=(H>>10^H)*9|0;H=I>>6^I;I=H+~(H<<11)|0;H=I>>16^I;I=H&A;J=F;L1902:do{if(I>>>0<B>>>0){K=c[o+(I<<2)>>2]|0;if((K|0)==-1){L=1594;break}M=c[w>>2]|0;N=K;while(1){if((J|0)==(c[M+(N<<3)>>2]|0)){break}K=c[D+(N<<2)>>2]|0;if((K|0)==-1){L=1594;break L1902}else{N=K}}if((N|0)==-1){L=1594;break}if(((c[s>>2]|0)+(N<<2)|0)==0){L=1594}else{O=C;P=o;Q=D;R=E}}else{L=1594}}while(0);if((L|0)==1594){L=0;I=H&E-1;L1912:do{if(I>>>0<B>>>0){M=c[o+(I<<2)>>2]|0;if((M|0)==-1){L=1601;break}K=c[w>>2]|0;S=M;while(1){if((J|0)==(c[K+(S<<3)>>2]|0)){break}M=c[D+(S<<2)>>2]|0;if((M|0)==-1){L=1601;break L1912}else{S=M}}if((S|0)==-1){L=1601;break}c[(c[s>>2]|0)+(S<<2)>>2]=F;T=o;U=D;V=E}else{L=1601}}while(0);if((L|0)==1601){L=0;J=c[t>>2]|0;do{if((J|0)==(E|0)){K=(E|0)==0?1:E<<1;if((E|0)>=(K|0)){W=E;break}do{if((K|0)==0){X=0}else{c[9806]=(c[9806]|0)+1;N=aDx((K<<2)+19|0)|0;if((N|0)==0){X=0;break}M=-(N+4|0)&15;c[N+M>>2]=N;X=N+(M+4)|0}}while(0);if((E|0)>0){S=0;do{M=X+(S<<2)|0;if((M|0)!=0){c[M>>2]=c[(c[s>>2]|0)+(S<<2)>>2]}S=S+1|0;}while((S|0)<(E|0))}S=c[s>>2]|0;if((S|0)!=0){if((a[r]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[S-4>>2]|0)}c[s>>2]=0}a[r]=1;c[s>>2]=X;c[u>>2]=K;W=c[t>>2]|0}else{W=J}}while(0);S=(c[s>>2]|0)+(W<<2)|0;if((S|0)!=0){c[S>>2]=F}c[t>>2]=W+1;S=c[x>>2]|0;do{if((S|0)==(c[y>>2]|0)){M=(S|0)==0?1:S<<1;if((S|0)>=(M|0)){Y=S;break}do{if((M|0)==0){Z=0}else{c[9806]=(c[9806]|0)+1;N=aDx((M<<3|4)+15|0)|0;if((N|0)==0){Z=0;break}_=-(N+4|0)&15;c[N+_>>2]=N;Z=N+(_+4)|0}}while(0);if((S|0)>0){K=0;do{_=Z+(K<<3)|0;if((_|0)!=0){N=(c[w>>2]|0)+(K<<3)|0;$=_;_=c[N+4>>2]|0;c[$>>2]=c[N>>2];c[$+4>>2]=_}K=K+1|0;}while((K|0)<(S|0))}K=c[w>>2]|0;if((K|0)!=0){if((a[v]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[K-8+4>>2]|0)}c[w>>2]=0}a[v]=1;c[w>>2]=Z;c[y>>2]=M;Y=c[x>>2]|0}else{Y=S}}while(0);S=(c[w>>2]|0)+(Y<<3)|0;if((S|0)!=0){K=S;c[K>>2]=G;c[K+4>>2]=0}c[x>>2]=Y+1;K=c[u>>2]|0;if((E|0)<(K|0)){S=c[l>>2]|0;do{if((S|0)<(K|0)){if((S|0)<=(K|0)){if((c[k>>2]|0)<(K|0)){do{if((K|0)==0){aa=0}else{c[9806]=(c[9806]|0)+1;_=aDx((K<<2)+19|0)|0;if((_|0)==0){aa=0;break}$=-(_+4|0)&15;c[_+$>>2]=_;aa=_+($+4)|0}}while(0);if((S|0)>0){M=0;do{$=aa+(M<<2)|0;if(($|0)!=0){c[$>>2]=c[(c[n>>2]|0)+(M<<2)>>2]}M=M+1|0;}while((M|0)<(S|0))}M=c[n>>2]|0;if((M|0)!=0){if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[M-4>>2]|0)}c[n>>2]=0}a[h]=1;c[n>>2]=aa;c[k>>2]=K;ab=aa}else{ab=c[n>>2]|0}M=S;do{$=ab+(M<<2)|0;if(($|0)!=0){c[$>>2]=0}M=M+1|0;}while((M|0)<(K|0))}c[l>>2]=K;M=c[p>>2]|0;if((M|0)<(K|0)){if((c[q>>2]|0)<(K|0)){do{if((K|0)==0){ac=0}else{c[9806]=(c[9806]|0)+1;$=aDx((K<<2)+19|0)|0;if(($|0)==0){ac=0;break}_=-($+4|0)&15;c[$+_>>2]=$;ac=$+(_+4)|0}}while(0);if((M|0)>0){_=0;do{$=ac+(_<<2)|0;if(($|0)!=0){c[$>>2]=c[(c[m>>2]|0)+(_<<2)>>2]}_=_+1|0;}while((_|0)<(M|0))}_=c[m>>2]|0;if((_|0)!=0){if((a[j]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[_-4>>2]|0)}c[m>>2]=0}a[j]=1;c[m>>2]=ac;c[q>>2]=K;ad=ac}else{ad=c[m>>2]|0}_=M;do{$=ad+(_<<2)|0;if(($|0)!=0){c[$>>2]=0}_=_+1|0;}while((_|0)<(K|0))}c[p>>2]=K;if((K|0)>0){_=c[n>>2]|0;M=0;do{c[_+(M<<2)>>2]=-1;M=M+1|0;}while((M|0)<(K|0));M=c[m>>2]|0;_=0;do{c[M+(_<<2)>>2]=-1;_=_+1|0;}while((_|0)<(K|0))}if((S|0)<=0){break}_=c[w>>2]|0;M=c[u>>2]|0;$=c[n>>2]|0;N=c[m>>2]|0;ae=0;do{af=c[_+(ae<<3)>>2]|0;ag=af+~(af<<15)|0;af=(ag>>10^ag)*9|0;ag=af>>6^af;af=ag+~(ag<<11)|0;ag=$+(((af>>16^af)&M-1)<<2)|0;c[N+(ae<<2)>>2]=c[ag>>2];c[ag>>2]=ae;ae=ae+1|0;}while((ae|0)<(S|0))}}while(0);S=c[u>>2]|0;ah=H&S-1;ai=S}else{ah=I;ai=K}S=c[n>>2]|0;G=S+(ah<<2)|0;ae=c[m>>2]|0;c[ae+(J<<2)>>2]=c[G>>2];c[G>>2]=J;T=S;U=ae;V=ai}cv[c[(c[F>>2]|0)+56>>2]&2047](F,d);O=c[g>>2]|0;P=T;Q=U;R=V}ae=b+1|0;if((ae|0)>=(O|0)){break}b=ae;A=R-1|0;B=c[l>>2]|0;C=O;o=P;D=Q;E=R}atU(f);i=e;return}function atX(a){a=a|0;return}function atY(a){a=a|0;return}function atZ(a){a=a|0;return}function at_(a,b,d){a=a|0;b=b|0;d=d|0;c[a+144>>2]=b;c[a+152>>2]=d;return}function at$(a,b,d){a=a|0;b=b|0;d=d|0;c[a+148>>2]=b;c[a+156>>2]=d;return}function at0(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0,J=0;e=i;i=i+96|0;d=e|0;f=e+16|0;h=e+32|0;j=e+48|0;k=e+64|0;l=e+80|0;m=+g[a+28>>2];n=+g[b>>2];o=+g[a+32>>2];p=+g[b+4>>2];q=+g[a+36>>2];r=+g[b+8>>2];s=+g[a+76>>2];t=s+(m*n+o*p+q*r);u=+g[a+44>>2];v=+g[a+48>>2];w=+g[a+52>>2];x=+g[a+80>>2];y=x+(n*u+p*v+r*w);z=+g[a+60>>2];A=+g[a+64>>2];B=+g[a+68>>2];C=+g[a+84>>2];D=C+(n*z+p*A+r*B);g[d>>2]=t;g[d+4>>2]=y;g[d+8>>2]=D;g[d+12>>2]=0.0;r=+g[b+16>>2];p=+g[b+20>>2];n=+g[b+24>>2];E=s+(m*r+o*p+q*n);F=x+(r*u+p*v+n*w);G=C+(r*z+p*A+n*B);g[f>>2]=E;g[f+4>>2]=F;g[f+8>>2]=G;g[f+12>>2]=0.0;n=+g[b+32>>2];p=+g[b+36>>2];r=+g[b+40>>2];H=s+(m*n+o*p+q*r);q=x+(n*u+p*v+r*w);w=C+(n*z+p*A+r*B);g[h>>2]=H;g[h+4>>2]=q;g[h+8>>2]=w;g[h+12>>2]=0.0;B=(t+E+H)*.3333333432674408;r=(y+F+q)*.3333333432674408;A=(D+G+w)*.3333333432674408;g[j>>2]=B;g[j+4>>2]=r;g[j+8>>2]=A;g[j+12>>2]=0.0;p=E-t;E=F-y;F=G-D;G=H-t;t=q-y;y=w-D;D=E*y-F*t;w=F*G-p*y;y=p*t-E*G;G=1.0/+Q(+(y*y+(D*D+w*w)));g[k>>2]=1.0;g[k+4>>2]=1.0;g[k+8>>2]=0.0;g[k+12>>2]=0.0;b=a+8|0;I=c[b>>2]|0;J=c[(c[I>>2]|0)+8>>2]|0;g[l>>2]=G*D+B;g[l+4>>2]=G*w+r;g[l+8>>2]=G*y+A;g[l+12>>2]=0.0;dI[J&1023](I,j,l,k);k=c[b>>2]|0;l=a+12|0;dI[c[(c[k>>2]|0)+8>>2]&1023](k,d,f,l);k=c[b>>2]|0;dI[c[(c[k>>2]|0)+8>>2]&1023](k,f,h,l);f=c[b>>2]|0;dI[c[(c[f>>2]|0)+8>>2]&1023](f,h,d,l);i=e;return}function at1(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function at2(a){a=a|0;var b=0;b=a-92+88|0;if((b|0)==0){return}aDB(b);return}function at3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a-92+88|0;dI[c[(c[f>>2]|0)+8>>2]&1023](f,b,d,e);return}function at4(a){a=a|0;if((a|0)==0){return}aDB(a);return}function at5(b,d,e,f){b=b|0;d=d|0;e=e|0;f=+f;var h=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0.0;h=i;i=i+280|0;j=h|0;k=b+136|0;l=(c[(c[b+4>>2]|0)+1108>>2]|0)!=(c[k>>2]|0);m=+g[e>>2];n=+g[d>>2]*f+m;o=+g[e+4>>2];p=+g[d+4>>2]*f+o;q=+g[e+8>>2];r=+g[d+8>>2]*f+q;if(l){s=n- +g[b+120>>2];t=p- +g[b+124>>2];u=r- +g[b+128>>2];v=m- +g[b+56>>2];w=o- +g[b+60>>2];x=q- +g[b+64>>2];y=v*+g[b+8>>2]+w*+g[b+24>>2]+x*+g[b+40>>2];z=v*+g[b+12>>2]+w*+g[b+28>>2]+x*+g[b+44>>2];A=v*+g[b+16>>2]+w*+g[b+32>>2]+x*+g[b+48>>2];B=s*+g[b+72>>2]+t*+g[b+88>>2]+u*+g[b+104>>2];C=s*+g[b+76>>2]+t*+g[b+92>>2]+u*+g[b+108>>2];D=s*+g[b+80>>2]+t*+g[b+96>>2]+u*+g[b+112>>2]}else{u=n- +g[b+56>>2];t=p- +g[b+60>>2];s=r- +g[b+64>>2];x=m- +g[b+120>>2];m=o- +g[b+124>>2];o=q- +g[b+128>>2];y=x*+g[b+72>>2]+m*+g[b+88>>2]+o*+g[b+104>>2];z=x*+g[b+76>>2]+m*+g[b+92>>2]+o*+g[b+108>>2];A=x*+g[b+80>>2]+m*+g[b+96>>2]+o*+g[b+112>>2];B=u*+g[b+8>>2]+t*+g[b+24>>2]+s*+g[b+40>>2];C=u*+g[b+12>>2]+t*+g[b+28>>2]+s*+g[b+44>>2];D=u*+g[b+16>>2]+t*+g[b+32>>2]+s*+g[b+48>>2]}g[j>>2]=B;g[j+4>>2]=C;g[j+8>>2]=D;g[j+12>>2]=0.0;g[j+16>>2]=y;g[j+20>>2]=z;g[j+24>>2]=A;g[j+28>>2]=0.0;E=j+64|0;F=d;c[E>>2]=c[F>>2];c[E+4>>2]=c[F+4>>2];c[E+8>>2]=c[F+8>>2];c[E+12>>2]=c[F+12>>2];g[j+80>>2]=f;g[j+84>>2]=0.0;g[j+88>>2]=0.0;c[j+108>>2]=0;g[j+112>>2]=0.0;a[j+116|0]=0;g[j+208>>2]=0.0;g[j+240>>2]=0.0;g[j+272>>2]=0.0;aDD(j+120|0,0,28);g[j+48>>2]=n;g[j+52>>2]=p;g[j+56>>2]=r;g[j+60>>2]=0.0;F=j+32|0;E=e;c[F>>2]=c[E>>2];c[F+4>>2]=c[E+4>>2];c[F+8>>2]=c[E+8>>2];c[F+12>>2]=c[E+12>>2];if(l){E=c[b+148>>2]|0;c[j+92>>2]=E;F=c[b+144>>2]|0;c[j+96>>2]=F;e=c[b+156>>2]|0;c[j+100>>2]=e;d=c[b+152>>2]|0;c[j+104>>2]=d;G=E;H=e;I=F;J=d;K=b+140|0;L=l?K:k;M=c[L>>2]|0;N=l?k:K;O=c[N>>2]|0;P=b+160|0;Q=c[P>>2]|0;R=Q;S=c[R>>2]|0;T=S+12|0;U=c[T>>2]|0;V=+dq[U&63](Q,j,M,G,H,O,I,J);i=h;return}else{d=c[b+144>>2]|0;c[j+92>>2]=d;F=c[b+148>>2]|0;c[j+96>>2]=F;e=c[b+152>>2]|0;c[j+100>>2]=e;E=c[b+156>>2]|0;c[j+104>>2]=E;G=d;H=e;I=F;J=E;K=b+140|0;L=l?K:k;M=c[L>>2]|0;N=l?k:K;O=c[N>>2]|0;P=b+160|0;Q=c[P>>2]|0;R=Q;S=c[R>>2]|0;T=S+12|0;U=c[T>>2]|0;V=+dq[U&63](Q,j,M,G,H,O,I,J);i=h;return}}function at6(a){a=a|0;if((a|0)==0){return}aDB(a);return}function at7(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;i=i+168|0;e=d|0;f=c[b>>2]|0;b=f;g=a+4|0;if((b|0)==(c[g>>2]|0)){i=d;return 1}h=a+12|0;j=c[h>>2]|0;if(!(dj[c[(c[j>>2]|0)+8>>2]&511](j,c[f+188>>2]|0)|0)){i=d;return 1}j=a+8|0;a=c[(c[j>>2]|0)+24>>2]|0;k=dE[c[(c[a>>2]|0)+8>>2]&127](a,c[g>>2]|0,b,0)|0;if((k|0)==0){i=d;return 1}a=c[g>>2]|0;g=c[h>>2]|0;h=e|0;c[h>>2]=24e3;c[e+4>>2]=0;c[e+136>>2]=a;c[e+140>>2]=b;l=e+8|0;m=a+4|0;aDD(e+144|0,-1|0,16);c[l>>2]=c[m>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];m=e+24|0;l=a+20|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];c[m+12>>2]=c[l+12>>2];l=e+40|0;m=a+36|0;c[l>>2]=c[m>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];m=e+56|0;l=a+52|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];c[m+12>>2]=c[l+12>>2];l=f+4|0;m=e+72|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];c[m+12>>2]=c[l+12>>2];l=f+20|0;m=e+88|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];c[m+12>>2]=c[l+12>>2];l=f+36|0;m=e+104|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];c[m+12>>2]=c[l+12>>2];l=f+52|0;f=e+120|0;c[f>>2]=c[l>>2];c[f+4>>2]=c[l+4>>2];c[f+8>>2]=c[l+8>>2];c[f+12>>2]=c[l+12>>2];c[h>>2]=21728;c[e+160>>2]=g;co[c[(c[k>>2]|0)+8>>2]&255](k,a,b,(c[j>>2]|0)+28|0,e|0);ct[c[c[k>>2]>>2]&2047](k);e=c[(c[j>>2]|0)+24>>2]|0;cv[c[(c[e>>2]|0)+60>>2]&2047](e,k);i=d;return 1}function at8(a){a=a|0;if((a|0)==0){return}aDB(a);return}function at9(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;d=a+184|0;e=c[d>>2]|0;if(+g[e+4>>2]==0.0){f=0;return f|0}h=c[b>>2]|0;if(!(dj[c[(c[e>>2]|0)+8>>2]&511](e,c[h+188>>2]|0)|0)){f=1;return f|0}atI(c[a+192>>2]|0,a+36|0,a+100|0,h,c[h+192>>2]|0,h+4|0,c[d>>2]|0,+g[a+188>>2]);f=1;return f|0}function aua(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aub(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;d=a+216|0;e=c[d>>2]|0;if(+g[e+4>>2]==0.0){f=0;return f|0}h=c[b>>2]|0;if(!(dj[c[(c[e>>2]|0)+8>>2]&511](e,c[h+188>>2]|0)|0)){f=1;return f|0}atG(a+68|0,a+132|0,h,c[h+192>>2]|0,h+4|0,c[d>>2]|0);f=1;return f|0}function auc(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aud(a,b){a=a|0;b=b|0;var d=0;d=c[a+12>>2]|0;return dj[c[(c[d>>2]|0)+8>>2]&511](d,b)|0}function aue(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0.0;e=i;i=i+8|0;f=e|0;c[f>>2]=-1;c[f+4>>2]=c[a+16>>2];h=b+4|0;if((c[h>>2]|0)==0){c[h>>2]=f}f=a+12|0;h=c[f>>2]|0;j=+c4[c[(c[h>>2]|0)+12>>2]&127](h,b,d);g[a+4>>2]=+g[(c[f>>2]|0)+4>>2];i=e;return+j}function auf(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aug(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;h=h|0;var j=0,k=0,l=0,m=0.0;j=i;i=i+56|0;k=j|0;l=j+8|0;c[k>>2]=f;c[k+4>>2]=h;h=c[a+212>>2]|0;if(+g[h+4>>2]<e){m=e;i=j;return+m}c[l>>2]=c[a+216>>2];c[l+4>>2]=k;k=l+8|0;a=b;c[k>>2]=c[a>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];a=l+24|0;k=d;c[a>>2]=c[k>>2];c[a+4>>2]=c[k+4>>2];c[a+8>>2]=c[k+8>>2];c[a+12>>2]=c[k+12>>2];g[l+40>>2]=e;m=+c4[c[(c[h>>2]|0)+12>>2]&127](h,l,0);i=j;return+m}function auh(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aui(a){a=a|0;return}function auj(a){a=a|0;return}function auk(a,b,c){a=a|0;b=b|0;c=c|0;return}function aul(a,b){a=a|0;b=b|0;return 1}function aum(a,b){a=a|0;b=b|0;return 1}function aun(a){a=a|0;return}function auo(a){a=a|0;return}function aup(a,b){a=a|0;b=+b;return}function auq(a,b){a=a|0;b=b|0;return}function aur(a,b,c){a=a|0;b=b|0;c=c|0;return}function aus(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;h=h|0;var j=0,k=0,l=0,m=0.0;j=i;i=i+56|0;k=j|0;l=j+8|0;c[k>>2]=f;c[k+4>>2]=h;h=c[a+212>>2]|0;if(+g[h+4>>2]<e){m=e;i=j;return+m}c[l>>2]=c[a+216>>2];c[l+4>>2]=k;k=l+8|0;a=b;c[k>>2]=c[a>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];a=l+24|0;k=d;c[a>>2]=c[k>>2];c[a+4>>2]=c[k+4>>2];c[a+8>>2]=c[k+8>>2];c[a+12>>2]=c[k+12>>2];g[l+40>>2]=e;m=+c4[c[(c[h>>2]|0)+12>>2]&127](h,l,1);i=j;return+m}function aut(a){a=a|0;if((a|0)==0){return}aDB(a);return}function auu(a,b){a=a|0;b=b|0;var d=0;d=c[a+20>>2]|0;return dj[c[(c[d>>2]|0)+8>>2]&511](d,b)|0}function auv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0.0;e=i;i=i+8|0;f=e|0;c[f>>2]=-1;c[f+4>>2]=c[a+24>>2];h=b+4|0;if((c[h>>2]|0)==0){c[h>>2]=f}f=a+20|0;h=c[f>>2]|0;j=+c4[c[(c[h>>2]|0)+12>>2]&127](h,b,d);g[a+4>>2]=+g[(c[f>>2]|0)+4>>2];i=e;return+j}function auw(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aux(a,d){a=a|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;e=i;i=i+144|0;f=e|0;h=e+48|0;j=e+112|0;k=c[d+36>>2]|0;d=h;l=c[(c[a+8>>2]|0)+24>>2]|0;m=c[l+(k*80|0)+64>>2]|0;n=c[a+12>>2]|0;o=f;anx(f,n|0,l+(k*80|0)|0);p=+g[l+(k*80|0)+48>>2];q=+g[l+(k*80|0)+52>>2];r=+g[l+(k*80|0)+56>>2];s=+g[n>>2]*p+ +g[n+4>>2]*q+ +g[n+8>>2]*r+ +g[n+48>>2];t=+g[n+16>>2]*p+ +g[n+20>>2]*q+ +g[n+24>>2]*r+ +g[n+52>>2];u=+g[n+32>>2]*p+ +g[n+36>>2]*q+ +g[n+40>>2]*r+ +g[n+56>>2];n=h+48|0;l=h|0;do{l=l+16|0;}while((l|0)!=(n|0));c[d>>2]=c[o>>2];c[d+4>>2]=c[o+4>>2];c[d+8>>2]=c[o+8>>2];c[d+12>>2]=c[o+12>>2];o=h+16|0;d=f+16|0;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];d=h+32|0;o=f+32|0;c[d>>2]=c[o>>2];c[d+4>>2]=c[o+4>>2];c[d+8>>2]=c[o+8>>2];c[d+12>>2]=c[o+12>>2];g[h+48>>2]=s;g[h+52>>2]=t;g[h+56>>2]=u;g[h+60>>2]=0.0;o=a+4|0;d=(c[o>>2]|0)+192|0;f=c[d>>2]|0;c[d>>2]=m;d=c[a+24>>2]|0;n=j+4|0;g[n>>2]=1.0;c[j+8>>2]=0;b[j+12>>1]=1;b[j+14>>1]=-1;c[j+16>>2]=0;c[j>>2]=19e3;c[j+20>>2]=d;c[j+24>>2]=k;g[n>>2]=+g[d+4>>2];atG(c[a+16>>2]|0,c[a+20>>2]|0,c[o>>2]|0,m,h,j|0);c[(c[o>>2]|0)+192>>2]=f;i=e;return}function auy(a,b,d){a=a|0;b=b|0;d=+d;cv[c[(c[a>>2]|0)+12>>2]&2047](a,b);return}function auz(a){a=a|0;if((a|0)==0){return}aDB(a);return}function auA(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=e|0;f=f|0;var h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;h=i;i=i+40|0;j=h|0;k=h+8|0;c[j>>2]=e;c[j+4>>2]=f;l=+g[b>>2];m=+g[b+4>>2];n=+g[b+8>>2];o=+g[a+56>>2]*l+ +g[a+60>>2]*m+ +g[a+64>>2]*n;p=l*+g[a+72>>2]+m*+g[a+76>>2]+n*+g[a+80>>2];q=l*+g[a+88>>2]+m*+g[a+92>>2]+n*+g[a+96>>2];c[k>>2]=c[a+48>>2];c[k+4>>2]=j;g[k+8>>2]=o;g[k+12>>2]=p;g[k+16>>2]=q;g[k+20>>2]=0.0;g[k+24>>2]=d;j=c[a+44>>2]|0;d=+c4[c[(c[j>>2]|0)+12>>2]&127](j,k,1);i=h;return+d}function auB(a){a=a|0;if((a|0)==0){return}aDB(a);return}function auC(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=e|0;f=f|0;var h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;h=i;i=i+40|0;j=h|0;k=h+8|0;c[j>>2]=e;c[j+4>>2]=f;l=+g[b>>2];m=+g[b+4>>2];n=+g[b+8>>2];o=+g[a+56>>2]*l+ +g[a+60>>2]*m+ +g[a+64>>2]*n;p=l*+g[a+72>>2]+m*+g[a+76>>2]+n*+g[a+80>>2];q=l*+g[a+88>>2]+m*+g[a+92>>2]+n*+g[a+96>>2];c[k>>2]=c[a+48>>2];c[k+4>>2]=j;g[k+8>>2]=o;g[k+12>>2]=p;g[k+16>>2]=q;g[k+20>>2]=0.0;g[k+24>>2]=d;j=c[a+44>>2]|0;d=+c4[c[(c[j>>2]|0)+12>>2]&127](j,k,1);i=h;return+d}function auD(a){a=a|0;if((a|0)==0){return}aDB(a);return}function auE(b,d){b=b|0;d=d|0;var e=0,f=0,h=0;c[b+8>>2]=0;c[b>>2]=24952;a[b+28|0]=1;c[b+24>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;g[b+32>>2]=999999984306749400.0;g[b+36>>2]=999999984306749400.0;g[b+40>>2]=999999984306749400.0;g[b+44>>2]=0.0;g[b+48>>2]=-999999984306749400.0;g[b+52>>2]=-999999984306749400.0;g[b+56>>2]=-999999984306749400.0;g[b+60>>2]=0.0;e=b+64|0;c[e>>2]=0;c[b+68>>2]=1;g[b+72>>2]=0.0;g[b+76>>2]=1.0;g[b+80>>2]=1.0;g[b+84>>2]=1.0;g[b+88>>2]=0.0;c[b+4>>2]=31;if(!d){return}c[9806]=(c[9806]|0)+1;d=aDx(59)|0;do{if((d|0)==0){f=0}else{b=-(d+4|0)&15;h=d+(b+4)|0;c[d+b>>2]=d;if((h|0)==0){f=0;break}a[d+(b+40)|0]=1;c[d+(b+36)>>2]=0;c[d+(b+28)>>2]=0;c[d+(b|32)>>2]=0;c[h>>2]=0;c[d+(b+8)>>2]=0;c[d+(b+12)>>2]=-1;c[d+(b|16)>>2]=0;c[d+(b+20)>>2]=0;f=h}}while(0);c[e>>2]=f;return}function auF(b){b=b|0;var d=0,e=0,f=0,g=0;c[b>>2]=24952;d=b+64|0;e=c[d>>2]|0;do{if((e|0)!=0){awp(e);f=c[d>>2]|0;if((f|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[f-40+36>>2]|0)}}while(0);d=b+16|0;e=b+24|0;f=c[e>>2]|0;g=b+28|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-80+76>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+20>>2]=0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-92+88>>2]|0);return}function auG(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;c[b>>2]=24952;d=b+64|0;e=c[d>>2]|0;do{if((e|0)!=0){awp(e);f=c[d>>2]|0;if((f|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[f-40+36>>2]|0)}}while(0);d=b+16|0;e=b+24|0;f=c[e>>2]|0;g=b+28|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+20|0;c[h>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-80+76>>2]|0)}c[e>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+20|0;c[h>>2]=0;return}function auH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0;d=i;i=i+64|0;e=d|0;f=d+16|0;h=d+32|0;j=d+48|0;k=a+68|0;c[k>>2]=(c[k>>2]|0)+1;k=a+64|0;l=c[k>>2]|0;m=a+24|0;if((l|0)!=0){n=c[(c[m>>2]|0)+(b*80|0)+76>>2]|0;aww(l,n)|0;o=l+4|0;p=c[o>>2]|0;if((p|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[p-44+40>>2]|0)}c[o>>2]=n;n=l+12|0;c[n>>2]=(c[n>>2]|0)-1}n=a+16|0;a=(c[n>>2]|0)-1|0;l=e;e=f;f=h;h=j;j=c[m>>2]|0;o=j+(b*80|0)|0;c[l>>2]=c[o>>2];c[l+4>>2]=c[o+4>>2];c[l+8>>2]=c[o+8>>2];c[l+12>>2]=c[o+12>>2];p=j+(b*80|0)+16|0;c[e>>2]=c[p>>2];c[e+4>>2]=c[p+4>>2];c[e+8>>2]=c[p+8>>2];c[e+12>>2]=c[p+12>>2];q=j+(b*80|0)+32|0;c[f>>2]=c[q>>2];c[f+4>>2]=c[q+4>>2];c[f+8>>2]=c[q+8>>2];c[f+12>>2]=c[q+12>>2];r=j+(b*80|0)+48|0;c[h>>2]=c[r>>2];c[h+4>>2]=c[r+4>>2];c[h+8>>2]=c[r+8>>2];c[h+12>>2]=c[r+12>>2];s=j+(b*80|0)+64|0;t=c[s>>2]|0;u=j+(b*80|0)+68|0;v=c[u>>2]|0;w=j+(b*80|0)+72|0;x=+g[w>>2];y=j+(b*80|0)+76|0;z=c[y>>2]|0;A=j+(a*80|0)|0;c[o>>2]=c[A>>2];c[o+4>>2]=c[A+4>>2];c[o+8>>2]=c[A+8>>2];c[o+12>>2]=c[A+12>>2];A=j+(a*80|0)+16|0;c[p>>2]=c[A>>2];c[p+4>>2]=c[A+4>>2];c[p+8>>2]=c[A+8>>2];c[p+12>>2]=c[A+12>>2];A=j+(a*80|0)+32|0;c[q>>2]=c[A>>2];c[q+4>>2]=c[A+4>>2];c[q+8>>2]=c[A+8>>2];c[q+12>>2]=c[A+12>>2];A=j+(a*80|0)+48|0;c[r>>2]=c[A>>2];c[r+4>>2]=c[A+4>>2];c[r+8>>2]=c[A+8>>2];c[r+12>>2]=c[A+12>>2];c[s>>2]=c[j+(a*80|0)+64>>2];c[u>>2]=c[j+(a*80|0)+68>>2];g[w>>2]=+g[j+(a*80|0)+72>>2];c[y>>2]=c[j+(a*80|0)+76>>2];j=c[m>>2]|0;y=j+(a*80|0)|0;c[y>>2]=c[l>>2];c[y+4>>2]=c[l+4>>2];c[y+8>>2]=c[l+8>>2];c[y+12>>2]=c[l+12>>2];l=j+(a*80|0)+16|0;c[l>>2]=c[e>>2];c[l+4>>2]=c[e+4>>2];c[l+8>>2]=c[e+8>>2];c[l+12>>2]=c[e+12>>2];e=j+(a*80|0)+32|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=j+(a*80|0)+48|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];c[j+(a*80|0)+64>>2]=t;c[j+(a*80|0)+68>>2]=v;g[j+(a*80|0)+72>>2]=x;c[j+(a*80|0)+76>>2]=z;if((c[k>>2]|0)==0){B=c[n>>2]|0;C=B-1|0;c[n>>2]=C;i=d;return}c[(c[(c[m>>2]|0)+(b*80|0)+76>>2]|0)+36>>2]=b;B=c[n>>2]|0;C=B-1|0;c[n>>2]=C;i=d;return}function auI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+68|0;c[d>>2]=(c[d>>2]|0)+1;d=c[a+16>>2]|0;if((d|0)>0){e=a+24|0;f=d;do{f=f-1|0;if((c[(c[e>>2]|0)+(f*80|0)+64>>2]|0)==(b|0)){auH(a,f)}}while((f|0)>0)}ct[c[(c[a>>2]|0)+64>>2]&2047](a);return}function auJ(a){a=a|0;return 17296|0}function auK(a){a=a|0;return 24}function auL(a){a=a|0;return}function auM(a){a=a|0;return a+76|0}function auN(a,b){a=a|0;b=+b;g[a+72>>2]=b;return}function auO(a){a=a|0;return+(+g[a+72>>2])}function auP(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0;b=i;i=i+32|0;d=b|0;e=b+16|0;f=a+32|0;g[f>>2]=999999984306749400.0;h=a+36|0;g[h>>2]=999999984306749400.0;j=a+40|0;g[j>>2]=999999984306749400.0;g[a+44>>2]=0.0;k=a+48|0;g[k>>2]=-999999984306749400.0;l=a+52|0;g[l>>2]=-999999984306749400.0;m=a+56|0;g[m>>2]=-999999984306749400.0;g[a+60>>2]=0.0;n=a+16|0;if((c[n>>2]|0)<=0){i=b;return}o=a+24|0;a=d|0;p=e|0;q=d+4|0;r=e+4|0;s=d+8|0;t=e+8|0;u=0;do{v=c[o>>2]|0;w=c[v+(u*80|0)+64>>2]|0;dI[c[(c[w>>2]|0)+8>>2]&1023](w,v+(u*80|0)|0,d,e);x=+g[a>>2];if(+g[f>>2]>x){g[f>>2]=x}x=+g[p>>2];if(+g[k>>2]<x){g[k>>2]=x}x=+g[q>>2];if(+g[h>>2]>x){g[h>>2]=x}x=+g[r>>2];if(+g[l>>2]<x){g[l>>2]=x}x=+g[s>>2];if(+g[j>>2]>x){g[j>>2]=x}x=+g[t>>2];if(+g[m>>2]<x){g[m>>2]=x}u=u+1|0;}while((u|0)<(c[n>>2]|0));i=b;return}function auQ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0;f=+g[a+48>>2];h=+g[a+32>>2];i=+g[a+52>>2];j=+g[a+36>>2];k=+g[a+56>>2];l=+g[a+40>>2];m=(c[a+16>>2]|0)==0;n=m?0.0:(k+l)*.5;o=m?0.0:(i+j)*.5;p=m?0.0:(f+h)*.5;q=a;r=+dh[c[(c[q>>2]|0)+44>>2]&1023](a);s=+dh[c[(c[q>>2]|0)+44>>2]&1023](a);t=(m?0.0:(f-h)*.5)+r;r=(m?0.0:(i-j)*.5)+s;s=(m?0.0:(k-l)*.5)+ +dh[c[(c[q>>2]|0)+44>>2]&1023](a);l=+g[b>>2];k=+P(+l);j=+g[b+4>>2];i=+P(+j);h=+g[b+8>>2];f=+P(+h);u=+g[b+16>>2];v=+P(+u);w=+g[b+20>>2];x=+P(+w);y=+g[b+24>>2];z=+P(+y);A=+g[b+32>>2];B=+P(+A);C=+g[b+36>>2];D=+P(+C);E=+g[b+40>>2];F=+P(+E);G=+g[b+48>>2]+(p*l+o*j+n*h);h=+g[b+52>>2]+(p*u+o*w+n*y);y=+g[b+56>>2]+(p*A+o*C+n*E);E=t*k+r*i+s*f;f=t*v+r*x+s*z;z=t*B+r*D+s*F;g[d>>2]=G-E;g[d+4>>2]=h-f;g[d+8>>2]=y-z;g[d+12>>2]=0.0;g[e>>2]=E+G;g[e+4>>2]=f+h;g[e+8>>2]=z+y;g[e+12>>2]=0.0;return}function auR(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0;e=i;i=i+96|0;f=e|0;h=e+64|0;j=e+80|0;g[f>>2]=1.0;aDD(f+4|0,0,16);g[f+20>>2]=1.0;aDD(f+24|0,0,16);g[f+40>>2]=1.0;aDD(f+44|0,0,20);dI[c[(c[a>>2]|0)+8>>2]&1023](a,f,h,j);k=(+g[j>>2]- +g[h>>2])*.5*2.0;l=(+g[j+4>>2]- +g[h+4>>2])*.5*2.0;m=(+g[j+8>>2]- +g[h+8>>2])*.5*2.0;n=b/12.0;b=l*l;l=m*m;g[d>>2]=n*(b+l);m=k*k;g[d+4>>2]=n*(m+l);g[d+8>>2]=n*(m+b);i=e;return}function auS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0.0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=i;i=i+128|0;e=d|0;f=d+16|0;h=d+48|0;j=d+112|0;k=a+16|0;if((c[k>>2]|0)<=0){l=a+76|0;m=l;n=b;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];o=a;p=c[o>>2]|0;q=p+64|0;r=c[q>>2]|0;ct[r&2047](a);i=d;return}s=a+24|0;t=h;u=h+16|0;v=h+32|0;w=h+48|0;x=w;y=j;z=j|0;A=b|0;B=j+4|0;C=b+4|0;D=j+8|0;E=b+8|0;F=a+76|0;G=a+80|0;H=a+84|0;I=j+12|0;J=w|0;w=h+52|0;K=h+56|0;L=h+48|0;M=h+60|0;N=e;O=f;P=a+64|0;Q=f|0;R=f+16|0;f=0;do{S=c[s>>2]|0;T=S+(f*80|0)|0;c[t>>2]=c[T>>2];c[t+4>>2]=c[T+4>>2];c[t+8>>2]=c[T+8>>2];c[t+12>>2]=c[T+12>>2];T=S+(f*80|0)+16|0;c[u>>2]=c[T>>2];c[u+4>>2]=c[T+4>>2];c[u+8>>2]=c[T+8>>2];c[u+12>>2]=c[T+12>>2];T=S+(f*80|0)+32|0;c[v>>2]=c[T>>2];c[v+4>>2]=c[T+4>>2];c[v+8>>2]=c[T+8>>2];c[v+12>>2]=c[T+12>>2];T=S+(f*80|0)+48|0;c[x>>2]=c[T>>2];c[x+4>>2]=c[T+4>>2];c[x+8>>2]=c[T+8>>2];c[x+12>>2]=c[T+12>>2];T=c[S+(f*80|0)+64>>2]|0;S=cA[c[(c[T>>2]|0)+28>>2]&4095](T)|0;c[y>>2]=c[S>>2];c[y+4>>2]=c[S+4>>2];c[y+8>>2]=c[S+8>>2];U=+g[B>>2]*+g[C>>2]/+g[G>>2];V=+g[D>>2]*+g[E>>2]/+g[H>>2];g[z>>2]=+g[z>>2]*+g[A>>2]/+g[F>>2];g[B>>2]=U;g[D>>2]=V;g[I>>2]=0.0;S=c[(c[s>>2]|0)+(f*80|0)+64>>2]|0;cv[c[(c[S>>2]|0)+24>>2]&2047](S,j);V=+g[w>>2]*+g[C>>2];U=+g[K>>2]*+g[E>>2];g[L>>2]=+g[J>>2]*+g[A>>2];g[w>>2]=V;g[K>>2]=U;g[M>>2]=0.0;S=c[s>>2]|0;T=S+(f*80|0)|0;c[T>>2]=c[t>>2];c[T+4>>2]=c[t+4>>2];c[T+8>>2]=c[t+8>>2];c[T+12>>2]=c[t+12>>2];T=S+(f*80|0)+16|0;c[T>>2]=c[u>>2];c[T+4>>2]=c[u+4>>2];c[T+8>>2]=c[u+8>>2];c[T+12>>2]=c[u+12>>2];T=S+(f*80|0)+32|0;c[T>>2]=c[v>>2];c[T+4>>2]=c[v+4>>2];c[T+8>>2]=c[v+8>>2];c[T+12>>2]=c[v+12>>2];T=S+(f*80|0)+48|0;c[T>>2]=c[x>>2];c[T+4>>2]=c[x+4>>2];c[T+8>>2]=c[x+8>>2];c[T+12>>2]=c[x+12>>2];if((c[P>>2]|0)!=0){T=c[(c[s>>2]|0)+(f*80|0)+64>>2]|0;dI[c[(c[T>>2]|0)+8>>2]&1023](T,h,Q,e);c[R>>2]=c[N>>2];c[R+4>>2]=c[N+4>>2];c[R+8>>2]=c[N+8>>2];c[R+12>>2]=c[N+12>>2];T=c[P>>2]|0;S=c[(c[s>>2]|0)+(f*80|0)+76>>2]|0;W=aww(T,S)|0;L2296:do{if((W|0)==0){X=0}else{Y=c[T+8>>2]|0;if((Y|0)>-1){Z=0;_=W}else{X=c[T>>2]|0;break}while(1){if((Z|0)>=(Y|0)){X=_;break L2296}$=c[_+32>>2]|0;if(($|0)==0){X=_;break}else{Z=Z+1|0;_=$}}}}while(0);W=S;aDC(W|0,O|0,32)|0;awv(T,X,S)}f=f+1|0;}while((f|0)<(c[k>>2]|0));l=a+76|0;m=l;n=b;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];o=a;p=c[o>>2]|0;q=p+64|0;r=c[q>>2]|0;ct[r&2047](a);i=d;return}function auT(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=d;f=dj[c[(c[e>>2]|0)+40>>2]&511](d,a)|0;h=dj[c[(c[e>>2]|0)+28>>2]&511](d,f)|0;c[b>>2]=h;if((h|0)!=0){cv[c[(c[d>>2]|0)+48>>2]&2047](d,f)}c[b+4>>2]=c[a+4>>2];g[b+20>>2]=+g[a+72>>2];f=c[a+16>>2]|0;h=b+16|0;c[h>>2]=f;i=b+12|0;c[i>>2]=0;if((f|0)==0){return 17848}b=d;j=cS[c[(c[b>>2]|0)+16>>2]&511](d,76,f)|0;f=j+8|0;k=c[f>>2]|0;c[i>>2]=dj[c[(c[e>>2]|0)+28>>2]&511](d,k)|0;if((c[h>>2]|0)>0){i=a+24|0;a=d;l=0;m=k;while(1){g[m+72>>2]=+g[(c[i>>2]|0)+(l*80|0)+72>>2];c[m+64>>2]=dj[c[(c[e>>2]|0)+28>>2]&511](d,c[(c[i>>2]|0)+(l*80|0)+64>>2]|0)|0;if((dj[c[(c[e>>2]|0)+24>>2]&511](d,c[(c[i>>2]|0)+(l*80|0)+64>>2]|0)|0)==0){k=c[(c[b>>2]|0)+16>>2]|0;n=c[(c[i>>2]|0)+(l*80|0)+64>>2]|0;o=cA[c[(c[n>>2]|0)+48>>2]&4095](n)|0;n=cS[k&511](d,o,1)|0;o=c[(c[i>>2]|0)+(l*80|0)+64>>2]|0;k=cS[c[(c[o>>2]|0)+52>>2]&511](o,c[n+8>>2]|0,d)|0;co[c[(c[a>>2]|0)+20>>2]&255](d,n,k,1346455635,c[(c[i>>2]|0)+(l*80|0)+64>>2]|0)}c[m+68>>2]=c[(c[i>>2]|0)+(l*80|0)+68>>2];k=c[i>>2]|0;g[m>>2]=+g[k+(l*80|0)>>2];g[m+4>>2]=+g[k+(l*80|0)+4>>2];g[m+8>>2]=+g[k+(l*80|0)+8>>2];g[m+12>>2]=+g[k+(l*80|0)+12>>2];g[m+16>>2]=+g[k+(l*80|0)+16>>2];g[m+20>>2]=+g[k+(l*80|0)+20>>2];g[m+24>>2]=+g[k+(l*80|0)+24>>2];g[m+28>>2]=+g[k+(l*80|0)+28>>2];g[m+32>>2]=+g[k+(l*80|0)+32>>2];g[m+36>>2]=+g[k+(l*80|0)+36>>2];g[m+40>>2]=+g[k+(l*80|0)+40>>2];g[m+44>>2]=+g[k+(l*80|0)+44>>2];g[m+48>>2]=+g[k+(l*80|0)+48>>2];g[m+52>>2]=+g[k+(l*80|0)+52>>2];g[m+56>>2]=+g[k+(l*80|0)+56>>2];g[m+60>>2]=+g[k+(l*80|0)+60>>2];k=l+1|0;if((k|0)<(c[h>>2]|0)){l=k;m=m+76|0}else{p=a;break}}}else{p=d}co[c[(c[p>>2]|0)+20>>2]&255](d,j,16696,1497453121,c[f>>2]|0);return 17848}function auU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0;e=i;i=i+48|0;f=e|0;h=e+16|0;j=e+32|0;k=+g[b+60>>2]*.5;l=c[b+68>>2]|0;m=+g[d+(l<<2)>>2];n=+g[d>>2];o=+g[d+4>>2];p=+g[d+8>>2];q=+Q(+(n*n+o*o+p*p));r=c[b+64>>2]|0;if(m>q*+g[b+52>>2]){g[f+(r<<2)>>2]=0.0;g[f+(l<<2)>>2]=k;g[f+(c[b+72>>2]<<2)>>2]=0.0;s=a;t=f;c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];i=e;return}q=+g[d+(r<<2)>>2];t=c[b+72>>2]|0;m=+g[d+(t<<2)>>2];p=+Q(+(q*q+m*m));if(p>1.1920928955078125e-7){o=+g[b+56>>2]/p;g[h+(r<<2)>>2]=q*o;g[h+(l<<2)>>2]=-0.0-k;g[h+(t<<2)>>2]=o*m;b=a;d=h;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];i=e;return}else{g[j+(r<<2)>>2]=0.0;g[j+(l<<2)>>2]=-0.0-k;g[j+(t<<2)>>2]=0.0;t=a;a=j;c[t>>2]=c[a>>2];c[t+4>>2]=c[a+4>>2];c[t+8>>2]=c[a+8>>2];c[t+12>>2]=c[a+12>>2];i=e;return}}function auV(a,b,c){a=a|0;b=b|0;c=c|0;auU(a,b,c);return}function auW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;g=f|0;if((e|0)<=0){i=f;return}h=g;j=0;do{auU(g,a,b+(j<<4)|0);k=d+(j<<4)|0;c[k>>2]=c[h>>2];c[k+4>>2]=c[h+4>>2];c[k+8>>2]=c[h+8>>2];c[k+12>>2]=c[h+12>>2];j=j+1|0;}while((j|0)<(e|0));i=f;return}function auX(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;auU(a,b,d);e=b|0;f=b;if(+dh[c[(c[f>>2]|0)+44>>2]&1023](e)==0.0){return}h=+g[d>>2];i=+g[d+4>>2];j=+g[d+8>>2];d=h*h+i*i+j*j<1.4210854715202004e-14;k=d?-1.0:j;j=d?-1.0:i;i=d?-1.0:h;h=1.0/+Q(+(k*k+(i*i+j*j)));l=+dh[c[(c[f>>2]|0)+44>>2]&1023](e);e=a|0;g[e>>2]=h*i*l+ +g[e>>2];e=a+4|0;g[e>>2]=l*h*j+ +g[e>>2];e=a+8|0;g[e>>2]=l*h*k+ +g[e>>2];return}function auY(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0.0,j=0.0,k=0.0;d=c[a+68>>2]|0;e=c[a+64>>2]|0;f=c[a+72>>2]|0;h=a+60|0;i=+g[b+(d<<2)>>2]/+g[a+12+(d<<2)>>2]*+g[h>>2];g[h>>2]=i;h=a+56|0;j=+g[h>>2]*(+g[b+(e<<2)>>2]/+g[a+12+(e<<2)>>2]+ +g[b+(f<<2)>>2]/+g[a+12+(f<<2)>>2])*.5;g[h>>2]=j;g[a+52>>2]=j/+Q(+(i*i+j*j));j=+P(+(+g[b>>2]));i=+P(+(+g[b+4>>2]));k=+P(+(+g[b+8>>2]));g[a+12>>2]=j;g[a+16>>2]=i;g[a+20>>2]=k;g[a+24>>2]=0.0;return}function auZ(a){a=a|0;return 17840|0}function au_(a){a=a|0;return}function au$(a){a=a|0;return}function au0(a){a=a|0;return}function au1(a){a=a|0;return}function au2(a,b,c){a=a|0;b=b|0;c=c|0;return}function au3(a,b,c){a=a|0;b=b|0;c=c|0;return}function au4(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-76+72>>2]|0);return}function au5(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a,b,d,e);return}function au6(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0;e=i;i=i+96|0;f=e|0;h=e+64|0;j=e+80|0;g[f>>2]=1.0;aDD(f+4|0,0,16);g[f+20>>2]=1.0;aDD(f+24|0,0,16);g[f+40>>2]=1.0;aDD(f+44|0,0,20);k=a|0;dI[c[(c[a>>2]|0)+8>>2]&1023](k,f,h,j);l=(+g[j>>2]- +g[h>>2])*.5;m=(+g[j+4>>2]- +g[h+4>>2])*.5;n=(+g[j+8>>2]- +g[h+8>>2])*.5;o=+dh[c[(c[a>>2]|0)+44>>2]&1023](k);p=(l+o)*2.0;l=(m+o)*2.0;m=(n+o)*2.0;o=p*p;p=l*l;l=m*m;m=b*.0833333283662796;g[d>>2]=m*(p+l);g[d+4>>2]=m*(o+l);g[d+8>>2]=m*(o+p);g[d+12>>2]=0.0;i=e;return}function au7(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-76+72>>2]|0);return}function au8(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-76+72>>2]|0);return}function au9(d,e,f,h){d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0,Y=0.0,Z=0,_=0.0,$=0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0,aj=0,ak=0,al=0;j=i;i=i+280|0;k=j|0;l=j+80|0;m=j+216|0;n=j+232|0;o=j+248|0;p=j+264|0;q=d+16|0;if((c[q>>2]|0)==0){r=c[d+12>>2]|0;s=c[d+20>>2]|0;t=+g[e>>2];u=+g[e+4>>2];v=+g[e+8>>2];w=+g[e+16>>2];x=+g[e+20>>2];y=+g[e+24>>2];z=+g[e+32>>2];A=+g[e+36>>2];B=+g[e+40>>2];C=+g[e+48>>2];D=+g[e+52>>2];E=+g[e+56>>2];F=f|0;G=f+16|0;H=f+32|0;I=f+4|0;J=f+20|0;K=f+36|0;L=f+8|0;M=f+24|0;N=f+40|0;O=+g[F>>2];P=+g[G>>2];Q=+g[H>>2];R=+g[I>>2];S=+g[J>>2];T=+g[K>>2];U=+g[L>>2];V=+g[M>>2];W=+g[N>>2];X=f+48|0;Y=-0.0- +g[X>>2];Z=f+52|0;_=-0.0- +g[Z>>2];$=f+56|0;aa=-0.0- +g[$>>2];ab=t*O+w*P+z*Q;ac=u*O+x*P+A*Q;ad=v*O+y*P+B*Q;ae=t*R+w*S+z*T;af=u*R+x*S+A*T;ag=v*R+y*S+B*T;ah=t*U+w*V+z*W;z=u*U+x*V+A*W;A=v*U+y*V+B*W;ai=c[(c[r>>2]|0)+60>>2]|0;aj=s+48|0;B=-0.0- +g[aj>>2];ak=s+52|0;y=-0.0- +g[ak>>2];al=s+56|0;v=-0.0- +g[al>>2];g[n>>2]=ab*B+ae*y+ah*v;g[n+4>>2]=ac*B+af*y+z*v;g[n+8>>2]=ad*B+ag*y+A*v;g[n+12>>2]=0.0;dA[ai&511](m,r,n);v=+g[m>>2];y=+g[m+4>>2];B=+g[m+8>>2];x=C*O+D*P+E*Q+(O*Y+P*_+Q*aa)+(ab*v+ac*y+ad*B);ad=C*R+D*S+E*T+(R*Y+S*_+T*aa)+(ae*v+af*y+ag*B);ag=C*U+D*V+E*W+(U*Y+V*_+W*aa)+(ah*v+z*y+A*B);B=+g[aj>>2];A=+g[ak>>2];y=+g[al>>2];z=y*ag+(B*x+A*ad)- +g[s+64>>2];v=x-B*z;B=ad-A*z;A=ag-y*z;y=+g[F>>2];ag=+g[I>>2];ad=+g[L>>2];x=+g[G>>2];ah=+g[J>>2];aa=+g[M>>2];W=+g[Z>>2]+(v*x+B*ah+A*aa);_=+g[H>>2];V=+g[K>>2];Y=+g[N>>2];U=+g[$>>2]+(v*_+B*V+A*Y);g[o>>2]=+g[X>>2]+(ad*A+(y*v+ag*B));g[o+4>>2]=W;g[o+8>>2]=U;g[o+12>>2]=0.0;U=+g[aj>>2];W=+g[ak>>2];B=+g[al>>2];g[p>>2]=y*U+ag*W+ad*B;g[p+4>>2]=U*x+W*ah+B*aa;g[p+8>>2]=U*_+W*V+B*Y;g[p+12>>2]=0.0;dw[c[(c[h>>2]|0)+16>>2]&127](h,p,o,z);i=j;return}else{o=d+4|0;p=c[o>>2]|0;a[p+312|0]=0;c[p>>2]=0;a[p+356|0]=1;g[p+292>>2]=999999984306749400.0;g[p+296>>2]=999999984306749400.0;g[p+300>>2]=999999984306749400.0;g[p+304>>2]=0.0;al=p+332|0;aDD(p+336|0,0,17);b[al>>1]=b[al>>1]&-16;al=c[d+12>>2]|0;p=c[q>>2]|0;ak=c[al+4>>2]|0;aj=c[p+4>>2]|0;z=+dh[c[(c[al>>2]|0)+44>>2]&1023](al);X=c[q>>2]|0;Y=+dh[c[(c[X>>2]|0)+44>>2]&1023](X);X=c[o>>2]|0;o=c[d+8>>2]|0;c[k>>2]=23568;g[k+4>>2]=0.0;g[k+8>>2]=1.0;g[k+12>>2]=0.0;g[k+16>>2]=0.0;c[k+20>>2]=o;c[k+24>>2]=X;c[k+28>>2]=al;c[k+32>>2]=p;c[k+36>>2]=ak;c[k+40>>2]=aj;g[k+44>>2]=z;g[k+48>>2]=Y;a[k+52|0]=0;c[k+60>>2]=-1;c[k+72>>2]=1;g[l+128>>2]=999999984306749400.0;c[l+132>>2]=0;aj=l;ak=e;c[aj>>2]=c[ak>>2];c[aj+4>>2]=c[ak+4>>2];c[aj+8>>2]=c[ak+8>>2];c[aj+12>>2]=c[ak+12>>2];ak=l+16|0;aj=e+16|0;c[ak>>2]=c[aj>>2];c[ak+4>>2]=c[aj+4>>2];c[ak+8>>2]=c[aj+8>>2];c[ak+12>>2]=c[aj+12>>2];aj=l+32|0;ak=e+32|0;c[aj>>2]=c[ak>>2];c[aj+4>>2]=c[ak+4>>2];c[aj+8>>2]=c[ak+8>>2];c[aj+12>>2]=c[ak+12>>2];ak=l+48|0;aj=e+48|0;c[ak>>2]=c[aj>>2];c[ak+4>>2]=c[aj+4>>2];c[ak+8>>2]=c[aj+8>>2];c[ak+12>>2]=c[aj+12>>2];aj=l+64|0;ak=f;c[aj>>2]=c[ak>>2];c[aj+4>>2]=c[ak+4>>2];c[aj+8>>2]=c[ak+8>>2];c[aj+12>>2]=c[ak+12>>2];ak=l+80|0;aj=f+16|0;c[ak>>2]=c[aj>>2];c[ak+4>>2]=c[aj+4>>2];c[ak+8>>2]=c[aj+8>>2];c[ak+12>>2]=c[aj+12>>2];aj=l+96|0;ak=f+32|0;c[aj>>2]=c[ak>>2];c[aj+4>>2]=c[ak+4>>2];c[aj+8>>2]=c[ak+8>>2];c[aj+12>>2]=c[ak+12>>2];ak=l+112|0;aj=f+48|0;c[ak>>2]=c[aj>>2];c[ak+4>>2]=c[aj+4>>2];c[ak+8>>2]=c[aj+8>>2];c[ak+12>>2]=c[aj+12>>2];axX(k,l,h|0,0,0);i=j;return}}function ava(b,d,e,f,h,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0.0,ae=0,af=0,ag=0.0,ah=0.0,ai=0;k=i;i=i+352|0;l=k|0;m=k+16|0;n=k+24|0;o=k+40|0;p=k+48|0;q=k+64|0;r=k+80|0;s=k+96|0;t=k+144|0;u=k+160|0;v=k+224|0;w=k+288|0;x=k+304|0;y=+g[e+48>>2]- +g[d+48>>2];z=+g[e+52>>2]- +g[d+52>>2];A=+g[e+56>>2]- +g[d+56>>2];an6(d,e,n,o);B=+g[o>>2];C=+g[n>>2]*B;D=B*+g[n+4>>2];E=B*+g[n+8>>2];g[p>>2]=C;g[p+4>>2]=D;g[p+8>>2]=E;g[p+12>>2]=0.0;B=+g[h+48>>2]- +g[f+48>>2];F=+g[h+52>>2]- +g[f+52>>2];G=+g[h+56>>2]- +g[f+56>>2];an6(f,h,l,m);H=+g[m>>2];I=+g[l>>2]*H;J=H*+g[l+4>>2];K=H*+g[l+8>>2];g[q>>2]=I;g[q+4>>2]=J;g[q+8>>2]=K;g[q+12>>2]=0.0;l=c[b+12>>2]|0;H=+dh[c[(c[l>>2]|0)+16>>2]&1023](l|0);l=c[b+16>>2]|0;if((l|0)==0){L=0.0}else{L=+dh[c[(c[l>>2]|0)+16>>2]&1023](l|0)}M=H*+Q(+(C*C+D*D+E*E));E=M+L*+Q(+(I*I+J*J+K*K));K=B-y;J=F-z;I=G-A;if(E+ +Q(+(K*K+J*J+I*I))==0.0){N=0;i=k;return N|0}c[s>>2]=23960;l=s+36|0;g[l>>2]=999999984306749400.0;m=s+40|0;a[m]=0;au9(b,d,f,s);h=(a[m]&1)==0;m=r;n=s+20|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];if(h){N=0;i=k;return N|0}h=j+172|0;L=+g[s+4>>2];M=+g[s+8>>2];D=+g[s+12>>2];if(E+(K*L+J*M+I*D)<=1.1920928955078125e-7){N=0;i=k;return N|0}n=j+168|0;o=j;e=x|0;O=x+36|0;P=x+40|0;R=x+20|0;S=x+4|0;T=x+8|0;U=x+12|0;V=x+16|0;W=u+48|0;X=w|0;Y=w+4|0;Z=w+8|0;_=w+12|0;$=t|0;aa=t+4|0;ab=t+8|0;ac=t+12|0;C=+g[l>>2]+ +g[h>>2];l=0;H=0.0;ad=L;L=M;M=D;D=+g[s+16>>2];while(1){if(C<=.0010000000474974513){ae=2020;break}s=c[n>>2]|0;if((s|0)!=0){af=c[(c[s>>2]|0)+20>>2]|0;g[$>>2]=1.0;g[aa>>2]=1.0;g[ab>>2]=1.0;g[ac>>2]=0.0;cE[af&127](s,r,.20000000298023224,t)}ag=E+(I*M+(J*L+K*ad));if(ag<=1.1920928955078125e-7){N=0;ae=2024;break}ah=H+C/ag;if(!(ah>=0.0&ah<=1.0&ah>H)){N=0;ae=2030;break}anY(d,y,z,A,p,ah,u);anY(f,B,F,G,q,ah,v);s=c[n>>2]|0;if((s|0)!=0){af=c[(c[s>>2]|0)+20>>2]|0;g[X>>2]=1.0;g[Y>>2]=0.0;g[Z>>2]=0.0;g[_>>2]=0.0;cE[af&127](s,W,.20000000298023224,w)}cq[c[c[o>>2]>>2]&1023](j,ah);c[e>>2]=23960;g[O>>2]=999999984306749400.0;a[P]=0;au9(b,u,v,x);if((a[P]&1)==0){ae=2018;break}ag=+g[O>>2]+ +g[h>>2];c[m>>2]=c[R>>2];c[m+4>>2]=c[R+4>>2];c[m+8>>2]=c[R+8>>2];c[m+12>>2]=c[R+12>>2];ai=l+1|0;if((ai|0)>64){ae=2019;break}else{C=ag;l=ai;H=ah;ad=+g[S>>2];L=+g[T>>2];M=+g[U>>2];D=+g[V>>2]}}if((ae|0)==2024){i=k;return N|0}else if((ae|0)==2030){i=k;return N|0}else if((ae|0)==2019){dA[c[(c[j>>2]|0)+8>>2]&511](j,-2,ai);N=0;i=k;return N|0}else if((ae|0)==2020){g[j+164>>2]=H;g[j+132>>2]=ad;g[j+136>>2]=L;g[j+140>>2]=M;g[j+144>>2]=D;ai=j+148|0;c[ai>>2]=c[m>>2];c[ai+4>>2]=c[m+4>>2];c[ai+8>>2]=c[m+8>>2];c[ai+12>>2]=c[m+12>>2];N=1;i=k;return N|0}else if((ae|0)==2018){dA[c[(c[j>>2]|0)+8>>2]&511](j,-1,l);N=0;i=k;return N|0}return 0}function avb(a){a=a|0;if((a|0)==0){return}aDB(a);return}function avc(a){a=a|0;if((a|0)==0){return}aDB(a);return}function avd(a){a=a|0;return 0}function ave(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function avf(a,b,c){a=a|0;b=b|0;c=+c;return 0}function avg(a){a=a|0;return 17288|0}function avh(a){a=a|0;return 68}function avi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0;f=(e|0)>0;if(f){h=0;do{g[d+(h<<4)+12>>2]=-999999984306749400.0;h=h+1|0;}while((h|0)<(e|0))}h=a+96|0;i=c[h>>2]|0;if((i|0)<=0){return}j=a+104|0;k=a+12|0;l=a+16|0;m=a+20|0;if(f){n=0}else{f=0;do{f=f+1|0;}while((f|0)<(i|0));return}do{i=c[j>>2]|0;o=+g[i+(n<<4)>>2]*+g[k>>2];p=+g[i+(n<<4)+4>>2]*+g[l>>2];q=+g[i+(n<<4)+8>>2]*+g[m>>2];i=0;do{r=o*+g[b+(i<<4)>>2]+p*+g[b+(i<<4)+4>>2]+q*+g[b+(i<<4)+8>>2];f=d+(i<<4)+12|0;if(r>+g[f>>2]){g[d+(i<<4)>>2]=o;g[d+(i<<4)+4>>2]=p;g[d+(i<<4)+8>>2]=q;g[f>>2]=r}i=i+1|0;}while((i|0)<(e|0));n=n+1|0;}while((n|0)<(c[h>>2]|0));return}function avj(a){a=a|0;return c[a+96>>2]|0}function avk(a){a=a|0;return c[a+96>>2]|0}function avl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0.0,m=0,n=0.0;f=c[a+96>>2]|0;h=(b|0)%(f|0)|0;i=(b+1|0)%(f|0)|0;f=a+104|0;b=c[f>>2]|0;j=a+12|0;k=a+16|0;l=+g[b+(h<<4)+4>>2]*+g[k>>2];m=a+20|0;n=+g[b+(h<<4)+8>>2]*+g[m>>2];g[d>>2]=+g[b+(h<<4)>>2]*+g[j>>2];g[d+4>>2]=l;g[d+8>>2]=n;g[d+12>>2]=0.0;d=c[f>>2]|0;n=+g[d+(i<<4)+4>>2]*+g[k>>2];l=+g[d+(i<<4)+8>>2]*+g[m>>2];g[e>>2]=+g[d+(i<<4)>>2]*+g[j>>2];g[e+4>>2]=n;g[e+8>>2]=l;g[e+12>>2]=0.0;return}function avm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,h=0.0;e=c[a+104>>2]|0;f=+g[e+(b<<4)+4>>2]*+g[a+16>>2];h=+g[e+(b<<4)+8>>2]*+g[a+20>>2];g[d>>2]=+g[e+(b<<4)>>2]*+g[a+12>>2];g[d+4>>2]=f;g[d+8>>2]=h;g[d+12>>2]=0.0;return}function avn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0;h=b+36|0;if(+g[h>>2]<=f){return}a[b+40|0]=1;i=b+4|0;j=d;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];j=b+20|0;b=e;c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];g[h>>2]=f;return}function avo(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0;h=i;i=i+16|0;j=h|0;k=b|0;c[b+8>>2]=0;g[b+12>>2]=1.0;g[b+16>>2]=1.0;g[b+20>>2]=1.0;g[b+24>>2]=0.0;g[b+44>>2]=.03999999910593033;c[b+52>>2]=0;g[b+56>>2]=1.0;g[b+60>>2]=1.0;g[b+64>>2]=1.0;g[b+68>>2]=0.0;g[b+72>>2]=-1.0;g[b+76>>2]=-1.0;g[b+80>>2]=-1.0;g[b+84>>2]=0.0;a[b+88|0]=0;c[b>>2]=23600;l=b+108|0;a[l]=1;m=b+104|0;c[m>>2]=0;n=b+96|0;c[n>>2]=0;o=b+100|0;c[o>>2]=0;c[b+4>>2]=4;L2460:do{if((e|0)>0){c[9806]=(c[9806]|0)+1;b=aDx((e<<4|4)+15|0)|0;if((b|0)==0){p=0}else{q=-(b+4|0)&15;c[b+q>>2]=b;p=b+(q+4)|0}q=c[n>>2]|0;if((q|0)>0){b=0;do{r=p+(b<<4)|0;if((r|0)!=0){s=r;r=(c[m>>2]|0)+(b<<4)|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2]}b=b+1|0;}while((b|0)<(q|0))}q=c[m>>2]|0;if((q|0)!=0){if((a[l]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[q-16+12>>2]|0)}c[m>>2]=0}a[l]=1;c[m>>2]=p;c[o>>2]=e;q=j;b=0;r=p;while(1){s=r+(b<<4)|0;if((s|0)!=0){t=s;c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2]}t=b+1|0;if((t|0)>=(e|0)){break}b=t;r=c[m>>2]|0}c[n>>2]=e;r=d;b=0;while(1){q=c[m>>2]|0;u=+g[r+4>>2];v=+g[r+8>>2];g[q+(b<<4)>>2]=+g[r>>2];g[q+(b<<4)+4>>2]=u;g[q+(b<<4)+8>>2]=v;g[q+(b<<4)+12>>2]=0.0;q=b+1|0;if((q|0)>=(e|0)){break L2460}r=r+f|0;b=q}}else{c[n>>2]=e}}while(0);aze(k);i=h;return}function avp(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+12|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];aze(a|0);return}function avq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0;e=a|0;f=a+4|0;h=a+8|0;i=a+12|0;aDD(a|0,0,16);a=c[b+96>>2]|0;if((a|0)<=0){return}j=c[b+104>>2]|0;k=+g[b+12>>2];l=+g[b+16>>2];m=+g[b+20>>2];n=+g[d>>2];o=+g[d+4>>2];p=+g[d+8>>2];q=-999999984306749400.0;d=0;while(1){r=+g[j+(d<<4)>>2]*k;s=+g[j+(d<<4)+4>>2]*l;t=+g[j+(d<<4)+8>>2]*m;u=r*n+s*o+t*p;if(u>q){g[e>>2]=r;g[f>>2]=s;g[h>>2]=t;g[i>>2]=0.0;v=u}else{v=q}b=d+1|0;if((b|0)<(a|0)){q=v;d=b}else{break}}return}function avr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;dA[c[(c[b>>2]|0)+64>>2]&511](a,b,d);e=b|0;f=b;if(+dh[c[(c[f>>2]|0)+44>>2]&1023](e)==0.0){return}h=+g[d>>2];i=+g[d+4>>2];j=+g[d+8>>2];d=h*h+i*i+j*j<1.4210854715202004e-14;k=d?-1.0:j;j=d?-1.0:i;i=d?-1.0:h;h=1.0/+Q(+(k*k+(i*i+j*j)));l=+dh[c[(c[f>>2]|0)+44>>2]&1023](e);e=a|0;g[e>>2]=h*i*l+ +g[e>>2];e=a+4|0;g[e>>2]=l*h*j+ +g[e>>2];e=a+8|0;g[e>>2]=l*h*k+ +g[e>>2];return}function avs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0;e=d;f=dj[c[(c[e>>2]|0)+40>>2]&511](d,a)|0;h=dj[c[(c[e>>2]|0)+28>>2]&511](d,f)|0;c[b>>2]=h;if((h|0)!=0){cv[c[(c[d>>2]|0)+48>>2]&2047](d,f)}c[b+4>>2]=c[a+4>>2];g[b+28>>2]=+g[a+28>>2];g[b+32>>2]=+g[a+32>>2];g[b+36>>2]=+g[a+36>>2];g[b+40>>2]=+g[a+40>>2];g[b+12>>2]=+g[a+12>>2];g[b+16>>2]=+g[a+16>>2];g[b+20>>2]=+g[a+20>>2];g[b+24>>2]=+g[a+24>>2];g[b+44>>2]=+g[a+44>>2];f=c[a+96>>2]|0;c[b+60>>2]=f;if((f|0)==0){c[b+52>>2]=0;c[b+56>>2]=0;return 17784}h=a+104|0;c[b+52>>2]=dj[c[(c[e>>2]|0)+28>>2]&511](d,c[h>>2]|0)|0;c[b+56>>2]=0;b=cS[c[(c[d>>2]|0)+16>>2]&511](d,16,f)|0;if((f|0)>0){e=c[b+8>>2]|0;a=0;while(1){i=c[h>>2]|0;g[e>>2]=+g[i+(a<<4)>>2];g[e+4>>2]=+g[i+(a<<4)+4>>2];g[e+8>>2]=+g[i+(a<<4)+8>>2];g[e+12>>2]=+g[i+(a<<4)+12>>2];i=a+1|0;if((i|0)<(f|0)){e=e+16|0;a=i}else{break}}}co[c[(c[d>>2]|0)+20>>2]&255](d,b,16904,1497453121,c[h>>2]|0);return 17784}function avt(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=b|0;c[d>>2]=23600;e=b+96|0;f=b+104|0;g=c[f>>2]|0;h=b+108|0;if((g|0)!=0){if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-16+12>>2]|0)}c[f>>2]=0}a[h]=1;c[f>>2]=0;c[e>>2]=0;c[b+100>>2]=0;c[d>>2]=21200;d=c[b+52>>2]|0;if((d|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[d-80+76>>2]|0);return}function avu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=b|0;c[d>>2]=23600;e=b+96|0;f=b+104|0;g=c[f>>2]|0;h=b+108|0;if((g|0)!=0){if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-16+12>>2]|0)}c[f>>2]=0}a[h]=1;c[f>>2]=0;c[e>>2]=0;c[b+100>>2]=0;c[d>>2]=21200;d=c[b+52>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-80+76>>2]|0)}if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-112+108>>2]|0);return}function avv(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0;c=+P(+(+g[b>>2]));d=+P(+(+g[b+4>>2]));e=+P(+(+g[b+8>>2]));g[a+12>>2]=c;g[a+16>>2]=d;g[a+20>>2]=e;g[a+24>>2]=0.0;return}function avw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0;f=i;i=i+96|0;h=f|0;j=f+16|0;k=f+32|0;l=f+48|0;m=f+64|0;n=f+80|0;o=+dh[c[(c[a>>2]|0)+44>>2]&1023](a);p=h|0;q=h+4|0;r=h+8|0;s=a;t=b|0;u=b+16|0;v=b+32|0;w=b+4|0;x=b+20|0;y=b+36|0;z=b+8|0;A=b+24|0;B=b+40|0;C=k|0;D=k+4|0;E=k+8|0;F=k+12|0;G=j|0;H=j+4|0;I=j+8|0;J=b+48|0;K=b+52|0;L=b+56|0;b=l|0;M=l+4|0;N=l+8|0;O=l+12|0;P=n|0;Q=n+4|0;R=n+8|0;S=n+12|0;T=m|0;U=m+4|0;V=m+8|0;W=h;X=0;do{Y=h+(X<<2)|0;aDD(W|0,0,16);g[Y>>2]=1.0;Z=c[(c[s>>2]|0)+60>>2]|0;_=+g[p>>2];$=+g[q>>2];aa=+g[r>>2];ab=_*+g[w>>2]+$*+g[x>>2]+aa*+g[y>>2];ac=_*+g[z>>2]+$*+g[A>>2]+aa*+g[B>>2];g[C>>2]=+g[t>>2]*_+ +g[u>>2]*$+ +g[v>>2]*aa;g[D>>2]=ab;g[E>>2]=ac;g[F>>2]=0.0;dA[Z&511](j,a,k);ac=+g[G>>2];ab=+g[H>>2];aa=+g[I>>2];$=+g[K>>2]+(ac*+g[u>>2]+ab*+g[x>>2]+aa*+g[A>>2]);_=+g[L>>2]+(ac*+g[v>>2]+ab*+g[y>>2]+aa*+g[B>>2]);g[b>>2]=+g[J>>2]+(+g[t>>2]*ac+ +g[w>>2]*ab+ +g[z>>2]*aa);g[M>>2]=$;g[N>>2]=_;g[O>>2]=0.0;Z=l+(X<<2)|0;g[e+(X<<2)>>2]=o+ +g[Z>>2];g[Y>>2]=-1.0;Y=c[(c[s>>2]|0)+60>>2]|0;_=+g[p>>2];$=+g[q>>2];aa=+g[r>>2];ab=_*+g[w>>2]+$*+g[x>>2]+aa*+g[y>>2];ac=_*+g[z>>2]+$*+g[A>>2]+aa*+g[B>>2];g[P>>2]=+g[t>>2]*_+ +g[u>>2]*$+ +g[v>>2]*aa;g[Q>>2]=ab;g[R>>2]=ac;g[S>>2]=0.0;dA[Y&511](m,a,n);ac=+g[T>>2];ab=+g[U>>2];aa=+g[V>>2];$=+g[K>>2]+(ac*+g[u>>2]+ab*+g[x>>2]+aa*+g[A>>2]);_=+g[L>>2]+(ac*+g[v>>2]+ab*+g[y>>2]+aa*+g[B>>2]);g[b>>2]=+g[J>>2]+(+g[t>>2]*ac+ +g[w>>2]*ab+ +g[z>>2]*aa);g[M>>2]=$;g[N>>2]=_;g[O>>2]=0.0;g[d+(X<<2)>>2]=+g[Z>>2]-o;X=X+1|0;}while((X|0)<3);i=f;return}function avx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0;dA[c[(c[b>>2]|0)+64>>2]&511](a,b|0,d);e=b;if(+dh[c[(c[e>>2]|0)+44>>2]&1023](b)==0.0){return}f=+g[d>>2];h=+g[d+4>>2];i=+g[d+8>>2];d=f*f+h*h+i*i<1.4210854715202004e-14;j=d?-1.0:i;i=d?-1.0:h;h=d?-1.0:f;f=1.0/+Q(+(j*j+(h*h+i*i)));k=+dh[c[(c[e>>2]|0)+44>>2]&1023](b);b=a|0;g[b>>2]=f*h*k+ +g[b>>2];b=a+4|0;g[b>>2]=k*f*i+ +g[b>>2];b=a+8|0;g[b>>2]=k*f*j+ +g[b>>2];return}function avy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0;f=+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0);h=+g[a+68>>2];i=+g[a+52>>2];j=+g[a+72>>2];k=+g[a+56>>2];l=+g[a+76>>2];m=+g[a+60>>2];n=f+(h-i)*.5;o=f+(j-k)*.5;p=f+(l-m)*.5;f=(h+i)*.5;i=(j+k)*.5;k=(l+m)*.5;m=+g[b>>2];l=+P(+m);j=+g[b+4>>2];h=+P(+j);q=+g[b+8>>2];r=+P(+q);s=+g[b+16>>2];t=+P(+s);u=+g[b+20>>2];v=+P(+u);w=+g[b+24>>2];x=+P(+w);y=+g[b+32>>2];z=+P(+y);A=+g[b+36>>2];B=+P(+A);C=+g[b+40>>2];D=+P(+C);E=f*m+i*j+k*q+ +g[b+48>>2];q=f*s+i*u+k*w+ +g[b+52>>2];w=f*y+i*A+k*C+ +g[b+56>>2];C=n*l+o*h+p*r;r=n*t+o*v+p*x;x=n*z+o*B+p*D;g[d>>2]=E-C;g[d+4>>2]=q-r;g[d+8>>2]=w-x;g[d+12>>2]=0.0;g[e>>2]=C+E;g[e+4>>2]=r+q;g[e+8>>2]=x+w;g[e+12>>2]=0.0;return}function avz(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0;c=+P(+(+g[b>>2]));d=+P(+(+g[b+4>>2]));e=+P(+(+g[b+8>>2]));g[a+12>>2]=c;g[a+16>>2]=d;g[a+20>>2]=e;g[a+24>>2]=0.0;avA(a);return}function avA(b){b=b|0;var d=0,e=0,f=0.0;d=i;i=i+96|0;e=d|0;a[b+84|0]=1;do{if((a[43008]|0)==0){if((b1(43008)|0)==0){break}g[10356]=1.0;aDD(41428,0,16);g[10361]=1.0;aDD(41448,0,16);g[10366]=1.0;g[10367]=0.0;g[10368]=-1.0;aDD(41476,0,16);g[10373]=-1.0;aDD(41496,0,16);g[10378]=-1.0;g[10379]=0.0}}while(0);aDD(e|0,0,96);dI[c[(c[b>>2]|0)+68>>2]&1023](b|0,41424,e|0,6);f=+g[b+44>>2];g[b+68>>2]=+g[e>>2]+f;g[b+52>>2]=+g[e+48>>2]-f;g[b+72>>2]=+g[e+20>>2]+f;g[b+56>>2]=+g[e+68>>2]-f;g[b+76>>2]=+g[e+40>>2]+f;g[b+60>>2]=+g[e+88>>2]-f;i=d;return}function avB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0,N=0,O=0,P=0,R=0.0,S=0.0,T=0.0,U=0;e=i;i=i+80|0;f=e|0;h=e+16|0;j=e+32|0;k=e+48|0;l=e+64|0;switch(c[b+4>>2]|0){case 8:{aDD(a|0,0,16);i=e;return};case 0:{m=b+28|0;n=+g[m>>2];o=+g[m+4>>2];p=+g[d+4>>2]>=0.0?o:-0.0-o;o=+g[m+8>>2];q=+g[d+8>>2]>=0.0?o:-0.0-o;g[a>>2]=+g[d>>2]>=0.0?n:-0.0-n;g[a+4>>2]=p;g[a+8>>2]=q;g[a+12>>2]=0.0;i=e;return};case 4:{m=c[b+104>>2]|0;r=c[b+96>>2]|0;q=+g[b+12>>2];p=+g[b+16>>2];n=+g[b+20>>2];o=+g[d>>2]*q;s=+g[d+4>>2]*p;t=+g[d+8>>2]*n;if((r|0)>0){u=-999999984306749400.0;v=-1;w=0;while(1){x=o*+g[m+(w<<4)>>2]+s*+g[m+(w<<4)+4>>2]+t*+g[m+(w<<4)+8>>2];y=x>u;z=y?w:v;A=w+1|0;if((A|0)<(r|0)){u=y?x:u;v=z;w=A}else{B=z;break}}}else{B=-1}u=p*+g[m+(B<<4)+4>>2];p=n*+g[m+(B<<4)+8>>2];g[a>>2]=q*+g[m+(B<<4)>>2];g[a+4>>2]=u;g[a+8>>2]=p;g[a+12>>2]=0.0;i=e;return};case 10:{p=+g[d>>2];u=+g[d+4>>2];q=+g[d+8>>2];B=b;m=c[b+52>>2]|0;n=+g[B+28+(m<<2)>>2];t=+g[B+28+(((m+2|0)%3|0)<<2)>>2];s=p*p+u*u+q*q;if(s<9999999747378752.0e-20){C=1.0;D=0.0;E=0.0}else{o=1.0/+Q(+s);C=p*o;D=u*o;E=q*o}aDD(k|0,0,16);g[k+(m<<2)>>2]=n;o=t*C*+g[b+12>>2];q=t*D*+g[b+16>>2];u=t*E*+g[b+20>>2];t=+g[b+44>>2];p=C*t;s=D*t;x=E*t;t=o+ +g[k>>2]-p;F=q+ +g[k+4>>2]-s;G=u+ +g[k+8>>2]-x;H=E*G+(C*t+D*F);if(H>-999999984306749400.0){I=H;J=t;K=F;L=G}else{I=-999999984306749400.0;J=0.0;K=0.0;L=0.0}aDD(l|0,0,16);g[l+(m<<2)>>2]=-0.0-n;n=o+ +g[l>>2]-p;p=q+ +g[l+4>>2]-s;s=u+ +g[l+8>>2]-x;l=E*s+(C*n+D*p)>I;g[a>>2]=l?n:J;g[a+4>>2]=l?p:K;g[a+8>>2]=l?s:L;g[a+12>>2]=0.0;i=e;return};case 5:{l=c[b+92>>2]|0;m=c[b+96>>2]|0;L=+g[b+12>>2];s=+g[b+16>>2];K=+g[b+20>>2];p=+g[d>>2]*L;J=+g[d+4>>2]*s;n=+g[d+8>>2]*K;if((m|0)>0){I=-999999984306749400.0;k=-1;B=0;while(1){D=p*+g[l+(B<<4)>>2]+J*+g[l+(B<<4)+4>>2]+n*+g[l+(B<<4)+8>>2];w=D>I;v=w?B:k;r=B+1|0;if((r|0)<(m|0)){I=w?D:I;k=v;B=r}else{M=v;break}}}else{M=-1}I=s*+g[l+(M<<4)+4>>2];s=K*+g[l+(M<<4)+8>>2];g[a>>2]=L*+g[l+(M<<4)>>2];g[a+4>>2]=I;g[a+8>>2]=s;g[a+12>>2]=0.0;i=e;return};case 13:{M=f;l=b+28|0;c[M>>2]=c[l>>2];c[M+4>>2]=c[l+4>>2];c[M+8>>2]=c[l+8>>2];c[M+12>>2]=c[l+12>>2];g[h>>2]=+g[d>>2];s=+g[d+4>>2];g[h+4>>2]=s;I=+g[d+8>>2];g[h+8>>2]=I;g[h+12>>2]=0.0;l=c[b+52>>2]|0;if((l|0)==1){N=0;O=l;P=2;R=I}else if((l|0)==2){N=0;O=l;P=1;R=s}else{N=1;O=0;P=2;R=I}I=+g[f+(N<<2)>>2];s=+g[f+(l<<2)>>2];L=+g[h+(N<<2)>>2];K=+Q(+(L*L+R*R));if(K!=0.0){n=I/K;g[j+(N<<2)>>2]=L*n;if(+g[h+(O<<2)>>2]<0.0){S=-0.0-s}else{S=s}g[j+(O<<2)>>2]=S;g[j+(P<<2)>>2]=n*R;g[a>>2]=+g[j>>2];g[a+4>>2]=+g[j+4>>2];g[a+8>>2]=+g[j+8>>2];g[a+12>>2]=0.0;i=e;return}else{g[j+(N<<2)>>2]=I;if(+g[h+(O<<2)>>2]<0.0){T=-0.0-s}else{T=s}g[j+(O<<2)>>2]=T;g[j+(P<<2)>>2]=0.0;g[a>>2]=+g[j>>2];g[a+4>>2]=+g[j+4>>2];g[a+8>>2]=+g[j+8>>2];g[a+12>>2]=0.0;i=e;return}break};case 1:{T=+g[d>>2];s=+g[d+4>>2];I=+g[d+8>>2];j=b+56|0;P=j;R=T*+g[j>>2]+s*+g[j+4>>2]+I*+g[j+8>>2];n=T*+g[j+16>>2]+s*+g[j+20>>2]+I*+g[j+24>>2];S=T*+g[j+32>>2]+s*+g[j+36>>2]+I*+g[j+40>>2];if(R<n){U=n<S?2:1}else{U=R<S?2:0}S=+g[P+(U<<4)+4>>2];R=+g[P+(U<<4)+8>>2];g[a>>2]=+g[P+(U<<4)>>2];g[a+4>>2]=S;g[a+8>>2]=R;g[a+12>>2]=0.0;i=e;return};default:{dA[c[(c[b>>2]|0)+64>>2]&511](a,b,d);i=e;return}}}function avC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0;e=i;i=i+32|0;f=e|0;h=e+16|0;j=f;k=d;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];k=f|0;l=+g[k>>2];j=f+4|0;m=+g[j>>2];d=f+8|0;n=+g[d>>2];if(l*l+m*m+n*n<1.4210854715202004e-14){g[k>>2]=-1.0;g[j>>2]=-1.0;g[d>>2]=-1.0;g[f+12>>2]=0.0;o=-1.0;p=-1.0;q=-1.0}else{o=l;p=m;q=n}n=1.0/+Q(+(o*o+p*p+q*q));g[k>>2]=o*n;g[j>>2]=p*n;g[d>>2]=q*n;avB(h,b,f);switch(c[b+4>>2]|0){case 0:{r=+g[b+44>>2];break};case 13:{r=+g[b+44>>2];break};case 1:{r=+g[b+44>>2];break};case 5:case 4:{r=+g[b+44>>2];break};case 8:{r=+g[b+28>>2]*+g[b+12>>2];break};case 10:{r=+g[b+44>>2];break};default:{r=+dh[c[(c[b>>2]|0)+44>>2]&1023](b)}}n=r*+g[j>>2]+ +g[h+4>>2];q=r*+g[d>>2]+ +g[h+8>>2];g[a>>2]=r*+g[k>>2]+ +g[h>>2];g[a+4>>2]=n;g[a+8>>2]=q;g[a+12>>2]=0.0;i=e;return}function avD(a){a=a|0;return}function avE(a){a=a|0;return 0}function avF(a){a=a|0;return 0}function avG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function avH(a,b,c){a=a|0;b=b|0;c=c|0;return}function avI(a){a=a|0;return 0}function avJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function avK(a,b,c){a=a|0;b=b|0;c=+c;return 0}function avL(a){a=a|0;return 17768|0}function avM(a){a=a|0;return}function avN(a){a=a|0;return}function avO(a){a=a|0;return(c[a+92>>2]|0)+4|0}function avP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0,M=0,N=0,O=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0;f=i;i=i+112|0;h=f|0;j=f+16|0;k=f+32|0;l=f+48|0;m=f+64|0;n=f+80|0;o=f+96|0;p=c[a+4>>2]|0;switch(p|0){case 10:{q=a;r=c[a+52>>2]|0;s=+g[q+28+(((r+2|0)%3|0)<<2)>>2];t=o|0;g[t>>2]=s;u=o+4|0;g[u>>2]=s;v=o+8|0;g[v>>2]=s;g[o+12>>2]=0.0;g[o+(r<<2)>>2]=s+ +g[q+28+(r<<2)>>2];s=+g[a+44>>2];w=s+ +g[t>>2];g[t>>2]=w;x=s+ +g[u>>2];g[u>>2]=x;y=s+ +g[v>>2];g[v>>2]=y;s=+P(+(+g[b>>2]));z=+P(+(+g[b+4>>2]));A=+P(+(+g[b+8>>2]));B=+P(+(+g[b+16>>2]));C=+P(+(+g[b+20>>2]));D=+P(+(+g[b+24>>2]));E=+P(+(+g[b+32>>2]));F=+P(+(+g[b+36>>2]));G=+P(+(+g[b+40>>2]));H=+g[b+48>>2];I=+g[b+52>>2];J=+g[b+56>>2];K=y*A+(s*w+z*x);z=y*D+(B*w+C*x);C=y*G+(E*w+F*x);g[d>>2]=H-K;g[d+4>>2]=I-z;g[d+8>>2]=J-C;g[d+12>>2]=0.0;g[e>>2]=H+K;g[e+4>>2]=I+z;g[e+8>>2]=J+C;g[e+12>>2]=0.0;i=f;return};case 0:case 13:{C=+g[a+44>>2];J=C+ +g[a+28>>2];z=C+ +g[a+32>>2];I=C+ +g[a+36>>2];C=+P(+(+g[b>>2]));K=+P(+(+g[b+4>>2]));H=+P(+(+g[b+8>>2]));x=+P(+(+g[b+16>>2]));F=+P(+(+g[b+20>>2]));w=+P(+(+g[b+24>>2]));E=+P(+(+g[b+32>>2]));G=+P(+(+g[b+36>>2]));y=+P(+(+g[b+40>>2]));B=+g[b+48>>2];D=+g[b+52>>2];s=+g[b+56>>2];A=J*C+z*K+I*H;H=J*x+z*F+I*w;w=J*E+z*G+I*y;g[d>>2]=B-A;g[d+4>>2]=D-H;g[d+8>>2]=s-w;g[d+12>>2]=0.0;g[e>>2]=A+B;g[e+4>>2]=H+D;g[e+8>>2]=w+s;g[e+12>>2]=0.0;i=f;return};case 8:{s=+g[a+28>>2];w=s+s*+g[a+12>>2];v=b+48|0;u=b+52|0;s=+g[u>>2]-w;t=b+56|0;D=+g[t>>2]-w;g[d>>2]=+g[v>>2]-w;g[d+4>>2]=s;g[d+8>>2]=D;g[d+12>>2]=0.0;D=w+ +g[u>>2];s=w+ +g[t>>2];g[e>>2]=w+ +g[v>>2];g[e+4>>2]=D;g[e+8>>2]=s;g[e+12>>2]=0.0;i=f;return};case 1:{s=+g[a+44>>2];v=h|0;t=h+4|0;u=h+8|0;r=b|0;q=b+16|0;o=b+32|0;L=b+4|0;M=b+20|0;N=b+36|0;O=b+8|0;Q=b+24|0;R=b+40|0;S=k|0;T=k+4|0;U=k+8|0;V=k+12|0;W=j|0;X=j+4|0;Y=j+8|0;Z=b+48|0;_=b+52|0;$=b+56|0;aa=l|0;ab=l+4|0;ac=l+8|0;ad=l+12|0;ae=n|0;af=n+4|0;ag=n+8|0;ah=n+12|0;ai=m|0;aj=m+4|0;ak=m+8|0;al=h;am=0;do{an=h+(am<<2)|0;aDD(al|0,0,16);g[an>>2]=1.0;D=+g[v>>2];w=+g[t>>2];H=+g[u>>2];B=D*+g[L>>2]+w*+g[M>>2]+H*+g[N>>2];A=D*+g[O>>2]+w*+g[Q>>2]+H*+g[R>>2];g[S>>2]=+g[r>>2]*D+ +g[q>>2]*w+ +g[o>>2]*H;g[T>>2]=B;g[U>>2]=A;g[V>>2]=0.0;avB(j,a,k);A=+g[W>>2];B=+g[X>>2];H=+g[Y>>2];w=+g[_>>2]+(A*+g[q>>2]+B*+g[M>>2]+H*+g[Q>>2]);D=+g[$>>2]+(A*+g[o>>2]+B*+g[N>>2]+H*+g[R>>2]);g[aa>>2]=+g[Z>>2]+(+g[r>>2]*A+ +g[L>>2]*B+ +g[O>>2]*H);g[ab>>2]=w;g[ac>>2]=D;g[ad>>2]=0.0;ao=l+(am<<2)|0;g[e+(am<<2)>>2]=s+ +g[ao>>2];g[an>>2]=-1.0;D=+g[v>>2];w=+g[t>>2];H=+g[u>>2];B=D*+g[L>>2]+w*+g[M>>2]+H*+g[N>>2];A=D*+g[O>>2]+w*+g[Q>>2]+H*+g[R>>2];g[ae>>2]=+g[r>>2]*D+ +g[q>>2]*w+ +g[o>>2]*H;g[af>>2]=B;g[ag>>2]=A;g[ah>>2]=0.0;avB(m,a,n);A=+g[ai>>2];B=+g[aj>>2];H=+g[ak>>2];w=+g[_>>2]+(A*+g[q>>2]+B*+g[M>>2]+H*+g[Q>>2]);D=+g[$>>2]+(A*+g[o>>2]+B*+g[N>>2]+H*+g[R>>2]);g[aa>>2]=+g[Z>>2]+(+g[r>>2]*A+ +g[L>>2]*B+ +g[O>>2]*H);g[ab>>2]=w;g[ac>>2]=D;g[ad>>2]=0.0;g[d+(am<<2)>>2]=+g[ao>>2]-s;am=am+1|0;}while((am|0)<3);i=f;return};case 4:case 5:{if((p-4|0)>>>0<2){ap=+g[a+44>>2]}else{ap=+dh[c[(c[a>>2]|0)+44>>2]&1023](a)}s=+g[a+72>>2];D=+g[a+56>>2];w=+g[a+76>>2];H=+g[a+60>>2];B=+g[a+80>>2];A=+g[a+64>>2];y=ap+(s-D)*.5;I=ap+(w-H)*.5;G=ap+(B-A)*.5;ap=(s+D)*.5;D=(w+H)*.5;H=(B+A)*.5;A=+g[b>>2];B=+P(+A);w=+g[b+4>>2];s=+P(+w);z=+g[b+8>>2];E=+P(+z);J=+g[b+16>>2];F=+P(+J);x=+g[b+20>>2];K=+P(+x);C=+g[b+24>>2];aq=+P(+C);ar=+g[b+32>>2];as=+P(+ar);at=+g[b+36>>2];au=+P(+at);av=+g[b+40>>2];aw=+P(+av);ax=ap*A+D*w+H*z+ +g[b+48>>2];z=ap*J+D*x+H*C+ +g[b+52>>2];C=ap*ar+D*at+H*av+ +g[b+56>>2];av=y*B+I*s+G*E;E=y*F+I*K+G*aq;aq=y*as+I*au+G*aw;g[d>>2]=ax-av;g[d+4>>2]=z-E;g[d+8>>2]=C-aq;g[d+12>>2]=0.0;g[e>>2]=av+ax;g[e+4>>2]=E+z;g[e+8>>2]=aq+C;g[e+12>>2]=0.0;i=f;return};default:{dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);i=f;return}}}function avQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;e=i;i=i+72|0;f=e|0;h=e+40|0;j=e+56|0;k=a;aDD(k|0,0,16);l=+g[d>>2];m=+g[d+4>>2];n=+g[d+8>>2];o=l*l+m*m+n*n;if(o<9999999747378752.0e-20){p=1.0;q=0.0;r=0.0;s=0.0}else{t=+g[d+12>>2];u=1.0/+Q(+o);p=l*u;q=m*u;r=n*u;s=t}c[f>>2]=20488;aDD(f+4|0,0,16);g[f+20>>2]=-999999984306749400.0;g[f+24>>2]=p;g[f+28>>2]=q;g[f+32>>2]=r;g[f+36>>2]=s;g[h>>2]=999999984306749400.0;g[h+4>>2]=999999984306749400.0;g[h+8>>2]=999999984306749400.0;g[h+12>>2]=0.0;d=c[b+92>>2]|0;b=c[(c[d>>2]|0)+8>>2]|0;g[j>>2]=-999999984306749400.0;g[j+4>>2]=-999999984306749400.0;g[j+8>>2]=-999999984306749400.0;g[j+12>>2]=0.0;dI[b&1023](d,f|0,j,h);h=f+4|0;c[k>>2]=c[h>>2];c[k+4>>2]=c[h+4>>2];c[k+8>>2]=c[h+8>>2];c[k+12>>2]=c[h+12>>2];i=e;return}function avR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;f=i;i=i+72|0;h=f|0;j=f+40|0;k=f+56|0;if((e|0)>0){l=0}else{i=f;return}do{g[d+(l<<4)+12>>2]=-999999984306749400.0;l=l+1|0;}while((l|0)<(e|0));l=h|0;m=h+20|0;n=h+4|0;o=h+24|0;p=j|0;q=j+4|0;r=j+8|0;s=j+12|0;t=a+92|0;a=k|0;u=k+4|0;v=k+8|0;w=k+12|0;x=h|0;y=h+4|0;h=0;do{c[l>>2]=20488;aDD(n|0,0,16);g[m>>2]=-999999984306749400.0;z=b+(h<<4)|0;c[o>>2]=c[z>>2];c[o+4>>2]=c[z+4>>2];c[o+8>>2]=c[z+8>>2];c[o+12>>2]=c[z+12>>2];g[p>>2]=999999984306749400.0;g[q>>2]=999999984306749400.0;g[r>>2]=999999984306749400.0;g[s>>2]=0.0;z=c[t>>2]|0;A=c[(c[z>>2]|0)+8>>2]|0;g[a>>2]=-999999984306749400.0;g[u>>2]=-999999984306749400.0;g[v>>2]=-999999984306749400.0;g[w>>2]=0.0;dI[A&1023](z,x,k,j);z=d+(h<<4)|0;c[z>>2]=c[y>>2];c[z+4>>2]=c[y+4>>2];c[z+8>>2]=c[y+8>>2];c[z+12>>2]=c[y+12>>2];h=h+1|0;}while((h|0)<(e|0));i=f;return}function avS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;dA[c[(c[b>>2]|0)+64>>2]&511](a,b,d);e=b|0;f=b;if(+dh[c[(c[f>>2]|0)+44>>2]&1023](e)==0.0){return}h=+g[d>>2];i=+g[d+4>>2];j=+g[d+8>>2];d=h*h+i*i+j*j<1.4210854715202004e-14;k=d?-1.0:j;j=d?-1.0:i;i=d?-1.0:h;h=1.0/+Q(+(k*k+(i*i+j*j)));l=+dh[c[(c[f>>2]|0)+44>>2]&1023](e);e=a|0;g[e>>2]=h*i*l+ +g[e>>2];e=a+4|0;g[e>>2]=l*h*j+ +g[e>>2];e=a+8|0;g[e>>2]=l*h*k+ +g[e>>2];return}function avT(a,b){a=a|0;b=b|0;var d=0,e=0;d=(c[a+92>>2]|0)+4|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];aze(a|0);return}function avU(a){a=a|0;var b=0;c[a>>2]=21200;b=c[a+52>>2]|0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-80+76>>2]|0);return}function avV(a){a=a|0;var b=0;c[a>>2]=21200;b=c[a+52>>2]|0;if((b|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[b-80+76>>2]|0)}c[9804]=(c[9804]|0)+1;aDB(c[a-96+92>>2]|0);return}function avW(a){a=a|0;if((a|0)==0){return}aDB(a);return}function avX(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0.0,y=0,z=0,A=0.0,B=0.0,C=0.0;d=i;i=i+96|0;c=d|0;e=d+48|0;f=d+64|0;h=d+80|0;j=+g[a+52>>2];k=+g[b>>2]-j;l=+g[a+56>>2];m=+g[b+4>>2]-l;n=+g[a+60>>2];o=+g[b+8>>2]-n;g[e>>2]=k;g[e+4>>2]=m;g[e+8>>2]=o;g[e+12>>2]=0.0;p=+g[b+16>>2]-j;q=+g[b+20>>2]-l;r=+g[b+24>>2]-n;g[f>>2]=p;g[f+4>>2]=q;g[f+8>>2]=r;g[f+12>>2]=0.0;s=+g[b+32>>2]-j;j=+g[b+36>>2]-l;l=+g[b+40>>2]-n;g[h>>2]=s;g[h+4>>2]=j;g[h+8>>2]=l;g[h+12>>2]=0.0;n=+P(+(o*(j*p-q*s)+(k*(q*l-r*j)+m*(r*s-l*p))))*-.1666666716337204;t=k*p;u=k*s;v=p*s;b=c|0;g[b>>2]=n*((k*k+p*p+s*s)*.10000000149011612+(v+(v+(u+(t+t+u))))*.05000000074505806);w=0;u=k;t=p;v=s;while(1){x=n*((m*u+q*t+j*v)*.10000000149011612+(t*j+(q*v+(u*j+(u*q+m*t+m*v))))*.05000000074505806);g[c+(w<<4)+4>>2]=x;g[c+16+(w<<2)>>2]=x;y=w+1|0;if((w|0)>0){z=0;A=k;B=p;C=s;break}w=y;u=+g[e+(y<<2)>>2];t=+g[f+(y<<2)>>2];v=+g[h+(y<<2)>>2]}while(1){v=n*((o*A+r*B+l*C)*.10000000149011612+(B*l+(r*C+(A*l+(A*r+o*B+o*C))))*.05000000074505806);g[c+(z<<4)+8>>2]=v;g[c+32+(z<<2)>>2]=v;w=z+1|0;if((w|0)>2){break}z=w;A=+g[e+(w<<2)>>2];B=+g[f+(w<<2)>>2];C=+g[h+(w<<2)>>2]}C=+g[b>>2];h=c+20|0;B=+g[h>>2];f=c+40|0;A=+g[f>>2];o=-0.0-A-B;g[b>>2]=o;r=-0.0-C-A;g[h>>2]=r;A=-0.0-B-C;g[f>>2]=A;f=a+4|0;g[f>>2]=o+ +g[f>>2];f=a+8|0;g[f>>2]=+g[c+4>>2]+ +g[f>>2];f=a+12|0;g[f>>2]=+g[c+8>>2]+ +g[f>>2];f=a+20|0;g[f>>2]=+g[c+16>>2]+ +g[f>>2];f=a+24|0;g[f>>2]=r+ +g[f>>2];f=a+28|0;g[f>>2]=+g[c+24>>2]+ +g[f>>2];f=a+36|0;g[f>>2]=+g[c+32>>2]+ +g[f>>2];f=a+40|0;g[f>>2]=+g[c+36>>2]+ +g[f>>2];f=a+44|0;g[f>>2]=A+ +g[f>>2];i=d;return}function avY(a){a=a|0;if((a|0)==0){return}aDB(a);return}function avZ(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0;f=b+4|0;e=b+8|0;if((a[f]&1)==0){h=+g[d>>2];i=+g[e>>2];j=+g[d+4>>2];k=+g[b+12>>2];l=+g[d+8>>2];m=+g[b+16>>2];n=+g[d+16>>2];o=n-i;p=+g[d+20>>2];q=p-k;r=+g[d+24>>2];s=r-m;t=+g[d+32>>2];u=t-i;v=+g[d+36>>2];w=v-k;x=+g[d+40>>2];y=x-m;z=+P(+((l-m)*(o*w-q*u)+((h-i)*(q*y-s*w)+(j-k)*(s*u-o*y))));y=z*.25;A=b+24|0;g[A>>2]=+g[A>>2]+(i+(h+n+t))*y;A=b+28|0;g[A>>2]=(k+(j+p+v))*y+ +g[A>>2];A=b+32|0;g[A>>2]=y*(m+(l+r+x))+ +g[A>>2];A=b+40|0;g[A>>2]=z+ +g[A>>2];return}else{A=e;e=d;c[A>>2]=c[e>>2];c[A+4>>2]=c[e+4>>2];c[A+8>>2]=c[e+8>>2];c[A+12>>2]=c[e+12>>2];a[f]=0;return}}function av_(a){a=a|0;if((a|0)==0){return}aDB(a);return}function av$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0;e=a+20|0;d=a+4|0;f=+g[a+24>>2];h=+g[a+28>>2];i=+g[a+32>>2];j=f*+g[b>>2]+h*+g[b+4>>2]+i*+g[b+8>>2];k=+g[e>>2];if(j>k){g[e>>2]=j;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];l=j}else{l=k}a=b+16|0;k=f*+g[a>>2]+h*+g[b+20>>2]+i*+g[b+24>>2];if(k>l){g[e>>2]=k;m=a;c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];n=k}else{n=l}m=b+32|0;l=f*+g[m>>2]+h*+g[b+36>>2]+i*+g[b+40>>2];if(l<=n){return}g[e>>2]=l;e=m;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return}function av0(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0;f=+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0);h=f+ +g[a+28>>2];i=f+ +g[a+32>>2];j=f+ +g[a+36>>2];f=+P(+(+g[b>>2]));k=+P(+(+g[b+4>>2]));l=+P(+(+g[b+8>>2]));m=+P(+(+g[b+16>>2]));n=+P(+(+g[b+20>>2]));o=+P(+(+g[b+24>>2]));p=+P(+(+g[b+32>>2]));q=+P(+(+g[b+36>>2]));r=+P(+(+g[b+40>>2]));s=+g[b+48>>2];t=+g[b+52>>2];u=+g[b+56>>2];v=h*f+i*k+j*l;l=h*m+i*n+j*o;o=h*p+i*q+j*r;g[d>>2]=s-v;g[d+4>>2]=t-l;g[d+8>>2]=u-o;g[d+12>>2]=0.0;g[e>>2]=v+s;g[e+4>>2]=l+t;g[e+8>>2]=o+u;g[e+12>>2]=0.0;return}function av1(a,b,d){a=a|0;b=+b;d=d|0;var e=0.0,f=0.0,h=0.0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0;e=+g[a+28>>2];f=+g[a+32>>2];h=+g[a+36>>2];i=a|0;j=a;k=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);l=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);m=k+e;e=l+f;f=+dh[c[(c[j>>2]|0)+44>>2]&1023](i)+h;h=b/12.0;l=b*.25;k=b*.5;i=c[a+52>>2]|0;if((i|0)==0){b=e*e;n=l*b+h*m*m*4.0;g[d>>2]=k*b;g[d+4>>2]=n;g[d+8>>2]=n;g[d+12>>2]=0.0;return}else if((i|0)==2){n=m*m;b=l*n+h*f*f*4.0;g[d>>2]=b;g[d+4>>2]=b;g[d+8>>2]=k*n;g[d+12>>2]=0.0;return}else{n=m*m;m=l*n+h*e*e*4.0;g[d>>2]=m;g[d+4>>2]=k*n;g[d+8>>2]=m;g[d+12>>2]=0.0;return}}function av2(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;d=+g[b+32>>2];e=+g[b+28>>2];b=c|0;f=+g[c+4>>2];h=+g[c+8>>2];i=+Q(+(f*f+h*h));if(i!=0.0){j=d/i;g[a+4>>2]=f*j;if(+g[b>>2]<0.0){k=-0.0-e}else{k=e}g[a>>2]=k;g[a+8>>2]=h*j;return}else{g[a+4>>2]=d;if(+g[b>>2]<0.0){l=-0.0-e}else{l=e}g[a>>2]=l;g[a+8>>2]=0.0;return}}function av3(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;d=+g[b+28>>2];e=+g[b+36>>2];f=+g[c>>2];h=+g[c+4>>2];i=+Q(+(f*f+h*h));if(i!=0.0){j=d/i;g[a>>2]=f*j;if(+g[c+8>>2]<0.0){k=-0.0-e}else{k=e}g[a+8>>2]=k;g[a+4>>2]=h*j;return}else{g[a>>2]=d;if(+g[c+8>>2]<0.0){l=-0.0-e}else{l=e}g[a+8>>2]=l;g[a+4>>2]=0.0;return}}function av4(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;d=+g[b+28>>2];e=+g[b+32>>2];f=+g[c>>2];h=+g[c+8>>2];i=+Q(+(f*f+h*h));if(i!=0.0){j=d/i;g[a>>2]=f*j;if(+g[c+4>>2]<0.0){k=-0.0-e}else{k=e}g[a+4>>2]=k;g[a+8>>2]=h*j;return}else{g[a>>2]=d;if(+g[c+4>>2]<0.0){l=-0.0-e}else{l=e}g[a+4>>2]=l;g[a+8>>2]=0.0;return}}function av5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;if((d|0)<=0){return}e=a+28|0;f=a+32|0;a=0;do{h=+g[e>>2];i=+g[f>>2];j=+g[b+(a<<4)>>2];k=+g[b+(a<<4)+8>>2];l=+Q(+(j*j+k*k));do{if(l!=0.0){m=h/l;if(+g[b+(a<<4)+4>>2]<0.0){n=-0.0-i}else{n=i}o=j*m;p=n;q=k*m}else{if(+g[b+(a<<4)+4>>2]>=0.0){o=h;p=i;q=0.0;break}o=h;p=-0.0-i;q=0.0}}while(0);g[c+(a<<4)>>2]=o;g[c+(a<<4)+4>>2]=p;g[c+(a<<4)+8>>2]=q;a=a+1|0;}while((a|0)<(d|0));return}function av6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;if((d|0)<=0){return}e=a+28|0;f=a+36|0;a=0;do{h=+g[e>>2];i=+g[f>>2];j=+g[b+(a<<4)>>2];k=+g[b+(a<<4)+4>>2];l=+Q(+(j*j+k*k));do{if(l!=0.0){m=h/l;if(+g[b+(a<<4)+8>>2]<0.0){n=-0.0-i}else{n=i}o=j*m;p=k*m;q=n}else{if(+g[b+(a<<4)+8>>2]>=0.0){o=h;p=0.0;q=i;break}o=h;p=0.0;q=-0.0-i}}while(0);g[c+(a<<4)>>2]=o;g[c+(a<<4)+4>>2]=p;g[c+(a<<4)+8>>2]=q;a=a+1|0;}while((a|0)<(d|0));return}function av7(a){a=a|0;return}function av8(a){a=a|0;return 16728|0}function av9(a){a=a|0;return 60}function awa(a){a=a|0;return}function awb(a){a=a|0;return 17752|0}function awc(a){a=a|0;return}function awd(a){a=a|0;return 16632|0}function awe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0;if((d|0)<=0){return}e=a+28|0;f=a+32|0;a=0;do{h=+g[f>>2];i=+g[e>>2];j=b+(a<<4)|0;k=+g[b+(a<<4)+4>>2];l=+g[b+(a<<4)+8>>2];m=+Q(+(k*k+l*l));do{if(m!=0.0){n=h/m;if(+g[j>>2]<0.0){o=-0.0-i}else{o=i}p=o;q=k*n;r=l*n}else{if(+g[j>>2]>=0.0){p=i;q=h;r=0.0;break}p=-0.0-i;q=h;r=0.0}}while(0);g[c+(a<<4)>>2]=p;g[c+(a<<4)+4>>2]=q;g[c+(a<<4)+8>>2]=r;a=a+1|0;}while((a|0)<(d|0));return}function awf(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-56+52>>2]|0);return}function awg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,h=0.0,i=0.0,j=0,k=0,l=0.0,m=0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0;d=a|0;e=a;f=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);h=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);i=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);d=a+28|0;e=a+32|0;j=a+36|0;k=a+12|0;l=(f+ +g[d>>2])/+g[k>>2];m=a+16|0;n=(h+ +g[e>>2])/+g[m>>2];o=a+20|0;p=(i+ +g[j>>2])/+g[o>>2];q=+P(+(+g[b>>2]));r=+P(+(+g[b+4>>2]));s=+P(+(+g[b+8>>2]));g[k>>2]=q;g[m>>2]=r;g[o>>2]=s;g[a+24>>2]=0.0;g[d>>2]=l*q-f;g[e>>2]=n*r-h;g[j>>2]=p*s-i;g[a+40>>2]=0.0;return}function awh(a,b){a=a|0;b=+b;var d=0,e=0,f=0.0,h=0.0,i=0.0,j=0,k=0.0,l=0,m=0,n=0.0;d=a|0;e=a;f=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);h=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);i=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);j=a+28|0;k=f+ +g[j>>2];l=a+32|0;f=h+ +g[l>>2];m=a+36|0;h=i+ +g[m>>2];g[a+44>>2]=b;b=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);i=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);n=h- +dh[c[(c[e>>2]|0)+44>>2]&1023](d);g[j>>2]=k-b;g[l>>2]=f-i;g[m>>2]=n;g[a+40>>2]=0.0;return}function awi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0;e=d;f=dj[c[(c[e>>2]|0)+40>>2]&511](d,a)|0;h=dj[c[(c[e>>2]|0)+28>>2]&511](d,f)|0;c[b>>2]=h;if((h|0)!=0){cv[c[(c[d>>2]|0)+48>>2]&2047](d,f)}c[b+4>>2]=c[a+4>>2];g[b+28>>2]=+g[a+28>>2];g[b+32>>2]=+g[a+32>>2];g[b+36>>2]=+g[a+36>>2];g[b+40>>2]=+g[a+40>>2];g[b+12>>2]=+g[a+12>>2];g[b+16>>2]=+g[a+16>>2];g[b+20>>2]=+g[a+20>>2];g[b+24>>2]=+g[a+24>>2];g[b+44>>2]=+g[a+44>>2];c[b+52>>2]=c[a+52>>2];return 17264}function awj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;dA[c[(c[b>>2]|0)+64>>2]&511](a,b,d);e=b|0;f=b;if(+dh[c[(c[f>>2]|0)+44>>2]&1023](e)==0.0){return}h=+g[d>>2];i=+g[d+4>>2];j=+g[d+8>>2];d=h*h+i*i+j*j<1.4210854715202004e-14;k=d?-1.0:j;j=d?-1.0:i;i=d?-1.0:h;h=1.0/+Q(+(k*k+(i*i+j*j)));l=+dh[c[(c[f>>2]|0)+44>>2]&1023](e);e=a|0;g[e>>2]=h*i*l+ +g[e>>2];e=a+4|0;g[e>>2]=l*h*j+ +g[e>>2];e=a+8|0;g[e>>2]=l*h*k+ +g[e>>2];return}function awk(a){a=a|0;var b=0.0,d=0,e=0,f=0.0;b=+g[a+28>>2];d=a|0;e=a;f=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);+dh[c[(c[e>>2]|0)+44>>2]&1023](d);+dh[c[(c[e>>2]|0)+44>>2]&1023](d);return+(b+f)}function awl(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-56+52>>2]|0);return}function awm(a){a=a|0;var b=0.0,d=0,e=0,f=0.0;b=+g[a+32>>2];d=a|0;e=a;+dh[c[(c[e>>2]|0)+44>>2]&1023](d);f=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);+dh[c[(c[e>>2]|0)+44>>2]&1023](d);return+(b+f)}function awn(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-56+52>>2]|0);return}function awo(a){a=a|0;var b=0.0,d=0,e=0,f=0.0;b=+g[a+28>>2];d=a|0;e=a;f=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);+dh[c[(c[e>>2]|0)+44>>2]&1023](d);+dh[c[(c[e>>2]|0)+44>>2]&1023](d);return+(b+f)}function awp(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[b>>2]|0;if((d|0)!=0){awq(b,d)}d=b+4|0;e=c[d>>2]|0;if((e|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[e-44+40>>2]|0)}c[d>>2]=0;c[b+8>>2]=-1;d=b+24|0;e=b+32|0;f=c[e>>2]|0;g=b+36|0;if((f|0)==0){h=b+28|0;i=b+16|0;c[i>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;c[h>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-8+4>>2]|0)}c[e>>2]=0;h=b+28|0;i=b+16|0;c[i>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;c[h>>2]=0;return}function awq(a,b){a=a|0;b=b|0;var d=0;d=b+40|0;if((c[d>>2]|0)!=0){awq(a,c[b+36>>2]|0);awq(a,c[d>>2]|0)}d=a|0;if((c[d>>2]|0)==(b|0)){c[d>>2]=0}d=a+4|0;a=c[d>>2]|0;if((a|0)==0){c[d>>2]=b;return}c[9804]=(c[9804]|0)+1;aDB(c[a-44+40>>2]|0);c[d>>2]=b;return}function awr(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=d+40|0;if(!((c[g>>2]|0)==0|(f|0)==0)){h=f-1|0;awr(b,c[d+36>>2]|0,e,h);awr(b,c[g>>2]|0,e,h);h=b+4|0;b=c[h>>2]|0;if((b|0)==0){c[h>>2]=d;return}c[9804]=(c[9804]|0)+1;aDB(c[b-44+40>>2]|0);c[h>>2]=d;return}h=e+4|0;b=c[h>>2]|0;g=e+8|0;do{if((b|0)==(c[g>>2]|0)){f=(b|0)==0?1:b<<1;if((b|0)>=(f|0)){i=b;break}if((f|0)==0){j=0;k=b}else{c[9806]=(c[9806]|0)+1;l=aDx((f<<2)+19|0)|0;if((l|0)==0){m=0}else{n=-(l+4|0)&15;c[l+n>>2]=l;m=l+(n+4)|0}j=m;k=c[h>>2]|0}n=e+12|0;if((k|0)>0){l=0;do{o=j+(l<<2)|0;if((o|0)!=0){c[o>>2]=c[(c[n>>2]|0)+(l<<2)>>2]}l=l+1|0;}while((l|0)<(k|0))}l=c[n>>2]|0;o=e+16|0;if((l|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-4>>2]|0)}c[n>>2]=0}a[o]=1;c[n>>2]=j;c[g>>2]=f;i=c[h>>2]|0}else{i=b}}while(0);b=(c[e+12>>2]|0)+(i<<2)|0;if((b|0)==0){p=i;q=p+1|0;c[h>>2]=q;return}c[b>>2]=d;p=c[h>>2]|0;q=p+1|0;c[h>>2]=q;return}function aws(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;i=i+24|0;e=d|0;f=b|0;g=c[f>>2]|0;if((g|0)==0){i=d;return}h=e+16|0;a[h]=1;j=e+12|0;c[j>>2]=0;k=e+4|0;c[k>>2]=0;l=e+8|0;c[l>>2]=0;m=c[b+12>>2]|0;if((m|0)>0){c[9806]=(c[9806]|0)+1;n=aDx((m<<2)+19|0)|0;if((n|0)==0){o=0}else{p=-(n+4|0)&15;c[n+p>>2]=n;o=n+(p+4)|0}p=c[k>>2]|0;if((p|0)>0){n=0;do{q=o+(n<<2)|0;if((q|0)!=0){c[q>>2]=c[(c[j>>2]|0)+(n<<2)>>2]}n=n+1|0;}while((n|0)<(p|0))}p=c[j>>2]|0;if((p|0)!=0){if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[p-4>>2]|0)}c[j>>2]=0}a[h]=1;c[j>>2]=o;c[l>>2]=m;r=c[f>>2]|0}else{r=g}awr(b,r,e,-1);c[f>>2]=awt(b,e)|0;e=c[j>>2]|0;if((e|0)!=0){if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[e-4>>2]|0)}c[j>>2]=0}a[h]=1;c[j>>2]=0;c[k>>2]=0;c[l>>2]=0;i=d;return}function awt(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0.0,G=0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,Q=0,R=0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0;e=i;i=i+64|0;f=e|0;h=e+40|0;do{if((a[43056]|0)==0){if((b1(43056)|0)==0){break}g[10716]=1.0;aDD(42868,0,16);g[10721]=1.0;aDD(42888,0,16);g[10726]=1.0;g[10727]=0.0}}while(0);j=d+4|0;k=c[j>>2]|0;if((k|0)<=1){l=c[c[d+12>>2]>>2]|0;i=e;return l|0}m=d+12|0;if((k|0)<=128){d=b+4|0;n=k;while(1){L2956:do{if((n|0)>0){o=0;p=-1;q=-1;r=3.4028234663852886e+38;L2957:while(1){s=o+1|0;if((s|0)>=(n|0)){t=p;u=q;break L2956}v=c[m>>2]|0;w=c[v+(o<<2)>>2]|0;x=+g[w>>2];y=+g[w+16>>2];z=+g[w+4>>2];A=+g[w+20>>2];B=+g[w+8>>2];C=+g[w+24>>2];w=s;D=p;E=q;F=r;while(1){G=c[v+(w<<2)>>2]|0;H=+g[G>>2];I=+g[G+16>>2];J=+g[G+4>>2];K=+g[G+20>>2];L=+g[G+8>>2];M=+g[G+24>>2];N=(y>I?y:I)-(x<H?x:H);H=(A>K?A:K)-(z<J?z:J);J=(C>M?C:M)-(B<L?B:L);L=J+(H+(N+N*H*J));G=L<F;O=G?o:D;Q=G?w:E;J=G?L:F;G=w+1|0;if((G|0)<(n|0)){w=G;D=O;E=Q;F=J}else{o=s;p=O;q=Q;r=J;continue L2957}}}}else{t=-1;u=-1}}while(0);q=c[m>>2]|0;p=c[q+(t<<2)>>2]|0;o=c[q+(u<<2)>>2]|0;q=c[d>>2]|0;do{if((q|0)==0){c[9806]=(c[9806]|0)+1;s=aDx(63)|0;if((s|0)==0){R=0;break}E=-(s+4|0)&15;D=s+(E+4)|0;c[s+E>>2]=s;if((D|0)==0){R=0;break}aDD(D|0,0,44);R=D}else{c[d>>2]=0;R=q}}while(0);c[R+32>>2]=0;q=R+36|0;c[q>>2]=0;D=R+40|0;c[D>>2]=0;r=+g[p>>2];F=+g[o>>2];g[R>>2]=r<F?r:F;F=+g[p+16>>2];r=+g[o+16>>2];g[R+16>>2]=F>r?F:r;r=+g[p+4>>2];F=+g[o+4>>2];g[R+4>>2]=r<F?r:F;F=+g[p+20>>2];r=+g[o+20>>2];g[R+20>>2]=F>r?F:r;r=+g[p+8>>2];F=+g[o+8>>2];g[R+8>>2]=r<F?r:F;F=+g[p+24>>2];r=+g[o+24>>2];g[R+24>>2]=F>r?F:r;c[q>>2]=p;c[D>>2]=o;c[p+32>>2]=R;c[o+32>>2]=R;c[(c[m>>2]|0)+(t<<2)>>2]=R;D=(c[j>>2]|0)-1|0;q=c[m>>2]|0;s=q+(u<<2)|0;E=c[s>>2]|0;c[s>>2]=c[q+(D<<2)>>2];c[(c[m>>2]|0)+(D<<2)>>2]=E;n=(c[j>>2]|0)-1|0;c[j>>2]=n;if((n|0)<=1){break}}l=c[c[m>>2]>>2]|0;i=e;return l|0}n=c[m>>2]|0;u=c[n>>2]|0;r=+g[u+12>>2];F=+g[u+28>>2];B=+g[u+24>>2];C=+g[u+20>>2];z=+g[u+16>>2];A=+g[u+8>>2];x=+g[u+4>>2];y=+g[u>>2];u=1;do{R=c[n+(u<<2)>>2]|0;J=+g[R>>2];y=y<J?y:J;J=+g[R+16>>2];z=z>J?z:J;J=+g[R+4>>2];x=x<J?x:J;J=+g[R+20>>2];C=C>J?C:J;J=+g[R+8>>2];A=A<J?A:J;J=+g[R+24>>2];B=B>J?B:J;u=u+1|0;}while((u|0)<(k|0));J=(x+C)*.5;u=f|0;R=f+16|0;a[R]=1;t=f+12|0;c[t>>2]=0;d=f+4|0;c[d>>2]=0;E=f+8|0;c[E>>2]=0;D=f+36|0;a[D]=1;q=f+32|0;c[q>>2]=0;s=f+24|0;c[s>>2]=0;w=f+28|0;c[w>>2]=0;L=(y+z)*.5;H=(A+B)*.5;aDD(h|0,0,24);do{if((k|0)>0){N=+g[10716];M=+g[10717];K=+g[10718];I=+g[10720];S=+g[10721];T=+g[10722];U=+g[10724];V=+g[10725];W=+g[10726];v=0;do{Q=c[n+(v<<2)>>2]|0;X=(+g[Q>>2]+ +g[Q+16>>2])*.5-L;Y=(+g[Q+4>>2]+ +g[Q+20>>2])*.5-J;Z=(+g[Q+8>>2]+ +g[Q+24>>2])*.5-H;Q=h+((X*N+Y*M+Z*K>0.0)<<2)|0;c[Q>>2]=(c[Q>>2]|0)+1;Q=h+8+((X*I+Y*S+Z*T>0.0)<<2)|0;c[Q>>2]=(c[Q>>2]|0)+1;Q=h+16+((X*U+Y*V+Z*W>0.0)<<2)|0;c[Q>>2]=(c[Q>>2]|0)+1;v=v+1|0;}while((v|0)<(k|0));v=c[h>>2]|0;if((v|0)<=0){_=-1;$=k;break}o=c[h+4>>2]|0;if((o|0)<=0){_=-1;$=k;break}p=~~+P(+(+(v-o|0)));o=(p|0)<(k|0);_=(o^1)<<31>>31;$=o?p:k}else{_=-1;$=k}}while(0);n=c[h+8>>2]|0;do{if((n|0)>0){p=c[h+12>>2]|0;if((p|0)<=0){aa=_;ab=$;break}o=~~+P(+(+(n-p|0)));p=(o|0)<($|0);aa=p?1:_;ab=p?o:$}else{aa=_;ab=$}}while(0);$=c[h+16>>2]|0;do{if(($|0)>0){_=c[h+20>>2]|0;if((_|0)<=0){ac=aa;break}ac=(~~+P(+(+($-_|0)))|0)<(ab|0)?2:aa}else{ac=aa}}while(0);do{if((ac|0)>-1){aa=c[h+(ac<<3)>>2]|0;if((aa|0)>0){c[9806]=(c[9806]|0)+1;ab=aDx((aa<<2)+19|0)|0;if((ab|0)==0){ad=0}else{$=-(ab+4|0)&15;c[ab+$>>2]=ab;ad=ab+($+4)|0}a[R]=1;c[t>>2]=ad;c[E>>2]=aa}aa=c[h+(ac<<3)+4>>2]|0;if((aa|0)>0){c[9806]=(c[9806]|0)+1;$=aDx((aa<<2)+19|0)|0;if(($|0)==0){ae=0}else{ab=-($+4|0)&15;c[$+ab>>2]=$;ae=$+(ab+4)|0}a[D]=1;c[q>>2]=ae;c[w>>2]=aa}c[d>>2]=0;c[s>>2]=0;aa=c[j>>2]|0;if((aa|0)<=0){break}ab=42864+(ac<<4)|0;$=42868+(ac<<4)|0;_=42872+(ac<<4)|0;n=0;do{o=(c[m>>2]|0)+(n<<2)|0;p=c[o>>2]|0;if(((+g[p>>2]+ +g[p+16>>2])*.5-L)*+g[ab>>2]+((+g[p+4>>2]+ +g[p+20>>2])*.5-J)*+g[$>>2]+((+g[p+8>>2]+ +g[p+24>>2])*.5-H)*+g[_>>2]<0.0){p=c[d>>2]|0;do{if((p|0)==(c[E>>2]|0)){v=(p|0)==0?1:p<<1;if((p|0)>=(v|0)){af=p;break}do{if((v|0)==0){ag=0}else{c[9806]=(c[9806]|0)+1;Q=aDx((v<<2)+19|0)|0;if((Q|0)==0){ag=0;break}O=-(Q+4|0)&15;c[Q+O>>2]=Q;ag=Q+(O+4)|0}}while(0);if((p|0)>0){O=0;do{Q=ag+(O<<2)|0;if((Q|0)!=0){c[Q>>2]=c[(c[t>>2]|0)+(O<<2)>>2]}O=O+1|0;}while((O|0)<(p|0))}O=c[t>>2]|0;if((O|0)!=0){if((a[R]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[O-4>>2]|0)}c[t>>2]=0}a[R]=1;c[t>>2]=ag;c[E>>2]=v;af=c[d>>2]|0}else{af=p}}while(0);p=(c[t>>2]|0)+(af<<2)|0;if((p|0)==0){ah=af}else{c[p>>2]=c[o>>2];ah=c[d>>2]|0}c[d>>2]=ah+1}else{p=c[s>>2]|0;do{if((p|0)==(c[w>>2]|0)){O=(p|0)==0?1:p<<1;if((p|0)>=(O|0)){ai=p;break}do{if((O|0)==0){aj=0}else{c[9806]=(c[9806]|0)+1;Q=aDx((O<<2)+19|0)|0;if((Q|0)==0){aj=0;break}G=-(Q+4|0)&15;c[Q+G>>2]=Q;aj=Q+(G+4)|0}}while(0);if((p|0)>0){v=0;do{G=aj+(v<<2)|0;if((G|0)!=0){c[G>>2]=c[(c[q>>2]|0)+(v<<2)>>2]}v=v+1|0;}while((v|0)<(p|0))}v=c[q>>2]|0;if((v|0)!=0){if((a[D]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[v-4>>2]|0)}c[q>>2]=0}a[D]=1;c[q>>2]=aj;c[w>>2]=O;ai=c[s>>2]|0}else{ai=p}}while(0);p=(c[q>>2]|0)+(ai<<2)|0;if((p|0)==0){ak=ai}else{c[p>>2]=c[o>>2];ak=c[s>>2]|0}c[s>>2]=ak+1}n=n+1|0;}while((n|0)<(aa|0))}else{aa=((k|0)/2|0)+1|0;if((aa|0)>0){c[9806]=(c[9806]|0)+1;n=aDx((aa<<2)+19|0)|0;if((n|0)==0){al=0}else{_=-(n+4|0)&15;c[n+_>>2]=n;al=n+(_+4)|0}_=c[d>>2]|0;if((_|0)>0){n=0;do{$=al+(n<<2)|0;if(($|0)!=0){c[$>>2]=c[(c[t>>2]|0)+(n<<2)>>2]}n=n+1|0;}while((n|0)<(_|0))}_=c[t>>2]|0;if((_|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[_-4>>2]|0);c[t>>2]=0}a[R]=1;c[t>>2]=al;c[E>>2]=aa;am=c[j>>2]|0}else{am=k}_=(am|0)/2|0;if((am|0)>1){do{if((am+1|0)>>>0<3){an=0}else{c[9806]=(c[9806]|0)+1;n=aDx((_<<2)+19|0)|0;if((n|0)==0){an=0;break}$=-(n+4|0)&15;c[n+$>>2]=n;an=n+($+4)|0}}while(0);a[D]=1;c[q>>2]=an;c[w>>2]=_;ao=c[j>>2]|0}else{ao=am}if((ao|0)>0){ap=0}else{break}do{aa=ap&1;$=(c[m>>2]|0)+(ap<<2)|0;n=f+(aa*20|0)+4|0;ab=c[n>>2]|0;p=f+(aa*20|0)+8|0;do{if((ab|0)==(c[p>>2]|0)){v=(ab|0)==0?1:ab<<1;if((ab|0)>=(v|0)){aq=ab;break}do{if((v|0)==0){ar=0}else{c[9806]=(c[9806]|0)+1;G=aDx((v<<2)+19|0)|0;if((G|0)==0){ar=0;break}Q=-(G+4|0)&15;c[G+Q>>2]=G;ar=G+(Q+4)|0}}while(0);O=f+(aa*20|0)+12|0;if((ab|0)>0){Q=0;do{G=ar+(Q<<2)|0;if((G|0)!=0){c[G>>2]=c[(c[O>>2]|0)+(Q<<2)>>2]}Q=Q+1|0;}while((Q|0)<(ab|0))}Q=c[O>>2]|0;G=f+(aa*20|0)+16|0;if((Q|0)!=0){if((a[G]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[Q-4>>2]|0)}c[O>>2]=0}a[G]=1;c[O>>2]=ar;c[p>>2]=v;aq=c[n>>2]|0}else{aq=ab}}while(0);ab=(c[f+(aa*20|0)+12>>2]|0)+(aq<<2)|0;if((ab|0)!=0){c[ab>>2]=c[$>>2]}c[n>>2]=aq+1;ap=ap+1|0;}while((ap|0)<(ao|0))}}while(0);ao=b+4|0;ap=c[ao>>2]|0;do{if((ap|0)==0){c[9806]=(c[9806]|0)+1;aq=aDx(63)|0;if((aq|0)==0){as=0;break}ar=-(aq+4|0)&15;m=aq+(ar+4)|0;c[aq+ar>>2]=aq;if((m|0)==0){as=0;break}aDD(m|0,0,44);as=m}else{c[ao>>2]=0;as=ap}}while(0);c[as+32>>2]=0;ap=as+36|0;c[ap>>2]=0;ao=as+40|0;c[ao>>2]=0;g[as>>2]=y;g[as+4>>2]=x;g[as+8>>2]=A;g[as+12>>2]=r;g[as+16>>2]=z;g[as+20>>2]=C;g[as+24>>2]=B;g[as+28>>2]=F;c[ap>>2]=awt(b,u)|0;c[ao>>2]=awt(b,f+20|0)|0;c[(c[ap>>2]|0)+32>>2]=as;c[(c[ao>>2]|0)+32>>2]=as;ao=c[q>>2]|0;if((ao|0)!=0){if((a[D]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[ao-4>>2]|0)}c[q>>2]=0}a[D]=1;c[q>>2]=0;c[s>>2]=0;c[w>>2]=0;w=c[t>>2]|0;if((w|0)!=0){if((a[R]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[w-4>>2]|0)}c[t>>2]=0}a[R]=1;c[t>>2]=0;c[d>>2]=0;c[E>>2]=0;l=as;i=e;return l|0}function awu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;d=i;i=i+32|0;if((b|0)<0){e=c[a+12>>2]|0}else{e=b}b=a|0;f=c[b>>2]|0;if(!((f|0)!=0&(e|0)>0)){i=d;return}g=a+16|0;h=d|0;j=e;e=f;while(1){f=e+40|0;L3141:do{if((c[f>>2]|0)==0){k=e}else{l=0;m=e;n=f;while(1){o=(c[g>>2]|0)>>>(l>>>0)&1;p=m+32|0;q=c[p>>2]|0;if(q>>>0>m>>>0){r=q+40|0;s=(c[r>>2]|0)==(m|0)|0;t=s^1;u=c[q+36+(t<<2)>>2]|0;v=q+32|0;w=c[v>>2]|0;if((w|0)==0){c[b>>2]=m}else{c[w+36+(((c[w+40>>2]|0)==(q|0))<<2)>>2]=m}c[u+32>>2]=m;c[v>>2]=m;c[p>>2]=w;w=m+36|0;c[q+36>>2]=c[w>>2];c[r>>2]=c[n>>2];c[(c[w>>2]|0)+32>>2]=q;c[(c[n>>2]|0)+32>>2]=q;c[m+36+(s<<2)>>2]=q;c[m+36+(t<<2)>>2]=u;u=q;aDC(h|0,u|0,32)|0;t=m;aDC(u|0,t|0,32)|0;aDC(t|0,h|0,32)|0;x=q}else{x=m}q=c[x+36+(o<<2)>>2]|0;o=q+40|0;if((c[o>>2]|0)==0){k=q;break L3141}l=l+1&31;m=q;n=o}}}while(0);if((aww(a,k)|0)==0){y=0}else{y=c[b>>2]|0}awv(a,y,k);c[g>>2]=(c[g>>2]|0)+1;f=j-1|0;if((f|0)==0){break}j=f;e=c[b>>2]|0}i=d;return}function awv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0.0,j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0;e=a|0;if((c[e>>2]|0)==0){c[e>>2]=d;c[d+32>>2]=0;return}f=c[b+40>>2]|0;if((f|0)==0){h=b}else{i=+g[d>>2]+ +g[d+16>>2];j=+g[d+4>>2]+ +g[d+20>>2];k=+g[d+8>>2]+ +g[d+24>>2];l=b;b=f;while(1){f=c[l+36>>2]|0;m=j-(+g[f+4>>2]+ +g[f+20>>2]);n=k-(+g[f+8>>2]+ +g[f+24>>2]);o=+P(+(i-(+g[f>>2]+ +g[f+16>>2])));p=o+ +P(+m);m=p+ +P(+n);n=j-(+g[b+4>>2]+ +g[b+20>>2]);p=k-(+g[b+8>>2]+ +g[b+24>>2]);o=+P(+(i-(+g[b>>2]+ +g[b+16>>2])));q=o+ +P(+n);f=c[l+36+((m>=q+ +P(+p))<<2)>>2]|0;r=c[f+40>>2]|0;if((r|0)==0){h=f;break}else{l=f;b=r}}}b=h+32|0;l=c[b>>2]|0;r=a+4|0;a=c[r>>2]|0;do{if((a|0)==0){c[9806]=(c[9806]|0)+1;f=aDx(63)|0;if((f|0)==0){s=0;break}t=-(f+4|0)&15;u=f+(t+4)|0;c[f+t>>2]=f;if((u|0)==0){s=0;break}aDD(u|0,0,44);s=u}else{c[r>>2]=0;s=a}}while(0);c[s+32>>2]=l;a=s+36|0;c[a>>2]=0;r=s+40|0;c[r>>2]=0;i=+g[d>>2];k=+g[h>>2];u=s|0;g[u>>2]=i<k?i:k;k=+g[d+16>>2];i=+g[h+16>>2];g[s+16>>2]=k>i?k:i;i=+g[d+4>>2];k=+g[h+4>>2];g[s+4>>2]=i<k?i:k;k=+g[d+20>>2];i=+g[h+20>>2];g[s+20>>2]=k>i?k:i;i=+g[d+8>>2];k=+g[h+8>>2];g[s+8>>2]=i<k?i:k;k=+g[d+24>>2];i=+g[h+24>>2];g[s+24>>2]=k>i?k:i;if((l|0)==0){c[a>>2]=h;c[b>>2]=s;c[r>>2]=d;c[d+32>>2]=s;c[e>>2]=s;return}c[l+36+(((c[(c[b>>2]|0)+40>>2]|0)==(h|0))<<2)>>2]=s;c[a>>2]=h;c[b>>2]=s;c[r>>2]=d;c[d+32>>2]=s;d=s;s=l;i=+g[u>>2];L3178:while(1){u=s|0;l=s+4|0;do{if(+g[u>>2]<=i){if(+g[l>>2]>+g[d+4>>2]){break}if(+g[s+8>>2]>+g[d+8>>2]){break}if(+g[s+16>>2]<+g[d+16>>2]){break}if(+g[s+20>>2]<+g[d+20>>2]){break}if(+g[s+24>>2]>=+g[d+24>>2]){v=2664;break L3178}}}while(0);r=c[s+36>>2]|0;b=c[s+40>>2]|0;k=+g[r>>2];j=+g[b>>2];p=k<j?k:j;g[u>>2]=p;j=+g[r+16>>2];k=+g[b+16>>2];g[s+16>>2]=j>k?j:k;k=+g[r+4>>2];j=+g[b+4>>2];g[l>>2]=k<j?k:j;j=+g[r+20>>2];k=+g[b+20>>2];g[s+20>>2]=j>k?j:k;k=+g[r+8>>2];j=+g[b+8>>2];g[s+8>>2]=k<j?k:j;j=+g[r+24>>2];k=+g[b+24>>2];g[s+24>>2]=j>k?j:k;b=c[s+32>>2]|0;if((b|0)==0){v=2662;break}else{d=s;s=b;i=p}}if((v|0)==2662){return}else if((v|0)==2664){return}}function aww(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0.0,r=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0;d=a|0;if((c[d>>2]|0)==(b|0)){c[d>>2]=0;e=0;return e|0}f=c[b+32>>2]|0;h=c[f+32>>2]|0;i=c[f+36+(((c[f+40>>2]|0)!=(b|0))<<2)>>2]|0;if((h|0)==0){c[d>>2]=i;c[i+32>>2]=0;b=a+4|0;j=c[b>>2]|0;if((j|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[j-44+40>>2]|0)}c[b>>2]=f;e=c[d>>2]|0;return e|0}c[h+36+(((c[h+40>>2]|0)==(f|0))<<2)>>2]=i;c[i+32>>2]=h;i=a+4|0;a=c[i>>2]|0;if((a|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[a-44+40>>2]|0)}c[i>>2]=f;f=h;do{h=f|0;k=+g[h>>2];i=f+4|0;l=+g[i>>2];a=f+8|0;m=+g[a>>2];b=f+16|0;n=+g[b>>2];j=f+20|0;o=+g[j>>2];p=f+24|0;q=+g[p>>2];r=c[f+36>>2]|0;s=c[f+40>>2]|0;t=+g[r>>2];u=+g[s>>2];v=t<u?t:u;g[h>>2]=v;u=+g[r+16>>2];t=+g[s+16>>2];w=u>t?u:t;g[b>>2]=w;t=+g[r+4>>2];u=+g[s+4>>2];x=t<u?t:u;g[i>>2]=x;u=+g[r+20>>2];t=+g[s+20>>2];y=u>t?u:t;g[j>>2]=y;t=+g[r+8>>2];u=+g[s+8>>2];z=t<u?t:u;g[a>>2]=z;u=+g[r+24>>2];t=+g[s+24>>2];A=u>t?u:t;g[p>>2]=A;if(!(k!=v|l!=x|m!=z|n!=w)){if(!(o!=y|q!=A)){e=f;B=2680;break}}f=c[f+32>>2]|0;}while((f|0)!=0);if((B|0)==2680){return e|0}e=c[d>>2]|0;return e|0}function awx(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c[b>>2]=24080;a[b+40|0]=1;c[b+36>>2]=0;c[b+28>>2]=0;c[b+32>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=-1;c[b+16>>2]=0;c[b+20>>2]=0;a[b+80|0]=1;c[b+76>>2]=0;c[b+68>>2]=0;c[b+72>>2]=0;c[b+44>>2]=0;c[b+48>>2]=0;c[b+52>>2]=-1;c[b+56>>2]=0;c[b+60>>2]=0;a[b+153|0]=0;a[b+154|0]=1;e=(d|0)!=0;a[b+152|0]=e&1^1;g[b+100>>2]=0.0;c[b+104>>2]=0;c[b+124>>2]=0;c[b+108>>2]=1;c[b+112>>2]=0;c[b+116>>2]=10;c[b+120>>2]=1;c[b+128>>2]=0;c[b+132>>2]=0;g[b+136>>2]=0.0;if(e){f=d;h=b+96|0;c[h>>2]=f;i=b+148|0;c[i>>2]=0;j=b+140|0;c[j>>2]=0;k=b+144|0;c[k>>2]=0;l=b+84|0;m=l;aDD(m|0,0,12);return}c[9806]=(c[9806]|0)+1;d=aDx(95)|0;do{if((d|0)==0){n=0}else{e=-(d+4|0)&15;o=d+(e+4)|0;c[d+e>>2]=d;if((o|0)==0){n=0;break}e=o;ayI(e);n=e}}while(0);f=n|0;h=b+96|0;c[h>>2]=f;i=b+148|0;c[i>>2]=0;j=b+140|0;c[j>>2]=0;k=b+144|0;c[k>>2]=0;l=b+84|0;m=l;aDD(m|0,0,12);return}function awy(b){b=b|0;var d=0,e=0;c[b>>2]=24080;do{if((a[b+152|0]&1)!=0){d=b+96|0;e=c[d>>2]|0;ct[c[c[e>>2]>>2]&2047](e);e=c[d>>2]|0;if((e|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[e-4>>2]|0)}}while(0);awp(b+44|0);awp(b+4|0);if((b|0)==0){return}aDB(b);return}function awz(b){b=b|0;var d=0,e=0;c[b>>2]=24080;do{if((a[b+152|0]&1)!=0){d=b+96|0;e=c[d>>2]|0;ct[c[c[e>>2]>>2]&2047](e);e=c[d>>2]|0;if((e|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[e-4>>2]|0)}}while(0);awp(b+44|0);awp(b+4|0);return}function awA(a){a=a|0;return}function awB(a){a=a|0;return}function awC(d,e,f,g,h,j,k,l,m){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;m=i;i=i+48|0;l=m|0;g=m+32|0;c[9806]=(c[9806]|0)+1;n=aDx(83)|0;if((n|0)==0){o=0}else{p=-(n+4|0)&15;c[n+p>>2]=n;o=n+(p+4)|0}p=o;c[o>>2]=h;b[o+4>>1]=j;b[o+6>>1]=k;k=o+16|0;j=e;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];k=o+32|0;e=f;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[o+8>>2]=0;k=o+56|0;c[k>>2]=0;f=o+52|0;c[f>>2]=0;h=l;c[h>>2]=c[j>>2];c[h+4>>2]=c[j+4>>2];c[h+8>>2]=c[j+8>>2];c[h+12>>2]=c[j+12>>2];j=l+16|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];e=d+104|0;c[o+60>>2]=c[e>>2];j=d+148|0;n=(c[j>>2]|0)+1|0;c[j>>2]=n;j=o;c[o+12>>2]=n;n=d+4|0;q=n|0;r=d+8|0;s=c[r>>2]|0;do{if((s|0)==0){c[9806]=(c[9806]|0)+1;t=aDx(63)|0;if((t|0)==0){u=0;break}v=-(t+4|0)&15;w=t+(v+4)|0;c[t+v>>2]=t;if((w|0)==0){u=0;break}aDD(w|0,0,44);u=w}else{c[r>>2]=0;u=s}}while(0);c[u+32>>2]=0;c[u+36>>2]=o;c[u+40>>2]=0;s=u;aDC(s|0,h|0,32)|0;h=n|0;awv(q,c[h>>2]|0,u);q=d+16|0;c[q>>2]=(c[q>>2]|0)+1;c[o+48>>2]=u;u=d+84+(c[e>>2]<<2)|0;c[f>>2]=0;c[k>>2]=c[u>>2];k=c[u>>2]|0;if((k|0)!=0){c[k+52>>2]=p}c[u>>2]=p;if((a[d+153|0]&1)!=0){i=m;return j|0}c[g>>2]=23368;c[g+4>>2]=d;c[g+8>>2]=p;p=g|0;awD(c[h>>2]|0,l,p);awD(c[d+44>>2]|0,l,p);i=m;return j|0}function awD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;if((a|0)==0){return}e=+g[b>>2];f=+g[b+4>>2];h=+g[b+8>>2];i=+g[b+16>>2];j=+g[b+20>>2];k=+g[b+24>>2];c[9806]=(c[9806]|0)+1;b=aDx(275)|0;do{if((b|0)==0){l=0}else{m=-(b+4|0)&15;n=b+(m+4)|0;c[b+m>>2]=b;m=n;if((n|0)==0){l=0;break}c[m>>2]=a;l=m}}while(0);a=d;b=1;m=64;n=l;while(1){l=b-1|0;o=c[n+(l<<2)>>2]|0;do{if(+g[o>>2]>i){p=l;q=m;r=n}else{if(+g[o+16>>2]<e){p=l;q=m;r=n;break}if(+g[o+4>>2]>j){p=l;q=m;r=n;break}if(+g[o+20>>2]<f){p=l;q=m;r=n;break}if(+g[o+8>>2]>k){p=l;q=m;r=n;break}if(+g[o+24>>2]<h){p=l;q=m;r=n;break}s=o+40|0;if((c[s>>2]|0)==0){cv[c[(c[a>>2]|0)+12>>2]&2047](d,o);p=l;q=m;r=n;break}t=c[o+36>>2]|0;do{if((l|0)==(m|0)){u=(m|0)==0?1:m<<1;if((m|0)>=(u|0)){v=m;w=n;break}do{if((u|0)==0){x=0}else{c[9806]=(c[9806]|0)+1;y=aDx((u<<2)+19|0)|0;if((y|0)==0){x=0;break}z=-(y+4|0)&15;c[y+z>>2]=y;x=y+(z+4)|0}}while(0);if((m|0)>0){z=0;do{y=x+(z<<2)|0;if((y|0)!=0){c[y>>2]=c[n+(z<<2)>>2]}z=z+1|0;}while((z|0)<(m|0))}if((n|0)==0){v=u;w=x;break}c[9804]=(c[9804]|0)+1;aDB(c[n-4>>2]|0);v=u;w=x}else{v=m;w=n}}while(0);z=w+(l<<2)|0;if((z|0)!=0){c[z>>2]=t}z=c[s>>2]|0;do{if((b|0)==(v|0)){y=(b|0)==0?1:b<<1;if((b|0)>=(y|0)){A=b;B=w;break}do{if((y|0)==0){C=0}else{c[9806]=(c[9806]|0)+1;D=aDx((y<<2)+19|0)|0;if((D|0)==0){C=0;break}E=-(D+4|0)&15;c[D+E>>2]=D;C=D+(E+4)|0}}while(0);if((b|0)>0){u=0;do{E=C+(u<<2)|0;if((E|0)!=0){c[E>>2]=c[w+(u<<2)>>2]}u=u+1|0;}while((u|0)<(b|0))}if((w|0)==0){A=y;B=C;break}c[9804]=(c[9804]|0)+1;aDB(c[w-4>>2]|0);A=y;B=C}else{A=v;B=w}}while(0);s=B+(b<<2)|0;if((s|0)!=0){c[s>>2]=z}p=b+1|0;q=A;r=B}}while(0);if((p|0)>0){b=p;m=q;n=r}else{break}}if((r|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[r-4>>2]|0);return}function awE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=d+60|0;if((c[f>>2]|0)==2){g=b+44|0;h=c[d+48>>2]|0;aww(g,h)|0;g=b+48|0;i=c[g>>2]|0;if((i|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[i-44+40>>2]|0)}c[g>>2]=h;h=b+56|0;c[h>>2]=(c[h>>2]|0)-1}else{h=b+4|0;g=c[d+48>>2]|0;aww(h,g)|0;h=b+8|0;i=c[h>>2]|0;if((i|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[i-44+40>>2]|0)}c[h>>2]=g;g=b+16|0;c[g>>2]=(c[g>>2]|0)-1}g=d+52|0;h=c[g>>2]|0;i=d+56|0;j=c[i>>2]|0;if((h|0)==0){c[b+84+(c[f>>2]<<2)>>2]=j}else{c[h+56>>2]=j}j=c[i>>2]|0;if((j|0)!=0){c[j+52>>2]=c[g>>2]}g=c[b+96>>2]|0;dA[c[(c[g>>2]|0)+16>>2]&511](g|0,d,e);if((d|0)==0){k=b+154|0;a[k]=1;return}c[9804]=(c[9804]|0)+1;aDB(c[d-48+44>>2]|0);k=b+154|0;a[k]=1;return}function awF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=d;d=b+16|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];d=e;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return}function awG(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0;d=i;i=i+8|0;j=d|0;c[j>>2]=22928;c[j+4>>2]=e;k=e+4|0;l=e+20|0;m=e+32|0;e=j|0;awH(c[a+4>>2]|0,b,k,l,+g[m>>2],f,h,e);awH(c[a+44>>2]|0,b,k,l,+g[m>>2],f,h,e);i=d;return}function awH(a,b,d,e,f,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0,U=0,V=0,W=0,X=0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0;l=i;i=i+32|0;m=l|0;if((a|0)==0){i=l;return}c[9806]=(c[9806]|0)+1;n=aDx(531)|0;if((n|0)==0){o=0}else{p=-(n+4|0)&15;c[n+p>>2]=n;o=n+(p+4)|0}p=0;do{n=o+(p<<2)|0;if((n|0)!=0){c[n>>2]=0}p=p+1|0;}while((p|0)<128);c[o>>2]=a;a=j|0;p=j+4|0;n=j+8|0;j=m|0;q=m+4|0;r=m+8|0;s=m+12|0;t=h|0;u=h+4|0;v=h+8|0;h=m+16|0;w=m+20|0;x=m+24|0;y=m+28|0;z=b|0;A=d|0;B=e+4|0;C=b+4|0;D=d+4|0;E=e+8|0;F=b+8|0;b=d+8|0;d=k;G=1;H=126;I=128;J=128;K=o;while(1){o=G-1|0;L=c[K+(o<<2)>>2]|0;M=+g[L+4>>2]- +g[p>>2];N=+g[L+8>>2]- +g[n>>2];g[j>>2]=+g[L>>2]- +g[a>>2];g[q>>2]=M;g[r>>2]=N;g[s>>2]=0.0;N=+g[L+20>>2]- +g[u>>2];M=+g[L+24>>2]- +g[v>>2];g[h>>2]=+g[L+16>>2]- +g[t>>2];g[w>>2]=N;g[x>>2]=M;g[y>>2]=0.0;O=c[e>>2]|0;M=+g[z>>2];N=+g[A>>2];P=(+g[m+(O<<4)>>2]-M)*N;Q=N*(+g[m+(1-O<<4)>>2]-M);O=c[B>>2]|0;M=+g[C>>2];N=+g[D>>2];R=(+g[m+(O<<4)+4>>2]-M)*N;S=N*(+g[m+(1-O<<4)+4>>2]-M);do{if(P>S|R>Q){T=o;U=H;V=I;W=J;X=K}else{M=R>P?R:P;N=S<Q?S:Q;O=c[E>>2]|0;Y=+g[F>>2];Z=+g[b>>2];_=(+g[m+(O<<4)+8>>2]-Y)*Z;$=Z*(+g[m+(1-O<<4)+8>>2]-Y);if(M>$|_>N){T=o;U=H;V=I;W=J;X=K;break}if((_>M?_:M)>=f){T=o;U=H;V=I;W=J;X=K;break}if(($<N?$:N)<=0.0){T=o;U=H;V=I;W=J;X=K;break}O=L+40|0;if((c[O>>2]|0)==0){cv[c[(c[d>>2]|0)+12>>2]&2047](k,L);T=o;U=H;V=I;W=J;X=K;break}if((o|0)>(H|0)){aa=I<<1;if((I|0)<(aa|0)){do{if((J|0)<(aa|0)){do{if((aa|0)==0){ab=0}else{c[9806]=(c[9806]|0)+1;ac=aDx((I<<3|4)+15|0)|0;if((ac|0)==0){ab=0;break}ad=-(ac+4|0)&15;c[ac+ad>>2]=ac;ab=ac+(ad+4)|0}}while(0);if((I|0)>0){ad=0;do{ac=ab+(ad<<2)|0;if((ac|0)!=0){c[ac>>2]=c[K+(ad<<2)>>2]}ad=ad+1|0;}while((ad|0)<(I|0))}if((K|0)==0){ae=aa;af=ab;break}c[9804]=(c[9804]|0)+1;aDB(c[K-4>>2]|0);ae=aa;af=ab}else{ae=J;af=K}}while(0);ad=I;while(1){ac=af+(ad<<2)|0;if((ac|0)!=0){c[ac>>2]=0}ac=ad+1|0;if((ac|0)<(aa|0)){ad=ac}else{ag=ae;ah=af;break}}}else{ag=J;ah=K}ai=aa-2|0;aj=aa;ak=ag;al=ah}else{ai=H;aj=I;ak=J;al=K}c[al+(o<<2)>>2]=c[L+36>>2];c[al+(G<<2)>>2]=c[O>>2];T=G+1|0;U=ai;V=aj;W=ak;X=al}}while(0);if((T|0)==0){break}else{G=T;H=U;I=V;J=W;K=X}}if((X|0)==0){i=l;return}c[9804]=(c[9804]|0)+1;aDB(c[X-4>>2]|0);i=l;return}function awI(a){a=a|0;return}function awJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+40|0;g=f|0;h=f+8|0;c[g>>2]=22720;c[g+4>>2]=e;e=h;j=b;c[e>>2]=c[j>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];c[e+12>>2]=c[j+12>>2];j=h+16|0;e=d;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];e=g|0;awD(c[a+4>>2]|0,h,e);awD(c[a+44>>2]|0,h,e);i=f;return}function awK(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0.0,o=0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0.0,M=0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0;h=i;i=i+16|0;j=h|0;k=d;l=e;m=e|0;n=+g[m>>2];o=e+4|0;p=+g[o>>2];q=e+8|0;r=+g[q>>2];s=+g[e+12>>2];e=f;t=+g[f>>2];u=+g[f+4>>2];v=+g[f+8>>2];w=+g[f+12>>2];f=d+60|0;L3408:do{if((c[f>>2]|0)==2){x=b+44|0;y=d+48|0;z=c[y>>2]|0;aww(x,z)|0;x=b+48|0;A=c[x>>2]|0;if((A|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[A-44+40>>2]|0)}c[x>>2]=z;z=b+56|0;c[z>>2]=(c[z>>2]|0)-1;z=b+4|0;x=b+8|0;A=c[x>>2]|0;do{if((A|0)==0){c[9806]=(c[9806]|0)+1;B=aDx(63)|0;if((B|0)==0){C=0;break}D=-(B+4|0)&15;E=B+(D+4)|0;c[B+D>>2]=B;if((E|0)==0){C=0;break}aDD(E|0,0,44);C=E}else{c[x>>2]=0;C=A}}while(0);c[C+32>>2]=0;c[C+36>>2]=d;c[C+40>>2]=0;g[C>>2]=n;g[C+4>>2]=p;g[C+8>>2]=r;g[C+12>>2]=s;g[C+16>>2]=t;g[C+20>>2]=u;g[C+24>>2]=v;g[C+28>>2]=w;awv(z,c[z>>2]|0,C);A=b+16|0;c[A>>2]=(c[A>>2]|0)+1;c[y>>2]=C;F=1}else{A=b+128|0;c[A>>2]=(c[A>>2]|0)+1;A=c[d+48>>2]|0;x=A|0;G=+g[x>>2];do{if(G<=t){E=A+16|0;H=+g[E>>2];if(H<n){break}B=A+4|0;I=+g[B>>2];if(I>u){break}D=A+20|0;J=+g[D>>2];if(J<p){break}K=A+8|0;L=+g[K>>2];if(L>v){break}M=A+24|0;N=+g[M>>2];if(N<r){break}O=+g[d+16>>2];P=+g[d+20>>2];Q=+g[d+24>>2];R=+g[b+100>>2];S=(+g[d+32>>2]-O)*.5*R;T=R*(+g[d+36>>2]-P)*.5;U=R*(+g[d+40>>2]-Q)*.5;if(+g[m>>2]-O<0.0){V=-0.0-S}else{V=S}if(+g[o>>2]-P<0.0){W=-0.0-T}else{W=T}if(+g[q>>2]-Q<0.0){X=-0.0-U}else{X=U}Y=b+4|0;if(!(G>n|I>p|L>r|H<t|J<u|N<v)){F=0;break L3408}N=n+-.05000000074505806;J=p+-.05000000074505806;H=r+-.05000000074505806;L=t+.05000000074505806;I=u+.05000000074505806;U=v+.05000000074505806;if(V>0.0){Z=N;_=V+L}else{Z=V+N;_=L}if(W>0.0){$=J;aa=W+I}else{$=W+J;aa=I}if(X>0.0){ab=X+U;ac=H}else{ab=U;ac=X+H}ad=aww(Y,A)|0;L3449:do{if((ad|0)==0){ae=0}else{af=c[b+12>>2]|0;if((af|0)>-1){ag=0;ah=ad}else{ae=c[Y>>2]|0;break}while(1){if((ag|0)>=(af|0)){ae=ah;break L3449}ai=c[ah+32>>2]|0;if((ai|0)==0){ae=ah;break}else{ag=ag+1|0;ah=ai}}}}while(0);g[x>>2]=Z;g[B>>2]=$;g[K>>2]=ac;g[A+12>>2]=s;g[E>>2]=_;g[D>>2]=aa;g[M>>2]=ab;g[A+28>>2]=w;awv(Y,ae,A);ad=b+132|0;c[ad>>2]=(c[ad>>2]|0)+1;F=1;break L3408}}while(0);y=b+4|0;z=aww(y,A)|0;L3458:do{if((z|0)==0){aj=0}else{ad=c[b+12>>2]|0;if((ad|0)>-1){ak=0;al=z}else{aj=c[y>>2]|0;break}while(1){if((ak|0)>=(ad|0)){aj=al;break L3458}af=c[al+32>>2]|0;if((af|0)==0){aj=al;break}else{ak=ak+1|0;al=af}}}}while(0);g[x>>2]=n;g[A+4>>2]=p;g[A+8>>2]=r;g[A+12>>2]=s;g[A+16>>2]=t;g[A+20>>2]=u;g[A+24>>2]=v;g[A+28>>2]=w;awv(y,aj,A);z=b+132|0;c[z>>2]=(c[z>>2]|0)+1;F=1}}while(0);aj=d+52|0;al=c[aj>>2]|0;ak=d+56|0;ae=c[ak>>2]|0;if((al|0)==0){c[b+84+(c[f>>2]<<2)>>2]=ae}else{c[al+56>>2]=ae}ae=c[ak>>2]|0;if((ae|0)!=0){c[ae+52>>2]=c[aj>>2]}ae=d+16|0;c[ae>>2]=c[l>>2];c[ae+4>>2]=c[l+4>>2];c[ae+8>>2]=c[l+8>>2];c[ae+12>>2]=c[l+12>>2];l=d+32|0;c[l>>2]=c[e>>2];c[l+4>>2]=c[e+4>>2];c[l+8>>2]=c[e+8>>2];c[l+12>>2]=c[e+12>>2];e=b+104|0;c[f>>2]=c[e>>2];f=b+84+(c[e>>2]<<2)|0;c[aj>>2]=0;c[ak>>2]=c[f>>2];ak=c[f>>2]|0;if((ak|0)!=0){c[ak+52>>2]=k}c[f>>2]=k;if(!F){i=h;return}a[b+154|0]=1;if((a[b+153|0]&1)!=0){i=h;return}c[j>>2]=23368;c[j+4>>2]=b;F=b+44|0;k=d+48|0;d=j|0;awL(F,c[F>>2]|0,c[k>>2]|0,d);F=b+4|0;awL(F,c[F>>2]|0,c[k>>2]|0,d);i=h;return}function awL(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;if((d|0)==0|(e|0)==0){return}h=b+24|0;i=b+28|0;do{if((c[h>>2]|0)<128){if((c[i>>2]|0)>=128){j=i;break}c[9806]=(c[9806]|0)+1;k=aDx(1043)|0;if((k|0)==0){l=0}else{m=-(k+4|0)&15;c[k+m>>2]=k;l=k+(m+4)|0}m=c[h>>2]|0;k=b+32|0;if((m|0)>0){n=0;do{o=l+(n<<3)|0;if((o|0)!=0){p=(c[k>>2]|0)+(n<<3)|0;q=o;o=c[p+4>>2]|0;c[q>>2]=c[p>>2];c[q+4>>2]=o}n=n+1|0;}while((n|0)<(m|0))}m=c[k>>2]|0;n=b+36|0;if((m|0)!=0){if((a[n]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[m-8+4>>2]|0)}c[k>>2]=0}a[n]=1;c[k>>2]=l;c[i>>2]=128;j=i}else{j=i}}while(0);c[h>>2]=128;i=b+32|0;l=c[i>>2]|0;c[l>>2]=d;c[l+4>>2]=e;e=b+36|0;b=f;l=1;d=124;while(1){n=l-1|0;m=c[i>>2]|0;o=c[m+(n<<3)>>2]|0;q=c[m+(n<<3)+4>>2]|0;if((n|0)>(d|0)){p=c[h>>2]|0;r=p<<1;do{if((p|0)<(r|0)){if((c[j>>2]|0)>=(r|0)){s=m;break}if((r|0)==0){t=0;u=p}else{c[9806]=(c[9806]|0)+1;v=aDx((p<<4|4)+15|0)|0;if((v|0)==0){w=0}else{x=-(v+4|0)&15;c[v+x>>2]=v;w=v+(x+4)|0}t=w;u=c[h>>2]|0}if((u|0)>0){x=0;do{v=t+(x<<3)|0;if((v|0)!=0){y=(c[i>>2]|0)+(x<<3)|0;z=v;v=c[y+4>>2]|0;c[z>>2]=c[y>>2];c[z+4>>2]=v}x=x+1|0;}while((x|0)<(u|0))}x=c[i>>2]|0;if((x|0)!=0){if((a[e]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[x-8+4>>2]|0)}c[i>>2]=0}a[e]=1;c[i>>2]=t;c[j>>2]=r;s=t}else{s=m}}while(0);c[h>>2]=r;A=r-4|0;B=s}else{A=d;B=m}do{if((o|0)==(q|0)){p=o+40|0;if((c[p>>2]|0)==0){C=n;break}k=o+36|0;x=B+(n<<3)|0;v=c[k>>2]|0;c[x>>2]=v;c[x+4>>2]=v;v=(c[i>>2]|0)+(l<<3)|0;x=c[p>>2]|0;c[v>>2]=x;c[v+4>>2]=x;x=(c[i>>2]|0)+(l+1<<3)|0;v=c[p>>2]|0;c[x>>2]=c[k>>2];c[x+4>>2]=v;C=l+2|0}else{if(+g[o>>2]>+g[q+16>>2]){C=n;break}if(+g[o+16>>2]<+g[q>>2]){C=n;break}if(+g[o+4>>2]>+g[q+20>>2]){C=n;break}if(+g[o+20>>2]<+g[q+4>>2]){C=n;break}if(+g[o+8>>2]>+g[q+24>>2]){C=n;break}if(+g[o+24>>2]<+g[q+8>>2]){C=n;break}v=o+40|0;x=q+40|0;k=(c[x>>2]|0)!=0;if((c[v>>2]|0)==0){if(k){p=B+(n<<3)|0;z=o;y=0;D=c[q+36>>2]|y;c[p>>2]=z;c[p+4>>2]=D;D=(c[i>>2]|0)+(l<<3)|0;p=c[x>>2]|y;c[D>>2]=z;c[D+4>>2]=p;C=l+1|0;break}else{dA[c[(c[b>>2]|0)+8>>2]&511](f,o,q);C=n;break}}else{p=B+(n<<3)|0;D=o+36|0;z=c[D>>2]|0;if(k){k=q+36|0;y=p;E=c[k>>2]|0;c[y>>2]=z;c[y+4>>2]=E;E=(c[i>>2]|0)+(l<<3)|0;y=c[k>>2]|0;c[E>>2]=c[v>>2];c[E+4>>2]=y;y=(c[i>>2]|0)+(l+1<<3)|0;E=c[x>>2]|0;c[y>>2]=c[D>>2];c[y+4>>2]=E;E=(c[i>>2]|0)+(l+2<<3)|0;y=c[x>>2]|0;c[E>>2]=c[v>>2];c[E+4>>2]=y;C=l+3|0;break}else{y=p;p=0;E=q;c[y>>2]=z|p;c[y+4>>2]=E;y=(c[i>>2]|0)+(l<<3)|0;c[y>>2]=c[v>>2]|p;c[y+4>>2]=E;C=l+1|0;break}}}}while(0);if((C|0)==0){break}else{l=C;d=A}}return}function awM(a,b){a=a|0;b=b|0;awR(a,b);awS(a,b);return}function awN(a){a=a|0;return}function awO(a){a=a|0;return c[a+96>>2]|0}function awP(a){a=a|0;return c[a+96>>2]|0}function awQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0;e=c[a+4>>2]|0;f=c[a+44>>2]|0;a=(f|0)==0;do{if((e|0)==0){if(a){h=0.0;i=0.0;j=0.0;k=0.0;l=0.0;m=0.0;n=0.0;o=0.0;break}h=+g[f>>2];i=+g[f+4>>2];j=+g[f+8>>2];k=+g[f+12>>2];l=+g[f+16>>2];m=+g[f+20>>2];n=+g[f+24>>2];o=+g[f+28>>2]}else{p=+g[e>>2];if(a){h=p;i=+g[e+4>>2];j=+g[e+8>>2];k=+g[e+12>>2];l=+g[e+16>>2];m=+g[e+20>>2];n=+g[e+24>>2];o=+g[e+28>>2];break}else{q=+g[f>>2];r=+g[e+16>>2];s=+g[f+16>>2];t=+g[e+4>>2];u=+g[f+4>>2];v=+g[e+20>>2];w=+g[f+20>>2];x=+g[e+8>>2];y=+g[f+8>>2];z=+g[e+24>>2];A=+g[f+24>>2];h=p<q?p:q;i=t<u?t:u;j=x<y?x:y;k=0.0;l=r>s?r:s;m=v>w?v:w;n=z>A?z:A;o=0.0;break}}}while(0);g[b>>2]=h;g[b+4>>2]=i;g[b+8>>2]=j;g[b+12>>2]=k;g[d>>2]=l;g[d+4>>2]=m;g[d+8>>2]=n;g[d+12>>2]=o;return}function awR(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;e=i;i=i+48|0;f=e|0;h=e+32|0;j=b+4|0;k=j|0;l=b+16|0;awu(k,((aa(c[b+112>>2]|0,c[l>>2]|0)|0)/100|0)+1|0);m=b+124|0;if((c[m>>2]|0)!=0){n=((aa(c[b+108>>2]|0,c[b+56>>2]|0)|0)/100|0)+1|0;awu(b+44|0,n);o=(c[m>>2]|0)-n|0;c[m>>2]=(o|0)<0?0:o}o=b+104|0;n=((c[o>>2]|0)+1|0)%2|0;c[o>>2]=n;o=c[b+84+(n<<2)>>2]|0;if((o|0)!=0){n=b+92|0;p=f;q=f+16|0;f=b+44|0;r=b+8|0;s=b+48|0;t=f|0;u=b+56|0;v=o;while(1){o=v+56|0;w=c[o>>2]|0;x=v+60|0;y=v+52|0;z=c[y>>2]|0;if((z|0)==0){c[b+84+(c[x>>2]<<2)>>2]=w}else{c[z+56>>2]=w}z=c[o>>2]|0;if((z|0)!=0){c[z+52>>2]=c[y>>2]}c[y>>2]=0;c[o>>2]=c[n>>2];o=c[n>>2]|0;if((o|0)!=0){c[o+52>>2]=v}c[n>>2]=v;o=v+48|0;y=c[o>>2]|0;aww(k,y)|0;z=c[r>>2]|0;if((z|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[z-44+40>>2]|0)}c[r>>2]=y;c[l>>2]=(c[l>>2]|0)-1;y=v+16|0;c[p>>2]=c[y>>2];c[p+4>>2]=c[y+4>>2];c[p+8>>2]=c[y+8>>2];c[p+12>>2]=c[y+12>>2];y=v+32|0;c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];y=c[s>>2]|0;do{if((y|0)==0){c[9806]=(c[9806]|0)+1;z=aDx(63)|0;if((z|0)==0){A=0;break}B=-(z+4|0)&15;C=z+(B+4)|0;c[z+B>>2]=z;if((C|0)==0){A=0;break}aDD(C|0,0,44);A=C}else{c[s>>2]=0;A=y}}while(0);c[A+32>>2]=0;c[A+36>>2]=v;c[A+40>>2]=0;y=A;aDC(y|0,p|0,32)|0;awv(f,c[t>>2]|0,A);c[u>>2]=(c[u>>2]|0)+1;c[o>>2]=A;c[x>>2]=2;if((w|0)==0){break}else{v=w}}c[m>>2]=c[u>>2];a[b+154|0]=1}c[h>>2]=23368;c[h+4>>2]=b;u=b+153|0;m=a[u]|0;if((m&1)==0){D=m}else{awL(k,c[j>>2]|0,c[b+44>>2]|0,h|0);D=a[u]|0}if((D&1)!=0){D=c[j>>2]|0;awL(k,D,D,h|0)}h=b+154|0;L3605:do{if((a[h]&1)!=0){D=b+96|0;k=c[D>>2]|0;j=cA[c[(c[k>>2]|0)+28>>2]&4095](k)|0;k=j+4|0;u=c[k>>2]|0;if((u|0)<=0){break}m=(aa(c[b+116>>2]|0,u)|0)/100|0;v=c[b+120>>2]|0;A=(v|0)>(m|0)?v:m;m=(u|0)<(A|0)?u:A;A=b+144|0;do{if((m|0)>0){v=j+12|0;t=m;f=0;p=u;while(1){s=((c[A>>2]|0)+f|0)%(p|0)|0;q=c[v>>2]|0;l=c[q+(s<<4)>>2]|0;r=c[q+(s<<4)+4>>2]|0;s=c[l+48>>2]|0;q=c[r+48>>2]|0;do{if(+g[s>>2]>+g[q+16>>2]){E=3013}else{if(+g[s+16>>2]<+g[q>>2]){E=3013;break}if(+g[s+4>>2]>+g[q+20>>2]){E=3013;break}if(+g[s+20>>2]<+g[q+4>>2]){E=3013;break}if(+g[s+8>>2]>+g[q+24>>2]){E=3013;break}if(+g[s+24>>2]<+g[q+8>>2]){E=3013}else{F=f;G=t;H=p}}}while(0);if((E|0)==3013){E=0;q=c[D>>2]|0;s=q|0;n=c[(c[q>>2]|0)+12>>2]|0;dE[n&127](s,l,r,d)|0;F=f-1|0;G=t-1|0;H=c[k>>2]|0}s=F+1|0;if((s|0)<(G|0)){t=G;f=s;p=H}else{break}}if((H|0)>0){I=H;J=G;break}c[A>>2]=0;break L3605}else{I=u;J=m}}while(0);c[A>>2]=((c[A>>2]|0)+J|0)%(I|0)|0}}while(0);I=b+140|0;c[I>>2]=(c[I>>2]|0)+1;c[b+120>>2]=1;a[h]=0;h=b+128|0;I=c[h>>2]|0;if((I|0)==0){g[b+136>>2]=0.0;K=c[b+132>>2]|0;L=b+132|0;M=K>>>1;c[L>>2]=M;N=I>>>1;c[h>>2]=N;i=e;return}else{J=c[b+132>>2]|0;g[b+136>>2]=+(J>>>0>>>0)/+(I>>>0>>>0);K=J;L=b+132|0;M=K>>>1;c[L>>2]=M;N=I>>>1;c[h>>2]=N;i=e;return}}function awS(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;e=b+96|0;b=c[e>>2]|0;if(!(cA[c[(c[b>>2]|0)+56>>2]&4095](b)|0)){return}b=c[e>>2]|0;f=cA[c[(c[b>>2]|0)+28>>2]&4095](b)|0;b=f+4|0;h=c[b>>2]|0;if((h|0)>1){arQ(f,0,h-1|0);i=c[b>>2]|0}else{i=h}do{if((i|0)>0){h=f+12|0;j=0;k=0;l=0;m=0;n=i;while(1){o=c[h>>2]|0;p=o+(l<<4)|0;q=p|0;r=c[q>>2]|0;s=o+(l<<4)+4|0;o=c[s>>2]|0;if((r|0)==(k|0)){if((o|0)==(j|0)){t=k;u=j;v=3037}else{w=k;v=3031}}else{w=r;v=3031}do{if((v|0)==3031){v=0;r=c[w+48>>2]|0;x=c[o+48>>2]|0;if(+g[r>>2]>+g[x+16>>2]){t=w;u=o;v=3037;break}if(+g[r+16>>2]<+g[x>>2]){t=w;u=o;v=3037;break}if(+g[r+4>>2]>+g[x+20>>2]){t=w;u=o;v=3037;break}if(+g[r+20>>2]<+g[x+4>>2]){t=w;u=o;v=3037;break}if(+g[r+8>>2]>+g[x+24>>2]){t=w;u=o;v=3037;break}if(+g[r+24>>2]<+g[x+8>>2]){t=w;u=o;v=3037}else{y=m;z=w;A=o;B=n}}}while(0);if((v|0)==3037){v=0;o=c[e>>2]|0;dA[c[(c[o>>2]|0)+32>>2]&511](o,p,d);c[q>>2]=0;c[s>>2]=0;y=m+1|0;z=t;A=u;B=c[b>>2]|0}o=l+1|0;if((o|0)<(B|0)){j=A;k=z;l=o;m=y;n=B}else{break}}if((B|0)>1){arQ(f,0,B-1|0);C=c[b>>2]|0}else{C=B}n=C-y|0;if((y|0)>=0){D=n;break}m=f+8|0;if((c[m>>2]|0)<(n|0)){if((C|0)==(y|0)){E=0;F=y}else{c[9806]=(c[9806]|0)+1;l=aDx((n<<4|4)+15|0)|0;if((l|0)==0){G=0}else{k=-(l+4|0)&15;c[l+k>>2]=l;G=l+(k+4)|0}E=G;F=c[b>>2]|0}if((F|0)>0){k=0;do{l=c[h>>2]|0;c[E+(k<<4)>>2]=c[l+(k<<4)>>2];c[E+(k<<4)+4>>2]=c[l+(k<<4)+4>>2];c[E+(k<<4)+8>>2]=c[l+(k<<4)+8>>2];c[E+(k<<4)+12>>2]=c[l+(k<<4)+12>>2];k=k+1|0;}while((k|0)<(F|0))}k=c[h>>2]|0;l=f+16|0;if((k|0)!=0){if((a[l]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[k-16+12>>2]|0)}c[h>>2]=0}a[l]=1;c[h>>2]=E;c[m>>2]=n;H=C}else{H=C}while(1){l=H+1|0;aDD((c[h>>2]|0)+(H<<4)|0,0,16);if((l|0)<(n|0)){H=l}else{D=n;break}}}else{D=i}}while(0);c[b>>2]=D;return}function awT(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;if((c[b+16>>2]|0)!=(-(c[b+56>>2]|0)|0)){return}d=b+44|0;e=b+4|0;f=c[e>>2]|0;if((f|0)!=0){awq(e,f)}f=b+8|0;e=c[f>>2]|0;if((e|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[e-44+40>>2]|0)}c[f>>2]=0;c[b+12>>2]=-1;f=b+28|0;e=b+36|0;g=c[e>>2]|0;h=b+40|0;if((g|0)!=0){if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-8+4>>2]|0)}c[e>>2]=0}a[h]=1;c[e>>2]=0;c[f>>2]=0;c[b+32>>2]=0;c[b+20>>2]=0;f=c[d>>2]|0;if((f|0)!=0){awq(d,f)}f=b+48|0;d=c[f>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-44+40>>2]|0)}c[f>>2]=0;c[b+52>>2]=-1;f=b+68|0;d=b+76|0;e=c[d>>2]|0;h=b+80|0;if((e|0)!=0){if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[e-8+4>>2]|0)}c[d>>2]=0}a[h]=1;c[d>>2]=0;c[f>>2]=0;c[b+72>>2]=0;c[b+60>>2]=0;a[b+153|0]=0;a[b+154|0]=1;c[b+104>>2]=0;c[b+124>>2]=0;c[b+108>>2]=1;c[b+112>>2]=0;c[b+116>>2]=10;c[b+120>>2]=1;aDD(b+84|0,0,12);aDD(b+128|0,0,24);return}function awU(a){a=a|0;if((a|0)==0){return}aDB(a);return}function awV(a,b){a=a|0;b=b|0;var d=0;d=c[a+4>>2]|0;dj[c[(c[d>>2]|0)+8>>2]&511](d,c[b+36>>2]|0)|0;return}function awW(a){a=a|0;if((a|0)==0){return}aDB(a);return}function awX(a,b){a=a|0;b=b|0;var d=0;d=c[a+4>>2]|0;dj[c[(c[d>>2]|0)+8>>2]&511](d|0,c[b+36>>2]|0)|0;return}function awY(a){a=a|0;if((a|0)==0){return}aDB(a);return}function awZ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((b|0)==(d|0)){return}e=a+4|0;a=c[(c[e>>2]|0)+96>>2]|0;cS[c[(c[a>>2]|0)+8>>2]&511](a|0,c[b+36>>2]|0,c[d+36>>2]|0)|0;d=(c[e>>2]|0)+120|0;c[d>>2]=(c[d>>2]|0)+1;return}function aw_(a,b){a=a|0;b=b|0;dA[c[(c[a>>2]|0)+8>>2]&511](a,b,c[(c[a+8>>2]|0)+48>>2]|0);return}function aw$(d,e){d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;c[d>>2]=19872;c[9806]=(c[9806]|0)+1;f=aDx(379)|0;do{if((f|0)==0){h=0}else{i=-(f+4|0)&15;j=f+(i+4)|0;c[f+i>>2]=f;if((j|0)==0){h=0;break}g[f+(i+312)>>2]=9999999747378752.0e-20;k=f+(i|336)|0;b[k>>1]=b[k>>1]&-16;h=j}}while(0);f=d+32|0;c[f>>2]=h;h=(c[e+28>>2]|0)==0;c[9806]=(c[9806]|0)+1;j=aDx(23)|0;if((j|0)==0){l=0}else{k=-(j+4|0)&15;c[j+k>>2]=j;l=j+(k+4)|0}k=(l|0)==0;if(h){if(k){m=0}else{c[l>>2]=19760;m=l}c[d+36>>2]=m}else{if(k){n=0}else{c[l>>2]=19960;n=l}c[d+36>>2]=n}c[9806]=(c[9806]|0)+1;n=aDx(43)|0;do{if((n|0)==0){o=0}else{l=-(n+4|0)&15;k=n+(l+4)|0;c[n+l>>2]=n;if((k|0)==0){o=0;break}m=c[f>>2]|0;h=c[d+36>>2]|0;a[n+(l+8)|0]=0;c[k>>2]=19384;c[n+(l+20)>>2]=0;c[n+(l+24)>>2]=3;c[n+(l|16)>>2]=m;c[n+(l+12)>>2]=h;o=k}}while(0);c[d+40>>2]=o;c[9806]=(c[9806]|0)+1;o=aDx(27)|0;do{if((o|0)==0){p=0}else{n=-(o+4|0)&15;f=o+(n+4)|0;c[o+n>>2]=o;if((f|0)==0){p=0;break}a[o+(n+8)|0]=0;c[f>>2]=19192;p=f}}while(0);c[d+44>>2]=p;c[9806]=(c[9806]|0)+1;p=aDx(27)|0;do{if((p|0)==0){q=0}else{o=-(p+4|0)&15;f=p+(o+4)|0;c[p+o>>2]=p;if((f|0)==0){q=0;break}a[p+(o+8)|0]=0;c[f>>2]=19160;q=f}}while(0);c[d+48>>2]=q;c[9806]=(c[9806]|0)+1;q=aDx(27)|0;do{if((q|0)==0){r=0}else{p=-(q+4|0)&15;f=q+(p+4)|0;c[q+p>>2]=q;if((f|0)==0){r=0;break}a[q+(p+8)|0]=0;c[f>>2]=19320;r=f}}while(0);c[d+52>>2]=r;c[9806]=(c[9806]|0)+1;r=aDx(27)|0;do{if((r|0)==0){s=0}else{q=-(r+4|0)&15;f=r+(q+4)|0;c[r+q>>2]=r;if((f|0)==0){s=0;break}a[r+(q+8)|0]=0;c[f>>2]=19288;s=f}}while(0);c[d+56>>2]=s;c[9806]=(c[9806]|0)+1;s=aDx(27)|0;do{if((s|0)==0){t=0}else{r=-(s+4|0)&15;f=s+(r+4)|0;c[s+r>>2]=s;if((f|0)==0){t=0;break}a[s+(r+8)|0]=0;c[f>>2]=19416;t=f}}while(0);c[d+60>>2]=t;c[9806]=(c[9806]|0)+1;t=aDx(27)|0;do{if((t|0)==0){u=0}else{s=-(t+4|0)&15;f=t+(s+4)|0;c[t+s>>2]=t;if((f|0)==0){u=0;break}a[t+(s+8)|0]=0;c[f>>2]=19224;u=f}}while(0);c[d+64>>2]=u;c[9806]=(c[9806]|0)+1;u=aDx(27)|0;do{if((u|0)==0){v=0}else{t=-(u+4|0)&15;f=u+(t+4)|0;c[u+t>>2]=u;if((f|0)==0){v=0;break}a[u+(t+8)|0]=0;c[f>>2]=19128;v=f}}while(0);c[d+72>>2]=v;c[9806]=(c[9806]|0)+1;v=aDx(27)|0;do{if((v|0)==0){w=0}else{u=-(v+4|0)&15;f=v+(u+4)|0;c[v+u>>2]=v;if((f|0)==0){w=0;break}a[v+(u+8)|0]=0;c[f>>2]=19128;w=f}}while(0);c[d+76>>2]=w;a[w+4|0]=1;c[9806]=(c[9806]|0)+1;w=aDx(27)|0;do{if((w|0)==0){x=0}else{v=-(w+4|0)&15;f=w+(v+4)|0;c[w+v>>2]=w;if((f|0)==0){x=0;break}a[w+(v+8)|0]=0;c[f>>2]=19352;x=f}}while(0);c[d+68>>2]=x;c[9806]=(c[9806]|0)+1;x=aDx(35)|0;do{if((x|0)==0){y=0}else{w=-(x+4|0)&15;f=x+(w+4)|0;c[x+w>>2]=x;if((f|0)==0){y=0;break}a[x+(w+8)|0]=0;c[f>>2]=19256;c[x+(w+12)>>2]=1;c[x+(w|16)>>2]=1;y=f}}while(0);c[d+84>>2]=y;c[9806]=(c[9806]|0)+1;y=aDx(35)|0;do{if((y|0)==0){z=0}else{x=-(y+4|0)&15;f=y+(x+4)|0;c[y+x>>2]=y;if((f|0)==0){z=0;break}a[y+(x+8)|0]=0;c[f>>2]=19256;c[y+(x+12)>>2]=1;c[y+(x|16)>>2]=1;z=f}}while(0);c[d+80>>2]=z;a[z+4|0]=1;z=c[e+20>>2]|0;y=(z|0)<36?36:z;z=(y|0)>80?y:80;y=(z|0)>44?z:44;z=e|0;f=d+12|0;if((c[z>>2]|0)==0){a[f]=1;c[9806]=(c[9806]|0)+1;x=aDx(39)|0;do{if((x|0)==0){A=0}else{w=-(x+4|0)&15;v=x+(w+4)|0;c[x+w>>2]=x;if((v|0)==0){A=0;break}u=c[e+24>>2]|0;aDD(v|0,0,17);c[x+(w+12)>>2]=0;c[9806]=(c[9806]|0)+1;t=aDx(u+19|0)|0;if((t|0)==0){B=0}else{s=-(t+4|0)&15;c[t+s>>2]=t;B=t+(s+4)|0}c[v>>2]=B;c[x+(w+8)>>2]=u;A=v}}while(0);c[d+8>>2]=A}else{a[f]=0;c[d+8>>2]=c[z>>2]}z=e+4|0;f=d+20|0;if((c[z>>2]|0)==0){a[f]=1;c[9806]=(c[9806]|0)+1;A=aDx(39)|0;do{if((A|0)==0){C=0}else{x=-(A+4|0)&15;B=A+(x+4)|0;c[A+x>>2]=A;if((B|0)==0){C=0;break}v=B;u=c[e+12>>2]|0;w=B;c[w>>2]=1140;B=A+(x+8)|0;c[B>>2]=u;c[9806]=(c[9806]|0)+1;s=aDx((u*1140|0)+19|0)|0;if((s|0)==0){D=0}else{u=-(s+4|0)&15;c[s+u>>2]=s;D=s+(u+4)|0}c[A+(x+20)>>2]=D;c[A+(x|16)>>2]=D;u=c[B>>2]|0;c[A+(x+12)>>2]=u;x=u-1|0;if((x|0)==0){E=D}else{u=D;B=x;x=c[w>>2]|0;while(1){c[u>>2]=u+x;s=c[w>>2]|0;t=u+s|0;r=B-1|0;if((r|0)==0){E=t;break}else{u=t;B=r;x=s}}}c[E>>2]=0;C=v}}while(0);c[d+16>>2]=C}else{a[f]=0;c[d+16>>2]=c[z>>2]}z=e+8|0;f=d+28|0;if((c[z>>2]|0)!=0){a[f]=0;c[d+24>>2]=c[z>>2];return}a[f]=1;c[9806]=(c[9806]|0)+1;f=aDx(39)|0;do{if((f|0)==0){F=0}else{z=-(f+4|0)&15;C=f+(z+4)|0;c[f+z>>2]=f;if((C|0)==0){F=0;break}E=C;D=c[e+16>>2]|0;A=C;c[A>>2]=y;C=f+(z+8)|0;c[C>>2]=D;x=aa(D,y)|0;c[9806]=(c[9806]|0)+1;D=aDx(x+19|0)|0;if((D|0)==0){G=0}else{x=-(D+4|0)&15;c[D+x>>2]=D;G=D+(x+4)|0}c[f+(z+20)>>2]=G;c[f+(z|16)>>2]=G;x=c[C>>2]|0;c[f+(z+12)>>2]=x;z=x-1|0;if((z|0)==0){H=G}else{x=G;C=z;z=c[A>>2]|0;while(1){c[x>>2]=x+z;D=c[A>>2]|0;B=x+D|0;u=C-1|0;if((u|0)==0){H=B;break}else{x=B;C=u;z=D}}}c[H>>2]=0;F=E}}while(0);c[d+24>>2]=F;return}function aw0(a){a=a|0;axc(a);if((a|0)==0){return}aDB(a);return}function aw1(a){a=a|0;return}function aw2(a){a=a|0;return}function aw3(a){a=a|0;return}function aw4(a){a=a|0;return}function aw5(a){a=a|0;return}function aw6(a){a=a|0;return}function aw7(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=(b|0)==8;f=(d|0)==8;L3855:do{if(e&f){g=a+64|0}else{if(e&(d|0)==1){g=a+72|0;break}if((b|0)==1&f){g=a+76|0;break}if((d|b|0)==0){g=a+68|0;break}h=(b|0)<20;if(h&(d|0)==28){g=a+84|0;break}i=(d|0)<20;if(i&(b|0)==28){g=a+80|0;break}do{if(h){if(i){g=a+40|0;break L3855}if((d-21|0)>>>0>=9){break}g=a+44|0;break L3855}else{if(!i){break}if((b-21|0)>>>0>=9){break}g=a+48|0;break L3855}}while(0);if((b|0)==31){g=a+52|0;break}if((d|0)==31){g=a+56|0;break}else{g=a+60|0;break}}}while(0);return c[g>>2]|0}function aw8(a){a=a|0;return c[a+16>>2]|0}function aw9(a){a=a|0;return c[a+24>>2]|0}function axa(a){a=a|0;return c[a+8>>2]|0}function axb(a){a=a|0;return c[a+32>>2]|0}function axc(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c[b>>2]=19872;do{if((a[b+12|0]&1)!=0){d=b+8|0;e=c[d>>2]|0;f=e+8|0;do{if((c[f>>2]|0)==0){g=e|0;do{if((a[e+16|0]&1)==0){h=c[g>>2]|0;if((h|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[h-4>>2]|0)}}while(0);c[g>>2]=0;c[f>>2]=0;h=c[d>>2]|0;i=h+8|0;if((c[i>>2]|0)!=0){j=h;break}k=h|0;do{if((a[h+16|0]&1)==0){l=c[k>>2]|0;if((l|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[l-4>>2]|0)}}while(0);c[k>>2]=0;c[i>>2]=0;j=c[d>>2]|0}else{j=e}}while(0);if((j|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[j-20+16>>2]|0)}}while(0);do{if((a[b+28|0]&1)!=0){j=b+24|0;e=c[j>>2]|0;d=c[e+16>>2]|0;if((d|0)==0){m=e}else{c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0);m=c[j>>2]|0}if((m|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[m-20+16>>2]|0)}}while(0);do{if((a[b+20|0]&1)!=0){m=b+16|0;j=c[m>>2]|0;d=c[j+16>>2]|0;if((d|0)==0){n=j}else{c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0);n=c[m>>2]|0}if((n|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[n-20+16>>2]|0)}}while(0);n=b+40|0;m=c[n>>2]|0;ct[c[c[m>>2]>>2]&2047](m);m=c[n>>2]|0;if((m|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[m-8+4>>2]|0)}m=b+44|0;n=c[m>>2]|0;ct[c[c[n>>2]>>2]&2047](n);n=c[m>>2]|0;if((n|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-8+4>>2]|0)}n=b+48|0;m=c[n>>2]|0;ct[c[c[m>>2]>>2]&2047](m);m=c[n>>2]|0;if((m|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[m-8+4>>2]|0)}m=b+52|0;n=c[m>>2]|0;ct[c[c[n>>2]>>2]&2047](n);n=c[m>>2]|0;if((n|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-8+4>>2]|0)}n=b+56|0;m=c[n>>2]|0;ct[c[c[m>>2]>>2]&2047](m);m=c[n>>2]|0;if((m|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[m-8+4>>2]|0)}m=b+60|0;n=c[m>>2]|0;ct[c[c[n>>2]>>2]&2047](n);n=c[m>>2]|0;if((n|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-8+4>>2]|0)}n=b+64|0;m=c[n>>2]|0;ct[c[c[m>>2]>>2]&2047](m);m=c[n>>2]|0;if((m|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[m-8+4>>2]|0)}m=b+72|0;n=c[m>>2]|0;ct[c[c[n>>2]>>2]&2047](n);n=c[m>>2]|0;if((n|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-8+4>>2]|0)}n=b+76|0;m=c[n>>2]|0;ct[c[c[m>>2]>>2]&2047](m);m=c[n>>2]|0;if((m|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[m-8+4>>2]|0)}m=b+68|0;n=c[m>>2]|0;ct[c[c[n>>2]>>2]&2047](n);n=c[m>>2]|0;if((n|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-8+4>>2]|0)}n=b+84|0;m=c[n>>2]|0;ct[c[c[m>>2]>>2]&2047](m);m=c[n>>2]|0;if((m|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[m-8+4>>2]|0)}m=b+80|0;n=c[m>>2]|0;ct[c[c[n>>2]>>2]&2047](n);n=c[m>>2]|0;if((n|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-8+4>>2]|0)}n=c[b+32>>2]|0;if((n|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-360+356>>2]|0)}n=b+36|0;b=c[n>>2]|0;ct[c[c[b>>2]>>2]&2047](b);b=c[n>>2]|0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-4>>2]|0);return}function axd(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axe(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=d|0;d=c[g>>2]|0;h=dj[c[(c[d>>2]|0)+56>>2]&511](d,28)|0;d=(h|0)==0;if((a[b+4|0]&1)==0){if(d){i=0;j=i|0;return j|0}k=h;l=c[b+8>>2]|0;m=c[b+12>>2]|0;n=h;c[n>>2]=22536;o=c[g>>2]|0;p=h+4|0;c[p>>2]=o;c[n>>2]=19920;n=h+8|0;a[n]=0;q=h+12|0;c[q>>2]=0;a[h+16|0]=0;c[h+20>>2]=l;c[h+24>>2]=m;if(!(cS[c[(c[o>>2]|0)+24>>2]&511](o,e,f)|0)){i=k;j=i|0;return j|0}o=c[p>>2]|0;c[q>>2]=cS[c[(c[o>>2]|0)+12>>2]&511](o,e,f)|0;a[n]=1;i=k;j=i|0;return j|0}else{if(d){i=0;j=i|0;return j|0}d=h;k=c[b+8>>2]|0;n=c[b+12>>2]|0;b=h;c[b>>2]=22536;o=c[g>>2]|0;g=h+4|0;c[g>>2]=o;c[b>>2]=19920;b=h+8|0;a[b]=0;q=h+12|0;c[q>>2]=0;a[h+16|0]=1;c[h+20>>2]=k;c[h+24>>2]=n;if(!(cS[c[(c[o>>2]|0)+24>>2]&511](o,f,e)|0)){i=d;j=i|0;return j|0}o=c[g>>2]|0;c[q>>2]=cS[c[(c[o>>2]|0)+12>>2]&511](o,f,e)|0;a[b]=1;i=d;j=i|0;return j|0}return 0}function axf(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axg(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;b=d|0;d=c[b>>2]|0;g=dj[c[(c[d>>2]|0)+56>>2]&511](d,16)|0;if((g|0)==0){h=0;i=h|0;return i|0}d=g;j=g;c[j>>2]=22536;k=c[b>>2]|0;b=g+4|0;c[b>>2]=k;c[j>>2]=20448;j=g+8|0;a[j]=0;l=g+12|0;c[l>>2]=0;if(!(cS[c[(c[k>>2]|0)+24>>2]&511](k,e,f)|0)){h=d;i=h|0;return i|0}k=c[b>>2]|0;c[l>>2]=cS[c[(c[k>>2]|0)+12>>2]&511](k,e,f)|0;a[j]=1;h=d;i=h|0;return i|0}function axh(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=d|0;h=c[g>>2]|0;i=dj[c[(c[h>>2]|0)+56>>2]&511](h,20)|0;if((i|0)==0){j=0;k=j|0;return k|0}h=i;l=c[d+4>>2]|0;d=a[b+4|0]&1;b=i;c[b>>2]=22536;m=c[g>>2]|0;c[i+4>>2]=m;c[b>>2]=19688;b=i+8|0;a[b]=0;g=i+12|0;c[g>>2]=l;a[i+16|0]=d;if((l|0)!=0){j=h;k=j|0;return k|0}c[g>>2]=cS[c[(c[m>>2]|0)+12>>2]&511](m,e,f)|0;a[b]=1;j=h;k=j|0;return k|0}function axj(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axk(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;b=d|0;d=c[b>>2]|0;g=dj[c[(c[d>>2]|0)+56>>2]&511](d,16)|0;if((g|0)==0){h=0;i=h|0;return i|0}d=g;c[d>>2]=22536;j=c[b>>2]|0;c[g+4>>2]=j;c[d>>2]=19832;d=g+8|0;a[d]=0;b=g+12|0;c[b>>2]=0;c[b>>2]=cS[c[(c[j>>2]|0)+12>>2]&511](j,e,f)|0;a[d]=1;h=g;i=h|0;return i|0}function axl(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;e=b|0;b=c[e>>2]|0;d=dj[c[(c[b>>2]|0)+56>>2]&511](b,8)|0;if((d|0)==0){f=0;g=f|0;return g|0}b=d;c[b>>2]=22536;c[d+4>>2]=c[e>>2];c[b>>2]=24040;f=d;g=f|0;return g|0}function axn(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axo(a){a=a|0;return}function axp(a){a=a|0;return}function axq(a){a=a|0;return}function axr(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function axs(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+1.0}function axt(a){a=a|0;return}function axu(a,b){a=a|0;b=b|0;return}function axv(a){a=a|0;return}function axw(a,b,c){a=a|0;b=+b;c=c|0;return}function axx(a){a=a|0;return 16568|0}function axy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function axz(a){a=a|0;return a+16|0}function axA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;e=c[b>>2]|0;b=a+260|0;d=c[b>>2]|0;f=a+268|0;a=0;while(1){if((a|0)>=(d|0)){g=3368;break}h=c[f>>2]|0;i=h+(a<<2)|0;if((c[i>>2]|0)==(e|0)){break}else{a=a+1|0}}if((g|0)==3368){return}c[i>>2]=c[h+(d-1<<2)>>2];c[b>>2]=(c[b>>2]|0)-1;return}function axB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;b=d|0;g=c[b>>2]|0;h=dj[c[(c[g>>2]|0)+56>>2]&511](g,44)|0;if((h|0)==0){i=0;j=i|0;return j|0}g=h;k=h;c[k>>2]=22536;c[h+4>>2]=c[b>>2];c[k>>2]=20296;a[h+24|0]=1;c[h+20>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;a[h+28|0]=1;c[h+32>>2]=c[d+4>>2];a[h+36|0]=0;c[h+40>>2]=c[(c[f+192>>2]|0)+68>>2];aCa(g,e,f);i=g;j=i|0;return j|0}function axC(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;b=d|0;g=c[b>>2]|0;h=dj[c[(c[g>>2]|0)+56>>2]&511](g,44)|0;if((h|0)==0){i=0;j=i|0;return j|0}g=h;k=h;c[k>>2]=22536;c[h+4>>2]=c[b>>2];c[k>>2]=20296;a[h+24|0]=1;c[h+20>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;a[h+28|0]=0;c[h+32>>2]=c[d+4>>2];a[h+36|0]=0;c[h+40>>2]=c[(c[e+192>>2]|0)+68>>2];aCa(g,e,f);i=g;j=i|0;return j|0}function axE(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axF(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;b=d|0;d=c[b>>2]|0;g=dj[c[(c[d>>2]|0)+56>>2]&511](d,80)|0;if((g|0)==0){h=0;i=h|0;return i|0}d=g;c[d>>2]=22536;c[g+4>>2]=c[b>>2];c[d>>2]=19792;a[g+8|0]=1;d=c[b>>2]|0;c[g+12>>2]=21136;b=g+60|0;c[b>>2]=d;c[g+64>>2]=0;c[g+16>>2]=f;c[g+20>>2]=e;j=cS[c[(c[d>>2]|0)+12>>2]&511](d,f,e)|0;c[g+76>>2]=j;e=c[b>>2]|0;cv[c[(c[e>>2]|0)+20>>2]&2047](e,j);h=g;i=h|0;return i|0}function axG(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axH(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;b=d|0;d=c[b>>2]|0;g=dj[c[(c[d>>2]|0)+56>>2]&511](d,80)|0;if((g|0)==0){h=0;i=h|0;return i|0}d=g;c[d>>2]=22536;c[g+4>>2]=c[b>>2];c[d>>2]=19792;a[g+8|0]=0;d=c[b>>2]|0;c[g+12>>2]=21136;b=g+60|0;c[b>>2]=d;c[g+64>>2]=0;c[g+16>>2]=e;c[g+20>>2]=f;j=cS[c[(c[d>>2]|0)+12>>2]&511](d,e,f)|0;c[g+76>>2]=j;f=c[b>>2]|0;cv[c[(c[f>>2]|0)+20>>2]&2047](f,j);h=g;i=h|0;return i|0}function axI(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axJ(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;f=a|0;h=a;i=+dh[c[(c[h>>2]|0)+44>>2]&1023](f);j=+dh[c[(c[h>>2]|0)+44>>2]&1023](f);k=+dh[c[(c[h>>2]|0)+44>>2]&1023](f);f=b+48|0;h=b+52|0;l=+g[h>>2]-j;a=b+56|0;m=+g[a>>2]-k;g[d>>2]=+g[f>>2]-i;g[d+4>>2]=l;g[d+8>>2]=m;g[d+12>>2]=0.0;m=j+ +g[h>>2];j=k+ +g[a>>2];g[e>>2]=i+ +g[f>>2];g[e+4>>2]=m;g[e+8>>2]=j;g[e+12>>2]=0.0;return}function axL(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function axM(b){b=b|0;var d=0,e=0,f=0,g=0;c[b>>2]=25632;d=b+260|0;e=b+268|0;f=c[e>>2]|0;g=b+272|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+264>>2]=0}else{if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+264>>2]=0}c[9804]=(c[9804]|0)+1;aDB(c[b-276+272>>2]|0);return}function axN(b){b=b|0;var d=0,e=0,f=0,g=0;c[b>>2]=25632;d=b+260|0;e=b+268|0;f=c[e>>2]|0;g=b+272|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+264>>2]=0;return}function axO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=c[d>>2]|0;d=b+260|0;f=c[d>>2]|0;g=b+268|0;h=0;while(1){if((h|0)>=(f|0)){break}if((c[(c[g>>2]|0)+(h<<2)>>2]|0)==(e|0)){i=3440;break}else{h=h+1|0}}do{if((i|0)==3440){if((h|0)==(f|0)){break}return}}while(0);h=b+264|0;do{if((f|0)==(c[h>>2]|0)){i=(f|0)==0?1:f<<1;if((f|0)>=(i|0)){j=f;break}if((i|0)==0){k=0;l=f}else{c[9806]=(c[9806]|0)+1;m=aDx((i<<2)+19|0)|0;if((m|0)==0){n=0}else{o=-(m+4|0)&15;c[m+o>>2]=m;n=m+(o+4)|0}k=n;l=c[d>>2]|0}if((l|0)>0){o=0;do{m=k+(o<<2)|0;if((m|0)!=0){c[m>>2]=c[(c[g>>2]|0)+(o<<2)>>2]}o=o+1|0;}while((o|0)<(l|0))}o=c[g>>2]|0;m=b+272|0;if((o|0)!=0){if((a[m]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[o-4>>2]|0)}c[g>>2]=0}a[m]=1;c[g>>2]=k;c[h>>2]=i;j=c[d>>2]|0}else{j=f}}while(0);f=(c[g>>2]|0)+(j<<2)|0;if((f|0)==0){p=j}else{c[f>>2]=e;p=c[d>>2]|0}c[d>>2]=p+1;return}function axP(a){a=a|0;axQ(a);if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-280+276>>2]|0);return}function axQ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=b|0;c[d>>2]=21080;e=b+276|0;f=c[e>>2]|0;ct[c[c[f>>2]>>2]&2047](f);f=c[e>>2]|0;if((f|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-76+72>>2]|0)}c[d>>2]=25632;d=b+260|0;f=b+268|0;e=c[f>>2]|0;g=b+272|0;if((e|0)==0){a[g]=1;c[f>>2]=0;c[d>>2]=0;h=b+264|0;c[h>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[e-4>>2]|0)}c[f>>2]=0;a[g]=1;c[f>>2]=0;c[d>>2]=0;h=b+264|0;c[h>>2]=0;return}function axR(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if((e|0)==0){f=c[b+188>>2]|0}else{f=e}e=c[d>>2]|0;g=b+260|0;h=c[g>>2]|0;i=b+268|0;j=0;while(1){if((j|0)>=(h|0)){break}if((c[(c[i>>2]|0)+(j<<2)>>2]|0)==(e|0)){k=3491;break}else{j=j+1|0}}do{if((k|0)==3491){if((j|0)==(h|0)){break}return}}while(0);j=b+264|0;do{if((h|0)==(c[j>>2]|0)){k=(h|0)==0?1:h<<1;if((h|0)>=(k|0)){l=h;break}if((k|0)==0){m=0;n=h}else{c[9806]=(c[9806]|0)+1;o=aDx((k<<2)+19|0)|0;if((o|0)==0){p=0}else{q=-(o+4|0)&15;c[o+q>>2]=o;p=o+(q+4)|0}m=p;n=c[g>>2]|0}if((n|0)>0){q=0;do{o=m+(q<<2)|0;if((o|0)!=0){c[o>>2]=c[(c[i>>2]|0)+(q<<2)>>2]}q=q+1|0;}while((q|0)<(n|0))}q=c[i>>2]|0;o=b+272|0;if((q|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[q-4>>2]|0)}c[i>>2]=0}a[o]=1;c[i>>2]=m;c[j>>2]=k;l=c[g>>2]|0}else{l=h}}while(0);h=(c[i>>2]|0)+(l<<2)|0;if((h|0)==0){r=l}else{c[h>>2]=e;r=c[g>>2]|0}c[g>>2]=r+1;r=c[b+276>>2]|0;cS[c[(c[r>>2]|0)+8>>2]&511](r,f,d)|0;return}function axS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=c[b>>2]|0;if((e|0)==0){g=c[a+188>>2]|0}else{g=e}e=a+260|0;h=c[e>>2]|0;i=a+268|0;j=0;while(1){if((j|0)>=(h|0)){k=3520;break}l=c[i>>2]|0;m=l+(j<<2)|0;if((c[m>>2]|0)==(f|0)){break}else{j=j+1|0}}if((k|0)==3520){return}c[m>>2]=c[l+(h-1<<2)>>2];c[e>>2]=(c[e>>2]|0)-1;e=c[a+276>>2]|0;dE[c[(c[e>>2]|0)+12>>2]&127](e,g,b,d)|0;return}function axT(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0.0,Z=0,_=0,$=0,aa=0.0,ab=0.0,ac=0.0,ad=0,ae=0.0,af=0.0,ag=0.0,ah=0.0;j=i;i=i+328|0;k=j|0;l=j+16|0;m=j+24|0;n=j+88|0;o=j+152|0;p=j+168|0;q=j+184|0;r=j+200|0;s=j+216|0;t=j+280|0;u=j+296|0;v=j+312|0;w=m;x=d;c[w>>2]=c[x>>2];c[w+4>>2]=c[x+4>>2];c[w+8>>2]=c[x+8>>2];c[w+12>>2]=c[x+12>>2];x=m+16|0;w=d+16|0;c[x>>2]=c[w>>2];c[x+4>>2]=c[w+4>>2];c[x+8>>2]=c[w+8>>2];c[x+12>>2]=c[w+12>>2];w=m+32|0;x=d+32|0;c[w>>2]=c[x>>2];c[w+4>>2]=c[x+4>>2];c[w+8>>2]=c[x+8>>2];c[w+12>>2]=c[x+12>>2];x=d+48|0;w=m+48|0;y=x;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];y=n;w=e;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];w=n+16|0;y=e+16|0;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];y=n+32|0;w=e+32|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];w=e+48|0;y=n+48|0;z=w;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];A=+g[n+52>>2]- +g[m+52>>2];B=+g[n+56>>2]- +g[m+56>>2];g[q>>2]=+g[n+48>>2]- +g[m+48>>2];g[q+4>>2]=A;g[q+8>>2]=B;g[q+12>>2]=0.0;an6(m,n,k,l);B=+g[l>>2];A=B*+g[k+4>>2];C=B*+g[k+8>>2];g[r>>2]=+g[k>>2]*B;g[r+4>>2]=A;g[r+8>>2]=C;g[r+12>>2]=0.0;k=s+4|0;l=k;c[l>>2]=0;c[l+4>>2]=0;l=s+24|0;z=l;c[z>>2]=0;c[z+4>>2]=0;z=s+44|0;aDD(z|0,0,20);ec(m|0,t);C=+g[t>>2];A=+g[t+4>>2];B=+g[t+8>>2];D=+g[t+12>>2];E=2.0/(C*C+A*A+B*B+D*D);F=C*E;G=A*E;H=B*E;E=D*F;I=D*G;J=D*H;D=C*F;F=C*G;K=C*H;C=A*G;G=A*H;A=B*H;g[s>>2]=1.0-(C+A);g[k>>2]=F-J;g[s+8>>2]=K+I;g[s+12>>2]=0.0;g[s+16>>2]=F+J;g[s+20>>2]=1.0-(D+A);g[l>>2]=G-E;g[s+28>>2]=0.0;g[s+32>>2]=K-I;g[s+36>>2]=G+E;g[s+40>>2]=1.0-(D+C);g[z>>2]=0.0;atv(b|0,s,q,r,1.0,o,p);r=a+260|0;if((c[r>>2]|0)<=0){i=j;return}q=a+268|0;a=f;s=u|0;z=o|0;l=u+4|0;k=o+4|0;t=u+8|0;y=o+8|0;o=u+12|0;L=v|0;M=p|0;N=v+4|0;O=p+4|0;P=v+8|0;Q=p+8|0;p=v+12|0;R=x|0;x=d+52|0;S=d+56|0;d=w|0;w=e+52|0;T=e+56|0;e=0;do{U=c[(c[q>>2]|0)+(e<<2)>>2]|0;do{if(dj[c[(c[a>>2]|0)+8>>2]&511](f,c[U+188>>2]|0)|0){V=U+192|0;W=c[V>>2]|0;X=U+4|0;dI[c[(c[W>>2]|0)+8>>2]&1023](W,X,u,v);C=+g[s>>2]+ +g[z>>2];D=+g[l>>2]+ +g[k>>2];E=+g[t>>2]+ +g[y>>2];g[s>>2]=C;g[l>>2]=D;g[t>>2]=E;g[o>>2]=0.0;G=+g[L>>2]+ +g[M>>2];I=+g[N>>2]+ +g[O>>2];K=+g[P>>2]+ +g[Q>>2];g[L>>2]=G;g[N>>2]=I;g[P>>2]=K;g[p>>2]=0.0;A=(G-C)*.5;J=(I-D)*.5;F=(K-E)*.5;H=(G+C)*.5;C=(I+D)*.5;D=(K+E)*.5;E=+g[R>>2]-H;K=+g[x>>2]-C;I=+g[S>>2]-D;G=+g[d>>2]-H;H=+g[w>>2]-C;C=+g[T>>2]-D;D=-0.0-A;B=-0.0-J;Y=-0.0-F;W=E<D|(E>A?8:0)|(K>J?16:0)|(K<B?2:0)|(I>F?32:0)|(I<Y?4:0);Z=G<D|(G>A?8:0)|(H>J?16:0)|(H<B?2:0)|(C>F?32:0)|(C<Y?4:0);if((W&Z|0)!=0){break}Y=G-E;G=H-K;H=C-I;C=-0.0-E;E=-0.0-K;K=-0.0-I;I=1.0;B=0.0;D=1.0;_=1;$=0;while(1){do{if((_&W|0)==0){if((_&Z|0)==0){aa=B;ab=I;break}ac=(C-D*A)/Y;if(ac>=I){aa=B;ab=I;break}aa=B;ab=ac}else{ac=(C-D*A)/Y;if(B>ac){aa=B;ab=I;break}aa=ac;ab=I}}while(0);ad=_<<1;do{if((ad&W|0)==0){if((ad&Z|0)==0){ae=aa;af=ab;break}ac=(E-D*J)/G;if(ac>=ab){ae=aa;af=ab;break}ae=aa;af=ac}else{ac=(E-D*J)/G;if(aa>ac){ae=aa;af=ab;break}ae=ac;af=ab}}while(0);ad=_<<2;do{if((ad&W|0)==0){if((ad&Z|0)==0){ag=ae;ah=af;break}ac=(K-D*F)/H;if(ac>=af){ag=ae;ah=af;break}ag=ae;ah=ac}else{ac=(K-D*F)/H;if(ae>ac){ag=ae;ah=af;break}ag=ac;ah=af}}while(0);ad=$+1|0;if((ad|0)<2){I=ah;B=ag;D=-1.0;_=_<<3;$=ad}else{break}}if(ag>ah){break}atI(b,m,n,U,c[V>>2]|0,X,f,h)}}while(0);e=e+1|0;}while((e|0)<(c[r>>2]|0));i=j;return}
function axU(b,e,f,h,j,k,l,m,n,o,p){b=b|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0.0,D=0.0,E=0,F=0.0,G=0,H=0.0,I=0.0,J=0,K=0.0,L=0,M=0.0,N=0.0,O=0,P=0,R=0.0,S=0,T=0.0,U=0,V=0.0,W=0,X=0.0,Y=0,Z=0.0,_=0,$=0.0,aa=0.0,ab=0,ac=0.0,ad=0,ae=0.0,af=0,ag=0.0,ah=0.0,ai=0,aj=0.0,ak=0,al=0.0,am=0,an=0.0,ao=0.0,ap=0,aq=0,ar=0.0,as=0.0,at=0.0,au=0,av=0,aw=0,ax=0.0,ay=0.0,az=0.0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0,aM=0,aN=0,aO=0,aP=0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0.0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$=0,a0=0,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0.0,a9=0.0,ba=0.0,bb=0.0,bc=0.0,bd=0.0,be=0,bf=0,bg=0,bh=0,bi=0,bj=0,bk=0.0,bl=0.0,bm=0.0,bn=0.0,bo=0.0,bp=0,bq=0,br=0.0,bs=0.0,bt=0.0,bu=0.0,bv=0.0,bw=0.0,bx=0.0,by=0.0,bz=0.0,bA=0.0,bB=0.0,bC=0.0,bD=0.0,bE=0,bF=0.0,bG=0.0,bH=0.0,bI=0,bJ=0.0,bK=0.0,bL=0.0,bM=0,bN=0.0,bO=0.0,bP=0.0,bQ=0.0,bR=0.0,bS=0.0,bT=0,bU=0;p=i;i=i+10944|0;o=p|0;e=p+16|0;b=p+32|0;q=p+160|0;r=p+544|0;s=p+560|0;t=p+576|0;u=p+704|0;v=p+1088|0;w=p+1104|0;x=p+10912|0;y=p+10928|0;z=j+48|0;A=+g[z>>2];B=k+48|0;C=+g[B>>2];D=A-C;E=j+52|0;F=+g[E>>2];G=k+52|0;H=+g[G>>2];I=F-H;J=j+56|0;K=+g[J>>2];L=k+56|0;M=+g[L>>2];N=K-M;g[y>>2]=D;g[y+4>>2]=I;g[y+8>>2]=N;g[y+12>>2]=0.0;O=t|0;c[O>>2]=f;c[t+4>>2]=h;P=k|0;R=+g[P>>2];S=j|0;T=+g[S>>2];U=k+16|0;V=+g[U>>2];W=j+16|0;X=+g[W>>2];Y=k+32|0;Z=+g[Y>>2];_=j+32|0;$=+g[_>>2];aa=R*T+V*X+Z*$;ab=j+4|0;ac=+g[ab>>2];ad=j+20|0;ae=+g[ad>>2];af=j+36|0;ag=+g[af>>2];ah=R*ac+V*ae+Z*ag;ai=j+8|0;aj=+g[ai>>2];ak=j+24|0;al=+g[ak>>2];am=j+40|0;an=+g[am>>2];ao=R*aj+V*al+Z*an;j=k+4|0;Z=+g[j>>2];ap=k+20|0;V=+g[ap>>2];aq=k+36|0;R=+g[aq>>2];ar=T*Z+X*V+$*R;as=ac*Z+ae*V+ag*R;at=aj*Z+al*V+an*R;au=k+8|0;R=+g[au>>2];av=k+24|0;V=+g[av>>2];aw=k+40|0;Z=+g[aw>>2];ax=T*R+X*V+$*Z;ay=ac*R+ae*V+ag*Z;az=aj*R+al*V+an*Z;g[t+8>>2]=aa;g[t+12>>2]=ah;g[t+16>>2]=ao;g[t+20>>2]=0.0;g[t+24>>2]=ar;g[t+28>>2]=as;g[t+32>>2]=at;g[t+36>>2]=0.0;g[t+40>>2]=ax;g[t+44>>2]=ay;g[t+48>>2]=az;g[t+52>>2]=0.0;Z=C-A;A=H-F;F=M-K;g[t+56>>2]=aa;g[t+60>>2]=ar;g[t+64>>2]=ax;g[t+68>>2]=0.0;g[t+72>>2]=ah;g[t+76>>2]=as;g[t+80>>2]=ay;g[t+84>>2]=0.0;g[t+88>>2]=ao;g[t+92>>2]=at;g[t+96>>2]=az;g[t+100>>2]=0.0;g[t+104>>2]=Z*T+A*X+F*$;g[t+108>>2]=Z*ac+A*ae+F*ag;g[t+112>>2]=Z*aj+A*al+F*an;g[t+116>>2]=0.0;k=t+120|0;c[k>>2]=116;aA=t+124|0;c[aA>>2]=0;c[u+364>>2]=0;aDD(u+128|0,0,16);c[u+376>>2]=2;c[u+368>>2]=0;g[u+144>>2]=0.0;g[v>>2]=-0.0-D;g[v+4>>2]=-0.0-I;g[v+8>>2]=-0.0-N;g[v+12>>2]=0.0;L4263:do{if((aCX(u,t,v)|0)==1){aB=w+9792|0;aC=w+9800|0;aD=w+9804|0;aE=w|0;aDD(aB|0,0,16);c[aE>>2]=9;aF=w+40|0;aG=w+9788|0;c[aG>>2]=0;aDD(aF|0,0,20);aH=0;do{aI=128-aH-1|0;aJ=w+2108+(aI*60|0)|0;c[w+2108+(aI*60|0)+48>>2]=0;c[w+2108+(aI*60|0)+52>>2]=c[aC>>2];aI=c[aC>>2]|0;if((aI|0)!=0){c[aI+48>>2]=aJ}c[aC>>2]=aJ;c[aD>>2]=(c[aD>>2]|0)+1;aH=aH+1|0;}while(aH>>>0<128);aH=c[u+372>>2]|0;do{if((c[aH+32>>2]|0)>>>0>1){if(!(aCY(u)|0)){aK=3601;break}aJ=c[aB>>2]|0;if((aJ|0)!=0){aI=w+9796|0;aL=aJ;do{aJ=aL+52|0;aM=c[aJ>>2]|0;aN=aL+48|0;if((aM|0)!=0){c[aM+48>>2]=c[aN>>2]}aM=c[aN>>2]|0;if((aM|0)!=0){c[aM+52>>2]=c[aJ>>2]}if((c[aB>>2]|0)==(aL|0)){c[aB>>2]=c[aJ>>2]}c[aI>>2]=(c[aI>>2]|0)-1;c[aN>>2]=0;c[aJ>>2]=c[aC>>2];aJ=c[aC>>2]|0;if((aJ|0)!=0){c[aJ+48>>2]=aL}c[aC>>2]=aL;c[aD>>2]=(c[aD>>2]|0)+1;aL=c[aB>>2]|0;}while((aL|0)!=0)}c[aE>>2]=0;c[aG>>2]=0;aL=aH|0;aI=c[aL>>2]|0;aJ=aH+12|0;aN=c[aJ>>2]|0;an=+g[aN+16>>2];F=+g[aI+16>>2]-an;al=+g[aN+20>>2];A=+g[aI+20>>2]-al;aj=+g[aN+24>>2];Z=+g[aI+24>>2]-aj;aN=aH+4|0;aM=c[aN>>2]|0;ag=+g[aM+16>>2]-an;ae=+g[aM+20>>2]-al;ac=+g[aM+24>>2]-aj;aO=aH+8|0;aP=c[aO>>2]|0;$=+g[aP+16>>2]-an;an=+g[aP+20>>2]-al;al=+g[aP+24>>2]-aj;if(F*ae*al+(A*ac*$+Z*ag*an-F*ac*an-A*ag*al)-Z*ae*$<0.0){c[aL>>2]=aM;c[aN>>2]=aI;aQ=aH+16|0;aR=aH+20|0;$=+g[aQ>>2];g[aQ>>2]=+g[aR>>2];g[aR>>2]=$;aS=aM;aT=aI}else{aS=aI;aT=aM}aM=aCZ(w,aS,aT,aP,1)|0;aP=aCZ(w,c[aN>>2]|0,c[aL>>2]|0,c[aJ>>2]|0,1)|0;aI=aCZ(w,c[aO>>2]|0,c[aN>>2]|0,c[aJ>>2]|0,1)|0;aN=aCZ(w,c[aL>>2]|0,c[aO>>2]|0,c[aJ>>2]|0,1)|0;aJ=w+9796|0;if((c[aJ>>2]|0)!=4){aK=3601;break}aO=c[aB>>2]|0;$=+g[aO+16>>2];aL=c[aO+52>>2]|0;if((aL|0)==0){aU=aO;aV=$}else{ae=$*$;$=+g[aO+20>>2];aR=aO;aO=aL;while(1){Z=+g[aO+16>>2];al=Z*Z;Z=+g[aO+20>>2];aL=Z>=$&al<ae;aW=aL?aO:aR;aQ=c[aO+52>>2]|0;if((aQ|0)==0){break}else{ae=aL?al:ae;$=aL?Z:$;aR=aW;aO=aQ}}aU=aW;aV=+g[aW+16>>2]}$=+g[aU>>2];ae=+g[aU+4>>2];Z=+g[aU+8>>2];al=+g[aU+12>>2];ag=+g[aU+20>>2];aO=c[aU+24>>2]|0;aR=c[aU+28>>2]|0;aQ=c[aU+32>>2]|0;a[aM+56|0]=0;c[aM+36>>2]=aP;a[aP+56|0]=0;c[aP+36>>2]=aM;a[aM+57|0]=0;c[aM+40>>2]=aI;a[aI+56|0]=1;c[aI+36>>2]=aM;a[aM+58|0]=0;c[aM+44>>2]=aN;a[aN+56|0]=2;c[aN+36>>2]=aM;a[aP+57|0]=2;c[aP+40>>2]=aN;a[aN+58|0]=1;c[aN+44>>2]=aP;a[aP+58|0]=1;c[aP+44>>2]=aI;a[aI+57|0]=2;c[aI+40>>2]=aP;a[aI+58|0]=1;c[aI+44>>2]=aN;a[aN+57|0]=2;c[aN+40>>2]=aI;c[aE>>2]=0;aL=s|0;aX=s+4|0;aY=s+8|0;aZ=aQ;aQ=aR;aR=aO;A=ag;ag=aV;an=al;al=Z;Z=ae;ae=$;aO=0;a_=1;a$=aU;while(1){a0=c[aG>>2]|0;if(a0>>>0>=64){aK=3598;break}c[aL>>2]=0;c[aX>>2]=0;c[aY>>2]=0;c[aG>>2]=a0+1;a1=w+60+(a0<<5)|0;a[a$+59|0]=a_&255;a2=a$|0;a3=a$+4|0;a4=a$+8|0;aC_(u,+g[a2>>2],+g[a3>>2],+g[a4>>2],a1);if(+g[a2>>2]*+g[w+60+(a0<<5)+16>>2]+ +g[a3>>2]*+g[w+60+(a0<<5)+20>>2]+ +g[a4>>2]*+g[w+60+(a0<<5)+24>>2]- +g[a$+16>>2]>9999999747378752.0e-20){a5=1;a6=0}else{aK=3597;break}do{a5=a5&(aC0(w,a_,a1,c[a$+36+(a6<<2)>>2]|0,d[a$+56+a6|0]|0,s)|0);a6=a6+1|0;}while(!(a6>>>0>2|a5^1));if(!a5){aK=3596;break}if((c[aY>>2]|0)>>>0<=2){aK=3596;break}a1=c[aL>>2]|0;a0=c[aX>>2]|0;a[a1+57|0]=2;c[a1+40>>2]=a0;a[a0+58|0]=1;c[a0+44>>2]=a1;a1=a$+52|0;a0=c[a1>>2]|0;a4=a$+48|0;if((a0|0)!=0){c[a0+48>>2]=c[a4>>2]}a0=c[a4>>2]|0;if((a0|0)!=0){c[a0+52>>2]=c[a1>>2]}if((c[aB>>2]|0)==(a$|0)){c[aB>>2]=c[a1>>2]}c[aJ>>2]=(c[aJ>>2]|0)-1;c[a4>>2]=0;c[a1>>2]=c[aC>>2];a1=c[aC>>2]|0;if((a1|0)!=0){c[a1+48>>2]=a$}c[aC>>2]=a$;c[aD>>2]=(c[aD>>2]|0)+1;a1=c[aB>>2]|0;$=+g[a1+16>>2];a4=c[a1+52>>2]|0;if((a4|0)==0){a7=a1}else{ac=$*$;$=+g[a1+20>>2];a0=a1;a1=a4;while(1){F=+g[a1+16>>2];aj=F*F;F=+g[a1+20>>2];a4=F>=$&aj<ac;a3=a4?a1:a0;a2=c[a1+52>>2]|0;if((a2|0)==0){a7=a3;break}else{ac=a4?aj:ac;$=a4?F:$;a0=a3;a1=a2}}}$=+g[a7+20>>2];if($<A){a8=ae;a9=Z;ba=al;bb=an;bc=ag;bd=A;be=aR;bf=aQ;bg=aZ}else{a8=+g[a7>>2];a9=+g[a7+4>>2];ba=+g[a7+8>>2];bb=+g[a7+12>>2];bc=+g[a7+16>>2];bd=$;be=c[a7+24>>2]|0;bf=c[a7+28>>2]|0;bg=c[a7+32>>2]|0}a1=aO+1|0;if(a1>>>0<255){aZ=bg;aQ=bf;aR=be;A=bd;ag=bc;an=bb;al=ba;Z=a9;ae=a8;aO=a1;a_=a_+1|0;a$=a7}else{aK=3600;break}}if((aK|0)==3600){bh=bg;bi=bf;bj=be;bk=bc;bl=bb;bm=ba;bn=a9;bo=a8;bp=(c[aE>>2]|0)==9}else if((aK|0)==3596){c[aE>>2]=4;bh=aZ;bi=aQ;bj=aR;bk=ag;bl=an;bm=al;bn=Z;bo=ae;bp=0}else if((aK|0)==3597){c[aE>>2]=7;bh=aZ;bi=aQ;bj=aR;bk=ag;bl=an;bm=al;bn=Z;bo=ae;bp=0}else if((aK|0)==3598){c[aE>>2]=6;bh=aZ;bi=aQ;bj=aR;bk=ag;bl=an;bm=al;bn=Z;bo=ae;bp=0}A=bk*bo;$=bk*bn;ac=bk*bm;g[aF>>2]=bo;g[w+44>>2]=bn;g[w+48>>2]=bm;g[w+52>>2]=bl;g[w+56>>2]=bk;c[w+36>>2]=3;c[w+4>>2]=bj;c[w+8>>2]=bi;c[w+12>>2]=bh;a$=bi+16|0;F=+g[a$>>2]-A;a_=bi+20|0;aj=+g[a_>>2]-$;aO=bi+24|0;X=+g[aO>>2]-ac;aJ=bh+16|0;T=+g[aJ>>2]-A;aX=bh+20|0;az=+g[aX>>2]-$;aL=bh+24|0;at=+g[aL>>2]-ac;ao=aj*at-X*az;ay=X*T-F*at;at=F*az-aj*T;T=+Q(+(at*at+(ao*ao+ay*ay)));aY=w+20|0;g[aY>>2]=T;ay=+g[aJ>>2]-A;ao=+g[aX>>2]-$;at=+g[aL>>2]-ac;aL=bj+16|0;aj=+g[aL>>2]-A;aX=bj+20|0;az=+g[aX>>2]-$;aJ=bj+24|0;F=+g[aJ>>2]-ac;X=ao*F-at*az;as=at*aj-ay*F;F=ay*az-ao*aj;aj=+Q(+(F*F+(X*X+as*as)));aI=w+24|0;g[aI>>2]=aj;as=+g[aL>>2]-A;X=+g[aX>>2]-$;F=+g[aJ>>2]-ac;ao=+g[a$>>2]-A;A=+g[a_>>2]-$;$=+g[aO>>2]-ac;ac=X*$-F*A;az=F*ao-as*$;$=as*A-X*ao;ao=+Q(+($*$+(ac*ac+az*az)));az=ao+(T+aj);g[aY>>2]=T/az;g[aI>>2]=aj/az;g[w+28>>2]=ao/az;if(bp){bq=0;br=0.0;bs=0.0;bt=0.0;bu=0.0;bv=0.0;bw=0.0;bx=0.0;by=0.0;bz=0.0;break L4263}else{bA=bo;bB=bk;bC=bn;bD=bm;bE=bj}}else{aK=3601}}while(0);if((aK|0)==3601){c[aE>>2]=8;g[aF>>2]=D;aB=w+44|0;g[aB>>2]=I;aD=w+48|0;g[aD>>2]=N;aC=w+52|0;g[aC>>2]=0.0;az=+Q(+(D*D+I*I+N*N));if(az>0.0){ao=1.0/az;bF=ao*N;bG=ao*I;bH=ao*D}else{bF=0.0;bG=0.0;bH=1.0}g[aF>>2]=bH;g[aB>>2]=bG;g[aD>>2]=bF;g[aC>>2]=0.0;g[w+56>>2]=0.0;c[w+36>>2]=1;aC=c[aH>>2]|0;c[w+4>>2]=aC;g[w+20>>2]=1.0;bA=bH;bB=0.0;bC=bG;bD=bF;bE=aC}aC=w+36|0;aD=x|0;aB=x+4|0;aG=x+8|0;ao=0.0;az=0.0;aj=0.0;aI=0;aY=bE;while(1){aO=c[k>>2]|0;a_=(c[O>>2]|0)+(c[aA>>2]|0)|0;if((aO&1|0)==0){bI=aO}else{bI=c[(c[a_>>2]|0)+(aO-1)>>2]|0}dA[bI&511](x,a_,aY|0);T=+g[w+20+(aI<<2)>>2];bJ=aj+ +g[aD>>2]*T;bK=az+T*+g[aB>>2];bL=ao+T*+g[aG>>2];a_=aI+1|0;if(a_>>>0>=(c[aC>>2]|0)>>>0){break}ao=bL;az=bK;aj=bJ;aI=a_;aY=c[w+4+(a_<<2)>>2]|0}aj=+g[aF>>2];az=+g[w+56>>2];ao=+g[w+44>>2];T=+g[w+48>>2];ac=+g[S>>2];$=+g[ab>>2];X=+g[ai>>2];A=+g[z>>2];as=+g[W>>2];F=+g[ad>>2];ay=+g[ak>>2];at=+g[E>>2];ah=+g[_>>2];ax=+g[af>>2];ar=+g[am>>2];aa=+g[J>>2];K=bJ-aj*az;M=bK-az*ao;H=bL-az*T;bq=1;br=-0.0-aj;bs=-0.0-ao;bt=-0.0-T;bu=A+(K*ac+M*$+H*X);bv=at+(K*as+M*F+H*ay);bw=aa+(K*ah+M*ax+H*ar);bx=A+(bJ*ac+bK*$+bL*X);by=at+(bJ*as+bK*F+bL*ay);bz=aa+(bJ*ah+bK*ax+bL*ar)}else{bq=0;br=0.0;bs=0.0;bt=0.0;bu=0.0;bv=0.0;bw=0.0;bx=0.0;by=0.0;bz=0.0}}while(0);if(bq){g[m>>2]=bx;g[m+4>>2]=by;g[m+8>>2]=bz;g[m+12>>2]=0.0;g[n>>2]=bu;g[n+4>>2]=bv;g[n+8>>2]=bw;g[n+12>>2]=0.0;g[l>>2]=br;g[l+4>>2]=bs;g[l+8>>2]=bt;g[l+12>>2]=0.0;bM=1;i=p;return bM|0}bq=b|0;c[bq>>2]=f;f=b+4|0;c[f>>2]=h;bt=+g[P>>2];bs=+g[S>>2];br=+g[U>>2];bw=+g[W>>2];bv=+g[Y>>2];bu=+g[_>>2];bz=bt*bs+br*bw+bv*bu;by=+g[ab>>2];bx=+g[ad>>2];bL=+g[af>>2];bK=bt*by+br*bx+bv*bL;bJ=+g[ai>>2];bF=+g[ak>>2];bD=+g[am>>2];bG=bt*bJ+br*bF+bv*bD;bv=+g[j>>2];br=+g[ap>>2];bt=+g[aq>>2];bC=bs*bv+bw*br+bu*bt;bB=by*bv+bx*br+bL*bt;bH=bJ*bv+bF*br+bD*bt;bt=+g[au>>2];br=+g[av>>2];bv=+g[aw>>2];bA=bs*bt+bw*br+bu*bv;D=by*bt+bx*br+bL*bv;I=bJ*bt+bF*br+bD*bv;aw=b+8|0;g[aw>>2]=bz;av=b+12|0;g[av>>2]=bK;au=b+16|0;g[au>>2]=bG;g[b+20>>2]=0.0;aq=b+24|0;g[aq>>2]=bC;ap=b+28|0;g[ap>>2]=bB;j=b+32|0;g[j>>2]=bH;g[b+36>>2]=0.0;Y=b+40|0;g[Y>>2]=bA;U=b+44|0;g[U>>2]=D;P=b+48|0;g[P>>2]=I;g[b+52>>2]=0.0;bv=+g[B>>2]- +g[z>>2];br=+g[G>>2]- +g[E>>2];bt=+g[L>>2]- +g[J>>2];L=b+56|0;g[L>>2]=bz;G=b+60|0;g[G>>2]=bC;B=b+64|0;g[B>>2]=bA;g[b+68>>2]=0.0;h=b+72|0;g[h>>2]=bK;w=b+76|0;g[w>>2]=bB;x=b+80|0;g[x>>2]=D;g[b+84>>2]=0.0;bI=b+88|0;g[bI>>2]=bG;aA=b+92|0;g[aA>>2]=bH;O=b+96|0;g[O>>2]=I;g[b+100>>2]=0.0;k=b+104|0;g[k>>2]=bv*bs+br*bw+bt*bu;bE=b+108|0;g[bE>>2]=bv*by+br*bx+bt*bL;aK=b+112|0;g[aK>>2]=bv*bJ+br*bF+bt*bD;g[b+116>>2]=0.0;bj=b+120|0;c[bj>>2]=322;bp=b+124|0;c[bp>>2]=0;c[q+364>>2]=0;aDD(q+128|0,0,16);c[q+376>>2]=2;c[q+368>>2]=0;g[q+144>>2]=0.0;if((aCX(q,b,y)|0)!=0){bM=0;i=p;return bM|0}y=q+372|0;q=c[y>>2]|0;if((c[q+32>>2]|0)==0){bN=0.0;bO=0.0;bP=0.0;bQ=0.0;bR=0.0;bS=0.0}else{b=r|0;bh=r+4|0;bi=r+8|0;be=e|0;bf=e+4|0;bg=e+8|0;a7=e+12|0;a5=o|0;a6=o+4|0;s=o+8|0;bD=0.0;bt=0.0;bF=0.0;br=0.0;bJ=0.0;bv=0.0;u=0;aU=q;while(1){bL=+g[aU+16+(u<<2)>>2];q=c[bj>>2]|0;aW=(c[bq>>2]|0)+(c[bp>>2]|0)|0;if((q&1|0)==0){bT=q}else{bT=c[(c[aW>>2]|0)+(q-1)>>2]|0}dA[bT&511](r,aW,c[aU+(u<<2)>>2]|0);bx=bF+bL*+g[b>>2];by=bt+bL*+g[bh>>2];bu=bD+bL*+g[bi>>2];aW=c[(c[y>>2]|0)+(u<<2)>>2]|0;bw=-0.0- +g[aW>>2];bs=-0.0- +g[aW+4>>2];I=-0.0- +g[aW+8>>2];aW=c[bj>>2]|0;q=(c[f>>2]|0)+(c[bp>>2]|0)|0;if((aW&1|0)==0){bU=aW}else{bU=c[(c[q>>2]|0)+(aW-1)>>2]|0}bH=+g[aq>>2]*bw+ +g[ap>>2]*bs+ +g[j>>2]*I;bG=+g[Y>>2]*bw+ +g[U>>2]*bs+ +g[P>>2]*I;g[be>>2]=+g[aw>>2]*bw+ +g[av>>2]*bs+ +g[au>>2]*I;g[bf>>2]=bH;g[bg>>2]=bG;g[a7>>2]=0.0;dA[bU&511](o,q,e);bG=+g[a5>>2];bH=+g[a6>>2];I=+g[s>>2];bs=bv+bL*(+g[k>>2]+(+g[L>>2]*bG+ +g[G>>2]*bH+ +g[B>>2]*I));bw=bJ+bL*(+g[bE>>2]+(bG*+g[h>>2]+bH*+g[w>>2]+I*+g[x>>2]));D=br+bL*(+g[aK>>2]+(bG*+g[bI>>2]+bH*+g[aA>>2]+I*+g[O>>2]));q=u+1|0;aW=c[y>>2]|0;if(q>>>0<(c[aW+32>>2]|0)>>>0){bD=bu;bt=by;bF=bx;br=D;bJ=bw;bv=bs;u=q;aU=aW}else{bN=bu;bO=by;bP=bx;bQ=D;bR=bw;bS=bs;break}}}bv=+g[S>>2];bJ=+g[ab>>2];br=+g[ai>>2];bF=+g[z>>2];bt=+g[W>>2];bD=+g[ad>>2];bs=+g[ak>>2];bw=+g[E>>2];D=+g[_>>2];bx=+g[af>>2];by=+g[am>>2];bu=+g[J>>2];I=bP-bS;bH=bO-bR;bG=bN-bQ;bL=+Q(+(I*I+bH*bH+bG*bG));bB=1.0/(bL>9999999747378752.0e-20?bL:1.0);g[m>>2]=bF+(bP*bv+bO*bJ+bN*br);g[m+4>>2]=bw+(bP*bt+bO*bD+bN*bs);g[m+8>>2]=bu+(bP*D+bO*bx+bN*by);g[m+12>>2]=0.0;g[n>>2]=bF+(bS*bv+bR*bJ+bQ*br);g[n+4>>2]=bw+(bS*bt+bR*bD+bQ*bs);g[n+8>>2]=bu+(bS*D+bR*bx+bQ*by);g[n+12>>2]=0.0;g[l>>2]=bB*I;g[l+4>>2]=bB*bH;g[l+8>>2]=bB*bG;g[l+12>>2]=0.0;bM=0;i=p;return bM|0}function axV(a){a=a|0;return}function axW(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axX(d,e,f,h,j){d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0.0,L=0,M=0.0,N=0.0,O=0.0,P=0.0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0,aM=0,aN=0,aO=0,aP=0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$=0.0,a0=0.0,a1=0.0,a2=0.0,a3=0.0,a4=0.0,a5=0.0,a6=0.0,a7=0.0,a8=0.0,a9=0.0,ba=0,bb=0,bc=0,bd=0,be=0.0,bf=0,bg=0,bh=0.0,bi=0.0,bj=0.0,bk=0,bl=0,bm=0,bn=0,bo=0.0,bp=0.0,bq=0.0,br=0.0,bs=0.0,bt=0.0,bu=0.0,bv=0.0,bw=0.0,bx=0.0,by=0.0,bz=0.0,bA=0,bB=0.0,bC=0.0,bD=0.0,bE=0.0,bF=0.0,bG=0.0,bH=0.0,bI=0.0,bJ=0.0,bK=0,bL=0,bM=0.0,bN=0.0,bO=0.0,bP=0,bQ=0,bR=0,bS=0,bT=0.0,bU=0,bV=0.0,bW=0.0,bX=0.0,bY=0.0,bZ=0.0,b_=0.0,b$=0.0,b0=0.0,b1=0.0;j=i;i=i+256|0;k=j|0;l=j+16|0;m=j+80|0;n=j+144|0;o=j+160|0;p=j+176|0;q=j+192|0;r=j+208|0;s=j+224|0;t=j+240|0;u=k;v=l;w=m;x=d+56|0;g[x>>2]=0.0;y=k|0;z=k+4|0;A=k+8|0;B=k+12|0;C=e;aDD(u|0,0,16);c[v>>2]=c[C>>2];c[v+4>>2]=c[C+4>>2];c[v+8>>2]=c[C+8>>2];c[v+12>>2]=c[C+12>>2];C=l+16|0;v=e+16|0;c[C>>2]=c[v>>2];c[C+4>>2]=c[v+4>>2];c[C+8>>2]=c[v+8>>2];c[C+12>>2]=c[v+12>>2];v=l+32|0;C=e+32|0;c[v>>2]=c[C>>2];c[v+4>>2]=c[C+4>>2];c[v+8>>2]=c[C+8>>2];c[v+12>>2]=c[C+12>>2];C=l+48|0;v=C;D=e+48|0;c[v>>2]=c[D>>2];c[v+4>>2]=c[D+4>>2];c[v+8>>2]=c[D+8>>2];c[v+12>>2]=c[D+12>>2];D=e+64|0;v=D;c[w>>2]=c[v>>2];c[w+4>>2]=c[v+4>>2];c[w+8>>2]=c[v+8>>2];c[w+12>>2]=c[v+12>>2];v=m+16|0;w=e+80|0;c[v>>2]=c[w>>2];c[v+4>>2]=c[w+4>>2];c[v+8>>2]=c[w+8>>2];c[v+12>>2]=c[w+12>>2];w=m+32|0;v=e+96|0;c[w>>2]=c[v>>2];c[w+4>>2]=c[v+4>>2];c[w+8>>2]=c[v+8>>2];c[w+12>>2]=c[v+12>>2];v=m+48|0;w=v;E=e+112|0;c[w>>2]=c[E>>2];c[w+4>>2]=c[E+4>>2];c[w+8>>2]=c[E+8>>2];c[w+12>>2]=c[E+12>>2];E=C|0;F=+g[E>>2];C=v|0;G=+g[C>>2];v=l+52|0;H=+g[v>>2];w=m+52|0;I=+g[w>>2];J=l+56|0;K=+g[J>>2];L=m+56|0;M=+g[L>>2];N=(F+G)*.5;O=(H+I)*.5;P=(K+M)*.5;g[E>>2]=F-N;g[v>>2]=H-O;g[J>>2]=K-P;g[C>>2]=G-N;g[w>>2]=I-O;g[L>>2]=M-P;C=d+28|0;E=d+32|0;if(((c[(c[C>>2]|0)+4>>2]|0)-17|0)>>>0<2){R=((c[(c[E>>2]|0)+4>>2]|0)-17|0)>>>0<2}else{R=0}M=+g[d+44>>2];I=+g[d+48>>2];c[9798]=(c[9798]|0)+1;S=(a[d+52|0]&1)==0;G=S?I:0.0;T=d+64|0;c[T>>2]=0;U=d+4|0;V=U|0;g[V>>2]=0.0;W=d+8|0;g[W>>2]=1.0;X=d+12|0;g[X>>2]=0.0;Y=d+16|0;g[Y>>2]=0.0;Z=d+68|0;c[Z>>2]=0;_=d+60|0;c[_>>2]=-1;I=(S?M:0.0)+G;S=d+24|0;$=c[S>>2]|0;a[$+312|0]=0;c[$>>2]=0;a[$+356|0]=1;g[$+292>>2]=999999984306749400.0;g[$+296>>2]=999999984306749400.0;g[$+300>>2]=999999984306749400.0;g[$+304>>2]=0.0;aa=$+332|0;aDD($+336|0,0,17);b[aa>>1]=b[aa>>1]&-16;aa=e|0;$=e+16|0;ab=e+32|0;ac=e+4|0;ad=e+20|0;ae=e+36|0;af=e+8|0;ag=e+24|0;ah=e+40|0;ai=n|0;aj=n+4|0;ak=n+8|0;al=n+12|0;am=D|0;D=e+80|0;an=e+96|0;ao=e+68|0;ap=e+84|0;aq=e+100|0;ar=e+72|0;as=e+88|0;at=e+104|0;au=o|0;av=o+4|0;aw=o+8|0;ax=o+12|0;ay=l|0;az=p|0;aA=l+4|0;aB=p+4|0;aC=l+8|0;aD=p+8|0;aE=l+48|0;aF=l+16|0;aG=l+20|0;aH=l+24|0;aI=l+32|0;aJ=l+36|0;aK=l+40|0;aL=m|0;aM=q|0;aN=m+4|0;aO=q+4|0;aP=m+8|0;aQ=q+8|0;aR=m+48|0;aS=m+16|0;aT=m+20|0;aU=m+24|0;aV=m+32|0;aW=m+36|0;aX=m+40|0;aY=e+128|0;aZ=U;a_=d+4|0;M=+g[V>>2];K=+g[W>>2];H=+g[X>>2];L4381:do{if(R){F=999999984306749400.0;a$=M;a0=K;a1=H;while(1){a2=-0.0-a$;a3=-0.0-a0;a4=-0.0-a1;a5=+g[ac>>2]*a2+ +g[ad>>2]*a3+ +g[ae>>2]*a4;a6=+g[af>>2]*a2+ +g[ag>>2]*a3+ +g[ah>>2]*a4;g[ai>>2]=+g[aa>>2]*a2+ +g[$>>2]*a3+ +g[ab>>2]*a4;g[aj>>2]=a5;g[ak>>2]=a6;g[al>>2]=0.0;a6=a$*+g[ao>>2]+a0*+g[ap>>2]+a1*+g[aq>>2];a5=a$*+g[ar>>2]+a0*+g[as>>2]+a1*+g[at>>2];g[au>>2]=+g[am>>2]*a$+ +g[D>>2]*a0+ +g[an>>2]*a1;g[av>>2]=a6;g[aw>>2]=a5;g[ax>>2]=0.0;avB(p,c[C>>2]|0,n);avB(q,c[E>>2]|0,o);a5=+g[az>>2];a6=+g[aB>>2];a4=+g[aD>>2];a3=+g[aE>>2]+(+g[ay>>2]*a5+ +g[aA>>2]*a6+ +g[aC>>2]*a4);a2=+g[v>>2]+(a5*+g[aF>>2]+a6*+g[aG>>2]+a4*+g[aH>>2]);a4=+g[aM>>2];a6=+g[aO>>2];a5=+g[aQ>>2];a7=+g[aR>>2]+(+g[aL>>2]*a4+ +g[aN>>2]*a6+ +g[aP>>2]*a5);a8=+g[w>>2]+(a4*+g[aS>>2]+a6*+g[aT>>2]+a5*+g[aU>>2]);a5=a3-a7;a6=a2-a8;a4=+g[V>>2]*a5+ +g[W>>2]*a6+ +g[X>>2]*0.0;if(a4>0.0){if(a4*a4>F*+g[aY>>2]){a9=F;ba=3656;break L4381}}bb=c[S>>2]|0;bc=bb|0;bd=c[bc>>2]|0;if((bd|0)>0){be=+g[bb+308>>2];bf=0;bg=0;while(1){bh=a5- +g[bb+4+(bg<<4)>>2];bi=a6- +g[bb+4+(bg<<4)+4>>2];bj=0.0- +g[bb+4+(bg<<4)+8>>2];bk=bf|bh*bh+bi*bi+bj*bj<=be;bl=bg+1|0;if((bl|0)<(bd|0)){bf=bk;bg=bl}else{bm=bk;break}}}else{bm=0}bg=bb+304|0;do{if(+g[bg>>2]==0.0){if(+g[bb+300>>2]!=0.0){bn=0;break}if(a6!=+g[bb+296>>2]){bn=0;break}bn=a5==+g[bb+292>>2]}else{bn=0}}while(0);if(bn|bm){bo=F;ba=3665;break L4381}be=F-a4;if(be<=F*9.999999974752427e-7){bp=F;bq=be;ba=3667;break L4381}g[bb+292>>2]=a5;g[bb+296>>2]=a6;g[bb+300>>2]=0.0;g[bg>>2]=0.0;a[bb+356|0]=1;g[bb+4+(bd<<4)>>2]=a5;g[bb+4+(bd<<4)+4>>2]=a6;g[bb+4+(bd<<4)+8>>2]=0.0;g[bb+4+(bd<<4)+12>>2]=0.0;bf=c[bc>>2]|0;g[bb+84+(bf<<4)>>2]=a3;g[bb+84+(bf<<4)+4>>2]=a2;g[bb+84+(bf<<4)+8>>2]=0.0;g[bb+84+(bf<<4)+12>>2]=0.0;bf=c[bc>>2]|0;g[bb+164+(bf<<4)>>2]=a7;g[bb+164+(bf<<4)+4>>2]=a8;g[bb+164+(bf<<4)+8>>2]=0.0;g[bb+164+(bf<<4)+12>>2]=0.0;c[bc>>2]=(c[bc>>2]|0)+1;bf=c[S>>2]|0;bk=aBZ(bf)|0;be=+g[bf+276>>2];bj=+g[bf+280>>2];bi=+g[bf+284>>2];bh=+g[bf+288>>2];if(!bk){br=F;ba=3669;break L4381}bs=be*be+bj*bj+bi*bi;if(bs<9.999999974752427e-7){bt=F;bu=be;bv=bj;bw=bi;bx=bh;ba=3671;break L4381}if(F-bs<=F*1.1920928955078125e-7){by=bs;ba=3673;break L4381}g[a_>>2]=be;g[W>>2]=bj;g[X>>2]=bi;g[Y>>2]=bh;bk=c[T>>2]|0;c[T>>2]=bk+1;if((bk|0)>1e3){bz=0.0;bA=0;bB=0.0;bC=0.0;bD=0.0;break L4381}if((c[c[S>>2]>>2]|0)==4){ba=3676;break}else{F=bs;a$=be;a0=bj;a1=bi}}}else{a1=999999984306749400.0;a0=M;a$=K;F=H;while(1){bi=-0.0-a0;bj=-0.0-a$;be=-0.0-F;bs=+g[ac>>2]*bi+ +g[ad>>2]*bj+ +g[ae>>2]*be;bh=+g[af>>2]*bi+ +g[ag>>2]*bj+ +g[ah>>2]*be;g[ai>>2]=+g[aa>>2]*bi+ +g[$>>2]*bj+ +g[ab>>2]*be;g[aj>>2]=bs;g[ak>>2]=bh;g[al>>2]=0.0;bh=a0*+g[ao>>2]+a$*+g[ap>>2]+F*+g[aq>>2];bs=a0*+g[ar>>2]+a$*+g[as>>2]+F*+g[at>>2];g[au>>2]=+g[am>>2]*a0+ +g[D>>2]*a$+ +g[an>>2]*F;g[av>>2]=bh;g[aw>>2]=bs;g[ax>>2]=0.0;avB(p,c[C>>2]|0,n);avB(q,c[E>>2]|0,o);bs=+g[az>>2];bh=+g[aB>>2];be=+g[aD>>2];bj=+g[aE>>2]+(+g[ay>>2]*bs+ +g[aA>>2]*bh+ +g[aC>>2]*be);bi=+g[v>>2]+(bs*+g[aF>>2]+bh*+g[aG>>2]+be*+g[aH>>2]);bE=+g[J>>2]+(bs*+g[aI>>2]+bh*+g[aJ>>2]+be*+g[aK>>2]);be=+g[aM>>2];bh=+g[aO>>2];bs=+g[aQ>>2];bF=+g[aR>>2]+(+g[aL>>2]*be+ +g[aN>>2]*bh+ +g[aP>>2]*bs);bG=+g[w>>2]+(be*+g[aS>>2]+bh*+g[aT>>2]+bs*+g[aU>>2]);bH=+g[L>>2]+(be*+g[aV>>2]+bh*+g[aW>>2]+bs*+g[aX>>2]);bs=bj-bF;bh=bi-bG;be=bE-bH;bI=+g[V>>2]*bs+ +g[W>>2]*bh+ +g[X>>2]*be;if(bI>0.0){if(bI*bI>a1*+g[aY>>2]){a9=a1;ba=3656;break L4381}}bk=c[S>>2]|0;bf=bk|0;bl=c[bf>>2]|0;if((bl|0)>0){bJ=+g[bk+308>>2];bK=0;bL=0;while(1){bM=bs- +g[bk+4+(bL<<4)>>2];bN=bh- +g[bk+4+(bL<<4)+4>>2];bO=be- +g[bk+4+(bL<<4)+8>>2];bP=bK|bM*bM+bN*bN+bO*bO<=bJ;bQ=bL+1|0;if((bQ|0)<(bl|0)){bK=bP;bL=bQ}else{bR=bP;break}}}else{bR=0}bL=bk+304|0;do{if(+g[bL>>2]==0.0){if(be!=+g[bk+300>>2]){bS=0;break}if(bh!=+g[bk+296>>2]){bS=0;break}bS=bs==+g[bk+292>>2]}else{bS=0}}while(0);if(bS|bR){bo=a1;ba=3665;break L4381}bJ=a1-bI;if(bJ<=a1*9.999999974752427e-7){bp=a1;bq=bJ;ba=3667;break L4381}g[bk+292>>2]=bs;g[bk+296>>2]=bh;g[bk+300>>2]=be;g[bL>>2]=0.0;a[bk+356|0]=1;g[bk+4+(bl<<4)>>2]=bs;g[bk+4+(bl<<4)+4>>2]=bh;g[bk+4+(bl<<4)+8>>2]=be;g[bk+4+(bl<<4)+12>>2]=0.0;bK=c[bf>>2]|0;g[bk+84+(bK<<4)>>2]=bj;g[bk+84+(bK<<4)+4>>2]=bi;g[bk+84+(bK<<4)+8>>2]=bE;g[bk+84+(bK<<4)+12>>2]=0.0;bK=c[bf>>2]|0;g[bk+164+(bK<<4)>>2]=bF;g[bk+164+(bK<<4)+4>>2]=bG;g[bk+164+(bK<<4)+8>>2]=bH;g[bk+164+(bK<<4)+12>>2]=0.0;c[bf>>2]=(c[bf>>2]|0)+1;bK=c[S>>2]|0;bc=aBZ(bK)|0;bJ=+g[bK+276>>2];a8=+g[bK+280>>2];a7=+g[bK+284>>2];a2=+g[bK+288>>2];if(!bc){br=a1;ba=3669;break L4381}a3=bJ*bJ+a8*a8+a7*a7;if(a3<9.999999974752427e-7){bt=a1;bu=bJ;bv=a8;bw=a7;bx=a2;ba=3671;break L4381}if(a1-a3<=a1*1.1920928955078125e-7){by=a3;ba=3673;break L4381}g[a_>>2]=bJ;g[W>>2]=a8;g[X>>2]=a7;g[Y>>2]=a2;bc=c[T>>2]|0;c[T>>2]=bc+1;if((bc|0)>1e3){bz=0.0;bA=0;bB=0.0;bC=0.0;bD=0.0;break L4381}if((c[c[S>>2]>>2]|0)==4){ba=3676;break}else{a1=a3;a0=bJ;a$=a8;F=a7}}}}while(0);if((ba|0)==3669){c[Z>>2]=3;bT=br;ba=3677}else if((ba|0)==3671){g[d+4>>2]=bu;g[W>>2]=bv;g[X>>2]=bw;g[Y>>2]=bx;c[Z>>2]=6;bT=bt;ba=3677}else if((ba|0)==3667){c[Z>>2]=bq>0.0?11:2;bT=bp;ba=3677}else if((ba|0)==3673){c[Z>>2]=12;bT=by;ba=3677}else if((ba|0)==3656){c[Z>>2]=10;bT=a9;ba=3677}else if((ba|0)==3676){c[Z>>2]=13;bz=0.0;bA=0;bB=0.0;bC=0.0;bD=0.0}else if((ba|0)==3665){c[Z>>2]=1;bT=bo;ba=3677}do{if((ba|0)==3677){T=c[S>>2]|0;aBZ(T)|0;bo=+g[T+260>>2];a9=+g[T+264>>2];by=+g[T+268>>2];c[u>>2]=c[aZ>>2];c[u+4>>2]=c[aZ+4>>2];c[u+8>>2]=c[aZ+8>>2];c[u+12>>2]=c[aZ+12>>2];bp=+g[V>>2];bq=+g[W>>2];bt=+g[X>>2];bx=bp*bp+bq*bq+bt*bt;if(bx<1.0e-4){c[Z>>2]=5}if(bx>1.4210854715202004e-14){bw=1.0/+Q(+bx);g[y>>2]=bw*+g[y>>2];g[z>>2]=bw*+g[z>>2];g[A>>2]=bw*+g[A>>2];bx=G/+Q(+bT);c[_>>2]=1;bz=1.0/bw-I;bA=1;bB=bx*bp+bo;bC=bx*bq+a9;bD=bx*bt+by;break}else{c[_>>2]=2;bz=0.0;bA=0;bB=bo;bC=a9;bD=by;break}}}while(0);do{if((c[d+72>>2]|0)==0){bU=0}else{if((c[d+20>>2]|0)==0){bU=0;break}if((c[Z>>2]|0)==0){bU=0;break}bU=I+bz<.01}}while(0);Z=bA^1;do{if(bU|Z){T=c[d+20>>2]|0;if((T|0)==0){ba=3700;break}c[9800]=(c[9800]|0)+1;aDD(aZ|0,0,16);if(!(cL[c[(c[T>>2]|0)+8>>2]&63](T,c[S>>2]|0,c[C>>2]|0,c[E>>2]|0,l,m,U,r,s,h,c[e+132>>2]|0)|0)){bT=+g[V>>2];by=+g[W>>2];a9=+g[X>>2];if(bT*bT+by*by+a9*a9<=0.0){ba=3700;break}bo=+g[s>>2];bt=+g[r>>2]-bo;bx=+g[s+4>>2];bq=+g[r+4>>2]-bx;bp=+g[s+8>>2];bw=+g[r+8>>2]-bp;bv=+Q(+(bt*bt+bq*bq+bw*bw))-I;if(bv<bz|Z){c[u>>2]=c[aZ>>2];c[u+4>>2]=c[aZ+4>>2];c[u+8>>2]=c[aZ+8>>2];c[u+12>>2]=c[aZ+12>>2];bw=+g[y>>2];bq=+g[z>>2];bt=+g[A>>2];bu=1.0/+Q(+(bw*bw+bq*bq+bt*bt));g[y>>2]=bw*bu;g[z>>2]=bq*bu;g[A>>2]=bt*bu;c[_>>2]=6;bV=bv;bW=G*bT+bo;bX=G*by+bx;bY=G*a9+bp;break}c[_>>2]=5;if(bA){bV=bz;bW=bB;bX=bC;bY=bD;break}i=j;return}bp=+g[s>>2];a9=+g[r>>2];bx=bp-a9;by=+g[s+4>>2];bo=+g[r+4>>2];bT=by-bo;bv=+g[s+8>>2];bu=+g[r+8>>2];bt=bv-bu;bq=bx*bx+bT*bT+bt*bt;if(bq>1.4210854715202004e-14){bZ=bq;b_=bx;b$=bT;b0=bt;b1=0.0}else{bt=+g[d+4>>2];bT=+g[W>>2];bx=+g[X>>2];bZ=bt*bt+bT*bT+bx*bx;b_=bt;b$=bT;b0=bx;b1=+g[Y>>2]}if(bZ<=1.4210854715202004e-14){c[_>>2]=9;if(bA){bV=bz;bW=bB;bX=bC;bY=bD;break}i=j;return}bx=1.0/+Q(+bZ);bT=a9-bp;a9=bo-by;bo=bu-bv;bu=-0.0- +Q(+(bT*bT+a9*a9+bo*bo));if(bz>bu|Z){g[y>>2]=b_*bx;g[z>>2]=b$*bx;g[A>>2]=b0*bx;g[B>>2]=b1;c[_>>2]=3;bV=bu;bW=bp;bX=by;bY=bv;break}c[_>>2]=8;if(bA){bV=bz;bW=bB;bX=bC;bY=bD;break}i=j;return}else{ba=3700}}while(0);do{if((ba|0)==3700){if(bA){bV=bz;bW=bB;bX=bC;bY=bD;break}i=j;return}}while(0);do{if(bV>=0.0){if(bV*bV<+g[aY>>2]){break}i=j;return}}while(0);c[aZ>>2]=c[u>>2];c[aZ+4>>2]=c[u+4>>2];c[aZ+8>>2]=c[u+8>>2];c[aZ+12>>2]=c[u+12>>2];g[x>>2]=bV;x=c[(c[f>>2]|0)+16>>2]|0;g[t>>2]=N+bW;g[t+4>>2]=O+bX;g[t+8>>2]=P+bY;g[t+12>>2]=0.0;dw[x&127](f,k,t,bV);i=j;return}function axY(a){a=a|0;return}function axZ(a){a=a|0;return}function ax_(a){a=a|0;return 16552|0}function ax$(b,d,e,f,h,i,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;h=+h;i=+i;j=+j;k=k|0;l=l|0;m=m|0;var n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;c[b+4>>2]=24;c[b+64>>2]=d;c[b+68>>2]=e;g[b+72>>2]=i;g[b+76>>2]=j;n=+(d-1|0);g[b+80>>2]=n;o=+(e-1|0);g[b+84>>2]=o;g[b+88>>2]=h;c[b+92>>2]=f;c[b+96>>2]=l;a[b+100|0]=m&1;a[b+101|0]=0;c[b+104>>2]=k;g[b+108>>2]=1.0;g[b+112>>2]=1.0;g[b+116>>2]=1.0;g[b+120>>2]=0.0;if((k|0)==2){g[b+16>>2]=0.0;g[b+20>>2]=0.0;g[b+24>>2]=i;g[b+28>>2]=0.0;g[b+32>>2]=n;g[b+36>>2]=o;g[b+40>>2]=j;g[b+44>>2]=0.0;p=0.0;q=n;r=0.0;s=o;t=i;u=j}else if((k|0)==0){g[b+16>>2]=i;g[b+20>>2]=0.0;g[b+24>>2]=0.0;g[b+28>>2]=0.0;g[b+32>>2]=j;g[b+36>>2]=n;g[b+40>>2]=o;g[b+44>>2]=0.0;p=i;q=j;r=0.0;s=n;t=0.0;u=o}else if((k|0)==1){g[b+16>>2]=0.0;g[b+20>>2]=i;g[b+24>>2]=0.0;g[b+28>>2]=0.0;g[b+32>>2]=n;g[b+36>>2]=j;g[b+40>>2]=o;g[b+44>>2]=0.0;p=0.0;q=n;r=i;s=j;t=0.0;u=o}else{p=+g[b+16>>2];q=+g[b+32>>2];r=+g[b+20>>2];s=+g[b+36>>2];t=+g[b+24>>2];u=+g[b+40>>2]}g[b+48>>2]=(p+q)*.5;g[b+52>>2]=(r+s)*.5;g[b+56>>2]=(t+u)*.5;g[b+60>>2]=0.0;return}function ax0(a,e,f){a=a|0;e=e|0;f=f|0;var h=0,i=0,j=0.0;h=c[a+96>>2]|0;if((h|0)==0){i=(aa(c[a+64>>2]|0,f)|0)+e|0;j=+g[(c[a+92>>2]|0)+(i<<2)>>2];return+j}else if((h|0)==3){i=(aa(c[a+64>>2]|0,f)|0)+e|0;j=+(b[(c[a+92>>2]|0)+(i<<1)>>1]|0)*+g[a+88>>2];return+j}else if((h|0)==5){h=(aa(c[a+64>>2]|0,f)|0)+e|0;j=+g[a+88>>2]*+(d[(c[a+92>>2]|0)+h|0]|0);return+j}else{j=0.0;return+j}return 0.0}function ax1(a){a=a|0;return a+108|0}function ax2(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ax3(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ax4(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0.0,x=0.0,y=0.0;f=(+g[a+32>>2]- +g[a+16>>2])*+g[a+108>>2]*.5;h=(+g[a+36>>2]- +g[a+20>>2])*+g[a+112>>2]*.5;i=(+g[a+40>>2]- +g[a+24>>2])*+g[a+116>>2]*.5;j=+P(+(+g[b>>2]));k=+P(+(+g[b+4>>2]));l=+P(+(+g[b+8>>2]));m=+P(+(+g[b+16>>2]));n=+P(+(+g[b+20>>2]));o=+P(+(+g[b+24>>2]));p=+P(+(+g[b+32>>2]));q=+P(+(+g[b+36>>2]));r=+P(+(+g[b+40>>2]));s=+g[b+48>>2];t=+g[b+52>>2];u=+g[b+56>>2];b=a|0;v=a;w=+dh[c[(c[v>>2]|0)+44>>2]&1023](b);x=+dh[c[(c[v>>2]|0)+44>>2]&1023](b);y=f*j+h*k+i*l+w;w=f*m+h*n+i*o+x;x=f*p+h*q+i*r+ +dh[c[(c[v>>2]|0)+44>>2]&1023](b);g[d>>2]=s-y;g[d+4>>2]=t-w;g[d+8>>2]=u-x;g[d+12>>2]=0.0;g[e>>2]=s+y;g[e+4>>2]=t+w;g[e+8>>2]=u+x;g[e+12>>2]=0.0;return}function ax5(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;f=+c4[c[(c[a>>2]|0)+64>>2]&127](a,b,d);h=c[a+104>>2]|0;if((h|0)==1){i=+(b|0)+ +g[a+80>>2]*-.5;j=f- +g[a+52>>2];k=+(d|0)+ +g[a+84>>2]*-.5;g[e>>2]=i;g[e+4>>2]=j;g[e+8>>2]=k;g[e+12>>2]=0.0;l=i;m=j;n=k}else if((h|0)==0){k=f- +g[a+48>>2];j=+(b|0)+ +g[a+80>>2]*-.5;i=+(d|0)+ +g[a+84>>2]*-.5;g[e>>2]=k;g[e+4>>2]=j;g[e+8>>2]=i;g[e+12>>2]=0.0;l=k;m=j;n=i}else if((h|0)==2){i=+(b|0)+ +g[a+80>>2]*-.5;j=+(d|0)+ +g[a+84>>2]*-.5;k=f- +g[a+56>>2];g[e>>2]=i;g[e+4>>2]=j;g[e+8>>2]=k;g[e+12>>2]=0.0;l=i;m=j;n=k}else{l=+g[e>>2];m=+g[e+4>>2];n=+g[e+8>>2]}g[e>>2]=+g[a+108>>2]*l;g[e+4>>2]=+g[a+112>>2]*m;g[e+8>>2]=+g[a+116>>2]*n;return}function ax6(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;h=i;i=i+48|0;j=h|0;k=1.0/+g[b+108>>2];l=1.0/+g[b+112>>2];m=1.0/+g[b+116>>2];n=+g[b+48>>2];o=k*+g[e>>2]+n;p=+g[b+52>>2];q=l*+g[e+4>>2]+p;r=+g[b+56>>2];s=m*+g[e+8>>2]+r;t=k*+g[f>>2]+n;n=l*+g[f+4>>2]+p;p=m*+g[f+8>>2]+r;r=+g[b+16>>2];m=o<r?r:o;o=+g[b+20>>2];l=q<o?o:q;q=+g[b+24>>2];k=s<q?q:s;s=+g[b+32>>2];u=s<m?s:m;m=+g[b+36>>2];v=m<l?m:l;l=+g[b+40>>2];w=l<k?l:k;k=u;if(u<0.0){x=k+-.5}else{x=k+.5}k=v;if(v<0.0){y=k+-.5}else{y=k+.5}k=w;if(w<0.0){z=k+-.5}else{z=k+.5}k=t<r?r:t;t=n<o?o:n;n=p<q?q:p;p=s<k?s:k;k=m<t?m:t;t=l<n?l:n;n=p;if(p<0.0){A=n+-.5}else{A=n+.5}n=k;if(k<0.0){B=n+-.5}else{B=n+.5}n=t;if(t<0.0){C=n+-.5}else{C=n+.5}f=~~x-1|0;e=~~A+1|0;D=~~y-1|0;E=~~B+1|0;F=~~z-1|0;G=~~C+1|0;H=(c[b+64>>2]|0)-1|0;I=(c[b+68>>2]|0)-1|0;J=c[b+104>>2]|0;if((J|0)==2){K=(E|0)<(I|0)?E:I;L=(D|0)>0?D:0;M=(e|0)<(H|0)?e:H;N=(f|0)>0?f:0}else if((J|0)==0){K=(G|0)<(I|0)?G:I;L=(F|0)>0?F:0;M=(E|0)<(H|0)?E:H;N=(D|0)>0?D:0}else if((J|0)==1){K=(G|0)<(I|0)?G:I;L=(F|0)>0?F:0;M=(e|0)<(H|0)?e:H;N=(f|0)>0?f:0}else{K=I;L=0;M=H;N=0}if((L|0)>=(K|0)){i=h;return}H=j|0;I=b+100|0;f=b+101|0;e=j+16|0;F=j+32|0;j=d;if((N|0)<(M|0)){O=L}else{i=h;return}while(1){L=O+1|0;G=N;do{do{if((a[I]&1)==0){if((a[f]&1)!=0){if((G+O&1|0)==0){P=3775;break}}ax5(b,G,O,H);ax5(b,G,L,e);J=G+1|0;ax5(b,J,O,F);dI[c[(c[j>>2]|0)+8>>2]&1023](d,H,G,O);ax5(b,J,O,H);ax5(b,G,L,e);ax5(b,J,L,F);dI[c[(c[j>>2]|0)+8>>2]&1023](d,H,G,O)}else{P=3775}}while(0);if((P|0)==3775){P=0;ax5(b,G,O,H);J=G+1|0;ax5(b,J,O,e);ax5(b,J,L,F);dI[c[(c[j>>2]|0)+8>>2]&1023](d,H,G,O);ax5(b,G,O,H);ax5(b,J,L,e);ax5(b,G,L,F);dI[c[(c[j>>2]|0)+8>>2]&1023](d,H,G,O)}G=G+1|0;}while((G|0)<(M|0));if((L|0)<(K|0)){O=L}else{break}}i=h;return}function ax7(a,b,c){a=a|0;b=+b;c=c|0;aDD(c|0,0,16);return}function ax8(a,b){a=a|0;b=b|0;var d=0;d=a+108|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function ax9(a){a=a|0;return}function aya(b,d,e,f){b=b|0;d=d|0;e=e|0;f=+f;var h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;h=i;i=i+280|0;j=h|0;k=c[b+4>>2]|0;if(+g[k+1124>>2]<f){i=h;return}l=c[b+136>>2]|0;m=(c[k+1108>>2]|0)!=(l|0);n=+g[e>>2];o=+g[d>>2]*f+n;p=+g[e+4>>2];q=+g[d+4>>2]*f+p;r=+g[e+8>>2];s=+g[d+8>>2]*f+r;if(m){t=o- +g[b+120>>2];u=q- +g[b+124>>2];v=s- +g[b+128>>2];w=n- +g[b+56>>2];x=p- +g[b+60>>2];y=r- +g[b+64>>2];z=w*+g[b+8>>2]+x*+g[b+24>>2]+y*+g[b+40>>2];A=w*+g[b+12>>2]+x*+g[b+28>>2]+y*+g[b+44>>2];B=w*+g[b+16>>2]+x*+g[b+32>>2]+y*+g[b+48>>2];C=t*+g[b+72>>2]+u*+g[b+88>>2]+v*+g[b+104>>2];D=t*+g[b+76>>2]+u*+g[b+92>>2]+v*+g[b+108>>2];E=t*+g[b+80>>2]+u*+g[b+96>>2]+v*+g[b+112>>2]}else{v=o- +g[b+56>>2];u=q- +g[b+60>>2];t=s- +g[b+64>>2];y=n- +g[b+120>>2];n=p- +g[b+124>>2];p=r- +g[b+128>>2];z=y*+g[b+72>>2]+n*+g[b+88>>2]+p*+g[b+104>>2];A=y*+g[b+76>>2]+n*+g[b+92>>2]+p*+g[b+108>>2];B=y*+g[b+80>>2]+n*+g[b+96>>2]+p*+g[b+112>>2];C=v*+g[b+8>>2]+u*+g[b+24>>2]+t*+g[b+40>>2];D=v*+g[b+12>>2]+u*+g[b+28>>2]+t*+g[b+44>>2];E=v*+g[b+16>>2]+u*+g[b+32>>2]+t*+g[b+48>>2]}g[j>>2]=C;g[j+4>>2]=D;g[j+8>>2]=E;g[j+12>>2]=0.0;g[j+16>>2]=z;g[j+20>>2]=A;g[j+24>>2]=B;g[j+28>>2]=0.0;F=j+64|0;G=d;c[F>>2]=c[G>>2];c[F+4>>2]=c[G+4>>2];c[F+8>>2]=c[G+8>>2];c[F+12>>2]=c[G+12>>2];g[j+80>>2]=f;G=j+84|0;g[G>>2]=0.0;F=j+88|0;g[F>>2]=0.0;c[j+108>>2]=0;g[j+112>>2]=0.0;a[j+116|0]=0;g[j+208>>2]=0.0;g[j+240>>2]=0.0;g[j+272>>2]=0.0;aDD(j+120|0,0,28);g[j+48>>2]=o;g[j+52>>2]=q;g[j+56>>2]=s;g[j+60>>2]=0.0;d=j+32|0;H=e;c[d>>2]=c[H>>2];c[d+4>>2]=c[H+4>>2];c[d+8>>2]=c[H+8>>2];c[d+12>>2]=c[H+12>>2];s=+g[k+1120>>2];H=c[k+1116>>2]|0;if((H|0)>0){d=0;e=-1;q=s*s;while(1){s=+g[k+4+(d*276|0)>>2]-C;o=+g[k+4+(d*276|0)+4>>2]-D;f=+g[k+4+(d*276|0)+8>>2]-E;B=s*s+o*o+f*f;I=B<q;J=I?d:e;K=d+1|0;if((K|0)<(H|0)){d=K;e=J;q=I?B:q}else{L=J;break}}}else{L=-1}e=c[b+140>>2]|0;q=+g[l+224>>2]*+g[e+224>>2];E=q<-10.0?-10.0:q;g[G>>2]=E>10.0?10.0:E;g[F>>2]=+g[l+228>>2]*+g[e+228>>2];if(m){c[j+92>>2]=c[b+148>>2];c[j+96>>2]=c[b+144>>2];c[j+100>>2]=c[b+156>>2];c[j+104>>2]=c[b+152>>2]}else{c[j+92>>2]=c[b+144>>2];c[j+96>>2]=c[b+148>>2];c[j+100>>2]=c[b+152>>2];c[j+104>>2]=c[b+156>>2]}if((L|0)>-1){b=k+4+(L*276|0)+144|0;m=c[b>>2]|0;e=k+4+(L*276|0)+208|0;E=+g[e>>2];l=k+4+(L*276|0)+240|0;q=+g[l>>2];F=k+4+(L*276|0)+272|0;D=+g[F>>2];G=k+4+(L*276|0)+108|0;d=c[G>>2]|0;H=k+4+(L*276|0)|0;J=j;aDC(H|0,J|0,276)|0;c[G>>2]=d;g[k+4+(L*276|0)+112>>2]=E;g[k+4+(L*276|0)+120>>2]=q;g[k+4+(L*276|0)+124>>2]=D;g[e>>2]=E;g[l>>2]=q;g[F>>2]=D;c[b>>2]=m;i=h;return}else{ay5(k,j)|0;i=h;return}}function ayb(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ayc(b,d,e,f,h,j,k,l,m,n,o){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0.0,aB=0.0,aC=0.0,aD=0.0,aE=0.0,aF=0.0,aG=0.0,aH=0,aI=0.0,aJ=0.0,aK=0;o=i;i=i+4264|0;b=o|0;p=o+992|0;q=o+1984|0;r=o+2976|0;s=o+3968|0;t=o+3984|0;u=o+4e3|0;v=o+4080|0;w=o+4216|0;x=e+4|0;if(((c[x>>2]|0)-17|0)>>>0<2){y=((c[f+4>>2]|0)-17|0)>>>0<2}else{y=0}z=b|0;A=p|0;B=q|0;C=r|0;D=h|0;E=h+16|0;F=h+32|0;G=h+4|0;H=h+20|0;I=h+36|0;J=h+8|0;K=h+24|0;L=h+40|0;M=j|0;N=j+16|0;O=j+32|0;P=j+4|0;Q=j+20|0;R=j+36|0;S=j+8|0;T=j+24|0;U=j+40|0;V=0;do{ayk();W=+g[40432+(V<<4)>>2];X=+g[40436+(V<<4)>>2];Y=+g[40440+(V<<4)>>2];Z=-0.0-W;_=-0.0-X;$=-0.0-Y;aa=+g[G>>2]*Z+ +g[H>>2]*_+ +g[I>>2]*$;ab=+g[J>>2]*Z+ +g[K>>2]*_+ +g[L>>2]*$;g[q+(V<<4)>>2]=+g[D>>2]*Z+ +g[E>>2]*_+ +g[F>>2]*$;g[q+(V<<4)+4>>2]=aa;g[q+(V<<4)+8>>2]=ab;g[q+(V<<4)+12>>2]=0.0;ab=W*+g[P>>2]+X*+g[Q>>2]+Y*+g[R>>2];aa=W*+g[S>>2]+X*+g[T>>2]+Y*+g[U>>2];g[r+(V<<4)>>2]=W*+g[M>>2]+X*+g[N>>2]+Y*+g[O>>2];g[r+(V<<4)+4>>2]=ab;g[r+(V<<4)+8>>2]=aa;g[r+(V<<4)+12>>2]=0.0;V=V+1|0;}while((V|0)<42);V=cA[c[(c[e>>2]|0)+76>>2]&4095](e)|0;if((V|0)>0){ac=e;ad=s|0;ae=s+4|0;af=s+8|0;ag=s;ah=s+12|0;ai=0;aj=42;while(1){dA[c[(c[ac>>2]|0)+80>>2]&511](e,ai,s);aa=+g[ad>>2];ab=+g[ae>>2];Y=+g[af>>2];X=aa*+g[E>>2]+ab*+g[H>>2]+Y*+g[K>>2];W=aa*+g[F>>2]+ab*+g[I>>2]+Y*+g[L>>2];g[ad>>2]=+g[D>>2]*aa+ +g[G>>2]*ab+ +g[J>>2]*Y;g[ae>>2]=X;g[af>>2]=W;g[ah>>2]=0.0;ayk();ak=40432+(aj<<4)|0;c[ak>>2]=c[ag>>2];c[ak+4>>2]=c[ag+4>>2];c[ak+8>>2]=c[ag+8>>2];c[ak+12>>2]=c[ag+12>>2];W=+g[ad>>2];X=-0.0-W;Y=+g[ae>>2];ab=-0.0-Y;aa=+g[af>>2];$=-0.0-aa;_=+g[G>>2]*X+ +g[H>>2]*ab+ +g[I>>2]*$;Z=+g[J>>2]*X+ +g[K>>2]*ab+ +g[L>>2]*$;g[q+(aj<<4)>>2]=+g[D>>2]*X+ +g[E>>2]*ab+ +g[F>>2]*$;g[q+(aj<<4)+4>>2]=_;g[q+(aj<<4)+8>>2]=Z;g[q+(aj<<4)+12>>2]=0.0;Z=W*+g[P>>2]+Y*+g[Q>>2]+aa*+g[R>>2];_=W*+g[S>>2]+Y*+g[T>>2]+aa*+g[U>>2];g[r+(aj<<4)>>2]=+g[M>>2]*W+ +g[N>>2]*Y+ +g[O>>2]*aa;g[r+(aj<<4)+4>>2]=Z;g[r+(aj<<4)+8>>2]=_;g[r+(aj<<4)+12>>2]=0.0;ak=ai+1|0;if((ak|0)<(V|0)){ai=ak;aj=aj+1|0}else{break}}al=V+42|0}else{al=42}V=cA[c[(c[f>>2]|0)+76>>2]&4095](f)|0;if((V|0)>0){aj=f;ai=t|0;af=t+4|0;ae=t+8|0;ad=t;ag=t+12|0;ah=al;s=0;while(1){dA[c[(c[aj>>2]|0)+80>>2]&511](f,s,t);_=+g[ai>>2];Z=+g[af>>2];aa=+g[ae>>2];Y=_*+g[N>>2]+Z*+g[Q>>2]+aa*+g[T>>2];W=_*+g[O>>2]+Z*+g[R>>2]+aa*+g[U>>2];g[ai>>2]=+g[M>>2]*_+ +g[P>>2]*Z+ +g[S>>2]*aa;g[af>>2]=Y;g[ae>>2]=W;g[ag>>2]=0.0;ayk();ac=40432+(ah<<4)|0;c[ac>>2]=c[ad>>2];c[ac+4>>2]=c[ad+4>>2];c[ac+8>>2]=c[ad+8>>2];c[ac+12>>2]=c[ad+12>>2];W=+g[ai>>2];Y=-0.0-W;aa=+g[af>>2];Z=-0.0-aa;_=+g[ae>>2];$=-0.0-_;ab=+g[G>>2]*Y+ +g[H>>2]*Z+ +g[I>>2]*$;X=+g[J>>2]*Y+ +g[K>>2]*Z+ +g[L>>2]*$;g[q+(ah<<4)>>2]=+g[D>>2]*Y+ +g[E>>2]*Z+ +g[F>>2]*$;g[q+(ah<<4)+4>>2]=ab;g[q+(ah<<4)+8>>2]=X;g[q+(ah<<4)+12>>2]=0.0;X=W*+g[P>>2]+aa*+g[Q>>2]+_*+g[R>>2];ab=W*+g[S>>2]+aa*+g[T>>2]+_*+g[U>>2];g[r+(ah<<4)>>2]=+g[M>>2]*W+ +g[N>>2]*aa+ +g[O>>2]*_;g[r+(ah<<4)+4>>2]=X;g[r+(ah<<4)+8>>2]=ab;g[r+(ah<<4)+12>>2]=0.0;ac=s+1|0;if((ac|0)<(V|0)){ah=ah+1|0;s=ac}else{break}}am=V+al|0}else{am=al}dI[c[(c[e>>2]|0)+68>>2]&1023](e,B,z,am);dI[c[(c[f>>2]|0)+68>>2]&1023](f,C,A,am);if((am|0)>0){A=h+48|0;C=h+52|0;z=h+56|0;B=j+48|0;al=j+52|0;V=j+56|0;if(y){ab=0.0;X=0.0;_=0.0;y=0;aa=999999984306749400.0;while(1){ayk();W=+g[40432+(y<<4)>>2];$=+g[40436+(y<<4)>>2];Z=+g[40444+(y<<4)>>2];do{if(W*W+$*$+0.0>.01){Y=+g[b+(y<<4)>>2];an=+g[b+(y<<4)+4>>2];ao=+g[b+(y<<4)+8>>2];ap=+g[p+(y<<4)>>2];aq=+g[p+(y<<4)+4>>2];ar=+g[p+(y<<4)+8>>2];as=W*(+g[B>>2]+(ap*+g[M>>2]+aq*+g[P>>2]+ar*+g[S>>2])-(+g[A>>2]+(Y*+g[D>>2]+an*+g[G>>2]+ao*+g[J>>2])))+$*(+g[al>>2]+(ap*+g[N>>2]+aq*+g[Q>>2]+ar*+g[T>>2])-(+g[C>>2]+(Y*+g[E>>2]+an*+g[H>>2]+ao*+g[K>>2])))+0.0;if(as>=aa){at=aa;au=_;av=X;aw=ab;break}at=as;au=W;av=$;aw=Z}else{at=aa;au=_;av=X;aw=ab}}while(0);s=y+1|0;if((s|0)<(am|0)){ab=aw;X=av;_=au;y=s;aa=at}else{ax=aw;ay=0.0;az=av;aA=au;aB=at;break}}}else{at=0.0;au=0.0;av=0.0;aw=0.0;y=0;aa=999999984306749400.0;while(1){ayk();_=+g[40432+(y<<4)>>2];X=+g[40436+(y<<4)>>2];ab=+g[40440+(y<<4)>>2];Z=+g[40444+(y<<4)>>2];do{if(_*_+X*X+ab*ab>.01){$=+g[b+(y<<4)>>2];W=+g[b+(y<<4)+4>>2];as=+g[b+(y<<4)+8>>2];ao=+g[p+(y<<4)>>2];an=+g[p+(y<<4)+4>>2];Y=+g[p+(y<<4)+8>>2];ar=_*(+g[B>>2]+(ao*+g[M>>2]+an*+g[P>>2]+Y*+g[S>>2])-(+g[A>>2]+($*+g[D>>2]+W*+g[G>>2]+as*+g[J>>2])))+X*(+g[al>>2]+(ao*+g[N>>2]+an*+g[Q>>2]+Y*+g[T>>2])-(+g[C>>2]+($*+g[E>>2]+W*+g[H>>2]+as*+g[K>>2])))+ab*(+g[V>>2]+(ao*+g[O>>2]+an*+g[R>>2]+Y*+g[U>>2])-(+g[z>>2]+($*+g[F>>2]+W*+g[I>>2]+as*+g[L>>2])));if(ar>=aa){aC=aa;aD=aw;aE=av;aF=au;aG=at;break}aC=ar;aD=_;aE=X;aF=ab;aG=Z}else{aC=aa;aD=aw;aE=av;aF=au;aG=at}}while(0);s=y+1|0;if((s|0)<(am|0)){at=aG;au=aF;av=aE;aw=aD;y=s;aa=aC}else{ax=aG;ay=aF;az=aE;aA=aD;aB=aC;break}}}}else{ax=0.0;ay=0.0;az=0.0;aA=0.0;aB=999999984306749400.0}switch(c[x>>2]|0){case 8:case 0:case 1:case 13:case 10:case 5:case 4:{break};default:{+dh[c[(c[e>>2]|0)+44>>2]&1023](e)}}y=f+4|0;switch(c[y>>2]|0){case 8:case 0:case 1:case 13:case 10:case 5:case 4:{break};default:{+dh[c[(c[f>>2]|0)+44>>2]&1023](f)}}if(aB<0.0){aH=0;i=o;return aH|0}switch(c[x>>2]|0){case 8:{aI=+g[e+28>>2]*+g[e+12>>2];break};case 0:{aI=+g[e+44>>2];break};case 1:{aI=+g[e+44>>2];break};case 13:{aI=+g[e+44>>2];break};case 10:{aI=+g[e+44>>2];break};case 5:case 4:{aI=+g[e+44>>2];break};default:{aI=+dh[c[(c[e>>2]|0)+44>>2]&1023](e)}}am=c[y>>2]|0;switch(am|0){case 5:case 4:{aJ=+g[f+44>>2];aK=am;break};case 13:{aJ=+g[f+44>>2];aK=13;break};case 1:{aJ=+g[f+44>>2];aK=1;break};case 8:{aJ=+g[f+28>>2]*+g[f+12>>2];aK=8;break};case 0:{aJ=+g[f+44>>2];aK=0;break};case 10:{aJ=+g[f+44>>2];aK=10;break};default:{aJ=+dh[c[(c[f>>2]|0)+44>>2]&1023](f);aK=c[y>>2]|0}}aC=aB+(aI+aJ+.5);c[u>>2]=23568;y=u+4|0;g[y>>2]=0.0;am=u+8|0;g[am>>2]=1.0;L=u+12|0;g[L>>2]=0.0;I=u+16|0;g[I>>2]=0.0;c[u+20>>2]=0;c[u+24>>2]=d;c[u+28>>2]=e;c[u+32>>2]=f;c[u+36>>2]=c[x>>2];c[u+40>>2]=aK;g[u+44>>2]=+dh[c[(c[e>>2]|0)+44>>2]&1023](e);g[u+48>>2]=+dh[c[(c[f>>2]|0)+44>>2]&1023](f);a[u+52|0]=0;c[u+60>>2]=-1;c[u+72>>2]=1;c[v+132>>2]=0;aJ=+g[h+48>>2]+aA*aC;aI=+g[h+52>>2]+az*aC;aB=+g[h+56>>2]+ay*aC;f=h;e=v;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=h+16|0;e=h+32|0;h=v+16|0;c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];f=v+32|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];g[v+48>>2]=aJ;g[v+52>>2]=aI;g[v+56>>2]=aB;g[v+60>>2]=0.0;e=v+64|0;f=j;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=v+80|0;e=j+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=v+96|0;f=j+32|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=v+112|0;e=j+48|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];g[v+128>>2]=999999984306749400.0;c[w>>2]=18488;e=w+40|0;a[e]=0;g[y>>2]=-0.0-aA;g[am>>2]=-0.0-az;g[L>>2]=-0.0-ay;g[I>>2]=0.0;axX(u,v,w|0,n,0);aB=aC- +g[w+36>>2];n=a[e]&1;if(n<<24>>24!=0){e=w+20|0;aC=+g[w+24>>2]-az*aB;aI=+g[w+28>>2]-ay*aB;g[l>>2]=+g[e>>2]-aA*aB;g[l+4>>2]=aC;g[l+8>>2]=aI;g[l+12>>2]=0.0;l=m;m=e;c[l>>2]=c[m>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];g[k>>2]=aA;g[k+4>>2]=az;g[k+8>>2]=ay;g[k+12>>2]=ax}aH=n<<24>>24!=0;i=o;return aH|0}function ayd(a){a=a|0;return}function aye(a){a=a|0;return}function ayf(a,b,c){a=a|0;b=b|0;c=c|0;return}function ayg(a,b,c){a=a|0;b=b|0;c=c|0;return}function ayh(a){a=a|0;return 17248|0}function ayi(a){a=a|0;return 64}function ayj(a,b,c){a=a|0;b=+b;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0;d=(+g[a+68>>2]- +g[a+52>>2])*.5*2.0;e=(+g[a+72>>2]- +g[a+56>>2])*.5*2.0;f=(+g[a+76>>2]- +g[a+60>>2])*.5*2.0;h=b/12.0;b=e*e;e=f*f;f=d*d;g[c>>2]=h*(b+e);g[c+4>>2]=h*(f+e);g[c+8>>2]=h*(f+b);g[c+12>>2]=0.0;return}function ayk(){if((a[43e3]|0)!=0){return}if((b1(43e3)|0)==0){return}g[10108]=0.0;g[10109]=-0.0;g[10110]=-1.0;g[10111]=0.0;g[10112]=.7236080169677734;g[10113]=-.5257250070571899;g[10114]=-.44721901416778564;g[10115]=0.0;g[10116]=-.2763879895210266;g[10117]=-.8506489992141724;g[10118]=-.44721901416778564;g[10119]=0.0;g[10120]=-.8944259881973267;g[10121]=-0.0;g[10122]=-.4472160041332245;g[10123]=0.0;g[10124]=-.2763879895210266;g[10125]=.8506489992141724;g[10126]=-.44721999764442444;g[10127]=0.0;g[10128]=.7236080169677734;g[10129]=.5257250070571899;g[10130]=-.44721901416778564;g[10131]=0.0;g[10132]=.2763879895210266;g[10133]=-.8506489992141724;g[10134]=.44721999764442444;g[10135]=0.0;g[10136]=-.7236080169677734;g[10137]=-.5257250070571899;g[10138]=.44721901416778564;g[10139]=0.0;g[10140]=-.7236080169677734;g[10141]=.5257250070571899;g[10142]=.44721901416778564;g[10143]=0.0;g[10144]=.2763879895210266;g[10145]=.8506489992141724;g[10146]=.44721901416778564;g[10147]=0.0;g[10148]=.8944259881973267;g[10149]=0.0;g[10150]=.4472160041332245;g[10151]=0.0;g[10152]=-0.0;g[10153]=0.0;g[10154]=1.0;g[10155]=0.0;g[10156]=.4253230094909668;g[10157]=-.3090110123157501;g[10158]=-.8506540060043335;g[10159]=0.0;g[10160]=-.16245600581169128;g[10161]=-.49999499320983887;g[10162]=-.8506540060043335;g[10163]=0.0;g[10164]=.2628690004348755;g[10165]=-.8090119957923889;g[10166]=-.525738000869751;g[10167]=0.0;g[10168]=.4253230094909668;g[10169]=.3090110123157501;g[10170]=-.8506540060043335;g[10171]=0.0;g[10172]=.8506479859352112;g[10173]=-0.0;g[10174]=-.5257359743118286;g[10175]=0.0;g[10176]=-.5257300138473511;g[10177]=-0.0;g[10178]=-.8506519794464111;g[10179]=0.0;g[10180]=-.6881899833679199;g[10181]=-.49999698996543884;g[10182]=-.5257359743118286;g[10183]=0.0;g[10184]=-.16245600581169128;g[10185]=.49999499320983887;g[10186]=-.8506540060043335;g[10187]=0.0;g[10188]=-.6881899833679199;g[10189]=.49999698996543884;g[10190]=-.5257359743118286;g[10191]=0.0;g[10192]=.2628690004348755;g[10193]=.8090119957923889;g[10194]=-.525738000869751;g[10195]=0.0;g[10196]=.9510579705238342;g[10197]=.3090130090713501;g[10198]=0.0;g[10199]=0.0;g[10200]=.9510579705238342;g[10201]=-.3090130090713501;g[10202]=0.0;g[10203]=0.0;g[10204]=.5877860188484192;g[10205]=-.80901700258255;g[10206]=0.0;g[10207]=0.0;g[10208]=0.0;g[10209]=-1.0;g[10210]=0.0;g[10211]=0.0;g[10212]=-.5877860188484192;g[10213]=-.80901700258255;g[10214]=0.0;g[10215]=0.0;g[10216]=-.9510579705238342;g[10217]=-.3090130090713501;g[10218]=-0.0;g[10219]=0.0;g[10220]=-.9510579705238342;g[10221]=.3090130090713501;g[10222]=-0.0;g[10223]=0.0;g[10224]=-.5877860188484192;g[10225]=.80901700258255;g[10226]=-0.0;g[10227]=0.0;g[10228]=-0.0;g[10229]=1.0;g[10230]=-0.0;g[10231]=0.0;g[10232]=.5877860188484192;g[10233]=.80901700258255;g[10234]=-0.0;g[10235]=0.0;g[10236]=.6881899833679199;g[10237]=-.49999698996543884;g[10238]=.5257359743118286;g[10239]=0.0;g[10240]=-.2628690004348755;g[10241]=-.8090119957923889;g[10242]=.525738000869751;g[10243]=0.0;g[10244]=-.8506479859352112;g[10245]=0.0;g[10246]=.5257359743118286;g[10247]=0.0;g[10248]=-.2628690004348755;g[10249]=.8090119957923889;g[10250]=.525738000869751;g[10251]=0.0;g[10252]=.6881899833679199;g[10253]=.49999698996543884;g[10254]=.5257359743118286;g[10255]=0.0;g[10256]=.5257300138473511;g[10257]=0.0;g[10258]=.8506519794464111;g[10259]=0.0;g[10260]=.16245600581169128;g[10261]=-.49999499320983887;g[10262]=.8506540060043335;g[10263]=0.0;g[10264]=-.4253230094909668;g[10265]=-.3090110123157501;g[10266]=.8506540060043335;g[10267]=0.0;g[10268]=-.4253230094909668;g[10269]=.3090110123157501;g[10270]=.8506540060043335;g[10271]=0.0;g[10272]=.16245600581169128;g[10273]=.49999499320983887;g[10274]=.8506540060043335;g[10275]=0.0;return}function ayl(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aym(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ayn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0;h=b+4|0;i=d;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];i=b+20|0;h=e;c[i>>2]=c[h>>2];c[i+4>>2]=c[h+4>>2];c[i+8>>2]=c[h+8>>2];c[i+12>>2]=c[h+12>>2];g[b+36>>2]=f;a[b+40|0]=1;return}function ayo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0,z=0;e=a|0;f=a+4|0;h=a+8|0;i=a+12|0;aDD(a|0,0,16);j=+g[d>>2];k=+g[d+4>>2];l=+g[d+8>>2];m=j*j+k*k+l*l;if(m<1.4210854715202004e-14){n=1.0;o=0.0;p=0.0}else{q=1.0/+Q(+m);n=j*q;o=k*q;p=l*q}d=c[b+92>>2]|0;if((d|0)<=0){return}a=b|0;r=b+12|0;s=b+16|0;t=b+20|0;u=b;q=-999999984306749400.0;v=c[b+100>>2]|0;w=c[b+120>>2]|0;b=0;while(1){l=+g[w>>2];k=+g[v>>2]+n*+g[r>>2]*l;j=o*+g[s>>2]*l+ +g[v+4>>2];m=l*p*+g[t>>2]+ +g[v+8>>2];l=+dh[c[(c[u>>2]|0)+44>>2]&1023](a);x=k-n*l;k=j-o*l;j=m-p*l;l=p*j+(n*x+o*k);if(l>q){g[e>>2]=x;g[f>>2]=k;g[h>>2]=j;g[i>>2]=0.0;y=l}else{y=q}z=b+1|0;if((z|0)<(d|0)){q=y;v=v+16|0;w=w+4|0;b=z}else{break}}return}function ayp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0;if((e|0)<=0){return}f=a+100|0;h=a+120|0;i=a+92|0;j=a|0;k=a+12|0;l=a+16|0;m=a+20|0;n=a;a=0;do{o=c[i>>2]|0;L4705:do{if((o|0)>0){p=b+(a<<4)|0;q=b+(a<<4)+4|0;r=b+(a<<4)+8|0;s=d+(a<<4)|0;t=d+(a<<4)+4|0;u=d+(a<<4)+8|0;v=d+(a<<4)+12|0;w=-999999984306749400.0;x=c[f>>2]|0;y=c[h>>2]|0;z=1;while(1){A=+g[y>>2];B=+g[x>>2]+ +g[p>>2]*+g[k>>2]*A;C=+g[q>>2]*+g[l>>2]*A+ +g[x+4>>2];D=A*+g[r>>2]*+g[m>>2]+ +g[x+8>>2];A=+dh[c[(c[n>>2]|0)+44>>2]&1023](j);E=+g[p>>2];F=+g[q>>2];G=+g[r>>2];H=B-A*E;B=C-A*F;C=D-A*G;A=E*H+F*B+G*C;if(A>w){g[s>>2]=H;g[t>>2]=B;g[u>>2]=C;g[v>>2]=0.0;I=A}else{I=w}if((z|0)>=(o|0)){break L4705}w=I;x=x+16|0;y=y+4|0;z=z+1|0}}}while(0);a=a+1|0;}while((a|0)<(e|0));return}function ayq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0;e=d;f=dj[c[(c[e>>2]|0)+40>>2]&511](d,a)|0;h=dj[c[(c[e>>2]|0)+28>>2]&511](d,f)|0;c[b>>2]=h;if((h|0)!=0){cv[c[(c[d>>2]|0)+48>>2]&2047](d,f)}c[b+4>>2]=c[a+4>>2];g[b+28>>2]=+g[a+28>>2];g[b+32>>2]=+g[a+32>>2];g[b+36>>2]=+g[a+36>>2];g[b+40>>2]=+g[a+40>>2];g[b+12>>2]=+g[a+12>>2];g[b+16>>2]=+g[a+16>>2];g[b+20>>2]=+g[a+20>>2];g[b+24>>2]=+g[a+24>>2];g[b+44>>2]=+g[a+44>>2];f=c[a+92>>2]|0;if((f|0)==0){c[b+52>>2]=0;c[b+56>>2]=0;return 17728}h=a+100|0;c[b+52>>2]=dj[c[(c[e>>2]|0)+28>>2]&511](d,c[h>>2]|0)|0;c[b+56>>2]=f;b=cS[c[(c[d>>2]|0)+16>>2]&511](d,20,f)|0;if((f|0)>0){e=a+120|0;a=c[b+8>>2]|0;i=0;while(1){j=c[h>>2]|0;g[a>>2]=+g[j+(i<<4)>>2];g[a+4>>2]=+g[j+(i<<4)+4>>2];g[a+8>>2]=+g[j+(i<<4)+8>>2];g[a+12>>2]=+g[j+(i<<4)+12>>2];g[a+16>>2]=+g[(c[e>>2]|0)+(i<<2)>>2];j=i+1|0;if((j|0)<(f|0)){a=a+20|0;i=j}else{break}}}co[c[(c[d>>2]|0)+20>>2]&255](d,b,16504,1497453121,c[h>>2]|0);return 17728}function ayr(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;c[b>>2]=23192;d=b+112|0;e=b+120|0;f=c[e>>2]|0;g=b+124|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+116>>2]=0;d=b+92|0;e=b+100|0;g=c[e>>2]|0;f=b+104|0;if((g|0)==0){a[f]=1;c[e>>2]=0;c[d>>2]=0;h=b+96|0;c[h>>2]=0;return}if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-16+12>>2]|0)}c[e>>2]=0;a[f]=1;c[e>>2]=0;c[d>>2]=0;h=b+96|0;c[h>>2]=0;return}function ays(b){b=b|0;var d=0,e=0,f=0,g=0;c[b>>2]=23192;d=b+112|0;e=b+120|0;f=c[e>>2]|0;g=b+124|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+116>>2]=0;d=b+92|0;e=b+100|0;g=c[e>>2]|0;f=b+104|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-16+12>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+96>>2]=0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-128+124>>2]|0);return}function ayt(a){a=a|0;azm(a|0);if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-172+168>>2]|0);return}function ayu(a){a=a|0;azm(a|0);return}function ayv(d,e,f,h,j){d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;k=i;i=i+168|0;l=k|0;m=k+32|0;n=k+40|0;o=k+56|0;p=k+72|0;q=k+136|0;r=d|0;s=d+60|0;a[s]=f&1;if(f){t=+g[h>>2]+-1.0;u=+g[h+4>>2]+-1.0;v=+g[h+8>>2]+-1.0;g[d+4>>2]=t;g[d+8>>2]=u;g[d+12>>2]=v;g[d+16>>2]=0.0;w=+g[j>>2]+1.0;x=+g[j+4>>2]+1.0;y=+g[j+8>>2]+1.0;g[d+20>>2]=w;g[d+24>>2]=x;g[d+28>>2]=y;g[d+32>>2]=0.0;g[d+36>>2]=65533.0/(w-t);g[d+40>>2]=65533.0/(x-u);g[d+44>>2]=65533.0/(y-v);g[d+48>>2]=0.0;a[s]=1;c[l>>2]=19032;c[l+4>>2]=d+104;c[l+8>>2]=r;dI[c[(c[e>>2]|0)+8>>2]&1023](e,l|0,d+4|0,d+20|0);l=c[d+108>>2]|0;j=l<<1;h=k+16|0;aDD(h|0,0,16);f=d+128|0;z=c[f>>2]|0;if((z|0)<(j|0)){A=d+132|0;if((c[A>>2]|0)<(j|0)){if((j|0)==0){B=0;C=z}else{c[9806]=(c[9806]|0)+1;D=aDx((l<<5|4)+15|0)|0;if((D|0)==0){E=0}else{F=-(D+4|0)&15;c[D+F>>2]=D;E=D+(F+4)|0}B=E;C=c[f>>2]|0}E=d+136|0;if((C|0)>0){F=0;do{D=B+(F<<4)|0;G=(c[E>>2]|0)+(F<<4)|0;c[D>>2]=c[G>>2];c[D+4>>2]=c[G+4>>2];c[D+8>>2]=c[G+8>>2];c[D+12>>2]=c[G+12>>2];F=F+1|0;}while((F|0)<(C|0))}C=c[E>>2]|0;F=d+140|0;if((C|0)!=0){if((a[F]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[C-16+12>>2]|0)}c[E>>2]=0}a[F]=1;c[E>>2]=B;c[A>>2]=j;H=E}else{H=d+136|0}E=z;do{z=(c[H>>2]|0)+(E<<4)|0;c[z>>2]=c[h>>2];c[z+4>>2]=c[h+4>>2];c[z+8>>2]=c[h+8>>2];c[z+12>>2]=c[h+12>>2];E=E+1|0;}while((E|0)<(j|0))}c[f>>2]=j;I=l}else{c[m>>2]=19064;c[m+4>>2]=d+64;g[n>>2]=-999999984306749400.0;g[n+4>>2]=-999999984306749400.0;g[n+8>>2]=-999999984306749400.0;g[n+12>>2]=0.0;g[o>>2]=999999984306749400.0;g[o+4>>2]=999999984306749400.0;g[o+8>>2]=999999984306749400.0;g[o+12>>2]=0.0;dI[c[(c[e>>2]|0)+8>>2]&1023](e,m|0,n,o);o=c[d+68>>2]|0;n=p;aDD(n|0,0,64);p=o<<1;m=d+88|0;e=c[m>>2]|0;if((e|0)<(p|0)){l=d+92|0;if((c[l>>2]|0)<(p|0)){if((p|0)==0){J=0;K=e}else{c[9806]=(c[9806]|0)+1;j=aDx((o<<7|4)+15|0)|0;if((j|0)==0){L=0}else{f=-(j+4|0)&15;c[j+f>>2]=j;L=j+(f+4)|0}J=L;K=c[m>>2]|0}L=d+96|0;if((K|0)>0){f=0;do{j=J+(f<<6)|0;E=(c[L>>2]|0)+(f<<6)|0;aDC(j|0,E|0,64)|0;f=f+1|0;}while((f|0)<(K|0))}K=c[L>>2]|0;f=d+100|0;if((K|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[K-64+60>>2]|0)}c[L>>2]=0}a[f]=1;c[L>>2]=J;c[l>>2]=p;M=L}else{M=d+96|0}L=e;do{e=(c[M>>2]|0)+(L<<6)|0;aDC(e|0,n|0,64)|0;L=L+1|0;}while((L|0)<(p|0))}c[m>>2]=p;I=o}c[d+56>>2]=0;azk(r,0,I);I=d+152|0;do{if((a[s]&1)!=0){if((c[I>>2]|0)!=0){break}r=d+156|0;if((c[r>>2]|0)==0){c[9806]=(c[9806]|0)+1;o=aDx(51)|0;if((o|0)==0){N=0}else{p=-(o+4|0)&15;c[o+p>>2]=o;N=o+(p+4)|0}p=c[I>>2]|0;o=d+160|0;if((p|0)>0){m=0;do{L=N+(m<<5)|0;n=(c[o>>2]|0)+(m<<5)|0;aDC(L|0,n|0,32)|0;m=m+1|0;}while((m|0)<(p|0))}p=c[o>>2]|0;m=d+164|0;if((p|0)!=0){if((a[m]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[p-32+28>>2]|0)}c[o>>2]=0}a[m]=1;c[o>>2]=N;c[r>>2]=1;O=(c[I>>2]|0)+1|0;P=N}else{O=1;P=c[d+160>>2]|0}c[I>>2]=O;m=d+160|0;p=P;n=q;aDC(p|0,n|0,32)|0;n=c[m>>2]|0;m=d+136|0;p=c[m>>2]|0;b[n>>1]=b[p>>1]|0;b[n+2>>1]=b[p+2>>1]|0;b[n+4>>1]=b[p+4>>1]|0;b[n+6>>1]=b[p+6>>1]|0;b[n+8>>1]=b[p+8>>1]|0;b[n+10>>1]=b[p+10>>1]|0;c[n+12>>2]=0;p=c[(c[m>>2]|0)+12>>2]|0;c[n+16>>2]=(p|0)>-1?1:-p|0}}while(0);c[d+168>>2]=c[I>>2];I=d+108|0;q=d+116|0;P=c[q>>2]|0;O=d+120|0;if((P|0)!=0){if((a[O]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[P-16+12>>2]|0)}c[q>>2]=0}a[O]=1;c[q>>2]=0;c[I>>2]=0;c[d+112>>2]=0;I=d+68|0;q=d+76|0;O=c[q>>2]|0;P=d+80|0;if((O|0)==0){a[P]=1;c[q>>2]=0;c[I>>2]=0;Q=d+72|0;c[Q>>2]=0;i=k;return}if((a[P]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[O-64+60>>2]|0)}c[q>>2]=0;a[P]=1;c[q>>2]=0;c[I>>2]=0;Q=d+72|0;c[Q>>2]=0;i=k;return}function ayw(d,e,f,h){d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0;i=d+60|0;if((a[i]&1)==0){return}j=+g[f>>2]+-1.0;k=+g[f+4>>2]+-1.0;l=+g[f+8>>2]+-1.0;g[d+4>>2]=j;g[d+8>>2]=k;g[d+12>>2]=l;g[d+16>>2]=0.0;m=+g[h>>2]+1.0;n=+g[h+4>>2]+1.0;o=+g[h+8>>2]+1.0;g[d+20>>2]=m;g[d+24>>2]=n;g[d+28>>2]=o;g[d+32>>2]=0.0;g[d+36>>2]=65533.0/(m-j);g[d+40>>2]=65533.0/(n-k);g[d+44>>2]=65533.0/(o-l);g[d+48>>2]=0.0;a[i]=1;ayA(d,e,0,c[d+56>>2]|0);e=d+152|0;if((c[e>>2]|0)<=0){return}i=d+160|0;h=d+136|0;d=0;do{f=c[i>>2]|0;p=c[f+(d<<5)+12>>2]|0;q=c[h>>2]|0;b[f+(d<<5)>>1]=b[q+(p<<4)>>1]|0;b[f+(d<<5)+2>>1]=b[q+(p<<4)+2>>1]|0;b[f+(d<<5)+4>>1]=b[q+(p<<4)+4>>1]|0;b[f+(d<<5)+6>>1]=b[q+(p<<4)+6>>1]|0;b[f+(d<<5)+8>>1]=b[q+(p<<4)+8>>1]|0;b[f+(d<<5)+10>>1]=b[q+(p<<4)+10>>1]|0;d=d+1|0;}while((d|0)<(c[e>>2]|0));return}function ayx(a){a=a|0;return 84}function ayy(a){a=a|0;return}function ayz(a){a=a|0;return}function ayA(a,d,f,j){a=a|0;d=d|0;f=f|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,ab=0,ac=0,ad=0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0;k=i;i=i+112|0;l=k|0;m=k+8|0;n=k+16|0;o=k+24|0;p=k+32|0;q=k+40|0;r=k+48|0;s=k+56|0;t=k+64|0;c[l>>2]=0;c[m>>2]=0;c[n>>2]=2;c[o>>2]=0;c[p>>2]=0;c[q>>2]=0;c[r>>2]=0;c[s>>2]=2;u=j-1|0;if((u|0)<(f|0)){i=k;return}v=a+136|0;w=d+4|0;x=d+8|0;y=d+12|0;z=t|0;A=t+4|0;B=t+8|0;C=t+16|0;D=t+20|0;E=t+24|0;F=t+32|0;G=t+36|0;H=t+40|0;I=a+4|0;J=a+8|0;K=a+12|0;L=a+36|0;M=a+40|0;N=a+44|0;a=d;O=d;P=j;j=-1;Q=u;L4875:while(1){u=P;R=Q;while(1){S=c[v>>2]|0;T=c[S+(R<<4)+12>>2]|0;if((T|0)>-1){break}U=c[S+(u<<4)+12>>2]|0;V=u+((U|0)>-1?1:-U|0)|0;U=b[S+(u<<4)>>1]|0;W=S+(R<<4)|0;b[W>>1]=U;X=b[S+(V<<4)>>1]|0;if((U&65535)>(X&65535)){b[W>>1]=X}X=b[S+(u<<4)+6>>1]|0;W=S+(R<<4)+6|0;b[W>>1]=X;U=b[S+(V<<4)+6>>1]|0;if((X&65535)<(U&65535)){b[W>>1]=U}U=b[S+(u<<4)+2>>1]|0;W=S+(R<<4)+2|0;b[W>>1]=U;X=b[S+(V<<4)+2>>1]|0;if((U&65535)>(X&65535)){b[W>>1]=X}X=b[S+(u<<4)+8>>1]|0;W=S+(R<<4)+8|0;b[W>>1]=X;U=b[S+(V<<4)+8>>1]|0;if((X&65535)<(U&65535)){b[W>>1]=U}U=b[S+(u<<4)+4>>1]|0;W=S+(R<<4)+4|0;b[W>>1]=U;X=b[S+(V<<4)+4>>1]|0;if((U&65535)>(X&65535)){b[W>>1]=X}X=b[S+(u<<4)+10>>1]|0;W=S+(R<<4)+10|0;b[W>>1]=X;U=b[S+(V<<4)+10>>1]|0;if((X&65535)<(U&65535)){b[W>>1]=U}U=R-1|0;if((U|0)<(f|0)){Y=j;break L4875}else{u=R;R=U}}u=T>>21;U=T&2097151;if((u|0)==(j|0)){Z=j}else{if((j|0)>-1){cv[c[(c[a>>2]|0)+24>>2]&2047](d,j)}di[c[(c[O>>2]|0)+16>>2]&63](d,l,m,n,o,p,q,r,s,u);Z=u}u=c[p>>2]|0;W=u+(aa(c[q>>2]|0,U)|0)|0;U=W;u=W;W=(c[s>>2]|0)==3;X=(c[n>>2]|0)==0;V=c[l>>2]|0;_=c[o>>2]|0;$=2;while(1){if(W){ab=e[u+($<<1)>>1]|0}else{ab=c[U+($<<2)>>2]|0}ac=aa(_,ab)|0;ad=V+ac|0;if(X){ae=+g[V+(ac+4)>>2]*+g[x>>2];af=+g[V+(ac+8)>>2]*+g[y>>2];g[t+($<<4)>>2]=+g[ad>>2]*+g[w>>2];g[t+($<<4)+4>>2]=ae;g[t+($<<4)+8>>2]=af;g[t+($<<4)+12>>2]=0.0}else{af=+h[V+(ac+8)>>3]*+g[x>>2];ae=+h[V+(ac+16)>>3]*+g[y>>2];g[t+($<<4)>>2]=+h[ad>>3]*+g[w>>2];g[t+($<<4)+4>>2]=af;g[t+($<<4)+8>>2]=ae;g[t+($<<4)+12>>2]=0.0}if(($|0)>0){$=$-1|0}else{break}}ae=+g[z>>2];af=ae<999999984306749400.0?ae:999999984306749400.0;ag=+g[A>>2];ah=ag<999999984306749400.0?ag:999999984306749400.0;ai=+g[B>>2];aj=ai<999999984306749400.0?ai:999999984306749400.0;ak=ae>-999999984306749400.0?ae:-999999984306749400.0;ae=ag>-999999984306749400.0?ag:-999999984306749400.0;ag=ai>-999999984306749400.0?ai:-999999984306749400.0;ai=+g[C>>2];al=ai<af?ai:af;af=+g[D>>2];am=af<ah?af:ah;ah=+g[E>>2];an=ah<aj?ah:aj;aj=ak<ai?ai:ak;ak=ae<af?af:ae;ae=ag<ah?ah:ag;ag=+g[F>>2];ah=+g[G>>2];af=+g[H>>2];ai=((ah<am?ah:am)- +g[J>>2])*+g[M>>2];am=((af<an?af:an)- +g[K>>2])*+g[N>>2];b[S+(R<<4)>>1]=~~(((ag<al?ag:al)- +g[I>>2])*+g[L>>2])&-2;b[S+(R<<4)+2>>1]=~~ai&-2;b[S+(R<<4)+4>>1]=~~am&-2;am=((ak<ah?ah:ak)- +g[J>>2])*+g[M>>2];ak=((ae<af?af:ae)- +g[K>>2])*+g[N>>2];b[S+(R<<4)+6>>1]=~~(((aj<ag?ag:aj)- +g[I>>2])*+g[L>>2]+1.0)|1;b[S+(R<<4)+8>>1]=~~(am+1.0)|1;b[S+(R<<4)+10>>1]=~~(ak+1.0)|1;$=R-1|0;if(($|0)<(f|0)){Y=Z;break}else{P=R;j=Z;Q=$}}if((Y|0)<=-1){i=k;return}cv[c[(c[a>>2]|0)+24>>2]&2047](d,Y);i=k;return}function ayB(a,d,f,h,i,j,k,l){a=a|0;d=d|0;f=+f;h=+h;i=+i;j=+j;k=+k;l=+l;var m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;m=+g[a+4>>2];n=+g[a+8>>2];o=+g[a+12>>2];p=+g[a+36>>2];q=+g[a+40>>2];r=+g[a+44>>2];s=~~((f-m)*p)&-2;t=~~((h-n)*q)&-2;u=~~((i-o)*r)&-2;v=~~(p*(j-m)+1.0)|1;w=~~(q*(k-n)+1.0)|1;x=~~(r*(l-o)+1.0)|1;y=a+152|0;z=c[y>>2]|0;if((z|0)<=0){return}A=a+160|0;B=a+136|0;C=0;D=z;while(1){z=c[A>>2]|0;E=z+(C<<5)|0;F=z+(C<<5)+6|0;G=z+(C<<5)+10|0;H=z+(C<<5)+4|0;I=z+(C<<5)+8|0;J=z+(C<<5)+2|0;if((-((s&65535)<=(e[F>>1]|0)&(v&65535)>=(e[E>>1]|0)&(u&65535)<=(e[G>>1]|0)&(x&65535)>=(e[H>>1]|0)&(t&65535)<=(e[I>>1]|0)&(w&65535)>=(e[J>>1]|0)&1)&1|0)==0){K=D}else{L=z+(C<<5)+12|0;M=c[L>>2]|0;ayA(a,d,M,(c[z+(C<<5)+16>>2]|0)+M|0);M=c[L>>2]|0;L=c[B>>2]|0;b[E>>1]=b[L+(M<<4)>>1]|0;b[J>>1]=b[L+(M<<4)+2>>1]|0;b[H>>1]=b[L+(M<<4)+4>>1]|0;b[F>>1]=b[L+(M<<4)+6>>1]|0;b[I>>1]=b[L+(M<<4)+8>>1]|0;b[G>>1]=b[L+(M<<4)+10>>1]|0;K=c[y>>2]|0}M=C+1|0;if((M|0)<(K|0)){C=M;D=K}else{break}}return}function ayC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;azr(a|0,b,c,d)|0;return 1}function ayD(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ayE(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;h=i;i=i+24|0;j=h|0;k=+g[d>>2];l=k<999999984306749400.0?k:999999984306749400.0;m=+g[d+4>>2];n=m<999999984306749400.0?m:999999984306749400.0;o=+g[d+8>>2];p=o<999999984306749400.0?o:999999984306749400.0;q=+g[d+12>>2];r=q<0.0?q:0.0;s=k>-999999984306749400.0?k:-999999984306749400.0;k=m>-999999984306749400.0?m:-999999984306749400.0;m=o>-999999984306749400.0?o:-999999984306749400.0;o=q>0.0?q:0.0;q=+g[d+16>>2];t=q<l?q:l;l=+g[d+20>>2];u=l<n?l:n;n=+g[d+24>>2];v=n<p?n:p;p=+g[d+28>>2];w=p<r?p:r;r=s<q?q:s;s=k<l?l:k;k=m<n?n:m;m=o<p?p:o;o=+g[d+32>>2];p=o<t?o:t;t=+g[d+36>>2];n=t<u?t:u;u=+g[d+40>>2];l=u<v?u:v;v=+g[d+44>>2];q=v<w?v:w;w=r<o?o:r;r=s<t?t:s;s=k<u?u:k;k=m<v?v:m;d=c[b+4>>2]|0;b=d+4|0;x=c[b>>2]|0;y=d+8|0;do{if((x|0)==(c[y>>2]|0)){z=(x|0)==0?1:x<<1;if((x|0)>=(z|0)){A=x;break}if((z|0)==0){B=0;C=x}else{c[9806]=(c[9806]|0)+1;D=aDx((z<<6|4)+15|0)|0;if((D|0)==0){E=0}else{F=-(D+4|0)&15;c[D+F>>2]=D;E=D+(F+4)|0}B=E;C=c[b>>2]|0}F=d+12|0;if((C|0)>0){D=0;do{G=B+(D<<6)|0;H=(c[F>>2]|0)+(D<<6)|0;aDC(G|0,H|0,64)|0;D=D+1|0;}while((D|0)<(C|0))}D=c[F>>2]|0;H=d+16|0;if((D|0)!=0){if((a[H]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[D-64+60>>2]|0)}c[F>>2]=0}a[H]=1;c[F>>2]=B;c[y>>2]=z;A=c[b>>2]|0}else{A=x}}while(0);x=c[d+12>>2]|0;g[x+(A<<6)>>2]=p;g[x+(A<<6)+4>>2]=n;g[x+(A<<6)+8>>2]=l;g[x+(A<<6)+12>>2]=q;g[x+(A<<6)+16>>2]=w;g[x+(A<<6)+20>>2]=r;g[x+(A<<6)+24>>2]=s;g[x+(A<<6)+28>>2]=k;c[x+(A<<6)+32>>2]=-1;c[x+(A<<6)+36>>2]=e;c[x+(A<<6)+40>>2]=f;f=x+(A<<6)+44|0;A=j;c[f>>2]=c[A>>2];c[f+4>>2]=c[A+4>>2];c[f+8>>2]=c[A+8>>2];c[f+12>>2]=c[A+12>>2];c[f+16>>2]=c[A+16>>2];c[b>>2]=(c[b>>2]|0)+1;i=h;return}function ayF(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ayG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;c[9808]=(c[9808]|0)+1;e=(c[b+12>>2]|0)>(c[d+12>>2]|0);f=c[(e?d:b)+12>>2]|0;g=c[(e?b:d)+12>>2]|0;d=g<<16|f;b=d+~(d<<15)|0;d=(b>>10^b)*9|0;b=d>>6^d;d=b+~(b<<11)|0;b=(d>>16^d)&(c[a+12>>2]|0)-1;if((b|0)>=(c[a+36>>2]|0)){h=0;return h|0}d=c[(c[a+44>>2]|0)+(b<<2)>>2]|0;if((d|0)==-1){h=0;return h|0}b=c[a+16>>2]|0;e=a+64|0;a=d;while(1){if((c[(c[b+(a<<4)>>2]|0)+12>>2]|0)==(f|0)){if((c[(c[b+(a<<4)+4>>2]|0)+12>>2]|0)==(g|0)){break}}d=c[(c[e>>2]|0)+(a<<2)>>2]|0;if((d|0)==-1){h=0;i=4102;break}else{a=d}}if((i|0)==4102){return h|0}h=b+(a<<4)|0;return h|0}function ayH(d,e,f,h){d=d|0;e=e|0;f=f|0;h=h|0;var i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;i=+g[e>>2];j=i<999999984306749400.0?i:999999984306749400.0;k=+g[e+4>>2];l=k<999999984306749400.0?k:999999984306749400.0;m=+g[e+8>>2];n=m<999999984306749400.0?m:999999984306749400.0;o=i>-999999984306749400.0?i:-999999984306749400.0;i=k>-999999984306749400.0?k:-999999984306749400.0;k=m>-999999984306749400.0?m:-999999984306749400.0;m=+g[e+16>>2];p=m<j?m:j;j=+g[e+20>>2];q=j<l?j:l;l=+g[e+24>>2];r=l<n?l:n;n=o<m?m:o;o=i<j?j:i;i=k<l?l:k;k=+g[e+32>>2];l=k<p?k:p;p=+g[e+36>>2];j=p<q?p:q;q=+g[e+40>>2];m=q<r?q:r;r=n<k?k:n;n=o<p?p:o;o=i<q?q:i;if(r-l<.0020000000949949026){s=r+.0010000000474974513;t=l+-.0010000000474974513}else{s=r;t=l}if(n-j<.0020000000949949026){u=n+.0010000000474974513;v=j+-.0010000000474974513}else{u=n;v=j}if(o-m<.0020000000949949026){w=o+.0010000000474974513;x=m+-.0010000000474974513}else{w=o;x=m}e=c[d+8>>2]|0;m=+g[e+4>>2];o=+g[e+8>>2];j=+g[e+12>>2];n=+g[e+36>>2];l=+g[e+40>>2];r=+g[e+44>>2];e=~~((t-m)*n)&-2;y=~~((v-o)*l)&-2;z=~~((x-j)*r)&-2;A=~~((s-m)*n+1.0)|1;B=~~((u-o)*l+1.0)|1;C=~~((w-j)*r+1.0)|1;D=f<<21|h;h=c[d+4>>2]|0;d=h+4|0;f=c[d>>2]|0;E=h+8|0;do{if((f|0)==(c[E>>2]|0)){F=(f|0)==0?1:f<<1;if((f|0)>=(F|0)){G=f;break}if((F|0)==0){H=0;I=f}else{c[9806]=(c[9806]|0)+1;J=aDx((F<<4|4)+15|0)|0;if((J|0)==0){K=0}else{L=-(J+4|0)&15;c[J+L>>2]=J;K=J+(L+4)|0}H=K;I=c[d>>2]|0}L=h+12|0;if((I|0)>0){J=0;do{M=H+(J<<4)|0;N=(c[L>>2]|0)+(J<<4)|0;c[M>>2]=c[N>>2];c[M+4>>2]=c[N+4>>2];c[M+8>>2]=c[N+8>>2];c[M+12>>2]=c[N+12>>2];J=J+1|0;}while((J|0)<(I|0))}J=c[L>>2]|0;N=h+16|0;if((J|0)!=0){if((a[N]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[J-16+12>>2]|0)}c[L>>2]=0}a[N]=1;c[L>>2]=H;c[E>>2]=F;G=c[d>>2]|0}else{G=f}}while(0);f=c[h+12>>2]|0;b[f+(G<<4)>>1]=e;b[f+(G<<4)+2>>1]=y;b[f+(G<<4)+4>>1]=z;b[f+(G<<4)+6>>1]=A;b[f+(G<<4)+8>>1]=B;b[f+(G<<4)+10>>1]=C;c[f+(G<<4)+12>>2]=D;c[d>>2]=(c[d>>2]|0)+1;return}function ayI(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;c[b>>2]=20208;d=b+20|0;a[d]=1;e=b+16|0;c[e>>2]=0;f=b+8|0;c[f>>2]=0;g=b+12|0;c[g>>2]=0;c[b+24>>2]=0;a[b+28|0]=0;a[b+48|0]=1;c[b+44>>2]=0;c[b+36>>2]=0;c[b+40>>2]=0;a[b+68|0]=1;c[b+64>>2]=0;c[b+56>>2]=0;c[b+60>>2]=0;c[b+72>>2]=0;c[9806]=(c[9806]|0)+1;h=aDx(51)|0;if((h|0)==0){i=0}else{j=-(h+4|0)&15;c[h+j>>2]=h;i=h+(j+4)|0}j=c[f>>2]|0;if((j|0)>0){f=0;do{h=c[e>>2]|0;c[i+(f<<4)>>2]=c[h+(f<<4)>>2];c[i+(f<<4)+4>>2]=c[h+(f<<4)+4>>2];c[i+(f<<4)+8>>2]=c[h+(f<<4)+8>>2];c[i+(f<<4)+12>>2]=c[h+(f<<4)+12>>2];f=f+1|0;}while((f|0)<(j|0))}j=c[e>>2]|0;if((j|0)==0){a[d]=1;c[e>>2]=i;c[g>>2]=2;ayJ(b);return}if((a[d]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[j-16+12>>2]|0)}c[e>>2]=0;a[d]=1;c[e>>2]=i;c[g>>2]=2;ayJ(b);return}function ayJ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=b+12|0;e=c[d>>2]|0;f=b+36|0;g=c[f>>2]|0;if((g|0)>=(e|0)){return}if((g|0)<=(e|0)){h=b+40|0;if((c[h>>2]|0)<(e|0)){if((e|0)==0){i=0;j=g}else{c[9806]=(c[9806]|0)+1;k=aDx((e<<2)+19|0)|0;if((k|0)==0){l=0}else{m=-(k+4|0)&15;c[k+m>>2]=k;l=k+(m+4)|0}i=l;j=c[f>>2]|0}l=b+44|0;if((j|0)>0){m=0;do{k=i+(m<<2)|0;if((k|0)!=0){c[k>>2]=c[(c[l>>2]|0)+(m<<2)>>2]}m=m+1|0;}while((m|0)<(j|0))}j=c[l>>2]|0;m=b+48|0;if((j|0)!=0){if((a[m]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[j-4>>2]|0)}c[l>>2]=0}a[m]=1;c[l>>2]=i;c[h>>2]=e;n=l}else{n=b+44|0}l=g;do{h=(c[n>>2]|0)+(l<<2)|0;if((h|0)!=0){c[h>>2]=0}l=l+1|0;}while((l|0)<(e|0))}c[f>>2]=e;f=b+56|0;l=c[f>>2]|0;if((l|0)<(e|0)){n=b+60|0;if((c[n>>2]|0)<(e|0)){if((e|0)==0){o=0;p=l}else{c[9806]=(c[9806]|0)+1;h=aDx((e<<2)+19|0)|0;if((h|0)==0){q=0}else{i=-(h+4|0)&15;c[h+i>>2]=h;q=h+(i+4)|0}o=q;p=c[f>>2]|0}q=b+64|0;if((p|0)>0){i=0;do{h=o+(i<<2)|0;if((h|0)!=0){c[h>>2]=c[(c[q>>2]|0)+(i<<2)>>2]}i=i+1|0;}while((i|0)<(p|0))}p=c[q>>2]|0;i=b+68|0;if((p|0)!=0){if((a[i]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[p-4>>2]|0)}c[q>>2]=0}a[i]=1;c[q>>2]=o;c[n>>2]=e;r=q}else{r=b+64|0}q=l;do{l=(c[r>>2]|0)+(q<<2)|0;if((l|0)!=0){c[l>>2]=0}q=q+1|0;}while((q|0)<(e|0))}c[f>>2]=e;if((e|0)>0){f=b+44|0;q=0;do{c[(c[f>>2]|0)+(q<<2)>>2]=-1;q=q+1|0;}while((q|0)<(e|0));q=b+64|0;f=0;do{c[(c[q>>2]|0)+(f<<2)>>2]=-1;f=f+1|0;}while((f|0)<(e|0))}if((g|0)<=0){return}e=b+16|0;f=b+44|0;q=b+64|0;b=0;do{r=c[e>>2]|0;l=c[(c[r+(b<<4)+4>>2]|0)+12>>2]<<16|c[(c[r+(b<<4)>>2]|0)+12>>2];r=l+~(l<<15)|0;l=(r>>10^r)*9|0;r=l>>6^l;l=r+~(r<<11)|0;r=(l>>16^l)&(c[d>>2]|0)-1;c[(c[q>>2]|0)+(b<<2)>>2]=c[(c[f>>2]|0)+(r<<2)>>2];c[(c[f>>2]|0)+(r<<2)>>2]=b;b=b+1|0;}while((b|0)<(g|0));return}function ayK(a){a=a|0;ayL(a);if((a|0)==0){return}aDB(a);return}function ayL(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;c[b>>2]=20208;d=b+56|0;e=b+64|0;f=c[e>>2]|0;g=b+68|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+60>>2]=0;d=b+36|0;e=b+44|0;g=c[e>>2]|0;f=b+48|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+40>>2]=0;d=b+8|0;e=b+16|0;f=c[e>>2]|0;g=b+20|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+12|0;c[h>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-16+12>>2]|0)}c[e>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+12|0;c[h>>2]=0;return}function ayM(a,b,d){a=a|0;b=b|0;d=d|0;a=b+8|0;b=c[a>>2]|0;if((b|0)==0){return}ct[c[c[b>>2]>>2]&2047](b);cv[c[(c[d>>2]|0)+60>>2]&2047](d,c[a>>2]|0);c[a>>2]=0;return}function ayN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;c[f>>2]=18592;c[f+4>>2]=b;c[f+8>>2]=a;c[f+12>>2]=d;dA[c[(c[a>>2]|0)+48>>2]&511](a,f|0,d);i=e;return}function ayO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+8|0;f=e|0;c[f>>2]=18560;c[f+4>>2]=b;dA[c[(c[a>>2]|0)+48>>2]&511](a,f|0,d);i=e;return}function ayP(a){a=a|0;return 0}function ayQ(a){a=a|0;return}function ayR(a){a=a|0;return}function ayS(a){a=a|0;return c[a+16>>2]|0}function ayT(a){a=a|0;return c[a+16>>2]|0}function ayU(a){a=a|0;return a+4|0}function ayV(a){a=a|0;return c[a+8>>2]|0}function ayW(a,b){a=a|0;b=b|0;c[a+24>>2]=b;return}function ayX(a,b){a=a|0;b=b|0;c[a+72>>2]=b;return}function ayY(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+4>>2]|0;if((c[b>>2]|0)==(d|0)){e=1;return e|0}e=(c[b+4>>2]|0)==(d|0);return e|0}function ayZ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=b+4|0;e=c[d>>2]|0;f=b+8|0;if((e|0)!=(c[f>>2]|0)){g=e;h=g+1|0;c[d>>2]=h;i=b+12|0;j=c[i>>2]|0;k=j+(e<<4)|0;return k|0}l=(e|0)==0?1:e<<1;if((e|0)>=(l|0)){g=e;h=g+1|0;c[d>>2]=h;i=b+12|0;j=c[i>>2]|0;k=j+(e<<4)|0;return k|0}if((l|0)==0){m=0;n=e}else{c[9806]=(c[9806]|0)+1;o=aDx((l<<4|4)+15|0)|0;if((o|0)==0){p=0}else{q=-(o+4|0)&15;c[o+q>>2]=o;p=o+(q+4)|0}m=p;n=c[d>>2]|0}p=b+12|0;if((n|0)>0){q=0;do{o=c[p>>2]|0;c[m+(q<<4)>>2]=c[o+(q<<4)>>2];c[m+(q<<4)+4>>2]=c[o+(q<<4)+4>>2];c[m+(q<<4)+8>>2]=c[o+(q<<4)+8>>2];c[m+(q<<4)+12>>2]=c[o+(q<<4)+12>>2];q=q+1|0;}while((q|0)<(n|0))}n=c[p>>2]|0;q=b+16|0;if((n|0)!=0){if((a[q]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-16+12>>2]|0)}c[p>>2]=0}a[q]=1;c[p>>2]=m;c[f>>2]=l;g=c[d>>2]|0;h=g+1|0;c[d>>2]=h;i=b+12|0;j=c[i>>2]|0;k=j+(e<<4)|0;return k|0}function ay_(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;c[9790]=(c[9790]|0)+1;f=(c[b+12>>2]|0)>(c[d+12>>2]|0);g=f?d:b;h=f?b:d;d=c[g+12>>2]|0;b=c[h+12>>2]|0;f=b<<16|d;i=f+~(f<<15)|0;f=(i>>10^i)*9|0;i=f>>6^f;f=i+~(i<<11)|0;i=a+12|0;j=(f>>16^f)&(c[i>>2]|0)-1;f=a+44|0;k=c[(c[f>>2]|0)+(j<<2)>>2]|0;if((k|0)==-1){l=0;return l|0}m=a+16|0;n=c[m>>2]|0;o=a+64|0;p=k;while(1){if((c[(c[n+(p<<4)>>2]|0)+12>>2]|0)==(d|0)){if((c[(c[n+(p<<4)+4>>2]|0)+12>>2]|0)==(b|0)){break}}k=c[(c[o>>2]|0)+(p<<2)>>2]|0;if((k|0)==-1){l=0;q=4278;break}else{p=k}}if((q|0)==4278){return l|0}b=n+(p<<4)|0;if((b|0)==0){l=0;return l|0}dA[c[(c[a>>2]|0)+32>>2]&511](a,b,e);d=c[n+(p<<4)+12>>2]|0;p=(b-(c[m>>2]|0)|0)/16|0;b=(c[f>>2]|0)+(j<<2)|0;j=c[b>>2]|0;n=c[o>>2]|0;do{if((j|0)==(p|0)){r=c[n+(p<<2)>>2]|0;q=4263}else{k=j;while(1){s=n+(k<<2)|0;t=c[s>>2]|0;if((t|0)==(p|0)){break}else{k=t}}t=c[n+(p<<2)>>2]|0;if((k|0)==-1){r=t;q=4263;break}c[s>>2]=t}}while(0);if((q|0)==4263){c[b>>2]=r}r=a+8|0;b=(c[r>>2]|0)-1|0;s=c[a+72>>2]|0;if((s|0)!=0){a=c[(c[s>>2]|0)+12>>2]|0;dE[a&127](s,g,h,e)|0}if((b|0)==(p|0)){c[r>>2]=(c[r>>2]|0)-1;l=d;return l|0}e=c[m>>2]|0;h=c[(c[e+(b<<4)+4>>2]|0)+12>>2]<<16|c[(c[e+(b<<4)>>2]|0)+12>>2];e=h+~(h<<15)|0;h=(e>>10^e)*9|0;e=h>>6^h;h=e+~(e<<11)|0;e=(h>>16^h)&(c[i>>2]|0)-1;i=(c[f>>2]|0)+(e<<2)|0;h=c[i>>2]|0;g=c[o>>2]|0;do{if((h|0)==(b|0)){u=c[g+(b<<2)>>2]|0;q=4273}else{s=h;while(1){v=g+(s<<2)|0;a=c[v>>2]|0;if((a|0)==(b|0)){break}else{s=a}}k=c[g+(b<<2)>>2]|0;if((s|0)==-1){u=k;q=4273;break}c[v>>2]=k}}while(0);if((q|0)==4273){c[i>>2]=u}u=c[m>>2]|0;m=u+(p<<4)|0;i=u+(b<<4)|0;c[m>>2]=c[i>>2];c[m+4>>2]=c[i+4>>2];c[m+8>>2]=c[i+8>>2];c[m+12>>2]=c[i+12>>2];c[(c[o>>2]|0)+(p<<2)>>2]=c[(c[f>>2]|0)+(e<<2)>>2];c[(c[f>>2]|0)+(e<<2)>>2]=p;c[r>>2]=(c[r>>2]|0)-1;l=d;return l|0}function ay$(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+8|0;if((c[e>>2]|0)<=0){return}f=a+16|0;g=b;h=a;i=0;L5220:while(1){while(1){j=c[f>>2]|0;k=j+(i<<4)|0;if(!(dj[c[(c[g>>2]|0)+8>>2]&511](b,k)|0)){break}dE[c[(c[h>>2]|0)+12>>2]&127](a,c[k>>2]|0,c[j+(i<<4)+4>>2]|0,d)|0;c[9792]=(c[9792]|0)-1;if((i|0)>=(c[e>>2]|0)){l=4288;break L5220}}j=i+1|0;if((j|0)<(c[e>>2]|0)){i=j}else{l=4290;break}}if((l|0)==4288){return}else if((l|0)==4290){return}}function ay0(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;e=i;i=i+24|0;f=e|0;g=f+16|0;a[g]=1;h=f+12|0;c[h>>2]=0;j=f+4|0;c[j>>2]=0;k=f+8|0;c[k>>2]=0;l=b+8|0;do{if((c[l>>2]|0)>0){m=b+16|0;n=0;o=0;p=0;while(1){q=c[m>>2]|0;do{if((o|0)==(p|0)){r=(p|0)==0?1:p<<1;if((p|0)>=(r|0)){s=p;break}if((r|0)==0){t=0;u=p}else{c[9806]=(c[9806]|0)+1;v=aDx((r<<4|4)+15|0)|0;if((v|0)==0){w=0}else{x=-(v+4|0)&15;c[v+x>>2]=v;w=v+(x+4)|0}t=w;u=c[j>>2]|0}if((u|0)>0){x=0;do{v=c[h>>2]|0;c[t+(x<<4)>>2]=c[v+(x<<4)>>2];c[t+(x<<4)+4>>2]=c[v+(x<<4)+4>>2];c[t+(x<<4)+8>>2]=c[v+(x<<4)+8>>2];c[t+(x<<4)+12>>2]=c[v+(x<<4)+12>>2];x=x+1|0;}while((x|0)<(u|0))}x=c[h>>2]|0;if((x|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[x-16+12>>2]|0)}c[h>>2]=0}a[g]=1;c[h>>2]=t;c[k>>2]=r;s=c[j>>2]|0}else{s=o}}while(0);x=c[h>>2]|0;c[x+(s<<4)>>2]=c[q+(n<<4)>>2];c[x+(s<<4)+4>>2]=c[q+(n<<4)+4>>2];c[x+(s<<4)+8>>2]=c[q+(n<<4)+8>>2];c[x+(s<<4)+12>>2]=c[q+(n<<4)+12>>2];y=(c[j>>2]|0)+1|0;c[j>>2]=y;x=n+1|0;if((x|0)>=(c[l>>2]|0)){break}n=x;o=y;p=c[k>>2]|0}if((y|0)<=0){z=y;break}p=b;o=0;while(1){n=c[h>>2]|0;dE[c[(c[p>>2]|0)+12>>2]&127](b,c[n+(o<<4)>>2]|0,c[n+(o<<4)+4>>2]|0,d)|0;n=o+1|0;m=c[j>>2]|0;if((n|0)<(m|0)){o=n}else{z=m;break}}}else{z=0}}while(0);d=b+56|0;if((c[d>>2]|0)>0){y=b+64|0;k=0;do{c[(c[y>>2]|0)+(k<<2)>>2]=-1;k=k+1|0;}while((k|0)<(c[d>>2]|0));A=c[j>>2]|0}else{A=z}if((A|0)>1){arQ(f,0,A-1|0);B=c[j>>2]|0}else{B=A}if((B|0)>0){B=b;A=0;do{f=c[h>>2]|0;cS[c[(c[B>>2]|0)+8>>2]&511](b,c[f+(A<<4)>>2]|0,c[f+(A<<4)+4>>2]|0)|0;A=A+1|0;}while((A|0)<(c[j>>2]|0))}j=c[h>>2]|0;if((j|0)==0){i=e;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[j-16+12>>2]|0)}c[h>>2]=0;i=e;return}function ay1(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;c[9812]=(c[9812]|0)+1;f=c[a+24>>2]|0;do{if((f|0)==0){if((b[e+6>>1]&b[d+4>>1])<<16>>16==0){g=0;return g|0}if((b[d+6>>1]&b[e+4>>1])<<16>>16==0){g=0}else{break}return g|0}else{if(cS[c[(c[f>>2]|0)+8>>2]&511](f,d,e)|0){break}else{g=0}return g|0}}while(0);f=(c[d+12>>2]|0)>(c[e+12>>2]|0);h=f?e:d;i=f?d:e;e=h+12|0;d=c[e>>2]|0;f=i+12|0;j=c[f>>2]|0;k=j<<16|d;l=k+~(k<<15)|0;k=(l>>10^l)*9|0;l=k>>6^k;k=l+~(l<<11)|0;l=k>>16^k;k=a+4|0;m=a+12|0;n=c[m>>2]|0;o=l&n-1;p=a+44|0;q=c[(c[p>>2]|0)+(o<<2)>>2]|0;L5293:do{if((q|0)!=-1){r=c[a+16>>2]|0;s=a+64|0;t=q;while(1){if((c[(c[r+(t<<4)>>2]|0)+12>>2]|0)==(d|0)){if((c[(c[r+(t<<4)+4>>2]|0)+12>>2]|0)==(j|0)){break}}u=c[(c[s>>2]|0)+(t<<2)>>2]|0;if((u|0)==-1){break L5293}else{t=u}}s=r+(t<<4)|0;if((s|0)==0){break}else{g=s}return g|0}}while(0);j=c[a+8>>2]|0;d=ayZ(k)|0;k=c[a+72>>2]|0;if((k|0)!=0){q=c[(c[k>>2]|0)+8>>2]|0;cS[q&511](k,h,i)|0}if((n|0)<(c[m>>2]|0)){ayJ(a);v=(c[m>>2]|0)-1&l}else{v=o}o=d|0;if((c[e>>2]|0)<(c[f>>2]|0)){c[o>>2]=h;c[d+4>>2]=i}else{c[o>>2]=i;c[d+4>>2]=h}h=d+8|0;c[h>>2]=0;c[h+4>>2]=0;c[(c[a+64>>2]|0)+(j<<2)>>2]=c[(c[p>>2]|0)+(v<<2)>>2];c[(c[p>>2]|0)+(v<<2)>>2]=j;g=d;return g|0}function ay2(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ay3(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ay4(a,b){a=a|0;b=b|0;var d=0;d=c[a+4>>2]|0;do{if((c[b>>2]|0)!=(d|0)){if((c[b+4>>2]|0)==(d|0)){break}return 0}}while(0);d=c[a+8>>2]|0;dA[c[(c[d>>2]|0)+32>>2]&511](d,b,c[a+12>>2]|0);return 0}function ay5(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0.0,aB=0.0,aC=0.0;d=a+1116|0;e=c[d>>2]|0;if((e|0)!=4){c[d>>2]=e+1;f=e;h=(f|0)<0;i=h?0:f;j=a+4+(i*276|0)|0;k=j;l=b;aDC(k|0,l|0,276)|0;return i|0}m=+g[b+80>>2];n=+g[a+84>>2];e=n<m;o=e?n:m;m=+g[a+360>>2];d=m<o;n=d?m:o;o=+g[a+636>>2];p=o<n;q=+g[a+912>>2]<(p?o:n);r=q?3:p?2:d?1:(e^1)<<31>>31;n=+g[b>>2];do{if((r|0)==0){s=0.0;t=+g[b+4>>2];u=+g[b+8>>2];v=+g[a+832>>2];w=+g[a+556>>2];x=+g[a+836>>2];y=+g[a+560>>2];z=+g[a+840>>2];A=+g[a+564>>2];B=+g[a+280>>2];C=+g[a+284>>2];D=+g[a+288>>2];E=4381}else{o=+g[a+280>>2];m=n-o;F=+g[b+4>>2];G=+g[a+284>>2];H=F-G;I=+g[b+8>>2];J=+g[a+288>>2];K=I-J;L=+g[a+832>>2];M=+g[a+556>>2];N=L-M;O=+g[a+836>>2];Q=+g[a+560>>2];R=O-Q;S=+g[a+840>>2];T=+g[a+564>>2];U=S-T;V=H*U-K*R;W=K*N-m*U;U=m*R-H*N;N=U*U+(V*V+W*W);if((r|0)!=1){s=N;t=F;u=I;v=L;w=M;x=O;y=Q;z=S;A=T;B=o;C=G;D=J;E=4381;break}X=0.0;Y=N;Z=M;_=Q;$=T;aa=F;ab=I;ac=L;ad=O;ae=S;af=+g[a+4>>2];ag=+g[a+8>>2];ah=+g[a+12>>2];ai=o;aj=G;ak=J;E=4382}}while(0);if((E|0)==4381){J=+g[a+4>>2];G=n-J;o=+g[a+8>>2];S=t-o;O=+g[a+12>>2];L=u-O;I=v-w;F=x-y;T=z-A;Q=S*T-L*F;M=L*I-G*T;T=G*F-S*I;I=T*T+(Q*Q+M*M);if((r|0)==2){al=0.0;am=I;an=s;ao=J;ap=t;aq=o;ar=u;as=O;at=w;au=y;av=A;aw=B;ax=C;ay=D;E=4383}else{X=I;Y=s;Z=w;_=y;$=A;aa=t;ab=u;ac=v;ad=x;ae=z;af=J;ag=o;ah=O;ai=B;aj=C;ak=D;E=4382}}if((E|0)==4382){D=n-af;C=aa-ag;B=ab-ah;O=ac-ai;ac=ad-aj;ad=ae-ak;ae=C*ad-B*ac;o=B*O-D*ad;ad=D*ac-C*O;O=ad*ad+(ae*ae+o*o);if(q){az=0.0;aA=O;aB=X;aC=Y}else{al=O;am=X;an=Y;ao=af;ap=aa;aq=ag;ar=ab;as=ah;at=Z;au=_;av=$;aw=ai;ax=aj;ay=ak;E=4383}}if((E|0)==4383){ak=n-ao;ao=ap-aq;aq=ar-as;as=at-aw;aw=au-ax;ax=av-ay;ay=ao*ax-aq*aw;av=aq*as-ak*ax;ax=ak*aw-ao*as;az=ax*ax+(ay*ay+av*av);aA=al;aB=am;aC=an}an=+P(+aC);aC=+P(+aB);aB=+P(+aA);E=an>-999999984306749400.0;aA=E?an:-999999984306749400.0;q=aC>aA;an=q?aC:aA;r=aB>an;f=+P(+az)>(r?aB:an)?3:r?2:q?1:(E^1)<<31>>31;h=(f|0)<0;i=h?0:f;j=a+4+(i*276|0)|0;k=j;l=b;aDC(k|0,l|0,276)|0;return i|0}function ay6(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,P=0,Q=0;f=b+1116|0;h=c[f>>2]|0;if((h|0)<=0){return}i=d|0;j=d+4|0;k=d+8|0;l=d+48|0;m=d+16|0;n=d+20|0;o=d+24|0;p=d+52|0;q=d+32|0;r=d+36|0;s=d+40|0;t=d+56|0;d=e|0;u=e+4|0;v=e+8|0;w=e+48|0;x=e+16|0;y=e+20|0;z=e+24|0;A=e+52|0;B=e+32|0;C=e+36|0;D=e+40|0;E=e+56|0;e=h;do{e=e-1|0;F=+g[b+4+(e*276|0)>>2];G=+g[b+4+(e*276|0)+4>>2];H=+g[b+4+(e*276|0)+8>>2];I=+g[l>>2]+(+g[i>>2]*F+ +g[j>>2]*G+ +g[k>>2]*H);J=+g[p>>2]+(F*+g[m>>2]+G*+g[n>>2]+H*+g[o>>2]);K=+g[t>>2]+(F*+g[q>>2]+G*+g[r>>2]+H*+g[s>>2]);g[b+4+(e*276|0)+48>>2]=I;g[b+4+(e*276|0)+52>>2]=J;g[b+4+(e*276|0)+56>>2]=K;g[b+4+(e*276|0)+60>>2]=0.0;H=+g[b+4+(e*276|0)+16>>2];G=+g[b+4+(e*276|0)+20>>2];F=+g[b+4+(e*276|0)+24>>2];L=+g[w>>2]+(+g[d>>2]*H+ +g[u>>2]*G+ +g[v>>2]*F);M=+g[A>>2]+(H*+g[x>>2]+G*+g[y>>2]+F*+g[z>>2]);N=+g[E>>2]+(H*+g[B>>2]+G*+g[C>>2]+F*+g[D>>2]);g[b+4+(e*276|0)+32>>2]=L;g[b+4+(e*276|0)+36>>2]=M;g[b+4+(e*276|0)+40>>2]=N;g[b+4+(e*276|0)+44>>2]=0.0;g[b+4+(e*276|0)+80>>2]=(I-L)*+g[b+4+(e*276|0)+64>>2]+(J-M)*+g[b+4+(e*276|0)+68>>2]+(K-N)*+g[b+4+(e*276|0)+72>>2];h=b+4+(e*276|0)+144|0;c[h>>2]=(c[h>>2]|0)+1;}while((e|0)>0);e=c[f>>2]|0;if((e|0)<=0){return}D=b+1120|0;C=b+1124|0;B=e;E=e;while(1){e=B-1|0;z=b+4+(e*276|0)|0;N=+g[b+4+(e*276|0)+80>>2];do{if(N>+g[((c[b+4+(e*276|0)+144>>2]|0)>1?D:C)>>2]){y=E-1|0;if((y|0)==(e|0)){O=E}else{x=z;A=b+4+(y*276|0)|0;aDC(x|0,A|0,276)|0;c[b+4+(y*276|0)+108>>2]=0;g[b+4+(y*276|0)+208>>2]=0.0;g[b+4+(y*276|0)+240>>2]=0.0;g[b+4+(y*276|0)+272>>2]=0.0;g[b+4+(y*276|0)+112>>2]=0.0;a[b+4+(y*276|0)+116|0]=0;g[b+4+(y*276|0)+120>>2]=0.0;g[b+4+(y*276|0)+124>>2]=0.0;c[b+4+(y*276|0)+144>>2]=0;O=c[f>>2]|0}y=O-1|0;c[f>>2]=y;P=y}else{K=+g[b+4+(e*276|0)+32>>2]-(+g[b+4+(e*276|0)+48>>2]- +g[b+4+(e*276|0)+64>>2]*N);M=+g[b+4+(e*276|0)+36>>2]-(+g[b+4+(e*276|0)+52>>2]-N*+g[b+4+(e*276|0)+68>>2]);J=+g[b+4+(e*276|0)+40>>2]-(+g[b+4+(e*276|0)+56>>2]-N*+g[b+4+(e*276|0)+72>>2]);L=+g[D>>2];if(K*K+M*M+J*J<=L*L){P=E;break}y=E-1|0;if((y|0)==(e|0)){Q=E}else{A=z;x=b+4+(y*276|0)|0;aDC(A|0,x|0,276)|0;c[b+4+(y*276|0)+108>>2]=0;g[b+4+(y*276|0)+208>>2]=0.0;g[b+4+(y*276|0)+240>>2]=0.0;g[b+4+(y*276|0)+272>>2]=0.0;g[b+4+(y*276|0)+112>>2]=0.0;a[b+4+(y*276|0)+116|0]=0;g[b+4+(y*276|0)+120>>2]=0.0;g[b+4+(y*276|0)+124>>2]=0.0;c[b+4+(y*276|0)+144>>2]=0;Q=c[f>>2]|0}y=Q-1|0;c[f>>2]=y;P=y}}while(0);if((e|0)>0){B=e;E=P}else{break}}return}function ay7(a){a=a|0;var b=0;c[a>>2]=21200;b=c[a+52>>2]|0;if((b|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[b-80+76>>2]|0)}c[9804]=(c[9804]|0)+1;aDB(c[a-56+52>>2]|0);return}function ay8(a){a=a|0;var b=0;c[a>>2]=21200;b=c[a+52>>2]|0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-80+76>>2]|0);return}function ay9(d){d=d|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0,aq=0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0.0,aI=0.0,aJ=0.0,aK=0,aL=0,aM=0,aN=0,aO=0,aP=0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$=0,a0=0,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0,ba=0,bb=0,bc=0,bd=0,be=0,bf=0.0,bg=0,bh=0,bi=0,bj=0,bk=0,bl=0,bm=0,bn=0,bo=0,bp=0,bq=0,br=0,bs=0,bt=0,bu=0,bv=0,bw=0,bx=0,by=0,bz=0,bA=0,bB=0,bC=0,bD=0,bE=0,bF=0,bG=0,bH=0,bI=0,bJ=0,bK=0,bL=0,bM=0,bN=0,bO=0,bP=0,bQ=0,bR=0,bS=0,bT=0,bU=0,bV=0,bW=0,bX=0,bY=0,bZ=0,b_=0,b$=0,b0=0,b1=0,b2=0,b3=0.0,b4=0,b5=0,b6=0,b7=0,b8=0,b9=0,ca=0,cb=0,cc=0,cd=0,ce=0,cf=0,cg=0,ch=0,ci=0,cj=0,ck=0,cl=0,cm=0,cn=0,co=0,cp=0,cq=0,cr=0,cs=0,ct=0,cu=0,cv=0,cw=0,cx=0,cy=0,cz=0,cB=0,cC=0,cD=0,cE=0,cF=0,cG=0,cH=0,cI=0,cJ=0,cK=0,cL=0,cM=0,cN=0,cO=0,cP=0,cQ=0,cR=0,cS=0,cT=0,cU=0,cV=0.0,cW=0,cX=0,cY=0,cZ=0,c_=0,c$=0,c0=0,c1=0,c2=0,c3=0,c4=0.0,c5=0.0,c6=0.0;f=i;i=i+544|0;h=f|0;j=f+8|0;k=f+16|0;l=f+32|0;m=f+56|0;n=f+72|0;o=f+88|0;p=f+104|0;q=f+232|0;r=f+248|0;s=f+264|0;t=f+280|0;u=f+296|0;v=f+312|0;x=f+376|0;y=f+392|0;z=f+448|0;A=f+464|0;B=f+512|0;C=f+528|0;D=d+52|0;E=c[D>>2]|0;if((E|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[E-80+76>>2]|0)}c[9806]=(c[9806]|0)+1;E=aDx(99)|0;do{if((E|0)==0){F=0}else{G=-(E+4|0)&15;H=E+(G+4)|0;c[E+G>>2]=E;if((H|0)==0){F=0;break}c[H>>2]=23416;a[E+(G+24)|0]=1;c[E+(G+20)>>2]=0;c[E+(G+12)>>2]=0;c[E+(G|16)>>2]=0;a[E+(G+44)|0]=1;c[E+(G+40)>>2]=0;c[E+(G|32)>>2]=0;c[E+(G+36)>>2]=0;a[E+(G|64)|0]=1;c[E+(G+60)>>2]=0;c[E+(G+52)>>2]=0;c[E+(G+56)>>2]=0;F=H}}while(0);c[D>>2]=F;F=d;E=d;H=u;u=0;G=0;I=0;while(1){if((u|0)>=(cA[c[(c[F>>2]|0)+88>>2]&4095](d)|0)){break}do{if((u|0)==(G|0)){J=(G|0)==0?1:G<<1;if((G|0)>=(J|0)){K=G;L=I;break}do{if((J|0)==0){M=0}else{c[9806]=(c[9806]|0)+1;N=aDx((J<<4|4)+15|0)|0;if((N|0)==0){M=0;break}O=-(N+4|0)&15;c[N+O>>2]=N;M=N+(O+4)|0}}while(0);if((G|0)>0){O=0;do{N=M+(O<<4)|0;if((N|0)!=0){R=N;N=I+(O<<4)|0;c[R>>2]=c[N>>2];c[R+4>>2]=c[N+4>>2];c[R+8>>2]=c[N+8>>2];c[R+12>>2]=c[N+12>>2]}O=O+1|0;}while((O|0)<(G|0))}if((I|0)==0){K=J;L=M;break}c[9804]=(c[9804]|0)+1;aDB(c[I-16+12>>2]|0);K=J;L=M}else{K=G;L=I}}while(0);O=L+(u<<4)|0;if((O|0)!=0){N=O;c[N>>2]=c[H>>2];c[N+4>>2]=c[H+4>>2];c[N+8>>2]=c[H+8>>2];c[N+12>>2]=c[H+12>>2]}dA[c[(c[E>>2]|0)+100>>2]&511](d,u,O);u=u+1|0;G=K;I=L}L=v+16|0;a[L]=1;K=v+12|0;c[K>>2]=0;G=v+4|0;c[G>>2]=0;E=v+8|0;c[E>>2]=0;H=v+36|0;a[H]=1;M=v+32|0;c[M>>2]=0;F=v+24|0;c[F>>2]=0;O=v+28|0;c[O>>2]=0;N=v+56|0;a[N]=1;R=v+52|0;c[R>>2]=0;S=v+44|0;c[S>>2]=0;T=v+48|0;c[T>>2]=0;U=I;V=q;q=r;r=s;s=t;do{if((u|0)<1){a[L]=1;c[K>>2]=0;c[G>>2]=0;c[E>>2]=0;a[H]=1;c[M>>2]=0;c[F>>2]=0;c[O>>2]=0;a[N]=1;c[R>>2]=0;c[S>>2]=0;c[T>>2]=0}else{t=p+32|0;c[t>>2]=0;W=p+36|0;c[W>>2]=0;X=p+40|0;c[X>>2]=0;Y=p+44|0;c[Y>>2]=256;Z=p+48|0;c[Z>>2]=0;_=p+52|0;c[_>>2]=0;$=p+56|0;c[$>>2]=0;aa=p+60|0;c[aa>>2]=256;ab=p+64|0;c[ab>>2]=0;c[p+68>>2]=0;c[p+72>>2]=0;c[p+76>>2]=256;ac=p+96|0;a[ac]=1;ad=p+92|0;c[ad>>2]=0;ae=p+84|0;c[ae>>2]=0;af=p+88|0;c[af>>2]=0;ag=m;ah=o;ai=(u|0)>0;aj=1.0000000150474662e+30;ak=1.0000000150474662e+30;al=1.0000000150474662e+30;am=-1.0000000150474662e+30;an=-1.0000000150474662e+30;ao=-1.0000000150474662e+30;ap=0;aq=U;while(1){ar=+g[aq>>2];as=+g[aq+4>>2];at=+g[aq+8>>2];au=ar<al?ar:al;av=as<ak?as:ak;aw=at<aj?at:aj;ax=ao<ar?ar:ao;ay=an<as?as:an;az=am<at?at:am;aA=ap+1|0;if((aA|0)<(u|0)){aj=aw;ak=av;al=au;am=az;an=ay;ao=ax;ap=aA;aq=aq+16|0}else{break}}ao=ax-au;an=ay-av;am=az-aw;if(ao<an){aq=p+112|0;c[aq>>2]=an<am?2:1;aB=ao<am?0:2;aC=aq}else{aq=p+112|0;c[aq>>2]=ao<am?2:0;aB=an<am?1:2;aC=aq}aq=p+104|0;c[aq>>2]=aB;ap=c[aC>>2]|0;if((aB|0)==(ap|0)){aA=((aB+1|0)>>>0)%3|0;c[aq>>2]=aA;aD=c[aC>>2]|0;aE=aA}else{aD=ap;aE=aB}ap=p+108|0;c[ap>>2]=3-aD-aE;al=ao*9788566967472434.0e-20;ao=an*9788566967472434.0e-20;an=am*9788566967472434.0e-20;aA=p|0;g[aA>>2]=al;aF=p+4|0;g[aF>>2]=ao;aG=p+8|0;g[aG>>2]=an;g[p+12>>2]=0.0;if(al>0.0){aH=1.0/al}else{aH=al}if(ao>0.0){aI=1.0/ao}else{aI=ao}if(an>0.0){aJ=1.0/an}else{aJ=an}aK=p+16|0;g[aK>>2]=(au+ax)*.5;aL=p+20|0;g[aL>>2]=(av+ay)*.5;aM=p+24|0;g[aM>>2]=(aw+az)*.5;g[p+28>>2]=0.0;aN=l+16|0;a[aN]=1;aO=l+12|0;c[aO>>2]=0;aP=l+4|0;c[aP>>2]=0;aQ=l+8|0;c[aQ>>2]=0;do{if(ai){c[9806]=(c[9806]|0)+1;aR=aDx((u<<4|4)+15|0)|0;do{if((aR|0)==0){aS=0}else{aT=-(aR+4|0)&15;c[aR+aT>>2]=aR;aU=aR+(aT+4)|0;aT=c[aP>>2]|0;if((aT|0)>0){aV=0}else{aS=aU;break}while(1){aW=aU+(aV<<4)|0;if((aW|0)!=0){aX=aW;aW=(c[aO>>2]|0)+(aV<<4)|0;c[aX>>2]=c[aW>>2];c[aX+4>>2]=c[aW+4>>2];c[aX+8>>2]=c[aW+8>>2];c[aX+12>>2]=c[aW+12>>2]}aW=aV+1|0;if((aW|0)<(aT|0)){aV=aW}else{aS=aU;break}}}}while(0);aR=c[aO>>2]|0;if((aR|0)!=0){if((a[aN]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aR-16+12>>2]|0)}c[aO>>2]=0}a[aN]=1;c[aO>>2]=aS;c[aQ>>2]=u;aR=0;J=aS;while(1){aU=J+(aR<<4)|0;if((aU|0)!=0){aT=aU;c[aT>>2]=c[ag>>2];c[aT+4>>2]=c[ag+4>>2];c[aT+8>>2]=c[ag+8>>2];c[aT+12>>2]=c[ag+12>>2]}aT=aR+1|0;if((aT|0)>=(u|0)){break}aR=aT;J=c[aO>>2]|0}c[aP>>2]=u;J=n|0;aR=n+4|0;aT=n+8|0;aU=n+12|0;aW=0;aX=U;while(1){an=+g[aX>>2];g[J>>2]=an;ao=+g[aX+4>>2];g[aR>>2]=ao;al=aI*(ao- +g[aL>>2]);ao=aJ*(+g[aX+8>>2]- +g[aM>>2]);g[J>>2]=aH*(an- +g[aK>>2]);g[aR>>2]=al;g[aT>>2]=ao;g[aU>>2]=0.0;c[(c[aO>>2]|0)+(aW<<4)>>2]=~~+g[n+(c[ap>>2]<<2)>>2];c[(c[aO>>2]|0)+(aW<<4)+4>>2]=~~+g[n+(c[aC>>2]<<2)>>2];c[(c[aO>>2]|0)+(aW<<4)+8>>2]=~~+g[n+(c[aq>>2]<<2)>>2];c[(c[aO>>2]|0)+(aW<<4)+12>>2]=aW;aY=aW+1|0;if((aY|0)>=(u|0)){break}aW=aY;aX=aX+16|0}aX=c[aP>>2]|0;if((aX|0)<=1){break}aDe(l,0,aX-1|0)}else{c[aP>>2]=u}}while(0);ag=p+32|0;c[W>>2]=c[ag>>2];c[X>>2]=0;c[Y>>2]=u;aX=c[ae>>2]|0;if((aX|0)<(u|0)){if((c[af>>2]|0)<(u|0)){if((u|0)==0){aZ=0;a_=aX}else{c[9806]=(c[9806]|0)+1;aW=aDx((u<<2)+19|0)|0;if((aW|0)==0){a$=0}else{aU=-(aW+4|0)&15;c[aW+aU>>2]=aW;a$=aW+(aU+4)|0}aZ=a$;a_=c[ae>>2]|0}if((a_|0)>0){aU=0;do{aW=aZ+(aU<<2)|0;if((aW|0)!=0){c[aW>>2]=c[(c[ad>>2]|0)+(aU<<2)>>2]}aU=aU+1|0;}while((aU|0)<(a_|0))}aU=c[ad>>2]|0;if((aU|0)!=0){if((a[ac]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aU-4>>2]|0)}c[ad>>2]=0}a[ac]=1;c[ad>>2]=aZ;c[af>>2]=u;a0=aX}else{a0=aX}do{aU=(c[ad>>2]|0)+(a0<<2)|0;if((aU|0)!=0){c[aU>>2]=0}a0=a0+1|0;}while((a0|0)<(u|0))}c[ae>>2]=u;if(ai){aX=0;do{aU=c[X>>2]|0;if((aU|0)==0){aW=c[W>>2]|0;if((aW|0)==0){c[9806]=(c[9806]|0)+1;aT=aDx(31)|0;do{if((aT|0)==0){a1=0}else{aR=-(aT+4|0)&15;J=aT+(aR+4)|0;c[aT+aR>>2]=aT;if((J|0)==0){a1=0;break}aY=c[Y>>2]|0;c[aT+(aR+8)>>2]=aY;c[aT+(aR+12)>>2]=0;c[9806]=(c[9806]|0)+1;aR=aDx((aY*112|0|4)+15|0)|0;if((aR|0)==0){a2=0}else{aY=-(aR+4|0)&15;c[aR+aY>>2]=aR;a2=aR+(aY+4)|0}c[J>>2]=a2;a1=J}}while(0);c[a1+8>>2]=c[ag>>2];c[ag>>2]=a1;a3=a1}else{c[W>>2]=c[aW+8>>2];a3=aW}aT=a3|0;J=a3+4|0;aY=c[J>>2]|0;if((aY|0)>0){aR=c[aT>>2]|0;a4=0;a5=aY;while(1){aY=a4+1|0;a6=aR+112|0;c[aR>>2]=(aY|0)<(a5|0)?a6:0;a7=c[J>>2]|0;if((aY|0)<(a7|0)){aR=a6;a4=aY;a5=a7}else{break}}}a5=c[aT>>2]|0;c[X>>2]=c[a5>>2];if((a5|0)==0){a8=0}else{a9=a5;ba=4509}}else{c[X>>2]=c[aU>>2];a9=aU;ba=4509}if((ba|0)==4509){ba=0;aDD(a9|0,0,20);c[a9+104>>2]=-1;a8=a9}c[a8+8>>2]=0;a5=a8+88|0;a4=(c[aO>>2]|0)+(aX<<4)|0;c[a5>>2]=c[a4>>2];c[a5+4>>2]=c[a4+4>>2];c[a5+8>>2]=c[a4+8>>2];c[a5+12>>2]=c[a4+12>>2];c[a8+104>>2]=-1;c[(c[ad>>2]|0)+(aX<<2)>>2]=a8;aX=aX+1|0;}while((aX|0)<(u|0))}aX=c[aO>>2]|0;if((aX|0)!=0){if((a[aN]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aX-16+12>>2]|0)}c[aO>>2]=0}a[aN]=1;c[aO>>2]=0;c[aP>>2]=0;c[aQ>>2]=0;c[_>>2]=c[Z>>2];c[$>>2]=0;c[aa>>2]=u*6|0;c[p+116>>2]=0;c[p+120>>2]=0;c[p+100>>2]=-3;aDD(ah|0,0,16);aC6(p,0,u,o);aX=p+124|0;c[aX>>2]=c[o>>2];X=c[aO>>2]|0;if((X|0)!=0){if((a[aN]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[X-16+12>>2]|0)}c[aO>>2]=0}X=c[G>>2]|0;if((X|0)<0){W=c[K>>2]|0;if((c[E>>2]|0)<0){if((W|0)!=0){if((a[L]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[W-16+12>>2]|0)}c[K>>2]=0}a[L]=1;c[K>>2]=0;c[E>>2]=0;bb=0}else{bb=W}W=X;do{X=bb+(W<<4)|0;if((X|0)!=0){ag=X;c[ag>>2]=c[V>>2];c[ag+4>>2]=c[V+4>>2];c[ag+8>>2]=c[V+8>>2];c[ag+12>>2]=c[V+12>>2]}W=W+1|0;}while((W|0)<0)}c[G>>2]=0;aDD(q|0,0,12);W=c[F>>2]|0;if((W|0)<0){aO=c[M>>2]|0;if((c[O>>2]|0)<0){if((aO|0)!=0){if((a[H]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aO-12+8>>2]|0)}c[M>>2]=0}a[H]=1;c[M>>2]=0;c[O>>2]=0;bc=0}else{bc=aO}aO=W;do{W=bc+(aO*12|0)|0;if((W|0)!=0){aN=W;c[aN>>2]=c[q>>2];c[aN+4>>2]=c[q+4>>2];c[aN+8>>2]=c[q+8>>2]}aO=aO+1|0;}while((aO|0)<0)}c[F>>2]=0;aO=c[S>>2]|0;if((aO|0)<0){aN=c[R>>2]|0;if((c[T>>2]|0)<0){if((aN|0)!=0){if((a[N]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aN-4>>2]|0)}c[R>>2]=0}a[N]=1;c[R>>2]=0;c[T>>2]=0;bd=0}else{bd=aN}aN=aO;do{aO=bd+(aN<<2)|0;if((aO|0)!=0){c[aO>>2]=0}aN=aN+1|0;}while((aN|0)<0)}c[S>>2]=0;aN=c[aX>>2]|0;aO=aN+104|0;do{if((c[aO>>2]|0)<0){c[aO>>2]=0;c[9806]=(c[9806]|0)+1;W=aDx(23)|0;do{if((W|0)==0){be=0}else{ah=-(W+4|0)&15;aa=W+(ah+4)|0;c[W+ah>>2]=W;ah=aa;if((aa|0)==0){be=0;break}c[ah>>2]=aN;be=ah}}while(0);W=k|0;aU=p+112|0;aT=k+4|0;ah=k+8|0;aa=be;$=1;_=1;aQ=0;while(1){aP=c[aa+(aQ<<2)>>2]|0;if((c[aP+100>>2]|0)>-1){g[k+(c[ap>>2]<<2)>>2]=+(c[aP+88>>2]|0);g[k+(c[aU>>2]<<2)>>2]=+(c[aP+92>>2]|0);bf=+(c[aP+96>>2]|0)}else{ao=+aDd(aP+24|0);ag=aP+72|0;al=ao/+aDd(ag);g[k+(c[ap>>2]<<2)>>2]=al;al=+aDd(aP+40|0);ao=al/+aDd(ag);g[k+(c[aU>>2]<<2)>>2]=ao;ao=+aDd(aP+56|0);bf=ao/+aDd(ag)}g[k+(c[aq>>2]<<2)>>2]=bf;ao=+g[W>>2]*+g[aA>>2]+ +g[aK>>2];al=+g[aT>>2]*+g[aF>>2]+ +g[aL>>2];an=+g[ah>>2]*+g[aG>>2]+ +g[aM>>2];ag=c[G>>2]|0;do{if((ag|0)==(c[E>>2]|0)){X=(ag|0)==0?1:ag<<1;if((ag|0)>=(X|0)){bg=ag;break}do{if((X|0)==0){bh=0}else{c[9806]=(c[9806]|0)+1;Y=aDx((X<<4|4)+15|0)|0;if((Y|0)==0){bh=0;break}ai=-(Y+4|0)&15;c[Y+ai>>2]=Y;bh=Y+(ai+4)|0}}while(0);if((ag|0)>0){ai=0;do{Y=bh+(ai<<4)|0;if((Y|0)!=0){a4=Y;Y=(c[K>>2]|0)+(ai<<4)|0;c[a4>>2]=c[Y>>2];c[a4+4>>2]=c[Y+4>>2];c[a4+8>>2]=c[Y+8>>2];c[a4+12>>2]=c[Y+12>>2]}ai=ai+1|0;}while((ai|0)<(ag|0))}ai=c[K>>2]|0;if((ai|0)!=0){if((a[L]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[ai-16+12>>2]|0)}c[K>>2]=0}a[L]=1;c[K>>2]=bh;c[E>>2]=X;bg=c[G>>2]|0}else{bg=ag}}while(0);ag=c[K>>2]|0;ai=ag+(bg<<4)|0;if((ai|0)!=0){g[ai>>2]=ao;g[ag+(bg<<4)+4>>2]=al;g[ag+(bg<<4)+8>>2]=an;g[ag+(bg<<4)+12>>2]=0.0}c[G>>2]=bg+1;ag=c[aP+8>>2]|0;if((ag|0)==0){bi=_;bj=$;bk=aa}else{ai=ag;Y=-1;a4=-1;a5=_;aR=$;J=aa;while(1){aW=ai+20|0;a7=c[aW>>2]|0;if((a7|0)<0){aY=c[F>>2]|0;aDD(r|0,0,12);a6=c[O>>2]|0;do{if((aY|0)==(a6|0)){bl=(aY|0)==0?1:aY<<1;if((aY|0)>=(bl|0)){bm=aY;bn=aY;break}do{if((bl|0)==0){bo=0}else{c[9806]=(c[9806]|0)+1;bp=aDx((bl*12|0)+19|0)|0;if((bp|0)==0){bo=0;break}bq=-(bp+4|0)&15;c[bp+bq>>2]=bp;bo=bp+(bq+4)|0}}while(0);if((aY|0)>0){bq=0;do{bp=bo+(bq*12|0)|0;if((bp|0)!=0){br=bp;bp=(c[M>>2]|0)+(bq*12|0)|0;c[br>>2]=c[bp>>2];c[br+4>>2]=c[bp+4>>2];c[br+8>>2]=c[bp+8>>2]}bq=bq+1|0;}while((bq|0)<(aY|0))}bq=c[M>>2]|0;if((bq|0)!=0){if((a[H]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bq-12+8>>2]|0)}c[M>>2]=0}a[H]=1;c[M>>2]=bo;c[O>>2]=bl;bm=c[F>>2]|0;bn=bl}else{bm=aY;bn=a6}}while(0);a6=c[M>>2]|0;X=a6+(bm*12|0)|0;if((X|0)!=0){bq=X;c[bq>>2]=c[r>>2];c[bq+4>>2]=c[r+4>>2];c[bq+8>>2]=c[r+8>>2]}bq=bm+1|0;c[F>>2]=bq;aDD(s|0,0,12);do{if((bq|0)==(bn|0)){X=(bn|0)==0?1:bn<<1;if((bn|0)>=(X|0)){bs=bn;bt=a6;break}do{if((X|0)==0){bu=0}else{c[9806]=(c[9806]|0)+1;bp=aDx((X*12|0)+19|0)|0;if((bp|0)==0){bu=0;break}br=-(bp+4|0)&15;c[bp+br>>2]=bp;bu=bp+(br+4)|0}}while(0);if((bn|0)>0){bl=0;do{br=bu+(bl*12|0)|0;if((br|0)!=0){bp=br;br=(c[M>>2]|0)+(bl*12|0)|0;c[bp>>2]=c[br>>2];c[bp+4>>2]=c[br+4>>2];c[bp+8>>2]=c[br+8>>2]}bl=bl+1|0;}while((bl|0)<(bn|0));bv=c[M>>2]|0}else{bv=a6}if((bv|0)!=0){if((a[H]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bv-12+8>>2]|0)}c[M>>2]=0}a[H]=1;c[M>>2]=bu;c[O>>2]=X;bs=c[F>>2]|0;bt=bu}else{bs=bq;bt=a6}}while(0);a6=bt+(bs*12|0)|0;if((a6|0)==0){bw=bs;bx=bt}else{bq=a6;c[bq>>2]=c[s>>2];c[bq+4>>2]=c[s+4>>2];c[bq+8>>2]=c[s+8>>2];bw=c[F>>2]|0;bx=c[M>>2]|0}c[F>>2]=bw+1;bq=aY+1|0;c[aW>>2]=aY;c[(c[ai+8>>2]|0)+20>>2]=bq;c[bx+(aY*12|0)+4>>2]=1;c[bx+(bq*12|0)+4>>2]=-1;a6=c[ai+12>>2]|0;bl=a6+104|0;br=c[bl>>2]|0;if((br|0)<0){c[bl>>2]=a5;do{if((a5|0)==(aR|0)){bl=(aR|0)==0?1:aR<<1;if((aR|0)>=(bl|0)){by=aR;bz=J;break}do{if((bl|0)==0){bA=0}else{c[9806]=(c[9806]|0)+1;bp=aDx((bl<<2)+19|0)|0;if((bp|0)==0){bA=0;break}bB=-(bp+4|0)&15;c[bp+bB>>2]=bp;bA=bp+(bB+4)|0}}while(0);if((aR|0)>0){X=0;do{bB=bA+(X<<2)|0;if((bB|0)!=0){c[bB>>2]=c[J+(X<<2)>>2]}X=X+1|0;}while((X|0)<(aR|0))}if((J|0)==0){by=bl;bz=bA;break}c[9804]=(c[9804]|0)+1;aDB(c[J-4>>2]|0);by=bl;bz=bA}else{by=aR;bz=J}}while(0);X=bz+(a5<<2)|0;if((X|0)!=0){c[X>>2]=a6}bC=a5;bD=a5+1|0;bE=by;bF=bz}else{bC=br;bD=a5;bE=aR;bF=J}c[bx+(aY*12|0)+8>>2]=bC;c[bx+(bq*12|0)+8>>2]=aQ;bG=bD;bH=bE;bI=bF;bJ=c[aW>>2]|0}else{bG=a5;bH=aR;bI=J;bJ=a7}if((Y|0)>-1){c[(c[M>>2]|0)+(bJ*12|0)>>2]=Y-bJ;bK=a4;bL=c[aW>>2]|0}else{bK=bJ;bL=bJ}X=c[ai>>2]|0;if((X|0)==(ag|0)){break}else{ai=X;Y=bL;a4=bK;a5=bG;aR=bH;J=bI}}c[(c[M>>2]|0)+(bK*12|0)>>2]=bL-bK;bi=bG;bj=bH;bk=bI}bM=aQ+1|0;if((bM|0)<(bi|0)){aa=bk;$=bj;_=bi;aQ=bM}else{break}}if((bM|0)>0){aQ=0;do{_=c[(c[bk+(aQ<<2)>>2]|0)+8>>2]|0;if((_|0)!=0){$=_;do{aa=$+20|0;if((c[aa>>2]|0)>-1){ah=c[S>>2]|0;do{if((ah|0)==(c[T>>2]|0)){aT=(ah|0)==0?1:ah<<1;if((ah|0)>=(aT|0)){bN=ah;break}do{if((aT|0)==0){bO=0}else{c[9806]=(c[9806]|0)+1;W=aDx((aT<<2)+19|0)|0;if((W|0)==0){bO=0;break}aU=-(W+4|0)&15;c[W+aU>>2]=W;bO=W+(aU+4)|0}}while(0);if((ah|0)>0){bl=0;do{aU=bO+(bl<<2)|0;if((aU|0)!=0){c[aU>>2]=c[(c[R>>2]|0)+(bl<<2)>>2]}bl=bl+1|0;}while((bl|0)<(ah|0))}bl=c[R>>2]|0;if((bl|0)!=0){if((a[N]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bl-4>>2]|0)}c[R>>2]=0}a[N]=1;c[R>>2]=bO;c[T>>2]=aT;bN=c[S>>2]|0}else{bN=ah}}while(0);ah=(c[R>>2]|0)+(bN<<2)|0;if((ah|0)!=0){c[ah>>2]=c[aa>>2]}c[S>>2]=bN+1;ah=$;do{c[ah+20>>2]=-1;ah=c[(c[ah+8>>2]|0)+4>>2]|0;}while((ah|0)!=($|0))}$=c[$>>2]|0;}while(($|0)!=(_|0))}aQ=aQ+1|0;}while((aQ|0)<(bM|0))}if((bk|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[bk-4>>2]|0)}}while(0);aM=c[ad>>2]|0;if((aM|0)!=0){if((a[ac]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aM-4>>2]|0)}c[ad>>2]=0}a[ac]=1;c[ad>>2]=0;c[ae>>2]=0;c[af>>2]=0;aM=c[ab>>2]|0;if((aM|0)!=0){aG=aM;do{c[ab>>2]=c[aG+8>>2];aM=c[aG>>2]|0;if((aM|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aM-60+56>>2]|0)}c[9804]=(c[9804]|0)+1;aDB(c[aG-12+8>>2]|0);aG=c[ab>>2]|0;}while((aG|0)!=0)}aG=c[Z>>2]|0;if((aG|0)!=0){ab=aG;do{c[Z>>2]=c[ab+8>>2];aG=c[ab>>2]|0;if((aG|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aG-24+20>>2]|0)}c[9804]=(c[9804]|0)+1;aDB(c[ab-12+8>>2]|0);ab=c[Z>>2]|0;}while((ab|0)!=0)}ab=c[t>>2]|0;if((ab|0)==0){break}else{bP=ab}do{c[t>>2]=c[bP+8>>2];ab=c[bP>>2]|0;if((ab|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[ab-4>>2]|0)}c[9804]=(c[9804]|0)+1;aDB(c[bP-12+8>>2]|0);bP=c[t>>2]|0;}while((bP|0)!=0)}}while(0);bP=c[S>>2]|0;S=(bP|0)>0;if(S){c[9806]=(c[9806]|0)+1;bk=aDx((bP<<4|4)+15|0)|0;if((bk|0)==0){bQ=0}else{bM=-(bk+4|0)&15;c[bk+bM>>2]=bk;bQ=bk+(bM+4)|0}bM=x;x=0;while(1){bk=bQ+(x<<4)|0;if((bk|0)!=0){bN=bk;c[bN>>2]=c[bM>>2];c[bN+4>>2]=c[bM+4>>2];c[bN+8>>2]=c[bM+8>>2];c[bN+12>>2]=c[bM+12>>2]}bN=x+1|0;if((bN|0)<(bP|0)){x=bN}else{bR=bQ;break}}}else{bR=0}bQ=c[D>>2]|0;aDD(y|0,0,56);x=y+16|0;a[x]=1;bM=y+12|0;c[bM>>2]=0;bN=y+4|0;c[bN>>2]=0;bk=y+8|0;c[bk>>2]=0;T=y+36|0;a[T]=1;bO=y+32|0;c[bO>>2]=0;N=y+24|0;c[N>>2]=0;bi=y+28|0;c[bi>>2]=0;bj=bQ+24|0;bI=bQ+28|0;bH=c[bI>>2]|0;do{if((bH|0)>(bP|0)){bG=bQ+36|0;bK=bP;while(1){bL=c[bG>>2]|0;bJ=bL+(bK*56|0)+24|0;bF=bL+(bK*56|0)+32|0;bE=c[bF>>2]|0;bD=bL+(bK*56|0)+36|0;if((bE|0)!=0){if((a[bD]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bE-4>>2]|0)}c[bF>>2]=0}a[bD]=1;c[bF>>2]=0;c[bJ>>2]=0;c[bL+(bK*56|0)+28>>2]=0;bJ=bL+(bK*56|0)+4|0;bF=bL+(bK*56|0)+12|0;bD=c[bF>>2]|0;bE=bL+(bK*56|0)+16|0;if((bD|0)!=0){if((a[bE]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bD-4>>2]|0)}c[bF>>2]=0}a[bE]=1;c[bF>>2]=0;c[bJ>>2]=0;c[bL+(bK*56|0)+8>>2]=0;bL=bK+1|0;if((bL|0)<(bH|0)){bK=bL}else{ba=4712;break}}}else{if((bH|0)>=(bP|0)){ba=4712;break}bK=bQ+32|0;if((c[bK>>2]|0)<(bP|0)){do{if((bP|0)==0){bS=0}else{c[9806]=(c[9806]|0)+1;bG=aDx((bP*56|0|4)+15|0)|0;if((bG|0)==0){bS=0;break}bL=-(bG+4|0)&15;c[bG+bL>>2]=bG;bS=bG+(bL+4)|0}}while(0);bL=c[bI>>2]|0;bG=bQ+36|0;if((bL|0)>0){bJ=0;do{bF=bS+(bJ*56|0)|0;if((bF|0)!=0){bE=c[bG>>2]|0;azg(bF,bE+(bJ*56|0)|0);azg(bF+20|0,bE+(bJ*56|0)+20|0);bD=bF+40|0;bF=bE+(bJ*56|0)+40|0;c[bD>>2]=c[bF>>2];c[bD+4>>2]=c[bF+4>>2];c[bD+8>>2]=c[bF+8>>2];c[bD+12>>2]=c[bF+12>>2]}bJ=bJ+1|0;}while((bJ|0)<(bL|0));bT=c[bI>>2]|0}else{bT=bL}azh(bj,bT);bJ=c[bG>>2]|0;bF=bQ+40|0;if((bJ|0)!=0){if((a[bF]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bJ-4>>2]|0)}c[bG>>2]=0}a[bF]=1;c[bG>>2]=bS;c[bK>>2]=bP;bU=bG}else{bU=bQ+36|0}bF=y|0;bJ=y+20|0;bD=y+40|0;bE=bH;do{bx=(c[bU>>2]|0)+(bE*56|0)|0;if((bx|0)!=0){azg(bx,bF);azg(bx+20|0,bJ);bC=bx+40|0;c[bC>>2]=c[bD>>2];c[bC+4>>2]=c[bD+4>>2];c[bC+8>>2]=c[bD+8>>2];c[bC+12>>2]=c[bD+12>>2]}bE=bE+1|0;}while((bE|0)<(bP|0));bE=c[bO>>2]|0;c[bI>>2]=bP;if((bE|0)==0){break}if((a[T]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bE-4>>2]|0)}c[bO>>2]=0}}while(0);if((ba|0)==4712){c[bI>>2]=bP}a[T]=1;c[bO>>2]=0;c[N>>2]=0;c[bi>>2]=0;bi=c[bM>>2]|0;if((bi|0)!=0){if((a[x]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bi-4>>2]|0)}c[bM>>2]=0}a[x]=1;c[bM>>2]=0;c[bN>>2]=0;c[bk>>2]=0;bk=c[G>>2]|0;bN=c[D>>2]|0;bM=bN+8|0;x=c[bM>>2]|0;if((x|0)<(bk|0)){bi=bN+12|0;if((c[bi>>2]|0)<(bk|0)){if((bk|0)==0){bV=0;bW=x}else{c[9806]=(c[9806]|0)+1;N=aDx((bk<<4|4)+15|0)|0;if((N|0)==0){bX=0}else{bO=-(N+4|0)&15;c[N+bO>>2]=N;bX=N+(bO+4)|0}bV=bX;bW=c[bM>>2]|0}bX=bN+16|0;if((bW|0)>0){bO=0;do{N=bV+(bO<<4)|0;if((N|0)!=0){T=N;N=(c[bX>>2]|0)+(bO<<4)|0;c[T>>2]=c[N>>2];c[T+4>>2]=c[N+4>>2];c[T+8>>2]=c[N+8>>2];c[T+12>>2]=c[N+12>>2]}bO=bO+1|0;}while((bO|0)<(bW|0))}bW=c[bX>>2]|0;bO=bN+20|0;if((bW|0)!=0){if((a[bO]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bW-16+12>>2]|0)}c[bX>>2]=0}a[bO]=1;c[bX>>2]=bV;c[bi>>2]=bk;bY=bX}else{bY=bN+16|0}bN=z;z=x;do{x=(c[bY>>2]|0)+(z<<4)|0;if((x|0)!=0){bX=x;c[bX>>2]=c[bN>>2];c[bX+4>>2]=c[bN+4>>2];c[bX+8>>2]=c[bN+8>>2];c[bX+12>>2]=c[bN+12>>2]}z=z+1|0;}while((z|0)<(bk|0))}c[bM>>2]=bk;if((bk|0)>0){bM=c[K>>2]|0;z=0;do{bN=(c[(c[D>>2]|0)+16>>2]|0)+(z<<4)|0;bY=bM+(z<<4)|0;c[bN>>2]=c[bY>>2];c[bN+4>>2]=c[bY+4>>2];c[bN+8>>2]=c[bY+8>>2];c[bN+12>>2]=c[bY+12>>2];z=z+1|0;}while((z|0)<(bk|0))}if(S){S=A+4|0;bk=A+24|0;z=A+8|0;bM=A+20|0;bY=A+16|0;bN=A|0;bX=0;do{x=(c[M>>2]|0)+((c[(c[R>>2]|0)+(bX<<2)>>2]|0)*12|0)|0;bi=x;bV=0;while(1){bO=bi+4|0;bW=c[bi+((c[bO>>2]|0)*12|0)+8>>2]|0;N=c[(c[D>>2]|0)+36>>2]|0;T=N+(bX*56|0)+4|0;bI=c[T>>2]|0;bU=N+(bX*56|0)+8|0;do{if((bI|0)==(c[bU>>2]|0)){bH=(bI|0)==0?1:bI<<1;if((bI|0)>=(bH|0)){bZ=bI;break}if((bH|0)==0){b_=0;b$=bI}else{c[9806]=(c[9806]|0)+1;y=aDx((bH<<2)+19|0)|0;if((y|0)==0){b0=0}else{bQ=-(y+4|0)&15;c[y+bQ>>2]=y;b0=y+(bQ+4)|0}b_=b0;b$=c[T>>2]|0}bQ=N+(bX*56|0)+12|0;if((b$|0)>0){y=0;do{bS=b_+(y<<2)|0;if((bS|0)!=0){c[bS>>2]=c[(c[bQ>>2]|0)+(y<<2)>>2]}y=y+1|0;}while((y|0)<(b$|0))}y=c[bQ>>2]|0;bS=N+(bX*56|0)+16|0;if((y|0)!=0){if((a[bS]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[y-4>>2]|0)}c[bQ>>2]=0}a[bS]=1;c[bQ>>2]=b_;c[bU>>2]=bH;bZ=c[T>>2]|0}else{bZ=bI}}while(0);bI=(c[N+(bX*56|0)+12>>2]|0)+(bZ<<2)|0;if((bI|0)==0){b1=bZ}else{c[bI>>2]=bW;b1=c[T>>2]|0}c[T>>2]=b1+1;bI=c[bi+8>>2]|0;bU=c[K>>2]|0;bf=+g[bU+(bI<<4)>>2]- +g[bU+(bW<<4)>>2];aH=+g[bU+(bI<<4)+4>>2]- +g[bU+(bW<<4)+4>>2];aJ=+g[bU+(bI<<4)+8>>2]- +g[bU+(bW<<4)+8>>2];aI=1.0/+Q(+(bf*bf+aH*aH+aJ*aJ));if((bV|0)<2){g[A+(bV<<4)>>2]=bf*aI;g[A+(bV<<4)+4>>2]=aH*aI;g[A+(bV<<4)+8>>2]=aJ*aI;g[A+(bV<<4)+12>>2]=0.0;b2=bV+1|0}else{b2=bV}bU=c[bO>>2]|0;bI=bi+(((c[bi+(bU*12|0)>>2]|0)+bU|0)*12|0)|0;if((bI|0)==(x|0)){break}else{bi=bI;bV=b2}}bV=bR+(bX<<4)|0;if((b2|0)==2){aI=+g[S>>2];aJ=+g[bk>>2];aH=+g[z>>2];bf=+g[bM>>2];az=aI*aJ-aH*bf;aw=+g[bY>>2];ay=+g[bN>>2];av=aH*aw-aJ*ay;aJ=bf*ay-aI*aw;bi=bR+(bX<<4)+4|0;x=bR+(bX<<4)+8|0;g[bR+(bX<<4)+12>>2]=0.0;aw=1.0/+Q(+(az*az+av*av+aJ*aJ));aI=az*aw;g[bV>>2]=aI;g[bi>>2]=av*aw;g[x>>2]=aJ*aw;g[(c[(c[D>>2]|0)+36>>2]|0)+(bX*56|0)+40>>2]=-0.0-aI;g[(c[(c[D>>2]|0)+36>>2]|0)+(bX*56|0)+44>>2]=-0.0- +g[bi>>2];g[(c[(c[D>>2]|0)+36>>2]|0)+(bX*56|0)+48>>2]=-0.0- +g[x>>2];g[(c[(c[D>>2]|0)+36>>2]|0)+(bX*56|0)+52>>2]=1.0000000150474662e+30}else{aDD(bV|0,0,16)}x=c[D>>2]|0;bi=c[x+36>>2]|0;bI=c[bi+(bX*56|0)+4>>2]|0;if((bI|0)>0){aI=+g[bV>>2];aw=+g[bR+(bX<<4)+4>>2];aJ=+g[bR+(bX<<4)+8>>2];bV=c[bi+(bX*56|0)+12>>2]|0;bU=c[x+16>>2]|0;av=1.0000000150474662e+30;x=0;while(1){bS=c[bV+(x<<2)>>2]|0;az=+g[bU+(bS<<4)>>2]*aI+ +g[bU+(bS<<4)+4>>2]*aw+ +g[bU+(bS<<4)+8>>2]*aJ;ay=av>az?az:av;bS=x+1|0;if((bS|0)<(bI|0)){av=ay;x=bS}else{b3=ay;break}}}else{b3=1.0000000150474662e+30}g[bi+(bX*56|0)+52>>2]=b3;bX=bX+1|0;}while((bX|0)<(bP|0))}bP=c[D>>2]|0;bX=c[bP+28>>2]|0;do{if((bX|0)==0){b4=bP;b5=0}else{if(!((c[G>>2]|0)!=0&(bX|0)>0)){b4=bP;b5=bX;break}bN=d;bY=C|0;bM=C+4|0;z=C+8|0;bk=C+12|0;S=d|0;b2=B|0;A=B+4|0;K=B+8|0;b1=0;bZ=bP;while(1){b_=c[bZ+36>>2]|0;b3=+g[b_+(b1*56|0)+40>>2];av=+g[b_+(b1*56|0)+44>>2];aJ=+g[b_+(b1*56|0)+48>>2];aw=+g[b_+(b1*56|0)+52>>2];b_=c[(c[bN>>2]|0)+60>>2]|0;g[bY>>2]=-0.0-b3;g[bM>>2]=-0.0-av;g[z>>2]=-0.0-aJ;g[bk>>2]=0.0;dA[b_&511](B,S,C);L5925:do{if(b3*+g[b2>>2]+av*+g[A>>2]+aJ*+g[K>>2]<aw){b_=(c[(c[D>>2]|0)+36>>2]|0)+(b1*56|0)+40|0;g[b_>>2]=+g[b_>>2]*-1.0;b_=(c[(c[D>>2]|0)+36>>2]|0)+(b1*56|0)+44|0;g[b_>>2]=+g[b_>>2]*-1.0;b_=(c[(c[D>>2]|0)+36>>2]|0)+(b1*56|0)+48|0;g[b_>>2]=+g[b_>>2]*-1.0;b_=(c[(c[D>>2]|0)+36>>2]|0)+(b1*56|0)+52|0;g[b_>>2]=+g[b_>>2]*-1.0;b_=c[(c[D>>2]|0)+36>>2]|0;b$=c[b_+(b1*56|0)+4>>2]|0;b0=(b$|0)/2|0;if((b$|0)<=1){break}R=b$-1|0;b$=0;M=b_;while(1){b_=c[M+(b1*56|0)+12>>2]|0;x=b_+(b$<<2)|0;bI=b_+(R-b$<<2)|0;b_=c[x>>2]|0;c[x>>2]=c[bI>>2];c[bI>>2]=b_;b_=b$+1|0;if((b_|0)>=(b0|0)){break L5925}b$=b_;M=c[(c[D>>2]|0)+36>>2]|0}}}while(0);bO=b1+1|0;bW=c[D>>2]|0;T=c[bW+28>>2]|0;if((bO|0)<(T|0)){b1=bO;bZ=bW}else{b4=bW;b5=T;break}}}}while(0);c[h>>2]=0;c[j>>2]=0;D=b4+64|0;C=b4+68|0;B=b4+72|0;bP=b4+28|0;aDD(D|0,0,16);do{if((b5|0)>0){d=b4+36|0;bX=b4+16|0;G=b4+48|0;bZ=b4+52|0;b1=b4+56|0;K=b4+60|0;A=0;b2=b5;S=0;bk=0;z=0;bM=0;bY=0;bN=0;bi=0;T=0;bW=0;bO=0;while(1){N=c[d>>2]|0;M=c[N+(A*56|0)+4>>2]|0;if((M|0)>0){b$=A&65535;b0=A|-65536;R=0;bH=N;N=S;bQ=bk;b_=z;bI=bM;x=bY;bU=bN;bV=bi;bS=T;y=bW;bT=bO;while(1){bj=R+1|0;bE=c[bH+(A*56|0)+12>>2]|0;bD=c[bE+(R<<2)>>2]&65535;bJ=c[bE+(((bj|0)==(M|0)?0:bj)<<2)>>2]&65535;bE=bD<<16>>16<bJ<<16>>16;bF=bE?bD:bJ;bG=bE?bJ:bD;bD=bG<<16>>16;bJ=x-1|0;bE=((bF&65535)<<16)+bD&bJ;L5941:do{if(bE>>>0<bU>>>0){bK=c[(c[h>>2]|0)+(bE<<2)>>2]|0;if((bK|0)==-1){b6=0;break}bL=c[j>>2]|0;bC=bK;while(1){if(bG<<16>>16==(b[N+(bC<<2)>>1]|0)){if(bF<<16>>16==(b[N+(bC<<2)+2>>1]|0)){break}}bK=c[bL+(bC<<2)>>2]|0;if((bK|0)==-1){b6=0;break L5941}else{bC=bK}}if((bC|0)==-1){b6=0;break}b6=bI+(bC<<2)|0}else{b6=0}}while(0);bE=bF<<16>>16;bL=c[bX>>2]|0;aw=+g[bL+(bE<<4)>>2]- +g[bL+(bD<<4)>>2];aJ=+g[bL+(bE<<4)+4>>2]- +g[bL+(bD<<4)+4>>2];av=+g[bL+(bE<<4)+8>>2]- +g[bL+(bD<<4)+8>>2];b3=1.0/+Q(+(aw*aw+aJ*aJ+av*av));aI=aw*b3;aw=aJ*b3;aJ=av*b3;bL=c[G>>2]|0;L5952:do{if((bL|0)>0){bE=c[b1>>2]|0;bK=0;while(1){b3=+g[bE+(bK<<4)>>2];av=+g[bE+(bK<<4)+8>>2];ay=av-aJ;do{if(+P(+(b3-aI))<=1.0e-6){if(+P(+(+g[bE+(bK<<4)+4>>2]-aw))>1.0e-6){break}if(+P(+ay)<=1.0e-6){break L5952}}}while(0);ay=aJ+av;do{if(+P(+(aI+b3))<=1.0e-6){if(+P(+(aw+ +g[bE+(bK<<4)+4>>2]))>1.0e-6){break}if(+P(+ay)<=1.0e-6){break L5952}}}while(0);aT=bK+1|0;if((aT|0)<(bL|0)){bK=aT}else{ba=4817;break}}}else{ba=4817}}while(0);if((ba|0)==4817){ba=0;do{if((bL|0)==(c[bZ>>2]|0)){bD=(bL|0)==0?1:bL<<1;if((bL|0)>=(bD|0)){b7=bL;break}if((bD|0)==0){b8=0;b9=bL}else{c[9806]=(c[9806]|0)+1;bK=aDx((bD<<4|4)+15|0)|0;if((bK|0)==0){ca=0}else{bE=-(bK+4|0)&15;c[bK+bE>>2]=bK;ca=bK+(bE+4)|0}b8=ca;b9=c[G>>2]|0}if((b9|0)>0){bE=0;do{bK=b8+(bE<<4)|0;if((bK|0)!=0){bC=bK;bK=(c[b1>>2]|0)+(bE<<4)|0;c[bC>>2]=c[bK>>2];c[bC+4>>2]=c[bK+4>>2];c[bC+8>>2]=c[bK+8>>2];c[bC+12>>2]=c[bK+12>>2]}bE=bE+1|0;}while((bE|0)<(b9|0))}bE=c[b1>>2]|0;if((bE|0)!=0){if((a[K]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bE-16+12>>2]|0)}c[b1>>2]=0}a[K]=1;c[b1>>2]=b8;c[bZ>>2]=bD;b7=c[G>>2]|0}else{b7=bL}}while(0);bL=c[b1>>2]|0;bE=bL+(b7<<4)|0;if((bE|0)==0){cb=b7}else{g[bE>>2]=aI;g[bL+(b7<<4)+4>>2]=aw;g[bL+(b7<<4)+8>>2]=aJ;g[bL+(b7<<4)+12>>2]=0.0;cb=c[G>>2]|0}c[G>>2]=cb+1}L5993:do{if((b6|0)==0){bL=(bF&65535)<<16;bE=bL+(bG<<16>>16)|0;bK=bE&bJ;L5996:do{if(bK>>>0<bU>>>0){bC=c[(c[h>>2]|0)+(bK<<2)>>2]|0;if((bC|0)==-1){break}aT=c[j>>2]|0;bx=bC;while(1){if(bG<<16>>16==(b[N+(bx<<2)>>1]|0)){if(bF<<16>>16==(b[N+(bx<<2)+2>>1]|0)){break}}bC=c[aT+(bx<<2)>>2]|0;if((bC|0)==-1){break L5996}else{bx=bC}}if((bx|0)==-1){break}aT=bI+(bx<<2)|0;w=b0;b[aT>>1]=w&65535;b[aT+2>>1]=w>>16;cc=N;cd=bQ;ce=b_;cf=bI;cg=x;ch=bU;ci=bV;cj=bS;ck=y;cl=bT;break L5993}}while(0);do{if((bS|0)==(x|0)){bD=(bS|0)==0?1:bS<<1;if((bS|0)>=(bD|0)){cm=bI;cn=bS;break}do{if((bD|0)==0){co=0}else{c[9806]=(c[9806]|0)+1;aT=aDx((bD<<2)+19|0)|0;if((aT|0)==0){co=0;break}bC=-(aT+4|0)&15;c[aT+bC>>2]=aT;co=aT+(bC+4)|0}}while(0);if((bS|0)>0){bx=0;do{bC=co+(bx<<2)|0;if((bC|0)!=0){aT=bI+(bx<<2)|0;bz=bC;w=e[aT>>1]|e[aT+2>>1]<<16;b[bz>>1]=w&65535;b[bz+2>>1]=w>>16}bx=bx+1|0;}while((bx|0)<(bS|0))}if((bI|0)==0){cm=co;cn=bD;break}c[9804]=(c[9804]|0)+1;aDB(c[bI-4>>2]|0);cm=co;cn=bD}else{cm=bI;cn=x}}while(0);bx=cm+(bS<<2)|0;if((bx|0)!=0){bz=bx;w=b0;b[bz>>1]=w&65535;b[bz+2>>1]=w>>16}bz=bS+1|0;do{if((b_|0)==(bQ|0)){bx=(b_|0)==0?1:b_<<1;if((b_|0)>=(bx|0)){cp=N;cq=b_;break}do{if((bx|0)==0){cr=0}else{c[9806]=(c[9806]|0)+1;aT=aDx((bx<<2)+19|0)|0;if((aT|0)==0){cr=0;break}bC=-(aT+4|0)&15;c[aT+bC>>2]=aT;cr=aT+(bC+4)|0}}while(0);if((b_|0)>0){bD=0;do{bC=cr+(bD<<2)|0;if((bC|0)!=0){aT=N+(bD<<2)|0;by=bC;w=e[aT>>1]|e[aT+2>>1]<<16;b[by>>1]=w&65535;b[by+2>>1]=w>>16}bD=bD+1|0;}while((bD|0)<(b_|0))}if((N|0)==0){cp=cr;cq=bx;break}c[9804]=(c[9804]|0)+1;aDB(c[N-4>>2]|0);cp=cr;cq=bx}else{cp=N;cq=bQ}}while(0);bD=cp+(b_<<2)|0;if((bD|0)!=0){by=bD;w=bL|bG&65535;b[by>>1]=w&65535;b[by+2>>1]=w>>16}by=b_+1|0;if((x|0)<(cn|0)){do{if((bU|0)<(cn|0)){if((bU|0)>(cn|0)){cs=bV}else{if((bV|0)<(cn|0)){do{if((cn|0)==0){ct=0}else{c[9806]=(c[9806]|0)+1;bD=aDx((cn<<2)+19|0)|0;if((bD|0)==0){ct=0;break}aT=-(bD+4|0)&15;c[bD+aT>>2]=bD;ct=bD+(aT+4)|0}}while(0);if((bU|0)>0){bx=0;do{aT=ct+(bx<<2)|0;if((aT|0)!=0){c[aT>>2]=c[(c[h>>2]|0)+(bx<<2)>>2]}bx=bx+1|0;}while((bx|0)<(bU|0))}bx=c[h>>2]|0;if((bx|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bx-4>>2]|0);c[h>>2]=0}c[h>>2]=ct;cu=cn;cv=ct}else{cu=bV;cv=c[h>>2]|0}bx=bU;while(1){aT=cv+(bx<<2)|0;if((aT|0)!=0){c[aT>>2]=0}aT=bx+1|0;if((aT|0)<(cn|0)){bx=aT}else{cs=cu;break}}}if((y|0)<(cn|0)){if((bT|0)<(cn|0)){do{if((cn|0)==0){cw=0}else{c[9806]=(c[9806]|0)+1;bx=aDx((cn<<2)+19|0)|0;if((bx|0)==0){cw=0;break}aT=-(bx+4|0)&15;c[bx+aT>>2]=bx;cw=bx+(aT+4)|0}}while(0);if((y|0)>0){aT=0;do{bx=cw+(aT<<2)|0;if((bx|0)!=0){c[bx>>2]=c[(c[j>>2]|0)+(aT<<2)>>2]}aT=aT+1|0;}while((aT|0)<(y|0))}aT=c[j>>2]|0;if((aT|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aT-4>>2]|0);c[j>>2]=0}c[j>>2]=cw;cx=cn;cy=cw}else{cx=bT;cy=c[j>>2]|0}aT=y;while(1){bx=cy+(aT<<2)|0;if((bx|0)!=0){c[bx>>2]=0}bx=aT+1|0;if((bx|0)<(cn|0)){aT=bx}else{cz=cx;break}}}else{cz=bT}if((cn|0)>0){aT=c[h>>2]|0;bx=0;do{c[aT+(bx<<2)>>2]=-1;bx=bx+1|0;}while((bx|0)<(cn|0));bx=c[j>>2]|0;aT=0;do{c[bx+(aT<<2)>>2]=-1;aT=aT+1|0;}while((aT|0)<(cn|0))}if((bU|0)<=0){cB=cn;cC=cs;cD=cn;cE=cz;break}aT=cn-1|0;bx=c[h>>2]|0;bD=c[j>>2]|0;bC=0;while(1){bA=bx+(((e[cp+(bC<<2)+2>>1]<<16)+(b[cp+(bC<<2)>>1]|0)&aT)<<2)|0;c[bD+(bC<<2)>>2]=c[bA>>2];c[bA>>2]=bC;bA=bC+1|0;if((bA|0)<(bU|0)){bC=bA}else{cB=cn;cC=cs;cD=cn;cE=cz;break}}}else{cB=bU;cC=bV;cD=y;cE=bT}}while(0);cF=bE&cn-1;cG=cB;cH=cC;cI=cD;cJ=cE}else{cF=bK;cG=bU;cH=bV;cI=y;cJ=bT}bL=(c[h>>2]|0)+(cF<<2)|0;c[(c[j>>2]|0)+(bS<<2)>>2]=c[bL>>2];c[bL>>2]=bS;cc=cp;cd=cq;ce=by;cf=cm;cg=cn;ch=cG;ci=cH;cj=bz;ck=cI;cl=cJ}else{b[b6+2>>1]=b$;cc=N;cd=bQ;ce=b_;cf=bI;cg=x;ch=bU;ci=bV;cj=bS;ck=y;cl=bT}}while(0);if((bj|0)>=(M|0)){break}R=bj;bH=c[d>>2]|0;N=cc;bQ=cd;b_=ce;bI=cf;x=cg;bU=ch;bV=ci;bS=cj;y=ck;bT=cl}cK=c[bP>>2]|0;cL=cc;cM=cd;cN=ce;cO=cf;cP=cg;cQ=ch;cR=ci;cS=cj;cT=ck;cU=cl}else{cK=b2;cL=S;cM=bk;cN=z;cO=bM;cP=bY;cQ=bN;cR=bi;cS=T;cT=bW;cU=bO}bT=A+1|0;if((bT|0)<(cK|0)){A=bT;b2=cK;S=cL;bk=cM;z=cN;bM=cO;bY=cP;bN=cQ;bi=cR;T=cS;bW=cT;bO=cU}else{break}}if((cK|0)<=0){cV=0.0;cW=cL;cX=cO;break}bO=cP-1|0;bW=c[h>>2]|0;T=c[j>>2]|0;bi=0;do{bN=c[d>>2]|0;bY=c[bN+(bi*56|0)+4>>2]|0;bM=bN+(bi*56|0)+24|0;z=c[bM>>2]|0;if((z|0)<(bY|0)){bk=bN+(bi*56|0)+28|0;if((c[bk>>2]|0)<(bY|0)){if((bY|0)==0){cY=0;cZ=z}else{c[9806]=(c[9806]|0)+1;S=aDx((bY<<2)+19|0)|0;if((S|0)==0){c_=0}else{b2=-(S+4|0)&15;c[S+b2>>2]=S;c_=S+(b2+4)|0}cY=c_;cZ=c[bM>>2]|0}b2=bN+(bi*56|0)+32|0;if((cZ|0)>0){S=0;do{A=cY+(S<<2)|0;if((A|0)!=0){c[A>>2]=c[(c[b2>>2]|0)+(S<<2)>>2]}S=S+1|0;}while((S|0)<(cZ|0))}S=c[b2>>2]|0;A=bN+(bi*56|0)+36|0;if((S|0)!=0){if((a[A]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[S-4>>2]|0)}c[b2>>2]=0}a[A]=1;c[b2>>2]=cY;c[bk>>2]=bY;c$=b2}else{c$=bN+(bi*56|0)+32|0}A=z;do{S=(c[c$>>2]|0)+(A<<2)|0;if((S|0)!=0){c[S>>2]=0}A=A+1|0;}while((A|0)<(bY|0))}c[bM>>2]=bY;if((bY|0)>0){A=0;while(1){z=A+1|0;bN=c[d>>2]|0;b2=c[bN+(bi*56|0)+12>>2]|0;bk=c[b2+(A<<2)>>2]&65535;S=c[b2+(((z|0)==(bY|0)?0:z)<<2)>>2]&65535;b2=bk<<16>>16<S<<16>>16;G=b2?bk:S;b1=b2?S:bk;bk=((G&65535)<<16)+(b1<<16>>16)&bO;L6156:do{if(bk>>>0<cQ>>>0){S=c[bW+(bk<<2)>>2]|0;if((S|0)==-1){c0=0;break}else{c1=S}while(1){if(b1<<16>>16==(b[cL+(c1<<2)>>1]|0)){if(G<<16>>16==(b[cL+(c1<<2)+2>>1]|0)){break}}S=c[T+(c1<<2)>>2]|0;if((S|0)==-1){c0=0;break L6156}else{c1=S}}if((c1|0)==-1){c0=0;break}c0=cO+(c1<<2)|0}else{c0=0}}while(0);G=b[c0>>1]|0;if((G<<16>>16|0)==(bi|0)){c2=b[c0+2>>1]|0}else{c2=G}c[(c[bN+(bi*56|0)+32>>2]|0)+(A<<2)>>2]=c2<<16>>16;if((z|0)<(bY|0)){A=z}else{break}}}bi=bi+1|0;c3=c[bP>>2]|0;}while((bi|0)<(c3|0));if((c3|0)<=0){cV=0.0;cW=cL;cX=cO;break}bi=c[d>>2]|0;T=c[bX>>2]|0;aJ=0.0;bW=0;while(1){bO=c[bi+(bW*56|0)+4>>2]|0;A=bO-2|0;bY=bi+(bW*56|0)+12|0;bM=c[bY>>2]|0;G=c[bM>>2]|0;L6174:do{if((A|0)<1){c4=aJ}else{b1=T+(G<<4)|0;bk=T+(G<<4)+4|0;bj=T+(G<<4)+8|0;aw=aJ;bz=1;aI=+g[D>>2];ay=+g[C>>2];b3=+g[B>>2];by=bM;while(1){bK=bz+1|0;bE=c[by+(bz<<2)>>2]|0;S=c[by+(((bK|0)%(bO|0)|0)<<2)>>2]|0;av=+g[b1>>2];az=+g[T+(bE<<4)>>2];bf=av-az;aH=+g[bk>>2];ax=+g[T+(bE<<4)+4>>2];au=aH-ax;an=+g[bj>>2];al=+g[T+(bE<<4)+8>>2];ao=an-al;am=+g[T+(S<<4)>>2];ak=av-am;aj=+g[T+(S<<4)+4>>2];at=aH-aj;as=+g[T+(S<<4)+8>>2];ar=an-as;c5=au*ar-ao*at;c6=ao*ak-bf*ar;ar=bf*at-au*ak;ak=+Q(+(ar*ar+(c5*c5+c6*c6)))*.5;c6=aI+(av+az+am)*.3333333432674408*ak;g[D>>2]=c6;am=(aH+ax+aj)*.3333333432674408*ak+ay;g[C>>2]=am;aj=ak*(an+al+as)*.3333333432674408+b3;g[B>>2]=aj;as=aw+ak;if((bK|0)>(A|0)){c4=as;break L6174}aw=as;bz=bK;aI=c6;ay=am;b3=aj;by=c[bY>>2]|0}}}while(0);bY=bW+1|0;if((bY|0)<(c3|0)){aJ=c4;bW=bY}else{cV=c4;cW=cL;cX=cO;break}}}else{cV=0.0;cW=0;cX=0}}while(0);c4=1.0/cV;g[D>>2]=c4*+g[D>>2];g[C>>2]=c4*+g[C>>2];g[B>>2]=c4*+g[B>>2];if((cW|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[cW-4>>2]|0)}if((cX|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[cX-4>>2]|0)}cX=c[j>>2]|0;if((cX|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[cX-4>>2]|0);c[j>>2]=0}c[j>>2]=0;j=c[h>>2]|0;if((j|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[j-4>>2]|0);c[h>>2]=0}if((bR|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bR-16+12>>2]|0)}azi(v);if((I|0)==0){i=f;return 1}c[9804]=(c[9804]|0)+1;aDB(c[I-16+12>>2]|0);i=f;return 1}function aza(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0;e=i;i=i+16|0;f=e|0;h=a;aDD(h|0,0,16);j=+g[d>>2];k=+g[d+4>>2];l=+g[d+8>>2];m=j*j+k*k+l*l;if(m<9999999747378752.0e-20){n=1.0;o=0.0;p=0.0}else{q=1.0/+Q(+m);n=j*q;o=k*q;p=l*q}d=b;if((cA[c[(c[d>>2]|0)+88>>2]&4095](b)|0)<=0){i=e;return}a=b;r=f|0;s=f+4|0;t=f+8|0;u=f;q=-999999984306749400.0;v=0;while(1){dA[c[(c[a>>2]|0)+100>>2]&511](b,v,f);l=n*+g[r>>2]+o*+g[s>>2]+p*+g[t>>2];if(l>q){c[h>>2]=c[u>>2];c[h+4>>2]=c[u+4>>2];c[h+8>>2]=c[u+8>>2];c[h+12>>2]=c[u+12>>2];w=l}else{w=q}x=v+1|0;if((x|0)<(cA[c[(c[d>>2]|0)+88>>2]&4095](b)|0)){q=w;v=x}else{break}}i=e;return}function azb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0;f=i;i=i+16|0;h=f|0;if((e|0)>0){j=0}else{i=f;return}do{g[d+(j<<4)+12>>2]=-999999984306749400.0;j=j+1|0;}while((j|0)<(e|0));j=a;k=a;l=h|0;m=h+4|0;n=h+8|0;o=h;p=0;do{if((cA[c[(c[j>>2]|0)+88>>2]&4095](a)|0)>0){q=b+(p<<4)|0;r=b+(p<<4)+4|0;s=b+(p<<4)+8|0;t=d+(p<<4)+12|0;u=d+(p<<4)|0;v=0;do{dA[c[(c[k>>2]|0)+100>>2]&511](a,v,h);w=+g[q>>2]*+g[l>>2]+ +g[r>>2]*+g[m>>2]+ +g[s>>2]*+g[n>>2];if(w>+g[t>>2]){c[u>>2]=c[o>>2];c[u+4>>2]=c[o+4>>2];c[u+8>>2]=c[o+8>>2];c[u+12>>2]=c[o+12>>2];g[t>>2]=w}v=v+1|0;}while((v|0)<(cA[c[(c[j>>2]|0)+88>>2]&4095](a)|0))}p=p+1|0;}while((p|0)<(e|0));i=f;return}function azc(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0;e=i;i=i+96|0;f=e|0;h=e+64|0;j=e+80|0;k=a|0;l=+dh[c[(c[a>>2]|0)+44>>2]&1023](k);g[f>>2]=1.0;aDD(f+4|0,0,16);g[f+20>>2]=1.0;aDD(f+24|0,0,16);g[f+40>>2]=1.0;aDD(f+44|0,0,20);dI[c[(c[a>>2]|0)+8>>2]&1023](k,f,h,j);m=(l+(+g[j>>2]- +g[h>>2])*.5)*2.0;n=(l+(+g[j+4>>2]- +g[h+4>>2])*.5)*2.0;o=(l+(+g[j+8>>2]- +g[h+8>>2])*.5)*2.0;l=m*m;m=n*n;n=o*o;o=b*.0833333283662796;g[d>>2]=o*(m+n);g[d+4>>2]=o*(l+n);g[d+8>>2]=o*(l+m);g[d+12>>2]=0.0;i=e;return}function azd(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0;c=+P(+(+g[b>>2]));d=+P(+(+g[b+4>>2]));e=+P(+(+g[b+8>>2]));g[a+12>>2]=c;g[a+16>>2]=d;g[a+20>>2]=e;g[a+24>>2]=0.0;aze(a);return}function aze(b){b=b|0;var d=0,e=0,f=0.0;d=i;i=i+96|0;e=d|0;a[b+88|0]=1;do{if((a[42992]|0)==0){if((b1(42992)|0)==0){break}g[10084]=1.0;aDD(40340,0,16);g[10089]=1.0;aDD(40360,0,16);g[10094]=1.0;g[10095]=0.0;g[10096]=-1.0;aDD(40388,0,16);g[10101]=-1.0;aDD(40408,0,16);g[10106]=-1.0;g[10107]=0.0}}while(0);aDD(e|0,0,96);dI[c[(c[b>>2]|0)+68>>2]&1023](b|0,40336,e|0,6);f=+g[b+44>>2];g[b+72>>2]=+g[e>>2]+f;g[b+56>>2]=+g[e+48>>2]-f;g[b+76>>2]=+g[e+20>>2]+f;g[b+60>>2]=+g[e+68>>2]-f;g[b+80>>2]=+g[e+40>>2]+f;g[b+64>>2]=+g[e+88>>2]-f;i=d;return}function azf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0;f=+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0);h=+g[a+72>>2];i=+g[a+56>>2];j=+g[a+76>>2];k=+g[a+60>>2];l=+g[a+80>>2];m=+g[a+64>>2];n=f+(h-i)*.5;o=f+(j-k)*.5;p=f+(l-m)*.5;f=(h+i)*.5;i=(j+k)*.5;k=(l+m)*.5;m=+g[b>>2];l=+P(+m);j=+g[b+4>>2];h=+P(+j);q=+g[b+8>>2];r=+P(+q);s=+g[b+16>>2];t=+P(+s);u=+g[b+20>>2];v=+P(+u);w=+g[b+24>>2];x=+P(+w);y=+g[b+32>>2];z=+P(+y);A=+g[b+36>>2];B=+P(+A);C=+g[b+40>>2];D=+P(+C);E=f*m+i*j+k*q+ +g[b+48>>2];q=f*s+i*u+k*w+ +g[b+52>>2];w=f*y+i*A+k*C+ +g[b+56>>2];C=n*l+o*h+p*r;r=n*t+o*v+p*x;x=n*z+o*B+p*D;g[d>>2]=E-C;g[d+4>>2]=q-r;g[d+8>>2]=w-x;g[d+12>>2]=0.0;g[e>>2]=C+E;g[e+4>>2]=r+q;g[e+8>>2]=x+w;g[e+12>>2]=0.0;return}function azg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=b+16|0;a[e]=1;f=b+12|0;c[f>>2]=0;g=b+4|0;c[g>>2]=0;h=b+8|0;c[h>>2]=0;b=c[d+4>>2]|0;if((b|0)<=0){c[g>>2]=b;return}c[9806]=(c[9806]|0)+1;i=aDx((b<<2)+19|0)|0;if((i|0)==0){j=0}else{k=-(i+4|0)&15;c[i+k>>2]=i;j=i+(k+4)|0}k=c[g>>2]|0;if((k|0)>0){i=0;do{l=j+(i<<2)|0;if((l|0)!=0){c[l>>2]=c[(c[f>>2]|0)+(i<<2)>>2]}i=i+1|0;}while((i|0)<(k|0))}k=c[f>>2]|0;if((k|0)!=0){if((a[e]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[k-4>>2]|0)}c[f>>2]=0}a[e]=1;c[f>>2]=j;c[h>>2]=b;h=0;e=j;while(1){j=e+(h<<2)|0;if((j|0)==0){m=e}else{c[j>>2]=0;m=c[f>>2]|0}j=h+1|0;if((j|0)<(b|0)){h=j;e=m}else{break}}c[g>>2]=b;g=d+12|0;d=0;do{e=m+(d<<2)|0;if((e|0)!=0){c[e>>2]=c[(c[g>>2]|0)+(d<<2)>>2]}d=d+1|0;}while((d|0)<(b|0));return}function azh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;if((d|0)<=0){return}e=b+12|0;b=0;do{f=c[e>>2]|0;g=f+(b*56|0)+24|0;h=f+(b*56|0)+32|0;i=c[h>>2]|0;j=f+(b*56|0)+36|0;if((i|0)!=0){if((a[j]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[i-4>>2]|0)}c[h>>2]=0}a[j]=1;c[h>>2]=0;c[g>>2]=0;c[f+(b*56|0)+28>>2]=0;g=f+(b*56|0)+4|0;h=f+(b*56|0)+12|0;j=c[h>>2]|0;i=f+(b*56|0)+16|0;if((j|0)!=0){if((a[i]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[j-4>>2]|0)}c[h>>2]=0}a[i]=1;c[h>>2]=0;c[g>>2]=0;c[f+(b*56|0)+8>>2]=0;b=b+1|0;}while((b|0)<(d|0));return}function azi(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=b+44|0;e=b+52|0;f=c[e>>2]|0;g=b+56|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+48>>2]=0;d=b+24|0;e=b+32|0;g=c[e>>2]|0;f=b+36|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-12+8>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+28>>2]=0;d=b+4|0;e=b+12|0;f=c[e>>2]|0;g=b+16|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+8|0;c[h>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-16+12>>2]|0)}c[e>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+8|0;c[h>>2]=0;return}function azj(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;e=i;i=i+48|0;f=e+16|0;g=d+60|0;a[g]=1;h=d+108|0;j=c[h>>2]|0;k=j<<1;l=e|0;aDD(l|0,0,16);m=d+128|0;n=c[m>>2]|0;if((n|0)<(k|0)){o=d+132|0;if((c[o>>2]|0)<(k|0)){if((k|0)==0){p=0;q=n}else{c[9806]=(c[9806]|0)+1;r=aDx((j<<5|4)+15|0)|0;if((r|0)==0){s=0}else{t=-(r+4|0)&15;c[r+t>>2]=r;s=r+(t+4)|0}p=s;q=c[m>>2]|0}s=d+136|0;if((q|0)>0){t=0;do{r=p+(t<<4)|0;u=(c[s>>2]|0)+(t<<4)|0;c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];t=t+1|0;}while((t|0)<(q|0))}q=c[s>>2]|0;t=d+140|0;if((q|0)!=0){if((a[t]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[q-16+12>>2]|0)}c[s>>2]=0}a[t]=1;c[s>>2]=p;c[o>>2]=k;v=s}else{v=d+136|0}s=n;do{n=(c[v>>2]|0)+(s<<4)|0;c[n>>2]=c[l>>2];c[n+4>>2]=c[l+4>>2];c[n+8>>2]=c[l+8>>2];c[n+12>>2]=c[l+12>>2];s=s+1|0;}while((s|0)<(k|0))}c[m>>2]=k;c[d+56>>2]=0;azk(d,0,j);j=d+152|0;do{if((a[g]&1)!=0){if((c[j>>2]|0)!=0){break}k=d+156|0;if((c[k>>2]|0)==0){c[9806]=(c[9806]|0)+1;m=aDx(51)|0;if((m|0)==0){w=0}else{s=-(m+4|0)&15;c[m+s>>2]=m;w=m+(s+4)|0}s=c[j>>2]|0;m=d+160|0;if((s|0)>0){l=0;do{v=w+(l<<5)|0;n=(c[m>>2]|0)+(l<<5)|0;aDC(v|0,n|0,32)|0;l=l+1|0;}while((l|0)<(s|0))}s=c[m>>2]|0;l=d+164|0;if((s|0)!=0){if((a[l]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[s-32+28>>2]|0)}c[m>>2]=0}a[l]=1;c[m>>2]=w;c[k>>2]=1;x=(c[j>>2]|0)+1|0;y=w}else{x=1;y=c[d+160>>2]|0}c[j>>2]=x;l=d+160|0;s=y;n=f;aDC(s|0,n|0,32)|0;n=c[l>>2]|0;l=d+136|0;s=c[l>>2]|0;b[n>>1]=b[s>>1]|0;b[n+2>>1]=b[s+2>>1]|0;b[n+4>>1]=b[s+4>>1]|0;b[n+6>>1]=b[s+6>>1]|0;b[n+8>>1]=b[s+8>>1]|0;b[n+10>>1]=b[s+10>>1]|0;c[n+12>>2]=0;s=c[(c[l>>2]|0)+12>>2]|0;c[n+16>>2]=(s|0)>-1?1:-s|0}}while(0);c[d+168>>2]=c[j>>2];j=d+116|0;f=c[j>>2]|0;y=d+120|0;if((f|0)!=0){if((a[y]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-16+12>>2]|0)}c[j>>2]=0}a[y]=1;c[j>>2]=0;c[h>>2]=0;c[d+112>>2]=0;h=d+68|0;j=d+76|0;y=c[j>>2]|0;f=d+80|0;if((y|0)==0){a[f]=1;c[j>>2]=0;c[h>>2]=0;z=d+72|0;c[z>>2]=0;i=e;return}if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[y-64+60>>2]|0)}c[j>>2]=0;a[f]=1;c[j>>2]=0;c[h>>2]=0;z=d+72|0;c[z>>2]=0;i=e;return}function azk(d,f,h){d=d|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0.0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0,$=0,aa=0,ab=0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0,aM=0;j=i;i=i+176|0;k=j|0;l=j+32|0;m=j+64|0;n=j+80|0;o=j+144|0;p=j+160|0;q=h-f|0;r=d+56|0;s=c[r>>2]|0;if((q|0)==1){if((a[d+60|0]&1)==0){t=(c[d+96>>2]|0)+(s<<6)|0;u=(c[d+76>>2]|0)+(f<<6)|0;aDC(t|0,u|0,64)|0}else{u=(c[d+136>>2]|0)+(s<<4)|0;t=(c[d+116>>2]|0)+(f<<4)|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2]}c[r>>2]=(c[r>>2]|0)+1;i=j;return}t=(f|0)<(h|0);if(t){u=(a[d+60|0]&1)==0;v=d+76|0;w=d+116|0;x=d+36|0;y=d+40|0;z=d+44|0;A=d+4|0;B=d+8|0;C=d+12|0;D=0.0;E=0.0;F=0.0;G=f;do{if(u){H=c[v>>2]|0;I=+g[H+(G<<6)>>2];J=+g[H+(G<<6)+4>>2];K=+g[H+(G<<6)+8>>2];L=+g[H+(G<<6)+24>>2];M=+g[H+(G<<6)+20>>2];N=+g[H+(G<<6)+16>>2]}else{H=c[w>>2]|0;O=+g[x>>2];P=+g[y>>2];Q=+g[z>>2];R=+g[A>>2];S=+g[B>>2];T=+g[C>>2];I=+((e[H+(G<<4)>>1]|0)>>>0)/O+R;J=+((e[H+(G<<4)+2>>1]|0)>>>0)/P+S;K=+((e[H+(G<<4)+4>>1]|0)>>>0)/Q+T;L=+((e[H+(G<<4)+10>>1]|0)>>>0)/Q+T;M=+((e[H+(G<<4)+8>>1]|0)>>>0)/P+S;N=+((e[H+(G<<4)+6>>1]|0)>>>0)/O+R}F=F+(N+I)*.5;E=E+(M+J)*.5;D=D+(L+K)*.5;G=G+1|0;}while((G|0)<(h|0));K=+(q|0);L=1.0/K;J=F*L;F=E*L;E=D*L;if(u){u=c[v>>2]|0;L=0.0;D=0.0;M=0.0;v=f;while(1){I=(+g[u+(v<<6)+16>>2]+ +g[u+(v<<6)>>2])*.5-J;N=(+g[u+(v<<6)+20>>2]+ +g[u+(v<<6)+4>>2])*.5-F;R=(+g[u+(v<<6)+24>>2]+ +g[u+(v<<6)+8>>2])*.5-E;O=M+I*I;I=D+N*N;N=L+R*R;G=v+1|0;if((G|0)<(h|0)){L=N;D=I;M=O;v=G}else{U=N;V=I;W=O;X=K;break}}}else{v=c[w>>2]|0;M=+g[x>>2];D=+g[y>>2];L=+g[z>>2];O=+g[A>>2];I=+g[B>>2];N=+g[C>>2];R=0.0;S=0.0;P=0.0;C=f;while(1){T=(+((e[v+(C<<4)+6>>1]|0)>>>0)/M+O+(+((e[v+(C<<4)>>1]|0)>>>0)/M+O))*.5-J;Q=(+((e[v+(C<<4)+8>>1]|0)>>>0)/D+I+(+((e[v+(C<<4)+2>>1]|0)>>>0)/D+I))*.5-F;Y=(+((e[v+(C<<4)+10>>1]|0)>>>0)/L+N+(+((e[v+(C<<4)+4>>1]|0)>>>0)/L+N))*.5-E;Z=P+T*T;T=S+Q*Q;Q=R+Y*Y;B=C+1|0;if((B|0)<(h|0)){R=Q;S=T;P=Z;C=B}else{U=Q;V=T;W=Z;X=K;break}}}}else{U=0.0;V=0.0;W=0.0;X=+(q|0)}K=1.0/(X+-1.0);X=W*K;W=V*K;V=U*K;if(X<W){_=W<V?2:1}else{_=X<V?2:0}C=o|0;v=o+4|0;B=o+8|0;aDD(o|0,0,16);if(t){A=(a[d+60|0]&1)==0;z=d+76|0;y=d+116|0;x=d+36|0;w=d+40|0;u=d+44|0;G=d+4|0;H=d+8|0;$=d+12|0;aa=f;V=0.0;X=0.0;W=0.0;do{if(A){ab=c[z>>2]|0;ac=+g[ab+(aa<<6)>>2];ad=+g[ab+(aa<<6)+4>>2];ae=+g[ab+(aa<<6)+8>>2];af=+g[ab+(aa<<6)+24>>2];ag=+g[ab+(aa<<6)+20>>2];ah=+g[ab+(aa<<6)+16>>2]}else{ab=c[y>>2]|0;K=+g[x>>2];U=+g[w>>2];P=+g[u>>2];S=+g[G>>2];R=+g[H>>2];E=+g[$>>2];ac=+((e[ab+(aa<<4)>>1]|0)>>>0)/K+S;ad=+((e[ab+(aa<<4)+2>>1]|0)>>>0)/U+R;ae=+((e[ab+(aa<<4)+4>>1]|0)>>>0)/P+E;af=+((e[ab+(aa<<4)+10>>1]|0)>>>0)/P+E;ag=+((e[ab+(aa<<4)+8>>1]|0)>>>0)/U+R;ah=+((e[ab+(aa<<4)+6>>1]|0)>>>0)/K+S}V=V+(ah+ac)*.5;X=(ag+ad)*.5+X;W=(af+ae)*.5+W;aa=aa+1|0;}while((aa|0)<(h|0));g[C>>2]=V;g[v>>2]=X;g[B>>2]=W;ai=V;aj=X;ak=W}else{ai=0.0;aj=0.0;ak=0.0}W=1.0/+(q|0);g[C>>2]=W*ai;g[v>>2]=W*aj;g[B>>2]=W*ak;ak=+g[o+(_<<2)>>2];if(t){o=d+60|0;B=d+76|0;v=p|0;C=p+4|0;aa=p+8|0;$=p+12|0;H=p+(_<<2)|0;_=m;m=n;n=d+116|0;p=d+36|0;G=d+40|0;u=d+44|0;w=d+4|0;x=d+8|0;y=d+12|0;z=f;A=f;while(1){ab=(a[o]&1)==0;if(ab){al=c[B>>2]|0;am=+g[al+(A<<6)>>2];an=+g[al+(A<<6)+4>>2];ao=+g[al+(A<<6)+8>>2];ap=+g[al+(A<<6)+24>>2];aq=+g[al+(A<<6)+20>>2];ar=+g[al+(A<<6)+16>>2]}else{al=c[n>>2]|0;W=+g[p>>2];aj=+g[G>>2];ai=+g[u>>2];X=+g[w>>2];V=+g[x>>2];ae=+g[y>>2];am=+((e[al+(A<<4)>>1]|0)>>>0)/W+X;an=+((e[al+(A<<4)+2>>1]|0)>>>0)/aj+V;ao=+((e[al+(A<<4)+4>>1]|0)>>>0)/ai+ae;ap=+((e[al+(A<<4)+10>>1]|0)>>>0)/ai+ae;aq=+((e[al+(A<<4)+8>>1]|0)>>>0)/aj+V;ar=+((e[al+(A<<4)+6>>1]|0)>>>0)/W+X}g[v>>2]=(ar+am)*.5;g[C>>2]=(aq+an)*.5;g[aa>>2]=(ap+ao)*.5;g[$>>2]=0.0;if(+g[H>>2]>ak){if(ab){ab=c[B>>2]|0;al=ab+(A<<6)|0;aDC(m|0,al|0,64)|0;as=ab+(z<<6)|0;aDC(al|0,as|0,64)|0;as=(c[B>>2]|0)+(z<<6)|0;aDC(as|0,m|0,64)|0}else{as=c[n>>2]|0;al=as+(A<<4)|0;c[_>>2]=c[al>>2];c[_+4>>2]=c[al+4>>2];c[_+8>>2]=c[al+8>>2];c[_+12>>2]=c[al+12>>2];ab=as+(z<<4)|0;c[al>>2]=c[ab>>2];c[al+4>>2]=c[ab+4>>2];c[al+8>>2]=c[ab+8>>2];c[al+12>>2]=c[ab+12>>2];ab=(c[n>>2]|0)+(z<<4)|0;c[ab>>2]=c[_>>2];c[ab+4>>2]=c[_+4>>2];c[ab+8>>2]=c[_+8>>2];c[ab+12>>2]=c[_+12>>2]}at=z+1|0}else{at=z}ab=A+1|0;if((ab|0)<(h|0)){z=at;A=ab}else{au=at;break}}}else{au=f}at=(q|0)/3|0;if((au|0)>(at+f|0)){if((au|0)<(h-1-at|0)){av=au}else{aw=41}}else{aw=41}if((aw|0)==41){av=(q>>1)+f|0}q=c[r>>2]|0;aw=d+20|0;au=d+60|0;if((a[au]&1)==0){at=(c[d+96>>2]|0)+(q<<6)|0;A=aw;c[at>>2]=c[A>>2];c[at+4>>2]=c[A+4>>2];c[at+8>>2]=c[A+8>>2];c[at+12>>2]=c[A+12>>2]}else{A=c[d+136>>2]|0;ak=(+g[d+24>>2]- +g[d+8>>2])*+g[d+40>>2];ao=(+g[d+28>>2]- +g[d+12>>2])*+g[d+44>>2];b[A+(q<<4)>>1]=~~((+g[aw>>2]- +g[d+4>>2])*+g[d+36>>2])&-2;b[A+(q<<4)+2>>1]=~~ak&-2;b[A+(q<<4)+4>>1]=~~ao&-2}A=c[r>>2]|0;aw=d+4|0;if((a[au]&1)==0){at=(c[d+96>>2]|0)+(A<<6)+16|0;z=aw;c[at>>2]=c[z>>2];c[at+4>>2]=c[z+4>>2];c[at+8>>2]=c[z+8>>2];c[at+12>>2]=c[z+12>>2]}else{z=c[d+136>>2]|0;ao=+g[aw>>2];ak=+g[d+8>>2];ap=+g[d+12>>2];an=(ak-ak)*+g[d+40>>2];ak=(ap-ap)*+g[d+44>>2];b[z+(A<<4)+6>>1]=~~((ao-ao)*+g[d+36>>2]+1.0)|1;b[z+(A<<4)+8>>1]=~~(an+1.0)|1;b[z+(A<<4)+10>>1]=~~(ak+1.0)|1}A=c[r>>2]|0;if(t){t=d+76|0;z=d+116|0;aw=d+36|0;at=d+40|0;_=d+44|0;n=d+4|0;m=d+8|0;B=d+12|0;H=d+96|0;$=d+136|0;aa=f;C=A;while(1){do{if((a[au]&1)==0){v=c[t>>2]|0;ak=+g[v+(aa<<6)>>2];an=+g[v+(aa<<6)+4>>2];ao=+g[v+(aa<<6)+8>>2];ap=+g[v+(aa<<6)+12>>2];aq=+g[v+(aa<<6)+16>>2];am=+g[v+(aa<<6)+20>>2];ar=+g[v+(aa<<6)+24>>2];X=+g[v+(aa<<6)+28>>2];v=c[H>>2]|0;y=v+(C<<6)|0;if(ak<+g[y>>2]){g[y>>2]=ak}y=v+(C<<6)+4|0;if(an<+g[y>>2]){g[y>>2]=an}y=v+(C<<6)+8|0;if(ao<+g[y>>2]){g[y>>2]=ao}y=v+(C<<6)+12|0;if(ap<+g[y>>2]){g[y>>2]=ap}y=c[H>>2]|0;v=y+(C<<6)+16|0;if(+g[v>>2]<aq){g[v>>2]=aq}v=y+(C<<6)+20|0;if(+g[v>>2]<am){g[v>>2]=am}v=y+(C<<6)+24|0;if(+g[v>>2]<ar){g[v>>2]=ar}v=y+(C<<6)+28|0;if(+g[v>>2]>=X){break}g[v>>2]=X}else{v=c[z>>2]|0;X=+g[aw>>2];ar=+g[at>>2];am=+g[_>>2];aq=+g[n>>2];ap=+g[m>>2];ao=+g[B>>2];an=+g[n>>2];ak=+g[m>>2];W=+g[B>>2];V=+g[aw>>2];aj=+g[at>>2];ae=+g[_>>2];y=~~((+((e[v+(aa<<4)>>1]|0)>>>0)/X+aq-an)*V)&-2;x=~~((+((e[v+(aa<<4)+2>>1]|0)>>>0)/ar+ap-ak)*aj)&-2;w=~~((+((e[v+(aa<<4)+4>>1]|0)>>>0)/am+ao-W)*ae)&-2;u=~~((+((e[v+(aa<<4)+6>>1]|0)>>>0)/X+aq-an)*V+1.0)|1;G=~~((+((e[v+(aa<<4)+8>>1]|0)>>>0)/ar+ap-ak)*aj+1.0)|1;p=~~((+((e[v+(aa<<4)+10>>1]|0)>>>0)/am+ao-W)*ae+1.0)|1;v=c[$>>2]|0;o=v+(C<<4)|0;if((e[o>>1]|0)>(y&65535)){b[o>>1]=y;ax=c[$>>2]|0}else{ax=v}v=ax+(C<<4)+6|0;if((e[v>>1]|0)<(u&65535)){b[v>>1]=u;ay=c[$>>2]|0}else{ay=ax}u=ay+(C<<4)+2|0;if((e[u>>1]|0)>(x&65535)){b[u>>1]=x;az=c[$>>2]|0}else{az=ay}x=az+(C<<4)+8|0;if((e[x>>1]|0)<(G&65535)){b[x>>1]=G;aA=c[$>>2]|0}else{aA=az}G=aA+(C<<4)+4|0;if((e[G>>1]|0)>(w&65535)){b[G>>1]=w;aB=c[$>>2]|0}else{aB=aA}w=aB+(C<<4)+10|0;if((e[w>>1]|0)>=(p&65535)){break}b[w>>1]=p}}while(0);p=aa+1|0;w=c[r>>2]|0;if((p|0)<(h|0)){aa=p;C=w}else{aC=w;break}}}else{aC=A}A=aC+1|0;c[r>>2]=A;azk(d,f,av);f=c[r>>2]|0;azk(d,av,h);h=(c[r>>2]|0)-s|0;s=a[au]|0;do{if((s&1)==0){aD=s}else{if((h<<4|0)<=2048){aD=s;break}r=k;av=l;aC=c[d+136>>2]|0;C=c[aC+(A<<4)+12>>2]|0;aa=(C|0)>-1?1:-C|0;C=c[aC+(f<<4)+12>>2]|0;aB=(C|0)>-1?1:-C|0;C=aB<<4;aA=d+152|0;if((aa<<4|0)<2049){$=c[aA>>2]|0;az=d+156|0;do{if(($|0)==(c[az>>2]|0)){ay=($|0)==0?1:$<<1;if(($|0)>=(ay|0)){aE=$;break}if((ay|0)==0){aF=0;aG=$}else{c[9806]=(c[9806]|0)+1;ax=aDx((ay<<5|4)+15|0)|0;if((ax|0)==0){aH=0}else{_=-(ax+4|0)&15;c[ax+_>>2]=ax;aH=ax+(_+4)|0}aF=aH;aG=c[aA>>2]|0}_=d+160|0;if((aG|0)>0){ax=0;do{at=aF+(ax<<5)|0;aw=(c[_>>2]|0)+(ax<<5)|0;aDC(at|0,aw|0,32)|0;ax=ax+1|0;}while((ax|0)<(aG|0))}ax=c[_>>2]|0;aw=d+164|0;if((ax|0)!=0){if((a[aw]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[ax-32+28>>2]|0)}c[_>>2]=0}a[aw]=1;c[_>>2]=aF;c[az>>2]=ay;aE=c[aA>>2]|0}else{aE=$}}while(0);c[aA>>2]=aE+1;az=d+160|0;aw=(c[az>>2]|0)+($<<5)|0;aDC(aw|0,r|0,32)|0;aw=c[az>>2]|0;b[aw+($<<5)>>1]=b[aC+(A<<4)>>1]|0;b[aw+($<<5)+2>>1]=b[aC+(A<<4)+2>>1]|0;b[aw+($<<5)+4>>1]=b[aC+(A<<4)+4>>1]|0;b[aw+($<<5)+6>>1]=b[aC+(A<<4)+6>>1]|0;b[aw+($<<5)+8>>1]=b[aC+(A<<4)+8>>1]|0;b[aw+($<<5)+10>>1]=b[aC+(A<<4)+10>>1]|0;c[aw+($<<5)+12>>2]=A;c[aw+($<<5)+16>>2]=aa;aI=aA}else{aI=aA}if((C|0)<2049){aw=c[aI>>2]|0;az=d+156|0;do{if((aw|0)==(c[az>>2]|0)){ax=(aw|0)==0?1:aw<<1;if((aw|0)>=(ax|0)){aJ=aw;break}if((ax|0)==0){aK=0;aL=aw}else{c[9806]=(c[9806]|0)+1;at=aDx((ax<<5|4)+15|0)|0;if((at|0)==0){aM=0}else{B=-(at+4|0)&15;c[at+B>>2]=at;aM=at+(B+4)|0}aK=aM;aL=c[aI>>2]|0}B=d+160|0;if((aL|0)>0){at=0;do{m=aK+(at<<5)|0;n=(c[B>>2]|0)+(at<<5)|0;aDC(m|0,n|0,32)|0;at=at+1|0;}while((at|0)<(aL|0))}at=c[B>>2]|0;ay=d+164|0;if((at|0)!=0){if((a[ay]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[at-32+28>>2]|0)}c[B>>2]=0}a[ay]=1;c[B>>2]=aK;c[az>>2]=ax;aJ=c[aI>>2]|0}else{aJ=aw}}while(0);c[aI>>2]=aJ+1;az=d+160|0;C=(c[az>>2]|0)+(aw<<5)|0;aDC(C|0,av|0,32)|0;C=c[az>>2]|0;b[C+(aw<<5)>>1]=b[aC+(f<<4)>>1]|0;b[C+(aw<<5)+2>>1]=b[aC+(f<<4)+2>>1]|0;b[C+(aw<<5)+4>>1]=b[aC+(f<<4)+4>>1]|0;b[C+(aw<<5)+6>>1]=b[aC+(f<<4)+6>>1]|0;b[C+(aw<<5)+8>>1]=b[aC+(f<<4)+8>>1]|0;b[C+(aw<<5)+10>>1]=b[aC+(f<<4)+10>>1]|0;c[C+(aw<<5)+12>>2]=f;c[C+(aw<<5)+16>>2]=aB}c[d+168>>2]=c[aI>>2];aD=a[au]|0}}while(0);if((aD&1)==0){c[(c[d+96>>2]|0)+(q<<6)+32>>2]=h;i=j;return}else{c[(c[d+136>>2]|0)+(q<<4)+12>>2]=-h;i=j;return}}function azl(a){a=a|0;azm(a);if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-172+168>>2]|0);return}function azm(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;c[b>>2]=25328;d=b+152|0;e=b+160|0;f=c[e>>2]|0;g=b+164|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-32+28>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+156>>2]=0;d=b+128|0;e=b+136|0;g=c[e>>2]|0;f=b+140|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-16+12>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+132>>2]=0;d=b+108|0;e=b+116|0;f=c[e>>2]|0;g=b+120|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-16+12>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+112>>2]=0;d=b+88|0;e=b+96|0;g=c[e>>2]|0;f=b+100|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-64+60>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+92>>2]=0;d=b+68|0;e=b+76|0;f=c[e>>2]|0;g=b+80|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+72|0;c[h>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-64+60>>2]|0)}c[e>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+72|0;c[h>>2]=0;return}function azn(d,f,h,j){d=d|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0;k=i;i=i+16|0;l=k|0;m=k+8|0;if((a[d+60|0]&1)==0){n=d+56|0;o=c[n>>2]|0;L213:do{if((o|0)>0){p=h|0;q=h+8|0;r=h+4|0;s=j+4|0;t=f;u=j+8|0;v=j|0;w=1;x=0;y=c[d+96>>2]|0;z=o;while(1){do{if(+g[p>>2]>+g[y+16>>2]){A=0}else{if(+g[v>>2]<+g[y>>2]){A=0;break}A=1}}while(0);do{if(+g[q>>2]>+g[y+24>>2]){B=0}else{if(+g[u>>2]<+g[y+8>>2]){B=0;break}B=A}}while(0);do{if(+g[r>>2]>+g[y+20>>2]){C=192}else{if(+g[s>>2]<+g[y+4>>2]){C=192;break}D=c[y+32>>2]|0;E=(D|0)==-1;if(!(E&B)){F=B;G=E;H=D;C=195;break}dA[c[(c[t>>2]|0)+8>>2]&511](f,c[y+36>>2]|0,c[y+40>>2]|0);I=c[n>>2]|0;C=196}}while(0);if((C|0)==192){C=0;D=c[y+32>>2]|0;F=0;G=(D|0)==-1;H=D;C=195}do{if((C|0)==195){C=0;if(F|G){I=z;C=196;break}J=y+(H<<6)|0;K=H+x|0;L=z}}while(0);if((C|0)==196){C=0;J=y+64|0;K=x+1|0;L=I}if((K|0)>=(L|0)){M=w;break L213}w=w+1|0;x=K;y=J;z=L}}else{M=0}}while(0);if((c[9788]|0)>=(M|0)){i=k;return}c[9788]=M;i=k;return}M=l|0;N=+g[h>>2];O=+g[h+4>>2];P=+g[h+8>>2];Q=+g[d+4>>2];R=N<Q?Q:N;N=+g[d+8>>2];S=O<N?N:O;O=+g[d+12>>2];T=P<O?O:P;P=+g[d+20>>2];U=+g[d+24>>2];V=+g[d+28>>2];W=+g[d+36>>2];X=+g[d+40>>2];Y=+g[d+44>>2];h=~~(((P<R?P:R)-Q)*W)&-2;b[M>>1]=h;L=~~(((U<S?U:S)-N)*X)&-2;b[l+2>>1]=L;J=~~(((V<T?V:T)-O)*Y)&-2;b[l+4>>1]=J;l=m|0;T=+g[j>>2];S=+g[j+4>>2];R=+g[j+8>>2];Z=T<Q?Q:T;T=S<N?N:S;S=R<O?O:R;j=~~(((P<Z?P:Z)-Q)*W+1.0)|1;b[l>>1]=j;K=~~(((U<T?U:T)-N)*X+1.0)|1;b[m+2>>1]=K;I=~~(((V<S?V:S)-O)*Y+1.0)|1;b[m+4>>1]=I;m=c[d+144>>2]|0;if((m|0)==2){azo(c[d+136>>2]|0,f,M,l);i=k;return}else if((m|0)==0){l=c[d+56>>2]|0;L249:do{if((l|0)>0){M=f;C=c[d+136>>2]|0;H=1;G=0;while(1){F=C+12|0;n=c[F>>2]|0;B=(n|0)>-1;A=(-((h&65535)<=(e[C+6>>1]|0)&(j&65535)>=(e[C>>1]|0)&(J&65535)<=(e[C+10>>1]|0)&(I&65535)>=(e[C+4>>1]|0)&(L&65535)<=(e[C+8>>1]|0)&(K&65535)>=(e[C+2>>1]|0)&1)&1|0)==0;if(!(A|B^1)){dA[c[(c[M>>2]|0)+8>>2]&511](f,n>>21,n&2097151)}if(B|A^1){_=G+1|0;$=C+16|0}else{A=c[F>>2]|0;_=G-A|0;$=C+(-A<<4)|0}if((_|0)>=(l|0)){aa=H;break L249}C=$;H=H+1|0;G=_}}else{aa=0}}while(0);if((c[9788]|0)>=(aa|0)){i=k;return}c[9788]=aa;i=k;return}else if((m|0)==1){m=d+152|0;aa=c[m>>2]|0;if((aa|0)<=0){i=k;return}_=d+160|0;$=d+136|0;d=f;l=0;G=aa;while(1){aa=c[_>>2]|0;if((-((h&65535)<=(e[aa+(l<<5)+6>>1]|0)&(j&65535)>=(e[aa+(l<<5)>>1]|0)&(J&65535)<=(e[aa+(l<<5)+10>>1]|0)&(I&65535)>=(e[aa+(l<<5)+4>>1]|0)&(L&65535)<=(e[aa+(l<<5)+8>>1]|0)&(K&65535)>=(e[aa+(l<<5)+2>>1]|0)&1)&1|0)==0){ab=G}else{H=c[aa+(l<<5)+12>>2]|0;C=c[aa+(l<<5)+16>>2]|0;aa=C+H|0;L274:do{if((C|0)>0){M=(c[$>>2]|0)+(H<<4)|0;A=1;F=H;while(1){B=M+12|0;n=c[B>>2]|0;o=(n|0)>-1;z=(-((h&65535)<=(e[M+6>>1]|0)&(j&65535)>=(e[M>>1]|0)&(J&65535)<=(e[M+10>>1]|0)&(I&65535)>=(e[M+4>>1]|0)&(L&65535)<=(e[M+8>>1]|0)&(K&65535)>=(e[M+2>>1]|0)&1)&1|0)==0;if(!(z|o^1)){dA[c[(c[d>>2]|0)+8>>2]&511](f,n>>21,n&2097151)}if(o|z^1){ac=F+1|0;ad=M+16|0}else{z=c[B>>2]|0;ac=F-z|0;ad=M+(-z<<4)|0}if((ac|0)>=(aa|0)){ae=A;break L274}M=ad;A=A+1|0;F=ac}}else{ae=0}}while(0);if((c[9788]|0)<(ae|0)){c[9788]=ae}ab=c[m>>2]|0}aa=l+1|0;if((aa|0)<(ab|0)){l=aa;G=ab}else{break}}i=k;return}else{i=k;return}}function azo(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=d+4|0;h=f+4|0;i=d+2|0;j=f+2|0;k=a;while(1){l=c[k+12>>2]|0;if((-((e[d>>1]|0)<=(e[k+6>>1]|0)&(e[f>>1]|0)>=(e[k>>1]|0)&(e[g>>1]|0)<=(e[k+10>>1]|0)&(e[h>>1]|0)>=(e[k+4>>1]|0)&(e[i>>1]|0)<=(e[k+8>>1]|0)&(e[j>>1]|0)>=(e[k+2>>1]|0)&1)&1|0)==0){m=219;break}if((l|0)>-1){break}azo(k+16|0,b,d,f);a=c[k+28>>2]|0;if((a|0)>-1){k=k+32|0;continue}else{k=k+(1-a<<4)|0;continue}}if((m|0)==219){return}dA[c[(c[b>>2]|0)+8>>2]&511](b,l>>21,l&2097151);return}function azp(a,b,d,e,f,h,j,k){a=a|0;b=b|0;d=d|0;e=+e;f=+f;h=+h;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0.0,q=0,r=0.0,s=0,t=0.0,u=0.0,v=0.0,w=0,x=0.0,y=0.0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0.0,G=0.0,H=0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0;l=i;i=i+32|0;m=l|0;n=c[a+96>>2]|0;o=d|0;p=+g[o>>2];q=d+4|0;r=+g[q>>2];s=d+8|0;t=+g[s>>2];d=j|0;u=+g[d>>2];v=(p>e?e:p)+u;w=j+4|0;x=+g[w>>2];y=(r>f?f:r)+x;z=j+8|0;A=+g[z>>2];B=(t>h?h:t)+A;j=k|0;C=+g[j>>2];D=(p<e?e:p)+C;E=k+4|0;F=+g[E>>2];G=(r<f?f:r)+F;H=k+8|0;I=+g[H>>2];J=(t<h?h:t)+I;K=e-p;p=f-r;r=h-t;t=1.0/+Q(+(K*K+p*p+r*r));h=K*t;f=p*t;e=r*t;t=r*e+(K*h+p*f);if(h==0.0){L=999999984306749400.0}else{L=1.0/h}if(f==0.0){M=999999984306749400.0}else{M=1.0/f}if(e==0.0){N=999999984306749400.0}else{N=1.0/e}k=L<0.0|0;O=M<0.0|0;P=N<0.0|0;R=a+56|0;a=c[R>>2]|0;L314:do{if((a|0)>0){S=m;T=m+16|0;U=T;V=m|0;W=m+4|0;X=m+8|0;Y=T|0;T=m+20|0;Z=m+24|0;_=m+(k<<4)|0;$=m+((k^1)<<4)|0;aa=m+(O<<4)+4|0;ab=m+((O^1)<<4)+4|0;ac=m+(P<<4)+8|0;ad=m+((P^1)<<4)+8|0;ae=b;af=0;ag=1;ah=n;e=C;f=F;h=I;p=u;K=x;r=A;ai=a;while(1){aj=ah;c[S>>2]=c[aj>>2];c[S+4>>2]=c[aj+4>>2];c[S+8>>2]=c[aj+8>>2];c[S+12>>2]=c[aj+12>>2];aj=ah+16|0;ak=aj;c[U>>2]=c[ak>>2];c[U+4>>2]=c[ak+4>>2];c[U+8>>2]=c[ak+8>>2];c[U+12>>2]=c[ak+12>>2];g[V>>2]=+g[V>>2]-e;g[W>>2]=+g[W>>2]-f;g[X>>2]=+g[X>>2]-h;g[Y>>2]=+g[Y>>2]-p;g[T>>2]=+g[T>>2]-K;g[Z>>2]=+g[Z>>2]-r;do{if(v>+g[aj>>2]){al=0}else{if(D<+g[ah>>2]){al=0;break}al=1}}while(0);do{if(B>+g[ah+24>>2]){am=0}else{if(J<+g[ah+8>>2]){am=0;break}am=al}}while(0);do{if(y>+g[ah+20>>2]){an=240}else{if(G<+g[ah+4>>2]|am^1){an=240;break}ao=+g[o>>2];ap=L*(+g[_>>2]-ao);aq=L*(+g[$>>2]-ao);ao=+g[q>>2];ar=M*(+g[aa>>2]-ao);as=M*(+g[ab>>2]-ao);if(ap>as|ar>aq){an=240;break}ao=ar>ap?ar:ap;ap=as<aq?as:aq;aq=+g[s>>2];as=N*(+g[ac>>2]-aq);ar=N*(+g[ad>>2]-aq);if(ao>ar|as>ap){an=240;break}if((as>ao?as:ao)>=t){an=240;break}aj=(ar<ap?ar:ap)>0.0;ak=c[ah+32>>2]|0;at=(ak|0)==-1;if(!(at&aj)){au=aj;av=at;aw=ak;an=243;break}dA[c[(c[ae>>2]|0)+8>>2]&511](b,c[ah+36>>2]|0,c[ah+40>>2]|0);ax=c[R>>2]|0;an=244}}while(0);if((an|0)==240){an=0;ak=c[ah+32>>2]|0;au=0;av=(ak|0)==-1;aw=ak;an=243}do{if((an|0)==243){an=0;if(au|av){ax=ai;an=244;break}ay=ah+(aw<<6)|0;az=aw+af|0;aA=ai}}while(0);if((an|0)==244){an=0;ay=ah+64|0;az=af+1|0;aA=ax}if((az|0)>=(aA|0)){aB=ag;break L314}af=az;ag=ag+1|0;ah=ay;e=+g[j>>2];f=+g[E>>2];h=+g[H>>2];p=+g[d>>2];K=+g[w>>2];r=+g[z>>2];ai=aA}}else{aB=0}}while(0);if((c[9788]|0)>=(aB|0)){i=l;return}c[9788]=aB;i=l;return}function azq(a,d,f,h,j,k,l,m,n){a=a|0;d=d|0;f=f|0;h=+h;j=+j;k=+k;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0,v=0.0,w=0.0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0.0,T=0,U=0.0,V=0,W=0.0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0;o=i;i=i+32|0;p=o|0;q=c[a+136>>2]|0;r=f|0;s=+g[r>>2];t=h-s;u=f+4|0;v=+g[u>>2];w=j-v;x=f+8|0;y=+g[x>>2];z=k-y;A=1.0/+Q(+(t*t+w*w+z*z));B=t*A;C=w*A;D=z*A;A=z*D+(t*B+w*C);if(B==0.0){E=999999984306749400.0}else{E=1.0/B}if(C==0.0){F=999999984306749400.0}else{F=1.0/C}if(D==0.0){G=999999984306749400.0}else{G=1.0/D}f=E<0.0|0;H=F<0.0|0;I=G<0.0|0;J=l|0;D=(s>h?h:s)+ +g[J>>2];K=l+4|0;C=(v>j?j:v)+ +g[K>>2];L=l+8|0;B=(y>k?k:y)+ +g[L>>2];l=m|0;w=(s<h?h:s)+ +g[l>>2];M=m+4|0;s=(v<j?j:v)+ +g[M>>2];N=m+8|0;v=(y<k?k:y)+ +g[N>>2];m=a+4|0;y=+g[m>>2];k=D<y?y:D;O=a+8|0;D=+g[O>>2];j=C<D?D:C;P=a+12|0;C=+g[P>>2];h=B<C?C:B;B=+g[a+20>>2];t=+g[a+24>>2];z=+g[a+28>>2];R=a+36|0;S=+g[R>>2];T=a+40|0;U=+g[T>>2];V=a+44|0;W=+g[V>>2];a=~~(((B<k?B:k)-y)*S)&-2;X=~~(((t<j?t:j)-D)*U)&-2;Y=~~(((z<h?z:h)-C)*W)&-2;h=w<y?y:w;w=s<D?D:s;s=v<C?C:v;Z=~~(((B<h?B:h)-y)*S+1.0)|1;_=~~(((t<w?t:w)-D)*U+1.0)|1;$=~~(((z<s?z:s)-C)*W+1.0)|1;if((n|0)>0){aa=p|0;ab=p+4|0;ac=p+8|0;ad=p+12|0;ae=p+16|0;af=p+20|0;ag=p+24|0;ah=p+28|0;ai=p+(f<<4)|0;aj=p+((f^1)<<4)|0;f=p+(H<<4)+4|0;ak=p+((H^1)<<4)+4|0;H=d;al=p+(I<<4)+8|0;am=p+((I^1)<<4)+8|0;I=q;q=0;p=0;while(1){an=q+1|0;ao=I+6|0;ap=b[I>>1]|0;aq=I+10|0;ar=b[I+4>>1]|0;as=I+8|0;at=b[I+2>>1]|0;au=I+12|0;av=(c[au>>2]|0)>-1;do{if((-((a&65535)<=(e[ao>>1]|0)&(Z&65535)>=(ap&65535)&(Y&65535)<=(e[aq>>1]|0)&($&65535)>=(ar&65535)&(X&65535)<=(e[as>>1]|0)&(_&65535)>=(at&65535)&1)&1|0)==0){aw=1;ax=267}else{W=+g[R>>2];C=+g[T>>2];s=+g[V>>2];z=+g[m>>2];U=+((ap&65535)>>>0)/W+z;D=+g[O>>2];w=+((at&65535)>>>0)/C+D;t=+g[P>>2];S=+((ar&65535)>>>0)/s+t;g[aa>>2]=U;g[ab>>2]=w;g[ac>>2]=S;g[ad>>2]=0.0;y=+((e[ao>>1]|0)>>>0)/W+z;z=+((e[as>>1]|0)>>>0)/C+D;D=+((e[aq>>1]|0)>>>0)/s+t;g[ah>>2]=0.0;g[aa>>2]=U- +g[l>>2];g[ab>>2]=w- +g[M>>2];g[ac>>2]=S- +g[N>>2];g[ae>>2]=y- +g[J>>2];g[af>>2]=z- +g[K>>2];g[ag>>2]=D- +g[L>>2];D=+g[r>>2];z=E*(+g[ai>>2]-D);y=E*(+g[aj>>2]-D);D=+g[u>>2];S=F*(+g[f>>2]-D);w=F*(+g[ak>>2]-D);if(z>w|S>y){aw=1;ax=267;break}D=S>z?S:z;z=w<y?w:y;y=+g[x>>2];w=G*(+g[al>>2]-y);S=G*(+g[am>>2]-y);if(D>S|w>z){aw=1;ax=267;break}if((w>D?w:D)>=A){aw=1;ax=267;break}ay=(S<z?S:z)<=0.0;if(ay|av^1){aw=ay;ax=267;break}ay=c[au>>2]|0;dA[c[(c[H>>2]|0)+8>>2]&511](d,ay>>21,ay&2097151);ax=268}}while(0);do{if((ax|0)==267){ax=0;if(av|aw^1){ax=268;break}aq=c[au>>2]|0;az=p-aq|0;aA=I+(-aq<<4)|0}}while(0);if((ax|0)==268){ax=0;az=p+1|0;aA=I+16|0}if((az|0)<(n|0)){I=aA;q=an;p=az}else{aB=an;break}}}else{aB=0}if((c[9788]|0)>=(aB|0)){i=o;return}c[9788]=aB;i=o;return}function azr(d,e,f,h){d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;f=d+168|0;c[f>>2]=c[d+152>>2];c[e>>2]=25328;c[e+52>>2]=278;i=e+60|0;a[i]=0;a[e+80|0]=1;c[e+76>>2]=0;c[e+68>>2]=0;c[e+72>>2]=0;j=e+100|0;a[j]=1;k=e+96|0;c[k>>2]=0;l=e+88|0;m=l;c[m>>2]=0;n=e+92|0;c[n>>2]=0;a[e+120|0]=1;c[e+116>>2]=0;c[e+108>>2]=0;c[e+112>>2]=0;o=e+140|0;a[o]=1;p=e+136|0;c[p>>2]=0;q=e+128|0;r=q;c[r>>2]=0;s=e+132|0;c[s>>2]=0;t=e+144|0;c[t>>2]=0;u=e+164|0;a[u]=1;v=e+160|0;c[v>>2]=0;w=e+152|0;x=w;c[x>>2]=0;y=e+156|0;c[y>>2]=0;z=e+168|0;c[z>>2]=0;A=e+4|0;g[A>>2]=-3.4028234663852886e+38;B=e+8|0;g[B>>2]=-3.4028234663852886e+38;C=e+12|0;g[C>>2]=-3.4028234663852886e+38;D=e+16|0;g[D>>2]=0.0;E=e+20|0;g[E>>2]=3.4028234663852886e+38;F=e+24|0;g[F>>2]=3.4028234663852886e+38;G=e+28|0;g[G>>2]=3.4028234663852886e+38;H=e+32|0;g[H>>2]=0.0;I=d+56|0;J=c[I>>2]|0;if(h){c[e+56>>2]=cj(J|0)|0;K=d+4|0;a[A]=a[K+3|0]|0;a[e+5|0]=a[K+2|0]|0;a[e+6|0]=a[K+1|0]|0;a[e+7|0]=a[K]|0;K=d+8|0;a[B]=a[K+3|0]|0;a[e+9|0]=a[K+2|0]|0;a[e+10|0]=a[K+1|0]|0;a[e+11|0]=a[K]|0;K=d+12|0;a[C]=a[K+3|0]|0;a[e+13|0]=a[K+2|0]|0;a[e+14|0]=a[K+1|0]|0;a[e+15|0]=a[K]|0;K=d+16|0;a[D]=a[K+3|0]|0;a[e+17|0]=a[K+2|0]|0;a[e+18|0]=a[K+1|0]|0;a[e+19|0]=a[K]|0;K=d+20|0;a[E]=a[K+3|0]|0;a[e+21|0]=a[K+2|0]|0;a[e+22|0]=a[K+1|0]|0;a[e+23|0]=a[K]|0;K=d+24|0;a[F]=a[K+3|0]|0;a[e+25|0]=a[K+2|0]|0;a[e+26|0]=a[K+1|0]|0;a[e+27|0]=a[K]|0;K=d+28|0;a[G]=a[K+3|0]|0;a[e+29|0]=a[K+2|0]|0;a[e+30|0]=a[K+1|0]|0;a[e+31|0]=a[K]|0;K=d+32|0;a[H]=a[K+3|0]|0;a[e+33|0]=a[K+2|0]|0;a[e+34|0]=a[K+1|0]|0;a[e+35|0]=a[K]|0;K=d+36|0;a[e+36|0]=a[K+3|0]|0;a[e+37|0]=a[K+2|0]|0;a[e+38|0]=a[K+1|0]|0;a[e+39|0]=a[K]|0;K=d+40|0;a[e+40|0]=a[K+3|0]|0;a[e+41|0]=a[K+2|0]|0;a[e+42|0]=a[K+1|0]|0;a[e+43|0]=a[K]|0;K=d+44|0;a[e+44|0]=a[K+3|0]|0;a[e+45|0]=a[K+2|0]|0;a[e+46|0]=a[K+1|0]|0;a[e+47|0]=a[K]|0;K=d+48|0;a[e+48|0]=a[K+3|0]|0;a[e+49|0]=a[K+2|0]|0;a[e+50|0]=a[K+1|0]|0;a[e+51|0]=a[K]|0;c[t>>2]=cj(c[d+144>>2]|0)|0;L=cj(c[f>>2]|0)|0}else{c[e+56>>2]=J;J=d+4|0;c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];J=d+20|0;c[E>>2]=c[J>>2];c[E+4>>2]=c[J+4>>2];c[E+8>>2]=c[J+8>>2];c[E+12>>2]=c[J+12>>2];J=e+36|0;E=d+36|0;c[J>>2]=c[E>>2];c[J+4>>2]=c[E+4>>2];c[J+8>>2]=c[E+8>>2];c[J+12>>2]=c[E+12>>2];c[t>>2]=c[d+144>>2];L=c[f>>2]|0}c[z>>2]=L;L=d+60|0;a[i]=a[L]&1;i=e+172|0;z=c[I>>2]|0;if((a[L]&1)==0){L=i;aDD(l|0,0,13);c[k>>2]=L;c[m>>2]=z;c[n>>2]=z;n=(z|0)>0;L404:do{if(h){if(!n){break}m=d+96|0;I=0;t=L;while(1){E=c[m>>2]|0;J=t+(I<<6)|0;A=E+(I<<6)|0;a[J]=a[A+3|0]|0;a[J+1|0]=a[A+2|0]|0;a[J+2|0]=a[A+1|0]|0;a[J+3|0]=a[A]|0;A=t+(I<<6)+4|0;J=E+(I<<6)+4|0;a[A]=a[J+3|0]|0;a[A+1|0]=a[J+2|0]|0;a[A+2|0]=a[J+1|0]|0;a[A+3|0]=a[J]|0;J=t+(I<<6)+8|0;A=E+(I<<6)+8|0;a[J]=a[A+3|0]|0;a[J+1|0]=a[A+2|0]|0;a[J+2|0]=a[A+1|0]|0;a[J+3|0]=a[A]|0;A=t+(I<<6)+12|0;J=E+(I<<6)+12|0;a[A]=a[J+3|0]|0;a[A+1|0]=a[J+2|0]|0;a[A+2|0]=a[J+1|0]|0;a[A+3|0]=a[J]|0;J=c[m>>2]|0;A=c[k>>2]|0;E=A+(I<<6)+16|0;K=J+(I<<6)+16|0;a[E]=a[K+3|0]|0;a[E+1|0]=a[K+2|0]|0;a[E+2|0]=a[K+1|0]|0;a[E+3|0]=a[K]|0;K=A+(I<<6)+20|0;E=J+(I<<6)+20|0;a[K]=a[E+3|0]|0;a[K+1|0]=a[E+2|0]|0;a[K+2|0]=a[E+1|0]|0;a[K+3|0]=a[E]|0;E=A+(I<<6)+24|0;K=J+(I<<6)+24|0;a[E]=a[K+3|0]|0;a[E+1|0]=a[K+2|0]|0;a[E+2|0]=a[K+1|0]|0;a[E+3|0]=a[K]|0;K=A+(I<<6)+28|0;A=J+(I<<6)+28|0;a[K]=a[A+3|0]|0;a[K+1|0]=a[A+2|0]|0;a[K+2|0]=a[A+1|0]|0;a[K+3|0]=a[A]|0;A=cj(c[(c[m>>2]|0)+(I<<6)+32>>2]|0)|0;c[(c[k>>2]|0)+(I<<6)+32>>2]=A;A=cj(c[(c[m>>2]|0)+(I<<6)+36>>2]|0)|0;c[(c[k>>2]|0)+(I<<6)+36>>2]=A;A=cj(c[(c[m>>2]|0)+(I<<6)+40>>2]|0)|0;c[(c[k>>2]|0)+(I<<6)+40>>2]=A;A=I+1|0;if((A|0)>=(z|0)){break L404}I=A;t=c[k>>2]|0}}else{if(!n){break}t=d+96|0;I=0;m=L;while(1){A=m+(I<<6)|0;K=(c[t>>2]|0)+(I<<6)|0;c[A>>2]=c[K>>2];c[A+4>>2]=c[K+4>>2];c[A+8>>2]=c[K+8>>2];c[A+12>>2]=c[K+12>>2];K=(c[k>>2]|0)+(I<<6)+16|0;A=(c[t>>2]|0)+(I<<6)+16|0;c[K>>2]=c[A>>2];c[K+4>>2]=c[A+4>>2];c[K+8>>2]=c[A+8>>2];c[K+12>>2]=c[A+12>>2];c[(c[k>>2]|0)+(I<<6)+32>>2]=c[(c[t>>2]|0)+(I<<6)+32>>2];c[(c[k>>2]|0)+(I<<6)+36>>2]=c[(c[t>>2]|0)+(I<<6)+36>>2];c[(c[k>>2]|0)+(I<<6)+40>>2]=c[(c[t>>2]|0)+(I<<6)+40>>2];A=I+1|0;if((A|0)>=(z|0)){break L404}I=A;m=c[k>>2]|0}}}while(0);L=z<<6;n=c[k>>2]|0;if((n|0)!=0){if((a[j]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-64+60>>2]|0)}c[k>>2]=0}aDD(l|0,0,13);M=L}else{L=i;aDD(q|0,0,13);c[p>>2]=L;c[r>>2]=z;c[s>>2]=z;s=(z|0)>0;L385:do{if(h){if(!s){break}r=d+136|0;i=0;l=L;while(1){b[l+(i<<4)>>1]=bX(b[(c[r>>2]|0)+(i<<4)>>1]|0)|0;k=bX(b[(c[r>>2]|0)+(i<<4)+2>>1]|0)|0;b[(c[p>>2]|0)+(i<<4)+2>>1]=k;k=bX(b[(c[r>>2]|0)+(i<<4)+4>>1]|0)|0;b[(c[p>>2]|0)+(i<<4)+4>>1]=k;k=bX(b[(c[r>>2]|0)+(i<<4)+6>>1]|0)|0;b[(c[p>>2]|0)+(i<<4)+6>>1]=k;k=bX(b[(c[r>>2]|0)+(i<<4)+8>>1]|0)|0;b[(c[p>>2]|0)+(i<<4)+8>>1]=k;k=bX(b[(c[r>>2]|0)+(i<<4)+10>>1]|0)|0;b[(c[p>>2]|0)+(i<<4)+10>>1]=k;k=cj(c[(c[r>>2]|0)+(i<<4)+12>>2]|0)|0;c[(c[p>>2]|0)+(i<<4)+12>>2]=k;k=i+1|0;if((k|0)>=(z|0)){break L385}i=k;l=c[p>>2]|0}}else{if(!s){break}l=d+136|0;i=0;r=L;while(1){b[r+(i<<4)>>1]=b[(c[l>>2]|0)+(i<<4)>>1]|0;b[(c[p>>2]|0)+(i<<4)+2>>1]=b[(c[l>>2]|0)+(i<<4)+2>>1]|0;b[(c[p>>2]|0)+(i<<4)+4>>1]=b[(c[l>>2]|0)+(i<<4)+4>>1]|0;b[(c[p>>2]|0)+(i<<4)+6>>1]=b[(c[l>>2]|0)+(i<<4)+6>>1]|0;b[(c[p>>2]|0)+(i<<4)+8>>1]=b[(c[l>>2]|0)+(i<<4)+8>>1]|0;b[(c[p>>2]|0)+(i<<4)+10>>1]=b[(c[l>>2]|0)+(i<<4)+10>>1]|0;c[(c[p>>2]|0)+(i<<4)+12>>2]=c[(c[l>>2]|0)+(i<<4)+12>>2];k=i+1|0;if((k|0)>=(z|0)){break L385}i=k;r=c[p>>2]|0}}}while(0);L=z<<4;z=c[p>>2]|0;if((z|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[z-16+12>>2]|0)}c[p>>2]=0}aDD(q|0,0,13);M=L}L=e+(M+172)|0;M=c[f>>2]|0;q=c[v>>2]|0;if((q|0)!=0){if((a[u]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[q-32+28>>2]|0)}c[v>>2]=0}q=L;aDD(w|0,0,13);c[v>>2]=q;c[x>>2]=M;c[y>>2]=M;M=(c[f>>2]|0)>0;L429:do{if(h){if(!M){break}y=d+160|0;x=0;L=q;while(1){b[L+(x<<5)>>1]=bX(b[(c[y>>2]|0)+(x<<5)>>1]|0)|0;p=bX(b[(c[y>>2]|0)+(x<<5)+2>>1]|0)|0;b[(c[v>>2]|0)+(x<<5)+2>>1]=p;p=bX(b[(c[y>>2]|0)+(x<<5)+4>>1]|0)|0;b[(c[v>>2]|0)+(x<<5)+4>>1]=p;p=bX(b[(c[y>>2]|0)+(x<<5)+6>>1]|0)|0;b[(c[v>>2]|0)+(x<<5)+6>>1]=p;p=bX(b[(c[y>>2]|0)+(x<<5)+8>>1]|0)|0;b[(c[v>>2]|0)+(x<<5)+8>>1]=p;p=bX(b[(c[y>>2]|0)+(x<<5)+10>>1]|0)|0;b[(c[v>>2]|0)+(x<<5)+10>>1]=p;p=cj(c[(c[y>>2]|0)+(x<<5)+12>>2]|0)|0;c[(c[v>>2]|0)+(x<<5)+12>>2]=p;p=cj(c[(c[y>>2]|0)+(x<<5)+16>>2]|0)|0;c[(c[v>>2]|0)+(x<<5)+16>>2]=p;p=x+1|0;if((p|0)>=(c[f>>2]|0)){break L429}x=p;L=c[v>>2]|0}}else{if(!M){break}L=d+160|0;x=0;y=q;while(1){b[y+(x<<5)>>1]=b[(c[L>>2]|0)+(x<<5)>>1]|0;b[(c[v>>2]|0)+(x<<5)+2>>1]=b[(c[L>>2]|0)+(x<<5)+2>>1]|0;b[(c[v>>2]|0)+(x<<5)+4>>1]=b[(c[L>>2]|0)+(x<<5)+4>>1]|0;b[(c[v>>2]|0)+(x<<5)+6>>1]=b[(c[L>>2]|0)+(x<<5)+6>>1]|0;b[(c[v>>2]|0)+(x<<5)+8>>1]=b[(c[L>>2]|0)+(x<<5)+8>>1]|0;b[(c[v>>2]|0)+(x<<5)+10>>1]=b[(c[L>>2]|0)+(x<<5)+10>>1]|0;c[(c[v>>2]|0)+(x<<5)+12>>2]=c[(c[L>>2]|0)+(x<<5)+12>>2];c[(c[v>>2]|0)+(x<<5)+16>>2]=c[(c[L>>2]|0)+(x<<5)+16>>2];c[(c[v>>2]|0)+(x<<5)+20>>2]=0;c[(c[v>>2]|0)+(x<<5)+24>>2]=0;c[(c[v>>2]|0)+(x<<5)+28>>2]=0;p=x+1|0;if((p|0)>=(c[f>>2]|0)){break L429}x=p;y=c[v>>2]|0}}}while(0);f=c[v>>2]|0;if((f|0)==0){N=e;c[N>>2]=0;aDD(w|0,0,13);return 1}if((a[u]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-32+28>>2]|0)}c[v>>2]=0;N=e;c[N>>2]=0;aDD(w|0,0,13);return 1}function azs(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;if((d|0)==0){g=0;return g|0}h=d;if(f){i=d+56|0;j=cj(c[i>>2]|0)|0;c[i>>2]=j;i=d+4|0;k=d+7|0;l=d+6|0;m=a[l]|0;n=d+5|0;o=a[n]|0;p=a[i]|0;q=d+8|0;r=d+11|0;s=a[r]|0;t=d+10|0;u=a[t]|0;v=d+9|0;w=a[v]|0;x=a[q]|0;y=d+12|0;z=d+15|0;A=a[z]|0;B=d+14|0;C=a[B]|0;D=d+13|0;E=a[D]|0;F=a[y]|0;G=d+16|0;H=d+19|0;I=a[H]|0;J=d+18|0;K=a[J]|0;L=d+17|0;M=a[L]|0;N=a[G]|0;a[i]=a[k]|0;a[n]=m;a[l]=o;a[k]=p;a[q]=s;a[v]=u;a[t]=w;a[r]=x;a[y]=A;a[D]=C;a[B]=E;a[z]=F;a[G]=I;a[L]=K;a[J]=M;a[H]=N;N=d+20|0;H=d+23|0;M=d+22|0;J=a[M]|0;K=d+21|0;L=a[K]|0;I=a[N]|0;G=d+24|0;F=d+27|0;z=a[F]|0;E=d+26|0;B=a[E]|0;C=d+25|0;D=a[C]|0;A=a[G]|0;y=d+28|0;x=d+31|0;r=a[x]|0;w=d+30|0;t=a[w]|0;u=d+29|0;v=a[u]|0;s=a[y]|0;q=d+32|0;p=d+35|0;k=a[p]|0;o=d+34|0;l=a[o]|0;m=d+33|0;n=a[m]|0;i=a[q]|0;a[N]=a[H]|0;a[K]=J;a[M]=L;a[H]=I;a[G]=z;a[C]=B;a[E]=D;a[F]=A;a[y]=r;a[u]=t;a[w]=v;a[x]=s;a[q]=k;a[m]=l;a[o]=n;a[p]=i;i=d+36|0;p=d+39|0;n=d+38|0;o=a[n]|0;l=d+37|0;m=a[l]|0;k=a[i]|0;q=d+40|0;s=d+43|0;x=a[s]|0;v=d+42|0;w=a[v]|0;t=d+41|0;u=a[t]|0;r=a[q]|0;y=d+44|0;A=d+47|0;F=a[A]|0;D=d+46|0;E=a[D]|0;B=d+45|0;C=a[B]|0;z=a[y]|0;G=d+48|0;I=d+51|0;H=a[I]|0;L=d+50|0;M=a[L]|0;J=d+49|0;K=a[J]|0;N=a[G]|0;a[i]=a[p]|0;a[l]=o;a[n]=m;a[p]=k;a[q]=x;a[t]=w;a[v]=u;a[s]=r;a[y]=F;a[B]=E;a[D]=C;a[A]=z;a[G]=H;a[J]=M;a[L]=K;a[I]=N;N=d+144|0;c[N>>2]=cj(c[N>>2]|0)|0;N=d+168|0;I=cj(c[N>>2]|0)|0;c[N>>2]=I;O=I;P=j}else{O=c[d+168>>2]|0;P=c[d+56>>2]|0}j=d+168|0;I=(a[d+60|0]&1)==0;if(((O<<5)+172+(P<<(I?6:4))|0)>>>0>e>>>0){g=0;return g|0}e=d+172|0;c[d>>2]=25328;c[d+52>>2]=278;a[d+80|0]=1;c[d+76>>2]=0;c[d+68>>2]=0;c[d+72>>2]=0;a[d+100|0]=1;O=d+96|0;c[O>>2]=0;N=d+88|0;K=N;c[K>>2]=0;L=d+92|0;c[L>>2]=0;a[d+120|0]=1;c[d+116>>2]=0;c[d+108>>2]=0;c[d+112>>2]=0;a[d+140|0]=1;M=d+136|0;c[M>>2]=0;J=d+128|0;H=J;c[H>>2]=0;G=d+132|0;c[G>>2]=0;z=d+164|0;a[z]=1;A=d+160|0;c[A>>2]=0;C=d+152|0;D=C;c[D>>2]=0;E=d+156|0;c[E>>2]=0;if(I){I=e;aDD(N|0,0,13);c[O>>2]=I;c[K>>2]=P;c[L>>2]=P;L467:do{if((P|0)>0&f){L=0;K=I;while(1){N=K+(L<<6)|0;B=N+3|0;F=N+2|0;y=a[F]|0;r=N+1|0;s=a[r]|0;u=a[N]|0;v=K+(L<<6)+4|0;w=a[v+3|0]|0;t=a[v+2|0]|0;x=a[v+1|0]|0;q=a[v]|0;k=K+(L<<6)+8|0;p=a[k+3|0]|0;m=a[k+2|0]|0;n=a[k+1|0]|0;o=a[k]|0;l=K+(L<<6)+12|0;i=a[l+3|0]|0;Q=a[l+2|0]|0;R=a[l+1|0]|0;S=a[l]|0;a[N]=a[B]|0;a[r]=y;a[F]=s;a[B]=u;a[v]=w;a[N+5|0]=t;a[N+6|0]=x;a[N+7|0]=q;a[k]=p;a[N+9|0]=m;a[N+10|0]=n;a[N+11|0]=o;a[l]=i;a[N+13|0]=Q;a[N+14|0]=R;a[N+15|0]=S;S=c[O>>2]|0;N=S+(L<<6)+16|0;R=a[N+2|0]|0;Q=a[N+1|0]|0;i=a[N]|0;l=S+(L<<6)+20|0;o=a[l+3|0]|0;n=a[l+2|0]|0;m=a[l+1|0]|0;p=a[l]|0;k=S+(L<<6)+24|0;q=a[k+3|0]|0;x=a[k+2|0]|0;t=a[k+1|0]|0;w=a[k]|0;v=S+(L<<6)+28|0;u=a[v+3|0]|0;B=a[v+2|0]|0;s=a[v+1|0]|0;F=a[v]|0;a[N]=a[N+3|0]|0;N=S+(L<<6)|0;a[N+17|0]=R;a[N+18|0]=Q;a[N+19|0]=i;a[l]=o;a[N+21|0]=n;a[N+22|0]=m;a[N+23|0]=p;a[k]=q;a[N+25|0]=x;a[N+26|0]=t;a[N+27|0]=w;a[v]=u;a[N+29|0]=B;a[N+30|0]=s;a[N+31|0]=F;F=(c[O>>2]|0)+(L<<6)+32|0;c[F>>2]=cj(c[F>>2]|0)|0;F=(c[O>>2]|0)+(L<<6)+36|0;c[F>>2]=cj(c[F>>2]|0)|0;F=(c[O>>2]|0)+(L<<6)+40|0;c[F>>2]=cj(c[F>>2]|0)|0;F=L+1|0;if((F|0)>=(P|0)){break L467}L=F;K=c[O>>2]|0}}}while(0);T=P<<6}else{O=e;aDD(J|0,0,13);c[M>>2]=O;c[H>>2]=P;c[G>>2]=P;L461:do{if((P|0)>0&f){G=0;H=O;while(1){J=H+(G<<4)|0;b[J>>1]=bX(b[J>>1]|0)|0;J=(c[M>>2]|0)+(G<<4)+2|0;b[J>>1]=bX(b[J>>1]|0)|0;J=(c[M>>2]|0)+(G<<4)+4|0;b[J>>1]=bX(b[J>>1]|0)|0;J=(c[M>>2]|0)+(G<<4)+6|0;b[J>>1]=bX(b[J>>1]|0)|0;J=(c[M>>2]|0)+(G<<4)+8|0;b[J>>1]=bX(b[J>>1]|0)|0;J=(c[M>>2]|0)+(G<<4)+10|0;b[J>>1]=bX(b[J>>1]|0)|0;J=(c[M>>2]|0)+(G<<4)+12|0;c[J>>2]=cj(c[J>>2]|0)|0;J=G+1|0;if((J|0)>=(P|0)){break L461}G=J;H=c[M>>2]|0}}}while(0);T=P<<4}P=d+(T+172)|0;T=c[j>>2]|0;d=c[A>>2]|0;if((d|0)!=0){if((a[z]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-32+28>>2]|0)}c[A>>2]=0}d=P;aDD(C|0,0,13);c[A>>2]=d;c[D>>2]=T;c[E>>2]=T;if(!f){g=h;return g|0}if((c[j>>2]|0)>0){U=0;V=d}else{g=h;return g|0}while(1){d=V+(U<<5)|0;b[d>>1]=bX(b[d>>1]|0)|0;d=(c[A>>2]|0)+(U<<5)+2|0;b[d>>1]=bX(b[d>>1]|0)|0;d=(c[A>>2]|0)+(U<<5)+4|0;b[d>>1]=bX(b[d>>1]|0)|0;d=(c[A>>2]|0)+(U<<5)+6|0;b[d>>1]=bX(b[d>>1]|0)|0;d=(c[A>>2]|0)+(U<<5)+8|0;b[d>>1]=bX(b[d>>1]|0)|0;d=(c[A>>2]|0)+(U<<5)+10|0;b[d>>1]=bX(b[d>>1]|0)|0;d=(c[A>>2]|0)+(U<<5)+12|0;c[d>>2]=cj(c[d>>2]|0)|0;d=(c[A>>2]|0)+(U<<5)+16|0;c[d>>2]=cj(c[d>>2]|0)|0;d=U+1|0;if((d|0)>=(c[j>>2]|0)){g=h;break}U=d;V=c[A>>2]|0}return g|0}function azt(d,e){d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;f=i;i=i+112|0;h=f+64|0;j=f+80|0;g[d+20>>2]=+g[e+16>>2];g[d+24>>2]=+g[e+20>>2];g[d+28>>2]=+g[e+24>>2];g[d+32>>2]=+g[e+28>>2];g[d+4>>2]=+g[e>>2];g[d+8>>2]=+g[e+4>>2];g[d+12>>2]=+g[e+8>>2];g[d+16>>2]=+g[e+12>>2];g[d+36>>2]=+g[e+32>>2];g[d+40>>2]=+g[e+36>>2];g[d+44>>2]=+g[e+40>>2];g[d+48>>2]=+g[e+44>>2];c[d+56>>2]=c[e+48>>2];a[d+60|0]=(c[e+52>>2]|0)!=0|0;k=c[e+56>>2]|0;l=f|0;aDD(l|0,0,64);m=d+88|0;n=c[m>>2]|0;if((n|0)<(k|0)){o=d+92|0;if((c[o>>2]|0)<(k|0)){if((k|0)==0){p=0;q=n}else{c[9806]=(c[9806]|0)+1;r=aDx((k<<6|4)+15|0)|0;if((r|0)==0){s=0}else{t=-(r+4|0)&15;c[r+t>>2]=r;s=r+(t+4)|0}p=s;q=c[m>>2]|0}s=d+96|0;if((q|0)>0){t=0;do{r=p+(t<<6)|0;u=(c[s>>2]|0)+(t<<6)|0;aDC(r|0,u|0,64)|0;t=t+1|0;}while((t|0)<(q|0))}q=c[s>>2]|0;t=d+100|0;if((q|0)!=0){if((a[t]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[q-64+60>>2]|0)}c[s>>2]=0}a[t]=1;c[s>>2]=p;c[o>>2]=k;v=s}else{v=d+96|0}s=n;do{n=(c[v>>2]|0)+(s<<6)|0;aDC(n|0,l|0,64)|0;s=s+1|0;}while((s|0)<(k|0))}c[m>>2]=k;L514:do{if((k|0)>0){m=d+96|0;s=0;l=c[e+64>>2]|0;while(1){v=c[m>>2]|0;g[v+(s<<6)+16>>2]=+g[l+16>>2];g[v+(s<<6)+20>>2]=+g[l+20>>2];g[v+(s<<6)+24>>2]=+g[l+24>>2];g[v+(s<<6)+28>>2]=+g[l+28>>2];v=c[m>>2]|0;g[v+(s<<6)>>2]=+g[l>>2];g[v+(s<<6)+4>>2]=+g[l+4>>2];g[v+(s<<6)+8>>2]=+g[l+8>>2];g[v+(s<<6)+12>>2]=+g[l+12>>2];c[(c[m>>2]|0)+(s<<6)+32>>2]=c[l+32>>2];c[(c[m>>2]|0)+(s<<6)+36>>2]=c[l+36>>2];c[(c[m>>2]|0)+(s<<6)+40>>2]=c[l+40>>2];v=s+1|0;if((v|0)>=(k|0)){break L514}s=v;l=l+48|0}}}while(0);k=c[e+60>>2]|0;l=h;aDD(l|0,0,16);h=d+128|0;s=c[h>>2]|0;if((s|0)<(k|0)){m=d+132|0;if((c[m>>2]|0)<(k|0)){if((k|0)==0){w=0;x=s}else{c[9806]=(c[9806]|0)+1;v=aDx((k<<4|4)+15|0)|0;if((v|0)==0){y=0}else{n=-(v+4|0)&15;c[v+n>>2]=v;y=v+(n+4)|0}w=y;x=c[h>>2]|0}y=d+136|0;if((x|0)>0){n=0;do{v=w+(n<<4)|0;o=(c[y>>2]|0)+(n<<4)|0;c[v>>2]=c[o>>2];c[v+4>>2]=c[o+4>>2];c[v+8>>2]=c[o+8>>2];c[v+12>>2]=c[o+12>>2];n=n+1|0;}while((n|0)<(x|0))}x=c[y>>2]|0;n=d+140|0;if((x|0)!=0){if((a[n]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[x-16+12>>2]|0)}c[y>>2]=0}a[n]=1;c[y>>2]=w;c[m>>2]=k;z=y}else{z=d+136|0}y=s;do{s=(c[z>>2]|0)+(y<<4)|0;c[s>>2]=c[l>>2];c[s+4>>2]=c[l+4>>2];c[s+8>>2]=c[l+8>>2];c[s+12>>2]=c[l+12>>2];y=y+1|0;}while((y|0)<(k|0))}c[h>>2]=k;L545:do{if((k|0)>0){h=d+136|0;y=c[e+68>>2]|0;l=0;while(1){c[(c[h>>2]|0)+(l<<4)+12>>2]=c[y+12>>2];b[(c[h>>2]|0)+(l<<4)+6>>1]=b[y+6>>1]|0;b[(c[h>>2]|0)+(l<<4)+8>>1]=b[y+8>>1]|0;b[(c[h>>2]|0)+(l<<4)+10>>1]=b[y+10>>1]|0;b[(c[h>>2]|0)+(l<<4)>>1]=b[y>>1]|0;b[(c[h>>2]|0)+(l<<4)+2>>1]=b[y+2>>1]|0;b[(c[h>>2]|0)+(l<<4)+4>>1]=b[y+4>>1]|0;z=l+1|0;if((z|0)>=(k|0)){break L545}y=y+16|0;l=z}}}while(0);c[d+144>>2]=c[e+76>>2];k=c[e+80>>2]|0;l=d+152|0;y=c[l>>2]|0;if((y|0)<(k|0)){h=d+156|0;if((c[h>>2]|0)<(k|0)){if((k|0)==0){A=0;B=y}else{c[9806]=(c[9806]|0)+1;z=aDx((k<<5|4)+15|0)|0;if((z|0)==0){C=0}else{s=-(z+4|0)&15;c[z+s>>2]=z;C=z+(s+4)|0}A=C;B=c[l>>2]|0}C=d+160|0;if((B|0)>0){s=0;do{z=A+(s<<5)|0;m=(c[C>>2]|0)+(s<<5)|0;aDC(z|0,m|0,32)|0;s=s+1|0;}while((s|0)<(B|0))}B=c[C>>2]|0;s=d+164|0;if((B|0)!=0){if((a[s]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[B-32+28>>2]|0)}c[C>>2]=0}a[s]=1;c[C>>2]=A;c[h>>2]=k;D=C}else{D=d+160|0}C=j;j=y;do{y=(c[D>>2]|0)+(j<<5)|0;aDC(y|0,C|0,32)|0;j=j+1|0;}while((j|0)<(k|0))}c[l>>2]=k;if((k|0)<=0){i=f;return}l=d+160|0;d=c[e+72>>2]|0;e=0;while(1){b[(c[l>>2]|0)+(e<<5)+6>>1]=b[d+14>>1]|0;b[(c[l>>2]|0)+(e<<5)+8>>1]=b[d+16>>1]|0;b[(c[l>>2]|0)+(e<<5)+10>>1]=b[d+18>>1]|0;b[(c[l>>2]|0)+(e<<5)>>1]=b[d+8>>1]|0;b[(c[l>>2]|0)+(e<<5)+2>>1]=b[d+10>>1]|0;b[(c[l>>2]|0)+(e<<5)+4>>1]=b[d+12>>1]|0;c[(c[l>>2]|0)+(e<<5)+12>>2]=c[d>>2];c[(c[l>>2]|0)+(e<<5)+16>>2]=c[d+4>>2];j=e+1|0;if((j|0)>=(k|0)){break}d=d+20|0;e=j}i=f;return}function azu(d,e){d=d|0;e=e|0;var f=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;f=i;i=i+112|0;j=f+64|0;k=f+80|0;g[d+20>>2]=+h[e+32>>3];g[d+24>>2]=+h[e+40>>3];g[d+28>>2]=+h[e+48>>3];g[d+32>>2]=+h[e+56>>3];g[d+4>>2]=+h[e>>3];g[d+8>>2]=+h[e+8>>3];g[d+12>>2]=+h[e+16>>3];g[d+16>>2]=+h[e+24>>3];g[d+36>>2]=+h[e+64>>3];g[d+40>>2]=+h[e+72>>3];g[d+44>>2]=+h[e+80>>3];g[d+48>>2]=+h[e+88>>3];c[d+56>>2]=c[e+96>>2];a[d+60|0]=(c[e+100>>2]|0)!=0|0;l=c[e+104>>2]|0;m=f|0;aDD(m|0,0,64);n=d+88|0;o=c[n>>2]|0;if((o|0)<(l|0)){p=d+92|0;if((c[p>>2]|0)<(l|0)){if((l|0)==0){q=0;r=o}else{c[9806]=(c[9806]|0)+1;s=aDx((l<<6|4)+15|0)|0;if((s|0)==0){t=0}else{u=-(s+4|0)&15;c[s+u>>2]=s;t=s+(u+4)|0}q=t;r=c[n>>2]|0}t=d+96|0;if((r|0)>0){u=0;do{s=q+(u<<6)|0;v=(c[t>>2]|0)+(u<<6)|0;aDC(s|0,v|0,64)|0;u=u+1|0;}while((u|0)<(r|0))}r=c[t>>2]|0;u=d+100|0;if((r|0)!=0){if((a[u]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[r-64+60>>2]|0)}c[t>>2]=0}a[u]=1;c[t>>2]=q;c[p>>2]=l;w=t}else{w=d+96|0}t=o;do{o=(c[w>>2]|0)+(t<<6)|0;aDC(o|0,m|0,64)|0;t=t+1|0;}while((t|0)<(l|0))}c[n>>2]=l;L609:do{if((l|0)>0){n=d+96|0;t=0;m=c[e+112>>2]|0;while(1){w=c[n>>2]|0;g[w+(t<<6)+16>>2]=+h[m+32>>3];g[w+(t<<6)+20>>2]=+h[m+40>>3];g[w+(t<<6)+24>>2]=+h[m+48>>3];g[w+(t<<6)+28>>2]=+h[m+56>>3];w=c[n>>2]|0;g[w+(t<<6)>>2]=+h[m>>3];g[w+(t<<6)+4>>2]=+h[m+8>>3];g[w+(t<<6)+8>>2]=+h[m+16>>3];g[w+(t<<6)+12>>2]=+h[m+24>>3];c[(c[n>>2]|0)+(t<<6)+32>>2]=c[m+64>>2];c[(c[n>>2]|0)+(t<<6)+36>>2]=c[m+68>>2];c[(c[n>>2]|0)+(t<<6)+40>>2]=c[m+72>>2];w=t+1|0;if((w|0)>=(l|0)){break L609}t=w;m=m+80|0}}}while(0);l=c[e+108>>2]|0;m=j;aDD(m|0,0,16);j=d+128|0;t=c[j>>2]|0;if((t|0)<(l|0)){n=d+132|0;if((c[n>>2]|0)<(l|0)){if((l|0)==0){x=0;y=t}else{c[9806]=(c[9806]|0)+1;w=aDx((l<<4|4)+15|0)|0;if((w|0)==0){z=0}else{o=-(w+4|0)&15;c[w+o>>2]=w;z=w+(o+4)|0}x=z;y=c[j>>2]|0}z=d+136|0;if((y|0)>0){o=0;do{w=x+(o<<4)|0;p=(c[z>>2]|0)+(o<<4)|0;c[w>>2]=c[p>>2];c[w+4>>2]=c[p+4>>2];c[w+8>>2]=c[p+8>>2];c[w+12>>2]=c[p+12>>2];o=o+1|0;}while((o|0)<(y|0))}y=c[z>>2]|0;o=d+140|0;if((y|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[y-16+12>>2]|0)}c[z>>2]=0}a[o]=1;c[z>>2]=x;c[n>>2]=l;A=z}else{A=d+136|0}z=t;do{t=(c[A>>2]|0)+(z<<4)|0;c[t>>2]=c[m>>2];c[t+4>>2]=c[m+4>>2];c[t+8>>2]=c[m+8>>2];c[t+12>>2]=c[m+12>>2];z=z+1|0;}while((z|0)<(l|0))}c[j>>2]=l;L640:do{if((l|0)>0){j=d+136|0;z=c[e+116>>2]|0;m=0;while(1){c[(c[j>>2]|0)+(m<<4)+12>>2]=c[z+12>>2];b[(c[j>>2]|0)+(m<<4)+6>>1]=b[z+6>>1]|0;b[(c[j>>2]|0)+(m<<4)+8>>1]=b[z+8>>1]|0;b[(c[j>>2]|0)+(m<<4)+10>>1]=b[z+10>>1]|0;b[(c[j>>2]|0)+(m<<4)>>1]=b[z>>1]|0;b[(c[j>>2]|0)+(m<<4)+2>>1]=b[z+2>>1]|0;b[(c[j>>2]|0)+(m<<4)+4>>1]=b[z+4>>1]|0;A=m+1|0;if((A|0)>=(l|0)){break L640}z=z+16|0;m=A}}}while(0);c[d+144>>2]=c[e+120>>2];l=c[e+124>>2]|0;m=d+152|0;z=c[m>>2]|0;if((z|0)<(l|0)){j=d+156|0;if((c[j>>2]|0)<(l|0)){if((l|0)==0){B=0;C=z}else{c[9806]=(c[9806]|0)+1;A=aDx((l<<5|4)+15|0)|0;if((A|0)==0){D=0}else{t=-(A+4|0)&15;c[A+t>>2]=A;D=A+(t+4)|0}B=D;C=c[m>>2]|0}D=d+160|0;if((C|0)>0){t=0;do{A=B+(t<<5)|0;n=(c[D>>2]|0)+(t<<5)|0;aDC(A|0,n|0,32)|0;t=t+1|0;}while((t|0)<(C|0))}C=c[D>>2]|0;t=d+164|0;if((C|0)!=0){if((a[t]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[C-32+28>>2]|0)}c[D>>2]=0}a[t]=1;c[D>>2]=B;c[j>>2]=l;E=D}else{E=d+160|0}D=k;k=z;do{z=(c[E>>2]|0)+(k<<5)|0;aDC(z|0,D|0,32)|0;k=k+1|0;}while((k|0)<(l|0))}c[m>>2]=l;if((l|0)<=0){i=f;return}m=d+160|0;d=c[e+128>>2]|0;e=0;while(1){b[(c[m>>2]|0)+(e<<5)+6>>1]=b[d+14>>1]|0;b[(c[m>>2]|0)+(e<<5)+8>>1]=b[d+16>>1]|0;b[(c[m>>2]|0)+(e<<5)+10>>1]=b[d+18>>1]|0;b[(c[m>>2]|0)+(e<<5)>>1]=b[d+8>>1]|0;b[(c[m>>2]|0)+(e<<5)+2>>1]=b[d+10>>1]|0;b[(c[m>>2]|0)+(e<<5)+4>>1]=b[d+12>>1]|0;c[(c[m>>2]|0)+(e<<5)+12>>2]=c[d>>2];c[(c[m>>2]|0)+(e<<5)+16>>2]=c[d+4>>2];k=e+1|0;if((k|0)>=(l|0)){break}d=d+20|0;e=k}i=f;return}function azv(a){a=a|0;return 17656|0}function azw(a){a=a|0;return 2}function azx(d,e,f){d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g[e+16>>2]=+g[d+20>>2];g[e+20>>2]=+g[d+24>>2];g[e+24>>2]=+g[d+28>>2];g[e+28>>2]=+g[d+32>>2];g[e>>2]=+g[d+4>>2];g[e+4>>2]=+g[d+8>>2];g[e+8>>2]=+g[d+12>>2];g[e+12>>2]=+g[d+16>>2];g[e+32>>2]=+g[d+36>>2];g[e+36>>2]=+g[d+40>>2];g[e+40>>2]=+g[d+44>>2];g[e+44>>2]=+g[d+48>>2];c[e+48>>2]=c[d+56>>2];c[e+52>>2]=a[d+60|0]&1;h=d+88|0;c[e+56>>2]=c[h>>2];do{if((c[h>>2]|0)==0){c[e+64>>2]=0}else{i=d+96|0;j=dj[c[(c[f>>2]|0)+28>>2]&511](f,c[i>>2]|0)|0;c[e+64>>2]=j;if((j|0)==0){break}j=c[h>>2]|0;k=cS[c[(c[f>>2]|0)+16>>2]&511](f,48,j)|0;if((j|0)>0){l=0;m=c[k+8>>2]|0;while(1){n=c[i>>2]|0;g[m+16>>2]=+g[n+(l<<6)+16>>2];g[m+20>>2]=+g[n+(l<<6)+20>>2];g[m+24>>2]=+g[n+(l<<6)+24>>2];g[m+28>>2]=+g[n+(l<<6)+28>>2];n=c[i>>2]|0;g[m>>2]=+g[n+(l<<6)>>2];g[m+4>>2]=+g[n+(l<<6)+4>>2];g[m+8>>2]=+g[n+(l<<6)+8>>2];g[m+12>>2]=+g[n+(l<<6)+12>>2];c[m+32>>2]=c[(c[i>>2]|0)+(l<<6)+32>>2];c[m+36>>2]=c[(c[i>>2]|0)+(l<<6)+36>>2];c[m+40>>2]=c[(c[i>>2]|0)+(l<<6)+40>>2];n=l+1|0;if((n|0)<(j|0)){l=n;m=m+48|0}else{break}}}co[c[(c[f>>2]|0)+20>>2]&255](f,k,16448,1497453121,c[i>>2]|0)}}while(0);h=d+128|0;c[e+60>>2]=c[h>>2];do{if((c[h>>2]|0)==0){c[e+68>>2]=0}else{m=d+136|0;l=dj[c[(c[f>>2]|0)+28>>2]&511](f,c[m>>2]|0)|0;c[e+68>>2]=l;if((l|0)==0){break}l=c[h>>2]|0;j=cS[c[(c[f>>2]|0)+16>>2]&511](f,16,l)|0;if((l|0)>0){n=0;o=c[j+8>>2]|0;while(1){c[o+12>>2]=c[(c[m>>2]|0)+(n<<4)+12>>2];b[o+6>>1]=b[(c[m>>2]|0)+(n<<4)+6>>1]|0;b[o+8>>1]=b[(c[m>>2]|0)+(n<<4)+8>>1]|0;b[o+10>>1]=b[(c[m>>2]|0)+(n<<4)+10>>1]|0;b[o>>1]=b[(c[m>>2]|0)+(n<<4)>>1]|0;b[o+2>>1]=b[(c[m>>2]|0)+(n<<4)+2>>1]|0;b[o+4>>1]=b[(c[m>>2]|0)+(n<<4)+4>>1]|0;p=n+1|0;if((p|0)<(l|0)){n=p;o=o+16|0}else{break}}}co[c[(c[f>>2]|0)+20>>2]&255](f,j,17672,1497453121,c[m>>2]|0)}}while(0);c[e+76>>2]=c[d+144>>2];h=d+152|0;c[e+80>>2]=c[h>>2];if((c[h>>2]|0)==0){c[e+72>>2]=0;return 16928}o=d+160|0;d=dj[c[(c[f>>2]|0)+28>>2]&511](f,c[o>>2]|0)|0;c[e+72>>2]=d;if((d|0)==0){return 16928}d=c[h>>2]|0;h=cS[c[(c[f>>2]|0)+16>>2]&511](f,20,d)|0;if((d|0)>0){e=c[h+8>>2]|0;n=0;while(1){b[e+14>>1]=b[(c[o>>2]|0)+(n<<5)+6>>1]|0;b[e+16>>1]=b[(c[o>>2]|0)+(n<<5)+8>>1]|0;b[e+18>>1]=b[(c[o>>2]|0)+(n<<5)+10>>1]|0;b[e+8>>1]=b[(c[o>>2]|0)+(n<<5)>>1]|0;b[e+10>>1]=b[(c[o>>2]|0)+(n<<5)+2>>1]|0;b[e+12>>1]=b[(c[o>>2]|0)+(n<<5)+4>>1]|0;c[e>>2]=c[(c[o>>2]|0)+(n<<5)+12>>2];c[e+4>>2]=c[(c[o>>2]|0)+(n<<5)+16>>2];l=n+1|0;if((l|0)<(d|0)){e=e+20|0;n=l}else{break}}}co[c[(c[f>>2]|0)+20>>2]&255](f,h,17224,1497453121,c[o>>2]|0);return 16928}function azy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0.0,E=0.0,F=0.0,G=0.0,H=0,I=0,J=0.0,K=0.0,L=0.0;f=i;i=i+32|0;h=f|0;j=f+16|0;k=+g[b+16>>2];l=+g[b>>2];m=k-l;n=+g[b+20>>2];o=+g[b+4>>2];p=n-o;q=+g[b+24>>2];r=+g[b+8>>2];s=q-r;t=+g[b+32>>2];u=t-l;v=+g[b+36>>2];w=v-o;x=+g[b+40>>2];y=x-r;z=p*y-s*w;A=s*u-m*y;y=m*w-p*u;b=h|0;g[b>>2]=z;B=h+4|0;g[B>>2]=A;C=h+8|0;g[C>>2]=y;g[h+12>>2]=0.0;u=l*z+o*A+r*y;p=+g[a+4>>2];w=+g[a+8>>2];m=+g[a+12>>2];s=z*p+A*w+y*m-u;D=+g[a+20>>2];E=+g[a+24>>2];F=+g[a+28>>2];G=z*D+A*E+y*F-u;if(s*G>=0.0){i=f;return}H=c[a+36>>2]|0;if((H&1|0)!=0&s>0.0){i=f;return}u=s/(s-G);I=a+40|0;if(u>=+g[I>>2]){i=f;return}G=z*z+A*A+y*y;J=G*-9999999747378752.0e-20;K=1.0-u;L=D*u+p*K;p=E*u+w*K;w=F*u+m*K;K=l-L;l=o-p;o=r-w;r=k-L;k=n-p;n=q-w;if(y*(K*k-l*r)+(z*(l*n-o*k)+A*(o*r-K*n))<J){i=f;return}q=t-L;L=v-p;p=x-w;if(y*(r*L-k*q)+(z*(k*p-n*L)+A*(n*q-r*p))<J){i=f;return}if(y*(l*q-K*L)+(z*(o*L-l*p)+A*(K*p-o*q))<J){i=f;return}J=1.0/+Q(+G);G=z*J;g[b>>2]=G;z=A*J;g[B>>2]=z;A=y*J;g[C>>2]=A;C=c[(c[a>>2]|0)+12>>2]|0;if((H&2|0)==0&s>0.0){g[I>>2]=+cO[C&63](a,h,u,d,e);i=f;return}else{g[j>>2]=-0.0-G;g[j+4>>2]=-0.0-z;g[j+8>>2]=-0.0-A;g[j+12>>2]=0.0;g[I>>2]=+cO[C&63](a,j,u,d,e);i=f;return}}function azz(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0;h=i;i=i+672|0;j=h|0;k=h+104|0;l=h+464|0;m=h+472|0;n=h+496|0;c[j+8>>2]=0;o=j|0;g[j+12>>2]=1.0;g[j+16>>2]=1.0;g[j+20>>2]=1.0;g[j+24>>2]=0.0;p=j+52|0;c[p>>2]=0;c[o>>2]=24592;c[j+4>>2]=1;q=j+56|0;r=d;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];r=j+72|0;q=d+16|0;c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];q=j+88|0;r=d+32|0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];g[j+44>>2]=+g[a+204>>2];g[k+308>>2]=9999999747378752.0e-20;b[k+332>>1]=0;c[l>>2]=19960;r=c[a+4>>2]|0;c[m>>2]=20336;c[m+4>>2]=k;c[m+8>>2]=l;c[m+12>>2]=r;c[m+16>>2]=j;c[m+20>>2]=0;c[n>>2]=19544;j=n+164|0;c[n+168>>2]=0;g[j>>2]=1.0;g[n+172>>2]=+g[a+208>>2];r=a+136|0;do{if(ava(m,a+8|0,a+72|0,r,r,n)|0){l=n+132|0;k=l|0;s=+g[k>>2];q=n+136|0;t=+g[q>>2];d=n+140|0;u=+g[d>>2];v=s*s+t*t+u*u;if(v<=9999999747378752.0e-20){break}w=+g[j>>2];if(w>=+g[a+200>>2]){break}x=1.0/+Q(+v);g[k>>2]=s*x;g[q>>2]=t*x;g[d>>2]=u*x;d=c[(c[a>>2]|0)+12>>2]|0;q=n+148|0;+dH[d&63](a,l,q,w,e,f)}}while(0);c[o>>2]=21200;o=c[p>>2]|0;if((o|0)==0){i=h;return}c[9804]=(c[9804]|0)+1;aDB(c[o-80+76>>2]|0);i=h;return}function azA(a){a=a|0;var b=0;c[a>>2]=21200;b=c[a+52>>2]|0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-80+76>>2]|0);return}function azB(a){a=a|0;var b=0;c[a>>2]=21200;b=c[a+52>>2]|0;if((b|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[b-80+76>>2]|0)}c[9804]=(c[9804]|0)+1;aDB(c[a-104+100>>2]|0);return}function azC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function azD(a,b,c){a=a|0;b=+b;c=c|0;aDD(c|0,0,16);return}function azE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0;e=+g[d>>2];f=+g[d+4>>2];h=+g[d+8>>2];i=e*+g[b+56>>2]+f*+g[b+60>>2]+h*+g[b+64>>2];j=e*+g[b+72>>2]+f*+g[b+76>>2]+h*+g[b+80>>2];k=e*+g[b+88>>2]+f*+g[b+92>>2]+h*+g[b+96>>2];if(i<j){l=j<k?2:1}else{l=i<k?2:0}d=a;a=b+56+(l<<4)|0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function azF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0;if((e|0)<=0){return}f=a+56|0;h=a+60|0;i=a+64|0;j=a+72|0;k=a+76|0;l=a+80|0;m=a+88|0;n=a+92|0;o=a+96|0;p=0;do{q=+g[b+(p<<4)>>2];r=+g[b+(p<<4)+4>>2];s=+g[b+(p<<4)+8>>2];t=q*+g[f>>2]+r*+g[h>>2]+s*+g[i>>2];u=q*+g[j>>2]+r*+g[k>>2]+s*+g[l>>2];v=q*+g[m>>2]+r*+g[n>>2]+s*+g[o>>2];if(t<u){w=u<v?2:1}else{w=t<v?2:0}x=d+(p<<4)|0;y=a+56+(w<<4)|0;c[x>>2]=c[y>>2];c[x+4>>2]=c[y+4>>2];c[x+8>>2]=c[y+8>>2];c[x+12>>2]=c[y+12>>2];p=p+1|0;}while((p|0)<(e|0));return}function azG(a){a=a|0;return 3}function azH(a){a=a|0;return 3}function azI(a){a=a|0;return 1}function azJ(a){a=a|0;return}function azK(a){a=a|0;return}function azL(a,b,c){a=a|0;b=+b;c=c|0;return}function azM(a){a=a|0;return 17632|0}function azN(a){a=a|0;return 76}function azO(a){a=a|0;return a+16|0}function azP(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0;d=+g[a+56>>2];e=+g[a+72>>2]-d;f=+g[a+60>>2];h=+g[a+76>>2]-f;i=+g[a+64>>2];j=+g[a+80>>2]-i;k=+g[a+88>>2]-d;d=+g[a+92>>2]-f;f=+g[a+96>>2]-i;i=h*f-j*d;l=j*k-e*f;f=e*d-h*k;a=c|0;m=c+4|0;n=c+8|0;g[c+12>>2]=0.0;k=1.0/+Q(+(f*f+(i*i+l*l)));h=k*i;g[a>>2]=h;i=k*l;g[m>>2]=i;l=f*k;g[n>>2]=l;if((b|0)==0){return}g[a>>2]=h*-1.0;g[m>>2]=i*-1.0;g[n>>2]=l*-1.0;return}function azQ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a;dA[c[(c[f>>2]|0)+100>>2]&511](a,b,d);dA[c[(c[f>>2]|0)+100>>2]&511](a,(b+1|0)%3|0,e);return}function azR(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=d;d=a+56+(b<<4)|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];return}function azS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+116>>2]&1023](a,e,b,d);return}function azT(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,h=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;e=i;i=i+32|0;f=e|0;h=e+16|0;j=+g[a+56>>2];k=+g[a+72>>2]-j;l=+g[a+60>>2];m=+g[a+76>>2]-l;n=+g[a+64>>2];o=+g[a+80>>2]-n;p=+g[a+88>>2]-j;q=+g[a+92>>2]-l;r=+g[a+96>>2]-n;s=m*r-o*q;t=o*p-k*r;r=k*q-m*p;p=1.0/+Q(+(r*r+(s*s+t*t)));m=p*s;s=p*t;t=r*p;u=b|0;v=b+4|0;w=b+8|0;p=+g[u>>2]*m+ +g[v>>2]*s+t*+g[w>>2]-(m*j+s*l+t*n);n=-0.0-d;if(p<n|p>d){x=0;i=e;return x|0}b=a;y=h|0;z=f|0;A=h+4|0;B=f+4|0;C=h+8|0;D=f+8|0;E=0;while(1){if((E|0)>=3){x=1;F=587;break}dI[c[(c[b>>2]|0)+96>>2]&1023](a,E,f,h);d=+g[z>>2];p=+g[y>>2]-d;l=+g[B>>2];j=+g[A>>2]-l;r=+g[D>>2];q=+g[C>>2]-r;k=t*j-s*q;o=m*q-t*p;q=s*p-m*j;j=1.0/+Q(+(q*q+(k*k+o*o)));p=j*k;k=j*o;o=q*j;if(+g[u>>2]*p+ +g[v>>2]*k+o*+g[w>>2]-(r*o+(d*p+l*k))<n){x=0;F=585;break}else{E=E+1|0}}if((F|0)==587){i=e;return x|0}else if((F|0)==585){i=e;return x|0}return 0}function azU(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;f=+g[a+56>>2];h=+g[a+72>>2]-f;i=+g[a+60>>2];j=+g[a+76>>2]-i;k=+g[a+64>>2];l=+g[a+80>>2]-k;m=+g[a+88>>2]-f;f=+g[a+92>>2]-i;i=+g[a+96>>2]-k;k=j*i-l*f;n=l*m-h*i;i=h*f-j*m;g[d+12>>2]=0.0;m=1.0/+Q(+(i*i+(k*k+n*n)));g[d>>2]=m*k;g[d+4>>2]=m*n;g[d+8>>2]=i*m;d=e;e=a+56|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return}function azV(a){a=a|0;if((a|0)==0){return}aDB(a);return}function azW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0;f=i;i=i+56|0;h=f|0;j=f+24|0;k=f+40|0;l=a+16|0;c[h>>2]=21008;c[h+4>>2]=b;b=h+8|0;m=l;c[b>>2]=c[m>>2];c[b+4>>2]=c[m+4>>2];c[b+8>>2]=c[m+8>>2];c[b+12>>2]=c[m+12>>2];n=+g[l>>2];o=1.0/n;p=+g[a+20>>2];q=1.0/p;r=+g[a+24>>2];s=1.0/r;g[j>>2]=o*+g[(n<0.0?e:d)>>2];g[j+4>>2]=q*+g[(p<0.0?e:d)+4>>2];g[j+8>>2]=s*+g[(r<0.0?e:d)+8>>2];g[j+12>>2]=0.0;g[k>>2]=o*+g[(n>0.0?e:d)>>2];g[k+4>>2]=q*+g[(p>0.0?e:d)+4>>2];g[k+8>>2]=s*+g[(r>0.0?e:d)+8>>2];g[k+12>>2]=0.0;d=c[a+32>>2]|0;dI[c[(c[d>>2]|0)+60>>2]&1023](d,h|0,j,k);i=f;return}function azX(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0;f=i;i=i+32|0;h=f|0;j=f+16|0;k=c[a+32>>2]|0;l=+g[k+32>>2];m=+g[k+36>>2];n=+g[k+40>>2];o=+g[a+16>>2];p=+g[k+16>>2]*o;q=+g[a+20>>2];r=+g[k+20>>2]*q;s=+g[a+24>>2];t=+g[k+24>>2]*s;a=h|0;g[a>>2]=p;g[h+4>>2]=r;g[h+8>>2]=t;g[h+12>>2]=0.0;t=l*o;h=j|0;g[h>>2]=t;g[j+4>>2]=m*q;g[j+8>>2]=n*s;g[j+12>>2]=0.0;n=o<0.0?t:p;m=+g[(q<0.0?h:a)+4>>2];l=+g[(s<0.0?h:a)+8>>2];r=o>0.0?t:p;p=+g[(q>0.0?h:a)+4>>2];q=+g[(s>0.0?h:a)+8>>2];s=+dh[c[(c[k>>2]|0)+44>>2]&1023](k|0);t=(r-n)*.5+s;o=(p-m)*.5+s;u=(q-l)*.5+s;s=(n+r)*.5;r=(m+p)*.5;p=(l+q)*.5;q=+g[b>>2];l=+P(+q);m=+g[b+4>>2];n=+P(+m);v=+g[b+8>>2];w=+P(+v);x=+g[b+16>>2];y=+P(+x);z=+g[b+20>>2];A=+P(+z);B=+g[b+24>>2];C=+P(+B);D=+g[b+32>>2];E=+P(+D);F=+g[b+36>>2];G=+P(+F);H=+g[b+40>>2];I=+P(+H);J=+g[b+48>>2]+(s*q+r*m+p*v);v=+g[b+52>>2]+(s*x+r*z+p*B);B=+g[b+56>>2]+(s*D+r*F+p*H);H=t*l+o*n+u*w;w=t*y+o*A+u*C;C=t*E+o*G+u*I;g[d>>2]=J-H;g[d+4>>2]=v-w;g[d+8>>2]=B-C;g[d+12>>2]=0.0;g[e>>2]=H+J;g[e+4>>2]=w+v;g[e+8>>2]=C+B;g[e+12>>2]=0.0;i=f;return}function azY(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function azZ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+32>>2]|0;cS[c[(c[e>>2]|0)+52>>2]&511](e,b,d)|0;c[b+4>>2]=22;g[b+60>>2]=+g[a+16>>2];g[b+64>>2]=+g[a+20>>2];g[b+68>>2]=+g[a+24>>2];g[b+72>>2]=+g[a+28>>2];return 16352}function az_(a){a=a|0;if((a|0)==0){return}aDB(a);return}function az$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;f=i;i=i+48|0;h=f|0;j=+g[a+8>>2];k=+g[a+12>>2];l=+g[b+4>>2]*k;m=+g[a+16>>2];n=+g[b+8>>2]*m;g[h>>2]=+g[b>>2]*j;g[h+4>>2]=l;g[h+8>>2]=n;g[h+12>>2]=0.0;n=+g[b+20>>2]*k;l=+g[b+24>>2]*m;g[h+16>>2]=+g[b+16>>2]*j;g[h+20>>2]=n;g[h+24>>2]=l;g[h+28>>2]=0.0;l=+g[b+36>>2]*k;k=+g[b+40>>2]*m;g[h+32>>2]=+g[b+32>>2]*j;g[h+36>>2]=l;g[h+40>>2]=k;g[h+44>>2]=0.0;b=c[a+4>>2]|0;dI[c[(c[b>>2]|0)+8>>2]&1023](b,h|0,d,e);i=f;return}function az0(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c[b>>2]=23120;f=b+28|0;c[f>>2]=e;g=b+32|0;a[g]=0;c[b+36>>2]=0;if((e|0)==0){c[9806]=(c[9806]|0)+1;e=aDx(95)|0;do{if((e|0)==0){h=0}else{i=-(e+4|0)&15;j=e+(i+4)|0;c[e+i>>2]=e;if((j|0)==0){h=0;break}i=j;ayI(i);h=i}}while(0);c[f>>2]=h;a[g]=1}c[9806]=(c[9806]|0)+1;g=aDx((d*52|0)+19|0)|0;if((g|0)==0){k=0}else{h=-(g+4|0)&15;c[g+h>>2]=g;k=g+(h+4)|0}c[b+20>>2]=k;h=k;if((d|0)!=0){k=h+(d*52|0)|0;g=h;do{c[g>>2]=0;c[g+8>>2]=0;g=g+52|0;}while((g|0)!=(k|0))}k=b+16|0;c[k>>2]=h;c[b+8>>2]=d;c[b+4>>2]=0;c[b+24>>2]=0;c[b+12>>2]=-1;if((d|0)>0){l=0;m=h}else{n=h;o=d-1|0;p=n+(o*52|0)+48|0;c[p>>2]=0;return}while(1){h=l+1|0;c[m+(l*52|0)+48>>2]=h;c[(c[k>>2]|0)+(l*52|0)+12>>2]=l+2;b=c[k>>2]|0;if((h|0)<(d|0)){l=h;m=b}else{n=b;break}}o=d-1|0;p=n+(o*52|0)+48|0;c[p>>2]=0;return}function az1(b){b=b|0;var d=0,e=0;c[b>>2]=23120;d=c[b+20>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}do{if((a[b+32|0]&1)!=0){d=b+28|0;e=c[d>>2]|0;ct[c[c[e>>2]>>2]&2047](e);e=c[d>>2]|0;if((e|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[e-4>>2]|0)}}while(0);if((b|0)==0){return}aDB(b);return}function az2(b){b=b|0;var d=0;c[b>>2]=23120;d=c[b+20>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}if((a[b+32|0]&1)==0){return}d=b+28|0;b=c[d>>2]|0;ct[c[c[b>>2]>>2]&2047](b);b=c[d>>2]|0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-4>>2]|0);return}function az3(a,b){a=a|0;b=b|0;return}function az4(a){a=a|0;return}function az5(a){a=a|0;return c[a+28>>2]|0}function az6(a){a=a|0;return c[a+28>>2]|0}function az7(a,b,c){a=a|0;b=b|0;c=c|0;g[b>>2]=-999999984306749400.0;g[b+4>>2]=-999999984306749400.0;g[b+8>>2]=-999999984306749400.0;g[b+12>>2]=0.0;g[c>>2]=999999984306749400.0;g[c+4>>2]=999999984306749400.0;g[c+8>>2]=999999984306749400.0;g[c+12>>2]=0.0;return}function az8(a,d,e,f,g,h,i,j,k){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0;j=a+4|0;f=c[j>>2]|0;if((f|0)>=(c[a+8>>2]|0)){l=0;return l|0}m=a+24|0;n=c[m>>2]|0;o=c[a+16>>2]|0;c[m>>2]=c[o+(n*52|0)+48>>2];c[j>>2]=f+1;f=a+12|0;if((n|0)>(c[f>>2]|0)){c[f>>2]=n}f=o+(n*52|0)|0;c[f>>2]=g;b[o+(n*52|0)+4>>1]=h;b[o+(n*52|0)+6>>1]=i;i=o+(n*52|0)+16|0;h=d;c[i>>2]=c[h>>2];c[i+4>>2]=c[h+4>>2];c[i+8>>2]=c[h+8>>2];c[i+12>>2]=c[h+12>>2];h=o+(n*52|0)+32|0;i=e;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];c[o+(n*52|0)+8>>2]=k;l=f|0;return l|0}function az9(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=(b-(c[a+16>>2]|0)|0)/52|0;f=a+12|0;if((e|0)==(c[f>>2]|0)){c[f>>2]=e-1}f=a+24|0;c[b+48>>2]=c[f>>2];c[f>>2]=e;c[b>>2]=0;e=a+4|0;c[e>>2]=(c[e>>2]|0)-1;e=c[a+28>>2]|0;dA[c[(c[e>>2]|0)+16>>2]&511](e|0,b,d);return}function aAa(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=d;d=b+16|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];d=e;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return}function aAb(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;f=b+16|0;a=d;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];a=b+32|0;b=e;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function aAc(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;g=a+12|0;f=c[g>>2]|0;if((f|0)<0){return}d=a+16|0;a=e|0;b=e;e=0;h=f;while(1){f=(c[d>>2]|0)+(e*52|0)|0;if((c[f>>2]|0)==0){i=h}else{j=c[(c[b>>2]|0)+8>>2]|0;dj[j&511](a,f)|0;i=c[g>>2]|0}f=e+1|0;if((f|0)>(i|0)){break}else{e=f;h=i}}return}function aAd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=a+12|0;h=c[f>>2]|0;if((h|0)<0){return}i=a+16|0;a=b|0;j=b+8|0;k=b+4|0;b=d+4|0;l=e;m=d+8|0;n=d|0;d=0;o=h;while(1){h=c[i>>2]|0;p=h+(d*52|0)|0;do{if((c[p>>2]|0)==0){q=o}else{do{if(+g[a>>2]>+g[h+(d*52|0)+32>>2]){r=0}else{if(+g[n>>2]<+g[h+(d*52|0)+16>>2]){r=0;break}r=1}}while(0);do{if(+g[j>>2]>+g[h+(d*52|0)+40>>2]){s=0}else{if(+g[m>>2]<+g[h+(d*52|0)+24>>2]){s=0;break}s=r}}while(0);if(+g[k>>2]>+g[h+(d*52|0)+36>>2]){q=o;break}if(+g[b>>2]<+g[h+(d*52|0)+20>>2]|s^1){q=o;break}t=c[(c[l>>2]|0)+8>>2]|0;dj[t&511](e,p)|0;q=c[f>>2]|0}}while(0);p=d+1|0;if((p|0)>(q|0)){break}else{d=p;o=q}}return}function aAe(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;e=i;i=i+40|0;f=e|0;h=e+8|0;j=e+24|0;if((c[b+4>>2]|0)<=-1){i=e;return}k=b+12|0;l=c[k>>2]|0;if((l|0)<0){m=-1}else{n=b+16|0;o=b+28|0;p=-1;q=0;r=l;while(1){l=c[n>>2]|0;s=l+(q*52|0)|0;t=q+1|0;L921:do{if((c[s>>2]|0)==0){u=p;v=r}else{if((t|0)>(r|0)){u=q;v=r;break}w=l+(q*52|0)+16|0;x=l+(q*52|0)+32|0;y=l+(q*52|0)+20|0;z=l+(q*52|0)+36|0;A=l+(q*52|0)+24|0;B=l+(q*52|0)+40|0;C=t;D=l;while(1){E=D+(C*52|0)|0;L926:do{if((c[E>>2]|0)!=0){do{if(+g[w>>2]>+g[D+(C*52|0)+32>>2]){F=695}else{if(+g[D+(C*52|0)+16>>2]>+g[x>>2]){F=695;break}if(+g[y>>2]>+g[D+(C*52|0)+36>>2]){F=695;break}if(+g[D+(C*52|0)+20>>2]>+g[z>>2]){F=695;break}if(+g[A>>2]>+g[D+(C*52|0)+40>>2]){F=695;break}G=c[o>>2]|0;if(+g[D+(C*52|0)+24>>2]>+g[B>>2]){H=G;break}if((cS[c[(c[G>>2]|0)+52>>2]&511](G,s,E)|0)!=0){break L926}G=c[o>>2]|0;I=G|0;J=c[(c[G>>2]|0)+8>>2]|0;cS[J&511](I,s,E)|0;break L926}}while(0);if((F|0)==695){F=0;H=c[o>>2]|0}if(cA[c[(c[H>>2]|0)+56>>2]&4095](H)|0){break}I=c[o>>2]|0;if((cS[c[(c[I>>2]|0)+52>>2]&511](I,s,E)|0)==0){break}I=c[o>>2]|0;J=I|0;G=c[(c[I>>2]|0)+12>>2]|0;dE[G&127](J,s,E,d)|0}}while(0);E=C+1|0;J=c[k>>2]|0;if((E|0)>(J|0)){u=q;v=J;break L921}C=E;D=c[n>>2]|0}}}while(0);if((t|0)>(v|0)){m=u;break}else{p=u;q=t;r=v}}}c[k>>2]=m;if((a[b+32|0]&1)==0){i=e;return}m=b+28|0;k=c[m>>2]|0;if(!(cA[c[(c[k>>2]|0)+56>>2]&4095](k)|0)){i=e;return}k=c[m>>2]|0;v=cA[c[(c[k>>2]|0)+28>>2]&4095](k)|0;k=v+4|0;r=c[k>>2]|0;if((r|0)>1){arQ(v,0,r-1|0);K=c[k>>2]|0}else{K=r}r=b+36|0;b=K-(c[r>>2]|0)|0;aDD(h|0,0,16);arP(v,b,h);c[r>>2]=0;h=c[k>>2]|0;do{if((h|0)>0){b=v+12|0;K=0;q=0;u=0;p=h;n=0;while(1){o=c[b>>2]|0;H=o+(u<<4)|0;s=H|0;l=c[s>>2]|0;D=o+(u<<4)+4|0;o=c[D>>2]|0;if((l|0)==(q|0)){if((o|0)==(K|0)){L=q;M=K;F=720}else{N=q;F=714}}else{N=l;F=714}do{if((F|0)==714){F=0;if(+g[N+16>>2]>+g[o+32>>2]){L=N;M=o;F=720;break}if(+g[o+16>>2]>+g[N+32>>2]){L=N;M=o;F=720;break}if(+g[N+20>>2]>+g[o+36>>2]){L=N;M=o;F=720;break}if(+g[o+20>>2]>+g[N+36>>2]){L=N;M=o;F=720;break}if(+g[N+24>>2]>+g[o+40>>2]){L=N;M=o;F=720;break}if(+g[o+24>>2]>+g[N+40>>2]){L=N;M=o;F=720}else{O=N;P=o;Q=p;R=n}}}while(0);if((F|0)==720){F=0;o=c[m>>2]|0;dA[c[(c[o>>2]|0)+32>>2]&511](o,H,d);c[s>>2]=0;c[D>>2]=0;o=(c[r>>2]|0)+1|0;c[r>>2]=o;c[9792]=(c[9792]|0)-1;O=L;P=M;Q=c[k>>2]|0;R=o}o=u+1|0;if((o|0)<(Q|0)){K=P;q=O;u=o;p=Q;n=R}else{break}}n=f|0;if((Q|0)<=1){S=Q;T=n;U=R;break}arQ(v,0,Q-1|0);S=c[k>>2]|0;T=n;U=c[r>>2]|0}else{S=h;T=f|0;U=0}}while(0);aDD(j|0,0,16);arP(v,S-U|0,j);c[r>>2]=0;i=e;return}function aAf(a){a=a|0;aAg(a);if((a|0)==0){return}aDB(a);return}function aAg(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;c[b>>2]=20520;d=b+48|0;e=b+56|0;f=c[e>>2]|0;g=b+60|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+52>>2]=0;d=b+28|0;e=b+36|0;g=c[e>>2]|0;f=b+40|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+32>>2]=0;d=b+8|0;e=b+16|0;f=c[e>>2]|0;g=b+20|0;if((f|0)==0){h=b+12|0;a[g]=1;c[e>>2]=0;c[d>>2]=0;c[h>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-8+4>>2]|0)}c[e>>2]=0;h=b+12|0;a[g]=1;c[e>>2]=0;c[d>>2]=0;c[h>>2]=0;return}function aAh(a){a=a|0;return}function aAi(a){a=a|0;return 17608|0}function aAj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+1.0}function aAk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=b+8|0;if((c[d>>2]|0)<=0){return}e=b+16|0;b=a+16|0;a=0;f=0;while(1){g=c[(c[e>>2]|0)+(a<<2)>>2]|0;if((c[g+204>>2]&3|0)==0){h=c[b>>2]|0;i=h+(f<<3)|0;j=c[i>>2]|0;if((j|0)==(f|0)){k=f}else{l=h;h=i;i=j;while(1){j=l+(i<<3)|0;c[h>>2]=c[j>>2];m=c[j>>2]|0;j=c[b>>2]|0;n=j+(m<<3)|0;o=c[n>>2]|0;if((m|0)==(o|0)){k=m;break}else{l=j;h=n;i=o}}}c[g+208>>2]=k;c[(c[b>>2]|0)+(f<<3)+4>>2]=a;c[g+212>>2]=-1;p=f+1|0}else{c[g+208>>2]=-1;c[g+212>>2]=-2;p=f}i=a+1|0;if((i|0)<(c[d>>2]|0)){a=i;f=p}else{break}}return}function aAl(a,b){a=a|0;b=+b;g[a+44>>2]=b;return}function aAm(a){a=a|0;return+(+g[a+28>>2]*+g[a+12>>2])}function aAn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;e=d+8|0;if((c[e>>2]|0)>0){f=d+16|0;h=0;i=0;while(1){j=c[(c[f>>2]|0)+(h<<2)>>2]|0;if((c[j+204>>2]&3|0)==0){c[j+208>>2]=i;k=i+1|0}else{k=i}c[j+212>>2]=-1;g[j+240>>2]=1.0;j=h+1|0;if((j|0)<(c[e>>2]|0)){h=j;i=k}else{l=k;break}}}else{l=0}k=b+8|0;i=c[k>>2]|0;if((i|0)<(l|0)){h=b+12|0;if((c[h>>2]|0)<(l|0)){if((l|0)==0){m=0;n=i}else{c[9806]=(c[9806]|0)+1;e=aDx((l<<3|4)+15|0)|0;if((e|0)==0){o=0}else{f=-(e+4|0)&15;c[e+f>>2]=e;o=e+(f+4)|0}m=o;n=c[k>>2]|0}o=b+16|0;if((n|0)>0){f=0;do{e=m+(f<<3)|0;if((e|0)!=0){j=(c[o>>2]|0)+(f<<3)|0;p=e;e=c[j+4>>2]|0;c[p>>2]=c[j>>2];c[p+4>>2]=e}f=f+1|0;}while((f|0)<(n|0))}n=c[o>>2]|0;f=b+20|0;if((n|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-8+4>>2]|0)}c[o>>2]=0}a[f]=1;c[o>>2]=m;c[h>>2]=l;q=o}else{q=b+16|0}o=i;do{i=(c[q>>2]|0)+(o<<3)|0;if((i|0)!=0){h=i;c[h>>2]=0;c[h+4>>2]=0}o=o+1|0;}while((o|0)<(l|0))}c[k>>2]=l;if((l|0)>0){k=b+16|0;o=0;do{c[(c[k>>2]|0)+(o<<3)>>2]=o;c[(c[k>>2]|0)+(o<<3)+4>>2]=1;o=o+1|0;}while((o|0)<(l|0))}l=c[d+76>>2]|0;d=cA[c[(c[l>>2]|0)+36>>2]&4095](l)|0;l=cA[c[(c[d>>2]|0)+36>>2]&4095](d)|0;o=cA[c[(c[d>>2]|0)+20>>2]&4095](d)|0;if((l|0)<=0){return}d=b+16|0;b=0;do{k=c[c[o+(b<<4)>>2]>>2]|0;q=c[c[o+(b<<4)+4>>2]>>2]|0;do{if((k|0)!=0){if((c[k+204>>2]&7|0)!=0|(q|0)==0){break}if((c[q+204>>2]&7|0)!=0){break}h=c[k+208>>2]|0;i=c[q+208>>2]|0;m=c[d>>2]|0;f=m+(h<<3)|0;n=c[f>>2]|0;if((n|0)==(h|0)){r=h;s=m}else{h=m;m=f;f=n;while(1){n=h+(f<<3)|0;c[m>>2]=c[n>>2];e=c[n>>2]|0;n=c[d>>2]|0;p=n+(e<<3)|0;j=c[p>>2]|0;if((e|0)==(j|0)){r=e;s=n;break}else{h=n;m=p;f=j}}}f=s+(i<<3)|0;m=c[f>>2]|0;if((m|0)==(i|0)){t=i;u=s}else{h=s;j=f;f=m;while(1){m=h+(f<<3)|0;c[j>>2]=c[m>>2];p=c[m>>2]|0;m=c[d>>2]|0;n=m+(p<<3)|0;e=c[n>>2]|0;if((p|0)==(e|0)){t=p;u=m;break}else{h=m;j=n;f=e}}}if((r|0)==(t|0)){break}c[u+(r<<3)>>2]=t;f=c[d>>2]|0;j=f+(t<<3)+4|0;c[j>>2]=(c[j>>2]|0)+(c[f+(r<<3)+4>>2]|0)}}while(0);b=b+1|0;}while((b|0)<(l|0));return}function aAo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;e=a+12|0;f=c[e>>2]|0;g=c[f+(((d+b|0)/2|0)<<2)>>2]|0;h=g+1108|0;i=g+1112|0;g=b;j=d;k=f;while(1){f=c[(c[h>>2]|0)+208>>2]|0;l=(f|0)>-1;if(l){m=g;while(1){n=c[k+(m<<2)>>2]|0;o=c[(c[n+1108>>2]|0)+208>>2]|0;if((o|0)>-1){p=o}else{p=c[(c[n+1112>>2]|0)+208>>2]|0}if((p|0)<(f|0)){m=m+1|0}else{q=m;r=n;break}}}else{m=c[(c[i>>2]|0)+208>>2]|0;n=g;while(1){o=c[k+(n<<2)>>2]|0;s=c[(c[o+1108>>2]|0)+208>>2]|0;if((s|0)>-1){t=s}else{t=c[(c[o+1112>>2]|0)+208>>2]|0}if((t|0)<(m|0)){n=n+1|0}else{q=n;r=o;break}}}if(l){n=j;while(1){m=c[k+(n<<2)>>2]|0;o=c[(c[m+1108>>2]|0)+208>>2]|0;if((o|0)>-1){u=o}else{u=c[(c[m+1112>>2]|0)+208>>2]|0}if((f|0)<(u|0)){n=n-1|0}else{v=n;w=m;break}}}else{n=c[(c[i>>2]|0)+208>>2]|0;f=j;while(1){l=c[k+(f<<2)>>2]|0;m=c[(c[l+1108>>2]|0)+208>>2]|0;if((m|0)>-1){x=m}else{x=c[(c[l+1112>>2]|0)+208>>2]|0}if((n|0)<(x|0)){f=f-1|0}else{v=f;w=l;break}}}if((q|0)>(v|0)){y=q;z=v}else{c[k+(q<<2)>>2]=w;c[(c[e>>2]|0)+(v<<2)>>2]=r;y=q+1|0;z=v-1|0}if((y|0)>(z|0)){break}g=y;j=z;k=c[e>>2]|0}if((z|0)>(b|0)){aAo(a,b,z)}if((y|0)>=(d|0)){return}aAo(a,y,d);return}function aAp(a,b,c){a=a|0;b=b|0;c=c|0;aDD(a|0,0,16);return}function aAq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if((d|0)>0){e=0}else{return}while(1){b=e+1|0;aDD(c+(e<<4)|0,0,16);if((b|0)<(d|0)){e=b}else{break}}return}function aAr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0;dA[c[(c[b>>2]|0)+64>>2]&511](a,b,d);e=+g[d>>2];f=+g[d+4>>2];h=+g[d+8>>2];d=e*e+f*f+h*h<1.4210854715202004e-14;i=d?-1.0:h;h=d?-1.0:f;f=d?-1.0:e;e=1.0/+Q(+(i*i+(f*f+h*h)));j=+dh[c[(c[b>>2]|0)+44>>2]&1023](b);b=a|0;g[b>>2]=e*f*j+ +g[b>>2];b=a+4|0;g[b>>2]=j*e*h+ +g[b>>2];b=a+8|0;g[b>>2]=j*e*i+ +g[b>>2];return}function aAs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0.0;f=a;h=+dh[c[(c[f>>2]|0)+44>>2]&1023](a);i=+dh[c[(c[f>>2]|0)+44>>2]&1023](a);j=+dh[c[(c[f>>2]|0)+44>>2]&1023](a);a=b+48|0;f=b+52|0;k=+g[f>>2]-i;l=b+56|0;m=+g[l>>2]-j;g[d>>2]=+g[a>>2]-h;g[d+4>>2]=k;g[d+8>>2]=m;g[d+12>>2]=0.0;m=i+ +g[f>>2];i=j+ +g[l>>2];g[e>>2]=h+ +g[a>>2];g[e+4>>2]=m;g[e+8>>2]=i;g[e+12>>2]=0.0;return}function aAt(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0.0;e=a;f=b*.4000000059604645*+dh[c[(c[e>>2]|0)+44>>2]&1023](a);b=f*+dh[c[(c[e>>2]|0)+44>>2]&1023](a);g[d>>2]=b;g[d+4>>2]=b;g[d+8>>2]=b;g[d+12>>2]=0.0;return}function aAu(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-52+48>>2]|0);return}function aAv(b){b=b|0;var d=0,e=0,f=0;c[b>>2]=19832;if((a[b+8|0]&1)==0){d=b;aDB(d);return}e=c[b+12>>2]|0;if((e|0)==0){d=b;aDB(d);return}f=c[b+4>>2]|0;cv[c[(c[f>>2]|0)+16>>2]&2047](f,e);d=b;aDB(d);return}function aAw(b){b=b|0;var d=0,e=0;c[b>>2]=19832;if((a[b+8|0]&1)==0){return}d=c[b+12>>2]|0;if((d|0)==0){return}e=c[b+4>>2]|0;cv[c[(c[e>>2]|0)+16>>2]&2047](e,d);return}function aAx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0;e=i;i=i+32|0;h=e|0;j=e+16|0;k=c[a+12>>2]|0;if((k|0)==0){i=e;return}a=f+4|0;c[a>>2]=k;l=c[b+192>>2]|0;m=c[d+192>>2]|0;n=+g[d+52>>2];o=+g[b+52>>2]-n;p=+g[d+56>>2];q=+g[b+56>>2]-p;r=+g[d+60>>2];s=+g[b+60>>2]-r;t=+Q(+(o*o+q*q+s*s));u=+g[m+28>>2]*+g[m+12>>2];v=+g[l+28>>2]*+g[l+12>>2]+u;if(t>v){if((c[k+1116>>2]|0)==0){i=e;return}if((c[k+1108>>2]|0)==(c[f+136>>2]|0)){ay6(k,f+8|0,f+72|0);i=e;return}else{ay6(k,f+72|0,f+8|0);i=e;return}}k=h|0;g[k>>2]=1.0;l=h+4|0;g[l>>2]=0.0;m=h+8|0;g[m>>2]=0.0;b=h+12|0;g[b>>2]=0.0;if(t>1.1920928955078125e-7){w=1.0/t;x=o*w;o=q*w;q=s*w;g[k>>2]=x;g[l>>2]=o;g[m>>2]=q;g[b>>2]=0.0;y=x;z=o;A=q}else{y=1.0;z=0.0;A=0.0}g[j>>2]=u*y+n;g[j+4>>2]=u*z+p;g[j+8>>2]=u*A+r;g[j+12>>2]=0.0;dw[c[(c[f>>2]|0)+16>>2]&127](f,h,j,t-v);j=c[a>>2]|0;if((c[j+1116>>2]|0)==0){i=e;return}if((c[j+1108>>2]|0)==(c[f+136>>2]|0)){ay6(j,f+8|0,f+72|0);i=e;return}else{ay6(j,f+72|0,f+8|0);i=e;return}}function aAy(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+1.0}function aAz(a){a=a|0;return}function aAA(a){a=a|0;return 17592|0}function aAB(a){a=a|0;return 52}function aAC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;g[c>>2]=-999999984306749400.0;g[c+4>>2]=-999999984306749400.0;g[c+8>>2]=-999999984306749400.0;g[c+12>>2]=0.0;g[d>>2]=999999984306749400.0;g[d+4>>2]=999999984306749400.0;g[d+8>>2]=999999984306749400.0;g[d+12>>2]=0.0;return}function aAD(a){a=a|0;return a+68|0}function aAE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=b+12|0;if((c[e>>2]|0)==0){return}if((a[b+8|0]&1)==0){return}b=d+4|0;f=c[b>>2]|0;g=d+8|0;do{if((f|0)==(c[g>>2]|0)){h=(f|0)==0?1:f<<1;if((f|0)>=(h|0)){i=f;break}if((h|0)==0){j=0;k=f}else{c[9806]=(c[9806]|0)+1;l=aDx((h<<2)+19|0)|0;if((l|0)==0){m=0}else{n=-(l+4|0)&15;c[l+n>>2]=l;m=l+(n+4)|0}j=m;k=c[b>>2]|0}n=d+12|0;if((k|0)>0){l=0;do{o=j+(l<<2)|0;if((o|0)!=0){c[o>>2]=c[(c[n>>2]|0)+(l<<2)>>2]}l=l+1|0;}while((l|0)<(k|0))}l=c[n>>2]|0;o=d+16|0;if((l|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-4>>2]|0)}c[n>>2]=0}a[o]=1;c[n>>2]=j;c[g>>2]=h;i=c[b>>2]|0}else{i=f}}while(0);f=(c[d+12>>2]|0)+(i<<2)|0;if((f|0)==0){p=i}else{c[f>>2]=c[e>>2];p=c[b>>2]|0}c[b>>2]=p+1;return}function aAF(b){b=b|0;var d=0,e=0,f=0;c[b>>2]=19688;if((a[b+8|0]&1)==0){d=b;aDB(d);return}e=c[b+12>>2]|0;if((e|0)==0){d=b;aDB(d);return}f=c[b+4>>2]|0;cv[c[(c[f>>2]|0)+16>>2]&2047](f,e);d=b;aDB(d);return}function aAG(b){b=b|0;var d=0,e=0;c[b>>2]=19688;if((a[b+8|0]&1)==0){return}d=c[b+12>>2]|0;if((d|0)==0){return}e=c[b+4>>2]|0;cv[c[(c[e>>2]|0)+16>>2]&2047](e,d);return}function aAH(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;j=i;i=i+152|0;k=j|0;l=j+16|0;m=b+12|0;n=c[m>>2]|0;if((n|0)==0){i=j;return}o=b+16|0;p=(a[o]&1)!=0;q=p?e:d;r=p?d:e;e=c[q+192>>2]|0;d=c[r+192>>2]|0;p=h+4|0;c[p>>2]=n;s=+g[(c[m>>2]|0)+1120>>2];c[k>>2]=21944;c[k+4>>2]=e;c[k+8>>2]=d;g[k+12>>2]=s;c[l+132>>2]=0;g[l+128>>2]=999999984306749400.0;d=l;e=q+4|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=l+16|0;d=q+20|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=l+32|0;e=q+36|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=l+48|0;d=q+52|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=l+64|0;e=r+4|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=l+80|0;d=r+20|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=l+96|0;e=r+36|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=l+112|0;d=r+52|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];aB0(k,l,h|0,c[f+20>>2]|0,(a[o]&1)!=0);if((a[b+8|0]&1)==0){i=j;return}b=c[p>>2]|0;if((c[b+1116>>2]|0)==0){i=j;return}if((c[b+1108>>2]|0)==(c[h+136>>2]|0)){ay6(b,h+8|0,h+72|0);i=j;return}else{ay6(b,h+72|0,h+8|0);i=j;return}}function aAI(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=b+12|0;if((c[e>>2]|0)==0){return}if((a[b+8|0]&1)==0){return}b=d+4|0;f=c[b>>2]|0;g=d+8|0;do{if((f|0)==(c[g>>2]|0)){h=(f|0)==0?1:f<<1;if((f|0)>=(h|0)){i=f;break}if((h|0)==0){j=0;k=f}else{c[9806]=(c[9806]|0)+1;l=aDx((h<<2)+19|0)|0;if((l|0)==0){m=0}else{n=-(l+4|0)&15;c[l+n>>2]=l;m=l+(n+4)|0}j=m;k=c[b>>2]|0}n=d+12|0;if((k|0)>0){l=0;do{o=j+(l<<2)|0;if((o|0)!=0){c[o>>2]=c[(c[n>>2]|0)+(l<<2)>>2]}l=l+1|0;}while((l|0)<(k|0))}l=c[n>>2]|0;o=d+16|0;if((l|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-4>>2]|0)}c[n>>2]=0}a[o]=1;c[n>>2]=j;c[g>>2]=h;i=c[b>>2]|0}else{i=f}}while(0);f=(c[d+12>>2]|0)+(i<<2)|0;if((f|0)==0){p=i}else{c[f>>2]=c[e>>2];p=c[b>>2]|0}c[b>>2]=p+1;return}function aAJ(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aAK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;f=i;i=i+48|0;h=f|0;j=+g[e>>2];k=+g[d>>2];l=+g[e+4>>2];m=+g[d+4>>2];n=+g[e+8>>2];o=+g[d+8>>2];p=(j-k)*.5;q=(l-m)*.5;r=(n-o)*.5;s=+Q(+(p*p+q*q+r*r));r=(j+k)*.5;k=(l+m)*.5;m=(n+o)*.5;d=a+48|0;o=+g[a+56>>2];if(+P(+o)>.7071067690849304){n=+g[a+52>>2];l=o*o+n*n;j=1.0/+Q(+l);q=j*(-0.0-o);p=n*j;t=+g[d>>2];u=l*j;v=p*(-0.0-t);w=t*q;x=0.0;y=q;z=p;A=t;B=n}else{n=+g[d>>2];t=+g[a+52>>2];p=n*n+t*t;q=1.0/+Q(+p);j=q*(-0.0-t);l=n*q;u=l*(-0.0-o);v=o*j;w=p*q;x=j;y=l;z=0.0;A=n;B=t}t=r*A+k*B+m*o- +g[a+64>>2];n=k-B*t;a=h|0;B=r-A*t;A=m-o*t;t=s*x;x=s*y;y=s*z;z=t+B;o=x+n;m=y+A;r=s*u;u=s*v;v=s*w;w=r+z;s=u+o;k=v+m;d=h|0;g[d>>2]=w;e=h+4|0;g[e>>2]=s;C=h+8|0;g[C>>2]=k;D=h+12|0;g[D>>2]=0.0;E=h+16|0;g[E>>2]=z-r;F=h+20|0;g[F>>2]=o-u;G=h+24|0;g[G>>2]=m-v;H=h+28|0;g[H>>2]=0.0;m=B-t;t=n-x;x=A-y;y=m-r;A=t-u;n=x-v;I=h+32|0;g[I>>2]=y;J=h+36|0;g[J>>2]=A;K=h+40|0;g[K>>2]=n;L=h+44|0;g[L>>2]=0.0;h=b;dI[c[(c[h>>2]|0)+8>>2]&1023](b,a,0,0);g[d>>2]=y;g[e>>2]=A;g[C>>2]=n;g[D>>2]=0.0;g[E>>2]=r+m;g[F>>2]=u+t;g[G>>2]=v+x;g[H>>2]=0.0;g[I>>2]=w;g[J>>2]=s;g[K>>2]=k;g[L>>2]=0.0;dI[c[(c[h>>2]|0)+8>>2]&1023](b,a,0,1);i=f;return}function aAL(a,b,c){a=a|0;b=+b;c=c|0;aDD(c|0,0,16);return}function aAM(a,b){a=a|0;b=b|0;var d=0;d=a+68|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function aAN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0;e=d;f=dj[c[(c[e>>2]|0)+40>>2]&511](d,a)|0;h=dj[c[(c[e>>2]|0)+28>>2]&511](d,f)|0;c[b>>2]=h;if((h|0)!=0){cv[c[(c[d>>2]|0)+48>>2]&2047](d,f)}c[b+4>>2]=c[a+4>>2];g[b+12>>2]=+g[a+68>>2];g[b+16>>2]=+g[a+72>>2];g[b+20>>2]=+g[a+76>>2];g[b+24>>2]=+g[a+80>>2];g[b+28>>2]=+g[a+48>>2];g[b+32>>2]=+g[a+52>>2];g[b+36>>2]=+g[a+56>>2];g[b+40>>2]=+g[a+60>>2];g[b+44>>2]=+g[a+64>>2];return 16264}function aAO(a,b,f,j){a=a|0;b=b|0;f=f|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0.0,W=0,X=0,Y=0,Z=0,_=0;j=i;i=i+112|0;f=j|0;k=j+8|0;l=j+16|0;m=j+24|0;n=j+32|0;o=j+40|0;p=j+48|0;q=j+56|0;r=j+64|0;s=cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0;t=r|0;u=+g[a+4>>2];v=+g[a+8>>2];w=+g[a+12>>2];if((s|0)<=0){i=j;return}x=a;y=a;z=r|0;A=r+4|0;B=r+8|0;C=r+12|0;D=r+16|0;E=r+20|0;F=r+24|0;G=r+28|0;H=r+32|0;I=r+36|0;J=r+40|0;K=r+44|0;r=b;L=0;do{di[c[(c[x>>2]|0)+16>>2]&63](a,f,p,m,o,k,l,q,n,L);M=c[m>>2]|0;do{if((M|0)==0){N=c[n>>2]|0;if((N|0)==2){if((c[q>>2]|0)>0){O=0}else{break}do{P=c[k>>2]|0;Q=aa(c[l>>2]|0,O)|0;R=c[f>>2]|0;S=c[o>>2]|0;T=aa(S,c[P+Q>>2]|0)|0;U=v*+g[R+(T+4)>>2];V=w*+g[R+(T+8)>>2];g[z>>2]=u*+g[R+T>>2];g[A>>2]=U;g[B>>2]=V;g[C>>2]=0.0;T=aa(S,c[P+(Q+4)>>2]|0)|0;V=v*+g[R+(T+4)>>2];U=w*+g[R+(T+8)>>2];g[D>>2]=u*+g[R+T>>2];g[E>>2]=V;g[F>>2]=U;g[G>>2]=0.0;T=aa(S,c[P+(Q+8)>>2]|0)|0;U=v*+g[R+(T+4)>>2];V=w*+g[R+(T+8)>>2];g[H>>2]=u*+g[R+T>>2];g[I>>2]=U;g[J>>2]=V;g[K>>2]=0.0;dI[c[(c[r>>2]|0)+8>>2]&1023](b,t,L,O);O=O+1|0;}while((O|0)<(c[q>>2]|0))}else if((N|0)==5){if((c[q>>2]|0)>0){W=0}else{break}do{T=c[k>>2]|0;R=aa(c[l>>2]|0,W)|0;Q=c[f>>2]|0;P=c[o>>2]|0;S=aa(d[T+R|0]|0,P)|0;V=v*+g[Q+(S+4)>>2];U=w*+g[Q+(S+8)>>2];g[z>>2]=u*+g[Q+S>>2];g[A>>2]=V;g[B>>2]=U;g[C>>2]=0.0;S=aa(d[T+(R+1)|0]|0,P)|0;U=v*+g[Q+(S+4)>>2];V=w*+g[Q+(S+8)>>2];g[D>>2]=u*+g[Q+S>>2];g[E>>2]=U;g[F>>2]=V;g[G>>2]=0.0;S=aa(d[T+(R+2)|0]|0,P)|0;V=v*+g[Q+(S+4)>>2];U=w*+g[Q+(S+8)>>2];g[H>>2]=u*+g[Q+S>>2];g[I>>2]=V;g[J>>2]=U;g[K>>2]=0.0;dI[c[(c[r>>2]|0)+8>>2]&1023](b,t,L,W);W=W+1|0;}while((W|0)<(c[q>>2]|0))}else if((N|0)==3){if((c[q>>2]|0)>0){X=0}else{break}do{S=c[k>>2]|0;Q=aa(c[l>>2]|0,X)|0;P=c[f>>2]|0;R=c[o>>2]|0;T=aa(e[S+Q>>1]|0,R)|0;U=v*+g[P+(T+4)>>2];V=w*+g[P+(T+8)>>2];g[z>>2]=u*+g[P+T>>2];g[A>>2]=U;g[B>>2]=V;g[C>>2]=0.0;T=aa(e[S+(Q+2)>>1]|0,R)|0;V=v*+g[P+(T+4)>>2];U=w*+g[P+(T+8)>>2];g[D>>2]=u*+g[P+T>>2];g[E>>2]=V;g[F>>2]=U;g[G>>2]=0.0;T=aa(e[S+(Q+4)>>1]|0,R)|0;U=v*+g[P+(T+4)>>2];V=w*+g[P+(T+8)>>2];g[H>>2]=u*+g[P+T>>2];g[I>>2]=U;g[J>>2]=V;g[K>>2]=0.0;dI[c[(c[r>>2]|0)+8>>2]&1023](b,t,L,X);X=X+1|0;}while((X|0)<(c[q>>2]|0))}else{break}}else if((M|0)==1){N=c[n>>2]|0;if((N|0)==5){if((c[q>>2]|0)>0){Y=0}else{break}do{T=c[k>>2]|0;P=aa(c[l>>2]|0,Y)|0;R=c[f>>2]|0;Q=c[o>>2]|0;S=aa(d[T+P|0]|0,Q)|0;V=v*+h[R+(S+8)>>3];U=w*+h[R+(S+16)>>3];g[z>>2]=u*+h[R+S>>3];g[A>>2]=V;g[B>>2]=U;g[C>>2]=0.0;S=aa(d[T+(P+1)|0]|0,Q)|0;U=v*+h[R+(S+8)>>3];V=w*+h[R+(S+16)>>3];g[D>>2]=u*+h[R+S>>3];g[E>>2]=U;g[F>>2]=V;g[G>>2]=0.0;S=aa(d[T+(P+2)|0]|0,Q)|0;V=v*+h[R+(S+8)>>3];U=w*+h[R+(S+16)>>3];g[H>>2]=u*+h[R+S>>3];g[I>>2]=V;g[J>>2]=U;g[K>>2]=0.0;dI[c[(c[r>>2]|0)+8>>2]&1023](b,t,L,Y);Y=Y+1|0;}while((Y|0)<(c[q>>2]|0))}else if((N|0)==3){if((c[q>>2]|0)>0){Z=0}else{break}do{S=c[k>>2]|0;R=aa(c[l>>2]|0,Z)|0;Q=c[f>>2]|0;P=c[o>>2]|0;T=aa(e[S+R>>1]|0,P)|0;U=v*+h[Q+(T+8)>>3];V=w*+h[Q+(T+16)>>3];g[z>>2]=u*+h[Q+T>>3];g[A>>2]=U;g[B>>2]=V;g[C>>2]=0.0;T=aa(e[S+(R+2)>>1]|0,P)|0;V=v*+h[Q+(T+8)>>3];U=w*+h[Q+(T+16)>>3];g[D>>2]=u*+h[Q+T>>3];g[E>>2]=V;g[F>>2]=U;g[G>>2]=0.0;T=aa(e[S+(R+4)>>1]|0,P)|0;U=v*+h[Q+(T+8)>>3];V=w*+h[Q+(T+16)>>3];g[H>>2]=u*+h[Q+T>>3];g[I>>2]=U;g[J>>2]=V;g[K>>2]=0.0;dI[c[(c[r>>2]|0)+8>>2]&1023](b,t,L,Z);Z=Z+1|0;}while((Z|0)<(c[q>>2]|0))}else if((N|0)==2){if((c[q>>2]|0)>0){_=0}else{break}do{T=c[k>>2]|0;Q=aa(c[l>>2]|0,_)|0;P=c[f>>2]|0;R=c[o>>2]|0;S=aa(R,c[T+Q>>2]|0)|0;V=v*+h[P+(S+8)>>3];U=w*+h[P+(S+16)>>3];g[z>>2]=u*+h[P+S>>3];g[A>>2]=V;g[B>>2]=U;g[C>>2]=0.0;S=aa(R,c[T+(Q+4)>>2]|0)|0;U=v*+h[P+(S+8)>>3];V=w*+h[P+(S+16)>>3];g[D>>2]=u*+h[P+S>>3];g[E>>2]=U;g[F>>2]=V;g[G>>2]=0.0;S=aa(R,c[T+(Q+8)>>2]|0)|0;V=v*+h[P+(S+8)>>3];U=w*+h[P+(S+16)>>3];g[H>>2]=u*+h[P+S>>3];g[I>>2]=V;g[J>>2]=U;g[K>>2]=0.0;dI[c[(c[r>>2]|0)+8>>2]&1023](b,t,L,_);_=_+1|0;}while((_|0)<(c[q>>2]|0))}else{break}}}while(0);cv[c[(c[y>>2]|0)+24>>2]&2047](a,L);L=L+1|0;}while((L|0)<(s|0));i=j;return}function aAP(a){a=a|0;return 28}function aAQ(a){a=a|0;return}function aAR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0.0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0.0,A=0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0;d=a+4|0;c=b|0;e=+g[c>>2];f=+g[d>>2];if(e<f){g[d>>2]=e;h=e}else{h=f}i=a+8|0;j=b+4|0;f=+g[j>>2];e=+g[i>>2];if(f<e){g[i>>2]=f;k=f}else{k=e}l=a+12|0;m=b+8|0;e=+g[m>>2];f=+g[l>>2];if(e<f){g[l>>2]=e;n=e}else{n=f}o=a+16|0;p=b+12|0;f=+g[p>>2];e=+g[o>>2];if(f<e){g[o>>2]=f;q=f}else{q=e}r=a+20|0;e=+g[r>>2];f=+g[c>>2];if(e<f){g[r>>2]=f;s=f}else{s=e}c=a+24|0;e=+g[c>>2];f=+g[j>>2];if(e<f){g[c>>2]=f;t=f}else{t=e}j=a+28|0;e=+g[j>>2];f=+g[m>>2];if(e<f){g[j>>2]=f;u=f}else{u=e}m=a+32|0;e=+g[m>>2];f=+g[p>>2];if(e<f){g[m>>2]=f;v=f}else{v=e}p=b+16|0;e=+g[p>>2];if(e<h){g[d>>2]=e;w=e}else{w=h}a=b+20|0;h=+g[a>>2];if(h<k){g[i>>2]=h;x=h}else{x=k}y=b+24|0;k=+g[y>>2];if(k<n){g[l>>2]=k;z=k}else{z=n}A=b+28|0;n=+g[A>>2];if(n<q){g[o>>2]=n;B=n}else{B=q}q=+g[p>>2];if(s<q){g[r>>2]=q;C=q}else{C=s}s=+g[a>>2];if(t<s){g[c>>2]=s;D=s}else{D=t}t=+g[y>>2];if(u<t){g[j>>2]=t;E=t}else{E=u}u=+g[A>>2];if(v<u){g[m>>2]=u;F=u}else{F=v}A=b+32|0;v=+g[A>>2];if(v<w){g[d>>2]=v}d=b+36|0;v=+g[d>>2];if(v<x){g[i>>2]=v}i=b+40|0;v=+g[i>>2];if(v<z){g[l>>2]=v}l=b+44|0;v=+g[l>>2];if(v<B){g[o>>2]=v}v=+g[A>>2];if(C<v){g[r>>2]=v}v=+g[d>>2];if(D<v){g[c>>2]=v}v=+g[i>>2];if(E<v){g[j>>2]=v}v=+g[l>>2];if(F>=v){return}g[m>>2]=v;return}function aAS(d,e,f){d=d|0;e=e|0;f=f|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0.0,F=0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,ab=0,ac=0,ad=0,ae=0,af=0;j=i;i=i+64|0;k=j|0;l=j+8|0;m=j+16|0;n=j+24|0;o=j+32|0;p=j+40|0;q=j+48|0;r=j+56|0;s=d;t=cA[c[(c[s>>2]|0)+28>>2]&4095](d)|0;c[e+20>>2]=t;u=e;c[u>>2]=0;if((t|0)==0){v=e+4|0;w=d+4|0;x=+g[w>>2];y=v;g[y>>2]=x;z=d+8|0;A=+g[z>>2];B=e+8|0;C=B;g[C>>2]=A;D=d+12|0;E=+g[D>>2];F=e+12|0;G=F;g[G>>2]=E;H=d+16|0;I=+g[H>>2];J=e+16|0;K=J;g[K>>2]=I;i=j;return 16416}L=f;M=cS[c[(c[L>>2]|0)+16>>2]&511](f,32,t)|0;t=M+8|0;N=c[t>>2]|0;O=f;c[u>>2]=dj[c[(c[O>>2]|0)+28>>2]&511](f,N)|0;u=cA[c[(c[s>>2]|0)+28>>2]&4095](d)|0;if((u|0)>0){s=d;P=d;Q=f;R=0;S=N;while(1){di[c[(c[s>>2]|0)+16>>2]&63](d,k,q,n,p,l,m,r,o,R);c[S+24>>2]=c[r>>2];c[S+28>>2]=c[q>>2];c[S+20>>2]=0;N=S+8|0;T=S+12|0;U=S|0;V=S+4|0;aDD(S|0,0,16);W=c[o>>2]|0;do{if((W|0)==3){X=c[r>>2]|0;if((X|0)==0){break}Y=cS[c[(c[L>>2]|0)+16>>2]&511](f,8,X)|0;X=Y+8|0;Z=c[X>>2]|0;_=Z;c[T>>2]=dj[c[(c[O>>2]|0)+28>>2]&511](f,Z)|0;if((c[r>>2]|0)>0){Z=0;do{$=c[l>>2]|0;ab=aa(c[m>>2]|0,Z)|0;b[_+(Z<<3)>>1]=b[$+ab>>1]|0;b[_+(Z<<3)+2>>1]=b[$+(ab+2)>>1]|0;b[_+(Z<<3)+4>>1]=b[$+(ab+4)>>1]|0;Z=Z+1|0;}while((Z|0)<(c[r>>2]|0))}co[c[(c[Q>>2]|0)+20>>2]&255](f,Y,17560,1497453121,c[X>>2]|0)}else if((W|0)==5){Z=c[r>>2]|0;if((Z|0)==0){break}_=cS[c[(c[L>>2]|0)+16>>2]&511](f,4,Z)|0;Z=_+8|0;ab=c[Z>>2]|0;$=ab;c[S+16>>2]=dj[c[(c[O>>2]|0)+28>>2]&511](f,ab)|0;if((c[r>>2]|0)>0){ab=0;do{ac=c[l>>2]|0;ad=aa(c[m>>2]|0,ab)|0;a[$+(ab<<2)|0]=a[ac+ad|0]|0;a[$+(ab<<2)+1|0]=a[ac+(ad+1)|0]|0;a[$+(ab<<2)+2|0]=a[ac+(ad+2)|0]|0;ab=ab+1|0;}while((ab|0)<(c[r>>2]|0))}co[c[(c[Q>>2]|0)+20>>2]&255](f,_,17184,1497453121,c[Z>>2]|0)}else if((W|0)==2){ab=(c[r>>2]|0)*3|0;if((ab|0)==0){break}$=cS[c[(c[L>>2]|0)+16>>2]&511](f,4,ab)|0;ab=$+8|0;X=c[ab>>2]|0;Y=X;c[N>>2]=dj[c[(c[O>>2]|0)+28>>2]&511](f,X)|0;if((c[r>>2]|0)>0){X=0;do{ad=c[l>>2]|0;ac=aa(c[m>>2]|0,X)|0;ae=X*3|0;c[Y+(ae<<2)>>2]=c[ad+ac>>2];c[Y+(ae+1<<2)>>2]=c[ad+(ac+4)>>2];c[Y+(ae+2<<2)>>2]=c[ad+(ac+8)>>2];X=X+1|0;}while((X|0)<(c[r>>2]|0))}co[c[(c[Q>>2]|0)+20>>2]&255](f,$,16248,1497453121,c[ab>>2]|0)}}while(0);N=c[n>>2]|0;do{if((N|0)==0){W=c[q>>2]|0;if((W|0)==0){break}T=cS[c[(c[L>>2]|0)+16>>2]&511](f,16,W)|0;W=T+8|0;X=c[W>>2]|0;Y=X;c[U>>2]=dj[c[(c[O>>2]|0)+28>>2]&511](f,X)|0;if((c[q>>2]|0)>0){X=0;do{Z=c[k>>2]|0;_=aa(c[p>>2]|0,X)|0;g[Y+(X<<4)>>2]=+g[Z+_>>2];g[Y+(X<<4)+4>>2]=+g[Z+(_+4)>>2];g[Y+(X<<4)+8>>2]=+g[Z+(_+8)>>2];X=X+1|0;}while((X|0)<(c[q>>2]|0))}co[c[(c[Q>>2]|0)+20>>2]&255](f,T,16904,1497453121,c[W>>2]|0)}else if((N|0)==1){X=c[q>>2]|0;if((X|0)==0){break}Y=cS[c[(c[L>>2]|0)+16>>2]&511](f,32,X)|0;X=Y+8|0;ab=c[X>>2]|0;$=ab;c[V>>2]=dj[c[(c[O>>2]|0)+28>>2]&511](f,ab)|0;ab=c[q>>2]|0;if((ab|0)>0){_=c[k>>2]|0;Z=c[p>>2]|0;ac=0;do{ad=aa(Z,ac)|0;h[$+(ac<<5)>>3]=+h[_+ad>>3];h[$+(ac<<5)+8>>3]=+h[_+(ad+8)>>3];h[$+(ac<<5)+16>>3]=+h[_+(ad+16)>>3];ac=ac+1|0;}while((ac|0)<(ab|0))}co[c[(c[Q>>2]|0)+20>>2]&255](f,Y,16672,1497453121,c[X>>2]|0)}}while(0);cv[c[(c[P>>2]|0)+24>>2]&2047](d,R);V=R+1|0;if((V|0)<(u|0)){R=V;S=S+32|0}else{af=Q;break}}}else{af=f}co[c[(c[af>>2]|0)+20>>2]&255](f,M,16576,1497453121,c[t>>2]|0);v=e+4|0;w=d+4|0;x=+g[w>>2];y=v;g[y>>2]=x;z=d+8|0;A=+g[z>>2];B=e+8|0;C=B;g[C>>2]=A;D=d+12|0;E=+g[D>>2];F=e+12|0;G=F;g[G>>2]=E;H=d+16|0;I=+g[H>>2];J=e+16|0;K=J;g[K>>2]=I;i=j;return 16416}function aAT(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aAU(a){a=a|0;return}function aAV(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function aAW(a,b){a=a|0;b=b|0;return 0}function aAX(a,b,c){a=a|0;b=b|0;c=+c;return 0}function aAY(a){a=a|0;return 17536|0}function aAZ(a){a=a|0;return c[a+92>>2]|0}function aA_(a){a=a|0;var b=0,d=0;b=c[a+92>>2]|0;switch(b|0){case 1:{d=0;break};case 0:case 3:{d=b;break};case 2:{d=1;break};case 4:{d=6;break};default:{d=0}}return d|0}function aA$(a){a=a|0;var b=0,d=0;b=c[a+92>>2]|0;switch(b|0){case 0:case 4:{d=b;break};case 1:{d=0;break};case 3:{d=2;break};case 2:{d=0;break};default:{d=0}}return d|0}function aA0(d,e,f,h,j,k){d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0,z=0,A=0.0,B=0,C=0.0,D=0,E=0,F=0.0,G=0,H=0,I=0.0,J=0,K=0.0,L=0,M=0.0,N=0,O=0.0,P=0,R=0.0,S=0,T=0.0,U=0,V=0.0,W=0,X=0.0,Y=0,Z=0.0,_=0,$=0.0,aa=0,ab=0.0,ac=0.0,ad=0,ae=0.0,af=0,ag=0.0,ah=0,ai=0.0,aj=0,ak=0.0,al=0,am=0.0,an=0,ao=0.0,ap=0,aq=0.0,ar=0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0,ax=0,ay=0.0,az=0.0,aA=0.0,aB=0.0,aC=0.0,aD=0.0,aE=0.0,aF=0.0,aG=0.0,aH=0.0,aI=0.0,aJ=0.0,aK=0.0,aL=0.0,aM=0.0,aN=0.0,aO=0.0,aP=0.0,aQ=0.0,aR=0.0,aS=0.0,aT=0.0,aU=0.0,aV=0.0,aW=0.0,aX=0.0,aY=0.0,aZ=0.0,a_=0.0,a$=0.0,a0=0,a1=0,a2=0.0,a3=0.0,a4=0.0,a5=0.0,a6=0.0,a7=0.0,a8=0.0,a9=0.0,ba=0.0,bb=0.0,bc=0.0,bd=0.0,be=0.0,bf=0,bg=0,bh=0,bi=0.0,bj=0.0,bk=0.0;l=i;i=i+128|0;m=l|0;n=l+16|0;o=l+32|0;p=l+48|0;q=l+64|0;r=l+80|0;s=l+96|0;t=l+112|0;u=d+4|0;v=c[u>>2]|0;a[v+312|0]=0;c[v>>2]=0;a[v+356|0]=1;g[v+292>>2]=999999984306749400.0;g[v+296>>2]=999999984306749400.0;g[v+300>>2]=999999984306749400.0;g[v+304>>2]=0.0;w=v+332|0;aDD(v+336|0,0,17);b[w>>1]=b[w>>1]&-16;w=f+48|0;v=e+48|0;x=+g[v>>2];y=f+52|0;z=e+52|0;A=+g[z>>2];B=f+56|0;f=e+56|0;C=+g[f>>2];D=j+48|0;E=h+48|0;F=+g[E>>2];G=j+52|0;H=h+52|0;I=+g[H>>2];J=j+56|0;j=h+56|0;K=+g[j>>2];L=e|0;M=+g[L>>2];N=e+4|0;O=+g[N>>2];P=e+8|0;R=+g[P>>2];S=e+16|0;T=+g[S>>2];U=e+20|0;V=+g[U>>2];W=e+24|0;X=+g[W>>2];Y=e+32|0;Z=+g[Y>>2];_=e+36|0;$=+g[_>>2];aa=e+40|0;ab=+g[aa>>2];e=h|0;ac=+g[e>>2];ad=h+4|0;ae=+g[ad>>2];af=h+8|0;ag=+g[af>>2];ah=h+16|0;ai=+g[ah>>2];aj=h+20|0;ak=+g[aj>>2];al=h+24|0;am=+g[al>>2];an=h+32|0;ao=+g[an>>2];ap=h+36|0;aq=+g[ap>>2];ar=h+40|0;as=+g[ar>>2];at=+g[w>>2]-x-(+g[D>>2]-F);au=+g[y>>2]-A-(+g[G>>2]-I);av=+g[B>>2]-C-(+g[J>>2]-K);h=d+8|0;aw=c[h>>2]|0;ax=c[(c[aw>>2]|0)+60>>2]|0;ay=-0.0-at;az=-0.0-au;aA=-0.0-av;g[n>>2]=M*ay+T*az+Z*aA;g[n+4>>2]=O*ay+V*az+$*aA;g[n+8>>2]=R*ay+X*az+ab*aA;g[n+12>>2]=0.0;dA[ax&511](m,aw,n);aA=+g[m>>2];az=+g[m+4>>2];ay=+g[m+8>>2];aB=+g[v>>2]+(+g[L>>2]*aA+ +g[N>>2]*az+ +g[P>>2]*ay);aC=+g[z>>2]+(aA*+g[S>>2]+az*+g[U>>2]+ay*+g[W>>2]);aD=+g[f>>2]+(aA*+g[Y>>2]+az*+g[_>>2]+ay*+g[aa>>2]);aa=d+12|0;d=c[aa>>2]|0;_=c[(c[d>>2]|0)+60>>2]|0;ay=at*+g[ad>>2]+au*+g[aj>>2]+av*+g[ap>>2];az=at*+g[af>>2]+au*+g[al>>2]+av*+g[ar>>2];g[p>>2]=at*+g[e>>2]+au*+g[ah>>2]+av*+g[an>>2];g[p+4>>2]=ay;g[p+8>>2]=az;g[p+12>>2]=0.0;dA[_&511](o,d,p);az=+g[o>>2];ay=+g[o+4>>2];aA=+g[o+8>>2];aE=aB-(+g[E>>2]+(+g[e>>2]*az+ +g[ad>>2]*ay+ +g[af>>2]*aA));aB=aC-(+g[H>>2]+(az*+g[ah>>2]+ay*+g[aj>>2]+aA*+g[al>>2]));aC=aD-(+g[j>>2]+(az*+g[an>>2]+ay*+g[ap>>2]+aA*+g[ar>>2]));L1484:do{if(aE*aE+aB*aB+aC*aC>9999999747378752.0e-20){ar=r|0;ap=r+4|0;an=r+8|0;al=r+12|0;aj=q|0;ah=q+4|0;af=q+8|0;ad=t|0;e=t+4|0;o=t+8|0;p=t+12|0;d=s|0;_=s+4|0;Y=s+8|0;aA=C;ay=A;az=x;aD=K;aF=I;aG=F;aH=0.0;aI=0.0;aJ=0.0;W=32;aK=0.0;aL=aE;aM=aB;aN=aC;while(1){U=W-1|0;if((W|0)==0){aO=aH;aP=aI;aQ=aJ;aR=aK;break L1484}S=c[h>>2]|0;P=c[(c[S>>2]|0)+60>>2]|0;aS=-0.0-aL;aT=-0.0-aM;aU=-0.0-aN;g[ar>>2]=M*aS+T*aT+Z*aU;g[ap>>2]=O*aS+V*aT+$*aU;g[an>>2]=R*aS+X*aT+ab*aU;g[al>>2]=0.0;dA[P&511](q,S,r);aU=+g[aj>>2];aT=+g[ah>>2];aS=+g[af>>2];aV=az+(M*aU+O*aT+R*aS);aW=ay+(T*aU+V*aT+X*aS);aX=aA+(Z*aU+$*aT+ab*aS);S=c[aa>>2]|0;P=c[(c[S>>2]|0)+60>>2]|0;g[ad>>2]=ac*aL+ai*aM+ao*aN;g[e>>2]=ae*aL+ak*aM+aq*aN;g[o>>2]=ag*aL+am*aM+as*aN;g[p>>2]=0.0;dA[P&511](s,S,t);aS=+g[d>>2];aT=+g[_>>2];aU=+g[Y>>2];aY=aG+(ac*aS+ae*aT+ag*aU);aZ=aF+(ai*aS+ak*aT+am*aU);a_=aD+(ao*aS+aq*aT+as*aU);aU=aV-aY;aT=aW-aZ;aS=aX-a_;a$=aL*aU+aM*aT+aN*aS;if(aK>1.0){a0=0;a1=1141;break}if(a$>0.0){a2=at*aL+au*aM+av*aN;if(a2>=-1.4210854715202004e-14){a0=0;a1=1140;break}a3=aK-a$/a2;a2=1.0-a3;a4=a3;a5=aL;a6=aM;a7=aN;a8=a2*+g[E>>2]+a3*+g[D>>2];a9=a2*+g[H>>2]+a3*+g[G>>2];ba=a2*+g[j>>2]+a3*+g[J>>2];bb=+g[v>>2]*a2+a3*+g[w>>2];bc=a2*+g[z>>2]+a3*+g[y>>2];bd=a2*+g[f>>2]+a3*+g[B>>2]}else{a4=aK;a5=aJ;a6=aI;a7=aH;a8=aG;a9=aF;ba=aD;bb=az;bc=ay;bd=aA}S=c[u>>2]|0;P=S|0;N=c[P>>2]|0;if((N|0)>0){a3=+g[S+308>>2];L=0;m=0;while(1){a2=aU- +g[S+4+(m<<4)>>2];a$=aT- +g[S+4+(m<<4)+4>>2];be=aS- +g[S+4+(m<<4)+8>>2];n=L|a2*a2+a$*a$+be*be<=a3;aw=m+1|0;if((aw|0)<(N|0)){L=n;m=aw}else{bf=n;break}}}else{bf=0}m=S+304|0;do{if(+g[m>>2]==0.0){if(aS!=+g[S+300>>2]){bg=0;break}if(aT!=+g[S+296>>2]){bg=0;break}bg=aU==+g[S+292>>2]}else{bg=0}}while(0);if(bg|bf){bh=S}else{g[S+292>>2]=aU;g[S+296>>2]=aT;g[S+300>>2]=aS;g[m>>2]=0.0;a[S+356|0]=1;g[S+4+(N<<4)>>2]=aU;g[S+4+(N<<4)+4>>2]=aT;g[S+4+(N<<4)+8>>2]=aS;g[S+4+(N<<4)+12>>2]=0.0;L=c[P>>2]|0;g[S+84+(L<<4)>>2]=aV;g[S+84+(L<<4)+4>>2]=aW;g[S+84+(L<<4)+8>>2]=aX;g[S+84+(L<<4)+12>>2]=0.0;L=c[P>>2]|0;g[S+164+(L<<4)>>2]=aY;g[S+164+(L<<4)+4>>2]=aZ;g[S+164+(L<<4)+8>>2]=a_;g[S+164+(L<<4)+12>>2]=0.0;c[P>>2]=(c[P>>2]|0)+1;bh=c[u>>2]|0}L=aBZ(bh)|0;a3=+g[bh+276>>2];be=+g[bh+280>>2];a$=+g[bh+284>>2];if(!L){aO=a7;aP=a6;aQ=a5;aR=a4;break L1484}if(a3*a3+be*be+a$*a$>9999999747378752.0e-20){aA=bd;ay=bc;az=bb;aD=ba;aF=a9;aG=a8;aH=a7;aI=a6;aJ=a5;W=U;aK=a4;aL=a3;aM=be;aN=a$}else{aO=a7;aP=a6;aQ=a5;aR=a4;break L1484}}if((a1|0)==1140){i=l;return a0|0}else if((a1|0)==1141){i=l;return a0|0}}else{aO=0.0;aP=0.0;aQ=0.0;aR=0.0}}while(0);g[k+164>>2]=aR;aR=aO*aO+(aP*aP+aQ*aQ);if(aR<1.4210854715202004e-14){aDD(k+132|0,0,16);bi=0.0;bj=0.0;bk=0.0}else{a4=1.0/+Q(+aR);aR=aQ*a4;aQ=aP*a4;aP=aO*a4;g[k+132>>2]=aR;g[k+136>>2]=aQ;g[k+140>>2]=aP;g[k+144>>2]=0.0;bi=aR;bj=aQ;bk=aP}if(at*bi+au*bj+av*bk>=-0.0- +g[k+172>>2]){a0=0;i=l;return a0|0}a1=c[u>>2]|0;aBZ(a1)|0;aDG(k+148|0,a1+260|0,16);a0=1;i=l;return a0|0}function aA1(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aA2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;azf(a|0,b,c,d);return}function aA3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=c[a+92>>2]|0;if((f|0)==3){if((b|0)==0){g=d;h=a+96|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];h=e;g=a+112|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];return}else if((b|0)==1){g=d;h=a+112|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];h=e;g=a+128|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];return}else if((b|0)==2){g=d;h=a+128|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];h=e;g=a+96|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];return}else{return}}else if((f|0)==2){g=d;h=a+96|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];h=e;g=a+112|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];return}else if((f|0)==4){switch(b|0){case 3:{b=d;f=a+96|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=e;b=a+144|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];return};case 4:{b=d;f=a+112|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=e;b=a+144|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];return};case 1:{b=d;f=a+112|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=e;b=a+128|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];return};case 5:{b=d;f=a+128|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=e;b=a+144|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];return};case 0:{b=d;f=a+96|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=e;b=a+112|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];return};case 2:{b=d;d=a+128|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];d=e;e=a+96|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return};default:{return}}}else{return}}function aA4(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=d;d=a+96+(b<<4)|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];return}function aA5(a){a=a|0;var b=0;c[a>>2]=21200;b=c[a+52>>2]|0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-80+76>>2]|0);return}function aA6(a){a=a|0;var b=0;c[a>>2]=21200;b=c[a+52>>2]|0;if((b|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[b-80+76>>2]|0)}c[9804]=(c[9804]|0)+1;aDB(c[a-160+156>>2]|0);return}function aA7(b){b=b|0;var d=0,e=0,f=0,g=0;c[b>>2]=20368;d=b+24|0;e=b+32|0;f=c[e>>2]|0;g=b+36|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+28>>2]=0}else{if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-32+28>>2]|0)}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+28>>2]=0}c[9804]=(c[9804]|0)+1;aDB(c[b-84+80>>2]|0);return}function aA8(a,b){a=a|0;b=b|0;return}function aA9(a,b){a=a|0;b=b|0;return}function aBa(a,b){a=a|0;b=b|0;return}function aBb(a,b){a=a|0;b=b|0;return}function aBc(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0;l=c[a+32>>2]|0;c[d>>2]=c[l+(k<<5)+12>>2];c[b>>2]=c[l+(k<<5)+16>>2];c[e>>2]=c[l+(k<<5)+28>>2];c[f>>2]=c[l+(k<<5)+20>>2];c[i>>2]=c[l+(k<<5)>>2];c[g>>2]=c[l+(k<<5)+4>>2];c[h>>2]=c[l+(k<<5)+8>>2];c[j>>2]=c[l+(k<<5)+24>>2];return}function aBd(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0;l=c[a+32>>2]|0;c[d>>2]=c[l+(k<<5)+12>>2];c[b>>2]=c[l+(k<<5)+16>>2];c[e>>2]=c[l+(k<<5)+28>>2];c[f>>2]=c[l+(k<<5)+20>>2];c[i>>2]=c[l+(k<<5)>>2];c[g>>2]=c[l+(k<<5)+4>>2];c[h>>2]=c[l+(k<<5)+8>>2];c[j>>2]=c[l+(k<<5)+24>>2];return}function aBe(a){a=a|0;return(c[a+48>>2]|0)==1|0}function aBf(a){a=a|0;return c[a+24>>2]|0}function aBg(b){b=b|0;var d=0,e=0,f=0,g=0;c[b>>2]=20368;d=b+24|0;e=b+32|0;f=c[e>>2]|0;g=b+36|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-32+28>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+28>>2]=0;return}function aBh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+52|0;f=b;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+68|0;e=d;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[a+48>>2]=1;return}function aBi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=b;b=a+52|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];b=d;d=a+68|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];return}function aBj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;g[b+4>>2]=1.0;g[b+8>>2]=1.0;g[b+12>>2]=1.0;g[b+16>>2]=0.0;f=b+36|0;a[f]=1;h=b+32|0;c[h>>2]=0;i=b+24|0;c[i>>2]=0;j=b+28|0;c[j>>2]=0;c[b+48>>2]=0;c[b>>2]=25248;a[b+100|0]=1;c[b+96>>2]=0;k=b+88|0;c[k>>2]=0;c[b+92>>2]=0;a[b+120|0]=1;c[b+116>>2]=0;l=b+108|0;c[l>>2]=0;c[b+112>>2]=0;a[b+140|0]=1;c[b+136>>2]=0;m=b+128|0;c[m>>2]=0;c[b+132>>2]=0;a[b+160|0]=1;c[b+156>>2]=0;n=b+148|0;c[n>>2]=0;c[b+152>>2]=0;o=b+164|0;a[o]=d&1;d=b+165|0;a[d]=e&1;g[b+168>>2]=0.0;c[9806]=(c[9806]|0)+1;b=aDx(51)|0;if((b|0)==0){p=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;p=b+(e+4)|0}e=c[i>>2]|0;if((e|0)>0){b=0;do{q=p+(b<<5)|0;r=(c[h>>2]|0)+(b<<5)|0;aDC(q|0,r|0,32)|0;b=b+1|0;}while((b|0)<(e|0))}e=c[h>>2]|0;if((e|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[e-32+28>>2]|0)}c[h>>2]=0}a[f]=1;c[h>>2]=p;c[j>>2]=1;j=c[i>>2]|0;c[p+(j<<5)>>2]=0;c[p+(j<<5)+4>>2]=0;c[p+(j<<5)+8>>2]=12;c[p+(j<<5)+12>>2]=0;c[p+(j<<5)+16>>2]=0;c[p+(j<<5)+20>>2]=16;c[p+(j<<5)+24>>2]=2;c[p+(j<<5)+28>>2]=0;c[i>>2]=(c[i>>2]|0)+1;if((a[o]&1)==0){c[c[h>>2]>>2]=(c[n>>2]|0)/3|0;c[(c[h>>2]|0)+4>>2]=0;c[(c[h>>2]|0)+24>>2]=3;c[(c[h>>2]|0)+8>>2]=6}else{c[c[h>>2]>>2]=(c[m>>2]|0)/3|0;c[(c[h>>2]|0)+4>>2]=0;c[(c[h>>2]|0)+24>>2]=2;c[(c[h>>2]|0)+8>>2]=12}if((a[d]&1)==0){c[(c[h>>2]|0)+12>>2]=(c[l>>2]|0)/3|0;c[(c[h>>2]|0)+16>>2]=0;c[(c[h>>2]|0)+20>>2]=12;return}else{c[(c[h>>2]|0)+12>>2]=c[k>>2];c[(c[h>>2]|0)+16>>2]=0;c[(c[h>>2]|0)+20>>2]=16;return}}function aBk(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;if((a[d+164|0]&1)==0){f=e&65535;g=d+148|0;h=c[g>>2]|0;i=d+152|0;do{if((h|0)==(c[i>>2]|0)){j=(h|0)==0?1:h<<1;if((h|0)>=(j|0)){k=h;break}if((j|0)==0){l=0;m=h}else{c[9806]=(c[9806]|0)+1;n=aDx((j<<1)+19|0)|0;if((n|0)==0){o=0}else{p=-(n+4|0)&15;c[n+p>>2]=n;o=n+(p+4)|0}l=o;m=c[g>>2]|0}p=d+156|0;if((m|0)>0){n=0;do{q=l+(n<<1)|0;if((q|0)!=0){b[q>>1]=b[(c[p>>2]|0)+(n<<1)>>1]|0}n=n+1|0;}while((n|0)<(m|0))}n=c[p>>2]|0;q=d+160|0;if((n|0)!=0){if((a[q]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-4>>2]|0)}c[p>>2]=0}a[q]=1;c[p>>2]=l;c[i>>2]=j;k=c[g>>2]|0}else{k=h}}while(0);h=d+156|0;i=c[h>>2]|0;l=i+(k<<1)|0;if((l|0)==0){r=k;s=i}else{b[l>>1]=f;r=c[g>>2]|0;s=c[h>>2]|0}c[g>>2]=r+1;c[(c[d+32>>2]|0)+4>>2]=s;return}else{s=d+128|0;r=c[s>>2]|0;g=d+132|0;do{if((r|0)==(c[g>>2]|0)){h=(r|0)==0?1:r<<1;if((r|0)>=(h|0)){t=r;break}if((h|0)==0){u=0;v=r}else{c[9806]=(c[9806]|0)+1;f=aDx((h<<2)+19|0)|0;if((f|0)==0){w=0}else{l=-(f+4|0)&15;c[f+l>>2]=f;w=f+(l+4)|0}u=w;v=c[s>>2]|0}l=d+136|0;if((v|0)>0){f=0;do{i=u+(f<<2)|0;if((i|0)!=0){c[i>>2]=c[(c[l>>2]|0)+(f<<2)>>2]}f=f+1|0;}while((f|0)<(v|0))}f=c[l>>2]|0;j=d+140|0;if((f|0)!=0){if((a[j]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[l>>2]=0}a[j]=1;c[l>>2]=u;c[g>>2]=h;t=c[s>>2]|0}else{t=r}}while(0);r=d+136|0;g=c[r>>2]|0;u=g+(t<<2)|0;if((u|0)==0){x=t;y=g}else{c[u>>2]=e;x=c[s>>2]|0;y=c[r>>2]|0}c[s>>2]=x+1;c[(c[d+32>>2]|0)+4>>2]=y;return}}function aBl(a,b){a=a|0;b=b|0;return}function aBm(a,b){a=a|0;b=b|0;return}function aBn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;if((a[b+165|0]&1)!=0){f=b+88|0;L1676:do{if(e){h=c[f>>2]|0;i=b+96|0;j=d|0;k=d+4|0;l=d+8|0;m=b+168|0;n=0;while(1){if((n|0)>=(h|0)){break L1676}o=c[i>>2]|0;p=+g[o+(n<<4)>>2]- +g[j>>2];q=+g[o+(n<<4)+4>>2]- +g[k>>2];r=+g[o+(n<<4)+8>>2]- +g[l>>2];if(p*p+q*q+r*r>+g[m>>2]){n=n+1|0}else{s=n;break}}return s|0}}while(0);n=b+32|0;m=(c[n>>2]|0)+12|0;c[m>>2]=(c[m>>2]|0)+1;m=c[f>>2]|0;l=b+92|0;do{if((m|0)==(c[l>>2]|0)){k=(m|0)==0?1:m<<1;if((m|0)>=(k|0)){t=m;break}if((k|0)==0){u=0;v=m}else{c[9806]=(c[9806]|0)+1;j=aDx((k<<4|4)+15|0)|0;if((j|0)==0){w=0}else{i=-(j+4|0)&15;c[j+i>>2]=j;w=j+(i+4)|0}u=w;v=c[f>>2]|0}i=b+96|0;if((v|0)>0){j=0;do{h=u+(j<<4)|0;if((h|0)!=0){o=h;h=(c[i>>2]|0)+(j<<4)|0;c[o>>2]=c[h>>2];c[o+4>>2]=c[h+4>>2];c[o+8>>2]=c[h+8>>2];c[o+12>>2]=c[h+12>>2]}j=j+1|0;}while((j|0)<(v|0))}j=c[i>>2]|0;h=b+100|0;if((j|0)!=0){if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[j-16+12>>2]|0)}c[i>>2]=0}a[h]=1;c[i>>2]=u;c[l>>2]=k;t=c[f>>2]|0}else{t=m}}while(0);m=b+96|0;l=c[m>>2]|0;u=l+(t<<4)|0;if((u|0)==0){x=t;y=l}else{l=u;u=d;c[l>>2]=c[u>>2];c[l+4>>2]=c[u+4>>2];c[l+8>>2]=c[u+8>>2];c[l+12>>2]=c[u+12>>2];x=c[f>>2]|0;y=c[m>>2]|0}c[f>>2]=x+1;c[(c[n>>2]|0)+16>>2]=y;s=(c[f>>2]|0)-1|0;return s|0}f=b+108|0;y=c[f>>2]|0;L1711:do{if(e){n=b+116|0;x=d|0;m=d+4|0;u=d+8|0;l=b+168|0;t=0;while(1){if((t|0)>=(y|0)){z=x;break L1711}v=c[n>>2]|0;r=+g[v+(t<<2)>>2]- +g[x>>2];q=+g[v+(t+1<<2)>>2]- +g[m>>2];p=+g[v+(t+2<<2)>>2]- +g[u>>2];if(r*r+q*q+p*p>+g[l>>2]){t=t+3|0}else{break}}s=(t|0)/3|0;return s|0}else{z=d|0}}while(0);p=+g[z>>2];z=b+112|0;e=c[z>>2]|0;do{if((y|0)==(e|0)){l=(y|0)==0?1:y<<1;if((y|0)>=(l|0)){A=y;B=y;break}if((l|0)==0){C=0;D=y}else{c[9806]=(c[9806]|0)+1;u=aDx((l<<2)+19|0)|0;if((u|0)==0){E=0}else{m=-(u+4|0)&15;c[u+m>>2]=u;E=u+(m+4)|0}C=E;D=c[f>>2]|0}m=b+116|0;if((D|0)>0){u=0;do{x=C+(u<<2)|0;if((x|0)!=0){g[x>>2]=+g[(c[m>>2]|0)+(u<<2)>>2]}u=u+1|0;}while((u|0)<(D|0))}u=c[m>>2]|0;t=b+120|0;if((u|0)!=0){if((a[t]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[u-4>>2]|0)}c[m>>2]=0}a[t]=1;c[m>>2]=C;c[z>>2]=l;A=c[f>>2]|0;B=l}else{A=y;B=e}}while(0);e=b+116|0;y=(c[e>>2]|0)+(A<<2)|0;if((y|0)==0){F=A;G=B}else{g[y>>2]=p;F=c[f>>2]|0;G=c[z>>2]|0}y=F+1|0;c[f>>2]=y;p=+g[d+4>>2];do{if((y|0)==(G|0)){F=(G|0)==0?1:G<<1;if((G|0)>=(F|0)){H=G;I=G;break}if((F|0)==0){J=0;K=G}else{c[9806]=(c[9806]|0)+1;B=aDx((F<<2)+19|0)|0;if((B|0)==0){L=0}else{A=-(B+4|0)&15;c[B+A>>2]=B;L=B+(A+4)|0}J=L;K=c[f>>2]|0}if((K|0)>0){A=0;do{B=J+(A<<2)|0;if((B|0)!=0){g[B>>2]=+g[(c[e>>2]|0)+(A<<2)>>2]}A=A+1|0;}while((A|0)<(K|0))}A=c[e>>2]|0;l=b+120|0;if((A|0)!=0){if((a[l]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[A-4>>2]|0)}c[e>>2]=0}a[l]=1;c[e>>2]=J;c[z>>2]=F;H=c[f>>2]|0;I=F}else{H=y;I=G}}while(0);G=(c[e>>2]|0)+(H<<2)|0;if((G|0)==0){M=H;N=I}else{g[G>>2]=p;M=c[f>>2]|0;N=c[z>>2]|0}G=M+1|0;c[f>>2]=G;p=+g[d+8>>2];do{if((G|0)==(N|0)){d=(N|0)==0?1:N<<1;if((N|0)>=(d|0)){O=N;break}if((d|0)==0){P=0;Q=N}else{c[9806]=(c[9806]|0)+1;M=aDx((d<<2)+19|0)|0;if((M|0)==0){R=0}else{I=-(M+4|0)&15;c[M+I>>2]=M;R=M+(I+4)|0}P=R;Q=c[f>>2]|0}if((Q|0)>0){I=0;do{M=P+(I<<2)|0;if((M|0)!=0){g[M>>2]=+g[(c[e>>2]|0)+(I<<2)>>2]}I=I+1|0;}while((I|0)<(Q|0))}I=c[e>>2]|0;F=b+120|0;if((I|0)!=0){if((a[F]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[I-4>>2]|0)}c[e>>2]=0}a[F]=1;c[e>>2]=P;c[z>>2]=d;O=c[f>>2]|0}else{O=G}}while(0);G=(c[e>>2]|0)+(O<<2)|0;if((G|0)==0){S=O}else{g[G>>2]=p;S=c[f>>2]|0}c[f>>2]=S+1;S=b+32|0;b=(c[S>>2]|0)+12|0;c[b>>2]=(c[b>>2]|0)+1;c[(c[S>>2]|0)+16>>2]=c[e>>2];s=((c[f>>2]|0)/3|0)-1|0;return s|0}function aBo(a){a=a|0;aBq(a);return}function aBp(a){a=a|0;aBq(a);if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-172+168>>2]|0);return}function aBq(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=b|0;c[d>>2]=25248;e=b+148|0;f=b+156|0;g=c[f>>2]|0;h=b+160|0;if((g|0)!=0){if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[f>>2]=0}a[h]=1;c[f>>2]=0;c[e>>2]=0;c[b+152>>2]=0;e=b+128|0;f=b+136|0;h=c[f>>2]|0;g=b+140|0;if((h|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[h-4>>2]|0)}c[f>>2]=0}a[g]=1;c[f>>2]=0;c[e>>2]=0;c[b+132>>2]=0;e=b+108|0;f=b+116|0;g=c[f>>2]|0;h=b+120|0;if((g|0)!=0){if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[f>>2]=0}a[h]=1;c[f>>2]=0;c[e>>2]=0;c[b+112>>2]=0;e=b+88|0;f=b+96|0;h=c[f>>2]|0;g=b+100|0;if((h|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[h-16+12>>2]|0)}c[f>>2]=0}a[g]=1;c[f>>2]=0;c[e>>2]=0;c[b+92>>2]=0;c[d>>2]=20368;d=b+24|0;e=b+32|0;f=c[e>>2]|0;g=b+36|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;i=b+28|0;c[i>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-32+28>>2]|0)}c[e>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;i=b+28|0;c[i>>2]=0;return}function aBr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=i;i=i+48|0;e=d|0;f=d+16|0;h=d+32|0;c[a+8>>2]=0;j=a+12|0;g[j>>2]=0.0;c[a>>2]=22768;c[a+48>>2]=b;c[a+4>>2]=21;if(cA[c[(c[b>>2]|0)+40>>2]&4095](b)|0){dA[c[(c[b>>2]|0)+48>>2]&511](b,a+16|0,a+32|0);i=d;return}else{b=e;k=f;l=h;m=e|0;n=e+4|0;o=e+8|0;p=a;aDD(b|0,0,16);g[m>>2]=1.0;dA[c[(c[p>>2]|0)+64>>2]&511](f,a,e);q=f|0;g[a+32>>2]=+g[q>>2]+ +g[j>>2];g[m>>2]=-1.0;dA[c[(c[p>>2]|0)+64>>2]&511](h,a,e);c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];g[a+16>>2]=+g[q>>2]- +g[j>>2];aDD(b|0,0,16);g[n>>2]=1.0;dA[c[(c[p>>2]|0)+64>>2]&511](f,a,e);q=f+4|0;g[a+36>>2]=+g[q>>2]+ +g[j>>2];g[n>>2]=-1.0;dA[c[(c[p>>2]|0)+64>>2]&511](h,a,e);c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];g[a+20>>2]=+g[q>>2]- +g[j>>2];aDD(b|0,0,16);g[o>>2]=1.0;dA[c[(c[p>>2]|0)+64>>2]&511](f,a,e);b=f+8|0;g[a+40>>2]=+g[b>>2]+ +g[j>>2];g[o>>2]=-1.0;dA[c[(c[p>>2]|0)+64>>2]&511](h,a,e);c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];g[a+24>>2]=+g[b>>2]- +g[j>>2];i=d;return}}function aBs(a){a=a|0;return}function aBt(a){a=a|0;return}function aBu(a){a=a|0;return 16208|0}function aBv(a){a=a|0;return}function aBw(a){a=a|0;return}function aBx(a){a=a|0;return(c[a+48>>2]|0)+4|0}function aBy(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=i;i=i+48|0;d=b|0;e=b+16|0;f=b+32|0;h=d|0;j=d+4|0;k=d+8|0;l=a;m=a+12|0;n=e;o=f;p=d;aDD(p|0,0,16);g[h>>2]=1.0;dA[c[(c[l>>2]|0)+64>>2]&511](e,a,d);q=e|0;g[a+32>>2]=+g[q>>2]+ +g[m>>2];g[h>>2]=-1.0;dA[c[(c[l>>2]|0)+64>>2]&511](f,a,d);c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];g[a+16>>2]=+g[q>>2]- +g[m>>2];aDD(p|0,0,16);g[j>>2]=1.0;dA[c[(c[l>>2]|0)+64>>2]&511](e,a,d);q=e+4|0;g[a+36>>2]=+g[q>>2]+ +g[m>>2];g[j>>2]=-1.0;dA[c[(c[l>>2]|0)+64>>2]&511](f,a,d);c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];g[a+20>>2]=+g[q>>2]- +g[m>>2];aDD(p|0,0,16);g[k>>2]=1.0;dA[c[(c[l>>2]|0)+64>>2]&511](e,a,d);p=e+8|0;g[a+40>>2]=+g[p>>2]+ +g[m>>2];g[k>>2]=-1.0;dA[c[(c[l>>2]|0)+64>>2]&511](f,a,d);c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];g[a+24>>2]=+g[p>>2]- +g[m>>2];i=b;return}function aBz(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aBA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0;f=a+32|0;h=a+16|0;i=a+36|0;j=a+20|0;k=a+40|0;l=a+24|0;m=(+g[f>>2]- +g[h>>2])*.5;n=(+g[i>>2]- +g[j>>2])*.5;o=(+g[k>>2]- +g[l>>2])*.5;p=a|0;q=a;r=+dh[c[(c[q>>2]|0)+44>>2]&1023](p);s=+dh[c[(c[q>>2]|0)+44>>2]&1023](p);t=m+r;r=n+s;s=o+ +dh[c[(c[q>>2]|0)+44>>2]&1023](p);o=(+g[f>>2]+ +g[h>>2])*.5;n=(+g[i>>2]+ +g[j>>2])*.5;m=(+g[k>>2]+ +g[l>>2])*.5;u=+g[b>>2];v=+P(+u);w=+g[b+4>>2];x=+P(+w);y=+g[b+8>>2];z=+P(+y);A=+g[b+16>>2];B=+P(+A);C=+g[b+20>>2];D=+P(+C);E=+g[b+24>>2];F=+P(+E);G=+g[b+32>>2];H=+P(+G);I=+g[b+36>>2];J=+P(+I);K=+g[b+40>>2];L=+P(+K);M=+g[b+48>>2]+(o*u+n*w+m*y);y=+g[b+52>>2]+(o*A+n*C+m*E);E=+g[b+56>>2]+(o*G+n*I+m*K);K=t*v+r*x+s*z;z=t*B+r*D+s*F;F=t*H+r*J+s*L;g[d>>2]=M-K;g[d+4>>2]=y-z;g[d+8>>2]=E-F;g[d+12>>2]=0.0;g[e>>2]=K+M;g[e+4>>2]=z+y;g[e+8>>2]=F+E;g[e+12>>2]=0.0;return}function aBB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=i;i=i+48|0;e=d|0;f=d+16|0;h=d+32|0;j=(c[a+48>>2]|0)+4|0;k=b;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];k=e;j=f;b=h;l=e|0;m=e+4|0;n=e+8|0;o=a;p=a+12|0;aDD(k|0,0,16);g[l>>2]=1.0;dA[c[(c[o>>2]|0)+64>>2]&511](f,a,e);q=f|0;g[a+32>>2]=+g[q>>2]+ +g[p>>2];g[l>>2]=-1.0;dA[c[(c[o>>2]|0)+64>>2]&511](h,a,e);c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];g[a+16>>2]=+g[q>>2]- +g[p>>2];aDD(k|0,0,16);g[m>>2]=1.0;dA[c[(c[o>>2]|0)+64>>2]&511](f,a,e);q=f+4|0;g[a+36>>2]=+g[q>>2]+ +g[p>>2];g[m>>2]=-1.0;dA[c[(c[o>>2]|0)+64>>2]&511](h,a,e);c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];g[a+20>>2]=+g[q>>2]- +g[p>>2];aDD(k|0,0,16);g[n>>2]=1.0;dA[c[(c[o>>2]|0)+64>>2]&511](f,a,e);k=f+8|0;g[a+40>>2]=+g[k>>2]+ +g[p>>2];g[n>>2]=-1.0;dA[c[(c[o>>2]|0)+64>>2]&511](h,a,e);c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];g[a+24>>2]=+g[k>>2]- +g[p>>2];i=d;return}function aBC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+40|0;g=f|0;c[g>>2]=18456;c[g+4>>2]=b;b=g+8|0;h=d;c[b>>2]=c[h>>2];c[b+4>>2]=c[h+4>>2];c[b+8>>2]=c[h+8>>2];c[b+12>>2]=c[h+12>>2];h=g+24|0;b=e;c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];b=c[a+48>>2]|0;dI[c[(c[b>>2]|0)+8>>2]&1023](b,g|0,d,e);i=f;return}function aBD(a,b,c){a=a|0;b=+b;c=c|0;aDD(c|0,0,16);return}function aBE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0;e=i;i=i+176|0;f=e+16|0;h=e+40|0;j=e+144|0;k=e+160|0;l=e|0;aDD(l|0,0,16);aDD(f|0,0,20);c[h>>2]=22472;aDD(h+4|0,0,16);g[h+20>>2]=1.0;m=h+24|0;n=m;c[n>>2]=c[l>>2];c[n+4>>2]=c[l+4>>2];c[n+8>>2]=c[l+8>>2];c[h+36>>2]=0;g[h+40>>2]=1.0;aDD(h+44|0,0,16);g[h+60>>2]=1.0;g[h+64>>2]=0.0;l=h+68|0;n=f+4|0;c[l>>2]=c[n>>2];c[l+4>>2]=c[n+4>>2];c[l+8>>2]=c[n+8>>2];c[l+12>>2]=c[n+12>>2];g[h+84>>2]=-999999984306749400.0;o=+g[d>>2];p=+g[d+4>>2];q=p*0.0;r=+g[d+8>>2];s=r*0.0;t=o*+g[m>>2]+p+s;p=o*+g[h+28>>2]+q+r;g[h+88>>2]=o+q+s;g[h+92>>2]=t;g[h+96>>2]=p;g[h+100>>2]=0.0;g[j>>2]=999999984306749400.0;g[j+4>>2]=999999984306749400.0;g[j+8>>2]=999999984306749400.0;g[j+12>>2]=0.0;m=c[(c[b>>2]|0)+60>>2]|0;g[k>>2]=-999999984306749400.0;g[k+4>>2]=-999999984306749400.0;g[k+8>>2]=-999999984306749400.0;g[k+12>>2]=0.0;dI[m&1023](b,h|0,k,j);j=h+4|0;h=a;c[h>>2]=c[j>>2];c[h+4>>2]=c[j+4>>2];c[h+8>>2]=c[j+8>>2];c[h+12>>2]=c[j+12>>2];i=e;return}function aBF(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aBG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0;e=a+84|0;d=a+4|0;f=+g[a+88>>2];h=+g[a+92>>2];i=+g[a+96>>2];j=f*+g[b>>2]+h*+g[b+4>>2]+i*+g[b+8>>2];k=+g[e>>2];if(j>k){g[e>>2]=j;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];l=j}else{l=k}a=b+16|0;k=f*+g[a>>2]+h*+g[b+20>>2]+i*+g[b+24>>2];if(k>l){g[e>>2]=k;m=a;c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];n=k}else{n=l}m=b+32|0;l=f*+g[m>>2]+h*+g[b+36>>2]+i*+g[b+40>>2];if(l<=n){return}g[e>>2]=l;e=m;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return}function aBH(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aBI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0.0,j=0.0,k=0,l=0.0,m=0.0,n=0;f=b|0;h=b+16|0;i=+g[f>>2];j=+g[h>>2];k=b+32|0;l=i<j?i:j;m=+g[k>>2];if((l<m?l:m)>+g[a+24>>2]){return}n=i>j?f:h;if(+g[(+g[n>>2]>m?n:k)>>2]<+g[a+8>>2]){return}k=b+8|0;n=b+24|0;m=+g[k>>2];j=+g[n>>2];h=b+40|0;i=m<j?m:j;l=+g[h>>2];if((i<l?i:l)>+g[a+32>>2]){return}f=m>j?k:n;if(+g[(+g[f>>2]>l?f:h)>>2]<+g[a+16>>2]){return}h=b+4|0;f=b+20|0;l=+g[h>>2];j=+g[f>>2];n=b+36|0;m=l<j?l:j;i=+g[n>>2];if((m<i?m:i)>+g[a+28>>2]){return}k=l>j?h:f;if(+g[(+g[k>>2]>i?k:n)>>2]<+g[a+12>>2]){return}n=c[a+4>>2]|0;dI[c[(c[n>>2]|0)+8>>2]&1023](n,b,d,e);return}function aBJ(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-20+16>>2]|0);return}function aBK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0.0,k=0.0,l=0.0;e=i;i=i+16|0;f=e|0;h=c[b+12>>2]|0;dA[c[(c[h>>2]|0)+64>>2]&511](f,h,d);j=+g[b+16>>2];k=+g[f+4>>2]*j;l=+g[f+8>>2]*j;g[a>>2]=+g[f>>2]*j;g[a+4>>2]=k;g[a+8>>2]=l;g[a+12>>2]=0.0;i=e;return}function aBL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0.0,i=0,j=0.0,k=0,l=0.0;f=c[a+12>>2]|0;dI[c[(c[f>>2]|0)+68>>2]&1023](f,b,d,e);if((e|0)<=0){return}b=a+16|0;a=0;do{f=d+(a<<4)|0;h=+g[b>>2];i=d+(a<<4)+4|0;j=h*+g[i>>2];k=d+(a<<4)+8|0;l=h*+g[k>>2];g[f>>2]=+g[f>>2]*h;g[i>>2]=j;g[k>>2]=l;g[d+(a<<4)+12>>2]=0.0;a=a+1|0;}while((a|0)<(e|0));return}function aBM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0.0,k=0.0,l=0.0;e=i;i=i+16|0;f=e|0;h=c[b+12>>2]|0;dA[c[(c[h>>2]|0)+60>>2]&511](f,h,d);j=+g[b+16>>2];k=+g[f+4>>2]*j;l=+g[f+8>>2]*j;g[a>>2]=+g[f>>2]*j;g[a+4>>2]=k;g[a+8>>2]=l;g[a+12>>2]=0.0;i=e;return}function aBN(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,h=0,j=0.0,k=0.0;e=i;i=i+16|0;f=e|0;h=c[a+12>>2]|0;cX[c[(c[h>>2]|0)+32>>2]&255](h|0,b,f);b=+g[a+16>>2];j=b*+g[f+4>>2];k=b*+g[f+8>>2];g[d>>2]=+g[f>>2]*b;g[d+4>>2]=j;g[d+8>>2]=k;g[d+12>>2]=0.0;i=e;return}function aBO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a,b,d,e);return}function aBP(a){a=a|0;return 16184|0}function aBQ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0.0,s=0,t=0.0,u=0,v=0.0,w=0,x=0.0,y=0,z=0.0,A=0,B=0.0,C=0,D=0.0,E=0,F=0.0,G=0,H=0.0,I=0.0,J=0.0,K=0,L=0,M=0,N=0,O=0.0,P=0.0,Q=0.0;f=i;i=i+256|0;h=f|0;j=f+96|0;k=f+192|0;l=f+208|0;m=f+224|0;n=f+240|0;g[h>>2]=1.0;aDD(h+4|0,0,16);g[h+20>>2]=1.0;aDD(h+24|0,0,16);g[h+40>>2]=1.0;g[h+44>>2]=0.0;g[h+48>>2]=-1.0;aDD(h+52|0,0,16);g[h+68>>2]=-1.0;aDD(h+72|0,0,16);g[h+88>>2]=-1.0;g[h+92>>2]=0.0;o=b|0;aDD(j|0,0,96);p=+g[o>>2];q=b+16|0;r=+g[q>>2];s=b+32|0;t=+g[s>>2];u=b+4|0;v=+g[u>>2];w=b+20|0;x=+g[w>>2];y=b+36|0;z=+g[y>>2];A=b+8|0;B=+g[A>>2];C=b+24|0;D=+g[C>>2];E=b+40|0;F=+g[E>>2];G=0;H=1.0;I=0.0;J=0.0;while(1){g[h+(G<<4)>>2]=p*H+r*I+t*J;g[h+(G<<4)+4>>2]=H*v+I*x+J*z;g[h+(G<<4)+8>>2]=H*B+I*D+J*F;g[h+(G<<4)+12>>2]=0.0;K=G+1|0;if((K|0)>=6){break}G=K;H=+g[h+(K<<4)>>2];I=+g[h+(K<<4)+4>>2];J=+g[h+(K<<4)+8>>2]}dI[c[(c[a>>2]|0)+68>>2]&1023](a,h|0,j|0,6);h=k|0;G=k+4|0;K=k+8|0;L=l|0;aDD(k|0,0,16);M=l+4|0;N=l+8|0;aDD(l|0,0,16);J=+g[o>>2];I=+g[u>>2];H=+g[A>>2];F=+g[b+48>>2];D=+g[q>>2];B=+g[w>>2];z=+g[C>>2];x=+g[b+52>>2];v=+g[s>>2];t=+g[y>>2];r=+g[E>>2];p=+g[b+56>>2];b=m|0;E=m+4|0;y=m+8|0;s=m+12|0;C=n|0;w=n+4|0;q=n+8|0;A=n+12|0;u=0;do{O=+g[j+(u<<4)>>2];P=+g[j+(u<<4)+4>>2];Q=+g[j+(u<<4)+8>>2];g[b>>2]=F+(J*O+I*P+H*Q);g[E>>2]=x+(O*D+P*B+Q*z);g[y>>2]=p+(O*v+P*t+Q*r);g[s>>2]=0.0;g[l+(u<<2)>>2]=+g[m+(u<<2)>>2];o=u+3|0;Q=+g[j+(o<<4)>>2];P=+g[j+(o<<4)+4>>2];O=+g[j+(o<<4)+8>>2];g[C>>2]=F+(J*Q+I*P+H*O);g[w>>2]=x+(Q*D+P*B+O*z);g[q>>2]=p+(Q*v+P*t+O*r);g[A>>2]=0.0;g[k+(u<<2)>>2]=+g[n+(u<<2)>>2];u=u+1|0;}while((u|0)<3);u=a;r=+dh[c[(c[u>>2]|0)+44>>2]&1023](a);t=+dh[c[(c[u>>2]|0)+44>>2]&1023](a);v=+dh[c[(c[u>>2]|0)+44>>2]&1023](a);p=+g[G>>2]-t;z=+g[K>>2]-v;g[d>>2]=+g[h>>2]-r;g[d+4>>2]=p;g[d+8>>2]=z;g[d+12>>2]=0.0;z=t+ +g[M>>2];t=v+ +g[N>>2];g[e>>2]=r+ +g[L>>2];g[e+4>>2]=z;g[e+8>>2]=t;g[e+12>>2]=0.0;i=f;return}function aBR(a,b){a=a|0;b=b|0;var d=0;d=c[a+12>>2]|0;cv[c[(c[d>>2]|0)+24>>2]&2047](d,b);return}function aBS(a){a=a|0;var b=0;b=c[a+12>>2]|0;return cA[c[(c[b>>2]|0)+28>>2]&4095](b)|0}function aBT(a,b){a=a|0;b=+b;var d=0;d=c[a+12>>2]|0;cq[c[(c[d>>2]|0)+40>>2]&1023](d,b);return}function aBU(a){a=a|0;var b=0,d=0.0;b=c[a+12>>2]|0;d=+dh[c[(c[b>>2]|0)+44>>2]&1023](b);return+(d*+g[a+16>>2])}function aBV(a){a=a|0;var b=0;b=c[a+12>>2]|0;return cA[c[(c[b>>2]|0)+76>>2]&4095](b)|0}function aBW(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+12>>2]|0;dA[c[(c[e>>2]|0)+80>>2]&511](e,b,d);return}function aBX(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;e=a+12|0;f=c[e>>2]|0;g=c[f+(((d+b|0)/2|0)<<3)>>2]|0;h=d;i=b;j=f;while(1){f=i;while(1){k=f+1|0;if((c[j+(f<<3)>>2]|0)<(g|0)){f=k}else{l=h;break}}while(1){m=j+(l<<3)|0;n=l-1|0;if((g|0)<(c[m>>2]|0)){l=n}else{break}}if((f|0)>(l|0)){o=l;p=f}else{q=j+(f<<3)|0;r=c[q>>2]|0;s=c[q+4>>2]|0;t=m;u=c[t+4>>2]|0;c[q>>2]=c[t>>2];c[q+4>>2]=u;u=(c[e>>2]|0)+(l<<3)|0;c[u>>2]=r;c[u+4>>2]=s;o=n;p=k}if((p|0)>(o|0)){break}h=o;i=p;j=c[e>>2]|0}if((o|0)>(b|0)){aBX(a,b,o)}if((p|0)>=(d|0)){return}aBX(a,p,d);return}function aBY(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=a|0;f=c[e>>2]|0;do{if((f|0)>3){g=b[d>>1]|0;if((g&8)!=0){h=f;i=g;j=1488;break}g=f-1|0;c[e>>2]=g;k=a+52|0;l=a+4+(g<<4)|0;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];l=a+132|0;k=a+84+(g<<4)|0;c[l>>2]=c[k>>2];c[l+4>>2]=c[k+4>>2];c[l+8>>2]=c[k+8>>2];c[l+12>>2]=c[k+12>>2];k=a+212|0;l=a+164+(g<<4)|0;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];m=g;j=1486}else{m=f;j=1486}}while(0);do{if((j|0)==1486){if((m|0)<=2){n=m;break}h=m;i=b[d>>1]|0;j=1488}}while(0);do{if((j|0)==1488){if((i&4)!=0){n=h;break}m=h-1|0;c[e>>2]=m;f=a+36|0;g=a+4+(m<<4)|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+116|0;f=a+84+(m<<4)|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=a+196|0;g=a+164+(m<<4)|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];n=m}}while(0);do{if((n|0)>1){h=b[d>>1]|0;if((h&2)!=0){o=n;p=h;break}h=n-1|0;c[e>>2]=h;i=a+20|0;m=a+4+(h<<4)|0;c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];m=a+100|0;i=a+84+(h<<4)|0;c[m>>2]=c[i>>2];c[m+4>>2]=c[i+4>>2];c[m+8>>2]=c[i+8>>2];c[m+12>>2]=c[i+12>>2];i=a+180|0;m=a+164+(h<<4)|0;c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];q=h;j=1493}else{q=n;j=1493}}while(0);do{if((j|0)==1493){if((q|0)>0){o=q;p=b[d>>1]|0;break}else{return}}}while(0);if((p&1)!=0){return}p=o-1|0;c[e>>2]=p;e=a+4|0;o=a+4+(p<<4)|0;c[e>>2]=c[o>>2];c[e+4>>2]=c[o+4>>2];c[e+8>>2]=c[o+8>>2];c[e+12>>2]=c[o+12>>2];o=a+84|0;e=a+84+(p<<4)|0;c[o>>2]=c[e>>2];c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];c[o+12>>2]=c[e+12>>2];e=a+164|0;o=a+164+(p<<4)|0;c[e>>2]=c[o>>2];c[e+4>>2]=c[o+4>>2];c[e+8>>2]=c[o+8>>2];c[e+12>>2]=c[o+12>>2];return}function aBZ(d){d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0,_=0,$=0,aa=0,ab=0.0,ac=0.0,ad=0.0,ae=0,af=0.0,ag=0;e=i;i=i+72|0;f=e|0;h=e+40|0;j=e+56|0;k=d+356|0;if((a[k]&1)==0){l=a[d+312|0]|0;m=l&1;n=m<<24>>24!=0;i=e;return n|0}o=d+316|0;p=d+336|0;q=d+332|0;r=q;s=p;aDD(s|0,0,17);t=b[r>>1]|0;u=t&-16;b[r>>1]=u;a[k]=0;switch(c[d>>2]|0){case 3:{aDD(h|0,0,16);aB$(h,d+4|0,d+20|0,d+36|0,o);v=+g[p>>2];h=d+340|0;w=+g[h>>2];k=d+344|0;x=+g[k>>2];y=+g[d+84>>2]*v+ +g[d+100>>2]*w+ +g[d+116>>2]*x;z=v*+g[d+88>>2]+w*+g[d+104>>2]+x*+g[d+120>>2];A=v*+g[d+92>>2]+w*+g[d+108>>2]+x*+g[d+124>>2];g[d+244>>2]=y;g[d+248>>2]=z;g[d+252>>2]=A;g[d+256>>2]=0.0;B=+g[d+164>>2]*v+ +g[d+180>>2]*w+ +g[d+196>>2]*x;C=v*+g[d+168>>2]+w*+g[d+184>>2]+x*+g[d+200>>2];D=v*+g[d+172>>2]+w*+g[d+188>>2]+x*+g[d+204>>2];g[d+260>>2]=B;g[d+264>>2]=C;g[d+268>>2]=D;g[d+272>>2]=0.0;g[d+276>>2]=y-B;g[d+280>>2]=z-C;g[d+284>>2]=A-D;g[d+288>>2]=0.0;aBY(d,q);do{if(+g[p>>2]<0.0){E=0}else{if(+g[h>>2]<0.0){E=0;break}if(+g[k>>2]<0.0){E=0;break}E=+g[d+348>>2]>=0.0|0}}while(0);a[d+312|0]=E;l=E;m=l&1;n=m<<24>>24!=0;i=e;return n|0};case 4:{E=d+4|0;k=d+20|0;h=d+36|0;F=d+52|0;G=j;aDD(G|0,0,16);H=f+16|0;b[H>>1]=0;I=o;c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];b[r>>1]=t|15;D=+g[k>>2];A=+g[E>>2];C=D-A;z=+g[d+24>>2];B=+g[d+8>>2];y=z-B;x=+g[d+28>>2];w=+g[d+12>>2];v=x-w;J=+g[h>>2];K=J-A;L=+g[d+40>>2];M=L-B;N=+g[d+44>>2];O=N-w;P=y*O-v*M;Q=v*K-C*O;R=C*M-y*K;S=+g[F>>2];T=S-A;U=+g[d+56>>2];V=U-B;W=+g[d+60>>2];X=W-w;Y=T*P+V*Q+R*X;if(Y*Y<9.99999905104687e-9){Z=-1}else{Z=Y*(Q*(0.0-B)+P*(0.0-A)+R*(0.0-w))<0.0|0}R=M*X-O*V;P=O*T-K*X;Q=K*V-M*T;Y=C*R+y*P+Q*v;if(Y*Y<9.99999905104687e-9){_=-1}else{_=Y*(P*(0.0-B)+R*(0.0-A)+Q*(0.0-w))<0.0|0}Q=V*v-X*y;R=X*C-T*v;v=T*y-V*C;C=K*Q+M*R+v*O;if(C*C<9.99999905104687e-9){$=-1}else{$=C*(R*(0.0-B)+Q*(0.0-A)+v*(0.0-w))<0.0|0}v=S-D;S=U-z;U=W-x;W=J-D;J=L-z;L=N-x;N=S*L-U*J;Q=U*W-v*L;L=v*J-S*W;W=(A-D)*N+(B-z)*Q+L*(w-x);if(W*W<9.99999905104687e-9){aa=-1}else{aa=W*(Q*(0.0-z)+N*(0.0-D)+L*(0.0-x))<0.0|0}if((_|Z|$|aa|0)<0){a[d+352|0]=1;a[d+312|0]=0;l=0;m=l&1;n=m<<24>>24!=0;i=e;return n|0}t=(Z|0)!=0;Z=(_|0)==0;_=($|0)==0;$=(aa|0)==0;if(Z&(t^1)&_&$){a[d+312|0]=1;aDD(d+276|0,0,16);l=1;m=l&1;n=m<<24>>24!=0;i=e;return n|0}do{if(t){aB$(j,E,k,h,f);x=+g[f>>2];L=+g[f+4>>2];D=+g[f+8>>2];N=x- +g[j>>2];z=L- +g[j+4>>2];Q=D- +g[j+8>>2];W=N*N+z*z+Q*Q;if(W>=3.4028234663852886e+38){ab=3.4028234663852886e+38;break}Q=+g[f+12>>2];g[o>>2]=x;g[d+320>>2]=L;g[d+324>>2]=D;g[d+328>>2]=Q;aa=b[H>>1]|0;b[r>>1]=aa&1|b[r>>1]&-16|aa&2|aa&4;Q=+g[f+24>>2];D=+g[f+28>>2];g[p>>2]=+g[f+20>>2];g[d+340>>2]=Q;g[d+344>>2]=D;g[d+348>>2]=0.0;ab=W}else{ab=3.4028234663852886e+38}}while(0);do{if(Z){ac=ab}else{aB$(j,E,h,F,f);W=+g[f>>2];D=+g[f+4>>2];Q=+g[f+8>>2];L=W- +g[j>>2];x=D- +g[j+4>>2];z=Q- +g[j+8>>2];N=L*L+x*x+z*z;if(N>=ab){ac=ab;break}z=+g[f+12>>2];g[o>>2]=W;g[d+320>>2]=D;g[d+324>>2]=Q;g[d+328>>2]=z;t=b[H>>1]|0;b[r>>1]=(t&65535)>>>1<<2&4|(t&1|b[r>>1]&-16)|(t&65535)>>>2<<3&8;z=+g[f+24>>2];Q=+g[f+28>>2];g[p>>2]=+g[f+20>>2];g[d+340>>2]=0.0;g[d+344>>2]=z;g[d+348>>2]=Q;ac=N}}while(0);do{if(_){ad=ac}else{aB$(j,E,F,k,f);ab=+g[f>>2];N=+g[f+4>>2];Q=+g[f+8>>2];z=ab- +g[j>>2];D=N- +g[j+4>>2];W=Q- +g[j+8>>2];x=z*z+D*D+W*W;if(x>=ac){ad=ac;break}W=+g[f+12>>2];g[o>>2]=ab;g[d+320>>2]=N;g[d+324>>2]=Q;g[d+328>>2]=W;Z=b[H>>1]|0;b[r>>1]=(Z&65535)>>>2<<1&2|(Z&1|b[r>>1]&-16)|(Z&65535)>>>1<<3&8;W=+g[f+28>>2];Q=+g[f+24>>2];g[p>>2]=+g[f+20>>2];g[d+340>>2]=W;g[d+344>>2]=0.0;g[d+348>>2]=Q;ad=x}}while(0);do{if(!$){aB$(j,k,F,h,f);ac=+g[f>>2];x=+g[f+4>>2];Q=+g[f+8>>2];W=ac- +g[j>>2];N=x- +g[j+4>>2];ab=Q- +g[j+8>>2];if(W*W+N*N+ab*ab>=ad){break}ab=+g[f+12>>2];g[o>>2]=ac;g[d+320>>2]=x;g[d+324>>2]=Q;g[d+328>>2]=ab;E=b[H>>1]|0;b[r>>1]=(E&65535)>>>1<<3&8|(E<<1&2|b[r>>1]&-16|E&4);ab=+g[f+20>>2];Q=+g[f+28>>2];x=+g[f+24>>2];g[p>>2]=0.0;g[d+340>>2]=ab;g[d+344>>2]=Q;g[d+348>>2]=x}}while(0);ad=+g[p>>2];f=d+340|0;x=+g[f>>2];H=d+344|0;Q=+g[H>>2];o=d+348|0;ab=+g[o>>2];ac=+g[d+84>>2]*ad+ +g[d+100>>2]*x+ +g[d+116>>2]*Q+ +g[d+132>>2]*ab;N=ad*+g[d+88>>2]+x*+g[d+104>>2]+Q*+g[d+120>>2]+ab*+g[d+136>>2];W=ad*+g[d+92>>2]+x*+g[d+108>>2]+Q*+g[d+124>>2]+ab*+g[d+140>>2];g[d+244>>2]=ac;g[d+248>>2]=N;g[d+252>>2]=W;g[d+256>>2]=0.0;D=+g[d+164>>2]*ad+ +g[d+180>>2]*x+ +g[d+196>>2]*Q+ +g[d+212>>2]*ab;z=ad*+g[d+168>>2]+x*+g[d+184>>2]+Q*+g[d+200>>2]+ab*+g[d+216>>2];L=ad*+g[d+172>>2]+x*+g[d+188>>2]+Q*+g[d+204>>2]+ab*+g[d+220>>2];g[d+260>>2]=D;g[d+264>>2]=z;g[d+268>>2]=L;g[d+272>>2]=0.0;g[d+276>>2]=ac-D;g[d+280>>2]=N-z;g[d+284>>2]=W-L;g[d+288>>2]=0.0;aBY(d,q);do{if(+g[p>>2]<0.0){ae=0}else{if(+g[f>>2]<0.0){ae=0;break}if(+g[H>>2]<0.0){ae=0;break}ae=+g[o>>2]>=0.0|0}}while(0);a[d+312|0]=ae;l=ae;m=l&1;n=m<<24>>24!=0;i=e;return n|0};case 0:{a[d+312|0]=0;l=0;m=l&1;n=m<<24>>24!=0;i=e;return n|0};case 1:{ae=d+244|0;o=ae;H=d+84|0;c[o>>2]=c[H>>2];c[o+4>>2]=c[H+4>>2];c[o+8>>2]=c[H+8>>2];c[o+12>>2]=c[H+12>>2];H=d+260|0;o=H;f=d+164|0;c[o>>2]=c[f>>2];c[o+4>>2]=c[f+4>>2];c[o+8>>2]=c[f+8>>2];c[o+12>>2]=c[f+12>>2];L=+g[d+248>>2]- +g[d+264>>2];W=+g[d+252>>2]- +g[d+268>>2];g[d+276>>2]=+g[ae>>2]- +g[H>>2];g[d+280>>2]=L;g[d+284>>2]=W;g[d+288>>2]=0.0;aDD(s|0,0,17);b[r>>1]=u;g[p>>2]=1.0;g[d+340>>2]=0.0;g[d+344>>2]=0.0;g[d+348>>2]=0.0;a[d+312|0]=1;l=1;m=l&1;n=m<<24>>24!=0;i=e;return n|0};case 2:{W=+g[d+4>>2];L=+g[d+8>>2];z=+g[d+12>>2];N=+g[d+20>>2]-W;D=+g[d+24>>2]-L;ac=+g[d+28>>2]-z;ab=(0.0-W)*N+(0.0-L)*D+(0.0-z)*ac;do{if(ab>0.0){z=N*N+D*D+ac*ac;if(ab<z){b[r>>1]=u|3;af=ab/z;break}else{b[r>>1]=u|2;af=1.0;break}}else{b[r>>1]=u|1;af=0.0}}while(0);g[p>>2]=1.0-af;u=d+340|0;g[u>>2]=af;r=d+344|0;g[r>>2]=0.0;s=d+348|0;g[s>>2]=0.0;ab=+g[d+84>>2];ac=+g[d+88>>2];D=+g[d+92>>2];N=ab+af*(+g[d+100>>2]-ab);ab=ac+af*(+g[d+104>>2]-ac);ac=D+af*(+g[d+108>>2]-D);g[d+244>>2]=N;g[d+248>>2]=ab;g[d+252>>2]=ac;g[d+256>>2]=0.0;D=+g[d+164>>2];z=+g[d+168>>2];L=+g[d+172>>2];W=D+af*(+g[d+180>>2]-D);D=z+af*(+g[d+184>>2]-z);z=L+af*(+g[d+188>>2]-L);g[d+260>>2]=W;g[d+264>>2]=D;g[d+268>>2]=z;g[d+272>>2]=0.0;g[d+276>>2]=N-W;g[d+280>>2]=ab-D;g[d+284>>2]=ac-z;g[d+288>>2]=0.0;aBY(d,q);do{if(+g[p>>2]<0.0){ag=0}else{if(+g[u>>2]<0.0){ag=0;break}if(+g[r>>2]<0.0){ag=0;break}ag=+g[s>>2]>=0.0|0}}while(0);a[d+312|0]=ag;l=ag;m=l&1;n=m<<24>>24!=0;i=e;return n|0};default:{a[d+312|0]=0;l=0;m=l&1;n=m<<24>>24!=0;i=e;return n|0}}return 0}function aB_(a){a=a|0;return}function aB$(a,d,e,f,h){a=a|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0,I=0.0,J=0.0;i=h+16|0;j=b[i>>1]&-16;b[i>>1]=j;k=+g[e>>2];l=+g[d>>2];m=k-l;n=+g[e+4>>2];o=+g[d+4>>2];p=n-o;q=+g[e+8>>2];r=+g[d+8>>2];s=q-r;t=+g[f>>2];u=t-l;v=+g[f+4>>2];w=v-o;x=+g[f+8>>2];y=x-r;z=+g[a>>2];A=z-l;B=+g[a+4>>2];C=B-o;D=+g[a+8>>2];E=D-r;F=m*A+p*C+s*E;G=u*A+w*C+y*E;if(!(F>0.0|G>0.0)){a=h;H=d;c[a>>2]=c[H>>2];c[a+4>>2]=c[H+4>>2];c[a+8>>2]=c[H+8>>2];c[a+12>>2]=c[H+12>>2];b[i>>1]=j|1;g[h+20>>2]=1.0;g[h+24>>2]=0.0;g[h+28>>2]=0.0;g[h+32>>2]=0.0;return}E=z-k;C=B-n;A=D-q;I=m*E+p*C+s*A;J=u*E+w*C+y*A;if(!(I<0.0|J>I)){H=h;a=e;c[H>>2]=c[a>>2];c[H+4>>2]=c[a+4>>2];c[H+8>>2]=c[a+8>>2];c[H+12>>2]=c[a+12>>2];b[i>>1]=j|2;g[h+20>>2]=0.0;g[h+24>>2]=1.0;g[h+28>>2]=0.0;g[h+32>>2]=0.0;return}A=F*J-I*G;if(!(A>0.0|F<0.0|I>0.0)){C=F/(F-I);g[h>>2]=l+m*C;g[h+4>>2]=o+p*C;g[h+8>>2]=r+s*C;g[h+12>>2]=0.0;b[i>>1]=j|3;g[h+20>>2]=1.0-C;g[h+24>>2]=C;g[h+28>>2]=0.0;g[h+32>>2]=0.0;return}C=z-t;z=B-v;B=D-x;D=m*C+p*z+s*B;E=u*C+w*z+y*B;if(!(E<0.0|D>E)){a=h;H=f;c[a>>2]=c[H>>2];c[a+4>>2]=c[H+4>>2];c[a+8>>2]=c[H+8>>2];c[a+12>>2]=c[H+12>>2];b[i>>1]=j|4;g[h+20>>2]=0.0;g[h+24>>2]=0.0;g[h+28>>2]=1.0;g[h+32>>2]=0.0;return}B=D*G-F*E;if(!(B>0.0|G<0.0|E>0.0)){F=G/(G-E);g[h>>2]=l+u*F;g[h+4>>2]=o+w*F;g[h+8>>2]=r+y*F;g[h+12>>2]=0.0;b[i>>1]=j|5;g[h+20>>2]=1.0-F;g[h+24>>2]=0.0;g[h+28>>2]=F;g[h+32>>2]=0.0;return}F=I*E-D*J;do{if(F<=0.0){G=J-I;if(G<0.0){break}z=D-E;if(z<0.0){break}C=G/(G+z);g[h>>2]=k+(t-k)*C;g[h+4>>2]=n+(v-n)*C;g[h+8>>2]=q+(x-q)*C;g[h+12>>2]=0.0;b[i>>1]=j|6;g[h+20>>2]=0.0;g[h+24>>2]=1.0-C;g[h+28>>2]=C;g[h+32>>2]=0.0;return}}while(0);q=1.0/(A+(F+B));F=B*q;B=A*q;g[h>>2]=u*B+(l+m*F);g[h+4>>2]=w*B+(o+p*F);g[h+8>>2]=y*B+(s*F+r);g[h+12>>2]=0.0;b[i>>1]=j|7;g[h+20>>2]=1.0-F-B;g[h+24>>2]=F;g[h+28>>2]=B;g[h+32>>2]=0.0;return}
function aB0(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0.0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0.0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0,aq=0.0,ar=0.0,as=0.0,at=0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0.0,aB=0.0;e=i;i=i+96|0;h=e|0;j=e+16|0;k=e+32|0;l=e+48|0;m=e+64|0;n=e+80|0;o=b+112|0;p=+g[b+48>>2]- +g[o>>2];q=b+116|0;r=+g[b+52>>2]- +g[q>>2];s=b+120|0;t=+g[b+56>>2]- +g[s>>2];u=b+64|0;v=b+80|0;w=b+96|0;x=b+68|0;y=b+84|0;z=b+100|0;A=b+72|0;B=b+88|0;C=b+104|0;D=p*+g[u>>2]+r*+g[v>>2]+t*+g[w>>2];E=p*+g[x>>2]+r*+g[y>>2]+t*+g[z>>2];F=p*+g[A>>2]+r*+g[B>>2]+t*+g[C>>2];b=a+8|0;G=c[b>>2]|0;H=c[a+4>>2]|0;t=+g[H+28>>2]*+g[H+12>>2];r=t+ +g[a+12>>2];p=+g[G+72>>2];I=+g[G+56>>2];J=p-I;K=+g[G+76>>2];L=+g[G+60>>2];M=K-L;N=+g[G+80>>2];O=+g[G+64>>2];P=N-O;R=+g[G+88>>2];S=R-I;T=+g[G+92>>2];U=T-L;V=+g[G+96>>2];W=V-O;X=M*W-P*U;Y=P*S-J*W;W=J*U-M*S;S=1.0/+Q(+(W*W+(X*X+Y*Y)));U=S*X;X=S*Y;Y=S*W;W=D-I;S=E-L;Z=F-O;_=W*U+X*S+Y*Z;if(_<0.0){$=_*-1.0;aa=U*-1.0;ab=X*-1.0;ac=Y*-1.0}else{$=_;aa=U;ab=X;ac=Y}if($>=r){i=e;return}Y=R-p;X=T-K;U=V-N;_=I-R;I=L-T;L=O-V;O=Z*(J*ab-M*aa)+(W*(M*ac-P*ab)+S*(P*aa-J*ac));J=(F-N)*(Y*ab-X*aa)+((D-p)*(X*ac-U*ab)+(E-K)*(U*aa-Y*ac));Y=(F-V)*(_*ab-I*aa)+((D-R)*(I*ac-L*ab)+(E-T)*(L*aa-_*ac));do{if(O>0.0&J>0.0&Y>0.0){ad=1590}else{if(!(O>0.0|J>0.0|Y>0.0)){ad=1590;break}_=r*r;if((cA[c[(c[G>>2]|0)+92>>2]&4095](G)|0)<=0){i=e;return}a=h|0;H=h+4|0;ae=h+8|0;af=j|0;ag=j+4|0;ah=j+8|0;L=0.0;T=0.0;I=0.0;ai=0;aj=0;while(1){ak=c[b>>2]|0;dI[c[(c[ak>>2]|0)+96>>2]&1023](ak,ai,h,j);R=+g[a>>2];V=D-R;U=+g[H>>2];K=E-U;X=+g[ae>>2];p=F-X;N=+g[af>>2]-R;P=+g[ag>>2]-U;S=+g[ah>>2]-X;M=V*N+K*P+p*S;do{if(M>0.0){W=N*N+P*P+S*S;if(M<W){Z=M/W;al=Z;am=V-N*Z;an=K-P*Z;ao=p-S*Z;break}else{al=1.0;am=V-N;an=K-P;ao=p-S;break}}else{al=0.0;am=V;an=K;ao=p}}while(0);if(ao*ao+(an*an+am*am)<_){ap=1;aq=R+N*al;ar=U+P*al;as=X+S*al}else{ap=aj;aq=I;ar=T;as=L}ak=ai+1|0;at=c[b>>2]|0;if((ak|0)<(cA[c[(c[at>>2]|0)+92>>2]&4095](at)|0)){L=as;T=ar;I=aq;ai=ak;aj=ap}else{break}}if((ap&1)!=0){au=aq;av=ar;aw=as;ax=_;break}i=e;return}}while(0);if((ad|0)==1590){au=D-aa*$;av=E-ab*$;aw=F-ac*$;ax=r*r}r=D-au;D=E-av;E=F-aw;F=r*r+D*D+E*E;if(F>=ax){i=e;return}if(F>1.1920928955078125e-7){ax=+Q(+F);F=1.0/ax;ay=t-ax;az=E*F;aA=D*F;aB=r*F}else{ay=t;az=ac;aA=ab;aB=aa}aa=-0.0-ay;if(f){ay=+g[u>>2];ab=+g[x>>2];ac=+g[A>>2];t=ay*aB+ab*aA+ac*az;F=+g[v>>2];r=+g[y>>2];D=+g[B>>2];E=aB*F+aA*r+az*D;ax=+g[w>>2];$=+g[z>>2];as=+g[C>>2];ar=aB*ax+aA*$+az*as;g[k>>2]=-0.0-t;g[k+4>>2]=-0.0-E;g[k+8>>2]=-0.0-ar;g[k+12>>2]=0.0;aq=+g[q>>2]+(au*F+av*r+aw*D)+E*aa;E=+g[s>>2]+(au*ax+av*$+aw*as)+ar*aa;g[l>>2]=+g[o>>2]+(ay*au+ab*av+ac*aw)+t*aa;g[l+4>>2]=aq;g[l+8>>2]=E;g[l+12>>2]=0.0;dw[c[(c[d>>2]|0)+16>>2]&127](d,k,l,aa);i=e;return}else{l=c[(c[d>>2]|0)+16>>2]|0;E=+g[u>>2];aq=+g[x>>2];t=+g[A>>2];ac=+g[v>>2];ab=+g[y>>2];ay=+g[B>>2];ar=+g[w>>2];as=+g[z>>2];$=+g[C>>2];g[m>>2]=E*aB+aq*aA+t*az;g[m+4>>2]=aB*ac+aA*ab+az*ay;g[m+8>>2]=aB*ar+aA*as+az*$;g[m+12>>2]=0.0;az=+g[q>>2]+(au*ac+av*ab+aw*ay);ay=+g[s>>2]+(au*ar+av*as+aw*$);g[n>>2]=+g[o>>2]+(E*au+aq*av+t*aw);g[n+4>>2]=az;g[n+8>>2]=ay;g[n+12>>2]=0.0;dw[l&127](d,m,n,aa);i=e;return}}function aB1(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aB2(b){b=b|0;var d=0,e=0,f=0;c[b>>2]=20448;if((a[b+8|0]&1)==0){d=b;aDB(d);return}e=c[b+12>>2]|0;if((e|0)==0){d=b;aDB(d);return}f=c[b+4>>2]|0;cv[c[(c[f>>2]|0)+16>>2]&2047](f,e);d=b;aDB(d);return}function aB3(b){b=b|0;var d=0,e=0;c[b>>2]=20448;if((a[b+8|0]&1)==0){return}d=c[b+12>>2]|0;if((d|0)==0){return}e=c[b+4>>2]|0;cv[c[(c[e>>2]|0)+16>>2]&2047](e,d);return}function aB4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+1.0}function aB5(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;i=i+152|0;k=j|0;l=j+136|0;m=c[b+12>>2]|0;if((m|0)==0){i=j;return}n=c[d+192>>2]|0;o=c[e+192>>2]|0;p=h+4|0;c[p>>2]=m;c[k+132>>2]=0;g[k+128>>2]=999999984306749400.0;m=k;q=d+4|0;c[m>>2]=c[q>>2];c[m+4>>2]=c[q+4>>2];c[m+8>>2]=c[q+8>>2];c[m+12>>2]=c[q+12>>2];q=k+16|0;m=d+20|0;c[q>>2]=c[m>>2];c[q+4>>2]=c[m+4>>2];c[q+8>>2]=c[m+8>>2];c[q+12>>2]=c[m+12>>2];m=k+32|0;q=d+36|0;c[m>>2]=c[q>>2];c[m+4>>2]=c[q+4>>2];c[m+8>>2]=c[q+8>>2];c[m+12>>2]=c[q+12>>2];q=k+48|0;m=d+52|0;c[q>>2]=c[m>>2];c[q+4>>2]=c[m+4>>2];c[q+8>>2]=c[m+8>>2];c[q+12>>2]=c[m+12>>2];m=k+64|0;q=e+4|0;c[m>>2]=c[q>>2];c[m+4>>2]=c[q+4>>2];c[m+8>>2]=c[q+8>>2];c[m+12>>2]=c[q+12>>2];q=k+80|0;m=e+20|0;c[q>>2]=c[m>>2];c[q+4>>2]=c[m+4>>2];c[q+8>>2]=c[m+8>>2];c[q+12>>2]=c[m+12>>2];m=k+96|0;q=e+36|0;c[m>>2]=c[q>>2];c[m+4>>2]=c[q+4>>2];c[m+8>>2]=c[q+8>>2];c[m+12>>2]=c[q+12>>2];q=k+112|0;m=e+52|0;c[q>>2]=c[m>>2];c[q+4>>2]=c[m+4>>2];c[q+8>>2]=c[m+8>>2];c[q+12>>2]=c[m+12>>2];c[l>>2]=24424;c[l+4>>2]=n;c[l+8>>2]=o;aB7(l,k,h|0,c[f+20>>2]|0,0);if((a[b+8|0]&1)==0){i=j;return}b=c[p>>2]|0;if((c[b+1116>>2]|0)==0){i=j;return}if((c[b+1108>>2]|0)==(c[h+136>>2]|0)){ay6(b,h+8|0,h+72|0);i=j;return}else{ay6(b,h+72|0,h+8|0);i=j;return}}function aB6(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=b+12|0;if((c[e>>2]|0)==0){return}if((a[b+8|0]&1)==0){return}b=d+4|0;f=c[b>>2]|0;g=d+8|0;do{if((f|0)==(c[g>>2]|0)){h=(f|0)==0?1:f<<1;if((f|0)>=(h|0)){i=f;break}if((h|0)==0){j=0;k=f}else{c[9806]=(c[9806]|0)+1;l=aDx((h<<2)+19|0)|0;if((l|0)==0){m=0}else{n=-(l+4|0)&15;c[l+n>>2]=l;m=l+(n+4)|0}j=m;k=c[b>>2]|0}n=d+12|0;if((k|0)>0){l=0;do{o=j+(l<<2)|0;if((o|0)!=0){c[o>>2]=c[(c[n>>2]|0)+(l<<2)>>2]}l=l+1|0;}while((l|0)<(k|0))}l=c[n>>2]|0;o=d+16|0;if((l|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-4>>2]|0)}c[n>>2]=0}a[o]=1;c[n>>2]=j;c[g>>2]=h;i=c[b>>2]|0}else{i=f}}while(0);f=(c[d+12>>2]|0)+(i<<2)|0;if((f|0)==0){p=i}else{c[f>>2]=c[e>>2];p=c[b>>2]|0}c[b>>2]=p+1;return}function aB7(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0,H=0.0,I=0,J=0.0,K=0,L=0.0,M=0,N=0.0,O=0,R=0.0,S=0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0,af=0.0,ag=0.0,ah=0.0,ai=0,aj=0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0.0,aB=0.0,aC=0.0,aD=0.0,aE=0.0,aF=0.0,aG=0.0,aH=0.0,aI=0.0,aJ=0.0,aK=0.0,aL=0.0,aM=0.0,aN=0.0,aO=0.0,aP=0.0,aQ=0,aR=0,aS=0,aT=0.0,aU=0,aV=0,aW=0,aX=0.0,aY=0,aZ=0,a_=0,a$=0.0,a0=0,a1=0,a2=0,a3=0.0,a4=0,a5=0,a6=0,a7=0.0,a8=0,a9=0,ba=0,bb=0.0,bc=0,bd=0,be=0,bf=0.0,bg=0.0,bh=0.0,bi=0.0,bj=0,bk=0,bl=0,bm=0.0,bn=0.0,bo=0.0,bp=0.0,bq=0,br=0,bs=0,bt=0.0,bu=0.0,bv=0.0,bw=0.0,bx=0,by=0,bz=0,bA=0.0,bB=0.0,bC=0.0,bD=0.0,bE=0,bF=0,bG=0,bH=0.0,bI=0.0,bJ=0.0,bK=0.0,bL=0,bM=0,bN=0,bO=0.0,bP=0.0,bQ=0.0,bR=0.0,bS=0,bT=0,bU=0,bV=0.0,bW=0.0,bX=0.0,bY=0.0,bZ=0,b_=0,b$=0,b0=0.0,b1=0.0,b2=0.0,b3=0.0,b4=0,b5=0,b6=0,b7=0.0,b8=0.0,b9=0.0,ca=0.0,cb=0,cc=0,cd=0.0,ce=0.0,cf=0.0,cg=0.0,ch=0.0,ci=0.0,cj=0.0,ck=0.0,cl=0.0,cm=0.0,cn=0.0,co=0,cp=0,cq=0,cr=0,cs=0,ct=0,cu=0.0,cv=0,cw=0,cx=0,cy=0.0,cz=0.0,cA=0.0,cB=0,cC=0,cD=0,cE=0,cF=0,cG=0,cH=0.0,cI=0.0,cJ=0,cK=0,cL=0,cM=0,cN=0,cO=0,cP=0,cQ=0,cR=0,cS=0,cT=0.0,cU=0.0,cV=0,cW=0,cX=0,cY=0,cZ=0.0,c_=0.0,c$=0.0,c0=0.0,c1=0.0,c2=0.0,c3=0,c4=0,c5=0,c6=0,c7=0.0,c8=0.0,c9=0,da=0.0;f=i;i=i+696|0;e=f|0;h=f+32|0;j=f+64|0;k=f+128|0;l=f+144|0;m=f+160|0;n=f+176|0;o=f+192|0;p=f+208|0;q=f+240|0;r=f+248|0;s=f+312|0;t=f+408|0;u=f+440|0;v=f+456|0;w=f+472|0;x=f+488|0;y=f+504|0;z=f+536|0;A=f+552|0;B=f+568|0;C=f+584|0;D=f+600|0;E=f+648|0;F=+g[b>>2];G=D|0;g[G>>2]=F;H=+g[b+64>>2];I=E|0;g[I>>2]=H;J=+g[b+4>>2];K=D+4|0;g[K>>2]=J;L=+g[b+68>>2];M=E+4|0;g[M>>2]=L;N=+g[b+8>>2];O=D+8|0;g[O>>2]=N;R=+g[b+72>>2];S=E+8|0;g[S>>2]=R;T=+g[b+16>>2];g[D+16>>2]=T;U=+g[b+80>>2];g[E+16>>2]=U;V=+g[b+20>>2];g[D+20>>2]=V;W=+g[b+84>>2];g[E+20>>2]=W;X=+g[b+24>>2];g[D+24>>2]=X;Z=+g[b+88>>2];g[E+24>>2]=Z;_=+g[b+32>>2];g[D+32>>2]=_;$=+g[b+96>>2];g[E+32>>2]=$;aa=+g[b+36>>2];g[D+36>>2]=aa;ab=+g[b+100>>2];g[E+36>>2]=ab;ac=+g[b+40>>2];g[D+40>>2]=ac;ad=+g[b+104>>2];g[E+40>>2]=ad;ae=c[a+4>>2]|0;af=+g[ae+28>>2];ag=+g[ae+32>>2];ah=+g[ae+36>>2];ai=ae|0;aj=ae;ak=+dh[c[(c[aj>>2]|0)+44>>2]&1023](ai);al=+dh[c[(c[aj>>2]|0)+44>>2]&1023](ai);am=(ah+ +dh[c[(c[aj>>2]|0)+44>>2]&1023](ai))*2.0;ai=b+112|0;aj=c[a+8>>2]|0;ah=+g[aj+28>>2];an=+g[aj+32>>2];ao=+g[aj+36>>2];a=aj|0;ae=aj;ap=+dh[c[(c[ae>>2]|0)+44>>2]&1023](a);aq=+dh[c[(c[ae>>2]|0)+44>>2]&1023](a);ar=(ao+ +dh[c[(c[ae>>2]|0)+44>>2]&1023](a))*2.0;a=m;ae=r;aj=ai;as=ai|0;ai=b+48|0;ao=+g[ai>>2];at=+g[as>>2]-ao;au=+g[b+52>>2];av=+g[b+116>>2]-au;aw=+g[b+56>>2];ax=+g[b+120>>2]-aw;ay=at*F+av*T+ax*_;az=at*J+av*V+ax*aa;aA=at*N+av*X+ax*ac;aB=(af+ak)*2.0*.5;b=k|0;g[b>>2]=aB;ak=(ag+al)*2.0*.5;g[k+4>>2]=ak;al=am*.5;g[k+8>>2]=al;am=(ah+ap)*2.0*.5;k=l|0;g[k>>2]=am;ap=(an+aq)*2.0*.5;g[l+4>>2]=ap;aq=ar*.5;g[l+8>>2]=aq;ar=F*H+T*U+_*$;an=F*L+T*W+_*ab;ah=F*R+T*Z+_*ad;ag=H*J+U*V+$*aa;af=L*J+W*V+ab*aa;aC=R*J+Z*V+ad*aa;aD=H*N+U*X+$*ac;aE=L*N+W*X+ab*ac;aF=R*N+Z*X+ad*ac;aG=+P(+ar);aH=+P(+an);aI=+P(+ah);aJ=+P(+ag);aK=+P(+af);aL=+P(+aC);aM=+P(+aD);aN=+P(+aE);aO=+P(+aF);aP=+P(+ay)-(aq*aI+(aB+aG*am+aH*ap));if(aP>0.0){i=f;return}if(aP>-3.4028234663852886e+38){aQ=G;aR=1;aS=ay<0.0|0;aT=aP}else{aQ=0;aR=0;aS=0;aT=-3.4028234663852886e+38}aP=+P(+az)-(ak+aJ*am+aK*ap+aL*aq);if(aP>0.0){i=f;return}if(aP>aT){aU=K;aV=2;aW=az<0.0|0;aX=aP}else{aU=aQ;aV=aR;aW=aS;aX=aT}aT=+P(+aA)-(al+aM*am+aN*ap+aO*aq);if(aT>0.0){i=f;return}if(aT>aX){aY=O;aZ=3;a_=aA<0.0|0;a$=aT}else{aY=aU;aZ=aV;a_=aW;a$=aX}aX=at*H+av*U+ax*$;aT=+P(+aX)-(am+(aG*aB+aJ*ak+aM*al));if(aT>0.0){i=f;return}if(aT>a$){a0=I;a1=4;a2=aX<0.0|0;a3=aT}else{a0=aY;a1=aZ;a2=a_;a3=a$}a$=at*L+av*W+ax*ab;aT=+P(+a$)-(ap+(aH*aB+aK*ak+aN*al));if(aT>0.0){i=f;return}if(aT>a3){a4=M;a5=5;a6=a$<0.0|0;a7=aT}else{a4=a0;a5=a1;a6=a2;a7=a3}a3=at*R+av*Z+ax*ad;ax=+P(+a3)-(aq+(aI*aB+aL*ak+aO*al));if(ax>0.0){i=f;return}if(ax>a7){a8=S;a9=6;ba=a3<0.0|0;bb=ax}else{a8=a4;a9=a5;ba=a6;bb=a7}a7=aG+9999999747378752.0e-21;aG=aH+9999999747378752.0e-21;aH=aI+9999999747378752.0e-21;aI=aJ+9999999747378752.0e-21;aJ=aK+9999999747378752.0e-21;aK=aL+9999999747378752.0e-21;aL=aM+9999999747378752.0e-21;aM=aN+9999999747378752.0e-21;aN=aO+9999999747378752.0e-21;aO=aA*ag-az*aD;ax=+P(+aO)-(aL*ak+aI*al+aH*ap+aG*aq);if(ax>1.1920928955078125e-7){i=f;return}a3=-0.0-aD;av=aD*aD+0.0;at=ag*ag;aT=+Q(+(at+av));do{if(aT>1.1920928955078125e-7){a$=ax/aT;if(a$*1.0499999523162842<=bb){bc=a8;bd=a9;be=ba;bf=bb;bg=0.0;bh=0.0;bi=0.0;break}bc=0;bd=7;be=aO<0.0|0;bf=a$;bg=0.0/aT;bh=a3/aT;bi=ag/aT}else{bc=a8;bd=a9;be=ba;bf=bb;bg=0.0;bh=0.0;bi=0.0}}while(0);bb=aA*af-az*aE;aT=+P(+bb)-(aM*ak+aJ*al+aH*am+a7*aq);if(aT>1.1920928955078125e-7){i=f;return}a3=-0.0-aE;aO=aE*aE+0.0;ax=af*af;a$=+Q(+(ax+aO));do{if(a$>1.1920928955078125e-7){aX=aT/a$;if(aX*1.0499999523162842<=bf){bj=bc;bk=bd;bl=be;bm=bf;bn=bg;bo=bh;bp=bi;break}bj=0;bk=8;bl=bb<0.0|0;bm=aX;bn=0.0/a$;bo=a3/a$;bp=af/a$}else{bj=bc;bk=bd;bl=be;bm=bf;bn=bg;bo=bh;bp=bi}}while(0);bi=aA*aC-az*aF;bh=+P(+bi)-(aN*ak+aK*al+aG*am+a7*ap);if(bh>1.1920928955078125e-7){i=f;return}bg=-0.0-aF;bf=aF*aF+0.0;a$=aC*aC;a3=+Q(+(a$+bf));do{if(a3>1.1920928955078125e-7){bb=bh/a3;if(bb*1.0499999523162842<=bm){bq=bj;br=bk;bs=bl;bt=bm;bu=bn;bv=bo;bw=bp;break}bq=0;br=9;bs=bi<0.0|0;bt=bb;bu=0.0/a3;bv=bg/a3;bw=aC/a3}else{bq=bj;br=bk;bs=bl;bt=bm;bu=bn;bv=bo;bw=bp}}while(0);bp=ay*aD-aA*ar;bo=+P(+bp)-(aL*aB+a7*al+aK*ap+aJ*aq);if(bo>1.1920928955078125e-7){i=f;return}bn=-0.0-ar;bm=ar*ar;a3=+Q(+(bm+av));do{if(a3>1.1920928955078125e-7){av=bo/a3;if(av*1.0499999523162842<=bt){bx=bq;by=br;bz=bs;bA=bt;bB=bu;bC=bv;bD=bw;break}bx=0;by=10;bz=bp<0.0|0;bA=av;bB=aD/a3;bC=0.0/a3;bD=bn/a3}else{bx=bq;by=br;bz=bs;bA=bt;bB=bu;bC=bv;bD=bw}}while(0);bw=ay*aE-aA*an;bv=+P(+bw)-(aM*aB+aG*al+aK*am+aI*aq);if(bv>1.1920928955078125e-7){i=f;return}bu=-0.0-an;bt=an*an;a3=+Q(+(bt+aO));do{if(a3>1.1920928955078125e-7){aO=bv/a3;if(aO*1.0499999523162842<=bA){bE=bx;bF=by;bG=bz;bH=bA;bI=bB;bJ=bC;bK=bD;break}bE=0;bF=11;bG=bw<0.0|0;bH=aO;bI=aE/a3;bJ=0.0/a3;bK=bu/a3}else{bE=bx;bF=by;bG=bz;bH=bA;bI=bB;bJ=bC;bK=bD}}while(0);bD=ay*aF-aA*ah;aA=+P(+bD)-(aN*aB+aH*al+aJ*am+aI*ap);if(aA>1.1920928955078125e-7){i=f;return}bC=-0.0-ah;bB=ah*ah;bA=+Q(+(bB+bf));do{if(bA>1.1920928955078125e-7){bf=aA/bA;if(bf*1.0499999523162842<=bH){bL=bE;bM=bF;bN=bG;bO=bH;bP=bI;bQ=bJ;bR=bK;break}bL=0;bM=12;bN=bD<0.0|0;bO=bf;bP=aF/bA;bQ=0.0/bA;bR=bC/bA}else{bL=bE;bM=bF;bN=bG;bO=bH;bP=bI;bQ=bJ;bR=bK}}while(0);bK=az*ar-ay*ag;bJ=+P(+bK)-(aI*aB+a7*ak+aN*ap+aM*aq);if(bJ>1.1920928955078125e-7){i=f;return}a7=-0.0-ag;ag=+Q(+(bm+at+0.0));do{if(ag>1.1920928955078125e-7){at=bJ/ag;if(at*1.0499999523162842<=bO){bS=bL;bT=bM;bU=bN;bV=bO;bW=bP;bX=bQ;bY=bR;break}bS=0;bT=13;bU=bK<0.0|0;bV=at;bW=a7/ag;bX=ar/ag;bY=0.0/ag}else{bS=bL;bT=bM;bU=bN;bV=bO;bW=bP;bX=bQ;bY=bR}}while(0);bR=az*an-ay*af;bQ=+P(+bR)-(aJ*aB+aG*ak+aN*am+aL*aq);if(bQ>1.1920928955078125e-7){i=f;return}aN=-0.0-af;af=+Q(+(bt+ax+0.0));do{if(af>1.1920928955078125e-7){ax=bQ/af;if(ax*1.0499999523162842<=bV){bZ=bS;b_=bT;b$=bU;b0=bV;b1=bW;b2=bX;b3=bY;break}bZ=0;b_=14;b$=bR<0.0|0;b0=ax;b1=aN/af;b2=an/af;b3=0.0/af}else{bZ=bS;b_=bT;b$=bU;b0=bV;b1=bW;b2=bX;b3=bY}}while(0);bY=az*ah-ay*aC;ay=+P(+bY)-(aK*aB+aH*ak+aM*am+aL*ap);if(ay>1.1920928955078125e-7){i=f;return}aL=-0.0-aC;aC=+Q(+(bB+a$+0.0));do{if(aC>1.1920928955078125e-7){a$=ay/aC;if(a$*1.0499999523162842<=b0){b4=1725;break}b5=15;b6=bY<0.0|0;b7=a$;b8=aL/aC;b9=ah/aC;ca=0.0/aC;b4=1728}else{b4=1725}}while(0);do{if((b4|0)==1725){if((b_|0)==0){i=f;return}if((bZ|0)==0){b5=b_;b6=b$;b7=b0;b8=b1;b9=b2;ca=b3;b4=1728;break}cb=b_;cc=b$;cd=b0;ce=+g[bZ+32>>2];cf=+g[bZ+16>>2];cg=+g[bZ>>2]}}while(0);if((b4|0)==1728){cb=b5;cc=b6;cd=b7;ce=b8*_+b9*aa+ca*ac;cf=b8*T+b9*V+ca*X;cg=b8*F+b9*J+ca*N}if((cc|0)==0){ch=ce;ci=cf;cj=cg}else{ch=-0.0-ce;ci=-0.0-cf;cj=-0.0-cg}if((cb|0)>6){cg=(cj*F+ci*T+ch*_>0.0?1.0:-1.0)*aB;aB=(cj*J+ci*V+ch*aa>0.0?1.0:-1.0)*ak;ak=(cj*N+ci*X+ch*ac>0.0?1.0:-1.0)*al;c[a>>2]=c[aj>>2];c[a+4>>2]=c[aj+4>>2];c[a+8>>2]=c[aj+8>>2];al=(cj*H+ci*U+ch*$>0.0?-1.0:1.0)*am;aj=m|0;a=m+4|0;cc=m+8|0;am=(cj*L+ci*W+ch*ab>0.0?-1.0:1.0)*ap;ap=+g[a>>2]+al*U+am*W;W=+g[cc>>2]+al*$+am*ab;ab=(cj*R+ci*Z+ch*ad>0.0?-1.0:1.0)*aq;aq=+g[aj>>2]+al*H+am*L+ab*R;g[aj>>2]=aq;R=ap+ab*Z;g[a>>2]=R;Z=W+ab*ad;g[cc>>2]=Z;b6=cb-7|0;b5=(b6|0)/3|0;ad=+g[D+(b5<<2)>>2];ab=+g[D+(b5+4<<2)>>2];W=+g[D+(b5+8<<2)>>2];b5=(b6|0)%3|0;ap=+g[E+(b5<<2)>>2];L=+g[E+(b5+4<<2)>>2];am=+g[E+(b5+8<<2)>>2];H=aq-(ao+cg*F+aB*J+ak*N);N=R-(au+cg*T+aB*V+ak*X);X=Z-(aw+cg*_+aB*aa+ak*ac);ac=ad*ap+ab*L+W*am;ak=1.0-ac*ac;if(ak>9999999747378752.0e-20){ck=((H*ad+N*ab+X*W)*ac-(H*ap+N*L+X*am))*(1.0/ak)}else{ck=0.0}g[aj>>2]=aq+ck*ap;g[a>>2]=R+ck*L;g[cc>>2]=Z+ck*am;cc=c[(c[d>>2]|0)+16>>2]|0;g[n>>2]=-0.0-cj;g[n+4>>2]=-0.0-ci;g[n+8>>2]=-0.0-ch;g[n+12>>2]=0.0;dw[cc&127](d,n,m,cd);i=f;return}m=(cb|0)<4;if(m){cl=cj;cm=ci;cn=ch;co=G;cp=I;cq=ai;cr=as;cs=b;ct=k;cu=+g[I>>2]}else{cl=-0.0-cj;cm=-0.0-ci;cn=-0.0-ch;co=I;cp=G;cq=as;cr=ai;cs=k;ct=b;cu=F}F=cl*cu+cm*+g[cp+16>>2]+cn*+g[cp+32>>2];g[o>>2]=F;cu=cl*+g[cp+4>>2]+cm*+g[cp+20>>2]+cn*+g[cp+36>>2];g[o+4>>2]=cu;cd=cl*+g[cp+8>>2]+cm*+g[cp+24>>2]+cn*+g[cp+40>>2];g[o+8>>2]=cd;am=+P(+F);F=+P(+cu);cu=+P(+cd);if(F>am){b=F>cu;cv=0;cw=b?1:2;cx=b}else{b=am>cu;cv=b&1;cw=b?0:2;cx=b}b=cx?2:1;cu=+g[ct+(cw<<2)>>2];am=+g[cr>>2]- +g[cq>>2];F=cu*+g[cp+(cw<<2)>>2];if(+g[o+(cw<<2)>>2]<0.0){cy=+g[cr+8>>2]- +g[cq+8>>2]+cu*+g[cp+((cw|8)<<2)>>2];cz=+g[cr+4>>2]- +g[cq+4>>2]+cu*+g[cp+((cw|4)<<2)>>2];cA=am+F}else{cy=+g[cr+8>>2]- +g[cq+8>>2]-cu*+g[cp+((cw|8)<<2)>>2];cz=+g[cr+4>>2]- +g[cq+4>>2]-cu*+g[cp+((cw|4)<<2)>>2];cA=am-F}cw=(m?-1:-4)+cb|0;if((cw|0)==1){cB=2;cC=0}else if((cw|0)==0){cB=2;cC=1}else{cB=1;cC=0}F=+g[co+(cC<<2)>>2];am=+g[co+((cC|4)<<2)>>2];cu=+g[co+((cC|8)<<2)>>2];cd=cA*F+cz*am+cy*cu;ck=+g[co+(cB<<2)>>2];Z=+g[co+((cB|4)<<2)>>2];L=+g[co+((cB|8)<<2)>>2];R=cA*ck+cz*Z+cy*L;co=cp+(cv<<2)|0;ap=+g[co>>2];cb=cp+((cv|4)<<2)|0;aq=+g[cb>>2];cr=cp+((cv|8)<<2)|0;ak=+g[cr>>2];X=F*ap+am*aq+cu*ak;o=cp+(b<<2)|0;N=+g[o>>2];cx=cp+((b|4)<<2)|0;H=+g[cx>>2];k=cp+((b|8)<<2)|0;ac=+g[k>>2];W=F*N+am*H+cu*ac;cu=ck*ap+Z*aq+L*ak;ak=ck*N+Z*H+L*ac;ac=+g[ct+(cv<<2)>>2];L=X*ac;H=cu*ac;ac=+g[ct+(b<<2)>>2];Z=W*ac;N=ak*ac;ac=cd-L;b=p|0;g[b>>2]=ac-Z;ck=R-H;g[p+4>>2]=ck-N;g[p+8>>2]=ac+Z;g[p+12>>2]=ck+N;ck=cd+L;g[p+16>>2]=ck+Z;L=R+H;g[p+20>>2]=L+N;g[p+24>>2]=ck-Z;g[p+28>>2]=L-N;g[q>>2]=+g[cs+(cC<<2)>>2];g[q+4>>2]=+g[cs+(cB<<2)>>2];cB=r|0;cC=j|0;j=b;b=cB;p=0;ct=4;L2327:while(1){cv=q+(p<<2)|0;cp=1-p|0;do{if((ct|0)>0){ai=0;as=j;G=b;I=ct;while(1){n=as+(p<<2)|0;N=+g[n>>2];L=+g[cv>>2];if(N*-1.0<L){g[G>>2]=+g[as>>2];g[G+4>>2]=+g[as+4>>2];cc=ai+1|0;if((cc&8|0)!=0){cD=cc;cE=b;break L2327}cF=G+8|0;cG=cc;cH=+g[n>>2];cI=+g[cv>>2]}else{cF=G;cG=ai;cH=N;cI=L}n=as+8|0;cc=(I|0)>1?n:j;L=+g[cc+(p<<2)>>2];if(cH*-1.0<cI^L*-1.0<cI){N=+g[as+(cp<<2)>>2];g[cF+(cp<<2)>>2]=N+(cI*-1.0-cH)*((+g[cc+(cp<<2)>>2]-N)/(L-cH));g[cF+(p<<2)>>2]=+g[cv>>2]*-1.0;cc=cG+1|0;if((cc&8|0)==0){cJ=cF+8|0;cK=cc}else{cD=cc;cE=b;break L2327}}else{cJ=cF;cK=cG}cc=I-1|0;if((cc|0)>0){ai=cK;as=n;G=cJ;I=cc}else{break}}I=(b|0)==(cB|0)?cC:cB;if((cK|0)>0){cL=0;cM=b;cN=I;cO=cK}else{cP=0;cQ=I;break}while(1){G=cM+(p<<2)|0;L=+g[G>>2];N=+g[cv>>2];if(L<N){g[cN>>2]=+g[cM>>2];g[cN+4>>2]=+g[cM+4>>2];as=cL+1|0;if((as&8|0)!=0){cD=as;cE=I;break L2327}cR=cN+8|0;cS=as;cT=+g[G>>2];cU=+g[cv>>2]}else{cR=cN;cS=cL;cT=L;cU=N}G=cM+8|0;as=(cO|0)>1?G:b;N=+g[as+(p<<2)>>2];if(cT<cU^N<cU){L=+g[cM+(cp<<2)>>2];g[cR+(cp<<2)>>2]=L+(cU-cT)*((+g[as+(cp<<2)>>2]-L)/(N-cT));g[cR+(p<<2)>>2]=+g[cv>>2];as=cS+1|0;if((as&8|0)==0){cV=cR+8|0;cW=as}else{cD=as;cE=I;break L2327}}else{cV=cR;cW=cS}as=cO-1|0;if((as|0)>0){cL=cW;cM=G;cN=cV;cO=as}else{cP=cW;cQ=I;break}}}else{cP=0;cQ=(b|0)==(cB|0)?cC:cB}}while(0);cv=p+1|0;if((cv|0)<2){j=cQ;b=(cQ|0)==(cB|0)?cC:cB;p=cv;ct=cP}else{cD=cP;cE=cQ;break}}if((cE|0)!=(cB|0)){cQ=cE;cE=cD<<3;aDC(ae|0,cQ|0,cE)|0}if((cD|0)<1){i=f;return}cT=1.0/(X*ak-cu*W);cU=X*cT;X=W*cT;W=ak*cT;ak=-0.0-cu*cT;cT=+g[cs+(cw<<2)>>2];cu=+g[co>>2];cH=+g[o>>2];cI=+g[cb>>2];N=+g[cx>>2];L=+g[cr>>2];Z=+g[k>>2];k=0;cr=0;while(1){cx=k<<1;ck=+g[r+(cx<<2)>>2];H=ck-cd;ac=+g[r+((cx|1)<<2)>>2];aq=ac-R;ap=W*H-X*aq;am=H*ak+cU*aq;cx=cr*3|0;aq=cA+ap*cu+am*cH;g[s+(cx<<2)>>2]=aq;H=cz+ap*cI+am*N;g[s+(cx+1<<2)>>2]=H;F=cy+ap*L+am*Z;g[s+(cx+2<<2)>>2]=F;am=cT-(cl*aq+cm*H+cn*F);g[t+(cr<<2)>>2]=am;if(am<0.0){cX=cr}else{cx=cr<<1;g[r+(cx<<2)>>2]=ck;g[r+((cx|1)<<2)>>2]=ac;cX=cr+1|0}cx=k+1|0;if((cx|0)<(cD|0)){k=cx;cr=cX}else{break}}if((cX|0)<1){i=f;return}cr=(cX|0)<4?cX:4;k=(cr|0)<1?1:cr;if((cX|0)<=(k|0)){cr=(cX|0)>0;if(m){if(!cr){i=f;return}cD=d;cx=v|0;cb=v+4|0;o=v+8|0;co=v+12|0;cw=u|0;cs=cq+4|0;cE=u+4|0;cQ=cq+8|0;ae=u+8|0;cn=-0.0-cj;cm=-0.0-ci;cl=-0.0-ch;cP=0;do{ct=cP*3|0;g[cw>>2]=+g[s+(ct<<2)>>2]+ +g[cq>>2];g[cE>>2]=+g[s+(ct+1<<2)>>2]+ +g[cs>>2];g[ae>>2]=+g[s+(ct+2<<2)>>2]+ +g[cQ>>2];ct=c[(c[cD>>2]|0)+16>>2]|0;g[cx>>2]=cn;g[cb>>2]=cm;g[o>>2]=cl;g[co>>2]=0.0;dw[ct&127](d,v,u,-0.0- +g[t+(cP<<2)>>2]);cP=cP+1|0;}while((cP|0)<(cX|0));i=f;return}else{if(!cr){i=f;return}cr=d;cP=x|0;u=x+4|0;v=x+8|0;co=x+12|0;o=w|0;cb=cq+4|0;cx=w+4|0;cD=cq+8|0;cQ=w+8|0;cl=-0.0-cj;cm=-0.0-ci;cn=-0.0-ch;ae=0;do{cs=ae*3|0;cT=+g[t+(ae<<2)>>2];g[o>>2]=+g[s+(cs<<2)>>2]+ +g[cq>>2]-cj*cT;g[cx>>2]=+g[s+(cs+1<<2)>>2]+ +g[cb>>2]-ci*cT;g[cQ>>2]=+g[s+(cs+2<<2)>>2]+ +g[cD>>2]-ch*cT;cs=c[(c[cr>>2]|0)+16>>2]|0;g[cP>>2]=cl;g[u>>2]=cm;g[v>>2]=cn;g[co>>2]=0.0;dw[cs&127](d,x,w,-0.0-cT);ae=ae+1|0;}while((ae|0)<(cX|0));i=f;return}}if((cX|0)>1){ae=1;w=0;cn=+g[t>>2];while(1){cm=+g[t+(ae<<2)>>2];x=cm>cn;co=x?ae:w;v=ae+1|0;if((v|0)<(cX|0)){ae=v;w=co;cn=x?cm:cn}else{cY=co;break}}}else{cY=0}w=y|0;if((cX|0)==1){cZ=+g[cB>>2];c_=+g[r+4>>2];b4=1791}else if((cX|0)==2){cZ=(+g[cB>>2]+ +g[r+8>>2])*.5;c_=(+g[r+4>>2]+ +g[r+12>>2])*.5;b4=1791}else{ae=cX-1|0;if((ae|0)>0){co=0;cn=0.0;cm=0.0;cl=0.0;while(1){x=co<<1;cT=+g[r+(x<<2)>>2];Z=+g[r+(x+3<<2)>>2];L=+g[r+(x+2<<2)>>2];cy=+g[r+((x|1)<<2)>>2];N=cT*Z-L*cy;cI=cn+N;cz=cm+(cT+L)*N;L=cl+(Z+cy)*N;x=co+1|0;if((x|0)<(ae|0)){co=x;cn=cI;cm=cz;cl=L}else{c$=cI;c0=cz;c1=L;break}}}else{c$=0.0;c0=0.0;c1=0.0}co=cX<<1;cl=+g[r+(co-2<<2)>>2];cm=+g[r+4>>2];cn=+g[cB>>2];L=+g[r+(co-1<<2)>>2];cz=cl*cm-cn*L;cI=c$+cz;if(+P(+cI)>1.1920928955078125e-7){c2=1.0/(cI*3.0)}else{c2=999999984306749400.0}if((cX|0)>0){cZ=c2*(c0+cz*(cl+cn));c_=c2*(c1+cz*(L+cm));b4=1791}else{c3=0}}if((b4|0)==1791){b4=0;while(1){co=b4<<1;g[e+(b4<<2)>>2]=+Y(+(+g[r+((co|1)<<2)>>2]-c_),+(+g[r+(co<<2)>>2]-cZ));co=b4+1|0;if((co|0)<(cX|0)){b4=co}else{c4=0;break}}while(1){c[h+(c4<<2)>>2]=1;b4=c4+1|0;if((b4|0)<(cX|0)){c4=b4}else{c3=1;break}}}c4=h+(cY<<2)|0;c[c4>>2]=0;c[w>>2]=cY;w=y+4|0;L2408:do{if((k|0)>1){cZ=6.2831854820251465/+(k|0);b4=e+(cY<<2)|0;if(c3){c5=1;c6=w}else{r=2;co=w;while(1){c[co>>2]=cY;c[c4>>2]=0;if((r|0)>=(k|0)){break L2408}r=r+1|0;co=co+4|0}}while(1){c_=+(c5|0)*cZ+ +g[b4>>2];if(c_>3.1415927410125732){c7=c_-6.2831854820251465}else{c7=c_}c[c6>>2]=cY;co=0;c_=1.0e9;r=cY;while(1){do{if((c[h+(co<<2)>>2]|0)==0){c8=c_;c9=r}else{cm=+P(+(+g[e+(co<<2)>>2]-c7));if(cm>3.1415927410125732){da=6.2831854820251465-cm}else{da=cm}if(da>=c_){c8=c_;c9=r;break}c[c6>>2]=co;c8=da;c9=co}}while(0);cB=co+1|0;if((cB|0)<(cX|0)){co=cB;c_=c8;r=c9}else{break}}c[h+(c9<<2)>>2]=0;r=c5+1|0;if((r|0)>=(k|0)){break L2408}c5=r;c6=c6+4|0}}}while(0);if((k|0)<=0){i=f;return}c6=d;c5=A|0;c9=A+4|0;h=A+8|0;cX=A+12|0;e=B|0;cY=B+4|0;c4=B+8|0;w=B+12|0;c3=z|0;b4=z+4|0;r=z+8|0;co=C|0;cB=C+4|0;ae=C+8|0;x=C+12|0;v=cq+4|0;u=cq+8|0;c8=-0.0-ch;da=-0.0-ci;c7=-0.0-cj;if(m){m=0;do{cP=c[y+(m<<2)>>2]|0;cr=cP*3|0;g[c3>>2]=+g[s+(cr<<2)>>2]+ +g[cq>>2];g[b4>>2]=+g[s+(cr+1<<2)>>2]+ +g[v>>2];g[r>>2]=+g[s+(cr+2<<2)>>2]+ +g[u>>2];cr=c[(c[c6>>2]|0)+16>>2]|0;g[c5>>2]=c7;g[c9>>2]=da;g[h>>2]=c8;g[cX>>2]=0.0;dw[cr&127](d,A,z,-0.0- +g[t+(cP<<2)>>2]);m=m+1|0;}while((m|0)<(k|0));i=f;return}else{m=0;do{z=c[y+(m<<2)>>2]|0;A=z*3|0;cZ=+g[s+(A<<2)>>2]+ +g[cq>>2];g[c3>>2]=cZ;c_=+g[s+(A+1<<2)>>2]+ +g[v>>2];g[b4>>2]=c_;cm=+g[s+(A+2<<2)>>2]+ +g[u>>2];g[r>>2]=cm;A=c[(c[c6>>2]|0)+16>>2]|0;g[e>>2]=c7;g[cY>>2]=da;g[c4>>2]=c8;g[w>>2]=0.0;L=+g[t+(z<<2)>>2];g[co>>2]=cZ-cj*L;g[cB>>2]=c_-L*ci;g[ae>>2]=cm-L*ch;g[x>>2]=0.0;dw[A&127](d,B,C,-0.0-L);m=m+1|0;}while((m|0)<(k|0));i=f;return}}function aB8(a){a=a|0;return}function aB9(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aCa(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=(a[b+28|0]&1)!=0;g=f?e:d;h=f?d:e;e=g+192|0;d=c[e>>2]|0;f=c[d+16>>2]|0;i=b+12|0;j=c[i>>2]|0;if((j|0)<(f|0)){k=b+16|0;if((c[k>>2]|0)<(f|0)){if((f|0)==0){l=0;m=j}else{c[9806]=(c[9806]|0)+1;n=aDx((f<<2)+19|0)|0;if((n|0)==0){o=0}else{p=-(n+4|0)&15;c[n+p>>2]=n;o=n+(p+4)|0}l=o;m=c[i>>2]|0}o=b+20|0;if((m|0)>0){p=0;do{n=l+(p<<2)|0;if((n|0)!=0){c[n>>2]=c[(c[o>>2]|0)+(p<<2)>>2]}p=p+1|0;}while((p|0)<(m|0))}m=c[o>>2]|0;p=b+24|0;if((m|0)!=0){if((a[p]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[m-4>>2]|0)}c[o>>2]=0}a[p]=1;c[o>>2]=l;c[k>>2]=f;q=o}else{q=b+20|0}o=j;do{j=(c[q>>2]|0)+(o<<2)|0;if((j|0)!=0){c[j>>2]=0}o=o+1|0;}while((o|0)<(f|0))}c[i>>2]=f;if((f|0)<=0){return}i=d+64|0;o=d+24|0;d=b+4|0;q=b+32|0;j=b+20|0;b=0;do{if((c[i>>2]|0)==0){k=c[e>>2]|0;c[e>>2]=c[(c[o>>2]|0)+(b*80|0)+64>>2];l=c[d>>2]|0;p=dE[c[(c[l>>2]|0)+8>>2]&127](l,g,h,c[q>>2]|0)|0;c[(c[j>>2]|0)+(b<<2)>>2]=p;c[e>>2]=k}else{c[(c[j>>2]|0)+(b<<2)>>2]=0}b=b+1|0;}while((b|0)<(f|0));return}function aCb(a){a=a|0;aCc(a);if((a|0)==0){return}aDB(a);return}function aCc(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;c[b>>2]=20296;d=b+12|0;e=c[d>>2]|0;f=b+20|0;if((e|0)>0){g=b+4|0;h=0;do{i=c[(c[f>>2]|0)+(h<<2)>>2]|0;if((i|0)!=0){ct[c[c[i>>2]>>2]&2047](i);i=c[g>>2]|0;cv[c[(c[i>>2]|0)+60>>2]&2047](i,c[(c[f>>2]|0)+(h<<2)>>2]|0)}h=h+1|0;}while((h|0)<(e|0))}e=c[f>>2]|0;h=b+24|0;if((e|0)==0){a[h]=1;c[f>>2]=0;c[d>>2]=0;j=b+16|0;c[j>>2]=0;return}if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[e-4>>2]|0)}c[f>>2]=0;a[h]=1;c[f>>2]=0;c[d>>2]=0;j=b+16|0;c[j>>2]=0;return}function aCd(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0;j=i;i=i+312|0;k=j|0;l=j+32|0;m=j+56|0;n=j+72|0;o=j+88|0;p=j+152|0;q=j+184|0;r=j+248|0;s=j+264|0;t=j+280|0;u=j+296|0;v=(a[b+28|0]&1)!=0;w=v?e:d;x=v?d:e;v=c[w+192>>2]|0;y=b+12|0;if((c[v+68>>2]|0)!=(c[b+40>>2]|0)){z=c[y>>2]|0;if((z|0)>0){A=b+20|0;B=b+4|0;C=0;do{D=c[(c[A>>2]|0)+(C<<2)>>2]|0;if((D|0)!=0){ct[c[c[D>>2]>>2]&2047](D);D=c[B>>2]|0;cv[c[(c[D>>2]|0)+60>>2]&2047](D,c[(c[A>>2]|0)+(C<<2)>>2]|0)}C=C+1|0;}while((C|0)<(z|0))}aCa(b,d,e)}e=c[v+64>>2]|0;d=b+4|0;z=c[d>>2]|0;C=b+20|0;A=c[C>>2]|0;B=c[b+32>>2]|0;c[k>>2]=21800;c[k+4>>2]=w;c[k+8>>2]=x;c[k+12>>2]=z;c[k+16>>2]=f;c[k+20>>2]=h;c[k+24>>2]=A;c[k+28>>2]=B;B=l+16|0;a[B]=1;f=l+12|0;c[f>>2]=0;z=l+4|0;c[z>>2]=0;b=l+8|0;c[b>>2]=0;D=c[y>>2]|0;do{if((D|0)>0){E=h+4|0;F=h+136|0;G=h+8|0;H=h+72|0;I=0;J=D;K=A;while(1){L=c[K+(I<<2)>>2]|0;if((L|0)==0){M=J}else{cv[c[(c[L>>2]|0)+16>>2]&2047](L,l);L=c[z>>2]|0;if((L|0)>0){N=0;O=L;while(1){P=c[(c[f>>2]|0)+(N<<2)>>2]|0;Q=P+1116|0;if((c[Q>>2]|0)==0){R=O}else{c[E>>2]=P;do{if((c[Q>>2]|0)!=0){if((c[P+1108>>2]|0)==(c[F>>2]|0)){ay6(P,G,H);break}else{ay6(P,H,G);break}}}while(0);c[E>>2]=0;R=c[z>>2]|0}P=N+1|0;if((P|0)<(R|0)){N=P;O=R}else{S=R;break}}}else{S=L}if((S|0)<0){if((c[b>>2]|0)<0){O=c[f>>2]|0;if((S|0)>0){N=0;do{if((N|0)!=0){c[N<<2>>2]=c[O+(N<<2)>>2]}N=N+1|0;}while((N|0)<(S|0))}if((O|0)!=0){if((a[B]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[O-4>>2]|0)}c[f>>2]=0}a[B]=1;c[f>>2]=0;c[b>>2]=0;T=S}else{T=S}do{N=(c[f>>2]|0)+(T<<2)|0;if((N|0)!=0){c[N>>2]=0}T=T+1|0;}while((T|0)<0)}c[z>>2]=0;M=c[y>>2]|0}O=I+1|0;if((O|0)>=(M|0)){break}I=O;J=M;K=c[C>>2]|0}K=c[f>>2]|0;if((K|0)==0){break}if((a[B]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[K-4>>2]|0)}c[f>>2]=0}}while(0);a[B]=1;c[f>>2]=0;c[z>>2]=0;c[b>>2]=0;if((e|0)==0){b=c[y>>2]|0;if((b|0)<=0){i=j;return}z=v+24|0;f=0;do{aCf(k,c[(c[z>>2]|0)+(f*80|0)+64>>2]|0,f);f=f+1|0;}while((f|0)<(b|0))}else{U=+g[w+4>>2];V=+g[w+20>>2];W=+g[w+36>>2];X=+g[w+8>>2];Y=+g[w+24>>2];Z=+g[w+40>>2];_=+g[w+12>>2];$=+g[w+28>>2];aa=+g[w+44>>2];ab=-0.0- +g[w+52>>2];ac=-0.0- +g[w+56>>2];ad=-0.0- +g[w+60>>2];ae=+g[x+4>>2];af=+g[x+20>>2];ag=+g[x+36>>2];ah=+g[x+8>>2];ai=+g[x+24>>2];aj=+g[x+40>>2];ak=+g[x+12>>2];al=+g[x+28>>2];am=+g[x+44>>2];an=+g[x+52>>2];ao=+g[x+56>>2];ap=+g[x+60>>2];g[o>>2]=U*ae+V*af+W*ag;g[o+4>>2]=U*ah+V*ai+W*aj;g[o+8>>2]=U*ak+V*al+W*am;g[o+12>>2]=0.0;g[o+16>>2]=X*ae+Y*af+Z*ag;g[o+20>>2]=X*ah+Y*ai+Z*aj;g[o+24>>2]=X*ak+Y*al+Z*am;g[o+28>>2]=0.0;g[o+32>>2]=_*ae+$*af+aa*ag;g[o+36>>2]=_*ah+$*ai+aa*aj;g[o+40>>2]=_*ak+$*al+aa*am;g[o+44>>2]=0.0;g[o+48>>2]=U*ab+V*ac+W*ad+(U*an+V*ao+W*ap);g[o+52>>2]=X*ab+Y*ac+Z*ad+(X*an+Y*ao+Z*ap);g[o+56>>2]=_*ab+$*ac+aa*ad+(_*an+$*ao+aa*ap);g[o+60>>2]=0.0;b=c[x+192>>2]|0;dI[c[(c[b>>2]|0)+8>>2]&1023](b,o,m,n);o=p;b=m;c[o>>2]=c[b>>2];c[o+4>>2]=c[b+4>>2];c[o+8>>2]=c[b+8>>2];c[o+12>>2]=c[b+12>>2];b=p+16|0;o=n;c[b>>2]=c[o>>2];c[b+4>>2]=c[o+4>>2];c[b+8>>2]=c[o+8>>2];c[b+12>>2]=c[o+12>>2];awD(c[e>>2]|0,p,k|0)}k=c[y>>2]|0;if((k|0)<=0){i=j;return}y=v+24|0;v=w+4|0;p=w+8|0;e=w+12|0;o=w+20|0;b=w+24|0;n=w+28|0;m=w+36|0;f=w+40|0;z=w+44|0;B=w+52|0;M=w+56|0;T=w+60|0;w=q|0;S=q+4|0;R=q+8|0;l=q+12|0;A=q+16|0;D=q+20|0;h=q+24|0;K=q+28|0;J=q+32|0;I=q+36|0;E=q+40|0;G=q+44|0;H=q+48|0;F=q+52|0;O=q+56|0;N=q+60|0;L=x+192|0;P=x+4|0;x=r|0;Q=u|0;aq=r+8|0;ar=u+8|0;as=r+4|0;at=u+4|0;au=s+4|0;av=t+4|0;aw=s+8|0;ax=t+8|0;ay=s|0;az=t|0;aA=0;do{do{if((c[(c[C>>2]|0)+(aA<<2)>>2]|0)!=0){aB=c[y>>2]|0;aC=c[aB+(aA*80|0)+64>>2]|0;ap=+g[v>>2];aa=+g[p>>2];ao=+g[e>>2];$=+g[o>>2];an=+g[b>>2];_=+g[n>>2];ad=+g[m>>2];ac=+g[f>>2];ab=+g[z>>2];Z=+g[aB+(aA*80|0)>>2];Y=+g[aB+(aA*80|0)+16>>2];X=+g[aB+(aA*80|0)+32>>2];W=+g[aB+(aA*80|0)+4>>2];V=+g[aB+(aA*80|0)+20>>2];U=+g[aB+(aA*80|0)+36>>2];am=+g[aB+(aA*80|0)+8>>2];al=+g[aB+(aA*80|0)+24>>2];ak=+g[aB+(aA*80|0)+40>>2];aj=+g[aB+(aA*80|0)+48>>2];ai=+g[aB+(aA*80|0)+52>>2];ah=+g[aB+(aA*80|0)+56>>2];ag=+g[B>>2]+(ap*aj+aa*ai+ao*ah);af=+g[M>>2]+($*aj+an*ai+_*ah);ae=+g[T>>2]+(ad*aj+ac*ai+ab*ah);g[w>>2]=ap*Z+aa*Y+ao*X;g[S>>2]=ap*W+aa*V+ao*U;g[R>>2]=ap*am+aa*al+ao*ak;g[l>>2]=0.0;g[A>>2]=$*Z+an*Y+_*X;g[D>>2]=$*W+an*V+_*U;g[h>>2]=$*am+an*al+_*ak;g[K>>2]=0.0;g[J>>2]=ad*Z+ac*Y+ab*X;g[I>>2]=ad*W+ac*V+ab*U;g[E>>2]=ad*am+ac*al+ab*ak;g[G>>2]=0.0;g[H>>2]=ag;g[F>>2]=af;g[O>>2]=ae;g[N>>2]=0.0;dI[c[(c[aC>>2]|0)+8>>2]&1023](aC,q,r,s);aC=c[L>>2]|0;dI[c[(c[aC>>2]|0)+8>>2]&1023](aC,P,t,u);do{if(+g[x>>2]>+g[Q>>2]){aD=0}else{if(+g[ay>>2]<+g[az>>2]){aD=0;break}aD=1}}while(0);do{if(+g[aq>>2]>+g[ar>>2]){aE=0}else{if(+g[aw>>2]<+g[ax>>2]){aE=0;break}aE=aD}}while(0);if(+g[as>>2]<=+g[at>>2]){if(!(+g[au>>2]<+g[av>>2]|aE^1)){break}}aC=c[(c[C>>2]|0)+(aA<<2)>>2]|0;ct[c[c[aC>>2]>>2]&2047](aC);aC=c[d>>2]|0;cv[c[(c[aC>>2]|0)+60>>2]&2047](aC,c[(c[C>>2]|0)+(aA<<2)>>2]|0);c[(c[C>>2]|0)+(aA<<2)>>2]=0}}while(0);aA=aA+1|0;}while((aA|0)<(k|0));i=j;return}function aCe(a){a=a|0;return}function aCf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0,I=0,J=0,K=0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0,Y=0,Z=0,_=0;e=i;i=i+224|0;f=e+64|0;h=e+128|0;j=e+144|0;k=e+160|0;l=e+176|0;m=e+192|0;n=e+208|0;o=a+4|0;p=c[o>>2]|0;q=c[p+192>>2]|0;r=+g[p+4>>2];s=+g[p+8>>2];t=+g[p+12>>2];u=+g[p+16>>2];v=+g[p+20>>2];w=+g[p+24>>2];x=+g[p+28>>2];y=+g[p+32>>2];z=+g[p+36>>2];A=+g[p+40>>2];B=+g[p+44>>2];C=+g[p+48>>2];D=+g[p+52>>2];E=+g[p+56>>2];F=+g[p+60>>2];G=+g[p+64>>2];H=p+68|0;I=e|0;c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];H=p+84|0;J=e+16|0;c[J>>2]=c[H>>2];c[J+4>>2]=c[H+4>>2];c[J+8>>2]=c[H+8>>2];c[J+12>>2]=c[H+12>>2];H=p+100|0;K=e+32|0;c[K>>2]=c[H>>2];c[K+4>>2]=c[H+4>>2];c[K+8>>2]=c[H+8>>2];c[K+12>>2]=c[H+12>>2];H=p+116|0;p=e+48|0;c[p>>2]=c[H>>2];c[p+4>>2]=c[H+4>>2];c[p+8>>2]=c[H+8>>2];c[p+12>>2]=c[H+12>>2];H=c[q+24>>2]|0;L=+g[H+(d*80|0)>>2];M=+g[H+(d*80|0)+16>>2];N=+g[H+(d*80|0)+32>>2];O=+g[H+(d*80|0)+4>>2];P=+g[H+(d*80|0)+20>>2];Q=+g[H+(d*80|0)+36>>2];R=+g[H+(d*80|0)+8>>2];S=+g[H+(d*80|0)+24>>2];T=+g[H+(d*80|0)+40>>2];U=+g[H+(d*80|0)+48>>2];V=+g[H+(d*80|0)+52>>2];W=+g[H+(d*80|0)+56>>2];g[f>>2]=r*L+s*M+t*N;g[f+4>>2]=r*O+s*P+t*Q;g[f+8>>2]=r*R+s*S+t*T;g[f+12>>2]=0.0;g[f+16>>2]=v*L+w*M+x*N;g[f+20>>2]=v*O+w*P+x*Q;g[f+24>>2]=v*R+w*S+x*T;g[f+28>>2]=0.0;g[f+32>>2]=z*L+A*M+B*N;g[f+36>>2]=z*O+A*P+B*Q;g[f+40>>2]=z*R+A*S+B*T;g[f+44>>2]=0.0;g[f+48>>2]=D+(r*U+s*V+t*W);g[f+52>>2]=E+(v*U+w*V+x*W);g[f+56>>2]=F+(z*U+A*V+B*W);g[f+60>>2]=0.0;dI[c[(c[b>>2]|0)+8>>2]&1023](b,f,h,j);H=a+8|0;q=c[H>>2]|0;X=c[q+192>>2]|0;dI[c[(c[X>>2]|0)+8>>2]&1023](X,q+4|0,k,l);do{if(+g[h>>2]>+g[l>>2]){Y=0}else{if(+g[j>>2]<+g[k>>2]){Y=0;break}Y=1}}while(0);do{if(+g[h+8>>2]>+g[l+8>>2]){Z=0}else{if(+g[j+8>>2]<+g[k+8>>2]){Z=0;break}Z=Y}}while(0);if(+g[h+4>>2]>+g[l+4>>2]){i=e;return}if(+g[j+4>>2]<+g[k+4>>2]|Z^1){i=e;return}Z=c[o>>2]|0;Y=Z+4|0;q=f;c[Y>>2]=c[q>>2];c[Y+4>>2]=c[q+4>>2];c[Y+8>>2]=c[q+8>>2];c[Y+12>>2]=c[q+12>>2];Y=Z+20|0;X=f+16|0;c[Y>>2]=c[X>>2];c[Y+4>>2]=c[X+4>>2];c[Y+8>>2]=c[X+8>>2];c[Y+12>>2]=c[X+12>>2];Y=Z+36|0;_=f+32|0;c[Y>>2]=c[_>>2];c[Y+4>>2]=c[_+4>>2];c[Y+8>>2]=c[_+8>>2];c[Y+12>>2]=c[_+12>>2];Y=Z+52|0;Z=f+48|0;c[Y>>2]=c[Z>>2];c[Y+4>>2]=c[Z+4>>2];c[Y+8>>2]=c[Z+8>>2];c[Y+12>>2]=c[Z+12>>2];Y=c[o>>2]|0;f=Y+68|0;c[f>>2]=c[q>>2];c[f+4>>2]=c[q+4>>2];c[f+8>>2]=c[q+8>>2];c[f+12>>2]=c[q+12>>2];q=Y+84|0;c[q>>2]=c[X>>2];c[q+4>>2]=c[X+4>>2];c[q+8>>2]=c[X+8>>2];c[q+12>>2]=c[X+12>>2];X=Y+100|0;c[X>>2]=c[_>>2];c[X+4>>2]=c[_+4>>2];c[X+8>>2]=c[_+8>>2];c[X+12>>2]=c[_+12>>2];_=Y+116|0;c[_>>2]=c[Z>>2];c[_+4>>2]=c[Z+4>>2];c[_+8>>2]=c[Z+8>>2];c[_+12>>2]=c[Z+12>>2];Z=(c[o>>2]|0)+192|0;_=c[Z>>2]|0;c[Z>>2]=b;b=a+24|0;if((c[(c[b>>2]|0)+(d<<2)>>2]|0)==0){Z=c[a+12>>2]|0;Y=dE[c[(c[Z>>2]|0)+8>>2]&127](Z,c[o>>2]|0,c[H>>2]|0,c[a+28>>2]|0)|0;c[(c[b>>2]|0)+(d<<2)>>2]=Y}Y=a+20|0;Z=c[Y>>2]|0;X=c[Z>>2]|0;if((c[Z+136>>2]|0)==(c[o>>2]|0)){dA[c[X+8>>2]&511](Z,-1,d)}else{dA[c[X+12>>2]&511](Z,-1,d)}Z=c[(c[b>>2]|0)+(d<<2)>>2]|0;d=a+16|0;co[c[(c[Z>>2]|0)+8>>2]&255](Z,c[o>>2]|0,c[H>>2]|0,c[d>>2]|0,c[Y>>2]|0);Y=c[(c[d>>2]|0)+20>>2]|0;do{if((Y|0)!=0){if(((cA[c[(c[Y>>2]|0)+48>>2]&4095](Y)|0)&2|0)==0){break}H=c[(c[d>>2]|0)+20>>2]|0;Z=c[(c[H>>2]|0)+52>>2]|0;g[m>>2]=1.0;g[m+4>>2]=1.0;g[m+8>>2]=1.0;g[m+12>>2]=0.0;dI[Z&1023](H,h,j,m);H=c[(c[d>>2]|0)+20>>2]|0;Z=c[(c[H>>2]|0)+52>>2]|0;g[n>>2]=1.0;g[n+4>>2]=1.0;g[n+8>>2]=1.0;g[n+12>>2]=0.0;dI[Z&1023](H,k,l,n)}}while(0);c[(c[o>>2]|0)+192>>2]=_;_=c[o>>2]|0;g[_+4>>2]=r;g[_+8>>2]=s;g[_+12>>2]=t;g[_+16>>2]=u;g[_+20>>2]=v;g[_+24>>2]=w;g[_+28>>2]=x;g[_+32>>2]=y;g[_+36>>2]=z;g[_+40>>2]=A;g[_+44>>2]=B;g[_+48>>2]=C;g[_+52>>2]=D;g[_+56>>2]=E;g[_+60>>2]=F;g[_+64>>2]=G;_=c[o>>2]|0;o=_+68|0;c[o>>2]=c[I>>2];c[o+4>>2]=c[I+4>>2];c[o+8>>2]=c[I+8>>2];c[o+12>>2]=c[I+12>>2];I=_+84|0;c[I>>2]=c[J>>2];c[I+4>>2]=c[J+4>>2];c[I+8>>2]=c[J+8>>2];c[I+12>>2]=c[J+12>>2];J=_+100|0;c[J>>2]=c[K>>2];c[J+4>>2]=c[K+4>>2];c[J+8>>2]=c[K+8>>2];c[J+12>>2]=c[K+12>>2];K=_+116|0;c[K>>2]=c[p>>2];c[K+4>>2]=c[p+4>>2];c[K+8>>2]=c[p+8>>2];c[K+12>>2]=c[p+12>>2];i=e;return}function aCg(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0,W=0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0;i=(a[b+28|0]&1)!=0;j=i?e:d;k=i?d:e;e=j+192|0;d=c[b+12>>2]|0;if((d|0)<=0){l=1.0;return+l}i=c[e>>2]|0;m=i+24|0;n=j+4|0;o=j+8|0;p=j+12|0;q=j+16|0;r=j+20|0;s=j+24|0;t=j+28|0;u=j+32|0;v=j+36|0;w=j+40|0;x=j+44|0;y=j+48|0;z=j+52|0;A=j+56|0;B=j+60|0;C=j+64|0;D=b+20|0;E=+g[n>>2];F=+g[o>>2];G=+g[p>>2];H=+g[q>>2];I=+g[r>>2];J=+g[s>>2];K=+g[t>>2];L=+g[u>>2];M=+g[v>>2];N=+g[w>>2];O=+g[x>>2];P=+g[y>>2];Q=+g[z>>2];R=+g[A>>2];S=+g[B>>2];T=+g[C>>2];b=0;U=1.0;while(1){V=c[m>>2]|0;W=c[V+(b*80|0)+64>>2]|0;X=+g[V+(b*80|0)>>2];Y=+g[V+(b*80|0)+16>>2];Z=+g[V+(b*80|0)+32>>2];_=+g[V+(b*80|0)+4>>2];$=+g[V+(b*80|0)+20>>2];aa=+g[V+(b*80|0)+36>>2];ab=+g[V+(b*80|0)+8>>2];ac=+g[V+(b*80|0)+24>>2];ad=+g[V+(b*80|0)+40>>2];ae=+g[V+(b*80|0)+48>>2];af=+g[V+(b*80|0)+52>>2];ag=+g[V+(b*80|0)+56>>2];g[n>>2]=E*X+F*Y+G*Z;g[o>>2]=E*_+F*$+G*aa;g[p>>2]=E*ab+F*ac+G*ad;g[q>>2]=0.0;g[r>>2]=I*X+J*Y+K*Z;g[s>>2]=I*_+J*$+K*aa;g[t>>2]=I*ab+J*ac+K*ad;g[u>>2]=0.0;g[v>>2]=M*X+N*Y+O*Z;g[w>>2]=M*_+N*$+O*aa;g[x>>2]=M*ab+N*ac+O*ad;g[y>>2]=0.0;g[z>>2]=Q+(E*ae+F*af+G*ag);g[A>>2]=R+(I*ae+J*af+K*ag);g[B>>2]=S+(M*ae+N*af+O*ag);g[C>>2]=0.0;c[e>>2]=W;W=c[(c[D>>2]|0)+(b<<2)>>2]|0;ag=+db[c[(c[W>>2]|0)+12>>2]&127](W,j,k,f,h);af=ag<U?ag:U;c[e>>2]=i;g[n>>2]=E;g[o>>2]=F;g[p>>2]=G;g[q>>2]=H;g[r>>2]=I;g[s>>2]=J;g[t>>2]=K;g[u>>2]=L;g[v>>2]=M;g[w>>2]=N;g[x>>2]=O;g[y>>2]=P;g[z>>2]=Q;g[A>>2]=R;g[B>>2]=S;g[C>>2]=T;W=b+1|0;if((W|0)<(d|0)){b=W;U=af}else{l=af;break}}return+l}function aCh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=a+12|0;e=c[d>>2]|0;if((e|0)<=0){return}f=a+20|0;a=0;g=e;while(1){e=c[(c[f>>2]|0)+(a<<2)>>2]|0;if((e|0)==0){h=g}else{cv[c[(c[e>>2]|0)+16>>2]&2047](e,b);h=c[d>>2]|0}e=a+1|0;if((e|0)<(h|0)){a=e;g=h}else{break}}return}function aCi(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aCj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0;d=i;i=i+48|0;e=d|0;f=d+16|0;h=d+32|0;j=c[b+36>>2]|0;k=a+4|0;l=c[(c[(c[(c[k>>2]|0)+192>>2]|0)+24>>2]|0)+(j*80|0)+64>>2]|0;m=a+16|0;n=c[(c[m>>2]|0)+20>>2]|0;if((n|0)==0){aCf(a,l,j);i=d;return}if(((cA[c[(c[n>>2]|0)+48>>2]&4095](n)|0)&2|0)==0){aCf(a,l,j);i=d;return}n=c[k>>2]|0;o=+g[n+4>>2];p=+g[n+8>>2];q=+g[n+12>>2];r=+g[n+20>>2];s=+g[n+24>>2];t=+g[n+28>>2];u=+g[n+36>>2];v=+g[n+40>>2];w=+g[n+44>>2];x=+g[n+52>>2];y=+g[n+56>>2];z=+g[n+60>>2];A=+g[b+16>>2];B=+g[b>>2];C=+g[b+20>>2];D=+g[b+4>>2];E=+g[b+24>>2];F=+g[b+8>>2];G=(A-B)*.5+0.0;H=(C-D)*.5+0.0;I=(E-F)*.5+0.0;J=(A+B)*.5;B=(C+D)*.5;D=(E+F)*.5;F=+P(+o);E=+P(+p);C=+P(+q);A=+P(+r);K=+P(+s);L=+P(+t);M=+P(+u);N=+P(+v);O=x+(o*J+p*B+q*D);q=y+(r*J+s*B+t*D);t=z+(u*J+v*B+w*D);D=G*F+H*E+I*C;C=G*A+H*K+I*L;L=G*M+H*N+I*+P(+w);g[e>>2]=O-D;g[e+4>>2]=q-C;g[e+8>>2]=t-L;g[e+12>>2]=0.0;g[f>>2]=D+O;g[f+4>>2]=q+C;g[f+8>>2]=t+L;g[f+12>>2]=0.0;b=c[(c[m>>2]|0)+20>>2]|0;m=c[(c[b>>2]|0)+52>>2]|0;g[h>>2]=1.0;g[h+4>>2]=0.0;g[h+8>>2]=0.0;g[h+12>>2]=0.0;dI[m&1023](b,e,f,h);aCf(a,l,j);i=d;return}function aCk(a){a=a|0;var b=0,d=0,e=0;c[a>>2]=19792;c[a+12>>2]=21136;b=a+60|0;d=c[b>>2]|0;e=a+76|0;cv[c[(c[d>>2]|0)+20>>2]&2047](d,c[e>>2]|0);d=c[b>>2]|0;cv[c[(c[d>>2]|0)+16>>2]&2047](d,c[e>>2]|0);if((a|0)==0){return}aDB(a);return}function aCl(a){a=a|0;var b=0,d=0,e=0;c[a>>2]=19792;c[a+12>>2]=21136;b=a+60|0;d=c[b>>2]|0;e=a+76|0;cv[c[(c[d>>2]|0)+20>>2]&2047](d,c[e>>2]|0);d=c[b>>2]|0;cv[c[(c[d>>2]|0)+16>>2]&2047](d,c[e>>2]|0);return}function aCm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=b+76|0;if((c[e>>2]|0)==0){return}b=d+4|0;f=c[b>>2]|0;g=d+8|0;do{if((f|0)==(c[g>>2]|0)){h=(f|0)==0?1:f<<1;if((f|0)>=(h|0)){i=f;break}if((h|0)==0){j=0;k=f}else{c[9806]=(c[9806]|0)+1;l=aDx((h<<2)+19|0)|0;if((l|0)==0){m=0}else{n=-(l+4|0)&15;c[l+n>>2]=l;m=l+(n+4)|0}j=m;k=c[b>>2]|0}n=d+12|0;if((k|0)>0){l=0;do{o=j+(l<<2)|0;if((o|0)!=0){c[o>>2]=c[(c[n>>2]|0)+(l<<2)>>2]}l=l+1|0;}while((l|0)<(k|0))}l=c[n>>2]|0;o=d+16|0;if((l|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-4>>2]|0)}c[n>>2]=0}a[o]=1;c[n>>2]=j;c[g>>2]=h;i=c[b>>2]|0}else{i=f}}while(0);f=(c[d+12>>2]|0)+(i<<2)|0;if((f|0)==0){p=i}else{c[f>>2]=c[e>>2];p=c[b>>2]|0}c[b>>2]=p+1;return}function aCn(a){a=a|0;var b=0,d=0,e=0;c[a>>2]=21136;b=a+48|0;d=c[b>>2]|0;e=a+64|0;cv[c[(c[d>>2]|0)+20>>2]&2047](d,c[e>>2]|0);d=c[b>>2]|0;cv[c[(c[d>>2]|0)+16>>2]&2047](d,c[e>>2]|0);if((a|0)==0){return}aDB(a);return}function aCo(a){a=a|0;var b=0,d=0,e=0;c[a>>2]=21136;b=a+48|0;d=c[b>>2]|0;e=a+64|0;cv[c[(c[d>>2]|0)+20>>2]&2047](d,c[e>>2]|0);d=c[b>>2]|0;cv[c[(c[d>>2]|0)+16>>2]&2047](d,c[e>>2]|0);return}function aCp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;i=i+104|0;h=f|0;j=c[a+48>>2]|0;k=a+8|0;l=a+4|0;if((c[(c[(c[l>>2]|0)+192>>2]|0)+4>>2]|0)>=20){i=f;return}m=c[k>>2]|0;c[h+8>>2]=0;n=h|0;g[h+12>>2]=1.0;g[h+16>>2]=1.0;g[h+20>>2]=1.0;g[h+24>>2]=0.0;o=h+52|0;c[o>>2]=0;c[n>>2]=24592;c[h+4>>2]=1;p=h+56|0;q=b;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];q=h+72|0;p=b+16|0;c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];p=h+88|0;q=b+32|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];g[h+44>>2]=+g[a+56>>2];q=m+192|0;m=c[q>>2]|0;c[q>>2]=h;h=dE[c[(c[j>>2]|0)+8>>2]&127](j,c[l>>2]|0,c[k>>2]|0,c[a+64>>2]|0)|0;p=a+44|0;b=c[p>>2]|0;r=c[b>>2]|0;if((c[b+136>>2]|0)==(c[k>>2]|0)){dA[c[r+8>>2]&511](b,d,e)}else{dA[c[r+12>>2]&511](b,d,e)}co[c[(c[h>>2]|0)+8>>2]&255](h,c[l>>2]|0,c[k>>2]|0,c[a+52>>2]|0,c[p>>2]|0);ct[c[c[h>>2]>>2]&2047](h);cv[c[(c[j>>2]|0)+60>>2]&2047](j,h);c[q>>2]=m;c[n>>2]=21200;n=c[o>>2]|0;if((n|0)==0){i=f;return}c[9804]=(c[9804]|0)+1;aDB(c[n-80+76>>2]|0);i=f;return}function aCq(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,P=0;j=i;i=i+64|0;k=j|0;l=(a[b+8|0]&1)!=0;m=l?e:d;n=l?d:e;e=c[n+192>>2]|0;if(((c[e+4>>2]|0)-21|0)>>>0>=9){i=j;return}d=e;if((c[(c[m+192>>2]|0)+4>>2]|0)>=20){i=j;return}o=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);l=b+76|0;p=h+4|0;c[p>>2]=c[l>>2];c[b+64>>2]=f;g[b+68>>2]=o;c[b+56>>2]=h;f=c[b+20>>2]|0;q=+g[f+4>>2];r=+g[f+20>>2];s=+g[f+36>>2];t=+g[f+8>>2];u=+g[f+24>>2];v=+g[f+40>>2];w=+g[f+12>>2];x=+g[f+28>>2];y=+g[f+44>>2];z=-0.0- +g[f+52>>2];A=-0.0- +g[f+56>>2];B=-0.0- +g[f+60>>2];f=c[b+16>>2]|0;C=+g[f+4>>2];D=+g[f+20>>2];E=+g[f+36>>2];F=+g[f+8>>2];G=+g[f+24>>2];H=+g[f+40>>2];I=+g[f+12>>2];J=+g[f+28>>2];K=+g[f+44>>2];L=+g[f+52>>2];M=+g[f+56>>2];N=+g[f+60>>2];g[k>>2]=q*C+r*D+s*E;g[k+4>>2]=q*F+r*G+s*H;g[k+8>>2]=q*I+r*J+s*K;g[k+12>>2]=0.0;g[k+16>>2]=t*C+u*D+v*E;g[k+20>>2]=t*F+u*G+v*H;g[k+24>>2]=t*I+u*J+v*K;g[k+28>>2]=0.0;g[k+32>>2]=w*C+x*D+y*E;g[k+36>>2]=w*F+x*G+y*H;g[k+40>>2]=w*I+x*J+y*K;g[k+44>>2]=0.0;g[k+48>>2]=q*z+r*A+s*B+(q*L+r*M+s*N);g[k+52>>2]=t*z+u*A+v*B+(t*L+u*M+v*N);g[k+56>>2]=w*z+x*A+y*B+(w*L+x*M+y*N);g[k+60>>2]=0.0;O=c[f+192>>2]|0;f=b+24|0;P=b+40|0;dI[c[(c[O>>2]|0)+8>>2]&1023](O,k,f,P);k=P|0;g[k>>2]=+g[k>>2]+o;k=b+44|0;g[k>>2]=+g[k>>2]+o;k=b+48|0;g[k>>2]=+g[k>>2]+o;k=f|0;g[k>>2]=+g[k>>2]-o;k=b+28|0;g[k>>2]=+g[k>>2]-o;k=b+32|0;g[k>>2]=+g[k>>2]-o;k=c[l>>2]|0;c[k+1108>>2]=m;c[k+1112>>2]=n;dI[c[(c[e>>2]|0)+60>>2]&1023](d,b+12|0,f,P);P=c[p>>2]|0;if((c[P+1116>>2]|0)==0){i=j;return}if((c[P+1108>>2]|0)==(c[h+136>>2]|0)){ay6(P,h+8|0,h+72|0);i=j;return}else{ay6(P,h+72|0,h+8|0);i=j;return}}function aCr(a){a=a|0;return}function aCs(a){a=a|0;return}function aCt(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0,ab=0,ac=0,ad=0.0,ae=0.0,af=0.0;h=i;i=i+240|0;f=h|0;j=h+16|0;k=h+32|0;l=(a[b+8|0]&1)!=0;b=l?e:d;m=l?d:e;n=+g[b+116>>2];o=+g[b+52>>2];p=n-o;q=+g[b+120>>2];r=+g[b+56>>2];s=q-r;t=+g[b+124>>2];u=+g[b+60>>2];v=t-u;w=+g[b+248>>2];if(p*p+s*s+v*v<w*w){x=1.0;i=h;return+x}w=+g[m+4>>2];v=+g[m+20>>2];s=+g[m+36>>2];p=+g[m+8>>2];y=+g[m+24>>2];z=+g[m+40>>2];A=+g[m+12>>2];B=+g[m+28>>2];C=+g[m+44>>2];D=-0.0- +g[m+52>>2];E=-0.0- +g[m+56>>2];F=-0.0- +g[m+60>>2];G=w*D+v*E+s*F;H=p*D+y*E+z*F;I=A*D+B*E+C*F;F=+g[b+4>>2];E=+g[b+20>>2];D=+g[b+36>>2];J=+g[b+8>>2];K=+g[b+24>>2];L=+g[b+40>>2];M=+g[b+12>>2];N=+g[b+28>>2];O=+g[b+44>>2];P=G+(w*o+v*r+s*u);Q=H+(p*o+y*r+z*u);R=I+(A*o+B*r+C*u);u=+g[b+68>>2];r=+g[b+84>>2];o=+g[b+100>>2];S=+g[b+72>>2];T=+g[b+88>>2];U=+g[b+104>>2];V=+g[b+76>>2];W=+g[b+92>>2];X=+g[b+108>>2];Y=G+(w*n+v*q+s*t);G=H+(p*n+y*q+z*t);H=I+(A*n+B*q+C*t);e=c[m+192>>2]|0;if(((c[e+4>>2]|0)-21|0)>>>0>=9){x=1.0;i=h;return+x}m=f|0;g[m>>2]=P;d=f+4|0;g[d>>2]=Q;l=f+8|0;g[l>>2]=R;g[f+12>>2]=0.0;if(Y<P){g[m>>2]=Y;Z=Y}else{Z=P}if(G<Q){g[d>>2]=G;_=G}else{_=Q}if(H<R){g[l>>2]=H;$=H}else{$=R}aa=j|0;g[aa>>2]=P;ab=j+4|0;g[ab>>2]=Q;ac=j+8|0;g[ac>>2]=R;g[j+12>>2]=0.0;if(P<Y){g[aa>>2]=Y;ad=Y}else{ad=P}if(Q<G){g[ab>>2]=G;ae=G}else{ae=Q}if(R<H){g[ac>>2]=H;af=H}else{af=R}t=+g[b+244>>2];g[m>>2]=Z-t;g[d>>2]=_-t;g[l>>2]=$-t;g[aa>>2]=t+ad;g[ab>>2]=t+ae;g[ac>>2]=t+af;c[k>>2]=18528;g[k+4>>2]=w*F+v*E+s*D;g[k+8>>2]=w*J+v*K+s*L;g[k+12>>2]=w*M+v*N+s*O;g[k+16>>2]=0.0;g[k+20>>2]=p*F+y*E+z*D;g[k+24>>2]=p*J+y*K+z*L;g[k+28>>2]=p*M+y*N+z*O;g[k+32>>2]=0.0;g[k+36>>2]=A*F+B*E+C*D;g[k+40>>2]=A*J+B*K+C*L;g[k+44>>2]=A*M+B*N+C*O;g[k+48>>2]=0.0;g[k+52>>2]=P;g[k+56>>2]=Q;g[k+60>>2]=R;g[k+64>>2]=0.0;g[k+68>>2]=w*u+v*r+s*o;g[k+72>>2]=w*S+v*T+s*U;g[k+76>>2]=w*V+v*W+s*X;g[k+80>>2]=0.0;g[k+84>>2]=p*u+y*r+z*o;g[k+88>>2]=p*S+y*T+z*U;g[k+92>>2]=p*V+y*W+z*X;g[k+96>>2]=0.0;g[k+100>>2]=A*u+B*r+C*o;g[k+104>>2]=A*S+B*T+C*U;g[k+108>>2]=A*V+B*W+C*X;g[k+112>>2]=0.0;g[k+116>>2]=Y;g[k+120>>2]=G;g[k+124>>2]=H;g[k+128>>2]=0.0;g[k+196>>2]=t;ac=k+200|0;ab=b+240|0;g[ac>>2]=+g[ab>>2];if((e|0)==0){x=1.0;i=h;return+x}dI[c[(c[e>>2]|0)+60>>2]&1023](e,k|0,f,j);t=+g[ac>>2];if(t>=+g[ab>>2]){x=1.0;i=h;return+x}g[ab>>2]=t;x=t;i=h;return+x}function aCu(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aCv(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0;f=i;i=i+776|0;e=f|0;h=f+64|0;j=f+240|0;k=f+296|0;l=f+400|0;m=f+760|0;g[e>>2]=1.0;aDD(e+4|0,0,16);g[e+20>>2]=1.0;aDD(e+24|0,0,16);g[e+40>>2]=1.0;aDD(e+44|0,0,20);c[h>>2]=19544;n=h+164|0;c[h+168>>2]=0;g[h+172>>2]=0.0;o=a+200|0;g[n>>2]=+g[o>>2];p=+g[a+196>>2];c[j+8>>2]=0;g[j+12>>2]=1.0;g[j+16>>2]=1.0;g[j+20>>2]=1.0;g[j+24>>2]=0.0;c[j>>2]=25528;c[j+4>>2]=8;g[j+28>>2]=p;g[j+44>>2]=p;c[k+8>>2]=0;q=k|0;g[k+12>>2]=1.0;g[k+16>>2]=1.0;g[k+20>>2]=1.0;g[k+24>>2]=0.0;g[k+44>>2]=.03999999910593033;r=k+52|0;c[r>>2]=0;c[q>>2]=24592;c[k+4>>2]=1;s=k+56|0;t=d;c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];t=k+72|0;s=d+16|0;c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];s=k+88|0;t=d+32|0;c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];g[l+308>>2]=9999999747378752.0e-20;b[l+332>>1]=0;c[m>>2]=21768;c[m+4>>2]=l;c[m+8>>2]=j;c[m+12>>2]=k;do{if(aA0(m,a+4|0,a+68|0,e,e,h)|0){p=+g[n>>2];if(+g[o>>2]<=p){break}g[o>>2]=p}}while(0);c[q>>2]=21200;q=c[r>>2]|0;if((q|0)==0){i=f;return}c[9804]=(c[9804]|0)+1;aDB(c[q-80+76>>2]|0);i=f;return}function aCw(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aCx(b){b=b|0;var d=0,e=0,f=0;c[b>>2]=21656;if((a[b+16|0]&1)==0){d=b;aDB(d);return}e=c[b+20>>2]|0;if((e|0)==0){d=b;aDB(d);return}f=c[b+4>>2]|0;cv[c[(c[f>>2]|0)+16>>2]&2047](f,e);d=b;aDB(d);return}function aCy(b){b=b|0;var d=0,e=0;c[b>>2]=21656;if((a[b+16|0]&1)==0){return}d=c[b+20>>2]|0;if((d|0)==0){return}e=c[b+4>>2]|0;cv[c[(c[e>>2]|0)+16>>2]&2047](e,d);return}function aCz(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,R=0,U=0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0.0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0,aM=0,aN=0,aO=0,aP=0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$=0,a0=0,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0,ba=0,bb=0,bc=0,bd=0,be=0,bf=0.0,bg=0,bh=0,bi=0,bj=0,bk=0,bl=0,bm=0,bn=0.0,bo=0.0,bp=0.0,bq=0.0,br=0,bs=0,bt=0,bu=0,bv=0,bw=0,bx=0,by=0,bz=0,bA=0,bB=0,bC=0.0,bD=0,bE=0.0,bF=0,bG=0,bH=0,bI=0,bJ=0,bK=0,bL=0,bM=0,bN=0.0,bO=0.0,bP=0.0,bQ=0,bR=0,bS=0,bT=0,bU=0,bV=0,bW=0;j=i;i=i+840|0;k=j|0;l=j+24|0;m=j+40|0;n=j+48|0;o=j+64|0;p=j+72|0;q=j+88|0;r=j+96|0;s=j+112|0;t=j+128|0;u=j+264|0;v=j+344|0;w=j+352|0;x=j+368|0;y=j+384|0;z=j+408|0;A=j+424|0;B=j+440|0;C=j+456|0;D=j+472|0;E=b+20|0;F=c[E>>2]|0;if((F|0)==0){G=c[b+4>>2]|0;H=cS[c[(c[G>>2]|0)+12>>2]&511](G,d,e)|0;c[E>>2]=H;a[b+16|0]=1;I=H}else{I=F}F=h+4|0;c[F>>2]=I;I=c[d+192>>2]|0;H=I;G=c[e+192>>2]|0;J=G;K=I+4|0;L=G+4|0;do{if((c[K>>2]|0)==10){if((c[L>>2]|0)!=10){M=L;break}N=I;O=G;R=I;U=c[(c[I>>2]|0)+28>>2]|0;cA[U&4095](R)|0;R=G;U=c[(c[G>>2]|0)+28>>2]|0;cA[U&4095](R)|0;V=+g[(c[E>>2]|0)+1120>>2];R=c[I+52>>2]|0;W=+g[N+28+(R<<2)>>2];X=+g[N+28+(((R+2|0)%3|0)<<2)>>2];N=c[G+52>>2]|0;Y=+g[O+28+(N<<2)>>2];Z=+g[O+28+(((N+2|0)%3|0)<<2)>>2];_=+g[d+4+(R<<2)>>2];$=+g[d+20+(R<<2)>>2];aa=+g[d+36+(R<<2)>>2];ab=+g[e+4+(N<<2)>>2];ac=+g[e+20+(N<<2)>>2];ad=+g[e+36+(N<<2)>>2];ae=+g[e+52>>2];af=+g[e+56>>2];ag=+g[e+60>>2];ah=ae- +g[d+52>>2];ai=af- +g[d+56>>2];aj=ag- +g[d+60>>2];ak=_*ab+$*ac+aa*ad;al=_*ah+$*ai+aa*aj;am=ab*ah+ac*ai+ad*aj;an=1.0-ak*ak;do{if(an==0.0){ao=0.0}else{ap=(al-ak*am)/an;aq=-0.0-W;if(ap<aq){ao=aq;break}if(ap<=W){ao=ap;break}ao=W}}while(0);an=ak*ao-am;ap=-0.0-Y;do{if(an<ap){aq=ak*ap+al;ar=-0.0-W;if(aq<ar){as=ar;at=ap;break}if(aq<=W){as=aq;at=ap;break}as=W;at=ap}else{if(an<=Y){as=ao;at=an;break}aq=Y*ak+al;ar=-0.0-W;if(aq<ar){as=ar;at=Y;break}if(aq<=W){as=aq;at=Y;break}as=W;at=Y}}while(0);Y=ab*at;W=ac*at;al=ad*at;ak=Y+(ah-_*as);an=W+(ai-$*as);ap=al+(aj-aa*as);am=ap*ap+(ak*ak+an*an);aq=+Q(+am);ar=aq-X-Z;if(ar<=V){do{if(am>1.4210854715202004e-14){au=-0.0-1.0/aq;av=ak*au;aw=an*au;ax=ap*au;g[r>>2]=av;g[r+4>>2]=aw;g[r+8>>2]=ax;g[r+12>>2]=0.0;ay=av;az=aw;aA=ax}else{if(+P(+aa)>.7071067690849304){ax=1.0/+Q(+($*$+aa*aa));g[r>>2]=0.0;aw=ax*(-0.0-aa);g[r+4>>2]=aw;av=$*ax;g[r+8>>2]=av;ay=0.0;az=aw;aA=av;break}else{av=1.0/+Q(+(_*_+$*$));aw=av*(-0.0-$);g[r>>2]=aw;ax=_*av;g[r+4>>2]=ax;g[r+8>>2]=0.0;ay=aw;az=ax;aA=0.0;break}}}while(0);g[s>>2]=Z*ay+(Y+ae);g[s+4>>2]=Z*az+(W+af);g[s+8>>2]=Z*aA+(al+ag);g[s+12>>2]=0.0}if(ar<V){dw[c[(c[h>>2]|0)+16>>2]&127](h,r,s,ar)}N=c[F>>2]|0;if((c[N+1116>>2]|0)==0){i=j;return}if((c[N+1108>>2]|0)==(c[h+136>>2]|0)){ay6(N,h+8|0,h+72|0);i=j;return}else{ay6(N,h+72|0,h+8|0);i=j;return}}else{M=L}}while(0);L=t+128|0;g[L>>2]=999999984306749400.0;s=t+132|0;c[s>>2]=0;r=c[b+8>>2]|0;N=c[b+12>>2]|0;c[u>>2]=23568;R=u+4|0;g[R>>2]=0.0;O=u+8|0;g[O>>2]=1.0;U=u+12|0;g[U>>2]=0.0;g[u+16>>2]=0.0;c[u+20>>2]=N;c[u+24>>2]=r;r=u+28|0;c[r>>2]=H;N=u+32|0;c[N>>2]=J;c[u+36>>2]=c[K>>2];c[u+40>>2]=c[M>>2];aB=I;g[u+44>>2]=+dh[c[(c[aB>>2]|0)+44>>2]&1023](H);aC=G;g[u+48>>2]=+dh[c[(c[aC>>2]|0)+44>>2]&1023](J);a[u+52|0]=0;c[u+60>>2]=-1;c[u+72>>2]=1;c[r>>2]=H;c[N>>2]=J;aA=+dh[c[(c[aB>>2]|0)+44>>2]&1023](H);az=+dh[c[(c[aC>>2]|0)+44>>2]&1023](J);ay=aA+az+ +g[(c[E>>2]|0)+1120>>2];g[L>>2]=ay*ay;c[s>>2]=c[f+40>>2];s=d+4|0;L=t;J=s;c[L>>2]=c[J>>2];c[L+4>>2]=c[J+4>>2];c[L+8>>2]=c[J+8>>2];c[L+12>>2]=c[J+12>>2];aC=t+16|0;H=d+20|0;c[aC>>2]=c[H>>2];c[aC+4>>2]=c[H+4>>2];c[aC+8>>2]=c[H+8>>2];c[aC+12>>2]=c[H+12>>2];aB=t+32|0;N=d+36|0;c[aB>>2]=c[N>>2];c[aB+4>>2]=c[N+4>>2];c[aB+8>>2]=c[N+8>>2];c[aB+12>>2]=c[N+12>>2];r=t+48|0;aD=d+52|0;c[r>>2]=c[aD>>2];c[r+4>>2]=c[aD+4>>2];c[r+8>>2]=c[aD+8>>2];c[r+12>>2]=c[aD+12>>2];aE=e+4|0;aF=t+64|0;aG=aE;c[aF>>2]=c[aG>>2];c[aF+4>>2]=c[aG+4>>2];c[aF+8>>2]=c[aG+8>>2];c[aF+12>>2]=c[aG+12>>2];aH=t+80|0;aI=e+20|0;c[aH>>2]=c[aI>>2];c[aH+4>>2]=c[aI+4>>2];c[aH+8>>2]=c[aI+8>>2];c[aH+12>>2]=c[aI+12>>2];aJ=t+96|0;aK=e+36|0;c[aJ>>2]=c[aK>>2];c[aJ+4>>2]=c[aK+4>>2];c[aJ+8>>2]=c[aK+8>>2];c[aJ+12>>2]=c[aK+12>>2];aL=t+112|0;aM=e+52|0;c[aL>>2]=c[aM>>2];c[aL+4>>2]=c[aM+4>>2];c[aL+8>>2]=c[aM+8>>2];c[aL+12>>2]=c[aM+12>>2];do{if((c[K>>2]|0)<7){if((c[M>>2]|0)>=7){break}c[v>>2]=18688;aN=I+52|0;if((c[aN>>2]|0)==0){break}aO=G+52|0;if((c[aO>>2]|0)==0){if((c[M>>2]|0)!=1){break}axX(u,t,v|0,c[f+20>>2]|0,0);ay=+g[R>>2];az=+g[O>>2];aA=+g[U>>2];as=1.0/+Q(+(ay*ay+az*az+aA*aA));g[x>>2]=ay*as;g[x+4>>2]=az*as;g[x+8>>2]=aA*as;g[x+12>>2]=0.0;aP=y+16|0;a[aP]=1;aQ=y+12|0;c[aQ>>2]=0;aR=y+4|0;c[aR>>2]=0;aS=y+8|0;c[aS>>2]=0;aT=G+56|0;aU=aE|0;as=+g[aT>>2];aV=e+8|0;aA=+g[aT+4>>2];aW=e+12|0;az=+g[aT+8>>2];aX=e+52|0;ay=+g[aX>>2]+(+g[aU>>2]*as+ +g[aV>>2]*aA+ +g[aW>>2]*az);aY=e+20|0;aZ=e+24|0;a_=e+28|0;a$=e+56|0;at=+g[a$>>2]+(as*+g[aY>>2]+aA*+g[aZ>>2]+az*+g[a_>>2]);a0=e+36|0;a1=e+40|0;a2=e+44|0;a3=e+60|0;ao=+g[a3>>2]+(as*+g[a0>>2]+aA*+g[a1>>2]+az*+g[a2>>2]);c[9806]=(c[9806]|0)+1;a4=aDx(35)|0;do{if((a4|0)==0){a[aP]=1;c[aQ>>2]=0;c[aS>>2]=1;a5=0}else{a6=-(a4+4|0)&15;c[a4+a6>>2]=a4;a7=a4+(a6+4)|0;a[aP]=1;c[aQ>>2]=a7;c[aS>>2]=1;if((a7|0)==0){a5=a7;break}g[a7>>2]=ay;g[a7+4>>2]=at;g[a7+8>>2]=ao;g[a7+12>>2]=0.0;a5=a7}}while(0);c[aR>>2]=1;ao=+g[aT+16>>2];at=+g[aT+20>>2];ay=+g[aT+24>>2];ar=+g[aX>>2]+(+g[aU>>2]*ao+ +g[aV>>2]*at+ +g[aW>>2]*ay);V=+g[a$>>2]+(ao*+g[aY>>2]+at*+g[aZ>>2]+ay*+g[a_>>2]);ag=+g[a3>>2]+(ao*+g[a0>>2]+at*+g[a1>>2]+ay*+g[a2>>2]);c[9806]=(c[9806]|0)+1;a4=aDx(51)|0;if((a4|0)==0){a8=0}else{a7=-(a4+4|0)&15;c[a4+a7>>2]=a4;a8=a4+(a7+4)|0}a7=0;while(1){a4=a8+(a7<<4)|0;if((a4|0)!=0){a6=a4;a4=(c[aQ>>2]|0)+(a7<<4)|0;c[a6>>2]=c[a4>>2];c[a6+4>>2]=c[a4+4>>2];c[a6+8>>2]=c[a4+8>>2];c[a6+12>>2]=c[a4+12>>2]}if((a7|0)<0){a7=a7+1|0}else{break}}a7=c[aQ>>2]|0;if((a7|0)!=0){if((a[aP]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[a7-16+12>>2]|0)}c[aQ>>2]=0}a[aP]=1;c[aQ>>2]=a8;c[aS>>2]=2;a7=c[aR>>2]|0;a4=a8+(a7<<4)|0;if((a4|0)==0){a9=a7;ba=2}else{g[a4>>2]=ar;g[a8+(a7<<4)+4>>2]=V;g[a8+(a7<<4)+8>>2]=ag;g[a8+(a7<<4)+12>>2]=0.0;a9=c[aR>>2]|0;ba=c[aS>>2]|0}a7=a9+1|0;c[aR>>2]=a7;ay=+g[aT+32>>2];at=+g[aT+36>>2];ao=+g[aT+40>>2];al=+g[aX>>2]+(+g[aU>>2]*ay+ +g[aV>>2]*at+ +g[aW>>2]*ao);Z=+g[a$>>2]+(ay*+g[aY>>2]+at*+g[aZ>>2]+ao*+g[a_>>2]);af=+g[a3>>2]+(ay*+g[a0>>2]+at*+g[a1>>2]+ao*+g[a2>>2]);do{if((a7|0)==(ba|0)){a4=(ba|0)==0?1:ba<<1;if((ba|0)>=(a4|0)){bb=ba;break}do{if((a4|0)==0){bc=0}else{c[9806]=(c[9806]|0)+1;a6=aDx((a4<<4|4)+15|0)|0;if((a6|0)==0){bc=0;break}bd=-(a6+4|0)&15;c[a6+bd>>2]=a6;bc=a6+(bd+4)|0}}while(0);if((ba|0)>0){bd=0;do{a6=bc+(bd<<4)|0;if((a6|0)!=0){be=a6;a6=(c[aQ>>2]|0)+(bd<<4)|0;c[be>>2]=c[a6>>2];c[be+4>>2]=c[a6+4>>2];c[be+8>>2]=c[a6+8>>2];c[be+12>>2]=c[a6+12>>2]}bd=bd+1|0;}while((bd|0)<(ba|0))}bd=c[aQ>>2]|0;if((bd|0)!=0){if((a[aP]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bd-16+12>>2]|0)}c[aQ>>2]=0}a[aP]=1;c[aQ>>2]=bc;c[aS>>2]=a4;bb=c[aR>>2]|0}else{bb=a7}}while(0);a7=c[aQ>>2]|0;a2=a7+(bb<<4)|0;if((a2|0)!=0){g[a2>>2]=al;g[a7+(bb<<4)+4>>2]=Z;g[a7+(bb<<4)+8>>2]=af;g[a7+(bb<<4)+12>>2]=0.0}c[aR>>2]=bb+1;ag=+g[(c[E>>2]|0)+1120>>2];aC3(x,c[aN>>2]|0,s,y,+g[u+56>>2]-ag,ag,h|0);do{if((a[b+16|0]&1)!=0){a7=c[F>>2]|0;if((c[a7+1116>>2]|0)==0){break}if((c[a7+1108>>2]|0)==(c[h+136>>2]|0)){ay6(a7,h+8|0,h+72|0);break}else{ay6(a7,h+72|0,h+8|0);break}}}while(0);a7=c[aQ>>2]|0;if((a7|0)!=0){if((a[aP]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[a7-16+12>>2]|0)}c[aQ>>2]=0}a[aP]=1;c[aQ>>2]=0;c[aR>>2]=0;c[aS>>2]=0;i=j;return}axX(u,t,v|0,c[f+20>>2]|0,0);af=+g[(c[E>>2]|0)+1120>>2];L2933:do{if((a[f+24|0]&1)==0){Z=+g[R>>2];al=+g[O>>2];ag=+g[U>>2];V=1.0/+Q(+(Z*Z+al*al+ag*ag));g[w>>2]=Z*V;g[w+4>>2]=al*V;g[w+8>>2]=ag*V;g[w+12>>2]=0.0;bf=+g[u+56>>2];bg=2238}else{a7=c[aN>>2]|0;a2=c[aO>>2]|0;a1=l;a0=n;a3=p;c[10740]=(c[10740]|0)+1;a_=c[a7+28>>2]|0;if((a_|0)>0){aZ=a7+36|0;aY=s|0;a$=d+8|0;aW=d+12|0;aV=d+20|0;aU=d+24|0;aX=d+28|0;aT=d+36|0;bd=d+40|0;a6=d+44|0;be=l|0;bh=l+4|0;bi=l+8|0;bj=l+12|0;bk=w;V=3.4028234663852886e+38;bl=0;while(1){bm=c[aZ>>2]|0;ag=+g[bm+(bl*56|0)+40>>2];al=+g[bm+(bl*56|0)+44>>2];Z=+g[bm+(bl*56|0)+48>>2];ar=ag*+g[aV>>2]+al*+g[aU>>2]+Z*+g[aX>>2];ao=ag*+g[aT>>2]+al*+g[bd>>2]+Z*+g[a6>>2];g[be>>2]=ag*+g[aY>>2]+al*+g[a$>>2]+Z*+g[aW>>2];g[bh>>2]=ar;g[bi>>2]=ao;g[bj>>2]=0.0;if(!(aC2(a7,a2,s,aE,l,m)|0)){break L2933}ao=+g[m>>2];if(ao<V){c[bk>>2]=c[a1>>2];c[bk+4>>2]=c[a1+4>>2];c[bk+8>>2]=c[a1+8>>2];c[bk+12>>2]=c[a1+12>>2];bn=ao}else{bn=V}bm=bl+1|0;if((bm|0)<(a_|0)){V=bn;bl=bm}else{bo=bn;break}}}else{bo=3.4028234663852886e+38}bl=c[a2+28>>2]|0;if((bl|0)>0){a_=a2+36|0;a1=aE|0;bk=e+8|0;bj=e+12|0;bi=e+20|0;bh=e+24|0;aW=e+28|0;a$=e+36|0;aY=e+40|0;be=e+44|0;a6=n|0;bd=n+4|0;aT=n+8|0;aX=n+12|0;aU=w;V=bo;aV=0;while(1){aZ=c[a_>>2]|0;ao=+g[aZ+(aV*56|0)+40>>2];ar=+g[aZ+(aV*56|0)+44>>2];Z=+g[aZ+(aV*56|0)+48>>2];al=ao*+g[bi>>2]+ar*+g[bh>>2]+Z*+g[aW>>2];ag=ao*+g[a$>>2]+ar*+g[aY>>2]+Z*+g[be>>2];g[a6>>2]=ao*+g[a1>>2]+ar*+g[bk>>2]+Z*+g[bj>>2];g[bd>>2]=al;g[aT>>2]=ag;g[aX>>2]=0.0;if(!(aC2(a7,a2,s,aE,n,o)|0)){break L2933}ag=+g[o>>2];if(ag<V){c[aU>>2]=c[a0>>2];c[aU+4>>2]=c[a0+4>>2];c[aU+8>>2]=c[a0+8>>2];c[aU+12>>2]=c[a0+12>>2];bp=ag}else{bp=V}aZ=aV+1|0;if((aZ|0)<(bl|0)){V=bp;aV=aZ}else{bq=bp;break}}}else{bq=bo}aV=a7+48|0;bl=c[aV>>2]|0;if((bl|0)>0){a0=a7+56|0;aU=s|0;aX=d+8|0;aT=d+12|0;bd=d+20|0;bj=d+24|0;bk=d+28|0;a1=d+36|0;a6=d+40|0;be=d+44|0;aY=a2+48|0;a$=a2+56|0;aW=aE|0;bh=e+8|0;bi=e+12|0;a_=e+20|0;aZ=e+24|0;a4=e+28|0;bm=e+36|0;br=e+40|0;bs=e+44|0;bt=p|0;bu=p+4|0;bv=p+8|0;bw=p+12|0;bx=w;V=bq;by=0;bz=c[aY>>2]|0;bA=bl;while(1){bl=c[a0>>2]|0;ag=+g[bl+(by<<4)>>2];al=+g[bl+(by<<4)+4>>2];Z=+g[bl+(by<<4)+8>>2];ar=ag*+g[aU>>2]+al*+g[aX>>2]+Z*+g[aT>>2];ao=ag*+g[bd>>2]+al*+g[bj>>2]+Z*+g[bk>>2];at=ag*+g[a1>>2]+al*+g[a6>>2]+Z*+g[be>>2];if((bz|0)>0){Z=V;bl=0;while(1){bB=c[a$>>2]|0;al=+g[bB+(bl<<4)>>2];ag=+g[bB+(bl<<4)+4>>2];ay=+g[bB+(bl<<4)+8>>2];W=al*+g[aW>>2]+ag*+g[bh>>2]+ay*+g[bi>>2];ae=al*+g[a_>>2]+ag*+g[aZ>>2]+ay*+g[a4>>2];Y=al*+g[bm>>2]+ag*+g[br>>2]+ay*+g[bs>>2];ay=ao*Y-at*ae;ag=at*W-ar*Y;Y=ar*ae-ao*W;g[bt>>2]=ay;g[bu>>2]=ag;g[bv>>2]=Y;g[bw>>2]=0.0;do{if(+P(+ay)>1.0e-6){bg=2222}else{if(+P(+ag)>1.0e-6){bg=2222;break}if(+P(+Y)>1.0e-6){bg=2222}else{bC=Z}}}while(0);do{if((bg|0)==2222){bg=0;W=1.0/+Q(+(ay*ay+ag*ag+Y*Y));g[bt>>2]=ay*W;g[bu>>2]=ag*W;g[bv>>2]=Y*W;if(!(aC2(a7,a2,s,aE,p,q)|0)){break L2933}W=+g[q>>2];if(W>=Z){bC=Z;break}c[bx>>2]=c[a3>>2];c[bx+4>>2]=c[a3+4>>2];c[bx+8>>2]=c[a3+8>>2];c[bx+12>>2]=c[a3+12>>2];bC=W}}while(0);bB=bl+1|0;bD=c[aY>>2]|0;if((bB|0)<(bD|0)){Z=bC;bl=bB}else{break}}bE=bC;bF=bD;bG=c[aV>>2]|0}else{bE=V;bF=bz;bG=bA}bl=by+1|0;if((bl|0)<(bG|0)){V=bE;by=bl;bz=bF;bA=bG}else{break}}}bA=w|0;V=+g[bA>>2];bz=w+4|0;Z=+g[bz>>2];by=w+8|0;ao=+g[by>>2];if((+g[e+52>>2]- +g[d+52>>2])*V+(+g[e+56>>2]- +g[d+56>>2])*Z+(+g[e+60>>2]- +g[d+60>>2])*ao<=0.0){bf=0.0;bg=2238;break}g[bA>>2]=-0.0-V;g[bz>>2]=-0.0-Z;g[by>>2]=-0.0-ao;g[w+12>>2]=0.0;bf=0.0;bg=2238}}while(0);do{if((bg|0)==2238){aS=c[aN>>2]|0;aR=c[aO>>2]|0;ao=bf-af;aQ=h|0;aP=c[aR+28>>2]|0;if((aP|0)<=0){break}by=c[aR+36>>2]|0;bz=aE|0;Z=+g[bz>>2];bA=e+8|0;V=+g[bA>>2];aV=e+12|0;ar=+g[aV>>2];aY=e+20|0;at=+g[aY>>2];a3=e+24|0;Y=+g[a3>>2];bx=e+28|0;ag=+g[bx>>2];a2=e+36|0;ay=+g[a2>>2];a7=e+40|0;W=+g[a7>>2];bv=e+44|0;ae=+g[bv>>2];al=+g[w>>2];az=+g[w+4>>2];aA=+g[w+8>>2];bu=0;as=-3.4028234663852886e+38;bt=-1;while(1){_=+g[by+(bu*56|0)+40>>2];$=+g[by+(bu*56|0)+44>>2];aa=+g[by+(bu*56|0)+48>>2];ap=(_*Z+$*V+aa*ar)*al+(_*at+$*Y+aa*ag)*az+(_*ay+$*W+aa*ae)*aA;bw=ap>as;bH=bw?bu:bt;bs=bu+1|0;if((bs|0)<(aP|0)){bu=bs;as=bw?ap:as;bt=bH}else{break}}if((bH|0)<0){break}bt=k+16|0;a[bt]=1;bu=k+12|0;c[bu>>2]=0;aP=k+4|0;c[aP>>2]=0;bw=k+8|0;c[bw>>2]=0;bs=c[by+(bH*56|0)+4>>2]|0;L2983:do{if((bs|0)>0){br=by+(bH*56|0)+12|0;bm=aR+16|0;a4=e+52|0;aZ=e+56|0;a_=e+60|0;bi=0;bh=0;aW=0;as=Z;aA=V;az=ar;al=at;ap=Y;aa=ag;$=ay;_=W;an=ae;a$=0;while(1){be=c[(c[br>>2]|0)+(bi<<2)>>2]|0;a6=c[bm>>2]|0;ak=+g[a6+(be<<4)>>2];aq=+g[a6+(be<<4)+4>>2];am=+g[a6+(be<<4)+8>>2];X=+g[a4>>2]+(as*ak+aA*aq+az*am);aj=+g[aZ>>2]+(ak*al+aq*ap+am*aa);ai=+g[a_>>2]+(ak*$+aq*_+am*an);do{if((bh|0)==(aW|0)){be=(aW|0)==0?1:aW<<1;if((aW|0)>=(be|0)){bI=aW;bJ=a$;break}do{if((be|0)==0){bK=0}else{c[9806]=(c[9806]|0)+1;a6=aDx((be<<4|4)+15|0)|0;if((a6|0)==0){bK=0;break}a1=-(a6+4|0)&15;c[a6+a1>>2]=a6;bK=a6+(a1+4)|0}}while(0);if((aW|0)>0){a1=0;do{a6=bK+(a1<<4)|0;if((a6|0)!=0){bk=a6;a6=(c[bu>>2]|0)+(a1<<4)|0;c[bk>>2]=c[a6>>2];c[bk+4>>2]=c[a6+4>>2];c[bk+8>>2]=c[a6+8>>2];c[bk+12>>2]=c[a6+12>>2]}a1=a1+1|0;}while((a1|0)<(aW|0));bL=c[bu>>2]|0}else{bL=a$}if((bL|0)!=0){if((a[bt]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bL-16+12>>2]|0)}c[bu>>2]=0}a[bt]=1;c[bu>>2]=bK;c[bw>>2]=be;bI=c[aP>>2]|0;bJ=bK}else{bI=bh;bJ=a$}}while(0);a1=bJ+(bI<<4)|0;if((a1|0)==0){bM=bI}else{g[a1>>2]=X;g[bJ+(bI<<4)+4>>2]=aj;g[bJ+(bI<<4)+8>>2]=ai;g[bJ+(bI<<4)+12>>2]=0.0;bM=c[aP>>2]|0}a1=bM+1|0;c[aP>>2]=a1;a6=bi+1|0;if((a6|0)>=(bs|0)){break L2983}bi=a6;bh=a1;aW=c[bw>>2]|0;as=+g[bz>>2];aA=+g[bA>>2];az=+g[aV>>2];al=+g[aY>>2];ap=+g[a3>>2];aa=+g[bx>>2];$=+g[a2>>2];_=+g[a7>>2];an=+g[bv>>2];a$=bJ}}}while(0);aC3(w,aS,s,k,ao,af,aQ);bv=c[bu>>2]|0;if((bv|0)!=0){if((a[bt]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bv-16+12>>2]|0)}c[bu>>2]=0}a[bt]=1;c[bu>>2]=0;c[aP>>2]=0;c[bw>>2]=0}}while(0);if((a[b+16|0]&1)==0){i=j;return}aO=c[F>>2]|0;if((c[aO+1116>>2]|0)==0){i=j;return}if((c[aO+1108>>2]|0)==(c[h+136>>2]|0)){ay6(aO,h+8|0,h+72|0);i=j;return}else{ay6(aO,h+72|0,h+8|0);i=j;return}}}while(0);k=f+20|0;axX(u,t,h|0,c[k>>2]|0,0);f=b+28|0;L3035:do{if((c[f>>2]|0)!=0){if((c[(c[F>>2]|0)+1116>>2]|0)>=(c[b+32>>2]|0)){break}bf=+g[R>>2];bE=+g[O>>2];bC=+g[U>>2];bq=1.0/+Q(+(bf*bf+bE*bE+bC*bC));bo=bf*bq;bf=bE*bq;bE=bC*bq;if(+P(+bE)>.7071067690849304){bq=1.0/+Q(+(bE*bE+bf*bf));bN=0.0;bO=bq*(-0.0-bE);bP=bf*bq}else{bq=1.0/+Q(+(bo*bo+bf*bf));bN=bq*(-0.0-bf);bO=bo*bq;bP=0.0}bq=+dh[c[(c[I>>2]|0)+16>>2]&1023](I);bC=+dh[c[(c[G>>2]|0)+16>>2]&1023](G);w=bq<bC;bp=.019999999552965164/(w?bq:bC);bJ=z;if(w){c[bJ>>2]=c[L>>2];c[bJ+4>>2]=c[L+4>>2];c[bJ+8>>2]=c[L+8>>2];c[bJ+12>>2]=c[L+12>>2];bM=A;c[bM>>2]=c[aC>>2];c[bM+4>>2]=c[aC+4>>2];c[bM+8>>2]=c[aC+8>>2];c[bM+12>>2]=c[aC+12>>2];bM=B;c[bM>>2]=c[aB>>2];c[bM+4>>2]=c[aB+4>>2];c[bM+8>>2]=c[aB+8>>2];c[bM+12>>2]=c[aB+12>>2];bM=C;c[bM>>2]=c[r>>2];c[bM+4>>2]=c[r+4>>2];c[bM+8>>2]=c[r+8>>2];c[bM+12>>2]=c[r+12>>2]}else{c[bJ>>2]=c[aF>>2];c[bJ+4>>2]=c[aF+4>>2];c[bJ+8>>2]=c[aF+8>>2];c[bJ+12>>2]=c[aF+12>>2];bM=A;c[bM>>2]=c[aH>>2];c[bM+4>>2]=c[aH+4>>2];c[bM+8>>2]=c[aH+8>>2];c[bM+12>>2]=c[aH+12>>2];bM=B;c[bM>>2]=c[aJ>>2];c[bM+4>>2]=c[aJ+4>>2];c[bM+8>>2]=c[aJ+8>>2];c[bM+12>>2]=c[aJ+12>>2];bM=C;c[bM>>2]=c[aL>>2];c[bM+4>>2]=c[aL+4>>2];c[bM+8>>2]=c[aL+8>>2];c[bM+12>>2]=c[aL+12>>2]}bM=c[f>>2]|0;if((bM|0)<=0){break}bC=bP*bP+(bO*bO+bN*bN);bq=bp>.39269909262657166?.19634954631328583:bp*.5;bp=bE*bE+(bo*bo+bf*bf);bI=s|0;bK=d+20|0;bL=d+36|0;bH=d+8|0;bg=d+24|0;bG=d+40|0;bF=d+12|0;bD=d+28|0;q=d+44|0;p=t|0;o=t+4|0;n=t+8|0;m=t+12|0;l=t+16|0;E=t+20|0;v=t+24|0;y=t+28|0;x=t+32|0;bb=t+36|0;bc=t+40|0;ba=t+44|0;a9=D|0;a8=D+144|0;a5=D+160|0;M=D+164|0;K=D+180|0;aO=D+196|0;aN=D+212|0;bv=D+228|0;a7=D+244|0;a2=D+260|0;bx=D+276|0;a3=D+292|0;aY=D+308|0;aV=A;bA=D+324|0;bz=B;bs=D+340|0;aR=C;by=D+356|0;a$=w&1;aW=D+360|0;bh=D|0;bi=aE|0;a_=e+20|0;aZ=e+36|0;a4=e+8|0;bm=e+24|0;br=e+40|0;a1=e+12|0;a6=e+28|0;bk=e+44|0;bj=t+64|0;bd=t+68|0;aT=t+72|0;aX=t+76|0;aU=t+80|0;a0=t+84|0;bl=t+88|0;bB=t+92|0;bQ=t+96|0;bR=t+100|0;bS=t+104|0;bT=t+108|0;if(bC<=1.1920928955078125e-7){if(w){bU=0;while(1){bU=bU+1|0;if((bU|0)>=(bM|0)){break L3035}}}else{bU=0;while(1){bU=bU+1|0;if((bU|0)>=(bM|0)){break L3035}}}}bn=+Q(+bC);af=+T(+bq)/bn;bn=bN*af;ae=bO*af;W=bP*af;af=+S(+bq);ay=+Q(+bp);if(w){bU=0;bV=bM;do{ag=+(bU|0)*(6.2831854820251465/+(bV|0))*.5;Y=+T(+ag)/ay;at=bo*Y;ar=bf*Y;V=bE*Y;Y=+S(+ag);ag=-0.0-at;Z=-0.0-ar;an=-0.0-V;_=W*Z+(bn*Y+af*ag)-ae*an;$=bn*an+(ae*Y+af*Z)-W*ag;aa=ae*ag+(W*Y+af*an)-bn*Z;ap=af*Y-bn*ag-ae*Z-W*an;an=V*$+(at*ap+Y*_)-ar*aa;Z=at*aa+(Y*$+ar*ap)-V*_;ag=ar*_+(V*ap+Y*aa)-at*$;al=Y*ap-at*_-ar*$-V*aa;aa=2.0/(al*al+(ag*ag+(an*an+Z*Z)));V=an*aa;$=Z*aa;ar=ag*aa;aa=al*V;_=al*$;at=al*ar;al=an*V;V=an*$;ap=an*ar;an=Z*$;$=Z*ar;Z=ag*ar;ar=1.0-(an+Z);ag=V-at;Y=ap+_;az=V+at;at=1.0-(al+Z);Z=$-aa;V=ap-_;_=$+aa;aa=1.0-(al+an);an=+g[bI>>2];al=+g[bK>>2];$=+g[bL>>2];ap=+g[bH>>2];aA=+g[bg>>2];as=+g[bG>>2];am=+g[bF>>2];aq=+g[bD>>2];ak=+g[q>>2];g[p>>2]=$*Y+(al*ag+an*ar);g[o>>2]=ar*ap+ag*aA+Y*as;g[n>>2]=ar*am+ag*aq+Y*ak;g[m>>2]=0.0;g[l>>2]=$*Z+(an*az+al*at);g[E>>2]=az*ap+at*aA+Z*as;g[v>>2]=az*am+at*aq+Z*ak;g[y>>2]=0.0;g[x>>2]=an*V+al*_+$*aa;g[bb>>2]=V*ap+_*aA+aa*as;g[bc>>2]=V*am+_*aq+aa*ak;g[ba>>2]=0.0;c[aF>>2]=c[aG>>2];c[aF+4>>2]=c[aG+4>>2];c[aF+8>>2]=c[aG+8>>2];c[aF+12>>2]=c[aG+12>>2];c[aH>>2]=c[aI>>2];c[aH+4>>2]=c[aI+4>>2];c[aH+8>>2]=c[aI+8>>2];c[aH+12>>2]=c[aI+12>>2];c[aJ>>2]=c[aK>>2];c[aJ+4>>2]=c[aK+4>>2];c[aJ+8>>2]=c[aK+8>>2];c[aJ+12>>2]=c[aK+12>>2];c[aL>>2]=c[aM>>2];c[aL+4>>2]=c[aM+4>>2];c[aL+8>>2]=c[aM+8>>2];c[aL+12>>2]=c[aM+12>>2];bW=c[k>>2]|0;aDD(a8|0,-1|0,16);c[a9>>2]=21040;c[a5>>2]=h;c[M>>2]=c[L>>2];c[M+4>>2]=c[L+4>>2];c[M+8>>2]=c[L+8>>2];c[M+12>>2]=c[L+12>>2];c[K>>2]=c[aC>>2];c[K+4>>2]=c[aC+4>>2];c[K+8>>2]=c[aC+8>>2];c[K+12>>2]=c[aC+12>>2];c[aO>>2]=c[aB>>2];c[aO+4>>2]=c[aB+4>>2];c[aO+8>>2]=c[aB+8>>2];c[aO+12>>2]=c[aB+12>>2];c[aN>>2]=c[r>>2];c[aN+4>>2]=c[r+4>>2];c[aN+8>>2]=c[r+8>>2];c[aN+12>>2]=c[r+12>>2];c[bv>>2]=c[aF>>2];c[bv+4>>2]=c[aF+4>>2];c[bv+8>>2]=c[aF+8>>2];c[bv+12>>2]=c[aF+12>>2];c[a7>>2]=c[aH>>2];c[a7+4>>2]=c[aH+4>>2];c[a7+8>>2]=c[aH+8>>2];c[a7+12>>2]=c[aH+12>>2];c[a2>>2]=c[aJ>>2];c[a2+4>>2]=c[aJ+4>>2];c[a2+8>>2]=c[aJ+8>>2];c[a2+12>>2]=c[aJ+12>>2];c[bx>>2]=c[aL>>2];c[bx+4>>2]=c[aL+4>>2];c[bx+8>>2]=c[aL+8>>2];c[bx+12>>2]=c[aL+12>>2];c[a3>>2]=c[bJ>>2];c[a3+4>>2]=c[bJ+4>>2];c[a3+8>>2]=c[bJ+8>>2];c[a3+12>>2]=c[bJ+12>>2];c[aY>>2]=c[aV>>2];c[aY+4>>2]=c[aV+4>>2];c[aY+8>>2]=c[aV+8>>2];c[aY+12>>2]=c[aV+12>>2];c[bA>>2]=c[bz>>2];c[bA+4>>2]=c[bz+4>>2];c[bA+8>>2]=c[bz+8>>2];c[bA+12>>2]=c[bz+12>>2];c[bs>>2]=c[aR>>2];c[bs+4>>2]=c[aR+4>>2];c[bs+8>>2]=c[aR+8>>2];c[bs+12>>2]=c[aR+12>>2];a[by]=a$;c[aW>>2]=bW;axX(u,t,bh,bW,0);bV=c[f>>2]|0;bU=bU+1|0;}while((bU|0)<(bV|0))}else{bV=0;bU=bM;do{bp=+(bV|0)*(6.2831854820251465/+(bU|0))*.5;bq=+T(+bp)/ay;bC=bo*bq;ak=bf*bq;aa=bE*bq;bq=+S(+bp);c[L>>2]=c[J>>2];c[L+4>>2]=c[J+4>>2];c[L+8>>2]=c[J+8>>2];c[L+12>>2]=c[J+12>>2];c[aC>>2]=c[H>>2];c[aC+4>>2]=c[H+4>>2];c[aC+8>>2]=c[H+8>>2];c[aC+12>>2]=c[H+12>>2];c[aB>>2]=c[N>>2];c[aB+4>>2]=c[N+4>>2];c[aB+8>>2]=c[N+8>>2];c[aB+12>>2]=c[N+12>>2];c[r>>2]=c[aD>>2];c[r+4>>2]=c[aD+4>>2];c[r+8>>2]=c[aD+8>>2];c[r+12>>2]=c[aD+12>>2];bp=-0.0-bC;aq=-0.0-ak;_=-0.0-aa;am=W*aq+(bn*bq+af*bp)-ae*_;V=bn*_+(ae*bq+af*aq)-W*bp;as=ae*bp+(W*bq+af*_)-bn*aq;aA=af*bq-bn*bp-ae*aq-W*_;_=aa*V+(bC*aA+bq*am)-ak*as;aq=bC*as+(bq*V+ak*aA)-aa*am;bp=ak*am+(aa*aA+bq*as)-bC*V;ap=bq*aA-bC*am-ak*V-aa*as;as=2.0/(ap*ap+(bp*bp+(_*_+aq*aq)));aa=_*as;V=aq*as;ak=bp*as;as=ap*aa;am=ap*V;bC=ap*ak;ap=_*aa;aa=_*V;aA=_*ak;_=aq*V;V=aq*ak;aq=bp*ak;ak=1.0-(_+aq);bp=aa-bC;bq=aA+am;$=aa+bC;bC=1.0-(ap+aq);aq=V-as;aa=aA-am;am=V+as;as=1.0-(ap+_);_=+g[bi>>2];ap=+g[a_>>2];V=+g[aZ>>2];aA=+g[a4>>2];al=+g[bm>>2];an=+g[br>>2];Z=+g[a1>>2];at=+g[a6>>2];az=+g[bk>>2];g[bj>>2]=V*bq+(ap*bp+_*ak);g[bd>>2]=ak*aA+bp*al+bq*an;g[aT>>2]=ak*Z+bp*at+bq*az;g[aX>>2]=0.0;g[aU>>2]=V*aq+(_*$+ap*bC);g[a0>>2]=$*aA+bC*al+aq*an;g[bl>>2]=$*Z+bC*at+aq*az;g[bB>>2]=0.0;g[bQ>>2]=_*aa+ap*am+V*as;g[bR>>2]=aa*aA+am*al+as*an;g[bS>>2]=aa*Z+am*at+as*az;g[bT>>2]=0.0;ba=c[k>>2]|0;aDD(a8|0,-1|0,16);c[a9>>2]=21040;c[a5>>2]=h;c[M>>2]=c[L>>2];c[M+4>>2]=c[L+4>>2];c[M+8>>2]=c[L+8>>2];c[M+12>>2]=c[L+12>>2];c[K>>2]=c[aC>>2];c[K+4>>2]=c[aC+4>>2];c[K+8>>2]=c[aC+8>>2];c[K+12>>2]=c[aC+12>>2];c[aO>>2]=c[aB>>2];c[aO+4>>2]=c[aB+4>>2];c[aO+8>>2]=c[aB+8>>2];c[aO+12>>2]=c[aB+12>>2];c[aN>>2]=c[r>>2];c[aN+4>>2]=c[r+4>>2];c[aN+8>>2]=c[r+8>>2];c[aN+12>>2]=c[r+12>>2];c[bv>>2]=c[aF>>2];c[bv+4>>2]=c[aF+4>>2];c[bv+8>>2]=c[aF+8>>2];c[bv+12>>2]=c[aF+12>>2];c[a7>>2]=c[aH>>2];c[a7+4>>2]=c[aH+4>>2];c[a7+8>>2]=c[aH+8>>2];c[a7+12>>2]=c[aH+12>>2];c[a2>>2]=c[aJ>>2];c[a2+4>>2]=c[aJ+4>>2];c[a2+8>>2]=c[aJ+8>>2];c[a2+12>>2]=c[aJ+12>>2];c[bx>>2]=c[aL>>2];c[bx+4>>2]=c[aL+4>>2];c[bx+8>>2]=c[aL+8>>2];c[bx+12>>2]=c[aL+12>>2];c[a3>>2]=c[bJ>>2];c[a3+4>>2]=c[bJ+4>>2];c[a3+8>>2]=c[bJ+8>>2];c[a3+12>>2]=c[bJ+12>>2];c[aY>>2]=c[aV>>2];c[aY+4>>2]=c[aV+4>>2];c[aY+8>>2]=c[aV+8>>2];c[aY+12>>2]=c[aV+12>>2];c[bA>>2]=c[bz>>2];c[bA+4>>2]=c[bz+4>>2];c[bA+8>>2]=c[bz+8>>2];c[bA+12>>2]=c[bz+12>>2];c[bs>>2]=c[aR>>2];c[bs+4>>2]=c[aR+4>>2];c[bs+8>>2]=c[aR+8>>2];c[bs+12>>2]=c[aR+12>>2];a[by]=a$;c[aW>>2]=ba;axX(u,t,bh,ba,0);bU=c[f>>2]|0;bV=bV+1|0;}while((bV|0)<(bU|0))}}}while(0);if((a[b+16|0]&1)==0){i=j;return}b=c[F>>2]|0;if((c[b+1116>>2]|0)==0){i=j;return}if((c[b+1108>>2]|0)==(c[h+136>>2]|0)){ay6(b,h+8|0,h+72|0);i=j;return}else{ay6(b,h+72|0,h+8|0);i=j;return}}function aCA(a){a=a|0;return}function aCB(a){a=a|0;return}function aCC(a,b,c){a=a|0;b=b|0;c=c|0;return}function aCD(a,b,c){a=a|0;b=b|0;c=c|0;return}function aCE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return}function aCF(a,d,e,f,h){a=a|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0.0;h=i;i=i+1216|0;f=h|0;a=h+56|0;j=h+232|0;k=h+592|0;l=h+608|0;m=h+664|0;n=h+840|0;o=h+1200|0;p=d+68|0;q=d+4|0;r=+g[d+116>>2]- +g[d+52>>2];s=+g[d+120>>2]- +g[d+56>>2];t=+g[d+124>>2]- +g[d+60>>2];u=e+68|0;v=e+4|0;w=+g[e+116>>2]- +g[e+52>>2];x=+g[e+120>>2]- +g[e+56>>2];y=+g[e+124>>2]- +g[e+60>>2];z=+g[d+248>>2];do{if(r*r+s*s+t*t<z*z){A=+g[e+248>>2];if(w*w+x*x+y*y<A*A){B=1.0}else{break}i=h;return+B}}while(0);C=c[d+192>>2]|0;y=+g[e+244>>2];c[f+8>>2]=0;g[f+12>>2]=1.0;g[f+16>>2]=1.0;g[f+20>>2]=1.0;g[f+24>>2]=0.0;c[f>>2]=25528;c[f+4>>2]=8;g[f+28>>2]=y;g[f+44>>2]=y;c[a>>2]=19544;D=a+164|0;g[D>>2]=999999984306749400.0;c[a+168>>2]=0;g[a+172>>2]=0.0;g[j+308>>2]=9999999747378752.0e-20;b[j+332>>1]=0;c[k>>2]=24816;c[k+4>>2]=j;c[k+8>>2]=C;c[k+12>>2]=f;do{if(aCV(k,q,p,v,u,a)|0){f=d+240|0;y=+g[D>>2];if(+g[f>>2]>y){g[f>>2]=y}f=e+240|0;if(+g[f>>2]>y){g[f>>2]=y}if(y>=1.0){E=1.0;break}E=y}else{E=1.0}}while(0);D=c[e+192>>2]|0;y=+g[d+244>>2];c[l+8>>2]=0;g[l+12>>2]=1.0;g[l+16>>2]=1.0;g[l+20>>2]=1.0;g[l+24>>2]=0.0;c[l>>2]=25528;c[l+4>>2]=8;g[l+28>>2]=y;g[l+44>>2]=y;c[m>>2]=19544;a=m+164|0;g[a>>2]=999999984306749400.0;c[m+168>>2]=0;g[m+172>>2]=0.0;g[n+308>>2]=9999999747378752.0e-20;b[n+332>>1]=0;c[o>>2]=24816;c[o+4>>2]=n;c[o+8>>2]=l;c[o+12>>2]=D;if(!(aCV(o,q,p,v,u,m)|0)){B=E;i=h;return+B}m=d+240|0;y=+g[a>>2];if(+g[m>>2]>y){g[m>>2]=y}m=e+240|0;if(+g[m>>2]>y){g[m>>2]=y}if(E<=y){B=E;i=h;return+B}B=y;i=h;return+B}function aCG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=b+20|0;if((c[e>>2]|0)==0){return}if((a[b+16|0]&1)==0){return}b=d+4|0;f=c[b>>2]|0;g=d+8|0;do{if((f|0)==(c[g>>2]|0)){h=(f|0)==0?1:f<<1;if((f|0)>=(h|0)){i=f;break}if((h|0)==0){j=0;k=f}else{c[9806]=(c[9806]|0)+1;l=aDx((h<<2)+19|0)|0;if((l|0)==0){m=0}else{n=-(l+4|0)&15;c[l+n>>2]=l;m=l+(n+4)|0}j=m;k=c[b>>2]|0}n=d+12|0;if((k|0)>0){l=0;do{o=j+(l<<2)|0;if((o|0)!=0){c[o>>2]=c[(c[n>>2]|0)+(l<<2)>>2]}l=l+1|0;}while((l|0)<(k|0))}l=c[n>>2]|0;o=d+16|0;if((l|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-4>>2]|0)}c[n>>2]=0}a[o]=1;c[n>>2]=j;c[g>>2]=h;i=c[b>>2]|0}else{i=f}}while(0);f=(c[d+12>>2]|0)+(i<<2)|0;if((f|0)==0){p=i}else{c[f>>2]=c[e>>2];p=c[b>>2]|0}c[b>>2]=p+1;return}function aCH(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;f=d|0;e=c[f>>2]|0;g=dj[c[(c[e>>2]|0)+56>>2]&511](e,36)|0;if((g|0)==0){h=0;i=h|0;return i|0}e=c[d+4>>2]|0;d=c[b+12>>2]|0;j=c[b+8>>2]|0;k=c[b+16>>2]|0;l=c[b+20>>2]|0;b=g;c[b>>2]=22536;c[g+4>>2]=c[f>>2];c[b>>2]=21656;c[g+8>>2]=d;c[g+12>>2]=j;a[g+16|0]=0;c[g+20>>2]=e;a[g+24|0]=0;c[g+28>>2]=k;c[g+32>>2]=l;h=g;i=h|0;return i|0}function aCI(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aCJ(b,d,e,f){b=b|0;d=d|0;e=e|0;f=+f;var h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0,Q=0,R=0,S=0,T=0,U=0;h=i;i=i+16|0;j=h|0;k=+g[d>>2];l=+g[d+4>>2];m=+g[d+8>>2];n=+g[e>>2];o=k*f+n;p=+g[e+4>>2];q=l*f+p;r=+g[e+8>>2];s=m*f+r;e=b+292|0;if((a[b+356|0]&1)==0){f=+g[b+228>>2];t=+g[b+244>>2];u=+g[b+260>>2];v=+g[b+232>>2];w=+g[b+248>>2];x=+g[b+264>>2];y=+g[b+236>>2];z=+g[b+252>>2];A=+g[b+268>>2];B=-0.0- +g[b+276>>2];C=-0.0- +g[b+280>>2];D=-0.0- +g[b+284>>2];E=f*B+t*C+u*D;F=v*B+w*C+x*D;G=y*B+z*C+A*D;D=+g[e>>2];C=+g[b+296>>2];B=+g[b+300>>2];H=+g[b+308>>2];I=+g[b+312>>2];J=+g[b+316>>2];K=+g[b+324>>2];L=+g[b+328>>2];M=+g[b+332>>2];N=r*(u*D+x*C+A*B)+(n*(f*D+v*C+y*B)+p*(t*D+w*C+z*B))+(B*G+(D*E+C*F)+ +g[b+340>>2]);C=r*(u*H+x*I+A*J)+(n*(f*H+v*I+y*J)+p*(t*H+w*I+z*J))+(E*H+F*I+G*J+ +g[b+344>>2]);J=E*K+F*L+G*M+ +g[b+348>>2]+(r*(u*K+x*L+A*M)+(n*(f*K+v*L+y*M)+p*(t*K+w*L+z*M)));g[j>>2]=N;g[j+4>>2]=C;g[j+8>>2]=J;g[j+12>>2]=0.0;O=(o-N)*k+(q-C)*l+(s-J)*m;P=b+160|0;Q=c[P>>2]|0;R=Q;S=c[R>>2]|0;T=S+16|0;U=c[T>>2]|0;dw[U&127](Q,d,j,O);i=h;return}else{J=+g[b+164>>2];C=+g[b+180>>2];N=+g[b+196>>2];M=+g[b+168>>2];z=+g[b+184>>2];L=+g[b+200>>2];w=+g[b+172>>2];K=+g[b+188>>2];t=+g[b+204>>2];y=-0.0- +g[b+212>>2];v=-0.0- +g[b+216>>2];f=-0.0- +g[b+220>>2];A=J*y+C*v+N*f;x=M*y+z*v+L*f;u=w*y+K*v+t*f;f=+g[e>>2];v=+g[b+296>>2];y=+g[b+300>>2];G=+g[b+308>>2];F=+g[b+312>>2];E=+g[b+316>>2];I=+g[b+324>>2];H=+g[b+328>>2];D=+g[b+332>>2];B=s*(N*f+L*v+t*y)+(o*(J*f+M*v+w*y)+q*(C*f+z*v+K*y))+(y*u+(f*A+v*x)+ +g[b+340>>2]);v=s*(N*G+L*F+t*E)+(o*(J*G+M*F+w*E)+q*(C*G+z*F+K*E))+(A*G+x*F+u*E+ +g[b+344>>2]);E=A*I+x*H+u*D+ +g[b+348>>2]+(s*(N*I+L*H+t*D)+(o*(J*I+M*H+w*D)+q*(C*I+z*H+K*D)));D=k*(B-n)+l*(v-p)+m*(E-r);g[j>>2]=B+k*D;g[j+4>>2]=v+l*D;g[j+8>>2]=E+m*D;g[j+12>>2]=0.0;O=D;P=b+160|0;Q=c[P>>2]|0;R=Q;S=c[R>>2]|0;T=S+16|0;U=c[T>>2]|0;dw[U&127](Q,d,j,O);i=h;return}}function aCK(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aCL(b){b=b|0;var d=0,e=0;c[b>>2]=19920;do{if((a[b+8|0]&1)!=0){d=c[b+12>>2]|0;if((d|0)!=0){e=c[b+4>>2]|0;cv[c[(c[e>>2]|0)+16>>2]&2047](e,d)}if((b|0)!=0){break}return}}while(0);aDB(b);return}function aCM(b){b=b|0;var d=0,e=0;c[b>>2]=19920;if((a[b+8|0]&1)==0){return}d=c[b+12>>2]|0;if((d|0)==0){return}e=c[b+4>>2]|0;cv[c[(c[e>>2]|0)+16>>2]&2047](e,d);return}function aCN(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+1.0}function aCO(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0,U=0.0,V=0,W=0.0,X=0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0,ao=0;j=i;i=i+64|0;k=j|0;l=j+16|0;m=j+32|0;n=j+48|0;o=(a[b+16|0]&1)!=0;p=o?f:e;q=o?e:f;f=c[p+192>>2]|0;e=c[q+192>>2]|0;r=+g[p+4>>2];s=+g[p+8>>2];t=+g[p+12>>2];u=+g[p+20>>2];v=+g[p+24>>2];w=+g[p+28>>2];x=+g[p+36>>2];y=+g[p+40>>2];z=+g[p+44>>2];A=+g[p+52>>2];B=+g[p+56>>2];C=+g[p+60>>2];p=q+4|0;o=q+20|0;D=q+36|0;E=q+8|0;F=q+24|0;G=q+40|0;H=q+12|0;I=q+28|0;J=q+44|0;K=+g[p>>2];L=+g[o>>2];M=+g[D>>2];N=+g[E>>2];O=+g[F>>2];P=+g[G>>2];Q=+g[H>>2];R=+g[I>>2];S=+g[J>>2];T=q+52|0;U=-0.0- +g[T>>2];V=q+56|0;W=-0.0- +g[V>>2];X=q+60|0;Y=-0.0- +g[X>>2];Z=+g[d>>2];_=+g[d+4>>2];$=+g[d+8>>2];aa=+g[d+12>>2];ab=2.0/(Z*Z+_*_+$*$+aa*aa);ac=Z*ab;ad=_*ab;ae=$*ab;ab=aa*ac;af=aa*ad;ag=aa*ae;aa=Z*ac;ac=Z*ad;ah=Z*ae;Z=_*ad;ad=_*ae;_=$*ae;ae=1.0-(Z+_);$=ac-ag;ai=ah+af;aj=ac+ag;ag=1.0-(aa+_);_=ad-ab;ac=ah-af;af=ad+ab;ab=1.0-(aa+Z);Z=t*ac+(s*aj+r*ae);aa=t*af+(r*$+s*ag);ad=r*ai+s*_+t*ab;ah=w*ac+(v*aj+u*ae);ak=w*af+(u*$+v*ag);al=u*ai+v*_+w*ab;am=z*ac+(y*aj+x*ae);ae=z*af+(x*$+y*ag);ag=x*ai+y*_+z*ab;d=c[(c[f>>2]|0)+60>>2]|0;q=e+48|0;ab=-0.0- +g[q>>2];an=e+52|0;_=-0.0- +g[an>>2];ao=e+56|0;ai=-0.0- +g[ao>>2];g[l>>2]=(S*am+(Q*Z+R*ah))*ai+((M*am+(K*Z+L*ah))*ab+(P*am+(N*Z+O*ah))*_);g[l+4>>2]=(S*ae+(Q*aa+R*ak))*ai+((M*ae+(K*aa+L*ak))*ab+(P*ae+(N*aa+O*ak))*_);g[l+8>>2]=(S*ag+(Q*ad+R*al))*ai+((M*ag+(K*ad+L*al))*ab+(P*ag+(N*ad+O*al))*_);g[l+12>>2]=0.0;dA[d&511](k,f,l);_=+g[k>>2];al=+g[k+4>>2];ad=+g[k+8>>2];ag=A*K+B*L+C*M+(K*U+L*W+M*Y)+((r*K+u*L+x*M)*_+(s*K+v*L+y*M)*al+(t*K+w*L+z*M)*ad);M=A*N+B*O+C*P+(N*U+O*W+P*Y)+((r*N+u*O+x*P)*_+(s*N+v*O+y*P)*al+(t*N+w*O+z*P)*ad);P=A*Q+B*R+C*S+(Q*U+R*W+S*Y)+((r*Q+u*R+x*S)*_+(s*Q+v*R+y*S)*al+(t*Q+w*R+z*S)*ad);ad=+g[q>>2];S=+g[an>>2];z=+g[ao>>2];R=z*P+(ad*ag+S*M)- +g[e+64>>2];w=ag-ad*R;ad=M-S*R;S=P-z*R;z=+g[p>>2];P=+g[E>>2];M=+g[H>>2];ag=+g[T>>2];Q=+g[o>>2];t=+g[F>>2];al=+g[I>>2];y=+g[V>>2];v=+g[D>>2];s=+g[G>>2];_=+g[J>>2];x=+g[X>>2];X=c[b+12>>2]|0;b=R<+g[X+1120>>2];c[h+4>>2]=X;if(!b){i=j;return}u=+g[q>>2];r=+g[an>>2];Y=+g[ao>>2];W=u*+g[o>>2]+r*+g[F>>2]+Y*+g[I>>2];U=u*+g[D>>2]+r*+g[G>>2]+Y*+g[J>>2];g[m>>2]=+g[p>>2]*u+ +g[E>>2]*r+ +g[H>>2]*Y;g[m+4>>2]=W;g[m+8>>2]=U;g[m+12>>2]=0.0;g[n>>2]=ag+(M*S+(z*w+P*ad));g[n+4>>2]=y+(w*Q+ad*t+S*al);g[n+8>>2]=x+(w*v+ad*s+S*_);g[n+12>>2]=0.0;dw[c[(c[h>>2]|0)+16>>2]&127](h,m,n,R);i=j;return}function aCP(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,R=0.0,U=0.0;f=i;i=i+32|0;j=f|0;k=f+16|0;l=b+12|0;if((c[l>>2]|0)==0){i=f;return}m=(a[b+16|0]&1)!=0;n=c[(m?e:d)+192>>2]|0;o=c[(m?d:e)+192>>2]|0;g[j>>2]=0.0;g[j+4>>2]=0.0;g[j+8>>2]=0.0;g[j+12>>2]=1.0;aCO(b,j,d,e,h);j=h+4|0;do{if((c[(c[j>>2]|0)+1116>>2]|0)<(c[b+24>>2]|0)){m=o+48|0;p=o+56|0;q=+g[p>>2];if(+P(+q)>.7071067690849304){r=+g[o+52>>2];s=1.0/+Q(+(q*q+r*r));t=0.0;u=s*(-0.0-q);v=r*s}else{s=+g[m>>2];r=+g[o+52>>2];q=1.0/+Q(+(s*s+r*r));t=q*(-0.0-r);u=s*q;v=0.0}q=.019999999552965164/+dh[c[(c[n>>2]|0)+16>>2]&1023](n);s=+Q(+(v*v+(u*u+t*t)));r=q>.39269909262657166?.19634954631328583:q*.5;q=+T(+r)/s;s=t*q;w=u*q;x=v*q;q=+S(+r);y=b+20|0;z=c[y>>2]|0;if((z|0)<=0){break}A=o+52|0;B=k|0;C=k+4|0;D=k+8|0;E=k+12|0;F=0;G=z;do{r=+g[m>>2];H=+g[A>>2];I=+g[p>>2];J=+Q(+(r*r+H*H+I*I));K=+(F|0)*(6.2831854820251465/+(G|0))*.5;L=+T(+K)/J;J=r*L;r=H*L;H=I*L;L=+S(+K);K=-0.0-J;I=-0.0-r;M=-0.0-H;N=x*I+(s*L+q*K)-w*M;O=s*M+(w*L+q*I)-x*K;R=w*K+(x*L+q*M)-s*I;U=q*L-s*K-w*I-x*M;g[B>>2]=H*O+(J*U+L*N)-r*R;g[C>>2]=J*R+(L*O+r*U)-H*N;g[D>>2]=r*N+(H*U+L*R)-J*O;g[E>>2]=L*U-J*N-r*O-H*R;aCO(b,k,d,e,h);F=F+1|0;G=c[y>>2]|0;}while((F|0)<(G|0))}}while(0);if((a[b+8|0]&1)==0){i=f;return}if((c[(c[l>>2]|0)+1116>>2]|0)==0){i=f;return}l=c[j>>2]|0;if((c[l+1116>>2]|0)==0){i=f;return}if((c[l+1108>>2]|0)==(c[h+136>>2]|0)){ay6(l,h+8|0,h+72|0);i=f;return}else{ay6(l,h+72|0,h+8|0);i=f;return}}function aCQ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=b+12|0;if((c[e>>2]|0)==0){return}if((a[b+8|0]&1)==0){return}b=d+4|0;f=c[b>>2]|0;g=d+8|0;do{if((f|0)==(c[g>>2]|0)){h=(f|0)==0?1:f<<1;if((f|0)>=(h|0)){i=f;break}if((h|0)==0){j=0;k=f}else{c[9806]=(c[9806]|0)+1;l=aDx((h<<2)+19|0)|0;if((l|0)==0){m=0}else{n=-(l+4|0)&15;c[l+n>>2]=l;m=l+(n+4)|0}j=m;k=c[b>>2]|0}n=d+12|0;if((k|0)>0){l=0;do{o=j+(l<<2)|0;if((o|0)!=0){c[o>>2]=c[(c[n>>2]|0)+(l<<2)>>2]}l=l+1|0;}while((l|0)<(k|0))}l=c[n>>2]|0;o=d+16|0;if((l|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-4>>2]|0)}c[n>>2]=0}a[o]=1;c[n>>2]=j;c[g>>2]=h;i=c[b>>2]|0}else{i=f}}while(0);f=(c[d+12>>2]|0)+(i<<2)|0;if((f|0)==0){p=i}else{c[f>>2]=c[e>>2];p=c[b>>2]|0}c[b>>2]=p+1;return}function aCR(a){a=a|0;aCU(a);if((a|0)==0){return}aDB(a);return}function aCS(a){a=a|0;return}function aCT(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0;g[e>>2]=3.4028234663852886e+38;g[f>>2]=-3.4028234663852886e+38;h=c[a+8>>2]|0;if((h|0)>0){i=a+16|0;a=b|0;j=b+4|0;k=b+8|0;l=b+48|0;m=b+16|0;n=b+20|0;o=b+24|0;p=b+52|0;q=b+32|0;r=b+36|0;s=b+40|0;t=b+56|0;b=d|0;u=d+4|0;v=d+8|0;d=0;w=-3.4028234663852886e+38;while(1){x=c[i>>2]|0;y=+g[x+(d<<4)>>2];z=+g[x+(d<<4)+4>>2];A=+g[x+(d<<4)+8>>2];B=(+g[l>>2]+(+g[a>>2]*y+ +g[j>>2]*z+ +g[k>>2]*A))*+g[b>>2]+(+g[p>>2]+(y*+g[m>>2]+z*+g[n>>2]+A*+g[o>>2]))*+g[u>>2]+(+g[t>>2]+(y*+g[q>>2]+z*+g[r>>2]+A*+g[s>>2]))*+g[v>>2];if(B<+g[e>>2]){g[e>>2]=B;C=+g[f>>2]}else{C=w}if(B>C){g[f>>2]=B;D=B}else{D=C}x=d+1|0;if((x|0)<(h|0)){d=x;w=D}else{E=D;break}}}else{E=-3.4028234663852886e+38}D=+g[e>>2];if(D<=E){return}g[e>>2]=E;g[f>>2]=D;return}function aCU(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;c[b>>2]=23416;d=b+48|0;e=b+56|0;f=c[e>>2]|0;g=b+60|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-16+12>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+52>>2]=0;d=b+28|0;azh(b+24|0,c[d>>2]|0);e=b+36|0;g=c[e>>2]|0;f=b+40|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+32>>2]=0;d=b+8|0;e=b+16|0;f=c[e>>2]|0;g=b+20|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+12|0;c[h>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-16+12>>2]|0)}c[e>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+12|0;c[h>>2]=0;return}function aCV(d,e,f,h,j,k){d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,P=0.0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0,$=0.0,aa=0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0;l=i;i=i+280|0;m=l+16|0;n=l+64|0;o=l+144|0;p=d+4|0;q=c[p>>2]|0;a[q+312|0]=0;c[q>>2]=0;a[q+356|0]=1;g[q+292>>2]=999999984306749400.0;g[q+296>>2]=999999984306749400.0;g[q+300>>2]=999999984306749400.0;g[q+304>>2]=0.0;r=q+332|0;aDD(q+336|0,0,17);b[r>>1]=b[r>>1]&-16;r=e+48|0;q=f+48|0;s=r|0;t=f+52|0;u=e+52|0;v=f+56|0;f=e+56|0;w=h+48|0;x=j+48|0;y=w|0;z=j+52|0;A=h+52|0;B=j+56|0;j=h+56|0;C=+g[q>>2]- +g[s>>2]-(+g[x>>2]- +g[y>>2]);D=+g[t>>2]- +g[u>>2]-(+g[z>>2]- +g[A>>2]);E=+g[v>>2]- +g[f>>2]-(+g[B>>2]- +g[j>>2]);c[m>>2]=23960;F=m+36|0;g[F>>2]=999999984306749400.0;G=m+40|0;a[G]=0;H=c[d+8>>2]|0;I=c[d+12>>2]|0;d=c[p>>2]|0;c[n>>2]=23568;g[n+4>>2]=0.0;g[n+8>>2]=1.0;g[n+12>>2]=0.0;g[n+16>>2]=0.0;c[n+20>>2]=0;c[n+24>>2]=d;c[n+28>>2]=H;c[n+32>>2]=I;c[n+36>>2]=c[H+4>>2];c[n+40>>2]=c[I+4>>2];g[n+44>>2]=+dh[c[(c[H>>2]|0)+44>>2]&1023](H);g[n+48>>2]=+dh[c[(c[I>>2]|0)+44>>2]&1023](I);a[n+52|0]=0;c[n+60>>2]=-1;c[n+72>>2]=1;g[o+128>>2]=999999984306749400.0;c[o+132>>2]=0;I=o;H=e;c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];H=o+16|0;I=e+16|0;c[H>>2]=c[I>>2];c[H+4>>2]=c[I+4>>2];c[H+8>>2]=c[I+8>>2];c[H+12>>2]=c[I+12>>2];I=o+32|0;H=e+32|0;c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];H=o+48|0;I=H;e=r;c[I>>2]=c[e>>2];c[I+4>>2]=c[e+4>>2];c[I+8>>2]=c[e+8>>2];c[I+12>>2]=c[e+12>>2];e=o+64|0;I=h;c[e>>2]=c[I>>2];c[e+4>>2]=c[I+4>>2];c[e+8>>2]=c[I+8>>2];c[e+12>>2]=c[I+12>>2];I=o+80|0;e=h+16|0;c[I>>2]=c[e>>2];c[I+4>>2]=c[e+4>>2];c[I+8>>2]=c[e+8>>2];c[I+12>>2]=c[e+12>>2];e=o+96|0;I=h+32|0;c[e>>2]=c[I>>2];c[e+4>>2]=c[I+4>>2];c[e+8>>2]=c[I+8>>2];c[e+12>>2]=c[I+12>>2];I=o+112|0;e=I;h=w;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];h=m|0;axX(n,o,h,0,0);e=(a[G]&1)==0;w=m+20|0;r=l|0;c[r>>2]=c[w>>2];c[r+4>>2]=c[w+4>>2];c[r+8>>2]=c[w+8>>2];c[r+12>>2]=c[w+12>>2];if(e){J=0;i=l;return J|0}K=+g[F>>2];e=m+4|0;L=+g[e>>2];d=m+8|0;M=+g[d>>2];p=m+12|0;N=+g[p>>2];O=m+16|0;P=+g[O>>2];do{if(K>.0010000000474974513){m=k;Q=H|0;R=o+52|0;S=o+56|0;T=I|0;U=o+116|0;V=o+120|0;W=N;X=M;Y=L;Z=0.0;_=1;$=K;while(1){if((_|0)>32){J=0;aa=2583;break}ab=Z-$/(E*W+(D*X+C*Y));if(!(ab>=0.0&ab<=1.0&ab>Z)){J=0;aa=2588;break}cq[c[c[m>>2]>>2]&1023](k,ab);ac=1.0-ab;g[Q>>2]=ac*+g[s>>2]+ab*+g[q>>2];g[R>>2]=ac*+g[u>>2]+ab*+g[t>>2];g[S>>2]=ac*+g[f>>2]+ab*+g[v>>2];g[T>>2]=ac*+g[y>>2]+ab*+g[x>>2];g[U>>2]=ac*+g[A>>2]+ab*+g[z>>2];g[V>>2]=ac*+g[j>>2]+ab*+g[B>>2];axX(n,o,h,0,0);if((a[G]&1)==0){J=0;aa=2582;break}ac=+g[F>>2];if(ac<0.0){aa=2575;break}c[r>>2]=c[w>>2];c[r+4>>2]=c[w+4>>2];c[r+8>>2]=c[w+8>>2];c[r+12>>2]=c[w+12>>2];ad=+g[e>>2];ae=+g[d>>2];af=+g[p>>2];if(ac>.0010000000474974513){W=af;X=ae;Y=ad;Z=ab;_=_+1|0;$=ac}else{aa=2577;break}}if((aa|0)==2583){i=l;return J|0}else if((aa|0)==2582){i=l;return J|0}else if((aa|0)==2588){i=l;return J|0}else if((aa|0)==2577){ag=+g[O>>2];ah=af;ai=ae;aj=ad;ak=ab;break}else if((aa|0)==2575){g[k+164>>2]=ab;$=+g[d>>2];Z=+g[p>>2];Y=+g[O>>2];g[k+132>>2]=+g[e>>2];g[k+136>>2]=$;g[k+140>>2]=Z;g[k+144>>2]=Y;_=k+148|0;c[_>>2]=c[w>>2];c[_+4>>2]=c[w+4>>2];c[_+8>>2]=c[w+8>>2];c[_+12>>2]=c[w+12>>2];J=1;i=l;return J|0}}else{ag=P;ah=N;ai=M;aj=L;ak=0.0}}while(0);if(E*ah+(D*ai+C*aj)>=-0.0- +g[k+172>>2]){J=0;i=l;return J|0}g[k+164>>2]=ak;g[k+132>>2]=aj;g[k+136>>2]=ai;g[k+140>>2]=ah;g[k+144>>2]=ag;w=k+148|0;c[w>>2]=c[r>>2];c[w+4>>2]=c[r+4>>2];c[w+8>>2]=c[r+8>>2];c[w+12>>2]=c[r+12>>2];J=1;i=l;return J|0}function aCW(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aCX(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0.0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0.0,av=0,aw=0.0,ax=0.0,ay=0,az=0.0,aA=0.0,aB=0.0,aC=0.0,aD=0.0,aE=0.0,aF=0.0,aG=0,aH=0.0,aI=0.0,aJ=0.0,aK=0.0,aL=0.0,aM=0.0,aN=0,aO=0.0,aP=0.0,aQ=0.0,aR=0,aS=0.0,aT=0;e=i;i=i+176|0;f=e|0;h=e+16|0;j=e+64|0;k=e+80|0;l=e+88|0;m=e+152|0;n=e+168|0;c[a+348>>2]=a+220;c[a+352>>2]=a+252;c[a+356>>2]=a+284;o=a+316|0;c[a+360>>2]=o;p=a+364|0;c[p>>2]=4;q=a+368|0;c[q>>2]=0;r=a+376|0;c[r>>2]=0;s=b;t=a;u=c[s+4>>2]|0;c[t>>2]=c[s>>2];c[t+4>>2]=u;u=a+8|0;t=b+8|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];t=a+24|0;u=b+24|0;c[t>>2]=c[u>>2];c[t+4>>2]=c[u+4>>2];c[t+8>>2]=c[u+8>>2];c[t+12>>2]=c[u+12>>2];u=a+40|0;t=b+40|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];t=a+56|0;u=b+56|0;c[t>>2]=c[u>>2];c[t+4>>2]=c[u+4>>2];c[t+8>>2]=c[u+8>>2];c[t+12>>2]=c[u+12>>2];u=a+72|0;t=b+72|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];t=a+88|0;u=b+88|0;c[t>>2]=c[u>>2];c[t+4>>2]=c[u+4>>2];c[t+8>>2]=c[u+8>>2];c[t+12>>2]=c[u+12>>2];u=a+104|0;t=b+104|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];t=b+120|0;b=c[t+4>>2]|0;u=a+120|0;c[u>>2]=c[t>>2];c[u+4>>2]=b;b=a+144|0;g[b>>2]=0.0;u=a+180|0;c[u>>2]=0;t=a+128|0;s=t;v=d;c[s>>2]=c[v>>2];c[s+4>>2]=c[v+4>>2];c[s+8>>2]=c[v+8>>2];c[s+12>>2]=c[v+12>>2];v=t|0;w=+g[v>>2];t=a+132|0;x=+g[t>>2];d=a+136|0;y=+g[d>>2];z=w*w+x*x+y*y;if(z>0.0){A=-0.0-y;B=-0.0-x;C=-0.0-w}else{A=0.0;B=0.0;C=1.0}D=a+164|0;g[D>>2]=0.0;c[p>>2]=3;E=a+148|0;c[E>>2]=o;c[u>>2]=1;aC_(a,C,B,A,o);g[D>>2]=1.0;D=(c[E>>2]|0)+16|0;c[s>>2]=c[D>>2];c[s+4>>2]=c[D+4>>2];c[s+8>>2]=c[D+8>>2];c[s+12>>2]=c[D+12>>2];s=l+48|0;c[s>>2]=c[D>>2];c[s+4>>2]=c[D+4>>2];c[s+8>>2]=c[D+8>>2];c[s+12>>2]=c[D+12>>2];s=l+32|0;c[s>>2]=c[D>>2];c[s+4>>2]=c[D+4>>2];c[s+8>>2]=c[D+8>>2];c[s+12>>2]=c[D+12>>2];s=l+16|0;c[s>>2]=c[D>>2];c[s+4>>2]=c[D+4>>2];c[s+8>>2]=c[D+8>>2];c[s+12>>2]=c[D+12>>2];s=l;c[s>>2]=c[D>>2];c[s+4>>2]=c[D+4>>2];c[s+8>>2]=c[D+8>>2];c[s+12>>2]=c[D+12>>2];D=m|0;s=a+128|0;E=j;o=f|0;u=f+4|0;F=f+8|0;G=f+12|0;H=h|0;I=h+4|0;J=h+8|0;K=h+12|0;L=h+16|0;M=h+20|0;N=h+24|0;O=h+28|0;P=h+32|0;R=h+36|0;S=h+40|0;T=h+44|0;U=j|0;V=j+4|0;W=j+8|0;j=m+12|0;X=m+4|0;Y=m+8|0;Z=1;A=z;_=1;z=0.0;L3333:while(1){$=c[q>>2]|0;aa=1-$|0;ab=a+148+($*36|0)|0;B=+g[v>>2];C=+g[t>>2];w=+g[d>>2];x=+Q(+(B*B+C*C+w*w));if(x<9999999747378752.0e-20){ac=2598;break}ad=a+148+($*36|0)+32|0;g[a+148+($*36|0)+16+(c[ad>>2]<<2)>>2]=0.0;ae=(c[p>>2]|0)-1|0;c[p>>2]=ae;c[a+148+($*36|0)+(c[ad>>2]<<2)>>2]=c[a+348+(ae<<2)>>2];ae=c[ad>>2]|0;c[ad>>2]=ae+1;aC_(a,-0.0-B,-0.0-C,-0.0-w,c[a+148+($*36|0)+(ae<<2)>>2]|0);ae=c[ad>>2]|0;af=c[a+148+($*36|0)+(ae-1<<2)>>2]|0;ag=af+16|0;ah=ag|0;ai=af+20|0;aj=af+24|0;af=0;while(1){if(af>>>0>=4){break}w=+g[ah>>2]- +g[l+(af<<4)>>2];C=+g[ai>>2]- +g[l+(af<<4)+4>>2];B=+g[aj>>2]- +g[l+(af<<4)+8>>2];if(w*w+C*C+B*B<9999999747378752.0e-20){ac=2602;break L3333}else{af=af+1|0}}af=l+(_<<4)|0;ak=ag;c[af>>2]=c[ak>>2];c[af+4>>2]=c[ak+4>>2];c[af+8>>2]=c[ak+8>>2];c[af+12>>2]=c[ak+12>>2];B=(+g[v>>2]*+g[ah>>2]+ +g[t>>2]*+g[ai>>2]+ +g[d>>2]*+g[aj>>2])/x;C=B>z?B:z;if(x-C-x*9999999747378752.0e-20<=0.0){ac=2604;break}c[n>>2]=0;do{if((ae|0)==2){al=+aC$((c[ab>>2]|0)+16|0,(c[a+148+($*36|0)+4>>2]|0)+16|0,D,n)}else if((ae|0)==3){al=+aC1((c[ab>>2]|0)+16|0,(c[a+148+($*36|0)+4>>2]|0)+16|0,(c[a+148+($*36|0)+8>>2]|0)+16|0,D,n)}else if((ae|0)==4){ak=c[ab>>2]|0;af=ak+16|0;am=c[a+148+($*36|0)+4>>2]|0;an=am+16|0;ao=c[a+148+($*36|0)+8>>2]|0;ap=ao+16|0;aq=c[a+148+($*36|0)+12>>2]|0;ar=aq+16|0;c[o>>2]=af;c[u>>2]=an;c[F>>2]=ap;c[G>>2]=ar;as=af|0;B=+g[as>>2];af=ar|0;w=+g[af>>2];y=B-w;at=ak+20|0;au=+g[at>>2];av=aq+20|0;aw=+g[av>>2];ax=au-aw;ay=ak+24|0;az=+g[ay>>2];ak=aq+24|0;aA=+g[ak>>2];aB=az-aA;g[H>>2]=y;g[I>>2]=ax;g[J>>2]=aB;g[K>>2]=0.0;aq=an|0;aC=+g[aq>>2];aD=aC-w;an=am+20|0;aE=+g[an>>2];aF=aE-aw;aG=am+24|0;aH=+g[aG>>2];aI=aH-aA;g[L>>2]=aD;g[M>>2]=aF;g[N>>2]=aI;g[O>>2]=0.0;am=ap|0;aJ=+g[am>>2];aK=aJ-w;ap=ao+20|0;aL=+g[ap>>2];aM=aL-aw;aN=ao+24|0;aO=+g[aN>>2];aP=aO-aA;g[P>>2]=aK;g[R>>2]=aM;g[S>>2]=aP;g[T>>2]=0.0;aQ=ax*aI*aK+aB*aD*aM-aM*aI*y-ax*aD*aP+aP*y*aF-aK*aB*aF;aF=aC-aJ;aJ=aE-aL;aL=aH-aO;aO=B-aC;aC=au-aE;aE=az-aH;if(aQ*(az*(aF*aC-aJ*aO)+(B*(aJ*aE-aL*aC)+au*(aL*aO-aF*aE)))>0.0|aQ==0.0){al=-1.0;break}aDD(E|0,0,12);c[k>>2]=0;ao=0;aE=-1.0;aF=ax;ax=aB;aB=y;y=w;w=aw;aw=aA;while(1){aR=c[18320+(ao<<2)>>2]|0;aA=+g[h+(aR<<4)+8>>2];aO=+g[h+(aR<<4)+4>>2];aL=+g[h+(aR<<4)>>2];do{if(aQ*((aF*aA-ax*aO)*y+w*(ax*aL-aA*aB)+(aO*aB-aF*aL)*aw)>0.0){au=+aC1(c[f+(ao<<2)>>2]|0,c[f+(aR<<2)>>2]|0,ar,U,k);if(!(aE<0.0|au<aE)){aS=aE;break}aT=c[k>>2]|0;c[n>>2]=((aT&2|0)==0?0:1<<aR)+(aT<<1&8)+((aT&1|0)==0?0:1<<ao);g[m+(ao<<2)>>2]=+g[U>>2];g[m+(aR<<2)>>2]=+g[V>>2];g[m+(c[18320+(aR<<2)>>2]<<2)>>2]=0.0;g[j>>2]=+g[W>>2];aS=au}else{aS=aE}}while(0);aR=ao+1|0;if(aR>>>0>=3){break}ao=aR;aE=aS;aF=+g[h+(aR<<4)+4>>2];ax=+g[h+(aR<<4)+8>>2];aB=+g[h+(aR<<4)>>2];y=+g[af>>2];w=+g[av>>2];aw=+g[ak>>2]}if(aS>=0.0){al=aS;break}c[n>>2]=15;aw=+g[ap>>2];w=+g[aG>>2];y=+g[af>>2];aB=+g[aN>>2];ax=+g[aq>>2];aF=+g[av>>2];aE=+g[am>>2];aL=+g[ak>>2];aO=+g[an>>2];aA=(aw*w*y+aB*ax*aF-aF*w*aE-aw*ax*aL+aL*aE*aO-y*aB*aO)/aQ;g[D>>2]=aA;au=+g[at>>2];aC=+g[ay>>2];aJ=+g[as>>2];B=(au*aB*y+aC*aE*aF-aF*aB*aJ-au*aE*aL+aL*aJ*aw-y*aC*aw)/aQ;g[X>>2]=B;aw=(aO*aC*y+w*aJ*aF-aF*aC*ax-aO*aJ*aL+aL*ax*au-y*w*au)/aQ;g[Y>>2]=aw;g[j>>2]=1.0-(aw+(aA+B));al=0.0}else{al=A}}while(0);if(al<0.0){ac=2625;break}ab=a+148+(aa*36|0)+32|0;c[ab>>2]=0;aDD(s|0,0,16);c[q>>2]=aa;ae=c[ad>>2]|0;aj=c[n>>2]|0;if((ae|0)!=0){ai=0;do{ah=a+148+($*36|0)+(ai<<2)|0;ag=c[ah>>2]|0;if((aj&1<<ai|0)==0){ao=c[p>>2]|0;c[p>>2]=ao+1;c[a+348+(ao<<2)>>2]=ag}else{c[a+148+(aa*36|0)+(c[ab>>2]<<2)>>2]=ag;x=+g[m+(ai<<2)>>2];ag=c[ab>>2]|0;c[ab>>2]=ag+1;g[a+148+(aa*36|0)+16+(ag<<2)>>2]=x;ag=c[ah>>2]|0;B=x*+g[ag+20>>2];aA=x*+g[ag+24>>2];g[v>>2]=+g[ag+16>>2]*x+ +g[v>>2];g[t>>2]=B+ +g[t>>2];g[d>>2]=aA+ +g[d>>2]}ai=ai+1|0;}while(ai>>>0<ae>>>0)}if((aj|0)==15){c[r>>2]=1}if(Z>>>0>=128){ac=2627;break}if((c[r>>2]|0)!=0){break}Z=Z+1|0;A=al;_=_+1&3;z=C}if((ac|0)==2602){_=c[q>>2]|0;Z=a+148+(_*36|0)+32|0;m=(c[Z>>2]|0)-1|0;c[Z>>2]=m;Z=c[a+148+(_*36|0)+(m<<2)>>2]|0;m=c[p>>2]|0;c[p>>2]=m+1;c[a+348+(m<<2)>>2]=Z}else if((ac|0)==2604){Z=c[q>>2]|0;m=a+148+(Z*36|0)+32|0;_=(c[m>>2]|0)-1|0;c[m>>2]=_;m=c[a+148+(Z*36|0)+(_<<2)>>2]|0;_=c[p>>2]|0;c[p>>2]=_+1;c[a+348+(_<<2)>>2]=m}else if((ac|0)==2627){c[r>>2]=2}else if((ac|0)==2625){m=c[q>>2]|0;_=a+148+(m*36|0)+32|0;Z=(c[_>>2]|0)-1|0;c[_>>2]=Z;_=c[a+148+(m*36|0)+(Z<<2)>>2]|0;Z=c[p>>2]|0;c[p>>2]=Z+1;c[a+348+(Z<<2)>>2]=_}else if((ac|0)==2598){c[r>>2]=1}c[a+372>>2]=a+148+((c[q>>2]|0)*36|0);q=c[r>>2]|0;if((q|0)==0){z=+g[v>>2];al=+g[t>>2];A=+g[d>>2];g[b>>2]=+Q(+(z*z+al*al+A*A));i=e;return q|0}else if((q|0)==1){g[b>>2]=0.0;i=e;return q|0}else{i=e;return q|0}return 0}function aCY(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0,H=0;b=i;i=i+32|0;d=b|0;e=b+16|0;f=a+372|0;h=c[f>>2]|0;j=h+32|0;k=c[j>>2]|0;L3384:do{if((k|0)==2){l=c[h+4>>2]|0;m=c[h>>2]|0;n=+g[l+16>>2]- +g[m+16>>2];o=+g[l+20>>2]- +g[m+20>>2];p=+g[l+24>>2]- +g[m+24>>2];m=e|0;l=e+4|0;q=e+8|0;r=a+364|0;s=e;t=0;while(1){aDD(s|0,0,16);g[e+(t<<2)>>2]=1.0;u=+g[q>>2];v=+g[l>>2];w=o*u-p*v;x=+g[m>>2];y=p*x-n*u;u=n*v-o*x;if(w*w+y*y+u*u>0.0){z=c[f>>2]|0;A=z+32|0;g[z+16+(c[A>>2]<<2)>>2]=0.0;B=(c[r>>2]|0)-1|0;c[r>>2]=B;c[z+(c[A>>2]<<2)>>2]=c[a+348+(B<<2)>>2];B=c[A>>2]|0;c[A>>2]=B+1;aC_(a,w,y,u,c[z+(B<<2)>>2]|0);if(aCY(a)|0){C=1;D=2663;break}B=c[f>>2]|0;z=B+32|0;A=(c[z>>2]|0)-1|0;c[z>>2]=A;z=c[B+(A<<2)>>2]|0;A=c[r>>2]|0;c[r>>2]=A+1;c[a+348+(A<<2)>>2]=z;z=c[f>>2]|0;A=z+32|0;g[z+16+(c[A>>2]<<2)>>2]=0.0;B=(c[r>>2]|0)-1|0;c[r>>2]=B;c[z+(c[A>>2]<<2)>>2]=c[a+348+(B<<2)>>2];B=c[A>>2]|0;c[A>>2]=B+1;aC_(a,-0.0-w,-0.0-y,-0.0-u,c[z+(B<<2)>>2]|0);if(aCY(a)|0){C=1;D=2660;break}B=c[f>>2]|0;z=B+32|0;A=(c[z>>2]|0)-1|0;c[z>>2]=A;z=c[B+(A<<2)>>2]|0;A=c[r>>2]|0;c[r>>2]=A+1;c[a+348+(A<<2)>>2]=z}t=t+1|0;if(t>>>0>=3){break L3384}}if((D|0)==2660){i=b;return C|0}else if((D|0)==2663){i=b;return C|0}}else if((k|0)==3){t=c[h+4>>2]|0;r=c[h>>2]|0;o=+g[r+16>>2];n=+g[t+16>>2]-o;p=+g[r+20>>2];u=+g[t+20>>2]-p;y=+g[r+24>>2];w=+g[t+24>>2]-y;t=c[h+8>>2]|0;x=+g[t+16>>2]-o;o=+g[t+20>>2]-p;p=+g[t+24>>2]-y;y=u*p-w*o;v=w*x-n*p;p=n*o-u*x;if(y*y+v*v+p*p<=0.0){break}g[h+28>>2]=0.0;t=a+364|0;r=(c[t>>2]|0)-1|0;c[t>>2]=r;c[h+(c[j>>2]<<2)>>2]=c[a+348+(r<<2)>>2];r=c[j>>2]|0;c[j>>2]=r+1;aC_(a,y,v,p,c[h+(r<<2)>>2]|0);if(aCY(a)|0){C=1;i=b;return C|0}r=c[f>>2]|0;m=r+32|0;l=(c[m>>2]|0)-1|0;c[m>>2]=l;m=c[r+(l<<2)>>2]|0;l=c[t>>2]|0;c[t>>2]=l+1;c[a+348+(l<<2)>>2]=m;m=c[f>>2]|0;l=m+32|0;g[m+16+(c[l>>2]<<2)>>2]=0.0;r=(c[t>>2]|0)-1|0;c[t>>2]=r;c[m+(c[l>>2]<<2)>>2]=c[a+348+(r<<2)>>2];r=c[l>>2]|0;c[l>>2]=r+1;aC_(a,-0.0-y,-0.0-v,-0.0-p,c[m+(r<<2)>>2]|0);if(aCY(a)|0){C=1;i=b;return C|0}else{r=c[f>>2]|0;m=r+32|0;l=(c[m>>2]|0)-1|0;c[m>>2]=l;m=c[r+(l<<2)>>2]|0;l=c[t>>2]|0;c[t>>2]=l+1;c[a+348+(l<<2)>>2]=m;break}}else if((k|0)==4){m=c[h>>2]|0;l=c[h+12>>2]|0;p=+g[l+16>>2];v=+g[m+16>>2]-p;y=+g[l+20>>2];x=+g[m+20>>2]-y;u=+g[l+24>>2];o=+g[m+24>>2]-u;m=c[h+4>>2]|0;n=+g[m+16>>2]-p;w=+g[m+20>>2]-y;E=+g[m+24>>2]-u;m=c[h+8>>2]|0;F=+g[m+16>>2]-p;p=+g[m+20>>2]-y;y=+g[m+24>>2]-u;if(v*w*y+(x*E*F+o*n*p-v*E*p-x*n*y)-o*w*F==0.0){break}else{C=1}i=b;return C|0}else if((k|0)==1){m=d|0;l=d+4|0;t=d+8|0;r=a+364|0;q=d;s=0;z=h;A=1;while(1){aDD(q|0,0,16);g[d+(s<<2)>>2]=1.0;B=z+32|0;g[z+16+(A<<2)>>2]=0.0;G=(c[r>>2]|0)-1|0;c[r>>2]=G;c[z+(c[B>>2]<<2)>>2]=c[a+348+(G<<2)>>2];G=c[B>>2]|0;c[B>>2]=G+1;F=+g[m>>2];w=+g[l>>2];o=+g[t>>2];aC_(a,F,w,o,c[z+(G<<2)>>2]|0);if(aCY(a)|0){C=1;D=2656;break}G=c[f>>2]|0;B=G+32|0;H=(c[B>>2]|0)-1|0;c[B>>2]=H;B=c[G+(H<<2)>>2]|0;H=c[r>>2]|0;c[r>>2]=H+1;c[a+348+(H<<2)>>2]=B;B=c[f>>2]|0;H=B+32|0;g[B+16+(c[H>>2]<<2)>>2]=0.0;G=(c[r>>2]|0)-1|0;c[r>>2]=G;c[B+(c[H>>2]<<2)>>2]=c[a+348+(G<<2)>>2];G=c[H>>2]|0;c[H>>2]=G+1;aC_(a,-0.0-F,-0.0-w,-0.0-o,c[B+(G<<2)>>2]|0);if(aCY(a)|0){C=1;D=2658;break}G=c[f>>2]|0;B=G+32|0;H=(c[B>>2]|0)-1|0;c[B>>2]=H;B=c[G+(H<<2)>>2]|0;H=c[r>>2]|0;c[r>>2]=H+1;c[a+348+(H<<2)>>2]=B;B=s+1|0;if(B>>>0>=3){break L3384}H=c[f>>2]|0;s=B;z=H;A=c[H+32>>2]|0}if((D|0)==2656){i=b;return C|0}else if((D|0)==2658){i=b;return C|0}}}while(0);C=0;i=b;return C|0}function aCZ(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0,v=0,w=0.0,x=0.0,y=0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0.0,F=0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0,S=0.0;i=b+9800|0;j=c[i>>2]|0;if((j|0)==0){c[b>>2]=5;k=0;return k|0}l=j+52|0;m=c[l>>2]|0;n=j+48|0;if((m|0)!=0){c[m+48>>2]=c[n>>2]}m=c[n>>2]|0;if((m|0)!=0){c[m+52>>2]=c[l>>2]}if((c[i>>2]|0)==(j|0)){c[i>>2]=c[l>>2]}m=b+9804|0;c[m>>2]=(c[m>>2]|0)-1;c[n>>2]=0;o=b+9792|0;c[l>>2]=c[o>>2];p=c[o>>2]|0;if((p|0)!=0){c[p+48>>2]=j}c[o>>2]=j;p=b+9796|0;c[p>>2]=(c[p>>2]|0)+1;a[j+59|0]=0;c[j+24>>2]=d;c[j+28>>2]=e;c[j+32>>2]=f;q=e+16|0;r=d+16|0;s=+g[r>>2];t=+g[q>>2]-s;u=e+20|0;v=d+20|0;w=+g[v>>2];x=+g[u>>2]-w;y=e+24|0;e=d+24|0;z=+g[e>>2];A=+g[y>>2]-z;d=f+16|0;B=+g[d>>2]-s;C=f+20|0;s=+g[C>>2]-w;D=f+24|0;w=+g[D>>2]-z;z=x*w-A*s;E=A*B-t*w;w=t*s-x*B;f=j|0;g[f>>2]=z;F=j+4|0;g[F>>2]=E;G=j+8|0;g[G>>2]=w;g[j+12>>2]=0.0;B=+Q(+(z*z+E*E+w*w));H=B>9999999747378752.0e-20;x=+g[r>>2];s=+g[q>>2];t=x-s;A=+g[v>>2];I=+g[u>>2];J=A-I;K=+g[e>>2];L=+g[y>>2];M=K-L;N=K*(z*J-E*t)+(x*(E*M-w*J)+A*(w*t-z*M));M=+g[d>>2];t=s-M;J=+g[C>>2];O=I-J;P=+g[D>>2];R=L-P;S=L*(z*O-E*t)+(s*(E*R-w*O)+I*(w*t-z*R));R=M-x;x=J-A;A=P-K;K=P*(z*x-E*R)+(M*(E*A-w*x)+J*(w*R-z*A));A=N<S?N:S;S=(A<K?A:K)/(H?B:1.0);g[j+20>>2]=S<-.009999999776482582?S:0.0;do{if(H){S=(+g[r>>2]*z+ +g[v>>2]*E+ +g[e>>2]*w)/B;g[j+16>>2]=S;K=1.0/B;g[f>>2]=K*z;g[F>>2]=K*E;g[G>>2]=K*w;if(S<-9999999747378752.0e-21&(h^1)){c[b>>2]=3;break}else{k=j;return k|0}}else{c[b>>2]=2}}while(0);b=c[l>>2]|0;if((b|0)!=0){c[b+48>>2]=c[n>>2]}b=c[n>>2]|0;if((b|0)!=0){c[b+52>>2]=c[l>>2]}if((c[o>>2]|0)==(j|0)){c[o>>2]=c[l>>2]}c[p>>2]=(c[p>>2]|0)-1;c[n>>2]=0;c[l>>2]=c[i>>2];l=c[i>>2]|0;if((l|0)!=0){c[l+48>>2]=j}c[i>>2]=j;c[m>>2]=(c[m>>2]|0)+1;k=0;return k|0}function aC_(a,b,d,e,f){a=a|0;b=+b;d=+d;e=+e;f=f|0;var h=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;h=i;i=i+48|0;j=h|0;k=h+16|0;l=h+32|0;m=1.0/+Q(+(b*b+d*d+e*e));n=f|0;g[n>>2]=m*b;o=f+4|0;g[o>>2]=m*d;p=f+8|0;g[p>>2]=m*e;g[f+12>>2]=0.0;q=a+120|0;r=(c[a>>2]|0)+(c[q+4>>2]|0)|0;s=c[q>>2]|0;if((s&1|0)==0){t=s}else{t=c[(c[r>>2]|0)+(s-1)>>2]|0}dA[t&511](l,r,f|0);e=-0.0- +g[n>>2];m=-0.0- +g[o>>2];d=-0.0- +g[p>>2];p=(c[a+4>>2]|0)+(c[q+4>>2]|0)|0;o=c[q>>2]|0;if((o&1|0)==0){u=o}else{u=c[(c[p>>2]|0)+(o-1)>>2]|0}b=+g[a+24>>2]*e+ +g[a+28>>2]*m+ +g[a+32>>2]*d;v=+g[a+40>>2]*e+ +g[a+44>>2]*m+ +g[a+48>>2]*d;g[k>>2]=+g[a+8>>2]*e+ +g[a+12>>2]*m+ +g[a+16>>2]*d;g[k+4>>2]=b;g[k+8>>2]=v;g[k+12>>2]=0.0;dA[u&511](j,p,k);v=+g[j>>2];b=+g[j+4>>2];d=+g[j+8>>2];m=+g[l+4>>2]-(+g[a+108>>2]+(v*+g[a+72>>2]+b*+g[a+76>>2]+d*+g[a+80>>2]));e=+g[l+8>>2]-(+g[a+112>>2]+(v*+g[a+88>>2]+b*+g[a+92>>2]+d*+g[a+96>>2]));g[f+16>>2]=+g[l>>2]-(+g[a+104>>2]+(+g[a+56>>2]*v+ +g[a+60>>2]*b+ +g[a+64>>2]*d));g[f+20>>2]=m;g[f+24>>2]=e;g[f+28>>2]=0.0;i=h;return}function aC$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0;f=b|0;h=a|0;i=+g[h>>2];j=+g[f>>2]-i;k=b+4|0;l=a+4|0;m=+g[l>>2];n=+g[k>>2]-m;o=b+8|0;b=a+8|0;p=+g[b>>2];q=+g[o>>2]-p;r=j*j+n*n+q*q;if(r<=0.0){s=-1.0;return+s}t=(-0.0-(i*j+m*n+p*q))/r;if(t>=1.0){g[d>>2]=0.0;g[d+4>>2]=1.0;c[e>>2]=2;r=+g[f>>2];p=+g[k>>2];m=+g[o>>2];s=r*r+p*p+m*m;return+s}if(t>0.0){g[d+4>>2]=t;g[d>>2]=1.0-t;c[e>>2]=3;m=j*t+ +g[h>>2];j=n*t+ +g[l>>2];n=q*t+ +g[b>>2];s=m*m+j*j+n*n;return+s}else{g[d>>2]=1.0;g[d+4>>2]=0.0;c[e>>2]=1;n=+g[h>>2];j=+g[l>>2];m=+g[b>>2];s=n*n+j*j+m*m;return+s}return 0.0}function aC0(b,e,f,h,i,j){b=b|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;k=h+59|0;if((d[k]|0|0)==(e|0)){l=0;return l|0}m=c[18320+(i<<2)>>2]|0;if(+g[h>>2]*+g[f+16>>2]+ +g[h+4>>2]*+g[f+20>>2]+ +g[h+8>>2]*+g[f+24>>2]- +g[h+16>>2]<-9999999747378752.0e-21){n=aCZ(b,c[h+24+(m<<2)>>2]|0,c[h+24+(i<<2)>>2]|0,f,0)|0;if((n|0)==0){l=0;return l|0}a[n+56|0]=i&255;c[n+36>>2]=h;a[h+56+i|0]=0;c[h+36+(i<<2)>>2]=n;o=j|0;p=c[o>>2]|0;if((p|0)==0){c[j+4>>2]=n}else{a[p+57|0]=2;c[p+40>>2]=n;a[n+58|0]=1;c[n+44>>2]=p}c[o>>2]=n;n=j+8|0;c[n>>2]=(c[n>>2]|0)+1;l=1;return l|0}n=c[18336+(i<<2)>>2]|0;a[k]=e&255;if(!(aC0(b,e,f,c[h+36+(m<<2)>>2]|0,d[h+56+m|0]|0,j)|0)){l=0;return l|0}if(!(aC0(b,e,f,c[h+36+(n<<2)>>2]|0,d[h+56+n|0]|0,j)|0)){l=0;return l|0}j=h+52|0;n=c[j>>2]|0;f=h+48|0;if((n|0)!=0){c[n+48>>2]=c[f>>2]}n=c[f>>2]|0;if((n|0)!=0){c[n+52>>2]=c[j>>2]}n=b+9792|0;if((c[n>>2]|0)==(h|0)){c[n>>2]=c[j>>2]}n=b+9796|0;c[n>>2]=(c[n>>2]|0)-1;c[f>>2]=0;f=b+9800|0;c[j>>2]=c[f>>2];j=c[f>>2]|0;if((j|0)!=0){c[j+48>>2]=h}c[f>>2]=h;h=b+9804|0;c[h>>2]=(c[h>>2]|0)+1;l=1;return l|0}function aC1(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0.0,r=0.0,s=0,t=0.0,u=0,v=0.0,w=0.0,x=0,y=0.0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0.0,G=0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0,N=0.0,O=0,P=0.0,R=0.0,S=0;h=i;i=i+80|0;j=h|0;k=h+16|0;l=h+64|0;m=h+72|0;c[j>>2]=a;c[j+4>>2]=b;c[j+8>>2]=d;n=a|0;o=+g[n>>2];p=b|0;q=+g[p>>2];r=o-q;s=a+4|0;t=+g[s>>2];u=b+4|0;v=+g[u>>2];w=t-v;x=a+8|0;y=+g[x>>2];z=b+8|0;A=+g[z>>2];B=y-A;g[k>>2]=r;g[k+4>>2]=w;g[k+8>>2]=B;g[k+12>>2]=0.0;b=d|0;C=+g[b>>2];D=q-C;E=d+4|0;q=+g[E>>2];F=v-q;G=d+8|0;v=+g[G>>2];H=A-v;g[k+16>>2]=D;g[k+20>>2]=F;g[k+24>>2]=H;g[k+28>>2]=0.0;A=C-o;C=q-t;q=v-y;g[k+32>>2]=A;g[k+36>>2]=C;g[k+40>>2]=q;g[k+44>>2]=0.0;v=w*H-B*F;I=B*D-H*r;J=F*r-w*D;K=J*J+(v*v+I*I);if(K<=0.0){L=-1.0;i=h;return+L}c[l>>2]=0;c[l+4>>2]=0;c[m>>2]=0;d=l;M=l+4|0;l=0;N=-1.0;O=a;P=w;w=B;B=r;r=o;o=t;t=y;while(1){do{if(r*(J*P-I*w)+o*(v*w-J*B)+(I*B-v*P)*t>0.0){a=c[18320+(l<<2)>>2]|0;y=+aC$(O,c[j+(a<<2)>>2]|0,d,m);if(!(N<0.0|y<N)){R=N;break}S=c[m>>2]|0;c[f>>2]=((S&1|0)==0?0:1<<l)+((S&2|0)==0?0:1<<a);g[e+(l<<2)>>2]=+g[d>>2];g[e+(a<<2)>>2]=+g[M>>2];g[e+(c[18320+(a<<2)>>2]<<2)>>2]=0.0;R=y}else{R=N}}while(0);a=l+1|0;if(a>>>0>=3){break}S=c[j+(a<<2)>>2]|0;l=a;N=R;O=S;P=+g[k+(a<<4)+4>>2];w=+g[k+(a<<4)+8>>2];B=+g[k+(a<<4)>>2];r=+g[S>>2];o=+g[S+4>>2];t=+g[S+8>>2]}if(R>=0.0){L=R;i=h;return+L}R=v*+g[n>>2]+I*+g[s>>2]+J*+g[x>>2];t=+Q(+K);o=R/K;K=v*o;v=I*o;I=J*o;c[f>>2]=7;o=+g[p>>2]-K;J=+g[u>>2]-v;R=+g[z>>2]-I;r=F*R-J*H;B=o*H-R*D;R=J*D-o*F;F=+Q(+(R*R+(r*r+B*B)))/t;g[e>>2]=F;B=+g[b>>2]-K;r=+g[E>>2]-v;R=+g[G>>2]-I;o=C*R-r*q;D=B*q-R*A;R=r*A-B*C;C=+Q(+(R*R+(o*o+D*D)))/t;g[e+4>>2]=C;g[e+8>>2]=1.0-(C+F);L=I*I+(K*K+v*v);i=h;return+L}function aC2(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0.0,r=0.0,s=0.0;h=i;i=i+32|0;j=h|0;k=h+8|0;l=h+16|0;m=h+24|0;aCT(a,c,e,j,k);aCT(b,d,e,l,m);n=+g[k>>2];o=+g[l>>2];if(n<o){p=0;i=h;return p|0}q=+g[m>>2];r=+g[j>>2];if(q<r){p=0;i=h;return p|0}s=n-o;if(s<0.0){b7(16080|0,89,18168|0,17520|0);return 0}o=q-r;if(o<0.0){b7(16080|0,91,18168|0,17112|0);return 0}g[f>>2]=s<o?s:o;p=1;i=h;return p|0}function aC3(b,d,e,f,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;h=+h;j=+j;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0,z=0,A=0.0,B=0,C=0.0,D=0,E=0.0,F=0,G=0.0,H=0,I=0.0,J=0,K=0.0,L=0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0,R=0.0,S=0,T=0.0,U=0.0,V=0.0,W=0.0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0.0,ag=0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0,ao=0,ap=0,aq=0,ar=0,as=0.0,at=0,au=0,av=0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0,aB=0,aC=0.0,aD=0.0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0,aM=0,aN=0,aO=0.0,aP=0.0,aQ=0.0,aR=0.0,aS=0,aT=0,aU=0,aV=0,aW=0,aX=0,aY=0.0,aZ=0.0,a_=0.0,a$=0,a0=0,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0,ba=0,bb=0,bc=0,bd=0,be=0,bf=0,bg=0,bh=0.0,bi=0.0,bj=0.0,bk=0.0,bl=0.0,bm=0.0,bn=0.0,bo=0.0,bp=0.0,bq=0;l=i;i=i+56|0;m=l|0;n=l+24|0;o=l+40|0;p=m+16|0;a[p]=1;q=m+12|0;c[q>>2]=0;c[m+4>>2]=0;r=m+8|0;c[r>>2]=0;s=c[f+4>>2]|0;if((s|0)>0){c[9806]=(c[9806]|0)+1;t=aDx((s<<4|4)+15|0)|0;if((t|0)==0){u=0}else{v=-(t+4|0)&15;c[t+v>>2]=t;u=t+(v+4)|0}a[p]=1;c[q>>2]=u;c[r>>2]=s;w=u}else{w=0}u=c[d+28>>2]|0;do{if((u|0)>0){s=d+36|0;r=c[s>>2]|0;v=e|0;x=+g[v>>2];t=e+4|0;y=+g[t>>2];z=e+8|0;A=+g[z>>2];B=e+16|0;C=+g[B>>2];D=e+20|0;E=+g[D>>2];F=e+24|0;G=+g[F>>2];H=e+32|0;I=+g[H>>2];J=e+36|0;K=+g[J>>2];L=e+40|0;M=+g[L>>2];N=+g[b>>2];O=+g[b+4>>2];P=+g[b+8>>2];Q=0;R=3.4028234663852886e+38;S=-1;while(1){T=+g[r+(Q*56|0)+40>>2];U=+g[r+(Q*56|0)+44>>2];V=+g[r+(Q*56|0)+48>>2];W=(T*x+U*y+V*A)*N+(T*C+U*E+V*G)*O+(T*I+U*K+V*M)*P;X=W<R;Y=X?Q:S;Z=Q+1|0;if((Z|0)<(u|0)){Q=Z;R=X?W:R;S=Y}else{break}}if((Y|0)<0){_=w;break}S=c[r+(Y*56|0)+4>>2]|0;if((S|0)>0){Q=r+(Y*56|0)+32|0;X=e+48|0;Z=e+52|0;$=e+56|0;aa=n;ab=f;ac=m;ad=0;ae=r;R=x;P=y;O=A;N=C;W=E;V=G;U=I;T=K;af=M;while(1){ag=c[(c[Q>>2]|0)+(ad<<2)>>2]|0;ah=+g[ae+(ag*56|0)+40>>2];ai=+g[ae+(ag*56|0)+44>>2];aj=+g[ae+(ag*56|0)+48>>2];ak=ah*R+ai*P+aj*O;al=ah*N+ai*W+aj*V;am=ah*U+ai*T+aj*af;aj=+g[ae+(ag*56|0)+52>>2]-(ak*+g[X>>2]+al*+g[Z>>2]+am*+g[$>>2]);ag=ab+4|0;an=c[ag>>2]|0;if((an|0)<2){ao=an}else{ap=an-1|0;aq=ab+12|0;ar=c[aq>>2]|0;ai=+g[ar+(ap<<4)>>2];ah=+g[ar+(ap<<4)+4>>2];as=+g[ar+(ap<<4)+8>>2];ap=ac+4|0;at=ac+8|0;au=ac+12|0;av=ac+16|0;aw=as;ax=ah;ay=ai;az=ai*ak+ah*al+as*am+aj;aA=0;aB=ar;while(1){as=+g[aB+(aA<<4)>>2];ah=+g[aB+(aA<<4)+4>>2];ai=+g[aB+(aA<<4)+8>>2];aC=+g[aB+(aA<<4)+12>>2];aD=as*ak+ah*al+ai*am+aj;ar=aD<0.0;do{if(az<0.0){if(ar){aE=c[ap>>2]|0;do{if((aE|0)==(c[at>>2]|0)){aF=(aE|0)==0?1:aE<<1;if((aE|0)>=(aF|0)){aG=aE;break}if((aF|0)==0){aH=0;aI=aE}else{c[9806]=(c[9806]|0)+1;aJ=aDx((aF<<4|4)+15|0)|0;if((aJ|0)==0){aK=0}else{aL=-(aJ+4|0)&15;c[aJ+aL>>2]=aJ;aK=aJ+(aL+4)|0}aH=aK;aI=c[ap>>2]|0}if((aI|0)>0){aL=0;do{aJ=aH+(aL<<4)|0;if((aJ|0)!=0){aM=aJ;aJ=(c[au>>2]|0)+(aL<<4)|0;c[aM>>2]=c[aJ>>2];c[aM+4>>2]=c[aJ+4>>2];c[aM+8>>2]=c[aJ+8>>2];c[aM+12>>2]=c[aJ+12>>2]}aL=aL+1|0;}while((aL|0)<(aI|0))}aL=c[au>>2]|0;if((aL|0)!=0){if((a[av]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aL-16+12>>2]|0)}c[au>>2]=0}a[av]=1;c[au>>2]=aH;c[at>>2]=aF;aG=c[ap>>2]|0}else{aG=aE}}while(0);aE=c[au>>2]|0;aL=aE+(aG<<4)|0;if((aL|0)==0){aN=aG}else{g[aL>>2]=as;g[aE+(aG<<4)+4>>2]=ah;g[aE+(aG<<4)+8>>2]=ai;g[aE+(aG<<4)+12>>2]=aC;aN=c[ap>>2]|0}c[ap>>2]=aN+1;break}else{aO=az/(az-aD);aP=ay+(as-ay)*aO;aQ=ax+(ah-ax)*aO;aR=aw+(ai-aw)*aO;aE=c[ap>>2]|0;do{if((aE|0)==(c[at>>2]|0)){aL=(aE|0)==0?1:aE<<1;if((aE|0)>=(aL|0)){aS=aE;break}if((aL|0)==0){aT=0;aU=aE}else{c[9806]=(c[9806]|0)+1;aJ=aDx((aL<<4|4)+15|0)|0;if((aJ|0)==0){aV=0}else{aM=-(aJ+4|0)&15;c[aJ+aM>>2]=aJ;aV=aJ+(aM+4)|0}aT=aV;aU=c[ap>>2]|0}if((aU|0)>0){aM=0;do{aJ=aT+(aM<<4)|0;if((aJ|0)!=0){aW=aJ;aJ=(c[au>>2]|0)+(aM<<4)|0;c[aW>>2]=c[aJ>>2];c[aW+4>>2]=c[aJ+4>>2];c[aW+8>>2]=c[aJ+8>>2];c[aW+12>>2]=c[aJ+12>>2]}aM=aM+1|0;}while((aM|0)<(aU|0))}aM=c[au>>2]|0;if((aM|0)!=0){if((a[av]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aM-16+12>>2]|0)}c[au>>2]=0}a[av]=1;c[au>>2]=aT;c[at>>2]=aL;aS=c[ap>>2]|0}else{aS=aE}}while(0);aE=c[au>>2]|0;aM=aE+(aS<<4)|0;if((aM|0)==0){aX=aS}else{g[aM>>2]=aP;g[aE+(aS<<4)+4>>2]=aQ;g[aE+(aS<<4)+8>>2]=aR;g[aE+(aS<<4)+12>>2]=0.0;aX=c[ap>>2]|0}c[ap>>2]=aX+1;break}}else{if(!ar){break}aO=az/(az-aD);aY=ay+(as-ay)*aO;aZ=ax+(ah-ax)*aO;a_=aw+(ai-aw)*aO;aE=c[ap>>2]|0;aM=c[at>>2]|0;do{if((aE|0)==(aM|0)){aF=(aE|0)==0?1:aE<<1;if((aE|0)>=(aF|0)){a$=aE;a0=aE;break}if((aF|0)==0){a1=0;a2=aE}else{c[9806]=(c[9806]|0)+1;aJ=aDx((aF<<4|4)+15|0)|0;if((aJ|0)==0){a3=0}else{aW=-(aJ+4|0)&15;c[aJ+aW>>2]=aJ;a3=aJ+(aW+4)|0}a1=a3;a2=c[ap>>2]|0}if((a2|0)>0){aW=0;do{aJ=a1+(aW<<4)|0;if((aJ|0)!=0){a4=aJ;aJ=(c[au>>2]|0)+(aW<<4)|0;c[a4>>2]=c[aJ>>2];c[a4+4>>2]=c[aJ+4>>2];c[a4+8>>2]=c[aJ+8>>2];c[a4+12>>2]=c[aJ+12>>2]}aW=aW+1|0;}while((aW|0)<(a2|0))}aW=c[au>>2]|0;if((aW|0)!=0){if((a[av]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aW-16+12>>2]|0)}c[au>>2]=0}a[av]=1;c[au>>2]=a1;c[at>>2]=aF;a$=c[ap>>2]|0;a0=aF}else{a$=aE;a0=aM}}while(0);aM=c[au>>2]|0;aE=aM+(a$<<4)|0;if((aE|0)==0){a5=a$;a6=a0}else{g[aE>>2]=aY;g[aM+(a$<<4)+4>>2]=aZ;g[aM+(a$<<4)+8>>2]=a_;g[aM+(a$<<4)+12>>2]=0.0;a5=c[ap>>2]|0;a6=c[at>>2]|0}aM=a5+1|0;c[ap>>2]=aM;do{if((aM|0)==(a6|0)){aE=(a6|0)==0?1:a6<<1;if((a6|0)>=(aE|0)){a7=a6;break}if((aE|0)==0){a8=0;a9=a6}else{c[9806]=(c[9806]|0)+1;aW=aDx((aE<<4|4)+15|0)|0;if((aW|0)==0){ba=0}else{aL=-(aW+4|0)&15;c[aW+aL>>2]=aW;ba=aW+(aL+4)|0}a8=ba;a9=c[ap>>2]|0}if((a9|0)>0){aL=0;do{aW=a8+(aL<<4)|0;if((aW|0)!=0){aJ=aW;aW=(c[au>>2]|0)+(aL<<4)|0;c[aJ>>2]=c[aW>>2];c[aJ+4>>2]=c[aW+4>>2];c[aJ+8>>2]=c[aW+8>>2];c[aJ+12>>2]=c[aW+12>>2]}aL=aL+1|0;}while((aL|0)<(a9|0))}aL=c[au>>2]|0;if((aL|0)!=0){if((a[av]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aL-16+12>>2]|0)}c[au>>2]=0}a[av]=1;c[au>>2]=a8;c[at>>2]=aE;a7=c[ap>>2]|0}else{a7=aM}}while(0);aM=c[au>>2]|0;aL=aM+(a7<<4)|0;if((aL|0)==0){bb=a7}else{g[aL>>2]=as;g[aM+(a7<<4)+4>>2]=ah;g[aM+(a7<<4)+8>>2]=ai;g[aM+(a7<<4)+12>>2]=aC;bb=c[ap>>2]|0}c[ap>>2]=bb+1}}while(0);ar=aA+1|0;if((ar|0)>=(an|0)){break}aw=ai;ax=ah;ay=as;az=aD;aA=ar;aB=c[aq>>2]|0}ao=c[ag>>2]|0}if((ao|0)<0){aq=ab+8|0;aB=ab+12|0;if((c[aq>>2]|0)<0){aA=c[aB>>2]|0;an=ab+16|0;if((aA|0)!=0){if((a[an]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aA-16+12>>2]|0)}c[aB>>2]=0}a[an]=1;c[aB>>2]=0;c[aq>>2]=0;bc=ao}else{bc=ao}do{aq=(c[aB>>2]|0)+(bc<<4)|0;if((aq|0)!=0){an=aq;c[an>>2]=c[aa>>2];c[an+4>>2]=c[aa+4>>2];c[an+8>>2]=c[aa+8>>2];c[an+12>>2]=c[aa+12>>2]}bc=bc+1|0;}while((bc|0)<0)}c[ag>>2]=0;aB=ad+1|0;if((aB|0)>=(S|0)){break}an=ab;ab=ac;ad=aB;ae=c[s>>2]|0;R=+g[v>>2];P=+g[t>>2];O=+g[z>>2];N=+g[B>>2];W=+g[D>>2];V=+g[F>>2];U=+g[H>>2];T=+g[J>>2];af=+g[L>>2];ac=an}bd=ac;be=X;bf=Z;bg=$;bh=+g[v>>2];bi=+g[t>>2];bj=+g[z>>2];bk=+g[B>>2];bl=+g[D>>2];bm=+g[F>>2];bn=+g[H>>2];bo=+g[J>>2];bp=+g[L>>2]}else{bd=f;be=e+48|0;bf=e+52|0;bg=e+56|0;bh=x;bi=y;bj=A;bk=C;bl=E;bm=G;bn=I;bo=K;bp=M}af=+g[r+(Y*56|0)+40>>2];T=+g[r+(Y*56|0)+44>>2];U=+g[r+(Y*56|0)+48>>2];V=af*bh+T*bi+U*bj;W=af*bk+T*bl+U*bm;N=af*bn+T*bo+U*bp;U=+g[r+(Y*56|0)+52>>2]-(V*+g[be>>2]+W*+g[bf>>2]+N*+g[bg>>2]);s=bd+4|0;ae=c[s>>2]|0;if((ae|0)>0){ad=bd+12|0;ab=o;S=k;aa=0;Q=ae;while(1){ae=c[ad>>2]|0;an=ae+(aa<<4)|0;T=U+(V*+g[an>>2]+W*+g[ae+(aa<<4)+4>>2]+N*+g[ae+(aa<<4)+8>>2]);if(T>j|T<h){bq=Q}else{ae=an;c[ab>>2]=c[ae>>2];c[ab+4>>2]=c[ae+4>>2];c[ab+8>>2]=c[ae+8>>2];c[ab+12>>2]=c[ae+12>>2];dw[c[(c[S>>2]|0)+16>>2]&127](k,b,o,T);bq=c[s>>2]|0}ae=aa+1|0;if((ae|0)<(bq|0)){aa=ae;Q=bq}else{break}}}_=c[q>>2]|0}else{_=w}}while(0);if((_|0)==0){i=l;return}if((a[p]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[_-16+12>>2]|0)}c[q>>2]=0;i=l;return}function aC4(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;h=c[g+16>>2]|0;if((h|0)!=(f|0)){i=f-h|0;return i|0}if((f|0)==0){i=0;return i|0}h=g+8|0;j=c[h+4>>2]|0;k=a|0;a=b&0;l=c[h>>2]|0;h=j&0;m=(D=(+(l>>>0)+ +(h|0)*4294967296.0)*(+(k>>>0)+ +(a|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);n=j;j=0;o=(D=(+(n>>>0)+ +(j|0)*4294967296.0)*(+(k>>>0)+ +(a|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);p=b;b=0;q=(D=(+(l>>>0)+ +(h|0)*4294967296.0)*(+(p>>>0)+ +(b|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);r=~~((+(n>>>0)+ +(j|0)*4294967296.0)*(+(p>>>0)+ +(b|0)*4294967296.0))>>>0;s=(D=(+(n>>>0)+ +(j|0)*4294967296.0)*(+(p>>>0)+ +(b|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);t=~~((+(n>>>0)+ +(j|0)*4294967296.0)*(+(k>>>0)+ +(a|0)*4294967296.0))>>>0|0;j=o&0;n=~~((+(l>>>0)+ +(h|0)*4294967296.0)*(+(p>>>0)+ +(b|0)*4294967296.0))>>>0|0;b=q&0;p=(D=+(t>>>0)+ +(j|0)*4294967296.0+(+(n>>>0)+ +(b|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);u=o;o=0;v=~~(+(u>>>0)+ +(o|0)*4294967296.0+(+(r>>>0)+ +(s|0)*4294967296.0))>>>0;w=(D=+(u>>>0)+ +(o|0)*4294967296.0+(+(r>>>0)+ +(s|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);s=q;q=0;r=~~(+(v>>>0)+ +(w|0)*4294967296.0+(+(s>>>0)+ +(q|0)*4294967296.0))>>>0;o=(D=+(v>>>0)+ +(w|0)*4294967296.0+(+(s>>>0)+ +(q|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);q=p;p=0;s=aDF(~~((+(l>>>0)+ +(h|0)*4294967296.0)*(+(k>>>0)+ +(a|0)*4294967296.0))>>>0|0,m|0,0,~~(+(t>>>0)+ +(j|0)*4294967296.0+(+(n>>>0)+ +(b|0)*4294967296.0))>>>0|0)|0;b=s;s=E;n=F&1;j=0;t=~~(+(r>>>0)+ +(o|0)*4294967296.0+(+(n>>>0)+ +(j|0)*4294967296.0))>>>0;m=(D=+(r>>>0)+ +(o|0)*4294967296.0+(+(n>>>0)+ +(j|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);j=~~(+(t>>>0)+ +(m|0)*4294967296.0+(+(q>>>0)+ +(p|0)*4294967296.0))>>>0;n=(D=+(t>>>0)+ +(m|0)*4294967296.0+(+(q>>>0)+ +(p|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);p=g|0;g=c[p+4>>2]|0;q=d|0;d=e&0;m=c[p>>2]|0;p=g&0;t=(D=(+(m>>>0)+ +(p|0)*4294967296.0)*(+(q>>>0)+ +(d|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);o=g;g=0;r=(D=(+(o>>>0)+ +(g|0)*4294967296.0)*(+(q>>>0)+ +(d|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);a=e;e=0;k=(D=(+(m>>>0)+ +(p|0)*4294967296.0)*(+(a>>>0)+ +(e|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);h=~~((+(o>>>0)+ +(g|0)*4294967296.0)*(+(a>>>0)+ +(e|0)*4294967296.0))>>>0;l=(D=(+(o>>>0)+ +(g|0)*4294967296.0)*(+(a>>>0)+ +(e|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);w=~~((+(o>>>0)+ +(g|0)*4294967296.0)*(+(q>>>0)+ +(d|0)*4294967296.0))>>>0|0;g=r&0;o=~~((+(m>>>0)+ +(p|0)*4294967296.0)*(+(a>>>0)+ +(e|0)*4294967296.0))>>>0|0;e=k&0;a=(D=+(w>>>0)+ +(g|0)*4294967296.0+(+(o>>>0)+ +(e|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);v=r;r=0;u=~~(+(v>>>0)+ +(r|0)*4294967296.0+(+(h>>>0)+ +(l|0)*4294967296.0))>>>0;x=(D=+(v>>>0)+ +(r|0)*4294967296.0+(+(h>>>0)+ +(l|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);l=k;k=0;h=~~(+(u>>>0)+ +(x|0)*4294967296.0+(+(l>>>0)+ +(k|0)*4294967296.0))>>>0;r=(D=+(u>>>0)+ +(x|0)*4294967296.0+(+(l>>>0)+ +(k|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);k=a;a=0;l=aDF(~~((+(m>>>0)+ +(p|0)*4294967296.0)*(+(q>>>0)+ +(d|0)*4294967296.0))>>>0|0,t|0,0,~~(+(w>>>0)+ +(g|0)*4294967296.0+(+(o>>>0)+ +(e|0)*4294967296.0))>>>0|0)|0;e=l;l=E;o=F&1;g=0;w=~~(+(h>>>0)+ +(r|0)*4294967296.0+(+(o>>>0)+ +(g|0)*4294967296.0))>>>0;t=(D=+(h>>>0)+ +(r|0)*4294967296.0+(+(o>>>0)+ +(g|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);g=~~(+(w>>>0)+ +(t|0)*4294967296.0+(+(k>>>0)+ +(a|0)*4294967296.0))>>>0;o=(D=+(w>>>0)+ +(t|0)*4294967296.0+(+(k>>>0)+ +(a|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);do{if(n>>>0<o>>>0|n>>>0==o>>>0&j>>>0<g>>>0){y=-1}else{if(n>>>0>o>>>0|n>>>0==o>>>0&j>>>0>g>>>0){y=1;break}if(s>>>0<l>>>0|s>>>0==l>>>0&b>>>0<e>>>0){y=-1;break}y=(s>>>0>l>>>0|s>>>0==l>>>0&b>>>0>e>>>0)&1}}while(0);i=aa(y,f)|0;return i|0}function aC5(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=a+8|0;d=c[b>>2]|0;do{if((d|0)==0){e=a+4|0;f=c[e>>2]|0;if((f|0)==0){c[9806]=(c[9806]|0)+1;g=aDx(31)|0;do{if((g|0)==0){h=0}else{i=-(g+4|0)&15;j=g+(i+4)|0;c[g+i>>2]=g;if((j|0)==0){h=0;break}k=c[a+12>>2]|0;c[g+(i+8)>>2]=k;c[g+(i+12)>>2]=0;c[9806]=(c[9806]|0)+1;i=aDx((k*24|0|4)+15|0)|0;if((i|0)==0){l=0}else{k=-(i+4|0)&15;c[i+k>>2]=i;l=i+(k+4)|0}c[j>>2]=l;h=j}}while(0);g=a|0;c[h+8>>2]=c[g>>2];c[g>>2]=h;m=h}else{c[e>>2]=c[f+8>>2];m=f}g=m|0;j=m+4|0;k=c[j>>2]|0;if((k|0)>0){i=c[g>>2]|0;n=0;o=k;while(1){k=n+1|0;p=i+24|0;c[i>>2]=(k|0)<(o|0)?p:0;q=c[j>>2]|0;if((k|0)<(q|0)){i=p;n=k;o=q}else{break}}}o=c[g>>2]|0;c[b>>2]=c[o>>2];if((o|0)==0){r=0}else{s=o;break}return r|0}else{c[b>>2]=c[d>>2];s=d}}while(0);aDD(s|0,0,24);r=s;return r|0}function aC6(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ab=0,ac=0,ad=0,ae=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0,aM=0,aN=0,aO=0,aP=0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$=0,a0=0,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0,ba=0,bb=0,bc=0,bd=0,be=0,bf=0,bg=0,bh=0,bi=0,bj=0,bk=0,bl=0,bm=0,bn=0,bo=0,bp=0,bq=0,br=0,bs=0,bt=0,bu=0,bv=0,bw=0,bx=0,by=0,bz=0,bA=0,bB=0,bC=0,bD=0,bE=0,bF=0,bG=0,bH=0,bI=0,bJ=0,bK=0,bL=0,bM=0,bN=0,bO=0,bP=0,bQ=0,bR=0,bS=0,bT=0,bU=0,bV=0,bW=0,bX=0,bY=0,bZ=0,b_=0,b$=0;f=i;i=i+160|0;g=f|0;h=f+8|0;j=f+16|0;k=f+32|0;l=f+56|0;m=f+80|0;n=f+104|0;o=f+128|0;p=f+136|0;q=f+144|0;r=d-b|0;L3751:do{if((r|0)==0){aDD(e|0,0,16);i=f;return}else if((r|0)==1){s=c[(c[a+92>>2]|0)+(b<<2)>>2]|0}else if((r|0)==2){t=c[(c[a+92>>2]|0)+(b<<2)>>2]|0;u=t+112|0;v=c[t+88>>2]|0;w=c[t+200>>2]|0;x=(v|0)==(w|0);y=c[t+92>>2]|0;z=c[t+204>>2]|0;A=(y|0)==(z|0);do{if(x){if(A){if((c[t+96>>2]|0)==(c[t+208>>2]|0)){s=t;break L3751}else{B=y}}else{B=z}if((y|0)!=(B|0)){C=B;E=0;F=2918;break}G=(c[t+96>>2]|0)>(c[t+208>>2]|0);H=G?u:t;c[H>>2]=H;c[H+4>>2]=H;c[e>>2]=H;c[e+4>>2]=H;c[e+8>>2]=H;c[e+12>>2]=H;I=H;J=G?t:u}else{C=z;E=A;F=2918}}while(0);do{if((F|0)==2918){A=y-C|0;c[t>>2]=u;c[t+4>>2]=u;c[u>>2]=t;c[t+116>>2]=t;z=(v-w|0)<0;do{if(z){F=2920}else{if(x&(A|0)<0){F=2920;break}c[e>>2]=u;c[e+4>>2]=t}}while(0);if((F|0)==2920){c[e>>2]=t;c[e+4>>2]=u}G=e+8|0;if((A|0)<0|E&z){c[G>>2]=t;c[e+12>>2]=u;I=t;J=u;break}else{c[G>>2]=u;c[e+12>>2]=t;I=t;J=u;break}}}while(0);u=a+48|0;t=aC5(u)|0;x=aC5(u)|0;u=t+8|0;c[u>>2]=x;c[x+8>>2]=t;w=a+100|0;c[t+20>>2]=c[w>>2];c[x+20>>2]=c[w>>2];c[t+12>>2]=J;c[x+12>>2]=I;c[t+16>>2]=0;c[x+16>>2]=0;x=a+116|0;w=(c[x>>2]|0)+1|0;c[x>>2]=w;x=a+120|0;if((w|0)>(c[x>>2]|0)){c[x>>2]=w}c[t>>2]=t;c[t+4>>2]=t;c[I+8>>2]=t;t=c[u>>2]|0;c[t>>2]=t;c[t+4>>2]=t;c[J+8>>2]=t;i=f;return}else{t=((r|0)/2|0)+b|0;u=c[a+92>>2]|0;w=c[u+(t-1<<2)>>2]|0;x=c[w+88>>2]|0;v=c[w+92>>2]|0;y=c[w+96>>2]|0;w=t;while(1){if((w|0)>=(d|0)){break}G=c[u+(w<<2)>>2]|0;if((c[G+88>>2]|0)!=(x|0)){break}if((c[G+92>>2]|0)!=(v|0)){break}if((c[G+96>>2]|0)==(y|0)){w=w+1|0}else{break}}aC6(a,b,t,e);y=q;aDD(y|0,0,16);aC6(a,w,d,q);v=m;x=n;u=q+4|0;G=c[u>>2]|0;if((G|0)==0){i=f;return}H=e+4|0;if((c[H>>2]|0)==0){K=e;c[K>>2]=c[y>>2];c[K+4>>2]=c[y+4>>2];c[K+8>>2]=c[y+8>>2];c[K+12>>2]=c[y+12>>2];i=f;return}y=a+100|0;c[y>>2]=(c[y>>2]|0)-1;K=e+12|0;L=c[K>>2]|0;M=c[q+8>>2]|0;N=c[L+88>>2]|0;L3766:do{if((N|0)==(c[M+88>>2]|0)){if((c[L+92>>2]|0)!=(c[M+92>>2]|0)){Q=G;F=2954;break}R=c[M+4>>2]|0;if((R|0)==(M|0)){S=c[M+8>>2]|0;if((S|0)==0){T=M;U=N}else{V=c[S+12>>2]|0;T=V;U=c[V+88>>2]|0}W=U+1|0;X=c[T+96>>2]|0;Y=T;Z=L;break}V=c[M>>2]|0;c[R>>2]=V;c[V+4>>2]=R;S=q|0;L3775:do{if((M|0)==(c[S>>2]|0)){_=c[V+88>>2]|0;ab=c[R+88>>2]|0;do{if((_|0)>=(ab|0)){if((_|0)==(ab|0)){if((c[V+92>>2]|0)<(c[R+92>>2]|0)){break}}c[S>>2]=R;break L3775}}while(0);c[S>>2]=V}}while(0);S=c[u>>2]|0;if((M|0)!=(S|0)){Q=S;F=2954;break}S=c[V+88>>2]|0;z=c[R+88>>2]|0;do{if((S|0)<=(z|0)){if((S|0)==(z|0)){if((c[V+92>>2]|0)>(c[R+92>>2]|0)){break}}c[u>>2]=R;Q=R;F=2954;break L3766}}while(0);c[u>>2]=V;Q=V;F=2954}else{Q=G;F=2954}}while(0);if((F|0)==2954){G=e|0;M=q|0;L=c[M>>2]|0;N=0;w=1;t=0;R=0;z=Q;S=H;L3793:while(1){A=N;ab=z;_=c[S>>2]|0;while(1){ac=c[_+88>>2]|0;ad=aa((c[ab+88>>2]|0)-ac|0,w)|0;L3797:do{if((ad|0)>0){ae=(A|0)!=0;ag=_;ah=ab;ai=ad;aj=c[ab+92>>2]|0;while(1){ak=ah+88|0;al=ag+88|0;am=c[ag+92>>2]|0;an=aj-am|0;ao=c[(ae?ag|0:ag+4|0)>>2]|0;L3855:do{if((ao|0)==(ag|0)){ap=ai;aq=ag;ar=al;as=an}else{at=ak|0;au=ai;av=ag;aw=al;ax=am;ay=an;az=ao;while(1){aA=c[az+88>>2]|0;aB=aa(aA-(c[aw>>2]|0)|0,w)|0;aC=c[az+92>>2]|0;aD=aC-ax|0;if((aD|0)>=1){ap=au;aq=av;ar=aw;as=ay;break L3855}if((aB|0)!=0){if((aB|0)>=0){ap=au;aq=av;ar=aw;as=ay;break L3855}aE=aa(aD,au)|0;if((aE|0)>(aa(aB,ay)|0)){ap=au;aq=av;ar=aw;as=ay;break L3855}}aB=aa((c[at>>2]|0)-aA|0,w)|0;aA=az+88|0;aE=aj-aC|0;aD=c[(ae?az|0:az+4|0)>>2]|0;if((aD|0)==(az|0)){ap=aB;aq=az;ar=aA;as=aE;break}else{au=aB;av=az;aw=aA;ax=aC;ay=aE;az=aD}}}}while(0);ao=c[(ae?ah|0:ah+4|0)>>2]|0;if((ao|0)==(ah|0)){aF=aq;aG=ah;break L3797}an=c[ao+88>>2]|0;am=aa(an-(c[ak>>2]|0)|0,w)|0;al=c[ao+92>>2]|0;az=al-aj|0;ay=aa(an-(c[ar>>2]|0)|0,w)|0;if(!((ay|0)>0&(az|0)<0)){aF=aq;aG=ah;break L3797}if((am|0)==0){ag=aq;ah=ao;ai=ay;aj=al;continue}if((am|0)>=0){aF=aq;aG=ah;break L3797}an=aa(az,ap)|0;if((an|0)<(aa(am,as)|0)){ag=aq;ah=ao;ai=ay;aj=al}else{aF=aq;aG=ah;break}}}else{if((ad|0)>=0){ah=c[_+92>>2]|0;aj=(A|0)!=0;L3801:do{if(aj){ai=_;ag=ah;while(1){ae=c[ai>>2]|0;if((ae|0)==(_|0)){aH=ai;break L3801}if((c[ae+88>>2]|0)!=(ac|0)){aH=ai;break L3801}al=c[ae+92>>2]|0;if((al|0)>(ag|0)){aH=ai;break}else{ai=ae;ag=al}}}else{ag=_;ai=ah;while(1){ak=c[ag+4>>2]|0;if((ak|0)==(_|0)){aH=ag;break L3801}if((c[ak+88>>2]|0)!=(ac|0)){aH=ag;break L3801}al=c[ak+92>>2]|0;if((al|0)>(ai|0)){aH=ag;break}else{ag=ak;ai=al}}}}while(0);ah=c[ab+92>>2]|0;if(aj){ai=ab;ag=ah;while(1){al=c[ai+4>>2]|0;if((al|0)==(ab|0)){aF=aH;aG=ai;break L3797}if((c[al+88>>2]|0)!=(ac|0)){aF=aH;aG=ai;break L3797}ak=c[al+92>>2]|0;if((ak|0)<(ag|0)){aF=aH;aG=ai;break L3797}else{ai=al;ag=ak}}}else{ag=ab;ai=ah;while(1){aj=c[ag>>2]|0;if((aj|0)==(ab|0)){aF=aH;aG=ag;break L3797}if((c[aj+88>>2]|0)!=(ac|0)){aF=aH;aG=ag;break L3797}ak=c[aj+92>>2]|0;if((ak|0)<(ai|0)){aF=aH;aG=ag;break L3797}else{ag=aj;ai=ak}}}}ai=c[ab+92>>2]|0;ag=c[_+92>>2]|0;if((A|0)==0){ah=_;ak=ab;aj=ad;al=ai;ae=ag;while(1){ay=c[ak>>2]|0;ao=(ay|0)==(ak|0);am=ak+88|0;an=ay+88|0;az=ay+92|0;ax=ah;aw=aj;av=ae;L3839:while(1){aI=ax+88|0;au=al-av|0;do{if(!ao){aJ=c[an>>2]|0;at=aa(aJ-(c[am>>2]|0)|0,w)|0;aK=c[az>>2]|0;aD=aK-al|0;if((aD|0)<=-1){break}if((at|0)==0){break L3839}if((at|0)>=0){break}aE=aa(aD,aw)|0;if((aE|0)<=(aa(at,au)|0)){break L3839}}}while(0);at=c[ax>>2]|0;if((at|0)==(ax|0)){aF=ax;aG=ak;break L3797}aE=c[at+88>>2]|0;aD=aa(aE-(c[aI>>2]|0)|0,w)|0;aC=c[at+92>>2]|0;aA=aC-av|0;aB=aa((c[am>>2]|0)-aE|0,w)|0;if(!((aB|0)<0&(aA|0)>0)){aF=ax;aG=ak;break L3797}if((aD|0)==0){ax=at;aw=aB;av=aC;continue}if((aD|0)>=0){aF=ax;aG=ak;break L3797}aE=aa(aA,aw)|0;if((aE|0)<(aa(aD,au)|0)){ax=at;aw=aB;av=aC}else{aF=ax;aG=ak;break L3797}}ah=ax;ak=ay;aj=aa(aJ-(c[aI>>2]|0)|0,w)|0;al=aK;ae=av}}else{ae=_;al=ab;aj=ad;ak=ai;ah=ag;while(1){aw=c[al+4>>2]|0;am=(aw|0)==(al|0);az=al+88|0;an=aw+88|0;ao=aw+92|0;aC=ae;aB=aj;at=ah;L3824:while(1){aL=aC+88|0;aD=ak-at|0;do{if(!am){aM=c[an>>2]|0;aE=aa(aM-(c[az>>2]|0)|0,w)|0;aN=c[ao>>2]|0;aA=aN-ak|0;if((aA|0)<=-1){break}if((aE|0)==0){break L3824}if((aE|0)>=0){break}aO=aa(aA,aB)|0;if((aO|0)<=(aa(aE,aD)|0)){break L3824}}}while(0);au=c[aC+4>>2]|0;if((au|0)==(aC|0)){aF=aC;aG=al;break L3797}aE=c[au+88>>2]|0;aO=aa(aE-(c[aL>>2]|0)|0,w)|0;aA=c[au+92>>2]|0;aP=aA-at|0;aQ=aa((c[az>>2]|0)-aE|0,w)|0;if(!((aQ|0)<0&(aP|0)>0)){aF=aC;aG=al;break L3797}if((aO|0)==0){aC=au;aB=aQ;at=aA;continue}if((aO|0)>=0){aF=aC;aG=al;break L3797}aE=aa(aP,aB)|0;if((aE|0)<(aa(aO,aD)|0)){aC=au;aB=aQ;at=aA}else{aF=aC;aG=al;break L3797}}ae=aC;al=aw;aj=aa(aM-(c[aL>>2]|0)|0,w)|0;ak=aN;ah=at}}}}while(0);if((A|0)==0){N=1;w=-1;t=aG;R=aF;z=L;S=G;continue L3793}ad=A+1|0;if((ad|0)<2){A=ad;ab=aG;_=aF}else{break L3793}}}c[aF+4>>2]=aG;c[aG>>2]=aF;c[R>>2]=t;c[t+4>>2]=R;S=c[M>>2]|0;if((c[S+88>>2]|0)<(c[(c[G>>2]|0)+88>>2]|0)){c[G>>2]=S}S=c[u>>2]|0;if((c[S+88>>2]|0)>=(c[(c[H>>2]|0)+88>>2]|0)){c[H>>2]=S}c[K>>2]=c[q+12>>2];S=c[t+88>>2]|0;L=c[R+88>>2]|0;z=S-L|0;w=c[t+92>>2]|0;N=c[R+92>>2]|0;_=w-N|0;ab=c[t+96>>2]|0;A=c[R+96>>2]|0;V=ab-A|0;ad=_;ac=(_|0)<0?-1:0;_=-z|0;ah=_;ak=(_|0)<0?-1:0;_=V;aj=(V|0)<0?-1:0;V=0;al=0;ae=~~(+(V>>>0)+ +(al|0)*4294967296.0-(+(ah>>>0)+ +(ak|0)*4294967296.0))>>>0;ag=(D=+(V>>>0)+ +(al|0)*4294967296.0-(+(ah>>>0)+ +(ak|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);al=~~((+(_>>>0)+ +(aj|0)*4294967296.0)*(+(ae>>>0)+ +(ag|0)*4294967296.0))>>>0;V=(D=(+(_>>>0)+ +(aj|0)*4294967296.0)*(+(ae>>>0)+ +(ag|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ag=~~((+(_>>>0)+ +(aj|0)*4294967296.0)*(+(ad>>>0)+ +(ac|0)*4294967296.0))>>>0;ae=(D=(+(_>>>0)+ +(aj|0)*4294967296.0)*(+(ad>>>0)+ +(ac|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aj=z;_=(z|0)<0?-1:0;z=~~((+(aj>>>0)+ +(_|0)*4294967296.0)*(+(ah>>>0)+ +(ak|0)*4294967296.0))>>>0;ai=(D=(+(aj>>>0)+ +(_|0)*4294967296.0)*(+(ah>>>0)+ +(ak|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);_=~~((+(ad>>>0)+ +(ac|0)*4294967296.0)*(+(ad>>>0)+ +(ac|0)*4294967296.0))>>>0;aj=(D=(+(ad>>>0)+ +(ac|0)*4294967296.0)*(+(ad>>>0)+ +(ac|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aB=~~(+(z>>>0)+ +(ai|0)*4294967296.0-(+(_>>>0)+ +(aj|0)*4294967296.0))>>>0;az=(D=+(z>>>0)+ +(ai|0)*4294967296.0-(+(_>>>0)+ +(aj|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aj=c[R+8>>2]|0;c[g>>2]=0;if((aj|0)==0){aR=0}else{_=0;ai=0;z=~~(+(_>>>0)+ +(ai|0)*4294967296.0-(+(ad>>>0)+ +(ac|0)*4294967296.0))>>>0;ao=(D=+(_>>>0)+ +(ai|0)*4294967296.0-(+(ad>>>0)+ +(ac|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ai=aj;_=0;while(1){an=c[ai+12>>2]|0;am=c[an+88>>2]|0;av=am-L|0;ay=c[an+92>>2]|0;ax=ay-N|0;aA=c[an+96>>2]|0;an=av;aQ=(av|0)<0?-1:0;av=ax;au=(ax|0)<0?-1:0;ax=(D=(+(av>>>0)+ +(au|0)*4294967296.0)*(+(ah>>>0)+ +(ak|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);do{if((~~((+(av>>>0)+ +(au|0)*4294967296.0)*(+(ah>>>0)+ +(ak|0)*4294967296.0))>>>0|0)==(~~((+(an>>>0)+ +(aQ|0)*4294967296.0)*(+(z>>>0)+ +(ao|0)*4294967296.0))>>>0|0)&(ax|0)==((D=(+(an>>>0)+ +(aQ|0)*4294967296.0)*(+(z>>>0)+ +(ao|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0)|0)){aO=aA-A|0;aE=aO;aP=(aO|0)<0?-1:0;aO=~~((+(an>>>0)+ +(aQ|0)*4294967296.0)*(+(al>>>0)+ +(V|0)*4294967296.0))>>>0;aS=(D=(+(an>>>0)+ +(aQ|0)*4294967296.0)*(+(al>>>0)+ +(V|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aT=~~((+(av>>>0)+ +(au|0)*4294967296.0)*(+(ag>>>0)+ +(ae|0)*4294967296.0))>>>0;aU=(D=(+(av>>>0)+ +(au|0)*4294967296.0)*(+(ag>>>0)+ +(ae|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aV=~~(+(aT>>>0)+ +(aU|0)*4294967296.0+(+(aO>>>0)+ +(aS|0)*4294967296.0))>>>0;aW=(D=+(aT>>>0)+ +(aU|0)*4294967296.0+(+(aO>>>0)+ +(aS|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aS=~~((+(aE>>>0)+ +(aP|0)*4294967296.0)*(+(aB>>>0)+ +(az|0)*4294967296.0))>>>0;aO=(D=(+(aE>>>0)+ +(aP|0)*4294967296.0)*(+(aB>>>0)+ +(az|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aP=(D=+(aV>>>0)+ +(aW|0)*4294967296.0+(+(aS>>>0)+ +(aO|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aE=0;if(!((aP|0)>(aE|0)|(aP|0)==(aE|0)&~~(+(aV>>>0)+ +(aW|0)*4294967296.0+(+(aS>>>0)+ +(aO|0)*4294967296.0))>>>0>>>0>0>>>0)){aX=_;break}if((_|0)!=0){aO=(c[_+4>>2]|0)==(ai|0);if((c[_>>2]|0)==(ai|0)){if(!aO){aX=_;break}aS=c[_+12>>2]|0;aW=c[(c[ai+8>>2]|0)+12>>2]|0;aV=c[aW+88>>2]|0;aE=(c[aS+88>>2]|0)-aV|0;aP=c[aW+92>>2]|0;aU=c[aW+96>>2]|0;aW=(c[aS+96>>2]|0)-aU|0;aT=aA-aU|0;aU=aa(aT,(c[aS+92>>2]|0)-aP|0)|0;aS=aU-(aa(aW,ay-aP|0)|0)|0;aP=aS;aU=(aS|0)<0?-1:0;aS=aa(aW,am-aV|0)|0;aV=aS-(aa(aT,aE)|0)|0;aE=aV;aT=(aV|0)<0?-1:0;aV=~~((+(aP>>>0)+ +(aU|0)*4294967296.0)*(+(ad>>>0)+ +(ac|0)*4294967296.0))>>>0;aS=(D=(+(aP>>>0)+ +(aU|0)*4294967296.0)*(+(ad>>>0)+ +(ac|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aU=~~((+(aE>>>0)+ +(aT|0)*4294967296.0)*(+(ah>>>0)+ +(ak|0)*4294967296.0))>>>0;aP=(D=(+(aE>>>0)+ +(aT|0)*4294967296.0)*(+(ah>>>0)+ +(ak|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aT=(D=+(aV>>>0)+ +(aS|0)*4294967296.0+(+(aU>>>0)+ +(aP|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aE=0;aY=(aT|0)>(aE|0)|(aT|0)==(aE|0)&~~(+(aV>>>0)+ +(aS|0)*4294967296.0+(+(aU>>>0)+ +(aP|0)*4294967296.0))>>>0>>>0>0>>>0?2:1}else{aY=aO&1}if((aY|0)!=1){aX=_;break}}c[g>>2]=ai;aX=ai}else{aX=_}}while(0);am=c[ai>>2]|0;if((am|0)==(aj|0)){aR=aX;break}else{ai=am;_=aX}}}_=c[t+8>>2]|0;c[h>>2]=0;if((_|0)==0){aZ=0}else{ai=0;aj=0;A=~~(+(ai>>>0)+ +(aj|0)*4294967296.0-(+(ad>>>0)+ +(ac|0)*4294967296.0))>>>0;ao=(D=+(ai>>>0)+ +(aj|0)*4294967296.0-(+(ad>>>0)+ +(ac|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aj=_;ai=0;while(1){z=c[aj+12>>2]|0;N=c[z+88>>2]|0;L=N-S|0;K=c[z+92>>2]|0;H=K-w|0;u=c[z+96>>2]|0;z=L;G=(L|0)<0?-1:0;L=H;M=(H|0)<0?-1:0;H=(D=(+(L>>>0)+ +(M|0)*4294967296.0)*(+(ah>>>0)+ +(ak|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);L3899:do{if((~~((+(L>>>0)+ +(M|0)*4294967296.0)*(+(ah>>>0)+ +(ak|0)*4294967296.0))>>>0|0)==(~~((+(z>>>0)+ +(G|0)*4294967296.0)*(+(A>>>0)+ +(ao|0)*4294967296.0))>>>0|0)&(H|0)==((D=(+(z>>>0)+ +(G|0)*4294967296.0)*(+(A>>>0)+ +(ao|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0)|0)){am=u-ab|0;ay=am;aA=(am|0)<0?-1:0;am=~~((+(z>>>0)+ +(G|0)*4294967296.0)*(+(al>>>0)+ +(V|0)*4294967296.0))>>>0;au=(D=(+(z>>>0)+ +(G|0)*4294967296.0)*(+(al>>>0)+ +(V|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);av=~~((+(L>>>0)+ +(M|0)*4294967296.0)*(+(ag>>>0)+ +(ae|0)*4294967296.0))>>>0;aQ=(D=(+(L>>>0)+ +(M|0)*4294967296.0)*(+(ag>>>0)+ +(ae|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);an=~~(+(av>>>0)+ +(aQ|0)*4294967296.0+(+(am>>>0)+ +(au|0)*4294967296.0))>>>0;ax=(D=+(av>>>0)+ +(aQ|0)*4294967296.0+(+(am>>>0)+ +(au|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);au=~~((+(ay>>>0)+ +(aA|0)*4294967296.0)*(+(aB>>>0)+ +(az|0)*4294967296.0))>>>0;am=(D=(+(ay>>>0)+ +(aA|0)*4294967296.0)*(+(aB>>>0)+ +(az|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aA=(D=+(an>>>0)+ +(ax|0)*4294967296.0+(+(au>>>0)+ +(am|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ay=0;if(!((aA|0)>(ay|0)|(aA|0)==(ay|0)&~~(+(an>>>0)+ +(ax|0)*4294967296.0+(+(au>>>0)+ +(am|0)*4294967296.0))>>>0>>>0>0>>>0)){a_=ai;break}do{if((ai|0)!=0){if((c[ai>>2]|0)!=(aj|0)){a_=ai;break L3899}if((c[ai+4>>2]|0)!=(aj|0)){break}am=c[ai+12>>2]|0;au=c[(c[aj+8>>2]|0)+12>>2]|0;ax=c[au+88>>2]|0;an=(c[am+88>>2]|0)-ax|0;ay=c[au+92>>2]|0;aA=c[au+96>>2]|0;au=(c[am+96>>2]|0)-aA|0;aQ=u-aA|0;aA=aa(aQ,(c[am+92>>2]|0)-ay|0)|0;am=aA-(aa(au,K-ay|0)|0)|0;ay=am;aA=(am|0)<0?-1:0;am=aa(au,N-ax|0)|0;ax=am-(aa(aQ,an)|0)|0;an=ax;aQ=(ax|0)<0?-1:0;ax=~~((+(ay>>>0)+ +(aA|0)*4294967296.0)*(+(ad>>>0)+ +(ac|0)*4294967296.0))>>>0;am=(D=(+(ay>>>0)+ +(aA|0)*4294967296.0)*(+(ad>>>0)+ +(ac|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aA=~~((+(an>>>0)+ +(aQ|0)*4294967296.0)*(+(ah>>>0)+ +(ak|0)*4294967296.0))>>>0;ay=(D=(+(an>>>0)+ +(aQ|0)*4294967296.0)*(+(ah>>>0)+ +(ak|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aQ=(D=+(ax>>>0)+ +(am|0)*4294967296.0+(+(aA>>>0)+ +(ay|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);an=0;if(!((aQ|0)>(an|0)|(aQ|0)==(an|0)&~~(+(ax>>>0)+ +(am|0)*4294967296.0+(+(aA>>>0)+ +(ay|0)*4294967296.0))>>>0>>>0>0>>>0)){a_=ai;break L3899}}}while(0);c[h>>2]=aj;a_=aj}else{a_=ai}}while(0);N=c[aj>>2]|0;if((N|0)==(_|0)){aZ=a_;break}else{aj=N;ai=a_}}}do{if((aR|0)==0&(aZ|0)==0){a$=t;a0=R}else{aC8(a,R,t,g,h);ai=c[g>>2]|0;if((ai|0)==0){a1=R}else{a1=c[ai+12>>2]|0}ai=c[h>>2]|0;if((ai|0)==0){a$=t;a0=a1;break}a$=c[ai+12>>2]|0;a0=a1}}while(0);W=c[a$+88>>2]|0;X=(c[a$+96>>2]|0)+1|0;Y=a$;Z=a0}t=c[Y+92>>2]|0;R=j|0;ai=j+4|0;aj=j+8|0;_=j+12|0;ak=k|0;ah=k+8|0;ac=k+16|0;ad=l|0;az=l+8|0;aB=l+16|0;ae=m+16|0;ag=m+8|0;V=n+16|0;al=n+8|0;ab=a+48|0;ao=a+116|0;A=a+120|0;w=a+56|0;S=m|0;N=0;K=0;u=0;M=0;L=1;G=0;z=0;H=0;ay=0;aA=W;am=t;ax=X;an=Y;aQ=Z;au=t;while(1){t=aQ+88|0;av=(c[an+88>>2]|0)-(c[t>>2]|0)|0;aO=aQ+92|0;aP=au-(c[aO>>2]|0)|0;aU=aQ+96|0;aS=(c[an+96>>2]|0)-(c[aU>>2]|0)|0;c[R>>2]=av;c[ai>>2]=aP;c[aj>>2]=aS;c[_>>2]=-1;aV=aA-(c[t>>2]|0)|0;t=am-(c[aO>>2]|0)|0;aO=ax-(c[aU>>2]|0)|0;aU=aa(aS,t)|0;aE=aU-(aa(aP,aO)|0)|0;aU=aE;aT=(aE|0)<0?-1:0;aE=aa(av,aO)|0;aO=aE-(aa(aS,aV)|0)|0;aE=aO;aW=(aO|0)<0?-1:0;aO=aa(aP,aV)|0;aV=aO-(aa(av,t)|0)|0;t=aV;aO=(aV|0)<0?-1:0;c[ak>>2]=aU;c[ak+4>>2]=aT;c[ah>>2]=aE;c[ah+4>>2]=aW;c[ac>>2]=t;c[ac+4>>2]=aO;aV=aP;a2=(aP|0)<0?-1:0;aP=~~((+(t>>>0)+ +(aO|0)*4294967296.0)*(+(aV>>>0)+ +(a2|0)*4294967296.0))>>>0;a3=(D=(+(t>>>0)+ +(aO|0)*4294967296.0)*(+(aV>>>0)+ +(a2|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);a4=aS;a5=(aS|0)<0?-1:0;aS=~~((+(a4>>>0)+ +(a5|0)*4294967296.0)*(+(aE>>>0)+ +(aW|0)*4294967296.0))>>>0;a6=(D=(+(a4>>>0)+ +(a5|0)*4294967296.0)*(+(aE>>>0)+ +(aW|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);a7=(D=+(aP>>>0)+ +(a3|0)*4294967296.0-(+(aS>>>0)+ +(a6|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);a8=~~((+(aU>>>0)+ +(aT|0)*4294967296.0)*(+(a4>>>0)+ +(a5|0)*4294967296.0))>>>0;a9=(D=(+(aU>>>0)+ +(aT|0)*4294967296.0)*(+(a4>>>0)+ +(a5|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);a5=av;a4=(av|0)<0?-1:0;av=~~((+(a5>>>0)+ +(a4|0)*4294967296.0)*(+(t>>>0)+ +(aO|0)*4294967296.0))>>>0;ba=(D=(+(a5>>>0)+ +(a4|0)*4294967296.0)*(+(t>>>0)+ +(aO|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aO=(D=+(a8>>>0)+ +(a9|0)*4294967296.0-(+(av>>>0)+ +(ba|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);t=~~((+(a5>>>0)+ +(a4|0)*4294967296.0)*(+(aE>>>0)+ +(aW|0)*4294967296.0))>>>0;bb=(D=(+(a5>>>0)+ +(a4|0)*4294967296.0)*(+(aE>>>0)+ +(aW|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aW=~~((+(aU>>>0)+ +(aT|0)*4294967296.0)*(+(aV>>>0)+ +(a2|0)*4294967296.0))>>>0;aE=(D=(+(aU>>>0)+ +(aT|0)*4294967296.0)*(+(aV>>>0)+ +(a2|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);a2=(D=+(t>>>0)+ +(bb|0)*4294967296.0-(+(aW>>>0)+ +(aE|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);c[ad>>2]=~~(+(aP>>>0)+ +(a3|0)*4294967296.0-(+(aS>>>0)+ +(a6|0)*4294967296.0))>>>0;c[ad+4>>2]=a7;c[az>>2]=~~(+(a8>>>0)+ +(a9|0)*4294967296.0-(+(av>>>0)+ +(ba|0)*4294967296.0))>>>0;c[az+4>>2]=aO;c[aB>>2]=~~(+(t>>>0)+ +(bb|0)*4294967296.0-(+(aW>>>0)+ +(aE|0)*4294967296.0))>>>0;c[aB+4>>2]=a2;aDD(v|0,0,20);a2=aC7(a,0,aQ,j,k,l,m)|0;aDD(x|0,0,20);aE=aC7(a,1,an,j,k,l,n)|0;aW=(a2|0)!=0;bb=aW^1;t=(aE|0)==0;if(t&bb){F=3047;break}if(t|bb){bc=aW?-1:1}else{bc=aC4(c[S>>2]|0,c[S+4>>2]|0,c[ag>>2]|0,c[ag+4>>2]|0,c[ae>>2]|0,n)|0}do{if(L){F=3059}else{if((bc|0)>-1){if((c[V>>2]|0)>=0){F=3059;break}if((c[al>>2]|0)==0&(c[al+4>>2]|0)==0){bd=u;be=M;bf=H;bg=ay;F=3066;break}else{F=3059;break}}if((c[ae>>2]|0)>=0){F=3059;break}if(!((c[ag>>2]|0)==0&(c[ag+4>>2]|0)==0)){F=3059;break}c[o>>2]=a2;c[p>>2]=aE;bh=ax;bi=am;bj=aA;bk=ay;bl=H;bm=z;bn=G;bo=a2;bp=M;bq=u;br=an;F=3088}}while(0);if((F|0)==3059){F=0;aW=aC5(ab)|0;bb=aC5(ab)|0;t=aW+8|0;c[t>>2]=bb;c[bb+8>>2]=aW;c[aW+20>>2]=c[y>>2];c[bb+20>>2]=c[y>>2];c[aW+12>>2]=an;c[bb+12>>2]=aQ;c[aW+16>>2]=0;c[bb+16>>2]=0;bb=(c[ao>>2]|0)+1|0;c[ao>>2]=bb;if((bb|0)>(c[A>>2]|0)){c[A>>2]=bb}if((M|0)==0){bs=aW}else{c[M+4>>2]=aW;bs=u}c[aW>>2]=M;bb=c[t>>2]|0;if((ay|0)==0){bt=bb}else{c[ay>>2]=bb;bt=H}c[bb+4>>2]=ay;bd=bs;be=aW;bf=bt;bg=bb;F=3066}do{if((F|0)==3066){F=0;c[o>>2]=a2;c[p>>2]=aE;if((bc|0)==0){aC8(a,aQ,an,o,p);bu=c[p>>2]|0}else{if((bc|0)>-1){bu=aE}else{bh=ax;bi=am;bj=aA;bk=bg;bl=bf;bm=z;bn=G;bo=a2;bp=be;bq=bd;br=an;F=3088;break}}if((bu|0)==0){bv=G;bw=z;bx=bf;by=bg;bz=aA;bA=am;bB=ax;bC=an}else{bb=(G|0)!=0;do{if(bb){aW=c[G>>2]|0;if((aW|0)==(aE|0)){break}else{bD=aW}while(1){aW=bD|0;t=c[aW>>2]|0;aO=c[bD+8>>2]|0;if((t|0)==(bD|0)){c[(c[aO+12>>2]|0)+8>>2]=0}else{ba=bD+4|0;c[t+4>>2]=c[ba>>2];c[c[ba>>2]>>2]=t;c[(c[aO+12>>2]|0)+8>>2]=t}ba=aO|0;av=c[ba>>2]|0;if((av|0)==(aO|0)){c[(c[bD+12>>2]|0)+8>>2]=0}else{a9=aO+4|0;c[av+4>>2]=c[a9>>2];c[c[a9>>2]>>2]=av;c[(c[bD+12>>2]|0)+8>>2]=av}aDD(bD|0,0,20);c[aW>>2]=c[w>>2];c[w>>2]=bD;aDD(aO|0,0,20);c[ba>>2]=c[w>>2];c[w>>2]=aO;c[ao>>2]=(c[ao>>2]|0)-1;if((t|0)==(aE|0)){break}else{bD=t}}}}while(0);if((bg|0)==0){bE=bb?z:aE;bF=bf;bG=bu}else{if(bb){c[G>>2]=bf;c[bf+4>>2]=G;bH=z;bI=aE+4|0}else{t=aE+4|0;aO=c[t>>2]|0;c[aO>>2]=bf;c[bf+4>>2]=aO;bH=bf;bI=t}c[bg>>2]=aE;c[bI>>2]=bg;bE=bH;bF=0;bG=c[p>>2]|0}bv=c[bG+8>>2]|0;bw=bE;bx=bF;by=0;bz=c[an+88>>2]|0;bA=c[an+92>>2]|0;bB=c[an+96>>2]|0;bC=c[bG+12>>2]|0}if((bc|0)>=1){bJ=N;bK=K;bL=bd;bM=be;bN=bz;bO=bA;bP=bB;bQ=by;bR=bx;bS=bw;bT=bv;bU=bC;bV=aQ;break}bh=bB;bi=bA;bj=bz;bk=by;bl=bx;bm=bw;bn=bv;bo=c[o>>2]|0;bp=be;bq=bd;br=bC;F=3088}}while(0);do{if((F|0)==3088){F=0;if((bo|0)==0){bJ=N;bK=K;bL=bq;bM=bp;bN=bj;bO=bi;bP=bh;bQ=bk;bR=bl;bS=bm;bT=bn;bU=br;bV=aQ;break}aE=(N|0)!=0;do{if(aE){t=c[N+4>>2]|0;if((t|0)==(a2|0)){break}else{bW=t}while(1){t=bW+4|0;aO=c[t>>2]|0;ba=bW|0;aW=c[ba>>2]|0;av=c[bW+8>>2]|0;if((aW|0)==(bW|0)){c[(c[av+12>>2]|0)+8>>2]=0}else{c[aW+4>>2]=aO;c[c[t>>2]>>2]=aW;c[(c[av+12>>2]|0)+8>>2]=aW}aW=av|0;t=c[aW>>2]|0;if((t|0)==(av|0)){c[(c[bW+12>>2]|0)+8>>2]=0}else{a9=av+4|0;c[t+4>>2]=c[a9>>2];c[c[a9>>2]>>2]=t;c[(c[bW+12>>2]|0)+8>>2]=t}aDD(bW|0,0,20);c[ba>>2]=c[w>>2];c[w>>2]=bW;aDD(av|0,0,20);c[aW>>2]=c[w>>2];c[w>>2]=av;c[ao>>2]=(c[ao>>2]|0)-1;if((aO|0)==(a2|0)){break}else{bW=aO}}}}while(0);if((bp|0)==0){bX=aE?K:a2;bY=bq;bZ=bo}else{if(aE){c[bq>>2]=N;c[N+4>>2]=bq;b_=K;b$=a2|0}else{bb=a2|0;aO=c[bb>>2]|0;c[bq>>2]=aO;c[aO+4>>2]=bq;b_=bq;b$=bb}c[b$>>2]=bp;c[bp+4>>2]=a2;bX=b_;bY=0;bZ=c[o>>2]|0}bJ=c[bZ+8>>2]|0;bK=bX;bL=bY;bM=0;bN=c[aQ+88>>2]|0;bO=c[aQ+92>>2]|0;bP=c[aQ+96>>2]|0;bQ=bk;bR=bl;bS=bm;bT=bn;bU=br;bV=c[bZ+12>>2]|0}}while(0);if((bV|0)==(Z|0)&(bU|0)==(Y|0)){break}N=bJ;K=bK;u=bL;M=bM;L=0;G=bT;z=bS;H=bR;ay=bQ;aA=bN;am=bO;ax=bP;an=bU;aQ=bV;au=c[bU+92>>2]|0}if((F|0)==3047){au=aC5(ab)|0;ax=aC5(ab)|0;am=au+8|0;c[am>>2]=ax;c[ax+8>>2]=au;c[au+20>>2]=c[y>>2];c[ax+20>>2]=c[y>>2];c[au+12>>2]=an;c[ax+12>>2]=aQ;c[au+16>>2]=0;c[ax+16>>2]=0;ax=(c[ao>>2]|0)+1|0;c[ao>>2]=ax;if((ax|0)>(c[A>>2]|0)){c[A>>2]=ax}c[au>>2]=au;c[au+4>>2]=au;c[aQ+8>>2]=au;au=c[am>>2]|0;c[au>>2]=au;c[au+4>>2]=au;c[an+8>>2]=au;i=f;return}do{if((bJ|0)==0){c[bL>>2]=bM;c[bM+4>>2]=bL;c[Z+8>>2]=bM}else{au=bJ+4|0;am=c[au>>2]|0;if((am|0)!=(bK|0)){ax=am;while(1){am=ax+4|0;aA=c[am>>2]|0;ay=ax|0;H=c[ay>>2]|0;z=c[ax+8>>2]|0;if((H|0)==(ax|0)){c[(c[z+12>>2]|0)+8>>2]=0}else{c[H+4>>2]=aA;c[c[am>>2]>>2]=H;c[(c[z+12>>2]|0)+8>>2]=H}H=z|0;am=c[H>>2]|0;if((am|0)==(z|0)){c[(c[ax+12>>2]|0)+8>>2]=0}else{G=z+4|0;c[am+4>>2]=c[G>>2];c[c[G>>2]>>2]=am;c[(c[ax+12>>2]|0)+8>>2]=am}aDD(ax|0,0,20);c[ay>>2]=c[w>>2];c[w>>2]=ax;aDD(z|0,0,20);c[H>>2]=c[w>>2];c[w>>2]=z;c[ao>>2]=(c[ao>>2]|0)-1;if((aA|0)==(bK|0)){break}else{ax=aA}}}if((bM|0)==0){break}c[bL>>2]=bJ;c[au>>2]=bL;c[bK>>2]=bM;c[bM+4>>2]=bK}}while(0);if((bT|0)==0){c[bQ>>2]=bR;c[bR+4>>2]=bQ;c[Y+8>>2]=bQ;i=f;return}an=bT|0;aQ=c[an>>2]|0;if((aQ|0)!=(bS|0)){A=aQ;while(1){aQ=A|0;y=c[aQ>>2]|0;ab=c[A+8>>2]|0;if((y|0)==(A|0)){c[(c[ab+12>>2]|0)+8>>2]=0}else{ax=A+4|0;c[y+4>>2]=c[ax>>2];c[c[ax>>2]>>2]=y;c[(c[ab+12>>2]|0)+8>>2]=y}ax=ab|0;aA=c[ax>>2]|0;if((aA|0)==(ab|0)){c[(c[A+12>>2]|0)+8>>2]=0}else{z=ab+4|0;c[aA+4>>2]=c[z>>2];c[c[z>>2]>>2]=aA;c[(c[A+12>>2]|0)+8>>2]=aA}aDD(A|0,0,20);c[aQ>>2]=c[w>>2];c[w>>2]=A;aDD(ab|0,0,20);c[ax>>2]=c[w>>2];c[w>>2]=ab;c[ao>>2]=(c[ao>>2]|0)-1;if((y|0)==(bS|0)){break}else{A=y}}}if((bQ|0)==0){i=f;return}c[an>>2]=bR;c[bR+4>>2]=bT;c[bQ>>2]=bS;c[bS+4>>2]=bQ;i=f;return}}while(0);c[s+8>>2]=0;c[s>>2]=s;c[s+4>>2]=s;c[e>>2]=s;c[e+4>>2]=s;c[e+8>>2]=s;c[e+12>>2]=s;i=f;return}function aC7(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ab=0,ac=0,ad=0,ae=0,ag=0,ah=0,ai=0;i=d+8|0;j=c[i>>2]|0;if((j|0)==0){k=0;return k|0}l=a+100|0;a=d+88|0;m=d+92|0;n=d+96|0;d=g|0;o=g+8|0;p=g+16|0;g=f|0;q=f+8|0;r=f+16|0;f=h|0;s=h+8|0;t=h+16|0;u=e+8|0;v=e+4|0;w=e|0;e=0;x=j;while(1){do{if((c[x+20>>2]|0)>(c[l>>2]|0)){j=c[x+12>>2]|0;y=c[j+88>>2]|0;z=y-(c[a>>2]|0)|0;A=c[j+92>>2]|0;B=A-(c[m>>2]|0)|0;C=c[j+96>>2]|0;j=C-(c[n>>2]|0)|0;E=z;F=(z|0)<0?-1:0;G=c[d>>2]|0;H=c[d+4>>2]|0;I=~~((+(E>>>0)+ +(F|0)*4294967296.0)*(+(G>>>0)+ +(H|0)*4294967296.0))>>>0;J=(D=(+(E>>>0)+ +(F|0)*4294967296.0)*(+(G>>>0)+ +(H|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);H=B;G=(B|0)<0?-1:0;K=c[o>>2]|0;L=c[o+4>>2]|0;M=~~((+(H>>>0)+ +(G|0)*4294967296.0)*(+(K>>>0)+ +(L|0)*4294967296.0))>>>0;N=(D=(+(H>>>0)+ +(G|0)*4294967296.0)*(+(K>>>0)+ +(L|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);L=~~(+(M>>>0)+ +(N|0)*4294967296.0+(+(I>>>0)+ +(J|0)*4294967296.0))>>>0;K=(D=+(M>>>0)+ +(N|0)*4294967296.0+(+(I>>>0)+ +(J|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);J=j;I=(j|0)<0?-1:0;N=c[p>>2]|0;M=c[p+4>>2]|0;Q=~~((+(J>>>0)+ +(I|0)*4294967296.0)*(+(N>>>0)+ +(M|0)*4294967296.0))>>>0;R=(D=(+(J>>>0)+ +(I|0)*4294967296.0)*(+(N>>>0)+ +(M|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);M=~~(+(L>>>0)+ +(K|0)*4294967296.0+(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;N=(D=+(L>>>0)+ +(K|0)*4294967296.0+(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);R=c[g>>2]|0;Q=c[g+4>>2]|0;K=~~((+(R>>>0)+ +(Q|0)*4294967296.0)*(+(E>>>0)+ +(F|0)*4294967296.0))>>>0;L=(D=(+(R>>>0)+ +(Q|0)*4294967296.0)*(+(E>>>0)+ +(F|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);F=c[q>>2]|0;E=c[q+4>>2]|0;Q=~~((+(F>>>0)+ +(E|0)*4294967296.0)*(+(H>>>0)+ +(G|0)*4294967296.0))>>>0;R=(D=(+(F>>>0)+ +(E|0)*4294967296.0)*(+(H>>>0)+ +(G|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);G=~~(+(Q>>>0)+ +(R|0)*4294967296.0+(+(K>>>0)+ +(L|0)*4294967296.0))>>>0;H=(D=+(Q>>>0)+ +(R|0)*4294967296.0+(+(K>>>0)+ +(L|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);L=c[r>>2]|0;K=c[r+4>>2]|0;R=~~((+(L>>>0)+ +(K|0)*4294967296.0)*(+(J>>>0)+ +(I|0)*4294967296.0))>>>0;Q=(D=(+(L>>>0)+ +(K|0)*4294967296.0)*(+(J>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);I=~~(+(G>>>0)+ +(H|0)*4294967296.0+(+(R>>>0)+ +(Q|0)*4294967296.0))>>>0;J=(D=+(G>>>0)+ +(H|0)*4294967296.0+(+(R>>>0)+ +(Q|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);Q=0;if((N|0)>(Q|0)|(N|0)==(Q|0)&M>>>0>0>>>0){S=N;T=M;U=1}else{Q=0;R=(N|0)<(Q|0)|(N|0)==(Q|0)&M>>>0<0>>>0;Q=0;H=0;S=R?(D=+(Q>>>0)+ +(H|0)*4294967296.0-(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0):0;T=R?~~(+(Q>>>0)+ +(H|0)*4294967296.0-(+(M>>>0)+ +(N|0)*4294967296.0))>>>0:0;U=R?-1:0}R=0;if((J|0)>(R|0)|(J|0)==(R|0)&I>>>0>0>>>0){V=J;W=I;X=U}else{R=0;if((J|0)<(R|0)|(J|0)==(R|0)&I>>>0<0>>>0){R=0;N=0;Y=(I|0)==0&(J|0)==0;Z=(D=+(R>>>0)+ +(N|0)*4294967296.0-(+(I>>>0)+ +(J|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);_=~~(+(R>>>0)+ +(N|0)*4294967296.0-(+(I>>>0)+ +(J|0)*4294967296.0))>>>0;ab=-U|0}else{Y=1;Z=0;_=0;ab=U}if((ab|0)==0&Y){ac=e;break}else{V=Z;W=_;X=ab}}if((e|0)==0){c[f>>2]=T;c[f+4>>2]=S;c[s>>2]=W;c[s+4>>2]=V;c[t>>2]=X;ac=x;break}J=aC4(T,S,W,V,X,h)|0;if((J|0)<0){c[f>>2]=T;c[f+4>>2]=S;c[s>>2]=W;c[s+4>>2]=V;c[t>>2]=X;ac=x;break}if((J|0)!=0){ac=e;break}J=(c[e+4>>2]|0)==(x|0);do{if((c[e>>2]|0)==(x|0)){if(!J){ad=2;break}I=c[u>>2]|0;N=aa(I,B)|0;R=c[v>>2]|0;M=N-(aa(R,j)|0)|0;N=M;H=(M|0)<0?-1:0;M=c[w>>2]|0;Q=aa(M,j)|0;G=Q-(aa(z,I)|0)|0;I=G;Q=(G|0)<0?-1:0;G=aa(z,R)|0;R=G-(aa(M,B)|0)|0;M=R;G=(R|0)<0?-1:0;R=c[e+12>>2]|0;K=c[(c[x+8>>2]|0)+12>>2]|0;L=c[K+88>>2]|0;E=(c[R+88>>2]|0)-L|0;F=c[K+92>>2]|0;ae=(c[R+92>>2]|0)-F|0;ag=c[K+96>>2]|0;K=(c[R+96>>2]|0)-ag|0;R=y-L|0;L=A-F|0;F=C-ag|0;ag=aa(F,ae)|0;ah=ag-(aa(L,K)|0)|0;ag=ah;ai=(ah|0)<0?-1:0;ah=aa(R,K)|0;K=ah-(aa(F,E)|0)|0;F=K;ah=(K|0)<0?-1:0;K=aa(L,E)|0;E=K-(aa(R,ae)|0)|0;ae=E;R=(E|0)<0?-1:0;E=~~((+(ag>>>0)+ +(ai|0)*4294967296.0)*(+(N>>>0)+ +(H|0)*4294967296.0))>>>0;K=(D=(+(ag>>>0)+ +(ai|0)*4294967296.0)*(+(N>>>0)+ +(H|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);H=~~((+(F>>>0)+ +(ah|0)*4294967296.0)*(+(I>>>0)+ +(Q|0)*4294967296.0))>>>0;N=(D=(+(F>>>0)+ +(ah|0)*4294967296.0)*(+(I>>>0)+ +(Q|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);Q=~~((+(ae>>>0)+ +(R|0)*4294967296.0)*(+(M>>>0)+ +(G|0)*4294967296.0))>>>0;I=(D=(+(ae>>>0)+ +(R|0)*4294967296.0)*(+(M>>>0)+ +(G|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);G=~~(+(E>>>0)+ +(K|0)*4294967296.0+(+(Q>>>0)+ +(I|0)*4294967296.0))>>>0;M=(D=+(E>>>0)+ +(K|0)*4294967296.0+(+(Q>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);I=(D=+(G>>>0)+ +(M|0)*4294967296.0+(+(H>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);Q=0;ad=(I|0)>(Q|0)|(I|0)==(Q|0)&~~(+(G>>>0)+ +(M|0)*4294967296.0+(+(H>>>0)+ +(N|0)*4294967296.0))>>>0>>>0>0>>>0?2:1}else{ad=J&1}}while(0);ac=(ad|0)==2^b?e:x}else{ac=e}}while(0);J=c[x>>2]|0;if((J|0)==(c[i>>2]|0)){k=ac;break}else{e=ac;x=J}}return k|0}function aC8(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ab=0,ac=0,ad=0,ae=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0,aM=0,aN=0,aO=0,aP=0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$=0,a0=0,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0,ba=0,bb=0,bc=0,bd=0,be=0,bf=0,bg=0,bh=0,bi=0,bj=0;g=i;i=i+96|0;h=g|0;j=g+24|0;k=g+48|0;l=g+72|0;m=c[e>>2]|0;n=c[f>>2]|0;o=(m|0)!=0;if(o){p=c[m+12>>2]|0}else{p=b}q=c[p+88>>2]|0;r=c[p+92>>2]|0;s=c[p+96>>2]|0;if((n|0)==0){t=d}else{t=c[n+12>>2]|0}p=c[t+88>>2]|0;u=c[t+92>>2]|0;v=c[t+96>>2]|0;t=c[b+88>>2]|0;w=(c[d+88>>2]|0)-t|0;x=c[b+92>>2]|0;y=(c[d+92>>2]|0)-x|0;z=c[b+96>>2]|0;b=(c[d+96>>2]|0)-z|0;d=c[(o?m:n)+12>>2]|0;o=(c[d+88>>2]|0)-t|0;A=(c[d+92>>2]|0)-x|0;B=(c[d+96>>2]|0)-z|0;d=aa(A,b)|0;C=d-(aa(B,y)|0)|0;d=C;E=(C|0)<0?-1:0;C=aa(B,w)|0;B=C-(aa(o,b)|0)|0;C=B;F=(B|0)<0?-1:0;B=aa(o,y)|0;o=B-(aa(A,w)|0)|0;A=o;B=(o|0)<0?-1:0;o=t;G=(t|0)<0?-1:0;t=~~((+(d>>>0)+ +(E|0)*4294967296.0)*(+(o>>>0)+ +(G|0)*4294967296.0))>>>0;H=(D=(+(d>>>0)+ +(E|0)*4294967296.0)*(+(o>>>0)+ +(G|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);G=x;o=(x|0)<0?-1:0;x=~~((+(C>>>0)+ +(F|0)*4294967296.0)*(+(G>>>0)+ +(o|0)*4294967296.0))>>>0;I=(D=(+(C>>>0)+ +(F|0)*4294967296.0)*(+(G>>>0)+ +(o|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);o=z;G=(z|0)<0?-1:0;z=~~((+(A>>>0)+ +(B|0)*4294967296.0)*(+(o>>>0)+ +(G|0)*4294967296.0))>>>0;J=(D=(+(A>>>0)+ +(B|0)*4294967296.0)*(+(o>>>0)+ +(G|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);G=~~(+(t>>>0)+ +(H|0)*4294967296.0+(+(z>>>0)+ +(J|0)*4294967296.0))>>>0;o=(D=+(t>>>0)+ +(H|0)*4294967296.0+(+(z>>>0)+ +(J|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);J=~~(+(G>>>0)+ +(o|0)*4294967296.0+(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;z=(D=+(G>>>0)+ +(o|0)*4294967296.0+(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);I=y;x=(y|0)<0?-1:0;o=~~((+(A>>>0)+ +(B|0)*4294967296.0)*(+(I>>>0)+ +(x|0)*4294967296.0))>>>0;G=(D=(+(A>>>0)+ +(B|0)*4294967296.0)*(+(I>>>0)+ +(x|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);H=b;t=(b|0)<0?-1:0;K=~~((+(C>>>0)+ +(F|0)*4294967296.0)*(+(H>>>0)+ +(t|0)*4294967296.0))>>>0;L=(D=(+(C>>>0)+ +(F|0)*4294967296.0)*(+(H>>>0)+ +(t|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);M=~~(+(o>>>0)+ +(G|0)*4294967296.0-(+(K>>>0)+ +(L|0)*4294967296.0))>>>0;N=(D=+(o>>>0)+ +(G|0)*4294967296.0-(+(K>>>0)+ +(L|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);L=~~((+(d>>>0)+ +(E|0)*4294967296.0)*(+(H>>>0)+ +(t|0)*4294967296.0))>>>0;K=(D=(+(d>>>0)+ +(E|0)*4294967296.0)*(+(H>>>0)+ +(t|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);t=w;H=(w|0)<0?-1:0;G=~~((+(A>>>0)+ +(B|0)*4294967296.0)*(+(t>>>0)+ +(H|0)*4294967296.0))>>>0;o=(D=(+(A>>>0)+ +(B|0)*4294967296.0)*(+(t>>>0)+ +(H|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);Q=~~(+(L>>>0)+ +(K|0)*4294967296.0-(+(G>>>0)+ +(o|0)*4294967296.0))>>>0;R=(D=+(L>>>0)+ +(K|0)*4294967296.0-(+(G>>>0)+ +(o|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);o=~~((+(C>>>0)+ +(F|0)*4294967296.0)*(+(t>>>0)+ +(H|0)*4294967296.0))>>>0;G=(D=(+(C>>>0)+ +(F|0)*4294967296.0)*(+(t>>>0)+ +(H|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);H=~~((+(d>>>0)+ +(E|0)*4294967296.0)*(+(I>>>0)+ +(x|0)*4294967296.0))>>>0;t=(D=(+(d>>>0)+ +(E|0)*4294967296.0)*(+(I>>>0)+ +(x|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);x=~~(+(o>>>0)+ +(G|0)*4294967296.0-(+(H>>>0)+ +(t|0)*4294967296.0))>>>0;I=(D=+(o>>>0)+ +(G|0)*4294967296.0-(+(H>>>0)+ +(t|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);t=q;H=(q|0)<0?-1:0;G=~~((+(M>>>0)+ +(N|0)*4294967296.0)*(+(t>>>0)+ +(H|0)*4294967296.0))>>>0;o=(D=(+(M>>>0)+ +(N|0)*4294967296.0)*(+(t>>>0)+ +(H|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);H=r;t=(r|0)<0?-1:0;K=~~((+(Q>>>0)+ +(R|0)*4294967296.0)*(+(H>>>0)+ +(t|0)*4294967296.0))>>>0;L=(D=(+(Q>>>0)+ +(R|0)*4294967296.0)*(+(H>>>0)+ +(t|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);t=~~(+(K>>>0)+ +(L|0)*4294967296.0+(+(G>>>0)+ +(o|0)*4294967296.0))>>>0;H=(D=+(K>>>0)+ +(L|0)*4294967296.0+(+(G>>>0)+ +(o|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);o=s;G=(s|0)<0?-1:0;L=~~((+(x>>>0)+ +(I|0)*4294967296.0)*(+(o>>>0)+ +(G|0)*4294967296.0))>>>0;K=(D=(+(x>>>0)+ +(I|0)*4294967296.0)*(+(o>>>0)+ +(G|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);G=~~(+(t>>>0)+ +(H|0)*4294967296.0+(+(L>>>0)+ +(K|0)*4294967296.0))>>>0;o=(D=+(t>>>0)+ +(H|0)*4294967296.0+(+(L>>>0)+ +(K|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);do{if((m|0)==0){S=o;T=G;U=q;V=r;W=s;X=n}else{if((c[m+12>>2]|0)==0){S=o;T=G;U=q;V=r;W=s;X=n;break}K=a+100|0;L=s;H=r;t=q;Y=o;Z=G;_=m;while(1){ab=c[(c[_+8>>2]|0)+4>>2]|0;ac=ab+12|0;ad=c[ac>>2]|0;ae=c[ad+88>>2]|0;ag=ae;ah=(ae|0)<0?-1:0;ae=~~((+(ag>>>0)+ +(ah|0)*4294967296.0)*(+(d>>>0)+ +(E|0)*4294967296.0))>>>0;ai=(D=(+(ag>>>0)+ +(ah|0)*4294967296.0)*(+(d>>>0)+ +(E|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aj=c[ad+92>>2]|0;ak=aj;al=(aj|0)<0?-1:0;aj=~~((+(ak>>>0)+ +(al|0)*4294967296.0)*(+(C>>>0)+ +(F|0)*4294967296.0))>>>0;am=(D=(+(ak>>>0)+ +(al|0)*4294967296.0)*(+(C>>>0)+ +(F|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);an=~~(+(aj>>>0)+ +(am|0)*4294967296.0+(+(ae>>>0)+ +(ai|0)*4294967296.0))>>>0;ao=(D=+(aj>>>0)+ +(am|0)*4294967296.0+(+(ae>>>0)+ +(ai|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ai=c[ad+96>>2]|0;ad=ai;ae=(ai|0)<0?-1:0;ai=~~((+(ad>>>0)+ +(ae|0)*4294967296.0)*(+(A>>>0)+ +(B|0)*4294967296.0))>>>0;am=(D=(+(ad>>>0)+ +(ae|0)*4294967296.0)*(+(A>>>0)+ +(B|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aj=(D=+(an>>>0)+ +(ao|0)*4294967296.0+(+(ai>>>0)+ +(am|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);if((aj|0)<(z|0)|(aj|0)==(z|0)&~~(+(an>>>0)+ +(ao|0)*4294967296.0+(+(ai>>>0)+ +(am|0)*4294967296.0))>>>0>>>0<J>>>0){ap=L;aq=H;ar=t;as=Y;at=Z;break}if((c[ab+20>>2]|0)==(c[K>>2]|0)){ap=L;aq=H;ar=t;as=Y;at=Z;break}am=~~((+(ag>>>0)+ +(ah|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0))>>>0;ai=(D=(+(ag>>>0)+ +(ah|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ah=~~((+(ak>>>0)+ +(al|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;ag=(D=(+(ak>>>0)+ +(al|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);al=~~(+(ah>>>0)+ +(ag|0)*4294967296.0+(+(am>>>0)+ +(ai|0)*4294967296.0))>>>0;ak=(D=+(ah>>>0)+ +(ag|0)*4294967296.0+(+(am>>>0)+ +(ai|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ai=~~((+(ad>>>0)+ +(ae|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;am=(D=(+(ad>>>0)+ +(ae|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ae=~~(+(al>>>0)+ +(ak|0)*4294967296.0+(+(ai>>>0)+ +(am|0)*4294967296.0))>>>0;ad=(D=+(al>>>0)+ +(ak|0)*4294967296.0+(+(ai>>>0)+ +(am|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);if(!((ad|0)>(Y|0)|(ad|0)==(Y|0)&ae>>>0>Z>>>0)){ap=L;aq=H;ar=t;as=Y;at=Z;break}c[e>>2]=ab;am=c[ac>>2]|0;ac=c[am+88>>2]|0;ai=c[am+92>>2]|0;ak=c[am+96>>2]|0;if((am|0)==0){ap=ak;aq=ai;ar=ac;as=ad;at=ae;break}else{L=ak;H=ai;t=ac;Y=ad;Z=ae;_=ab}}S=as;T=at;U=ar;V=aq;W=ap;X=c[f>>2]|0}}while(0);ap=p;aq=(p|0)<0?-1:0;ar=~~((+(M>>>0)+ +(N|0)*4294967296.0)*(+(ap>>>0)+ +(aq|0)*4294967296.0))>>>0;at=(D=(+(M>>>0)+ +(N|0)*4294967296.0)*(+(ap>>>0)+ +(aq|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aq=u;ap=(u|0)<0?-1:0;as=~~((+(Q>>>0)+ +(R|0)*4294967296.0)*(+(aq>>>0)+ +(ap|0)*4294967296.0))>>>0;G=(D=(+(Q>>>0)+ +(R|0)*4294967296.0)*(+(aq>>>0)+ +(ap|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ap=~~(+(as>>>0)+ +(G|0)*4294967296.0+(+(ar>>>0)+ +(at|0)*4294967296.0))>>>0;aq=(D=+(as>>>0)+ +(G|0)*4294967296.0+(+(ar>>>0)+ +(at|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);at=v;ar=(v|0)<0?-1:0;G=~~((+(x>>>0)+ +(I|0)*4294967296.0)*(+(at>>>0)+ +(ar|0)*4294967296.0))>>>0;as=(D=(+(x>>>0)+ +(I|0)*4294967296.0)*(+(at>>>0)+ +(ar|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ar=~~(+(ap>>>0)+ +(aq|0)*4294967296.0+(+(G>>>0)+ +(as|0)*4294967296.0))>>>0;at=(D=+(ap>>>0)+ +(aq|0)*4294967296.0+(+(G>>>0)+ +(as|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);L4119:do{if((X|0)==0){au=at;av=ar;aw=p;ax=u;ay=v;az=0}else{if((c[X+12>>2]|0)==0){au=at;av=ar;aw=p;ax=u;ay=v;az=X;break}as=a+100|0;G=v;aq=u;ap=p;o=at;q=ar;r=X;while(1){s=c[c[r+8>>2]>>2]|0;_=s+12|0;Z=c[_>>2]|0;Y=c[Z+88>>2]|0;t=Y;H=(Y|0)<0?-1:0;Y=~~((+(t>>>0)+ +(H|0)*4294967296.0)*(+(d>>>0)+ +(E|0)*4294967296.0))>>>0;L=(D=(+(t>>>0)+ +(H|0)*4294967296.0)*(+(d>>>0)+ +(E|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);K=c[Z+92>>2]|0;ab=K;ae=(K|0)<0?-1:0;K=~~((+(ab>>>0)+ +(ae|0)*4294967296.0)*(+(C>>>0)+ +(F|0)*4294967296.0))>>>0;ad=(D=(+(ab>>>0)+ +(ae|0)*4294967296.0)*(+(C>>>0)+ +(F|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ac=~~(+(K>>>0)+ +(ad|0)*4294967296.0+(+(Y>>>0)+ +(L|0)*4294967296.0))>>>0;ai=(D=+(K>>>0)+ +(ad|0)*4294967296.0+(+(Y>>>0)+ +(L|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);L=c[Z+96>>2]|0;Z=L;Y=(L|0)<0?-1:0;L=~~((+(Z>>>0)+ +(Y|0)*4294967296.0)*(+(A>>>0)+ +(B|0)*4294967296.0))>>>0;ad=(D=(+(Z>>>0)+ +(Y|0)*4294967296.0)*(+(A>>>0)+ +(B|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);K=(D=+(ac>>>0)+ +(ai|0)*4294967296.0+(+(L>>>0)+ +(ad|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);if((K|0)<(z|0)|(K|0)==(z|0)&~~(+(ac>>>0)+ +(ai|0)*4294967296.0+(+(L>>>0)+ +(ad|0)*4294967296.0))>>>0>>>0<J>>>0){au=o;av=q;aw=ap;ax=aq;ay=G;az=r;break L4119}if((c[s+20>>2]|0)==(c[as>>2]|0)){au=o;av=q;aw=ap;ax=aq;ay=G;az=r;break L4119}ad=~~((+(t>>>0)+ +(H|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0))>>>0;L=(D=(+(t>>>0)+ +(H|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);H=~~((+(ab>>>0)+ +(ae|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;t=(D=(+(ab>>>0)+ +(ae|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ae=~~(+(H>>>0)+ +(t|0)*4294967296.0+(+(ad>>>0)+ +(L|0)*4294967296.0))>>>0;ab=(D=+(H>>>0)+ +(t|0)*4294967296.0+(+(ad>>>0)+ +(L|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);L=~~((+(Z>>>0)+ +(Y|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;ad=(D=(+(Z>>>0)+ +(Y|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);Y=~~(+(ae>>>0)+ +(ab|0)*4294967296.0+(+(L>>>0)+ +(ad|0)*4294967296.0))>>>0;Z=(D=+(ae>>>0)+ +(ab|0)*4294967296.0+(+(L>>>0)+ +(ad|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);if(!((Z|0)>(o|0)|(Z|0)==(o|0)&Y>>>0>q>>>0)){au=o;av=q;aw=ap;ax=aq;ay=G;az=r;break L4119}c[f>>2]=s;ad=c[_>>2]|0;_=c[ad+88>>2]|0;L=c[ad+92>>2]|0;ab=c[ad+96>>2]|0;if((ad|0)==0){au=Z;av=Y;aw=_;ax=L;ay=ab;az=s;break}else{G=ab;aq=L;ap=_;o=Z;q=Y;r=s}}}}while(0);J=~~(+(av>>>0)+ +(au|0)*4294967296.0-(+(T>>>0)+ +(S|0)*4294967296.0))>>>0;z=(D=+(av>>>0)+ +(au|0)*4294967296.0-(+(T>>>0)+ +(S|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);S=0;if((z|0)>(S|0)|(z|0)==(S|0)&J>>>0>0>>>0){S=a+100|0;T=0;au=0;av=~~(+(T>>>0)+ +(au|0)*4294967296.0-(+(A>>>0)+ +(B|0)*4294967296.0))>>>0;X=(D=+(T>>>0)+ +(au|0)*4294967296.0-(+(A>>>0)+ +(B|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);au=j+16|0;T=j|0;ar=j+8|0;at=h+16|0;p=h|0;u=h+8|0;v=z;r=J;q=aw;o=ax;ap=ay;aq=U;G=V;as=W;L4130:while(1){s=v;Y=r;Z=q;_=o;L=ap;L4132:while(1){ab=aa(Z-aq|0,w)|0;ad=aa(_-G|0,y)|0;ae=ad+(aa(L-as|0,b)|0)+ab|0;ab=ae;ad=(ae|0)<0?-1:0;aA=c[e>>2]|0;do{if((aA|0)!=0){if((c[aA+12>>2]|0)==0){break}aB=c[(c[aA>>2]|0)+8>>2]|0;if((c[aB+20>>2]|0)<=(c[S>>2]|0)){break}t=c[aB+12>>2]|0;aC=c[t+88>>2]|0;H=aC-aq|0;aD=c[t+92>>2]|0;ai=aD-G|0;aE=c[t+96>>2]|0;t=aE-as|0;ac=H;K=(H|0)<0?-1:0;ak=~~((+(ac>>>0)+ +(K|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0))>>>0;am=(D=(+(ac>>>0)+ +(K|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);K=ai;ac=(ai|0)<0?-1:0;al=~~((+(K>>>0)+ +(ac|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;ag=(D=(+(K>>>0)+ +(ac|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ac=~~(+(al>>>0)+ +(ag|0)*4294967296.0+(+(ak>>>0)+ +(am|0)*4294967296.0))>>>0;K=(D=+(al>>>0)+ +(ag|0)*4294967296.0+(+(ak>>>0)+ +(am|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);am=t;ak=(t|0)<0?-1:0;ag=~~((+(am>>>0)+ +(ak|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;al=(D=(+(am>>>0)+ +(ak|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ak=~~(+(ac>>>0)+ +(K|0)*4294967296.0+(+(ag>>>0)+ +(al|0)*4294967296.0))>>>0;am=(D=+(ac>>>0)+ +(K|0)*4294967296.0+(+(ag>>>0)+ +(al|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);al=aa(H,w)|0;H=(aa(ai,y)|0)+al|0;al=H+(aa(t,b)|0)|0;t=al;H=(al|0)<0?-1:0;if((ak|0)==0&(am|0)==0){if((al|0)<0){break L4132}else{break}}ai=0;if(!((am|0)<(ai|0)|(am|0)==(ai|0)&ak>>>0<0>>>0)){break}if((al|0)>0){aF=1;aG=H;aH=t}else{ai=(al|0)<0;al=0;ag=0;aF=ai?-1:0;aG=ai?(D=+(al>>>0)+ +(ag|0)*4294967296.0-(+(t>>>0)+ +(H|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0):0;aH=ai?~~(+(al>>>0)+ +(ag|0)*4294967296.0-(+(t>>>0)+ +(H|0)*4294967296.0))>>>0:0}H=0;if((am|0)>(H|0)|(am|0)==(H|0)&ak>>>0>0>>>0){aI=am;aJ=ak;aK=aF}else{H=0;t=0;aI=(D=+(H>>>0)+ +(t|0)*4294967296.0-(+(ak>>>0)+ +(am|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aJ=~~(+(H>>>0)+ +(t|0)*4294967296.0-(+(ak>>>0)+ +(am|0)*4294967296.0))>>>0;aK=-aF|0}do{if((ae|0)>0){c[at>>2]=1;c[p>>2]=ab;c[p+4>>2]=ad;aL=1}else{if((ae|0)<0){c[at>>2]=-1;am=0;ak=0;t=(D=+(am>>>0)+ +(ak|0)*4294967296.0-(+(ab>>>0)+ +(ad|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);c[p>>2]=~~(+(am>>>0)+ +(ak|0)*4294967296.0-(+(ab>>>0)+ +(ad|0)*4294967296.0))>>>0;c[p+4>>2]=t;aL=-1;break}else{c[at>>2]=0;c[p>>2]=0;c[p+4>>2]=0;aL=0;break}}}while(0);t=0;do{if((s|0)>(t|0)|(s|0)==(t|0)&Y>>>0>0>>>0){c[u>>2]=Y;c[u+4>>2]=s}else{ak=0;if((s|0)<(ak|0)|(s|0)==(ak|0)&Y>>>0<0>>>0){c[at>>2]=-aL;ak=0;am=0;H=(D=+(ak>>>0)+ +(am|0)*4294967296.0-(+(Y>>>0)+ +(s|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);c[u>>2]=~~(+(ak>>>0)+ +(am|0)*4294967296.0-(+(Y>>>0)+ +(s|0)*4294967296.0))>>>0;c[u+4>>2]=H;break}else{c[u>>2]=0;c[u+4>>2]=0;break}}}while(0);if((aC4(aH,aG,aJ,aI,aK,h)|0)>-1){break L4132}}}while(0);t=c[f>>2]|0;if((t|0)==0){aM=3282;break L4130}if((c[t+12>>2]|0)==0){aM=3283;break L4130}H=c[c[t+8>>2]>>2]|0;if((c[H+20>>2]|0)<=(c[S>>2]|0)){aM=3284;break L4130}t=H+12|0;am=c[t>>2]|0;ak=c[am+88>>2]|0;ag=ak-Z|0;al=c[am+92>>2]|0;ai=al-_|0;K=c[am+96>>2]|0;am=K-L|0;ac=ag;ah=(ag|0)<0?-1:0;ao=~~((+(ac>>>0)+ +(ah|0)*4294967296.0)*(+(d>>>0)+ +(E|0)*4294967296.0))>>>0;an=(D=(+(ac>>>0)+ +(ah|0)*4294967296.0)*(+(d>>>0)+ +(E|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aj=ai;aN=(ai|0)<0?-1:0;aO=~~((+(aj>>>0)+ +(aN|0)*4294967296.0)*(+(C>>>0)+ +(F|0)*4294967296.0))>>>0;aP=(D=(+(aj>>>0)+ +(aN|0)*4294967296.0)*(+(C>>>0)+ +(F|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aQ=(D=+(aO>>>0)+ +(aP|0)*4294967296.0+(+(ao>>>0)+ +(an|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aR=am;aS=(am|0)<0?-1:0;if(!((~~(+(aO>>>0)+ +(aP|0)*4294967296.0+(+(ao>>>0)+ +(an|0)*4294967296.0))>>>0|0)==(~~((+(aR>>>0)+ +(aS|0)*4294967296.0)*(+(av>>>0)+ +(X|0)*4294967296.0))>>>0|0)&(aQ|0)==((D=(+(aR>>>0)+ +(aS|0)*4294967296.0)*(+(av>>>0)+ +(X|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0)|0))){aM=3285;break L4130}aQ=~~((+(ac>>>0)+ +(ah|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0))>>>0;an=(D=(+(ac>>>0)+ +(ah|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ah=~~((+(aj>>>0)+ +(aN|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;ac=(D=(+(aj>>>0)+ +(aN|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aN=~~(+(ah>>>0)+ +(ac|0)*4294967296.0+(+(aQ>>>0)+ +(an|0)*4294967296.0))>>>0;aj=(D=+(ah>>>0)+ +(ac|0)*4294967296.0+(+(aQ>>>0)+ +(an|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);an=~~((+(aR>>>0)+ +(aS|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;aQ=(D=(+(aR>>>0)+ +(aS|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aS=~~(+(aN>>>0)+ +(aj|0)*4294967296.0+(+(an>>>0)+ +(aQ|0)*4294967296.0))>>>0;aR=(D=+(aN>>>0)+ +(aj|0)*4294967296.0+(+(an>>>0)+ +(aQ|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aQ=aa(ag,w)|0;ag=(aa(ai,y)|0)+aQ|0;aQ=ag+(aa(am,b)|0)|0;am=aQ;ag=(aQ|0)<0?-1:0;ai=ak-aq|0;ak=al-G|0;al=K-as|0;K=ai;an=(ai|0)<0?-1:0;ai=~~((+(K>>>0)+ +(an|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0))>>>0;aj=(D=(+(K>>>0)+ +(an|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);an=ak;K=(ak|0)<0?-1:0;ak=~~((+(an>>>0)+ +(K|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;aN=(D=(+(an>>>0)+ +(K|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);K=~~(+(ak>>>0)+ +(aN|0)*4294967296.0+(+(ai>>>0)+ +(aj|0)*4294967296.0))>>>0;an=(D=+(ak>>>0)+ +(aN|0)*4294967296.0+(+(ai>>>0)+ +(aj|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aj=al;ai=(al|0)<0?-1:0;al=~~((+(aj>>>0)+ +(ai|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;aN=(D=(+(aj>>>0)+ +(ai|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ai=~~(+(K>>>0)+ +(an|0)*4294967296.0+(+(al>>>0)+ +(aN|0)*4294967296.0))>>>0;aj=(D=+(K>>>0)+ +(an|0)*4294967296.0+(+(al>>>0)+ +(aN|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aN=0;if(!((aj|0)>(aN|0)|(aj|0)==(aN|0)&ai>>>0>0>>>0)){aM=3286;break L4130}if((aS|0)==0&(aR|0)==0){if((aQ|0)>=0){aM=3287;break L4130}}else{aN=0;if(!((aR|0)<(aN|0)|(aR|0)==(aN|0)&aS>>>0<0>>>0)){aM=3297;break L4130}if((aQ|0)>0){aT=ag;aU=am;aV=1}else{aN=(aQ|0)<0;aQ=0;al=0;aT=aN?(D=+(aQ>>>0)+ +(al|0)*4294967296.0-(+(am>>>0)+ +(ag|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0):0;aU=aN?~~(+(aQ>>>0)+ +(al|0)*4294967296.0-(+(am>>>0)+ +(ag|0)*4294967296.0))>>>0:0;aV=aN?-1:0}aN=0;if((aR|0)>(aN|0)|(aR|0)==(aN|0)&aS>>>0>0>>>0){aW=aR;aX=aS;aY=aV}else{aN=0;ag=0;aW=(D=+(aN>>>0)+ +(ag|0)*4294967296.0-(+(aS>>>0)+ +(aR|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aX=~~(+(aN>>>0)+ +(ag|0)*4294967296.0-(+(aS>>>0)+ +(aR|0)*4294967296.0))>>>0;aY=-aV|0}do{if((ae|0)>0){c[au>>2]=1;c[T>>2]=ab;c[T+4>>2]=ad;aZ=1}else{if((ae|0)<0){c[au>>2]=-1;aR=0;aS=0;ag=(D=+(aR>>>0)+ +(aS|0)*4294967296.0-(+(ab>>>0)+ +(ad|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);c[T>>2]=~~(+(aR>>>0)+ +(aS|0)*4294967296.0-(+(ab>>>0)+ +(ad|0)*4294967296.0))>>>0;c[T+4>>2]=ag;aZ=-1;break}else{c[au>>2]=0;c[T>>2]=0;c[T+4>>2]=0;aZ=0;break}}}while(0);ad=0;do{if((s|0)>(ad|0)|(s|0)==(ad|0)&Y>>>0>0>>>0){c[ar>>2]=Y;c[ar+4>>2]=s}else{ab=0;if((s|0)<(ab|0)|(s|0)==(ab|0)&Y>>>0<0>>>0){c[au>>2]=-aZ;ab=0;ae=0;ag=(D=+(ab>>>0)+ +(ae|0)*4294967296.0-(+(Y>>>0)+ +(s|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);c[ar>>2]=~~(+(ab>>>0)+ +(ae|0)*4294967296.0-(+(Y>>>0)+ +(s|0)*4294967296.0))>>>0;c[ar+4>>2]=ag;break}else{c[ar>>2]=0;c[ar+4>>2]=0;break}}}while(0);if((aC4(aU,aT,aX,aW,aY,j)|0)<=0){aM=3288;break L4130}}c[f>>2]=H;ad=c[t>>2]|0;s=aj;Y=ai;Z=c[ad+88>>2]|0;_=c[ad+92>>2]|0;L=c[ad+96>>2]|0}Y=Z-aC|0;s=_-aD|0;ad=L-aE|0;ag=Y;ae=(Y|0)<0?-1:0;Y=~~((+(ag>>>0)+ +(ae|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0))>>>0;ab=(D=(+(ag>>>0)+ +(ae|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ae=s;ag=(s|0)<0?-1:0;s=~~((+(ae>>>0)+ +(ag|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;aS=(D=(+(ae>>>0)+ +(ag|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ag=~~(+(s>>>0)+ +(aS|0)*4294967296.0+(+(Y>>>0)+ +(ab|0)*4294967296.0))>>>0;ae=(D=+(s>>>0)+ +(aS|0)*4294967296.0+(+(Y>>>0)+ +(ab|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ab=ad;Y=(ad|0)<0?-1:0;ad=~~((+(ab>>>0)+ +(Y|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;aS=(D=(+(ab>>>0)+ +(Y|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);Y=(D=+(ag>>>0)+ +(ae|0)*4294967296.0+(+(ad>>>0)+ +(aS|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);c[e>>2]=(aA|0)==(m|0)?0:aB;v=Y;r=~~(+(ag>>>0)+ +(ae|0)*4294967296.0+(+(ad>>>0)+ +(aS|0)*4294967296.0))>>>0;q=Z;o=_;ap=L;aq=aC;G=aD;as=aE}if((aM|0)==3282){i=g;return}else if((aM|0)==3283){i=g;return}else if((aM|0)==3284){i=g;return}else if((aM|0)==3285){i=g;return}else if((aM|0)==3286){i=g;return}else if((aM|0)==3287){i=g;return}else if((aM|0)==3288){i=g;return}else if((aM|0)==3297){i=g;return}}aE=0;if(!((z|0)<(aE|0)|(z|0)==(aE|0)&J>>>0<0>>>0)){i=g;return}aE=a+100|0;a=0;as=0;aD=~~(+(a>>>0)+ +(as|0)*4294967296.0-(+(A>>>0)+ +(B|0)*4294967296.0))>>>0;G=(D=+(a>>>0)+ +(as|0)*4294967296.0-(+(A>>>0)+ +(B|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);B=l+16|0;A=l|0;as=l+8|0;a=k+16|0;aC=k|0;aq=k+8|0;ap=z;z=J;J=aw;aw=ax;ax=ay;ay=U;U=V;V=W;W=az;while(1){az=aa(J-ay|0,w)|0;o=aa(aw-U|0,y)|0;q=o+(aa(ax-V|0,b)|0)+az|0;az=q;o=(q|0)<0?-1:0;L4209:do{if((W|0)==0){a_=ax;a$=aw;a0=J;a1=ap;a2=z;a3=q;a4=o;a5=az}else{r=ax;v=aw;aB=J;m=ap;aA=z;j=q;aY=o;aW=az;aX=W;while(1){if((c[aX+12>>2]|0)==0){a_=r;a$=v;a0=aB;a1=m;a2=aA;a3=j;a4=aY;a5=aW;break L4209}aT=c[(c[aX+4>>2]|0)+8>>2]|0;if((c[aT+20>>2]|0)<=(c[aE>>2]|0)){a_=r;a$=v;a0=aB;a1=m;a2=aA;a3=j;a4=aY;a5=aW;break L4209}aU=c[aT+12>>2]|0;ar=c[aU+88>>2]|0;aZ=ar-aB|0;au=c[aU+92>>2]|0;T=au-v|0;aV=c[aU+96>>2]|0;aU=aV-r|0;X=aZ;av=(aZ|0)<0?-1:0;S=~~((+(X>>>0)+ +(av|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0))>>>0;h=(D=(+(X>>>0)+ +(av|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);av=T;X=(T|0)<0?-1:0;aK=~~((+(av>>>0)+ +(X|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;aI=(D=(+(av>>>0)+ +(X|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);X=~~(+(aK>>>0)+ +(aI|0)*4294967296.0+(+(S>>>0)+ +(h|0)*4294967296.0))>>>0;av=(D=+(aK>>>0)+ +(aI|0)*4294967296.0+(+(S>>>0)+ +(h|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);h=aU;S=(aU|0)<0?-1:0;aI=~~((+(h>>>0)+ +(S|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;aK=(D=(+(h>>>0)+ +(S|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);S=~~(+(X>>>0)+ +(av|0)*4294967296.0+(+(aI>>>0)+ +(aK|0)*4294967296.0))>>>0;h=(D=+(X>>>0)+ +(av|0)*4294967296.0+(+(aI>>>0)+ +(aK|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aK=aa(aZ,w)|0;aZ=(aa(T,y)|0)+aK|0;aK=aZ+(aa(aU,b)|0)|0;aU=aK;aZ=(aK|0)<0?-1:0;if((S|0)==0&(h|0)==0){if((aK|0)<=0){a_=r;a$=v;a0=aB;a1=m;a2=aA;a3=j;a4=aY;a5=aW;break L4209}}else{T=0;if(!((h|0)<(T|0)|(h|0)==(T|0)&S>>>0<0>>>0)){a_=r;a$=v;a0=aB;a1=m;a2=aA;a3=j;a4=aY;a5=aW;break L4209}if((aK|0)>0){a6=aZ;a7=aU;a8=1}else{T=(aK|0)<0;aK=0;aI=0;a6=T?(D=+(aK>>>0)+ +(aI|0)*4294967296.0-(+(aU>>>0)+ +(aZ|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0):0;a7=T?~~(+(aK>>>0)+ +(aI|0)*4294967296.0-(+(aU>>>0)+ +(aZ|0)*4294967296.0))>>>0:0;a8=T?-1:0}T=0;if((h|0)>(T|0)|(h|0)==(T|0)&S>>>0>0>>>0){a9=h;ba=S;bb=a8}else{T=0;aZ=0;a9=(D=+(T>>>0)+ +(aZ|0)*4294967296.0-(+(S>>>0)+ +(h|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ba=~~(+(T>>>0)+ +(aZ|0)*4294967296.0-(+(S>>>0)+ +(h|0)*4294967296.0))>>>0;bb=-a8|0}do{if((j|0)>0){c[a>>2]=1;c[aC>>2]=aW;c[aC+4>>2]=aY;bc=1}else{if((j|0)<0){c[a>>2]=-1;h=0;S=0;aZ=(D=+(h>>>0)+ +(S|0)*4294967296.0-(+(aW>>>0)+ +(aY|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);c[aC>>2]=~~(+(h>>>0)+ +(S|0)*4294967296.0-(+(aW>>>0)+ +(aY|0)*4294967296.0))>>>0;c[aC+4>>2]=aZ;bc=-1;break}else{c[a>>2]=0;c[aC>>2]=0;c[aC+4>>2]=0;bc=0;break}}}while(0);aZ=0;do{if((m|0)>(aZ|0)|(m|0)==(aZ|0)&aA>>>0>0>>>0){c[aq>>2]=aA;c[aq+4>>2]=m}else{S=0;if((m|0)<(S|0)|(m|0)==(S|0)&aA>>>0<0>>>0){c[a>>2]=-bc;S=0;h=0;T=(D=+(S>>>0)+ +(h|0)*4294967296.0-(+(aA>>>0)+ +(m|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);c[aq>>2]=~~(+(S>>>0)+ +(h|0)*4294967296.0-(+(aA>>>0)+ +(m|0)*4294967296.0))>>>0;c[aq+4>>2]=T;break}else{c[aq>>2]=0;c[aq+4>>2]=0;break}}}while(0);if((aC4(a7,a6,ba,a9,bb,k)|0)>=1){a_=r;a$=v;a0=aB;a1=m;a2=aA;a3=j;a4=aY;a5=aW;break L4209}}aZ=ar-ay|0;T=au-U|0;h=aV-V|0;S=aZ;aU=(aZ|0)<0?-1:0;aI=~~((+(S>>>0)+ +(aU|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0))>>>0;aK=(D=(+(S>>>0)+ +(aU|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aU=T;S=(T|0)<0?-1:0;av=~~((+(aU>>>0)+ +(S|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;X=(D=(+(aU>>>0)+ +(S|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);S=~~(+(av>>>0)+ +(X|0)*4294967296.0+(+(aI>>>0)+ +(aK|0)*4294967296.0))>>>0;aU=(D=+(av>>>0)+ +(X|0)*4294967296.0+(+(aI>>>0)+ +(aK|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aK=h;aI=(h|0)<0?-1:0;X=~~((+(aK>>>0)+ +(aI|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;av=(D=(+(aK>>>0)+ +(aI|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aI=~~(+(S>>>0)+ +(aU|0)*4294967296.0+(+(X>>>0)+ +(av|0)*4294967296.0))>>>0;aK=(D=+(S>>>0)+ +(aU|0)*4294967296.0+(+(X>>>0)+ +(av|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);av=(aX|0)==(n|0)?0:aT;c[f>>2]=av;X=aa(aZ,w)|0;aZ=aa(T,y)|0;T=aZ+(aa(h,b)|0)+X|0;X=T;h=(T|0)<0?-1:0;if((av|0)==0){a_=aV;a$=au;a0=ar;a1=aK;a2=aI;a3=T;a4=h;a5=X;break}else{r=aV;v=au;aB=ar;m=aK;aA=aI;j=T;aY=h;aW=X;aX=av}}}}while(0);az=c[e>>2]|0;if((az|0)==0){aM=3289;break}if((c[az+12>>2]|0)==0){aM=3290;break}o=c[(c[az+8>>2]|0)+4>>2]|0;if((c[o+20>>2]|0)<=(c[aE>>2]|0)){aM=3291;break}az=o+12|0;q=c[az>>2]|0;L=c[q+88>>2]|0;_=L-ay|0;Z=c[q+92>>2]|0;aX=Z-U|0;aW=c[q+96>>2]|0;q=aW-V|0;aY=_;j=(_|0)<0?-1:0;aA=~~((+(aY>>>0)+ +(j|0)*4294967296.0)*(+(d>>>0)+ +(E|0)*4294967296.0))>>>0;m=(D=(+(aY>>>0)+ +(j|0)*4294967296.0)*(+(d>>>0)+ +(E|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aB=aX;v=(aX|0)<0?-1:0;r=~~((+(aB>>>0)+ +(v|0)*4294967296.0)*(+(C>>>0)+ +(F|0)*4294967296.0))>>>0;ai=(D=(+(aB>>>0)+ +(v|0)*4294967296.0)*(+(C>>>0)+ +(F|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aj=(D=+(r>>>0)+ +(ai|0)*4294967296.0+(+(aA>>>0)+ +(m|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);t=q;H=(q|0)<0?-1:0;if(!((~~(+(r>>>0)+ +(ai|0)*4294967296.0+(+(aA>>>0)+ +(m|0)*4294967296.0))>>>0|0)==(~~((+(t>>>0)+ +(H|0)*4294967296.0)*(+(aD>>>0)+ +(G|0)*4294967296.0))>>>0|0)&(aj|0)==((D=(+(t>>>0)+ +(H|0)*4294967296.0)*(+(aD>>>0)+ +(G|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0)|0))){aM=3292;break}aj=~~((+(aY>>>0)+ +(j|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0))>>>0;m=(D=(+(aY>>>0)+ +(j|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);j=~~((+(aB>>>0)+ +(v|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;aY=(D=(+(aB>>>0)+ +(v|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);v=~~(+(j>>>0)+ +(aY|0)*4294967296.0+(+(aj>>>0)+ +(m|0)*4294967296.0))>>>0;aB=(D=+(j>>>0)+ +(aY|0)*4294967296.0+(+(aj>>>0)+ +(m|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);m=~~((+(t>>>0)+ +(H|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;aj=(D=(+(t>>>0)+ +(H|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);H=~~(+(v>>>0)+ +(aB|0)*4294967296.0+(+(m>>>0)+ +(aj|0)*4294967296.0))>>>0;t=(D=+(v>>>0)+ +(aB|0)*4294967296.0+(+(m>>>0)+ +(aj|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aj=aa(_,w)|0;_=(aa(aX,y)|0)+aj|0;aj=_+(aa(q,b)|0)|0;q=aj;_=(aj|0)<0?-1:0;aX=a0-L|0;L=a$-Z|0;Z=a_-aW|0;aW=aX;m=(aX|0)<0?-1:0;aX=~~((+(aW>>>0)+ +(m|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0))>>>0;aB=(D=(+(aW>>>0)+ +(m|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);m=L;aW=(L|0)<0?-1:0;L=~~((+(m>>>0)+ +(aW|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;v=(D=(+(m>>>0)+ +(aW|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aW=~~(+(L>>>0)+ +(v|0)*4294967296.0+(+(aX>>>0)+ +(aB|0)*4294967296.0))>>>0;m=(D=+(L>>>0)+ +(v|0)*4294967296.0+(+(aX>>>0)+ +(aB|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aB=Z;aX=(Z|0)<0?-1:0;Z=~~((+(aB>>>0)+ +(aX|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;v=(D=(+(aB>>>0)+ +(aX|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aX=~~(+(aW>>>0)+ +(m|0)*4294967296.0+(+(Z>>>0)+ +(v|0)*4294967296.0))>>>0;aB=(D=+(aW>>>0)+ +(m|0)*4294967296.0+(+(Z>>>0)+ +(v|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);v=0;if(!((aB|0)<(v|0)|(aB|0)==(v|0)&aX>>>0<0>>>0)){aM=3293;break}if((H|0)==0&(t|0)==0){if((aj|0)<=0){aM=3294;break}}else{v=0;if(!((t|0)<(v|0)|(t|0)==(v|0)&H>>>0<0>>>0)){aM=3295;break}if((aj|0)>0){bd=_;be=q;bf=1}else{v=(aj|0)<0;aj=0;Z=0;bd=v?(D=+(aj>>>0)+ +(Z|0)*4294967296.0-(+(q>>>0)+ +(_|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0):0;be=v?~~(+(aj>>>0)+ +(Z|0)*4294967296.0-(+(q>>>0)+ +(_|0)*4294967296.0))>>>0:0;bf=v?-1:0}v=0;if((t|0)>(v|0)|(t|0)==(v|0)&H>>>0>0>>>0){bg=t;bh=H;bi=bf}else{v=0;_=0;bg=(D=+(v>>>0)+ +(_|0)*4294967296.0-(+(H>>>0)+ +(t|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);bh=~~(+(v>>>0)+ +(_|0)*4294967296.0-(+(H>>>0)+ +(t|0)*4294967296.0))>>>0;bi=-bf|0}do{if((a3|0)>0){c[B>>2]=1;c[A>>2]=a5;c[A+4>>2]=a4;bj=1}else{if((a3|0)<0){c[B>>2]=-1;t=0;H=0;_=(D=+(t>>>0)+ +(H|0)*4294967296.0-(+(a5>>>0)+ +(a4|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);c[A>>2]=~~(+(t>>>0)+ +(H|0)*4294967296.0-(+(a5>>>0)+ +(a4|0)*4294967296.0))>>>0;c[A+4>>2]=_;bj=-1;break}else{c[B>>2]=0;c[A>>2]=0;c[A+4>>2]=0;bj=0;break}}}while(0);_=0;do{if((a1|0)>(_|0)|(a1|0)==(_|0)&a2>>>0>0>>>0){c[as>>2]=a2;c[as+4>>2]=a1}else{H=0;if((a1|0)<(H|0)|(a1|0)==(H|0)&a2>>>0<0>>>0){c[B>>2]=-bj;H=0;t=0;v=(D=+(H>>>0)+ +(t|0)*4294967296.0-(+(a2>>>0)+ +(a1|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);c[as>>2]=~~(+(H>>>0)+ +(t|0)*4294967296.0-(+(a2>>>0)+ +(a1|0)*4294967296.0))>>>0;c[as+4>>2]=v;break}else{c[as>>2]=0;c[as+4>>2]=0;break}}}while(0);if((aC4(be,bd,bh,bg,bi,l)|0)>=0){aM=3281;break}}c[e>>2]=o;_=c[az>>2]|0;ap=aB;z=aX;J=a0;aw=a$;ax=a_;ay=c[_+88>>2]|0;U=c[_+92>>2]|0;V=c[_+96>>2]|0;W=c[f>>2]|0}if((aM|0)==3281){i=g;return}else if((aM|0)==3289){i=g;return}else if((aM|0)==3290){i=g;return}else if((aM|0)==3291){i=g;return}else if((aM|0)==3292){i=g;return}else if((aM|0)==3293){i=g;return}else if((aM|0)==3294){i=g;return}else if((aM|0)==3295){i=g;return}}function aC9(a){a=a|0;return}function aDa(a){a=a|0;return}function aDb(a){a=a|0;return}function aDc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;if((c[d+8>>2]|0)!=(b|0)){return}b=d+16|0;g=c[b>>2]|0;if((g|0)==0){c[b>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1;return}if((g|0)!=(e|0)){e=d+36|0;c[e>>2]=(c[e>>2]|0)+1;c[d+24>>2]=2;a[d+54|0]=1;return}e=d+24|0;if((c[e>>2]|0)!=2){return}c[e>>2]=f;return}function aDd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;b=i;i=i+16|0;d=b|0;e=a+8|0;f=c[e>>2]|0;g=c[e+4>>2]|0;e=-1;if((g|0)>(e|0)|(g|0)==(e|0)&f>>>0>-1>>>0){e=a|0;h=(+(f>>>0)+ +(g>>>0)*4294967296.0)*18446744073709552000.0+(+((c[e>>2]|0)>>>0)+ +((c[e+4>>2]|0)>>>0)*4294967296.0);i=b;return+h}else{e=a|0;a=c[e>>2]|0;j=c[e+4>>2]|0;e=0;k=0;l=(D=+(e>>>0)+ +(k|0)*4294967296.0-(+(a>>>0)+ +(j|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);m=~f;f=~g;g=(a|0)==0&(j|0)==0&1;n=0;o=(D=+(g>>>0)+ +(n|0)*4294967296.0+(+(m>>>0)+ +(f|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);p=d|0;c[p>>2]=~~(+(e>>>0)+ +(k|0)*4294967296.0-(+(a>>>0)+ +(j|0)*4294967296.0))>>>0;c[p+4>>2]=l;l=d+8|0;c[l>>2]=~~(+(g>>>0)+ +(n|0)*4294967296.0+(+(m>>>0)+ +(f|0)*4294967296.0))>>>0;c[l+4>>2]=o;h=-0.0- +aDd(d);i=b;return+h}return 0.0}function aDe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;e=i;i=i+16|0;f=(d+b|0)/2|0;g=a+12|0;h=c[g>>2]|0;j=c[h+(f<<4)>>2]|0;k=c[h+(f<<4)+4>>2]|0;l=c[h+(f<<4)+8>>2]|0;f=e|0;m=d;n=b;o=h;while(1){h=n;L4307:while(1){p=c[o+(h<<4)+4>>2]|0;do{if((p|0)>=(k|0)){if((p|0)!=(k|0)){q=3327;break L4307}r=c[o+(h<<4)>>2]|0;if((r|0)<(j|0)){break}if((r|0)!=(j|0)){q=3327;break L4307}r=h+1|0;if((c[o+(h<<4)+8>>2]|0)<(l|0)){h=r;continue L4307}else{s=r;break L4307}}}while(0);h=h+1|0}if((q|0)==3327){q=0;s=h+1|0}p=m;L4318:while(1){r=c[o+(p<<4)+4>>2]|0;do{if((k|0)>=(r|0)){if((k|0)!=(r|0)){q=3335;break L4318}t=c[o+(p<<4)>>2]|0;if((j|0)<(t|0)){break}if((j|0)!=(t|0)){q=3335;break L4318}t=p-1|0;if((l|0)<(c[o+(p<<4)+8>>2]|0)){p=t;continue L4318}else{u=t;break L4318}}}while(0);p=p-1|0}if((q|0)==3335){q=0;u=p-1|0}if((h|0)>(p|0)){v=p;w=h}else{r=o+(h<<4)|0;c[f>>2]=c[r>>2];c[f+4>>2]=c[r+4>>2];c[f+8>>2]=c[r+8>>2];c[f+12>>2]=c[r+12>>2];t=o+(p<<4)|0;c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];t=(c[g>>2]|0)+(p<<4)|0;c[t>>2]=c[f>>2];c[t+4>>2]=c[f+4>>2];c[t+8>>2]=c[f+8>>2];c[t+12>>2]=c[f+12>>2];v=u;w=s}if((w|0)>(v|0)){break}m=v;n=w;o=c[g>>2]|0}if((v|0)>(b|0)){aDe(a,b,v)}if((w|0)>=(d|0)){i=e;return}aDe(a,w,d);i=e;return}function aDf(a){a=a|0;var b=0;b=c[a>>2]|0;if((b|0)==0){return}aDB(b);return}function aDg(a){a=a|0;var b=0;b=a;do{c[b+4>>2]=0;g[b+8>>2]=0.0;a=c[b+24>>2]|0;if((a|0)!=0){aDg(a)}b=c[b+28>>2]|0;}while((b|0)!=0);return}function aDh(a){a=a|0;var b=0;b=c[a+24>>2]|0;if((b|0)!=0){aDh(b);aDB(b)}b=c[a+28>>2]|0;if((b|0)==0){return}a=c[b+24>>2]|0;if((a|0)!=0){aDh(a);aDB(a)}a=c[b+28>>2]|0;if((a|0)!=0){aDh(a);aDB(a)}aDB(b);return}function aDi(){var a=0,b=0,d=0,e=0,f=0,g=0;a=i;i=i+16|0;b=a|0;d=a+8|0;b3(c[10742]|0,0)|0;aDg(42912);c[10729]=(c[10729]|0)+1;e=c[10732]|0;c[10732]=e+1;if((e|0)!=0){c[10736]=0;f=b;g=b3(b|0,0)|0;i=a;return}b3(d|0,0)|0;e=c[10742]|0;c[10731]=(c[d+4>>2]|0)-(c[e+4>>2]|0)+(((c[d>>2]|0)-(c[e>>2]|0)|0)*1e6|0);c[10736]=0;f=b;g=b3(b|0,0)|0;i=a;return}function aDj(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aDk(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aDl(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aDm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=i;i=i+112|0;f=e|0;g=e+56|0;if((a|0)==(b|0)){h=1;i=e;return h|0}if((b|0)==0){h=0;i=e;return h|0}j=b;k=c[b>>2]|0;b=j+(c[k-8>>2]|0)|0;l=c[k-4>>2]|0;k=l;c[f>>2]=34680;c[f+4>>2]=j;c[f+8>>2]=34696;c[f+12>>2]=-1;j=f+16|0;m=f+20|0;n=f+24|0;o=f+28|0;p=f+32|0;q=f+40|0;aDD(j|0,0,39);do{if((l|0)==34680){c[f+48>>2]=1;c_[c[(c[8670]|0)+20>>2]&127](k,f,b,b,1,0);r=(c[n>>2]|0)==1?b:0}else{co[c[(c[l>>2]|0)+24>>2]&255](k,f,b,1,0);s=c[f+36>>2]|0;if((s|0)==0){if((c[q>>2]|0)!=1){r=0;break}if((c[o>>2]|0)!=1){r=0;break}r=(c[p>>2]|0)==1?c[m>>2]|0:0;break}else if((s|0)!=1){r=0;break}if((c[n>>2]|0)!=1){if((c[q>>2]|0)!=0){r=0;break}if((c[o>>2]|0)!=1){r=0;break}if((c[p>>2]|0)!=1){r=0;break}}r=c[j>>2]|0}}while(0);j=r;if((r|0)==0){h=0;i=e;return h|0}aDD(g|0,0,56);c[g>>2]=j;c[g+8>>2]=a;c[g+12>>2]=-1;c[g+48>>2]=1;dI[c[(c[r>>2]|0)+28>>2]&1023](j,g,c[d>>2]|0,1);if((c[g+24>>2]|0)!=1){h=0;i=e;return h|0}c[d>>2]=c[g+16>>2];h=1;i=e;return h|0}function aDn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;if((b|0)!=(c[d+8>>2]|0)){g=c[b+8>>2]|0;dI[c[(c[g>>2]|0)+28>>2]&1023](g,d,e,f);return}g=d+16|0;b=c[g>>2]|0;if((b|0)==0){c[g>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1;return}if((b|0)!=(e|0)){e=d+36|0;c[e>>2]=(c[e>>2]|0)+1;c[d+24>>2]=2;a[d+54|0]=1;return}e=d+24|0;if((c[e>>2]|0)!=2){return}c[e>>2]=f;return}function aDo(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;b=i;i=i+8|0;d=b|0;e=c[9152]|0;if((c[e>>2]|0)==(a|0)){f=e}else{g=e+24|0;h=g;while(1){j=c[h>>2]|0;if((j|0)==0){k=3437;break}if((c[j>>2]|0)==(a|0)){l=j;break}else{h=j+28|0}}do{if((k|0)==3437){while(1){k=0;m=aDx(32)|0;if((m|0)!=0){k=3447;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){break}dC[h&63]();k=3437}if((k|0)==3447){h=m;c[m>>2]=a;aDD(m+4|0,0,16);c[m+20>>2]=e;c[m+24>>2]=0;j=m+28|0;c[j>>2]=0;aDg(h);c[j>>2]=c[g>>2];c[g>>2]=h;l=h;break}h=cd(4)|0;c[h>>2]=19096;bF(h|0,34368,676)}}while(0);c[9152]=l;f=l}l=f+4|0;c[l>>2]=(c[l>>2]|0)+1;l=f+16|0;g=c[l>>2]|0;c[l>>2]=g+1;if((g|0)!=0){i=b;return}b3(d|0,0)|0;g=c[10742]|0;c[f+12>>2]=(c[d+4>>2]|0)-(c[g+4>>2]|0)+(((c[d>>2]|0)-(c[g>>2]|0)|0)*1e6|0);i=b;return}function aDp(){var a=0,b=0,d=0;while(1){a=aDx(8)|0;if((a|0)!=0){b=3465;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==3465){c[10742]=a;b=a;b3(b|0,0)|0;bG(496,42968,o|0)|0;c[10728]=16072;aDD(42916,0,28);aDg(42912);bG(650,42912,o|0)|0;return}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676)}function aDq(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((c[d+8>>2]|0)==(b|0)){if((c[d+4>>2]|0)!=(e|0)){return}g=d+28|0;if((c[g>>2]|0)==1){return}c[g>>2]=f;return}if((c[d>>2]|0)!=(b|0)){return}do{if((c[d+16>>2]|0)!=(e|0)){b=d+20|0;if((c[b>>2]|0)==(e|0)){break}c[d+32>>2]=f;c[b>>2]=e;b=d+40|0;c[b>>2]=(c[b>>2]|0)+1;do{if((c[d+36>>2]|0)==1){if((c[d+24>>2]|0)!=2){break}a[d+54|0]=1}}while(0);c[d+44>>2]=4;return}}while(0);if((f|0)!=1){return}c[d+32>>2]=1;return}function aDr(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;if((b|0)==(c[d+8>>2]|0)){g=d+16|0;h=c[g>>2]|0;if((h|0)==0){c[g>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1;return}if((h|0)!=(e|0)){h=d+36|0;c[h>>2]=(c[h>>2]|0)+1;c[d+24>>2]=2;a[d+54|0]=1;return}h=d+24|0;if((c[h>>2]|0)!=2){return}c[h>>2]=f;return}h=c[b+12>>2]|0;g=b+16+(h<<3)|0;i=c[b+20>>2]|0;j=i>>8;if((i&1|0)==0){k=j}else{k=c[(c[e>>2]|0)+j>>2]|0}j=c[b+16>>2]|0;dI[c[(c[j>>2]|0)+28>>2]&1023](j,d,e+k|0,(i&2|0)!=0?f:2);if((h|0)<=1){return}h=d+54|0;i=e;k=b+24|0;while(1){b=c[k+4>>2]|0;j=b>>8;if((b&1|0)==0){l=j}else{l=c[(c[i>>2]|0)+j>>2]|0}j=c[k>>2]|0;dI[c[(c[j>>2]|0)+28>>2]&1023](j,d,e+l|0,(b&2|0)!=0?f:2);if((a[h]&1)!=0){m=3509;break}b=k+8|0;if(b>>>0<g>>>0){k=b}else{m=3507;break}}if((m|0)==3509){return}else if((m|0)==3507){return}}function aDs(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;h=b|0;if((h|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)!=(e|0)){return}i=d+28|0;if((c[i>>2]|0)==1){return}c[i>>2]=f;return}if((h|0)==(c[d>>2]|0)){do{if((c[d+16>>2]|0)!=(e|0)){h=d+20|0;if((c[h>>2]|0)==(e|0)){break}c[d+32>>2]=f;i=d+44|0;if((c[i>>2]|0)==4){return}j=c[b+12>>2]|0;k=b+16+(j<<3)|0;L4542:do{if((j|0)>0){l=d+52|0;m=d+53|0;n=d+54|0;o=b+8|0;p=d+24|0;q=e;r=0;s=b+16|0;t=0;L4544:while(1){a[l]=0;a[m]=0;u=c[s+4>>2]|0;v=u>>8;if((u&1|0)==0){w=v}else{w=c[(c[q>>2]|0)+v>>2]|0}v=c[s>>2]|0;c_[c[(c[v>>2]|0)+20>>2]&127](v,d,e,e+w|0,2-(u>>>1&1)|0,g);if((a[n]&1)!=0){x=t;y=r;break}do{if((a[m]&1)==0){z=t;A=r}else{if((a[l]&1)==0){if((c[o>>2]&1|0)==0){x=1;y=r;break L4544}else{z=1;A=r;break}}if((c[p>>2]|0)==1){B=3536;break L4542}if((c[o>>2]&2|0)==0){B=3536;break L4542}else{z=1;A=1}}}while(0);u=s+8|0;if(u>>>0<k>>>0){r=A;s=u;t=z}else{x=z;y=A;break}}if(y){C=x;B=3535}else{D=x;B=3532}}else{D=0;B=3532}}while(0);do{if((B|0)==3532){c[h>>2]=e;k=d+40|0;c[k>>2]=(c[k>>2]|0)+1;if((c[d+36>>2]|0)!=1){C=D;B=3535;break}if((c[d+24>>2]|0)!=2){C=D;B=3535;break}a[d+54|0]=1;if(D){B=3536}else{B=3537}}}while(0);if((B|0)==3535){if(C){B=3536}else{B=3537}}if((B|0)==3537){c[i>>2]=4;return}else if((B|0)==3536){c[i>>2]=3;return}}}while(0);if((f|0)!=1){return}c[d+32>>2]=1;return}C=c[b+12>>2]|0;D=b+16+(C<<3)|0;x=c[b+20>>2]|0;y=x>>8;if((x&1|0)==0){E=y}else{E=c[(c[e>>2]|0)+y>>2]|0}y=c[b+16>>2]|0;co[c[(c[y>>2]|0)+24>>2]&255](y,d,e+E|0,(x&2|0)!=0?f:2,g);x=b+24|0;if((C|0)<=1){return}C=c[b+8>>2]|0;do{if((C&2|0)==0){b=d+36|0;if((c[b>>2]|0)==1){break}if((C&1|0)==0){E=d+54|0;y=e;A=x;while(1){if((a[E]&1)!=0){B=3574;break}if((c[b>>2]|0)==1){B=3568;break}z=c[A+4>>2]|0;w=z>>8;if((z&1|0)==0){F=w}else{F=c[(c[y>>2]|0)+w>>2]|0}w=c[A>>2]|0;co[c[(c[w>>2]|0)+24>>2]&255](w,d,e+F|0,(z&2|0)!=0?f:2,g);z=A+8|0;if(z>>>0<D>>>0){A=z}else{B=3577;break}}if((B|0)==3568){return}else if((B|0)==3577){return}else if((B|0)==3574){return}}A=d+24|0;y=d+54|0;E=e;i=x;while(1){if((a[y]&1)!=0){B=3563;break}if((c[b>>2]|0)==1){if((c[A>>2]|0)==1){B=3566;break}}z=c[i+4>>2]|0;w=z>>8;if((z&1|0)==0){G=w}else{G=c[(c[E>>2]|0)+w>>2]|0}w=c[i>>2]|0;co[c[(c[w>>2]|0)+24>>2]&255](w,d,e+G|0,(z&2|0)!=0?f:2,g);z=i+8|0;if(z>>>0<D>>>0){i=z}else{B=3567;break}}if((B|0)==3563){return}else if((B|0)==3566){return}else if((B|0)==3567){return}}}while(0);G=d+54|0;F=e;C=x;while(1){if((a[G]&1)!=0){B=3572;break}x=c[C+4>>2]|0;i=x>>8;if((x&1|0)==0){H=i}else{H=c[(c[F>>2]|0)+i>>2]|0}i=c[C>>2]|0;co[c[(c[i>>2]|0)+24>>2]&255](i,d,e+H|0,(x&2|0)!=0?f:2,g);x=C+8|0;if(x>>>0<D>>>0){C=x}else{B=3565;break}}if((B|0)==3565){return}else if((B|0)==3572){return}}function aDt(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=b|0;if((h|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)!=(e|0)){return}i=d+28|0;if((c[i>>2]|0)==1){return}c[i>>2]=f;return}if((h|0)!=(c[d>>2]|0)){h=c[b+8>>2]|0;co[c[(c[h>>2]|0)+24>>2]&255](h,d,e,f,g);return}do{if((c[d+16>>2]|0)!=(e|0)){h=d+20|0;if((c[h>>2]|0)==(e|0)){break}c[d+32>>2]=f;i=d+44|0;if((c[i>>2]|0)==4){return}j=d+52|0;a[j]=0;k=d+53|0;a[k]=0;l=c[b+8>>2]|0;c_[c[(c[l>>2]|0)+20>>2]&127](l,d,e,e,1,g);if((a[k]&1)==0){m=0;n=3592}else{if((a[j]&1)==0){m=1;n=3592}}L4644:do{if((n|0)==3592){c[h>>2]=e;j=d+40|0;c[j>>2]=(c[j>>2]|0)+1;do{if((c[d+36>>2]|0)==1){if((c[d+24>>2]|0)!=2){n=3595;break}a[d+54|0]=1;if(m){break L4644}}else{n=3595}}while(0);if((n|0)==3595){if(m){break}}c[i>>2]=4;return}}while(0);c[i>>2]=3;return}}while(0);if((f|0)!=1){return}c[d+32>>2]=1;return}function aDu(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;if((b|0)!=(c[d+8>>2]|0)){i=d+52|0;j=a[i]&1;k=d+53|0;l=a[k]&1;m=c[b+12>>2]|0;n=b+16+(m<<3)|0;a[i]=0;a[k]=0;o=c[b+20>>2]|0;p=o>>8;if((o&1|0)==0){q=p}else{q=c[(c[f>>2]|0)+p>>2]|0}p=c[b+16>>2]|0;c_[c[(c[p>>2]|0)+20>>2]&127](p,d,e,f+q|0,(o&2|0)!=0?g:2,h);L4666:do{if((m|0)>1){o=d+24|0;q=b+8|0;p=d+54|0;r=f;s=b+24|0;do{if((a[p]&1)!=0){break L4666}do{if((a[i]&1)==0){if((a[k]&1)==0){break}if((c[q>>2]&1|0)==0){break L4666}}else{if((c[o>>2]|0)==1){break L4666}if((c[q>>2]&2|0)==0){break L4666}}}while(0);a[i]=0;a[k]=0;t=c[s+4>>2]|0;u=t>>8;if((t&1|0)==0){v=u}else{v=c[(c[r>>2]|0)+u>>2]|0}u=c[s>>2]|0;c_[c[(c[u>>2]|0)+20>>2]&127](u,d,e,f+v|0,(t&2|0)!=0?g:2,h);s=s+8|0;}while(s>>>0<n>>>0)}}while(0);a[i]=j;a[k]=l;return}a[d+53|0]=1;if((c[d+4>>2]|0)!=(f|0)){return}a[d+52|0]=1;f=d+16|0;l=c[f>>2]|0;if((l|0)==0){c[f>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((c[d+48>>2]|0)==1&(g|0)==1)){return}a[d+54|0]=1;return}if((l|0)!=(e|0)){e=d+36|0;c[e>>2]=(c[e>>2]|0)+1;a[d+54|0]=1;return}e=d+24|0;l=c[e>>2]|0;if((l|0)==2){c[e>>2]=g;w=g}else{w=l}if(!((c[d+48>>2]|0)==1&(w|0)==1)){return}a[d+54|0]=1;return}function aDv(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;if((c[d+8>>2]|0)!=(b|0)){return}a[d+53|0]=1;if((c[d+4>>2]|0)!=(f|0)){return}a[d+52|0]=1;f=d+16|0;b=c[f>>2]|0;if((b|0)==0){c[f>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((c[d+48>>2]|0)==1&(g|0)==1)){return}a[d+54|0]=1;return}if((b|0)!=(e|0)){e=d+36|0;c[e>>2]=(c[e>>2]|0)+1;a[d+54|0]=1;return}e=d+24|0;b=c[e>>2]|0;if((b|0)==2){c[e>>2]=g;i=g}else{i=b}if(!((c[d+48>>2]|0)==1&(i|0)==1)){return}a[d+54|0]=1;return}function aDw(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;if((b|0)!=(c[d+8>>2]|0)){i=c[b+8>>2]|0;c_[c[(c[i>>2]|0)+20>>2]&127](i,d,e,f,g,h);return}a[d+53|0]=1;if((c[d+4>>2]|0)!=(f|0)){return}a[d+52|0]=1;f=d+16|0;h=c[f>>2]|0;if((h|0)==0){c[f>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((c[d+48>>2]|0)==1&(g|0)==1)){return}a[d+54|0]=1;return}if((h|0)!=(e|0)){e=d+36|0;c[e>>2]=(c[e>>2]|0)+1;a[d+54|0]=1;return}e=d+24|0;h=c[e>>2]|0;if((h|0)==2){c[e>>2]=g;j=g}else{j=h}if(!((c[d+48>>2]|0)==1&(j|0)==1)){return}a[d+54|0]=1;return}function aDx(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0;do{if(a>>>0<245){if(a>>>0<11){b=16}else{b=a+11&-8}d=b>>>3;e=c[9814]|0;f=e>>>(d>>>0);if((f&3|0)!=0){g=(f&1^1)+d|0;h=g<<1;i=39296+(h<<2)|0;j=39296+(h+2<<2)|0;h=c[j>>2]|0;k=h+8|0;l=c[k>>2]|0;do{if((i|0)==(l|0)){c[9814]=e&~(1<<g)}else{if(l>>>0<(c[9818]|0)>>>0){bH();return 0}m=l+12|0;if((c[m>>2]|0)==(h|0)){c[m>>2]=i;c[j>>2]=l;break}else{bH();return 0}}}while(0);l=g<<3;c[h+4>>2]=l|3;j=h+(l|4)|0;c[j>>2]=c[j>>2]|1;n=k;return n|0}if(b>>>0<=(c[9816]|0)>>>0){o=b;break}if((f|0)!=0){j=2<<d;l=f<<d&(j|-j);j=(l&-l)-1|0;l=j>>>12&16;i=j>>>(l>>>0);j=i>>>5&8;m=i>>>(j>>>0);i=m>>>2&4;p=m>>>(i>>>0);m=p>>>1&2;q=p>>>(m>>>0);p=q>>>1&1;r=(j|l|i|m|p)+(q>>>(p>>>0))|0;p=r<<1;q=39296+(p<<2)|0;m=39296+(p+2<<2)|0;p=c[m>>2]|0;i=p+8|0;l=c[i>>2]|0;do{if((q|0)==(l|0)){c[9814]=e&~(1<<r)}else{if(l>>>0<(c[9818]|0)>>>0){bH();return 0}j=l+12|0;if((c[j>>2]|0)==(p|0)){c[j>>2]=q;c[m>>2]=l;break}else{bH();return 0}}}while(0);l=r<<3;m=l-b|0;c[p+4>>2]=b|3;q=p;e=q+b|0;c[q+(b|4)>>2]=m|1;c[q+l>>2]=m;l=c[9816]|0;if((l|0)!=0){q=c[9819]|0;d=l>>>3;l=d<<1;f=39296+(l<<2)|0;k=c[9814]|0;h=1<<d;do{if((k&h|0)==0){c[9814]=k|h;s=f;t=39296+(l+2<<2)|0}else{d=39296+(l+2<<2)|0;g=c[d>>2]|0;if(g>>>0>=(c[9818]|0)>>>0){s=g;t=d;break}bH();return 0}}while(0);c[t>>2]=q;c[s+12>>2]=q;c[q+8>>2]=s;c[q+12>>2]=f}c[9816]=m;c[9819]=e;n=i;return n|0}l=c[9815]|0;if((l|0)==0){o=b;break}h=(l&-l)-1|0;l=h>>>12&16;k=h>>>(l>>>0);h=k>>>5&8;p=k>>>(h>>>0);k=p>>>2&4;r=p>>>(k>>>0);p=r>>>1&2;d=r>>>(p>>>0);r=d>>>1&1;g=c[39560+((h|l|k|p|r)+(d>>>(r>>>0))<<2)>>2]|0;r=g;d=g;p=(c[g+4>>2]&-8)-b|0;while(1){g=c[r+16>>2]|0;if((g|0)==0){k=c[r+20>>2]|0;if((k|0)==0){break}else{u=k}}else{u=g}g=(c[u+4>>2]&-8)-b|0;k=g>>>0<p>>>0;r=u;d=k?u:d;p=k?g:p}r=d;i=c[9818]|0;if(r>>>0<i>>>0){bH();return 0}e=r+b|0;m=e;if(r>>>0>=e>>>0){bH();return 0}e=c[d+24>>2]|0;f=c[d+12>>2]|0;do{if((f|0)==(d|0)){q=d+20|0;g=c[q>>2]|0;if((g|0)==0){k=d+16|0;l=c[k>>2]|0;if((l|0)==0){v=0;break}else{w=l;x=k}}else{w=g;x=q}while(1){q=w+20|0;g=c[q>>2]|0;if((g|0)!=0){w=g;x=q;continue}q=w+16|0;g=c[q>>2]|0;if((g|0)==0){break}else{w=g;x=q}}if(x>>>0<i>>>0){bH();return 0}else{c[x>>2]=0;v=w;break}}else{q=c[d+8>>2]|0;if(q>>>0<i>>>0){bH();return 0}g=q+12|0;if((c[g>>2]|0)!=(d|0)){bH();return 0}k=f+8|0;if((c[k>>2]|0)==(d|0)){c[g>>2]=f;c[k>>2]=q;v=f;break}else{bH();return 0}}}while(0);L4833:do{if((e|0)!=0){f=d+28|0;i=39560+(c[f>>2]<<2)|0;do{if((d|0)==(c[i>>2]|0)){c[i>>2]=v;if((v|0)!=0){break}c[9815]=c[9815]&~(1<<c[f>>2]);break L4833}else{if(e>>>0<(c[9818]|0)>>>0){bH();return 0}q=e+16|0;if((c[q>>2]|0)==(d|0)){c[q>>2]=v}else{c[e+20>>2]=v}if((v|0)==0){break L4833}}}while(0);if(v>>>0<(c[9818]|0)>>>0){bH();return 0}c[v+24>>2]=e;f=c[d+16>>2]|0;do{if((f|0)!=0){if(f>>>0<(c[9818]|0)>>>0){bH();return 0}else{c[v+16>>2]=f;c[f+24>>2]=v;break}}}while(0);f=c[d+20>>2]|0;if((f|0)==0){break}if(f>>>0<(c[9818]|0)>>>0){bH();return 0}else{c[v+20>>2]=f;c[f+24>>2]=v;break}}}while(0);if(p>>>0<16){e=p+b|0;c[d+4>>2]=e|3;f=r+(e+4)|0;c[f>>2]=c[f>>2]|1}else{c[d+4>>2]=b|3;c[r+(b|4)>>2]=p|1;c[r+(p+b)>>2]=p;f=c[9816]|0;if((f|0)!=0){e=c[9819]|0;i=f>>>3;f=i<<1;q=39296+(f<<2)|0;k=c[9814]|0;g=1<<i;do{if((k&g|0)==0){c[9814]=k|g;y=q;z=39296+(f+2<<2)|0}else{i=39296+(f+2<<2)|0;l=c[i>>2]|0;if(l>>>0>=(c[9818]|0)>>>0){y=l;z=i;break}bH();return 0}}while(0);c[z>>2]=e;c[y+12>>2]=e;c[e+8>>2]=y;c[e+12>>2]=q}c[9816]=p;c[9819]=m}f=d+8|0;if((f|0)==0){o=b;break}else{n=f}return n|0}else{if(a>>>0>4294967231){o=-1;break}f=a+11|0;g=f&-8;k=c[9815]|0;if((k|0)==0){o=g;break}r=-g|0;i=f>>>8;do{if((i|0)==0){A=0}else{if(g>>>0>16777215){A=31;break}f=(i+1048320|0)>>>16&8;l=i<<f;h=(l+520192|0)>>>16&4;j=l<<h;l=(j+245760|0)>>>16&2;B=14-(h|f|l)+(j<<l>>>15)|0;A=g>>>((B+7|0)>>>0)&1|B<<1}}while(0);i=c[39560+(A<<2)>>2]|0;L4881:do{if((i|0)==0){C=0;D=r;E=0}else{if((A|0)==31){F=0}else{F=25-(A>>>1)|0}d=0;m=r;p=i;q=g<<F;e=0;while(1){B=c[p+4>>2]&-8;l=B-g|0;if(l>>>0<m>>>0){if((B|0)==(g|0)){C=p;D=l;E=p;break L4881}else{G=p;H=l}}else{G=d;H=m}l=c[p+20>>2]|0;B=c[p+16+(q>>>31<<2)>>2]|0;j=(l|0)==0|(l|0)==(B|0)?e:l;if((B|0)==0){C=G;D=H;E=j;break}else{d=G;m=H;p=B;q=q<<1;e=j}}}}while(0);if((E|0)==0&(C|0)==0){i=2<<A;r=k&(i|-i);if((r|0)==0){o=g;break}i=(r&-r)-1|0;r=i>>>12&16;e=i>>>(r>>>0);i=e>>>5&8;q=e>>>(i>>>0);e=q>>>2&4;p=q>>>(e>>>0);q=p>>>1&2;m=p>>>(q>>>0);p=m>>>1&1;I=c[39560+((i|r|e|q|p)+(m>>>(p>>>0))<<2)>>2]|0}else{I=E}if((I|0)==0){J=D;K=C}else{p=I;m=D;q=C;while(1){e=(c[p+4>>2]&-8)-g|0;r=e>>>0<m>>>0;i=r?e:m;e=r?p:q;r=c[p+16>>2]|0;if((r|0)!=0){p=r;m=i;q=e;continue}r=c[p+20>>2]|0;if((r|0)==0){J=i;K=e;break}else{p=r;m=i;q=e}}}if((K|0)==0){o=g;break}if(J>>>0>=((c[9816]|0)-g|0)>>>0){o=g;break}q=K;m=c[9818]|0;if(q>>>0<m>>>0){bH();return 0}p=q+g|0;k=p;if(q>>>0>=p>>>0){bH();return 0}e=c[K+24>>2]|0;i=c[K+12>>2]|0;do{if((i|0)==(K|0)){r=K+20|0;d=c[r>>2]|0;if((d|0)==0){j=K+16|0;B=c[j>>2]|0;if((B|0)==0){L=0;break}else{M=B;N=j}}else{M=d;N=r}while(1){r=M+20|0;d=c[r>>2]|0;if((d|0)!=0){M=d;N=r;continue}r=M+16|0;d=c[r>>2]|0;if((d|0)==0){break}else{M=d;N=r}}if(N>>>0<m>>>0){bH();return 0}else{c[N>>2]=0;L=M;break}}else{r=c[K+8>>2]|0;if(r>>>0<m>>>0){bH();return 0}d=r+12|0;if((c[d>>2]|0)!=(K|0)){bH();return 0}j=i+8|0;if((c[j>>2]|0)==(K|0)){c[d>>2]=i;c[j>>2]=r;L=i;break}else{bH();return 0}}}while(0);L4931:do{if((e|0)!=0){i=K+28|0;m=39560+(c[i>>2]<<2)|0;do{if((K|0)==(c[m>>2]|0)){c[m>>2]=L;if((L|0)!=0){break}c[9815]=c[9815]&~(1<<c[i>>2]);break L4931}else{if(e>>>0<(c[9818]|0)>>>0){bH();return 0}r=e+16|0;if((c[r>>2]|0)==(K|0)){c[r>>2]=L}else{c[e+20>>2]=L}if((L|0)==0){break L4931}}}while(0);if(L>>>0<(c[9818]|0)>>>0){bH();return 0}c[L+24>>2]=e;i=c[K+16>>2]|0;do{if((i|0)!=0){if(i>>>0<(c[9818]|0)>>>0){bH();return 0}else{c[L+16>>2]=i;c[i+24>>2]=L;break}}}while(0);i=c[K+20>>2]|0;if((i|0)==0){break}if(i>>>0<(c[9818]|0)>>>0){bH();return 0}else{c[L+20>>2]=i;c[i+24>>2]=L;break}}}while(0);do{if(J>>>0<16){e=J+g|0;c[K+4>>2]=e|3;i=q+(e+4)|0;c[i>>2]=c[i>>2]|1}else{c[K+4>>2]=g|3;c[q+(g|4)>>2]=J|1;c[q+(J+g)>>2]=J;i=J>>>3;if(J>>>0<256){e=i<<1;m=39296+(e<<2)|0;r=c[9814]|0;j=1<<i;do{if((r&j|0)==0){c[9814]=r|j;O=m;P=39296+(e+2<<2)|0}else{i=39296+(e+2<<2)|0;d=c[i>>2]|0;if(d>>>0>=(c[9818]|0)>>>0){O=d;P=i;break}bH();return 0}}while(0);c[P>>2]=k;c[O+12>>2]=k;c[q+(g+8)>>2]=O;c[q+(g+12)>>2]=m;break}e=p;j=J>>>8;do{if((j|0)==0){Q=0}else{if(J>>>0>16777215){Q=31;break}r=(j+1048320|0)>>>16&8;i=j<<r;d=(i+520192|0)>>>16&4;B=i<<d;i=(B+245760|0)>>>16&2;l=14-(d|r|i)+(B<<i>>>15)|0;Q=J>>>((l+7|0)>>>0)&1|l<<1}}while(0);j=39560+(Q<<2)|0;c[q+(g+28)>>2]=Q;c[q+(g+20)>>2]=0;c[q+(g+16)>>2]=0;m=c[9815]|0;l=1<<Q;if((m&l|0)==0){c[9815]=m|l;c[j>>2]=e;c[q+(g+24)>>2]=j;c[q+(g+12)>>2]=e;c[q+(g+8)>>2]=e;break}if((Q|0)==31){R=0}else{R=25-(Q>>>1)|0}l=J<<R;m=c[j>>2]|0;while(1){if((c[m+4>>2]&-8|0)==(J|0)){break}S=m+16+(l>>>31<<2)|0;j=c[S>>2]|0;if((j|0)==0){T=3831;break}else{l=l<<1;m=j}}if((T|0)==3831){if(S>>>0<(c[9818]|0)>>>0){bH();return 0}else{c[S>>2]=e;c[q+(g+24)>>2]=m;c[q+(g+12)>>2]=e;c[q+(g+8)>>2]=e;break}}l=m+8|0;j=c[l>>2]|0;i=c[9818]|0;if(m>>>0<i>>>0){bH();return 0}if(j>>>0<i>>>0){bH();return 0}else{c[j+12>>2]=e;c[l>>2]=e;c[q+(g+8)>>2]=j;c[q+(g+12)>>2]=m;c[q+(g+24)>>2]=0;break}}}while(0);q=K+8|0;if((q|0)==0){o=g;break}else{n=q}return n|0}}while(0);K=c[9816]|0;if(o>>>0<=K>>>0){S=K-o|0;J=c[9819]|0;if(S>>>0>15){R=J;c[9819]=R+o;c[9816]=S;c[R+(o+4)>>2]=S|1;c[R+K>>2]=S;c[J+4>>2]=o|3}else{c[9816]=0;c[9819]=0;c[J+4>>2]=K|3;S=J+(K+4)|0;c[S>>2]=c[S>>2]|1}n=J+8|0;return n|0}J=c[9817]|0;if(o>>>0<J>>>0){S=J-o|0;c[9817]=S;J=c[9820]|0;K=J;c[9820]=K+o;c[K+(o+4)>>2]=S|1;c[J+4>>2]=o|3;n=J+8|0;return n|0}do{if((c[9782]|0)==0){J=bE(8)|0;if((J-1&J|0)==0){c[9784]=J;c[9783]=J;c[9785]=-1;c[9786]=-1;c[9787]=0;c[9925]=0;c[9782]=(b_(0)|0)&-16^1431655768;break}else{bH();return 0}}}while(0);J=o+48|0;S=c[9784]|0;K=o+47|0;R=S+K|0;Q=-S|0;S=R&Q;if(S>>>0<=o>>>0){n=0;return n|0}O=c[9924]|0;do{if((O|0)!=0){P=c[9922]|0;L=P+S|0;if(L>>>0<=P>>>0|L>>>0>O>>>0){n=0}else{break}return n|0}}while(0);L5023:do{if((c[9925]&4|0)==0){O=c[9820]|0;L5025:do{if((O|0)==0){T=3861}else{L=O;P=39704;while(1){U=P|0;M=c[U>>2]|0;if(M>>>0<=L>>>0){V=P+4|0;if((M+(c[V>>2]|0)|0)>>>0>L>>>0){break}}M=c[P+8>>2]|0;if((M|0)==0){T=3861;break L5025}else{P=M}}if((P|0)==0){T=3861;break}L=R-(c[9817]|0)&Q;if(L>>>0>=2147483647){W=0;break}m=cb(L|0)|0;e=(m|0)==((c[U>>2]|0)+(c[V>>2]|0)|0);X=e?m:-1;Y=e?L:0;Z=m;_=L;T=3870}}while(0);do{if((T|0)==3861){O=cb(0)|0;if((O|0)==-1){W=0;break}g=O;L=c[9783]|0;m=L-1|0;if((m&g|0)==0){$=S}else{$=S-g+(m+g&-L)|0}L=c[9922]|0;g=L+$|0;if(!($>>>0>o>>>0&$>>>0<2147483647)){W=0;break}m=c[9924]|0;if((m|0)!=0){if(g>>>0<=L>>>0|g>>>0>m>>>0){W=0;break}}m=cb($|0)|0;g=(m|0)==(O|0);X=g?O:-1;Y=g?$:0;Z=m;_=$;T=3870}}while(0);L5045:do{if((T|0)==3870){m=-_|0;if((X|0)!=-1){aa=Y;ab=X;T=3881;break L5023}do{if((Z|0)!=-1&_>>>0<2147483647&_>>>0<J>>>0){g=c[9784]|0;O=K-_+g&-g;if(O>>>0>=2147483647){ac=_;break}if((cb(O|0)|0)==-1){cb(m|0)|0;W=Y;break L5045}else{ac=O+_|0;break}}else{ac=_}}while(0);if((Z|0)==-1){W=Y}else{aa=ac;ab=Z;T=3881;break L5023}}}while(0);c[9925]=c[9925]|4;ad=W;T=3878}else{ad=0;T=3878}}while(0);do{if((T|0)==3878){if(S>>>0>=2147483647){break}W=cb(S|0)|0;Z=cb(0)|0;if(!((Z|0)!=-1&(W|0)!=-1&W>>>0<Z>>>0)){break}ac=Z-W|0;Z=ac>>>0>(o+40|0)>>>0;Y=Z?W:-1;if((Y|0)!=-1){aa=Z?ac:ad;ab=Y;T=3881}}}while(0);do{if((T|0)==3881){ad=(c[9922]|0)+aa|0;c[9922]=ad;if(ad>>>0>(c[9923]|0)>>>0){c[9923]=ad}ad=c[9820]|0;L5065:do{if((ad|0)==0){S=c[9818]|0;if((S|0)==0|ab>>>0<S>>>0){c[9818]=ab}c[9926]=ab;c[9927]=aa;c[9929]=0;c[9823]=c[9782];c[9822]=-1;S=0;do{Y=S<<1;ac=39296+(Y<<2)|0;c[39296+(Y+3<<2)>>2]=ac;c[39296+(Y+2<<2)>>2]=ac;S=S+1|0;}while(S>>>0<32);S=ab+8|0;if((S&7|0)==0){ae=0}else{ae=-S&7}S=aa-40-ae|0;c[9820]=ab+ae;c[9817]=S;c[ab+(ae+4)>>2]=S|1;c[ab+(aa-36)>>2]=40;c[9821]=c[9786]}else{S=39704;while(1){af=c[S>>2]|0;ag=S+4|0;ah=c[ag>>2]|0;if((ab|0)==(af+ah|0)){T=3893;break}ac=c[S+8>>2]|0;if((ac|0)==0){break}else{S=ac}}do{if((T|0)==3893){if((c[S+12>>2]&8|0)!=0){break}ac=ad;if(!(ac>>>0>=af>>>0&ac>>>0<ab>>>0)){break}c[ag>>2]=ah+aa;ac=c[9820]|0;Y=(c[9817]|0)+aa|0;Z=ac;W=ac+8|0;if((W&7|0)==0){ai=0}else{ai=-W&7}W=Y-ai|0;c[9820]=Z+ai;c[9817]=W;c[Z+(ai+4)>>2]=W|1;c[Z+(Y+4)>>2]=40;c[9821]=c[9786];break L5065}}while(0);if(ab>>>0<(c[9818]|0)>>>0){c[9818]=ab}S=ab+aa|0;Y=39704;while(1){aj=Y|0;if((c[aj>>2]|0)==(S|0)){T=3903;break}Z=c[Y+8>>2]|0;if((Z|0)==0){break}else{Y=Z}}do{if((T|0)==3903){if((c[Y+12>>2]&8|0)!=0){break}c[aj>>2]=ab;S=Y+4|0;c[S>>2]=(c[S>>2]|0)+aa;S=ab+8|0;if((S&7|0)==0){ak=0}else{ak=-S&7}S=ab+(aa+8)|0;if((S&7|0)==0){al=0}else{al=-S&7}S=ab+(al+aa)|0;Z=S;W=ak+o|0;ac=ab+W|0;_=ac;K=S-(ab+ak)-o|0;c[ab+(ak+4)>>2]=o|3;do{if((Z|0)==(c[9820]|0)){J=(c[9817]|0)+K|0;c[9817]=J;c[9820]=_;c[ab+(W+4)>>2]=J|1}else{if((Z|0)==(c[9819]|0)){J=(c[9816]|0)+K|0;c[9816]=J;c[9819]=_;c[ab+(W+4)>>2]=J|1;c[ab+(J+W)>>2]=J;break}J=aa+4|0;X=c[ab+(J+al)>>2]|0;if((X&3|0)==1){$=X&-8;V=X>>>3;L5110:do{if(X>>>0<256){U=c[ab+((al|8)+aa)>>2]|0;Q=c[ab+(aa+12+al)>>2]|0;R=39296+(V<<1<<2)|0;do{if((U|0)!=(R|0)){if(U>>>0<(c[9818]|0)>>>0){bH();return 0}if((c[U+12>>2]|0)==(Z|0)){break}bH();return 0}}while(0);if((Q|0)==(U|0)){c[9814]=c[9814]&~(1<<V);break}do{if((Q|0)==(R|0)){am=Q+8|0}else{if(Q>>>0<(c[9818]|0)>>>0){bH();return 0}m=Q+8|0;if((c[m>>2]|0)==(Z|0)){am=m;break}bH();return 0}}while(0);c[U+12>>2]=Q;c[am>>2]=U}else{R=S;m=c[ab+((al|24)+aa)>>2]|0;P=c[ab+(aa+12+al)>>2]|0;do{if((P|0)==(R|0)){O=al|16;g=ab+(J+O)|0;L=c[g>>2]|0;if((L|0)==0){e=ab+(O+aa)|0;O=c[e>>2]|0;if((O|0)==0){an=0;break}else{ao=O;ap=e}}else{ao=L;ap=g}while(1){g=ao+20|0;L=c[g>>2]|0;if((L|0)!=0){ao=L;ap=g;continue}g=ao+16|0;L=c[g>>2]|0;if((L|0)==0){break}else{ao=L;ap=g}}if(ap>>>0<(c[9818]|0)>>>0){bH();return 0}else{c[ap>>2]=0;an=ao;break}}else{g=c[ab+((al|8)+aa)>>2]|0;if(g>>>0<(c[9818]|0)>>>0){bH();return 0}L=g+12|0;if((c[L>>2]|0)!=(R|0)){bH();return 0}e=P+8|0;if((c[e>>2]|0)==(R|0)){c[L>>2]=P;c[e>>2]=g;an=P;break}else{bH();return 0}}}while(0);if((m|0)==0){break}P=ab+(aa+28+al)|0;U=39560+(c[P>>2]<<2)|0;do{if((R|0)==(c[U>>2]|0)){c[U>>2]=an;if((an|0)!=0){break}c[9815]=c[9815]&~(1<<c[P>>2]);break L5110}else{if(m>>>0<(c[9818]|0)>>>0){bH();return 0}Q=m+16|0;if((c[Q>>2]|0)==(R|0)){c[Q>>2]=an}else{c[m+20>>2]=an}if((an|0)==0){break L5110}}}while(0);if(an>>>0<(c[9818]|0)>>>0){bH();return 0}c[an+24>>2]=m;R=al|16;P=c[ab+(R+aa)>>2]|0;do{if((P|0)!=0){if(P>>>0<(c[9818]|0)>>>0){bH();return 0}else{c[an+16>>2]=P;c[P+24>>2]=an;break}}}while(0);P=c[ab+(J+R)>>2]|0;if((P|0)==0){break}if(P>>>0<(c[9818]|0)>>>0){bH();return 0}else{c[an+20>>2]=P;c[P+24>>2]=an;break}}}while(0);aq=ab+(($|al)+aa)|0;ar=$+K|0}else{aq=Z;ar=K}J=aq+4|0;c[J>>2]=c[J>>2]&-2;c[ab+(W+4)>>2]=ar|1;c[ab+(ar+W)>>2]=ar;J=ar>>>3;if(ar>>>0<256){V=J<<1;X=39296+(V<<2)|0;P=c[9814]|0;m=1<<J;do{if((P&m|0)==0){c[9814]=P|m;as=X;at=39296+(V+2<<2)|0}else{J=39296+(V+2<<2)|0;U=c[J>>2]|0;if(U>>>0>=(c[9818]|0)>>>0){as=U;at=J;break}bH();return 0}}while(0);c[at>>2]=_;c[as+12>>2]=_;c[ab+(W+8)>>2]=as;c[ab+(W+12)>>2]=X;break}V=ac;m=ar>>>8;do{if((m|0)==0){au=0}else{if(ar>>>0>16777215){au=31;break}P=(m+1048320|0)>>>16&8;$=m<<P;J=($+520192|0)>>>16&4;U=$<<J;$=(U+245760|0)>>>16&2;Q=14-(J|P|$)+(U<<$>>>15)|0;au=ar>>>((Q+7|0)>>>0)&1|Q<<1}}while(0);m=39560+(au<<2)|0;c[ab+(W+28)>>2]=au;c[ab+(W+20)>>2]=0;c[ab+(W+16)>>2]=0;X=c[9815]|0;Q=1<<au;if((X&Q|0)==0){c[9815]=X|Q;c[m>>2]=V;c[ab+(W+24)>>2]=m;c[ab+(W+12)>>2]=V;c[ab+(W+8)>>2]=V;break}if((au|0)==31){av=0}else{av=25-(au>>>1)|0}Q=ar<<av;X=c[m>>2]|0;while(1){if((c[X+4>>2]&-8|0)==(ar|0)){break}aw=X+16+(Q>>>31<<2)|0;m=c[aw>>2]|0;if((m|0)==0){T=3976;break}else{Q=Q<<1;X=m}}if((T|0)==3976){if(aw>>>0<(c[9818]|0)>>>0){bH();return 0}else{c[aw>>2]=V;c[ab+(W+24)>>2]=X;c[ab+(W+12)>>2]=V;c[ab+(W+8)>>2]=V;break}}Q=X+8|0;m=c[Q>>2]|0;$=c[9818]|0;if(X>>>0<$>>>0){bH();return 0}if(m>>>0<$>>>0){bH();return 0}else{c[m+12>>2]=V;c[Q>>2]=V;c[ab+(W+8)>>2]=m;c[ab+(W+12)>>2]=X;c[ab+(W+24)>>2]=0;break}}}while(0);n=ab+(ak|8)|0;return n|0}}while(0);Y=ad;W=39704;while(1){ax=c[W>>2]|0;if(ax>>>0<=Y>>>0){ay=c[W+4>>2]|0;az=ax+ay|0;if(az>>>0>Y>>>0){break}}W=c[W+8>>2]|0}W=ax+(ay-39)|0;if((W&7|0)==0){aA=0}else{aA=-W&7}W=ax+(ay-47+aA)|0;ac=W>>>0<(ad+16|0)>>>0?Y:W;W=ac+8|0;_=ab+8|0;if((_&7|0)==0){aB=0}else{aB=-_&7}_=aa-40-aB|0;c[9820]=ab+aB;c[9817]=_;c[ab+(aB+4)>>2]=_|1;c[ab+(aa-36)>>2]=40;c[9821]=c[9786];c[ac+4>>2]=27;c[W>>2]=c[9926];c[W+4>>2]=c[39708>>2];c[W+8>>2]=c[39712>>2];c[W+12>>2]=c[39716>>2];c[9926]=ab;c[9927]=aa;c[9929]=0;c[9928]=W;W=ac+28|0;c[W>>2]=7;if((ac+32|0)>>>0<az>>>0){_=W;while(1){W=_+4|0;c[W>>2]=7;if((_+8|0)>>>0<az>>>0){_=W}else{break}}}if((ac|0)==(Y|0)){break}_=ac-ad|0;W=Y+(_+4)|0;c[W>>2]=c[W>>2]&-2;c[ad+4>>2]=_|1;c[Y+_>>2]=_;W=_>>>3;if(_>>>0<256){K=W<<1;Z=39296+(K<<2)|0;S=c[9814]|0;m=1<<W;do{if((S&m|0)==0){c[9814]=S|m;aC=Z;aD=39296+(K+2<<2)|0}else{W=39296+(K+2<<2)|0;Q=c[W>>2]|0;if(Q>>>0>=(c[9818]|0)>>>0){aC=Q;aD=W;break}bH();return 0}}while(0);c[aD>>2]=ad;c[aC+12>>2]=ad;c[ad+8>>2]=aC;c[ad+12>>2]=Z;break}K=ad;m=_>>>8;do{if((m|0)==0){aE=0}else{if(_>>>0>16777215){aE=31;break}S=(m+1048320|0)>>>16&8;Y=m<<S;ac=(Y+520192|0)>>>16&4;W=Y<<ac;Y=(W+245760|0)>>>16&2;Q=14-(ac|S|Y)+(W<<Y>>>15)|0;aE=_>>>((Q+7|0)>>>0)&1|Q<<1}}while(0);m=39560+(aE<<2)|0;c[ad+28>>2]=aE;c[ad+20>>2]=0;c[ad+16>>2]=0;Z=c[9815]|0;Q=1<<aE;if((Z&Q|0)==0){c[9815]=Z|Q;c[m>>2]=K;c[ad+24>>2]=m;c[ad+12>>2]=ad;c[ad+8>>2]=ad;break}if((aE|0)==31){aF=0}else{aF=25-(aE>>>1)|0}Q=_<<aF;Z=c[m>>2]|0;while(1){if((c[Z+4>>2]&-8|0)==(_|0)){break}aG=Z+16+(Q>>>31<<2)|0;m=c[aG>>2]|0;if((m|0)==0){T=4011;break}else{Q=Q<<1;Z=m}}if((T|0)==4011){if(aG>>>0<(c[9818]|0)>>>0){bH();return 0}else{c[aG>>2]=K;c[ad+24>>2]=Z;c[ad+12>>2]=ad;c[ad+8>>2]=ad;break}}Q=Z+8|0;_=c[Q>>2]|0;m=c[9818]|0;if(Z>>>0<m>>>0){bH();return 0}if(_>>>0<m>>>0){bH();return 0}else{c[_+12>>2]=K;c[Q>>2]=K;c[ad+8>>2]=_;c[ad+12>>2]=Z;c[ad+24>>2]=0;break}}}while(0);ad=c[9817]|0;if(ad>>>0<=o>>>0){break}_=ad-o|0;c[9817]=_;ad=c[9820]|0;Q=ad;c[9820]=Q+o;c[Q+(o+4)>>2]=_|1;c[ad+4>>2]=o|3;n=ad+8|0;return n|0}}while(0);c[(ce()|0)>>2]=12;n=0;return n|0}function aDy(a){a=a|0;return}function aDz(a){a=a|0;return 17040|0}function aDA(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aDB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;if((a|0)==0){return}b=a-8|0;d=b;e=c[9818]|0;if(b>>>0<e>>>0){bH()}f=c[a-4>>2]|0;g=f&3;if((g|0)==1){bH()}h=f&-8;i=a+(h-8)|0;j=i;L5289:do{if((f&1|0)==0){k=c[b>>2]|0;if((g|0)==0){return}l=-8-k|0;m=a+l|0;n=m;o=k+h|0;if(m>>>0<e>>>0){bH()}if((n|0)==(c[9819]|0)){p=a+(h-4)|0;if((c[p>>2]&3|0)!=3){q=n;r=o;break}c[9816]=o;c[p>>2]=c[p>>2]&-2;c[a+(l+4)>>2]=o|1;c[i>>2]=o;return}p=k>>>3;if(k>>>0<256){k=c[a+(l+8)>>2]|0;s=c[a+(l+12)>>2]|0;t=39296+(p<<1<<2)|0;do{if((k|0)!=(t|0)){if(k>>>0<e>>>0){bH()}if((c[k+12>>2]|0)==(n|0)){break}bH()}}while(0);if((s|0)==(k|0)){c[9814]=c[9814]&~(1<<p);q=n;r=o;break}do{if((s|0)==(t|0)){u=s+8|0}else{if(s>>>0<e>>>0){bH()}v=s+8|0;if((c[v>>2]|0)==(n|0)){u=v;break}bH()}}while(0);c[k+12>>2]=s;c[u>>2]=k;q=n;r=o;break}t=m;p=c[a+(l+24)>>2]|0;v=c[a+(l+12)>>2]|0;do{if((v|0)==(t|0)){w=a+(l+20)|0;x=c[w>>2]|0;if((x|0)==0){y=a+(l+16)|0;z=c[y>>2]|0;if((z|0)==0){A=0;break}else{B=z;C=y}}else{B=x;C=w}while(1){w=B+20|0;x=c[w>>2]|0;if((x|0)!=0){B=x;C=w;continue}w=B+16|0;x=c[w>>2]|0;if((x|0)==0){break}else{B=x;C=w}}if(C>>>0<e>>>0){bH()}else{c[C>>2]=0;A=B;break}}else{w=c[a+(l+8)>>2]|0;if(w>>>0<e>>>0){bH()}x=w+12|0;if((c[x>>2]|0)!=(t|0)){bH()}y=v+8|0;if((c[y>>2]|0)==(t|0)){c[x>>2]=v;c[y>>2]=w;A=v;break}else{bH()}}}while(0);if((p|0)==0){q=n;r=o;break}v=a+(l+28)|0;m=39560+(c[v>>2]<<2)|0;do{if((t|0)==(c[m>>2]|0)){c[m>>2]=A;if((A|0)!=0){break}c[9815]=c[9815]&~(1<<c[v>>2]);q=n;r=o;break L5289}else{if(p>>>0<(c[9818]|0)>>>0){bH()}k=p+16|0;if((c[k>>2]|0)==(t|0)){c[k>>2]=A}else{c[p+20>>2]=A}if((A|0)==0){q=n;r=o;break L5289}}}while(0);if(A>>>0<(c[9818]|0)>>>0){bH()}c[A+24>>2]=p;t=c[a+(l+16)>>2]|0;do{if((t|0)!=0){if(t>>>0<(c[9818]|0)>>>0){bH()}else{c[A+16>>2]=t;c[t+24>>2]=A;break}}}while(0);t=c[a+(l+20)>>2]|0;if((t|0)==0){q=n;r=o;break}if(t>>>0<(c[9818]|0)>>>0){bH()}else{c[A+20>>2]=t;c[t+24>>2]=A;q=n;r=o;break}}else{q=d;r=h}}while(0);d=q;if(d>>>0>=i>>>0){bH()}A=a+(h-4)|0;e=c[A>>2]|0;if((e&1|0)==0){bH()}do{if((e&2|0)==0){if((j|0)==(c[9820]|0)){B=(c[9817]|0)+r|0;c[9817]=B;c[9820]=q;c[q+4>>2]=B|1;if((q|0)!=(c[9819]|0)){return}c[9819]=0;c[9816]=0;return}if((j|0)==(c[9819]|0)){B=(c[9816]|0)+r|0;c[9816]=B;c[9819]=q;c[q+4>>2]=B|1;c[d+B>>2]=B;return}B=(e&-8)+r|0;C=e>>>3;L5392:do{if(e>>>0<256){u=c[a+h>>2]|0;g=c[a+(h|4)>>2]|0;b=39296+(C<<1<<2)|0;do{if((u|0)!=(b|0)){if(u>>>0<(c[9818]|0)>>>0){bH()}if((c[u+12>>2]|0)==(j|0)){break}bH()}}while(0);if((g|0)==(u|0)){c[9814]=c[9814]&~(1<<C);break}do{if((g|0)==(b|0)){D=g+8|0}else{if(g>>>0<(c[9818]|0)>>>0){bH()}f=g+8|0;if((c[f>>2]|0)==(j|0)){D=f;break}bH()}}while(0);c[u+12>>2]=g;c[D>>2]=u}else{b=i;f=c[a+(h+16)>>2]|0;t=c[a+(h|4)>>2]|0;do{if((t|0)==(b|0)){p=a+(h+12)|0;v=c[p>>2]|0;if((v|0)==0){m=a+(h+8)|0;k=c[m>>2]|0;if((k|0)==0){E=0;break}else{F=k;G=m}}else{F=v;G=p}while(1){p=F+20|0;v=c[p>>2]|0;if((v|0)!=0){F=v;G=p;continue}p=F+16|0;v=c[p>>2]|0;if((v|0)==0){break}else{F=v;G=p}}if(G>>>0<(c[9818]|0)>>>0){bH()}else{c[G>>2]=0;E=F;break}}else{p=c[a+h>>2]|0;if(p>>>0<(c[9818]|0)>>>0){bH()}v=p+12|0;if((c[v>>2]|0)!=(b|0)){bH()}m=t+8|0;if((c[m>>2]|0)==(b|0)){c[v>>2]=t;c[m>>2]=p;E=t;break}else{bH()}}}while(0);if((f|0)==0){break}t=a+(h+20)|0;u=39560+(c[t>>2]<<2)|0;do{if((b|0)==(c[u>>2]|0)){c[u>>2]=E;if((E|0)!=0){break}c[9815]=c[9815]&~(1<<c[t>>2]);break L5392}else{if(f>>>0<(c[9818]|0)>>>0){bH()}g=f+16|0;if((c[g>>2]|0)==(b|0)){c[g>>2]=E}else{c[f+20>>2]=E}if((E|0)==0){break L5392}}}while(0);if(E>>>0<(c[9818]|0)>>>0){bH()}c[E+24>>2]=f;b=c[a+(h+8)>>2]|0;do{if((b|0)!=0){if(b>>>0<(c[9818]|0)>>>0){bH()}else{c[E+16>>2]=b;c[b+24>>2]=E;break}}}while(0);b=c[a+(h+12)>>2]|0;if((b|0)==0){break}if(b>>>0<(c[9818]|0)>>>0){bH()}else{c[E+20>>2]=b;c[b+24>>2]=E;break}}}while(0);c[q+4>>2]=B|1;c[d+B>>2]=B;if((q|0)!=(c[9819]|0)){H=B;break}c[9816]=B;return}else{c[A>>2]=e&-2;c[q+4>>2]=r|1;c[d+r>>2]=r;H=r}}while(0);r=H>>>3;if(H>>>0<256){d=r<<1;e=39296+(d<<2)|0;A=c[9814]|0;E=1<<r;do{if((A&E|0)==0){c[9814]=A|E;I=e;J=39296+(d+2<<2)|0}else{r=39296+(d+2<<2)|0;h=c[r>>2]|0;if(h>>>0>=(c[9818]|0)>>>0){I=h;J=r;break}bH()}}while(0);c[J>>2]=q;c[I+12>>2]=q;c[q+8>>2]=I;c[q+12>>2]=e;return}e=q;I=H>>>8;do{if((I|0)==0){K=0}else{if(H>>>0>16777215){K=31;break}J=(I+1048320|0)>>>16&8;d=I<<J;E=(d+520192|0)>>>16&4;A=d<<E;d=(A+245760|0)>>>16&2;r=14-(E|J|d)+(A<<d>>>15)|0;K=H>>>((r+7|0)>>>0)&1|r<<1}}while(0);I=39560+(K<<2)|0;c[q+28>>2]=K;c[q+20>>2]=0;c[q+16>>2]=0;r=c[9815]|0;d=1<<K;do{if((r&d|0)==0){c[9815]=r|d;c[I>>2]=e;c[q+24>>2]=I;c[q+12>>2]=q;c[q+8>>2]=q}else{if((K|0)==31){L=0}else{L=25-(K>>>1)|0}A=H<<L;J=c[I>>2]|0;while(1){if((c[J+4>>2]&-8|0)==(H|0)){break}M=J+16+(A>>>31<<2)|0;E=c[M>>2]|0;if((E|0)==0){N=4195;break}else{A=A<<1;J=E}}if((N|0)==4195){if(M>>>0<(c[9818]|0)>>>0){bH()}else{c[M>>2]=e;c[q+24>>2]=J;c[q+12>>2]=q;c[q+8>>2]=q;break}}A=J+8|0;B=c[A>>2]|0;E=c[9818]|0;if(J>>>0<E>>>0){bH()}if(B>>>0<E>>>0){bH()}else{c[B+12>>2]=e;c[A>>2]=e;c[q+8>>2]=B;c[q+12>>2]=J;c[q+24>>2]=0;break}}}while(0);q=(c[9822]|0)-1|0;c[9822]=q;if((q|0)==0){O=39712}else{return}while(1){q=c[O>>2]|0;if((q|0)==0){break}else{O=q+8|0}}c[9822]=-1;return}function aDC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=b|0;if((b&3)==(d&3)){while(b&3){if((e|0)==0)return f|0;a[b]=a[d]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b]=a[d]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function aDD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=b+e|0;if((e|0)>=20){d=d&255;e=b&3;g=d|d<<8|d<<16|d<<24;h=f&~3;if(e){e=b+4-e|0;while((b|0)<(e|0)){a[b]=d;b=b+1|0}}while((b|0)<(h|0)){c[b>>2]=g;b=b+4|0}}while((b|0)<(f|0)){a[b]=d;b=b+1|0}}function aDE(b){b=b|0;var c=0;c=b;while(a[c]|0){c=c+1|0}return c-b|0}function aDF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=a+c>>>0;c=b+d>>>0;d=c>>>0<b>>>0|0;if(e>>>0<a>>>0){c=c+1>>>0;d=d|!c}return(E=c,F=d,e|0)|0}function aDG(b,c,d){b=b|0;c=c|0;d=d|0;if((c|0)<(b|0)&(b|0)<(c+d|0)){c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b]=a[c]|0}}else{aDC(b,c,d)|0}}
function aDH(){bW()}function aDI(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;co[a&255](b|0,c|0,d|0,e|0,f|0)}function aDJ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(0,a|0,b|0,c|0,d|0,e|0)}function aDK(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(1,a|0,b|0,c|0,d|0,e|0)}function aDL(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(2,a|0,b|0,c|0,d|0,e|0)}function aDM(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(3,a|0,b|0,c|0,d|0,e|0)}function aDN(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(4,a|0,b|0,c|0,d|0,e|0)}function aDO(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(5,a|0,b|0,c|0,d|0,e|0)}function aDP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(6,a|0,b|0,c|0,d|0,e|0)}function aDQ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(7,a|0,b|0,c|0,d|0,e|0)}function aDR(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(8,a|0,b|0,c|0,d|0,e|0)}function aDS(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(9,a|0,b|0,c|0,d|0,e|0)}function aDT(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(10,a|0,b|0,c|0,d|0,e|0)}function aDU(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(11,a|0,b|0,c|0,d|0,e|0)}function aDV(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(12,a|0,b|0,c|0,d|0,e|0)}function aDW(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(13,a|0,b|0,c|0,d|0,e|0)}function aDX(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(14,a|0,b|0,c|0,d|0,e|0)}function aDY(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(15,a|0,b|0,c|0,d|0,e|0)}function aDZ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(16,a|0,b|0,c|0,d|0,e|0)}function aD_(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(17,a|0,b|0,c|0,d|0,e|0)}function aD$(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(18,a|0,b|0,c|0,d|0,e|0)}function aD0(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(19,a|0,b|0,c|0,d|0,e|0)}function aD1(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;return cp[a&63](b|0,c|0,d|0,e|0,f|0,+g)|0}function aD2(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(0,a|0,b|0,c|0,d|0,e|0,+f)|0}function aD3(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(1,a|0,b|0,c|0,d|0,e|0,+f)|0}function aD4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(2,a|0,b|0,c|0,d|0,e|0,+f)|0}function aD5(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(3,a|0,b|0,c|0,d|0,e|0,+f)|0}function aD6(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(4,a|0,b|0,c|0,d|0,e|0,+f)|0}function aD7(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(5,a|0,b|0,c|0,d|0,e|0,+f)|0}function aD8(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(6,a|0,b|0,c|0,d|0,e|0,+f)|0}function aD9(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(7,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(8,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(9,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(10,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(11,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEe(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(12,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(13,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(14,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEh(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(15,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEi(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(16,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(17,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(18,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEl(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(19,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEm(a,b,c){a=a|0;b=b|0;c=+c;cq[a&1023](b|0,+c)}function aEn(a,b){a=a|0;b=+b;ag(0,a|0,+b)}function aEo(a,b){a=a|0;b=+b;ag(1,a|0,+b)}function aEp(a,b){a=a|0;b=+b;ag(2,a|0,+b)}function aEq(a,b){a=a|0;b=+b;ag(3,a|0,+b)}function aEr(a,b){a=a|0;b=+b;ag(4,a|0,+b)}function aEs(a,b){a=a|0;b=+b;ag(5,a|0,+b)}function aEt(a,b){a=a|0;b=+b;ag(6,a|0,+b)}function aEu(a,b){a=a|0;b=+b;ag(7,a|0,+b)}function aEv(a,b){a=a|0;b=+b;ag(8,a|0,+b)}function aEw(a,b){a=a|0;b=+b;ag(9,a|0,+b)}function aEx(a,b){a=a|0;b=+b;ag(10,a|0,+b)}function aEy(a,b){a=a|0;b=+b;ag(11,a|0,+b)}function aEz(a,b){a=a|0;b=+b;ag(12,a|0,+b)}function aEA(a,b){a=a|0;b=+b;ag(13,a|0,+b)}function aEB(a,b){a=a|0;b=+b;ag(14,a|0,+b)}function aEC(a,b){a=a|0;b=+b;ag(15,a|0,+b)}function aED(a,b){a=a|0;b=+b;ag(16,a|0,+b)}function aEE(a,b){a=a|0;b=+b;ag(17,a|0,+b)}function aEF(a,b){a=a|0;b=+b;ag(18,a|0,+b)}function aEG(a,b){a=a|0;b=+b;ag(19,a|0,+b)}function aEH(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;cr[a&63](b|0,c|0,+d,e|0,f|0)}function aEI(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(0,a|0,b|0,+c,d|0,e|0)}function aEJ(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(1,a|0,b|0,+c,d|0,e|0)}function aEK(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(2,a|0,b|0,+c,d|0,e|0)}function aEL(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(3,a|0,b|0,+c,d|0,e|0)}function aEM(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(4,a|0,b|0,+c,d|0,e|0)}function aEN(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(5,a|0,b|0,+c,d|0,e|0)}function aEO(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(6,a|0,b|0,+c,d|0,e|0)}function aEP(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(7,a|0,b|0,+c,d|0,e|0)}function aEQ(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(8,a|0,b|0,+c,d|0,e|0)}function aER(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(9,a|0,b|0,+c,d|0,e|0)}function aES(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(10,a|0,b|0,+c,d|0,e|0)}function aET(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(11,a|0,b|0,+c,d|0,e|0)}function aEU(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(12,a|0,b|0,+c,d|0,e|0)}function aEV(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(13,a|0,b|0,+c,d|0,e|0)}function aEW(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(14,a|0,b|0,+c,d|0,e|0)}function aEX(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(15,a|0,b|0,+c,d|0,e|0)}function aEY(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(16,a|0,b|0,+c,d|0,e|0)}function aEZ(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(17,a|0,b|0,+c,d|0,e|0)}function aE_(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(18,a|0,b|0,+c,d|0,e|0)}function aE$(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(19,a|0,b|0,+c,d|0,e|0)}function aE0(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;g=+g;h=+h;i=+i;j=+j;k=k|0;l=+l;cs[a&63](b|0,c|0,d|0,e|0,+f,+g,+h,+i,+j,k|0,+l)}function aE1(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(0,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aE2(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(1,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aE3(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(2,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aE4(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(3,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aE5(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(4,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aE6(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(5,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aE7(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(6,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aE8(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(7,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aE9(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(8,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFa(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(9,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFb(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(10,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFc(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(11,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFd(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(12,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFe(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(13,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFf(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(14,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFg(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(15,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFh(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(16,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFi(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(17,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFj(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(18,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFk(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(19,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFl(a,b){a=a|0;b=b|0;ct[a&2047](b|0)}function aFm(a){a=a|0;ag(0,a|0)}function aFn(a){a=a|0;ag(1,a|0)}function aFo(a){a=a|0;ag(2,a|0)}function aFp(a){a=a|0;ag(3,a|0)}function aFq(a){a=a|0;ag(4,a|0)}function aFr(a){a=a|0;ag(5,a|0)}function aFs(a){a=a|0;ag(6,a|0)}function aFt(a){a=a|0;ag(7,a|0)}function aFu(a){a=a|0;ag(8,a|0)}function aFv(a){a=a|0;ag(9,a|0)}function aFw(a){a=a|0;ag(10,a|0)}function aFx(a){a=a|0;ag(11,a|0)}function aFy(a){a=a|0;ag(12,a|0)}function aFz(a){a=a|0;ag(13,a|0)}function aFA(a){a=a|0;ag(14,a|0)}function aFB(a){a=a|0;ag(15,a|0)}function aFC(a){a=a|0;ag(16,a|0)}function aFD(a){a=a|0;ag(17,a|0)}function aFE(a){a=a|0;ag(18,a|0)}function aFF(a){a=a|0;ag(19,a|0)}function aFG(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;g=+g;h=h|0;i=i|0;return cu[a&63](b|0,c|0,d|0,e|0,+f,+g,h|0,i|0)|0}function aFH(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(0,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFI(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(1,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFJ(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(2,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFK(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(3,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFL(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(4,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFM(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(5,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFN(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(6,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFO(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(7,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(8,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFQ(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(9,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFR(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(10,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFS(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(11,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFT(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(12,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFU(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(13,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFV(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(14,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFW(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(15,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFX(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(16,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFY(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(17,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFZ(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(18,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aF_(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(19,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aF$(a,b,c){a=a|0;b=b|0;c=c|0;cv[a&2047](b|0,c|0)}function aF0(a,b){a=a|0;b=b|0;ag(0,a|0,b|0)}function aF1(a,b){a=a|0;b=b|0;ag(1,a|0,b|0)}function aF2(a,b){a=a|0;b=b|0;ag(2,a|0,b|0)}function aF3(a,b){a=a|0;b=b|0;ag(3,a|0,b|0)}function aF4(a,b){a=a|0;b=b|0;ag(4,a|0,b|0)}function aF5(a,b){a=a|0;b=b|0;ag(5,a|0,b|0)}function aF6(a,b){a=a|0;b=b|0;ag(6,a|0,b|0)}function aF7(a,b){a=a|0;b=b|0;ag(7,a|0,b|0)}function aF8(a,b){a=a|0;b=b|0;ag(8,a|0,b|0)}function aF9(a,b){a=a|0;b=b|0;ag(9,a|0,b|0)}function aGa(a,b){a=a|0;b=b|0;ag(10,a|0,b|0)}function aGb(a,b){a=a|0;b=b|0;ag(11,a|0,b|0)}function aGc(a,b){a=a|0;b=b|0;ag(12,a|0,b|0)}function aGd(a,b){a=a|0;b=b|0;ag(13,a|0,b|0)}function aGe(a,b){a=a|0;b=b|0;ag(14,a|0,b|0)}function aGf(a,b){a=a|0;b=b|0;ag(15,a|0,b|0)}function aGg(a,b){a=a|0;b=b|0;ag(16,a|0,b|0)}function aGh(a,b){a=a|0;b=b|0;ag(17,a|0,b|0)}function aGi(a,b){a=a|0;b=b|0;ag(18,a|0,b|0)}function aGj(a,b){a=a|0;b=b|0;ag(19,a|0,b|0)}function aGk(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;cw[a&63](b|0,c|0,d|0,+e,f|0,g|0)}function aGl(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(0,a|0,b|0,c|0,+d,e|0,f|0)}function aGm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(1,a|0,b|0,c|0,+d,e|0,f|0)}function aGn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(2,a|0,b|0,c|0,+d,e|0,f|0)}function aGo(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(3,a|0,b|0,c|0,+d,e|0,f|0)}function aGp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(4,a|0,b|0,c|0,+d,e|0,f|0)}function aGq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(5,a|0,b|0,c|0,+d,e|0,f|0)}function aGr(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(6,a|0,b|0,c|0,+d,e|0,f|0)}function aGs(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(7,a|0,b|0,c|0,+d,e|0,f|0)}function aGt(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(8,a|0,b|0,c|0,+d,e|0,f|0)}function aGu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(9,a|0,b|0,c|0,+d,e|0,f|0)}function aGv(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(10,a|0,b|0,c|0,+d,e|0,f|0)}function aGw(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(11,a|0,b|0,c|0,+d,e|0,f|0)}function aGx(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(12,a|0,b|0,c|0,+d,e|0,f|0)}function aGy(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(13,a|0,b|0,c|0,+d,e|0,f|0)}function aGz(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(14,a|0,b|0,c|0,+d,e|0,f|0)}function aGA(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(15,a|0,b|0,c|0,+d,e|0,f|0)}function aGB(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(16,a|0,b|0,c|0,+d,e|0,f|0)}function aGC(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(17,a|0,b|0,c|0,+d,e|0,f|0)}function aGD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(18,a|0,b|0,c|0,+d,e|0,f|0)}function aGE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(19,a|0,b|0,c|0,+d,e|0,f|0)}function aGF(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;return cx[a&63](+b,+c,+d,+e,+f,+g,+h,+i,+j)|0}function aGG(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(0,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGH(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(1,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGI(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(2,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGJ(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(3,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGK(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(4,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGL(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(5,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGM(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(6,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGN(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(7,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGO(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(8,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGP(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(9,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGQ(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(10,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGR(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(11,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGS(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(12,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGT(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(13,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGU(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(14,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGV(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(15,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGW(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(16,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGX(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(17,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGY(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(18,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGZ(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(19,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aG_(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;cy[a&127](b|0,c|0,d|0,e|0,+f)}function aG$(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(0,a|0,b|0,c|0,d|0,+e)}function aG0(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(1,a|0,b|0,c|0,d|0,+e)}function aG1(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(2,a|0,b|0,c|0,d|0,+e)}function aG2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(3,a|0,b|0,c|0,d|0,+e)}function aG3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(4,a|0,b|0,c|0,d|0,+e)}function aG4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(5,a|0,b|0,c|0,d|0,+e)}function aG5(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(6,a|0,b|0,c|0,d|0,+e)}function aG6(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(7,a|0,b|0,c|0,d|0,+e)}function aG7(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(8,a|0,b|0,c|0,d|0,+e)}function aG8(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(9,a|0,b|0,c|0,d|0,+e)}function aG9(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(10,a|0,b|0,c|0,d|0,+e)}function aHa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(11,a|0,b|0,c|0,d|0,+e)}function aHb(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(12,a|0,b|0,c|0,d|0,+e)}function aHc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(13,a|0,b|0,c|0,d|0,+e)}function aHd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(14,a|0,b|0,c|0,d|0,+e)}function aHe(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(15,a|0,b|0,c|0,d|0,+e)}function aHf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(16,a|0,b|0,c|0,d|0,+e)}function aHg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(17,a|0,b|0,c|0,d|0,+e)}function aHh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(18,a|0,b|0,c|0,d|0,+e)}function aHi(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(19,a|0,b|0,c|0,d|0,+e)}function aHj(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;g=+g;h=+h;i=+i;j=j|0;k=k|0;cz[a&63](b|0,c|0,d|0,e|0,+f,+g,+h,+i,j|0,k|0)}function aHk(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(0,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHl(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(1,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHm(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(2,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHn(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(3,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHo(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(4,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHp(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(5,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHq(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(6,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHr(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(7,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHs(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(8,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHt(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(9,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHu(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(10,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHv(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(11,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHw(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(12,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHx(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(13,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHy(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(14,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHz(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(15,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHA(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(16,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHB(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(17,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHC(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(18,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHD(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(19,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHE(a,b){a=a|0;b=b|0;return cA[a&4095](b|0)|0}function aHF(a){a=a|0;return ag(0,a|0)|0}function aHG(a){a=a|0;return ag(1,a|0)|0}function aHH(a){a=a|0;return ag(2,a|0)|0}function aHI(a){a=a|0;return ag(3,a|0)|0}function aHJ(a){a=a|0;return ag(4,a|0)|0}function aHK(a){a=a|0;return ag(5,a|0)|0}function aHL(a){a=a|0;return ag(6,a|0)|0}function aHM(a){a=a|0;return ag(7,a|0)|0}function aHN(a){a=a|0;return ag(8,a|0)|0}function aHO(a){a=a|0;return ag(9,a|0)|0}function aHP(a){a=a|0;return ag(10,a|0)|0}function aHQ(a){a=a|0;return ag(11,a|0)|0}function aHR(a){a=a|0;return ag(12,a|0)|0}function aHS(a){a=a|0;return ag(13,a|0)|0}function aHT(a){a=a|0;return ag(14,a|0)|0}function aHU(a){a=a|0;return ag(15,a|0)|0}function aHV(a){a=a|0;return ag(16,a|0)|0}function aHW(a){a=a|0;return ag(17,a|0)|0}function aHX(a){a=a|0;return ag(18,a|0)|0}function aHY(a){a=a|0;return ag(19,a|0)|0}function aHZ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;i=i|0;j=+j;return cB[a&63](b|0,c|0,d|0,e|0,f|0,g|0,+h,i|0,+j)|0}function aH_(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(0,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH$(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(1,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH0(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(2,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH1(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(3,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH2(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(4,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH3(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(5,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH4(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(6,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH5(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(7,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH6(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(8,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH7(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(9,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH8(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(10,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH9(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(11,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aIa(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(12,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aIb(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(13,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aIc(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(14,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aId(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(15,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aIe(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(16,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aIf(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(17,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aIg(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(18,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aIh(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(19,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aIi(a,b,c,d,e,f){a=a|0;b=b|0;c=+c;d=+d;e=+e;f=f|0;cC[a&63](b|0,+c,+d,+e,f|0)}function aIj(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(0,a|0,+b,+c,+d,e|0)}function aIk(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(1,a|0,+b,+c,+d,e|0)}function aIl(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(2,a|0,+b,+c,+d,e|0)}function aIm(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(3,a|0,+b,+c,+d,e|0)}function aIn(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(4,a|0,+b,+c,+d,e|0)}function aIo(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(5,a|0,+b,+c,+d,e|0)}function aIp(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(6,a|0,+b,+c,+d,e|0)}function aIq(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(7,a|0,+b,+c,+d,e|0)}function aIr(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(8,a|0,+b,+c,+d,e|0)}function aIs(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(9,a|0,+b,+c,+d,e|0)}function aIt(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(10,a|0,+b,+c,+d,e|0)}function aIu(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(11,a|0,+b,+c,+d,e|0)}function aIv(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(12,a|0,+b,+c,+d,e|0)}function aIw(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(13,a|0,+b,+c,+d,e|0)}function aIx(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(14,a|0,+b,+c,+d,e|0)}function aIy(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(15,a|0,+b,+c,+d,e|0)}function aIz(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(16,a|0,+b,+c,+d,e|0)}function aIA(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(17,a|0,+b,+c,+d,e|0)}function aIB(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(18,a|0,+b,+c,+d,e|0)}function aIC(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(19,a|0,+b,+c,+d,e|0)}function aID(a,b,c,d,e){a=a|0;b=+b;c=c|0;d=d|0;e=e|0;return cD[a&63](+b,c|0,d|0,e|0)|0}function aIE(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(0,+a,b|0,c|0,d|0)|0}function aIF(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(1,+a,b|0,c|0,d|0)|0}function aIG(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(2,+a,b|0,c|0,d|0)|0}function aIH(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(3,+a,b|0,c|0,d|0)|0}function aII(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(4,+a,b|0,c|0,d|0)|0}function aIJ(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(5,+a,b|0,c|0,d|0)|0}function aIK(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(6,+a,b|0,c|0,d|0)|0}function aIL(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(7,+a,b|0,c|0,d|0)|0}function aIM(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(8,+a,b|0,c|0,d|0)|0}function aIN(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(9,+a,b|0,c|0,d|0)|0}function aIO(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(10,+a,b|0,c|0,d|0)|0}function aIP(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(11,+a,b|0,c|0,d|0)|0}function aIQ(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(12,+a,b|0,c|0,d|0)|0}function aIR(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(13,+a,b|0,c|0,d|0)|0}function aIS(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(14,+a,b|0,c|0,d|0)|0}function aIT(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(15,+a,b|0,c|0,d|0)|0}function aIU(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(16,+a,b|0,c|0,d|0)|0}function aIV(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(17,+a,b|0,c|0,d|0)|0}function aIW(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(18,+a,b|0,c|0,d|0)|0}function aIX(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(19,+a,b|0,c|0,d|0)|0}function aIY(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;cE[a&127](b|0,c|0,+d,e|0)}function aIZ(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(0,a|0,b|0,+c,d|0)}function aI_(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(1,a|0,b|0,+c,d|0)}function aI$(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(2,a|0,b|0,+c,d|0)}function aI0(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(3,a|0,b|0,+c,d|0)}function aI1(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(4,a|0,b|0,+c,d|0)}function aI2(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(5,a|0,b|0,+c,d|0)}function aI3(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(6,a|0,b|0,+c,d|0)}function aI4(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(7,a|0,b|0,+c,d|0)}function aI5(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(8,a|0,b|0,+c,d|0)}function aI6(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(9,a|0,b|0,+c,d|0)}function aI7(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(10,a|0,b|0,+c,d|0)}function aI8(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(11,a|0,b|0,+c,d|0)}function aI9(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(12,a|0,b|0,+c,d|0)}function aJa(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(13,a|0,b|0,+c,d|0)}function aJb(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(14,a|0,b|0,+c,d|0)}function aJc(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(15,a|0,b|0,+c,d|0)}function aJd(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(16,a|0,b|0,+c,d|0)}function aJe(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(17,a|0,b|0,+c,d|0)}function aJf(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(18,a|0,b|0,+c,d|0)}function aJg(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(19,a|0,b|0,+c,d|0)}function aJh(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;cF[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aJi(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJj(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJk(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJl(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJm(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJn(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJo(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJp(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJq(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJr(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJs(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJt(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJu(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJv(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJw(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJx(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJy(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJz(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJA(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJB(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJC(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;i=+i;cG[a&63](b|0,c|0,d|0,e|0,f|0,g|0,+h,+i)}function aJD(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(0,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJE(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(1,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJF(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(2,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJG(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(3,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJH(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(4,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJI(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(5,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJJ(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(6,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJK(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(7,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJL(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(8,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJM(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(9,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJN(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(10,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJO(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(11,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(12,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJQ(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(13,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJR(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(14,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJS(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(15,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJT(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(16,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJU(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(17,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJV(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(18,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJW(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(19,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJX(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;h=h|0;return cH[a&63](b|0,c|0,d|0,+e,f|0,g|0,h|0)|0}function aJY(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(0,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJZ(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(1,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ_(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(2,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ$(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(3,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ0(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(4,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ1(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(5,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ2(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(6,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ3(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(7,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ4(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(8,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ5(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(9,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ6(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(10,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ7(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(11,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ8(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(12,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ9(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(13,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aKa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(14,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aKb(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(15,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aKc(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(16,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aKd(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(17,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aKe(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(18,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aKf(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(19,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aKg(a,b,c,d,e,f,g,h,i,j,k,l,m,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;return cI[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0,n|0)|0}function aKh(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKi(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKj(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKk(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKl(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKm(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKn(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKo(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKp(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKq(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKr(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKs(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKt(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKu(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKv(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKw(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKx(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKy(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKz(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKA(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKB(a,b,c,d,e,f){a=a|0;b=b|0;c=+c;d=+d;e=+e;f=+f;cJ[a&63](b|0,+c,+d,+e,+f)}function aKC(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(0,a|0,+b,+c,+d,+e)}function aKD(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(1,a|0,+b,+c,+d,+e)}function aKE(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(2,a|0,+b,+c,+d,+e)}function aKF(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(3,a|0,+b,+c,+d,+e)}function aKG(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(4,a|0,+b,+c,+d,+e)}function aKH(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(5,a|0,+b,+c,+d,+e)}function aKI(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(6,a|0,+b,+c,+d,+e)}function aKJ(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(7,a|0,+b,+c,+d,+e)}function aKK(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(8,a|0,+b,+c,+d,+e)}function aKL(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(9,a|0,+b,+c,+d,+e)}function aKM(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(10,a|0,+b,+c,+d,+e)}function aKN(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(11,a|0,+b,+c,+d,+e)}function aKO(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(12,a|0,+b,+c,+d,+e)}function aKP(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(13,a|0,+b,+c,+d,+e)}function aKQ(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(14,a|0,+b,+c,+d,+e)}function aKR(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(15,a|0,+b,+c,+d,+e)}function aKS(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(16,a|0,+b,+c,+d,+e)}function aKT(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(17,a|0,+b,+c,+d,+e)}function aKU(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(18,a|0,+b,+c,+d,+e)}function aKV(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(19,a|0,+b,+c,+d,+e)}function aKW(a,b,c,d,e,f,g){a=a|0;b=b|0;c=+c;d=+d;e=e|0;f=f|0;g=g|0;cK[a&63](b|0,+c,+d,e|0,f|0,g|0)}function aKX(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(0,a|0,+b,+c,d|0,e|0,f|0)}function aKY(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(1,a|0,+b,+c,d|0,e|0,f|0)}function aKZ(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(2,a|0,+b,+c,d|0,e|0,f|0)}function aK_(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(3,a|0,+b,+c,d|0,e|0,f|0)}function aK$(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(4,a|0,+b,+c,d|0,e|0,f|0)}function aK0(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(5,a|0,+b,+c,d|0,e|0,f|0)}function aK1(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(6,a|0,+b,+c,d|0,e|0,f|0)}function aK2(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(7,a|0,+b,+c,d|0,e|0,f|0)}function aK3(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(8,a|0,+b,+c,d|0,e|0,f|0)}function aK4(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(9,a|0,+b,+c,d|0,e|0,f|0)}function aK5(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(10,a|0,+b,+c,d|0,e|0,f|0)}function aK6(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(11,a|0,+b,+c,d|0,e|0,f|0)}function aK7(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(12,a|0,+b,+c,d|0,e|0,f|0)}function aK8(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(13,a|0,+b,+c,d|0,e|0,f|0)}function aK9(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(14,a|0,+b,+c,d|0,e|0,f|0)}function aLa(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(15,a|0,+b,+c,d|0,e|0,f|0)}function aLb(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(16,a|0,+b,+c,d|0,e|0,f|0)}function aLc(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(17,a|0,+b,+c,d|0,e|0,f|0)}function aLd(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(18,a|0,+b,+c,d|0,e|0,f|0)}function aLe(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(19,a|0,+b,+c,d|0,e|0,f|0)}function aLf(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return cL[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aLg(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLh(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLi(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLj(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLk(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLl(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLm(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLn(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLo(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLp(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLq(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLr(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLs(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLt(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLu(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLv(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLw(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLx(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLy(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLz(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLA(a,b,c,d,e,f,g){a=a|0;b=b|0;c=+c;d=d|0;e=+e;f=f|0;g=g|0;return+cM[a&63](b|0,+c,d|0,+e,f|0,g|0)}function aLB(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(0,a|0,+b,c|0,+d,e|0,f|0)}function aLC(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(1,a|0,+b,c|0,+d,e|0,f|0)}function aLD(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(2,a|0,+b,c|0,+d,e|0,f|0)}function aLE(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(3,a|0,+b,c|0,+d,e|0,f|0)}function aLF(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(4,a|0,+b,c|0,+d,e|0,f|0)}function aLG(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(5,a|0,+b,c|0,+d,e|0,f|0)}function aLH(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(6,a|0,+b,c|0,+d,e|0,f|0)}function aLI(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(7,a|0,+b,c|0,+d,e|0,f|0)}function aLJ(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(8,a|0,+b,c|0,+d,e|0,f|0)}function aLK(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(9,a|0,+b,c|0,+d,e|0,f|0)}function aLL(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(10,a|0,+b,c|0,+d,e|0,f|0)}function aLM(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(11,a|0,+b,c|0,+d,e|0,f|0)}function aLN(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(12,a|0,+b,c|0,+d,e|0,f|0)}function aLO(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(13,a|0,+b,c|0,+d,e|0,f|0)}function aLP(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(14,a|0,+b,c|0,+d,e|0,f|0)}function aLQ(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(15,a|0,+b,c|0,+d,e|0,f|0)}function aLR(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(16,a|0,+b,c|0,+d,e|0,f|0)}function aLS(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(17,a|0,+b,c|0,+d,e|0,f|0)}function aLT(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(18,a|0,+b,c|0,+d,e|0,f|0)}function aLU(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(19,a|0,+b,c|0,+d,e|0,f|0)}function aLV(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return+cN[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)}function aLW(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aLX(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aLY(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aLZ(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL_(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL$(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL0(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL1(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL2(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL3(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL4(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL5(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL6(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL7(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL8(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL9(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aMa(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aMb(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aMc(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aMd(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aMe(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+cO[a&63](b|0,c|0,+d,e|0,f|0)}function aMf(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(0,a|0,b|0,+c,d|0,e|0)}function aMg(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(1,a|0,b|0,+c,d|0,e|0)}function aMh(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(2,a|0,b|0,+c,d|0,e|0)}function aMi(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(3,a|0,b|0,+c,d|0,e|0)}function aMj(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(4,a|0,b|0,+c,d|0,e|0)}function aMk(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(5,a|0,b|0,+c,d|0,e|0)}function aMl(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(6,a|0,b|0,+c,d|0,e|0)}function aMm(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(7,a|0,b|0,+c,d|0,e|0)}function aMn(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(8,a|0,b|0,+c,d|0,e|0)}function aMo(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(9,a|0,b|0,+c,d|0,e|0)}function aMp(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(10,a|0,b|0,+c,d|0,e|0)}function aMq(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(11,a|0,b|0,+c,d|0,e|0)}function aMr(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(12,a|0,b|0,+c,d|0,e|0)}function aMs(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(13,a|0,b|0,+c,d|0,e|0)}function aMt(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(14,a|0,b|0,+c,d|0,e|0)}function aMu(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(15,a|0,b|0,+c,d|0,e|0)}function aMv(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(16,a|0,b|0,+c,d|0,e|0)}function aMw(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(17,a|0,b|0,+c,d|0,e|0)}function aMx(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(18,a|0,b|0,+c,d|0,e|0)}function aMy(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(19,a|0,b|0,+c,d|0,e|0)}function aMz(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;return cP[a&63](+b,+c,+d)|0}function aMA(a,b,c){a=+a;b=+b;c=+c;return ag(0,+a,+b,+c)|0}function aMB(a,b,c){a=+a;b=+b;c=+c;return ag(1,+a,+b,+c)|0}function aMC(a,b,c){a=+a;b=+b;c=+c;return ag(2,+a,+b,+c)|0}function aMD(a,b,c){a=+a;b=+b;c=+c;return ag(3,+a,+b,+c)|0}function aME(a,b,c){a=+a;b=+b;c=+c;return ag(4,+a,+b,+c)|0}function aMF(a,b,c){a=+a;b=+b;c=+c;return ag(5,+a,+b,+c)|0}function aMG(a,b,c){a=+a;b=+b;c=+c;return ag(6,+a,+b,+c)|0}function aMH(a,b,c){a=+a;b=+b;c=+c;return ag(7,+a,+b,+c)|0}function aMI(a,b,c){a=+a;b=+b;c=+c;return ag(8,+a,+b,+c)|0}function aMJ(a,b,c){a=+a;b=+b;c=+c;return ag(9,+a,+b,+c)|0}function aMK(a,b,c){a=+a;b=+b;c=+c;return ag(10,+a,+b,+c)|0}function aML(a,b,c){a=+a;b=+b;c=+c;return ag(11,+a,+b,+c)|0}function aMM(a,b,c){a=+a;b=+b;c=+c;return ag(12,+a,+b,+c)|0}function aMN(a,b,c){a=+a;b=+b;c=+c;return ag(13,+a,+b,+c)|0}function aMO(a,b,c){a=+a;b=+b;c=+c;return ag(14,+a,+b,+c)|0}function aMP(a,b,c){a=+a;b=+b;c=+c;return ag(15,+a,+b,+c)|0}function aMQ(a,b,c){a=+a;b=+b;c=+c;return ag(16,+a,+b,+c)|0}function aMR(a,b,c){a=+a;b=+b;c=+c;return ag(17,+a,+b,+c)|0}function aMS(a,b,c){a=+a;b=+b;c=+c;return ag(18,+a,+b,+c)|0}function aMT(a,b,c){a=+a;b=+b;c=+c;return ag(19,+a,+b,+c)|0}function aMU(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;cQ[a&63](b|0,c|0,+d,+e)}function aMV(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(0,a|0,b|0,+c,+d)}function aMW(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(1,a|0,b|0,+c,+d)}function aMX(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(2,a|0,b|0,+c,+d)}function aMY(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(3,a|0,b|0,+c,+d)}function aMZ(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(4,a|0,b|0,+c,+d)}function aM_(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(5,a|0,b|0,+c,+d)}function aM$(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(6,a|0,b|0,+c,+d)}function aM0(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(7,a|0,b|0,+c,+d)}function aM1(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(8,a|0,b|0,+c,+d)}function aM2(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(9,a|0,b|0,+c,+d)}function aM3(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(10,a|0,b|0,+c,+d)}function aM4(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(11,a|0,b|0,+c,+d)}function aM5(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(12,a|0,b|0,+c,+d)}function aM6(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(13,a|0,b|0,+c,+d)}function aM7(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(14,a|0,b|0,+c,+d)}function aM8(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(15,a|0,b|0,+c,+d)}function aM9(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(16,a|0,b|0,+c,+d)}function aNa(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(17,a|0,b|0,+c,+d)}function aNb(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(18,a|0,b|0,+c,+d)}function aNc(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(19,a|0,b|0,+c,+d)}function aNd(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;return cR[a&63](b|0,+c,d|0)|0}function aNe(a,b,c){a=a|0;b=+b;c=c|0;return ag(0,a|0,+b,c|0)|0}function aNf(a,b,c){a=a|0;b=+b;c=c|0;return ag(1,a|0,+b,c|0)|0}function aNg(a,b,c){a=a|0;b=+b;c=c|0;return ag(2,a|0,+b,c|0)|0}function aNh(a,b,c){a=a|0;b=+b;c=c|0;return ag(3,a|0,+b,c|0)|0}function aNi(a,b,c){a=a|0;b=+b;c=c|0;return ag(4,a|0,+b,c|0)|0}function aNj(a,b,c){a=a|0;b=+b;c=c|0;return ag(5,a|0,+b,c|0)|0}function aNk(a,b,c){a=a|0;b=+b;c=c|0;return ag(6,a|0,+b,c|0)|0}function aNl(a,b,c){a=a|0;b=+b;c=c|0;return ag(7,a|0,+b,c|0)|0}function aNm(a,b,c){a=a|0;b=+b;c=c|0;return ag(8,a|0,+b,c|0)|0}function aNn(a,b,c){a=a|0;b=+b;c=c|0;return ag(9,a|0,+b,c|0)|0}function aNo(a,b,c){a=a|0;b=+b;c=c|0;return ag(10,a|0,+b,c|0)|0}function aNp(a,b,c){a=a|0;b=+b;c=c|0;return ag(11,a|0,+b,c|0)|0}function aNq(a,b,c){a=a|0;b=+b;c=c|0;return ag(12,a|0,+b,c|0)|0}function aNr(a,b,c){a=a|0;b=+b;c=c|0;return ag(13,a|0,+b,c|0)|0}function aNs(a,b,c){a=a|0;b=+b;c=c|0;return ag(14,a|0,+b,c|0)|0}function aNt(a,b,c){a=a|0;b=+b;c=c|0;return ag(15,a|0,+b,c|0)|0}function aNu(a,b,c){a=a|0;b=+b;c=c|0;return ag(16,a|0,+b,c|0)|0}function aNv(a,b,c){a=a|0;b=+b;c=c|0;return ag(17,a|0,+b,c|0)|0}function aNw(a,b,c){a=a|0;b=+b;c=c|0;return ag(18,a|0,+b,c|0)|0}function aNx(a,b,c){a=a|0;b=+b;c=c|0;return ag(19,a|0,+b,c|0)|0}function aNy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return cS[a&511](b|0,c|0,d|0)|0}function aNz(a,b,c){a=a|0;b=b|0;c=c|0;return ag(0,a|0,b|0,c|0)|0}function aNA(a,b,c){a=a|0;b=b|0;c=c|0;return ag(1,a|0,b|0,c|0)|0}function aNB(a,b,c){a=a|0;b=b|0;c=c|0;return ag(2,a|0,b|0,c|0)|0}function aNC(a,b,c){a=a|0;b=b|0;c=c|0;return ag(3,a|0,b|0,c|0)|0}function aND(a,b,c){a=a|0;b=b|0;c=c|0;return ag(4,a|0,b|0,c|0)|0}function aNE(a,b,c){a=a|0;b=b|0;c=c|0;return ag(5,a|0,b|0,c|0)|0}function aNF(a,b,c){a=a|0;b=b|0;c=c|0;return ag(6,a|0,b|0,c|0)|0}function aNG(a,b,c){a=a|0;b=b|0;c=c|0;return ag(7,a|0,b|0,c|0)|0}function aNH(a,b,c){a=a|0;b=b|0;c=c|0;return ag(8,a|0,b|0,c|0)|0}function aNI(a,b,c){a=a|0;b=b|0;c=c|0;return ag(9,a|0,b|0,c|0)|0}function aNJ(a,b,c){a=a|0;b=b|0;c=c|0;return ag(10,a|0,b|0,c|0)|0}function aNK(a,b,c){a=a|0;b=b|0;c=c|0;return ag(11,a|0,b|0,c|0)|0}function aNL(a,b,c){a=a|0;b=b|0;c=c|0;return ag(12,a|0,b|0,c|0)|0}function aNM(a,b,c){a=a|0;b=b|0;c=c|0;return ag(13,a|0,b|0,c|0)|0}function aNN(a,b,c){a=a|0;b=b|0;c=c|0;return ag(14,a|0,b|0,c|0)|0}function aNO(a,b,c){a=a|0;b=b|0;c=c|0;return ag(15,a|0,b|0,c|0)|0}function aNP(a,b,c){a=a|0;b=b|0;c=c|0;return ag(16,a|0,b|0,c|0)|0}function aNQ(a,b,c){a=a|0;b=b|0;c=c|0;return ag(17,a|0,b|0,c|0)|0}function aNR(a,b,c){a=a|0;b=b|0;c=c|0;return ag(18,a|0,b|0,c|0)|0}function aNS(a,b,c){a=a|0;b=b|0;c=c|0;return ag(19,a|0,b|0,c|0)|0}function aNT(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;g=+g;h=+h;i=+i;j=+j;k=k|0;cT[a&63](b|0,c|0,d|0,e|0,+f,+g,+h,+i,+j,k|0)}function aNU(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(0,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aNV(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(1,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aNW(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(2,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aNX(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(3,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aNY(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(4,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aNZ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(5,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN_(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(6,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN$(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(7,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN0(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(8,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN1(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(9,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN2(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(10,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN3(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(11,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN4(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(12,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN5(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(13,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN6(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(14,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN7(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(15,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN8(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(16,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN9(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(17,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aOa(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(18,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aOb(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(19,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aOc(a,b,c){a=a|0;b=b|0;c=+c;return+cU[a&127](b|0,+c)}function aOd(a,b){a=a|0;b=+b;return+ag(0,a|0,+b)}function aOe(a,b){a=a|0;b=+b;return+ag(1,a|0,+b)}function aOf(a,b){a=a|0;b=+b;return+ag(2,a|0,+b)}function aOg(a,b){a=a|0;b=+b;return+ag(3,a|0,+b)}function aOh(a,b){a=a|0;b=+b;return+ag(4,a|0,+b)}function aOi(a,b){a=a|0;b=+b;return+ag(5,a|0,+b)}function aOj(a,b){a=a|0;b=+b;return+ag(6,a|0,+b)}function aOk(a,b){a=a|0;b=+b;return+ag(7,a|0,+b)}function aOl(a,b){a=a|0;b=+b;return+ag(8,a|0,+b)}function aOm(a,b){a=a|0;b=+b;return+ag(9,a|0,+b)}function aOn(a,b){a=a|0;b=+b;return+ag(10,a|0,+b)}function aOo(a,b){a=a|0;b=+b;return+ag(11,a|0,+b)}function aOp(a,b){a=a|0;b=+b;return+ag(12,a|0,+b)}function aOq(a,b){a=a|0;b=+b;return+ag(13,a|0,+b)}function aOr(a,b){a=a|0;b=+b;return+ag(14,a|0,+b)}function aOs(a,b){a=a|0;b=+b;return+ag(15,a|0,+b)}function aOt(a,b){a=a|0;b=+b;return+ag(16,a|0,+b)}function aOu(a,b){a=a|0;b=+b;return+ag(17,a|0,+b)}function aOv(a,b){a=a|0;b=+b;return+ag(18,a|0,+b)}function aOw(a,b){a=a|0;b=+b;return+ag(19,a|0,+b)}function aOx(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;return cV[a&63](b|0,c|0,d|0,+e,+f)|0}function aOy(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(0,a|0,b|0,c|0,+d,+e)|0}function aOz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(1,a|0,b|0,c|0,+d,+e)|0}function aOA(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(2,a|0,b|0,c|0,+d,+e)|0}function aOB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(3,a|0,b|0,c|0,+d,+e)|0}function aOC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(4,a|0,b|0,c|0,+d,+e)|0}function aOD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(5,a|0,b|0,c|0,+d,+e)|0}function aOE(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(6,a|0,b|0,c|0,+d,+e)|0}function aOF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(7,a|0,b|0,c|0,+d,+e)|0}function aOG(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(8,a|0,b|0,c|0,+d,+e)|0}function aOH(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(9,a|0,b|0,c|0,+d,+e)|0}function aOI(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(10,a|0,b|0,c|0,+d,+e)|0}function aOJ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(11,a|0,b|0,c|0,+d,+e)|0}function aOK(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(12,a|0,b|0,c|0,+d,+e)|0}function aOL(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(13,a|0,b|0,c|0,+d,+e)|0}function aOM(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(14,a|0,b|0,c|0,+d,+e)|0}function aON(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(15,a|0,b|0,c|0,+d,+e)|0}function aOO(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(16,a|0,b|0,c|0,+d,+e)|0}function aOP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(17,a|0,b|0,c|0,+d,+e)|0}function aOQ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(18,a|0,b|0,c|0,+d,+e)|0}function aOR(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(19,a|0,b|0,c|0,+d,+e)|0}function aOS(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;cW[a&63](b|0,+c,+d)}function aOT(a,b,c){a=a|0;b=+b;c=+c;ag(0,a|0,+b,+c)}function aOU(a,b,c){a=a|0;b=+b;c=+c;ag(1,a|0,+b,+c)}function aOV(a,b,c){a=a|0;b=+b;c=+c;ag(2,a|0,+b,+c)}function aOW(a,b,c){a=a|0;b=+b;c=+c;ag(3,a|0,+b,+c)}function aOX(a,b,c){a=a|0;b=+b;c=+c;ag(4,a|0,+b,+c)}function aOY(a,b,c){a=a|0;b=+b;c=+c;ag(5,a|0,+b,+c)}function aOZ(a,b,c){a=a|0;b=+b;c=+c;ag(6,a|0,+b,+c)}function aO_(a,b,c){a=a|0;b=+b;c=+c;ag(7,a|0,+b,+c)}function aO$(a,b,c){a=a|0;b=+b;c=+c;ag(8,a|0,+b,+c)}function aO0(a,b,c){a=a|0;b=+b;c=+c;ag(9,a|0,+b,+c)}function aO1(a,b,c){a=a|0;b=+b;c=+c;ag(10,a|0,+b,+c)}function aO2(a,b,c){a=a|0;b=+b;c=+c;ag(11,a|0,+b,+c)}function aO3(a,b,c){a=a|0;b=+b;c=+c;ag(12,a|0,+b,+c)}function aO4(a,b,c){a=a|0;b=+b;c=+c;ag(13,a|0,+b,+c)}function aO5(a,b,c){a=a|0;b=+b;c=+c;ag(14,a|0,+b,+c)}function aO6(a,b,c){a=a|0;b=+b;c=+c;ag(15,a|0,+b,+c)}function aO7(a,b,c){a=a|0;b=+b;c=+c;ag(16,a|0,+b,+c)}function aO8(a,b,c){a=a|0;b=+b;c=+c;ag(17,a|0,+b,+c)}function aO9(a,b,c){a=a|0;b=+b;c=+c;ag(18,a|0,+b,+c)}function aPa(a,b,c){a=a|0;b=+b;c=+c;ag(19,a|0,+b,+c)}function aPb(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;cX[a&255](b|0,+c,d|0)}function aPc(a,b,c){a=a|0;b=+b;c=c|0;ag(0,a|0,+b,c|0)}function aPd(a,b,c){a=a|0;b=+b;c=c|0;ag(1,a|0,+b,c|0)}function aPe(a,b,c){a=a|0;b=+b;c=c|0;ag(2,a|0,+b,c|0)}function aPf(a,b,c){a=a|0;b=+b;c=c|0;ag(3,a|0,+b,c|0)}function aPg(a,b,c){a=a|0;b=+b;c=c|0;ag(4,a|0,+b,c|0)}function aPh(a,b,c){a=a|0;b=+b;c=c|0;ag(5,a|0,+b,c|0)}function aPi(a,b,c){a=a|0;b=+b;c=c|0;ag(6,a|0,+b,c|0)}function aPj(a,b,c){a=a|0;b=+b;c=c|0;ag(7,a|0,+b,c|0)}function aPk(a,b,c){a=a|0;b=+b;c=c|0;ag(8,a|0,+b,c|0)}function aPl(a,b,c){a=a|0;b=+b;c=c|0;ag(9,a|0,+b,c|0)}function aPm(a,b,c){a=a|0;b=+b;c=c|0;ag(10,a|0,+b,c|0)}function aPn(a,b,c){a=a|0;b=+b;c=c|0;ag(11,a|0,+b,c|0)}function aPo(a,b,c){a=a|0;b=+b;c=c|0;ag(12,a|0,+b,c|0)}function aPp(a,b,c){a=a|0;b=+b;c=c|0;ag(13,a|0,+b,c|0)}function aPq(a,b,c){a=a|0;b=+b;c=c|0;ag(14,a|0,+b,c|0)}function aPr(a,b,c){a=a|0;b=+b;c=c|0;ag(15,a|0,+b,c|0)}function aPs(a,b,c){a=a|0;b=+b;c=c|0;ag(16,a|0,+b,c|0)}function aPt(a,b,c){a=a|0;b=+b;c=c|0;ag(17,a|0,+b,c|0)}function aPu(a,b,c){a=a|0;b=+b;c=c|0;ag(18,a|0,+b,c|0)}function aPv(a,b,c){a=a|0;b=+b;c=c|0;ag(19,a|0,+b,c|0)}function aPw(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;cY[a&63](b|0,c|0,d|0,e|0,f|0,+g)}function aPx(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(0,a|0,b|0,c|0,d|0,e|0,+f)}function aPy(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(1,a|0,b|0,c|0,d|0,e|0,+f)}function aPz(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(2,a|0,b|0,c|0,d|0,e|0,+f)}function aPA(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(3,a|0,b|0,c|0,d|0,e|0,+f)}function aPB(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(4,a|0,b|0,c|0,d|0,e|0,+f)}function aPC(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(5,a|0,b|0,c|0,d|0,e|0,+f)}function aPD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(6,a|0,b|0,c|0,d|0,e|0,+f)}function aPE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(7,a|0,b|0,c|0,d|0,e|0,+f)}function aPF(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(8,a|0,b|0,c|0,d|0,e|0,+f)}function aPG(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(9,a|0,b|0,c|0,d|0,e|0,+f)}function aPH(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(10,a|0,b|0,c|0,d|0,e|0,+f)}function aPI(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(11,a|0,b|0,c|0,d|0,e|0,+f)}function aPJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(12,a|0,b|0,c|0,d|0,e|0,+f)}function aPK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(13,a|0,b|0,c|0,d|0,e|0,+f)}function aPL(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(14,a|0,b|0,c|0,d|0,e|0,+f)}function aPM(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(15,a|0,b|0,c|0,d|0,e|0,+f)}function aPN(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(16,a|0,b|0,c|0,d|0,e|0,+f)}function aPO(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(17,a|0,b|0,c|0,d|0,e|0,+f)}function aPP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(18,a|0,b|0,c|0,d|0,e|0,+f)}function aPQ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(19,a|0,b|0,c|0,d|0,e|0,+f)}function aPR(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=+e;cZ[a&127](b|0,+c,+d,+e)}function aPS(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(0,a|0,+b,+c,+d)}function aPT(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(1,a|0,+b,+c,+d)}function aPU(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(2,a|0,+b,+c,+d)}function aPV(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(3,a|0,+b,+c,+d)}function aPW(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(4,a|0,+b,+c,+d)}function aPX(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(5,a|0,+b,+c,+d)}function aPY(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(6,a|0,+b,+c,+d)}function aPZ(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(7,a|0,+b,+c,+d)}function aP_(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(8,a|0,+b,+c,+d)}function aP$(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(9,a|0,+b,+c,+d)}function aP0(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(10,a|0,+b,+c,+d)}function aP1(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(11,a|0,+b,+c,+d)}function aP2(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(12,a|0,+b,+c,+d)}function aP3(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(13,a|0,+b,+c,+d)}function aP4(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(14,a|0,+b,+c,+d)}function aP5(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(15,a|0,+b,+c,+d)}function aP6(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(16,a|0,+b,+c,+d)}function aP7(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(17,a|0,+b,+c,+d)}function aP8(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(18,a|0,+b,+c,+d)}function aP9(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(19,a|0,+b,+c,+d)}function aQa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;c_[a&127](b|0,c|0,d|0,e|0,f|0,g|0)}function aQb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(0,a|0,b|0,c|0,d|0,e|0,f|0)}function aQc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(1,a|0,b|0,c|0,d|0,e|0,f|0)}function aQd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(2,a|0,b|0,c|0,d|0,e|0,f|0)}function aQe(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(3,a|0,b|0,c|0,d|0,e|0,f|0)}function aQf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(4,a|0,b|0,c|0,d|0,e|0,f|0)}function aQg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(5,a|0,b|0,c|0,d|0,e|0,f|0)}function aQh(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(6,a|0,b|0,c|0,d|0,e|0,f|0)}function aQi(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(7,a|0,b|0,c|0,d|0,e|0,f|0)}function aQj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(8,a|0,b|0,c|0,d|0,e|0,f|0)}function aQk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(9,a|0,b|0,c|0,d|0,e|0,f|0)}function aQl(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(10,a|0,b|0,c|0,d|0,e|0,f|0)}function aQm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(11,a|0,b|0,c|0,d|0,e|0,f|0)}function aQn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(12,a|0,b|0,c|0,d|0,e|0,f|0)}function aQo(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(13,a|0,b|0,c|0,d|0,e|0,f|0)}function aQp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(14,a|0,b|0,c|0,d|0,e|0,f|0)}function aQq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(15,a|0,b|0,c|0,d|0,e|0,f|0)}function aQr(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(16,a|0,b|0,c|0,d|0,e|0,f|0)}function aQs(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(17,a|0,b|0,c|0,d|0,e|0,f|0)}function aQt(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(18,a|0,b|0,c|0,d|0,e|0,f|0)}function aQu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(19,a|0,b|0,c|0,d|0,e|0,f|0)}function aQv(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return+c$[a&63](b|0,c|0,+d,+e)}function aQw(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(0,a|0,b|0,+c,+d)}function aQx(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(1,a|0,b|0,+c,+d)}function aQy(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(2,a|0,b|0,+c,+d)}function aQz(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(3,a|0,b|0,+c,+d)}function aQA(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(4,a|0,b|0,+c,+d)}function aQB(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(5,a|0,b|0,+c,+d)}function aQC(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(6,a|0,b|0,+c,+d)}function aQD(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(7,a|0,b|0,+c,+d)}function aQE(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(8,a|0,b|0,+c,+d)}function aQF(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(9,a|0,b|0,+c,+d)}function aQG(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(10,a|0,b|0,+c,+d)}function aQH(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(11,a|0,b|0,+c,+d)}function aQI(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(12,a|0,b|0,+c,+d)}function aQJ(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(13,a|0,b|0,+c,+d)}function aQK(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(14,a|0,b|0,+c,+d)}function aQL(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(15,a|0,b|0,+c,+d)}function aQM(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(16,a|0,b|0,+c,+d)}function aQN(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(17,a|0,b|0,+c,+d)}function aQO(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(18,a|0,b|0,+c,+d)}function aQP(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(19,a|0,b|0,+c,+d)}function aQQ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return c0[a&127](b|0,c|0,+d)|0}function aQR(a,b,c){a=a|0;b=b|0;c=+c;return ag(0,a|0,b|0,+c)|0}function aQS(a,b,c){a=a|0;b=b|0;c=+c;return ag(1,a|0,b|0,+c)|0}function aQT(a,b,c){a=a|0;b=b|0;c=+c;return ag(2,a|0,b|0,+c)|0}function aQU(a,b,c){a=a|0;b=b|0;c=+c;return ag(3,a|0,b|0,+c)|0}function aQV(a,b,c){a=a|0;b=b|0;c=+c;return ag(4,a|0,b|0,+c)|0}function aQW(a,b,c){a=a|0;b=b|0;c=+c;return ag(5,a|0,b|0,+c)|0}function aQX(a,b,c){a=a|0;b=b|0;c=+c;return ag(6,a|0,b|0,+c)|0}function aQY(a,b,c){a=a|0;b=b|0;c=+c;return ag(7,a|0,b|0,+c)|0}function aQZ(a,b,c){a=a|0;b=b|0;c=+c;return ag(8,a|0,b|0,+c)|0}function aQ_(a,b,c){a=a|0;b=b|0;c=+c;return ag(9,a|0,b|0,+c)|0}function aQ$(a,b,c){a=a|0;b=b|0;c=+c;return ag(10,a|0,b|0,+c)|0}function aQ0(a,b,c){a=a|0;b=b|0;c=+c;return ag(11,a|0,b|0,+c)|0}function aQ1(a,b,c){a=a|0;b=b|0;c=+c;return ag(12,a|0,b|0,+c)|0}function aQ2(a,b,c){a=a|0;b=b|0;c=+c;return ag(13,a|0,b|0,+c)|0}function aQ3(a,b,c){a=a|0;b=b|0;c=+c;return ag(14,a|0,b|0,+c)|0}function aQ4(a,b,c){a=a|0;b=b|0;c=+c;return ag(15,a|0,b|0,+c)|0}function aQ5(a,b,c){a=a|0;b=b|0;c=+c;return ag(16,a|0,b|0,+c)|0}function aQ6(a,b,c){a=a|0;b=b|0;c=+c;return ag(17,a|0,b|0,+c)|0}function aQ7(a,b,c){a=a|0;b=b|0;c=+c;return ag(18,a|0,b|0,+c)|0}function aQ8(a,b,c){a=a|0;b=b|0;c=+c;return ag(19,a|0,b|0,+c)|0}function aQ9(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return c1[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function aRa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRb(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRc(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRd(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRe(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRf(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRg(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRh(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRi(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRj(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRk(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRl(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRm(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRn(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRo(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRp(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRq(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRr(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRs(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRt(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRu(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;c2[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aRv(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRw(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRx(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRy(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRz(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRA(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRB(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRC(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRD(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRE(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRF(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRG(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRH(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRI(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRJ(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRK(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRL(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRM(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRN(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRO(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;c3[a&63](b|0,+c,+d,+e,+f,+g,+h)}function aRQ(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(0,a|0,+b,+c,+d,+e,+f,+g)}function aRR(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(1,a|0,+b,+c,+d,+e,+f,+g)}function aRS(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(2,a|0,+b,+c,+d,+e,+f,+g)}function aRT(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(3,a|0,+b,+c,+d,+e,+f,+g)}function aRU(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(4,a|0,+b,+c,+d,+e,+f,+g)}function aRV(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(5,a|0,+b,+c,+d,+e,+f,+g)}function aRW(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(6,a|0,+b,+c,+d,+e,+f,+g)}function aRX(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(7,a|0,+b,+c,+d,+e,+f,+g)}function aRY(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(8,a|0,+b,+c,+d,+e,+f,+g)}function aRZ(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(9,a|0,+b,+c,+d,+e,+f,+g)}function aR_(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(10,a|0,+b,+c,+d,+e,+f,+g)}function aR$(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(11,a|0,+b,+c,+d,+e,+f,+g)}function aR0(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(12,a|0,+b,+c,+d,+e,+f,+g)}function aR1(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(13,a|0,+b,+c,+d,+e,+f,+g)}function aR2(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(14,a|0,+b,+c,+d,+e,+f,+g)}function aR3(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(15,a|0,+b,+c,+d,+e,+f,+g)}function aR4(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(16,a|0,+b,+c,+d,+e,+f,+g)}function aR5(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(17,a|0,+b,+c,+d,+e,+f,+g)}function aR6(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(18,a|0,+b,+c,+d,+e,+f,+g)}function aR7(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(19,a|0,+b,+c,+d,+e,+f,+g)}function aR8(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return+c4[a&127](b|0,c|0,d|0)}function aR9(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(0,a|0,b|0,c|0)}function aSa(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(1,a|0,b|0,c|0)}function aSb(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(2,a|0,b|0,c|0)}function aSc(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(3,a|0,b|0,c|0)}function aSd(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(4,a|0,b|0,c|0)}function aSe(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(5,a|0,b|0,c|0)}function aSf(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(6,a|0,b|0,c|0)}function aSg(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(7,a|0,b|0,c|0)}function aSh(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(8,a|0,b|0,c|0)}function aSi(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(9,a|0,b|0,c|0)}function aSj(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(10,a|0,b|0,c|0)}function aSk(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(11,a|0,b|0,c|0)}function aSl(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(12,a|0,b|0,c|0)}function aSm(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(13,a|0,b|0,c|0)}function aSn(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(14,a|0,b|0,c|0)}function aSo(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(15,a|0,b|0,c|0)}function aSp(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(16,a|0,b|0,c|0)}function aSq(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(17,a|0,b|0,c|0)}function aSr(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(18,a|0,b|0,c|0)}function aSs(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(19,a|0,b|0,c|0)}function aSt(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return c5[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)|0}function aSu(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSv(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSw(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSx(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSy(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSz(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSA(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSB(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSC(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSD(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSE(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSF(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSG(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSH(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSI(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSJ(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSK(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSL(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSM(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSN(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return+c6[a&63](b|0,c|0,+d)}function aSP(a,b,c){a=a|0;b=b|0;c=+c;return+ag(0,a|0,b|0,+c)}function aSQ(a,b,c){a=a|0;b=b|0;c=+c;return+ag(1,a|0,b|0,+c)}function aSR(a,b,c){a=a|0;b=b|0;c=+c;return+ag(2,a|0,b|0,+c)}function aSS(a,b,c){a=a|0;b=b|0;c=+c;return+ag(3,a|0,b|0,+c)}function aST(a,b,c){a=a|0;b=b|0;c=+c;return+ag(4,a|0,b|0,+c)}function aSU(a,b,c){a=a|0;b=b|0;c=+c;return+ag(5,a|0,b|0,+c)}function aSV(a,b,c){a=a|0;b=b|0;c=+c;return+ag(6,a|0,b|0,+c)}function aSW(a,b,c){a=a|0;b=b|0;c=+c;return+ag(7,a|0,b|0,+c)}function aSX(a,b,c){a=a|0;b=b|0;c=+c;return+ag(8,a|0,b|0,+c)}function aSY(a,b,c){a=a|0;b=b|0;c=+c;return+ag(9,a|0,b|0,+c)}function aSZ(a,b,c){a=a|0;b=b|0;c=+c;return+ag(10,a|0,b|0,+c)}function aS_(a,b,c){a=a|0;b=b|0;c=+c;return+ag(11,a|0,b|0,+c)}function aS$(a,b,c){a=a|0;b=b|0;c=+c;return+ag(12,a|0,b|0,+c)}function aS0(a,b,c){a=a|0;b=b|0;c=+c;return+ag(13,a|0,b|0,+c)}function aS1(a,b,c){a=a|0;b=b|0;c=+c;return+ag(14,a|0,b|0,+c)}function aS2(a,b,c){a=a|0;b=b|0;c=+c;return+ag(15,a|0,b|0,+c)}function aS3(a,b,c){a=a|0;b=b|0;c=+c;return+ag(16,a|0,b|0,+c)}function aS4(a,b,c){a=a|0;b=b|0;c=+c;return+ag(17,a|0,b|0,+c)}function aS5(a,b,c){a=a|0;b=b|0;c=+c;return+ag(18,a|0,b|0,+c)}function aS6(a,b,c){a=a|0;b=b|0;c=+c;return+ag(19,a|0,b|0,+c)}function aS7(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+c7[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aS8(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aS9(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTa(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTb(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTc(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTd(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTe(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTf(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTg(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTh(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTi(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTj(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTk(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTl(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTm(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTn(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTo(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTp(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTq(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTr(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTs(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;return c8[a&63](+b,c|0,d|0)|0}function aTt(a,b,c){a=+a;b=b|0;c=c|0;return ag(0,+a,b|0,c|0)|0}function aTu(a,b,c){a=+a;b=b|0;c=c|0;return ag(1,+a,b|0,c|0)|0}function aTv(a,b,c){a=+a;b=b|0;c=c|0;return ag(2,+a,b|0,c|0)|0}function aTw(a,b,c){a=+a;b=b|0;c=c|0;return ag(3,+a,b|0,c|0)|0}function aTx(a,b,c){a=+a;b=b|0;c=c|0;return ag(4,+a,b|0,c|0)|0}function aTy(a,b,c){a=+a;b=b|0;c=c|0;return ag(5,+a,b|0,c|0)|0}function aTz(a,b,c){a=+a;b=b|0;c=c|0;return ag(6,+a,b|0,c|0)|0}function aTA(a,b,c){a=+a;b=b|0;c=c|0;return ag(7,+a,b|0,c|0)|0}function aTB(a,b,c){a=+a;b=b|0;c=c|0;return ag(8,+a,b|0,c|0)|0}function aTC(a,b,c){a=+a;b=b|0;c=c|0;return ag(9,+a,b|0,c|0)|0}function aTD(a,b,c){a=+a;b=b|0;c=c|0;return ag(10,+a,b|0,c|0)|0}function aTE(a,b,c){a=+a;b=b|0;c=c|0;return ag(11,+a,b|0,c|0)|0}function aTF(a,b,c){a=+a;b=b|0;c=c|0;return ag(12,+a,b|0,c|0)|0}function aTG(a,b,c){a=+a;b=b|0;c=c|0;return ag(13,+a,b|0,c|0)|0}function aTH(a,b,c){a=+a;b=b|0;c=c|0;return ag(14,+a,b|0,c|0)|0}function aTI(a,b,c){a=+a;b=b|0;c=c|0;return ag(15,+a,b|0,c|0)|0}function aTJ(a,b,c){a=+a;b=b|0;c=c|0;return ag(16,+a,b|0,c|0)|0}function aTK(a,b,c){a=+a;b=b|0;c=c|0;return ag(17,+a,b|0,c|0)|0}function aTL(a,b,c){a=+a;b=b|0;c=c|0;return ag(18,+a,b|0,c|0)|0}function aTM(a,b,c){a=+a;b=b|0;c=c|0;return ag(19,+a,b|0,c|0)|0}function aTN(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=+c;d=+d;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+c9[a&63](b|0,+c,+d,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aTO(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(0,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTP(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(1,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTQ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(2,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTR(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(3,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTS(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(4,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTT(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(5,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTU(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(6,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTV(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(7,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTW(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(8,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTX(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(9,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTY(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(10,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTZ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(11,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aT_(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(12,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aT$(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(13,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aT0(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(14,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aT1(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(15,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aT2(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(16,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aT3(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(17,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aT4(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(18,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aT5(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(19,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aT6(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return da[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aT7(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aT8(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aT9(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUa(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUb(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUc(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUd(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUe(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUf(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUg(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUh(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUi(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUj(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUk(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUl(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUm(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUn(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUo(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUp(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUq(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUr(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return+db[a&127](b|0,c|0,d|0,e|0,f|0)}function aUs(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(0,a|0,b|0,c|0,d|0,e|0)}function aUt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(1,a|0,b|0,c|0,d|0,e|0)}function aUu(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(2,a|0,b|0,c|0,d|0,e|0)}function aUv(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(3,a|0,b|0,c|0,d|0,e|0)}function aUw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(4,a|0,b|0,c|0,d|0,e|0)}function aUx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(5,a|0,b|0,c|0,d|0,e|0)}function aUy(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(6,a|0,b|0,c|0,d|0,e|0)}function aUz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(7,a|0,b|0,c|0,d|0,e|0)}function aUA(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(8,a|0,b|0,c|0,d|0,e|0)}function aUB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(9,a|0,b|0,c|0,d|0,e|0)}function aUC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(10,a|0,b|0,c|0,d|0,e|0)}function aUD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(11,a|0,b|0,c|0,d|0,e|0)}function aUE(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(12,a|0,b|0,c|0,d|0,e|0)}function aUF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(13,a|0,b|0,c|0,d|0,e|0)}function aUG(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(14,a|0,b|0,c|0,d|0,e|0)}function aUH(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(15,a|0,b|0,c|0,d|0,e|0)}function aUI(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(16,a|0,b|0,c|0,d|0,e|0)}function aUJ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(17,a|0,b|0,c|0,d|0,e|0)}function aUK(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(18,a|0,b|0,c|0,d|0,e|0)}function aUL(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(19,a|0,b|0,c|0,d|0,e|0)}function aUM(a,b,c){a=a|0;b=b|0;c=+c;return dc[a&127](b|0,+c)|0}function aUN(a,b){a=a|0;b=+b;return ag(0,a|0,+b)|0}function aUO(a,b){a=a|0;b=+b;return ag(1,a|0,+b)|0}function aUP(a,b){a=a|0;b=+b;return ag(2,a|0,+b)|0}function aUQ(a,b){a=a|0;b=+b;return ag(3,a|0,+b)|0}function aUR(a,b){a=a|0;b=+b;return ag(4,a|0,+b)|0}function aUS(a,b){a=a|0;b=+b;return ag(5,a|0,+b)|0}function aUT(a,b){a=a|0;b=+b;return ag(6,a|0,+b)|0}function aUU(a,b){a=a|0;b=+b;return ag(7,a|0,+b)|0}function aUV(a,b){a=a|0;b=+b;return ag(8,a|0,+b)|0}function aUW(a,b){a=a|0;b=+b;return ag(9,a|0,+b)|0}function aUX(a,b){a=a|0;b=+b;return ag(10,a|0,+b)|0}function aUY(a,b){a=a|0;b=+b;return ag(11,a|0,+b)|0}function aUZ(a,b){a=a|0;b=+b;return ag(12,a|0,+b)|0}function aU_(a,b){a=a|0;b=+b;return ag(13,a|0,+b)|0}function aU$(a,b){a=a|0;b=+b;return ag(14,a|0,+b)|0}function aU0(a,b){a=a|0;b=+b;return ag(15,a|0,+b)|0}function aU1(a,b){a=a|0;b=+b;return ag(16,a|0,+b)|0}function aU2(a,b){a=a|0;b=+b;return ag(17,a|0,+b)|0}function aU3(a,b){a=a|0;b=+b;return ag(18,a|0,+b)|0}function aU4(a,b){a=a|0;b=+b;return ag(19,a|0,+b)|0}function aU5(a,b){a=a|0;b=+b;return dd[a&63](+b)|0}function aU6(a){a=+a;return ag(0,+a)|0}function aU7(a){a=+a;return ag(1,+a)|0}function aU8(a){a=+a;return ag(2,+a)|0}function aU9(a){a=+a;return ag(3,+a)|0}function aVa(a){a=+a;return ag(4,+a)|0}function aVb(a){a=+a;return ag(5,+a)|0}function aVc(a){a=+a;return ag(6,+a)|0}function aVd(a){a=+a;return ag(7,+a)|0}function aVe(a){a=+a;return ag(8,+a)|0}function aVf(a){a=+a;return ag(9,+a)|0}function aVg(a){a=+a;return ag(10,+a)|0}function aVh(a){a=+a;return ag(11,+a)|0}function aVi(a){a=+a;return ag(12,+a)|0}function aVj(a){a=+a;return ag(13,+a)|0}function aVk(a){a=+a;return ag(14,+a)|0}function aVl(a){a=+a;return ag(15,+a)|0}function aVm(a){a=+a;return ag(16,+a)|0}function aVn(a){a=+a;return ag(17,+a)|0}function aVo(a){a=+a;return ag(18,+a)|0}function aVp(a){a=+a;return ag(19,+a)|0}function aVq(a,b,c,d,e,f,g){a=a|0;b=b|0;c=+c;d=+d;e=+e;f=+f;g=+g;de[a&63](b|0,+c,+d,+e,+f,+g)}function aVr(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(0,a|0,+b,+c,+d,+e,+f)}function aVs(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(1,a|0,+b,+c,+d,+e,+f)}function aVt(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(2,a|0,+b,+c,+d,+e,+f)}function aVu(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(3,a|0,+b,+c,+d,+e,+f)}function aVv(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(4,a|0,+b,+c,+d,+e,+f)}function aVw(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(5,a|0,+b,+c,+d,+e,+f)}function aVx(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(6,a|0,+b,+c,+d,+e,+f)}function aVy(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(7,a|0,+b,+c,+d,+e,+f)}function aVz(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(8,a|0,+b,+c,+d,+e,+f)}function aVA(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(9,a|0,+b,+c,+d,+e,+f)}function aVB(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(10,a|0,+b,+c,+d,+e,+f)}function aVC(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(11,a|0,+b,+c,+d,+e,+f)}function aVD(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(12,a|0,+b,+c,+d,+e,+f)}function aVE(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(13,a|0,+b,+c,+d,+e,+f)}function aVF(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(14,a|0,+b,+c,+d,+e,+f)}function aVG(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(15,a|0,+b,+c,+d,+e,+f)}function aVH(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(16,a|0,+b,+c,+d,+e,+f)}function aVI(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(17,a|0,+b,+c,+d,+e,+f)}function aVJ(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(18,a|0,+b,+c,+d,+e,+f)}function aVK(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(19,a|0,+b,+c,+d,+e,+f)}function aVL(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=+j;df[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,+j)}function aVM(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVN(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVO(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVP(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVQ(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVR(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVS(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVT(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVU(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVV(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVW(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVX(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVY(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVZ(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aV_(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aV$(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aV0(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aV1(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aV2(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aV3(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aV4(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;dg[a&63](b|0,+c,d|0,e|0)}function aV5(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(0,a|0,+b,c|0,d|0)}function aV6(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(1,a|0,+b,c|0,d|0)}function aV7(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(2,a|0,+b,c|0,d|0)}function aV8(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(3,a|0,+b,c|0,d|0)}function aV9(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(4,a|0,+b,c|0,d|0)}function aWa(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(5,a|0,+b,c|0,d|0)}function aWb(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(6,a|0,+b,c|0,d|0)}function aWc(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(7,a|0,+b,c|0,d|0)}function aWd(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(8,a|0,+b,c|0,d|0)}function aWe(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(9,a|0,+b,c|0,d|0)}function aWf(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(10,a|0,+b,c|0,d|0)}function aWg(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(11,a|0,+b,c|0,d|0)}function aWh(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(12,a|0,+b,c|0,d|0)}function aWi(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(13,a|0,+b,c|0,d|0)}function aWj(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(14,a|0,+b,c|0,d|0)}function aWk(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(15,a|0,+b,c|0,d|0)}function aWl(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(16,a|0,+b,c|0,d|0)}function aWm(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(17,a|0,+b,c|0,d|0)}function aWn(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(18,a|0,+b,c|0,d|0)}function aWo(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(19,a|0,+b,c|0,d|0)}function aWp(a,b){a=a|0;b=b|0;return+dh[a&1023](b|0)}function aWq(a){a=a|0;return+ag(0,a|0)}function aWr(a){a=a|0;return+ag(1,a|0)}function aWs(a){a=a|0;return+ag(2,a|0)}function aWt(a){a=a|0;return+ag(3,a|0)}function aWu(a){a=a|0;return+ag(4,a|0)}function aWv(a){a=a|0;return+ag(5,a|0)}function aWw(a){a=a|0;return+ag(6,a|0)}function aWx(a){a=a|0;return+ag(7,a|0)}function aWy(a){a=a|0;return+ag(8,a|0)}function aWz(a){a=a|0;return+ag(9,a|0)}function aWA(a){a=a|0;return+ag(10,a|0)}function aWB(a){a=a|0;return+ag(11,a|0)}function aWC(a){a=a|0;return+ag(12,a|0)}function aWD(a){a=a|0;return+ag(13,a|0)}function aWE(a){a=a|0;return+ag(14,a|0)}function aWF(a){a=a|0;return+ag(15,a|0)}function aWG(a){a=a|0;return+ag(16,a|0)}function aWH(a){a=a|0;return+ag(17,a|0)}function aWI(a){a=a|0;return+ag(18,a|0)}function aWJ(a){a=a|0;return+ag(19,a|0)}function aWK(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;di[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aWL(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWM(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWN(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWO(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWP(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWQ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWR(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWS(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWT(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWU(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWV(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWW(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWX(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWY(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWZ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aW_(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aW$(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aW0(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aW1(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aW2(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aW3(a,b,c){a=a|0;b=b|0;c=c|0;return dj[a&511](b|0,c|0)|0}function aW4(a,b){a=a|0;b=b|0;return ag(0,a|0,b|0)|0}function aW5(a,b){a=a|0;b=b|0;return ag(1,a|0,b|0)|0}function aW6(a,b){a=a|0;b=b|0;return ag(2,a|0,b|0)|0}function aW7(a,b){a=a|0;b=b|0;return ag(3,a|0,b|0)|0}function aW8(a,b){a=a|0;b=b|0;return ag(4,a|0,b|0)|0}function aW9(a,b){a=a|0;b=b|0;return ag(5,a|0,b|0)|0}function aXa(a,b){a=a|0;b=b|0;return ag(6,a|0,b|0)|0}function aXb(a,b){a=a|0;b=b|0;return ag(7,a|0,b|0)|0}function aXc(a,b){a=a|0;b=b|0;return ag(8,a|0,b|0)|0}function aXd(a,b){a=a|0;b=b|0;return ag(9,a|0,b|0)|0}function aXe(a,b){a=a|0;b=b|0;return ag(10,a|0,b|0)|0}function aXf(a,b){a=a|0;b=b|0;return ag(11,a|0,b|0)|0}function aXg(a,b){a=a|0;b=b|0;return ag(12,a|0,b|0)|0}function aXh(a,b){a=a|0;b=b|0;return ag(13,a|0,b|0)|0}function aXi(a,b){a=a|0;b=b|0;return ag(14,a|0,b|0)|0}function aXj(a,b){a=a|0;b=b|0;return ag(15,a|0,b|0)|0}function aXk(a,b){a=a|0;b=b|0;return ag(16,a|0,b|0)|0}function aXl(a,b){a=a|0;b=b|0;return ag(17,a|0,b|0)|0}function aXm(a,b){a=a|0;b=b|0;return ag(18,a|0,b|0)|0}function aXn(a,b){a=a|0;b=b|0;return ag(19,a|0,b|0)|0}function aXo(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return dk[a&63](b|0,c|0,d|0,e|0,f|0)|0}function aXp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(0,a|0,b|0,c|0,d|0,e|0)|0}function aXq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(1,a|0,b|0,c|0,d|0,e|0)|0}function aXr(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(2,a|0,b|0,c|0,d|0,e|0)|0}function aXs(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(3,a|0,b|0,c|0,d|0,e|0)|0}function aXt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(4,a|0,b|0,c|0,d|0,e|0)|0}function aXu(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(5,a|0,b|0,c|0,d|0,e|0)|0}function aXv(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(6,a|0,b|0,c|0,d|0,e|0)|0}function aXw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(7,a|0,b|0,c|0,d|0,e|0)|0}function aXx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(8,a|0,b|0,c|0,d|0,e|0)|0}function aXy(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(9,a|0,b|0,c|0,d|0,e|0)|0}function aXz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(10,a|0,b|0,c|0,d|0,e|0)|0}function aXA(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(11,a|0,b|0,c|0,d|0,e|0)|0}function aXB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(12,a|0,b|0,c|0,d|0,e|0)|0}function aXC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(13,a|0,b|0,c|0,d|0,e|0)|0}function aXD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(14,a|0,b|0,c|0,d|0,e|0)|0}function aXE(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(15,a|0,b|0,c|0,d|0,e|0)|0}function aXF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(16,a|0,b|0,c|0,d|0,e|0)|0}function aXG(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(17,a|0,b|0,c|0,d|0,e|0)|0}function aXH(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(18,a|0,b|0,c|0,d|0,e|0)|0}function aXI(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(19,a|0,b|0,c|0,d|0,e|0)|0}function aXJ(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return dl[a&63](b|0,c|0,d|0,e|0,f|0,g|0)|0}function aXK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(0,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXL(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(1,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXM(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(2,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXN(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(3,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXO(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(4,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(5,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXQ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(6,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXR(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(7,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXS(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(8,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXT(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(9,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXU(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(10,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXV(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(11,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(12,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(13,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXY(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(14,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXZ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(15,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aX_(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(16,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aX$(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(17,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aX0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(18,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aX1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(19,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aX2(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;dm[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aX3(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aX4(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aX5(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aX6(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aX7(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aX8(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aX9(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYb(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYc(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYd(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYe(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYf(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYg(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYh(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYi(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYj(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYk(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYl(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYm(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYn(a,b,c){a=a|0;b=b|0;c=c|0;return+dn[a&127](b|0,c|0)}function aYo(a,b){a=a|0;b=b|0;return+ag(0,a|0,b|0)}function aYp(a,b){a=a|0;b=b|0;return+ag(1,a|0,b|0)}function aYq(a,b){a=a|0;b=b|0;return+ag(2,a|0,b|0)}function aYr(a,b){a=a|0;b=b|0;return+ag(3,a|0,b|0)}function aYs(a,b){a=a|0;b=b|0;return+ag(4,a|0,b|0)}function aYt(a,b){a=a|0;b=b|0;return+ag(5,a|0,b|0)}function aYu(a,b){a=a|0;b=b|0;return+ag(6,a|0,b|0)}function aYv(a,b){a=a|0;b=b|0;return+ag(7,a|0,b|0)}function aYw(a,b){a=a|0;b=b|0;return+ag(8,a|0,b|0)}function aYx(a,b){a=a|0;b=b|0;return+ag(9,a|0,b|0)}function aYy(a,b){a=a|0;b=b|0;return+ag(10,a|0,b|0)}function aYz(a,b){a=a|0;b=b|0;return+ag(11,a|0,b|0)}function aYA(a,b){a=a|0;b=b|0;return+ag(12,a|0,b|0)}function aYB(a,b){a=a|0;b=b|0;return+ag(13,a|0,b|0)}function aYC(a,b){a=a|0;b=b|0;return+ag(14,a|0,b|0)}function aYD(a,b){a=a|0;b=b|0;return+ag(15,a|0,b|0)}function aYE(a,b){a=a|0;b=b|0;return+ag(16,a|0,b|0)}function aYF(a,b){a=a|0;b=b|0;return+ag(17,a|0,b|0)}function aYG(a,b){a=a|0;b=b|0;return+ag(18,a|0,b|0)}function aYH(a,b){a=a|0;b=b|0;return+ag(19,a|0,b|0)}function aYI(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;k=+k;dp[a&63](b|0,+c,+d,+e,+f,+g,+h,+i,+j,+k)}function aYJ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(0,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYK(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(1,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYL(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(2,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYM(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(3,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYN(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(4,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYO(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(5,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYP(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(6,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYQ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(7,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYR(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(8,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYS(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(9,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYT(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(10,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYU(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(11,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYV(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(12,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYW(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(13,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYX(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(14,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYY(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(15,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYZ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(16,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aY_(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(17,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aY$(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(18,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aY0(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(19,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aY1(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return+dq[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aY2(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aY3(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aY4(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aY5(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aY6(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aY7(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aY8(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aY9(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZb(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZc(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZd(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZe(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZf(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZg(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZh(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZi(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZj(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZk(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZl(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZm(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=+e;return dr[a&63](b|0,+c,d|0,+e)|0}function aZn(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(0,a|0,+b,c|0,+d)|0}function aZo(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(1,a|0,+b,c|0,+d)|0}function aZp(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(2,a|0,+b,c|0,+d)|0}function aZq(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(3,a|0,+b,c|0,+d)|0}function aZr(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(4,a|0,+b,c|0,+d)|0}function aZs(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(5,a|0,+b,c|0,+d)|0}function aZt(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(6,a|0,+b,c|0,+d)|0}function aZu(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(7,a|0,+b,c|0,+d)|0}function aZv(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(8,a|0,+b,c|0,+d)|0}function aZw(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(9,a|0,+b,c|0,+d)|0}function aZx(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(10,a|0,+b,c|0,+d)|0}function aZy(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(11,a|0,+b,c|0,+d)|0}function aZz(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(12,a|0,+b,c|0,+d)|0}function aZA(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(13,a|0,+b,c|0,+d)|0}function aZB(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(14,a|0,+b,c|0,+d)|0}function aZC(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(15,a|0,+b,c|0,+d)|0}function aZD(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(16,a|0,+b,c|0,+d)|0}function aZE(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(17,a|0,+b,c|0,+d)|0}function aZF(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(18,a|0,+b,c|0,+d)|0}function aZG(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(19,a|0,+b,c|0,+d)|0}function aZH(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;return ds[a&63](+b,+c,+d,+e)|0}function aZI(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(0,+a,+b,+c,+d)|0}function aZJ(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(1,+a,+b,+c,+d)|0}function aZK(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(2,+a,+b,+c,+d)|0}function aZL(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(3,+a,+b,+c,+d)|0}function aZM(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(4,+a,+b,+c,+d)|0}function aZN(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(5,+a,+b,+c,+d)|0}function aZO(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(6,+a,+b,+c,+d)|0}function aZP(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(7,+a,+b,+c,+d)|0}function aZQ(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(8,+a,+b,+c,+d)|0}function aZR(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(9,+a,+b,+c,+d)|0}function aZS(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(10,+a,+b,+c,+d)|0}function aZT(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(11,+a,+b,+c,+d)|0}function aZU(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(12,+a,+b,+c,+d)|0}function aZV(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(13,+a,+b,+c,+d)|0}function aZW(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(14,+a,+b,+c,+d)|0}function aZX(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(15,+a,+b,+c,+d)|0}function aZY(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(16,+a,+b,+c,+d)|0}function aZZ(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(17,+a,+b,+c,+d)|0}function aZ_(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(18,+a,+b,+c,+d)|0}function aZ$(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(19,+a,+b,+c,+d)|0}function aZ0(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;g=+g;h=+h;i=+i;j=j|0;k=k|0;l=+l;dt[a&63](b|0,c|0,d|0,e|0,+f,+g,+h,+i,j|0,k|0,+l)}function aZ1(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(0,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function aZ2(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(1,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function aZ3(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(2,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function aZ4(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(3,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function aZ5(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(4,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function aZ6(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(5,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function aZ7(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(6,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function aZ8(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(7,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function aZ9(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(8,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_a(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(9,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_b(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(10,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_c(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(11,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_d(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(12,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_e(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(13,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_f(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(14,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_g(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(15,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_h(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(16,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_i(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(17,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_j(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(18,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_k(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(19,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_l(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return du[a&63](b|0,c|0,d|0,e|0,+f)|0}function a_m(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(0,a|0,b|0,c|0,d|0,+e)|0}function a_n(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(1,a|0,b|0,c|0,d|0,+e)|0}function a_o(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(2,a|0,b|0,c|0,d|0,+e)|0}function a_p(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(3,a|0,b|0,c|0,d|0,+e)|0}function a_q(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(4,a|0,b|0,c|0,d|0,+e)|0}function a_r(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(5,a|0,b|0,c|0,d|0,+e)|0}function a_s(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(6,a|0,b|0,c|0,d|0,+e)|0}function a_t(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(7,a|0,b|0,c|0,d|0,+e)|0}function a_u(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(8,a|0,b|0,c|0,d|0,+e)|0}function a_v(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(9,a|0,b|0,c|0,d|0,+e)|0}function a_w(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(10,a|0,b|0,c|0,d|0,+e)|0}function a_x(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(11,a|0,b|0,c|0,d|0,+e)|0}function a_y(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(12,a|0,b|0,c|0,d|0,+e)|0}function a_z(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(13,a|0,b|0,c|0,d|0,+e)|0}function a_A(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(14,a|0,b|0,c|0,d|0,+e)|0}function a_B(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(15,a|0,b|0,c|0,d|0,+e)|0}function a_C(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(16,a|0,b|0,c|0,d|0,+e)|0}function a_D(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(17,a|0,b|0,c|0,d|0,+e)|0}function a_E(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(18,a|0,b|0,c|0,d|0,+e)|0}function a_F(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(19,a|0,b|0,c|0,d|0,+e)|0}function a_G(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return dv[a&63](b|0,+c,+d)|0}function a_H(a,b,c){a=a|0;b=+b;c=+c;return ag(0,a|0,+b,+c)|0}function a_I(a,b,c){a=a|0;b=+b;c=+c;return ag(1,a|0,+b,+c)|0}function a_J(a,b,c){a=a|0;b=+b;c=+c;return ag(2,a|0,+b,+c)|0}function a_K(a,b,c){a=a|0;b=+b;c=+c;return ag(3,a|0,+b,+c)|0}function a_L(a,b,c){a=a|0;b=+b;c=+c;return ag(4,a|0,+b,+c)|0}function a_M(a,b,c){a=a|0;b=+b;c=+c;return ag(5,a|0,+b,+c)|0}function a_N(a,b,c){a=a|0;b=+b;c=+c;return ag(6,a|0,+b,+c)|0}function a_O(a,b,c){a=a|0;b=+b;c=+c;return ag(7,a|0,+b,+c)|0}function a_P(a,b,c){a=a|0;b=+b;c=+c;return ag(8,a|0,+b,+c)|0}function a_Q(a,b,c){a=a|0;b=+b;c=+c;return ag(9,a|0,+b,+c)|0}function a_R(a,b,c){a=a|0;b=+b;c=+c;return ag(10,a|0,+b,+c)|0}function a_S(a,b,c){a=a|0;b=+b;c=+c;return ag(11,a|0,+b,+c)|0}function a_T(a,b,c){a=a|0;b=+b;c=+c;return ag(12,a|0,+b,+c)|0}function a_U(a,b,c){a=a|0;b=+b;c=+c;return ag(13,a|0,+b,+c)|0}function a_V(a,b,c){a=a|0;b=+b;c=+c;return ag(14,a|0,+b,+c)|0}function a_W(a,b,c){a=a|0;b=+b;c=+c;return ag(15,a|0,+b,+c)|0}function a_X(a,b,c){a=a|0;b=+b;c=+c;return ag(16,a|0,+b,+c)|0}function a_Y(a,b,c){a=a|0;b=+b;c=+c;return ag(17,a|0,+b,+c)|0}function a_Z(a,b,c){a=a|0;b=+b;c=+c;return ag(18,a|0,+b,+c)|0}function a__(a,b,c){a=a|0;b=+b;c=+c;return ag(19,a|0,+b,+c)|0}function a_$(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;dw[a&127](b|0,c|0,d|0,+e)}function a_0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(0,a|0,b|0,c|0,+d)}function a_1(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(1,a|0,b|0,c|0,+d)}function a_2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(2,a|0,b|0,c|0,+d)}function a_3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(3,a|0,b|0,c|0,+d)}function a_4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(4,a|0,b|0,c|0,+d)}function a_5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(5,a|0,b|0,c|0,+d)}function a_6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(6,a|0,b|0,c|0,+d)}function a_7(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(7,a|0,b|0,c|0,+d)}function a_8(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(8,a|0,b|0,c|0,+d)}function a_9(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(9,a|0,b|0,c|0,+d)}function a$a(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(10,a|0,b|0,c|0,+d)}function a$b(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(11,a|0,b|0,c|0,+d)}function a$c(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(12,a|0,b|0,c|0,+d)}function a$d(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(13,a|0,b|0,c|0,+d)}function a$e(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(14,a|0,b|0,c|0,+d)}function a$f(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(15,a|0,b|0,c|0,+d)}function a$g(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(16,a|0,b|0,c|0,+d)}function a$h(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(17,a|0,b|0,c|0,+d)}function a$i(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(18,a|0,b|0,c|0,+d)}function a$j(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(19,a|0,b|0,c|0,+d)}function a$k(a){a=a|0;return dx[a&255]()|0}function a$l(){return ag(0)|0}function a$m(){return ag(1)|0}function a$n(){return ag(2)|0}function a$o(){return ag(3)|0}function a$p(){return ag(4)|0}function a$q(){return ag(5)|0}function a$r(){return ag(6)|0}function a$s(){return ag(7)|0}function a$t(){return ag(8)|0}function a$u(){return ag(9)|0}function a$v(){return ag(10)|0}function a$w(){return ag(11)|0}function a$x(){return ag(12)|0}function a$y(){return ag(13)|0}function a$z(){return ag(14)|0}function a$A(){return ag(15)|0}function a$B(){return ag(16)|0}function a$C(){return ag(17)|0}function a$D(){return ag(18)|0}function a$E(){return ag(19)|0}function a$F(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;g=g|0;h=h|0;dy[a&127](b|0,c|0,d|0,e|0,+f,g|0,h|0)}function a$G(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(0,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$H(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(1,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$I(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(2,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$J(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(3,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$K(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(4,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$L(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(5,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$M(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(6,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$N(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(7,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$O(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(8,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$P(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(9,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$Q(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(10,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$R(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(11,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$S(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(12,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$T(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(13,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$U(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(14,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$V(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(15,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$W(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(16,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$X(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(17,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$Y(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(18,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$Z(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(19,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$_(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=h|0;i=i|0;j=j|0;return dz[a&63](b|0,c|0,d|0,+e,+f,+g,h|0,i|0,j|0)|0}function a$$(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(0,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a$0(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(1,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a$1(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(2,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a$2(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(3,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a$3(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(4,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a$4(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(5,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a$5(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(6,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a$6(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(7,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a$7(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(8,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a$8(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(9,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a$9(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(10,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a0a(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(11,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a0b(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(12,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a0c(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(13,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a0d(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(14,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a0e(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(15,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a0f(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(16,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a0g(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(17,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a0h(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(18,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a0i(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(19,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a0j(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;dA[a&511](b|0,c|0,d|0)}function a0k(a,b,c){a=a|0;b=b|0;c=c|0;ag(0,a|0,b|0,c|0)}function a0l(a,b,c){a=a|0;b=b|0;c=c|0;ag(1,a|0,b|0,c|0)}function a0m(a,b,c){a=a|0;b=b|0;c=c|0;ag(2,a|0,b|0,c|0)}function a0n(a,b,c){a=a|0;b=b|0;c=c|0;ag(3,a|0,b|0,c|0)}function a0o(a,b,c){a=a|0;b=b|0;c=c|0;ag(4,a|0,b|0,c|0)}function a0p(a,b,c){a=a|0;b=b|0;c=c|0;ag(5,a|0,b|0,c|0)}function a0q(a,b,c){a=a|0;b=b|0;c=c|0;ag(6,a|0,b|0,c|0)}function a0r(a,b,c){a=a|0;b=b|0;c=c|0;ag(7,a|0,b|0,c|0)}function a0s(a,b,c){a=a|0;b=b|0;c=c|0;ag(8,a|0,b|0,c|0)}function a0t(a,b,c){a=a|0;b=b|0;c=c|0;ag(9,a|0,b|0,c|0)}function a0u(a,b,c){a=a|0;b=b|0;c=c|0;ag(10,a|0,b|0,c|0)}function a0v(a,b,c){a=a|0;b=b|0;c=c|0;ag(11,a|0,b|0,c|0)}function a0w(a,b,c){a=a|0;b=b|0;c=c|0;ag(12,a|0,b|0,c|0)}function a0x(a,b,c){a=a|0;b=b|0;c=c|0;ag(13,a|0,b|0,c|0)}function a0y(a,b,c){a=a|0;b=b|0;c=c|0;ag(14,a|0,b|0,c|0)}function a0z(a,b,c){a=a|0;b=b|0;c=c|0;ag(15,a|0,b|0,c|0)}function a0A(a,b,c){a=a|0;b=b|0;c=c|0;ag(16,a|0,b|0,c|0)}function a0B(a,b,c){a=a|0;b=b|0;c=c|0;ag(17,a|0,b|0,c|0)}function a0C(a,b,c){a=a|0;b=b|0;c=c|0;ag(18,a|0,b|0,c|0)}function a0D(a,b,c){a=a|0;b=b|0;c=c|0;ag(19,a|0,b|0,c|0)}function a0E(a,b,c){a=a|0;b=+b;c=+c;return dB[a&63](+b,+c)|0}function a0F(a,b){a=+a;b=+b;return ag(0,+a,+b)|0}function a0G(a,b){a=+a;b=+b;return ag(1,+a,+b)|0}function a0H(a,b){a=+a;b=+b;return ag(2,+a,+b)|0}function a0I(a,b){a=+a;b=+b;return ag(3,+a,+b)|0}function a0J(a,b){a=+a;b=+b;return ag(4,+a,+b)|0}function a0K(a,b){a=+a;b=+b;return ag(5,+a,+b)|0}function a0L(a,b){a=+a;b=+b;return ag(6,+a,+b)|0}function a0M(a,b){a=+a;b=+b;return ag(7,+a,+b)|0}function a0N(a,b){a=+a;b=+b;return ag(8,+a,+b)|0}function a0O(a,b){a=+a;b=+b;return ag(9,+a,+b)|0}function a0P(a,b){a=+a;b=+b;return ag(10,+a,+b)|0}function a0Q(a,b){a=+a;b=+b;return ag(11,+a,+b)|0}function a0R(a,b){a=+a;b=+b;return ag(12,+a,+b)|0}function a0S(a,b){a=+a;b=+b;return ag(13,+a,+b)|0}function a0T(a,b){a=+a;b=+b;return ag(14,+a,+b)|0}function a0U(a,b){a=+a;b=+b;return ag(15,+a,+b)|0}function a0V(a,b){a=+a;b=+b;return ag(16,+a,+b)|0}function a0W(a,b){a=+a;b=+b;return ag(17,+a,+b)|0}function a0X(a,b){a=+a;b=+b;return ag(18,+a,+b)|0}function a0Y(a,b){a=+a;b=+b;return ag(19,+a,+b)|0}function a0Z(a){a=a|0;dC[a&63]()}function a0_(){ag(0)}function a0$(){ag(1)}function a00(){ag(2)}function a01(){ag(3)}function a02(){ag(4)}function a03(){ag(5)}function a04(){ag(6)}function a05(){ag(7)}function a06(){ag(8)}function a07(){ag(9)}function a08(){ag(10)}function a09(){ag(11)}function a1a(){ag(12)}function a1b(){ag(13)}function a1c(){ag(14)}function a1d(){ag(15)}function a1e(){ag(16)}function a1f(){ag(17)}function a1g(){ag(18)}function a1h(){ag(19)}function a1i(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return dD[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function a1j(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1k(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1l(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1m(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1n(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1o(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1p(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1q(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1r(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1s(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1t(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1u(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1v(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1w(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1x(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1y(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1z(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1A(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1B(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1C(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1D(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return dE[a&127](b|0,c|0,d|0,e|0)|0}function a1E(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(0,a|0,b|0,c|0,d|0)|0}function a1F(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(1,a|0,b|0,c|0,d|0)|0}function a1G(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(2,a|0,b|0,c|0,d|0)|0}function a1H(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(3,a|0,b|0,c|0,d|0)|0}function a1I(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(4,a|0,b|0,c|0,d|0)|0}function a1J(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(5,a|0,b|0,c|0,d|0)|0}function a1K(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(6,a|0,b|0,c|0,d|0)|0}function a1L(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(7,a|0,b|0,c|0,d|0)|0}function a1M(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(8,a|0,b|0,c|0,d|0)|0}function a1N(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(9,a|0,b|0,c|0,d|0)|0}function a1O(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(10,a|0,b|0,c|0,d|0)|0}function a1P(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(11,a|0,b|0,c|0,d|0)|0}function a1Q(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(12,a|0,b|0,c|0,d|0)|0}function a1R(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(13,a|0,b|0,c|0,d|0)|0}function a1S(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(14,a|0,b|0,c|0,d|0)|0}function a1T(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(15,a|0,b|0,c|0,d|0)|0}function a1U(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(16,a|0,b|0,c|0,d|0)|0}function a1V(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(17,a|0,b|0,c|0,d|0)|0}function a1W(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(18,a|0,b|0,c|0,d|0)|0}function a1X(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(19,a|0,b|0,c|0,d|0)|0}function a1Y(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;dF[a&255](b|0,c|0,+d)}function a1Z(a,b,c){a=a|0;b=b|0;c=+c;ag(0,a|0,b|0,+c)}function a1_(a,b,c){a=a|0;b=b|0;c=+c;ag(1,a|0,b|0,+c)}function a1$(a,b,c){a=a|0;b=b|0;c=+c;ag(2,a|0,b|0,+c)}function a10(a,b,c){a=a|0;b=b|0;c=+c;ag(3,a|0,b|0,+c)}function a11(a,b,c){a=a|0;b=b|0;c=+c;ag(4,a|0,b|0,+c)}function a12(a,b,c){a=a|0;b=b|0;c=+c;ag(5,a|0,b|0,+c)}function a13(a,b,c){a=a|0;b=b|0;c=+c;ag(6,a|0,b|0,+c)}function a14(a,b,c){a=a|0;b=b|0;c=+c;ag(7,a|0,b|0,+c)}function a15(a,b,c){a=a|0;b=b|0;c=+c;ag(8,a|0,b|0,+c)}function a16(a,b,c){a=a|0;b=b|0;c=+c;ag(9,a|0,b|0,+c)}function a17(a,b,c){a=a|0;b=b|0;c=+c;ag(10,a|0,b|0,+c)}function a18(a,b,c){a=a|0;b=b|0;c=+c;ag(11,a|0,b|0,+c)}function a19(a,b,c){a=a|0;b=b|0;c=+c;ag(12,a|0,b|0,+c)}function a2a(a,b,c){a=a|0;b=b|0;c=+c;ag(13,a|0,b|0,+c)}function a2b(a,b,c){a=a|0;b=b|0;c=+c;ag(14,a|0,b|0,+c)}function a2c(a,b,c){a=a|0;b=b|0;c=+c;ag(15,a|0,b|0,+c)}function a2d(a,b,c){a=a|0;b=b|0;c=+c;ag(16,a|0,b|0,+c)}function a2e(a,b,c){a=a|0;b=b|0;c=+c;ag(17,a|0,b|0,+c)}function a2f(a,b,c){a=a|0;b=b|0;c=+c;ag(18,a|0,b|0,+c)}function a2g(a,b,c){a=a|0;b=b|0;c=+c;ag(19,a|0,b|0,+c)}function a2h(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return dG[a&63](b|0,c|0,d|0,+e)|0}function a2i(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(0,a|0,b|0,c|0,+d)|0}function a2j(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(1,a|0,b|0,c|0,+d)|0}function a2k(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(2,a|0,b|0,c|0,+d)|0}function a2l(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(3,a|0,b|0,c|0,+d)|0}function a2m(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(4,a|0,b|0,c|0,+d)|0}function a2n(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(5,a|0,b|0,c|0,+d)|0}function a2o(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(6,a|0,b|0,c|0,+d)|0}function a2p(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(7,a|0,b|0,c|0,+d)|0}function a2q(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(8,a|0,b|0,c|0,+d)|0}function a2r(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(9,a|0,b|0,c|0,+d)|0}function a2s(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(10,a|0,b|0,c|0,+d)|0}function a2t(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(11,a|0,b|0,c|0,+d)|0}function a2u(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(12,a|0,b|0,c|0,+d)|0}function a2v(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(13,a|0,b|0,c|0,+d)|0}function a2w(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(14,a|0,b|0,c|0,+d)|0}function a2x(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(15,a|0,b|0,c|0,+d)|0}function a2y(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(16,a|0,b|0,c|0,+d)|0}function a2z(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(17,a|0,b|0,c|0,+d)|0}function a2A(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(18,a|0,b|0,c|0,+d)|0}function a2B(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(19,a|0,b|0,c|0,+d)|0}function a2C(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;return+dH[a&63](b|0,c|0,d|0,+e,f|0,g|0)}function a2D(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(0,a|0,b|0,c|0,+d,e|0,f|0)}function a2E(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(1,a|0,b|0,c|0,+d,e|0,f|0)}function a2F(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(2,a|0,b|0,c|0,+d,e|0,f|0)}function a2G(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(3,a|0,b|0,c|0,+d,e|0,f|0)}function a2H(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(4,a|0,b|0,c|0,+d,e|0,f|0)}function a2I(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(5,a|0,b|0,c|0,+d,e|0,f|0)}function a2J(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(6,a|0,b|0,c|0,+d,e|0,f|0)}function a2K(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(7,a|0,b|0,c|0,+d,e|0,f|0)}function a2L(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(8,a|0,b|0,c|0,+d,e|0,f|0)}function a2M(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(9,a|0,b|0,c|0,+d,e|0,f|0)}function a2N(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(10,a|0,b|0,c|0,+d,e|0,f|0)}function a2O(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(11,a|0,b|0,c|0,+d,e|0,f|0)}function a2P(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(12,a|0,b|0,c|0,+d,e|0,f|0)}function a2Q(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(13,a|0,b|0,c|0,+d,e|0,f|0)}function a2R(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(14,a|0,b|0,c|0,+d,e|0,f|0)}function a2S(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(15,a|0,b|0,c|0,+d,e|0,f|0)}function a2T(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(16,a|0,b|0,c|0,+d,e|0,f|0)}function a2U(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(17,a|0,b|0,c|0,+d,e|0,f|0)}function a2V(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(18,a|0,b|0,c|0,+d,e|0,f|0)}function a2W(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(19,a|0,b|0,c|0,+d,e|0,f|0)}function a2X(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;dI[a&1023](b|0,c|0,d|0,e|0)}function a2Y(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(0,a|0,b|0,c|0,d|0)}function a2Z(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(1,a|0,b|0,c|0,d|0)}function a2_(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(2,a|0,b|0,c|0,d|0)}function a2$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(3,a|0,b|0,c|0,d|0)}function a20(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(4,a|0,b|0,c|0,d|0)}function a21(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(5,a|0,b|0,c|0,d|0)}function a22(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(6,a|0,b|0,c|0,d|0)}function a23(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(7,a|0,b|0,c|0,d|0)}function a24(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(8,a|0,b|0,c|0,d|0)}function a25(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(9,a|0,b|0,c|0,d|0)}function a26(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(10,a|0,b|0,c|0,d|0)}function a27(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(11,a|0,b|0,c|0,d|0)}function a28(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(12,a|0,b|0,c|0,d|0)}function a29(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(13,a|0,b|0,c|0,d|0)}function a3a(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(14,a|0,b|0,c|0,d|0)}function a3b(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(15,a|0,b|0,c|0,d|0)}function a3c(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(16,a|0,b|0,c|0,d|0)}function a3d(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(17,a|0,b|0,c|0,d|0)}function a3e(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(18,a|0,b|0,c|0,d|0)}function a3f(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(19,a|0,b|0,c|0,d|0)}function a3g(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ab(0)}function a3h(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ab(1);return 0}function a3i(a,b){a=a|0;b=+b;ab(2)}function a3j(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ab(3)}function a3k(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ab(4)}function a3l(a){a=a|0;ab(5)}function a3m(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;ab(6);return 0}function a3n(a,b){a=a|0;b=b|0;ab(7)}function a3o(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ab(8)}function a3p(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;ab(9);return 0}function a3q(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ab(10)}function a3r(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ab(11)}function a3s(a){a=a|0;ab(12);return 0}function a3t(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;ab(13);return 0}function a3u(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ab(14)}function a3v(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;ab(15);return 0}function a3w(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ab(16)}function a3x(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ab(17)}function a3y(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ab(18)}function a3z(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;ab(19);return 0}function a3A(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;ab(20);return 0}function a3B(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ab(21)}function a3C(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ab(22)}function a3D(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;ab(23);return 0}function a3E(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;ab(24);return 0.0}function a3F(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;ab(25);return 0.0}function a3G(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ab(26);return 0.0}function a3H(a,b,c){a=+a;b=+b;c=+c;ab(27);return 0}function a3I(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ab(28)}function a3J(a,b,c){a=a|0;b=+b;c=c|0;ab(29);return 0}function a3K(a,b,c){a=a|0;b=b|0;c=c|0;ab(30);return 0}function a3L(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ab(31)}function a3M(a,b){a=a|0;b=+b;ab(32);return 0.0}function a3N(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;ab(33);return 0}function a3O(a,b,c){a=a|0;b=+b;c=+c;ab(34)}function a3P(a,b,c){a=a|0;b=+b;c=c|0;ab(35)}function a3Q(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ab(36)}function a3R(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ab(37)}function a3S(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ab(38)}function a3T(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ab(39);return 0.0}function a3U(a,b,c){a=a|0;b=b|0;c=+c;ab(40);return 0}function a3V(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;ab(41);return 0}function a3W(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ab(42)}function a3X(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ab(43)}function a3Y(a,b,c){a=a|0;b=b|0;c=c|0;ab(44);return 0.0}function a3Z(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ab(45);return 0}function a3_(a,b,c){a=a|0;b=b|0;c=+c;ab(46);return 0.0}function a3$(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ab(47);return 0.0}function a30(a,b,c){a=+a;b=b|0;c=c|0;ab(48);return 0}function a31(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ab(49);return 0.0}function a32(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;ab(50);return 0}function a33(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ab(51);return 0.0}function a34(a,b){a=a|0;b=+b;ab(52);return 0}function a35(a){a=+a;ab(53);return 0}function a36(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ab(54)}function a37(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ab(55)}function a38(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ab(56)}function a39(a){a=a|0;ab(57);return 0.0}function a4a(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ab(58)}function a4b(a,b){a=a|0;b=b|0;ab(59);return 0}function a4c(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ab(60);return 0}function a4d(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ab(61);return 0}function a4e(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ab(62)}function a4f(a,b){a=a|0;b=b|0;ab(63);return 0.0}function a4g(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ab(64)}function a4h(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ab(65);return 0.0}function a4i(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;ab(66);return 0}function a4j(a,b,c,d){a=+a;b=+b;c=+c;d=+d;ab(67);return 0}function a4k(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ab(68)}function a4l(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ab(69);return 0}function a4m(a,b,c){a=a|0;b=+b;c=+c;ab(70);return 0}function a4n(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ab(71)}function a4o(){ab(72);return 0}function a4p(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ab(73)}function a4q(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;ab(74);return 0}function a4r(a,b,c){a=a|0;b=b|0;c=c|0;ab(75)}function a4s(a,b){a=+a;b=+b;ab(76);return 0}function a4t(){ab(77)}function a4u(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ab(78);return 0}function a4v(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ab(79);return 0}function a4w(a,b,c){a=a|0;b=b|0;c=+c;ab(80)}function a4x(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ab(81);return 0}function a4y(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ab(82);return 0.0}function a4z(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ab(83)}
// EMSCRIPTEN_END_FUNCS
var co=[a3g,a3g,aDJ,a3g,aDK,a3g,aDL,a3g,aDM,a3g,aDN,a3g,aDO,a3g,aDP,a3g,aDQ,a3g,aDR,a3g,aDS,a3g,aDT,a3g,aDU,a3g,aDV,a3g,aDW,a3g,aDX,a3g,aDY,a3g,aDZ,a3g,aD_,a3g,aD$,a3g,aD0,a3g,ti,a3g,Ox,a3g,um,a3g,vb,a3g,we,a3g,SP,a3g,alH,a3g,aAx,a3g,rz,a3g,alK,a3g,alF,a3g,aAb,a3g,CW,a3g,al_,a3g,akv,a3g,arc,a3g,kj,a3g,axX,a3g,tr,a3g,aB5,a3g,rw,a3g,aB7,a3g,tB,a3g,aru,a3g,aAH,a3g,BN,a3g,i0,a3g,aDq,a3g,tz,a3g,aCz,a3g,wG,a3g,aDt,a3g,u6,a3g,u8,a3g,aB0,a3g,aDs,a3g,i2,a3g,ZU,a3g,aCq,a3g,jJ,a3g,RE,a3g,awK,a3g,H1,a3g,aCP,a3g,aCd,a3g,kg,a3g,UU,a3g,ma,a3g,axr,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g];var cp=[a3h,a3h,aD2,a3h,aD3,a3h,aD4,a3h,aD5,a3h,aD6,a3h,aD7,a3h,aD8,a3h,aD9,a3h,aEa,a3h,aEb,a3h,aEc,a3h,aEd,a3h,aEe,a3h,aEf,a3h,aEg,a3h,aEh,a3h,aEi,a3h,aEj,a3h,aEk,a3h,aEl,a3h,R_,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h];var cq=[a3i,a3i,aEn,a3i,aEo,a3i,aEp,a3i,aEq,a3i,aEr,a3i,aEs,a3i,aEt,a3i,aEu,a3i,aEv,a3i,aEw,a3i,aEx,a3i,aEy,a3i,aEz,a3i,aEA,a3i,aEB,a3i,aEC,a3i,aED,a3i,aEE,a3i,aEF,a3i,aEG,a3i,yK,a3i,XY,a3i,$t,a3i,vR,a3i,Qr,a3i,ab_,a3i,vS,a3i,aeo,a3i,JQ,a3i,$o,a3i,pK,a3i,T3,a3i,eW,a3i,xl,a3i,DV,a3i,akU,a3i,Bs,a3i,rh,a3i,sC,a3i,k1,a3i,yI,a3i,XS,a3i,G3,a3i,y7,a3i,aoH,a3i,LO,a3i,Zr,a3i,$C,a3i,pI,a3i,T6,a3i,xB,a3i,zc,a3i,DN,a3i,aAl,a3i,aBT,a3i,e_,a3i,yJ,a3i,g7,a3i,D5,a3i,om,a3i,_r,a3i,yQ,a3i,$U,a3i,mp,a3i,$I,a3i,fF,a3i,L_,a3i,_2,a3i,akb,a3i,D2,a3i,aaN,a3i,yP,a3i,Z3,a3i,Yq,a3i,ye,a3i,Jm,a3i,_3,a3i,IO,a3i,Cc,a3i,S5,a3i,Gg,a3i,_K,a3i,wU,a3i,Hd,a3i,jq,a3i,anp,a3i,Ef,a3i,Em,a3i,Kc,a3i,mm,a3i,tU,a3i,Ik,a3i,qb,a3i,Rb,a3i,XP,a3i,g$,a3i,adZ,a3i,D3,a3i,KE,a3i,eU,a3i,aaR,a3i,VX,a3i,qS,a3i,hG,a3i,nA,a3i,ahL,a3i,agn,a3i,y_,a3i,D0,a3i,Vb,a3i,w4,a3i,El,a3i,DM,a3i,hC,a3i,an9,a3i,FT,a3i,Hr,a3i,qj,a3i,FV,a3i,lL,a3i,FU,a3i,amf,a3i,_u,a3i,_R,a3i,Eo,a3i,L5,a3i,G_,a3i,Yf,a3i,L3,a3i,_4,a3i,_p,a3i,aiU,a3i,aos,a3i,$A,a3i,akV,a3i,_W,a3i,Yk,a3i,IP,a3i,ajL,a3i,$s,a3i,asf,a3i,_f,a3i,qG,a3i,Ea,a3i,Av,a3i,Px,a3i,$b,a3i,ho,a3i,pb,a3i,aiS,a3i,Ed,a3i,WT,a3i,q6,a3i,zh,a3i,L4,a3i,T1,a3i,wW,a3i,aip,a3i,aoe,a3i,aiq,a3i,ain,a3i,ahh,a3i,akS,a3i,S6,a3i,WN,a3i,Wo,a3i,apR,a3i,aio,a3i,oU,a3i,Jg,a3i,apS,a3i,abN,a3i,ac5,a3i,asp,a3i,nT,a3i,rr,a3i,_D,a3i,aaF,a3i,sD,a3i,zZ,a3i,ajK,a3i,Yb,a3i,ajk,a3i,DJ,a3i,aoa,a3i,_Q,a3i,alx,a3i,Ep,a3i,Bw,a3i,$Z,a3i,pU,a3i,nw,a3i,$g,a3i,Ys,a3i,Z7,a3i,Yg,a3i,y1,a3i,y5,a3i,mq,a3i,G$,a3i,gv,a3i,_S,a3i,akY,a3i,akL,a3i,aac,a3i,$v,a3i,Uf,a3i,nB,a3i,XU,a3i,jx,a3i,Dc,a3i,Kb,a3i,_n,a3i,aup,a3i,$B,a3i,_6,a3i,U7,a3i,po,a3i,px,a3i,auN,a3i,Eg,a3i,aaK,a3i,aaJ,a3i,AI,a3i,aen,a3i,asT,a3i,y6,a3i,$p,a3i,D$,a3i,ww,a3i,M2,a3i,aeh,a3i,JL,a3i,ak3,a3i,hh,a3i,eV,a3i,xq,a3i,_g,a3i,Z$,a3i,yd,a3i,Hf,a3i,aoQ,a3i,s$,a3i,aai,a3i,$i,a3i,ak_,a3i,zd,a3i,QO,a3i,$3,a3i,ZF,a3i,xU,a3i,XR,a3i,It,a3i,xo,a3i,yM,a3i,aj7,a3i,Lk,a3i,iM,a3i,Ta,a3i,ya,a3i,Uy,a3i,_k,a3i,rb,a3i,Ce,a3i,R1,a3i,Ei,a3i,acU,a3i,Hy,a3i,aad,a3i,G9,a3i,aam,a3i,awh,a3i,NE,a3i,aaO,a3i,g1,a3i,ab0,a3i,aiX,a3i,GZ,a3i,aod,a3i,aoN,a3i,abV,a3i,DB,a3i,Up,a3i,WS,a3i,IK,a3i,Zn,a3i,aav,a3i,YE,a3i,Wy,a3i,Ft,a3i,_C,a3i,LF,a3i,akZ,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i];var cr=[a3j,a3j,aEI,a3j,aEJ,a3j,aEK,a3j,aEL,a3j,aEM,a3j,aEN,a3j,aEO,a3j,aEP,a3j,aEQ,a3j,aER,a3j,aES,a3j,aET,a3j,aEU,a3j,aEV,a3j,aEW,a3j,aEX,a3j,aEY,a3j,aEZ,a3j,aE_,a3j,aE$,a3j,adK,a3j,to,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j];var cs=[a3k,a3k,aE1,a3k,aE2,a3k,aE3,a3k,aE4,a3k,aE5,a3k,aE6,a3k,aE7,a3k,aE8,a3k,aE9,a3k,aFa,a3k,aFb,a3k,aFc,a3k,aFd,a3k,aFe,a3k,aFf,a3k,aFg,a3k,aFh,a3k,aFi,a3k,aFj,a3k,aFk,a3k,tu,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k];var ct=[a3l,a3l,aFm,a3l,aFn,a3l,aFo,a3l,aFp,a3l,aFq,a3l,aFr,a3l,aFs,a3l,aFt,a3l,aFu,a3l,aFv,a3l,aFw,a3l,aFx,a3l,aFy,a3l,aFz,a3l,aFA,a3l,aFB,a3l,aFC,a3l,aFD,a3l,aFE,a3l,aFF,a3l,C2,a3l,Qs,a3l,Ig,a3l,apt,a3l,qQ,a3l,m4,a3l,auf,a3l,xM,a3l,auh,a3l,ank,a3l,aAh,a3l,ayd,a3l,ayF,a3l,azm,a3l,HZ,a3l,aAv,a3l,pz,a3l,awa,a3l,awz,a3l,m_,a3l,aDa,a3l,atR,a3l,lZ,a3l,xi,a3l,uH,a3l,Ka,a3l,aoF,a3l,atH,a3l,hV,a3l,BX,a3l,aAU,a3l,ayz,a3l,axt,a3l,wd,a3l,aqp,a3l,asn,a3l,atA,a3l,azB,a3l,atS,a3l,avN,a3l,auF,a3l,atL,a3l,any,a3l,ZV,a3l,amk,a3l,ao8,a3l,aok,a3l,aAG,a3l,auw,a3l,rs,a3l,an8,a3l,aDl,a3l,asZ,a3l,aB1,a3l,wm,a3l,nN,a3l,wF,a3l,auB,a3l,anU,a3l,aut,a3l,rW,a3l,Ic,a3l,EK,a3l,aht,a3l,Ip,a3l,axq,a3l,aCw,a3l,am9,a3l,axJ,a3l,aso,a3l,atX,a3l,at4,a3l,axh,a3l,adL,a3l,aqe,a3l,m3,a3l,Fx,a3l,ape,a3l,apL,a3l,aeZ,a3l,wa,a3l,av7,a3l,axl,a3l,axV,a3l,aBH,a3l,ayK,a3l,SM,a3l,tF,a3l,CS,a3l,aCK,a3l,adB,a3l,i6,a3l,aAg,a3l,asM,a3l,Tu,a3l,hU,a3l,ZC,a3l,CR,a3l,ST,a3l,aq8,a3l,arS,a3l,o1,a3l,nK,a3l,aCs,a3l,atz,a3l,Gd,a3l,BP,a3l,vZ,a3l,aAF,a3l,adT,a3l,axE,a3l,RU,a3l,ax9,a3l,ZE,a3l,au0,a3l,mJ,a3l,r4,a3l,jz,a3l,aBz,a3l,are,a3l,ax3,a3l,lW,a3l,apz,a3l,HX,a3l,asK,a3l,v9,a3l,gt,a3l,aA6,a3l,as8,a3l,aw0,a3l,F9,a3l,YI,a3l,apm,a3l,fI,a3l,jK,a3l,X0,a3l,B6,a3l,nE,a3l,$L,a3l,X5,a3l,ayr,a3l,SA,a3l,axd,a3l,ast,a3l,zG,a3l,acr,a3l,awn,a3l,awc,a3l,Ou,a3l,anA,a3l,l7,a3l,aui,a3l,aoj,a3l,ahf,a3l,auD,a3l,GR,a3l,alQ,a3l,atJ,a3l,aAJ,a3l,asc,a3l,axP,a3l,axo,a3l,W5,a3l,NQ,a3l,axI,a3l,azA,a3l,axW,a3l,aAQ,a3l,Dg,a3l,wA,a3l,ayD,a3l,aDk,a3l,Wt,a3l,aoV,a3l,j4,a3l,Mq,a3l,ajH,a3l,SO,a3l,atV,a3l,z0,a3l,aq9,a3l,au4,a3l,ald,a3l,SF,a3l,uu,a3l,PQ,a3l,Ju,a3l,oV,a3l,abc,a3l,adU,a3l,axG,a3l,atD,a3l,axM,a3l,avU,a3l,qi,a3l,I3,a3l,aq$,a3l,awU,a3l,aqH,a3l,aDj,a3l,am3,a3l,Jb,a3l,m1,a3l,g3,a3l,aye,a3l,avM,a3l,YK,a3l,azl,a3l,auG,a3l,aq5,a3l,fk,a3l,aqd,a3l,h5,a3l,vd,a3l,NV,a3l,apT,a3l,aAz,a3l,aeT,a3l,iK,a3l,jL,a3l,asX,a3l,ay2,a3l,ajn,a3l,aDb,a3l,NU,a3l,arW,a3l,aqf,a3l,aDf,a3l,k4,a3l,avV,a3l,aog,a3l,afb,a3l,arT,a3l,aBF,a3l,ays,a3l,aC9,a3l,aAf,a3l,anB,a3l,anK,a3l,apc,a3l,ML,a3l,axQ,a3l,LC,a3l,_V,a3l,atY,a3l,auP,a3l,aw5,a3l,VY,a3l,arV,a3l,axv,a3l,auL,a3l,axp,a3l,kp,a3l,apM,a3l,ayu,a3l,HS,a3l,as_,a3l,awA,a3l,arr,a3l,ao1,a3l,OZ,a3l,azJ,a3l,E9,a3l,agg,a3l,aA7,a3l,YN,a3l,aoi,a3l,UH,a3l,asV,a3l,Ca,a3l,aBs,a3l,aBo,a3l,H6,a3l,aw4,a3l,aCx,a3l,aqO,a3l,fn,a3l,az_,a3l,ayQ,a3l,OV,a3l,abI,a3l,aCc,a3l,aoW,a3l,au1,a3l,aCi,a3l,awW,a3l,mc,a3l,awf,a3l,vl,a3l,alS,a3l,as$,a3l,axc,a3l,aCW,a3l,aun,a3l,aoc,a3l,kH,a3l,apA,a3l,ayL,a3l,tI,a3l,Bc,a3l,adx,a3l,aqW,a3l,auo,a3l,az2,a3l,aDh,a3l,auz,a3l,aua,a3l,apJ,a3l,Le,a3l,aDA,a3l,I8,a3l,aml,a3l,ann,a3l,k3,a3l,aqn,a3l,au$,a3l,vV,a3l,aDy,a3l,asd,a3l,amG,a3l,adJ,a3l,anC,a3l,m0,a3l,aw6,a3l,rH,a3l,asE,a3l,asD,a3l,avD,a3l,aCI,a3l,YM,a3l,anE,a3l,OF,a3l,awl,a3l,aym,a3l,vf,a3l,SB,a3l,anI,a3l,JF,a3l,ayy,a3l,pM,a3l,ai0,a3l,avb,a3l,afg,a3l,axY,a3l,CV,a3l,au7,a3l,aqt,a3l,aCo,a3l,abi,a3l,amX,a3l,arf,a3l,aoG,a3l,Ie,a3l,auj,a3l,l9,a3l,as7,a3l,AL,a3l,aB9,a3l,am0,a3l,aAu,a3l,azK,a3l,gA,a3l,axj,a3l,atm,a3l,aCR,a3l,axC,a3l,atQ,a3l,ZJ,a3l,U_,a3l,Xh,a3l,aB3,a3l,aBt,a3l,acN,a3l,atM,a3l,rN,a3l,akQ,a3l,Xy,a3l,awy,a3l,atb,a3l,anv,a3l,aCu,a3l,aqY,a3l,anS,a3l,app,a3l,axf,a3l,apH,a3l,N5,a3l,arX,a3l,tH,a3l,awN,a3l,ay8,a3l,axN,a3l,avt,a3l,Mn,a3l,aBp,a3l,jr,a3l,jj,a3l,azV,a3l,anF,a3l,at2,a3l,anl,a3l,Ke,a3l,am5,a3l,at6,a3l,aCS,a3l,apN,a3l,PB,a3l,atZ,a3l,OR,a3l,aBJ,a3l,Uc,a3l,aA1,a3l,awI,a3l,as9,a3l,axn,a3l,Xc,a3l,aCl,a3l,N2,a3l,an0,a3l,atF,a3l,aCA,a3l,ayl,a3l,EA,a3l,arY,a3l,au_,a3l,$J,a3l,ayt,a3l,pP,a3l,atK,a3l,YQ,a3l,au8,a3l,QR,a3l,Fr,a3l,anh,a3l,apZ,a3l,aBv,a3l,aCL,a3l,avc,a3l,aB8,a3l,lM,a3l,avu,a3l,awB,a3l,apg,a3l,xK,a3l,asu,a3l,m5,a3l,apk,a3l,asQ,a3l,aB2,a3l,YJ,a3l,ez,a3l,yz,a3l,awY,a3l,aB_,a3l,aqq,a3l,ao6,a3l,asB,a3l,aAw,a3l,at8,a3l,aCr,a3l,arq,a3l,atk,a3l,axZ,a3l,auc,a3l,ay7,a3l,$M,a3l,Xz,a3l,Ow,a3l,an7,a3l,aAT,a3l,aCe,a3l,$e,a3l,aqP,a3l,aA5,a3l,atc,a3l,aw2,a3l,kB,a3l,avY,a3l,aCU,a3l,ax2,a3l,av_,a3l,amN,a3l,aCk,a3l,aCy,a3l,aCb,a3l,NR,a3l,aof,a3l,aoS,a3l,iQ,a3l,aCn,a3l,Pv,a3l,aw1,a3l,avW,a3l,aCB,a3l,akA,a3l,QM,a3l,ahO,a3l,az1,a3l,ay3,a3l,aBg,a3l,aw3,a3l,RF,a3l,az4,a3l,aBw,a3l,ayb,a3l,aCM,a3l,ayR,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l];var cu=[a3m,a3m,aFH,a3m,aFI,a3m,aFJ,a3m,aFK,a3m,aFL,a3m,aFM,a3m,aFN,a3m,aFO,a3m,aFP,a3m,aFQ,a3m,aFR,a3m,aFS,a3m,aFT,a3m,aFU,a3m,aFV,a3m,aFW,a3m,aFX,a3m,aFY,a3m,aFZ,a3m,aF_,a3m,J1,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m];var cv=[a3n,a3n,aF0,a3n,aF1,a3n,aF2,a3n,aF3,a3n,aF4,a3n,aF5,a3n,aF6,a3n,aF7,a3n,aF8,a3n,aF9,a3n,aGa,a3n,aGb,a3n,aGc,a3n,aGd,a3n,aGe,a3n,aGf,a3n,aGg,a3n,aGh,a3n,aGi,a3n,aGj,a3n,Ah,a3n,az3,a3n,aeD,a3n,J_,a3n,Hm,a3n,WW,a3n,x7,a3n,w7,a3n,z4,a3n,Oq,a3n,kl,a3n,KM,a3n,Rn,a3n,af6,a3n,Rz,a3n,Jr,a3n,acl,a3n,aiQ,a3n,acR,a3n,J9,a3n,AT,a3n,d1,a3n,lX,a3n,aoA,a3n,arK,a3n,acq,a3n,XK,a3n,t$,a3n,aCG,a3n,ut,a3n,pO,a3n,N_,a3n,XI,a3n,asz,a3n,Kh,a3n,gq,a3n,eX,a3n,sw,a3n,OO,a3n,gU,a3n,h_,a3n,auI,a3n,Od,a3n,zk,a3n,J2,a3n,D1,a3n,ad8,a3n,UX,a3n,UZ,a3n,In,a3n,OG,a3n,CK,a3n,S_,a3n,Sw,a3n,aiT,a3n,nl,a3n,xH,a3n,u4,a3n,zq,a3n,X6,a3n,ajd,a3n,Gw,a3n,wV,a3n,aho,a3n,qw,a3n,kb,a3n,w9,a3n,NI,a3n,tj,a3n,I4,a3n,HB,a3n,fG,a3n,sk,a3n,awX,a3n,P$,a3n,ay0,a3n,aeS,a3n,fU,a3n,aov,a3n,tw,a3n,pJ,a3n,aj9,a3n,wB,a3n,Mo,a3n,Ki,a3n,MJ,a3n,De,a3n,acn,a3n,Rs,a3n,$1,a3n,Sf,a3n,Bh,a3n,RB,a3n,Ol,a3n,Lc,a3n,hI,a3n,G1,a3n,aoq,a3n,iE,a3n,oa,a3n,agV,a3n,wg,a3n,awM,a3n,Ru,a3n,Oa,a3n,IA,a3n,ate,a3n,vw,a3n,_7,a3n,ri,a3n,Gp,a3n,aAI,a3n,WE,a3n,Fh,a3n,OT,a3n,ahS,a3n,xX,a3n,EJ,a3n,WG,a3n,mY,a3n,xQ,a3n,tE,a3n,Hc,a3n,ER,a3n,ui,a3n,YP,a3n,lH,a3n,EI,a3n,akx,a3n,C9,a3n,Xj,a3n,i4,a3n,Oz,a3n,$W,a3n,If,a3n,zg,a3n,asy,a3n,Cd,a3n,Zz,a3n,ary,a3n,mX,a3n,he,a3n,all,a3n,asw,a3n,Di,a3n,amK,a3n,K_,a3n,amB,a3n,pf,a3n,gS,a3n,fz,a3n,ai_,a3n,aal,a3n,_w,a3n,Cb,a3n,DC,a3n,qo,a3n,qr,a3n,Rq,a3n,D_,a3n,uk,a3n,eN,a3n,tC,a3n,lS,a3n,afJ,a3n,st,a3n,xS,a3n,eb,a3n,Km,a3n,x_,a3n,Ov,a3n,Iu,a3n,pS,a3n,afQ,a3n,aaZ,a3n,Tv,a3n,K6,a3n,TK,a3n,xf,a3n,t2,a3n,aqS,a3n,jn,a3n,Vf,a3n,aaY,a3n,atx,a3n,w1,a3n,gX,a3n,Xa,a3n,uS,a3n,aku,a3n,md,a3n,q8,a3n,qs,a3n,aw_,a3n,RK,a3n,qK,a3n,CE,a3n,qO,a3n,auS,a3n,AU,a3n,NN,a3n,us,a3n,aor,a3n,amr,a3n,alo,a3n,i5,a3n,ab8,a3n,Jz,a3n,sv,a3n,e1,a3n,d4,a3n,oq,a3n,ob,a3n,vB,a3n,$9,a3n,uv,a3n,mz,a3n,w$,a3n,adF,a3n,avv,a3n,UE,a3n,RV,a3n,e$,a3n,wx,a3n,U9,a3n,Ws,a3n,qm,a3n,RJ,a3n,E2,a3n,Nk,a3n,R9,a3n,Hh,a3n,KG,a3n,q3,a3n,ab6,a3n,aau,a3n,amV,a3n,abs,a3n,adk,a3n,alf,a3n,gm,a3n,aoD,a3n,Ub,a3n,HG,a3n,Bv,a3n,Nt,a3n,UN,a3n,BZ,a3n,Se,a3n,iF,a3n,V2,a3n,ajJ,a3n,Ue,a3n,l5,a3n,KK,a3n,JT,a3n,LV,a3n,rF,a3n,oQ,a3n,T2,a3n,Xs,a3n,Xu,a3n,Iy,a3n,SY,a3n,aoB,a3n,Dh,a3n,afa,a3n,jk,a3n,aqL,a3n,ap8,a3n,NZ,a3n,vm,a3n,IX,a3n,al8,a3n,yU,a3n,k9,a3n,Wc,a3n,so,a3n,alT,a3n,aaA,a3n,h3,a3n,pq,a3n,GF,a3n,h4,a3n,Su,a3n,Sm,a3n,Bq,a3n,pH,a3n,awg,a3n,Xq,a3n,lU,a3n,EE,a3n,o2,a3n,aoC,a3n,QI,a3n,Sv,a3n,PF,a3n,XQ,a3n,BY,a3n,eI,a3n,abD,a3n,o0,a3n,adS,a3n,V0,a3n,pu,a3n,akz,a3n,ac4,a3n,akH,a3n,aeb,a3n,v_,a3n,hX,a3n,sx,a3n,aB6,a3n,nY,a3n,akf,a3n,Cr,a3n,BE,a3n,EL,a3n,adR,a3n,I7,a3n,Vs,a3n,JR,a3n,mU,a3n,n7,a3n,aqF,a3n,ae9,a3n,ajl,a3n,W8,a3n,Du,a3n,s6,a3n,aAk,a3n,aqJ,a3n,Jj,a3n,aey,a3n,YC,a3n,Xn,a3n,rT,a3n,ak4,a3n,aqK,a3n,M9,a3n,H8,a3n,Qc,a3n,AP,a3n,wl,a3n,C3,a3n,u9,a3n,GL,a3n,ajx,a3n,Ts,a3n,J6,a3n,apr,a3n,si,a3n,k2,a3n,B8,a3n,arL,a3n,e2,a3n,_a,a3n,W3,a3n,jX,a3n,ayW,a3n,eF,a3n,q2,a3n,qF,a3n,ajr,a3n,_I,a3n,al9,a3n,aeu,a3n,KF,a3n,uV,a3n,uX,a3n,yc,a3n,ZP,a3n,aeJ,a3n,xZ,a3n,nn,a3n,Z9,a3n,aux,a3n,ao2,a3n,St,a3n,sA,a3n,jm,a3n,auY,a3n,I9,a3n,mS,a3n,g4,a3n,aAM,a3n,IM,a3n,T9,a3n,qE,a3n,pQ,a3n,aot,a3n,_m,a3n,Tj,a3n,mL,a3n,XJ,a3n,yg,a3n,Ye,a3n,UW,a3n,ZO,a3n,Cg,a3n,BU,a3n,Qn,a3n,FJ,a3n,Cm,a3n,my,a3n,aa9,a3n,TJ,a3n,aay,a3n,aoy,a3n,MP,a3n,lP,a3n,anM,a3n,B2,a3n,rn,a3n,aBm,a3n,X$,a3n,sp,a3n,t5,a3n,pj,a3n,ari,a3n,Xb,a3n,Fi,a3n,FB,a3n,T$,a3n,adV,a3n,FP,a3n,aa8,a3n,IC,a3n,afl,a3n,qH,a3n,S$,a3n,adf,a3n,sr,a3n,aou,a3n,YW,a3n,aeR,a3n,t9,a3n,api,a3n,aro,a3n,ac0,a3n,V1,a3n,aeH,a3n,Er,a3n,atT,a3n,_J,a3n,acE,a3n,VT,a3n,sV,a3n,azt,a3n,SD,a3n,mV,a3n,aer,a3n,wC,a3n,Dd,a3n,Rw,a3n,BL,a3n,ale,a3n,A9,a3n,aea,a3n,v$,a3n,h0,a3n,CU,a3n,kA,a3n,pt,a3n,vW,a3n,aBa,a3n,Yi,a3n,kK,a3n,Nx,a3n,Rm,a3n,Nz,a3n,l8,a3n,vT,a3n,ap9,a3n,af7,a3n,XL,a3n,YG,a3n,jH,a3n,I6,a3n,atr,a3n,mi,a3n,E1,a3n,aqU,a3n,rU,a3n,aoP,a3n,NK,a3n,hx,a3n,abf,a3n,ajG,a3n,ajA,a3n,apC,a3n,auq,a3n,abh,a3n,aon,a3n,alb,a3n,FI,a3n,ei,a3n,ac1,a3n,axL,a3n,AC,a3n,aqQ,a3n,uz,a3n,abY,a3n,H2,a3n,asS,a3n,d0,a3n,ZS,a3n,$4,a3n,h6,a3n,atj,a3n,Jq,a3n,alI,a3n,qN,a3n,ls,a3n,apW,a3n,B3,a3n,wc,a3n,avT,a3n,Tx,a3n,Q6,a3n,WL,a3n,HV,a3n,oY,a3n,aaD,a3n,anQ,a3n,gJ,a3n,ajW,a3n,aaU,a3n,v1,a3n,wM,a3n,YO,a3n,SV,a3n,aef,a3n,e4,a3n,akP,a3n,p_,a3n,j$,a3n,aA8,a3n,yX,a3n,abp,a3n,Xm,a3n,gN,a3n,l2,a3n,B4,a3n,afm,a3n,hE,a3n,Db,a3n,tZ,a3n,aa2,a3n,IT,a3n,CY,a3n,gR,a3n,ae$,a3n,amA,a3n,wL,a3n,Go,a3n,lT,a3n,g2,a3n,JG,a3n,fM,a3n,Pq,a3n,o3,a3n,BJ,a3n,IH,a3n,Nc,a3n,ao3,a3n,nJ,a3n,abl,a3n,aj1,a3n,wb,a3n,M8,a3n,_v,a3n,vs,a3n,aoz,a3n,ZZ,a3n,ro,a3n,v7,a3n,tY,a3n,aAe,a3n,abm,a3n,zT,a3n,Bp,a3n,afh,a3n,adH,a3n,vE,a3n,abC,a3n,alY,a3n,uf,a3n,aBb,a3n,eH,a3n,SX,a3n,lA,a3n,N7,a3n,CT,a3n,lR,a3n,arl,a3n,gY,a3n,adj,a3n,WQ,a3n,z_,a3n,N$,a3n,as0,a3n,adu,a3n,vu,a3n,B$,a3n,ajB,a3n,axu,a3n,W4,a3n,uD,a3n,aeB,a3n,Tw,a3n,wt,a3n,ZN,a3n,ac2,a3n,ac8,a3n,aqC,a3n,No,a3n,abU,a3n,awV,a3n,A5,a3n,nL,a3n,wn,a3n,rf,a3n,sm,a3n,ah1,a3n,oC,a3n,NP,a3n,rI,a3n,Hw,a3n,Qv,a3n,aBR,a3n,ajI,a3n,wP,a3n,aqu,a3n,Mk,a3n,abj,a3n,Cj,a3n,mj,a3n,Hs,a3n,hr,a3n,kc,a3n,an3,a3n,atE,a3n,A6,a3n,FK,a3n,p7,a3n,ny,a3n,nX,a3n,Jl,a3n,vX,a3n,afP,a3n,hP,a3n,B_,a3n,wy,a3n,Y3,a3n,Pi,a3n,UO,a3n,Ib,a3n,xx,a3n,Bx,a3n,lu,a3n,RT,a3n,rq,a3n,aBB,a3n,azd,a3n,vL,a3n,vg,a3n,qP,a3n,sG,a3n,Pr,a3n,apq,a3n,Zq,a3n,pL,a3n,aCh,a3n,n5,a3n,ayX,a3n,nd,a3n,XC,a3n,x5,a3n,hg,a3n,ahM,a3n,aa_,a3n,gl,a3n,xW,a3n,aqD,a3n,hY,a3n,sq,a3n,VF,a3n,aek,a3n,acF,a3n,Mp,a3n,abu,a3n,awT,a3n,hb,a3n,Tr,a3n,hK,a3n,Ud,a3n,qe,a3n,aCj,a3n,SZ,a3n,Nj,a3n,AX,a3n,WZ,a3n,OE,a3n,abb,a3n,als,a3n,nH,a3n,acp,a3n,VG,a3n,ae2,a3n,mv,a3n,MD,a3n,Us,a3n,Ng,a3n,qI,a3n,l$,a3n,jT,a3n,uc,a3n,Wk,a3n,afe,a3n,Ia,a3n,FS,a3n,Os,a3n,UP,a3n,anL,a3n,aqM,a3n,JP,a3n,gM,a3n,OS,a3n,ase,a3n,$Q,a3n,aco,a3n,Cz,a3n,aoO,a3n,adA,a3n,kY,a3n,g9,a3n,vK,a3n,an2,a3n,v4,a3n,$k,a3n,aeP,a3n,KC,a3n,C1,a3n,zC,a3n,azu,a3n,UK,a3n,eP,a3n,aqI,a3n,Y2,a3n,EH,a3n,HF,a3n,Vd,a3n,Hk,a3n,SI,a3n,PR,a3n,QV,a3n,ahj,a3n,Id,a3n,adG,a3n,arG,a3n,aA9,a3n,aqv,a3n,Gm,a3n,adz,a3n,ax8,a3n,N0,a3n,OM,a3n,GY,a3n,OP,a3n,Lz,a3n,Cw,a3n,t0,a3n,$G,a3n,pd,a3n,AJ,a3n,s1,a3n,ts,a3n,ni,a3n,np,a3n,adE,a3n,mM,a3n,azY,a3n,QH,a3n,SN,a3n,agk,a3n,N3,a3n,ak0,a3n,GA,a3n,aha,a3n,aqE,a3n,anO,a3n,aqx,a3n,aeA,a3n,le,a3n,nu,a3n,apI,a3n,wR,a3n,ub,a3n,Nn,a3n,L7,a3n,on,a3n,UL,a3n,gW,a3n,Ff,a3n,avp,a3n,abg,a3n,Bk,a3n,U1,a3n,Oi,a3n,x0,a3n,LS,a3n,aoo,a3n,aAE,a3n,aBl,a3n,WB,a3n,ab$,a3n,m2,a3n,WH,a3n,tx,a3n,aCm,a3n,akd,a3n,Bl,a3n,Nh,a3n,abk,a3n,Tt,a3n,avz,a3n,ou,a3n,Xv,a3n,Bb,a3n,ahX,a3n,ajz,a3n,ZY,a3n,Ri,a3n,nc,a3n,ew,a3n,aat,a3n,afC,a3n,ahE,a3n,Io,a3n,YH,a3n,n8,a3n,amZ,a3n,aCQ,a3n,qJ,a3n,aiy,a3n,iU,a3n,pG,a3n,B7,a3n,ae3,a3n,ajw,a3n,wv,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n];var cw=[a3o,a3o,aGl,a3o,aGm,a3o,aGn,a3o,aGo,a3o,aGp,a3o,aGq,a3o,aGr,a3o,aGs,a3o,aGt,a3o,aGu,a3o,aGv,a3o,aGw,a3o,aGx,a3o,aGy,a3o,aGz,a3o,aGA,a3o,aGB,a3o,aGC,a3o,aGD,a3o,aGE,a3o,te,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o];var cx=[a3p,a3p,aGG,a3p,aGH,a3p,aGI,a3p,aGJ,a3p,aGK,a3p,aGL,a3p,aGM,a3p,aGN,a3p,aGO,a3p,aGP,a3p,aGQ,a3p,aGR,a3p,aGS,a3p,aGT,a3p,aGU,a3p,aGV,a3p,aGW,a3p,aGX,a3p,aGY,a3p,aGZ,a3p,eg,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p];var cy=[a3q,a3q,aG$,a3q,aG0,a3q,aG1,a3q,aG2,a3q,aG3,a3q,aG4,a3q,aG5,a3q,aG6,a3q,aG7,a3q,aG8,a3q,aG9,a3q,aHa,a3q,aHb,a3q,aHc,a3q,aHd,a3q,aHe,a3q,aHf,a3q,aHg,a3q,aHh,a3q,aHi,a3q,ahs,a3q,iN,a3q,rX,a3q,acs,a3q,yA,a3q,_U,a3q,abd,a3q,FF,a3q,xF,a3q,n4,a3q,Jh,a3q,Xi,a3q,ae_,a3q,amm,a3q,gw,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q];var cz=[a3r,a3r,aHk,a3r,aHl,a3r,aHm,a3r,aHn,a3r,aHo,a3r,aHp,a3r,aHq,a3r,aHr,a3r,aHs,a3r,aHt,a3r,aHu,a3r,aHv,a3r,aHw,a3r,aHx,a3r,aHy,a3r,aHz,a3r,aHA,a3r,aHB,a3r,aHC,a3r,aHD,a3r,tf,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r];var cA=[a3s,a3s,aHF,a3s,aHG,a3s,aHH,a3s,aHI,a3s,aHJ,a3s,aHK,a3s,aHL,a3s,aHM,a3s,aHN,a3s,aHO,a3s,aHP,a3s,aHQ,a3s,aHR,a3s,aHS,a3s,aHT,a3s,aHU,a3s,aHV,a3s,aHW,a3s,aHX,a3s,aHY,a3s,M7,a3s,afS,a3s,aj0,a3s,JZ,a3s,PK,a3s,WD,a3s,ad0,a3s,lj,a3s,g6,a3s,ayx,a3s,FO,a3s,aa$,a3s,j7,a3s,e5,a3s,f8,a3s,Dq,a3s,x6,a3s,kR,a3s,IU,a3s,lr,a3s,Mf,a3s,wZ,a3s,ic,a3s,aiA,a3s,ai$,a3s,kG,a3s,Uu,a3s,q1,a3s,fY,a3s,oc,a3s,CO,a3s,rl,a3s,e6,a3s,aaL,a3s,Qa,a3s,qc,a3s,RA,a3s,Fb,a3s,af5,a3s,BG,a3s,Zw,a3s,sl,a3s,x2,a3s,mW,a3s,IR,a3s,Zh,a3s,jP,a3s,amx,a3s,hf,a3s,hl,a3s,sK,a3s,sQ,a3s,aj2,a3s,sI,a3s,PY,a3s,ahx,a3s,zp,a3s,Qi,a3s,vA,a3s,U5,a3s,Do,a3s,jC,a3s,PZ,a3s,_9,a3s,avk,a3s,hs,a3s,zv,a3s,hi,a3s,HE,a3s,Wd,a3s,PT,a3s,Vh,a3s,ss,a3s,KJ,a3s,alU,a3s,Fu,a3s,qZ,a3s,l1,a3s,ai7,a3s,arO,a3s,pZ,a3s,afs,a3s,Z8,a3s,lb,a3s,uh,a3s,Ad,a3s,af3,a3s,Hx,a3s,add,a3s,kL,a3s,fT,a3s,hM,a3s,nx,a3s,GJ,a3s,ht,a3s,S8,a3s,C5,a3s,ahi,a3s,Aj,a3s,Sk,a3s,sf,a3s,arE,a3s,Bz,a3s,W$,a3s,Or,a3s,oj,a3s,Ze,a3s,rG,a3s,Rl,a3s,I1,a3s,amW,a3s,K2,a3s,lc,a3s,CG,a3s,pg,a3s,T5,a3s,f_,a3s,aeI,a3s,x1,a3s,afE,a3s,ud,a3s,mI,a3s,aly,a3s,wX,a3s,HH,a3s,Tp,a3s,KD,a3s,qq,a3s,agE,a3s,agu,a3s,CQ,a3s,Uo,a3s,sc,a3s,mA,a3s,akt,a3s,afn,a3s,FX,a3s,gO,a3s,I$,a3s,fc,a3s,aBV,a3s,kT,a3s,TG,a3s,MY,a3s,mC,a3s,Qb,a3s,MA,a3s,vh,a3s,aia,a3s,akn,a3s,uQ,a3s,Cu,a3s,Me,a3s,afW,a3s,mG,a3s,agO,a3s,qU,a3s,mx,a3s,M5,a3s,pc,a3s,VB,a3s,ot,a3s,T4,a3s,wQ,a3s,amF,a3s,KI,a3s,zz,a3s,tN,a3s,io,a3s,rV,a3s,Hi,a3s,ug,a3s,BD,a3s,Aq,a3s,aeL,a3s,PW,a3s,n0,a3s,t_,a3s,auM,a3s,eK,a3s,vG,a3s,wS,a3s,kS,a3s,ajZ,a3s,Lt,a3s,Sc,a3s,zy,a3s,LQ,a3s,ala,a3s,aiG,a3s,Ni,a3s,v3,a3s,hT,a3s,Es,a3s,ib,a3s,HK,a3s,hn,a3s,Tf,a3s,abB,a3s,vJ,a3s,n2,a3s,afD,a3s,PP,a3s,r7,a3s,Gc,a3s,aj6,a3s,aeK,a3s,Uk,a3s,JY,a3s,f$,a3s,afv,a3s,Ab,a3s,w6,a3s,HN,a3s,zO,a3s,f0,a3s,pl,a3s,hw,a3s,KU,a3s,CB,a3s,aqB,a3s,avF,a3s,Al,a3s,OC,a3s,Et,a3s,Pa,a3s,GT,a3s,So,a3s,wY,a3s,MW,a3s,nV,a3s,aiH,a3s,yL,a3s,DU,a3s,VE,a3s,aiK,a3s,lo,a3s,afu,a3s,Bg,a3s,aem,a3s,aeF,a3s,_y,a3s,ep,a3s,Df,a3s,oM,a3s,awP,a3s,af2,a3s,tL,a3s,ako,a3s,N9,a3s,zs,a3s,QF,a3s,ag0,a3s,Kn,a3s,lY,a3s,J$,a3s,Ti,a3s,TS,a3s,JJ,a3s,abQ,a3s,IV,a3s,Ai,a3s,oF,a3s,uC,a3s,ft,a3s,TY,a3s,r3,a3s,aiN,a3s,fe,a3s,sh,a3s,Si,a3s,tP,a3s,adl,a3s,L6,a3s,yH,a3s,Va,a3s,sj,a3s,Ht,a3s,Y8,a3s,n1,a3s,IZ,a3s,op,a3s,aqy,a3s,adq,a3s,j5,a3s,DI,a3s,oh,a3s,ue,a3s,II,a3s,azv,a3s,ne,a3s,adw,a3s,$F,a3s,akl,a3s,Nw,a3s,ka,a3s,os,a3s,adh,a3s,EN,a3s,L8,a3s,arg,a3s,QB,a3s,aj$,a3s,Z1,a3s,g8,a3s,aki,a3s,agy,a3s,Qm,a3s,e3,a3s,ow,a3s,oA,a3s,IY,a3s,XM,a3s,jY,a3s,sJ,a3s,Nv,a3s,Lw,a3s,qn,a3s,ES,a3s,ad3,a3s,oi,a3s,XA,a3s,WF,a3s,p0,a3s,Um,a3s,p1,a3s,sb,a3s,adn,a3s,yi,a3s,xA,a3s,abW,a3s,alA,a3s,KA,a3s,E7,a3s,Pg,a3s,Ay,a3s,fw,a3s,e9,a3s,I0,a3s,vr,a3s,DS,a3s,WR,a3s,aoJ,a3s,afX,a3s,_e,a3s,ua,a3s,zu,a3s,akF,a3s,afo,a3s,nU,a3s,yk,a3s,tJ,a3s,_c,a3s,aix,a3s,p8,a3s,Ql,a3s,mO,a3s,Tn,a3s,aa0,a3s,aja,a3s,aqX,a3s,t4,a3s,Mz,a3s,gQ,a3s,gD,a3s,r2,a3s,Zf,a3s,VC,a3s,vt,a3s,KH,a3s,$_,a3s,$0,a3s,OQ,a3s,tT,a3s,kX,a3s,hk,a3s,$H,a3s,rp,a3s,Pn,a3s,gh,a3s,am7,a3s,MZ,a3s,lD,a3s,$V,a3s,Na,a3s,zM,a3s,p$,a3s,amw,a3s,is,a3s,aah,a3s,Vj,a3s,x3,a3s,Ez,a3s,Li,a3s,qf,a3s,vH,a3s,sn,a3s,lm,a3s,WI,a3s,alB,a3s,H$,a3s,P8,a3s,aft,a3s,ag4,a3s,Qj,a3s,asm,a3s,Yy,a3s,I2,a3s,q0,a3s,uK,a3s,aeN,a3s,aj_,a3s,f3,a3s,ahW,a3s,tR,a3s,Sj,a3s,ok,a3s,i_,a3s,lF,a3s,M6,a3s,ab9,a3s,jO,a3s,Hq,a3s,Hj,a3s,oo,a3s,ad_,a3s,ku,a3s,mt,a3s,jp,a3s,CP,a3s,aeG,a3s,i3,a3s,oB,a3s,pv,a3s,Ae,a3s,aw9,a3s,acd,a3s,alC,a3s,amq,a3s,U0,a3s,Ro,a3s,ph,a3s,NH,a3s,w_,a3s,Pc,a3s,as5,a3s,vN,a3s,SW,a3s,ams,a3s,h8,a3s,asG,a3s,R6,a3s,sy,a3s,RC,a3s,fd,a3s,VK,a3s,an4,a3s,Ss,a3s,rc,a3s,hL,a3s,Vo,a3s,U$,a3s,fv,a3s,ack,a3s,acm,a3s,_1,a3s,qL,a3s,ad4,a3s,R7,a3s,af1,a3s,xu,a3s,By,a3s,r5,a3s,adb,a3s,iz,a3s,afB,a3s,akj,a3s,akp,a3s,g5,a3s,Nf,a3s,ge,a3s,BK,a3s,EY,a3s,apB,a3s,gF,a3s,Y5,a3s,YL,a3s,azw,a3s,ajO,a3s,eY,a3s,hF,a3s,ach,a3s,Vp,a3s,avE,a3s,TD,a3s,amo,a3s,s0,a3s,lx,a3s,PV,a3s,vq,a3s,amy,a3s,aqG,a3s,uW,a3s,kU,a3s,pA,a3s,agS,a3s,B5,a3s,tW,a3s,o6,a3s,hy,a3s,tQ,a3s,xp,a3s,F4,a3s,jd,a3s,HU,a3s,n_,a3s,mw,a3s,azG,a3s,GU,a3s,iq,a3s,Vc,a3s,FR,a3s,Yn,a3s,qx,a3s,acB,a3s,$r,a3s,aba,a3s,_d,a3s,alw,a3s,J0,a3s,ar2,a3s,A1,a3s,ed,a3s,Oj,a3s,vD,a3s,ly,a3s,eM,a3s,aaE,a3s,gd,a3s,TQ,a3s,Cp,a3s,ayh,a3s,P3,a3s,qY,a3s,zQ,a3s,_G,a3s,atp,a3s,Aa,a3s,EZ,a3s,Wj,a3s,$h,a3s,auK,a3s,oP,a3s,sz,a3s,zL,a3s,O4,a3s,VR,a3s,aBP,a3s,Ak,a3s,afp,a3s,aoI,a3s,jD,a3s,PX,a3s,TT,a3s,VH,a3s,Wh,a3s,pm,a3s,ul,a3s,akR,a3s,sd,a3s,t3,a3s,Aw,a3s,Rv,a3s,eL,a3s,aBx,a3s,iB,a3s,R8,a3s,zj,a3s,Dr,a3s,Ux,a3s,vz,a3s,nF,a3s,Ph,a3s,Pb,a3s,ng,a3s,w2,a3s,ace,a3s,CD,a3s,aA_,a3s,h2,a3s,akg,a3s,M4,a3s,L9,a3s,Ug,a3s,jS,a3s,ac$,a3s,lG,a3s,Iz,a3s,fQ,a3s,Ej,a3s,Q3,a3s,An,a3s,Jn,a3s,Pf,a3s,Nb,a3s,PU,a3s,O7,a3s,Zj,a3s,auZ,a3s,gG,a3s,eQ,a3s,SE,a3s,zr,a3s,HL,a3s,xz,a3s,alu,a3s,Td,a3s,IL,a3s,ajY,a3s,tS,a3s,pw,a3s,Y6,a3s,kV,a3s,hp,a3s,K$,a3s,hd,a3s,Cy,a3s,al3,a3s,gK,a3s,afw,a3s,MU,a3s,gC,a3s,oe,a3s,Ny,a3s,j_,a3s,agX,a3s,d_,a3s,ajM,a3s,$S,a3s,vQ,a3s,fZ,a3s,hc,a3s,f9,a3s,Cx,a3s,Pd,a3s,oD,a3s,Br,a3s,JB,a3s,aiZ,a3s,ahA,a3s,U2,a3s,YA,a3s,akk,a3s,arN,a3s,q7,a3s,p3,a3s,aiF,a3s,WU,a3s,Ar,a3s,qh,a3s,Nl,a3s,En,a3s,Uv,a3s,adc,a3s,amz,a3s,qv,a3s,wz,a3s,kf,a3s,Tb,a3s,amD,a3s,U6,a3s,fb,a3s,Mj,a3s,wu,a3s,zE,a3s,GM,a3s,QA,a3s,W_,a3s,_T,a3s,Xt,a3s,gI,a3s,Bj,a3s,tX,a3s,agM,a3s,_8,a3s,kd,a3s,Ry,a3s,W6,a3s,fR,a3s,wj,a3s,rg,a3s,aej,a3s,w0,a3s,oy,a3s,Qh,a3s,sF,a3s,kh,a3s,ag7,a3s,av8,a3s,abP,a3s,ayS,a3s,LM,a3s,adi,a3s,Rp,a3s,nC,a3s,fh,a3s,Am,a3s,ON,a3s,VL,a3s,XE,a3s,Kw,a3s,ac_,a3s,oG,a3s,FW,a3s,avj,a3s,t6,a3s,On,a3s,ahB,a3s,Qg,a3s,t1,a3s,Ap,a3s,r8,a3s,Pe,a3s,Ci,a3s,ab4,a3s,CL,a3s,avI,a3s,aeV,a3s,VD,a3s,X8,a3s,GN,a3s,f1,a3s,P5,a3s,Yu,a3s,ff,a3s,agU,a3s,Ex,a3s,Ns,a3s,ga,a3s,aiD,a3s,aep,a3s,To,a3s,U4,a3s,FQ,a3s,zt,a3s,Vu,a3s,acb,a3s,aBu,a3s,GE,a3s,xg,a3s,nm,a3s,R$,a3s,Yt,a3s,Qe,a3s,y0,a3s,an1,a3s,li,a3s,mh,a3s,ml,a3s,OI,a3s,aBf,a3s,p5,a3s,HY,a3s,ayT,a3s,kQ,a3s,fg,a3s,al5,a3s,P_,a3s,Dn,a3s,aAD,a3s,DH,a3s,vI,a3s,RR,a3s,azI,a3s,C$,a3s,aar,a3s,Wi,a3s,JE,a3s,rd,a3s,Zy,a3s,qA,a3s,TH,a3s,aao,a3s,aez,a3s,Zc,a3s,Vq,a3s,adp,a3s,agK,a3s,ai6,a3s,gP,a3s,ar_,a3s,Uw,a3s,HD,a3s,nk,a3s,aaG,a3s,Ym,a3s,et,a3s,agJ,a3s,t7,a3s,Ey,a3s,aBS,a3s,Ma,a3s,CM,a3s,im,a3s,IJ,a3s,W0,a3s,ad9,a3s,Yx,a3s,fs,a3s,BF,a3s,nv,a3s,VS,a3s,ajT,a3s,tM,a3s,lg,a3s,ar1,a3s,Fc,a3s,xV,a3s,eO,a3s,gZ,a3s,arJ,a3s,py,a3s,axx,a3s,Y7,a3s,sB,a3s,aed,a3s,ef,a3s,afF,a3s,Zg,a3s,yl,a3s,ajP,a3s,XD,a3s,aaV,a3s,ET,a3s,j1,a3s,Ul,a3s,e0,a3s,od,a3s,abS,a3s,CN,a3s,U8,a3s,Sd,a3s,Kr,a3s,Z_,a3s,lh,a3s,DG,a3s,aex,a3s,qp,a3s,JW,a3s,uN,a3s,akm,a3s,Fa,a3s,ax_,a3s,acg,a3s,ar$,a3s,ln,a3s,az6,a3s,asH,a3s,afx,a3s,Tl,a3s,JU,a3s,ql,a3s,TX,a3s,Sl,a3s,xs,a3s,ys,a3s,Hn,a3s,$T,a3s,ad5,a3s,J5,a3s,Tq,a3s,arh,a3s,aAi,a3s,vv,a3s,agI,a3s,Ne,a3s,agz,a3s,Mg,a3s,agR,a3s,P2,a3s,o9,a3s,anV,a3s,Bd,a3s,Yl,a3s,aaI,a3s,ak6,a3s,Sr,a3s,HC,a3s,Mw,a3s,x4,a3s,Da,a3s,Vr,a3s,Pk,a3s,aaz,a3s,arM,a3s,iA,a3s,Zb,a3s,Vz,a3s,xY,a3s,MX,a3s,mD,a3s,Lx,a3s,zw,a3s,KS,a3s,o_,a3s,uO,a3s,lk,a3s,M_,a3s,V5,a3s,aif,a3s,S1,a3s,asY,a3s,ir,a3s,ar3,a3s,TW,a3s,ks,a3s,hJ,a3s,_o,a3s,ayV,a3s,az5,a3s,F8,a3s,fV,a3s,NG,a3s,ayP,a3s,ayU,a3s,p4,a3s,ake,a3s,Uq,a3s,amp,a3s,sa,a3s,agp,a3s,WX,a3s,DF,a3s,ac9,a3s,Kz,a3s,arj,a3s,vU,a3s,aiV,a3s,ij,a3s,Zi,a3s,ado,a3s,re,a3s,ad1,a3s,Bm,a3s,agx,a3s,no,a3s,Qd,a3s,Za,a3s,WJ,a3s,Wz,a3s,ag_,a3s,avg,a3s,CJ,a3s,acf,a3s,pp,a3s,abX,a3s,nz,a3s,q5,a3s,ik,a3s,og,a3s,hD,a3s,al2,a3s,ig,a3s,Rk,a3s,Rr,a3s,GH,a3s,P4,a3s,apu,a3s,D4,a3s,VA,a3s,P7,a3s,aiI,a3s,Zo,a3s,Sg,a3s,Ls,a3s,Ve,a3s,$R,a3s,Ho,a3s,Ew,a3s,Po,a3s,as6,a3s,acT,a3s,ab2,a3s,pR,a3s,gV,a3s,lp,a3s,hH,a3s,aec,a3s,ll,a3s,aiY,a3s,$7,a3s,XO,a3s,axb,a3s,ox,a3s,Mc,a3s,Oo,a3s,ii,a3s,zB,a3s,aaj,a3s,aAB,a3s,azO,a3s,Oh,a3s,MV,a3s,Ok,a3s,LP,a3s,Vx,a3s,arZ,a3s,Vi,a3s,aka,a3s,iv,a3s,aeM,a3s,Vm,a3s,Nd,a3s,P9,a3s,Rt,a3s,Ev,a3s,KN,a3s,ie,a3s,avL,a3s,Wa,a3s,afL,a3s,Kt,a3s,vM,a3s,aaQ,a3s,q4,a3s,pW,a3s,aa1,a3s,gH,a3s,p2,a3s,JV,a3s,akh,a3s,azN,a3s,Md,a3s,F6,a3s,agW,a3s,HM,a3s,Q0,a3s,HA,a3s,aaW,a3s,aag,a3s,Mh,a3s,lq,a3s,M0,a3s,Ky,a3s,BH,a3s,aci,a3s,Nq,a3s,Ua,a3s,ay9,a3s,ag8,a3s,KV,a3s,akc,a3s,agL,a3s,Nm,a3s,wp,a3s,ag6,a3s,azH,a3s,KP,a3s,Om,a3s,azM,a3s,axz,a3s,acx,a3s,abR,a3s,agd,a3s,pn,a3s,kM,a3s,$$,a3s,H0,a3s,aes,a3s,Mv,a3s,M$,a3s,asF,a3s,ajQ,a3s,Vk,a3s,ag5,a3s,fj,a3s,Rx,a3s,pi,a3s,$X,a3s,afy,a3s,ade,a3s,yW,a3s,Bi,a3s,Qk,a3s,Qf,a3s,al6,a3s,IB,a3s,afz,a3s,At,a3s,BR,a3s,oE,a3s,Bo,a3s,BC,a3s,ark,a3s,acC,a3s,GB,a3s,alr,a3s,EQ,a3s,ag3,a3s,Y0,a3s,acZ,a3s,ap1,a3s,ajF,a3s,Tm,a3s,aBe,a3s,ar0,a3s,Eb,a3s,xC,a3s,tk,a3s,F_,a3s,aev,a3s,q9,a3s,KT,a3s,aeE,a3s,KL,a3s,sR,a3s,Bn,a3s,LN,a3s,il,a3s,Z0,a3s,sg,a3s,K3,a3s,Cv,a3s,GV,a3s,pk,a3s,aeC,a3s,Fd,a3s,ad2,a3s,mT,a3s,su,a3s,eT,a3s,jB,a3s,UT,a3s,mu,a3s,PS,a3s,Hg,a3s,auJ,a3s,$E,a3s,Vw,a3s,tO,a3s,gL,a3s,A$,a3s,ke,a3s,AS,a3s,T7,a3s,akD,a3s,agF,a3s,Hu,a3s,Sb,a3s,aiJ,a3s,G0,a3s,Z4,a3s,Y4,a3s,t8,a3s,gf,a3s,VJ,a3s,mE,a3s,YF,a3s,kW,a3s,ab7,a3s,ato,a3s,abO,a3s,Kx,a3s,PO,a3s,aiM,a3s,vC,a3s,F3,a3s,adr,a3s,ag2,a3s,abt,a3s,aas,a3s,aiz,a3s,N4,a3s,aaH,a3s,axa,a3s,ayi,a3s,KZ,a3s,Y1,a3s,Z6,a3s,agT,a3s,nZ,a3s,zx,a3s,Q4,a3s,Sh,a3s,jA,a3s,TV,a3s,ax1,a3s,Lm,a3s,aAA,a3s,Ko,a3s,ol,a3s,Op,a3s,agQ,a3s,jW,a3s,mF,a3s,Ks,a3s,HJ,a3s,avd,a3s,JK,a3s,Uj,a3s,Yv,a3s,avO,a3s,aAP,a3s,as4,a3s,ze,a3s,YD,a3s,XB,a3s,Kp,a3s,O9,a3s,Hl,a3s,afA,a3s,se,a3s,aoK,a3s,aA$,a3s,kt,a3s,sP,a3s,vp,a3s,hv,a3s,Vg,a3s,ajU,a3s,acY,a3s,aaP,a3s,ad7,a3s,awb,a3s,JX,a3s,p6,a3s,ac3,a3s,qd,a3s,agP,a3s,aiL,a3s,Yh,a3s,WP,a3s,agD,a3s,fX,a3s,lt,a3s,Fm,a3s,M1,a3s,x8,a3s,KQ,a3s,amv,a3s,zA,a3s,gE,a3s,kO,a3s,Ag,a3s,uY,a3s,_x,a3s,avh,a3s,ak7,a3s,alD,a3s,Py,a3s,afO,a3s,E_,a3s,F$,a3s,ac7,a3s,aaX,a3s,afr,a3s,j9,a3s,awO,a3s,T8,a3s,CA,a3s,Sq,a3s,ak1,a3s,apf,a3s,Au,a3s,akG,a3s,r1,a3s,jo,a3s,ak2,a3s,Ix,a3s,aAZ,a3s,RL,a3s,Zd,a3s,O6,a3s,asW,a3s,Ku,a3s,Ao,a3s,Nr,a3s,uI,a3s,aak,a3s,sE,a3s,xw,a3s,Kv,a3s,JA,a3s,aaf,a3s,yb,a3s,Mi,a3s,BI,a3s,gT,a3s,P6,a3s,ag1,a3s,aAY,a3s,TU,a3s,aDz,a3s,fS,a3s,aca,a3s,Fe,a3s,Vv,a3s,zm,a3s,XH,a3s,Ax,a3s,xv,a3s,aaq,a3s,ip,a3s,ad$,a3s,TC,a3s,ajR,a3s,KO,a3s,fi,a3s,asl,a3s,P1,a3s,apd,a3s,abT,a3s,oO,a3s,VP,a3s,Np,a3s,$2,a3s,r_,a3s,aiW,a3s,Vt,a3s,Fk,a3s,iZ,a3s,BA,a3s,V6,a3s,aic,a3s,it,a3s,hj,a3s,Zp,a3s,QE,a3s,q_,a3s,ai9,a3s,BB,a3s,pX,a3s,E8,a3s,qt,a3s,acy,a3s,JH,a3s,Vl,a3s,lf,a3s,aj8,a3s,aby,a3s,Q$,a3s,S9,a3s,ahy,a3s,mk,a3s,Jo,a3s,of,a3s,aw8,a3s,acj,a3s,Vy,a3s,r9,a3s,alz,a3s,Zt,a3s,afV,a3s,q$,a3s,Y9,a3s,as2,a3s,yh,a3s,Sp,a3s,RI,a3s,NC,a3s,ada,a3s,KR,a3s,aj4,a3s,ld,a3s,ak8,a3s,YB,a3s,vF,a3s,awd,a3s,Hv,a3s,hu,a3s,CC,a3s,av9,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s];var cB=[a3t,a3t,aH_,a3t,aH$,a3t,aH0,a3t,aH1,a3t,aH2,a3t,aH3,a3t,aH4,a3t,aH5,a3t,aH6,a3t,aH7,a3t,aH8,a3t,aH9,a3t,aIa,a3t,aIb,a3t,aIc,a3t,aId,a3t,aIe,a3t,aIf,a3t,aIg,a3t,aIh,a3t,S0,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t];var cC=[a3u,a3u,aIj,a3u,aIk,a3u,aIl,a3u,aIm,a3u,aIn,a3u,aIo,a3u,aIp,a3u,aIq,a3u,aIr,a3u,aIs,a3u,aIt,a3u,aIu,a3u,aIv,a3u,aIw,a3u,aIx,a3u,aIy,a3u,aIz,a3u,aIA,a3u,aIB,a3u,aIC,a3u,eD,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u];var cD=[a3v,a3v,aIE,a3v,aIF,a3v,aIG,a3v,aIH,a3v,aII,a3v,aIJ,a3v,aIK,a3v,aIL,a3v,aIM,a3v,aIN,a3v,aIO,a3v,aIP,a3v,aIQ,a3v,aIR,a3v,aIS,a3v,aIT,a3v,aIU,a3v,aIV,a3v,aIW,a3v,aIX,a3v,pC,a3v,YY,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v];var cE=[a3w,a3w,aIZ,a3w,aI_,a3w,aI$,a3w,aI0,a3w,aI1,a3w,aI2,a3w,aI3,a3w,aI4,a3w,aI5,a3w,aI6,a3w,aI7,a3w,aI8,a3w,aI9,a3w,aJa,a3w,aJb,a3w,aJc,a3w,aJd,a3w,aJe,a3w,aJf,a3w,aJg,a3w,aqZ,a3w,_0,a3w,Wv,a3w,yp,a3w,abG,a3w,Ii,a3w,eu,a3w,aa5,a3w,rQ,a3w,anW,a3w,ao9,a3w,apv,a3w,apE,a3w,m7,a3w,adN,a3w,wI,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w];var cF=[a3x,a3x,aJi,a3x,aJj,a3x,aJk,a3x,aJl,a3x,aJm,a3x,aJn,a3x,aJo,a3x,aJp,a3x,aJq,a3x,aJr,a3x,aJs,a3x,aJt,a3x,aJu,a3x,aJv,a3x,aJw,a3x,aJx,a3x,aJy,a3x,aJz,a3x,aJA,a3x,aJB,a3x,A7,a3x,Be,a3x,abn,a3x,afc,a3x,abz,a3x,afM,a3x,a3x,a3x,a3x,a3x,a3x,a3x,a3x,a3x,a3x,a3x];var cG=[a3y,a3y,aJD,a3y,aJE,a3y,aJF,a3y,aJG,a3y,aJH,a3y,aJI,a3y,aJJ,a3y,aJK,a3y,aJL,a3y,aJM,a3y,aJN,a3y,aJO,a3y,aJP,a3y,aJQ,a3y,aJR,a3y,aJS,a3y,aJT,a3y,aJU,a3y,aJV,a3y,aJW,a3y,_X,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y];var cH=[a3z,a3z,aJY,a3z,aJZ,a3z,aJ_,a3z,aJ$,a3z,aJ0,a3z,aJ1,a3z,aJ2,a3z,aJ3,a3z,aJ4,a3z,aJ5,a3z,aJ6,a3z,aJ7,a3z,aJ8,a3z,aJ9,a3z,aKa,a3z,aKb,a3z,aKc,a3z,aKd,a3z,aKe,a3z,aKf,a3z,PM,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z];var cI=[a3A,a3A,aKh,a3A,aKi,a3A,aKj,a3A,aKk,a3A,aKl,a3A,aKm,a3A,aKn,a3A,aKo,a3A,aKp,a3A,aKq,a3A,aKr,a3A,aKs,a3A,aKt,a3A,aKu,a3A,aKv,a3A,aKw,a3A,aKx,a3A,aKy,a3A,aKz,a3A,aKA,a3A,Je,a3A,aeX,a3A,nQ,a3A,Xf,a3A,a3A,a3A,a3A,a3A,a3A,a3A,a3A,a3A,a3A,a3A,a3A,a3A,a3A,a3A];var cJ=[a3B,a3B,aKC,a3B,aKD,a3B,aKE,a3B,aKF,a3B,aKG,a3B,aKH,a3B,aKI,a3B,aKJ,a3B,aKK,a3B,aKL,a3B,aKM,a3B,aKN,a3B,aKO,a3B,aKP,a3B,aKQ,a3B,aKR,a3B,aKS,a3B,aKT,a3B,aKU,a3B,aKV,a3B,LU,a3B,ju,a3B,xc,a3B,yx,a3B,FN,a3B,ah5,a3B,a3B,a3B,a3B,a3B,a3B,a3B,a3B,a3B,a3B,a3B];var cK=[a3C,a3C,aKX,a3C,aKY,a3C,aKZ,a3C,aK_,a3C,aK$,a3C,aK0,a3C,aK1,a3C,aK2,a3C,aK3,a3C,aK4,a3C,aK5,a3C,aK6,a3C,aK7,a3C,aK8,a3C,aK9,a3C,aLa,a3C,aLb,a3C,aLc,a3C,aLd,a3C,aLe,a3C,tp,a3C,td,a3C,tl,a3C,a3C,a3C,a3C,a3C,a3C,a3C,a3C,a3C,a3C,a3C,a3C,a3C,a3C,a3C,a3C,a3C];var cL=[a3D,a3D,aLg,a3D,aLh,a3D,aLi,a3D,aLj,a3D,aLk,a3D,aLl,a3D,aLm,a3D,aLn,a3D,aLo,a3D,aLp,a3D,aLq,a3D,aLr,a3D,aLs,a3D,aLt,a3D,aLu,a3D,aLv,a3D,aLw,a3D,aLx,a3D,aLy,a3D,aLz,a3D,axU,a3D,ayc,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D];var cM=[a3E,a3E,aLB,a3E,aLC,a3E,aLD,a3E,aLE,a3E,aLF,a3E,aLG,a3E,aLH,a3E,aLI,a3E,aLJ,a3E,aLK,a3E,aLL,a3E,aLM,a3E,aLN,a3E,aLO,a3E,aLP,a3E,aLQ,a3E,aLR,a3E,aLS,a3E,aLT,a3E,aLU,a3E,yN,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E];var cN=[a3F,a3F,aLW,a3F,aLX,a3F,aLY,a3F,aLZ,a3F,aL_,a3F,aL$,a3F,aL0,a3F,aL1,a3F,aL2,a3F,aL3,a3F,aL4,a3F,aL5,a3F,aL6,a3F,aL7,a3F,aL8,a3F,aL9,a3F,aMa,a3F,aMb,a3F,aMc,a3F,aMd,a3F,NY,a3F,Jw,a3F,aqs,a3F,a3F,a3F,a3F,a3F,a3F,a3F,a3F,a3F,a3F,a3F,a3F,a3F,a3F,a3F,a3F,a3F];var cO=[a3G,a3G,aMf,a3G,aMg,a3G,aMh,a3G,aMi,a3G,aMj,a3G,aMk,a3G,aMl,a3G,aMm,a3G,aMn,a3G,aMo,a3G,aMp,a3G,aMq,a3G,aMr,a3G,aMs,a3G,aMt,a3G,aMu,a3G,aMv,a3G,aMw,a3G,aMx,a3G,aMy,a3G,auA,a3G,auC,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G];var cP=[a3H,a3H,aMA,a3H,aMB,a3H,aMC,a3H,aMD,a3H,aME,a3H,aMF,a3H,aMG,a3H,aMH,a3H,aMI,a3H,aMJ,a3H,aMK,a3H,aML,a3H,aMM,a3H,aMN,a3H,aMO,a3H,aMP,a3H,aMQ,a3H,aMR,a3H,aMS,a3H,aMT,a3H,ail,a3H,GX,a3H,MS,a3H,a3H,a3H,a3H,a3H,a3H,a3H,a3H,a3H,a3H,a3H,a3H,a3H,a3H,a3H,a3H,a3H];var cQ=[a3I,a3I,aMV,a3I,aMW,a3I,aMX,a3I,aMY,a3I,aMZ,a3I,aM_,a3I,aM$,a3I,aM0,a3I,aM1,a3I,aM2,a3I,aM3,a3I,aM4,a3I,aM5,a3I,aM6,a3I,aM7,a3I,aM8,a3I,aM9,a3I,aNa,a3I,aNb,a3I,aNc,a3I,Xg,a3I,nR,a3I,xD,a3I,aeY,a3I,Jf,a3I,a3I,a3I,a3I,a3I,a3I,a3I,a3I,a3I,a3I,a3I,a3I,a3I];var cR=[a3J,a3J,aNe,a3J,aNf,a3J,aNg,a3J,aNh,a3J,aNi,a3J,aNj,a3J,aNk,a3J,aNl,a3J,aNm,a3J,aNn,a3J,aNo,a3J,aNp,a3J,aNq,a3J,aNr,a3J,aNs,a3J,aNt,a3J,aNu,a3J,aNv,a3J,aNw,a3J,aNx,a3J,mQ,a3J,C7,a3J,wr,a3J,OK,a3J,a3J,a3J,a3J,a3J,a3J,a3J,a3J,a3J,a3J,a3J,a3J,a3J,a3J,a3J];var cS=[a3K,a3K,aNz,a3K,aNA,a3K,aNB,a3K,aNC,a3K,aND,a3K,aNE,a3K,aNF,a3K,aNG,a3K,aNH,a3K,aNI,a3K,aNJ,a3K,aNK,a3K,aNL,a3K,aNM,a3K,aNN,a3K,aNO,a3K,aNP,a3K,aNQ,a3K,aNR,a3K,aNS,a3K,Xo,a3K,alc,a3K,Dm,a3K,al1,a3K,ahw,a3K,uM,a3K,am1,a3K,ahd,a3K,oL,a3K,rt,a3K,atg,a3K,jU,a3K,ZR,a3K,uB,a3K,Pj,a3K,abH,a3K,an5,a3K,aeQ,a3K,ani,a3K,rO,a3K,yr,a3K,Kk,a3K,aln,a3K,afi,a3K,atw,a3K,$N,a3K,uw,a3K,Sx,a3K,V7,a3K,xh,a3K,Lr,a3K,Ij,a3K,rB,a3K,gj,a3K,lC,a3K,PJ,a3K,uE,a3K,arI,a3K,asg,a3K,kF,a3K,kv,a3K,ay1,a3K,RS,a3K,amT,a3K,KY,a3K,nI,a3K,W9,a3K,Ba,a3K,aq0,a3K,Mu,a3K,UY,a3K,V3,a3K,ajy,a3K,asx,a3K,RO,a3K,avs,a3K,sY,a3K,arA,a3K,apK,a3K,S3,a3K,uR,a3K,z9,a3K,Qz,a3K,fr,a3K,O0,a3K,alN,a3K,aDm,a3K,aga,a3K,ai5,a3K,yC,a3K,YX,a3K,abr,a3K,asU,a3K,amE,a3K,gr,a3K,akC,a3K,Wg,a3K,hZ,a3K,aq3,a3K,AW,a3K,azx,a3K,E5,a3K,aAS,a3K,ap7,a3K,azZ,a3K,RP,a3K,TB,a3K,_Z,a3K,jE,a3K,atd,a3K,qB,a3K,aAN,a3K,ayq,a3K,apG,a3K,VO,a3K,RM,a3K,ayG,a3K,Fo,a3K,amO,a3K,auT,a3K,apl,a3K,atq,a3K,awi,a3K,H5,a3K,as1,a3K,aph,a3K,zK,a3K,acw,a3K,YT,a3K,aw7,a3K,iI,a3K,Q_,a3K,aa3,a3K,uy,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K];var cT=[a3L,a3L,aNU,a3L,aNV,a3L,aNW,a3L,aNX,a3L,aNY,a3L,aNZ,a3L,aN_,a3L,aN$,a3L,aN0,a3L,aN1,a3L,aN2,a3L,aN3,a3L,aN4,a3L,aN5,a3L,aN6,a3L,aN7,a3L,aN8,a3L,aN9,a3L,aOa,a3L,aOb,a3L,tt,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L];var cU=[a3M,a3M,aOd,a3M,aOe,a3M,aOf,a3M,aOg,a3M,aOh,a3M,aOi,a3M,aOj,a3M,aOk,a3M,aOl,a3M,aOm,a3M,aOn,a3M,aOo,a3M,aOp,a3M,aOq,a3M,aOr,a3M,aOs,a3M,aOt,a3M,aOu,a3M,aOv,a3M,aOw,a3M,iH,a3M,oS,a3M,Wm,a3M,Q8,a3M,amc,a3M,MG,a3M,K9,a3M,akJ,a3M,att,a3M,ahH,a3M,ahc,a3M,Dx,a3M,TM,a3M,acI,a3M,sX,a3M,af9,a3M,Qp,a3M,zW,a3M,ZB,a3M,VV,a3M,AF,a3M,LB,a3M,gp,a3M,ajg,a3M,lJ,a3M,QK,a3M,E4,a3M,k_,a3M,fC,a3M,Pt,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M];var cV=[a3N,a3N,aOy,a3N,aOz,a3N,aOA,a3N,aOB,a3N,aOC,a3N,aOD,a3N,aOE,a3N,aOF,a3N,aOG,a3N,aOH,a3N,aOI,a3N,aOJ,a3N,aOK,a3N,aOL,a3N,aOM,a3N,aON,a3N,aOO,a3N,aOP,a3N,aOQ,a3N,aOR,a3N,ky,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N];var cW=[a3O,a3O,aOT,a3O,aOU,a3O,aOV,a3O,aOW,a3O,aOX,a3O,aOY,a3O,aOZ,a3O,aO_,a3O,aO$,a3O,aO0,a3O,aO1,a3O,aO2,a3O,aO3,a3O,aO4,a3O,aO5,a3O,aO6,a3O,aO7,a3O,aO8,a3O,aO9,a3O,aPa,a3O,nb,a3O,js,a3O,n3,a3O,yv,a3O,qu,a3O,qk,a3O,a3O,a3O,a3O,a3O,a3O,a3O,a3O,a3O,a3O,a3O];var cX=[a3P,a3P,aPc,a3P,aPd,a3P,aPe,a3P,aPf,a3P,aPg,a3P,aPh,a3P,aPi,a3P,aPj,a3P,aPk,a3P,aPl,a3P,aPm,a3P,aPn,a3P,aPo,a3P,aPp,a3P,aPq,a3P,aPr,a3P,aPs,a3P,aPt,a3P,aPu,a3P,aPv,a3P,VN,a3P,h7,a3P,ayj,a3P,JN,a3P,asJ,a3P,pE,a3P,azD,a3P,asb,a3P,Kj,a3P,YR,a3P,agt,a3P,zI,a3P,al$,a3P,f2,a3P,z7,a3P,av1,a3P,fo,a3P,au6,a3P,oK,a3P,JO,a3P,ax7,a3P,lB,a3P,Ms,a3P,Lp,a3P,axw,a3P,EM,a3P,azc,a3P,PI,a3P,ahu,a3P,auR,a3P,aBN,a3P,kE,a3P,azL,a3P,Tz,a3P,ai3,a3P,aAL,a3P,afR,a3P,O_,a3P,JC,a3P,aBD,a3P,Qx,a3P,o$,a3P,acu,a3P,rZ,a3P,QY,a3P,akB,a3P,Dk,a3P,aAt,a3P,Wf,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P];var cY=[a3Q,a3Q,aPx,a3Q,aPy,a3Q,aPz,a3Q,aPA,a3Q,aPB,a3Q,aPC,a3Q,aPD,a3Q,aPE,a3Q,aPF,a3Q,aPG,a3Q,aPH,a3Q,aPI,a3Q,aPJ,a3Q,aPK,a3Q,aPL,a3Q,aPM,a3Q,aPN,a3Q,aPO,a3Q,aPP,a3Q,aPQ,a3Q,wf,a3Q,SQ,a3Q,UV,a3Q,tb,a3Q,CX,a3Q,akw,a3Q,mb,a3Q,Oy,a3Q,a3Q,a3Q,a3Q,a3Q,a3Q,a3Q];var cZ=[a3R,a3R,aPS,a3R,aPT,a3R,aPU,a3R,aPV,a3R,aPW,a3R,aPX,a3R,aPY,a3R,aPZ,a3R,aP_,a3R,aP$,a3R,aP0,a3R,aP1,a3R,aP2,a3R,aP3,a3R,aP4,a3R,aP5,a3R,aP6,a3R,aP7,a3R,aP8,a3R,aP9,a3R,eE,a3R,ah4,a3R,LT,a3R,eB,a3R,ex,a3R,jt,a3R,fm,a3R,xb,a3R,GD,a3R,yw,a3R,aii,a3R,ah8,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R];var c_=[a3S,a3S,aQb,a3S,aQc,a3S,aQd,a3S,aQe,a3S,aQf,a3S,aQg,a3S,aQh,a3S,aQi,a3S,aQj,a3S,aQk,a3S,aQl,a3S,aQm,a3S,aQn,a3S,aQo,a3S,aQp,a3S,aQq,a3S,aQr,a3S,aQs,a3S,aQt,a3S,aQu,a3S,yq,a3S,xG,a3S,i1,a3S,ZH,a3S,kk,a3S,aDv,a3S,arm,a3S,aoX,a3S,rL,a3S,alG,a3S,SS,a3S,arw,a3S,xL,a3S,wk,a3S,aDu,a3S,u7,a3S,C0,a3S,mK,a3S,awG,a3S,aDw,a3S,OD,a3S,am$,a3S,tA,a3S,xR,a3S,aAc,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S];var c$=[a3T,a3T,aQw,a3T,aQx,a3T,aQy,a3T,aQz,a3T,aQA,a3T,aQB,a3T,aQC,a3T,aQD,a3T,aQE,a3T,aQF,a3T,aQG,a3T,aQH,a3T,aQI,a3T,aQJ,a3T,aQK,a3T,aQL,a3T,aQM,a3T,aQN,a3T,aQO,a3T,aQP,a3T,R5,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T];var c0=[a3U,a3U,aQR,a3U,aQS,a3U,aQT,a3U,aQU,a3U,aQV,a3U,aQW,a3U,aQX,a3U,aQY,a3U,aQZ,a3U,aQ_,a3U,aQ$,a3U,aQ0,a3U,aQ1,a3U,aQ2,a3U,aQ3,a3U,aQ4,a3U,aQ5,a3U,aQ6,a3U,aQ7,a3U,aQ8,a3U,afU,a3U,ia,a3U,hO,a3U,azT,a3U,r0,a3U,GP,a3U,F1,a3U,aAX,a3U,avK,a3U,Ga,a3U,aib,a3U,S4,a3U,EP,a3U,agw,a3U,HR,a3U,ar8,a3U,avf,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U];var c1=[a3V,a3V,aRa,a3V,aRb,a3V,aRc,a3V,aRd,a3V,aRe,a3V,aRf,a3V,aRg,a3V,aRh,a3V,aRi,a3V,aRj,a3V,aRk,a3V,aRl,a3V,aRm,a3V,aRn,a3V,aRo,a3V,aRp,a3V,aRq,a3V,aRr,a3V,aRs,a3V,aRt,a3V,yF,a3V,ur,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V];var c2=[a3W,a3W,aRv,a3W,aRw,a3W,aRx,a3W,aRy,a3W,aRz,a3W,aRA,a3W,aRB,a3W,aRC,a3W,aRD,a3W,aRE,a3W,aRF,a3W,aRG,a3W,aRH,a3W,aRI,a3W,aRJ,a3W,aRK,a3W,aRL,a3W,aRM,a3W,aRN,a3W,aRO,a3W,Ji,a3W,Ww,a3W,m8,a3W,adO,a3W,a3W,a3W,a3W,a3W,a3W,a3W,a3W,a3W,a3W,a3W,a3W,a3W,a3W,a3W];var c3=[a3X,a3X,aRQ,a3X,aRR,a3X,aRS,a3X,aRT,a3X,aRU,a3X,aRV,a3X,aRW,a3X,aRX,a3X,aRY,a3X,aRZ,a3X,aR_,a3X,aR$,a3X,aR0,a3X,aR1,a3X,aR2,a3X,aR3,a3X,aR4,a3X,aR5,a3X,aR6,a3X,aR7,a3X,xe,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X];var c4=[a3Y,a3Y,aR9,a3Y,aSa,a3Y,aSb,a3Y,aSc,a3Y,aSd,a3Y,aSe,a3Y,aSf,a3Y,aSg,a3Y,aSh,a3Y,aSi,a3Y,aSj,a3Y,aSk,a3Y,aSl,a3Y,aSm,a3Y,aSn,a3Y,aSo,a3Y,aSp,a3Y,aSq,a3Y,aSr,a3Y,aSs,a3Y,aa7,a3Y,Im,a3Y,rS,a3Y,ax0,a3Y,apw,a3Y,oH,a3Y,yu,a3Y,anw,a3Y,aq_,a3Y,adQ,a3Y,anX,a3Y,H7,a3Y,apF,a3Y,adD,a3Y,Kg,a3Y,aue,a3Y,Gu,a3Y,BW,a3Y,wK,a3Y,FH,a3Y,xO,a3Y,anG,a3Y,aoU,a3Y,na,a3Y,anJ,a3Y,ZX,a3Y,Ln,a3Y,auv,a3Y,apa,a3Y,W2,a3Y,abK,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y];var c5=[a3Z,a3Z,aSu,a3Z,aSv,a3Z,aSw,a3Z,aSx,a3Z,aSy,a3Z,aSz,a3Z,aSA,a3Z,aSB,a3Z,aSC,a3Z,aSD,a3Z,aSE,a3Z,aSF,a3Z,aSG,a3Z,aSH,a3Z,aSI,a3Z,aSJ,a3Z,aSK,a3Z,aSL,a3Z,aSM,a3Z,aSN,a3Z,i9,a3Z,alR,a3Z,ars,a3Z,ko,a3Z,ve,a3Z,tG,a3Z,ara,a3Z,az8,a3Z,awC,a3Z,a3Z,a3Z,a3Z,a3Z];var c6=[a3_,a3_,aSP,a3_,aSQ,a3_,aSR,a3_,aSS,a3_,aST,a3_,aSU,a3_,aSV,a3_,aSW,a3_,aSX,a3_,aSY,a3_,aSZ,a3_,aS_,a3_,aS$,a3_,aS0,a3_,aS1,a3_,aS2,a3_,aS3,a3_,aS4,a3_,aS5,a3_,aS6,a3_,R4,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_];var c7=[a3$,a3$,aS8,a3$,aS9,a3$,aTa,a3$,aTb,a3$,aTc,a3$,aTd,a3$,aTe,a3$,aTf,a3$,aTg,a3$,aTh,a3$,aTi,a3$,aTj,a3$,aTk,a3$,aTl,a3$,aTm,a3$,aTn,a3$,aTo,a3$,aTp,a3$,aTq,a3$,aTr,a3$,aqo,a3$,aqi,a3$,aqk,a3$,a3$,a3$,a3$,a3$,a3$,a3$,a3$,a3$,a3$,a3$,a3$,a3$,a3$,a3$,a3$,a3$];var c8=[a30,a30,aTt,a30,aTu,a30,aTv,a30,aTw,a30,aTx,a30,aTy,a30,aTz,a30,aTA,a30,aTB,a30,aTC,a30,aTD,a30,aTE,a30,aTF,a30,aTG,a30,aTH,a30,aTI,a30,aTJ,a30,aTK,a30,aTL,a30,aTM,a30,pB,a30,Ya,a30,a30,a30,a30,a30,a30,a30,a30,a30,a30,a30,a30,a30,a30,a30,a30,a30,a30,a30];var c9=[a31,a31,aTO,a31,aTP,a31,aTQ,a31,aTR,a31,aTS,a31,aTT,a31,aTU,a31,aTV,a31,aTW,a31,aTX,a31,aTY,a31,aTZ,a31,aT_,a31,aT$,a31,aT0,a31,aT1,a31,aT2,a31,aT3,a31,aT4,a31,aT5,a31,Th,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31];var da=[a32,a32,aT7,a32,aT8,a32,aT9,a32,aUa,a32,aUb,a32,aUc,a32,aUd,a32,aUe,a32,aUf,a32,aUg,a32,aUh,a32,aUi,a32,aUj,a32,aUk,a32,aUl,a32,aUm,a32,aUn,a32,aUo,a32,aUp,a32,aUq,a32,nP,a32,Xe,a32,Jd,a32,aeW,a32,a32,a32,a32,a32,a32,a32,a32,a32,a32,a32,a32,a32,a32,a32];var db=[a33,a33,aUs,a33,aUt,a33,aUu,a33,aUv,a33,aUw,a33,aUx,a33,aUy,a33,aUz,a33,aUA,a33,aUB,a33,aUC,a33,aUD,a33,aUE,a33,aUF,a33,aUG,a33,aUH,a33,aUI,a33,aUJ,a33,aUK,a33,aUL,a33,alZ,a33,aCN,a33,axs,a33,jI,a33,aCt,a33,aCF,a33,ZT,a33,aB4,a33,R2,a33,aCg,a33,aAj,a33,eh,a33,aAy,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33];var dc=[a34,a34,aUN,a34,aUO,a34,aUP,a34,aUQ,a34,aUR,a34,aUS,a34,aUT,a34,aUU,a34,aUV,a34,aUW,a34,aUX,a34,aUY,a34,aUZ,a34,aU_,a34,aU$,a34,aU0,a34,aU1,a34,aU2,a34,aU3,a34,aU4,a34,ah3,a34,mP,a34,aik,a34,OJ,a34,C6,a34,wq,a34,Mm,a34,Wx,a34,GG,a34,Gz,a34,aim,a34,yY,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34];var dd=[a35,a35,aU6,a35,aU7,a35,aU8,a35,aU9,a35,aVa,a35,aVb,a35,aVc,a35,aVd,a35,aVe,a35,aVf,a35,aVg,a35,aVh,a35,aVi,a35,aVj,a35,aVk,a35,aVl,a35,aVm,a35,aVn,a35,aVo,a35,aVp,a35,amg,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35];var de=[a36,a36,aVr,a36,aVs,a36,aVt,a36,aVu,a36,aVv,a36,aVw,a36,aVx,a36,aVy,a36,aVz,a36,aVA,a36,aVB,a36,aVC,a36,aVD,a36,aVE,a36,aVF,a36,aVG,a36,aVH,a36,aVI,a36,aVJ,a36,aVK,a36,jv,a36,xd,a36,yy,a36,a36,a36,a36,a36,a36,a36,a36,a36,a36,a36,a36,a36,a36,a36,a36,a36];var df=[a37,a37,aVM,a37,aVN,a37,aVO,a37,aVP,a37,aVQ,a37,aVR,a37,aVS,a37,aVT,a37,aVU,a37,aVV,a37,aVW,a37,aVX,a37,aVY,a37,aVZ,a37,aV_,a37,aV$,a37,aV0,a37,aV1,a37,aV2,a37,aV3,a37,tc,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37];var dg=[a38,a38,aV5,a38,aV6,a38,aV7,a38,aV8,a38,aV9,a38,aWa,a38,aWb,a38,aWc,a38,aWd,a38,aWe,a38,aWf,a38,aWg,a38,aWh,a38,aWi,a38,aWj,a38,aWk,a38,aWl,a38,aWm,a38,aWn,a38,aWo,a38,tv,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38];var dh=[a39,a39,aWq,a39,aWr,a39,aWs,a39,aWt,a39,aWu,a39,aWv,a39,aWw,a39,aWx,a39,aWy,a39,aWz,a39,aWA,a39,aWB,a39,aWC,a39,aWD,a39,aWE,a39,aWF,a39,aWG,a39,aWH,a39,aWI,a39,aWJ,a39,e7,a39,aiR,a39,fH,a39,Tg,a39,hm,a39,G6,a39,afq,a39,gz,a39,Yd,a39,hB,a39,G7,a39,zD,a39,FA,a39,ac6,a39,y3,a39,aaB,a39,R0,a39,FZ,a39,aiC,a39,je,a39,Yw,a39,zn,a39,aaC,a39,p9,a39,aae,a39,agb,a39,LZ,a39,ai1,a39,z3,a39,LY,a39,LX,a39,KW,a39,hq,a39,CH,a39,Qu,a39,yn,a39,ahY,a39,Eq,a39,ahZ,a39,rk,a39,L$,a39,aaa,a39,aj3,a39,aap,a39,$j,a39,L0,a39,ov,a39,Eh,a39,ra,a39,$c,a39,aab,a39,w3,a39,xy,a39,xm,a39,Tc,a39,alt,a39,jc,a39,xr,a39,pa,a39,or,a39,fL,a39,UD,a39,ajq,a39,$m,a39,Gi,a39,ag$,a39,r6,a39,sH,a39,acM,a39,y8,a39,_z,a39,_h,a39,xE,a39,iT,a39,Ee,a39,HO,a39,j3,a39,aax,a39,k8,a39,_s,a39,xt,a39,_A,a39,eZ,a39,oT,a39,Yc,a39,Wn,a39,XW,a39,DK,a39,G2,a39,Uh,a39,pV,a39,qy,a39,_i,a39,amd,a39,w5,a39,G8,a39,Zk,a39,Mb,a39,w8,a39,_b,a39,agN,a39,DT,a39,vO,a39,zf,a39,ahk,a39,vP,a39,y9,a39,eR,a39,x$,a39,ait,a39,ab1,a39,DD,a39,yS,a39,yG,a39,y2,a39,K0,a39,acJ,a39,zF,a39,V$,a39,ajm,a39,JM,a39,aji,a39,QU,a39,ajX,a39,Iw,a39,D9,a39,aaT,a39,DR,a39,jh,a39,DL,a39,WM,a39,ha,a39,Gh,a39,Bu,a39,KB,a39,hz,a39,y4,a39,ah0,a39,Zl,a39,hA,a39,CI,a39,awo,a39,lO,a39,za,a39,Vn,a39,Kq,a39,x9,a39,$u,a39,L1,a39,WV,a39,z$,a39,eS,a39,iP,a39,IS,a39,ahJ,a39,R3,a39,CF,a39,yf,a39,T0,a39,Pu,a39,yR,a39,$n,a39,aiP,a39,zb,a39,j8,a39,yZ,a39,TZ,a39,aaw,a39,$w,a39,LD,a39,M3,a39,Gk,a39,f5,a39,$q,a39,Ot,a39,Gj,a39,MO,a39,adg,a39,ps,a39,Ld,a39,Yo,a39,o5,a39,acQ,a39,yO,a39,xn,a39,aeg,a39,DQ,a39,oz,a39,HT,a39,Yz,a39,zl,a39,Hp,a39,_N,a39,Gq,a39,nt,a39,ahe,a39,akO,a39,XT,a39,mn,a39,pY,a39,g0,a39,Bt,a39,$a,a39,nD,a39,PA,a39,D8,a39,aj5,a39,rm,a39,ai2,a39,Rh,a39,ED,a39,tV,a39,He,a39,WC,a39,G5,a39,Ec,a39,k0,a39,ahn,a39,n$,a39,ak5,a39,rj,a39,Yr,a39,Gr,a39,qg,a39,$d,a39,T_,a39,zi,a39,_F,a39,zo,a39,WA,a39,ad6,a39,agZ,a39,IE,a39,ahR,a39,xT,a39,jy,a39,s2,a39,Hb,a39,Hz,a39,Wr,a39,D6,a39,y$,a39,DY,a39,L2,a39,Z2,a39,$f,a39,nr,a39,abZ,a39,Yp,a39,aAm,a39,Gs,a39,mr,a39,akT,a39,e8,a39,_L,a39,eJ,a39,zX,a39,FL,a39,acz,a39,DX,a39,_M,a39,Rd,a39,ab5,a39,aiE,a39,ar4,a39,qz,a39,_5,a39,_H,a39,AG,a39,LH,a39,Dz,a39,asq,a39,Ha,a39,P0,a39,$D,a39,mo,a39,jw,a39,Un,a39,en,a39,alv,a39,xN,a39,$z,a39,aiB,a39,XX,a39,Ek,a39,_O,a39,sZ,a39,Z5,a39,$8,a39,Fq,a39,ih,a39,aan,a39,DO,a39,U3,a39,fD,a39,ZM,a39,_l,a39,agf,a39,Mx,a39,I_,a39,akX,a39,aiv,a39,FY,a39,Fj,a39,QQ,a39,lK,a39,oX,a39,Ut,a39,XN,a39,nj,a39,Fl,a39,As,a39,g_,a39,XV,a39,UA,a39,JS,a39,DW,a39,ah_,a39,Ur,a39,S7,a39,auO,a39,qT,a39,iu,a39,$y,a39,wT,a39,ZD,a39,TN,a39,aeq,a39,Qq,a39,fa,a39,agY,a39,DZ,a39,$l,a39,ahN,a39,ajS,a39,IG,a39,atu,a39,akr,a39,acc,a39,LL,a39,LR,a39,ab3,a39,aBU,a39,agj,a39,AK,a39,$6,a39,Yj,a39,sL,a39,D7,a39,amJ,a39,yj,a39,Fw,a39,akW,a39,aaS,a39,_t,a39,_B,a39,La,a39,aiu,a39,_q,a39,ads,a39,awk,a39,Eu,a39,VW,a39,aiO,a39,iJ,a39,_P,a39,$x,a39,jg,a39,gs,a39,awm,a39,ak$,a39,MH,a39,ais,a39,MK,a39,_E,a39,Tk,a39,s5,a39,QL,a39,akK,a39,mH,a39,Zm,a39,fW,a39,Lh,a39,_j,a39,AO,a39,Af,a39,ajV,a39,$Y,a39,PE,a39,Q9,a39,$5,a39,jf,a39,akq,a39,GI,a39,ji,a39,aaM,a39,air,a39,ami,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39];var di=[a4a,a4a,aWL,a4a,aWM,a4a,aWN,a4a,aWO,a4a,aWP,a4a,aWQ,a4a,aWR,a4a,aWS,a4a,aWT,a4a,aWU,a4a,aWV,a4a,aWW,a4a,aWX,a4a,aWY,a4a,aWZ,a4a,aW_,a4a,aW$,a4a,aW0,a4a,aW1,a4a,aW2,a4a,A8,a4a,Bf,a4a,afN,a4a,aBc,a4a,abo,a4a,aqj,a4a,abA,a4a,afd,a4a,aBd,a4a,a4a,a4a,a4a,a4a];var dj=[a4b,a4b,aW4,a4b,aW5,a4b,aW6,a4b,aW7,a4b,aW8,a4b,aW9,a4b,aXa,a4b,aXb,a4b,aXc,a4b,aXd,a4b,aXe,a4b,aXf,a4b,aXg,a4b,aXh,a4b,aXi,a4b,aXj,a4b,aXk,a4b,aXl,a4b,aXm,a4b,aXn,a4b,Ly,a4b,f4,a4b,adC,a4b,fp,a4b,RG,a4b,aoT,a4b,al7,a4b,Xx,a4b,Q1,a4b,ix,a4b,j0,a4b,UR,a4b,jV,a4b,gk,a4b,X_,a4b,h9,a4b,ay4,a4b,Q5,a4b,Ds,a4b,uL,a4b,LW,a4b,agH,a4b,RH,a4b,qM,a4b,zJ,a4b,WO,a4b,OH,a4b,ag9,a4b,GS,a4b,uU,a4b,TI,a4b,pF,a4b,Dl,a4b,d9,a4b,IF,a4b,I5,a4b,Sn,a4b,Dt,a4b,am_,a4b,aqA,a4b,MC,a4b,f6,a4b,iO,a4b,BT,a4b,QP,a4b,LG,a4b,ahG,a4b,fx,a4b,O$,a4b,h1,a4b,Qy,a4b,go,a4b,Jp,a4b,Sa,a4b,Fv,a4b,at7,a4b,af$,a4b,vo,a4b,rK,a4b,qa,a4b,aub,a4b,Zs,a4b,gi,a4b,mN,a4b,oJ,a4b,qC,a4b,H3,a4b,adW,a4b,wO,a4b,W7,a4b,BV,a4b,ap2,a4b,MB,a4b,ZI,a4b,ajf,a4b,ek,a4b,Uz,a4b,wo,a4b,ah2,a4b,ahv,a4b,ms,a4b,zS,a4b,Kf,a4b,Pz,a4b,ID,a4b,agv,a4b,ajc,a4b,ns,a4b,Nu,a4b,C4,a4b,A2,a4b,fl,a4b,z8,a4b,K8,a4b,Cq,a4b,TR,a4b,Ui,a4b,kJ,a4b,iD,a4b,anr,a4b,sU,a4b,AA,a4b,sT,a4b,Ir,a4b,F2,a4b,Jt,a4b,TA,a4b,AB,a4b,mg,a4b,MF,a4b,nq,a4b,age,a4b,alM,a4b,alq,a4b,ai4,a4b,ej,a4b,eA,a4b,QC,a4b,at9,a4b,ahD,a4b,X9,a4b,r$,a4b,acW,a4b,agB,a4b,QG,a4b,XZ,a4b,sN,a4b,ati,a4b,YZ,a4b,Gy,a4b,atn,a4b,Gx,a4b,kz,a4b,gy,a4b,Rc,a4b,d8,a4b,ajN,a4b,Lu,a4b,O8,a4b,Lo,a4b,aei,a4b,Dw,a4b,fB,a4b,nG,a4b,kP,a4b,aee,a4b,TE,a4b,uA,a4b,E0,a4b,d7,a4b,auu,a4b,aul,a4b,H_,a4b,BS,a4b,jZ,a4b,Te,a4b,Pp,a4b,uG,a4b,H9,a4b,EW,a4b,zR,a4b,aeO,a4b,Pl,a4b,aqz,a4b,Lq,a4b,Y_,a4b,afY,a4b,iw,a4b,Xr,a4b,Mt,a4b,K5,a4b,eG,a4b,K4,a4b,KX,a4b,d2,a4b,ahC,a4b,NT,a4b,al0,a4b,ah$,a4b,X3,a4b,afT,a4b,anD,a4b,acv,a4b,Kl,a4b,aum,a4b,JD,a4b,AE,a4b,HW,a4b,X2,a4b,kN,a4b,Mr,a4b,atl,a4b,j2,a4b,fy,a4b,acL,a4b,WK,a4b,Fn,a4b,anq,a4b,ahV,a4b,as3,a4b,acH,a4b,amC,a4b,amb,a4b,ah7,a4b,acD,a4b,ae5,a4b,Gv,a4b,EV,a4b,EO,a4b,ayY,a4b,O3,a4b,aAW,a4b,VM,a4b,aoL,a4b,BO,a4b,GQ,a4b,YS,a4b,QZ,a4b,aoM,a4b,amh,a4b,ajD,a4b,ajb,a4b,aud,a4b,jG,a4b,zV,a4b,el,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b];var dk=[a4c,a4c,aXp,a4c,aXq,a4c,aXr,a4c,aXs,a4c,aXt,a4c,aXu,a4c,aXv,a4c,aXw,a4c,aXx,a4c,aXy,a4c,aXz,a4c,aXA,a4c,aXB,a4c,aXC,a4c,aXD,a4c,aXE,a4c,aXF,a4c,aXG,a4c,aXH,a4c,aXI,a4c,Xp,a4c,u_,a4c,adY,a4c,ae7,a4c,$O,a4c,alP,a4c,Jy,a4c,n9,a4c,RZ,a4c,YV,a4c,NO,a4c];var dl=[a4d,a4d,aXK,a4d,aXL,a4d,aXM,a4d,aXN,a4d,aXO,a4d,aXP,a4d,aXQ,a4d,aXR,a4d,aXS,a4d,aXT,a4d,aXU,a4d,aXV,a4d,aXW,a4d,aXX,a4d,aXY,a4d,aXZ,a4d,aX_,a4d,aX$,a4d,aX0,a4d,aX1,a4d,yE,a4d,ava,a4d,aA0,a4d,aCV,a4d,afk,a4d,ae8,a4d,a4d,a4d,a4d,a4d,a4d,a4d,a4d,a4d,a4d,a4d];var dm=[a4e,a4e,aX3,a4e,aX4,a4e,aX5,a4e,aX6,a4e,aX7,a4e,aX8,a4e,aX9,a4e,aYa,a4e,aYb,a4e,aYc,a4e,aYd,a4e,aYe,a4e,aYf,a4e,aYg,a4e,aYh,a4e,aYi,a4e,aYj,a4e,aYk,a4e,aYl,a4e,aYm,a4e,wD,a4e,SU,a4e,Dj,a4e,OU,a4e,mZ,a4e,a4e,a4e,a4e,a4e,a4e,a4e,a4e,a4e,a4e,a4e,a4e,a4e];var dn=[a4f,a4f,aYo,a4f,aYp,a4f,aYq,a4f,aYr,a4f,aYs,a4f,aYt,a4f,aYu,a4f,aYv,a4f,aYw,a4f,aYx,a4f,aYy,a4f,aYz,a4f,aYA,a4f,aYB,a4f,aYC,a4f,aYD,a4f,aYE,a4f,aYF,a4f,aYG,a4f,aYH,a4f,JI,a4f,FM,a4f,Il,a4f,adP,a4f,rR,a4f,nW,a4f,d6,a4f,VI,a4f,Gl,a4f,GC,a4f,yt,a4f,aa6,a4f,HQ,a4f,d3,a4f,d5,a4f,adm,a4f,aet,a4f,J4,a4f,F5,a4f,aid,a4f,GO,a4f,pr,a4f,IW,a4f,m9,a4f,HI,a4f,aiw,a4f,W1,a4f,O5,a4f,mB,a4f,ZW,a4f,WY,a4f,F0,a4f,wJ,a4f,G4,a4f,abJ,a4f,a4f,a4f,a4f,a4f,a4f,a4f,a4f,a4f,a4f,a4f,a4f,a4f,a4f,a4f,a4f,a4f];var dp=[a4g,a4g,aYJ,a4g,aYK,a4g,aYL,a4g,aYM,a4g,aYN,a4g,aYO,a4g,aYP,a4g,aYQ,a4g,aYR,a4g,aYS,a4g,aYT,a4g,aYU,a4g,aYV,a4g,aYW,a4g,aYX,a4g,aYY,a4g,aYZ,a4g,aY_,a4g,aY$,a4g,aY0,a4g,eo,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g];var dq=[a4h,a4h,aY2,a4h,aY3,a4h,aY4,a4h,aY5,a4h,aY6,a4h,aY7,a4h,aY8,a4h,aY9,a4h,aZa,a4h,aZb,a4h,aZc,a4h,aZd,a4h,aZe,a4h,aZf,a4h,aZg,a4h,aZh,a4h,aZi,a4h,aZj,a4h,aZk,a4h,aZl,a4h,jF,a4h,ano,a4h,NS,a4h,a4h,a4h,a4h,a4h,a4h,a4h,a4h,a4h,a4h,a4h,a4h,a4h,a4h,a4h,a4h,a4h];var dr=[a4i,a4i,aZn,a4i,aZo,a4i,aZp,a4i,aZq,a4i,aZr,a4i,aZs,a4i,aZt,a4i,aZu,a4i,aZv,a4i,aZw,a4i,aZx,a4i,aZy,a4i,aZz,a4i,aZA,a4i,aZB,a4i,aZC,a4i,aZD,a4i,aZE,a4i,aZF,a4i,aZG,a4i,mR,a4i,OL,a4i,C8,a4i,aqr,a4i,ws,a4i,aol,a4i,a4i,a4i,a4i,a4i,a4i,a4i,a4i,a4i,a4i,a4i];var ds=[a4j,a4j,aZI,a4j,aZJ,a4j,aZK,a4j,aZL,a4j,aZM,a4j,aZN,a4j,aZO,a4j,aZP,a4j,aZQ,a4j,aZR,a4j,aZS,a4j,aZT,a4j,aZU,a4j,aZV,a4j,aZW,a4j,aZX,a4j,aZY,a4j,aZZ,a4j,aZ_,a4j,aZ$,a4j,ajE,a4j,MT,a4j,Gf,a4j,a4j,a4j,a4j,a4j,a4j,a4j,a4j,a4j,a4j,a4j,a4j,a4j,a4j,a4j,a4j,a4j];var dt=[a4k,a4k,aZ1,a4k,aZ2,a4k,aZ3,a4k,aZ4,a4k,aZ5,a4k,aZ6,a4k,aZ7,a4k,aZ8,a4k,aZ9,a4k,a_a,a4k,a_b,a4k,a_c,a4k,a_d,a4k,a_e,a4k,a_f,a4k,a_g,a4k,a_h,a4k,a_i,a4k,a_j,a4k,a_k,a4k,tg,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k];var du=[a4l,a4l,a_m,a4l,a_n,a4l,a_o,a4l,a_p,a4l,a_q,a4l,a_r,a4l,a_s,a4l,a_t,a4l,a_u,a4l,a_v,a4l,a_w,a4l,a_x,a4l,a_y,a4l,a_z,a4l,a_A,a4l,a_B,a4l,a_C,a4l,a_D,a4l,a_E,a4l,a_F,a4l,alm,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l];var dv=[a4m,a4m,a_H,a4m,a_I,a4m,a_J,a4m,a_K,a4m,a_L,a4m,a_M,a4m,a_N,a4m,a_O,a4m,a_P,a4m,a_Q,a4m,a_R,a4m,a_S,a4m,a_T,a4m,a_U,a4m,a_V,a4m,a_W,a4m,a_X,a4m,a_Y,a4m,a_Z,a4m,a__,a4m,xJ,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m];var dw=[a4n,a4n,a_0,a4n,a_1,a4n,a_2,a4n,a_3,a4n,a_4,a4n,a_5,a4n,a_6,a4n,a_7,a4n,a_8,a4n,a_9,a4n,a$a,a4n,a$b,a4n,a$c,a4n,a$d,a4n,a$e,a4n,a$f,a4n,a$g,a4n,a$h,a4n,a$i,a4n,a$j,a4n,pT,a4n,xI,a4n,abe,a4n,aCE,a4n,aya,a4n,aCJ,a4n,OW,a4n,amn,a4n,ym,a4n,avn,a4n,Jk,a4n,iY,a4n,anT,a4n,__,a4n,Gt,a4n,FG,a4n,act,a4n,rY,a4n,n6,a4n,ayn,a4n,ae0,a4n,ags,a4n,pN,a4n,amu,a4n,Xk,a4n,at5,a4n,NJ,a4n,qW,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n];var dx=[a4o,a4o,a$l,a4o,a$m,a4o,a$n,a4o,a$o,a4o,a$p,a4o,a$q,a4o,a$r,a4o,a$s,a4o,a$t,a4o,a$u,a4o,a$v,a4o,a$w,a4o,a$x,a4o,a$y,a4o,a$z,a4o,a$A,a4o,a$B,a4o,a$C,a4o,a$D,a4o,a$E,a4o,nf,a4o,o4,a4o,qR,a4o,tK,a4o,hW,a4o,gg,a4o,aij,a4o,yV,a4o,RW,a4o,ae6,a4o,fP,a4o,Iq,a4o,aky,a4o,kx,a4o,Co,a4o,GW,a4o,X7,a4o,Og,a4o,XF,a4o,kI,a4o,MR,a4o,vn,a4o,ady,a4o,er,a4o,jR,a4o,ee,a4o,nh,a4o,abL,a4o,S2,a4o,am8,a4o,UM,a4o,BQ,a4o,h$,a4o,RX,a4o,A0,a4o,amY,a4o,TP,a4o,uq,a4o,Y$,a4o,MQ,a4o,aig,a4o,Of,a4o,E6,a4o,rM,a4o,amj,a4o,jN,a4o,XG,a4o,afj,a4o,O2,a4o,$P,a4o,Ge,a4o,jM,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o];var dy=[a4p,a4p,a$G,a4p,a$H,a4p,a$I,a4p,a$J,a4p,a$K,a4p,a$L,a4p,a$M,a4p,a$N,a4p,a$O,a4p,a$P,a4p,a$Q,a4p,a$R,a4p,a$S,a4p,a$T,a4p,a$U,a4p,a$V,a4p,a$W,a4p,a$X,a4p,a$Y,a4p,a$Z,a4p,amM,a4p,NF,a4p,PH,a4p,ahr,a4p,UG,a4p,QX,a4p,Wp,a4p,la,a4p,akM,a4p,oW,a4p,z6,a4p,VZ,a4p,fO,a4p,Qt,a4p,Ll,a4p,ahU,a4p,FE,a4p,EG,a4p,ajt,a4p,lN,a4p,s9,a4p,ZK,a4p,AR,a4p,iX,a4p,ago,a4p,acV,a4p,Rf,a4p,LJ,a4p,hS,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p];var dz=[a4q,a4q,a$$,a4q,a$0,a4q,a$1,a4q,a$2,a4q,a$3,a4q,a$4,a4q,a$5,a4q,a$6,a4q,a$7,a4q,a$8,a4q,a$9,a4q,a0a,a4q,a0b,a4q,a0c,a4q,a0d,a4q,a0e,a4q,a0f,a4q,a0g,a4q,a0h,a4q,a0i,a4q,PN,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q];var dA=[a4r,a4r,a0k,a4r,a0l,a4r,a0m,a4r,a0n,a4r,a0o,a4r,a0p,a4r,a0q,a4r,a0r,a4r,a0s,a4r,a0t,a4r,a0u,a4r,a0v,a4r,a0w,a4r,a0x,a4r,a0y,a4r,a0z,a4r,a0A,a4r,a0B,a4r,a0C,a4r,a0D,a4r,av3,a4r,v8,a4r,avS,a4r,kr,a4r,DA,a4r,uo,a4r,ayg,a4r,o7,a4r,gu,a4r,ar5,a4r,abx,a4r,AH,a4r,aBE,a4r,alj,a4r,We,a4r,nM,a4r,art,a4r,ame,a4r,acK,a4r,awj,a4r,MI,a4r,oI,a4r,Ob,a4r,vx,a4r,nO,a4r,j6,a4r,abv,a4r,aA4,a4r,aBh,a4r,uJ,a4r,Ra,a4r,Lb,a4r,sM,a4r,Xl,a4r,afK,a4r,avx,a4r,A3,a4r,avC,a4r,UI,a4r,DP,a4r,me,a4r,avH,a4r,agA,a4r,J3,a4r,anj,a4r,Xw,a4r,u2,a4r,Fs,a4r,vk,a4r,s_,a4r,fE,a4r,H4,a4r,afI,a4r,qD,a4r,aBW,a4r,jl,a4r,agc,a4r,ata,a4r,up,a4r,Js,a4r,an$,a4r,Ja,a4r,wh,a4r,V9,a4r,arD,a4r,Cs,a4r,xj,a4r,ayf,a4r,SJ,a4r,ajC,a4r,awZ,a4r,ayo,a4r,at$,a4r,NW,a4r,afZ,a4r,k5,a4r,ae1,a4r,X4,a4r,J7,a4r,asA,a4r,Zv,a4r,aql,a4r,ZQ,a4r,ay$,a4r,ahK,a4r,abq,a4r,ash,a4r,aeU,a4r,az9,a4r,arC,a4r,jb,a4r,A_,a4r,kq,a4r,arH,a4r,Jx,a4r,aqw,a4r,NA,a4r,pD,a4r,auk,a4r,apj,a4r,kw,a4r,id,a4r,ayM,a4r,avr,a4r,Cn,a4r,ahg,a4r,avq,a4r,afG,a4r,axO,a4r,Jc,a4r,kD,a4r,au2,a4r,zY,a4r,xP,a4r,axR,a4r,aAr,a4r,kC,a4r,az7,a4r,arz,a4r,aBi,a4r,asO,a4r,_Y,a4r,asC,a4r,l3,a4r,agq,a4r,at_,a4r,asj,a4r,avm,a4r,av2,a4r,aza,a4r,awE,a4r,ats,a4r,k$,a4r,arb,a4r,CZ,a4r,aBK,a4r,auX,a4r,auV,a4r,Pw,a4r,asI,a4r,avB,a4r,aAp,a4r,aff,a4r,gb,a4r,OY,a4r,OA,a4r,asL,a4r,EU,a4r,vj,a4r,ayO,a4r,SL,a4r,ajj,a4r,TO,a4r,iL,a4r,LE,a4r,azE,a4r,ja,a4r,l6,a4r,aCD,a4r,Ck,a4r,NM,a4r,azP,a4r,avQ,a4r,lv,a4r,aAn,a4r,v5,a4r,ayN,a4r,aCC,a4r,asN,a4r,Xd,a4r,aBM,a4r,AZ,a4r,$K,a4r,o8,a4r,arF,a4r,ZG,a4r,awQ,a4r,UQ,a4r,au3,a4r,alW,a4r,ar7,a4r,V8,a4r,af_,a4r,amt,a4r,V4,a4r,am4,a4r,ta,a4r,ael,a4r,AV,a4r,ae4,a4r,OX,a4r,QN,a4r,av4,a4r,arp,a4r,Sz,a4r,NL,a4r,alX,a4r,Oe,a4r,aur,a4r,yT,a4r,adI,a4r,ar9,a4r,aox,a4r,IN,a4r,azR,a4r,aju,a4r,agr,a4r,qV,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r];var dB=[a4s,a4s,a0F,a4s,a0G,a4s,a0H,a4s,a0I,a4s,a0J,a4s,a0K,a4s,a0L,a4s,a0M,a4s,a0N,a4s,a0O,a4s,a0P,a4s,a0Q,a4s,a0R,a4s,a0S,a4s,a0T,a4s,a0U,a4s,a0V,a4s,a0W,a4s,a0X,a4s,a0Y,a4s,ahI,a4s,adX,a4s,Az,a4s,ajh,a4s,fq,a4s,Dp,a4s,zP,a4s,a4s,a4s,a4s,a4s,a4s,a4s,a4s,a4s];var dC=[a4t,a4t,a0_,a4t,a0$,a4t,a00,a4t,a01,a4t,a02,a4t,a03,a4t,a04,a4t,a05,a4t,a06,a4t,a07,a4t,a08,a4t,a09,a4t,a1a,a4t,a1b,a4t,a1c,a4t,a1d,a4t,a1e,a4t,a1f,a4t,a1g,a4t,a1h,a4t,aDH,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t];var dD=[a4u,a4u,a1j,a4u,a1k,a4u,a1l,a4u,a1m,a4u,a1n,a4u,a1o,a4u,a1p,a4u,a1q,a4u,a1r,a4u,a1s,a4u,a1t,a4u,a1u,a4u,a1v,a4u,a1w,a4u,a1x,a4u,a1y,a4u,a1z,a4u,a1A,a4u,a1B,a4u,a1C,a4u,alg,a4u,u$,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u];var dE=[a4v,a4v,a1E,a4v,a1F,a4v,a1G,a4v,a1H,a4v,a1I,a4v,a1J,a4v,a1K,a4v,a1L,a4v,a1M,a4v,a1N,a4v,a1O,a4v,a1P,a4v,a1Q,a4v,a1R,a4v,a1S,a4v,a1T,a4v,a1U,a4v,a1V,a4v,a1W,a4v,a1X,a4v,anm,a4v,uZ,a4v,arB,a4v,atf,a4v,ru,a4v,yD,a4v,apX,a4v,DE,a4v,m$,a4v,ux,a4v,rJ,a4v,axe,a4v,xk,a4v,am2,a4v,axm,a4v,azr,a4v,ans,a4v,RN,a4v,jQ,a4v,RY,a4v,Wb,a4v,alO,a4v,wN,a4v,axH,a4v,axg,a4v,YU,a4v,ay_,a4v,axB,a4v,SC,a4v,axi,a4v,axD,a4v,O1,a4v,axF,a4v,Fp,a4v,amP,a4v,zH,a4v,ayC,a4v,axk,a4v,Sy,a4v,acX,a4v,aCH,a4v,a4v,a4v,a4v,a4v];var dF=[a4w,a4w,a1Z,a4w,a1_,a4w,a1$,a4w,a10,a4w,a11,a4w,a12,a4w,a13,a4w,a14,a4w,a15,a4w,a16,a4w,a17,a4w,a18,a4w,a19,a4w,a2a,a4w,a2b,a4w,a2c,a4w,a2d,a4w,a2e,a4w,a2f,a4w,a2g,a4w,apY,a4w,ahm,a4w,LK,a4w,yo,a4w,z2,a4w,aew,a4w,AN,a4w,QT,a4w,_$,a4w,auy,a4w,xa,a4w,abF,a4w,Qw,a4w,Ih,a4w,akN,a4w,Lg,a4w,adt,a4w,lQ,a4w,adv,a4w,oZ,a4w,Iv,a4w,EC,a4w,HP,a4w,hN,a4w,rP,a4w,UC,a4w,Rg,a4w,Wu,a4w,k7,a4w,Fz,a4w,acP,a4w,ahQ,a4w,adM,a4w,wH,a4w,fK,a4w,Kd,a4w,amI,a4w,GK,a4w,iS,a4w,aa4,a4w,IQ,a4w,MN,a4w,tm,a4w,yB,a4w,PD,a4w,aih,a4w,V_,a4w,m6,a4w,Wq,a4w,ZL,a4w,agi,a4w,ajp,a4w,s4,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w];var dG=[a4x,a4x,a2i,a4x,a2j,a4x,a2k,a4x,a2l,a4x,a2m,a4x,a2n,a4x,a2o,a4x,a2p,a4x,a2q,a4x,a2r,a4x,a2s,a4x,a2t,a4x,a2u,a4x,a2v,a4x,a2w,a4x,a2x,a4x,a2y,a4x,a2z,a4x,a2A,a4x,a2B,a4x,abM,a4x,Is,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x];var dH=[a4y,a4y,a2D,a4y,a2E,a4y,a2F,a4y,a2G,a4y,a2H,a4y,a2I,a4y,a2J,a4y,a2K,a4y,a2L,a4y,a2M,a4y,a2N,a4y,a2O,a4y,a2P,a4y,a2Q,a4y,a2R,a4y,a2S,a4y,a2T,a4y,a2U,a4y,a2V,a4y,a2W,a4y,aug,a4y,aus,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y];var dI=[a4z,a4z,a2Y,a4z,a2Z,a4z,a2_,a4z,a2$,a4z,a20,a4z,a21,a4z,a22,a4z,a23,a4z,a24,a4z,a25,a4z,a26,a4z,a27,a4z,a28,a4z,a29,a4z,a3a,a4z,a3b,a4z,a3c,a4z,a3d,a4z,a3e,a4z,a3f,a4z,ahp,a4z,th,a4z,EF,a4z,uT,a4z,MM,a4z,FD,a4z,ai8,a4z,ND,a4z,avR,a4z,Qo,a4z,i8,a4z,N1,a4z,aAs,a4z,awJ,a4z,aA2,a4z,fA,a4z,fJ,a4z,gc,a4z,OB,a4z,aBG,a4z,N8,a4z,oN,a4z,v0,a4z,iR,a4z,uF,a4z,TL,a4z,rE,a4z,s7,a4z,azQ,a4z,avl,a4z,Oc,a4z,tn,a4z,aAO,a4z,vy,a4z,uj,a4z,l0,a4z,iG,a4z,C_,a4z,ajv,a4z,J8,a4z,azy,a4z,amQ,a4z,UB,a4z,sS,a4z,ki,a4z,PG,a4z,PC,a4z,rx,a4z,UJ,a4z,EX,a4z,hQ,a4z,Lv,a4z,vi,a4z,tD,a4z,af0,a4z,Wl,a4z,K7,a4z,aAC,a4z,Ml,a4z,awe,a4z,azS,a4z,aA3,a4z,agl,a4z,azC,a4z,Dy,a4z,z5,a4z,RQ,a4z,My,a4z,fN,a4z,E$,a4z,aBA,a4z,Ps,a4z,iC,a4z,agC,a4z,K1,a4z,amR,a4z,Lj,a4z,i7,a4z,iV,a4z,gn,a4z,AM,a4z,sW,a4z,oR,a4z,TF,a4z,zU,a4z,AD,a4z,wi,a4z,QJ,a4z,at1,a4z,PL,a4z,QS,a4z,aDn,a4z,aDr,a4z,azW,a4z,ard,a4z,Fg,a4z,arx,a4z,l_,a4z,Q7,a4z,Ct,a4z,SH,a4z,asP,a4z,Zx,a4z,LI,a4z,ask,a4z,Dv,a4z,az$,a4z,k6,a4z,alE,a4z,va,a4z,acG,a4z,E3,a4z,B9,a4z,alp,a4z,Zu,a4z,iW,a4z,azF,a4z,acO,a4z,US,a4z,VU,a4z,auQ,a4z,tq,a4z,ajs,a4z,ahT,a4z,ajo,a4z,azU,a4z,QD,a4z,Pm,a4z,kZ,a4z,FC,a4z,al4,a4z,NB,a4z,i$,a4z,axA,a4z,mf,a4z,lE,a4z,Gn,a4z,ahz,a4z,BM,a4z,zN,a4z,SR,a4z,A4,a4z,avJ,a4z,avX,a4z,ali,a4z,kn,a4z,aAK,a4z,hR,a4z,iy,a4z,auW,a4z,Fy,a4z,av5,a4z,s3,a4z,abE,a4z,aAd,a4z,Re,a4z,akE,a4z,Jv,a4z,EB,a4z,Lf,a4z,agm,a4z,u5,a4z,aAq,a4z,aAR,a4z,v2,a4z,ahl,a4z,aBI,a4z,avw,a4z,aBL,a4z,l4,a4z,avy,a4z,apU,a4z,awF,a4z,amS,a4z,ar6,a4z,aCp,a4z,asa,a4z,Ac,a4z,avi,a4z,km,a4z,ty,a4z,av$,a4z,lz,a4z,ax4,a4z,u1,a4z,SG,a4z,VQ,a4z,rv,a4z,UF,a4z,au5,a4z,azz,a4z,atN,a4z,un,a4z,aje,a4z,Cf,a4z,alJ,a4z,at0,a4z,aop,a4z,z1,a4z,avZ,a4z,ayE,a4z,azb,a4z,aBC,a4z,arn,a4z,atB,a4z,f7,a4z,aBO,a4z,asR,a4z,azf,a4z,fu,a4z,vY,a4z,Cl,a4z,asv,a4z,N6,a4z,sO,a4z,lw,a4z,RD,a4z,ayH,a4z,ZA,a4z,amU,a4z,rA,a4z,avG,a4z,rC,a4z,Rj,a4z,acA,a4z,LA,a4z,asi,a4z,lI,a4z,agh,a4z,s8,a4z,amL,a4z,av6,a4z,aqm,a4z,aAa,a4z,QW,a4z,aAV,a4z,agG,a4z,af4,a4z,ahb,a4z,alV,a4z,axy,a4z,av0,a4z,aqN,a4z,aBQ,a4z,aks,a4z,azX,a4z,v6,a4z,Ch,a4z,lV,a4z,Ty,a4z,SK,a4z,aDc,a4z,ath,a4z,gB,a4z,AQ,a4z,ave,a4z,atP,a4z,ayp,a4z,ahF,a4z,akI,a4z,ry,a4z,afH,a4z,at3,a4z,acS,a4z,wE,a4z,ama,a4z,aCv,a4z,axK,a4z,aow,a4z,Q2,a4z,amH,a4z,abw,a4z,NX,a4z,axS,a4z,ax6,a4z,ME,a4z,ahP,a4z,af8,a4z,arv,a4z,ahq,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z];return{_emscripten_bind_btConeShapeX__setConeUpIndex_p1:Ah,_emscripten_bind_btDbvtProxy__get_stage_p0:M7,_emscripten_bind_btContinuousDynamicsWorld____destroy___p0:C2,_emscripten_bind_btBoxShape__getNumPlanes_p0:afS,_emscripten_bind_btHeightfieldTerrainShape____destroy___p0:Qs,_emscripten_bind_btConvexHullShape__localGetSupportingVertex_p1:f4,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabbSlow_p3:ahp,_emscripten_bind_btGhostObject__upcast_p1:aj0,_emscripten_bind_btRotationalLimitMotor__set_m_maxLimitForce_p1:yK,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__hasHit_p0:JZ,_emscripten_bind_btHeightfieldTerrainShape__getLocalScaling_p0:PK,_emscripten_bind_btGeneric6DofConstraint__isEnabled_p0:WD,_emscripten_bind_btBroadphaseProxy__isPolyhedral_p1:ad0,_emscripten_bind_btHinge2Constraint__buildJacobian_p0:Ig,_emscripten_bind_btScaledBvhTriangleMeshShape__isInfinite_p0:lj,_emscripten_bind_btTriangleMesh__getLockedReadOnlyVertexIndexBase_p9:A8,_emscripten_bind_btTriangleMesh__getLockedReadOnlyVertexIndexBase_p8:A7,_emscripten_bind_btIDebugDraw__drawLine_p3:th,_emscripten_bind_btCollisionObject__mergesSimulationIslands_p0:g6,_emscripten_bind_btIDebugDraw__drawLine_p4:ti,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionObject_p1:J_,_emscripten_bind_btConeShape__getAabbSlow_p3:EF,_emscripten_bind_btDiscreteDynamicsWorld__contactTest_p2:v8,_emscripten_bind_btDiscreteDynamicsWorld__objectQuerySingle_p8:wD,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_flags_p1:Hm,_emscripten_bind_btRigidBody____destroy___p0:qQ,_emscripten_bind_btSimpleBroadphase__destroyProxy_p2:kr,_emscripten_bind_btBroadphaseInterface__createProxy_p8:i9,_emscripten_bind_btHingeConstraint__getInfo1NonVirtual_p1:x7,_emscripten_bind_btContactSolverInfo____destroy___p0:m4,_emscripten_bind_btConeTwistConstraint__setUserConstraintType_p1:w7,_emscripten_bind_btCapsuleShape__getRadius_p0:e7,_emscripten_bind_btConeShapeZ__serializeSingleShape_p1:z4,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_linearDamping_p1:XY,_emscripten_bind_btGhostObject__getCcdSweptSphereRadius_p0:aiR,_emscripten_bind_btCapsuleShape__getMarginNonVirtual_p0:fH,_emscripten_bind_btVector4__fuzzyZero_p0:FO,_emscripten_bind_btConeShape__getPreferredPenetrationDirection_p2:DA,_emscripten_bind_btPoint2PointConstraint__getUserConstraintId_p0:aa$,_emscripten_bind_btSphereShape__calculateTemporalAabb_p6:amM,_emscripten_bind_btDbvtBroadphase__getBroadphaseAabb_p2:uo,_emscripten_bind_btIDebugDraw__drawCapsule_p5:tp,_emscripten_bind_btSimpleBroadphase__calculateOverlappingPairs_p1:kl,_emscripten_bind_btPersistentManifold__get_m_index1a_p0:j7,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__needsCollision_p1:adC,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNonvirtualAabb_p4:ahs,_emscripten_bind_btCapsuleShape__localGetSupportingVertex_p1:fp,_emscripten_bind_btGeneric6DofConstraint__btGeneric6DofConstraint_p3:Xo,_emscripten_bind_btAxisSweep3__unQuantize_p3:uT,_emscripten_bind_btCapsuleShape__getUpAxis_p0:e5,_emscripten_bind_btGeneric6DofConstraint__btGeneric6DofConstraint_p5:Xp,_emscripten_bind_btStaticPlaneShape__calculateLocalInertia_p2:VN,_emscripten_bind_btDispatcher__allocateCollisionAlgorithm_p1:RG,_emscripten_bind_btConeShape__calculateSerializeBufferSize_p0:Dq,_emscripten_bind_btCylinderShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:MM,_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_maxSuspensionTravelCm_p1:$t,_emscripten_bind_btConvexTriangleMeshShape__calculateLocalInertia_p2:h7,_emscripten_bind_btHingeConstraint__getBFrame_p0:x6,_emscripten_bind_btHingeConstraint__buildJacobian_p0:xM,_emscripten_bind_btGeneric6DofConstraint__getLinearUpperLimit_p1:W8,_emscripten_bind_btCompoundShape__isNonMoving_p0:kR,_emscripten_bind_btUniformScalingShape__setUserPointer_p1:KM,_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_collisionAlgorithmPool_p1:Rn,_emscripten_bind_btHinge2Constraint__getTranslationalLimitMotor_p0:IU,_emscripten_bind_btTranslationalLimitMotor__get_m_limitSoftness_p0:Tg,_emscripten_bind_btBoxShape__setImplicitShapeDimensions_p1:af6,_emscripten_bind_btConeTwistConstraint__setDamping_p1:vR,_emscripten_bind_btHeightfieldTerrainShape__setMargin_p1:Qr,_emscripten_bind_btDynamicsWorld__getDispatcher_p0:lr,_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultMaxCollisionAlgorithmPoolSize_p1:Rz,_emscripten_bind_btCylinderShape__isNonMoving_p0:Mf,_emscripten_bind_btCollisionObject__getRestitution_p0:hm,_emscripten_bind_btConeTwistConstraint__getSolveTwistLimit_p0:wZ,_emscripten_bind_btHinge2Constraint__setAngularUpperLimit_p1:Jr,_emscripten_bind_btPoint2PointConstraint__getInfo2_p1:acl,_emscripten_bind_btConeTwistConstraint__setFixThresh_p1:xq,_emscripten_bind_btConvexTriangleMeshShape__getLocalScaling_p0:ic,_emscripten_bind_btGhostObject__setCompanionId_p1:aiQ,_emscripten_bind_btCapsuleShapeZ__isPolyhedral_p0:aiA,_emscripten_bind_btDbvtBroadphase__setAabbForceUpdate_p4:um,_emscripten_bind_btQuaternion__normalized_p0:ai$,_emscripten_bind_btCompoundShape__getLocalScaling_p0:kG,_emscripten_bind_btCylinderShapeZ__serializeSingleShape_p1:acR,_emscripten_bind_btPairCachingGhostObject__getCompanionId_p0:Uu,_emscripten_bind_btTypedConstraint__getRigidBodyA_p0:q1,_emscripten_bind_btRigidBody__internalGetDeltaAngularVelocity_p0:pc,_emscripten_bind_btConvexHullShape__isInfinite_p0:fY,_emscripten_bind_btRaycastVehicle__debugDraw_p1:J9,_emscripten_bind_btEmptyShape__isCompound_p0:oc,_emscripten_bind_btSphereShape__localGetSupportVertexWithoutMarginNonVirtual_p1:al7,_emscripten_bind_btTriangleMesh__addIndex_p1:AT,_emscripten_bind_btRotationalLimitMotor__solveAngularLimits_p5:yN,_emscripten_bind_btCapsuleShapeZ__getAabbNonVirtual_p3:ai8,_emscripten_bind_btConeShape__isNonMoving_p0:CO,_emscripten_bind_btTypedConstraint__getUserConstraintType_p0:rl,_emscripten_bind_btMatrix3x3__deSerializeDouble_p1:d1,_emscripten_bind_btVector3__y_p0:G6,_emscripten_bind_btDynamicsWorld__removeVehicle_p1:lX,_emscripten_bind_btCylinderShape__getAabbSlow_p3:ND,_emscripten_bind_btManifoldPoint__get_m_lateralFrictionInitialized_p0:aaL,_emscripten_bind_btBoxShape__getMarginNV_p0:afq,_emscripten_bind_btRigidBody__getCenterOfMassTransform_p0:qc,_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultMaxPersistentManifoldPoolSize_p0:RA,_emscripten_bind_btBU_Simplex1to4__isCompound_p0:Fb,_emscripten_bind_btPoint2PointConstraint__getInfo1_p1:acq,_emscripten_bind_btTransform__deSerialize_p1:XK,_emscripten_bind_btBoxShape__btBoxShape_p1:af5,_emscripten_bind_btHeightfieldTerrainShape__getAabb_p3:Qo,_emscripten_bind_btSimpleBroadphaseProxy__set_m_clientObject_p1:t$,_emscripten_bind_btBvhTriangleMeshShape__calculateSerializeBufferSize_p0:Zw,_emscripten_bind_btGeneric6DofConstraint__testAngularLimitMotor_p1:Xx,_emscripten_bind_btSimpleBroadphaseProxy__set_m_aabbMax_p1:ut,_emscripten_bind_btDbvtBroadphase__get_m_dupdates_p0:sl,_emscripten_bind_btRaycastVehicle__getSteeringValue_p1:JI,_emscripten_bind_btRigidBody__internalSetExtensionPointer_p1:pO,_emscripten_bind_btHingeConstraint__needsFeedback_p0:x2,_emscripten_bind_btConvexShape__localGetSupportVertexNonVirtual_p1:Q1,_emscripten_bind_btConvexTriangleMeshShape__localGetSupportVertexNonVirtual_p1:ix,_emscripten_bind_btHingeConstraint__getFrameOffsetA_p0:xz,_emscripten_bind_btSimpleDynamicsWorld__addAction_p1:N_,_emscripten_bind_btTransform__getOpenGLMatrix_p1:XI,_emscripten_bind_btRigidBody__internalApplyPushImpulse_p3:pT,_emscripten_bind_btPersistentManifold__getCacheEntry_p1:j0,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_rayToWorld_p1:Kh,_emscripten_bind_btRigidBody__applyForce_p2:o7,_emscripten_bind_btConvexHullShape__addPoint_p1:gq,_emscripten_bind_btIDebugDraw__drawTriangle_p5:tb,_emscripten_bind_btConvexHullShape__getPreferredPenetrationDirection_p2:gu,_emscripten_bind_btDynamicsWorld__getPairCache_p0:mW,_emscripten_bind_btSliderConstraint__getInfo2NonVirtual_p7:_X,_emscripten_bind_btHinge2Constraint__get_m_useSolveConstraintObsolete_p0:IR,_emscripten_bind_btBvhTriangleMeshShape__isConvex2d_p0:Zh,_emscripten_bind_btBroadphaseInterface__aabbTest_p3:i8,_emscripten_bind_btSphereSphereCollisionAlgorithm__btSphereSphereCollisionAlgorithm_p1:jP,_emscripten_bind_btQuantizedBvh__getQuantizedNodeArray_p0:amx,_emscripten_bind_btConvexHullShape__getMarginNonVirtual_p0:gz,_emscripten_bind_btCollisionObject__getInterpolationWorldTransform_p0:hf,_emscripten_bind_btHeightfieldTerrainShape__getBoundingSphere_p2:Qw,_emscripten_bind_btRaycastVehicle__setBrake_p2:JN,_emscripten_bind_btCollisionObject__getBroadphaseHandle_p0:hl,_emscripten_bind_btCylinderShape__calculateTemporalAabb_p6:NF,_emscripten_bind_btCollisionObject__getCcdSweptSphereRadius_p0:hB,_emscripten_bind_btSimpleDynamicsWorld__updateSingleAabb_p1:OO,_emscripten_bind_btIndexedMesh__set_m_vertexBase_p1:gU,_emscripten_bind_btDbvtBroadphase__get_m_newpairs_p0:sK,_emscripten_bind_btPolyhedralConvexShape__getNumEdges_p0:sQ,_emscripten_bind_btCollisionObject__setInterpolationWorldTransform_p1:h_,_emscripten_bind_btPairCachingGhostObject__checkCollideWith_p1:UR,_emscripten_bind_btVector3__x_p0:G7,_emscripten_bind_btSimpleDynamicsWorld__removeRigidBody_p1:Od,_emscripten_bind_btSimpleBroadphase__aabbOverlap_p2:jV,_emscripten_bind_btConeTwistConstraint__setBreakingImpulseThreshold_p1:vS,_emscripten_bind_btGhostObject__getRootCollisionShape_p0:aj2,_emscripten_bind_btSerializer__finishSerialization_p0:HZ,_emscripten_bind_btConeShapeZ__setUserPointer_p1:zk,_emscripten_bind_btRaycastVehicle__updateWheelTransform_p1:J2,_emscripten_bind_btDbvtBroadphase__get_m_gid_p0:sI,_emscripten_bind_btHeightfieldTerrainShape__isConcave_p0:PY,_emscripten_bind_btWheelInfo__set_m_bIsFrontWheel_p1:D1,_emscripten_bind_btTriangleInfoMap__serialize_p2:alc,_emscripten_bind_btGeneric6DofSpringConstraint__setBreakingImpulseThreshold_p1:aeo,_emscripten_bind_btCapsuleShapeX__getLocalScaling_p0:ahx,_emscripten_bind_btStridingMeshInterface__getPremadeAabb_p2:abx,_emscripten_bind_btVector4__distance2_p1:FM,_emscripten_bind_btSliderConstraint__setParam_p2:_$,_emscripten_bind_btSliderConstraint__setParam_p3:_0,_emscripten_bind_btConeShapeX__getMarginNV_p0:zD,_emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintId_p1:ad8,_emscripten_bind_btBU_Simplex1to4__getAngularMotionDisc_p0:FA,_emscripten_bind_btConvexShape__isNonMoving_p0:Qi,_emscripten_bind_btPairCachingGhostObject__getOverlappingPairCache_p0:U5,_emscripten_bind_btConvexHullShape__localGetSupportVertexWithoutMarginNonVirtual_p1:gk,_emscripten_bind_btQuaternion__setValue_p3:ah4,_emscripten_bind_btPairCachingGhostObject__setWorldTransform_p1:UX,_emscripten_bind_btConeShape__getNumPreferredPenetrationDirections_p0:Do,_emscripten_bind_btHinge2Constraint__getInfo1_p1:In,_emscripten_bind_btConeShape__serialize_p2:Dm,_emscripten_bind_btSimpleDynamicsWorld__removeCharacter_p1:OG,_emscripten_bind_btDefaultCollisionConfiguration__getSimplexSolver_p0:jC,_emscripten_bind_btCapsuleShape__getAabb_p3:fA,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_closestHitFraction_p1:JQ,_emscripten_bind_btTransform__op_mul_p1:X_,_emscripten_bind_btConvexTriangleMeshShape__localGetSupportingVertex_p1:h9,_emscripten_bind_btRigidBody__removeConstraintRef_p1:pu,_emscripten_bind_btRigidBody__predictIntegratedTransform_p2:pE,_emscripten_bind_btSliderConstraint__getPoweredAngMotor_p0:_9,_emscripten_bind_btConeShape__setConeUpIndex_p1:CK,_emscripten_bind_btUniversalConstraint__get_limit_motor_info2_p11:nP,_emscripten_bind_btUniversalConstraint__get_limit_motor_info2_p12:nQ,_emscripten_bind_btTranslationalLimitMotor__set_m_stopCFM_p1:S_,_emscripten_bind_btCollisionObject__getCompanionId_p0:hs,_emscripten_bind_btSliderConstraint__setSoftnessOrthoAng_p1:$o,_emscripten_bind_btConeShapeZ__isConvex2d_p0:zv,_emscripten_bind_btCollisionAlgorithm__calculateTimeOfImpact_p4:alZ,_emscripten_bind_btJacobianEntry__set_m_0MinvJt_p1:Sw,_emscripten_bind_btCollisionObject__getCollisionFlags_p0:hi,_emscripten_bind_btHinge2Constraint__getUid_p0:HE,_emscripten_bind_btRigidBody__internalWritebackVelocity_p0:pz,_emscripten_bind_btRigidBody__internalWritebackVelocity_p1:pK,_emscripten_bind_btConvexHullShape__getAabbNonVirtual_p3:gc,_emscripten_bind_btOverlappingPairCache__getOverlappingPairArrayPtr_p0:Wd,_emscripten_bind_btAxisSweep3__updateHandle_p4:vb,_emscripten_bind_btDiscreteDynamicsWorld__convexSweepTest_p5:wf,_emscripten_bind_btDiscreteDynamicsWorld__convexSweepTest_p4:we,_emscripten_bind_btHeightfieldTerrainShape__isInfinite_p0:PT,_emscripten_bind_btTypedConstraint__setupSolverConstraint_p4:rX,_emscripten_bind_btStaticPlaneShape__isPolyhedral_p0:Vh,_emscripten_bind_btGhostObject__internalSetExtensionPointer_p1:aiT,_emscripten_bind_btDbvtBroadphase__get_m_fixedleft_p0:ss,_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionFilterGroup_p0:KJ,_emscripten_bind_btConvexShape__localGetSupportVertexWithoutMarginNonVirtual_p1:Q5,_emscripten_bind_btGeneric6DofConstraint__buildJacobian_p0:Wt,_emscripten_bind_bt32BitAxisSweep3__getOverlappingPairCache_p0:alU,_emscripten_bind_btBU_Simplex1to4__initializePolyhedralFeatures_p0:Fu,_emscripten_bind_btOptimizedBvh__calculateSerializeBufferSize_p0:qZ,_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitCollisionObject_p1:ak4,_emscripten_bind_btCapsuleShapeZ__getNumPreferredPenetrationDirections_p0:ai7,_emscripten_bind_btCollisionWorld__convexSweepTest_p5:SQ,_emscripten_bind_btCollisionWorld__convexSweepTest_p4:SP,_emscripten_bind_btRigidBody__getInterpolationWorldTransform_p0:pZ,_emscripten_bind_btContactConstraint__getParam_p2:aa7,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_closestHitFraction_p0:ac6,_emscripten_bind_btDefaultVehicleRaycaster____destroy___p0:m_,_emscripten_bind_btSimpleDynamicsWorld__contactPairTest_p3:OB,_emscripten_bind_btPairCachingGhostObject__setContactProcessingThreshold_p1:T3,_emscripten_bind_btHingeConstraint__getInfo2InternalUsingFrameOffset_p5:yq,_emscripten_bind_btCapsuleShapeX__serialize_p2:ahw,_emscripten_bind_btSliderConstraint__getSolveAngLimit_p0:Z8,_emscripten_bind_btUniversalConstraint__setUserConstraintId_p1:nl,_emscripten_bind_btConeShapeX__getPreferredPenetrationDirection_p2:AH,_emscripten_bind_btCompoundShape__getShapeType_p0:lb,_emscripten_bind_btBoxShape__isInside_p2:afU,_emscripten_bind_btConeTwistConstraint__getInfo2NonVirtual_p5:xG,_emscripten_bind_btConeShapeX__calculateSerializeBufferSize_p0:Ad,_emscripten_bind_bt32BitAxisSweep3__removeHandle_p2:alj,_emscripten_bind_btBoxShape__getName_p0:af3,_emscripten_bind_btDynamicsWorld__performDiscreteCollisionDetection_p0:lZ,_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_hitNormalLocal_p0:Hx,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_convexFromWorld_p0:add,_emscripten_bind_btCompoundShape__isCompound_p0:kL,_emscripten_bind_btConeShape__localGetSupportVertexWithoutMarginNonVirtual_p1:Ds,_emscripten_bind_btConvexHullShape__getUnscaledPoints_p0:fT,_emscripten_bind_btConvexTriangleMeshShape__isPolyhedral_p0:hM,_emscripten_bind_btRotationalLimitMotor__get_m_targetVelocity_p0:y3,_emscripten_bind_btDispatcherInfo__set_m_timeOfImpact_p1:eW,_emscripten_bind_btUniversalConstraint__getUseFrameOffset_p0:nx,_emscripten_bind_btSimpleDynamicsWorld__rayTest_p3:N8,_emscripten_bind_btVector4__furthestAxis_p0:GJ,_emscripten_bind_btEmptyShape__processAllTriangles_p3:oN,_emscripten_bind_btConeTwistConstraint__setMotorTargetInConstraintSpace_p1:xH,_emscripten_bind_btCollisionObject__isActive_p0:ht,_emscripten_bind_btAxisSweep3__processAllOverlappingPairs_p1:u4,_emscripten_bind_btTranslationalLimitMotor__get_m_targetVelocity_p0:S8,_emscripten_bind_btTriangleMesh__getLockedVertexIndexBase_p9:Bf,_emscripten_bind_btTriangleMesh__getLockedVertexIndexBase_p8:Be,_emscripten_bind_btConeTwistConstraint____destroy___p0:xi,_emscripten_bind_btContinuousDynamicsWorld__getConstraintSolver_p0:C5,_emscripten_bind_btPolyhedralConvexAabbCachingShape__initializePolyhedralFeatures_p0:ahi,_emscripten_bind_btConeShapeZ__setConeUpIndex_p1:zq,_emscripten_bind_btPoint2PointConstraint__setupSolverConstraint_p4:acs,_emscripten_bind_btConeTwistConstraint__updateRHS_p1:xl,_emscripten_bind_btCollisionDispatcher____destroy___p0:uH,_emscripten_bind_btTransform__setOrigin_p1:X6,_emscripten_bind_btCollisionWorld__getNumCollisionObjects_p0:Sk,_emscripten_bind_btPolyhedralConvexShape__getConvexPolyhedron_p0:sf,_emscripten_bind_btCapsuleShapeZ__setLocalScaling_p1:ajd,_emscripten_bind_btRaycastVehicle____destroy___p0:Ka,_emscripten_bind_btWheelInfo__set_m_engineForce_p1:DV,_emscripten_bind_btManifoldPoint__get_m_contactMotion1_p0:aaB,_emscripten_bind_btVector3__setMax_p1:Gw,_emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_collisionFilterMask_p0:Bz,_emscripten_bind_btConeTwistConstraint__enableFeedback_p1:wV,_emscripten_bind_btJacobianEntry__getDiagonal_p0:R0,_emscripten_bind_btPolyhedralConvexAabbCachingShape__serializeSingleShape_p1:aho,_emscripten_bind_btEmptyShape__calculateTemporalAabb_p6:oW,_emscripten_bind_btAxisSweep3__btAxisSweep3_p5:u_,_emscripten_bind_btAxisSweep3__btAxisSweep3_p4:uZ,_emscripten_bind_btAxisSweep3__btAxisSweep3_p3:uM,_emscripten_bind_btAxisSweep3__btAxisSweep3_p2:uL,_emscripten_bind_btRigidBody__internalGetAngularVelocity_p1:qw,_emscripten_bind_btDiscreteDynamicsWorld__debugDrawObject_p3:v0,_emscripten_bind_btPersistentManifold__set_m_companionIdB_p1:kb,_emscripten_bind_btConeTwistConstraint__setAngularOnly_p1:w9,_emscripten_bind_btVector4__length2_p0:FZ,_emscripten_bind_btStorageResult__set_m_closestPointInB_p1:NI,_emscripten_bind_btIDebugDraw__reportErrorWarning_p1:tj,_emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p1:I4,_emscripten_bind_btTriangleInfoMap__set_m_equalVertexThreshold_p1:akU,_emscripten_bind_btGeneric6DofConstraint__getUserConstraintType_p0:W$,_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_collisionObject_p1:HB,_emscripten_bind_btMultiSphereShape__isCompound_p0:Or,_emscripten_bind_btRigidBody__setCenterOfMassTransform_p1:o3,_emscripten_bind_btDbvtBroadphase__set_m_releasepaircache_p1:sk,_emscripten_bind_btConvexInternalAabbCachingShape__setUserPointer_p1:P$,_emscripten_bind_btUniversalConstraint__setFrames_p2:nM,_emscripten_bind_btBroadphaseRayCallback__set_m_lambda_max_p1:Bs,_emscripten_bind_btGhostPairCallback__addOverlappingPair_p2:am1,_emscripten_bind_btUniversalConstraint__getInfo1_p1:nc,_emscripten_bind_btEmptyShape__isSoftBody_p0:oj,_emscripten_bind_btBvhTriangleMeshShape__isNonMoving_p0:Ze,_emscripten_bind_btOptimizedBvh__calculateSerializeBufferSizeNew_p0:rG,_emscripten_bind_btConvexShape__getShapeType_p0:Rl,_emscripten_bind_btCapsuleShapeZ__getHalfHeight_p0:aiC,_emscripten_bind_btHinge2Constraint__getAxis2_p0:I1,_emscripten_bind_btTypedConstraint__setDbgDrawSize_p1:rh,_emscripten_bind_btIndexedMesh____destroy___p0:hV,_emscripten_bind_btPolyhedralConvexAabbCachingShape__serialize_p2:ahd,_emscripten_bind_btAngularLimit__getBiasFactor_p0:je,_emscripten_bind_btConvexHullShape__setUserPointer_p1:fU,_emscripten_bind_btDefaultMotionState____destroy___p0:BX,_emscripten_bind_btConvexTriangleMeshShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:iR,_emscripten_bind_btCollisionDispatcher__dispatchAllCollisionPairs_p3:uF,_emscripten_bind_btSliderConstraint__getSoftnessDirLin_p0:$q,_emscripten_bind_btQuantizedBvh__calculateSerializeBufferSizeNew_p0:amW,_emscripten_bind_btCylinderShapeX__calculateSerializeBufferSize_p0:K2,_emscripten_bind_btDbvtBroadphase__performDeferredRemoval_p1:tw,_emscripten_bind_CProfileNode__Get_Total_Time_p0:Yw,_emscripten_bind_btRigidBody__proceedToTransform_p1:pJ,_emscripten_bind_btHinge2Constraint__getParam_p2:Im,_emscripten_bind_btEmptyShape__getContactBreakingThreshold_p1:oS,_emscripten_bind_btCompoundShape__isConcave_p0:lc,_emscripten_bind_btHinge2Constraint__getParam_p1:Il,_emscripten_bind_btConeShape__isPolyhedral_p0:CG,_emscripten_bind_btGhostObject__setCollisionFlags_p1:aj9,_emscripten_bind_btDiscreteDynamicsWorld__removeCollisionObject_p1:wB,_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_hitNormalInWorld_p1:Mo,_emscripten_bind_btConeShapeZ__getRadius_p0:zn,_emscripten_bind_btConvexInternalShape__getAabb_p3:TL,_emscripten_bind_btRigidBody__getIslandTag_p0:pg,_emscripten_bind_btPairCachingGhostObject__mergesSimulationIslands_p0:T5,_emscripten_bind_btGeneric6DofSpringConstraint__getParam_p1:adP,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_rayFromWorld_p1:Ki,_emscripten_bind_btDbvtBroadphase__set_m_updates_ratio_p1:sC,_emscripten_bind_btCompoundShape__setMargin_p1:k1,_emscripten_bind_btRotationalLimitMotor__set_m_loLimit_p1:yI,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_angularDamping_p1:XS,_emscripten_bind_btConvexHullShape__getUserPointer_p0:f_,_emscripten_bind_btManifoldPoint__get_m_contactMotion2_p0:aaC,_emscripten_bind_btRigidBody__getCcdSweptSphereRadius_p0:p9,_emscripten_bind_btDynamicsWorld__removeCharacter_p1:mM,_emscripten_bind_btBroadphaseProxy__get_m_uniqueId_p0:aeI,_emscripten_bind_btManifoldPoint__get_m_combinedFriction_p0:aae,_emscripten_bind_btHingeConstraint__getEnableAngularMotor_p0:x1,_emscripten_bind_btVector3__setW_p1:G3,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getLocalScalingNV_p0:afE,_emscripten_bind_btSimpleBroadphaseProxy__get_m_multiSapParentProxy_p0:ud,_emscripten_bind_btDynamicsWorld__getGravity_p0:mI,_emscripten_bind_btBU_Simplex1to4__serializeSingleShape_p1:FB,_emscripten_bind_btBoxShape__getMargin_p0:agb,_emscripten_bind_btCylinderShape__setImplicitShapeDimensions_p1:MJ,_emscripten_bind_btContinuousDynamicsWorld__addVehicle_p1:De,_emscripten_bind_btPoint2PointConstraint__set_m_setting_p1:acn,_emscripten_bind_btDiscreteDynamicsWorld__debugDrawWorld_p0:wd,_emscripten_bind_btSphereShape__isConvex_p0:aly,_emscripten_bind_btConeTwistConstraint__needsFeedback_p0:wX,_emscripten_bind_btHinge2Constraint__getFrameOffsetA_p0:HH,_emscripten_bind_btRigidBody__internalApplyImpulse_p3:pN,_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultStackAllocatorSize_p1:Rs,_emscripten_bind_btContactConstraint__setEnabled_p1:$1,_emscripten_bind_btConvexInternalShape__getUserPointer_p0:Tp,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getBoundingSphere_p2:ahm,_emscripten_bind_btQuadWord__getZ_p0:LZ,_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_flags_p0:KD,_emscripten_bind_btRigidBody__isStaticObject_p0:qq,_emscripten_bind_bt32BitAxisSweep3__setAabb_p4:alH,_emscripten_bind_btOptimizedBvh__refit_p3:rE,_emscripten_bind_btGeneric6DofSpringConstraint__set_m_useSolveConstraintObsolete_p1:aer,_emscripten_bind_btTypedConstraint__getParam_p2:rS,_emscripten_bind_btTypedConstraint__getParam_p1:rR,_emscripten_bind_btPolyhedralConvexShape__getAabbSlow_p3:s7,_emscripten_bind_btQuaternion__getAngle_p0:ai1,_emscripten_bind_btSphereShape__getPreferredPenetrationDirection_p2:ame,_emscripten_bind_btRotationalLimitMotor__set_m_normalCFM_p1:y7,_emscripten_bind_btBroadphasePair__set_m_internalTmpValue_p1:Bh,_emscripten_bind_btEmptyShape__serialize_p2:oL,_emscripten_bind_btMultiSphereShape__calculateTemporalAabb_p6:PH,_emscripten_bind_btBroadphaseInterface__rayTest_p5:i1,_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_persistentManifoldPool_p1:RB,_emscripten_bind_btSimpleDynamicsWorld__setForceUpdateAllAabbs_p1:Ol,_emscripten_bind_btCylinderShapeX__setImplicitShapeDimensions_p1:Lc,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumEdges_p0:agE,_emscripten_bind_btPairCachingGhostObject__convexSweepTest_p5:UV,_emscripten_bind_btCylinderShapeZ__getPreferredPenetrationDirection_p2:acK,_emscripten_bind_btCapsuleShapeZ__calculateSerializeBufferSize_p0:ai9,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumPlanes_p0:agu,_emscripten_bind_btPairCachingGhostObject__getDeactivationTime_p0:T_,_emscripten_bind_btPairCachingGhostObject__getNumOverlappingObjects_p0:T8,_emscripten_bind_btCollisionObject__setBroadphaseHandle_p1:hI,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__needsCollision_p1:H9,_emscripten_bind_btConeShape__isSoftBody_p0:CQ,_emscripten_bind_btConvexTriangleMeshShape__isInside_p2:ia,_emscripten_bind_btVector3__deSerializeFloat_p1:G1,_emscripten_bind_btConeShapeZ__getAngularMotionDisc_p0:z3,_emscripten_bind_btPairCachingGhostObject__getUserPointer_p0:Uo,_emscripten_bind_btOptimizedBvh__serialize_p3:ru,_emscripten_bind_btOptimizedBvh__serialize_p2:rt,_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportVertexWithoutMarginNonVirtual_p1:agH,_emscripten_bind_btUniformScalingShape__getBoundingSphere_p2:LK,_emscripten_bind_btQuadWord__getY_p0:LY,_emscripten_bind_btCylinderShape__getPreferredPenetrationDirection_p2:MI,_emscripten_bind_btPolyhedralConvexShape__isSoftBody_p0:sc,_emscripten_bind_btUniversalConstraint__getAngle_p1:nW,_emscripten_bind_btSliderConstraint__buildJacobian_p0:ZV,_emscripten_bind_btUniversalConstraint__getFrameOffsetA_p0:mA,_emscripten_bind_btDispatcher__getManifoldByIndexInternal_p1:RH,_emscripten_bind_btGhostObject__calculateSerializeBufferSize_p0:akt,_emscripten_bind_btBoxShape__isPolyhedral_p0:afn,_emscripten_bind_btConvexTriangleMeshShape__setImplicitShapeDimensions_p1:iE,_emscripten_bind_btVector4__maxAxis_p0:FX,_emscripten_bind_btRigidBody__checkCollideWith_p1:qM,_emscripten_bind_btUniversalConstraint__setUserConstraintPtr_p1:oa,_emscripten_bind_btHinge2Constraint__getAxis1_p0:I$,_emscripten_bind_btCapsuleShapeX__setUserPointer_p1:agV,_emscripten_bind_btQuadWord__getX_p0:LX,_emscripten_bind_btDiscreteDynamicsWorld__addConstraint_p1:wg,_emscripten_bind_btCapsuleShape__isInfinite_p0:fc,_emscripten_bind_btCompoundShape__getNumChildShapes_p0:kT,_emscripten_bind_btOptimizedBvh__buildInternal_p0:rs,_emscripten_bind_btUniversalConstraint__setAxis_p2:oI,_emscripten_bind_btGeneric6DofConstraint__getRelativePivotPosition_p1:VI,_emscripten_bind_btConeShapeZ__localGetSupportingVertex_p1:zJ,_emscripten_bind_btManifoldPoint__btManifoldPoint_p4:abM,_emscripten_bind_btConvexInternalShape__calculateSerializeBufferSize_p0:TG,_emscripten_bind_btDbvtBroadphase__set_m_cid_p1:sq,_emscripten_bind_btDbvtProxy__isSoftBody_p1:MY,_emscripten_bind_btGeneric6DofConstraint__get_limit_motor_info2_p11:Xe,_emscripten_bind_btPersistentManifold__set_m_objectType_p1:jX,_emscripten_bind_btUniversalConstraint__getFrameOffsetB_p0:mC,_emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p1:Oa,_emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p2:Ob,_emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p3:Oc,_emscripten_bind_btHinge2Constraint__enableFeedback_p1:IA,_emscripten_bind_btIDebugDraw__drawAabb_p3:tn,_emscripten_bind_btGeneric6DofConstraint__isLimited_p1:WO,_emscripten_bind_btGeneric6DofConstraint__setLimit_p3:Xg,_emscripten_bind_btSimpleDynamicsWorld__getConstraint_p1:OH,_emscripten_bind_btDiscreteDynamicsWorld__removeRigidBody_p1:v7,_emscripten_bind_btContactConstraint__getDbgDrawSize_p0:$Y,_emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p1:vw,_emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p3:vy,_emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p2:vx,_emscripten_bind_btSliderConstraint__setUserConstraintId_p1:_7,_emscripten_bind_btDiscreteDynamicsWorld____destroy___p0:wm,_emscripten_bind_btConvexInternalAabbCachingShape__getShapeType_p0:Qb,_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportingVertexWithoutMargin_p1:ag9,_emscripten_bind_btCylinderShape__getName_p0:MA,_emscripten_bind_btTypedConstraint__setUserConstraintType_p1:ri,_emscripten_bind_btUniformScalingShape__getUniformScalingFactor_p0:KW,_emscripten_bind_btVector3__op_set_p1:GS,_emscripten_bind_btVector3__deSerializeDouble_p1:Gp,_emscripten_bind_btAxisSweep3__getHandle_p1:uU,_emscripten_bind_btConvexInternalShape__localGetSupportVertexWithoutMarginNonVirtual_p1:TI,_emscripten_bind_btCollisionObject__getCcdSquareMotionThreshold_p0:hq,_emscripten_bind_btRigidBody__checkCollideWithOverride_p1:pF,_emscripten_bind_btAxisSweep3__getOverlappingPairCache_p0:vh,_emscripten_bind_btUniversalConstraint__calculateTransforms_p2:nO,_emscripten_bind_btUniversalConstraint__calculateTransforms_p0:nN,_emscripten_bind_btSimpleBroadphase__testAabbOverlap_p2:jU,_emscripten_bind_btConeTwistConstraint__buildJacobian_p0:wF,_emscripten_bind_btRigidBody__addConstraintRef_p1:pH,_emscripten_bind_btConeShape__localGetSupportingVertex_p1:Dl,_emscripten_bind_btConeShape__getRadius_p0:CH,_emscripten_bind_btCollisionDispatcher__registerCollisionCreateFunc_p3:uj,_emscripten_bind_btDynamicsWorld__rayTest_p3:l0,_emscripten_bind_btQuaternion__normalize_p0:aia,_emscripten_bind_btHeightfieldTerrainShape__getAngularMotionDisc_p0:Qu,_emscripten_bind_btMatrix3x3__transposeTimes_p1:d9,_emscripten_bind_btConcaveShape__isSoftBody_p0:akn,_emscripten_bind_btConvexTriangleMeshShape__getAabb_p3:iG,_emscripten_bind_btContinuousDynamicsWorld__contactPairTest_p3:C_,_emscripten_bind_btOverlapFilterCallback__needBroadphaseCollision_p2:ZR,_emscripten_bind_btAxisSweep3__getOverlappingPairUserCallback_p0:uQ,_emscripten_bind_btHeightfieldTerrainShape__calculateTemporalAabb_p6:Qt,_emscripten_bind_btContinuousDynamicsWorld__getForceUpdateAllAabbs_p0:Cu,_emscripten_bind_btCollisionDispatcher__needsCollision_p2:uB,_emscripten_bind_btVector4__serialize_p1:Fh,_emscripten_bind_btHingeConstraint__btHingeConstraint_p4:yD,_emscripten_bind_btHingeConstraint__btHingeConstraint_p7:yF,_emscripten_bind_btHingeConstraint__btHingeConstraint_p6:yE,_emscripten_bind_btSimpleDynamicsWorld__setConstraintSolver_p1:OT,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getMarginNonVirtual_p0:ahk,_emscripten_bind_btCapsuleShapeX__serializeSingleShape_p1:ahS,_emscripten_bind_btBoxShape__getLocalScaling_p0:afW,_emscripten_bind_btUniversalConstraint__getRigidBodyA_p0:mG,_emscripten_bind_btPolyhedralConvexAabbCachingShape__isSoftBody_p0:agO,_emscripten_bind_btPersistentManifold__setBodies_p2:j6,_emscripten_bind_btOptimizedBvh__getLeafNodeArray_p0:qU,_emscripten_bind_btUniversalConstraint__getUid_p0:mx,_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_maxSuspensionForce_p1:$C,_emscripten_bind_btSliderConstraint__setRestitutionLimLin_p1:_n,_emscripten_bind_btCollisionShape__isConcave_p0:VB,_emscripten_bind_btHingeConstraint__setEnabled_p1:xX,_emscripten_bind_btSliderConstraint__setupSolverConstraint_p4:_U,_emscripten_bind_btStridingMeshInterface__setPremadeAabb_p2:abv,_emscripten_bind_btRigidBody__integrateVelocities_p1:pI,_emscripten_bind_btRigidBody__internalGetInvMass_p0:ot,_emscripten_bind_btPairCachingGhostObject__setCcdMotionThreshold_p1:T6,_emscripten_bind_btWheelInfo__set_m_wheelAxleCS_p1:EJ,_emscripten_bind_btTypedConstraint____destroy___p0:rW,_emscripten_bind_btHinge2Constraint__getRotationalLimitMotor_p1:IF,_emscripten_bind_btHingeConstraint__getLowerLimit_p0:yn,_emscripten_bind_btGeneric6DofConstraint__enableFeedback_p1:WG,_emscripten_bind_btQuaternion__getX_p0:ahY,_emscripten_bind_btPairCachingGhostObject__getInterpolationLinearVelocity_p0:T4,_emscripten_bind_btConeTwistConstraint__isEnabled_p0:wQ,_strlen:aDE,_emscripten_bind_btWheelInfo__get_m_deltaRotation_p0:Eq,_emscripten_bind_btQuaternion__getY_p0:ahZ,_emscripten_bind_btGhostObject__removeOverlappingObjectInternal_p3:ajv,_emscripten_bind_btDynamicsWorld__setConstraintSolver_p1:mY,_emscripten_bind_btUniformScalingShape__getUserPointer_p0:KS,_emscripten_bind_btHashString__get_m_hash_p0:amF,_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionFilterMask_p0:KI,_emscripten_bind_btHingeConstraint__getInfo1_p1:xQ,_emscripten_bind_btConeShapeZ__isConcave_p0:zz,_emscripten_bind_btTranslationalLimitMotor__set_m_currentLimitError_p1:SY,_emscripten_bind_btDbvtBroadphase__collide_p1:tE,_emscripten_bind_btTriangleInfo__set_m_flags_p1:Hc,_emscripten_bind_btBU_Simplex1to4__addVertex_p1:ER,_emscripten_bind_btSimpleBroadphaseProxy__isCompound_p1:tN,_emscripten_bind_btConvexTriangleMeshShape__isSoftBody_p0:io,_emscripten_bind_btTypedConstraint__calculateSerializeBufferSize_p0:rV,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_rayToWorld_p0:Hi,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback____destroy___p0:Ic,_emscripten_bind_btCollisionDispatcher__getNearCallback_p0:ug,_emscripten_bind_btTypedConstraint__getBreakingImpulseThreshold_p0:rk,_emscripten_bind_btWheelInfo____destroy___p0:EK,_emscripten_bind_btDefaultMotionState__get_m_graphicsWorldTrans_p0:BD,_emscripten_bind_btUniformScalingShape__serializeSingleShape_p1:Mk,_emscripten_bind_btConeShapeX__getConeUpIndex_p0:Aq,_emscripten_bind_btBroadphaseProxy__get_m_collisionFilterGroup_p0:aeL,_emscripten_bind_btHeightfieldTerrainShape__isConvex2d_p0:PW,_emscripten_bind_btUniversalConstraint__getAxis1_p0:n0,_emscripten_bind_btSimpleBroadphaseProxy__get_m_clientObject_p0:t_,_emscripten_bind_btDispatcherInfo__get_m_stepCount_p0:eK,_emscripten_bind_btCollisionDispatcher__defaultNearCallback_p3:uJ,_emscripten_bind_btQuadWord__w_p0:L$,_emscripten_bind_btDiscreteDynamicsWorld__getDispatchInfo_p0:vG,_emscripten_bind_btCollisionDispatcher__setDispatcherFlags_p1:ui,_emscripten_bind_btConeTwistConstraint__getConstraintType_p0:wS,_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_transformA_p1:YP,_emscripten_bind_btCompoundShape__getChildList_p0:kS,_emscripten_bind_btScaledBvhTriangleMeshShape__setLocalScaling_p1:lH,_emscripten_bind_btGhostObject__isActive_p0:ajZ,_emscripten_bind_btManifoldPoint__get_m_contactCFM1_p0:aaa,_emscripten_bind_btWheelInfo__set_m_wheelDirectionCS_p1:EI,_emscripten_bind_btMultiSphereShape__btMultiSphereShape_p3:Pj,_emscripten_bind_btGhostObject__getContactProcessingThreshold_p0:aj3,_emscripten_bind_btHingeConstraint__setMaxMotorImpulse_p1:xB,_emscripten_bind_btRaycastVehicle__setCoordinateSystem_p3:J8,_emscripten_bind_btUniformScalingShape__getNumPreferredPenetrationDirections_p0:Lt,_emscripten_bind_btGhostObject__setAnisotropicFriction_p1:akx,_emscripten_bind_btManifoldPoint__getDistance_p0:aap,_emscripten_bind_btHashInt__getHash_p0:Sc,_emscripten_bind_btConvexInternalShape__calculateTemporalAabb_p6:UG,_emscripten_bind_CProfileSample____destroy___p0:aht,_emscripten_bind_btHinge2Constraint__calcAnchorPos_p0:Ip,_emscripten_bind_btContinuousDynamicsWorld__addCharacter_p1:C9,_emscripten_bind_btPoint2PointConstraint__serialize_p2:abH,_emscripten_bind_btUniversalConstraint__getParam_p2:na,_emscripten_bind_btConeShapeZ__getConeUpIndex_p0:zy,_emscripten_bind_btSliderConstraint__getRestitutionOrthoAng_p0:$j,_emscripten_bind_btConstraintSetting__btConstraintSetting_p0:nf,_emscripten_bind_btGeneric6DofConstraint__setAngularLowerLimit_p1:Xj,_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_hitPointInWorld_p0:LQ,_emscripten_bind_btGeneric6DofConstraint__setParam_p3:Wv,_emscripten_bind_btGeneric6DofConstraint__getFrameOffsetB_p0:VJ,_emscripten_bind_bt32BitAxisSweep3__getOverlappingPairUserCallback_p0:ala,_emscripten_bind_btCapsuleShapeZ__isInfinite_p0:aiG,_emscripten_bind_btDbvtProxy__get_m_uniqueId_p0:Ni,_emscripten_bind_btDiscreteDynamicsWorld__getNumConstraints_p0:v3,_emscripten_bind_btBroadphaseInterface__resetPool_p1:i4,_emscripten_bind_btHinge2Constraint__get_limit_motor_info2_p11:Jd,_emscripten_bind_btRotationalLimitMotor__set_m_accumulatedImpulse_p1:zc,_emscripten_bind_btConvexHullShape__initializePolyhedralFeatures_p0:hT,_emscripten_bind_btHinge2Constraint__get_limit_motor_info2_p12:Je,_emscripten_bind_btBU_Simplex1to4__isPolyhedral_p0:Es,_emscripten_bind_btSimpleDynamicsWorld__addConstraint_p1:Oz,_emscripten_bind_btConvexTriangleMeshShape__getNumVertices_p0:ib,_emscripten_bind_btContactConstraint__setUserConstraintId_p1:$W,_emscripten_bind_btTranslationalLimitMotor__needApplyForce_p1:Sn,_emscripten_bind_btWheelInfo__set_m_wheelsRadius_p1:DN,_emscripten_bind_btHinge2Constraint__getCalculatedTransformA_p0:HK,_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_hitNormalLocal_p1:If,_emscripten_bind_btConeShape__localGetSupportingVertexWithoutMargin_p1:Dt,_emscripten_bind_btQuadWord__setValue_p4:LU,_emscripten_bind_btRotationalLimitMotor__set_m_currentLimit_p1:zg,_emscripten_bind_btQuadWord__y_p0:L0,_emscripten_bind_btQuadWord__setValue_p3:LT,_emscripten_bind_btRigidBody__getInvMass_p0:ov,_emscripten_bind_btContinuousDynamicsWorld__setNumTasks_p1:Cd,_emscripten_bind_btCollisionObject__getUserPointer_p0:hn,_emscripten_bind_btTranslationalLimitMotor__get_m_accumulatedImpulse_p0:Tf,_emscripten_bind_btBvhTriangleMeshShape__setLocalScaling_p1:Zz,_emscripten_bind_btStridingMeshInterface__hasPremadeAabb_p0:abB,_emscripten_bind_btConeTwistConstraint__isPastSwingLimit_p0:vJ,_emscripten_bind_btWheelInfo__get_m_rotation_p0:Eh,_emscripten_bind_btQuantizedBvh__unQuantize_p1:am_,_emscripten_bind_btUniversalConstraint__getAxis2_p0:n2,_emscripten_bind_btPolyhedralConvexAabbCachingShape__isPolyhedral_p0:afD,_emscripten_bind_btHeightfieldTerrainShape__isPolyhedral_p0:PP,_emscripten_bind_btTypedConstraint__getDbgDrawSize_p0:ra,_emscripten_bind_btSliderConstraint__getRestitutionOrthoLin_p0:$c,_emscripten_bind_btPolyhedralConvexShape__isConvex2d_p0:r7,_emscripten_bind_btQuantizedBvh__quantize_p3:amQ,_emscripten_bind_btDynamicsWorld__removeCollisionObject_p1:mX,_emscripten_bind_btVector4__closestAxis4_p0:Gc,_emscripten_bind_btCollisionShape__getContactBreakingThreshold_p1:Wm,_emscripten_bind_btGhostObject__getAnisotropicFriction_p0:aj6,_emscripten_bind_btCollisionObject__forceActivationState_p1:he,_emscripten_bind_btCylinderShape__localGetSupportingVertexWithoutMargin_p1:MC,_emscripten_bind_btBroadphaseProxy__get_m_multiSapParentProxy_p0:aeK,_emscripten_bind_bt32BitAxisSweep3__processAllOverlappingPairs_p1:all,_emscripten_bind_btConvexShape__getPreferredPenetrationDirection_p2:Ra,_emscripten_bind_btConvexInternalShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:UB,_emscripten_bind_btDiscreteDynamicsWorld__getSolverInfo_p0:vp,_emscripten_bind_btManifoldPoint__get_m_contactCFM2_p0:aab,_emscripten_bind_btConeTwistConstraint__getDbgDrawSize_p0:w3,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionFilterGroup_p0:JY,_emscripten_bind_btConvexHullShape__isNonMoving_p0:f$,_emscripten_bind_btContinuousDynamicsWorld__setConstraintSolver_p1:Di,_emscripten_bind_btBoxShape__getHalfExtentsWithoutMargin_p0:afv,_emscripten_bind_btConvexHullShape__isInside_p2:hO,_emscripten_bind_btBvhTriangleMeshShape__performConvexcast_p5:ZH,_emscripten_bind_btConeShapeX__getNumPreferredPenetrationDirections_p0:Ab,_emscripten_bind_btDispatcherInfo__set_m_convexConservativeDistanceThreshold_p1:e_,_emscripten_bind_btConeTwistConstraint__getSolveSwingLimit_p0:w6,_emscripten_bind_btSphereShape__serializeSingleShape_p1:amK,_emscripten_bind_btCylinderShapeX__serializeSingleShape_p1:K_,_emscripten_bind_btHinge2Constraint__getRigidBodyA_p0:HN,_emscripten_bind_btCollisionObject__setRestitution_p1:hG,_emscripten_bind_btCylinderShapeX__getPreferredPenetrationDirection_p2:Lb,_emscripten_bind_btHashString__set_m_string_p1:amB,_emscripten_bind_btConeShapeZ__calculateSerializeBufferSize_p0:zO,_emscripten_bind_btConvexHullShape__isSoftBody_p0:f0,_emscripten_bind_btRigidBody__getLinearVelocity_p0:pl,_emscripten_bind_btRigidBody__applyTorque_p1:pf,_emscripten_bind_btRotationalLimitMotor__set_m_currentLimitError_p1:yJ,_emscripten_bind_btConvexShape__getContactBreakingThreshold_p1:Q8,_emscripten_bind_btIndexedMesh__set_m_vertexType_p1:gS,_emscripten_bind_btCollisionObject__hasContactResponse_p0:hw,_emscripten_bind_btPolyhedralConvexShape__getEdge_p3:sS,_emscripten_bind_btTriangleIndexVertexArray__getLockedVertexIndexBase_p9:afN,_emscripten_bind_btCapsuleShape__setLocalScaling_p1:fz,_emscripten_bind_btGeneric6DofSpringConstraint__serialize_p2:aeQ,_emscripten_bind_btPolyhedralConvexShape__getVertex_p2:sM,_emscripten_bind_btHingeConstraint__getMotorTargetVelosity_p0:xy,_emscripten_bind_btOptimizedBvh__getAlignmentSerializationPadding_p0:qR,_emscripten_bind_btGhostObject__setUserPointer_p1:ai_,_emscripten_bind_btContinuousDynamicsWorld__getSimulationIslandManager_p0:CB,_emscripten_bind_btGeneric6DofConstraint__setFrames_p2:Xl,_emscripten_bind_btUniversalConstraint__setUpperLimit_p2:nb,_emscripten_bind_btConvexHullShape__getScaledPoint_p1:f6,_emscripten_bind_btConeShapeX__getUserPointer_p0:Al,_emscripten_bind_btCollisionObject__setCcdMotionThreshold_p1:g7,_emscripten_bind_btConvexTriangleMeshShape__localGetSupportingVertexWithoutMargin_p1:iO,_emscripten_bind_btManifoldPoint__set_m_userPersistentData_p1:aal,_emscripten_bind_btSliderConstraint__set_m_objectType_p1:_w,_emscripten_bind_btSimpleDynamicsWorld__getGravity_p0:OC,_emscripten_bind_btBU_Simplex1to4__getLocalScalingNV_p0:Et,_emscripten_bind_btContinuousDynamicsWorld__removeVehicle_p1:Cb,_emscripten_bind_btConeTwistConstraint__getAppliedImpulse_p0:xm,_emscripten_bind_btConeShapeZ__getBoundingSphere_p2:z2,_emscripten_bind_btContinuousDynamicsWorld__btContinuousDynamicsWorld_p4:DE,_emscripten_bind_btGeneric6DofSpringConstraint__buildJacobian_p0:adL,_emscripten_bind_btConeShape__setImplicitShapeDimensions_p1:DC,_emscripten_bind_btBroadphaseRayCallback__process_p1:BT,_emscripten_bind_btSimpleBroadphase__rayTest_p5:kk,_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportingVertexWithoutMargin_p1:QP,_emscripten_bind_btUniformScalingShape__localGetSupportingVertexWithoutMargin_p1:LG,_emscripten_bind_btRigidBody__applyTorqueImpulse_p1:qo,_emscripten_bind_btMultiSphereShape__isInfinite_p0:Pa,_emscripten_bind_btContactConstraint__setupSolverConstraint_p4:abd,_emscripten_bind_btVector3__closestAxis_p0:GT,_emscripten_bind_btSimpleBroadphase__rayTest_p3:ki,_emscripten_bind_btMultiSphereShape__getAabbSlow_p3:PG,_emscripten_bind_btRigidBody__applyCentralImpulse_p1:qr,_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_useEpaPenetrationAlgorithm_p1:Rq,_emscripten_bind_btWheelInfo__set_m_frictionSlip_p1:D5,_emscripten_bind_btRigidBody__updateDeactivation_p1:om,_emscripten_bind_btTranslationalLimitMotor__get_m_currentLimitError_p0:So,_emscripten_bind_btConeTwistConstraint__getObjectType_p0:wY,_emscripten_bind_btDbvtProxy__isConvex_p1:MW,_emscripten_bind_btMultiSphereShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:PC,_emscripten_bind_btCapsuleShapeZ__getUserPointer_p0:aiH,_emscripten_bind_btRotationalLimitMotor__needApplyTorques_p0:yL,_emscripten_bind_btWheelInfo__get_m_bIsFrontWheel_p0:DU,_emscripten_bind_btGeneric6DofConstraint__getUid_p0:VE,_emscripten_bind_btWheelInfo__set_m_clientInfo_p1:D_,_emscripten_bind_btCollisionDispatcher__setCollisionConfiguration_p1:uk,_emscripten_bind_btGeneric6DofSpringConstraint__btGeneric6DofSpringConstraint_p5:adY,_emscripten_bind_btCapsuleShapeZ__isSoftBody_p0:aiK,_emscripten_bind_btTranslationalLimitMotor__get_m_damping_p0:Tc,_emscripten_bind_btQuaternion__op_mul_p1:ah3,_emscripten_bind_btSphereShape__getMarginNV_p0:alt,_emscripten_bind_btBoxShape__isNonMoving_p0:afu,_emscripten_bind_btUniversalConstraint__setLimit_p3:nR,_emscripten_bind_btGeneric6DofSpringConstraint__getCalculatedTransformB_p0:aem,_emscripten_bind_btAngularLimit__getError_p0:jc,_emscripten_bind_btCylinderShapeX__calculateLocalInertia_p2:Kj,_emscripten_bind_btDispatcherInfo__set_m_useContinuous_p1:eN,_emscripten_bind_btTypedConstraint__serialize_p2:rO,_emscripten_bind_btDbvtBroadphase__resetPool_p1:tC,_emscripten_bind_btSliderConstraint__getFrameOffsetB_p0:_y,_emscripten_bind_btOptimizedBvh__reportAabbOverlappingNodex_p3:rx,_emscripten_bind_btMatrix3x3__inverse_p0:ep,_emscripten_bind_btCapsuleShapeX__btCapsuleShapeX_p2:ahI,_emscripten_bind_btRigidBody__getFriction_p0:pa,_emscripten_bind_btSliderConstraint__setMaxLinMotorForce_p1:_r,_emscripten_bind_btContinuousDynamicsWorld__getPairCache_p0:Df,_emscripten_bind_btDynamicsWorld__addAction_p1:lS,_emscripten_bind_CProfileSample__CProfileSample_p1:ahW,_emscripten_bind_btStridingMeshInterface__getLockedReadOnlyVertexIndexBase_p8:abn,_emscripten_bind_btRigidBody__getHitFraction_p0:or,_emscripten_bind_btTriangleIndexVertexArray__addIndexedMesh_p2:afK,_emscripten_bind_btTriangleIndexVertexArray__addIndexedMesh_p1:afJ,_emscripten_bind_btCapsuleShape__localGetSupportVertexWithoutMarginNonVirtual_p1:fx,_emscripten_bind_btCapsuleShape__getAngularMotionDisc_p0:fL,_emscripten_bind_btDbvtBroadphase__set_m_gid_p1:st,_emscripten_bind_btEmptyShape__getLocalScaling_p0:oM,_emscripten_bind_btHingeConstraint__serialize_p2:yr,_emscripten_bind_btBoxShape__getNumEdges_p0:af2,_emscripten_bind_btRotationalLimitMotor__set_m_stopCFM_p1:yQ,_emscripten_bind_btContactConstraint__setBreakingImpulseThreshold_p1:$U,_emscripten_bind_btDbvtBroadphase__btDbvtBroadphase_p1:tL,_emscripten_bind_btDbvtBroadphase__btDbvtBroadphase_p0:tK,_emscripten_bind_btConcaveShape__isConcave_p0:ako,_emscripten_bind_btHingeConstraint__getInfo2_p1:xS,_emscripten_bind_btSimpleDynamicsWorld__getNumConstraints_p0:N9,_emscripten_bind_btMatrix3x3__getRotation_p1:eb,_emscripten_bind_btConeShapeZ__isInfinite_p0:zs,_emscripten_bind_btConvexInternalAabbCachingShape__getName_p0:QF,_emscripten_bind_btCylinderShapeX__setUserPointer_p1:Km,_emscripten_bind_btConvexInternalAabbCachingShape__calculateTemporalAabb_p6:QX,_emscripten_bind_btCapsuleShapeX__isConvex_p0:ag0,_emscripten_bind_btCylinderShapeX__getUpAxis_p0:Kn,_emscripten_bind_btDynamicsWorld__getDebugDrawer_p0:lY,_emscripten_bind_btMultiSphereShape__localGetSupportingVertex_p1:O$,_emscripten_bind_btHingeConstraint__setUserConstraintPtr_p1:x_,_emscripten_bind_btSimpleDynamicsWorld__setDebugDrawer_p1:Ov,_emscripten_bind_btConvexInternalShape__getAngularMotionDisc_p0:UD,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionObject_p0:J$,_emscripten_bind_btConvexInternalShape__isCompound_p0:Ti,_emscripten_bind_btBvhTriangleMeshShape__calculateLocalInertia_p2:YR,_emscripten_bind_btHinge2Constraint__getAngularLowerLimit_p1:Iu,_emscripten_bind_btGeneric6DofSpringConstraint__setStiffness_p2:aew,_emscripten_bind_btRaycastVehicle__getUserConstraintType_p0:JJ,_emscripten_bind_btTriangleMesh__setPremadeAabb_p2:A3,_emscripten_bind_btCollisionObject__checkCollideWith_p1:h1,_emscripten_bind_btGeneric6DofSpringConstraint____destroy___p0:aeZ,_emscripten_bind_btCapsuleShapeZ__getAngularMotionDisc_p0:ajq,_emscripten_bind_btConstraintSetting__set_m_tau_p1:mp,_emscripten_bind_btHinge2Constraint__needsFeedback_p0:IV,_emscripten_bind_btRigidBody__setCompanionId_p1:pS,_emscripten_bind_btDiscreteDynamicsWorld__updateAabbs_p0:wa,_emscripten_bind_btOptimizedBvh__build_p4:rz,_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportingVertex_p1:Qy,_emscripten_bind_btConeShapeX__isConvex_p0:Ai,_emscripten_bind_btRigidBody__getTotalTorque_p0:oF,_emscripten_bind_btCollisionDispatcher__getNumManifolds_p0:uC,_emscripten_bind_btHingeConstraint__setParam_p3:yp,_emscripten_bind_btCapsuleShape__getNumPreferredPenetrationDirections_p0:ft,_emscripten_bind_btTriangleIndexVertexArray__unLockReadOnlyVertexBase_p1:afQ,_emscripten_bind_btSliderConstraint__setLowerAngLimit_p1:$I,_emscripten_bind_btHashPtr__getHash_p0:TY,_emscripten_bind_btPolyhedralConvexShape__getNumPreferredPenetrationDirections_p0:r3,_emscripten_bind_btIndexedMesh__btIndexedMesh_p0:hW,_emscripten_bind_btConvexHullShape__localGetSupportVertexNonVirtual_p1:go,_emscripten_bind_btCapsuleShapeZ__getShapeType_p0:aiN,_emscripten_bind_btPoint2PointConstraint__setEnabled_p1:aaZ,_emscripten_bind_btTranslationalLimitMotor__set_m_normalCFM_p1:Tv,_emscripten_bind_btCapsuleShape__isNonMoving_p0:fe,_emscripten_bind_btIDebugDraw__drawSphere_p3:tv,_emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateLocalInertia_p2:agt,_emscripten_bind_btCollisionWorld__getCollisionObjectArray_p0:Si,_emscripten_bind_btRaycastVehicle__getWheelTransformWS_p1:Jp,_emscripten_bind_btBU_Simplex1to4__getNonvirtualAabb_p4:FF,_emscripten_bind_btGeneric6DofSpringConstraint__getFrameOffsetA_p0:adl,_emscripten_bind_btCylinderShape__isCompound_p0:L6,_emscripten_bind_btSliderConstraint__internalGetAppliedImpulse_p0:$m,_emscripten_bind_btCylinderShapeX__setLocalScaling_p1:K6,_emscripten_bind_btConvexInternalShape__setLocalScaling_p1:TK,_emscripten_bind_btHingeConstraint__getAFrame_p0:yH,_emscripten_bind_btPairCachingGhostObject__isStaticOrKinematicObject_p0:Va,_emscripten_bind_btRigidBody__btRigidBody_p4:pC,_emscripten_bind_btPairCachingGhostObject__removeOverlappingObjectInternal_p2:UI,_emscripten_bind_btPairCachingGhostObject__removeOverlappingObjectInternal_p3:UJ,_emscripten_bind_bt32BitAxisSweep3__updateHandle_p4:alK,_emscripten_bind_btDbvtBroadphase__get_m_deferedcollide_p0:sj,_emscripten_bind_btSimpleBroadphaseProxy__set_m_multiSapParentProxy_p1:t2,_emscripten_bind_btWheelInfo__set_m_deltaRotation_p1:D3,_emscripten_bind_bt32BitAxisSweep3__addHandle_p7:alg,_emscripten_bind_btBU_Simplex1to4__getAabbNonVirtual_p3:EX,_emscripten_bind_btRaycastVehicle__btRaycastVehicle_p3:Kk,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__hasHit_p0:Ht,_emscripten_bind_btBvhTriangleMeshShape__getOptimizedBvh_p0:Y8,_emscripten_bind_btUniversalConstraint__getUserConstraintPtr_p0:n1,_emscripten_bind_btTypedConstraint__buildJacobian_p0:rN,_emscripten_bind_btCollisionWorld__ContactResultCallback__set_m_collisionFilterMask_p1:jn,_emscripten_bind_btStaticPlaneShape__setUserPointer_p1:Vf,_emscripten_bind_btVector4__y_p0:Gi,_emscripten_bind_btHinge2Constraint__getUserConstraintType_p0:IZ,_emscripten_bind_btCapsuleShape__setMargin_p1:fF,_emscripten_bind_btRigidBody__getInterpolationLinearVelocity_p0:op,_emscripten_bind_btPoint2PointConstraint__set_m_objectType_p1:aaY,_emscripten_bind_btGeneric6DofSpringConstraint__get_m_objectType_p0:adq,_emscripten_bind_btConeShapeZ__calculateLocalInertia_p2:zI,_emscripten_bind_btConvexHullShape__getAabbSlow_p3:hQ,_emscripten_bind_btConeTwistConstraint__getInfo1NonVirtual_p1:w1,_emscripten_bind_btIndexedMesh__set_m_vertexStride_p1:gX,_emscripten_bind_btCollisionWorld__updateAabbs_p0:SM,_emscripten_bind_btGeneric6DofConstraint__setLinearLowerLimit_p1:Xa,_emscripten_bind_btDbvtBroadphase__printStats_p0:tF,_emscripten_bind_btPersistentManifold__getBody0_p0:j5,_emscripten_bind_btConeShape__getShapeType_p0:DI,_emscripten_bind_btEmptyShape__isNonMoving_p0:oh,_emscripten_bind_btQuadWord__setW_p1:L_,_emscripten_bind_btSimpleBroadphaseProxy__get_m_collisionFilterGroup_p0:ue,_emscripten_bind_btHinge2Constraint__getFrameOffsetB_p0:II,_emscripten_bind_btAxisSweep3__setOverlappingPairUserCallback_p1:uS,_emscripten_bind_btAxisSweep3__aabbTest_p3:vi,_emscripten_bind_btDefaultVehicleRaycaster__btDefaultVehicleRaycaster_p1:ne,_emscripten_bind_btSliderConstraint__setSoftnessDirAng_p1:_2,_emscripten_bind_btGhostObject__serializeSingleObject_p1:aku,_emscripten_bind_btCylinderShapeZ__getHalfExtentsWithMargin_p0:adw,_emscripten_bind_btGhostObject__setRestitution_p1:akb,_emscripten_bind_btContactConstraint__getRigidBodyA_p0:$F,_emscripten_bind_btContinuousDynamicsWorld__updateAabbs_p0:CS,_emscripten_bind_btConcaveShape__isNonMoving_p0:akl,_emscripten_bind_btSimpleDynamicsWorld__getDispatcher_p0:Nw,_emscripten_bind_btCapsuleShapeX__getMarginNV_p0:ag$,_emscripten_bind_btPersistentManifold__get_m_companionIdA_p0:ka,_emscripten_bind_btWheelInfo__set_m_wheelsDampingCompression_p1:D2,_emscripten_bind_btWheelInfo__updateWheel_p2:DP,_emscripten_bind_btDynamicsWorld__addConstraint_p2:me,_emscripten_bind_btDynamicsWorld__addConstraint_p1:md,_emscripten_bind_btRigidBody__getTurnVelocity_p0:os,_emscripten_bind_btTypedConstraint__setUserConstraintId_p1:q8,_emscripten_bind_btBU_Simplex1to4__getNumPlanes_p0:EN,_emscripten_bind_btCylinderShape__getUpAxis_p0:L8,_emscripten_bind_btManifoldPoint__set_m_contactMotion1_p1:aaN,_emscripten_bind_btDbvtBroadphase__getAabb_p3:tD,_emscripten_bind_btSphereShape__getContactBreakingThreshold_p1:amc,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback____destroy___p0:adB,_emscripten_bind_btBroadphaseInterface__printStats_p0:i6,_emscripten_bind_btHashInt__setUid1_p1:R9,_emscripten_bind_btConvexInternalAabbCachingShape__getNumPreferredPenetrationDirections_p0:QB,_emscripten_bind_btRigidBody__setCollisionFlags_p1:qs,_emscripten_bind_btGhostObject__hasContactResponse_p0:aj$,_emscripten_bind_btDefaultVehicleRaycaster__castRay_p3:m$,_emscripten_bind_btSliderConstraint__getUseFrameOffset_p0:Z1,_emscripten_bind_btCollisionObject__getIslandTag_p0:g8,_emscripten_bind_btCollisionShape__calculateTemporalAabb_p6:Wp,_emscripten_bind_btTranslationalLimitMotor____destroy___p0:Tu,_emscripten_bind_btConcaveShape__isConvex_p0:aki,_emscripten_bind_btRotationalLimitMotor__set_m_stopERP_p1:yP,_emscripten_bind_btIDebugDraw__drawCone_p5:td,_emscripten_bind_btSphereShape__isNonMoving_p0:alB,_emscripten_bind_btDispatcher__freeCollisionAlgorithm_p1:RK,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getLocalScaling_p0:agy,_emscripten_bind_btCylinderShape__getContactBreakingThreshold_p1:MG,_emscripten_bind_btRigidBody__setInterpolationAngularVelocity_p1:qK,_emscripten_bind_btHeightfieldTerrainShape__isSoftBody_p0:PX,_emscripten_bind_btBoxShape__getAabbNonVirtual_p3:af0,_emscripten_bind_btOptimizedBvh__reportBoxCastOverlappingNodex_p5:rL,_emscripten_bind_btCollisionShape__getAabb_p3:Wl,_emscripten_bind_btCapsuleShape____destroy___p0:fI,_emscripten_bind_btDynamicsWorld__removeRigidBody_p1:l5,_emscripten_bind_btHashInt__equals_p1:Sa,_emscripten_bind_btCapsuleShape__isCompound_p0:e3,_emscripten_bind_btTransform__setIdentity_p0:X0,_emscripten_bind_btRigidBody__getCollisionFlags_p0:ow,_emscripten_bind_btRigidBody__getRootCollisionShape_p0:oA,_emscripten_bind_btBU_Simplex1to4__localGetSupportingVertexWithoutMargin_p1:Fv,_emscripten_bind_btCylinderShapeX__getContactBreakingThreshold_p1:K9,_emscripten_bind_btRigidBody__setLinearVelocity_p1:qO,_emscripten_bind_btTransform__getBasis_p0:XM,_emscripten_bind_btMatrix3x3__setEulerZYX_p3:ex,_emscripten_bind_btDbvtBroadphase__get_m_needcleanup_p0:sJ,_emscripten_bind_btTriangleMesh__preallocateVertices_p1:AU,_emscripten_bind_btManifoldPoint__set_m_index0_p1:aaA,_emscripten_bind_btSimpleDynamicsWorld__getSolverInfo_p0:Nv,_emscripten_bind_btUniformScalingShape__calculateSerializeBufferSize_p0:Lw,_emscripten_bind_btDbvtProxy__set_m_aabbMin_p1:NN,_emscripten_bind_btRigidBody__getInvInertiaDiagLocal_p0:qn,_emscripten_bind_btVector3__distance2_p1:GC,_emscripten_bind_btCylinderShapeZ__getMarginNonVirtual_p0:acM,_emscripten_bind_btBU_Simplex1to4__getLocalScaling_p0:ES,_emscripten_bind_btSliderConstraint__setRestitutionDirAng_p1:Z3,_emscripten_bind_btBvhTriangleMeshShape__buildOptimizedBvh_p0:ZC,_emscripten_bind_btConeShapeX__getBoundingSphere_p2:AN,_emscripten_bind_bt32BitAxisSweep3__testAabbOverlap_p2:aln,_emscripten_bind_btContinuousDynamicsWorld__performDiscreteCollisionDetection_p0:CR,_emscripten_bind_btSimpleBroadphaseProxy__set_m_aabbMin_p1:us,_emscripten_bind_btAngularLimit__set_p5:jv,_emscripten_bind_btAngularLimit__set_p4:ju,_emscripten_bind_btAngularLimit__set_p3:jt,_emscripten_bind_btAngularLimit__set_p2:js,_emscripten_bind_btBroadphaseProxy__isConvex2d_p1:ad3,_emscripten_bind_btQuantizedBvh__setTraversalMode_p1:amr,_emscripten_bind_btRotationalLimitMotor__get_m_maxLimitForce_p0:y8,_emscripten_bind_btCollisionWorld____destroy___p0:ST,_emscripten_bind_btTriangleIndexVertexArray__serialize_p2:afi,_emscripten_bind_btEmptyShape__isConvex2d_p0:oi,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_closestHitFraction_p0:JS,_emscripten_bind_btCompoundShape__calculateTemporalAabb_p6:la,_emscripten_bind_btClock__getTimeMilliseconds_p0:XA,_emscripten_bind_btGeneric6DofConstraint__getConstraintType_p0:WF,_emscripten_bind_btRigidBody__getBroadphaseProxy_p0:p0,_emscripten_bind_bt32BitAxisSweep3__setOverlappingPairUserCallback_p1:alo,_emscripten_bind_btPairCachingGhostObject__getBroadphaseHandle_p0:Um,_emscripten_bind_btRigidBody__clearForces_p0:o1,_emscripten_bind_btRigidBody__getCollisionShape_p0:p1,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalDampingFactor_p1:Yq,_emscripten_bind_btPolyhedralConvexShape__isNonMoving_p0:sb,_emscripten_bind_btGeneric6DofSpringConstraint__getFrameOffsetB_p0:adn,_emscripten_bind_btSliderConstraint__getDampingDirAng_p0:_z,_emscripten_bind_btBroadphaseInterface__calculateOverlappingPairs_p1:i5,_emscripten_bind_btConvexInternalAabbCachingShape__getBoundingSphere_p2:QT,_emscripten_bind_btCollisionWorld__ContactResultCallback__addSingleResult_p7:jF,_emscripten_bind_btUniversalConstraint____destroy___p0:nK,_emscripten_bind_btCylinderShapeZ__setUserPointer_p1:ab8,_emscripten_bind_btHingeConstraint__getUserConstraintId_p0:yi,_emscripten_bind_btHingeConstraint__getFrameOffsetB_p0:xA,_emscripten_bind_btHingeConstraint__setBreakingImpulseThreshold_p1:ye,_emscripten_bind_btPoint2PointConstraint__needsFeedback_p0:abW,_emscripten_bind_btUniformScalingShape__getAabbSlow_p3:Ml,_emscripten_bind_btSphereShape__getUserPointer_p0:alA,_emscripten_bind_btRaycastVehicle__updateSuspension_p1:Jm,_emscripten_bind_btCylinderShapeX__getShapeType_p0:KA,_emscripten_bind_btSliderConstraint__getUpperAngLimit_p0:_h,_emscripten_bind_btManifoldResult__addContactPoint_p3:OW,_emscripten_bind_bt32BitAxisSweep3__rayTest_p5:alG,_emscripten_bind_bt32BitAxisSweep3__rayTest_p4:alF,_emscripten_bind_btHingeConstraint__getLimitSign_p0:xE,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getVertex_p2:agA,_emscripten_bind_btConvexTriangleMeshShape__getAngularMotionDisc_p0:iT,_emscripten_bind_btWheelInfo__btWheelInfo_p1:E7,_emscripten_bind_btMultiSphereShape__isConcave_p0:Pg,_emscripten_bind_btWheelInfo__get_m_wheelsSuspensionForce_p0:Ee,_emscripten_bind_btTriangleMesh__getIndexedMeshArray_p0:Ay,_emscripten_bind_btCapsuleShape__getName_p0:fw,_emscripten_bind_btCapsuleShape__getLocalScalingNV_p0:e9,_emscripten_bind_btMatrix3x3__getEulerYPR_p3:fm,_emscripten_bind_btRaycastVehicle__setUserConstraintId_p1:Jz,_emscripten_bind_btHinge2Constraint__getUserConstraintPtr_p0:I0,_emscripten_bind_btDiscreteDynamicsWorld__getCollisionWorld_p0:vr,_emscripten_bind_btWheelInfo__get_m_worldTransform_p0:DS,_emscripten_bind_btGeneric6DofConstraint__getCalculatedTransformB_p0:WR,_emscripten_bind_btHinge2Constraint__getBreakingImpulseThreshold_p0:HO,_emscripten_bind_btPersistentManifold__getContactBreakingThreshold_p0:j3,_emscripten_bind_btManifoldPoint__get_m_appliedImpulseLateral2_p0:aax,_emscripten_bind_btBoxShape__getNumPreferredPenetrationDirections_p0:afX,_emscripten_bind_btCompoundShape__getAngularMotionDisc_p0:k8,_emscripten_bind_btDbvtBroadphase__set_m_updates_call_p1:sv,_emscripten_bind_btRaycastVehicle__updateWheelTransform_p2:J3,_emscripten_bind_btSliderConstraint__setUpperLinLimit_p1:_3,_emscripten_bind_btCollisionWorld__rayTestSingle_p6:SS,_emscripten_bind_btSliderConstraint__get_m_objectType_p0:_e,_emscripten_bind_btMatrix3x3__serializeFloat_p1:d4,_emscripten_bind_btSliderConstraint__getLowerAngLimit_p0:_s,_emscripten_bind_btSimpleBroadphaseProxy__get_m_uniqueId_p0:ua,_emscripten_bind_btConeShapeZ__isNonMoving_p0:zu,_emscripten_bind_btSliderConstraint__btSliderConstraint_p3:$N,_emscripten_bind_btConeTwistConstraint__getTwistSpan_p0:xt,_emscripten_bind_btRigidBody__set_m_frictionSolverType_p1:oq,_emscripten_bind_btConvexHullShape__calculateLocalInertia_p2:f2,_emscripten_bind_btCollisionDispatcher__findAlgorithm_p2:uw,_emscripten_bind_btCollisionDispatcher__findAlgorithm_p3:ux,_emscripten_bind_btEmptyShape__setUserPointer_p1:ob,_emscripten_bind_btConcaveShape__calculateSerializeBufferSize_p0:akF,_emscripten_bind_btConcaveShape__getContactBreakingThreshold_p1:akJ,_emscripten_bind_btDynamicsWorld__stepSimulation_p3:mR,_emscripten_bind_btDynamicsWorld__stepSimulation_p2:mQ,_emscripten_bind_btDynamicsWorld__stepSimulation_p1:mP,_emscripten_bind_btDiscreteDynamicsWorld__setWorldUserInfo_p1:vB,_emscripten_bind_btSliderConstraint__getRestitutionLimLin_p0:_A,_emscripten_bind_btOptimizedBvh__serializeInPlace_p3:rJ,_emscripten_bind_btBoxShape__getLocalScalingNV_p0:afo,_emscripten_bind_btContactConstraint__setUserConstraintPtr_p1:$9,_emscripten_bind_btUniversalConstraint__getTranslationalLimitMotor_p0:nU,_emscripten_bind_btHingeConstraint__getUserConstraintType_p0:yk,_emscripten_bind_btDbvtBroadphase__getOverlappingPairCache_p0:tJ,_emscripten_bind_btBoxShape__localGetSupportVertexNonVirtual_p1:af$,_emscripten_bind_btHeightfieldTerrainShape__btHeightfieldTerrainShape_p9:PN,_emscripten_bind_btSliderConstraint__getCalculatedTransformB_p0:_c,_emscripten_bind_btIDebugDraw__drawArc_p10:tg,_emscripten_bind_btEmptyShape__getMargin_p0:oT,_emscripten_bind_btCollisionDispatcher__freeCollisionAlgorithm_p1:uv,_emscripten_bind_btHinge2Constraint__internalSetAppliedImpulse_p1:IO,_emscripten_bind_btCapsuleShapeZ__isCompound_p0:aix,_emscripten_bind_btContinuousDynamicsWorld__internalSingleStepSimulation_p1:Cc,_emscripten_bind_btTranslationalLimitMotor__set_m_restitution_p1:S5,_emscripten_bind_btUniversalConstraint__setEnabled_p1:mz,_emscripten_bind_btBoxShape__getAabbSlow_p3:agl,_emscripten_bind_btOverlappingPairCallback__addOverlappingPair_p2:Sx,_emscripten_bind_btVector4__setW_p1:Gg,_emscripten_bind_btVector4__setZero_p0:Gd,_emscripten_bind_btRigidBody__getDeltaAngularVelocity_p0:p8,_emscripten_bind_btConeShape__getAabbNonVirtual_p3:Dy,_emscripten_bind_btBroadphasePair____destroy___p0:BP,_emscripten_bind_btConeShapeZ__getAabbSlow_p3:z5,_emscripten_bind_btHeightfieldTerrainShape__calculateSerializeBufferSize_p0:Ql,_emscripten_bind_btDispatcher__dispatchAllCollisionPairs_p3:RQ,_emscripten_bind_btConvexInternalShape__isConvex_p0:Tn,_emscripten_bind_btConeTwistConstraint__enableMotor_p1:w$,_emscripten_bind_btCollisionAlgorithmConstructionInfo__btCollisionAlgorithmConstructionInfo_p2:vo,_emscripten_bind_btDiscreteDynamicsWorld__clearForces_p0:vZ,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_convexToWorld_p1:adF,_emscripten_bind_btCylinderShape__getAabbNonVirtual_p3:My,_emscripten_bind_btHingeConstraint__getParam_p1:yt,_emscripten_bind_btHingeConstraint__getParam_p2:yu,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalAngularDampingFactor_p0:Yc,_emscripten_bind_btConeShapeZ__getLocalScalingNV_p0:zp,_emscripten_bind_btPoint2PointConstraint__get_m_objectType_p0:aa0,_emscripten_bind_btConeTwistConstraint__serialize_p2:xh,_emscripten_bind_btSliderConstraint__setDbgDrawSize_p1:_K,_emscripten_bind_btOptimizedBvh__unQuantize_p1:rK,_emscripten_bind_btGeneric6DofSpringConstraint__calcAnchorPos_p0:adT,_emscripten_bind_btCapsuleShapeZ__getName_p0:aja,_emscripten_bind_btCapsuleShape__getAabbSlow_p3:fN,_emscripten_bind_btSimpleBroadphaseProxy__get_m_collisionFilterMask_p0:t4,_emscripten_bind_btAxisSweep3__removeHandle_p2:u2,_emscripten_bind_btCylinderShape__calculateSerializeBufferSize_p0:Mz,_emscripten_bind_btCollisionShape__getMargin_p0:Wn,_emscripten_bind_btIndexedMesh__get_m_numTriangles_p0:gQ,_emscripten_bind_btConeTwistConstraint__setMaxMotorImpulseNormalized_p1:wU,_emscripten_bind_btRigidBody__getConstraintRef_p1:qa,_emscripten_bind_btConvexInternalShape__serializeSingleShape_p1:UE,_emscripten_bind_btBU_Simplex1to4__getPreferredPenetrationDirection_p2:Fs,_emscripten_bind_btConvexHullShape__isCompound_p0:gD,_emscripten_bind_btPolyhedralConvexShape__getLocalScaling_p0:r2,_emscripten_bind_btTriangleInfo__set_m_edgeV0V1Angle_p1:Hd,_emscripten_bind_btJacobianEntry__set_m_linearJointAxis_p1:RV,_emscripten_bind_btUniformScalingShape__serialize_p2:Lr,_emscripten_bind_btDispatcherInfo__set_m_dispatchFunc_p1:e$,_emscripten_bind_btJacobianEntry____destroy___p0:RU,_emscripten_bind_btDiscreteDynamicsWorld__synchronizeSingleMotionState_p1:wx,_emscripten_bind_btBvhTriangleMeshShape__isSoftBody_p0:Zf,_emscripten_bind_btCollisionShape__getShapeType_p0:VC,_emscripten_bind_btDiscreteDynamicsWorld__getSynchronizeAllMotionStates_p0:vt,_emscripten_bind_btBU_Simplex1to4__getEdge_p3:E$,_emscripten_bind_btPairCachingGhostObject__setCollisionFlags_p1:U9,_emscripten_bind_btCollisionWorld__RayResultCallback__hasHit_p0:KH,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_angularDamping_p0:XW,_emscripten_bind_btQuaternion__setValue_p4:ah5,_emscripten_bind_btCollisionShape__serializeSingleShape_p1:Ws,_emscripten_bind_btRigidBody__set_m_contactSolverType_p1:qm,_emscripten_bind_btContactConstraint__needsFeedback_p0:$_,_emscripten_bind_btAngularLimit__fit_p1:jq,_emscripten_bind_btSimpleDynamicsWorld__getPairCache_p0:OQ,_emscripten_bind_btDispatcher__clearManifold_p1:RJ,_emscripten_bind_btBU_Simplex1to4__setLocalScaling_p1:E2,_emscripten_bind_btDbvtProxy__set_leaf_p1:Nk,_emscripten_bind_btSimpleBroadphaseProxy__isConcave_p1:tT,_emscripten_bind_btWheelInfo__get_m_wheelsRadius_p0:DK,_emscripten_bind_btCompoundShape__getName_p0:kX,_emscripten_bind_btCollisionObject__getCollisionShape_p0:hk,_emscripten_bind_btCollisionShape__calculateSerializeBufferSize_p0:Wi,_emscripten_bind_btBvhTriangleMeshShape__recalcLocalAabb_p0:ZE,_emscripten_bind_btDynamicsWorld__debugDrawWorld_p0:mJ,_emscripten_bind_btWheelInfo__set_m_suspensionRestLength1_p1:Ef,_emscripten_bind_btSliderConstraint__calculateSerializeBufferSize_p0:$H,_emscripten_bind_btWheelInfo__set_m_rotation_p1:Em,_emscripten_bind_btDbvtBroadphase__benchmark_p1:r4,_emscripten_bind_btHinge2Constraint__serialize_p2:Ij,_emscripten_bind_btDefaultCollisionConfiguration____destroy___p0:jz,_emscripten_bind_btPolyhedralConvexShape__isPolyhedral_p0:rp,_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_flags_p1:KG,_emscripten_bind_btConeTwistConstraint__setLimit_p6:xe,_emscripten_bind_btTypedConstraint__enableFeedback_p1:q3,_emscripten_bind_btConeTwistConstraint__setLimit_p4:xc,_emscripten_bind_btConeTwistConstraint__setLimit_p5:xd,_emscripten_bind_btConeTwistConstraint__setLimit_p2:xa,_emscripten_bind_btConeTwistConstraint__setLimit_p3:xb,_emscripten_bind_btMultiSphereShape__getAabb_p3:Ps,_emscripten_bind_btMultiSphereShape__calculateSerializeBufferSize_p0:Pn,_emscripten_bind_btPoint2PointConstraint__setUserConstraintPtr_p1:ab6,_emscripten_bind_btAxisSweep3__destroyProxy_p2:vk,_emscripten_bind_btManifoldPoint__set_m_partId1_p1:aau,_emscripten_bind_btOptimizedBvh__deSerializeInPlace_p3:rB,_emscripten_bind_btConvexHullShape__btConvexHullShape_p3:gj,_emscripten_bind_btConvexHullShape__btConvexHullShape_p2:gi,_emscripten_bind_btConvexHullShape__btConvexHullShape_p1:gh,_emscripten_bind_btConvexHullShape__btConvexHullShape_p0:gg,_emscripten_bind_btHashString__btHashString_p1:am7,_emscripten_bind_btVector3__length2_p0:G2,_emscripten_bind_btPolyhedralConvexShape__getPreferredPenetrationDirection_p2:s_,_emscripten_bind_btScaledBvhTriangleMeshShape__getLocalScaling_p0:lD,_emscripten_bind_btPairCachingGhostObject__getHitFraction_p0:Uh,_emscripten_bind_btGhostObject__getOverlappingObject_p1:ajN,_emscripten_bind_btHinge2Constraint__getInfo2NonVirtual_p7:Ji,_emscripten_bind_btDbvtProxy__get_leaf_p0:Na,_emscripten_bind_btContinuousDynamicsWorld__convexSweepTest_p5:CX,_emscripten_bind_btContinuousDynamicsWorld__convexSweepTest_p4:CW,_emscripten_bind_btConeShapeZ__getNumPreferredPenetrationDirections_p0:zM,_emscripten_bind_btRigidBody__getWorldTransform_p0:p$,_emscripten_bind_btQuantizedBvh__calculateSerializeBufferSize_p0:amw,_emscripten_bind_btQuantizedBvh__deSerializeDouble_p1:amV,_emscripten_bind_btRigidBody__getCcdMotionThreshold_p0:pV,_emscripten_bind_btStridingMeshInterface__preallocateVertices_p1:abs,_emscripten_bind_btConvexTriangleMeshShape__getShapeType_p0:is,_emscripten_bind_btSerializer__registerNameForPointer_p2:H4,_emscripten_bind_btManifoldPoint__get_m_normalWorldOnB_p0:aah,_emscripten_bind_btStaticPlaneShape__isConvex_p0:Vj,_emscripten_bind_btGeneric6DofSpringConstraint__setEnabled_p1:adk,_emscripten_bind_btConeShapeX__calculateLocalInertia_p2:z7,_emscripten_bind_btHingeConstraint__getObjectType_p0:x3,_emscripten_bind_btBU_Simplex1to4__getUserPointer_p0:Ez,_emscripten_bind_btCylinderShapeX__btCylinderShapeX_p1:Li,_emscripten_bind_btRigidBody__getRestitution_p0:qy,_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitPointLocal_p1:alf,_emscripten_bind_btTriangleIndexVertexArray__getPremadeAabb_p2:afI,_emscripten_bind_btHingeConstraint__getConstraintType_p0:xY,_emscripten_bind_btRigidBody__getFlags_p0:qf,_emscripten_bind_btConvexHullShape__setLocalScaling_p1:gm,_emscripten_bind_btConeTwistConstraint__getRigidBodyB_p0:vH,_emscripten_bind_btDbvtBroadphase__get_m_releasepaircache_p0:sn,_emscripten_bind_btScaledBvhTriangleMeshShape__isConvex2d_p0:lm,_emscripten_bind_btDynamicsWorld__clearForces_p0:lW,_emscripten_bind_btConvexSeparatingDistanceUtil__btConvexSeparatingDistanceUtil_p2:adX,_emscripten_bind_btGeneric6DofConstraint__needsFeedback_p0:WI,_emscripten_bind_btConstraintSetting__set_m_impulseClamp_p1:mm,_emscripten_bind_btRigidBody__computeImpulseDenominator_p2:oH,_emscripten_bind_btDbvtBroadphase__set_m_prediction_p1:tU,_emscripten_bind_btSerializer__getBufferPointer_p0:H$,_emscripten_bind_btSerializer__startSerialization_p0:HX,_emscripten_bind_btPolyhedralConvexShape__getAabb_p3:sW,_emscripten_bind_btPairCachingGhostObject__forceActivationState_p1:Ub,_emscripten_bind_btConvexInternalAabbCachingShape__isSoftBody_p0:P8,_emscripten_bind_btConvexTriangleMeshShape__getEdge_p3:iC,_emscripten_bind_btBoxShape__getUserPointer_p0:aft,_emscripten_bind_btHinge2Constraint__setEnabled_p1:HG,_emscripten_bind_btScaledBvhTriangleMeshShape__calculateSerializeBufferSize_p0:lF,_emscripten_bind_btRigidBody__getAabb_p2:qD,_emscripten_bind_btUniversalConstraint__testAngularLimitMotor_p1:oJ,_emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_collisionFilterGroup_p1:Bv,_emscripten_bind_btConeTwistConstraint__setupSolverConstraint_p4:xF,_emscripten_bind_btSequentialImpulseConstraintSolver__setRandSeed_p1:Nt,_emscripten_bind_btRotationalLimitMotor__set_m_currentPosition_p1:yM,_emscripten_bind_btRigidBody__getVelocityInLocalPoint_p1:qC,_emscripten_bind_btDiscreteDynamicsWorld__performDiscreteCollisionDetection_p0:v9,_emscripten_bind_btConvexHullShape__recalcLocalAabb_p0:gt,_emscripten_bind_btSliderConstraint__getRestitutionLimAng_p0:_i,_emscripten_bind_btPoint2PointConstraint__setParam_p2:abF,_emscripten_bind_btPoint2PointConstraint__setParam_p3:abG,_emscripten_bind_btSerializer__findPointer_p1:H3,_emscripten_bind_btTriangleInfo__get_m_edgeV1V2Angle_p0:Ha,_emscripten_bind_btPairCachingGhostObject__setInterpolationWorldTransform_p1:UN,_emscripten_bind_btCapsuleShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:fJ,_emscripten_bind_btRigidBody__setDeactivationTime_p1:qb,_emscripten_bind_btConeTwistConstraint__getFixThresh_p0:w5,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__ClosestConvexResultCallback_p2:adW,_emscripten_bind_btConeShape__setUserPointer_p1:CE,_emscripten_bind_btConeTwistConstraint__btConeTwistConstraint_p2:wO,_emscripten_bind_btDefaultMotionState__set_m_startWorldTrans_p1:BZ,_emscripten_bind_btCollisionAlgorithmCreateFunc__set_m_swapped_p1:Se,_emscripten_bind_btConeTwistConstraint__btConeTwistConstraint_p4:xk,_emscripten_bind_btTypedConstraint__getRigidBodyB_p0:q0,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabbNonVirtual_p3:agC,_emscripten_bind_btCollisionDispatcher__getInternalManifoldPool_p0:uK,_emscripten_bind_btGhostObject__getInternalType_p0:aj_,_emscripten_bind_btConvexHullShape__getNumPlanes_p0:f3,_emscripten_bind_btDynamicsWorld__getConstraint_p1:mN,_emscripten_bind_btConvexShape__setMargin_p1:Rb,_emscripten_bind_btSimpleBroadphaseProxy__isConvex2d_p1:tR,_emscripten_bind_btGeneric6DofConstraint__getAxis_p1:W7,_emscripten_bind_btConvexTriangleMeshShape__setLocalScaling_p1:iF,_emscripten_bind_btOverlappingPairCache__setInternalGhostPairCallback_p1:V2,_emscripten_bind_btVector4____destroy___p0:F9,_emscripten_bind_btVector3__z_p0:G8,_emscripten_bind_btGhostObject__setIslandTag_p1:ajJ,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo____destroy___p0:YI,_emscripten_bind_btGhostPairCallback__removeOverlappingPair_p3:am2,_emscripten_bind_btCollisionWorld__getForceUpdateAllAabbs_p0:Sj,_emscripten_bind_btScaledBvhTriangleMeshShape__serialize_p2:lC,_emscripten_bind_btSliderConstraint__getAngDepth_p0:Zk,_emscripten_bind_btCylinderShape__getMarginNV_p0:Mb,_emscripten_bind_btEmptyShape__isConcave_p0:ok,_emscripten_bind_btTypedObject____destroy___p0:hU,_emscripten_bind_btConeTwistConstraint__internalGetAppliedImpulse_p0:w8,_emscripten_bind_btPairCachingGhostObject__setIslandTag_p1:Ue,_emscripten_bind_btCollisionObject__setContactProcessingThreshold_p1:g$,_emscripten_bind_btPolyhedralConvexShape__isInside_p2:r0,_emscripten_bind_btPolyhedralConvexShape__getMarginNV_p0:r6,_emscripten_bind_btConvexTriangleMeshShape__initializePolyhedralFeatures_p0:i_,_emscripten_bind_btSphereSphereCollisionAlgorithm____destroy___p0:jK,_emscripten_bind_btDbvtProxy__get_m_clientObject_p0:M6,_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionObject_p1:KK,_emscripten_bind_btCylinderShapeZ__getUpAxis_p0:ab9,_emscripten_bind_btGeneric6DofSpringConstraint__updateRHS_p1:adZ,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_flags_p0:Hq,_emscripten_bind_btCollisionWorld__ConvexResultCallback__needsCollision_p1:BV,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_flags_p1:JT,_emscripten_bind_btSliderConstraint__getLinearPos_p0:_b,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_hitPointWorld_p0:Hj,_emscripten_bind_btQuadWord__setMax_p1:LV,_emscripten_bind_btRigidBody__wantsSleeping_p0:oo,_emscripten_bind_btOptimizedBvh__deSerializeDouble_p1:rF,_emscripten_bind_btEmptyShape__setLocalScaling_p1:oQ,_emscripten_bind_btBroadphaseProxy__isInfinite_p1:ad_,_emscripten_bind_btCollisionAlgorithm__processCollision_p4:al_,_emscripten_bind_btCollisionConfiguration__getCollisionAlgorithmPool_p0:ku,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getMarginNV_p0:agN,_emscripten_bind_btBU_Simplex1to4__getNumVertices_p0:EQ,_emscripten_bind_btCylinderShapeX__getAabbNonVirtual_p3:K1,_emscripten_bind_btWheelInfo__get_m_frictionSlip_p0:DT,_emscripten_bind_btContinuousDynamicsWorld__applyGravity_p0:B6,_emscripten_bind_btStackAlloc__beginBlock_p0:mt,_emscripten_bind_btCollisionWorld__ContactResultCallback__get_m_collisionFilterGroup_p0:jp,_emscripten_bind_btQuantizedBvh__reportAabbOverlappingNodex_p3:amR,_emscripten_bind_btConeShape__isConvex2d_p0:CP,_emscripten_bind_btBroadphaseProxy__get_m_aabbMax_p0:aeG,_emscripten_bind_btHeightfieldTerrainShape__serialize_p2:PJ,_emscripten_bind_btCollisionDispatcher__getNewManifold_p2:uE,_emscripten_bind_btConeTwistConstraint__getSwingSpan2_p0:vO,_emscripten_bind_btConvexTriangleMeshShape__getBoundingSphere_p2:iS,_emscripten_bind_btUniversalConstraint__calcAnchorPos_p0:nE,_emscripten_bind_btTransform__deSerializeDouble_p1:Xu,_emscripten_bind_btCylinderShapeX__getAabbSlow_p3:Lj,_emscripten_bind_btBroadphaseInterface__getOverlappingPairCache_p0:i3,_emscripten_bind_btQuaternion__btQuaternion_p4:ajE,_emscripten_bind_btQuaternion__btQuaternion_p3:ail,_emscripten_bind_btQuaternion__btQuaternion_p2:aik,_emscripten_bind_btQuaternion__btQuaternion_p0:aij,_emscripten_bind_btHinge2Constraint__setUserConstraintId_p1:Iy,_emscripten_bind_btUniversalConstraint__needsFeedback_p0:nV,_emscripten_bind_btContinuousDynamicsWorld__removeCollisionObject_p1:Dh,_emscripten_bind_btRaycastVehicle__btVehicleTuning____destroy___p0:$L,_emscripten_bind_btBroadphaseInterface__getAabb_p3:i7,_emscripten_bind_btBroadphaseProxy__set_m_aabbMax_p1:afa,_emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p2:jl,_emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p1:jk,_emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p0:jj,_emscripten_bind_btBoxShape__getPreferredPenetrationDirection_p2:agc,_emscripten_bind_btRigidBody__getGravity_p0:oB,_emscripten_bind_btRigidBody__getAngularFactor_p0:pv,_emscripten_bind_btRotationalLimitMotor__btRotationalLimitMotor_p1:Ae,_emscripten_bind_btRotationalLimitMotor__btRotationalLimitMotor_p0:yV,_emscripten_bind_btRotationalLimitMotor__get_m_maxMotorForce_p0:zf,_emscripten_bind_btSimpleDynamicsWorld__setGravity_p1:NZ,_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_closestHitFraction_p1:KE,_emscripten_bind_btSphereShape__isConvex2d_p0:alC,_emscripten_bind_btConvexTriangleMeshShape__getAabbSlow_p3:iV,_emscripten_bind_btConeTwistConstraint__getSwingSpan1_p0:vP,_emscripten_bind_btCylinderShape__localGetSupportVertexWithoutMarginNonVirtual_p1:MB,_emscripten_bind_btConvexHullShape__getAabb_p3:gn,_emscripten_bind_btVector3__lerp_p2:GP,_emscripten_bind_btDiscreteDynamicsWorld__setGravity_p1:vm,_emscripten_bind_btPairCachingGhostObject__upcast_p1:U0,_emscripten_bind_btDispatcherInfo__set_m_allowedCcdPenetration_p1:eU,_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_customCollisionAlgorithmMaxElementSize_p0:Ro,_emscripten_bind_btHinge2Constraint__getAngularUpperLimit_p1:IX,_emscripten_bind_btHingeConstraint__setAxis_p1:yU,_emscripten_bind_btCompoundShape__serializeSingleShape_p1:k9,_emscripten_bind_btOverlappingPairCache__setOverlapFilterCallback_p1:Wc,_emscripten_bind_btConeShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:AM,_emscripten_bind_btRigidBody__internalGetAngularFactor_p0:ph,_emscripten_bind_btBvhTriangleMeshShape__localGetSupportingVertexWithoutMargin_p1:ZI,_emscripten_bind_btCylinderShape__getHalfExtentsWithMargin_p0:NH,_emscripten_bind_btConeTwistConstraint__getUserConstraintPtr_p0:w_,_emscripten_bind_btManifoldPoint__set_m_distance1_p1:aaR,_emscripten_bind_btVector3__setValue_p3:GD,_emscripten_bind_btGeneric6DofConstraint__set_m_useSolveConstraintObsolete_p1:WW,_emscripten_bind_btCapsuleShapeZ__localGetSupportVertexNonVirtual_p1:ajf,_emscripten_bind_btMatrix3x3__op_add_p1:ek,_emscripten_bind_btStaticPlaneShape__setMargin_p1:VX,_emscripten_bind_btTransform____destroy___p0:X5,_emscripten_bind_btConeTwistConstraint__getFrameOffsetB_p0:vN,_emscripten_bind_btRotationalLimitMotor__get_m_damping_p0:y9,_emscripten_bind_btCollisionWorld__getPairCache_p0:SW,_emscripten_bind_btHashInt____destroy___p0:SA,_emscripten_bind_btQuantizedBvh__getLeafNodeArray_p0:ams,_emscripten_bind_bt32BitAxisSweep3__calculateOverlappingPairs_p1:alT,_emscripten_bind_btConvexTriangleMeshShape__getNumPlanes_p0:h8,_emscripten_bind_btRigidBody__setHitFraction_p1:qS,_emscripten_bind_btJacobianEntry__get_m_0MinvJt_p0:R6,_emscripten_bind_btVector4__dot_p1:Gl,_emscripten_bind_btDbvtBroadphase__destroyProxy_p2:up,_emscripten_bind_btCollisionObject__serializeSingleObject_p1:h3,_emscripten_bind_btDispatcherInfo__get_m_timeStep_p0:eR,_emscripten_bind_btDbvtBroadphase__get_m_fupdates_p0:sy,_emscripten_bind_btTriangleMesh__btTriangleMesh_p0:A0,_emscripten_bind_btJacobianEntry__get_m_bJ_p0:RC,_emscripten_bind_btDefaultCollisionConstructionInfo__btDefaultCollisionConstructionInfo_p0:RW,_emscripten_bind_btRotationalLimitMotor____destroy___p0:zG,_emscripten_bind_btGhostObject__convexSweepTest_p4:akv,_emscripten_bind_btGhostObject__convexSweepTest_p5:akw,_emscripten_bind_btPoint2PointConstraint____destroy___p0:acr,_emscripten_bind_btHingeConstraint__getMaxMotorImpulse_p0:x$,_emscripten_bind_btCapsuleShape__getUserPointer_p0:fd,_emscripten_bind_btRigidBody__internalSetTemporaryCollisionShape_p1:pq,_emscripten_bind_btConcaveShape__calculateTemporalAabb_p6:akM,_emscripten_bind_btConvexInternalShape__localGetSupportingVertexWithoutMargin_p1:Uz,_emscripten_bind_btUniversalConstraint__internalSetAppliedImpulse_p1:nA,_emscripten_bind_btEmptyShape__getAabb_p3:oR,_emscripten_bind_btAxisSweep3__addHandle_p7:u$,_emscripten_bind_btHinge2Constraint__setParam_p2:Ih,_emscripten_bind_btHinge2Constraint__setParam_p3:Ii,_emscripten_bind_btCapsuleShapeX__setMargin_p1:ahL,_emscripten_bind_btConvexInternalShape__getAabbNonVirtual_p3:TF,_emscripten_bind_btDiscreteDynamicsWorld__getConstraint_p1:wo,_emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p5:ae7,_emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p0:ae6,_emscripten_bind_btCollisionObject__setAnisotropicFriction_p1:h4,_emscripten_bind_btQuaternion__y_p0:ait,_emscripten_bind_btSimpleDynamicsWorld__updateAabbs_p0:Ou,_emscripten_bind_btDynamicsWorld__updateAabbs_p0:l7,_emscripten_bind_btTranslationalLimitMotor__get_m_lowerLimit_p0:Ss,_emscripten_bind_btContactConstraint__getParam_p1:aa6,_emscripten_bind_btJacobianEntry__set_m_bJ_p1:Su,_emscripten_bind_btTypedConstraint__needsFeedback_p0:rc,_emscripten_bind_btConvexTriangleMeshShape__getMeshInterface_p0:hL,_emscripten_bind_btCollisionWorld__setForceUpdateAllAabbs_p1:Sm,_emscripten_bind_btBoxShape__setMargin_p1:agn,_emscripten_bind_btConeShapeZ__getAabb_p3:zU,_emscripten_bind_btRotationalLimitMotor__set_m_limitSoftness_p1:y_,_emscripten_bind_btBroadphasePair__set_m_algorithm_p1:Bq,_emscripten_bind_btVector3__distance_p1:HQ,_emscripten_bind_btConeShapeX__getAabb_p3:AD,_emscripten_bind_btStaticPlaneShape__isConvex2d_p0:Vo,_emscripten_bind_btHashPtr__btHashPtr_p1:U$,_emscripten_bind_btQuaternion__op_add_p1:ah2,_emscripten_bind_btDiscreteDynamicsWorld__contactPairTest_p3:wi,_emscripten_bind_btConvexTriangleMeshShape__getNumPreferredPenetrationDirections_p0:iZ,_emscripten_bind_btPoint2PointConstraint__internalGetAppliedImpulse_p0:ab1,_emscripten_bind_btCapsuleShape__calculateSerializeBufferSize_p0:fv,_emscripten_bind_btCylinderShapeZ__getImplicitShapeDimensions_p0:ack,_emscripten_bind_btPoint2PointConstraint__calculateSerializeBufferSize_p0:acm,_emscripten_bind_btRigidBody__calculateSerializeBufferSize_p0:qL,_emscripten_bind_btCapsuleShapeX__localGetSupportingVertex_p1:ahv,_emscripten_bind_btBroadphaseProxy__isSoftBody_p1:ad4,_emscripten_bind_btConeShape__getMarginNonVirtual_p0:DD,_emscripten_bind_btRotationalLimitMotor__get_m_stopCFM_p0:yS,_emscripten_bind_btConvexInternalAabbCachingShape__getAabb_p3:QJ,_emscripten_bind_btGhostObject__getWorldTransform_p0:ajU,_emscripten_bind_btHingeConstraint__getAppliedImpulse_p0:yG,_emscripten_bind_btGeneric6DofConstraint__setUserConstraintPtr_p1:Xq,_emscripten_bind_btCollisionWorld__LocalRayResult__LocalRayResult_p4:Is,_emscripten_bind_btUniversalConstraint__setLowerLimit_p2:n3,_emscripten_bind_btTransform__deSerializeFloat_p1:Xv,_emscripten_bind_btRotationalLimitMotor__get_m_bounce_p0:y2,_emscripten_bind_btHingeConstraint__solveConstraintObsolete_p3:ym,_emscripten_bind_btHinge2Constraint__setAxis_p2:Js,_emscripten_bind_btConeTwistConstraint__getAFrame_p0:xu,_emscripten_bind_btCylinderShapeX__getRadius_p0:K0,_emscripten_bind_btStackAlloc__allocate_p1:ms,_emscripten_bind_btDynamicsWorld__addRigidBody_p1:lU,_emscripten_bind_btCollisionWorld__ConvexResultCallback__hasHit_p0:By,_emscripten_bind_btPolyhedralConvexShape__getLocalScalingNV_p0:r5,_emscripten_bind_btConeShapeZ__localGetSupportingVertexWithoutMargin_p1:zS,_emscripten_bind_btConeShape__serializeSingleShape_p1:EE,_emscripten_bind_btConvexTriangleMeshShape__calculateSerializeBufferSize_p0:iz,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__needsCollision_p1:Kf,_emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p1:OJ,_emscripten_bind_btBoxShape__isConvex2d_p0:afB,_emscripten_bind_btMatrix3x3__setEulerYPR_p3:eE,_emscripten_bind_btRigidBody__setCollisionShape_p1:o2,_emscripten_bind_btCollisionWorld__objectQuerySingle_p8:SU,_emscripten_bind_btConcaveShape__isInfinite_p0:akj,_emscripten_bind_btHinge2Constraint__setFrames_p2:Ja,_emscripten_bind_btHingeConstraint__setLimit_p3:yw,_emscripten_bind_btHingeConstraint__setLimit_p2:yv,_emscripten_bind_btMatrix3x3__tdoty_p1:d6,_emscripten_bind_btConcaveShape__getShapeType_p0:akp,_emscripten_bind_btCollisionObject__getInterpolationLinearVelocity_p0:g5,_emscripten_bind_btHingeConstraint__setLimit_p5:yy,_emscripten_bind_btCylinderShapeZ__getMargin_p0:acJ,_emscripten_bind_btConvexInternalAabbCachingShape__setLocalScaling_p1:QI,_emscripten_bind_btPolyhedralConvexAabbCachingShape__recalcLocalAabb_p0:ahf,_emscripten_bind_btJacobianEntry__set_m_1MinvJt_p1:Sv,_emscripten_bind_btCapsuleShape__calculateLocalInertia_p2:fo,_emscripten_bind_btMultiSphereShape__serializeSingleShape_p1:PF,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalDamping_p1:XQ,_emscripten_bind_btPairCachingGhostObject__setRestitution_p1:Vb,_emscripten_bind_btDefaultMotionState__getWorldTransform_p1:BY,_emscripten_bind_btDbvtProxy__get_m_aabbMax_p0:Nf,_emscripten_bind_btVector3____destroy___p0:GR,_emscripten_bind_btConeShapeX__getRadius_p0:zF,_emscripten_bind_btStaticPlaneShape__getAngularMotionDisc_p0:V$,_emscripten_bind_bt32BitAxisSweep3__printStats_p0:alQ,_emscripten_bind_btMatrix3x3__tdotz_p1:d3,_emscripten_bind_btCapsuleShapeZ__getMarginNonVirtual_p0:ajm,_emscripten_bind_btConeTwistConstraint__calcAngleInfo_p0:xK,_emscripten_bind_btContinuousDynamicsWorld__getSynchronizeAllMotionStates_p0:BK,_emscripten_bind_btBU_Simplex1to4__calculateSerializeBufferSize_p0:EY,_emscripten_bind_btDispatcherInfo__set_m_stepCount_p1:eI,_emscripten_bind_btStridingMeshInterface__unLockReadOnlyVertexBase_p1:abD,_emscripten_bind_btRaycastVehicle__getCurrentSpeedKmHour_p0:JM,_emscripten_bind_btDiscreteDynamicsWorld__addConstraint_p2:wh,_emscripten_bind_btConvexHullShape__getShapeType_p0:gF,_emscripten_bind_btOverlappingPairCache__cleanOverlappingPair_p2:V9,_emscripten_bind_btGeneric6DofSpringConstraint__getInfo2_p1:adS,_emscripten_bind_btHingeConstraint__setupSolverConstraint_p4:yA,_emscripten_bind_btStaticPlaneShape__serializeSingleShape_p1:V0,_emscripten_bind_btBvhTriangleMeshShape__getTriangleInfoMap_p0:Y5,_emscripten_bind_CProfileNode__Return_p0:YL,_emscripten_bind_btUniversalConstraint__setupSolverConstraint_p4:n4,_emscripten_bind_btGhostObject__setWorldTransform_p1:akz,_emscripten_bind_btStaticPlaneShape__isSoftBody_p0:Vp,_emscripten_bind_btDispatcherInfo__btDispatcherInfo_p0:fP,_emscripten_bind_bt32BitAxisSweep3__createProxy_p8:alR,_emscripten_bind_btVector4__getSkewSymmetricMatrix_p3:Fg,_emscripten_bind_btCapsuleShapeZ__getMargin_p0:aji,_emscripten_bind_btGeneric6DofConstraint__calcAnchorPos_p0:W5,_emscripten_bind_btConvexInternalAabbCachingShape__getAngularMotionDisc_p0:QU,_emscripten_bind_btMultiSphereShape__localGetSupportingVertexWithoutMargin_p1:Pz,_emscripten_bind_btGhostObject__isStaticObject_p0:ajO,_emscripten_bind_btHinge2Constraint__isLimited_p1:ID,_emscripten_bind_btRaycastVehicle__addWheel_p7:J1,_emscripten_bind_btDispatcherInfo__get_m_useConvexConservativeDistanceUtil_p0:eY,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getContactBreakingThreshold_p1:ahc,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_collisionFilterGroup_p1:ac4,_emscripten_bind_btConeTwistConstraint__setDbgDrawSize_p1:w4,_emscripten_bind_btConcaveShape__setLocalScaling_p1:akH,_emscripten_bind_btGeneric6DofSpringConstraint__setUseFrameOffset_p1:aeb,_emscripten_bind_btDiscreteDynamicsWorld__removeVehicle_p1:v_,_emscripten_bind_btGhostObject__getCcdMotionThreshold_p0:ajX,_emscripten_bind_btDbvtProxy____destroy___p0:NQ,_emscripten_bind_btConvexHullShape__getAngularMotionDisc_p0:f5,_emscripten_bind_btDynamicsWorld__debugDrawObject_p3:l_,_emscripten_bind_btCylinderShapeZ__getHalfExtentsWithoutMargin_p0:ach,_emscripten_bind_btMatrix3x3__tdotx_p1:d5,_emscripten_bind_btTriangleInfo__btTriangleInfo_p0:Iq,_emscripten_bind_btWheelInfo__get_m_maxSuspensionTravelCm_p0:D9,_emscripten_bind_btDbvtBroadphase__set_m_updates_done_p1:sx,_emscripten_bind_btConvexShape__getAabb_p3:Q7,_emscripten_bind_btConeShapeX__btConeShapeX_p2:Az,_emscripten_bind_btWheelInfo__set_m_clippedInvContactDotSuspension_p1:El,_emscripten_bind_btConvexInternalShape__getNumPreferredPenetrationDirections_p0:TD,_emscripten_bind_btCompoundShape__serialize_p2:kF,_emscripten_bind_btUniversalConstraint__getAngularUpperLimit_p1:nY,_emscripten_bind_btWheelInfo__set_m_suspensionStiffness_p1:DM,_emscripten_bind_btSphereShape__getImplicitShapeDimensions_p0:amo,_emscripten_bind_btConcaveShape__setUserPointer_p1:akf,_emscripten_bind_btPolyhedralConvexShape__initializePolyhedralFeatures_p0:s0,_emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p3:Ct,_emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p2:Cs,_emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p1:Cr,_emscripten_bind_btConeTwistConstraint__setFrames_p2:xj,_emscripten_bind_btManifoldPoint__getAppliedImpulse_p0:aaT,_emscripten_bind_btUniformScalingShape__isConvex2d_p0:KU,_emscripten_bind_btDefaultMotionState__set_m_userPointer_p1:BE,_emscripten_bind_btWheelInfo__set_m_worldTransform_p1:EL,_emscripten_bind_btDynamicsWorld__getForceUpdateAllAabbs_p0:lx,_emscripten_bind_btGeneric6DofSpringConstraint__getInfo1_p1:adR,_emscripten_bind_btSimpleBroadphase__rayTest_p4:kj,_emscripten_bind_btWheelInfo__get_m_clippedInvContactDotSuspension_p0:DR,_emscripten_bind_btHeightfieldTerrainShape__isNonMoving_p0:PV,_emscripten_bind_btCollisionObject__setDeactivationTime_p1:hC,_emscripten_bind_btHinge2Constraint__setLinearLowerLimit_p1:I7,_emscripten_bind_btDiscreteDynamicsWorld__getDispatcher_p0:vq,_emscripten_bind_btCollisionShape__setUserPointer_p1:Vs,_emscripten_bind_btQuantizedBvh__getSubtreeInfoArray_p0:amy,_emscripten_bind_btVector4__setX_p1:FT,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getPlane_p3:ahq,_emscripten_bind_btAngularLimit__getHalfRange_p0:jh,_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportingVertex_p1:agv,_emscripten_bind_btCollisionAlgorithmConstructionInfo__get_m_dispatcher1_p0:uW,_emscripten_bind_btCompoundShape__isSoftBody_p0:kU,_emscripten_bind_btPolyhedralConvexShape__isConcave_p0:sh,_emscripten_bind_btWheelInfo__get_m_suspensionRestLength1_p0:DL,_emscripten_bind_btRigidBody__btRigidBody_p3:pB,_emscripten_bind_btRigidBody__btRigidBody_p1:pA,_emscripten_bind_btConcaveShape__getBoundingSphere_p2:akN,_emscripten_bind_btGhostObject__btGhostObject_p0:aky,_emscripten_bind_btContinuousDynamicsWorld__synchronizeMotionStates_p0:Dg,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionFilterMask_p1:JR,_emscripten_bind_btGeneric6DofConstraint__getDbgDrawSize_p0:WM,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getShapeType_p0:agS,_emscripten_bind_btRigidBody__isInWorld_p0:pp,_emscripten_bind_btDynamicsWorld__updateSingleAabb_p1:mU,_emscripten_bind_btDiscreteDynamicsWorld__synchronizeMotionStates_p0:wA,_emscripten_bind_btContinuousDynamicsWorld__getDebugDrawer_p0:B5,_emscripten_bind_btDbvtBroadphase__get_m_paircache_p0:tW,_emscripten_bind_btUniversalConstraint__setLinearUpperLimit_p1:n7,_emscripten_bind_btBroadphaseProxy__set_m_aabbMin_p1:ae9,_emscripten_bind_btTriangleMesh__hasPremadeAabb_p0:Bg,_emscripten_bind_btCapsuleShapeZ__localGetSupportingVertexWithoutMargin_p1:ajc,_emscripten_bind_btCollisionObject__getRootCollisionShape_p0:hy,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_closestHitFraction_p1:Hr,_emscripten_bind_btSimpleBroadphaseProxy__isNonMoving_p1:tQ,_emscripten_bind_btConeTwistConstraint__getUserConstraintId_p0:xp,_emscripten_bind_btCollisionObject__getCcdMotionThreshold_p0:ha,_emscripten_bind_btCapsuleShapeZ__setImplicitShapeDimensions_p1:ajl,_emscripten_bind_btCollisionConfiguration__getCollisionAlgorithmCreateFunc_p2:kv,_emscripten_bind_btRigidBody__setFriction_p1:qj,_emscripten_bind_btCylinderShapeX__getAabb_p3:K7,_emscripten_bind_btVector4__closestAxis_p0:F4,_emscripten_bind_btConeShape__setLocalScaling_p1:Du,_emscripten_bind_btPolyhedralConvexShape__serializeSingleShape_p1:s6,_emscripten_bind_btVector4__w_p0:Gh,_emscripten_bind_btJacobianEntry__set_m_aJ_p1:St,_emscripten_bind_btVector4__setZ_p1:FV,_emscripten_bind_btBvhTriangleMeshShape__performRaycast_p3:Zx,_emscripten_bind_btScaledBvhTriangleMeshShape__setMargin_p1:lL,_emscripten_bind_btUniversalConstraint__getRotationalLimitMotor_p1:ns,_emscripten_bind_btVector3__furthestAxis_p0:HU,_emscripten_bind_btUniformScalingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:LI,_emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_closestHitFraction_p0:Bu,_emscripten_bind_btHinge2Constraint__setAngularLowerLimit_p1:Jj,_emscripten_bind_btSequentialImpulseConstraintSolver__btRandInt2_p1:Nu,_emscripten_bind_btUniversalConstraint__getUserConstraintType_p0:n_,_emscripten_bind_btUniversalConstraint__getRigidBodyB_p0:mw,_emscripten_bind_btEmptyShape__calculateLocalInertia_p2:oK,_emscripten_bind_btPairCachingGhostObject__setUserPointer_p1:T9,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionFilterGroup_p1:Hh,_emscripten_bind_btPersistentManifold__clearManifold_p0:j4,_emscripten_bind_btVector3__safeNormalize_p0:GU,_emscripten_bind_btConvexTriangleMeshShape__isCompound_p0:iq,_emscripten_bind_btPairCachingGhostObject__hasAnisotropicFriction_p0:Vc,_emscripten_bind_btVector4__isZero_p0:FR,_emscripten_bind_btVector4__setY_p1:FU,_emscripten_bind_btVector4__lerp_p2:F1,_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_closestHitFraction_p0:KB,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_motionState_p0:Yn,_emscripten_bind_btDispatcher__needsCollision_p2:RS,_emscripten_bind_btCollisionObject__getContactProcessingThreshold_p0:hz,_emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintPtr_p1:aey,_emscripten_bind_btCylinderShapeX__getBoundingSphere_p2:Lg,_emscripten_bind_btRigidBody__getNumConstraintRefs_p0:qx,_emscripten_bind_btCylinderShapeZ__calculateSerializeBufferSize_p0:acB,_emscripten_bind_btRotationalLimitMotor__get_m_accumulatedImpulse_p0:y4,_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_stackAlloc_p1:YC,_emscripten_bind_btSliderConstraint__getUseLinearReferenceFrameA_p0:$r,_emscripten_bind_btGeneric6DofConstraint__setAngularUpperLimit_p1:Xn,_emscripten_bind_btContactConstraint__calculateSerializeBufferSize_p0:aba,_emscripten_bind_btSliderConstraint__getCalculatedTransformA_p0:_d,_emscripten_bind_btTypedConstraint__getInfo1_p1:rT,_emscripten_bind_btQuaternion__getW_p0:ah0,_emscripten_bind_btCapsuleShapeZ__getAabbSlow_p3:ajs,_emscripten_bind_btGeneric6DofSpringConstraint__setDamping_p2:adt,_emscripten_bind_btSequentialImpulseConstraintSolver__prepareSolve_p2:NW,_emscripten_bind_btSphereShape__setMargin_p1:amf,_emscripten_bind_btQuadWord____destroy___p0:Mq,_emscripten_bind_btSliderConstraint__setSoftnessDirLin_p1:_u,_emscripten_bind_btSphereShape__getLocalScalingNV_p0:alw,_emscripten_bind_btConeShape__getAabb_p3:Dv,_emscripten_bind_btSliderConstraint__getTargetAngMotorVelocity_p0:Zl,_emscripten_bind_btBoxShape__getVertex_p2:afZ,_emscripten_bind_btSliderConstraint__setRestitutionDirLin_p1:_R,_emscripten_bind_btCylinderShapeX__isCompound_p0:J0,_emscripten_bind_btContinuousDynamicsWorld__getConstraint_p1:C4,_emscripten_bind_btGhostObject__activate_p0:ajH,_emscripten_bind_btCollisionWorld__debugDrawWorld_p0:SO,_emscripten_bind_btDbvtProxy__set_m_clientObject_p1:M9,_emscripten_bind_btSphereShape__getShapeType_p0:amq,_emscripten_bind_btWheelInfo__set_m_wheelsSuspensionForce_p1:Eo,_emscripten_bind_btCollisionObject__getHitFraction_p0:hA,_emscripten_bind_btCompoundShape__updateChildTransform_p3:k6,_emscripten_bind_btCompoundShape__updateChildTransform_p2:k5,_emscripten_bind_btQuadWord__setZ_p1:L5,_emscripten_bind_btTriangleMesh__btTriangleMesh_p2:A2,_emscripten_bind_btTriangleMesh__btTriangleMesh_p1:A1,_emscripten_bind_btCapsuleShapeZ__btCapsuleShapeZ_p2:ajh,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_rayToWorld_p1:H8,_emscripten_bind_btMatrix3x3__timesTranspose_p1:fl,_emscripten_bind_btMatrix3x3__absolute_p0:ed,_emscripten_bind_btSimpleDynamicsWorld__getWorldUserInfo_p0:Oj,_emscripten_bind_btConeShapeX__localGetSupportingVertex_p1:z8,_emscripten_bind_btCylinderShapeX__localGetSupportVertexNonVirtual_p1:K8,_emscripten_bind_btRaycastVehicle__setSteeringValue_p2:JO,_emscripten_bind_btGeneric6DofSpringConstraint__setFrames_p2:ae1,_emscripten_bind_btConeShape__getHeight_p0:CI,_emscripten_bind_btBU_Simplex1to4__getPlane_p3:FD,_emscripten_bind_btVector3__setY_p1:G_,_emscripten_bind_bt32BitAxisSweep3__rayTest_p3:alE,_emscripten_bind_btConvexInternalAabbCachingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:QS,_emscripten_bind_btDiscreteDynamicsWorld__getBroadphase_p0:vD,_emscripten_bind_btScaledBvhTriangleMeshShape__getAngularMotionDisc_p0:lO,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalAngularDampingThresholdSqr_p1:Yf,_emscripten_bind_btConvexShape__setUserPointer_p1:Qc,_emscripten_bind_btConeShapeZ____destroy___p0:z0,_emscripten_bind_btConeShapeX__serializeSingleShape_p1:AP,_emscripten_bind_btDynamicsWorld__getNumCollisionObjects_p0:ly,_emscripten_bind_btQuadWord__setX_p1:L3,_emscripten_bind_btDispatcherInfo__get_m_useContinuous_p0:eM,_emscripten_bind_btPersistentManifold__btPersistentManifold_p0:kx,_emscripten_bind_btDiscreteDynamicsWorld__removeAction_p1:wl,_emscripten_bind_btConvexHullShape__calculateSerializeBufferSize_p0:gd,_emscripten_bind_btTranslationalLimitMotor__btTranslationalLimitMotor_p1:TQ,_emscripten_bind_btContinuousDynamicsWorld__removeCharacter_p1:C3,_emscripten_bind_btRotationalLimitMotor__get_m_normalCFM_p0:za,_emscripten_bind_btStaticPlaneShape__getPlaneConstant_p0:Vn,_emscripten_bind_btDefaultMotionState__btDefaultMotionState_p2:Cq,_emscripten_bind_btDefaultMotionState__btDefaultMotionState_p1:Cp,_emscripten_bind_btDefaultMotionState__btDefaultMotionState_p0:Co,_emscripten_bind_btConvexInternalAabbCachingShape__isConvex_p0:P3,_emscripten_bind_btAxisSweep3__resetPool_p1:u9,_emscripten_bind_btOptimizedBvh__isQuantized_p0:qY,_emscripten_bind_btHinge2Constraint__setupSolverConstraint_p4:Jh,_emscripten_bind_btVector4__setMax_p1:FJ,_emscripten_bind_btConeShapeZ__getName_p0:zQ,_emscripten_bind_btActionInterface__debugDraw_p1:GL,_emscripten_bind_btSliderConstraint__getUserConstraintPtr_p0:_G,_emscripten_bind_btTransform__mult_p2:X4,_emscripten_bind_btSliderConstraint__setTargetLinMotorVelocity_p1:_p,_emscripten_bind_btGhostObject__setContactProcessingThreshold_p1:aiU,_emscripten_bind_btVector3__btVector3_p0:GW,_emscripten_bind_btConeShapeX__getLocalScaling_p0:Aa,_emscripten_bind_btScaledBvhTriangleMeshShape__getBoundingSphere_p2:lQ,_emscripten_bind_btBU_Simplex1to4__getNumEdges_p0:EZ,_emscripten_bind_btCollisionShape__getName_p0:Wj,_emscripten_bind_btSliderConstraint__getUserConstraintType_p0:$h,_emscripten_bind_btCylinderShapeZ__getAabb_p3:acG,_emscripten_bind_btCollisionWorld__LocalConvexResult____destroy___p0:ald,_emscripten_bind_btCollisionObject__isStaticOrKinematicObject_p0:hF,_emscripten_bind_btCollisionWorld__performDiscreteCollisionDetection_p0:SF,_emscripten_bind_btCylinderShapeX__getMarginNV_p0:Kq,_emscripten_bind_btGhostObject__setInterpolationAngularVelocity_p1:ajx,_emscripten_bind_btEmptyShape__getName_p0:oP,_emscripten_bind_btRaycastVehicle__updateWheelTransformsWS_p2:J7,_emscripten_bind_btHingeConstraint__getDbgDrawSize_p0:x9,_emscripten_bind_btTranslationalLimitMotor__set_m_accumulatedImpulse_p1:Ts,_emscripten_bind_btRaycastVehicle__updateWheelTransformsWS_p1:J6,_emscripten_bind_btDbvtBroadphase__get_m_pid_p0:sz,_emscripten_bind_btGeneric6DofSpringConstraint__getRelativePivotPosition_p1:adm,_emscripten_bind_btRigidBody__getPushVelocity_p0:qh,_emscripten_bind_btStaticPlaneShape__calculateSerializeBufferSize_p0:VR,_emscripten_bind_btConeShapeX__isConcave_p0:Ak,_emscripten_bind_btBoxShape__isCompound_p0:afp,_emscripten_bind_btDbvtBroadphase__set_m_pid_p1:si,_emscripten_bind_btDefaultCollisionConfiguration__getCollisionAlgorithmCreateFunc_p2:jE,_emscripten_bind_btDefaultCollisionConfiguration__getCollisionAlgorithmPool_p0:jD,_emscripten_bind_btHashPtr__equals_p1:TR,_emscripten_bind_btSimpleBroadphaseProxy____destroy___p0:uu,_emscripten_bind_btCompoundShape__removeChildShapeByIndex_p1:k2,_emscripten_bind_btConvexInternalShape__isConvex2d_p0:TT,_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_maxSuspensionTravelCm_p0:$u,_emscripten_bind_btGeneric6DofConstraint__getFrameOffsetA_p0:VH,_emscripten_bind_btConeShape__getContactBreakingThreshold_p1:Dx,_emscripten_bind_btContinuousDynamicsWorld__addRigidBody_p1:B8,_emscripten_bind_btHeightfieldTerrainShape__setUseDiamondSubdivision_p0:PQ,_emscripten_bind_btContinuousDynamicsWorld__addRigidBody_p3:B9,_emscripten_bind_btDbvtProxy__isNonMoving_p1:MX,_emscripten_bind_btCollisionShape__getLocalScaling_p0:Wh,_emscripten_bind_btQuadWord__x_p0:L1,_emscripten_bind_btCollisionDispatcher__getCollisionConfiguration_p0:ul,_emscripten_bind_btGeneric6DofConstraint__getAppliedImpulse_p0:WV,_emscripten_bind_btConstraintSolver__reset_p0:Ju,_emscripten_bind_btQuantizedBvh__deSerializeInPlace_p3:amT,_emscripten_bind_btBvhTriangleMeshShape__refitTree_p2:Zv,_emscripten_bind_btCylinderShapeX__serialize_p2:KY,_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionDamping_p1:$A,_emscripten_bind_bt32BitAxisSweep3__unQuantize_p3:alp,_emscripten_bind_btPolyhedralConvexShape__getImplicitShapeDimensions_p0:sd,_emscripten_bind_btSimpleBroadphaseProxy__get_m_aabbMin_p0:t3,_emscripten_bind_btTriangleInfoMap__set_m_planarEpsilon_p1:akV,_emscripten_bind_btEmptyShape____destroy___p0:oV,_emscripten_bind_btContactConstraint____destroy___p0:abc,_emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p1:C6,_emscripten_bind_btTriangleMesh__getUse32bitIndices_p0:Aw,_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_useEpaPenetrationAlgorithm_p0:Rv,_emscripten_bind_btDispatcherInfo__set_m_useEpa_p1:e2,_emscripten_bind_btJacobianEntry__btJacobianEntry_p6:R_,_emscripten_bind_btDispatcherInfo__get_m_useEpa_p0:eL,_emscripten_bind_btConvexTriangleMeshShape__getName_p0:iB,_emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p2:adv,_emscripten_bind_btSliderConstraint__enableFeedback_p1:_a,_emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p0:adU,_emscripten_bind_btConeShapeZ__getMarginNonVirtual_p0:z$,_emscripten_bind_btGeneric6DofConstraint__getInfo1_p1:W3,_emscripten_bind_btJacobianEntry__btJacobianEntry_p4:RY,_emscripten_bind_btJacobianEntry__get_m_1MinvJt_p0:R8,_emscripten_bind_btDispatcherInfo__get_m_convexConservativeDistanceThreshold_p0:eS,_emscripten_bind_btConeShapeZ__isCompound_p0:zj,_emscripten_bind_btConeShape__getName_p0:Dr,_emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p3:C8,_emscripten_bind_btPairCachingGhostObject__hasContactResponse_p0:Ux,_emscripten_bind_btMatrix3x3__deSerialize_p1:eF,_emscripten_bind_btJacobianEntry__btJacobianEntry_p9:S0,_emscripten_bind_btDiscreteDynamicsWorld__getForceUpdateAllAabbs_p0:vz,_emscripten_bind_btTransform__setFromOpenGLMatrix_p1:Xs,_emscripten_bind_btRigidBody__updateInertiaTensor_p0:qi,_emscripten_bind_btUniversalConstraint__calculateSerializeBufferSize_p0:nF,_emscripten_bind_btEmptyShape__getBoundingSphere_p2:oZ,_emscripten_bind_btHinge2Constraint__getAppliedImpulse_p0:IS,_emscripten_bind_btTypedConstraint__set_m_objectType_p1:q2,_emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p2:Iv,_emscripten_bind_btJacobianEntry__getNonDiagonal_p3:R5,_emscripten_bind_btJacobianEntry__getNonDiagonal_p2:R4,_emscripten_bind_btMultiSphereShape__getShapeType_p0:Ph,_emscripten_bind_btMultiSphereShape__getUserPointer_p0:Pb,_emscripten_bind_btRigidBody__setAnisotropicFriction_p1:qF,_emscripten_bind_btStackAlloc__btStackAlloc_p1:ng,_emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p0:I3,_emscripten_bind_btCapsuleShapeZ__serializeSingleShape_p1:ajr,_emscripten_bind_btConeTwistConstraint__getUid_p0:w2,_emscripten_bind_btCylinderShapeZ__isInfinite_p0:ace,_emscripten_bind_btBvhTriangleMeshShape__processAllTriangles_p3:Zu,_emscripten_bind_btSliderConstraint__setEnabled_p1:_I,_emscripten_bind_btSphereShape__setLocalScaling_p1:al9,_emscripten_bind_btGeneric6DofSpringConstraint__getAngularUpperLimit_p1:aeu,_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionFilterMask_p1:KF,_emscripten_bind_btPersistentManifold__get_m_objectType_p0:j_,_emscripten_bind_btCapsuleShapeX__getMargin_p0:ahJ,_emscripten_bind_btSliderConstraint__setUpperAngLimit_p1:_W,_emscripten_bind_btCollisionAlgorithmConstructionInfo__set_m_dispatcher1_p1:uV,_emscripten_bind_btCollisionAlgorithmConstructionInfo__set_m_manifold_p1:uX,_emscripten_bind_btBU_Simplex1to4__reset_p0:E9,_emscripten_bind_btHingeConstraint__setUserConstraintType_p1:yc,_emscripten_bind_btPairCachingGhostObject__getOverlappingObject_p1:Ui,_emscripten_bind_btBvhTriangleMeshShape__setOptimizedBvh_p1:ZP,_emscripten_bind_btScaledBvhTriangleMeshShape__calculateLocalInertia_p2:lB,_emscripten_bind_btBvhTriangleMeshShape__setOptimizedBvh_p2:ZQ,_emscripten_bind_btConvexInternalShape__getContactBreakingThreshold_p1:TM,_emscripten_bind_btConcaveShape__isCompound_p0:akg,_emscripten_bind_btTriangleIndexVertexArray__getScaling_p0:aeN,_emscripten_bind_btJacobianEntry__get_m_Adiag_p0:R3,_emscripten_bind_btGhostPairCallback____destroy___p0:am3,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_linearSleepingThreshold_p1:Yk,_emscripten_bind_btBroadphaseProxy__set_m_collisionFilterMask_p1:aeJ,_emscripten_bind_btHingeConstraint__enableFeedback_p1:xZ,_emscripten_bind_btUniversalConstraint__serialize_p2:nI,_emscripten_bind_btCylinderShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:acO,_emscripten_bind_btStorageResult__get_m_closestPointInB_p0:M4,_emscripten_bind_btCylinderShape__isPolyhedral_p0:L9,_emscripten_bind_btConeShape__getMarginNV_p0:CF,_emscripten_bind_btConeShape__getBoundingSphere_p2:EC,_emscripten_bind_btHinge2Constraint__calculateTransforms_p0:Jb,_emscripten_bind_btGeneric6DofConstraint__serialize_p2:W9,_emscripten_bind_btStackAlloc____destroy___p0:m1,_emscripten_bind_btUniversalConstraint__enableFeedback_p1:nn,_emscripten_bind_btPairCachingGhostObject__getInterpolationWorldTransform_p0:Ug,_emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p2:kJ,_emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p1:jS,_emscripten_bind_btSliderConstraint__setPoweredAngMotor_p1:Z9,_emscripten_bind_btConvexTriangleMeshShape__localGetSupportVertexWithoutMarginNonVirtual_p1:iD,_emscripten_bind_btGeneric6DofSpringConstraint__getAngle_p1:aet,_emscripten_bind_btHingeConstraint__internalGetAppliedImpulse_p0:yf,_emscripten_bind_btBvhSubtreeInfo__get_m_rootNodeIndex_p0:ac$,_emscripten_bind_btScaledBvhTriangleMeshShape__getName_p0:lG,_emscripten_bind_btPairCachingGhostObject__getCcdSweptSphereRadius_p0:T0,_emscripten_bind_btDbvtBroadphase____destroy___p0:tI,_emscripten_bind_btTriangleMesh__serialize_p2:Ba,_emscripten_bind_btDbvtBroadphase__set_m_dupdates_p1:sA,_emscripten_bind_btHinge2Constraint__getConstraintType_p0:Iz,_emscripten_bind_btCollisionWorld__ContactResultCallback__set_m_collisionFilterGroup_p1:jm,_emscripten_bind_btConeShapeZ__getPreferredPenetrationDirection_p2:zY,_emscripten_bind_btMultiSphereShape__getMargin_p0:Pu,_emscripten_bind_btHinge2Constraint__getLinearLowerLimit_p1:I9,_emscripten_bind_btSliderConstraint__btSliderConstraint_p5:$O,_emscripten_bind_btRotationalLimitMotor__get_m_currentPosition_p0:yR,_emscripten_bind_btDynamicsWorld__addCharacter_p1:mS,_emscripten_bind_btCollisionObject__activate_p0:g3,_emscripten_bind_btCollisionObject__activate_p1:g4,_emscripten_bind_btSliderConstraint__getSoftnessLimAng_p0:$n,_emscripten_bind_btMatrix3x3__diagonalize_p3:eu,_emscripten_bind_btCapsuleShape__getShapeType_p0:fQ,_emscripten_bind_btHeightfieldTerrainShape__btHeightfieldTerrainShape_p7:PM,_emscripten_bind_btWheelInfo__get_m_wheelDirectionCS_p0:Ej,_emscripten_bind_btConvexShape__calculateSerializeBufferSize_p0:Q3,_emscripten_bind_btConeShapeX__isConvex2d_p0:An,_emscripten_bind_btRaycastVehicle__getRigidBody_p0:Jn,_emscripten_bind_btMultiSphereShape__getImplicitShapeDimensions_p0:Pf,_emscripten_bind_btDbvtProxy__get_m_aabbMin_p0:Nb,_emscripten_bind_btHeightfieldTerrainShape__getUserPointer_p0:PU,_emscripten_bind_btRotationalLimitMotor__get_m_hiLimit_p0:zb,_emscripten_bind_btMultiSphereShape__getLocalScalingNV_p0:O7,_emscripten_bind_btSliderConstraint__getRigidBodyA_p0:Zj,_emscripten_bind_btStaticPlaneShape__getAabb_p3:VU,_emscripten_bind_btHinge2Constraint__setBreakingImpulseThreshold_p1:IP,_emscripten_bind_CProfileNode____destroy___p0:YK,_emscripten_bind_btConvexHullShape__getNumPoints_p0:gG,_emscripten_bind_btConeShape__isCompound_p0:CD,_emscripten_bind_btMatrix3x3__getColumn_p1:d7,_emscripten_bind_btPersistentManifold__getContactProcessingThreshold_p0:j8,_emscripten_bind_btDispatcherInfo__get_m_stackAllocator_p0:eQ,_emscripten_bind_btIDebugDraw__drawBox_p4:tr,_emscripten_bind_btCapsuleShapeX__getPreferredPenetrationDirection_p2:ahK,_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionCompression_p1:$s,_emscripten_bind_btContinuousDynamicsWorld__removeRigidBody_p1:Cm,_emscripten_bind_btIDebugDraw__drawBox_p3:tq,_emscripten_bind_btStridingMeshInterface__calculateAabbBruteForce_p2:abq,_emscripten_bind_btRotationalLimitMotor__get_m_currentLimitError_p0:yZ,_emscripten_bind_btConstraintSolver__solveGroup_p10:Jw,_emscripten_bind_btHinge2Constraint__setUserConstraintType_p1:IM,_emscripten_bind_btMatrix3x3____destroy___p0:fk,_emscripten_bind_btCollisionWorld__getDebugDrawer_p0:SE,_emscripten_bind_btSimpleDynamicsWorld__addRigidBody_p3:N1,_emscripten_bind_btConeShapeZ__isConvex_p0:zr,_emscripten_bind_btPairCachingGhostObject__getFriction_p0:TZ,_emscripten_bind_btRigidBody__serializeSingleObject_p1:qE,_emscripten_bind_btOptimizedBvh__updateBvhNodes_p4:rw,_emscripten_bind_btManifoldPoint__get_m_appliedImpulseLateral1_p0:aaw,_emscripten_bind_btSphereShape__isPolyhedral_p0:alu,_emscripten_bind_btSequentialImpulseConstraintSolver__btSequentialImpulseConstraintSolver_p0:Og,_emscripten_bind_btSphereSphereCollisionAlgorithm__calculateTimeOfImpact_p4:jI,_emscripten_bind_btRigidBody__saveKinematicState_p1:qG,_emscripten_bind_btSliderConstraint__getInfo1NonVirtual_p1:_m,_emscripten_bind_btCollisionObject____destroy___p0:h5,_emscripten_bind_btTriangleIndexVertexArray__getLockedReadOnlyVertexIndexBase_p8:afc,_emscripten_bind_btWheelInfo__set_m_steering_p1:Ea,_emscripten_bind_btHinge2Constraint__getUseFrameOffset_p0:IL,_emscripten_bind_btConvexInternalShape__setUserPointer_p1:Tj,_emscripten_bind_btGhostObject__getCompanionId_p0:ajY,_emscripten_bind_btSimpleBroadphaseProxy__isSoftBody_p1:tS,_emscripten_bind_btSequentialImpulseConstraintSolver____destroy___p0:NV,_emscripten_bind_btTransform__getIdentity_p0:XF,_emscripten_bind_btPolyhedralConvexShape__localGetSupportingVertexWithoutMargin_p1:sU,_emscripten_bind_btTriangleMesh__set_m_weldingThreshold_p1:Av,_emscripten_bind_btBvhTriangleMeshShape__isCompound_p0:Y6,_emscripten_bind_btCompoundShape__btCompoundShape_p1:kV,_emscripten_bind_btCompoundShape__btCompoundShape_p0:kI,_emscripten_bind_btPairCachingGhostObject__setHitFraction_p1:Uf,_emscripten_bind_btCollisionObject__getWorldTransform_p0:hp,_emscripten_bind_btContactConstraint__setParam_p3:aa5,_emscripten_bind_btCylinderShapeX__getNumPreferredPenetrationDirections_p0:K$,_emscripten_bind_btContinuousDynamicsWorld__getBroadphase_p0:Cy,_emscripten_bind_btCylinderShape__calculateLocalInertia_p2:Ms,_emscripten_bind_btTransform__serialize_p1:XJ,_emscripten_bind_btStorageResult__get_m_distance_p0:M3,_emscripten_bind_btSliderConstraint__getMaxLinMotorForce_p0:Z5,_emscripten_bind_btSphereShape__getNumPreferredPenetrationDirections_p0:al3,_emscripten_bind_btIndexedMesh__get_m_numVertices_p0:gK,_emscripten_bind_btMultiSphereShape__setMargin_p1:Px,_emscripten_bind_btBoxShape__isSoftBody_p0:afw,_emscripten_bind_btDbvtProxy__isCompound_p1:MU,_emscripten_bind_btConvexHullShape__getImplicitShapeDimensions_p0:gC,_emscripten_bind_btEmptyShape__isConvex_p0:oe,_emscripten_bind_btConeShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1:AA,_emscripten_bind_btHingeConstraint__setAngularOnly_p1:yg,_emscripten_bind_btTranslationalLimitMotor__solveLinearAxis_p9:Th,_emscripten_bind_btCapsuleShapeX__getAabbSlow_p3:ahT,_emscripten_bind_btSimpleDynamicsWorld__getCollisionObjectArray_p0:Ny,_emscripten_bind_btOverlappingPairCache__removeOverlappingPair_p3:Wb,_emscripten_bind_btCapsuleShapeX__isPolyhedral_p0:agX,_emscripten_bind_btVector4__z_p0:Gk,_emscripten_bind_btRigidBody__getUserPointer_p0:pn,_emscripten_bind_btSliderConstraint__internalSetAppliedImpulse_p1:$b,_emscripten_bind_btGhostObject__getInterpolationWorldTransform_p0:ajM,_emscripten_bind_btDbvtBroadphase__set_m_paircache_p1:sm,_emscripten_bind_btHinge2Constraint__setDamping_p2:HP,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_collisionShape_p1:Ye,_emscripten_bind_btGeneric6DofSpringConstraint__calculateTransforms_p0:aeT,_emscripten_bind_btConvexTriangleMeshShape__recalcLocalAabb_p0:iK,_emscripten_bind_btGeneric6DofSpringConstraint__calculateTransforms_p2:aeU,_emscripten_bind_btConvexHullShape__getBoundingSphere_p2:hN,_emscripten_bind_btContactConstraint__getUserConstraintId_p0:$S,_emscripten_bind_btHinge2Constraint__solveConstraintObsolete_p3:Jk,_emscripten_bind_btConeTwistConstraint__get_m_objectType_p0:vQ,_emscripten_bind_btMultiSphereShape__getMarginNV_p0:Ot,_emscripten_bind_btRaycastVehicle__rayCast_p1:J4,_emscripten_bind_btConvexHullShape__isConcave_p0:fZ,_emscripten_bind_btCollisionObject__getAnisotropicFriction_p0:hc,_emscripten_bind_btSimpleBroadphase____destroy___p0:jL,_emscripten_bind_btCapsuleShape__btCapsuleShape_p2:fq,_emscripten_bind_btPairCachingGhostObject__setAnisotropicFriction_p1:UW,_emscripten_bind_btBvhTriangleMeshShape__serializeSingleBvh_p1:ZO,_emscripten_bind_btConvexHullShape__getLocalScaling_p0:f9,_emscripten_bind_btVector4__x_p0:Gj,_emscripten_bind_btContinuousDynamicsWorld__getWorldUserInfo_p0:Cx,_emscripten_bind_btContinuousDynamicsWorld__removeConstraint_p1:Cg,_emscripten_bind_btBroadphaseRayCallback__set_m_rayDirectionInverse_p1:BU,_emscripten_bind_btMultiSphereShape__isConvex2d_p0:Pd,_emscripten_bind_btCylinderShape__getAngularMotionDisc_p0:MO,_emscripten_bind_btRigidBody__isActive_p0:oD,_emscripten_bind_btBroadphaseRayCallback__get_m_rayDirectionInverse_p0:Br,_emscripten_bind_btHeightfieldTerrainShape__setLocalScaling_p1:Qn,_emscripten_bind_btRaycastVehicle__getRightAxis_p0:JB,_emscripten_bind_btUniformScalingShape__calculateLocalInertia_p2:Lp,_emscripten_bind_btDispatcherInfo__set_m_timeStep_p1:eV,_emscripten_bind_btGhostObject__getNumOverlappingObjects_p0:aiZ,_emscripten_bind_btCapsuleShapeX__calculateSerializeBufferSize_p0:ahA,_emscripten_bind_btUniversalConstraint__set_m_objectType_p1:my,_emscripten_bind_btContactConstraint__getInfo2_p1:aa9,_emscripten_bind_btConvexSeparatingDistanceUtil__getConservativeSeparatingDistance_p0:adg,_emscripten_bind_btPairCachingGhostObject__getIslandTag_p0:T7,_emscripten_bind_btStaticPlaneShape__calculateTemporalAabb_p6:VZ,_emscripten_bind_btPairCachingGhostObject__getRootCollisionShape_p0:U2,_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_transformA_p0:YA,_emscripten_bind_btRigidBody__setContactProcessingThreshold_p1:pb,_emscripten_bind_btConvexInternalShape__setImplicitShapeDimensions_p1:TJ,_emscripten_bind_btRigidBody__getAngularDamping_p0:ps,_emscripten_bind_btConcaveShape__getUserPointer_p0:akk,_emscripten_bind_btConvexTriangleMeshShape__calculatePrincipalAxisTransform_p3:iY,_memset:aDD,_emscripten_bind_btHinge2Constraint__getAngle_p1:IW,_emscripten_bind_btCylinderShapeX__getMarginNonVirtual_p0:Ld,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalDampingFactor_p0:Yo,_emscripten_bind_btWheelInfo__get_m_suspensionRelativeVelocity_p0:DZ,_emscripten_bind_btPolyhedralConvexShape__localGetSupportVertexWithoutMarginNonVirtual_p1:sT,_emscripten_bind_btCapsuleShape__calculateTemporalAabb_p6:fO,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__ClosestRayResultCallback_p2:Ir,_emscripten_bind_btTypedConstraint__isEnabled_p0:q7,_emscripten_bind_btVector4__cross_p1:F2,_emscripten_bind_btRigidBody__internalGetDeltaLinearVelocity_p0:p3,_emscripten_bind_btCapsuleShapeZ__isConvex_p0:aiF,_emscripten_bind_btSequentialImpulseConstraintSolver__reset_p0:NU,_emscripten_bind_btPairCachingGhostObject__serialize_p2:UY,_emscripten_bind_btCylinderShapeX__isInfinite_p0:Ks,_emscripten_bind_btRigidBody__getLinearSleepingThreshold_p0:o5,_emscripten_bind_btGhostObject__setFriction_p1:aiS,_emscripten_bind_btCylinderShape__serializeSingleShape_p1:MP,_emscripten_bind_btWheelInfo__set_m_skidInfo_p1:Ed,_emscripten_bind_btHinge2Constraint__testAngularLimitMotor_p1:Jt,_emscripten_bind_btScaledBvhTriangleMeshShape__serializeSingleShape_p1:lP,_emscripten_bind_btGeneric6DofConstraint__get_m_useSolveConstraintObsolete_p0:WU,_emscripten_bind_btUniversalConstraint__getRelativePivotPosition_p1:mB,_emscripten_bind_btBroadphaseInterface__destroyProxy_p2:jb,_emscripten_bind_btGeneric6DofSpringConstraint__getParam_p2:adQ,_emscripten_bind_btConeShapeX__getShapeType_p0:Ar,_emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p2:C7,_emscripten_bind_btTriangleMesh__getPremadeAabb_p2:A_,_emscripten_bind_btGeneric6DofConstraint__setBreakingImpulseThreshold_p1:WT,_emscripten_bind_btCylinderShapeZ__getAngularMotionDisc_p0:acQ,_emscripten_bind_btDbvtProxy__get_m_multiSapParentProxy_p0:Nl,_emscripten_bind_btBU_Simplex1to4__calculateLocalInertia_p2:EM,_emscripten_bind_btTypedConstraint__setParam_p2:rP,_emscripten_bind_btTypedConstraint__setParam_p3:rQ,_emscripten_bind_btDefaultMotionState__set_m_centerOfMassOffset_p1:B2,_emscripten_bind_btTypedConstraint__setUserConstraintPtr_p1:rn,_emscripten_bind_btWheelInfo__get_m_wheelAxleCS_p0:En,_emscripten_bind_btCompoundShape____destroy___p0:k4,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__hasHit_p0:adc,_emscripten_bind_btHashString__get_m_string_p0:amz,_emscripten_bind_btQuadWord__btQuadWord_p0:MR,_emscripten_bind_btTransform__setRotation_p1:X$,_emscripten_bind_btDbvtBroadphase__set_m_deferedcollide_p1:sp,_emscripten_bind_btRigidBody__get_m_frictionSolverType_p0:qv,_emscripten_bind_btSliderConstraint__solveConstraintObsolete_p3:__,_emscripten_bind_btDiscreteDynamicsWorld__getPairCache_p0:wz,_emscripten_bind_btSimpleBroadphaseProxy__set_m_uniqueId_p1:t5,_emscripten_bind_btBroadphaseProxy____destroy___p0:afb,_emscripten_bind_btDbvtProxy__isInfinite_p1:MZ,_emscripten_bind_btCompoundShape__getUpdateRevision_p0:kf,_emscripten_bind_btTranslationalLimitMotor__get_m_upperLimit_p0:Tb,_emscripten_bind_btVector3__deSerialize_p1:GF,_emscripten_bind_btConvexInternalShape__localGetSupportingVertex_p1:TA,_emscripten_bind_btHashString__getHash_p0:amD,_emscripten_bind_btOverlappingPairCache__addOverlappingPair_p2:V3,_emscripten_bind_btPairCachingGhostObject__getAnisotropicFriction_p0:U6,_emscripten_bind_btCapsuleShape__isConvex_p0:fb,_emscripten_bind_btCylinderShape__getImplicitShapeDimensions_p0:Mj,_emscripten_bind_btDiscreteDynamicsWorld__getWorldType_p0:wu,_emscripten_bind_btSimpleBroadphase__getBroadphaseAabb_p2:kq,_emscripten_bind_btRigidBody__forceActivationState_p1:pj,_emscripten_bind_btConeShapeX__localGetSupportingVertexWithoutMargin_p1:AB,_emscripten_bind_btScaledBvhTriangleMeshShape__btScaledBvhTriangleMeshShape_p2:mg,_emscripten_bind_btRotationalLimitMotor__get_m_stopERP_p0:yO,_emscripten_bind_btConeShapeX__isPolyhedral_p0:zE,_emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p1:adV,_emscripten_bind_btVector3__absolute_p0:GM,_emscripten_bind_btTypedConstraint__setBreakingImpulseThreshold_p1:q6,_emscripten_bind_btConeTwistConstraint__getTwistLimitSign_p0:xn,_emscripten_bind_btConvexInternalAabbCachingShape__getAabbNonVirtual_p3:QD,_emscripten_bind_btHingeConstraint__setLimit_p4:yx,_emscripten_bind_btGeneric6DofConstraint__getLinearLowerLimit_p1:Xb,_emscripten_bind_btConvexInternalAabbCachingShape__getLocalScaling_p0:QA,_emscripten_bind_btMultiSphereShape__getAabbNonVirtual_p3:Pm,_emscripten_bind_btVector4__deSerializeDouble_p1:Fi,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__addSingleResult_p2:H7,_emscripten_bind_btDefaultMotionState__get_m_userPointer_p0:BC,_emscripten_bind_btSliderConstraint__getAncorInB_p0:_T,_emscripten_bind_btCapsuleShape__getPreferredPenetrationDirection_p2:fE,_emscripten_bind_btGeneric6DofSpringConstraint__getDbgDrawSize_p0:aeg,_emscripten_bind_btTransform__getOrigin_p0:Xt,_emscripten_bind_btWheelInfo__get_m_wheelsDampingCompression_p0:DQ,_emscripten_bind_btCylinderShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1:K4,_emscripten_bind_btTypedObject__get_m_objectType_p0:gI,_emscripten_bind_btCollisionAlgorithmConstructionInfo__btCollisionAlgorithmConstructionInfo_p0:vn,_emscripten_bind_btCompoundShape__getAabb_p3:kZ,_emscripten_bind_btBroadphasePair__get_m_pProxy1_p0:Bj,_emscripten_bind_btRigidBody__getDeactivationTime_p0:oz,_emscripten_bind_btCollisionObject__calculateSerializeBufferSize_p0:h2,_emscripten_bind_btVector3__length_p0:HT,_emscripten_bind_btConstraintSolver__prepareSolve_p2:Jx,_emscripten_bind_btVector4__deSerialize_p1:FP,_emscripten_bind_btActivatingCollisionAlgorithm__calculateTimeOfImpact_p4:ZT,_emscripten_bind_btDbvtBroadphase__get_m_updates_done_p0:tX,_emscripten_bind_btContactConstraint__getInfo1_p1:aa8,_emscripten_bind_btPolyhedralConvexAabbCachingShape__isNonMoving_p0:agM,_emscripten_bind_btSliderConstraint__getConstraintType_p0:_8,_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_maximumDistanceSquared_p0:Yz,_emscripten_bind_btCompoundShape__getDynamicAabbTree_p0:kd,_emscripten_bind_btRotationalLimitMotor__set_m_bounce_p1:zh,_emscripten_bind_btConvexInternalShape__getBoundingSphere_p2:UC,_emscripten_bind_btCylinderShape__localGetSupportVertexNonVirtual_p1:MF,_emscripten_bind_btIDebugDraw__drawCylinder_p5:tl,_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_stackAlloc_p0:Ry,_emscripten_bind_btQuadWord__op_comp_p1:LW,_emscripten_bind_btGeneric6DofConstraint__calculateSerializeBufferSize_p0:W6,_emscripten_bind_btCylinderShape____destroy___p0:ML,_emscripten_bind_btConvexHullShape__isConvex_p0:fR,_emscripten_bind_btDiscreteDynamicsWorld__getGravity_p0:wj,_emscripten_bind_btHingeConstraint__getInfo2NonVirtual_p5:xL,_emscripten_bind_btHinge2Constraint__setUseFrameOffset_p1:IC,_emscripten_bind_btTypedConstraint__getUid_p0:rg,_emscripten_bind_btTriangleIndexVertexArray__setScaling_p1:afl,_emscripten_bind_btRigidBody__setWorldTransform_p1:qH,_emscripten_bind_btGhostObject__serialize_p2:ajy,_emscripten_bind_btBoxShape__localGetSupportingVertexWithoutMargin_p1:age,_emscripten_bind_btQuadWord__setY_p1:L4,_emscripten_bind_btGeneric6DofSpringConstraint__getUseFrameOffset_p0:aej,_emscripten_bind_btUniformScalingShape____destroy___p0:LC,_emscripten_bind_btPairCachingGhostObject__setFriction_p1:T1,_emscripten_bind_btConeTwistConstraint__getBFrame_p0:w0,_emscripten_bind_btRigidBody__getCenterOfMassPosition_p0:oy,_emscripten_bind_btDiscreteDynamicsWorld__rayTestSingle_p6:wk,_emscripten_bind_btTranslationalLimitMotor__set_m_maxMotorForce_p1:S$,_emscripten_bind_btConvexShape__getBoundingSphere_p2:Rg,_emscripten_bind_btConvexShape__getUserPointer_p0:Qh,_emscripten_bind_btDbvtBroadphase__get_m_cupdates_p0:sF,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_collisionFilterMask_p1:adf,_emscripten_bind_btContinuousDynamicsWorld__getSolverInfo_p0:BG,_emscripten_bind_btIDebugDraw__drawTriangle_p8:tc,_emscripten_bind_btSimpleBroadphase__getOverlappingPairCache_p0:kh,_emscripten_bind_btConeShapeZ__getMarginNV_p0:zl,_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p2:alM,_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p5:alP,_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p4:alO,_emscripten_bind_btCapsuleShapeX__isConcave_p0:ag7,_emscripten_bind_btEmptyShape__btEmptyShape_p0:o4,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_closestHitFraction_p0:Hp,_emscripten_bind_btPoint2PointConstraint__getPivotInA_p0:abP,_emscripten_bind_btDbvtBroadphase__set_m_newpairs_p1:sr,_emscripten_bind_btSliderConstraint__getRestitutionDirAng_p0:_N,_emscripten_bind_btDiscreteDynamicsWorld__getNumCollisionObjects_p0:vA,_emscripten_bind_btBU_Simplex1to4__getAabbSlow_p3:FC,_emscripten_bind_btBoxShape__localGetSupportVertexWithoutMarginNonVirtual_p1:afY,_emscripten_bind_btConvexTriangleMeshShape__getMarginNonVirtual_p0:iP,_emscripten_bind_btConeTwistConstraint__internalSetAppliedImpulse_p1:wW,_emscripten_bind_btGeneric6DofSpringConstraint__getUid_p0:adi,_emscripten_bind_btCylinderShapeZ__getContactBreakingThreshold_p1:acI,_emscripten_bind_btPolyhedralConvexShape__getContactBreakingThreshold_p1:sX,_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_persistentManifoldPool_p0:Rp,_emscripten_bind_btBvhTriangleMeshShape__serializeSingleTriangleInfoMap_p1:YW,_emscripten_bind_btUniversalConstraint__getAngle1_p0:nt,_emscripten_bind_btGeneric6DofSpringConstraint__setLinearLowerLimit_p1:aeR,_emscripten_bind_btSimpleBroadphaseProxy__set_m_collisionFilterGroup_p1:t9,_emscripten_bind_btQuaternion__setY_p1:aip,_emscripten_bind_btAngularLimit__isLimit_p0:jd,_emscripten_bind_btSphereShape__getAabbNonVirtual_p3:al4,_emscripten_bind_btCapsuleShape__getImplicitShapeDimensions_p0:fh,_emscripten_bind_btStaticPlaneShape____destroy___p0:VY,_emscripten_bind_btBoxShape__getContactBreakingThreshold_p1:af9,_emscripten_bind_btConeShapeX__isNonMoving_p0:Am,_emscripten_bind_btConvexInternalAabbCachingShape__getImplicitShapeDimensions_p0:P9,_emscripten_bind_btIDebugDraw__drawSpherePatch_p10:tu,_emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p2:NA,_emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p3:NB,_emscripten_bind_btBvhSubtreeInfo__set_m_rootNodeIndex_p1:ac0,_emscripten_bind_btUniformScalingShape__getMargin_p0:LD,_emscripten_bind_btSimpleDynamicsWorld__getWorldType_p0:ON,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getMargin_p0:ahe,_emscripten_bind_btConcaveShape__getAngularMotionDisc_p0:akO,_emscripten_bind_btGeneric6DofConstraint__getUserConstraintId_p0:VL,_emscripten_bind_btTransform__inverse_p0:XE,_emscripten_bind_btCylinderShapeX__isConvex2d_p0:Kw,_emscripten_bind_btOverlappingPairCache__sortOverlappingPairs_p1:V1,_emscripten_bind_btBroadphaseProxy__set_m_collisionFilterGroup_p1:aeH,_emscripten_bind_btBroadphaseInterface__rayTest_p4:i0,_emscripten_bind_btBroadphaseInterface__rayTest_p3:i$,_emscripten_bind_btQuaternion__setZ_p1:aiq,_emscripten_bind_btBU_Simplex1to4__setUserPointer_p1:Er,_emscripten_bind_btQuaternion__setW_p1:ain,_emscripten_bind_btContinuousDynamicsWorld__objectQuerySingle_p8:Dj,_emscripten_bind_btRigidBody__getInvInertiaTensorWorld_p0:oG,_emscripten_bind_btRigidBody__applyImpulse_p2:pD,_emscripten_bind_btCapsuleShapeZ__localGetSupportingVertex_p1:ai4,_emscripten_bind_btRigidBody__setNewBroadphaseProxy_p1:pt,_emscripten_bind_btSliderConstraint__setPoweredLinMotor_p1:_J,_emscripten_bind_btTriangleCallback__processTriangle_p3:wE,_emscripten_bind_btDynamicsWorld__contactPairTest_p3:mf,_emscripten_bind_btGeneric6DofConstraint__setUserConstraintId_p1:WE,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__addSingleResult_p2:adD,_emscripten_bind_btStaticPlaneShape__setLocalScaling_p1:VT,_emscripten_bind_btDynamicsWorld__removeAction_p1:mL,_emscripten_bind_btPolyhedralConvexAabbCachingShape__setMargin_p1:ahh,_emscripten_bind_btQuaternion__setX_p1:aio,_emscripten_bind_btManifoldResult__getPersistentManifold_p0:On,_emscripten_bind_btDispatcher__needsResponse_p2:RO,_emscripten_bind_btCapsuleShapeX__getName_p0:ahB,_emscripten_bind_btConvexShape__isInfinite_p0:Qg,_emscripten_bind_btSimpleBroadphaseProxy__get_m_nextFree_p0:t1,_emscripten_bind_btSimpleBroadphase__printStats_p0:kp,_emscripten_bind_btCollisionWorld__serialize_p1:SD,_emscripten_bind_btHeightfieldTerrainShape__getContactBreakingThreshold_p1:Qp,_emscripten_bind_btConeShapeX__getImplicitShapeDimensions_p0:Ap,_emscripten_bind_btConeShapeZ__getContactBreakingThreshold_p1:zW,_emscripten_bind_btPolyhedralConvexShape__isConvex_p0:r8,_emscripten_bind_btGeneric6DofConstraint__setParam_p2:Wu,_emscripten_bind_btConeTwistConstraint__solveConstraintObsolete_p3:xI,_emscripten_bind_btUniformScalingShape__localGetSupportVertexWithoutMarginNonVirtual_p1:Ly,_emscripten_bind_btGeneric6DofSpringConstraint__get_limit_motor_info2_p12:aeX,_emscripten_bind_btDiscreteDynamicsWorld__setConstraintSolver_p1:wC,_emscripten_bind_btBU_Simplex1to4____destroy___p0:Fx,_emscripten_bind_btContinuousDynamicsWorld__synchronizeSingleMotionState_p1:Dd,_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_stackAlloc_p1:Rw,_emscripten_bind_btTranslationalLimitMotor__set_m_limitSoftness_p1:S6,_emscripten_bind_btMultiSphereShape__isSoftBody_p0:Pe,_emscripten_bind_btContinuousDynamicsWorld__getNumConstraints_p0:Ci,_emscripten_bind_btCompoundShape__getBoundingSphere_p2:k7,_emscripten_bind_btPoint2PointConstraint__getUserConstraintType_p0:ab4,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_linearSleepingThreshold_p0:XT,_emscripten_bind_btConstraintSetting__get_m_damping_p0:mn,_emscripten_bind_btGeneric6DofConstraint__setDbgDrawSize_p1:WN,_emscripten_bind_btMatrix3x3__getRow_p1:ej,_emscripten_bind_btBvhSubtreeInfo__btBvhSubtreeInfo_p0:ady,_emscripten_bind_btConeShape__isConvex_p0:CL,_emscripten_bind_btGeneric6DofSpringConstraint__calculateSerializeBufferSize_p0:aeV,_emscripten_bind_btVector4__distance_p1:F5,_emscripten_bind_btMatrix3x3__op_set_p1:eA,_emscripten_bind_btRigidBody__getAngularSleepingThreshold_p0:pY,_emscripten_bind_btScaledBvhTriangleMeshShape__processAllTriangles_p3:lE,_emscripten_bind_btCollisionObject__getDeactivationTime_p0:g0,_emscripten_bind_btCollisionShape__setMargin_p1:Wo,_emscripten_bind_btBroadphaseRayCallback__get_m_lambda_max_p0:Bt,_emscripten_bind_btSphereShape__btSphereShape_p1:amg,_emscripten_bind_btContinuousDynamicsWorld__setSynchronizeAllMotionStates_p1:BL,_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportVertexNonVirtual_p1:QC,_emscripten_bind_btUniformScalingShape__isNonMoving_p0:KT,_emscripten_bind_btPersistentManifold__refreshContactPoints_p2:kw,_emscripten_bind_btVector3__setZero_p0:HS,_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitNormalLocal_p1:ale,_emscripten_bind_btPolyhedralConvexShape__serialize_p2:sY,_emscripten_bind_btTriangleMesh__preallocateIndices_p1:A9,_emscripten_bind_btConvexTriangleMeshShape__getVertex_p2:id,_emscripten_bind_btGeneric6DofSpringConstraint__enableFeedback_p1:aea,_emscripten_bind_btSliderConstraint__getDampingOrthoAng_p0:$a,_emscripten_bind_btCapsuleShapeX__getAabbNonVirtual_p3:ahz,_emscripten_bind_btCapsuleShapeX__localGetSupportingVertexWithoutMargin_p1:ahD,_emscripten_bind_btDiscreteDynamicsWorld__setNumTasks_p1:v$,_emscripten_bind_btCollisionObject__setCollisionShape_p1:h0,_emscripten_bind_btContinuousDynamicsWorld__debugDrawConstraint_p1:CU,_emscripten_bind_btCylinderShape__getUserPointer_p0:Me,_emscripten_bind_btTransform__btTransform_p1:X8,_emscripten_bind_btTransform__btTransform_p0:X7,_emscripten_bind_btTransform__btTransform_p2:X9,_emscripten_bind_btVector3__normalize_p0:GN,_emscripten_bind_btConvexHullShape__getPoints_p0:f1,_emscripten_bind_btDiscreteDynamicsWorld__serialize_p1:vW,_emscripten_bind_btGeneric6DofSpringConstraint__getRigidBodyB_p0:adh,_emscripten_bind_btConvexInternalAabbCachingShape__getUserPointer_p0:P5,_emscripten_bind_btUniversalConstraint__getAppliedImpulse_p0:nD,_emscripten_bind_CProfileNode__Get_Total_Calls_p0:Yu,_emscripten_bind_btVector3__btVector3_p3:GX,_emscripten_bind_btConeShapeZ__getAabbNonVirtual_p3:zN,_emscripten_bind_btMultiSphereShape__getMarginNonVirtual_p0:PA,_emscripten_bind_btCollisionWorld__contactPairTest_p3:SR,_emscripten_bind_btDispatcherInfo__set_m_enableSPU_p1:e1,_emscripten_bind_btManifoldResult__refreshContactPoints_p0:OZ,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__btRigidBodyConstructionInfo_p4:YY,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__btRigidBodyConstructionInfo_p3:Ya,_emscripten_bind_btCapsuleShapeX__isCompound_p0:agU,_emscripten_bind_btOverlappingPairCache__findPair_p2:V7,_emscripten_bind_btBU_Simplex1to4__isInfinite_p0:Ex,_emscripten_bind_btWheelInfo__get_m_wheelsDampingRelaxation_p0:D8,_emscripten_bind_btGeneric6DofConstraint__getCalculatedTransformA_p0:VK,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_motionState_p1:Yi,_emscripten_bind_btGhostObject__getHitFraction_p0:aj5,_emscripten_bind_btSequentialImpulseConstraintSolver__solveGroup_p10:NY,_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportVertexNonVirtual_p1:agB,_emscripten_bind_btCompoundShape__setUserPointer_p1:kK,_emscripten_bind_btSequentialImpulseConstraintSolver__getRandSeed_p0:Ns,_emscripten_bind_btBoxShape____destroy___p0:agg,_emscripten_bind_btConvexHullShape__getNumPreferredPenetrationDirections_p0:ga,_emscripten_bind_btTriangleMesh__InternalProcessAllTriangles_p3:A4,_emscripten_bind_btUniformScalingShape__getAabbNonVirtual_p3:Lv,_emscripten_bind_btTypedConstraint__getAppliedImpulse_p0:rm,_emscripten_bind_CProfileNode__Call_p0:YN,_emscripten_bind_btQuaternion__length_p0:ai2,_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportVertexWithoutMarginNonVirtual_p1:QG,_emscripten_bind_btCapsuleShapeZ__getLocalScalingNV_p0:aiD,_emscripten_bind_btPairCachingGhostObject__rayTest_p3:US,_emscripten_bind_btGeneric6DofSpringConstraint__get_m_useSolveConstraintObsolete_p0:aep,_emscripten_bind_btConvexInternalShape__isInfinite_p0:To,_emscripten_bind_btEmptyShape__setMargin_p1:oU,_emscripten_bind_btPairCachingGhostObject__getCollisionFlags_p0:U4,_emscripten_bind_btHinge2Constraint__setLowerLimit_p1:Jg,_emscripten_bind_btContinuousDynamicsWorld__clearForces_p0:Ca,_emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p1:Nz,_emscripten_bind_btConvexShape__getAngularMotionDisc_p0:Rh,_emscripten_bind_btVector4__minAxis_p0:FQ,_emscripten_bind_btConeShapeZ__getUserPointer_p0:zt,_emscripten_bind_btCollisionShape__isPolyhedral_p0:Vu,_emscripten_bind_btCylinderShapeZ__getLocalScalingNV_p0:acb,_emscripten_bind_btCylinderShape__serialize_p2:Mu,_emscripten_bind_btDynamicsWorld__setDebugDrawer_p1:l8,_emscripten_bind_btDiscreteDynamicsWorld__addAction_p1:vT,_emscripten_bind_btConeTwistConstraint__calculateSerializeBufferSize_p0:xg,_emscripten_bind_btDbvtBroadphase__set_m_fupdates_p1:so,_emscripten_bind_btUniversalConstraint__getConstraintType_p0:nm,_emscripten_bind_btHeightfieldTerrainShape__calculateLocalInertia_p2:PI,_emscripten_bind_btBoxShape__setLocalScaling_p1:af7,_emscripten_bind_btTransform__serializeFloat_p1:XL,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_startWorldTransform_p1:YG,_emscripten_bind_btJacobianEntry__get_m_linearJointAxis_p0:R$,_emscripten_bind_CProfileNode__Get_Parent_p0:Yt,_emscripten_bind_btConvexShape__isCompound_p0:Qe,_emscripten_bind_btTriangleInfo__get_m_edgeV2V0Angle_p0:He,_emscripten_bind_btTriangleInfo____destroy___p0:H6,_emscripten_bind_btSliderConstraint__getUserConstraintId_p0:_1,_emscripten_bind_btContinuousDynamicsWorld__contactTest_p2:Cn,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_collisionFilterMask_p0:adb,_emscripten_bind_btRotationalLimitMotor__get_m_currentLimit_p0:y0,_emscripten_bind_btScaledBvhTriangleMeshShape__isConvex_p0:li,_emscripten_bind_btHinge2Constraint__getLinearUpperLimit_p1:I6,_emscripten_bind_btDynamicsWorld__getBroadphase_p0:mh,_emscripten_bind_btCapsuleShapeX__calculateLocalInertia_p2:ahu,_emscripten_bind_btDynamicsWorld__getDispatchInfo_p0:ml,_emscripten_bind_btConvexHullShape__getNumEdges_p0:ge,_emscripten_bind_btSimpleDynamicsWorld__getConstraintSolver_p0:OI,_emscripten_bind_btRigidBody__upcast_p1:p5,_emscripten_bind_btDispatcherInfo____destroy___p0:fn,_emscripten_bind_btSerializer__getSerializationFlags_p0:HY,_emscripten_bind_btGeneric6DofConstraint__internalGetAppliedImpulse_p0:WC,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getPreferredPenetrationDirection_p2:ahg,_emscripten_bind_btTransform__inverseTimes_p1:XZ,_emscripten_bind_btPoint2PointConstraint__updateRHS_p1:abN,_emscripten_bind_btVector3__w_p0:G5,_emscripten_bind_bt32BitAxisSweep3__quantize_p3:ali,_emscripten_bind_btDynamicsWorld__setForceUpdateAllAabbs_p1:mi,_emscripten_bind_btCompoundShape__getUserPointer_p0:kQ,_emscripten_bind_btBU_Simplex1to4__setImplicitShapeDimensions_p1:E1,_emscripten_bind_btCapsuleShape__isSoftBody_p0:fg,_emscripten_bind_btWheelInfo__get_m_brake_p0:Ec,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__addSingleResult_p2:Kg,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_closestHitFraction_p1:ac5,_emscripten_bind_btTypedConstraint__getInfo2_p1:rU,_emscripten_bind_btSimpleBroadphase__createProxy_p8:ko,_emscripten_bind_btConvexInternalAabbCachingShape__isCompound_p0:P_,_emscripten_bind_btCompoundShape__getMargin_p0:k0,_emscripten_bind_btConeShape__getLocalScaling_p0:Dn,_emscripten_bind_btPairCachingGhostObject__isActive_p0:Uv,_emscripten_bind_btConeShape__isConcave_p0:DH,_emscripten_bind_btStorageResult__set_m_normalOnSurfaceB_p1:NK,_emscripten_bind_btGeneric6DofSpringConstraint__getAppliedImpulse_p0:aeq,_emscripten_bind_btCollisionObject__setActivationState_p1:hx,_emscripten_bind_btConeTwistConstraint__getRigidBodyA_p0:vI,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAngularMotionDisc_p0:ahn,_emscripten_bind_btConvexHullShape__getPlane_p3:hR,_emscripten_bind_btGeneric6DofConstraint__setupSolverConstraint_p4:Xi,_emscripten_bind_btManifoldResult____destroy___p0:OV,_emscripten_bind_btHinge2Constraint__btHinge2Constraint_p5:Jy,_emscripten_bind_btPoint2PointConstraint__buildJacobian_p0:abI,_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitFraction_p0:ak5,_emscripten_bind_btContinuousDynamicsWorld__getGravity_p0:C$,_emscripten_bind_btManifoldPoint__getPositionWorldOnB_p0:aar,_emscripten_bind_btPolyhedralConvexShape__localGetSupportVertexNonVirtual_p1:sN,_emscripten_bind_btHinge2Constraint__set_m_objectType_p1:HF,_emscripten_bind_btTypedConstraint__internalGetAppliedImpulse_p0:rj,_emscripten_bind_btTriangleIndexVertexArray__setPremadeAabb_p2:afG,_emscripten_bind_btHingeConstraint__setUseFrameOffset_p1:x0,_emscripten_bind_btGhostObject__forceActivationState_p1:ajG,_emscripten_bind_btRaycastVehicle__getChassisWorldTransform_p0:JE,_emscripten_bind_btTypedConstraint__getObjectType_p0:rd,_emscripten_bind_CProfileNode__Get_Sub_Node_p1:YZ,_emscripten_bind_btQuaternion__angle_p1:aid,_emscripten_bind_btGhostObject__setCollisionShape_p1:ajA,_emscripten_bind_btTriangleMesh__get_m_weldingThreshold_p0:As,_emscripten_bind_btBvhTriangleMeshShape__getName_p0:Zy,_emscripten_bind_btRigidBody__internalGetTurnVelocity_p0:qA,_emscripten_bind_btVector3__op_comp_p1:Gy,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_angularSleepingThreshold_p0:Yr,_emscripten_bind_btVector3__getY_p0:Gr,_emscripten_bind_btManifoldPoint__set_m_positionWorldOnB_p1:abh,_emscripten_bind_btConvexInternalShape__getName_p0:TH,_emscripten_bind_btConvexTriangleMeshShape__getAabbNonVirtual_p3:iy,_emscripten_bind_btRigidBody__getCcdSquareMotionThreshold_p0:qg,_emscripten_bind_btManifoldPoint__get_m_userPersistentData_p0:aao,_emscripten_bind_btSliderConstraint__getTargetLinMotorVelocity_p0:$d,_emscripten_bind_btBU_Simplex1to4__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:Fy,_emscripten_bind_btBroadphaseProxy__get_m_clientObject_p0:aez,_emscripten_bind_btBvhTriangleMeshShape__isConcave_p0:Zc,_emscripten_bind_btCollisionObject__getInterpolationAngularVelocity_p0:hd,_emscripten_bind_btUniversalConstraint__updateRHS_p1:nT,_emscripten_bind_btRigidBody__applyDamping_p1:rr,_emscripten_bind_btConvexInternalShape__isNonMoving_p0:Tq,_emscripten_bind_btStaticPlaneShape__isConcave_p0:Vq,_emscripten_bind_btVector4__deSerializeFloat_p1:FI,_emscripten_bind_btCylinderShapeX__calculateTemporalAabb_p6:Ll,_emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintId_p0:adp,_emscripten_bind_btPolyhedralConvexAabbCachingShape__isInfinite_p0:agK,_emscripten_bind_btHinge2Constraint__calculateTransforms_p2:Jc,_emscripten_bind_btCollisionWorld__btCollisionWorld_p3:S3,_emscripten_bind_btConeTwistConstraint__calcAngleInfo2_p4:wG,_emscripten_bind_btCapsuleShapeZ____destroy___p0:ajn,_emscripten_bind_btCapsuleShapeZ__getLocalScaling_p0:ai6,_emscripten_bind_btDynamicsWorld____destroy___p0:mc,_emscripten_bind_btSphereSphereCollisionAlgorithm__btSphereSphereCollisionAlgorithm_p4:jQ,_emscripten_bind_btNodeOverlapCallback__processNode_p2:kD,_emscripten_bind_btConvexShape__getLocalScaling_p0:Q$,_emscripten_bind_btPairCachingGhostObject__getInternalType_p0:Uw,_emscripten_bind_btStridingMeshInterface__calculateSerializeBufferSize_p0:abt,_emscripten_bind_btHinge2Constraint__getRigidBodyB_p0:HD,_emscripten_bind_btMatrix3x3__deSerializeFloat_p1:ei,_emscripten_bind_btBvhSubtreeInfo__setAabbFromQuantizeNode_p1:ac1,_emscripten_bind_btConeShapeX__setLocalScaling_p1:AC,_emscripten_bind_btUniversalConstraint__isEnabled_p0:nk,_emscripten_bind_btBvhTriangleMeshShape__getContactBreakingThreshold_p1:ZB,_emscripten_bind_btManifoldPoint__get_m_positionWorldOnA_p0:aaG,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_localInertia_p0:Ym,_emscripten_bind_btPolyhedralConvexShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:s3,_emscripten_bind_btSliderConstraint__setSoftnessLimAng_p1:_D,_emscripten_bind_btAxisSweep3__testAabbOverlap_p2:uR,_emscripten_bind_btCapsuleShapeX__isConvex2d_p0:ag4,_emscripten_bind_btCollisionAlgorithmConstructionInfo____destroy___p0:vl,_emscripten_bind_btPolyhedralConvexAabbCachingShape__isConvex_p0:agJ,_emscripten_bind_bt32BitAxisSweep3____destroy___p0:alS,_emscripten_bind_btVector3__triple_p2:Gu,_emscripten_bind_ConcreteContactResultCallback__needsCollision_p1:NT,_emscripten_bind_btSimpleBroadphaseProxy__getUid_p0:t7,_emscripten_bind_btConeShapeX__serialize_p2:z9,_emscripten_bind_btCollisionDispatcher__releaseManifold_p1:uz,_emscripten_bind_btRotationalLimitMotor__get_m_limitSoftness_p0:zi,_emscripten_bind_btBU_Simplex1to4__isNonMoving_p0:Ey,_emscripten_bind_btUniversalConstraint__get_m_useSolveConstraintObsolete_p0:nC,_emscripten_bind_btPoint2PointConstraint__getInfo2NonVirtual_p3:abE,_emscripten_bind_btBU_Simplex1to4__getBoundingSphere_p2:Fz,_emscripten_bind_btCapsuleShapeX__getContactBreakingThreshold_p1:ahH,_emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p0:jR,_emscripten_bind_btVector3__angle_p1:GO,_emscripten_bind_btCylinderShape__getLocalScalingNV_p0:Ma,_emscripten_bind_btConeShape__isInfinite_p0:CM,_emscripten_bind_btIndexedMesh__get_m_vertexStride_p0:gP,_emscripten_bind_btConvexTriangleMeshShape__isNonMoving_p0:im,_emscripten_bind_btHinge2Constraint__getAnchor2_p0:IJ,_emscripten_bind_btBroadphaseProxy__set_m_uniqueId_p1:aeD,_emscripten_bind_btConvexInternalAabbCachingShape__serialize_p2:Qz,_emscripten_bind_btManifoldPoint__set_m_combinedRestitution_p1:aaF,_emscripten_bind_btGeneric6DofConstraint__getUserConstraintPtr_p0:W0,_emscripten_bind_btCompoundShape__calculateLocalInertia_p2:kE,_emscripten_bind_btSliderConstraint__getDbgDrawSize_p0:_F,_emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p2:wr,_emscripten_bind_btRigidBody__setMotionState_p1:o0,_emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p1:wq,_emscripten_bind_btGeneric6DofSpringConstraint__getConstraintType_p0:ad9,_emscripten_bind_CProfileNode__Get_Sibling_p0:Yx,_emscripten_bind_btHingeConstraint__enableAngularMotor_p3:xD,_emscripten_bind_btDefaultMotionState__get_m_centerOfMassOffset_p0:BF,_emscripten_bind_btStaticPlaneShape__getName_p0:VS,_emscripten_bind_btGhostObject__getUserPointer_p0:ajT,_emscripten_bind_btPoint2PointConstraint__getInfo1NonVirtual_p1:abY,_emscripten_bind_btSimpleBroadphaseProxy__isInfinite_p1:tM,_emscripten_bind_btScaledBvhTriangleMeshShape__isPolyhedral_p0:lg,_emscripten_bind_btConeShape__getAngularMotionDisc_p0:ED,_emscripten_bind_btGeneric6DofConstraint__getInfo2NonVirtual_p7:Ww,_emscripten_bind_btConvexShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:Re,_emscripten_bind_btBU_Simplex1to4__getConvexPolyhedron_p0:Fc,_emscripten_bind_btHingeConstraint__isEnabled_p0:xV,_emscripten_bind_btGeneric6DofConstraint__getBreakingImpulseThreshold_p0:WA,_emscripten_bind_btSerializer__serializeName_p1:H2,_emscripten_bind_btDispatcherInfo__get_m_dispatchFunc_p0:eO,_emscripten_bind_btCompoundShape__createAabbTreeFromChildren_p0:kH,_emscripten_bind_btDbvtBroadphase__setVelocityPrediction_p1:sD,_emscripten_bind_btConcaveShape__processAllTriangles_p3:akE,_emscripten_bind_btGeneric6DofSpringConstraint__internalGetAppliedImpulse_p0:ad6,_emscripten_bind_btManifoldPoint__set_m_lateralFrictionDir1_p1:abf,_emscripten_bind_btRigidBody__isKinematicObject_p0:py,_emscripten_bind_btCapsuleShapeX__getHalfHeight_p0:agZ,_emscripten_bind_btVector4__rotate_p2:Ga,_emscripten_bind_btMatrix3x3__serialize_p1:d0,_emscripten_bind_btBvhTriangleMeshShape__isPolyhedral_p0:Y7,_emscripten_bind_btDbvtBroadphase__get_m_cid_p0:sB,_emscripten_bind_btContactConstraint__getUid_p0:$2,_emscripten_bind_btVector3__setInterpolate3_p3:Gt,_emscripten_bind_btConstraintSolver__allSolved_p3:Jv,_emscripten_bind_btMatrix3x3__btMatrix3x3_p9:eg,_emscripten_bind_btGeneric6DofSpringConstraint__getObjectType_p0:aed,_emscripten_bind_btTriangleMesh____destroy___p0:Bc,_emscripten_bind_btMatrix3x3__btMatrix3x3_p1:ef,_emscripten_bind_btMatrix3x3__btMatrix3x3_p0:ee,_emscripten_bind_btTriangleIndexVertexArray__calculateSerializeBufferSize_p0:afF,_emscripten_bind_btBvhSubtreeInfo____destroy___p0:adx,_emscripten_bind_btVector3__op_add_p1:Gx,_emscripten_bind_btActivatingCollisionAlgorithm__getAllContactManifolds_p1:ZS,_emscripten_bind_btHinge2Constraint__getAngle2_p0:IE,_emscripten_bind_btStridingMeshInterface__getLockedReadOnlyVertexIndexBase_p9:abo,_emscripten_bind_btBvhTriangleMeshShape__getShapeType_p0:Zg,_emscripten_bind_btContactConstraint__setUserConstraintType_p1:$4,_emscripten_bind_btHingeConstraint__getAngularOnly_p0:yl,_emscripten_bind_btCapsuleShapeX__getAngularMotionDisc_p0:ahR,_emscripten_bind_btBU_Simplex1to4__getNumPreferredPenetrationDirections_p0:ET,_emscripten_bind_btGhostObject__getCollisionShape_p0:ajP,_emscripten_bind_btCollisionObject__setWorldTransform_p1:h6,_emscripten_bind_btConeShapeZ__setMargin_p1:zZ,_emscripten_bind_btCapsuleShape__serialize_p2:fr,_emscripten_bind_btContactSolverInfo__btContactSolverInfo_p0:nh,_emscripten_bind_btRigidBody__computeAngularImpulseDenominator_p1:pr,_emscripten_bind_btTransform__getRotation_p0:XD,_emscripten_bind_btStridingMeshInterface__getScaling_p0:aaV,_emscripten_bind_btGhostObject__setHitFraction_p1:ajK,_emscripten_bind_btConeShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:EB,_emscripten_bind_btPersistentManifold__addManifoldPoint_p1:kz,_emscripten_bind_btSphereShape__getMargin_p0:amd,_emscripten_bind_btEmptyShape__serializeSingleShape_p1:oY,_emscripten_bind_btQuaternion__slerp_p2:aib,_emscripten_bind_btHinge2Constraint__setLinearUpperLimit_p1:Jq,_emscripten_bind_btPersistentManifold__getObjectType_p0:j1,_emscripten_bind_btCylinderShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:Lf,_emscripten_bind_btConvexHullShape__localGetSupportingVertexWithoutMargin_p1:gy,_emscripten_bind_bt32BitAxisSweep3__resetPool_p1:alI,_emscripten_bind_btHingeConstraint__testLimit_p2:xP,_emscripten_bind_btRigidBody__setLinearFactor_p1:qN,_emscripten_bind_btDynamicsWorld__setBroadphase_p1:ls,_emscripten_bind_btPairCachingGhostObject__getActivationState_p0:Ul,_emscripten_bind_btConvexInternalShape__calculateLocalInertia_p2:Tz,_emscripten_bind_btDispatcherInfo__get_m_enableSPU_p0:e0,_emscripten_bind_btEmptyShape__isPolyhedral_p0:od,_emscripten_bind_btPoint2PointConstraint__isEnabled_p0:abS,_emscripten_bind_btConeShape__getUserPointer_p0:CN,_emscripten_bind_btConvexShape__localGetSupportingVertexWithoutMargin_p1:Rc,_emscripten_bind_btCollisionWorld__ConvexResultCallback__addSingleResult_p2:BW,_emscripten_bind_btMatrix3x3__scaled_p1:d8,_emscripten_bind_btContinuousDynamicsWorld__updateSingleAabb_p1:Db,_emscripten_bind_btPairCachingGhostObject__internalGetExtensionPointer_p0:U8,_emscripten_bind_btCylinderShapeX____destroy___p0:Le,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_restitution_p1:Yb,_emscripten_bind_btContactConstraint__isEnabled_p0:$V,_emscripten_bind_btCollisionAlgorithmCreateFunc__get_m_swapped_p0:Sd,_emscripten_bind_btUniformScalingShape__localGetSupportVertexNonVirtual_p1:Lu,_emscripten_bind_btCylinderShapeX__isConvex_p0:Kr,_emscripten_bind_btIDebugDraw__drawArc_p9:tf,_emscripten_bind_btDiscreteDynamicsWorld__debugDrawConstraint_p1:wc,_emscripten_bind_btSliderConstraint__getAncorInA_p0:Z_,_emscripten_bind_btHingeConstraint__getUpperLimit_p0:xT,_emscripten_bind_btScaledBvhTriangleMeshShape__getChildShape_p0:lh,_emscripten_bind_btConvexShape__setLocalScaling_p1:Q6,_emscripten_bind_btConeShape__getConeUpIndex_p0:DG,_emscripten_bind_btHinge2Constraint____destroy___p0:I8,_emscripten_bind_btCapsuleShapeZ__setMargin_p1:ajk,_emscripten_bind_btAngularLimit__getLow_p0:jy,_emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintPtr_p0:aex,_emscripten_bind_btWheelInfo__set_m_maxSuspensionTravelCm_p1:DJ,_emscripten_bind_btMultiSphereShape__getSpherePosition_p1:O8,_emscripten_bind_btRigidBody__internalGetPushVelocity_p0:qp,_emscripten_bind_btPolyhedralConvexShape__getMarginNonVirtual_p0:s2,_emscripten_bind_btCollisionDispatcher__btCollisionDispatcher_p1:uN,_emscripten_bind_btStaticPlaneShape__getContactBreakingThreshold_p1:VV,_emscripten_bind_btConcaveShape__isConvex2d_p0:akm,_emscripten_bind_btBU_Simplex1to4__getImplicitShapeDimensions_p0:Fa,_emscripten_bind_btGeneric6DofConstraint__getInfo1NonVirtual_p1:WL,_emscripten_bind_btConvexShape__isConvex2d_p0:Qj,_emscripten_bind_btSerializer__setSerializationFlags_p1:HV,_emscripten_bind_btGeneric6DofSpringConstraint__getAxis_p1:aeO,_emscripten_bind_btCylinderShapeZ__isNonMoving_p0:acg,_emscripten_bind_btScaledBvhTriangleMeshShape__isSoftBody_p0:ln,_emscripten_bind_btPersistentManifold__replaceContactPoint_p2:kC,_emscripten_bind_btManifoldPoint__get_m_index1_p0:aaj,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getImplicitShapeDimensions_p0:agP,_emscripten_bind_btBoxShape__getPlane_p3:agm,_emscripten_bind_btAxisSweep3__rayTest_p3:u5,_emscripten_bind_btCollisionWorld__LocalRayResult____destroy___p0:Ie,_emscripten_bind_btBoxShape__getImplicitShapeDimensions_p0:afx,_emscripten_bind_btAxisSweep3__rayTest_p4:u6,_emscripten_bind_btAxisSweep3__rayTest_p5:u7,_emscripten_bind_btConvexInternalShape__isPolyhedral_p0:Tl,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionFilterMask_p0:JU,_emscripten_bind_btRigidBody__getInternalType_p0:ql,_emscripten_bind_btCapsuleShapeZ__calculateLocalInertia_p2:ai3,_emscripten_bind_btConvexInternalAabbCachingShape__isConvex2d_p0:P7,_emscripten_bind_btTypedObject__set_m_objectType_p1:gJ,_emscripten_bind_btConvexInternalShape__getShapeType_p0:TX,_emscripten_bind_btCollisionWorld__getBroadphase_p0:Sl,_emscripten_bind_btConeTwistConstraint__getUserConstraintType_p0:xs,_emscripten_bind_btTriangleInfo__get_m_edgeV0V1Angle_p0:Hb,_emscripten_bind_btGhostObject__internalSetTemporaryCollisionShape_p1:ajW,_emscripten_bind_btManifoldPoint__set_m_lifeTime_p1:aaU,_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_hitFraction_p0:Hz,_emscripten_bind_btCollisionShape__getAngularMotionDisc_p0:Wr,_emscripten_bind_btCompoundShape__recalculateLocalAabb_p0:k3,_emscripten_bind_btHingeConstraint__calculateSerializeBufferSize_p0:ys,_emscripten_bind_btDiscreteDynamicsWorld__removeConstraint_p1:v1,_emscripten_bind_btWheelInfo__get_m_skidInfo_p0:D6,_emscripten_bind_btConeTwistConstraint__getInfo2_p1:wM,_emscripten_bind_btConeShapeX__getContactBreakingThreshold_p1:AF,_emscripten_bind_btManifoldPoint__btManifoldPoint_p0:abL,_emscripten_bind_btBoxShape__serialize_p2:aga,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_rayFromWorld_p0:Hn,_emscripten_bind_btContactConstraint__get_m_objectType_p0:$T,_emscripten_bind_btBroadphaseProxy__isConcave_p1:ad5,_emscripten_bind_btCollisionWorld__RayResultCallback__needsCollision_p1:Lo,_emscripten_bind_btDiscreteDynamicsWorld__rayTest_p3:v2,_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_transformB_p1:YO,_emscripten_bind_btSliderConstraint__setRestitutionOrthoLin_p1:_Q,_emscripten_bind_btWheelInfo__get_m_rollInfluence_p0:DY,_emscripten_bind_btRaycastVehicle__getForwardVector_p0:J5,_emscripten_bind_btCollisionWorld__updateSingleAabb_p1:SV,_emscripten_bind_btAxisSweep3__setAabb_p4:u8,_emscripten_bind_btGeneric6DofSpringConstraint__getInfo1NonVirtual_p1:aef,_emscripten_bind_btCapsuleShape__setUserPointer_p1:e4,_emscripten_bind_btUniversalConstraint__getLinearLowerLimit_p1:nL,_emscripten_bind_btGeneric6DofSpringConstraint__isLimited_p1:aei,_emscripten_bind_btConcaveShape__serializeSingleShape_p1:akP,_emscripten_bind_btConvexHullShape__getNumVertices_p0:f8,_emscripten_bind_btRigidBody__translate_p1:p_,_emscripten_bind_btRigidBody__getActivationState_p0:oE,_emscripten_bind_btPersistentManifold__set_m_index1a_p1:j$,_emscripten_bind_btConeShape__localGetSupportVertexNonVirtual_p1:Dw,_emscripten_bind_btDiscreteDynamicsWorld__getCollisionObjectArray_p0:vv,_emscripten_bind_btCapsuleShape__localGetSupportVertexNonVirtual_p1:fB,_emscripten_bind_btAxisSweep3__createProxy_p8:ve,_emscripten_bind_btUniversalConstraint__getAxis_p1:nG,_emscripten_bind_btSliderConstraint__getMaxAngMotorForce_p0:Z2,_emscripten_bind_btSliderConstraint__calculateTransforms_p2:_Y,_emscripten_bind_btDbvtProxy__getUid_p0:Ne,_emscripten_bind_btCollisionAlgorithmCreateFunc__btCollisionAlgorithmCreateFunc_p0:S2,_emscripten_bind_btCompoundShape__getChildTransform_p1:kP,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumPreferredPenetrationDirections_p0:agz,_emscripten_bind_btCylinderShape__getHalfExtentsWithoutMargin_p0:Mg,_emscripten_bind_btRotationalLimitMotor__set_m_enableMotor_p1:yX,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getConvexPolyhedron_p0:agR,_emscripten_bind_btConvexInternalAabbCachingShape__getLocalScalingNV_p0:P2,_emscripten_bind_btDiscreteDynamicsWorld__applyGravity_p0:vV,_emscripten_bind_btStridingMeshInterface__preallocateIndices_p1:abp,_emscripten_bind_btRigidBody__mergesSimulationIslands_p0:o9,_emscripten_bind_btDbvtBroadphase__set_m_cupdates_p1:sG,_emscripten_bind_btTriangleMesh__getNumSubParts_p0:Bd,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_startWorldTransform_p0:Yl,_emscripten_bind_btTriangleMesh__getUse4componentVertices_p0:At,_emscripten_bind_btManifoldPoint__get_m_positionWorldOnB_p0:aaI,_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_localShapeInfo_p0:ak6,_emscripten_bind_btGeneric6DofConstraint__setLinearUpperLimit_p1:Xm,_emscripten_bind_btTranslationalLimitMotor__get_m_stopCFM_p0:Sr,_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_collisionObject_p0:HC,_emscripten_bind_btSphereShape__setUnscaledRadius_p1:alx,_emscripten_bind_btVector4__setInterpolate3_p3:FG,_emscripten_bind_btIndexedMesh__set_m_numTriangles_p1:gN,_emscripten_bind_btCylinderShape__getNumPreferredPenetrationDirections_p0:Mw,_emscripten_bind_btHingeConstraint__getUserConstraintPtr_p0:x4,_emscripten_bind_btConvexInternalShape__localGetSupportVertexNonVirtual_p1:TE,_emscripten_bind_btSphereShape____destroy___p0:amG,_emscripten_bind_btContinuousDynamicsWorld__getWorldType_p0:Da,_emscripten_bind_btConvexSeparatingDistanceUtil____destroy___p0:adJ,_emscripten_bind_btSliderConstraint__getLowerLinLimit_p0:$f,_emscripten_bind_btCapsuleShapeZ__serialize_p2:ai5,_emscripten_bind_btDynamicsWorld__addCollisionObject_p1:l2,_emscripten_bind_btDynamicsWorld__addCollisionObject_p2:l3,_emscripten_bind_btDynamicsWorld__addCollisionObject_p3:l4,_emscripten_bind_btStaticPlaneShape__getShapeType_p0:Vr,_emscripten_bind_btCollisionDispatcher__getManifoldByIndexInternal_p1:uA,_emscripten_bind_btDiscreteCollisionDetectorInterface__Result__setShapeIdentifiersB_p2:agq,_emscripten_bind_btMultiSphereShape__getNumPreferredPenetrationDirections_p0:Pk,_emscripten_bind_btManifoldPoint__getLifeTime_p0:aaz,_emscripten_bind_btUniversalConstraint__btUniversalConstraint_p5:n9,_emscripten_bind_btTransform__op_set_p1:X2,_emscripten_bind_btWheelInfo__set_m_maxSuspensionForce_p1:Ep,_emscripten_bind_btConvexTriangleMeshShape__getNumEdges_p0:iA,_emscripten_bind_btBU_Simplex1to4__localGetSupportVertexWithoutMarginNonVirtual_p1:E0,_emscripten_bind_btBvhTriangleMeshShape__isInfinite_p0:Zb,_emscripten_bind_btCollisionShape__isConvex2d_p0:Vz,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_rayFromWorld_p1:Id,_emscripten_bind_btBU_Simplex1to4__getMarginNonVirtual_p0:Fw,_emscripten_bind_btUniversalConstraint__getCalculatedTransformA_p0:mD,_emscripten_bind_btJacobianEntry__getRelativeVelocity_p4:R2,_emscripten_bind_btTriangleInfoMap__get_m_convexEpsilon_p0:akX,_emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_closestHitFraction_p1:Bw,_emscripten_bind_btUniformScalingShape__getName_p0:Lx,_emscripten_bind_btUniformScalingShape__btUniformScalingShape_p2:Mm,_emscripten_bind_btContinuousDynamicsWorld__addAction_p1:B4,_emscripten_bind_btBoxShape__setUserPointer_p1:afm,_emscripten_bind_btCollisionObject__setCollisionFlags_p1:hE,_emscripten_bind_btConeShapeZ__isSoftBody_p0:zw,_emscripten_bind_btConstraintSetting____destroy___p0:m0,_emscripten_bind_btGhostPairCallback__btGhostPairCallback_p0:am8,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_mass_p1:XP,_emscripten_bind_btOptimizedBvh____destroy___p0:rH,_emscripten_bind_btRigidBody__getOrientation_p0:o_,_emscripten_bind_btUniversalConstraint__getAngle2_p0:nr,_emscripten_bind_btSimpleDynamicsWorld__rayTestSingle_p6:OD,_emscripten_bind_btContactConstraint__internalSetAppliedImpulse_p1:$Z,_emscripten_bind_btDbvtBroadphase__set_m_stageCurrent_p1:tZ,_emscripten_bind_btPoint2PointConstraint__getDbgDrawSize_p0:abZ,_emscripten_bind_btAxisSweep3__getNumHandles_p0:uO,_emscripten_bind_btRigidBody__setCcdMotionThreshold_p1:pU,_emscripten_bind_btUniversalConstraint__setDbgDrawSize_p1:nw,_emscripten_bind_btScaledBvhTriangleMeshShape__getUserPointer_p0:lk,_emscripten_bind_btDbvtProxy__isConcave_p1:M_,_emscripten_bind_btVector4__triple_p2:FH,_emscripten_bind_btCylinderShapeZ__getBoundingSphere_p2:acP,_emscripten_bind_btOverlappingPairCache__hasDeferredRemoval_p0:V5,_emscripten_bind_btQuaternion__getAxis_p0:aif,_emscripten_bind_btVector3__getZ_p0:Gs,_emscripten_bind_btWheelInfo__set_m_chassisConnectionPointCS_p1:EH,_emscripten_bind_btPoint2PointConstraint__set_m_useSolveConstraintObsolete_p1:aa2,_emscripten_bind_btHinge2Constraint__set_m_useSolveConstraintObsolete_p1:IT,_emscripten_bind_btContinuousDynamicsWorld__addConstraint_p1:CY,_emscripten_bind_btIndexedMesh__set_m_numVertices_p1:gR,_emscripten_bind_btHashInt__btHashInt_p1:S1,_emscripten_bind_btConstraintSetting__get_m_tau_p0:mr,_emscripten_bind_btSliderConstraint__setRestitutionLimAng_p1:Zn,_emscripten_bind_btTriangleInfoMap__get_m_edgeDistanceThreshold_p0:akT,_emscripten_bind_btCapsuleShape__getHalfHeight_p0:e8,_emscripten_bind_btSliderConstraint__getLinDepth_p0:_L,_emscripten_bind_btGeneric6DofSpringConstraint__setAngularLowerLimit_p1:ae$,_emscripten_bind_btHashString__set_m_hash_p1:amA,_emscripten_bind_btDispatcherInfo__get_m_timeOfImpact_p0:eJ,_emscripten_bind_btScaledBvhTriangleMeshShape__setUserPointer_p1:le,_emscripten_bind_btConeTwistConstraint__getInfo1_p1:wL,_emscripten_bind_btGeneric6DofSpringConstraint__setupSolverConstraint_p4:ae_,_emscripten_bind_btConeShapeZ__getMargin_p0:zX,_emscripten_bind_btConvexTriangleMeshShape__getConvexPolyhedron_p0:ir,_emscripten_bind_btSphereSphereCollisionAlgorithm__getAllContactManifolds_p1:jH,_emscripten_bind_btSerializer__getUniquePointer_p1:H_,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalAngularDampingFactor_p1:Ys,_emscripten_bind_btUniformScalingShape__getContactBreakingThreshold_p1:LB,_emscripten_bind_btConvexInternalShape__isConcave_p0:TW,_emscripten_bind_btVector4__getW_p0:FL,_emscripten_bind_btCollisionConfiguration__getPersistentManifoldPool_p0:ks,_emscripten_bind_btConvexHullShape__getContactBreakingThreshold_p1:gp,_emscripten_bind_btVector3__serialize_p1:Go,_emscripten_bind_btQuantizedBvh__reportRayOverlappingNodex_p3:amS,_emscripten_bind_btCollisionObject__isKinematicObject_p0:hJ,_emscripten_bind_btSliderConstraint__setDampingOrthoLin_p1:Z7,_emscripten_bind_btSliderConstraint__getUid_p0:_o,_emscripten_bind_btDynamicsWorld__serialize_p1:lT,_emscripten_bind_btConeShapeZ__serialize_p2:zK,_emscripten_bind_btRaycastVehicle__getUpAxis_p0:JK,_emscripten_bind_btCylinderShapeZ__getRadius_p0:acz,_emscripten_bind_btCollisionObject__internalSetExtensionPointer_p1:g2,_emscripten_bind_btConvexHullShape__getLocalScalingNV_p0:fV,_emscripten_bind_btCylinderShape__btCylinderShape_p1:NG,_emscripten_bind_btSimpleDynamicsWorld____destroy___p0:OF,_emscripten_bind_btIDebugDraw__drawPlane_p4:to,_emscripten_bind_btPairCachingGhostObject__serializeSingleObject_p1:UZ,_emscripten_bind_btRaycastVehicle__setUserConstraintType_p1:JG,_memcpy:aDC,_emscripten_bind_btCapsuleShape__serializeSingleShape_p1:fM,_emscripten_bind_btPairCachingGhostObject__btPairCachingGhostObject_p0:UM,_emscripten_bind_btWheelInfo__get_m_steering_p0:DX,_emscripten_bind_btMultiSphereShape__setImplicitShapeDimensions_p1:Pq,_emscripten_bind_btRigidBody__hasContactResponse_p0:p4,_emscripten_bind_btGhostObject__isKinematicObject_p0:ake,_emscripten_bind_btBroadphasePair__btBroadphasePair_p2:BS,_emscripten_bind_btPairCachingGhostObject__getWorldTransform_p0:Uq,_emscripten_bind_btPersistentManifold__getBody1_p0:jY,_emscripten_bind_btUniversalConstraint__getAnchor2_p0:nv,_emscripten_bind_btCapsuleShapeX__calculateTemporalAabb_p6:ahU,_emscripten_bind_btSphereShape__isConcave_p0:amp,_emscripten_bind_btPolyhedralConvexShape__getUserPointer_p0:sa,_emscripten_bind_btRigidBody__getBroadphaseHandle_p0:pm,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalLinearDampingThresholdSqr_p1:Yg,_emscripten_bind_btRotationalLimitMotor__set_m_hiLimit_p1:y1,_emscripten_bind_btAxisSweep3____destroy___p0:vf,_emscripten_bind_btSliderConstraint__getDampingLimLin_p0:_M,_emscripten_bind_btConvexInternalAabbCachingShape__setMargin_p1:QO,_emscripten_bind_btContinuousDynamicsWorld__setBroadphase_p1:BJ,_emscripten_bind_btHinge2Constraint__getInfo1NonVirtual_p1:IH,_emscripten_bind_btGeneric6DofConstraint__getTranslationalLimitMotor_p0:WX,_emscripten_bind_btBvhTriangleMeshShape__serialize_p2:YX,_emscripten_bind_btConeShape__getImplicitShapeDimensions_p0:DF,_emscripten_bind_btDbvtProxy__set_m_uniqueId_p1:Nc,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitNormalWorld_p0:ac9,_emscripten_bind_btCylinderShapeX__isConcave_p0:Kz,_emscripten_bind_btConeShapeX__getAabbNonVirtual_p3:Ac,_emscripten_bind_btConvexTriangleMeshShape__getNonvirtualAabb_p4:iN,_emscripten_bind_btDiscreteDynamicsWorld__getDebugDrawer_p0:vU,_emscripten_bind_btCollisionAlgorithmCreateFunc____destroy___p0:SB,_emscripten_bind_btUniversalConstraint__setLinearLowerLimit_p1:nJ,_emscripten_bind_btCapsuleShape__isPolyhedral_p0:e6,_emscripten_bind_btGhostObject__getInterpolationLinearVelocity_p0:aiV,_emscripten_bind_btCapsuleShape__getContactBreakingThreshold_p1:fC,_emscripten_bind_btConvexTriangleMeshShape__isConvex_p0:ij,_emscripten_bind_btConvexShape__getMarginNonVirtual_p0:Rd,_emscripten_bind_btRotationalLimitMotor__set_m_damping_p1:y5,_emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_collisionFilterGroup_p0:BA,_emscripten_bind_btSimpleBroadphase__getAabb_p3:km,_emscripten_bind_btSliderConstraint__getRigidBodyB_p0:Zi,_emscripten_bind_btPersistentManifold__validContactDistance_p1:jZ,_emscripten_bind_btGeneric6DofSpringConstraint__getCalculatedTransformA_p0:ado,_emscripten_bind_btManifoldPoint__set_m_localPointB_p1:abl,_emscripten_bind_btTypedConstraint__getUserConstraintPtr_p0:re,_emscripten_bind_btPoint2PointConstraint__getAppliedImpulse_p0:ab5,_emscripten_bind_btBroadphaseProxy__isConvex_p1:ad1,_emscripten_bind_btGhostObject__setActivationState_p1:aj1,_emscripten_bind_btCapsuleShapeZ__getMarginNV_p0:aiE,_emscripten_bind_btTranslationalLimitMotor__isLimited_p1:Te,_emscripten_bind_btDbvtBroadphase__rayTest_p3:ty,_emscripten_bind_btDiscreteDynamicsWorld__setDebugDrawer_p1:wb,_emscripten_bind_btBroadphasePair__get_m_internalTmpValue_p0:Bm,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumVertices_p0:agx,_emscripten_bind_btDbvtProxy__set_stage_p1:M8,_emscripten_bind_btSliderConstraint__setUserConstraintPtr_p1:_v,_emscripten_bind_btConvexShape__isPolyhedral_p0:Qd,_emscripten_bind_btStridingMeshInterface__serialize_p2:abr,_emscripten_bind_btBvhTriangleMeshShape__isConvex_p0:Za,_emscripten_bind_btCollisionObject__btCollisionObject_p0:h$,_emscripten_bind_btStridingMeshInterface__getLockedVertexIndexBase_p9:abA,_emscripten_bind_btStridingMeshInterface__getLockedVertexIndexBase_p8:abz,_emscripten_bind_btGeneric6DofConstraint__getObjectType_p0:WJ,_emscripten_bind_btGeneric6DofConstraint__getRigidBodyA_p0:Wz,_emscripten_bind_btRaycastVehicle__resetSuspension_p0:JF,_emscripten_bind_btCapsuleShapeX__getLocalScalingNV_p0:ag_,_emscripten_bind_btConeShapeX__isInfinite_p0:Aj,_emscripten_bind_ConcreteContactResultCallback__ConcreteContactResultCallback_p0:Of,_emscripten_bind_btConeShape__getLocalScalingNV_p0:CJ,_emscripten_bind_btRigidBody__applyGravity_p0:pM,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitPointWorld_p1:adE,_emscripten_bind_btMultiSphereShape__localGetSupportVertexWithoutMarginNonVirtual_p1:Pp,_emscripten_bind_btCylinderShapeZ__getUserPointer_p0:acf,_emscripten_bind_btRigidBody__getContactProcessingThreshold_p0:qz,_emscripten_bind_btSliderConstraint__getSoftnessDirAng_p0:_5,_emscripten_bind_btConstraintSetting__set_m_damping_p1:mq,_emscripten_bind_btPoint2PointConstraint__getUserConstraintPtr_p0:abX,_emscripten_bind_btUniversalConstraint__getCalculatedTransformB_p0:nz,_emscripten_bind_btTypedConstraint__get_m_objectType_p0:q5,_emscripten_bind_btCompoundShape__calculatePrincipalAxisTransform_p3:lz,_emscripten_bind_btConvexTriangleMeshShape__isInfinite_p0:ik,_emscripten_bind_btSliderConstraint__getInfo2_p1:ZZ,_emscripten_bind_btEmptyShape__getUserPointer_p0:og,_emscripten_bind_btSliderConstraint__getSoftnessLimLin_p0:_H,_emscripten_bind_btCollisionObject__internalGetExtensionPointer_p0:hD,_emscripten_bind_btTriangleMesh__addTriangle_p4:BN,_emscripten_bind_btConeShapeX__getMargin_p0:AG,_emscripten_bind_btSphereShape__getLocalScaling_p0:al2,_emscripten_bind_btBU_Simplex1to4__calculateTemporalAabb_p6:FE,_emscripten_bind_btConvexTriangleMeshShape__getLocalScalingNV_p0:ig,_emscripten_bind_btPolyhedralConvexShape__setUserPointer_p1:ro,_emscripten_bind_btConeShapeZ__getLocalScaling_p0:zL,_emscripten_bind_btCompoundShape__addChildShape_p2:k$,_emscripten_bind_btVector3__setZ_p1:G$,_emscripten_bind_btConeTwistConstraint__getParam_p1:wJ,_emscripten_bind_btConeTwistConstraint__getParam_p2:wK,_emscripten_bind_btAxisSweep3__quantize_p3:u1,_emscripten_bind_btDbvtBroadphase__set_m_fixedleft_p1:tY,_emscripten_bind_btPoint2PointConstraint__solveConstraintObsolete_p3:act,_emscripten_bind_btConvexShape__isConcave_p0:Rk,_emscripten_bind_btConvexHullShape__setMargin_p1:gv,_emscripten_bind_btConvexInternalAabbCachingShape__isConcave_p0:Qa,_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultStackAllocatorSize_p0:Rr,_emscripten_bind_btCapsuleShape__getMarginNV_p0:fa,_emscripten_bind_btCollisionWorld__debugDrawObject_p3:SG,_emscripten_bind_btUniversalConstraint__getDbgDrawSize_p0:n$,_emscripten_bind_btConvexInternalAabbCachingShape__isInfinite_p0:P4,_emscripten_bind_btQuaternion____destroy___p0:ai0,_emscripten_bind_btManifoldPoint__set_m_localPointA_p1:abm,_emscripten_bind_btSliderConstraint__setDampingLimAng_p1:_S,_emscripten_bind_btTriangleMesh__addTriangle_p3:BM,_emscripten_bind_btTriangleInfoMap__set_m_edgeDistanceThreshold_p1:akY,_emscripten_bind_btConeShapeZ__setLocalScaling_p1:zT,_emscripten_bind_btUniversalConstraint__getInfo2NonVirtual_p7:m8,_emscripten_bind_btBroadphasePair__set_m_internalInfo1_p1:Bp,_emscripten_bind_btUniversalConstraint__getParam_p1:m9,_emscripten_bind_btUniformScalingShape__getMarginNonVirtual_p0:LH,_emscripten_bind_btConeShape__getMargin_p0:Dz,_emscripten_bind_btMatrix3x3__getEulerZYX_p3:eB,_emscripten_bind_btWheelInfo__get_m_clientInfo_p0:D4,_emscripten_bind_btMatrix3x3__getEulerZYX_p4:eD,_emscripten_bind_btTriangleIndexVertexArray____destroy___p0:afg,_emscripten_bind_btHashString__portableStringCompare_p2:amE,_emscripten_bind_btCollisionShape__isSoftBody_p0:VA,_emscripten_bind_btCapsuleShapeZ__isNonMoving_p0:aiI,_emscripten_bind_btSliderConstraint__isEnabled_p0:Zo,_emscripten_bind_btConcaveShape__setMargin_p1:akL,_emscripten_bind_btCollisionWorld__getDispatcher_p0:Sg,_emscripten_bind_btTriangleInfoMap__calculateSerializeBufferSize_p0:akR,_emscripten_bind_btCollisionDispatcher__allocateCollisionAlgorithm_p1:uG,_emscripten_bind_btConvexInternalAabbCachingShape__getMarginNV_p0:P0,_emscripten_bind_btUniformScalingShape__getLocalScaling_p0:Ls,_emscripten_bind_btTriangleIndexVertexArray__getLockedReadOnlyVertexIndexBase_p9:afd,_emscripten_bind_btPairCachingGhostObject__isKinematicObject_p0:Ve,_emscripten_bind_btContinuousDynamicsWorld__debugDrawWorld_p0:CV,_emscripten_bind_btContactConstraint__getContactManifold_p0:$R,_emscripten_bind_btTriangleIndexVertexArray__preallocateVertices_p1:afh,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionFilterMask_p0:Ho,_emscripten_bind_btBU_Simplex1to4__isConvex_p0:Ew,_emscripten_bind_btMultiSphereShape__getName_p0:Po,_emscripten_bind_btStaticPlaneShape__processAllTriangles_p3:VQ,_emscripten_bind_btBU_Simplex1to4__getIndex_p1:EW,_emscripten_bind_CProfileNode__Get_Child_p0:Yy,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_convexFromWorld_p1:adH,_emscripten_bind_btCylinderShapeZ__btCylinderShapeZ_p1:acT,_emscripten_bind_btContinuousDynamicsWorld__rayTestSingle_p6:C0,_emscripten_bind_btConvexHullShape__serialize_p2:gr,_emscripten_bind_btSimpleDynamicsWorld__objectQuerySingle_p8:OU,_emscripten_bind_btManifoldPoint____destroy___p0:abi,_emscripten_bind_btConeShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1:zR,_emscripten_bind_btQuantizedBvh____destroy___p0:amX,_emscripten_bind_btPoint2PointConstraint__get_m_useSolveConstraintObsolete_p0:ab2,_emscripten_bind_btRigidBody__getMotionState_p0:pR,_emscripten_bind_btDiscreteDynamicsWorld__setForceUpdateAllAabbs_p1:vE,_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_maxSuspensionForce_p0:$D,_emscripten_bind_btIndexedMesh__get_m_triangleIndexBase_p0:gV,_emscripten_bind_btScaledBvhTriangleMeshShape__getShapeType_p0:lp,_emscripten_bind_btCollisionObject__hasAnisotropicFriction_p0:hH,_emscripten_bind_btStridingMeshInterface__unLockVertexBase_p1:abC,_emscripten_bind_btAxisSweep3__getAabb_p3:va,_emscripten_bind_btGeneric6DofSpringConstraint__needsFeedback_p0:aec,_emscripten_bind_btContinuousDynamicsWorld__addConstraint_p2:CZ,_emscripten_bind_btCollisionAlgorithm__getAllContactManifolds_p1:alY,_emscripten_bind_btCollisionDispatcher__setNearCallback_p1:uf,_emscripten_bind_btMultiSphereShape__localGetSupportVertexNonVirtual_p1:Pl,_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p4:YU,_emscripten_bind_btTypedConstraint__solveConstraintObsolete_p3:rY,_emscripten_bind_btSimpleDynamicsWorld__convexSweepTest_p4:Ox,_emscripten_bind_btManifoldPoint__set_m_appliedImpulse_p1:aac,_emscripten_bind_btGhostObject__getIslandTag_p0:aiY,_emscripten_bind_btCollisionWorld__removeCollisionObject_p1:SX,_emscripten_bind_btCompoundShape__removeChildShape_p1:lA,_emscripten_bind_btUniformScalingShape__localGetSupportingVertex_p1:Lq,_emscripten_bind_btContactConstraint__getUserConstraintType_p0:$7,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalDamping_p0:XO,_emscripten_bind_btConstraintSetting__get_m_impulseClamp_p0:mo,_emscripten_bind_btStaticPlaneShape__btStaticPlaneShape_p2:Wx,_emscripten_bind_btAngularLimit__getHigh_p0:jw,_emscripten_bind_btPairCachingGhostObject__getRestitution_p0:Un,_emscripten_bind_btMatrix3x3__determinant_p0:en,_emscripten_bind_btRigidBody__getTotalForce_p0:ox,_emscripten_bind_btSimpleDynamicsWorld__removeConstraint_p1:N7,_emscripten_bind_btCylinderShape__isConvex_p0:Mc,_emscripten_bind_CProfileNode__CProfileNode_p2:Y_,_emscripten_bind_btSliderConstraint__setTargetAngMotorVelocity_p1:_4,_emscripten_bind_btSimpleBroadphaseProxy__set_m_collisionFilterMask_p1:uc,_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionStiffness_p1:$v,_emscripten_bind_btManifoldResult__getBody0Internal_p0:Oo,_emscripten_bind_btConeShapeX__isCompound_p0:zB,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalLinearDampingThresholdSqr_p0:Yp,_emscripten_bind_btHingeConstraint__btHingeConstraint_p3:yC,_emscripten_bind_btBoxShape__calculateLocalInertia_p2:afR,_emscripten_bind_btSphereShape__getRadius_p0:alv,_emscripten_bind_btConvexInternalAabbCachingShape____destroy___p0:QR,_emscripten_bind_btUniversalConstraint__setBreakingImpulseThreshold_p1:nB,_emscripten_bind_btHingeConstraint__getHingeAngle_p0:xN,_emscripten_bind_btHingeConstraint__getHingeAngle_p2:xO,_emscripten_bind_btPolyhedralConvexShape__setLocalScaling_p1:sV,_emscripten_bind_btConeTwistConstraint__getBreakingImpulseThreshold_p0:xr,_emscripten_bind_btSimpleDynamicsWorld__addConstraint_p2:OA,_emscripten_bind_btOptimizedBvh__quantize_p3:rv,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_friction_p1:XU,_emscripten_bind_btAngularLimit__test_p1:jx,_emscripten_bind_btContactConstraint__solveConstraintObsolete_p3:abe,_emscripten_bind_btSimpleDynamicsWorld__getNumCollisionObjects_p0:Oh,_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionCompression_p0:$z,_emscripten_bind_btContinuousDynamicsWorld__setDebugDrawer_p1:CT,_emscripten_bind_btUniversalConstraint__solveConstraintObsolete_p3:n6,_emscripten_bind_btDynamicsWorld__setGravity_p1:lR,_emscripten_bind_btHinge2Constraint__getRelativePivotPosition_p1:HI,_emscripten_bind_btSimpleDynamicsWorld__getBroadphase_p0:Ok,_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_hitNormalInWorld_p0:LP,_emscripten_bind_btMultiSphereShape__getPreferredPenetrationDirection_p2:Pw,_emscripten_bind_btIndexedMesh__set_m_triangleIndexBase_p1:gY,_emscripten_bind_btSliderConstraint__setSoftnessLimLin_p1:Zr,_emscripten_bind_btCollisionShape__getUserPointer_p0:Vx,_emscripten_bind_btRotationalLimitMotor__set_m_targetVelocity_p1:zd,_emscripten_bind_btGeneric6DofSpringConstraint__set_m_objectType_p1:adj,_emscripten_bind_btUniversalConstraint__setParam_p3:m7,_emscripten_bind_btUniversalConstraint__setParam_p2:m6,_emscripten_bind_btGeneric6DofConstraint__setUserConstraintType_p1:WQ,_emscripten_bind_btManifoldResult__setPersistentManifold_p1:Oq,_emscripten_bind_btContinuousDynamicsWorld__updateVehicles_p1:Dc,_emscripten_bind_btStaticPlaneShape__getPlaneNormal_p0:Vi,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_mass_p0:XX,_emscripten_bind_btDynamicsWorld__synchronizeMotionStates_p0:l9,_emscripten_bind_btGhostObject__isStaticOrKinematicObject_p0:aka,_emscripten_bind_btJacobianEntry__btJacobianEntry_p0:RX,_emscripten_bind_btWheelInfo__get_m_suspensionStiffness_p0:Ek,_emscripten_bind_btConvexTriangleMeshShape__btConvexTriangleMeshShape_p2:iw,_emscripten_bind_btConvexTriangleMeshShape__btConvexTriangleMeshShape_p1:iv,_emscripten_bind_btConeShapeZ__setImplicitShapeDimensions_p1:z_,_emscripten_bind_btSliderConstraint__getAppliedImpulse_p0:_O,_emscripten_bind_btSimpleDynamicsWorld__serialize_p1:N$,_emscripten_bind_btConvexInternalShape__getAabbSlow_p3:UF,_emscripten_bind_btGeneric6DofSpringConstraint__getAngularLowerLimit_p1:adu,_emscripten_bind_btCapsuleShapeZ__getContactBreakingThreshold_p1:ajg,_emscripten_bind_btDiscreteDynamicsWorld__setSynchronizeAllMotionStates_p1:vu,_emscripten_bind_btTriangleIndexVertexArray__getIndexedMeshArray_p0:aeM,_emscripten_bind_btClock__op_set_p1:Xr,_emscripten_bind_btStaticPlaneShape__isNonMoving_p0:Vm,_emscripten_bind_btPolyhedralConvexShape__getMargin_p0:sZ,_emscripten_bind_btDbvtProxy__get_m_collisionFilterMask_p0:Nd,_emscripten_bind_btTriangleIndexVertexArray__calculateAabbBruteForce_p2:aff,_emscripten_bind_btGeneric6DofSpringConstraint__solveConstraintObsolete_p3:ae0,_emscripten_bind_btConvexHullShape__getVertex_p2:gb,_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultMaxCollisionAlgorithmPoolSize_p0:Rt,_emscripten_bind_btDefaultMotionState__set_m_graphicsWorldTrans_p1:B$,_emscripten_bind_btHashString____destroy___p0:am0,_emscripten_bind_btBU_Simplex1to4__isConvex2d_p0:Ev,_emscripten_bind_btGhostObject__addOverlappingObjectInternal_p1:ajB,_emscripten_bind_btGhostObject__addOverlappingObjectInternal_p2:ajC,_emscripten_bind_btRaycastVehicle__updateFriction_p1:Kb,_emscripten_bind_btUniformScalingShape__isPolyhedral_p0:KN,_emscripten_bind_btTypedObject__btTypedObject_p1:ie,_emscripten_bind_btDbvtBroadphase__aabbTest_p3:un,_emscripten_bind_btCylinderShape__localGetSupportingVertex_p1:Mt,_emscripten_bind_btCollisionShape__isConvex_p0:Vv,_emscripten_bind_btGeneric6DofConstraint__getInfo2_p1:W4,_emscripten_bind_btCollisionObject__setCcdSweptSphereRadius_p1:ho,_emscripten_bind_btCapsuleShapeX__getBoundingSphere_p2:ahQ,_emscripten_bind_btOverlappingPairCache__getNumOverlappingPairs_p0:Wa,_emscripten_bind_btJacobianEntry__btJacobianEntry_p5:RZ,_emscripten_bind_btTriangleIndexVertexArray__getNumSubParts_p0:afL,_emscripten_bind_btCapsuleShapeZ__getAabb_p3:aje,_emscripten_bind_btCylinderShapeX__getUserPointer_p0:Kt,_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p3:alN,_emscripten_bind_btContactConstraint__getAppliedImpulse_p0:$8,_emscripten_bind_btCylinderShapeX__localGetSupportingVertexWithoutMargin_p1:K5,_memmove:aDG,_emscripten_bind_btCollisionDispatcher__clearManifold_p1:uD,_emscripten_bind_btManifoldResult__setShapeIdentifiersA_p2:OY,_emscripten_bind_btIndexedMesh__get_m_vertexType_p0:gO,_emscripten_bind_btConeTwistConstraint__getFrameOffsetA_p0:vM,_emscripten_bind_btManifoldPoint__get_m_localPointA_p0:aaQ,_emscripten_bind_btMatrix3x3__op_get_p1:eG,_emscripten_bind_btContinuousDynamicsWorld__debugDrawObject_p3:Cf,_emscripten_bind_btMultiSphereShape__calculateLocalInertia_p2:O_,_emscripten_bind_btTypedConstraint__getUserConstraintId_p0:q4,_emscripten_bind_btQuantizedBvh__btQuantizedBvh_p0:amY,_emscripten_bind_btBU_Simplex1to4__getMargin_p0:Fq,_emscripten_bind_btConvexTriangleMeshShape__getMarginNV_p0:ih,_emscripten_bind_CProfileNode__CleanupMemory_p0:YM,_emscripten_bind_btRigidBody__getLinearFactor_p0:pW,_emscripten_bind_btQuadWord__btQuadWord_p3:MS,_emscripten_bind_btPoint2PointConstraint__getRigidBodyA_p0:aa1,_emscripten_bind_btBU_Simplex1to4__isInside_p2:EP,_emscripten_bind_btConvexHullShape____destroy___p0:gA,_emscripten_bind_btTranslationalLimitMotor__set_m_targetVelocity_p1:Tw,_emscripten_bind_btManifoldPoint__get_m_appliedImpulse_p0:aan,_emscripten_bind_btWheelInfo__get_m_maxSuspensionForce_p0:DO,_emscripten_bind_btConcaveShape__serialize_p2:akC,_emscripten_bind_btDiscreteDynamicsWorld__addCharacter_p1:wt,_emscripten_bind_btTypedObject__getObjectType_p0:gH,_emscripten_bind_btRigidBody__get_m_contactSolverType_p0:p2,_emscripten_bind_btBvhSubtreeInfo__set_m_subtreeSize_p1:ac2,_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_frictionSlip_p1:$B,_emscripten_bind_btCollisionShape__serialize_p2:Wg,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_rayToWorld_p0:JV,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitCollisionObject_p1:ac8,_emscripten_bind_btConcaveShape__isPolyhedral_p0:akh,_emscripten_bind_btConeShape__calculateTemporalAabb_p6:EG,_emscripten_bind_btCollisionObject__setInterpolationLinearVelocity_p1:hX,_emscripten_bind_btPairCachingGhostObject__getContactProcessingThreshold_p0:U3,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback____destroy___p0:Ke,_emscripten_bind_btSliderConstraint__setDampingOrthoAng_p1:$g,_emscripten_bind_btSliderConstraint__setMaxAngMotorForce_p1:_6,_emscripten_bind_btBU_Simplex1to4__getVertex_p2:EU,_emscripten_bind_btCylinderShape__isInfinite_p0:Md,_emscripten_bind_bt32BitAxisSweep3__getAabb_p3:alJ,_emscripten_bind_btGeneric6DofSpringConstraint__setParam_p3:adN,_emscripten_bind_btCollisionObject__serialize_p2:hZ,_emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateTemporalAabb_p6:ahr,_emscripten_bind_btVector4__safeNormalize_p0:F6,_emscripten_bind_btCapsuleShapeX__getUpAxis_p0:agW,_emscripten_bind_btTriangleMesh__findOrAddVertex_p2:AW,_emscripten_bind_btGeneric6DofSpringConstraint__setParam_p2:adM,_emscripten_bind_btHeightfieldTerrainShape__processAllTriangles_p3:PL,_emscripten_bind_btHinge2Constraint__get_m_objectType_p0:HM,_emscripten_bind_btDiscreteCollisionDetectorInterface__Result__addContactPoint_p3:ags,_emscripten_bind_btConvexShape__getNumPreferredPenetrationDirections_p0:Q0,_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_localShapeInfo_p0:HA,_emscripten_bind_btPoint2PointConstraint__getRigidBodyB_p0:aaW,_emscripten_bind_btPairCachingGhostObject__setDeactivationTime_p1:U7,_emscripten_bind_btBroadphaseProxy__set_m_multiSapParentProxy_p1:aeB,_emscripten_bind_btBvhTriangleMeshShape____destroy___p0:ZJ,_emscripten_bind_btManifoldPoint__get_m_partId1_p0:aag,_emscripten_bind_btIndexedMesh__get_m_triangleIndexStride_p0:gZ,_emscripten_bind_btRigidBody__setCcdSweptSphereRadius_p1:po,_emscripten_bind_btCylinderShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1:acD,_emscripten_bind_btCylinderShape__isConvex2d_p0:Mh,_emscripten_bind_btDynamicsWorld__getSolverInfo_p0:lq,_emscripten_bind_btPairCachingGhostObject____destroy___p0:U_,_emscripten_bind_btGeneric6DofConstraint____destroy___p0:Xh,_emscripten_bind_btCylinderShape__isConcave_p0:M0,_emscripten_bind_btRigidBody__setRestitution_p1:px,_emscripten_bind_btCylinderShapeZ__setImplicitShapeDimensions_p1:acE,_emscripten_bind_btConvexTriangleMeshShape__getPlane_p3:iW,_emscripten_bind_btConeShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:z1,_emscripten_bind_btCylinderShapeX__getImplicitShapeDimensions_p0:Ky,_emscripten_bind_ConcreteContactResultCallback__set_m_collisionFilterMask_p1:No,_emscripten_bind_btContinuousDynamicsWorld__getDispatcher_p0:BH,_emscripten_bind_btPoint2PointConstraint__enableFeedback_p1:abU,_emscripten_bind_btCylinderShapeZ__isConvex2d_p0:aci,_emscripten_bind_btPolyhedralConvexAabbCachingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:ahl,_emscripten_bind_btVector3__getX_p0:Gq,_emscripten_bind_ConcreteContactResultCallback__get_m_collisionFilterGroup_p0:Nq,_emscripten_bind_btPairCachingGhostObject__getInterpolationAngularVelocity_p0:Ua,_emscripten_bind_btStridingMeshInterface__setScaling_p1:abu,_emscripten_bind_btCapsuleShapeX__getShapeType_p0:ag8,_emscripten_bind_btUniformScalingShape__isSoftBody_p0:KV,_emscripten_bind_btDynamicsWorld__addVehicle_p1:mV,_emscripten_bind_btGhostObject__hasAnisotropicFriction_p0:akc,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getUserPointer_p0:agL,_emscripten_bind_btAxisSweep3__getBroadphaseAabb_p2:vj,_emscripten_bind_btDbvtProxy__get_m_collisionFilterGroup_p0:Nm,_emscripten_bind_btCylinderShapeZ____destroy___p0:acN,_emscripten_bind_btDiscreteDynamicsWorld__getConstraintSolver_p0:wp,_emscripten_bind_btCapsuleShapeX__getImplicitShapeDimensions_p0:ag6,_emscripten_bind_btBvhTriangleMeshShape__getAngularMotionDisc_p0:ZM,_emscripten_bind_btCapsuleShapeZ__calculateTemporalAabb_p6:ajt,_emscripten_bind_btUniformScalingShape__getChildShape_p0:KP,_emscripten_bind_btTriangleMesh__setScaling_p1:A5,_emscripten_bind_btWheelInfo__set_m_rollInfluence_p1:Eg,_emscripten_bind_btSimpleDynamicsWorld__getDispatchInfo_p0:Om,_emscripten_bind_btVector4__setValue_p4:FN,_emscripten_bind_btPoint2PointConstraint__btPoint2PointConstraint_p2:acW,_emscripten_bind_btBU_Simplex1to4__serialize_p2:E5,_emscripten_bind_btCylinderShapeZ__getLocalScaling_p0:acx,_emscripten_bind_btPoint2PointConstraint__get_m_setting_p0:abR,_emscripten_bind_btBoxShape__initializePolyhedralFeatures_p0:agd,_emscripten_bind_btGeneric6DofSpringConstraint__getRotationalLimitMotor_p1:aee,_emscripten_bind_btCompoundShape__isPolyhedral_p0:kM,_emscripten_bind_btContactConstraint__getObjectType_p0:$$,_emscripten_bind_btDiscreteDynamicsWorld__removeCharacter_p1:wn,_emscripten_bind_btSerializer__getCurrentBufferSize_p0:H0,_emscripten_bind_btGeneric6DofSpringConstraint__getTranslationalLimitMotor_p0:aes,_emscripten_bind_btTypedConstraint__setEnabled_p1:rf,_emscripten_bind_btCylinderShape__getLocalScaling_p0:Mv,_emscripten_bind_btManifoldPoint__set_m_appliedImpulseLateral2_p1:aaK,_emscripten_bind_btDbvtProxy__isConvex2d_p1:M$,_emscripten_bind_btTriangleInfoMap____destroy___p0:akQ,_emscripten_bind_btRigidBody__getAngularVelocity_p0:pk,_emscripten_bind_btSliderConstraint__getRestitutionDirLin_p0:_l,_emscripten_bind_btGhostObject__getActivationState_p0:ajQ,_emscripten_bind_btStaticPlaneShape__isInfinite_p0:Vk,_emscripten_bind_btCapsuleShapeX__isSoftBody_p0:ag5,_emscripten_bind_btManifoldPoint__set_m_appliedImpulseLateral1_p1:aaJ,_emscripten_bind_btQuaternion__dot_p1:aiw,_emscripten_bind_btBoxShape__getMarginNonVirtual_p0:agf,_emscripten_bind_btDynamicsWorld__rayTestSingle_p6:mK,_emscripten_bind_btMatrix3x3__transpose_p0:fj,_emscripten_bind_btCollisionWorld__contactTest_p2:SL,_emscripten_bind_btCapsuleShapeZ__getPreferredPenetrationDirection_p2:ajj,_emscripten_bind_btDbvtBroadphase__set_m_needcleanup_p1:sw,_emscripten_bind_btVector3__fuzzyZero_p0:GE,_emscripten_bind_btConvexInternalShape__getPreferredPenetrationDirection_p2:TO,_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_collisionAlgorithmPool_p0:Rx,_emscripten_bind_btQuaternion__setMax_p1:ah1,_emscripten_bind_btDiscreteDynamicsWorld__setBroadphase_p1:vs,_emscripten_bind_btContactConstraint__getConstraintType_p0:$X,_emscripten_bind_btCylinderShape__getRadius_p0:Mx,_emscripten_bind_btConeShapeX__setMargin_p1:AI,_emscripten_bind_btRigidBody__setFlags_p1:oC,_emscripten_bind_btDbvtProxy__set_m_aabbMax_p1:NP,_emscripten_bind_btConvexTriangleMeshShape__getPreferredPenetrationDirection_p2:iL,_emscripten_bind_btHinge2Constraint__getDbgDrawSize_p0:I_,_emscripten_bind_btClock__reset_p0:Xy,_emscripten_bind_btUniformScalingShape__getPreferredPenetrationDirection_p2:LE,_emscripten_bind_btHinge2Constraint__setUserConstraintPtr_p1:Jl,_emscripten_bind_btOptimizedBvh__deSerializeFloat_p1:rI,_emscripten_bind_btBroadphaseInterface__getBroadphaseAabb_p2:ja,_emscripten_bind_btBoxShape__getConvexPolyhedron_p0:afy,_emscripten_bind_btCapsuleShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1:ahC,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_collisionFilterGroup_p0:ade,_emscripten_bind_btDynamicsWorld__contactTest_p2:l6,_emscripten_bind_btRotationalLimitMotor__get_m_enableMotor_p0:yW,_emscripten_bind_btGeneric6DofSpringConstraint__internalSetAppliedImpulse_p1:aen,_emscripten_bind_btBroadphasePair__get_m_pProxy0_p0:Bi,_emscripten_bind_btRaycastVehicle__applyEngineForce_p2:JC,_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_localShapeInfo_p1:Hw,_emscripten_bind_btBroadphaseInterface__setAabb_p4:i2,_emscripten_bind_btConvexShape__isSoftBody_p0:Qk,_emscripten_bind_btUniformScalingShape__setLocalScaling_p1:Lz,_emscripten_bind_btConvexShape__isConvex_p0:Qf,_emscripten_bind_btHeightfieldTerrainShape__serializeSingleShape_p1:Qv,_emscripten_bind_btBroadphaseProxy__getUid_p0:aeF,_emscripten_bind_btMultiSphereShape__isPolyhedral_p0:O4,_emscripten_bind_btSphereShape__getName_p0:al6,_emscripten_bind_btActivatingCollisionAlgorithm__processCollision_p4:ZU,_emscripten_bind_btHinge2Constraint__getAnchor_p0:IB,_emscripten_bind_btScaledBvhTriangleMeshShape__calculateTemporalAabb_p6:lN,_emscripten_bind_btGhostObject__activate_p1:ajI,_emscripten_bind_btCylinderShapeX__getAngularMotionDisc_p0:Lh,_emscripten_bind_btQuaternion__z_p0:aiv,_emscripten_bind_btBoxShape__getShapeType_p0:afz,_emscripten_bind_btVector4__getY_p0:FY,_emscripten_bind_btGeneric6DofSpringConstraint__setLimit_p3:aeY,_emscripten_bind_btVector4__getX_p0:Fj,_emscripten_bind_btBroadphasePair__btBroadphasePair_p1:BR,_emscripten_bind_btBroadphasePair__btBroadphasePair_p0:BQ,_emscripten_bind_btBoxShape__getHalfExtentsWithMargin_p0:agp,_emscripten_bind_btConeTwistConstraint__setUserConstraintPtr_p1:wP,_emscripten_bind_btConvexInternalAabbCachingShape__getMarginNonVirtual_p0:QQ,_emscripten_bind_btBroadphasePair__get_m_algorithm_p0:Bo,__GLOBAL__I_a:aDp,_emscripten_bind_btConvexHullShape__getEdge_p3:f7,_emscripten_bind_btCompoundShape__getChildShape_p1:kN,_emscripten_bind_btPolyhedralConvexAabbCachingShape__isInside_p2:agw,_emscripten_bind_btEmptyShape__getAngularMotionDisc_p0:oX,_emscripten_bind_btCylinderShapeZ__getName_p0:acC,_emscripten_bind_btRotationalLimitMotor__set_m_maxMotorForce_p1:y6,_emscripten_bind_btVector3__isZero_p0:GB,_emscripten_bind_btPairCachingGhostObject__getCcdMotionThreshold_p0:Ut,_emscripten_bind_btConeShape__btConeShape_p2:Dp,_emscripten_bind_btVector3__minAxis_p0:GH,_emscripten_bind_btIndexedMesh__get_m_vertexBase_p0:gL,_emscripten_bind_btSliderConstraint__setDampingLimLin_p1:$p,_emscripten_bind_btSphereShape__isCompound_p0:alr,_emscripten_bind_btContinuousDynamicsWorld__setGravity_p1:B3,_emscripten_bind_btGeneric6DofSpringConstraint__getRigidBodyA_p0:adr,_emscripten_bind_btHinge2Constraint__getAxis_p1:I5,_emscripten_bind_btCollisionWorld__setBroadphase_p1:Sf,_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_hitFraction_p1:Hy,_emscripten_bind_btCapsuleShapeX__isNonMoving_p0:ag3,_emscripten_bind_btScaledBvhTriangleMeshShape__isNonMoving_p0:ll,_emscripten_bind_btRaycastVehicle__updateAction_p2:Kd,_emscripten_bind_btManifoldPoint__set_m_normalWorldOnB_p1:abj,_emscripten_bind_btWheelInfo__set_m_brake_p1:D$,_emscripten_bind_btSphereShape__localGetSupportingVertex_p1:al0,_emscripten_bind_btPolyhedralConvexShape__localGetSupportingVertex_p1:r$,_emscripten_bind_btBvhTriangleMeshShape__getOwnsBvh_p0:Y0,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_restitution_p0:XN,_emscripten_bind_btCylinderShapeZ__getShapeType_p0:acZ,_emscripten_bind_btGhostObject__getInterpolationAngularVelocity_p0:ajF,_emscripten_bind_btConvexInternalShape__getLocalScalingNV_p0:Tm,_emscripten_bind_btConeShapeX____destroy___p0:AL,_emscripten_bind_btUniversalConstraint__internalGetAppliedImpulse_p0:nj,_emscripten_bind_btHashPtr____destroy___p0:UH,_emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p1:Cj,_emscripten_bind_btDynamicsWorld__setWorldUserInfo_p1:mj,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionFilterMask_p1:Hs,_emscripten_bind_btWheelInfo__get_m_chassisConnectionPointCS_p0:Eb,_emscripten_bind_btQuaternion__op_sub_p1:ah$,_emscripten_bind_btHingeConstraint__get_m_objectType_p0:xC,_emscripten_bind_btDiscreteDynamicsWorld__updateVehicles_p1:ww,_emscripten_bind_btCollisionObject__internalSetTemporaryCollisionShape_p1:hr,_emscripten_bind_btIDebugDraw__getDebugMode_p0:tk,_emscripten_bind_btConeTwistConstraint__GetPointForAngle_p2:xJ,_emscripten_bind_btVector4__absolute_p0:F_,_emscripten_bind_btStorageResult__setShapeIdentifiersA_p2:NM,_emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintType_p0:aev,_emscripten_bind_btStorageResult__set_m_distance_p1:M2,_emscripten_bind_btPersistentManifold__set_m_companionIdA_p1:kc,_emscripten_bind_btTypedConstraint__getConstraintType_p0:q9,_emscripten_bind_btConvexShape__calculateLocalInertia_p2:QY,_emscripten_bind_btTriangleMesh__unLockReadOnlyVertexBase_p1:A6,_emscripten_bind_btVector4__getZ_p0:Fl,_emscripten_bind_btCapsuleShape__getAabbNonVirtual_p3:fu,_emscripten_bind_btVector4__serializeDouble_p1:FK,_emscripten_bind_btRigidBody__setActivationState_p1:p7,_emscripten_bind_btTransform__invXform_p1:X3,_emscripten_bind_btBroadphaseProxy__get_m_collisionFilterMask_p0:aeE,_emscripten_bind_btUniversalConstraint__setUserConstraintType_p1:ny,_emscripten_bind_btCollisionObject__getFriction_p0:g_,_emscripten_bind_btUniversalConstraint__set_m_useSolveConstraintObsolete_p1:nX,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_linearDamping_p0:XV,_emscripten_bind_btSimpleDynamicsWorld__performDiscreteCollisionDetection_p0:N5,_emscripten_bind_btTranslationalLimitMotor__btTranslationalLimitMotor_p0:TP,_malloc:aDx,_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionObject_p0:KL,_emscripten_bind_btDispatcher__getNewManifold_p2:RP,_emscripten_bind_btPolyhedralConvexShape__getName_p0:sR,_emscripten_bind_btDiscreteDynamicsWorld__addRigidBody_p3:vY,_emscripten_bind_btDiscreteDynamicsWorld__addRigidBody_p1:vX,_emscripten_bind_btConvexInternalShape__getMarginNonVirtual_p0:UA,_emscripten_bind_btTriangleIndexVertexArray__unLockVertexBase_p1:afP,_emscripten_bind_btRigidBody__setSleepingThresholds_p2:qu,_emscripten_bind_btBroadphasePair__get_m_internalInfo1_p0:Bn,_emscripten_bind_btMultiSphereShape__getSphereRadius_p1:O5,_emscripten_bind_btConvexHullShape__serializeSingleShape_p1:hP,_emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p3:Cl,_emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p2:Ck,_emscripten_bind_btWheelInfo__get_m_engineForce_p0:DW,_emscripten_bind_btUniformScalingShape__getShapeType_p0:LN,_emscripten_bind_btDefaultMotionState__setWorldTransform_p1:B_,_emscripten_bind_btQuaternion__getZ_p0:ah_,_emscripten_bind_btSimpleDynamicsWorld__debugDrawObject_p3:N6,_emscripten_bind_btBoxShape__serializeSingleShape_p1:agk,_emscripten_bind_btDiscreteDynamicsWorld__addVehicle_p1:wy,_emscripten_bind_btPolyhedralConvexShape__getAabbNonVirtual_p3:sO,_emscripten_bind_btDynamicsWorld__setInternalTickCallback_p3:lw,_emscripten_bind_btConvexInternalShape__serialize_p2:TB,_emscripten_bind_btConvexTriangleMeshShape__getUserPointer_p0:il,_emscripten_bind_btSliderConstraint__getSolveLinLimit_p0:Z0,_emscripten_bind_btBvhTriangleMeshShape__setTriangleInfoMap_p1:Y3,_emscripten_bind_btVector3__rotate_p2:HR,_emscripten_bind_btPolyhedralConvexShape__getShapeType_p0:sg,_emscripten_bind_btContactConstraint__setParam_p2:aa4,_emscripten_bind_btHeightfieldTerrainShape__setUserPointer_p1:Pi,_emscripten_bind_btDynamicsWorld__setInternalTickCallback_p2:lv,_emscripten_bind_btScaledBvhTriangleMeshShape__getContactBreakingThreshold_p1:lJ,_emscripten_bind_btPairCachingGhostObject__setCollisionShape_p1:UO,_emscripten_bind_btSphereSphereCollisionAlgorithm__processCollision_p4:jJ,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_hitPointWorld_p1:Ib,_emscripten_bind_btHingeConstraint__set_m_objectType_p1:xx,_emscripten_bind_btDynamicsWorld__setInternalTickCallback_p1:lu,_emscripten_bind_btCylinderShapeX__getName_p0:K3,_emscripten_bind_btDispatcher__releaseManifold_p1:RT,_emscripten_bind_btRigidBody__setInterpolationWorldTransform_p1:rq,_emscripten_bind_btDbvtBroadphase__optimize_p0:tH,_emscripten_bind_btGeneric6DofSpringConstraint__setDbgDrawSize_p1:aeh,_emscripten_bind_btDiscreteCollisionDetectorInterface__getClosestPoints_p3:RD,_emscripten_bind_btRaycastVehicle__setPitchControl_p1:JL,_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitFraction_p1:ak3,_emscripten_bind_btDiscreteCollisionDetectorInterface__getClosestPoints_p4:RE,_emscripten_bind_btCollisionObject__setUserPointer_p1:hb,_emscripten_bind_btPairCachingGhostObject__getCcdSquareMotionThreshold_p0:Ur,_emscripten_bind_btTranslationalLimitMotor__get_m_restitution_p0:S7,_emscripten_bind_btPolyhedralConvexShape__calculateLocalInertia_p2:rZ,_emscripten_bind_btConeTwistConstraint__setEnabled_p1:vL,_emscripten_bind_btAxisSweep3__calculateOverlappingPairs_p1:vg,_emscripten_bind_btCylinderShapeZ__setMargin_p1:acU,_emscripten_bind_btVector3__normalized_p0:GV,_emscripten_bind_btCollisionAlgorithmCreateFunc__CreateCollisionAlgorithm_p3:SC,_emscripten_bind_btRigidBody__getLinearDamping_p0:qT,_emscripten_bind_btRigidBody__setInvInertiaDiagLocal_p1:qP,_emscripten_bind_btBroadphaseProxy__get_m_aabbMin_p0:aeC,_emscripten_bind_btBU_Simplex1to4__getShapeType_p0:Fd,_emscripten_bind_btCollisionObject__setHitFraction_p1:hh,_emscripten_bind_btSliderConstraint__serialize_p2:_Z,_emscripten_bind_btAngularLimit__getCorrection_p0:iu,_emscripten_bind_ConcreteContactResultCallback__addSingleResult_p7:NS,_emscripten_bind_btBroadphaseProxy__isNonMoving_p1:ad2,_emscripten_bind_btCapsuleShape__localGetSupportingVertexWithoutMargin_p1:fy,_emscripten_bind_btCylinderShape__getBoundingSphere_p2:MN,_emscripten_bind_btDynamicsWorld__getWorldType_p0:mT,_emscripten_bind_btVector3__op_div_p1:GG,_emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p3:ws,_emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p2:v5,_emscripten_bind_btSimpleDynamicsWorld__setBroadphase_p1:Nx,_emscripten_bind_btBvhTriangleMeshShape__getAabb_p3:ZA,_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionStiffness_p0:$y,_emscripten_bind_btDbvtBroadphase__get_m_stageCurrent_p0:su,_emscripten_bind_btMultiSphereShape__setLocalScaling_p1:Pr,_emscripten_bind_btConvexInternalAabbCachingShape__getContactBreakingThreshold_p1:QK,_emscripten_bind_btSliderConstraint__setUseFrameOffset_p1:Zq,_emscripten_bind_btHingeConstraint__setDbgDrawSize_p1:ya,_emscripten_bind_btDispatcherInfo__get_m_enableSatConvex_p0:eT,_emscripten_bind_btDefaultCollisionConfiguration__getPersistentManifoldPool_p0:jB,_emscripten_bind_btIDebugDraw__drawTransform_p2:tm,_emscripten_bind_btConeTwistConstraint__getTwistAngle_p0:wT,_emscripten_bind_btCapsuleShape__setImplicitShapeDimensions_p1:fG,_emscripten_bind_btPairCachingGhostObject__calculateSerializeBufferSize_p0:UT,_emscripten_bind_btRigidBody__setInterpolationLinearVelocity_p1:pL,_emscripten_bind_btStackAlloc__getAvailableMemory_p0:mu,_emscripten_bind_btGeneric6DofConstraint__get_m_objectType_p0:W_,_emscripten_bind_btConvexInternalAabbCachingShape__calculateLocalInertia_p2:Qx,_emscripten_bind_btBvhTriangleMeshShape__getMargin_p0:ZD,_emscripten_bind_btHeightfieldTerrainShape__isConvex_p0:PS,_emscripten_bind_btQuantizedBvh__quantizeWithClamp_p3:amU,_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult____destroy___p0:Mn,_emscripten_bind_btTriangleInfo__get_m_flags_p0:Hg,_emscripten_bind_btConcaveShape__getName_p0:akG,_emscripten_bind_btContactConstraint__getRigidBodyB_p0:$E,_emscripten_bind_btUniversalConstraint__setAngularLowerLimit_p1:n5,_emscripten_bind_btOptimizedBvh__refitPartial_p3:rA,_emscripten_bind_btConcaveShape__getAabb_p3:akI,_emscripten_bind_btCollisionShape__isInfinite_p0:Vw,_emscripten_bind_btCylinderShapeZ__localGetSupportingVertex_p1:acv,_emscripten_bind_btSimpleBroadphaseProxy__isPolyhedral_p1:tO,_emscripten_bind_btConvexInternalShape__getMargin_p0:TN,_emscripten_bind_btTriangleMesh__calculateSerializeBufferSize_p0:A$,_emscripten_bind_btCompoundShape__isConvex_p0:ke,_emscripten_bind_btSliderConstraint__setDampingDirLin_p1:_g,_emscripten_bind_btCapsuleShape__getMargin_p0:fD,_emscripten_bind_btAngularLimit____destroy___p0:jr,_emscripten_bind_btUniversalConstraint__getInfo2_p1:nd,_emscripten_bind_btMatrix3x3__getIdentity_p0:er,_free:aDB,_emscripten_bind_btConeShapeX__getName_p0:AS,_emscripten_bind_btTransform__setBasis_p1:XC,_emscripten_bind_btCapsuleShape__isConcave_p0:fi,_emscripten_bind_btHingeConstraint__enableMotor_p1:x5,_emscripten_bind_btCollisionObject__setIslandTag_p1:hg,_emscripten_bind_btSliderConstraint__setDampingDirAng_p1:Z$,_emscripten_bind_btCapsuleShapeX__setImplicitShapeDimensions_p1:ahM,_emscripten_bind_btGhostObject__setCcdMotionThreshold_p1:aiX,_emscripten_bind_btConcaveShape__getLocalScaling_p0:akD,_emscripten_bind_btHingeConstraint__internalSetAppliedImpulse_p1:yd,_emscripten_bind_btTriangleInfo__set_m_edgeV1V2Angle_p1:Hf,_emscripten_bind_btQuaternion__setEulerZYX_p3:aii,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getName_p0:agF,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_hitNormalWorld_p0:Hu,_emscripten_bind_btHashInt__getUid1_p0:Sb,_emscripten_bind_btCapsuleShapeZ__isConvex2d_p0:aiJ,_emscripten_bind_btVector3__maxAxis_p0:G0,_emscripten_bind_btSliderConstraint__needsFeedback_p0:Z4,_emscripten_bind_btIDebugDraw__drawSpherePatch_p9:tt,_emscripten_bind_btVector3__op_mul_p1:Gz,_emscripten_bind_btConvexHullShape__setImplicitShapeDimensions_p1:gl,_emscripten_bind_btRigidBody__setMassProps_p2:o$,_emscripten_bind_btHeightfieldTerrainShape__getMargin_p0:Qq,_emscripten_bind_btHingeConstraint__setUserConstraintId_p1:xW,_emscripten_bind_btCollisionObject__setInterpolationAngularVelocity_p1:hY,_emscripten_bind_btGeneric6DofConstraint__set_m_objectType_p1:VF,_emscripten_bind_btBvhTriangleMeshShape__usesQuantizedAabbCompression_p0:Y4,_emscripten_bind_btSimpleBroadphaseProxy__get_m_aabbMax_p0:t8,_emscripten_bind_btConvexHullShape__getName_p0:gf,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__AllHitsRayResultCallback_p2:Kl,_emscripten_bind_btPoint2PointConstraint__getPivotInB_p0:abQ,_emscripten_bind_btBU_Simplex1to4__setMargin_p1:Ft,_emscripten_bind_btRaycastVehicle__getWheelInfo_p1:JD,_emscripten_bind_btRigidBody__setAngularVelocity_p1:pG,_emscripten_bind_btRigidBody__serialize_p2:qB,_emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintType_p1:aek,_emscripten_bind_btBvhTriangleMeshShape__getLocalAabbMax_p0:YF,_emscripten_bind_btPolyhedralConvexShape__setMargin_p1:s$,_emscripten_bind_btPolyhedralConvexShape__calculateTemporalAabb_p6:s9,_emscripten_bind_btCapsuleShapeX__getRadius_p0:agY,_emscripten_bind_btQuaternion__op_div_p1:aim,_emscripten_bind_btCylinderShapeZ__setLocalScaling_p1:acF,_emscripten_bind_btCompoundShape__calculateSerializeBufferSize_p0:kW,_emscripten_bind_btHingeConstraint__setMotorTarget_p2:yB,_emscripten_bind_btConeShapeX__getAabbSlow_p3:AQ,_emscripten_bind_btMultiSphereShape____destroy___p0:PB,_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_hitPointInWorld_p1:Mp,_emscripten_bind_btOptimizedBvh__quantizeWithClamp_p3:rC,_emscripten_bind_btConvexShape__getAabbSlow_p3:Rj,_emscripten_bind_btCylinderShapeZ__getAabbNonVirtual_p3:acA,_emscripten_bind_btCylinderShapeZ__isCompound_p0:ab7,_emscripten_bind_btPoint2PointConstraint__getObjectType_p0:abO,_emscripten_bind_btCylinderShapeX__isSoftBody_p0:Kx,_emscripten_bind_btManifoldPoint__get_m_lateralFrictionDir1_p0:aaE,_emscripten_bind_btSliderConstraint__getDampingOrthoLin_p0:$l,_emscripten_bind_btUniformScalingShape__getAabb_p3:LA,_emscripten_bind_btSimpleDynamicsWorld__synchronizeMotionStates_p0:OR,_emscripten_bind_btHeightfieldTerrainShape__isCompound_p0:PO,_emscripten_bind_btConvexTriangleMeshShape__getContactBreakingThreshold_p1:iH,_emscripten_bind_btCapsuleShapeZ__isConcave_p0:aiM,_emscripten_bind_btScaledBvhTriangleMeshShape__getAabb_p3:lI,_emscripten_bind_btDiscreteDynamicsWorld__getWorldUserInfo_p0:vC,_emscripten_bind_btBoxShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:agh,_emscripten_bind_btConeShapeX__getMarginNonVirtual_p0:AK,_emscripten_bind_btConeShapeZ__btConeShapeZ_p2:zP,_emscripten_bind_btVector4__maxAxis4_p0:FW,_emscripten_bind_btTranslationalLimitMotor__set_m_currentLinearDiff_p1:Tr,_emscripten_bind_btVector4__absolute4_p0:F3,_emscripten_bind_btConvexTriangleMeshShape__setUserPointer_p1:hK,_emscripten_bind_btSerializer__findNameForPointer_p1:HW,_emscripten_bind_btSimpleBroadphaseProxy__btSimpleBroadphaseProxy_p0:uq,_emscripten_bind_btSimpleBroadphaseProxy__btSimpleBroadphaseProxy_p7:ur,_emscripten_bind_btPairCachingGhostObject__activate_p1:Ud,_emscripten_bind_btPairCachingGhostObject__activate_p0:Uc,_emscripten_bind_btMatrix3x3__op_sub_p1:d2,_emscripten_bind_btGhostObject__getRestitution_p0:ajS,_emscripten_bind_btHinge2Constraint__getAngle1_p0:IG,_emscripten_bind_btSphereShape__serialize_p2:al1,_emscripten_bind_btCollisionDispatcher__getDispatcherFlags_p0:uh,_emscripten_bind_btCylinderShapeZ__calculateLocalInertia_p2:acu,_emscripten_bind_btOverlappingPairCache__processAllOverlappingPairs_p2:We,_emscripten_bind_btRigidBody__setBroadphaseHandle_p1:qe,_emscripten_bind_btManifoldPoint__set_m_combinedFriction_p1:aai,_emscripten_bind_btCapsuleShapeX__getUserPointer_p0:ag2,_emscripten_bind_btTriangleInfoMap__get_m_maxEdgeAngleThreshold_p0:akr,_emscripten_bind_btSimpleBroadphaseProxy__isConvex_p1:tP,_emscripten_bind_btGeneric6DofConstraint__calculateTransforms_p0:Xc,_emscripten_bind_btGeneric6DofConstraint__calculateTransforms_p2:Xd,_emscripten_bind_btTranslationalLimitMotor__set_m_stopERP_p1:SZ,_emscripten_bind_btManifoldPoint__set_m_lateralFrictionInitialized_p1:aay,_emscripten_bind_btPersistentManifold__btPersistentManifold_p5:ky,_emscripten_bind_btDbvtProxy__set_m_collisionFilterMask_p1:Nj,_emscripten_bind_btManifoldPoint__getPositionWorldOnA_p0:aas,_emscripten_bind_btCylinderShapeZ__getMarginNV_p0:acc,_emscripten_bind_btTriangleMesh__addIndexedMesh_p1:AX,_emscripten_bind_btGeneric6DofConstraint__getAngularUpperLimit_p1:WZ,_emscripten_bind_btTriangleMesh__addIndexedMesh_p2:AZ,_emscripten_bind_btSliderConstraint__setFrames_p2:$K,_emscripten_bind_btUniformScalingShape__getAngularMotionDisc_p0:LL,_emscripten_bind_btDispatcherInfo__get_m_allowedCcdPenetration_p0:eZ,_emscripten_bind_btSimpleDynamicsWorld__removeAction_p1:OE,_emscripten_bind_btContactConstraint__setContactManifold_p1:abb,_emscripten_bind_btSphereShape__setUserPointer_p1:als,_emscripten_bind_btUniversalConstraint__getLinearUpperLimit_p1:nH,_emscripten_bind_btCapsuleShapeZ__getUpAxis_p0:aiz,_emscripten_bind_btSimpleDynamicsWorld__getDebugDrawer_p0:N4,_emscripten_bind_btBU_Simplex1to4__getContactBreakingThreshold_p1:E4,_emscripten_bind_btPolyhedralConvexShape__getPlane_p3:s8,_emscripten_bind_btManifoldPoint__get_m_lateralFrictionDir2_p0:aaH,_emscripten_bind_btStorageResult__get_m_normalOnSurfaceB_p0:M5,_emscripten_bind_btSimpleDynamicsWorld__clearForces_p0:N2,_emscripten_bind_btPoint2PointConstraint__setPivotB_p1:acp,_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_distFraction_p0:LR,_emscripten_bind_btSerializer__finalizeChunk_p4:H1,_emscripten_bind_btGeneric6DofConstraint__setEnabled_p1:VG,_emscripten_bind_btSliderConstraint__setRestitutionOrthoAng_p1:$i,_emscripten_bind_btCylinderShapeX__getLocalScaling_p0:KZ,_emscripten_bind_btGeneric6DofSpringConstraint__setLinearUpperLimit_p1:ae2,_emscripten_bind_btStackAlloc__endBlock_p1:mv,_emscripten_bind_btCylinderShape__setLocalScaling_p1:MD,_emscripten_bind_btPairCachingGhostObject__internalSetTemporaryCollisionShape_p1:Us,_emscripten_bind_btTriangleInfoMap__set_m_zeroAreaThreshold_p1:ak_,_emscripten_bind_btCompoundShape__getContactBreakingThreshold_p1:k_,_emscripten_bind_btMatrix3x3__adjoint_p0:et,_emscripten_bind_btPoint2PointConstraint__getBreakingImpulseThreshold_p0:ab3,_emscripten_bind_btBvhTriangleMeshShape__getMeshInterface_p0:Y1,_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__ClosestPointInput_p0:Y$,_emscripten_bind_btDbvtProxy__set_m_multiSapParentProxy_p1:Ng,_emscripten_bind_btVector4__normalized_p0:F8,_emscripten_bind_btSliderConstraint__getObjectType_p0:Z6,_emscripten_bind_btRigidBody__setGravity_p1:qI,_emscripten_bind_btPolyhedralConvexAabbCachingShape__isConcave_p0:agT,_emscripten_bind_btDynamicsWorld__removeConstraint_p1:l$,_emscripten_bind_btPersistentManifold__clearUserCache_p1:jT,_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p5:YV,_emscripten_bind_btBvhTriangleMeshShape__calculateTemporalAabb_p6:ZK,_emscripten_bind_btDbvtProxy__btDbvtProxy_p5:NO,_emscripten_bind_btCollisionShape__setLocalScaling_p1:Wk,_emscripten_bind_btUniversalConstraint__getObjectType_p0:nZ,_emscripten_bind_btSphereShape__getAabbSlow_p3:amL,_emscripten_bind_btConeShapeZ__getImplicitShapeDimensions_p0:zx,_emscripten_bind_btConvexShape__getName_p0:Q4,_emscripten_bind_btRotationalLimitMotor__testLimitValue_p1:yY,_emscripten_bind_btCollisionWorld__getDispatchInfo_p0:Sh,_emscripten_bind_btDefaultCollisionConfiguration__getStackAllocator_p0:jA,_emscripten_bind_btBoxShape__getAngularMotionDisc_p0:agj,_emscripten_bind_btConvexInternalShape__getImplicitShapeDimensions_p0:TV,_emscripten_bind_btDispatcher__getInternalManifoldPool_p0:RR,_emscripten_bind_btContactConstraint__getBreakingImpulseThreshold_p0:$6,_emscripten_bind_btPairCachingGhostObject__getCollisionShape_p0:Uk,_emscripten_bind_btConvexHullShape__getConvexPolyhedron_p0:gE,_emscripten_bind_btCylinderShapeX__getHalfExtentsWithMargin_p0:Lm,_emscripten_bind_btHinge2Constraint__getUserConstraintId_p0:HL,_emscripten_bind_btQuaternion__setRotation_p2:aih,_emscripten_bind_btRigidBody__internalGetVelocityInLocalPointObsolete_p2:o8,_emscripten_bind_btCylinderShapeX__isPolyhedral_p0:Ko,_emscripten_bind_btEmptyShape__getShapeType_p0:ol,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_friction_p0:Yj,_emscripten_bind_btManifoldResult__getBody1Internal_p0:Op,_emscripten_bind_btPoint2PointConstraint__setUserConstraintId_p1:aa_,_emscripten_bind_btDbvtBroadphase__get_m_updates_ratio_p0:sL,_emscripten_bind_btQuadWord__op_set_p1:Mr,_emscripten_bind_btPolyhedralConvexAabbCachingShape__isCompound_p0:agQ,_emscripten_bind_btPersistentManifold__getNumContacts_p0:jW,_emscripten_bind_btUniversalConstraint__get_m_objectType_p0:mF,_emscripten_bind_btRotationalLimitMotor__get_m_loLimit_p0:y$,_emscripten_bind_btGeneric6DofConstraint__setAxis_p2:Xw,_emscripten_bind_btWheelInfo__getSuspensionRestLength_p0:D7,_emscripten_bind_btSphereShape__getAngularMotionDisc_p0:amJ,_emscripten_bind_btHingeConstraint__getBreakingImpulseThreshold_p0:yj,_emscripten_bind_btHashPtr__getPointer_p0:TS,_emscripten_bind_btHinge2Constraint__getCalculatedTransformB_p0:HJ,_emscripten_bind_btPairCachingGhostObject__internalSetExtensionPointer_p1:T2,_emscripten_bind_btConvexInternalAabbCachingShape__getAabbSlow_p3:QW,_emscripten_bind_btBvhTriangleMeshShape__partialRefitTree_p2:ZG,_emscripten_bind_btConeShape____destroy___p0:EA,_emscripten_bind_btSphereShape__setImplicitShapeDimensions_p1:al8,_emscripten_bind_btConeTwistConstraint__setMotorTarget_p1:xf,_emscripten_bind_btConvexShape__serialize_p2:Q_,_emscripten_bind_btContactConstraint__setDbgDrawSize_p1:$3,_emscripten_bind_btQuaternion__setEuler_p3:ah8,_emscripten_bind_btTriangleInfoMap__get_m_equalVertexThreshold_p0:akW,_emscripten_bind_btTriangleIndexVertexArray__preallocateIndices_p1:afe,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getEdge_p3:agG,_emscripten_bind_btPairCachingGhostObject__isStaticObject_p0:Uj,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_hitNormalWorld_p1:Ia,_emscripten_bind_btBoxShape__getEdge_p3:af4,_emscripten_bind_btVector4__serializeFloat_p1:FS,_emscripten_bind_btMultiSphereShape__setUserPointer_p1:Os,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabb_p3:ahb,_emscripten_bind_CProfileNode__Get_Name_p0:Yv,_emscripten_bind_bt32BitAxisSweep3__aabbTest_p3:alV,_emscripten_bind_btStaticPlaneShape__getBoundingSphere_p2:V_,_emscripten_bind_btDbvtBroadphase__getVelocityPrediction_p0:tV,_emscripten_bind_btSliderConstraint____destroy___p0:$J,_emscripten_bind_btPairCachingGhostObject__addOverlappingObjectInternal_p2:UQ,_emscripten_bind_btUniversalConstraint__getAnchor_p0:no,_emscripten_bind_btPairCachingGhostObject__addOverlappingObjectInternal_p1:UP,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionFilterGroup_p1:JP,_emscripten_bind_btRotationalLimitMotor__isLimited_p0:ze,_emscripten_bind_btBvhTriangleMeshShape__setMargin_p1:ZF,_emscripten_bind_btHingeConstraint__updateRHS_p1:xU,_emscripten_bind_btIndexedMesh__set_m_indexType_p1:gM,_emscripten_bind_btSimpleDynamicsWorld__removeCollisionObject_p1:OS,_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_stackAlloc_p0:YD,_emscripten_bind_btManifoldPoint__get_m_distance1_p0:aaS,_emscripten_bind_btSliderConstraint__getBreakingImpulseThreshold_p0:_t,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_angularSleepingThreshold_p1:XR,_emscripten_bind_btClock__getTimeMicroseconds_p0:XB,_emscripten_bind_btCapsuleShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:ajo,_llvm_uadd_with_overflow_i64:aDF,_emscripten_bind_btSliderConstraint__getSoftnessOrthoAng_p0:_B,_emscripten_bind_btCylinderShapeX__getMargin_p0:La,_emscripten_bind_btContactConstraint__enableFeedback_p1:$Q,_emscripten_bind_btCylinderShapeX__getLocalScalingNV_p0:Kp,_emscripten_bind_btPoint2PointConstraint__setPivotA_p1:aco,_emscripten_bind_btConeTwistConstraint__setParam_p3:wI,_emscripten_bind_btConeShapeX__calculateTemporalAabb_p6:AR,_emscripten_bind_btHinge2Constraint__updateRHS_p1:It,_emscripten_bind_btRaycastVehicle__btVehicleTuning__btVehicleTuning_p0:$P,_emscripten_bind_btMultiSphereShape__isConvex_p0:O9,_emscripten_bind_btRigidBody__setDamping_p2:qk,_emscripten_bind_btQuaternion__x_p0:aiu,_emscripten_bind_btConeShapeZ__calculateTemporalAabb_p6:z6,_emscripten_bind_btContinuousDynamicsWorld__setForceUpdateAllAabbs_p1:Cz,_emscripten_bind_btPersistentManifold__getContactPoint_p1:j2,_emscripten_bind_btCapsuleShapeX__getMarginNonVirtual_p0:ahN,_emscripten_bind_btCylinderShapeZ__localGetSupportingVertexWithoutMargin_p1:acL,_emscripten_bind_btBvhTriangleMeshShape__localGetSupportingVertex_p1:Zs,_emscripten_bind_btMotionState__getWorldTransform_p1:adA,_emscripten_bind_btRigidBody__activate_p0:pP,_emscripten_bind_btRigidBody__activate_p1:pQ,_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__btVehicleRaycasterResult_p0:MQ,_emscripten_bind_btCompoundShape__setLocalScaling_p1:kY,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionObject_p0:Hl,_emscripten_bind_btCollisionObject__setCompanionId_p1:g9,_emscripten_bind_btConeTwistConstraint__set_m_objectType_p1:vK,_emscripten_bind_btDynamicsWorld__getNumConstraints_p0:l1,_emscripten_bind_btGhostObject__rayTest_p3:aks,_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput____destroy___p0:YQ,_emscripten_bind_btBoxShape__isConcave_p0:afA,_emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p1:v4,_emscripten_bind_btPolyhedralConvexShape__isCompound_p0:se,_emscripten_bind_btSimpleDynamicsWorld__btSimpleDynamicsWorld_p4:O1,_emscripten_bind_btSliderConstraint__setUserConstraintType_p1:$k,_emscripten_bind_btConeTwistConstraint__setMaxMotorImpulse_p1:xo,_emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p3:v6,_emscripten_bind_btCollisionConfiguration__getStackAllocator_p0:kt,_emscripten_bind_btConvexTriangleMeshShape__calculateTemporalAabb_p6:iX,_emscripten_bind_btStaticPlaneShape__serialize_p2:VO,_emscripten_bind_btGeneric6DofSpringConstraint__getLinearUpperLimit_p1:aeP,_emscripten_bind_btContinuousDynamicsWorld__rayTest_p3:Ch,_emscripten_bind_btSliderConstraint__getParam_p1:ZW,_emscripten_bind_btSliderConstraint__getParam_p2:ZX,_emscripten_bind_btPolyhedralConvexShape__calculateSerializeBufferSize_p0:sP,_emscripten_bind_btGeneric6DofSpringConstraint__get_limit_motor_info2_p11:aeW,_emscripten_bind_btGeneric6DofConstraint__getAngle_p1:WY,_emscripten_bind_btGeneric6DofConstraint__getRotationalLimitMotor_p1:WK,_emscripten_bind_btCollisionObject__getActivationState_p0:hv,_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionFilterGroup_p1:KC,_emscripten_bind_btCollisionWorld__RayResultCallback__addSingleResult_p2:Ln,_emscripten_bind_btStaticPlaneShape__isCompound_p0:Vg,_emscripten_bind_btBoxShape__isInfinite_p0:afs,_emscripten_bind_btContinuousDynamicsWorld__removeAction_p1:C1,_emscripten_bind_btBU_Simplex1to4__recalcLocalAabb_p0:Fr,_emscripten_bind_btSliderConstraint__getUpperLinLimit_p0:_q,_emscripten_bind_btConeShapeX__setUserPointer_p1:zC,_emscripten_bind_btJacobianEntry__get_m_aJ_p0:R7,_emscripten_bind_btDynamicsWorld__addRigidBody_p3:lV,_emscripten_bind_btHeightfieldTerrainShape__getShapeType_p0:PZ,_emscripten_bind_btPairCachingGhostObject__setInterpolationLinearVelocity_p1:UK,_emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p3:OL,_emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p2:OK,_emscripten_bind_btBoxShape__calculateTemporalAabb_p6:ago,_emscripten_bind_btCylinderShapeZ__isConcave_p0:acY,_emscripten_bind_btSimpleBroadphase__setAabb_p4:kg,_emscripten_bind_btManifoldPoint__get_m_localPointB_p0:aaP,_emscripten_bind_bt32BitAxisSweep3__getBroadphaseAabb_p2:alW,_emscripten_bind_btDispatcherInfo__set_m_stackAllocator_p1:eP,_emscripten_bind_btGhostObject__setDeactivationTime_p1:aj7,_emscripten_bind_btQuaternion__getIdentity_p0:aig,_emscripten_bind_btGeneric6DofSpringConstraint__isEnabled_p0:ad7,_emscripten_bind_btCylinderShapeX__setMargin_p1:Lk,_emscripten_bind_btCollisionShape__getBoundingSphere_p2:Wq,_emscripten_bind_btBvhTriangleMeshShape__setUserPointer_p1:Y2,_emscripten_bind_btDbvtBroadphase__get_m_prediction_p0:sH,_emscripten_bind_btGeneric6DofSpringConstraint__getBreakingImpulseThreshold_p0:ads,_emscripten_bind_btDispatcher__findAlgorithm_p3:RN,_emscripten_bind_btDispatcher__findAlgorithm_p2:RM,_emscripten_bind_btPairCachingGhostObject__setBroadphaseHandle_p1:Vd,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionObject_p1:Hk,_emscripten_bind_btInternalTriangleIndexCallback__internalProcessTriangleIndex_p3:Ty,_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_customCollisionAlgorithmMaxElementSize_p1:Rm,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_rayFromWorld_p0:JX,_emscripten_bind_btRigidBody__getCompanionId_p0:p6,_emscripten_bind_btCollisionWorld__rayTest_p3:SH,_emscripten_bind_btConvexTriangleMeshShape__setMargin_p1:iM,_emscripten_bind_btCollisionWorld__addCollisionObject_p1:SI,_emscripten_bind_btCollisionWorld__addCollisionObject_p3:SK,_emscripten_bind_btCollisionWorld__addCollisionObject_p2:SJ,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_convexToWorld_p0:ac3,_emscripten_bind_btCapsuleShapeZ__getRadius_p0:aiB,_emscripten_bind_btRigidBody__isStaticOrKinematicObject_p0:pw,_emscripten_bind_btRigidBody__hasAnisotropicFriction_p0:qd,_emscripten_bind_btOverlappingPairCache__cleanProxyFromPairs_p2:V8,_emscripten_bind_btConcaveShape__calculateLocalInertia_p2:akB,_emscripten_bind_btBoxShape__getPlaneEquation_p2:af_,_emscripten_bind_btGeneric6DofSpringConstraint__getInfo2NonVirtual_p7:adO,_emscripten_bind_btCapsuleShapeZ__getImplicitShapeDimensions_p0:aiL,_emscripten_bind_btBU_Simplex1to4__getMarginNV_p0:Eu,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_collisionShape_p0:Yh,_emscripten_bind_btStaticPlaneShape__getMargin_p0:VW,_emscripten_bind_btTranslationalLimitMotor__set_m_damping_p1:Ta,_emscripten_bind_btHeightfieldTerrainShape__setUseDiamondSubdivision_p1:PR,_emscripten_bind_btConvexInternalAabbCachingShape__serializeSingleShape_p1:QV,_emscripten_bind_btPolyhedralConvexAabbCachingShape__setImplicitShapeDimensions_p1:ahj,_emscripten_bind_btScaledBvhTriangleMeshShape____destroy___p0:lM,_emscripten_bind_btGeneric6DofConstraint__getUseFrameOffset_p0:WP,_emscripten_bind_btGhostObject__getFriction_p0:aiO,_emscripten_bind_btConvexInternalShape__setMargin_p1:Uy,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitNormalWorld_p1:adG,_emscripten_bind_btCylinderShapeZ__calculateTemporalAabb_p6:acV,_emscripten_bind_btGeneric6DofConstraint__getRigidBodyB_p0:VD,_emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateSerializeBufferSize_p0:agD,_emscripten_bind_btConvexTriangleMeshShape__getMargin_p0:iJ,_emscripten_bind_btSimpleBroadphase__aabbTest_p3:kn,_emscripten_bind_btHinge2Constraint__setUpperLimit_p1:Ik,_emscripten_bind_btConvexHullShape__isConvex2d_p0:fX,_emscripten_bind_btDynamicsWorld__getCollisionObjectArray_p0:lt,_emscripten_bind_btHinge2Constraint__internalGetAppliedImpulse_p0:Iw,_emscripten_bind_btVector4__angle_p1:F0,_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p4:Fp,_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p3:Fo,_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p2:Fn,_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p1:Fm,_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p0:E6,_emscripten_bind_btVector3__setMin_p1:Gm,_emscripten_bind_btSliderConstraint__setLowerLinLimit_p1:_k,_emscripten_bind_btCylinderShape__getShapeType_p0:M1,_emscripten_bind_btMotionState__setWorldTransform_p1:adz,_emscripten_bind_btHingeConstraint__getUid_p0:x8,_emscripten_bind_btPairCachingGhostObject__convexSweepTest_p4:UU,_emscripten_bind_btUniformScalingShape__isConvex_p0:KQ,_emscripten_bind_btQuantizedBvh__setQuantizationValues_p2:amt,_emscripten_bind_btQuantizedBvh__setQuantizationValues_p3:amu,_emscripten_bind_btQuantizedBvh__serialize_p3:amP,_emscripten_bind_btQuantizedBvh__serialize_p2:amO,_emscripten_bind_btConvexHullShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:gB,_emscripten_bind_btHeightfieldTerrainShape__getName_p0:Qm,_emscripten_bind_btQuadWord__btQuadWord_p4:MT,_emscripten_bind_btQuantizedBvh__isQuantized_p0:amv,_emscripten_bind_btQuaternion__nearest_p1:ahV,_emscripten_bind_btConeShapeZ__getShapeType_p0:zA,_emscripten_bind_btHinge2Constraint__setLimit_p3:Jf,_emscripten_bind_btUniversalConstraint__getUserConstraintId_p0:mE,_emscripten_bind_btOptimizedBvh__btOptimizedBvh_p0:rM,_emscripten_bind_btGhostObject__setCcdSweptSphereRadius_p1:ajL,_emscripten_bind_btSliderConstraint__getDampingLimAng_p0:_P,_emscripten_bind_btTypedConstraint__internalSetAppliedImpulse_p1:rb,_emscripten_bind_btCompoundShape__isInfinite_p0:kO,_emscripten_bind_btSimpleDynamicsWorld__addRigidBody_p1:N0,_emscripten_bind_btConeShapeX__getLocalScalingNV_p0:Ag,_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_frictionSlip_p0:$w,_emscripten_bind_btCollisionAlgorithmConstructionInfo__get_m_manifold_p0:uY,_emscripten_bind_btSliderConstraint__getFrameOffsetA_p0:_x,_emscripten_bind_btSimpleDynamicsWorld__addCharacter_p1:OM,_emscripten_bind_btVector3__serializeFloat_p1:GY,_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitPointLocal_p0:ak7,_emscripten_bind_btSimpleDynamicsWorld__addVehicle_p1:OP,_emscripten_bind_btGeneric6DofConstraint__solveConstraintObsolete_p3:Xk,_emscripten_bind_btAxisSweep3__printStats_p0:vd,_emscripten_bind_btSphereShape__isSoftBody_p0:alD,_emscripten_bind_btDispatcherInfo__set_m_useConvexConservativeDistanceUtil_p1:eX,_emscripten_bind_btContinuousDynamicsWorld__setWorldUserInfo_p1:Cw,_emscripten_bind_btContinuousDynamicsWorld__calculateTimeOfImpacts_p1:Ce,_emscripten_bind_btCylinderShapeZ__localGetSupportVertexNonVirtual_p1:acH,_emscripten_bind_btVector3__dot_p1:G4,_emscripten_bind_btSimpleBroadphaseProxy__SetNextFree_p1:t0,_emscripten_bind_btHashString__equals_p1:amC,_emscripten_bind_btUniversalConstraint__buildJacobian_p0:m5,_emscripten_bind_btSphereShape__localGetSupportVertexNonVirtual_p1:amb,_emscripten_bind_btContactConstraint__set_m_objectType_p1:$G,_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionDamping_p0:$x,_emscripten_bind_btAngularLimit__getSoftness_p0:jg,_emscripten_bind_btRigidBody__applyCentralForce_p1:pd,_emscripten_bind_btQuaternion__farthest_p1:ah7,_emscripten_bind_btPersistentManifold__removeContactPoint_p1:kA,_emscripten_bind_btJacobianEntry__set_m_Adiag_p1:R1,_emscripten_bind_btConeShapeX__setImplicitShapeDimensions_p1:AJ,_emscripten_bind_btWheelInfo__set_m_wheelsDampingRelaxation_p1:Ei,_emscripten_bind_btConvexHullShape__getMargin_p0:gs,_emscripten_bind_btMultiSphereShape__getLocalScaling_p0:Py,_emscripten_bind_btTriangleIndexVertexArray__hasPremadeAabb_p0:afO,_emscripten_bind_btPolyhedralConvexShape__setImplicitShapeDimensions_p1:s1,_emscripten_bind_btIDebugDraw__setDebugMode_p1:ts,_emscripten_bind_btPairCachingGhostObject__setCompanionId_p1:T$,_emscripten_bind_btVector4__normalize_p0:F$,_emscripten_bind_btUniversalConstraint__getAngularLowerLimit_p1:ni,_emscripten_bind_btUniversalConstraint__setUseFrameOffset_p1:np,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitCollisionObject_p0:ac7,_emscripten_bind_btPoint2PointConstraint__getUid_p0:aaX,_emscripten_bind_btSliderConstraint__testAngLimits_p0:_V,_emscripten_bind_btOverlappingPairCache__removeOverlappingPairsContainingProxy_p2:V4,_emscripten_bind_btBoxShape__isConvex_p0:afr,_emscripten_bind_btQuantizedBvh__reportBoxCastOverlappingNodex_p5:am$,_emscripten_bind_btPersistentManifold__get_m_companionIdB_p0:j9,_emscripten_bind_btUniformScalingShape__isConcave_p0:LM,_emscripten_bind_btContinuousDynamicsWorld__getCollisionObjectArray_p0:CA,_emscripten_bind_btTranslationalLimitMotor__get_m_stopERP_p0:Sq,_emscripten_bind_bt32BitAxisSweep3__getHandle_p1:alq,_emscripten_bind_CProfileNode__Reset_p0:YJ,_emscripten_bind_btSphereShape__calculateLocalInertia_p2:al$,_emscripten_bind_btBvhSubtreeInfo__get_m_subtreeSize_p0:ac_,_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitNormalLocal_p0:ak1,_emscripten_bind_btTriangleInfoMap__get_m_planarEpsilon_p0:ak$,_emscripten_bind_btSimpleBroadphaseProxy__GetNextFree_p0:t6,_emscripten_bind_btGhostPairCallback__removeOverlappingPairsContainingProxy_p2:am4,_emscripten_bind_btTriangleInfoMap__set_m_convexEpsilon_p1:akS,_emscripten_bind_btBoxShape__localGetSupportingVertex_p1:afT,_emscripten_bind_btCylinderShape__getMargin_p0:MH,_emscripten_bind_btQuaternion__w_p0:ais,_emscripten_bind_btQuantizedBvh__getAlignmentSerializationPadding_p0:amj,_emscripten_bind_btIDebugDraw__draw3dText_p2:ta,_emscripten_bind_btMatrix3x3__setIdentity_p0:ez,_emscripten_bind_btHingeConstraint____destroy___p0:yz,_emscripten_bind_btConvexInternalAabbCachingShape__setImplicitShapeDimensions_p1:QH,_emscripten_bind_btCollisionWorld__setDebugDrawer_p1:SN,_emscripten_bind_btTriangleMesh__getScaling_p0:Au,_emscripten_bind_btManifoldPoint__set_m_contactCFM1_p1:aad,_emscripten_bind_btScaledBvhTriangleMeshShape__isConcave_p0:lo,_emscripten_bind_btCapsuleShape__isConvex2d_p0:ff,_emscripten_bind_btPolyhedralConvexShape__getNumVertices_p0:r1,_emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_collisionFilterMask_p1:Bx,_emscripten_bind_btCollisionWorld__ContactResultCallback__get_m_collisionFilterMask_p0:jo,_emscripten_bind_btCylinderShape__getMarginNonVirtual_p0:MK,_emscripten_bind_btCompoundShape__isConvex2d_p0:ld,_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitCollisionObject_p0:ak2,_emscripten_bind_btHinge2Constraint__isEnabled_p0:Ix,_emscripten_bind_btSliderConstraint__getDampingDirLin_p0:_E,_emscripten_bind_btDispatcher__getInternalManifoldPointer_p0:RL,_emscripten_bind_btBvhTriangleMeshShape__getUserPointer_p0:Zd,_emscripten_bind_btSimpleDynamicsWorld__removeVehicle_p1:N3,_emscripten_bind_btMultiSphereShape__getSphereCount_p0:O6,_emscripten_bind_btDbvtBroadphase__rayTest_p5:tA,_emscripten_bind_btDbvtBroadphase__rayTest_p4:tz,_emscripten_bind_btHinge2Constraint__setStiffness_p2:IQ,_emscripten_bind_btGeneric6DofSpringConstraint__enableSpring_p2:ael,_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_localShapeInfo_p1:ak0,_emscripten_bind_btCylinderShapeX__isNonMoving_p0:Ku,_emscripten_bind_btConvexInternalShape__getMarginNV_p0:Tk,_emscripten_bind_btConeShapeX__isSoftBody_p0:Ao,_emscripten_bind_btSequentialImpulseConstraintSolver__btRand2_p0:Nr,_emscripten_bind_btPolyhedralConvexShape__getAngularMotionDisc_p0:s5,_emscripten_bind_btHingeConstraint__getInfo2Internal_p5:xR,_emscripten_bind_btVector3__serializeDouble_p1:GA,_emscripten_bind_btTriangleInfo__set_m_edgeV2V0Angle_p1:G9,_emscripten_bind_btCollisionDispatcher__getInternalManifoldPointer_p0:uI,_emscripten_bind_btVehicleRaycaster__castRay_p3:zH,_emscripten_bind_btOptimizedBvh__reportRayOverlappingNodex_p3:ry,_emscripten_bind_btManifoldPoint__get_m_index0_p0:aak,_emscripten_bind_btTriangleInfoMap__deSerialize_p1:alb,_emscripten_bind_btDynamicsWorld__convexSweepTest_p4:ma,_emscripten_bind_btPolyhedralConvexAabbCachingShape__setLocalScaling_p1:aha,_emscripten_bind_btDbvtBroadphase__get_m_updates_call_p0:sE,_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultMaxPersistentManifoldPoolSize_p1:Ru,_emscripten_bind_btHingeConstraint__getRigidBodyA_p0:xw,_emscripten_bind_btGeneric6DofConstraint__get_limit_motor_info2_p12:Xf,_emscripten_bind_btGeneric6DofSpringConstraint__testAngularLimitMotor_p1:ae5,_emscripten_bind_btCylinderShapeX__getHalfExtentsWithoutMargin_p0:Kv,_emscripten_bind_btDefaultCollisionConfiguration__btDefaultCollisionConfiguration_p1:jO,_emscripten_bind_btDefaultCollisionConfiguration__btDefaultCollisionConfiguration_p0:jN,_emscripten_bind_btCapsuleShape__getLocalScaling_p0:fs,_emscripten_bind_btRaycastVehicle__getNumWheels_p0:JA,_emscripten_bind_btUniformScalingShape__calculateTemporalAabb_p6:LJ,_emscripten_bind_btConvexInternalAabbCachingShape__getMargin_p0:QL,_emscripten_bind_btConcaveShape__getMargin_p0:akK,_emscripten_bind_btBroadphaseProxy__set_m_clientObject_p1:aeA,_emscripten_bind_btBU_Simplex1to4__getAabb_p3:E3,_emscripten_bind_btGeneric6DofSpringConstraint__getLinearLowerLimit_p1:aeS,_emscripten_bind_btManifoldPoint__get_m_partId0_p0:aaf,_emscripten_bind_btManifoldPoint__set_m_contactCFM2_p1:aam,_emscripten_bind_btUniversalConstraint__getInfo1NonVirtual_p1:nu,_emscripten_bind_btTranslationalLimitMotor__testLimitValue_p2:S4,_emscripten_bind_btCylinderShapeZ__getAabbSlow_p3:acS,_emscripten_bind_btHingeConstraint__getUseFrameOffset_p0:yb,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_flags_p0:JW,_emscripten_bind_btDynamicsWorld__convexSweepTest_p5:mb,_emscripten_bind_btCylinderShape__isSoftBody_p0:Mi,_emscripten_bind_btCylinderShape__setMargin_p1:NE,_emscripten_bind_btUniversalConstraint__getBreakingImpulseThreshold_p0:mH,_emscripten_bind_btContinuousDynamicsWorld__getCollisionWorld_p0:BI,_emscripten_bind_btTriangleMesh__calculateAabbBruteForce_p2:AV,_emscripten_bind_btCylinderShapeX__localGetSupportingVertex_p1:KX,_emscripten_bind_btVector3__op_sub_p1:Gv,_emscripten_bind_btIndexedMesh__get_m_indexType_p0:gT,_emscripten_bind_btBvhTriangleMeshShape__getBoundingSphere_p2:ZL,_emscripten_bind_btBU_Simplex1to4__localGetSupportVertexNonVirtual_p1:EV,_emscripten_bind_btConeTwistConstraint__setUserConstraintId_p1:wR,_emscripten_bind_btConvexInternalAabbCachingShape__isNonMoving_p0:P6,_emscripten_bind_btGeneric6DofSpringConstraint__setAxis_p2:ae4,_emscripten_bind_btCapsuleShapeX__isInfinite_p0:ag1,_emscripten_bind_btCylinderShapeZ__isConvex_p0:acd,_emscripten_bind_btSimpleBroadphaseProxy__set_m_nextFree_p1:ub,_emscripten_bind_btSliderConstraint__getAngularPos_p0:Zm,_emscripten_bind_btTriangleIndexVertexArray__getLockedVertexIndexBase_p8:afM,_emscripten_bind_btConvexInternalShape__isSoftBody_p0:TU,_emscripten_bind_btMultiSphereShape__getBoundingSphere_p2:PD,_emscripten_bind_btManifoldPoint__set_m_contactMotion2_p1:aaO,_emscripten_bind_btManifoldResult__setShapeIdentifiersB_p2:OX,_emscripten_bind_btConvexHullShape__isPolyhedral_p0:fS,_emscripten_bind_btBU_Simplex1to4__localGetSupportingVertex_p1:EO,_emscripten_bind_btSphereShape__getAabb_p3:ama,_emscripten_bind_btCollisionObject__setFriction_p1:g1,_emscripten_bind_btConvexHullShape__getMarginNV_p0:fW,_emscripten_bind_btCylinderShapeZ__isPolyhedral_p0:aca,_emscripten_bind_btBU_Simplex1to4__isConcave_p0:Fe,_emscripten_bind_btConvexShape__calculateTemporalAabb_p6:Rf,_emscripten_bind_btIDebugDraw__drawContactPoint_p5:te,_emscripten_bind_btConeShapeZ__isPolyhedral_p0:zm,_emscripten_bind_btWheelInfo__set_m_suspensionRelativeVelocity_p1:D0,_emscripten_bind_btContactConstraint__getUserConstraintPtr_p0:$0,_emscripten_bind_btContactConstraint__buildJacobian_p0:$M,_emscripten_bind_btRaycastVehicle__updateVehicle_p1:Kc,_emscripten_bind_ConcreteContactResultCallback__set_m_collisionFilterGroup_p1:Nn,_emscripten_bind_btClock____destroy___p0:Xz,_emscripten_bind_btClock__btClock_p1:XH,_emscripten_bind_btClock__btClock_p0:XG,_emscripten_bind_btTriangleMesh__getNumTriangles_p0:Ax,_emscripten_bind_btHingeConstraint__getRigidBodyB_p0:xv,_emscripten_bind_btCylinderShape__setUserPointer_p1:L7,_emscripten_bind_btManifoldPoint__get_m_lifeTime_p0:aaq,_emscripten_bind_btConvexTriangleMeshShape__getImplicitShapeDimensions_p0:ip,_emscripten_bind_btConvexInternalAabbCachingShape__getPreferredPenetrationDirection_p2:QN,_emscripten_bind_btBroadphaseProxy__isCompound_p1:ad$,_emscripten_bind_btConvexInternalShape__getLocalScaling_p0:TC,_emscripten_bind_btTriangleIndexVertexArray__btTriangleIndexVertexArray_p6:afk,_emscripten_bind_btRigidBody__setUserPointer_p1:on,_emscripten_bind_btGhostObject__getBroadphaseHandle_p0:ajR,_emscripten_bind_btUniformScalingShape__isCompound_p0:KO,_emscripten_bind_btSimpleDynamicsWorld__debugDrawWorld_p0:Ow,_emscripten_bind_btTriangleIndexVertexArray__btTriangleIndexVertexArray_p0:afj,_emscripten_bind_btPairCachingGhostObject__setInterpolationAngularVelocity_p1:UL,_emscripten_bind_btQuadWord__z_p0:L2,_emscripten_bind_btSerializer__allocate_p2:H5,_emscripten_bind_btConvexShape__getAabbNonVirtual_p3:Q2,_emscripten_bind_btSimpleDynamicsWorld__convexSweepTest_p5:Oy,_emscripten_bind_btSphereShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:amH,_emscripten_bind_btStridingMeshInterface__InternalProcessAllTriangles_p3:abw,_emscripten_bind_btGhostObject__getDeactivationTime_p0:aiP,_emscripten_bind_btPoint2PointConstraint__setBreakingImpulseThreshold_p1:ab0,_emscripten_bind_btManifoldResult__btManifoldResult_p2:O3,_emscripten_bind_btManifoldResult__btManifoldResult_p0:O2,_emscripten_bind_btSliderConstraint__getSoftnessOrthoLin_p0:_j,_emscripten_bind_btDbvtProxy__isPolyhedral_p1:MV,_emscripten_bind_btIndexedMesh__set_m_triangleIndexStride_p1:gW,_emscripten_bind_btVector4__setMin_p1:Ff,_emscripten_bind_btManifoldPoint__set_m_index1_p1:aaD,_emscripten_bind_btPoint2PointConstraint__setDbgDrawSize_p1:ab_,_emscripten_bind_btPoint2PointConstraint__getConstraintType_p0:abT,_emscripten_bind_btEmptyShape__calculateSerializeBufferSize_p0:oO,_emscripten_bind_btStaticPlaneShape__getLocalScaling_p0:VP,_emscripten_bind_btManifoldPoint__set_m_positionWorldOnA_p1:abg,_emscripten_bind_btOverlapCallback__processOverlap_p1:VM,_emscripten_bind_btConeShape__calculateLocalInertia_p2:Dk,_emscripten_bind_btStackAlloc__destroy_p0:m3,_emscripten_bind_btConeShapeX__getAngularMotionDisc_p0:AO,_emscripten_bind_btOverlappingPairCallback__removeOverlappingPairsContainingProxy_p2:Sz,_emscripten_bind_btBroadphasePair__set_m_pProxy0_p1:Bk,_emscripten_bind_btPairCachingGhostObject__setActivationState_p1:U1,_emscripten_bind_ConcreteContactResultCallback__get_m_collisionFilterMask_p0:Np,_emscripten_bind_btSliderConstraint__testLinLimits_p0:$e,_emscripten_bind_btBvhTriangleMeshShape__serializeSingleShape_p1:ZN,_emscripten_bind_btSliderConstraint__setBreakingImpulseThreshold_p1:_f,_emscripten_bind_btTranslationalLimitMotor__get_m_normalCFM_p0:Td,_emscripten_bind_btConeShapeX__getHeight_p0:Af,_emscripten_bind_btGhostObject__getCcdSquareMotionThreshold_p0:ajV,_emscripten_bind_btMatrix3x3__cofac_p4:eh,_emscripten_bind_btDbvtBroadphase__setAabb_p4:tB,_emscripten_bind_btSimpleDynamicsWorld__setWorldUserInfo_p1:Oi,_emscripten_bind_btPolyhedralConvexShape__getNumPlanes_p0:r_,_emscripten_bind_btGhostObject__mergesSimulationIslands_p0:aiW,_emscripten_bind_btConeTwistConstraint__setParam_p2:wH,_emscripten_bind_btPersistentManifold____destroy___p0:kB,_emscripten_bind_btBoxShape__getBoundingSphere_p2:agi,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalAngularDampingThresholdSqr_p0:Yd,_emscripten_bind_btRigidBody__getInterpolationAngularVelocity_p0:pi,_emscripten_bind_btCollisionShape__isCompound_p0:Vt,_emscripten_bind_btVector4__minAxis4_p0:Fk,_emscripten_bind_btBroadphasePair__set_m_pProxy1_p1:Bl,_emscripten_bind_btQuadWord__setMin_p1:LS,_emscripten_bind_btDispatcherInfo__set_m_enableSatConvex_p1:eH,_emscripten_bind_btDbvtBroadphase__createProxy_p8:tG,_emscripten_bind_btCapsuleShapeZ__getBoundingSphere_p2:ajp,_emscripten_bind_btDynamicsWorld__getConstraintSolver_p0:mO,_emscripten_bind_btSequentialImpulseConstraintSolver__allSolved_p3:NX,_emscripten_bind_btOverlappingPairCache__getOverlappingPairArray_p0:V6,_emscripten_bind_btQuaternion__inverse_p0:aic,_emscripten_bind_btRigidBody__internalGetExtensionPointer_p0:o6,_emscripten_bind_btTranslationalLimitMotor__set_m_lowerLimit_p1:Tx,_emscripten_bind_btDynamicsWorld__objectQuerySingle_p8:mZ,_emscripten_bind_btCollisionObject__isStaticObject_p0:hj,_emscripten_bind_btCapsuleShape__getBoundingSphere_p2:fK,_emscripten_bind_btStorageResult__setShapeIdentifiersB_p2:NL,_emscripten_bind_bt32BitAxisSweep3__destroyProxy_p2:alX,_emscripten_bind_btConvexInternalAabbCachingShape__isPolyhedral_p0:P1,_emscripten_bind_btScaledBvhTriangleMeshShape__getMargin_p0:lK,_emscripten_bind_btSliderConstraint__getPoweredLinMotor_p0:Zp,_emscripten_bind_btPolyhedralConvexShape__getBoundingSphere_p2:s4,_emscripten_bind_btHinge2Constraint__calculateSerializeBufferSize_p0:I2,_emscripten_bind_btGeneric6DofConstraint__getParam_p2:W2,_emscripten_bind_btVector3__setX_p1:GZ,_emscripten_bind_btSphereShape__getBoundingSphere_p2:amI,_emscripten_bind_btGeneric6DofConstraint__getParam_p1:W1,_emscripten_bind_btActionInterface__updateAction_p2:GK,_emscripten_bind_btConvexInternalAabbCachingShape__calculateSerializeBufferSize_p0:QE,_emscripten_bind_btMultiSphereShape__getAngularMotionDisc_p0:PE,_emscripten_bind_btGeneric6DofConstraint__getAngularLowerLimit_p1:WB,_emscripten_bind_btOptimizedBvh__getQuantizedNodeArray_p0:q_,_emscripten_bind_btQuantizedBvh__buildInternal_p0:amN,_emscripten_bind_btConvexShape__getMargin_p0:Q9,_emscripten_bind_btPoint2PointConstraint__setUserConstraintType_p1:ab$,_emscripten_bind_btPoint2PointConstraint__internalSetAppliedImpulse_p1:abV,_emscripten_bind_btDefaultMotionState__get_m_startWorldTrans_p0:BB,_emscripten_bind_btConeShape__setMargin_p1:DB,_emscripten_bind_btStackAlloc__create_p1:m2,_emscripten_bind_btRigidBody__getAnisotropicFriction_p0:pX,_emscripten_bind_btBU_Simplex1to4__isSoftBody_p0:E8,_emscripten_bind_btDiscreteDynamicsWorld__btDiscreteDynamicsWorld_p4:wN,_emscripten_bind_btCollisionShape__calculateLocalInertia_p2:Wf,_emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p6:ae8,_emscripten_bind_btContinuousDynamicsWorld__getNumCollisionObjects_p0:Cv,_emscripten_bind_btQuaternion__length2_p0:air,_emscripten_bind_btRigidBody__getDeltaLinearVelocity_p0:qt,_emscripten_bind_btPairCachingGhostObject__setCcdSweptSphereRadius_p1:Up,_emscripten_bind_btConvexHullShape__getNonvirtualAabb_p4:gw,_emscripten_bind_btCylinderShapeZ__getNumPreferredPenetrationDirections_p0:acy,_emscripten_bind_btGeneric6DofConstraint__setUseFrameOffset_p1:WH,_emscripten_bind_btRaycastVehicle__getForwardAxis_p0:JH,_emscripten_bind_btContactConstraint__internalGetAppliedImpulse_p0:$5,_emscripten_bind_btDbvtBroadphase__calculateOverlappingPairs_p1:tx,_emscripten_bind_btStaticPlaneShape__getUserPointer_p0:Vl,_emscripten_bind_btScaledBvhTriangleMeshShape__isCompound_p0:lf,_emscripten_bind_btSimpleDynamicsWorld__contactTest_p2:Oe,_emscripten_bind_btGhostObject__internalGetExtensionPointer_p0:aj8,_emscripten_bind_btStridingMeshInterface__getNumSubParts_p0:aby,_emscripten_bind_btVector3__getSkewSymmetricMatrix_p3:Gn,_emscripten_bind_btGhostObject__setBroadphaseHandle_p1:akd,_emscripten_bind_ConcreteContactResultCallback____destroy___p0:NR,_emscripten_bind_btTranslationalLimitMotor__get_m_maxMotorForce_p0:S9,_emscripten_bind_btCapsuleShapeX__getNumPreferredPenetrationDirections_p0:ahy,_emscripten_bind_btPolyhedralConvexAabbCachingShape__isConvex2d_p0:agI,_emscripten_bind_btDbvtProxy__set_m_collisionFilterGroup_p1:Nh,_emscripten_bind_btHingeConstraint__setFrames_p2:yT,_emscripten_bind_btBroadphaseAabbCallback__process_p1:BO,_emscripten_bind_btMultiSphereShape__getContactBreakingThreshold_p1:Pt,_emscripten_bind_btCylinderShape__getAabb_p3:ME,_emscripten_bind_btConvexSeparatingDistanceUtil__updateSeparatingDistance_p2:adI,_emscripten_bind_btDynamicsWorld__getWorldUserInfo_p0:mk,_emscripten_bind_btRaycastVehicle__getUserConstraintId_p0:Jo,_emscripten_bind_btEmptyShape__isInfinite_p0:of,_emscripten_bind_btAngularLimit__getSign_p0:jf,_emscripten_bind_btManifoldPoint__set_m_lateralFrictionDir2_p1:abk,_emscripten_bind_btGeneric6DofConstraint__internalSetAppliedImpulse_p1:WS,_emscripten_bind_btOverlappingPairCallback__removeOverlappingPair_p3:Sy,_emscripten_bind_btTranslationalLimitMotor__set_m_upperLimit_p1:Tt,_emscripten_bind_btVector3__cross_p1:GQ,_emscripten_bind_btCylinderShapeZ__serialize_p2:acw,_emscripten_bind_btCylinderShapeZ__isSoftBody_p0:acj,_emscripten_bind_btMultiSphereShape__serialize_p2:O0,_emscripten_bind_btTriangleInfoMap__get_m_zeroAreaThreshold_p0:akq,_emscripten_bind_btVector4__length_p0:GI,_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p3:YT,_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p2:YS,_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_distFraction_p1:LO,_emscripten_bind_btCollisionShape__isNonMoving_p0:Vy,_emscripten_bind_btConvexShape__localGetSupportingVertex_p1:QZ,_emscripten_bind_btConvexTriangleMeshShape____destroy___p0:iQ,_emscripten_bind_btRigidBody__setIslandTag_p1:ou,_emscripten_bind_btBoxShape__calculateSerializeBufferSize_p0:af1,_emscripten_bind_btPolyhedralConvexShape__isInfinite_p0:r9,_emscripten_bind_btTriangleMesh__unLockVertexBase_p1:Bb,_emscripten_bind_btQuaternion__setMin_p1:ahX,_emscripten_bind_btConeShapeZ__getHeight_p0:zo,_emscripten_bind_btGhostObject__setInterpolationWorldTransform_p1:ajz,_emscripten_bind_btAngularLimit__getRelaxationFactor_p0:ji,_emscripten_bind_btSphereShape__isInfinite_p0:alz,_emscripten_bind_btManifoldPoint__get_m_combinedRestitution_p0:aaM,_emscripten_bind_btBvhTriangleMeshShape__getLocalScaling_p0:Zt,_emscripten_bind_btMultiSphereShape__recalcLocalAabb_p0:Pv,_emscripten_bind_btHinge2Constraint__setDbgDrawSize_p1:IK,_emscripten_bind_btBoxShape__getNumVertices_p0:afV,_emscripten_bind_btOptimizedBvh__getSubtreeInfoArray_p0:q$,_emscripten_bind_btBvhTriangleMeshShape__getLocalAabbMin_p0:Y9,_emscripten_bind_btBU_Simplex1to4__getName_p0:E_,_emscripten_bind_btStorageResult__addContactPoint_p3:NJ,_emscripten_bind_btHingeConstraint__getSolveLimit_p0:yh,_emscripten_bind_btTranslationalLimitMotor__get_m_currentLinearDiff_p0:Sp,_emscripten_bind_btConvexTriangleMeshShape__serialize_p2:iI,_emscripten_bind_btDispatcher__getNumManifolds_p0:RI,_emscripten_bind_btSphereShape__calculateSerializeBufferSize_p0:al5,_emscripten_bind_btSliderConstraint__getInfo1_p1:ZY,_emscripten_bind_btSimpleDynamicsWorld__getForceUpdateAllAabbs_p0:NC,_emscripten_bind_btGhostObject____destroy___p0:akA,_emscripten_bind_btConvexInternalAabbCachingShape__recalcLocalAabb_p0:QM,_emscripten_bind_btConvexShape__serializeSingleShape_p1:Ri,_emscripten_bind_btCapsuleShapeX____destroy___p0:ahO,_emscripten_bind_btCapsuleShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:ahP,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitPointWorld_p0:ada,_emscripten_bind_btUniformScalingShape__isInfinite_p0:KR,_emscripten_bind_btConvexHullShape__calculateTemporalAabb_p6:hS,_emscripten_bind_btBoxShape__getAabb_p3:af8,_emscripten_bind_btHingeConstraint__setParam_p2:yo,_emscripten_bind_btUniversalConstraint__isLimited_p1:nq,_emscripten_bind_btCapsuleShapeX__getAabb_p3:ahF,_emscripten_bind_btSphereShape__localGetSupportingVertexWithoutMargin_p1:amh,_emscripten_bind_btHinge2Constraint__getObjectType_p0:IY,_emscripten_bind_btManifoldPoint__setDistance_p1:aav,_emscripten_bind_btGhostObject__checkCollideWith_p1:ajD,_emscripten_bind_btCapsuleShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1:ajb,_emscripten_bind_btTriangleIndexVertexArray__InternalProcessAllTriangles_p3:afH,_emscripten_bind_btMatrix3x3__setRotation_p1:ew,_emscripten_bind_btVector4__btVector4_p0:Ge,_emscripten_bind_btManifoldPoint__set_m_partId0_p1:aat,_emscripten_bind_btPolyhedralConvexAabbCachingShape__setUserPointer_p1:afC,_emscripten_bind_btVector4__btVector4_p4:Gf,_emscripten_bind_btGhostObject__getCollisionFlags_p0:aj4,_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_maximumDistanceSquared_p1:YE,_emscripten_bind_btGeneric6DofConstraint__updateRHS_p1:Wy,_emscripten_bind_btContactConstraint__serialize_p2:aa3,_emscripten_bind_btConvexSeparatingDistanceUtil__initSeparatingDistance_p4:adK,_emscripten_bind_btMultiSphereShape__isNonMoving_p0:Pc,_emscripten_bind_btHinge2Constraint__enableSpring_p2:IN,_emscripten_bind_btCapsuleShapeX__setLocalScaling_p1:ahE,_emscripten_bind_bt32BitAxisSweep3__getNumHandles_p0:ak8,_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_transformB_p0:YB,_emscripten_bind_btDefaultCollisionConstructionInfo____destroy___p0:RF,_emscripten_bind_btDiscreteDynamicsWorld__getSimulationIslandManager_p0:vF,_emscripten_bind_btHinge2Constraint__getInfo2_p1:Io,_emscripten_bind_btPoint2PointConstraint__btPoint2PointConstraint_p4:acX,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_localInertia_p1:YH,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionFilterGroup_p0:Hv,_emscripten_bind_btUniversalConstraint__setAngularUpperLimit_p1:n8,_emscripten_bind_btQuantizedBvh__deSerializeFloat_p1:amZ,_emscripten_bind_btConvexTriangleMeshShape__isConcave_p0:it,_emscripten_bind_btRigidBody__setAngularFactor_p1:qJ,_emscripten_bind_btAngularLimit__btAngularLimit_p0:jM,_emscripten_bind_btCapsuleShapeZ__setUserPointer_p1:aiy,_emscripten_bind_btConvexTriangleMeshShape__serializeSingleShape_p1:iU,_emscripten_bind_btCollisionWorld__ContactResultCallback__needsCollision_p1:jG,_emscripten_bind_btCollisionWorld__LocalConvexResult__LocalConvexResult_p5:alm,_emscripten_bind_btSliderConstraint__setSoftnessOrthoLin_p1:_C,_emscripten_bind_btContinuousDynamicsWorld__serialize_p1:B7,_emscripten_bind_btGhostObject__removeOverlappingObjectInternal_p2:aju,_emscripten_bind_btSphereShape__getMarginNonVirtual_p0:ami,_emscripten_bind_btCollisionDispatcher__needsResponse_p2:uy,_emscripten_bind_btCapsuleShapeX__localGetSupportVertexNonVirtual_p1:ahG,_emscripten_bind_btPoint2PointConstraint__getParam_p2:abK,_emscripten_bind_btConeShapeZ__localGetSupportVertexNonVirtual_p1:zV,_emscripten_bind_btCollisionObject__getInternalType_p0:hu,_emscripten_bind_btPoint2PointConstraint__getParam_p1:abJ,_emscripten_bind_btContinuousDynamicsWorld__getDispatchInfo_p0:CC,_emscripten_bind_btConeShapeX__localGetSupportVertexNonVirtual_p1:AE,_emscripten_bind_btGeneric6DofSpringConstraint__setAngularUpperLimit_p1:ae3,_emscripten_bind_btUniformScalingShape__setMargin_p1:LF,_emscripten_bind_btDiscreteCollisionDetectorInterface__Result__setShapeIdentifiersA_p2:agr,_emscripten_bind_btConvexTriangleMeshShape__isConvex2d_p0:ii,_emscripten_bind_btGhostObject__setInterpolationLinearVelocity_p1:ajw,_emscripten_bind_btOptimizedBvh__setQuantizationValues_p2:qV,_emscripten_bind_btOptimizedBvh__setQuantizationValues_p3:qW,_emscripten_bind_btMatrix3x3__setValue_p9:eo,_emscripten_bind_btTriangleInfoMap__set_m_maxEdgeAngleThreshold_p1:akZ,_emscripten_bind_btDiscreteDynamicsWorld__updateSingleAabb_p1:wv,_emscripten_bind_btMatrix3x3__op_mul_p1:el,runPostSets:dZ,stackAlloc:dJ,stackSave:dK,stackRestore:dL,setThrew:dM,setTempRet0:dP,setTempRet1:dQ,setTempRet2:dR,setTempRet3:dS,setTempRet4:dT,setTempRet5:dU,setTempRet6:dV,setTempRet7:dW,setTempRet8:dX,setTempRet9:dY,dynCall_viiiii:aDI,dynCall_iiiiiif:aD1,dynCall_vif:aEm,dynCall_viifii:aEH,dynCall_viiiifffffif:aE0,dynCall_vi:aFl,dynCall_iiiiiffii:aFG,dynCall_vii:aF$,dynCall_viiifii:aGk,dynCall_ifffffffff:aGF,dynCall_viiiif:aG_,dynCall_viiiiffffii:aHj,dynCall_ii:aHE,dynCall_iiiiiiifif:aHZ,dynCall_vifffi:aIi,dynCall_ifiii:aID,dynCall_viifi:aIY,dynCall_viiiiiiiii:aJh,dynCall_viiiiiiff:aJC,dynCall_iiiifiii:aJX,dynCall_iiiiiiiiiiiiii:aKg,dynCall_viffff:aKB,dynCall_viffiii:aKW,dynCall_iiiiiiiiiiii:aLf,dynCall_fififii:aLA,dynCall_fiiiiiiiiiii:aLV,dynCall_fiifii:aMe,dynCall_ifff:aMz,dynCall_viiff:aMU,dynCall_iifi:aNd,dynCall_iiii:aNy,dynCall_viiiifffffi:aNT,dynCall_fif:aOc,dynCall_iiiiff:aOx,dynCall_viff:aOS,dynCall_vifi:aPb,dynCall_viiiiif:aPw,dynCall_vifff:aPR,dynCall_viiiiii:aQa,dynCall_fiiff:aQv,dynCall_iiif:aQQ,dynCall_iiiiiiii:aQ9,dynCall_viiiiiiii:aRu,dynCall_viffffff:aRP,dynCall_fiii:aR8,dynCall_iiiiiiiiii:aSt,dynCall_fiif:aSO,dynCall_fiiiiiiiiii:aS7,dynCall_ifii:aTs,dynCall_fiffiiiiiii:aTN,dynCall_iiiiiiiiiiiii:aT6,dynCall_fiiiii:aUr,dynCall_iif:aUM,dynCall_if:aU5,dynCall_vifffff:aVq,dynCall_viiiiiiiif:aVL,dynCall_vifii:aV4,dynCall_fi:aWp,dynCall_viiiiiiiiii:aWK,dynCall_iii:aW3,dynCall_iiiiii:aXo,dynCall_iiiiiii:aXJ,dynCall_viiiiiiif:aX2,dynCall_fii:aYn,dynCall_vifffffffff:aYI,dynCall_fiiiiiiii:aY1,dynCall_iifif:aZm,dynCall_iffff:aZH,dynCall_viiiiffffiif:aZ0,dynCall_iiiiif:a_l,dynCall_iiff:a_G,dynCall_viiif:a_$,dynCall_i:a$k,dynCall_viiiifii:a$F,dynCall_iiiifffiii:a$_,dynCall_viii:a0j,dynCall_iff:a0E,dynCall_v:a0Z,dynCall_iiiiiiiii:a1i,dynCall_iiiii:a1D,dynCall_viif:a1Y,dynCall_iiiif:a2h,dynCall_fiiifii:a2C,dynCall_viiii:a2X}})
// EMSCRIPTEN_END_ASM
({ "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array }, { "abort": abort, "assert": assert, "asmPrintInt": asmPrintInt, "asmPrintFloat": asmPrintFloat, "min": Math_min, "jsCall": jsCall, "invoke_viiiii": invoke_viiiii, "invoke_iiiiiif": invoke_iiiiiif, "invoke_vif": invoke_vif, "invoke_viifii": invoke_viifii, "invoke_viiiifffffif": invoke_viiiifffffif, "invoke_vi": invoke_vi, "invoke_iiiiiffii": invoke_iiiiiffii, "invoke_vii": invoke_vii, "invoke_viiifii": invoke_viiifii, "invoke_ifffffffff": invoke_ifffffffff, "invoke_viiiif": invoke_viiiif, "invoke_viiiiffffii": invoke_viiiiffffii, "invoke_ii": invoke_ii, "invoke_iiiiiiifif": invoke_iiiiiiifif, "invoke_vifffi": invoke_vifffi, "invoke_ifiii": invoke_ifiii, "invoke_viifi": invoke_viifi, "invoke_viiiiiiiii": invoke_viiiiiiiii, "invoke_viiiiiiff": invoke_viiiiiiff, "invoke_iiiifiii": invoke_iiiifiii, "invoke_iiiiiiiiiiiiii": invoke_iiiiiiiiiiiiii, "invoke_viffff": invoke_viffff, "invoke_viffiii": invoke_viffiii, "invoke_iiiiiiiiiiii": invoke_iiiiiiiiiiii, "invoke_fififii": invoke_fififii, "invoke_fiiiiiiiiiii": invoke_fiiiiiiiiiii, "invoke_fiifii": invoke_fiifii, "invoke_ifff": invoke_ifff, "invoke_viiff": invoke_viiff, "invoke_iifi": invoke_iifi, "invoke_iiii": invoke_iiii, "invoke_viiiifffffi": invoke_viiiifffffi, "invoke_fif": invoke_fif, "invoke_iiiiff": invoke_iiiiff, "invoke_viff": invoke_viff, "invoke_vifi": invoke_vifi, "invoke_viiiiif": invoke_viiiiif, "invoke_vifff": invoke_vifff, "invoke_viiiiii": invoke_viiiiii, "invoke_fiiff": invoke_fiiff, "invoke_iiif": invoke_iiif, "invoke_iiiiiiii": invoke_iiiiiiii, "invoke_viiiiiiii": invoke_viiiiiiii, "invoke_viffffff": invoke_viffffff, "invoke_fiii": invoke_fiii, "invoke_iiiiiiiiii": invoke_iiiiiiiiii, "invoke_fiif": invoke_fiif, "invoke_fiiiiiiiiii": invoke_fiiiiiiiiii, "invoke_ifii": invoke_ifii, "invoke_fiffiiiiiii": invoke_fiffiiiiiii, "invoke_iiiiiiiiiiiii": invoke_iiiiiiiiiiiii, "invoke_fiiiii": invoke_fiiiii, "invoke_iif": invoke_iif, "invoke_if": invoke_if, "invoke_vifffff": invoke_vifffff, "invoke_viiiiiiiif": invoke_viiiiiiiif, "invoke_vifii": invoke_vifii, "invoke_fi": invoke_fi, "invoke_viiiiiiiiii": invoke_viiiiiiiiii, "invoke_iii": invoke_iii, "invoke_iiiiii": invoke_iiiiii, "invoke_iiiiiii": invoke_iiiiiii, "invoke_viiiiiiif": invoke_viiiiiiif, "invoke_fii": invoke_fii, "invoke_vifffffffff": invoke_vifffffffff, "invoke_fiiiiiiii": invoke_fiiiiiiii, "invoke_iifif": invoke_iifif, "invoke_iffff": invoke_iffff, "invoke_viiiiffffiif": invoke_viiiiffffiif, "invoke_iiiiif": invoke_iiiiif, "invoke_iiff": invoke_iiff, "invoke_viiif": invoke_viiif, "invoke_i": invoke_i, "invoke_viiiifii": invoke_viiiifii, "invoke_iiiifffiii": invoke_iiiifffiii, "invoke_viii": invoke_viii, "invoke_iff": invoke_iff, "invoke_v": invoke_v, "invoke_iiiiiiiii": invoke_iiiiiiiii, "invoke_iiiii": invoke_iiiii, "invoke_viif": invoke_viif, "invoke_iiiif": invoke_iiiif, "invoke_fiiifii": invoke_fiiifii, "invoke_viiii": invoke_viiii, "_llvm_lifetime_end": _llvm_lifetime_end, "_cosf": _cosf, "_fabsf": _fabsf, "_sysconf": _sysconf, "___cxa_throw": ___cxa_throw, "_atexit": _atexit, "_abort": _abort, "_fprintf": _fprintf, "_llvm_eh_exception": _llvm_eh_exception, "_printf": _printf, "_acosf": _acosf, "_fflush": _fflush, "_sqrtf": _sqrtf, "_write": _write, "___setErrNo": ___setErrNo, "_fwrite": _fwrite, "_send": _send, "_llvm_pow_f32": _llvm_pow_f32, "_llvm_umul_with_overflow_i32": _llvm_umul_with_overflow_i32, "_exit": _exit, "_atan2f": _atan2f, "___cxa_pure_virtual": ___cxa_pure_virtual, "_llvm_bswap_i16": _llvm_bswap_i16, "__formatString": __formatString, "__reallyNegative": __reallyNegative, "_time": _time, "_asinf": _asinf, "___cxa_does_inherit": ___cxa_does_inherit, "___cxa_guard_acquire": ___cxa_guard_acquire, "__ZSt9terminatev": __ZSt9terminatev, "_gettimeofday": _gettimeofday, "___cxa_find_matching_catch": ___cxa_find_matching_catch, "_sinf": _sinf, "__ZN20btAxisSweep3InternalItE26processAllOverlappingPairsEP17btOverlapCallback": __ZN20btAxisSweep3InternalItE26processAllOverlappingPairsEP17btOverlapCallback, "___assert_func": ___assert_func, "__ZSt18uncaught_exceptionv": __ZSt18uncaught_exceptionv, "_pwrite": _pwrite, "___cxa_call_unexpected": ___cxa_call_unexpected, "_sbrk": _sbrk, "___cxa_guard_abort": ___cxa_guard_abort, "___cxa_allocate_exception": ___cxa_allocate_exception, "___errno_location": ___errno_location, "___gxx_personality_v0": ___gxx_personality_v0, "__ZN20btAxisSweep3InternalIjE26processAllOverlappingPairsEP17btOverlapCallback": __ZN20btAxisSweep3InternalIjE26processAllOverlappingPairsEP17btOverlapCallback, "_llvm_lifetime_start": _llvm_lifetime_start, "___cxa_is_number_type": ___cxa_is_number_type, "_llvm_bswap_i32": _llvm_bswap_i32, "_fmod": _fmod, "___cxa_guard_release": ___cxa_guard_release, "__exit": __exit, "___resumeException": ___resumeException, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "NaN": NaN, "Infinity": Infinity, "__ZTVN10__cxxabiv117__class_type_infoE": __ZTVN10__cxxabiv117__class_type_infoE, "__ZTVN10__cxxabiv120__si_class_type_infoE": __ZTVN10__cxxabiv120__si_class_type_infoE, "___dso_handle": ___dso_handle }, buffer);
var _emscripten_bind_btConeShapeX__setConeUpIndex_p1 = Module["_emscripten_bind_btConeShapeX__setConeUpIndex_p1"] = asm["_emscripten_bind_btConeShapeX__setConeUpIndex_p1"];
var _emscripten_bind_btDbvtProxy__get_stage_p0 = Module["_emscripten_bind_btDbvtProxy__get_stage_p0"] = asm["_emscripten_bind_btDbvtProxy__get_stage_p0"];
var _emscripten_bind_btContinuousDynamicsWorld____destroy___p0 = Module["_emscripten_bind_btContinuousDynamicsWorld____destroy___p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld____destroy___p0"];
var _emscripten_bind_btBoxShape__getNumPlanes_p0 = Module["_emscripten_bind_btBoxShape__getNumPlanes_p0"] = asm["_emscripten_bind_btBoxShape__getNumPlanes_p0"];
var _emscripten_bind_btHeightfieldTerrainShape____destroy___p0 = Module["_emscripten_bind_btHeightfieldTerrainShape____destroy___p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape____destroy___p0"];
var _emscripten_bind_btConvexHullShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btConvexHullShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btConvexHullShape__localGetSupportingVertex_p1"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabbSlow_p3 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabbSlow_p3"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabbSlow_p3"];
var _emscripten_bind_btGhostObject__upcast_p1 = Module["_emscripten_bind_btGhostObject__upcast_p1"] = asm["_emscripten_bind_btGhostObject__upcast_p1"];
var _emscripten_bind_btRotationalLimitMotor__set_m_maxLimitForce_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_maxLimitForce_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_maxLimitForce_p1"];
var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__hasHit_p0 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__hasHit_p0"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__hasHit_p0"];
var _emscripten_bind_btHeightfieldTerrainShape__getLocalScaling_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__getLocalScaling_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__getLocalScaling_p0"];
var _emscripten_bind_btGeneric6DofConstraint__isEnabled_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__isEnabled_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__isEnabled_p0"];
var _emscripten_bind_btBroadphaseProxy__isPolyhedral_p1 = Module["_emscripten_bind_btBroadphaseProxy__isPolyhedral_p1"] = asm["_emscripten_bind_btBroadphaseProxy__isPolyhedral_p1"];
var _emscripten_bind_btHinge2Constraint__buildJacobian_p0 = Module["_emscripten_bind_btHinge2Constraint__buildJacobian_p0"] = asm["_emscripten_bind_btHinge2Constraint__buildJacobian_p0"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__isInfinite_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__isInfinite_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__isInfinite_p0"];
var _emscripten_bind_btTriangleMesh__getLockedReadOnlyVertexIndexBase_p9 = Module["_emscripten_bind_btTriangleMesh__getLockedReadOnlyVertexIndexBase_p9"] = asm["_emscripten_bind_btTriangleMesh__getLockedReadOnlyVertexIndexBase_p9"];
var _emscripten_bind_btTriangleMesh__getLockedReadOnlyVertexIndexBase_p8 = Module["_emscripten_bind_btTriangleMesh__getLockedReadOnlyVertexIndexBase_p8"] = asm["_emscripten_bind_btTriangleMesh__getLockedReadOnlyVertexIndexBase_p8"];
var _emscripten_bind_btIDebugDraw__drawLine_p3 = Module["_emscripten_bind_btIDebugDraw__drawLine_p3"] = asm["_emscripten_bind_btIDebugDraw__drawLine_p3"];
var _emscripten_bind_btCollisionObject__mergesSimulationIslands_p0 = Module["_emscripten_bind_btCollisionObject__mergesSimulationIslands_p0"] = asm["_emscripten_bind_btCollisionObject__mergesSimulationIslands_p0"];
var _emscripten_bind_btIDebugDraw__drawLine_p4 = Module["_emscripten_bind_btIDebugDraw__drawLine_p4"] = asm["_emscripten_bind_btIDebugDraw__drawLine_p4"];
var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionObject_p1 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionObject_p1"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionObject_p1"];
var _emscripten_bind_btConeShape__getAabbSlow_p3 = Module["_emscripten_bind_btConeShape__getAabbSlow_p3"] = asm["_emscripten_bind_btConeShape__getAabbSlow_p3"];
var _emscripten_bind_btDiscreteDynamicsWorld__contactTest_p2 = Module["_emscripten_bind_btDiscreteDynamicsWorld__contactTest_p2"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__contactTest_p2"];
var _emscripten_bind_btDiscreteDynamicsWorld__objectQuerySingle_p8 = Module["_emscripten_bind_btDiscreteDynamicsWorld__objectQuerySingle_p8"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__objectQuerySingle_p8"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_flags_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_flags_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_flags_p1"];
var _emscripten_bind_btRigidBody____destroy___p0 = Module["_emscripten_bind_btRigidBody____destroy___p0"] = asm["_emscripten_bind_btRigidBody____destroy___p0"];
var _emscripten_bind_btSimpleBroadphase__destroyProxy_p2 = Module["_emscripten_bind_btSimpleBroadphase__destroyProxy_p2"] = asm["_emscripten_bind_btSimpleBroadphase__destroyProxy_p2"];
var _emscripten_bind_btBroadphaseInterface__createProxy_p8 = Module["_emscripten_bind_btBroadphaseInterface__createProxy_p8"] = asm["_emscripten_bind_btBroadphaseInterface__createProxy_p8"];
var _emscripten_bind_btHingeConstraint__getInfo1NonVirtual_p1 = Module["_emscripten_bind_btHingeConstraint__getInfo1NonVirtual_p1"] = asm["_emscripten_bind_btHingeConstraint__getInfo1NonVirtual_p1"];
var _emscripten_bind_btContactSolverInfo____destroy___p0 = Module["_emscripten_bind_btContactSolverInfo____destroy___p0"] = asm["_emscripten_bind_btContactSolverInfo____destroy___p0"];
var _emscripten_bind_btConeTwistConstraint__setUserConstraintType_p1 = Module["_emscripten_bind_btConeTwistConstraint__setUserConstraintType_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setUserConstraintType_p1"];
var _emscripten_bind_btCapsuleShape__getRadius_p0 = Module["_emscripten_bind_btCapsuleShape__getRadius_p0"] = asm["_emscripten_bind_btCapsuleShape__getRadius_p0"];
var _emscripten_bind_btConeShapeZ__serializeSingleShape_p1 = Module["_emscripten_bind_btConeShapeZ__serializeSingleShape_p1"] = asm["_emscripten_bind_btConeShapeZ__serializeSingleShape_p1"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_linearDamping_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_linearDamping_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_linearDamping_p1"];
var _emscripten_bind_btGhostObject__getCcdSweptSphereRadius_p0 = Module["_emscripten_bind_btGhostObject__getCcdSweptSphereRadius_p0"] = asm["_emscripten_bind_btGhostObject__getCcdSweptSphereRadius_p0"];
var _emscripten_bind_btCapsuleShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btCapsuleShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btCapsuleShape__getMarginNonVirtual_p0"];
var _emscripten_bind_btVector4__fuzzyZero_p0 = Module["_emscripten_bind_btVector4__fuzzyZero_p0"] = asm["_emscripten_bind_btVector4__fuzzyZero_p0"];
var _emscripten_bind_btConeShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btConeShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btConeShape__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btPoint2PointConstraint__getUserConstraintId_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getUserConstraintId_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getUserConstraintId_p0"];
var _emscripten_bind_btSphereShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btSphereShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btSphereShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btDbvtBroadphase__getBroadphaseAabb_p2 = Module["_emscripten_bind_btDbvtBroadphase__getBroadphaseAabb_p2"] = asm["_emscripten_bind_btDbvtBroadphase__getBroadphaseAabb_p2"];
var _emscripten_bind_btIDebugDraw__drawCapsule_p5 = Module["_emscripten_bind_btIDebugDraw__drawCapsule_p5"] = asm["_emscripten_bind_btIDebugDraw__drawCapsule_p5"];
var _emscripten_bind_btSimpleBroadphase__calculateOverlappingPairs_p1 = Module["_emscripten_bind_btSimpleBroadphase__calculateOverlappingPairs_p1"] = asm["_emscripten_bind_btSimpleBroadphase__calculateOverlappingPairs_p1"];
var _emscripten_bind_btPersistentManifold__get_m_index1a_p0 = Module["_emscripten_bind_btPersistentManifold__get_m_index1a_p0"] = asm["_emscripten_bind_btPersistentManifold__get_m_index1a_p0"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__needsCollision_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__needsCollision_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__needsCollision_p1"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getNonvirtualAabb_p4 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNonvirtualAabb_p4"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNonvirtualAabb_p4"];
var _emscripten_bind_btCapsuleShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btCapsuleShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btCapsuleShape__localGetSupportingVertex_p1"];
var _emscripten_bind_btGeneric6DofConstraint__btGeneric6DofConstraint_p3 = Module["_emscripten_bind_btGeneric6DofConstraint__btGeneric6DofConstraint_p3"] = asm["_emscripten_bind_btGeneric6DofConstraint__btGeneric6DofConstraint_p3"];
var _emscripten_bind_btAxisSweep3__unQuantize_p3 = Module["_emscripten_bind_btAxisSweep3__unQuantize_p3"] = asm["_emscripten_bind_btAxisSweep3__unQuantize_p3"];
var _emscripten_bind_btCapsuleShape__getUpAxis_p0 = Module["_emscripten_bind_btCapsuleShape__getUpAxis_p0"] = asm["_emscripten_bind_btCapsuleShape__getUpAxis_p0"];
var _emscripten_bind_btGeneric6DofConstraint__btGeneric6DofConstraint_p5 = Module["_emscripten_bind_btGeneric6DofConstraint__btGeneric6DofConstraint_p5"] = asm["_emscripten_bind_btGeneric6DofConstraint__btGeneric6DofConstraint_p5"];
var _emscripten_bind_btStaticPlaneShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btStaticPlaneShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btStaticPlaneShape__calculateLocalInertia_p2"];
var _emscripten_bind_btDispatcher__allocateCollisionAlgorithm_p1 = Module["_emscripten_bind_btDispatcher__allocateCollisionAlgorithm_p1"] = asm["_emscripten_bind_btDispatcher__allocateCollisionAlgorithm_p1"];
var _emscripten_bind_btConeShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btConeShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btConeShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btCylinderShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btCylinderShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btCylinderShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_maxSuspensionTravelCm_p1 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_maxSuspensionTravelCm_p1"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_maxSuspensionTravelCm_p1"];
var _emscripten_bind_btConvexTriangleMeshShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btConvexTriangleMeshShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btConvexTriangleMeshShape__calculateLocalInertia_p2"];
var _emscripten_bind_btHingeConstraint__getBFrame_p0 = Module["_emscripten_bind_btHingeConstraint__getBFrame_p0"] = asm["_emscripten_bind_btHingeConstraint__getBFrame_p0"];
var _emscripten_bind_btHingeConstraint__buildJacobian_p0 = Module["_emscripten_bind_btHingeConstraint__buildJacobian_p0"] = asm["_emscripten_bind_btHingeConstraint__buildJacobian_p0"];
var _emscripten_bind_btGeneric6DofConstraint__getLinearUpperLimit_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getLinearUpperLimit_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getLinearUpperLimit_p1"];
var _emscripten_bind_btCompoundShape__isNonMoving_p0 = Module["_emscripten_bind_btCompoundShape__isNonMoving_p0"] = asm["_emscripten_bind_btCompoundShape__isNonMoving_p0"];
var _emscripten_bind_btUniformScalingShape__setUserPointer_p1 = Module["_emscripten_bind_btUniformScalingShape__setUserPointer_p1"] = asm["_emscripten_bind_btUniformScalingShape__setUserPointer_p1"];
var _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_collisionAlgorithmPool_p1 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_collisionAlgorithmPool_p1"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_collisionAlgorithmPool_p1"];
var _emscripten_bind_btHinge2Constraint__getTranslationalLimitMotor_p0 = Module["_emscripten_bind_btHinge2Constraint__getTranslationalLimitMotor_p0"] = asm["_emscripten_bind_btHinge2Constraint__getTranslationalLimitMotor_p0"];
var _emscripten_bind_btTranslationalLimitMotor__get_m_limitSoftness_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_limitSoftness_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_limitSoftness_p0"];
var _emscripten_bind_btBoxShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btBoxShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btBoxShape__setImplicitShapeDimensions_p1"];
var _emscripten_bind_btConeTwistConstraint__setDamping_p1 = Module["_emscripten_bind_btConeTwistConstraint__setDamping_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setDamping_p1"];
var _emscripten_bind_btHeightfieldTerrainShape__setMargin_p1 = Module["_emscripten_bind_btHeightfieldTerrainShape__setMargin_p1"] = asm["_emscripten_bind_btHeightfieldTerrainShape__setMargin_p1"];
var _emscripten_bind_btDynamicsWorld__getDispatcher_p0 = Module["_emscripten_bind_btDynamicsWorld__getDispatcher_p0"] = asm["_emscripten_bind_btDynamicsWorld__getDispatcher_p0"];
var _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultMaxCollisionAlgorithmPoolSize_p1 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultMaxCollisionAlgorithmPoolSize_p1"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultMaxCollisionAlgorithmPoolSize_p1"];
var _emscripten_bind_btCylinderShape__isNonMoving_p0 = Module["_emscripten_bind_btCylinderShape__isNonMoving_p0"] = asm["_emscripten_bind_btCylinderShape__isNonMoving_p0"];
var _emscripten_bind_btCollisionObject__getRestitution_p0 = Module["_emscripten_bind_btCollisionObject__getRestitution_p0"] = asm["_emscripten_bind_btCollisionObject__getRestitution_p0"];
var _emscripten_bind_btConeTwistConstraint__getSolveTwistLimit_p0 = Module["_emscripten_bind_btConeTwistConstraint__getSolveTwistLimit_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getSolveTwistLimit_p0"];
var _emscripten_bind_btHinge2Constraint__setAngularUpperLimit_p1 = Module["_emscripten_bind_btHinge2Constraint__setAngularUpperLimit_p1"] = asm["_emscripten_bind_btHinge2Constraint__setAngularUpperLimit_p1"];
var _emscripten_bind_btPoint2PointConstraint__getInfo2_p1 = Module["_emscripten_bind_btPoint2PointConstraint__getInfo2_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__getInfo2_p1"];
var _emscripten_bind_btConeTwistConstraint__setFixThresh_p1 = Module["_emscripten_bind_btConeTwistConstraint__setFixThresh_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setFixThresh_p1"];
var _emscripten_bind_btConvexTriangleMeshShape__getLocalScaling_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getLocalScaling_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getLocalScaling_p0"];
var _emscripten_bind_btGhostObject__setCompanionId_p1 = Module["_emscripten_bind_btGhostObject__setCompanionId_p1"] = asm["_emscripten_bind_btGhostObject__setCompanionId_p1"];
var _emscripten_bind_btCapsuleShapeZ__isPolyhedral_p0 = Module["_emscripten_bind_btCapsuleShapeZ__isPolyhedral_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__isPolyhedral_p0"];
var _emscripten_bind_btDbvtBroadphase__setAabbForceUpdate_p4 = Module["_emscripten_bind_btDbvtBroadphase__setAabbForceUpdate_p4"] = asm["_emscripten_bind_btDbvtBroadphase__setAabbForceUpdate_p4"];
var _emscripten_bind_btQuaternion__normalized_p0 = Module["_emscripten_bind_btQuaternion__normalized_p0"] = asm["_emscripten_bind_btQuaternion__normalized_p0"];
var _emscripten_bind_btCompoundShape__getLocalScaling_p0 = Module["_emscripten_bind_btCompoundShape__getLocalScaling_p0"] = asm["_emscripten_bind_btCompoundShape__getLocalScaling_p0"];
var _emscripten_bind_btCylinderShapeZ__serializeSingleShape_p1 = Module["_emscripten_bind_btCylinderShapeZ__serializeSingleShape_p1"] = asm["_emscripten_bind_btCylinderShapeZ__serializeSingleShape_p1"];
var _emscripten_bind_btPairCachingGhostObject__getCompanionId_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getCompanionId_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getCompanionId_p0"];
var _emscripten_bind_btTypedConstraint__getRigidBodyA_p0 = Module["_emscripten_bind_btTypedConstraint__getRigidBodyA_p0"] = asm["_emscripten_bind_btTypedConstraint__getRigidBodyA_p0"];
var _emscripten_bind_btRigidBody__internalGetDeltaAngularVelocity_p0 = Module["_emscripten_bind_btRigidBody__internalGetDeltaAngularVelocity_p0"] = asm["_emscripten_bind_btRigidBody__internalGetDeltaAngularVelocity_p0"];
var _emscripten_bind_btConvexHullShape__isInfinite_p0 = Module["_emscripten_bind_btConvexHullShape__isInfinite_p0"] = asm["_emscripten_bind_btConvexHullShape__isInfinite_p0"];
var _emscripten_bind_btRaycastVehicle__debugDraw_p1 = Module["_emscripten_bind_btRaycastVehicle__debugDraw_p1"] = asm["_emscripten_bind_btRaycastVehicle__debugDraw_p1"];
var _emscripten_bind_btEmptyShape__isCompound_p0 = Module["_emscripten_bind_btEmptyShape__isCompound_p0"] = asm["_emscripten_bind_btEmptyShape__isCompound_p0"];
var _emscripten_bind_btSphereShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btSphereShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btSphereShape__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btTriangleMesh__addIndex_p1 = Module["_emscripten_bind_btTriangleMesh__addIndex_p1"] = asm["_emscripten_bind_btTriangleMesh__addIndex_p1"];
var _emscripten_bind_btRotationalLimitMotor__solveAngularLimits_p5 = Module["_emscripten_bind_btRotationalLimitMotor__solveAngularLimits_p5"] = asm["_emscripten_bind_btRotationalLimitMotor__solveAngularLimits_p5"];
var _emscripten_bind_btCapsuleShapeZ__getAabbNonVirtual_p3 = Module["_emscripten_bind_btCapsuleShapeZ__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btCapsuleShapeZ__getAabbNonVirtual_p3"];
var _emscripten_bind_btConeShape__isNonMoving_p0 = Module["_emscripten_bind_btConeShape__isNonMoving_p0"] = asm["_emscripten_bind_btConeShape__isNonMoving_p0"];
var _emscripten_bind_btTypedConstraint__getUserConstraintType_p0 = Module["_emscripten_bind_btTypedConstraint__getUserConstraintType_p0"] = asm["_emscripten_bind_btTypedConstraint__getUserConstraintType_p0"];
var _emscripten_bind_btMatrix3x3__deSerializeDouble_p1 = Module["_emscripten_bind_btMatrix3x3__deSerializeDouble_p1"] = asm["_emscripten_bind_btMatrix3x3__deSerializeDouble_p1"];
var _emscripten_bind_btVector3__y_p0 = Module["_emscripten_bind_btVector3__y_p0"] = asm["_emscripten_bind_btVector3__y_p0"];
var _emscripten_bind_btDynamicsWorld__removeVehicle_p1 = Module["_emscripten_bind_btDynamicsWorld__removeVehicle_p1"] = asm["_emscripten_bind_btDynamicsWorld__removeVehicle_p1"];
var _emscripten_bind_btCylinderShape__getAabbSlow_p3 = Module["_emscripten_bind_btCylinderShape__getAabbSlow_p3"] = asm["_emscripten_bind_btCylinderShape__getAabbSlow_p3"];
var _emscripten_bind_btManifoldPoint__get_m_lateralFrictionInitialized_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_lateralFrictionInitialized_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_lateralFrictionInitialized_p0"];
var _emscripten_bind_btBoxShape__getMarginNV_p0 = Module["_emscripten_bind_btBoxShape__getMarginNV_p0"] = asm["_emscripten_bind_btBoxShape__getMarginNV_p0"];
var _emscripten_bind_btRigidBody__getCenterOfMassTransform_p0 = Module["_emscripten_bind_btRigidBody__getCenterOfMassTransform_p0"] = asm["_emscripten_bind_btRigidBody__getCenterOfMassTransform_p0"];
var _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultMaxPersistentManifoldPoolSize_p0 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultMaxPersistentManifoldPoolSize_p0"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultMaxPersistentManifoldPoolSize_p0"];
var _emscripten_bind_btBU_Simplex1to4__isCompound_p0 = Module["_emscripten_bind_btBU_Simplex1to4__isCompound_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__isCompound_p0"];
var _emscripten_bind_btPoint2PointConstraint__getInfo1_p1 = Module["_emscripten_bind_btPoint2PointConstraint__getInfo1_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__getInfo1_p1"];
var _emscripten_bind_btTransform__deSerialize_p1 = Module["_emscripten_bind_btTransform__deSerialize_p1"] = asm["_emscripten_bind_btTransform__deSerialize_p1"];
var _emscripten_bind_btBoxShape__btBoxShape_p1 = Module["_emscripten_bind_btBoxShape__btBoxShape_p1"] = asm["_emscripten_bind_btBoxShape__btBoxShape_p1"];
var _emscripten_bind_btHeightfieldTerrainShape__getAabb_p3 = Module["_emscripten_bind_btHeightfieldTerrainShape__getAabb_p3"] = asm["_emscripten_bind_btHeightfieldTerrainShape__getAabb_p3"];
var _emscripten_bind_btSimpleBroadphaseProxy__set_m_clientObject_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__set_m_clientObject_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__set_m_clientObject_p1"];
var _emscripten_bind_btBvhTriangleMeshShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btGeneric6DofConstraint__testAngularLimitMotor_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__testAngularLimitMotor_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__testAngularLimitMotor_p1"];
var _emscripten_bind_btSimpleBroadphaseProxy__set_m_aabbMax_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__set_m_aabbMax_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__set_m_aabbMax_p1"];
var _emscripten_bind_btDbvtBroadphase__get_m_dupdates_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_dupdates_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_dupdates_p0"];
var _emscripten_bind_btRaycastVehicle__getSteeringValue_p1 = Module["_emscripten_bind_btRaycastVehicle__getSteeringValue_p1"] = asm["_emscripten_bind_btRaycastVehicle__getSteeringValue_p1"];
var _emscripten_bind_btRigidBody__internalSetExtensionPointer_p1 = Module["_emscripten_bind_btRigidBody__internalSetExtensionPointer_p1"] = asm["_emscripten_bind_btRigidBody__internalSetExtensionPointer_p1"];
var _emscripten_bind_btHingeConstraint__needsFeedback_p0 = Module["_emscripten_bind_btHingeConstraint__needsFeedback_p0"] = asm["_emscripten_bind_btHingeConstraint__needsFeedback_p0"];
var _emscripten_bind_btConvexShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btConvexShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btConvexShape__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btConvexTriangleMeshShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btHingeConstraint__getFrameOffsetA_p0 = Module["_emscripten_bind_btHingeConstraint__getFrameOffsetA_p0"] = asm["_emscripten_bind_btHingeConstraint__getFrameOffsetA_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__addAction_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__addAction_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__addAction_p1"];
var _emscripten_bind_btTransform__getOpenGLMatrix_p1 = Module["_emscripten_bind_btTransform__getOpenGLMatrix_p1"] = asm["_emscripten_bind_btTransform__getOpenGLMatrix_p1"];
var _emscripten_bind_btRigidBody__internalApplyPushImpulse_p3 = Module["_emscripten_bind_btRigidBody__internalApplyPushImpulse_p3"] = asm["_emscripten_bind_btRigidBody__internalApplyPushImpulse_p3"];
var _emscripten_bind_btPersistentManifold__getCacheEntry_p1 = Module["_emscripten_bind_btPersistentManifold__getCacheEntry_p1"] = asm["_emscripten_bind_btPersistentManifold__getCacheEntry_p1"];
var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_rayToWorld_p1 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_rayToWorld_p1"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_rayToWorld_p1"];
var _emscripten_bind_btRigidBody__applyForce_p2 = Module["_emscripten_bind_btRigidBody__applyForce_p2"] = asm["_emscripten_bind_btRigidBody__applyForce_p2"];
var _emscripten_bind_btConvexHullShape__addPoint_p1 = Module["_emscripten_bind_btConvexHullShape__addPoint_p1"] = asm["_emscripten_bind_btConvexHullShape__addPoint_p1"];
var _emscripten_bind_btIDebugDraw__drawTriangle_p5 = Module["_emscripten_bind_btIDebugDraw__drawTriangle_p5"] = asm["_emscripten_bind_btIDebugDraw__drawTriangle_p5"];
var _emscripten_bind_btConvexHullShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btConvexHullShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btConvexHullShape__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btDynamicsWorld__getPairCache_p0 = Module["_emscripten_bind_btDynamicsWorld__getPairCache_p0"] = asm["_emscripten_bind_btDynamicsWorld__getPairCache_p0"];
var _emscripten_bind_btSliderConstraint__getInfo2NonVirtual_p7 = Module["_emscripten_bind_btSliderConstraint__getInfo2NonVirtual_p7"] = asm["_emscripten_bind_btSliderConstraint__getInfo2NonVirtual_p7"];
var _emscripten_bind_btHinge2Constraint__get_m_useSolveConstraintObsolete_p0 = Module["_emscripten_bind_btHinge2Constraint__get_m_useSolveConstraintObsolete_p0"] = asm["_emscripten_bind_btHinge2Constraint__get_m_useSolveConstraintObsolete_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__isConvex2d_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__isConvex2d_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__isConvex2d_p0"];
var _emscripten_bind_btBroadphaseInterface__aabbTest_p3 = Module["_emscripten_bind_btBroadphaseInterface__aabbTest_p3"] = asm["_emscripten_bind_btBroadphaseInterface__aabbTest_p3"];
var _emscripten_bind_btSphereSphereCollisionAlgorithm__btSphereSphereCollisionAlgorithm_p1 = Module["_emscripten_bind_btSphereSphereCollisionAlgorithm__btSphereSphereCollisionAlgorithm_p1"] = asm["_emscripten_bind_btSphereSphereCollisionAlgorithm__btSphereSphereCollisionAlgorithm_p1"];
var _emscripten_bind_btQuantizedBvh__getQuantizedNodeArray_p0 = Module["_emscripten_bind_btQuantizedBvh__getQuantizedNodeArray_p0"] = asm["_emscripten_bind_btQuantizedBvh__getQuantizedNodeArray_p0"];
var _emscripten_bind_btConvexHullShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btConvexHullShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btConvexHullShape__getMarginNonVirtual_p0"];
var _emscripten_bind_btCollisionObject__getInterpolationWorldTransform_p0 = Module["_emscripten_bind_btCollisionObject__getInterpolationWorldTransform_p0"] = asm["_emscripten_bind_btCollisionObject__getInterpolationWorldTransform_p0"];
var _emscripten_bind_btHeightfieldTerrainShape__getBoundingSphere_p2 = Module["_emscripten_bind_btHeightfieldTerrainShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btHeightfieldTerrainShape__getBoundingSphere_p2"];
var _emscripten_bind_btRaycastVehicle__setBrake_p2 = Module["_emscripten_bind_btRaycastVehicle__setBrake_p2"] = asm["_emscripten_bind_btRaycastVehicle__setBrake_p2"];
var _emscripten_bind_btCollisionObject__getBroadphaseHandle_p0 = Module["_emscripten_bind_btCollisionObject__getBroadphaseHandle_p0"] = asm["_emscripten_bind_btCollisionObject__getBroadphaseHandle_p0"];
var _emscripten_bind_btCylinderShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btCylinderShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btCylinderShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btCollisionObject__getCcdSweptSphereRadius_p0 = Module["_emscripten_bind_btCollisionObject__getCcdSweptSphereRadius_p0"] = asm["_emscripten_bind_btCollisionObject__getCcdSweptSphereRadius_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__updateSingleAabb_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__updateSingleAabb_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__updateSingleAabb_p1"];
var _emscripten_bind_btIndexedMesh__set_m_vertexBase_p1 = Module["_emscripten_bind_btIndexedMesh__set_m_vertexBase_p1"] = asm["_emscripten_bind_btIndexedMesh__set_m_vertexBase_p1"];
var _emscripten_bind_btDbvtBroadphase__get_m_newpairs_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_newpairs_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_newpairs_p0"];
var _emscripten_bind_btPolyhedralConvexShape__getNumEdges_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getNumEdges_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getNumEdges_p0"];
var _emscripten_bind_btCollisionObject__setInterpolationWorldTransform_p1 = Module["_emscripten_bind_btCollisionObject__setInterpolationWorldTransform_p1"] = asm["_emscripten_bind_btCollisionObject__setInterpolationWorldTransform_p1"];
var _emscripten_bind_btPairCachingGhostObject__checkCollideWith_p1 = Module["_emscripten_bind_btPairCachingGhostObject__checkCollideWith_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__checkCollideWith_p1"];
var _emscripten_bind_btVector3__x_p0 = Module["_emscripten_bind_btVector3__x_p0"] = asm["_emscripten_bind_btVector3__x_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__removeRigidBody_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__removeRigidBody_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__removeRigidBody_p1"];
var _emscripten_bind_btSimpleBroadphase__aabbOverlap_p2 = Module["_emscripten_bind_btSimpleBroadphase__aabbOverlap_p2"] = asm["_emscripten_bind_btSimpleBroadphase__aabbOverlap_p2"];
var _emscripten_bind_btConeTwistConstraint__setBreakingImpulseThreshold_p1 = Module["_emscripten_bind_btConeTwistConstraint__setBreakingImpulseThreshold_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setBreakingImpulseThreshold_p1"];
var _emscripten_bind_btGhostObject__getRootCollisionShape_p0 = Module["_emscripten_bind_btGhostObject__getRootCollisionShape_p0"] = asm["_emscripten_bind_btGhostObject__getRootCollisionShape_p0"];
var _emscripten_bind_btSerializer__finishSerialization_p0 = Module["_emscripten_bind_btSerializer__finishSerialization_p0"] = asm["_emscripten_bind_btSerializer__finishSerialization_p0"];
var _emscripten_bind_btConeShapeZ__setUserPointer_p1 = Module["_emscripten_bind_btConeShapeZ__setUserPointer_p1"] = asm["_emscripten_bind_btConeShapeZ__setUserPointer_p1"];
var _emscripten_bind_btRaycastVehicle__updateWheelTransform_p1 = Module["_emscripten_bind_btRaycastVehicle__updateWheelTransform_p1"] = asm["_emscripten_bind_btRaycastVehicle__updateWheelTransform_p1"];
var _emscripten_bind_btDbvtBroadphase__get_m_gid_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_gid_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_gid_p0"];
var _emscripten_bind_btHeightfieldTerrainShape__isConcave_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__isConcave_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__isConcave_p0"];
var _emscripten_bind_btWheelInfo__set_m_bIsFrontWheel_p1 = Module["_emscripten_bind_btWheelInfo__set_m_bIsFrontWheel_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_bIsFrontWheel_p1"];
var _emscripten_bind_btTriangleInfoMap__serialize_p2 = Module["_emscripten_bind_btTriangleInfoMap__serialize_p2"] = asm["_emscripten_bind_btTriangleInfoMap__serialize_p2"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setBreakingImpulseThreshold_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setBreakingImpulseThreshold_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setBreakingImpulseThreshold_p1"];
var _emscripten_bind_btCapsuleShapeX__getLocalScaling_p0 = Module["_emscripten_bind_btCapsuleShapeX__getLocalScaling_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getLocalScaling_p0"];
var _emscripten_bind_btStridingMeshInterface__getPremadeAabb_p2 = Module["_emscripten_bind_btStridingMeshInterface__getPremadeAabb_p2"] = asm["_emscripten_bind_btStridingMeshInterface__getPremadeAabb_p2"];
var _emscripten_bind_btVector4__distance2_p1 = Module["_emscripten_bind_btVector4__distance2_p1"] = asm["_emscripten_bind_btVector4__distance2_p1"];
var _emscripten_bind_btSliderConstraint__setParam_p2 = Module["_emscripten_bind_btSliderConstraint__setParam_p2"] = asm["_emscripten_bind_btSliderConstraint__setParam_p2"];
var _emscripten_bind_btSliderConstraint__setParam_p3 = Module["_emscripten_bind_btSliderConstraint__setParam_p3"] = asm["_emscripten_bind_btSliderConstraint__setParam_p3"];
var _emscripten_bind_btConeShapeX__getMarginNV_p0 = Module["_emscripten_bind_btConeShapeX__getMarginNV_p0"] = asm["_emscripten_bind_btConeShapeX__getMarginNV_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintId_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintId_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintId_p1"];
var _emscripten_bind_btBU_Simplex1to4__getAngularMotionDisc_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getAngularMotionDisc_p0"];
var _emscripten_bind_btConvexShape__isNonMoving_p0 = Module["_emscripten_bind_btConvexShape__isNonMoving_p0"] = asm["_emscripten_bind_btConvexShape__isNonMoving_p0"];
var _emscripten_bind_btPairCachingGhostObject__getOverlappingPairCache_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getOverlappingPairCache_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getOverlappingPairCache_p0"];
var _emscripten_bind_btConvexHullShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btConvexHullShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btConvexHullShape__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btQuaternion__setValue_p3 = Module["_emscripten_bind_btQuaternion__setValue_p3"] = asm["_emscripten_bind_btQuaternion__setValue_p3"];
var _emscripten_bind_btPairCachingGhostObject__setWorldTransform_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setWorldTransform_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setWorldTransform_p1"];
var _emscripten_bind_btConeShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btConeShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btConeShape__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btHinge2Constraint__getInfo1_p1 = Module["_emscripten_bind_btHinge2Constraint__getInfo1_p1"] = asm["_emscripten_bind_btHinge2Constraint__getInfo1_p1"];
var _emscripten_bind_btConeShape__serialize_p2 = Module["_emscripten_bind_btConeShape__serialize_p2"] = asm["_emscripten_bind_btConeShape__serialize_p2"];
var _emscripten_bind_btSimpleDynamicsWorld__removeCharacter_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__removeCharacter_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__removeCharacter_p1"];
var _emscripten_bind_btDefaultCollisionConfiguration__getSimplexSolver_p0 = Module["_emscripten_bind_btDefaultCollisionConfiguration__getSimplexSolver_p0"] = asm["_emscripten_bind_btDefaultCollisionConfiguration__getSimplexSolver_p0"];
var _emscripten_bind_btCapsuleShape__getAabb_p3 = Module["_emscripten_bind_btCapsuleShape__getAabb_p3"] = asm["_emscripten_bind_btCapsuleShape__getAabb_p3"];
var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_closestHitFraction_p1 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_closestHitFraction_p1"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_closestHitFraction_p1"];
var _emscripten_bind_btTransform__op_mul_p1 = Module["_emscripten_bind_btTransform__op_mul_p1"] = asm["_emscripten_bind_btTransform__op_mul_p1"];
var _emscripten_bind_btConvexTriangleMeshShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__localGetSupportingVertex_p1"];
var _emscripten_bind_btRigidBody__removeConstraintRef_p1 = Module["_emscripten_bind_btRigidBody__removeConstraintRef_p1"] = asm["_emscripten_bind_btRigidBody__removeConstraintRef_p1"];
var _emscripten_bind_btRigidBody__predictIntegratedTransform_p2 = Module["_emscripten_bind_btRigidBody__predictIntegratedTransform_p2"] = asm["_emscripten_bind_btRigidBody__predictIntegratedTransform_p2"];
var _emscripten_bind_btSliderConstraint__getPoweredAngMotor_p0 = Module["_emscripten_bind_btSliderConstraint__getPoweredAngMotor_p0"] = asm["_emscripten_bind_btSliderConstraint__getPoweredAngMotor_p0"];
var _emscripten_bind_btConeShape__setConeUpIndex_p1 = Module["_emscripten_bind_btConeShape__setConeUpIndex_p1"] = asm["_emscripten_bind_btConeShape__setConeUpIndex_p1"];
var _emscripten_bind_btUniversalConstraint__get_limit_motor_info2_p11 = Module["_emscripten_bind_btUniversalConstraint__get_limit_motor_info2_p11"] = asm["_emscripten_bind_btUniversalConstraint__get_limit_motor_info2_p11"];
var _emscripten_bind_btUniversalConstraint__get_limit_motor_info2_p12 = Module["_emscripten_bind_btUniversalConstraint__get_limit_motor_info2_p12"] = asm["_emscripten_bind_btUniversalConstraint__get_limit_motor_info2_p12"];
var _emscripten_bind_btTranslationalLimitMotor__set_m_stopCFM_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_stopCFM_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_stopCFM_p1"];
var _emscripten_bind_btCollisionObject__getCompanionId_p0 = Module["_emscripten_bind_btCollisionObject__getCompanionId_p0"] = asm["_emscripten_bind_btCollisionObject__getCompanionId_p0"];
var _emscripten_bind_btSliderConstraint__setSoftnessOrthoAng_p1 = Module["_emscripten_bind_btSliderConstraint__setSoftnessOrthoAng_p1"] = asm["_emscripten_bind_btSliderConstraint__setSoftnessOrthoAng_p1"];
var _emscripten_bind_btConeShapeZ__isConvex2d_p0 = Module["_emscripten_bind_btConeShapeZ__isConvex2d_p0"] = asm["_emscripten_bind_btConeShapeZ__isConvex2d_p0"];
var _emscripten_bind_btCollisionAlgorithm__calculateTimeOfImpact_p4 = Module["_emscripten_bind_btCollisionAlgorithm__calculateTimeOfImpact_p4"] = asm["_emscripten_bind_btCollisionAlgorithm__calculateTimeOfImpact_p4"];
var _emscripten_bind_btJacobianEntry__set_m_0MinvJt_p1 = Module["_emscripten_bind_btJacobianEntry__set_m_0MinvJt_p1"] = asm["_emscripten_bind_btJacobianEntry__set_m_0MinvJt_p1"];
var _emscripten_bind_btCollisionObject__getCollisionFlags_p0 = Module["_emscripten_bind_btCollisionObject__getCollisionFlags_p0"] = asm["_emscripten_bind_btCollisionObject__getCollisionFlags_p0"];
var _emscripten_bind_btHinge2Constraint__getUid_p0 = Module["_emscripten_bind_btHinge2Constraint__getUid_p0"] = asm["_emscripten_bind_btHinge2Constraint__getUid_p0"];
var _emscripten_bind_btRigidBody__internalWritebackVelocity_p0 = Module["_emscripten_bind_btRigidBody__internalWritebackVelocity_p0"] = asm["_emscripten_bind_btRigidBody__internalWritebackVelocity_p0"];
var _emscripten_bind_btRigidBody__internalWritebackVelocity_p1 = Module["_emscripten_bind_btRigidBody__internalWritebackVelocity_p1"] = asm["_emscripten_bind_btRigidBody__internalWritebackVelocity_p1"];
var _emscripten_bind_btConvexHullShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btConvexHullShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btConvexHullShape__getAabbNonVirtual_p3"];
var _emscripten_bind_btOverlappingPairCache__getOverlappingPairArrayPtr_p0 = Module["_emscripten_bind_btOverlappingPairCache__getOverlappingPairArrayPtr_p0"] = asm["_emscripten_bind_btOverlappingPairCache__getOverlappingPairArrayPtr_p0"];
var _emscripten_bind_btAxisSweep3__updateHandle_p4 = Module["_emscripten_bind_btAxisSweep3__updateHandle_p4"] = asm["_emscripten_bind_btAxisSweep3__updateHandle_p4"];
var _emscripten_bind_btDiscreteDynamicsWorld__convexSweepTest_p5 = Module["_emscripten_bind_btDiscreteDynamicsWorld__convexSweepTest_p5"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__convexSweepTest_p5"];
var _emscripten_bind_btDiscreteDynamicsWorld__convexSweepTest_p4 = Module["_emscripten_bind_btDiscreteDynamicsWorld__convexSweepTest_p4"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__convexSweepTest_p4"];
var _emscripten_bind_btHeightfieldTerrainShape__isInfinite_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__isInfinite_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__isInfinite_p0"];
var _emscripten_bind_btTypedConstraint__setupSolverConstraint_p4 = Module["_emscripten_bind_btTypedConstraint__setupSolverConstraint_p4"] = asm["_emscripten_bind_btTypedConstraint__setupSolverConstraint_p4"];
var _emscripten_bind_btStaticPlaneShape__isPolyhedral_p0 = Module["_emscripten_bind_btStaticPlaneShape__isPolyhedral_p0"] = asm["_emscripten_bind_btStaticPlaneShape__isPolyhedral_p0"];
var _emscripten_bind_btGhostObject__internalSetExtensionPointer_p1 = Module["_emscripten_bind_btGhostObject__internalSetExtensionPointer_p1"] = asm["_emscripten_bind_btGhostObject__internalSetExtensionPointer_p1"];
var _emscripten_bind_btDbvtBroadphase__get_m_fixedleft_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_fixedleft_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_fixedleft_p0"];
var _emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionFilterGroup_p0 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionFilterGroup_p0"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionFilterGroup_p0"];
var _emscripten_bind_btConvexShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btConvexShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btConvexShape__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btGeneric6DofConstraint__buildJacobian_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__buildJacobian_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__buildJacobian_p0"];
var _emscripten_bind_bt32BitAxisSweep3__getOverlappingPairCache_p0 = Module["_emscripten_bind_bt32BitAxisSweep3__getOverlappingPairCache_p0"] = asm["_emscripten_bind_bt32BitAxisSweep3__getOverlappingPairCache_p0"];
var _emscripten_bind_btBU_Simplex1to4__initializePolyhedralFeatures_p0 = Module["_emscripten_bind_btBU_Simplex1to4__initializePolyhedralFeatures_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__initializePolyhedralFeatures_p0"];
var _emscripten_bind_btOptimizedBvh__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btOptimizedBvh__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btOptimizedBvh__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitCollisionObject_p1 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitCollisionObject_p1"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitCollisionObject_p1"];
var _emscripten_bind_btCapsuleShapeZ__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btCollisionWorld__convexSweepTest_p5 = Module["_emscripten_bind_btCollisionWorld__convexSweepTest_p5"] = asm["_emscripten_bind_btCollisionWorld__convexSweepTest_p5"];
var _emscripten_bind_btCollisionWorld__convexSweepTest_p4 = Module["_emscripten_bind_btCollisionWorld__convexSweepTest_p4"] = asm["_emscripten_bind_btCollisionWorld__convexSweepTest_p4"];
var _emscripten_bind_btRigidBody__getInterpolationWorldTransform_p0 = Module["_emscripten_bind_btRigidBody__getInterpolationWorldTransform_p0"] = asm["_emscripten_bind_btRigidBody__getInterpolationWorldTransform_p0"];
var _emscripten_bind_btContactConstraint__getParam_p2 = Module["_emscripten_bind_btContactConstraint__getParam_p2"] = asm["_emscripten_bind_btContactConstraint__getParam_p2"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_closestHitFraction_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_closestHitFraction_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_closestHitFraction_p0"];
var _emscripten_bind_btDefaultVehicleRaycaster____destroy___p0 = Module["_emscripten_bind_btDefaultVehicleRaycaster____destroy___p0"] = asm["_emscripten_bind_btDefaultVehicleRaycaster____destroy___p0"];
var _emscripten_bind_btSimpleDynamicsWorld__contactPairTest_p3 = Module["_emscripten_bind_btSimpleDynamicsWorld__contactPairTest_p3"] = asm["_emscripten_bind_btSimpleDynamicsWorld__contactPairTest_p3"];
var _emscripten_bind_btPairCachingGhostObject__setContactProcessingThreshold_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setContactProcessingThreshold_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setContactProcessingThreshold_p1"];
var _emscripten_bind_btHingeConstraint__getInfo2InternalUsingFrameOffset_p5 = Module["_emscripten_bind_btHingeConstraint__getInfo2InternalUsingFrameOffset_p5"] = asm["_emscripten_bind_btHingeConstraint__getInfo2InternalUsingFrameOffset_p5"];
var _emscripten_bind_btCapsuleShapeX__serialize_p2 = Module["_emscripten_bind_btCapsuleShapeX__serialize_p2"] = asm["_emscripten_bind_btCapsuleShapeX__serialize_p2"];
var _emscripten_bind_btSliderConstraint__getSolveAngLimit_p0 = Module["_emscripten_bind_btSliderConstraint__getSolveAngLimit_p0"] = asm["_emscripten_bind_btSliderConstraint__getSolveAngLimit_p0"];
var _emscripten_bind_btUniversalConstraint__setUserConstraintId_p1 = Module["_emscripten_bind_btUniversalConstraint__setUserConstraintId_p1"] = asm["_emscripten_bind_btUniversalConstraint__setUserConstraintId_p1"];
var _emscripten_bind_btConeShapeX__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btConeShapeX__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btConeShapeX__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btCompoundShape__getShapeType_p0 = Module["_emscripten_bind_btCompoundShape__getShapeType_p0"] = asm["_emscripten_bind_btCompoundShape__getShapeType_p0"];
var _emscripten_bind_btBoxShape__isInside_p2 = Module["_emscripten_bind_btBoxShape__isInside_p2"] = asm["_emscripten_bind_btBoxShape__isInside_p2"];
var _emscripten_bind_btConeTwistConstraint__getInfo2NonVirtual_p5 = Module["_emscripten_bind_btConeTwistConstraint__getInfo2NonVirtual_p5"] = asm["_emscripten_bind_btConeTwistConstraint__getInfo2NonVirtual_p5"];
var _emscripten_bind_btConeShapeX__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btConeShapeX__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btConeShapeX__calculateSerializeBufferSize_p0"];
var _emscripten_bind_bt32BitAxisSweep3__removeHandle_p2 = Module["_emscripten_bind_bt32BitAxisSweep3__removeHandle_p2"] = asm["_emscripten_bind_bt32BitAxisSweep3__removeHandle_p2"];
var _emscripten_bind_btBoxShape__getName_p0 = Module["_emscripten_bind_btBoxShape__getName_p0"] = asm["_emscripten_bind_btBoxShape__getName_p0"];
var _emscripten_bind_btDynamicsWorld__performDiscreteCollisionDetection_p0 = Module["_emscripten_bind_btDynamicsWorld__performDiscreteCollisionDetection_p0"] = asm["_emscripten_bind_btDynamicsWorld__performDiscreteCollisionDetection_p0"];
var _emscripten_bind_btCollisionWorld__LocalRayResult__get_m_hitNormalLocal_p0 = Module["_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_hitNormalLocal_p0"] = asm["_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_hitNormalLocal_p0"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_convexFromWorld_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_convexFromWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_convexFromWorld_p0"];
var _emscripten_bind_btCompoundShape__isCompound_p0 = Module["_emscripten_bind_btCompoundShape__isCompound_p0"] = asm["_emscripten_bind_btCompoundShape__isCompound_p0"];
var _emscripten_bind_btConeShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btConeShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btConeShape__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btConvexHullShape__getUnscaledPoints_p0 = Module["_emscripten_bind_btConvexHullShape__getUnscaledPoints_p0"] = asm["_emscripten_bind_btConvexHullShape__getUnscaledPoints_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__isPolyhedral_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__isPolyhedral_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__isPolyhedral_p0"];
var _emscripten_bind_btRotationalLimitMotor__get_m_targetVelocity_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_targetVelocity_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_targetVelocity_p0"];
var _emscripten_bind_btDispatcherInfo__set_m_timeOfImpact_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_timeOfImpact_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_timeOfImpact_p1"];
var _emscripten_bind_btUniversalConstraint__getUseFrameOffset_p0 = Module["_emscripten_bind_btUniversalConstraint__getUseFrameOffset_p0"] = asm["_emscripten_bind_btUniversalConstraint__getUseFrameOffset_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__rayTest_p3 = Module["_emscripten_bind_btSimpleDynamicsWorld__rayTest_p3"] = asm["_emscripten_bind_btSimpleDynamicsWorld__rayTest_p3"];
var _emscripten_bind_btVector4__furthestAxis_p0 = Module["_emscripten_bind_btVector4__furthestAxis_p0"] = asm["_emscripten_bind_btVector4__furthestAxis_p0"];
var _emscripten_bind_btEmptyShape__processAllTriangles_p3 = Module["_emscripten_bind_btEmptyShape__processAllTriangles_p3"] = asm["_emscripten_bind_btEmptyShape__processAllTriangles_p3"];
var _emscripten_bind_btConeTwistConstraint__setMotorTargetInConstraintSpace_p1 = Module["_emscripten_bind_btConeTwistConstraint__setMotorTargetInConstraintSpace_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setMotorTargetInConstraintSpace_p1"];
var _emscripten_bind_btCollisionObject__isActive_p0 = Module["_emscripten_bind_btCollisionObject__isActive_p0"] = asm["_emscripten_bind_btCollisionObject__isActive_p0"];
var _emscripten_bind_btAxisSweep3__processAllOverlappingPairs_p1 = Module["_emscripten_bind_btAxisSweep3__processAllOverlappingPairs_p1"] = asm["_emscripten_bind_btAxisSweep3__processAllOverlappingPairs_p1"];
var _emscripten_bind_btTranslationalLimitMotor__get_m_targetVelocity_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_targetVelocity_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_targetVelocity_p0"];
var _emscripten_bind_btTriangleMesh__getLockedVertexIndexBase_p9 = Module["_emscripten_bind_btTriangleMesh__getLockedVertexIndexBase_p9"] = asm["_emscripten_bind_btTriangleMesh__getLockedVertexIndexBase_p9"];
var _emscripten_bind_btTriangleMesh__getLockedVertexIndexBase_p8 = Module["_emscripten_bind_btTriangleMesh__getLockedVertexIndexBase_p8"] = asm["_emscripten_bind_btTriangleMesh__getLockedVertexIndexBase_p8"];
var _emscripten_bind_btConeTwistConstraint____destroy___p0 = Module["_emscripten_bind_btConeTwistConstraint____destroy___p0"] = asm["_emscripten_bind_btConeTwistConstraint____destroy___p0"];
var _emscripten_bind_btContinuousDynamicsWorld__getConstraintSolver_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getConstraintSolver_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getConstraintSolver_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__initializePolyhedralFeatures_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__initializePolyhedralFeatures_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__initializePolyhedralFeatures_p0"];
var _emscripten_bind_btConeShapeZ__setConeUpIndex_p1 = Module["_emscripten_bind_btConeShapeZ__setConeUpIndex_p1"] = asm["_emscripten_bind_btConeShapeZ__setConeUpIndex_p1"];
var _emscripten_bind_btPoint2PointConstraint__setupSolverConstraint_p4 = Module["_emscripten_bind_btPoint2PointConstraint__setupSolverConstraint_p4"] = asm["_emscripten_bind_btPoint2PointConstraint__setupSolverConstraint_p4"];
var _emscripten_bind_btConeTwistConstraint__updateRHS_p1 = Module["_emscripten_bind_btConeTwistConstraint__updateRHS_p1"] = asm["_emscripten_bind_btConeTwistConstraint__updateRHS_p1"];
var _emscripten_bind_btCollisionDispatcher____destroy___p0 = Module["_emscripten_bind_btCollisionDispatcher____destroy___p0"] = asm["_emscripten_bind_btCollisionDispatcher____destroy___p0"];
var _emscripten_bind_btTransform__setOrigin_p1 = Module["_emscripten_bind_btTransform__setOrigin_p1"] = asm["_emscripten_bind_btTransform__setOrigin_p1"];
var _emscripten_bind_btCollisionWorld__getNumCollisionObjects_p0 = Module["_emscripten_bind_btCollisionWorld__getNumCollisionObjects_p0"] = asm["_emscripten_bind_btCollisionWorld__getNumCollisionObjects_p0"];
var _emscripten_bind_btPolyhedralConvexShape__getConvexPolyhedron_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getConvexPolyhedron_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getConvexPolyhedron_p0"];
var _emscripten_bind_btCapsuleShapeZ__setLocalScaling_p1 = Module["_emscripten_bind_btCapsuleShapeZ__setLocalScaling_p1"] = asm["_emscripten_bind_btCapsuleShapeZ__setLocalScaling_p1"];
var _emscripten_bind_btRaycastVehicle____destroy___p0 = Module["_emscripten_bind_btRaycastVehicle____destroy___p0"] = asm["_emscripten_bind_btRaycastVehicle____destroy___p0"];
var _emscripten_bind_btWheelInfo__set_m_engineForce_p1 = Module["_emscripten_bind_btWheelInfo__set_m_engineForce_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_engineForce_p1"];
var _emscripten_bind_btManifoldPoint__get_m_contactMotion1_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_contactMotion1_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_contactMotion1_p0"];
var _emscripten_bind_btVector3__setMax_p1 = Module["_emscripten_bind_btVector3__setMax_p1"] = asm["_emscripten_bind_btVector3__setMax_p1"];
var _emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_collisionFilterMask_p0 = Module["_emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_collisionFilterMask_p0"] = asm["_emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_collisionFilterMask_p0"];
var _emscripten_bind_btConeTwistConstraint__enableFeedback_p1 = Module["_emscripten_bind_btConeTwistConstraint__enableFeedback_p1"] = asm["_emscripten_bind_btConeTwistConstraint__enableFeedback_p1"];
var _emscripten_bind_btJacobianEntry__getDiagonal_p0 = Module["_emscripten_bind_btJacobianEntry__getDiagonal_p0"] = asm["_emscripten_bind_btJacobianEntry__getDiagonal_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__serializeSingleShape_p1 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__serializeSingleShape_p1"];
var _emscripten_bind_btEmptyShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btEmptyShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btEmptyShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btAxisSweep3__btAxisSweep3_p5 = Module["_emscripten_bind_btAxisSweep3__btAxisSweep3_p5"] = asm["_emscripten_bind_btAxisSweep3__btAxisSweep3_p5"];
var _emscripten_bind_btAxisSweep3__btAxisSweep3_p4 = Module["_emscripten_bind_btAxisSweep3__btAxisSweep3_p4"] = asm["_emscripten_bind_btAxisSweep3__btAxisSweep3_p4"];
var _emscripten_bind_btAxisSweep3__btAxisSweep3_p3 = Module["_emscripten_bind_btAxisSweep3__btAxisSweep3_p3"] = asm["_emscripten_bind_btAxisSweep3__btAxisSweep3_p3"];
var _emscripten_bind_btAxisSweep3__btAxisSweep3_p2 = Module["_emscripten_bind_btAxisSweep3__btAxisSweep3_p2"] = asm["_emscripten_bind_btAxisSweep3__btAxisSweep3_p2"];
var _emscripten_bind_btRigidBody__internalGetAngularVelocity_p1 = Module["_emscripten_bind_btRigidBody__internalGetAngularVelocity_p1"] = asm["_emscripten_bind_btRigidBody__internalGetAngularVelocity_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__debugDrawObject_p3 = Module["_emscripten_bind_btDiscreteDynamicsWorld__debugDrawObject_p3"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__debugDrawObject_p3"];
var _emscripten_bind_btPersistentManifold__set_m_companionIdB_p1 = Module["_emscripten_bind_btPersistentManifold__set_m_companionIdB_p1"] = asm["_emscripten_bind_btPersistentManifold__set_m_companionIdB_p1"];
var _emscripten_bind_btConeTwistConstraint__setAngularOnly_p1 = Module["_emscripten_bind_btConeTwistConstraint__setAngularOnly_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setAngularOnly_p1"];
var _emscripten_bind_btVector4__length2_p0 = Module["_emscripten_bind_btVector4__length2_p0"] = asm["_emscripten_bind_btVector4__length2_p0"];
var _emscripten_bind_btStorageResult__set_m_closestPointInB_p1 = Module["_emscripten_bind_btStorageResult__set_m_closestPointInB_p1"] = asm["_emscripten_bind_btStorageResult__set_m_closestPointInB_p1"];
var _emscripten_bind_btIDebugDraw__reportErrorWarning_p1 = Module["_emscripten_bind_btIDebugDraw__reportErrorWarning_p1"] = asm["_emscripten_bind_btIDebugDraw__reportErrorWarning_p1"];
var _emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p1 = Module["_emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p1"] = asm["_emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p1"];
var _emscripten_bind_btTriangleInfoMap__set_m_equalVertexThreshold_p1 = Module["_emscripten_bind_btTriangleInfoMap__set_m_equalVertexThreshold_p1"] = asm["_emscripten_bind_btTriangleInfoMap__set_m_equalVertexThreshold_p1"];
var _emscripten_bind_btGeneric6DofConstraint__getUserConstraintType_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getUserConstraintType_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getUserConstraintType_p0"];
var _emscripten_bind_btCollisionWorld__LocalRayResult__set_m_collisionObject_p1 = Module["_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_collisionObject_p1"] = asm["_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_collisionObject_p1"];
var _emscripten_bind_btMultiSphereShape__isCompound_p0 = Module["_emscripten_bind_btMultiSphereShape__isCompound_p0"] = asm["_emscripten_bind_btMultiSphereShape__isCompound_p0"];
var _emscripten_bind_btRigidBody__setCenterOfMassTransform_p1 = Module["_emscripten_bind_btRigidBody__setCenterOfMassTransform_p1"] = asm["_emscripten_bind_btRigidBody__setCenterOfMassTransform_p1"];
var _emscripten_bind_btDbvtBroadphase__set_m_releasepaircache_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_releasepaircache_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_releasepaircache_p1"];
var _emscripten_bind_btConvexInternalAabbCachingShape__setUserPointer_p1 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__setUserPointer_p1"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__setUserPointer_p1"];
var _emscripten_bind_btUniversalConstraint__setFrames_p2 = Module["_emscripten_bind_btUniversalConstraint__setFrames_p2"] = asm["_emscripten_bind_btUniversalConstraint__setFrames_p2"];
var _emscripten_bind_btBroadphaseRayCallback__set_m_lambda_max_p1 = Module["_emscripten_bind_btBroadphaseRayCallback__set_m_lambda_max_p1"] = asm["_emscripten_bind_btBroadphaseRayCallback__set_m_lambda_max_p1"];
var _emscripten_bind_btGhostPairCallback__addOverlappingPair_p2 = Module["_emscripten_bind_btGhostPairCallback__addOverlappingPair_p2"] = asm["_emscripten_bind_btGhostPairCallback__addOverlappingPair_p2"];
var _emscripten_bind_btUniversalConstraint__getInfo1_p1 = Module["_emscripten_bind_btUniversalConstraint__getInfo1_p1"] = asm["_emscripten_bind_btUniversalConstraint__getInfo1_p1"];
var _emscripten_bind_btEmptyShape__isSoftBody_p0 = Module["_emscripten_bind_btEmptyShape__isSoftBody_p0"] = asm["_emscripten_bind_btEmptyShape__isSoftBody_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__isNonMoving_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__isNonMoving_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__isNonMoving_p0"];
var _emscripten_bind_btOptimizedBvh__calculateSerializeBufferSizeNew_p0 = Module["_emscripten_bind_btOptimizedBvh__calculateSerializeBufferSizeNew_p0"] = asm["_emscripten_bind_btOptimizedBvh__calculateSerializeBufferSizeNew_p0"];
var _emscripten_bind_btConvexShape__getShapeType_p0 = Module["_emscripten_bind_btConvexShape__getShapeType_p0"] = asm["_emscripten_bind_btConvexShape__getShapeType_p0"];
var _emscripten_bind_btCapsuleShapeZ__getHalfHeight_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getHalfHeight_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getHalfHeight_p0"];
var _emscripten_bind_btHinge2Constraint__getAxis2_p0 = Module["_emscripten_bind_btHinge2Constraint__getAxis2_p0"] = asm["_emscripten_bind_btHinge2Constraint__getAxis2_p0"];
var _emscripten_bind_btTypedConstraint__setDbgDrawSize_p1 = Module["_emscripten_bind_btTypedConstraint__setDbgDrawSize_p1"] = asm["_emscripten_bind_btTypedConstraint__setDbgDrawSize_p1"];
var _emscripten_bind_btIndexedMesh____destroy___p0 = Module["_emscripten_bind_btIndexedMesh____destroy___p0"] = asm["_emscripten_bind_btIndexedMesh____destroy___p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__serialize_p2 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__serialize_p2"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__serialize_p2"];
var _emscripten_bind_btAngularLimit__getBiasFactor_p0 = Module["_emscripten_bind_btAngularLimit__getBiasFactor_p0"] = asm["_emscripten_bind_btAngularLimit__getBiasFactor_p0"];
var _emscripten_bind_btConvexHullShape__setUserPointer_p1 = Module["_emscripten_bind_btConvexHullShape__setUserPointer_p1"] = asm["_emscripten_bind_btConvexHullShape__setUserPointer_p1"];
var _emscripten_bind_btDefaultMotionState____destroy___p0 = Module["_emscripten_bind_btDefaultMotionState____destroy___p0"] = asm["_emscripten_bind_btDefaultMotionState____destroy___p0"];
var _emscripten_bind_btConvexTriangleMeshShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btConvexTriangleMeshShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btConvexTriangleMeshShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _emscripten_bind_btCollisionDispatcher__dispatchAllCollisionPairs_p3 = Module["_emscripten_bind_btCollisionDispatcher__dispatchAllCollisionPairs_p3"] = asm["_emscripten_bind_btCollisionDispatcher__dispatchAllCollisionPairs_p3"];
var _emscripten_bind_btSliderConstraint__getSoftnessDirLin_p0 = Module["_emscripten_bind_btSliderConstraint__getSoftnessDirLin_p0"] = asm["_emscripten_bind_btSliderConstraint__getSoftnessDirLin_p0"];
var _emscripten_bind_btQuantizedBvh__calculateSerializeBufferSizeNew_p0 = Module["_emscripten_bind_btQuantizedBvh__calculateSerializeBufferSizeNew_p0"] = asm["_emscripten_bind_btQuantizedBvh__calculateSerializeBufferSizeNew_p0"];
var _emscripten_bind_btCylinderShapeX__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btCylinderShapeX__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btCylinderShapeX__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btDbvtBroadphase__performDeferredRemoval_p1 = Module["_emscripten_bind_btDbvtBroadphase__performDeferredRemoval_p1"] = asm["_emscripten_bind_btDbvtBroadphase__performDeferredRemoval_p1"];
var _emscripten_bind_CProfileNode__Get_Total_Time_p0 = Module["_emscripten_bind_CProfileNode__Get_Total_Time_p0"] = asm["_emscripten_bind_CProfileNode__Get_Total_Time_p0"];
var _emscripten_bind_btRigidBody__proceedToTransform_p1 = Module["_emscripten_bind_btRigidBody__proceedToTransform_p1"] = asm["_emscripten_bind_btRigidBody__proceedToTransform_p1"];
var _emscripten_bind_btHinge2Constraint__getParam_p2 = Module["_emscripten_bind_btHinge2Constraint__getParam_p2"] = asm["_emscripten_bind_btHinge2Constraint__getParam_p2"];
var _emscripten_bind_btEmptyShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btEmptyShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btEmptyShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btCompoundShape__isConcave_p0 = Module["_emscripten_bind_btCompoundShape__isConcave_p0"] = asm["_emscripten_bind_btCompoundShape__isConcave_p0"];
var _emscripten_bind_btHinge2Constraint__getParam_p1 = Module["_emscripten_bind_btHinge2Constraint__getParam_p1"] = asm["_emscripten_bind_btHinge2Constraint__getParam_p1"];
var _emscripten_bind_btConeShape__isPolyhedral_p0 = Module["_emscripten_bind_btConeShape__isPolyhedral_p0"] = asm["_emscripten_bind_btConeShape__isPolyhedral_p0"];
var _emscripten_bind_btGhostObject__setCollisionFlags_p1 = Module["_emscripten_bind_btGhostObject__setCollisionFlags_p1"] = asm["_emscripten_bind_btGhostObject__setCollisionFlags_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__removeCollisionObject_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__removeCollisionObject_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__removeCollisionObject_p1"];
var _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_hitNormalInWorld_p1 = Module["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_hitNormalInWorld_p1"] = asm["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_hitNormalInWorld_p1"];
var _emscripten_bind_btConeShapeZ__getRadius_p0 = Module["_emscripten_bind_btConeShapeZ__getRadius_p0"] = asm["_emscripten_bind_btConeShapeZ__getRadius_p0"];
var _emscripten_bind_btConvexInternalShape__getAabb_p3 = Module["_emscripten_bind_btConvexInternalShape__getAabb_p3"] = asm["_emscripten_bind_btConvexInternalShape__getAabb_p3"];
var _emscripten_bind_btRigidBody__getIslandTag_p0 = Module["_emscripten_bind_btRigidBody__getIslandTag_p0"] = asm["_emscripten_bind_btRigidBody__getIslandTag_p0"];
var _emscripten_bind_btPairCachingGhostObject__mergesSimulationIslands_p0 = Module["_emscripten_bind_btPairCachingGhostObject__mergesSimulationIslands_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__mergesSimulationIslands_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getParam_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getParam_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getParam_p1"];
var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_rayFromWorld_p1 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_rayFromWorld_p1"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_rayFromWorld_p1"];
var _emscripten_bind_btDbvtBroadphase__set_m_updates_ratio_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_updates_ratio_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_updates_ratio_p1"];
var _emscripten_bind_btCompoundShape__setMargin_p1 = Module["_emscripten_bind_btCompoundShape__setMargin_p1"] = asm["_emscripten_bind_btCompoundShape__setMargin_p1"];
var _emscripten_bind_btRotationalLimitMotor__set_m_loLimit_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_loLimit_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_loLimit_p1"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_angularDamping_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_angularDamping_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_angularDamping_p1"];
var _emscripten_bind_btConvexHullShape__getUserPointer_p0 = Module["_emscripten_bind_btConvexHullShape__getUserPointer_p0"] = asm["_emscripten_bind_btConvexHullShape__getUserPointer_p0"];
var _emscripten_bind_btManifoldPoint__get_m_contactMotion2_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_contactMotion2_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_contactMotion2_p0"];
var _emscripten_bind_btRigidBody__getCcdSweptSphereRadius_p0 = Module["_emscripten_bind_btRigidBody__getCcdSweptSphereRadius_p0"] = asm["_emscripten_bind_btRigidBody__getCcdSweptSphereRadius_p0"];
var _emscripten_bind_btDynamicsWorld__removeCharacter_p1 = Module["_emscripten_bind_btDynamicsWorld__removeCharacter_p1"] = asm["_emscripten_bind_btDynamicsWorld__removeCharacter_p1"];
var _emscripten_bind_btBroadphaseProxy__get_m_uniqueId_p0 = Module["_emscripten_bind_btBroadphaseProxy__get_m_uniqueId_p0"] = asm["_emscripten_bind_btBroadphaseProxy__get_m_uniqueId_p0"];
var _emscripten_bind_btManifoldPoint__get_m_combinedFriction_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_combinedFriction_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_combinedFriction_p0"];
var _emscripten_bind_btHingeConstraint__getEnableAngularMotor_p0 = Module["_emscripten_bind_btHingeConstraint__getEnableAngularMotor_p0"] = asm["_emscripten_bind_btHingeConstraint__getEnableAngularMotor_p0"];
var _emscripten_bind_btVector3__setW_p1 = Module["_emscripten_bind_btVector3__setW_p1"] = asm["_emscripten_bind_btVector3__setW_p1"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getLocalScalingNV_p0"];
var _emscripten_bind_btSimpleBroadphaseProxy__get_m_multiSapParentProxy_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__get_m_multiSapParentProxy_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__get_m_multiSapParentProxy_p0"];
var _emscripten_bind_btDynamicsWorld__getGravity_p0 = Module["_emscripten_bind_btDynamicsWorld__getGravity_p0"] = asm["_emscripten_bind_btDynamicsWorld__getGravity_p0"];
var _emscripten_bind_btBU_Simplex1to4__serializeSingleShape_p1 = Module["_emscripten_bind_btBU_Simplex1to4__serializeSingleShape_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__serializeSingleShape_p1"];
var _emscripten_bind_btBoxShape__getMargin_p0 = Module["_emscripten_bind_btBoxShape__getMargin_p0"] = asm["_emscripten_bind_btBoxShape__getMargin_p0"];
var _emscripten_bind_btCylinderShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btCylinderShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btCylinderShape__setImplicitShapeDimensions_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__addVehicle_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__addVehicle_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__addVehicle_p1"];
var _emscripten_bind_btPoint2PointConstraint__set_m_setting_p1 = Module["_emscripten_bind_btPoint2PointConstraint__set_m_setting_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__set_m_setting_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__debugDrawWorld_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__debugDrawWorld_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__debugDrawWorld_p0"];
var _emscripten_bind_btSphereShape__isConvex_p0 = Module["_emscripten_bind_btSphereShape__isConvex_p0"] = asm["_emscripten_bind_btSphereShape__isConvex_p0"];
var _emscripten_bind_btConeTwistConstraint__needsFeedback_p0 = Module["_emscripten_bind_btConeTwistConstraint__needsFeedback_p0"] = asm["_emscripten_bind_btConeTwistConstraint__needsFeedback_p0"];
var _emscripten_bind_btHinge2Constraint__getFrameOffsetA_p0 = Module["_emscripten_bind_btHinge2Constraint__getFrameOffsetA_p0"] = asm["_emscripten_bind_btHinge2Constraint__getFrameOffsetA_p0"];
var _emscripten_bind_btRigidBody__internalApplyImpulse_p3 = Module["_emscripten_bind_btRigidBody__internalApplyImpulse_p3"] = asm["_emscripten_bind_btRigidBody__internalApplyImpulse_p3"];
var _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultStackAllocatorSize_p1 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultStackAllocatorSize_p1"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultStackAllocatorSize_p1"];
var _emscripten_bind_btContactConstraint__setEnabled_p1 = Module["_emscripten_bind_btContactConstraint__setEnabled_p1"] = asm["_emscripten_bind_btContactConstraint__setEnabled_p1"];
var _emscripten_bind_btConvexInternalShape__getUserPointer_p0 = Module["_emscripten_bind_btConvexInternalShape__getUserPointer_p0"] = asm["_emscripten_bind_btConvexInternalShape__getUserPointer_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getBoundingSphere_p2 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getBoundingSphere_p2"];
var _emscripten_bind_btQuadWord__getZ_p0 = Module["_emscripten_bind_btQuadWord__getZ_p0"] = asm["_emscripten_bind_btQuadWord__getZ_p0"];
var _emscripten_bind_btCollisionWorld__RayResultCallback__get_m_flags_p0 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_flags_p0"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_flags_p0"];
var _emscripten_bind_btRigidBody__isStaticObject_p0 = Module["_emscripten_bind_btRigidBody__isStaticObject_p0"] = asm["_emscripten_bind_btRigidBody__isStaticObject_p0"];
var _emscripten_bind_bt32BitAxisSweep3__setAabb_p4 = Module["_emscripten_bind_bt32BitAxisSweep3__setAabb_p4"] = asm["_emscripten_bind_bt32BitAxisSweep3__setAabb_p4"];
var _emscripten_bind_btOptimizedBvh__refit_p3 = Module["_emscripten_bind_btOptimizedBvh__refit_p3"] = asm["_emscripten_bind_btOptimizedBvh__refit_p3"];
var _emscripten_bind_btGeneric6DofSpringConstraint__set_m_useSolveConstraintObsolete_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__set_m_useSolveConstraintObsolete_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__set_m_useSolveConstraintObsolete_p1"];
var _emscripten_bind_btTypedConstraint__getParam_p2 = Module["_emscripten_bind_btTypedConstraint__getParam_p2"] = asm["_emscripten_bind_btTypedConstraint__getParam_p2"];
var _emscripten_bind_btTypedConstraint__getParam_p1 = Module["_emscripten_bind_btTypedConstraint__getParam_p1"] = asm["_emscripten_bind_btTypedConstraint__getParam_p1"];
var _emscripten_bind_btPolyhedralConvexShape__getAabbSlow_p3 = Module["_emscripten_bind_btPolyhedralConvexShape__getAabbSlow_p3"] = asm["_emscripten_bind_btPolyhedralConvexShape__getAabbSlow_p3"];
var _emscripten_bind_btQuaternion__getAngle_p0 = Module["_emscripten_bind_btQuaternion__getAngle_p0"] = asm["_emscripten_bind_btQuaternion__getAngle_p0"];
var _emscripten_bind_btSphereShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btSphereShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btSphereShape__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btRotationalLimitMotor__set_m_normalCFM_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_normalCFM_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_normalCFM_p1"];
var _emscripten_bind_btBroadphasePair__set_m_internalTmpValue_p1 = Module["_emscripten_bind_btBroadphasePair__set_m_internalTmpValue_p1"] = asm["_emscripten_bind_btBroadphasePair__set_m_internalTmpValue_p1"];
var _emscripten_bind_btEmptyShape__serialize_p2 = Module["_emscripten_bind_btEmptyShape__serialize_p2"] = asm["_emscripten_bind_btEmptyShape__serialize_p2"];
var _emscripten_bind_btMultiSphereShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btMultiSphereShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btMultiSphereShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btBroadphaseInterface__rayTest_p5 = Module["_emscripten_bind_btBroadphaseInterface__rayTest_p5"] = asm["_emscripten_bind_btBroadphaseInterface__rayTest_p5"];
var _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_persistentManifoldPool_p1 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_persistentManifoldPool_p1"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_persistentManifoldPool_p1"];
var _emscripten_bind_btSimpleDynamicsWorld__setForceUpdateAllAabbs_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__setForceUpdateAllAabbs_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__setForceUpdateAllAabbs_p1"];
var _emscripten_bind_btCylinderShapeX__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btCylinderShapeX__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btCylinderShapeX__setImplicitShapeDimensions_p1"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumEdges_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumEdges_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumEdges_p0"];
var _emscripten_bind_btPairCachingGhostObject__convexSweepTest_p5 = Module["_emscripten_bind_btPairCachingGhostObject__convexSweepTest_p5"] = asm["_emscripten_bind_btPairCachingGhostObject__convexSweepTest_p5"];
var _emscripten_bind_btCylinderShapeZ__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btCylinderShapeZ__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btCylinderShapeZ__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btCapsuleShapeZ__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btCapsuleShapeZ__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumPlanes_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumPlanes_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumPlanes_p0"];
var _emscripten_bind_btPairCachingGhostObject__getDeactivationTime_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getDeactivationTime_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getDeactivationTime_p0"];
var _emscripten_bind_btPairCachingGhostObject__getNumOverlappingObjects_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getNumOverlappingObjects_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getNumOverlappingObjects_p0"];
var _emscripten_bind_btCollisionObject__setBroadphaseHandle_p1 = Module["_emscripten_bind_btCollisionObject__setBroadphaseHandle_p1"] = asm["_emscripten_bind_btCollisionObject__setBroadphaseHandle_p1"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__needsCollision_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__needsCollision_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__needsCollision_p1"];
var _emscripten_bind_btConeShape__isSoftBody_p0 = Module["_emscripten_bind_btConeShape__isSoftBody_p0"] = asm["_emscripten_bind_btConeShape__isSoftBody_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__isInside_p2 = Module["_emscripten_bind_btConvexTriangleMeshShape__isInside_p2"] = asm["_emscripten_bind_btConvexTriangleMeshShape__isInside_p2"];
var _emscripten_bind_btVector3__deSerializeFloat_p1 = Module["_emscripten_bind_btVector3__deSerializeFloat_p1"] = asm["_emscripten_bind_btVector3__deSerializeFloat_p1"];
var _emscripten_bind_btConeShapeZ__getAngularMotionDisc_p0 = Module["_emscripten_bind_btConeShapeZ__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btConeShapeZ__getAngularMotionDisc_p0"];
var _emscripten_bind_btPairCachingGhostObject__getUserPointer_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getUserPointer_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getUserPointer_p0"];
var _emscripten_bind_btOptimizedBvh__serialize_p3 = Module["_emscripten_bind_btOptimizedBvh__serialize_p3"] = asm["_emscripten_bind_btOptimizedBvh__serialize_p3"];
var _emscripten_bind_btOptimizedBvh__serialize_p2 = Module["_emscripten_bind_btOptimizedBvh__serialize_p2"] = asm["_emscripten_bind_btOptimizedBvh__serialize_p2"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btUniformScalingShape__getBoundingSphere_p2 = Module["_emscripten_bind_btUniformScalingShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btUniformScalingShape__getBoundingSphere_p2"];
var _emscripten_bind_btQuadWord__getY_p0 = Module["_emscripten_bind_btQuadWord__getY_p0"] = asm["_emscripten_bind_btQuadWord__getY_p0"];
var _emscripten_bind_btCylinderShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btCylinderShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btCylinderShape__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btPolyhedralConvexShape__isSoftBody_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__isSoftBody_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__isSoftBody_p0"];
var _emscripten_bind_btUniversalConstraint__getAngle_p1 = Module["_emscripten_bind_btUniversalConstraint__getAngle_p1"] = asm["_emscripten_bind_btUniversalConstraint__getAngle_p1"];
var _emscripten_bind_btSliderConstraint__buildJacobian_p0 = Module["_emscripten_bind_btSliderConstraint__buildJacobian_p0"] = asm["_emscripten_bind_btSliderConstraint__buildJacobian_p0"];
var _emscripten_bind_btUniversalConstraint__getFrameOffsetA_p0 = Module["_emscripten_bind_btUniversalConstraint__getFrameOffsetA_p0"] = asm["_emscripten_bind_btUniversalConstraint__getFrameOffsetA_p0"];
var _emscripten_bind_btDispatcher__getManifoldByIndexInternal_p1 = Module["_emscripten_bind_btDispatcher__getManifoldByIndexInternal_p1"] = asm["_emscripten_bind_btDispatcher__getManifoldByIndexInternal_p1"];
var _emscripten_bind_btGhostObject__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btGhostObject__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btGhostObject__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btBoxShape__isPolyhedral_p0 = Module["_emscripten_bind_btBoxShape__isPolyhedral_p0"] = asm["_emscripten_bind_btBoxShape__isPolyhedral_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__setImplicitShapeDimensions_p1"];
var _emscripten_bind_btVector4__maxAxis_p0 = Module["_emscripten_bind_btVector4__maxAxis_p0"] = asm["_emscripten_bind_btVector4__maxAxis_p0"];
var _emscripten_bind_btRigidBody__checkCollideWith_p1 = Module["_emscripten_bind_btRigidBody__checkCollideWith_p1"] = asm["_emscripten_bind_btRigidBody__checkCollideWith_p1"];
var _emscripten_bind_btUniversalConstraint__setUserConstraintPtr_p1 = Module["_emscripten_bind_btUniversalConstraint__setUserConstraintPtr_p1"] = asm["_emscripten_bind_btUniversalConstraint__setUserConstraintPtr_p1"];
var _emscripten_bind_btHinge2Constraint__getAxis1_p0 = Module["_emscripten_bind_btHinge2Constraint__getAxis1_p0"] = asm["_emscripten_bind_btHinge2Constraint__getAxis1_p0"];
var _emscripten_bind_btCapsuleShapeX__setUserPointer_p1 = Module["_emscripten_bind_btCapsuleShapeX__setUserPointer_p1"] = asm["_emscripten_bind_btCapsuleShapeX__setUserPointer_p1"];
var _emscripten_bind_btQuadWord__getX_p0 = Module["_emscripten_bind_btQuadWord__getX_p0"] = asm["_emscripten_bind_btQuadWord__getX_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__addConstraint_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__addConstraint_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__addConstraint_p1"];
var _emscripten_bind_btCapsuleShape__isInfinite_p0 = Module["_emscripten_bind_btCapsuleShape__isInfinite_p0"] = asm["_emscripten_bind_btCapsuleShape__isInfinite_p0"];
var _emscripten_bind_btCompoundShape__getNumChildShapes_p0 = Module["_emscripten_bind_btCompoundShape__getNumChildShapes_p0"] = asm["_emscripten_bind_btCompoundShape__getNumChildShapes_p0"];
var _emscripten_bind_btOptimizedBvh__buildInternal_p0 = Module["_emscripten_bind_btOptimizedBvh__buildInternal_p0"] = asm["_emscripten_bind_btOptimizedBvh__buildInternal_p0"];
var _emscripten_bind_btUniversalConstraint__setAxis_p2 = Module["_emscripten_bind_btUniversalConstraint__setAxis_p2"] = asm["_emscripten_bind_btUniversalConstraint__setAxis_p2"];
var _emscripten_bind_btGeneric6DofConstraint__getRelativePivotPosition_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getRelativePivotPosition_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getRelativePivotPosition_p1"];
var _emscripten_bind_btConeShapeZ__localGetSupportingVertex_p1 = Module["_emscripten_bind_btConeShapeZ__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btConeShapeZ__localGetSupportingVertex_p1"];
var _emscripten_bind_btManifoldPoint__btManifoldPoint_p4 = Module["_emscripten_bind_btManifoldPoint__btManifoldPoint_p4"] = asm["_emscripten_bind_btManifoldPoint__btManifoldPoint_p4"];
var _emscripten_bind_btConvexInternalShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btConvexInternalShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btConvexInternalShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btDbvtBroadphase__set_m_cid_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_cid_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_cid_p1"];
var _emscripten_bind_btDbvtProxy__isSoftBody_p1 = Module["_emscripten_bind_btDbvtProxy__isSoftBody_p1"] = asm["_emscripten_bind_btDbvtProxy__isSoftBody_p1"];
var _emscripten_bind_btGeneric6DofConstraint__get_limit_motor_info2_p11 = Module["_emscripten_bind_btGeneric6DofConstraint__get_limit_motor_info2_p11"] = asm["_emscripten_bind_btGeneric6DofConstraint__get_limit_motor_info2_p11"];
var _emscripten_bind_btPersistentManifold__set_m_objectType_p1 = Module["_emscripten_bind_btPersistentManifold__set_m_objectType_p1"] = asm["_emscripten_bind_btPersistentManifold__set_m_objectType_p1"];
var _emscripten_bind_btUniversalConstraint__getFrameOffsetB_p0 = Module["_emscripten_bind_btUniversalConstraint__getFrameOffsetB_p0"] = asm["_emscripten_bind_btUniversalConstraint__getFrameOffsetB_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p1"];
var _emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p2 = Module["_emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p2"] = asm["_emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p2"];
var _emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p3 = Module["_emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p3"] = asm["_emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p3"];
var _emscripten_bind_btHinge2Constraint__enableFeedback_p1 = Module["_emscripten_bind_btHinge2Constraint__enableFeedback_p1"] = asm["_emscripten_bind_btHinge2Constraint__enableFeedback_p1"];
var _emscripten_bind_btIDebugDraw__drawAabb_p3 = Module["_emscripten_bind_btIDebugDraw__drawAabb_p3"] = asm["_emscripten_bind_btIDebugDraw__drawAabb_p3"];
var _emscripten_bind_btGeneric6DofConstraint__isLimited_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__isLimited_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__isLimited_p1"];
var _emscripten_bind_btGeneric6DofConstraint__setLimit_p3 = Module["_emscripten_bind_btGeneric6DofConstraint__setLimit_p3"] = asm["_emscripten_bind_btGeneric6DofConstraint__setLimit_p3"];
var _emscripten_bind_btSimpleDynamicsWorld__getConstraint_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__getConstraint_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getConstraint_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__removeRigidBody_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__removeRigidBody_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__removeRigidBody_p1"];
var _emscripten_bind_btContactConstraint__getDbgDrawSize_p0 = Module["_emscripten_bind_btContactConstraint__getDbgDrawSize_p0"] = asm["_emscripten_bind_btContactConstraint__getDbgDrawSize_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p3 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p3"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p3"];
var _emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p2 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p2"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p2"];
var _emscripten_bind_btSliderConstraint__setUserConstraintId_p1 = Module["_emscripten_bind_btSliderConstraint__setUserConstraintId_p1"] = asm["_emscripten_bind_btSliderConstraint__setUserConstraintId_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld____destroy___p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld____destroy___p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld____destroy___p0"];
var _emscripten_bind_btConvexInternalAabbCachingShape__getShapeType_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getShapeType_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getShapeType_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_btCylinderShape__getName_p0 = Module["_emscripten_bind_btCylinderShape__getName_p0"] = asm["_emscripten_bind_btCylinderShape__getName_p0"];
var _emscripten_bind_btTypedConstraint__setUserConstraintType_p1 = Module["_emscripten_bind_btTypedConstraint__setUserConstraintType_p1"] = asm["_emscripten_bind_btTypedConstraint__setUserConstraintType_p1"];
var _emscripten_bind_btUniformScalingShape__getUniformScalingFactor_p0 = Module["_emscripten_bind_btUniformScalingShape__getUniformScalingFactor_p0"] = asm["_emscripten_bind_btUniformScalingShape__getUniformScalingFactor_p0"];
var _emscripten_bind_btVector3__op_set_p1 = Module["_emscripten_bind_btVector3__op_set_p1"] = asm["_emscripten_bind_btVector3__op_set_p1"];
var _emscripten_bind_btVector3__deSerializeDouble_p1 = Module["_emscripten_bind_btVector3__deSerializeDouble_p1"] = asm["_emscripten_bind_btVector3__deSerializeDouble_p1"];
var _emscripten_bind_btAxisSweep3__getHandle_p1 = Module["_emscripten_bind_btAxisSweep3__getHandle_p1"] = asm["_emscripten_bind_btAxisSweep3__getHandle_p1"];
var _emscripten_bind_btConvexInternalShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btConvexInternalShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btConvexInternalShape__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btCollisionObject__getCcdSquareMotionThreshold_p0 = Module["_emscripten_bind_btCollisionObject__getCcdSquareMotionThreshold_p0"] = asm["_emscripten_bind_btCollisionObject__getCcdSquareMotionThreshold_p0"];
var _emscripten_bind_btRigidBody__checkCollideWithOverride_p1 = Module["_emscripten_bind_btRigidBody__checkCollideWithOverride_p1"] = asm["_emscripten_bind_btRigidBody__checkCollideWithOverride_p1"];
var _emscripten_bind_btAxisSweep3__getOverlappingPairCache_p0 = Module["_emscripten_bind_btAxisSweep3__getOverlappingPairCache_p0"] = asm["_emscripten_bind_btAxisSweep3__getOverlappingPairCache_p0"];
var _emscripten_bind_btUniversalConstraint__calculateTransforms_p2 = Module["_emscripten_bind_btUniversalConstraint__calculateTransforms_p2"] = asm["_emscripten_bind_btUniversalConstraint__calculateTransforms_p2"];
var _emscripten_bind_btUniversalConstraint__calculateTransforms_p0 = Module["_emscripten_bind_btUniversalConstraint__calculateTransforms_p0"] = asm["_emscripten_bind_btUniversalConstraint__calculateTransforms_p0"];
var _emscripten_bind_btSimpleBroadphase__testAabbOverlap_p2 = Module["_emscripten_bind_btSimpleBroadphase__testAabbOverlap_p2"] = asm["_emscripten_bind_btSimpleBroadphase__testAabbOverlap_p2"];
var _emscripten_bind_btConeTwistConstraint__buildJacobian_p0 = Module["_emscripten_bind_btConeTwistConstraint__buildJacobian_p0"] = asm["_emscripten_bind_btConeTwistConstraint__buildJacobian_p0"];
var _emscripten_bind_btRigidBody__addConstraintRef_p1 = Module["_emscripten_bind_btRigidBody__addConstraintRef_p1"] = asm["_emscripten_bind_btRigidBody__addConstraintRef_p1"];
var _emscripten_bind_btConeShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btConeShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btConeShape__localGetSupportingVertex_p1"];
var _emscripten_bind_btConeShape__getRadius_p0 = Module["_emscripten_bind_btConeShape__getRadius_p0"] = asm["_emscripten_bind_btConeShape__getRadius_p0"];
var _emscripten_bind_btCollisionDispatcher__registerCollisionCreateFunc_p3 = Module["_emscripten_bind_btCollisionDispatcher__registerCollisionCreateFunc_p3"] = asm["_emscripten_bind_btCollisionDispatcher__registerCollisionCreateFunc_p3"];
var _emscripten_bind_btDynamicsWorld__rayTest_p3 = Module["_emscripten_bind_btDynamicsWorld__rayTest_p3"] = asm["_emscripten_bind_btDynamicsWorld__rayTest_p3"];
var _emscripten_bind_btQuaternion__normalize_p0 = Module["_emscripten_bind_btQuaternion__normalize_p0"] = asm["_emscripten_bind_btQuaternion__normalize_p0"];
var _emscripten_bind_btHeightfieldTerrainShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btMatrix3x3__transposeTimes_p1 = Module["_emscripten_bind_btMatrix3x3__transposeTimes_p1"] = asm["_emscripten_bind_btMatrix3x3__transposeTimes_p1"];
var _emscripten_bind_btConcaveShape__isSoftBody_p0 = Module["_emscripten_bind_btConcaveShape__isSoftBody_p0"] = asm["_emscripten_bind_btConcaveShape__isSoftBody_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__getAabb_p3 = Module["_emscripten_bind_btConvexTriangleMeshShape__getAabb_p3"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getAabb_p3"];
var _emscripten_bind_btContinuousDynamicsWorld__contactPairTest_p3 = Module["_emscripten_bind_btContinuousDynamicsWorld__contactPairTest_p3"] = asm["_emscripten_bind_btContinuousDynamicsWorld__contactPairTest_p3"];
var _emscripten_bind_btOverlapFilterCallback__needBroadphaseCollision_p2 = Module["_emscripten_bind_btOverlapFilterCallback__needBroadphaseCollision_p2"] = asm["_emscripten_bind_btOverlapFilterCallback__needBroadphaseCollision_p2"];
var _emscripten_bind_btAxisSweep3__getOverlappingPairUserCallback_p0 = Module["_emscripten_bind_btAxisSweep3__getOverlappingPairUserCallback_p0"] = asm["_emscripten_bind_btAxisSweep3__getOverlappingPairUserCallback_p0"];
var _emscripten_bind_btHeightfieldTerrainShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btHeightfieldTerrainShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btHeightfieldTerrainShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btContinuousDynamicsWorld__getForceUpdateAllAabbs_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getForceUpdateAllAabbs_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getForceUpdateAllAabbs_p0"];
var _emscripten_bind_btCollisionDispatcher__needsCollision_p2 = Module["_emscripten_bind_btCollisionDispatcher__needsCollision_p2"] = asm["_emscripten_bind_btCollisionDispatcher__needsCollision_p2"];
var _emscripten_bind_btVector4__serialize_p1 = Module["_emscripten_bind_btVector4__serialize_p1"] = asm["_emscripten_bind_btVector4__serialize_p1"];
var _emscripten_bind_btHingeConstraint__btHingeConstraint_p4 = Module["_emscripten_bind_btHingeConstraint__btHingeConstraint_p4"] = asm["_emscripten_bind_btHingeConstraint__btHingeConstraint_p4"];
var _emscripten_bind_btHingeConstraint__btHingeConstraint_p7 = Module["_emscripten_bind_btHingeConstraint__btHingeConstraint_p7"] = asm["_emscripten_bind_btHingeConstraint__btHingeConstraint_p7"];
var _emscripten_bind_btHingeConstraint__btHingeConstraint_p6 = Module["_emscripten_bind_btHingeConstraint__btHingeConstraint_p6"] = asm["_emscripten_bind_btHingeConstraint__btHingeConstraint_p6"];
var _emscripten_bind_btSimpleDynamicsWorld__setConstraintSolver_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__setConstraintSolver_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__setConstraintSolver_p1"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getMarginNonVirtual_p0"];
var _emscripten_bind_btCapsuleShapeX__serializeSingleShape_p1 = Module["_emscripten_bind_btCapsuleShapeX__serializeSingleShape_p1"] = asm["_emscripten_bind_btCapsuleShapeX__serializeSingleShape_p1"];
var _emscripten_bind_btBoxShape__getLocalScaling_p0 = Module["_emscripten_bind_btBoxShape__getLocalScaling_p0"] = asm["_emscripten_bind_btBoxShape__getLocalScaling_p0"];
var _emscripten_bind_btUniversalConstraint__getRigidBodyA_p0 = Module["_emscripten_bind_btUniversalConstraint__getRigidBodyA_p0"] = asm["_emscripten_bind_btUniversalConstraint__getRigidBodyA_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__isSoftBody_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isSoftBody_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isSoftBody_p0"];
var _emscripten_bind_btPersistentManifold__setBodies_p2 = Module["_emscripten_bind_btPersistentManifold__setBodies_p2"] = asm["_emscripten_bind_btPersistentManifold__setBodies_p2"];
var _emscripten_bind_btOptimizedBvh__getLeafNodeArray_p0 = Module["_emscripten_bind_btOptimizedBvh__getLeafNodeArray_p0"] = asm["_emscripten_bind_btOptimizedBvh__getLeafNodeArray_p0"];
var _emscripten_bind_btUniversalConstraint__getUid_p0 = Module["_emscripten_bind_btUniversalConstraint__getUid_p0"] = asm["_emscripten_bind_btUniversalConstraint__getUid_p0"];
var _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_maxSuspensionForce_p1 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_maxSuspensionForce_p1"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_maxSuspensionForce_p1"];
var _emscripten_bind_btSliderConstraint__setRestitutionLimLin_p1 = Module["_emscripten_bind_btSliderConstraint__setRestitutionLimLin_p1"] = asm["_emscripten_bind_btSliderConstraint__setRestitutionLimLin_p1"];
var _emscripten_bind_btCollisionShape__isConcave_p0 = Module["_emscripten_bind_btCollisionShape__isConcave_p0"] = asm["_emscripten_bind_btCollisionShape__isConcave_p0"];
var _emscripten_bind_btHingeConstraint__setEnabled_p1 = Module["_emscripten_bind_btHingeConstraint__setEnabled_p1"] = asm["_emscripten_bind_btHingeConstraint__setEnabled_p1"];
var _emscripten_bind_btSliderConstraint__setupSolverConstraint_p4 = Module["_emscripten_bind_btSliderConstraint__setupSolverConstraint_p4"] = asm["_emscripten_bind_btSliderConstraint__setupSolverConstraint_p4"];
var _emscripten_bind_btStridingMeshInterface__setPremadeAabb_p2 = Module["_emscripten_bind_btStridingMeshInterface__setPremadeAabb_p2"] = asm["_emscripten_bind_btStridingMeshInterface__setPremadeAabb_p2"];
var _emscripten_bind_btRigidBody__integrateVelocities_p1 = Module["_emscripten_bind_btRigidBody__integrateVelocities_p1"] = asm["_emscripten_bind_btRigidBody__integrateVelocities_p1"];
var _emscripten_bind_btRigidBody__internalGetInvMass_p0 = Module["_emscripten_bind_btRigidBody__internalGetInvMass_p0"] = asm["_emscripten_bind_btRigidBody__internalGetInvMass_p0"];
var _emscripten_bind_btPairCachingGhostObject__setCcdMotionThreshold_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setCcdMotionThreshold_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setCcdMotionThreshold_p1"];
var _emscripten_bind_btWheelInfo__set_m_wheelAxleCS_p1 = Module["_emscripten_bind_btWheelInfo__set_m_wheelAxleCS_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_wheelAxleCS_p1"];
var _emscripten_bind_btTypedConstraint____destroy___p0 = Module["_emscripten_bind_btTypedConstraint____destroy___p0"] = asm["_emscripten_bind_btTypedConstraint____destroy___p0"];
var _emscripten_bind_btHinge2Constraint__getRotationalLimitMotor_p1 = Module["_emscripten_bind_btHinge2Constraint__getRotationalLimitMotor_p1"] = asm["_emscripten_bind_btHinge2Constraint__getRotationalLimitMotor_p1"];
var _emscripten_bind_btHingeConstraint__getLowerLimit_p0 = Module["_emscripten_bind_btHingeConstraint__getLowerLimit_p0"] = asm["_emscripten_bind_btHingeConstraint__getLowerLimit_p0"];
var _emscripten_bind_btGeneric6DofConstraint__enableFeedback_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__enableFeedback_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__enableFeedback_p1"];
var _emscripten_bind_btQuaternion__getX_p0 = Module["_emscripten_bind_btQuaternion__getX_p0"] = asm["_emscripten_bind_btQuaternion__getX_p0"];
var _emscripten_bind_btPairCachingGhostObject__getInterpolationLinearVelocity_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getInterpolationLinearVelocity_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getInterpolationLinearVelocity_p0"];
var _emscripten_bind_btConeTwistConstraint__isEnabled_p0 = Module["_emscripten_bind_btConeTwistConstraint__isEnabled_p0"] = asm["_emscripten_bind_btConeTwistConstraint__isEnabled_p0"];
var _strlen = Module["_strlen"] = asm["_strlen"];
var _emscripten_bind_btWheelInfo__get_m_deltaRotation_p0 = Module["_emscripten_bind_btWheelInfo__get_m_deltaRotation_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_deltaRotation_p0"];
var _emscripten_bind_btQuaternion__getY_p0 = Module["_emscripten_bind_btQuaternion__getY_p0"] = asm["_emscripten_bind_btQuaternion__getY_p0"];
var _emscripten_bind_btGhostObject__removeOverlappingObjectInternal_p3 = Module["_emscripten_bind_btGhostObject__removeOverlappingObjectInternal_p3"] = asm["_emscripten_bind_btGhostObject__removeOverlappingObjectInternal_p3"];
var _emscripten_bind_btDynamicsWorld__setConstraintSolver_p1 = Module["_emscripten_bind_btDynamicsWorld__setConstraintSolver_p1"] = asm["_emscripten_bind_btDynamicsWorld__setConstraintSolver_p1"];
var _emscripten_bind_btUniformScalingShape__getUserPointer_p0 = Module["_emscripten_bind_btUniformScalingShape__getUserPointer_p0"] = asm["_emscripten_bind_btUniformScalingShape__getUserPointer_p0"];
var _emscripten_bind_btHashString__get_m_hash_p0 = Module["_emscripten_bind_btHashString__get_m_hash_p0"] = asm["_emscripten_bind_btHashString__get_m_hash_p0"];
var _emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionFilterMask_p0 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionFilterMask_p0"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionFilterMask_p0"];
var _emscripten_bind_btHingeConstraint__getInfo1_p1 = Module["_emscripten_bind_btHingeConstraint__getInfo1_p1"] = asm["_emscripten_bind_btHingeConstraint__getInfo1_p1"];
var _emscripten_bind_btConeShapeZ__isConcave_p0 = Module["_emscripten_bind_btConeShapeZ__isConcave_p0"] = asm["_emscripten_bind_btConeShapeZ__isConcave_p0"];
var _emscripten_bind_btTranslationalLimitMotor__set_m_currentLimitError_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_currentLimitError_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_currentLimitError_p1"];
var _emscripten_bind_btDbvtBroadphase__collide_p1 = Module["_emscripten_bind_btDbvtBroadphase__collide_p1"] = asm["_emscripten_bind_btDbvtBroadphase__collide_p1"];
var _emscripten_bind_btTriangleInfo__set_m_flags_p1 = Module["_emscripten_bind_btTriangleInfo__set_m_flags_p1"] = asm["_emscripten_bind_btTriangleInfo__set_m_flags_p1"];
var _emscripten_bind_btBU_Simplex1to4__addVertex_p1 = Module["_emscripten_bind_btBU_Simplex1to4__addVertex_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__addVertex_p1"];
var _emscripten_bind_btSimpleBroadphaseProxy__isCompound_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__isCompound_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__isCompound_p1"];
var _emscripten_bind_btConvexTriangleMeshShape__isSoftBody_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__isSoftBody_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__isSoftBody_p0"];
var _emscripten_bind_btTypedConstraint__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btTypedConstraint__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btTypedConstraint__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_rayToWorld_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_rayToWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_rayToWorld_p0"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback____destroy___p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback____destroy___p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback____destroy___p0"];
var _emscripten_bind_btCollisionDispatcher__getNearCallback_p0 = Module["_emscripten_bind_btCollisionDispatcher__getNearCallback_p0"] = asm["_emscripten_bind_btCollisionDispatcher__getNearCallback_p0"];
var _emscripten_bind_btTypedConstraint__getBreakingImpulseThreshold_p0 = Module["_emscripten_bind_btTypedConstraint__getBreakingImpulseThreshold_p0"] = asm["_emscripten_bind_btTypedConstraint__getBreakingImpulseThreshold_p0"];
var _emscripten_bind_btWheelInfo____destroy___p0 = Module["_emscripten_bind_btWheelInfo____destroy___p0"] = asm["_emscripten_bind_btWheelInfo____destroy___p0"];
var _emscripten_bind_btDefaultMotionState__get_m_graphicsWorldTrans_p0 = Module["_emscripten_bind_btDefaultMotionState__get_m_graphicsWorldTrans_p0"] = asm["_emscripten_bind_btDefaultMotionState__get_m_graphicsWorldTrans_p0"];
var _emscripten_bind_btUniformScalingShape__serializeSingleShape_p1 = Module["_emscripten_bind_btUniformScalingShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btUniformScalingShape__serializeSingleShape_p1"];
var _emscripten_bind_btConeShapeX__getConeUpIndex_p0 = Module["_emscripten_bind_btConeShapeX__getConeUpIndex_p0"] = asm["_emscripten_bind_btConeShapeX__getConeUpIndex_p0"];
var _emscripten_bind_btBroadphaseProxy__get_m_collisionFilterGroup_p0 = Module["_emscripten_bind_btBroadphaseProxy__get_m_collisionFilterGroup_p0"] = asm["_emscripten_bind_btBroadphaseProxy__get_m_collisionFilterGroup_p0"];
var _emscripten_bind_btHeightfieldTerrainShape__isConvex2d_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__isConvex2d_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__isConvex2d_p0"];
var _emscripten_bind_btUniversalConstraint__getAxis1_p0 = Module["_emscripten_bind_btUniversalConstraint__getAxis1_p0"] = asm["_emscripten_bind_btUniversalConstraint__getAxis1_p0"];
var _emscripten_bind_btSimpleBroadphaseProxy__get_m_clientObject_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__get_m_clientObject_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__get_m_clientObject_p0"];
var _emscripten_bind_btDispatcherInfo__get_m_stepCount_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_stepCount_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_stepCount_p0"];
var _emscripten_bind_btCollisionDispatcher__defaultNearCallback_p3 = Module["_emscripten_bind_btCollisionDispatcher__defaultNearCallback_p3"] = asm["_emscripten_bind_btCollisionDispatcher__defaultNearCallback_p3"];
var _emscripten_bind_btQuadWord__w_p0 = Module["_emscripten_bind_btQuadWord__w_p0"] = asm["_emscripten_bind_btQuadWord__w_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__getDispatchInfo_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getDispatchInfo_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getDispatchInfo_p0"];
var _emscripten_bind_btCollisionDispatcher__setDispatcherFlags_p1 = Module["_emscripten_bind_btCollisionDispatcher__setDispatcherFlags_p1"] = asm["_emscripten_bind_btCollisionDispatcher__setDispatcherFlags_p1"];
var _emscripten_bind_btConeTwistConstraint__getConstraintType_p0 = Module["_emscripten_bind_btConeTwistConstraint__getConstraintType_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getConstraintType_p0"];
var _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_transformA_p1 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_transformA_p1"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_transformA_p1"];
var _emscripten_bind_btCompoundShape__getChildList_p0 = Module["_emscripten_bind_btCompoundShape__getChildList_p0"] = asm["_emscripten_bind_btCompoundShape__getChildList_p0"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__setLocalScaling_p1 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__setLocalScaling_p1"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__setLocalScaling_p1"];
var _emscripten_bind_btGhostObject__isActive_p0 = Module["_emscripten_bind_btGhostObject__isActive_p0"] = asm["_emscripten_bind_btGhostObject__isActive_p0"];
var _emscripten_bind_btManifoldPoint__get_m_contactCFM1_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_contactCFM1_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_contactCFM1_p0"];
var _emscripten_bind_btWheelInfo__set_m_wheelDirectionCS_p1 = Module["_emscripten_bind_btWheelInfo__set_m_wheelDirectionCS_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_wheelDirectionCS_p1"];
var _emscripten_bind_btMultiSphereShape__btMultiSphereShape_p3 = Module["_emscripten_bind_btMultiSphereShape__btMultiSphereShape_p3"] = asm["_emscripten_bind_btMultiSphereShape__btMultiSphereShape_p3"];
var _emscripten_bind_btGhostObject__getContactProcessingThreshold_p0 = Module["_emscripten_bind_btGhostObject__getContactProcessingThreshold_p0"] = asm["_emscripten_bind_btGhostObject__getContactProcessingThreshold_p0"];
var _emscripten_bind_btHingeConstraint__setMaxMotorImpulse_p1 = Module["_emscripten_bind_btHingeConstraint__setMaxMotorImpulse_p1"] = asm["_emscripten_bind_btHingeConstraint__setMaxMotorImpulse_p1"];
var _emscripten_bind_btRaycastVehicle__setCoordinateSystem_p3 = Module["_emscripten_bind_btRaycastVehicle__setCoordinateSystem_p3"] = asm["_emscripten_bind_btRaycastVehicle__setCoordinateSystem_p3"];
var _emscripten_bind_btUniformScalingShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btUniformScalingShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btUniformScalingShape__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btGhostObject__setAnisotropicFriction_p1 = Module["_emscripten_bind_btGhostObject__setAnisotropicFriction_p1"] = asm["_emscripten_bind_btGhostObject__setAnisotropicFriction_p1"];
var _emscripten_bind_btManifoldPoint__getDistance_p0 = Module["_emscripten_bind_btManifoldPoint__getDistance_p0"] = asm["_emscripten_bind_btManifoldPoint__getDistance_p0"];
var _emscripten_bind_btHashInt__getHash_p0 = Module["_emscripten_bind_btHashInt__getHash_p0"] = asm["_emscripten_bind_btHashInt__getHash_p0"];
var _emscripten_bind_btConvexInternalShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btConvexInternalShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btConvexInternalShape__calculateTemporalAabb_p6"];
var _emscripten_bind_CProfileSample____destroy___p0 = Module["_emscripten_bind_CProfileSample____destroy___p0"] = asm["_emscripten_bind_CProfileSample____destroy___p0"];
var _emscripten_bind_btHinge2Constraint__calcAnchorPos_p0 = Module["_emscripten_bind_btHinge2Constraint__calcAnchorPos_p0"] = asm["_emscripten_bind_btHinge2Constraint__calcAnchorPos_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__addCharacter_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__addCharacter_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__addCharacter_p1"];
var _emscripten_bind_btPoint2PointConstraint__serialize_p2 = Module["_emscripten_bind_btPoint2PointConstraint__serialize_p2"] = asm["_emscripten_bind_btPoint2PointConstraint__serialize_p2"];
var _emscripten_bind_btUniversalConstraint__getParam_p2 = Module["_emscripten_bind_btUniversalConstraint__getParam_p2"] = asm["_emscripten_bind_btUniversalConstraint__getParam_p2"];
var _emscripten_bind_btConeShapeZ__getConeUpIndex_p0 = Module["_emscripten_bind_btConeShapeZ__getConeUpIndex_p0"] = asm["_emscripten_bind_btConeShapeZ__getConeUpIndex_p0"];
var _emscripten_bind_btSliderConstraint__getRestitutionOrthoAng_p0 = Module["_emscripten_bind_btSliderConstraint__getRestitutionOrthoAng_p0"] = asm["_emscripten_bind_btSliderConstraint__getRestitutionOrthoAng_p0"];
var _emscripten_bind_btConstraintSetting__btConstraintSetting_p0 = Module["_emscripten_bind_btConstraintSetting__btConstraintSetting_p0"] = asm["_emscripten_bind_btConstraintSetting__btConstraintSetting_p0"];
var _emscripten_bind_btGeneric6DofConstraint__setAngularLowerLimit_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setAngularLowerLimit_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setAngularLowerLimit_p1"];
var _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_hitPointInWorld_p0 = Module["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_hitPointInWorld_p0"] = asm["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_hitPointInWorld_p0"];
var _emscripten_bind_btGeneric6DofConstraint__setParam_p3 = Module["_emscripten_bind_btGeneric6DofConstraint__setParam_p3"] = asm["_emscripten_bind_btGeneric6DofConstraint__setParam_p3"];
var _emscripten_bind_btGeneric6DofConstraint__getFrameOffsetB_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getFrameOffsetB_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getFrameOffsetB_p0"];
var _emscripten_bind_bt32BitAxisSweep3__getOverlappingPairUserCallback_p0 = Module["_emscripten_bind_bt32BitAxisSweep3__getOverlappingPairUserCallback_p0"] = asm["_emscripten_bind_bt32BitAxisSweep3__getOverlappingPairUserCallback_p0"];
var _emscripten_bind_btCapsuleShapeZ__isInfinite_p0 = Module["_emscripten_bind_btCapsuleShapeZ__isInfinite_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__isInfinite_p0"];
var _emscripten_bind_btDbvtProxy__get_m_uniqueId_p0 = Module["_emscripten_bind_btDbvtProxy__get_m_uniqueId_p0"] = asm["_emscripten_bind_btDbvtProxy__get_m_uniqueId_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__getNumConstraints_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getNumConstraints_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getNumConstraints_p0"];
var _emscripten_bind_btBroadphaseInterface__resetPool_p1 = Module["_emscripten_bind_btBroadphaseInterface__resetPool_p1"] = asm["_emscripten_bind_btBroadphaseInterface__resetPool_p1"];
var _emscripten_bind_btHinge2Constraint__get_limit_motor_info2_p11 = Module["_emscripten_bind_btHinge2Constraint__get_limit_motor_info2_p11"] = asm["_emscripten_bind_btHinge2Constraint__get_limit_motor_info2_p11"];
var _emscripten_bind_btRotationalLimitMotor__set_m_accumulatedImpulse_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_accumulatedImpulse_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_accumulatedImpulse_p1"];
var _emscripten_bind_btConvexHullShape__initializePolyhedralFeatures_p0 = Module["_emscripten_bind_btConvexHullShape__initializePolyhedralFeatures_p0"] = asm["_emscripten_bind_btConvexHullShape__initializePolyhedralFeatures_p0"];
var _emscripten_bind_btHinge2Constraint__get_limit_motor_info2_p12 = Module["_emscripten_bind_btHinge2Constraint__get_limit_motor_info2_p12"] = asm["_emscripten_bind_btHinge2Constraint__get_limit_motor_info2_p12"];
var _emscripten_bind_btBU_Simplex1to4__isPolyhedral_p0 = Module["_emscripten_bind_btBU_Simplex1to4__isPolyhedral_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__isPolyhedral_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__addConstraint_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__addConstraint_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__addConstraint_p1"];
var _emscripten_bind_btConvexTriangleMeshShape__getNumVertices_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getNumVertices_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getNumVertices_p0"];
var _emscripten_bind_btContactConstraint__setUserConstraintId_p1 = Module["_emscripten_bind_btContactConstraint__setUserConstraintId_p1"] = asm["_emscripten_bind_btContactConstraint__setUserConstraintId_p1"];
var _emscripten_bind_btTranslationalLimitMotor__needApplyForce_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__needApplyForce_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__needApplyForce_p1"];
var _emscripten_bind_btWheelInfo__set_m_wheelsRadius_p1 = Module["_emscripten_bind_btWheelInfo__set_m_wheelsRadius_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_wheelsRadius_p1"];
var _emscripten_bind_btHinge2Constraint__getCalculatedTransformA_p0 = Module["_emscripten_bind_btHinge2Constraint__getCalculatedTransformA_p0"] = asm["_emscripten_bind_btHinge2Constraint__getCalculatedTransformA_p0"];
var _emscripten_bind_btCollisionWorld__LocalRayResult__set_m_hitNormalLocal_p1 = Module["_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_hitNormalLocal_p1"] = asm["_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_hitNormalLocal_p1"];
var _emscripten_bind_btConeShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btConeShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btConeShape__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_btQuadWord__setValue_p4 = Module["_emscripten_bind_btQuadWord__setValue_p4"] = asm["_emscripten_bind_btQuadWord__setValue_p4"];
var _emscripten_bind_btRotationalLimitMotor__set_m_currentLimit_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_currentLimit_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_currentLimit_p1"];
var _emscripten_bind_btQuadWord__y_p0 = Module["_emscripten_bind_btQuadWord__y_p0"] = asm["_emscripten_bind_btQuadWord__y_p0"];
var _emscripten_bind_btQuadWord__setValue_p3 = Module["_emscripten_bind_btQuadWord__setValue_p3"] = asm["_emscripten_bind_btQuadWord__setValue_p3"];
var _emscripten_bind_btRigidBody__getInvMass_p0 = Module["_emscripten_bind_btRigidBody__getInvMass_p0"] = asm["_emscripten_bind_btRigidBody__getInvMass_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__setNumTasks_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__setNumTasks_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setNumTasks_p1"];
var _emscripten_bind_btCollisionObject__getUserPointer_p0 = Module["_emscripten_bind_btCollisionObject__getUserPointer_p0"] = asm["_emscripten_bind_btCollisionObject__getUserPointer_p0"];
var _emscripten_bind_btTranslationalLimitMotor__get_m_accumulatedImpulse_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_accumulatedImpulse_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_accumulatedImpulse_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__setLocalScaling_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__setLocalScaling_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__setLocalScaling_p1"];
var _emscripten_bind_btStridingMeshInterface__hasPremadeAabb_p0 = Module["_emscripten_bind_btStridingMeshInterface__hasPremadeAabb_p0"] = asm["_emscripten_bind_btStridingMeshInterface__hasPremadeAabb_p0"];
var _emscripten_bind_btConeTwistConstraint__isPastSwingLimit_p0 = Module["_emscripten_bind_btConeTwistConstraint__isPastSwingLimit_p0"] = asm["_emscripten_bind_btConeTwistConstraint__isPastSwingLimit_p0"];
var _emscripten_bind_btWheelInfo__get_m_rotation_p0 = Module["_emscripten_bind_btWheelInfo__get_m_rotation_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_rotation_p0"];
var _emscripten_bind_btQuantizedBvh__unQuantize_p1 = Module["_emscripten_bind_btQuantizedBvh__unQuantize_p1"] = asm["_emscripten_bind_btQuantizedBvh__unQuantize_p1"];
var _emscripten_bind_btUniversalConstraint__getAxis2_p0 = Module["_emscripten_bind_btUniversalConstraint__getAxis2_p0"] = asm["_emscripten_bind_btUniversalConstraint__getAxis2_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__isPolyhedral_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isPolyhedral_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isPolyhedral_p0"];
var _emscripten_bind_btHeightfieldTerrainShape__isPolyhedral_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__isPolyhedral_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__isPolyhedral_p0"];
var _emscripten_bind_btTypedConstraint__getDbgDrawSize_p0 = Module["_emscripten_bind_btTypedConstraint__getDbgDrawSize_p0"] = asm["_emscripten_bind_btTypedConstraint__getDbgDrawSize_p0"];
var _emscripten_bind_btSliderConstraint__getRestitutionOrthoLin_p0 = Module["_emscripten_bind_btSliderConstraint__getRestitutionOrthoLin_p0"] = asm["_emscripten_bind_btSliderConstraint__getRestitutionOrthoLin_p0"];
var _emscripten_bind_btPolyhedralConvexShape__isConvex2d_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__isConvex2d_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__isConvex2d_p0"];
var _emscripten_bind_btQuantizedBvh__quantize_p3 = Module["_emscripten_bind_btQuantizedBvh__quantize_p3"] = asm["_emscripten_bind_btQuantizedBvh__quantize_p3"];
var _emscripten_bind_btDynamicsWorld__removeCollisionObject_p1 = Module["_emscripten_bind_btDynamicsWorld__removeCollisionObject_p1"] = asm["_emscripten_bind_btDynamicsWorld__removeCollisionObject_p1"];
var _emscripten_bind_btVector4__closestAxis4_p0 = Module["_emscripten_bind_btVector4__closestAxis4_p0"] = asm["_emscripten_bind_btVector4__closestAxis4_p0"];
var _emscripten_bind_btCollisionShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btCollisionShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btCollisionShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btGhostObject__getAnisotropicFriction_p0 = Module["_emscripten_bind_btGhostObject__getAnisotropicFriction_p0"] = asm["_emscripten_bind_btGhostObject__getAnisotropicFriction_p0"];
var _emscripten_bind_btCollisionObject__forceActivationState_p1 = Module["_emscripten_bind_btCollisionObject__forceActivationState_p1"] = asm["_emscripten_bind_btCollisionObject__forceActivationState_p1"];
var _emscripten_bind_btCylinderShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btCylinderShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btCylinderShape__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_btBroadphaseProxy__get_m_multiSapParentProxy_p0 = Module["_emscripten_bind_btBroadphaseProxy__get_m_multiSapParentProxy_p0"] = asm["_emscripten_bind_btBroadphaseProxy__get_m_multiSapParentProxy_p0"];
var _emscripten_bind_bt32BitAxisSweep3__processAllOverlappingPairs_p1 = Module["_emscripten_bind_bt32BitAxisSweep3__processAllOverlappingPairs_p1"] = asm["_emscripten_bind_bt32BitAxisSweep3__processAllOverlappingPairs_p1"];
var _emscripten_bind_btConvexShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btConvexShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btConvexShape__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btConvexInternalShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btConvexInternalShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btConvexInternalShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _emscripten_bind_btDiscreteDynamicsWorld__getSolverInfo_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getSolverInfo_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getSolverInfo_p0"];
var _emscripten_bind_btManifoldPoint__get_m_contactCFM2_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_contactCFM2_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_contactCFM2_p0"];
var _emscripten_bind_btConeTwistConstraint__getDbgDrawSize_p0 = Module["_emscripten_bind_btConeTwistConstraint__getDbgDrawSize_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getDbgDrawSize_p0"];
var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionFilterGroup_p0 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionFilterGroup_p0"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionFilterGroup_p0"];
var _emscripten_bind_btConvexHullShape__isNonMoving_p0 = Module["_emscripten_bind_btConvexHullShape__isNonMoving_p0"] = asm["_emscripten_bind_btConvexHullShape__isNonMoving_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__setConstraintSolver_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__setConstraintSolver_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setConstraintSolver_p1"];
var _emscripten_bind_btBoxShape__getHalfExtentsWithoutMargin_p0 = Module["_emscripten_bind_btBoxShape__getHalfExtentsWithoutMargin_p0"] = asm["_emscripten_bind_btBoxShape__getHalfExtentsWithoutMargin_p0"];
var _emscripten_bind_btConvexHullShape__isInside_p2 = Module["_emscripten_bind_btConvexHullShape__isInside_p2"] = asm["_emscripten_bind_btConvexHullShape__isInside_p2"];
var _emscripten_bind_btBvhTriangleMeshShape__performConvexcast_p5 = Module["_emscripten_bind_btBvhTriangleMeshShape__performConvexcast_p5"] = asm["_emscripten_bind_btBvhTriangleMeshShape__performConvexcast_p5"];
var _emscripten_bind_btConeShapeX__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btConeShapeX__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btConeShapeX__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btDispatcherInfo__set_m_convexConservativeDistanceThreshold_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_convexConservativeDistanceThreshold_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_convexConservativeDistanceThreshold_p1"];
var _emscripten_bind_btConeTwistConstraint__getSolveSwingLimit_p0 = Module["_emscripten_bind_btConeTwistConstraint__getSolveSwingLimit_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getSolveSwingLimit_p0"];
var _emscripten_bind_btSphereShape__serializeSingleShape_p1 = Module["_emscripten_bind_btSphereShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btSphereShape__serializeSingleShape_p1"];
var _emscripten_bind_btCylinderShapeX__serializeSingleShape_p1 = Module["_emscripten_bind_btCylinderShapeX__serializeSingleShape_p1"] = asm["_emscripten_bind_btCylinderShapeX__serializeSingleShape_p1"];
var _emscripten_bind_btHinge2Constraint__getRigidBodyA_p0 = Module["_emscripten_bind_btHinge2Constraint__getRigidBodyA_p0"] = asm["_emscripten_bind_btHinge2Constraint__getRigidBodyA_p0"];
var _emscripten_bind_btCollisionObject__setRestitution_p1 = Module["_emscripten_bind_btCollisionObject__setRestitution_p1"] = asm["_emscripten_bind_btCollisionObject__setRestitution_p1"];
var _emscripten_bind_btCylinderShapeX__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btCylinderShapeX__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btCylinderShapeX__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btHashString__set_m_string_p1 = Module["_emscripten_bind_btHashString__set_m_string_p1"] = asm["_emscripten_bind_btHashString__set_m_string_p1"];
var _emscripten_bind_btConeShapeZ__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btConeShapeZ__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btConeShapeZ__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btConvexHullShape__isSoftBody_p0 = Module["_emscripten_bind_btConvexHullShape__isSoftBody_p0"] = asm["_emscripten_bind_btConvexHullShape__isSoftBody_p0"];
var _emscripten_bind_btRigidBody__getLinearVelocity_p0 = Module["_emscripten_bind_btRigidBody__getLinearVelocity_p0"] = asm["_emscripten_bind_btRigidBody__getLinearVelocity_p0"];
var _emscripten_bind_btRigidBody__applyTorque_p1 = Module["_emscripten_bind_btRigidBody__applyTorque_p1"] = asm["_emscripten_bind_btRigidBody__applyTorque_p1"];
var _emscripten_bind_btRotationalLimitMotor__set_m_currentLimitError_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_currentLimitError_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_currentLimitError_p1"];
var _emscripten_bind_btConvexShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btConvexShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btConvexShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btIndexedMesh__set_m_vertexType_p1 = Module["_emscripten_bind_btIndexedMesh__set_m_vertexType_p1"] = asm["_emscripten_bind_btIndexedMesh__set_m_vertexType_p1"];
var _emscripten_bind_btCollisionObject__hasContactResponse_p0 = Module["_emscripten_bind_btCollisionObject__hasContactResponse_p0"] = asm["_emscripten_bind_btCollisionObject__hasContactResponse_p0"];
var _emscripten_bind_btPolyhedralConvexShape__getEdge_p3 = Module["_emscripten_bind_btPolyhedralConvexShape__getEdge_p3"] = asm["_emscripten_bind_btPolyhedralConvexShape__getEdge_p3"];
var _emscripten_bind_btTriangleIndexVertexArray__getLockedVertexIndexBase_p9 = Module["_emscripten_bind_btTriangleIndexVertexArray__getLockedVertexIndexBase_p9"] = asm["_emscripten_bind_btTriangleIndexVertexArray__getLockedVertexIndexBase_p9"];
var _emscripten_bind_btCapsuleShape__setLocalScaling_p1 = Module["_emscripten_bind_btCapsuleShape__setLocalScaling_p1"] = asm["_emscripten_bind_btCapsuleShape__setLocalScaling_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__serialize_p2 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__serialize_p2"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__serialize_p2"];
var _emscripten_bind_btPolyhedralConvexShape__getVertex_p2 = Module["_emscripten_bind_btPolyhedralConvexShape__getVertex_p2"] = asm["_emscripten_bind_btPolyhedralConvexShape__getVertex_p2"];
var _emscripten_bind_btHingeConstraint__getMotorTargetVelosity_p0 = Module["_emscripten_bind_btHingeConstraint__getMotorTargetVelosity_p0"] = asm["_emscripten_bind_btHingeConstraint__getMotorTargetVelosity_p0"];
var _emscripten_bind_btOptimizedBvh__getAlignmentSerializationPadding_p0 = Module["_emscripten_bind_btOptimizedBvh__getAlignmentSerializationPadding_p0"] = asm["_emscripten_bind_btOptimizedBvh__getAlignmentSerializationPadding_p0"];
var _emscripten_bind_btGhostObject__setUserPointer_p1 = Module["_emscripten_bind_btGhostObject__setUserPointer_p1"] = asm["_emscripten_bind_btGhostObject__setUserPointer_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__getSimulationIslandManager_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getSimulationIslandManager_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getSimulationIslandManager_p0"];
var _emscripten_bind_btGeneric6DofConstraint__setFrames_p2 = Module["_emscripten_bind_btGeneric6DofConstraint__setFrames_p2"] = asm["_emscripten_bind_btGeneric6DofConstraint__setFrames_p2"];
var _emscripten_bind_btUniversalConstraint__setUpperLimit_p2 = Module["_emscripten_bind_btUniversalConstraint__setUpperLimit_p2"] = asm["_emscripten_bind_btUniversalConstraint__setUpperLimit_p2"];
var _emscripten_bind_btConvexHullShape__getScaledPoint_p1 = Module["_emscripten_bind_btConvexHullShape__getScaledPoint_p1"] = asm["_emscripten_bind_btConvexHullShape__getScaledPoint_p1"];
var _emscripten_bind_btConeShapeX__getUserPointer_p0 = Module["_emscripten_bind_btConeShapeX__getUserPointer_p0"] = asm["_emscripten_bind_btConeShapeX__getUserPointer_p0"];
var _emscripten_bind_btCollisionObject__setCcdMotionThreshold_p1 = Module["_emscripten_bind_btCollisionObject__setCcdMotionThreshold_p1"] = asm["_emscripten_bind_btCollisionObject__setCcdMotionThreshold_p1"];
var _emscripten_bind_btConvexTriangleMeshShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_btManifoldPoint__set_m_userPersistentData_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_userPersistentData_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_userPersistentData_p1"];
var _emscripten_bind_btSliderConstraint__set_m_objectType_p1 = Module["_emscripten_bind_btSliderConstraint__set_m_objectType_p1"] = asm["_emscripten_bind_btSliderConstraint__set_m_objectType_p1"];
var _emscripten_bind_btSimpleDynamicsWorld__getGravity_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getGravity_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getGravity_p0"];
var _emscripten_bind_btBU_Simplex1to4__getLocalScalingNV_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getLocalScalingNV_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getLocalScalingNV_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__removeVehicle_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__removeVehicle_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__removeVehicle_p1"];
var _emscripten_bind_btConeTwistConstraint__getAppliedImpulse_p0 = Module["_emscripten_bind_btConeTwistConstraint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getAppliedImpulse_p0"];
var _emscripten_bind_btConeShapeZ__getBoundingSphere_p2 = Module["_emscripten_bind_btConeShapeZ__getBoundingSphere_p2"] = asm["_emscripten_bind_btConeShapeZ__getBoundingSphere_p2"];
var _emscripten_bind_btContinuousDynamicsWorld__btContinuousDynamicsWorld_p4 = Module["_emscripten_bind_btContinuousDynamicsWorld__btContinuousDynamicsWorld_p4"] = asm["_emscripten_bind_btContinuousDynamicsWorld__btContinuousDynamicsWorld_p4"];
var _emscripten_bind_btGeneric6DofSpringConstraint__buildJacobian_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__buildJacobian_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__buildJacobian_p0"];
var _emscripten_bind_btConeShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btConeShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btConeShape__setImplicitShapeDimensions_p1"];
var _emscripten_bind_btBroadphaseRayCallback__process_p1 = Module["_emscripten_bind_btBroadphaseRayCallback__process_p1"] = asm["_emscripten_bind_btBroadphaseRayCallback__process_p1"];
var _emscripten_bind_btSimpleBroadphase__rayTest_p5 = Module["_emscripten_bind_btSimpleBroadphase__rayTest_p5"] = asm["_emscripten_bind_btSimpleBroadphase__rayTest_p5"];
var _emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_btUniformScalingShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btUniformScalingShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btUniformScalingShape__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_btRigidBody__applyTorqueImpulse_p1 = Module["_emscripten_bind_btRigidBody__applyTorqueImpulse_p1"] = asm["_emscripten_bind_btRigidBody__applyTorqueImpulse_p1"];
var _emscripten_bind_btMultiSphereShape__isInfinite_p0 = Module["_emscripten_bind_btMultiSphereShape__isInfinite_p0"] = asm["_emscripten_bind_btMultiSphereShape__isInfinite_p0"];
var _emscripten_bind_btContactConstraint__setupSolverConstraint_p4 = Module["_emscripten_bind_btContactConstraint__setupSolverConstraint_p4"] = asm["_emscripten_bind_btContactConstraint__setupSolverConstraint_p4"];
var _emscripten_bind_btVector3__closestAxis_p0 = Module["_emscripten_bind_btVector3__closestAxis_p0"] = asm["_emscripten_bind_btVector3__closestAxis_p0"];
var _emscripten_bind_btSimpleBroadphase__rayTest_p3 = Module["_emscripten_bind_btSimpleBroadphase__rayTest_p3"] = asm["_emscripten_bind_btSimpleBroadphase__rayTest_p3"];
var _emscripten_bind_btMultiSphereShape__getAabbSlow_p3 = Module["_emscripten_bind_btMultiSphereShape__getAabbSlow_p3"] = asm["_emscripten_bind_btMultiSphereShape__getAabbSlow_p3"];
var _emscripten_bind_btRigidBody__applyCentralImpulse_p1 = Module["_emscripten_bind_btRigidBody__applyCentralImpulse_p1"] = asm["_emscripten_bind_btRigidBody__applyCentralImpulse_p1"];
var _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_useEpaPenetrationAlgorithm_p1 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_useEpaPenetrationAlgorithm_p1"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_useEpaPenetrationAlgorithm_p1"];
var _emscripten_bind_btWheelInfo__set_m_frictionSlip_p1 = Module["_emscripten_bind_btWheelInfo__set_m_frictionSlip_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_frictionSlip_p1"];
var _emscripten_bind_btRigidBody__updateDeactivation_p1 = Module["_emscripten_bind_btRigidBody__updateDeactivation_p1"] = asm["_emscripten_bind_btRigidBody__updateDeactivation_p1"];
var _emscripten_bind_btTranslationalLimitMotor__get_m_currentLimitError_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_currentLimitError_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_currentLimitError_p0"];
var _emscripten_bind_btConeTwistConstraint__getObjectType_p0 = Module["_emscripten_bind_btConeTwistConstraint__getObjectType_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getObjectType_p0"];
var _emscripten_bind_btDbvtProxy__isConvex_p1 = Module["_emscripten_bind_btDbvtProxy__isConvex_p1"] = asm["_emscripten_bind_btDbvtProxy__isConvex_p1"];
var _emscripten_bind_btMultiSphereShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btMultiSphereShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btMultiSphereShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _emscripten_bind_btCapsuleShapeZ__getUserPointer_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getUserPointer_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getUserPointer_p0"];
var _emscripten_bind_btRotationalLimitMotor__needApplyTorques_p0 = Module["_emscripten_bind_btRotationalLimitMotor__needApplyTorques_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__needApplyTorques_p0"];
var _emscripten_bind_btWheelInfo__get_m_bIsFrontWheel_p0 = Module["_emscripten_bind_btWheelInfo__get_m_bIsFrontWheel_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_bIsFrontWheel_p0"];
var _emscripten_bind_btGeneric6DofConstraint__getUid_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getUid_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getUid_p0"];
var _emscripten_bind_btWheelInfo__set_m_clientInfo_p1 = Module["_emscripten_bind_btWheelInfo__set_m_clientInfo_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_clientInfo_p1"];
var _emscripten_bind_btCollisionDispatcher__setCollisionConfiguration_p1 = Module["_emscripten_bind_btCollisionDispatcher__setCollisionConfiguration_p1"] = asm["_emscripten_bind_btCollisionDispatcher__setCollisionConfiguration_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__btGeneric6DofSpringConstraint_p5 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__btGeneric6DofSpringConstraint_p5"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__btGeneric6DofSpringConstraint_p5"];
var _emscripten_bind_btCapsuleShapeZ__isSoftBody_p0 = Module["_emscripten_bind_btCapsuleShapeZ__isSoftBody_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__isSoftBody_p0"];
var _emscripten_bind_btTranslationalLimitMotor__get_m_damping_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_damping_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_damping_p0"];
var _emscripten_bind_btQuaternion__op_mul_p1 = Module["_emscripten_bind_btQuaternion__op_mul_p1"] = asm["_emscripten_bind_btQuaternion__op_mul_p1"];
var _emscripten_bind_btSphereShape__getMarginNV_p0 = Module["_emscripten_bind_btSphereShape__getMarginNV_p0"] = asm["_emscripten_bind_btSphereShape__getMarginNV_p0"];
var _emscripten_bind_btBoxShape__isNonMoving_p0 = Module["_emscripten_bind_btBoxShape__isNonMoving_p0"] = asm["_emscripten_bind_btBoxShape__isNonMoving_p0"];
var _emscripten_bind_btUniversalConstraint__setLimit_p3 = Module["_emscripten_bind_btUniversalConstraint__setLimit_p3"] = asm["_emscripten_bind_btUniversalConstraint__setLimit_p3"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getCalculatedTransformB_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getCalculatedTransformB_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getCalculatedTransformB_p0"];
var _emscripten_bind_btAngularLimit__getError_p0 = Module["_emscripten_bind_btAngularLimit__getError_p0"] = asm["_emscripten_bind_btAngularLimit__getError_p0"];
var _emscripten_bind_btCylinderShapeX__calculateLocalInertia_p2 = Module["_emscripten_bind_btCylinderShapeX__calculateLocalInertia_p2"] = asm["_emscripten_bind_btCylinderShapeX__calculateLocalInertia_p2"];
var _emscripten_bind_btDispatcherInfo__set_m_useContinuous_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_useContinuous_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_useContinuous_p1"];
var _emscripten_bind_btTypedConstraint__serialize_p2 = Module["_emscripten_bind_btTypedConstraint__serialize_p2"] = asm["_emscripten_bind_btTypedConstraint__serialize_p2"];
var _emscripten_bind_btDbvtBroadphase__resetPool_p1 = Module["_emscripten_bind_btDbvtBroadphase__resetPool_p1"] = asm["_emscripten_bind_btDbvtBroadphase__resetPool_p1"];
var _emscripten_bind_btSliderConstraint__getFrameOffsetB_p0 = Module["_emscripten_bind_btSliderConstraint__getFrameOffsetB_p0"] = asm["_emscripten_bind_btSliderConstraint__getFrameOffsetB_p0"];
var _emscripten_bind_btOptimizedBvh__reportAabbOverlappingNodex_p3 = Module["_emscripten_bind_btOptimizedBvh__reportAabbOverlappingNodex_p3"] = asm["_emscripten_bind_btOptimizedBvh__reportAabbOverlappingNodex_p3"];
var _emscripten_bind_btMatrix3x3__inverse_p0 = Module["_emscripten_bind_btMatrix3x3__inverse_p0"] = asm["_emscripten_bind_btMatrix3x3__inverse_p0"];
var _emscripten_bind_btCapsuleShapeX__btCapsuleShapeX_p2 = Module["_emscripten_bind_btCapsuleShapeX__btCapsuleShapeX_p2"] = asm["_emscripten_bind_btCapsuleShapeX__btCapsuleShapeX_p2"];
var _emscripten_bind_btRigidBody__getFriction_p0 = Module["_emscripten_bind_btRigidBody__getFriction_p0"] = asm["_emscripten_bind_btRigidBody__getFriction_p0"];
var _emscripten_bind_btSliderConstraint__setMaxLinMotorForce_p1 = Module["_emscripten_bind_btSliderConstraint__setMaxLinMotorForce_p1"] = asm["_emscripten_bind_btSliderConstraint__setMaxLinMotorForce_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__getPairCache_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getPairCache_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getPairCache_p0"];
var _emscripten_bind_btDynamicsWorld__addAction_p1 = Module["_emscripten_bind_btDynamicsWorld__addAction_p1"] = asm["_emscripten_bind_btDynamicsWorld__addAction_p1"];
var _emscripten_bind_CProfileSample__CProfileSample_p1 = Module["_emscripten_bind_CProfileSample__CProfileSample_p1"] = asm["_emscripten_bind_CProfileSample__CProfileSample_p1"];
var _emscripten_bind_btStridingMeshInterface__getLockedReadOnlyVertexIndexBase_p8 = Module["_emscripten_bind_btStridingMeshInterface__getLockedReadOnlyVertexIndexBase_p8"] = asm["_emscripten_bind_btStridingMeshInterface__getLockedReadOnlyVertexIndexBase_p8"];
var _emscripten_bind_btRigidBody__getHitFraction_p0 = Module["_emscripten_bind_btRigidBody__getHitFraction_p0"] = asm["_emscripten_bind_btRigidBody__getHitFraction_p0"];
var _emscripten_bind_btTriangleIndexVertexArray__addIndexedMesh_p2 = Module["_emscripten_bind_btTriangleIndexVertexArray__addIndexedMesh_p2"] = asm["_emscripten_bind_btTriangleIndexVertexArray__addIndexedMesh_p2"];
var _emscripten_bind_btTriangleIndexVertexArray__addIndexedMesh_p1 = Module["_emscripten_bind_btTriangleIndexVertexArray__addIndexedMesh_p1"] = asm["_emscripten_bind_btTriangleIndexVertexArray__addIndexedMesh_p1"];
var _emscripten_bind_btCapsuleShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btCapsuleShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btCapsuleShape__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btCapsuleShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btCapsuleShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btCapsuleShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btDbvtBroadphase__set_m_gid_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_gid_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_gid_p1"];
var _emscripten_bind_btEmptyShape__getLocalScaling_p0 = Module["_emscripten_bind_btEmptyShape__getLocalScaling_p0"] = asm["_emscripten_bind_btEmptyShape__getLocalScaling_p0"];
var _emscripten_bind_btHingeConstraint__serialize_p2 = Module["_emscripten_bind_btHingeConstraint__serialize_p2"] = asm["_emscripten_bind_btHingeConstraint__serialize_p2"];
var _emscripten_bind_btBoxShape__getNumEdges_p0 = Module["_emscripten_bind_btBoxShape__getNumEdges_p0"] = asm["_emscripten_bind_btBoxShape__getNumEdges_p0"];
var _emscripten_bind_btRotationalLimitMotor__set_m_stopCFM_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_stopCFM_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_stopCFM_p1"];
var _emscripten_bind_btContactConstraint__setBreakingImpulseThreshold_p1 = Module["_emscripten_bind_btContactConstraint__setBreakingImpulseThreshold_p1"] = asm["_emscripten_bind_btContactConstraint__setBreakingImpulseThreshold_p1"];
var _emscripten_bind_btDbvtBroadphase__btDbvtBroadphase_p1 = Module["_emscripten_bind_btDbvtBroadphase__btDbvtBroadphase_p1"] = asm["_emscripten_bind_btDbvtBroadphase__btDbvtBroadphase_p1"];
var _emscripten_bind_btDbvtBroadphase__btDbvtBroadphase_p0 = Module["_emscripten_bind_btDbvtBroadphase__btDbvtBroadphase_p0"] = asm["_emscripten_bind_btDbvtBroadphase__btDbvtBroadphase_p0"];
var _emscripten_bind_btConcaveShape__isConcave_p0 = Module["_emscripten_bind_btConcaveShape__isConcave_p0"] = asm["_emscripten_bind_btConcaveShape__isConcave_p0"];
var _emscripten_bind_btHingeConstraint__getInfo2_p1 = Module["_emscripten_bind_btHingeConstraint__getInfo2_p1"] = asm["_emscripten_bind_btHingeConstraint__getInfo2_p1"];
var _emscripten_bind_btSimpleDynamicsWorld__getNumConstraints_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getNumConstraints_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getNumConstraints_p0"];
var _emscripten_bind_btMatrix3x3__getRotation_p1 = Module["_emscripten_bind_btMatrix3x3__getRotation_p1"] = asm["_emscripten_bind_btMatrix3x3__getRotation_p1"];
var _emscripten_bind_btConeShapeZ__isInfinite_p0 = Module["_emscripten_bind_btConeShapeZ__isInfinite_p0"] = asm["_emscripten_bind_btConeShapeZ__isInfinite_p0"];
var _emscripten_bind_btConvexInternalAabbCachingShape__getName_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getName_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getName_p0"];
var _emscripten_bind_btCylinderShapeX__setUserPointer_p1 = Module["_emscripten_bind_btCylinderShapeX__setUserPointer_p1"] = asm["_emscripten_bind_btCylinderShapeX__setUserPointer_p1"];
var _emscripten_bind_btConvexInternalAabbCachingShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btCapsuleShapeX__isConvex_p0 = Module["_emscripten_bind_btCapsuleShapeX__isConvex_p0"] = asm["_emscripten_bind_btCapsuleShapeX__isConvex_p0"];
var _emscripten_bind_btCylinderShapeX__getUpAxis_p0 = Module["_emscripten_bind_btCylinderShapeX__getUpAxis_p0"] = asm["_emscripten_bind_btCylinderShapeX__getUpAxis_p0"];
var _emscripten_bind_btDynamicsWorld__getDebugDrawer_p0 = Module["_emscripten_bind_btDynamicsWorld__getDebugDrawer_p0"] = asm["_emscripten_bind_btDynamicsWorld__getDebugDrawer_p0"];
var _emscripten_bind_btMultiSphereShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btMultiSphereShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btMultiSphereShape__localGetSupportingVertex_p1"];
var _emscripten_bind_btHingeConstraint__setUserConstraintPtr_p1 = Module["_emscripten_bind_btHingeConstraint__setUserConstraintPtr_p1"] = asm["_emscripten_bind_btHingeConstraint__setUserConstraintPtr_p1"];
var _emscripten_bind_btSimpleDynamicsWorld__setDebugDrawer_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__setDebugDrawer_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__setDebugDrawer_p1"];
var _emscripten_bind_btConvexInternalShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btConvexInternalShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btConvexInternalShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionObject_p0 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionObject_p0"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionObject_p0"];
var _emscripten_bind_btConvexInternalShape__isCompound_p0 = Module["_emscripten_bind_btConvexInternalShape__isCompound_p0"] = asm["_emscripten_bind_btConvexInternalShape__isCompound_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btBvhTriangleMeshShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btBvhTriangleMeshShape__calculateLocalInertia_p2"];
var _emscripten_bind_btHinge2Constraint__getAngularLowerLimit_p1 = Module["_emscripten_bind_btHinge2Constraint__getAngularLowerLimit_p1"] = asm["_emscripten_bind_btHinge2Constraint__getAngularLowerLimit_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setStiffness_p2 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setStiffness_p2"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setStiffness_p2"];
var _emscripten_bind_btRaycastVehicle__getUserConstraintType_p0 = Module["_emscripten_bind_btRaycastVehicle__getUserConstraintType_p0"] = asm["_emscripten_bind_btRaycastVehicle__getUserConstraintType_p0"];
var _emscripten_bind_btTriangleMesh__setPremadeAabb_p2 = Module["_emscripten_bind_btTriangleMesh__setPremadeAabb_p2"] = asm["_emscripten_bind_btTriangleMesh__setPremadeAabb_p2"];
var _emscripten_bind_btCollisionObject__checkCollideWith_p1 = Module["_emscripten_bind_btCollisionObject__checkCollideWith_p1"] = asm["_emscripten_bind_btCollisionObject__checkCollideWith_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint____destroy___p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint____destroy___p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint____destroy___p0"];
var _emscripten_bind_btCapsuleShapeZ__getAngularMotionDisc_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getAngularMotionDisc_p0"];
var _emscripten_bind_btConstraintSetting__set_m_tau_p1 = Module["_emscripten_bind_btConstraintSetting__set_m_tau_p1"] = asm["_emscripten_bind_btConstraintSetting__set_m_tau_p1"];
var _emscripten_bind_btHinge2Constraint__needsFeedback_p0 = Module["_emscripten_bind_btHinge2Constraint__needsFeedback_p0"] = asm["_emscripten_bind_btHinge2Constraint__needsFeedback_p0"];
var _emscripten_bind_btRigidBody__setCompanionId_p1 = Module["_emscripten_bind_btRigidBody__setCompanionId_p1"] = asm["_emscripten_bind_btRigidBody__setCompanionId_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__updateAabbs_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__updateAabbs_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__updateAabbs_p0"];
var _emscripten_bind_btOptimizedBvh__build_p4 = Module["_emscripten_bind_btOptimizedBvh__build_p4"] = asm["_emscripten_bind_btOptimizedBvh__build_p4"];
var _emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportingVertex_p1"];
var _emscripten_bind_btConeShapeX__isConvex_p0 = Module["_emscripten_bind_btConeShapeX__isConvex_p0"] = asm["_emscripten_bind_btConeShapeX__isConvex_p0"];
var _emscripten_bind_btRigidBody__getTotalTorque_p0 = Module["_emscripten_bind_btRigidBody__getTotalTorque_p0"] = asm["_emscripten_bind_btRigidBody__getTotalTorque_p0"];
var _emscripten_bind_btCollisionDispatcher__getNumManifolds_p0 = Module["_emscripten_bind_btCollisionDispatcher__getNumManifolds_p0"] = asm["_emscripten_bind_btCollisionDispatcher__getNumManifolds_p0"];
var _emscripten_bind_btHingeConstraint__setParam_p3 = Module["_emscripten_bind_btHingeConstraint__setParam_p3"] = asm["_emscripten_bind_btHingeConstraint__setParam_p3"];
var _emscripten_bind_btCapsuleShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btCapsuleShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btCapsuleShape__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btTriangleIndexVertexArray__unLockReadOnlyVertexBase_p1 = Module["_emscripten_bind_btTriangleIndexVertexArray__unLockReadOnlyVertexBase_p1"] = asm["_emscripten_bind_btTriangleIndexVertexArray__unLockReadOnlyVertexBase_p1"];
var _emscripten_bind_btSliderConstraint__setLowerAngLimit_p1 = Module["_emscripten_bind_btSliderConstraint__setLowerAngLimit_p1"] = asm["_emscripten_bind_btSliderConstraint__setLowerAngLimit_p1"];
var _emscripten_bind_btHashPtr__getHash_p0 = Module["_emscripten_bind_btHashPtr__getHash_p0"] = asm["_emscripten_bind_btHashPtr__getHash_p0"];
var _emscripten_bind_btPolyhedralConvexShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btIndexedMesh__btIndexedMesh_p0 = Module["_emscripten_bind_btIndexedMesh__btIndexedMesh_p0"] = asm["_emscripten_bind_btIndexedMesh__btIndexedMesh_p0"];
var _emscripten_bind_btConvexHullShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btConvexHullShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btConvexHullShape__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btCapsuleShapeZ__getShapeType_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getShapeType_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getShapeType_p0"];
var _emscripten_bind_btPoint2PointConstraint__setEnabled_p1 = Module["_emscripten_bind_btPoint2PointConstraint__setEnabled_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__setEnabled_p1"];
var _emscripten_bind_btTranslationalLimitMotor__set_m_normalCFM_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_normalCFM_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_normalCFM_p1"];
var _emscripten_bind_btCapsuleShape__isNonMoving_p0 = Module["_emscripten_bind_btCapsuleShape__isNonMoving_p0"] = asm["_emscripten_bind_btCapsuleShape__isNonMoving_p0"];
var _emscripten_bind_btIDebugDraw__drawSphere_p3 = Module["_emscripten_bind_btIDebugDraw__drawSphere_p3"] = asm["_emscripten_bind_btIDebugDraw__drawSphere_p3"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateLocalInertia_p2"];
var _emscripten_bind_btCollisionWorld__getCollisionObjectArray_p0 = Module["_emscripten_bind_btCollisionWorld__getCollisionObjectArray_p0"] = asm["_emscripten_bind_btCollisionWorld__getCollisionObjectArray_p0"];
var _emscripten_bind_btRaycastVehicle__getWheelTransformWS_p1 = Module["_emscripten_bind_btRaycastVehicle__getWheelTransformWS_p1"] = asm["_emscripten_bind_btRaycastVehicle__getWheelTransformWS_p1"];
var _emscripten_bind_btBU_Simplex1to4__getNonvirtualAabb_p4 = Module["_emscripten_bind_btBU_Simplex1to4__getNonvirtualAabb_p4"] = asm["_emscripten_bind_btBU_Simplex1to4__getNonvirtualAabb_p4"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getFrameOffsetA_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getFrameOffsetA_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getFrameOffsetA_p0"];
var _emscripten_bind_btCylinderShape__isCompound_p0 = Module["_emscripten_bind_btCylinderShape__isCompound_p0"] = asm["_emscripten_bind_btCylinderShape__isCompound_p0"];
var _emscripten_bind_btSliderConstraint__internalGetAppliedImpulse_p0 = Module["_emscripten_bind_btSliderConstraint__internalGetAppliedImpulse_p0"] = asm["_emscripten_bind_btSliderConstraint__internalGetAppliedImpulse_p0"];
var _emscripten_bind_btCylinderShapeX__setLocalScaling_p1 = Module["_emscripten_bind_btCylinderShapeX__setLocalScaling_p1"] = asm["_emscripten_bind_btCylinderShapeX__setLocalScaling_p1"];
var _emscripten_bind_btConvexInternalShape__setLocalScaling_p1 = Module["_emscripten_bind_btConvexInternalShape__setLocalScaling_p1"] = asm["_emscripten_bind_btConvexInternalShape__setLocalScaling_p1"];
var _emscripten_bind_btHingeConstraint__getAFrame_p0 = Module["_emscripten_bind_btHingeConstraint__getAFrame_p0"] = asm["_emscripten_bind_btHingeConstraint__getAFrame_p0"];
var _emscripten_bind_btPairCachingGhostObject__isStaticOrKinematicObject_p0 = Module["_emscripten_bind_btPairCachingGhostObject__isStaticOrKinematicObject_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__isStaticOrKinematicObject_p0"];
var _emscripten_bind_btRigidBody__btRigidBody_p4 = Module["_emscripten_bind_btRigidBody__btRigidBody_p4"] = asm["_emscripten_bind_btRigidBody__btRigidBody_p4"];
var _emscripten_bind_btPairCachingGhostObject__removeOverlappingObjectInternal_p2 = Module["_emscripten_bind_btPairCachingGhostObject__removeOverlappingObjectInternal_p2"] = asm["_emscripten_bind_btPairCachingGhostObject__removeOverlappingObjectInternal_p2"];
var _emscripten_bind_btPairCachingGhostObject__removeOverlappingObjectInternal_p3 = Module["_emscripten_bind_btPairCachingGhostObject__removeOverlappingObjectInternal_p3"] = asm["_emscripten_bind_btPairCachingGhostObject__removeOverlappingObjectInternal_p3"];
var _emscripten_bind_bt32BitAxisSweep3__updateHandle_p4 = Module["_emscripten_bind_bt32BitAxisSweep3__updateHandle_p4"] = asm["_emscripten_bind_bt32BitAxisSweep3__updateHandle_p4"];
var _emscripten_bind_btDbvtBroadphase__get_m_deferedcollide_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_deferedcollide_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_deferedcollide_p0"];
var _emscripten_bind_btSimpleBroadphaseProxy__set_m_multiSapParentProxy_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__set_m_multiSapParentProxy_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__set_m_multiSapParentProxy_p1"];
var _emscripten_bind_btWheelInfo__set_m_deltaRotation_p1 = Module["_emscripten_bind_btWheelInfo__set_m_deltaRotation_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_deltaRotation_p1"];
var _emscripten_bind_bt32BitAxisSweep3__addHandle_p7 = Module["_emscripten_bind_bt32BitAxisSweep3__addHandle_p7"] = asm["_emscripten_bind_bt32BitAxisSweep3__addHandle_p7"];
var _emscripten_bind_btBU_Simplex1to4__getAabbNonVirtual_p3 = Module["_emscripten_bind_btBU_Simplex1to4__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btBU_Simplex1to4__getAabbNonVirtual_p3"];
var _emscripten_bind_btRaycastVehicle__btRaycastVehicle_p3 = Module["_emscripten_bind_btRaycastVehicle__btRaycastVehicle_p3"] = asm["_emscripten_bind_btRaycastVehicle__btRaycastVehicle_p3"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__hasHit_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__hasHit_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__hasHit_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__getOptimizedBvh_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getOptimizedBvh_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getOptimizedBvh_p0"];
var _emscripten_bind_btUniversalConstraint__getUserConstraintPtr_p0 = Module["_emscripten_bind_btUniversalConstraint__getUserConstraintPtr_p0"] = asm["_emscripten_bind_btUniversalConstraint__getUserConstraintPtr_p0"];
var _emscripten_bind_btTypedConstraint__buildJacobian_p0 = Module["_emscripten_bind_btTypedConstraint__buildJacobian_p0"] = asm["_emscripten_bind_btTypedConstraint__buildJacobian_p0"];
var _emscripten_bind_btCollisionWorld__ContactResultCallback__set_m_collisionFilterMask_p1 = Module["_emscripten_bind_btCollisionWorld__ContactResultCallback__set_m_collisionFilterMask_p1"] = asm["_emscripten_bind_btCollisionWorld__ContactResultCallback__set_m_collisionFilterMask_p1"];
var _emscripten_bind_btStaticPlaneShape__setUserPointer_p1 = Module["_emscripten_bind_btStaticPlaneShape__setUserPointer_p1"] = asm["_emscripten_bind_btStaticPlaneShape__setUserPointer_p1"];
var _emscripten_bind_btVector4__y_p0 = Module["_emscripten_bind_btVector4__y_p0"] = asm["_emscripten_bind_btVector4__y_p0"];
var _emscripten_bind_btHinge2Constraint__getUserConstraintType_p0 = Module["_emscripten_bind_btHinge2Constraint__getUserConstraintType_p0"] = asm["_emscripten_bind_btHinge2Constraint__getUserConstraintType_p0"];
var _emscripten_bind_btCapsuleShape__setMargin_p1 = Module["_emscripten_bind_btCapsuleShape__setMargin_p1"] = asm["_emscripten_bind_btCapsuleShape__setMargin_p1"];
var _emscripten_bind_btRigidBody__getInterpolationLinearVelocity_p0 = Module["_emscripten_bind_btRigidBody__getInterpolationLinearVelocity_p0"] = asm["_emscripten_bind_btRigidBody__getInterpolationLinearVelocity_p0"];
var _emscripten_bind_btPoint2PointConstraint__set_m_objectType_p1 = Module["_emscripten_bind_btPoint2PointConstraint__set_m_objectType_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__set_m_objectType_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__get_m_objectType_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__get_m_objectType_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__get_m_objectType_p0"];
var _emscripten_bind_btConeShapeZ__calculateLocalInertia_p2 = Module["_emscripten_bind_btConeShapeZ__calculateLocalInertia_p2"] = asm["_emscripten_bind_btConeShapeZ__calculateLocalInertia_p2"];
var _emscripten_bind_btConvexHullShape__getAabbSlow_p3 = Module["_emscripten_bind_btConvexHullShape__getAabbSlow_p3"] = asm["_emscripten_bind_btConvexHullShape__getAabbSlow_p3"];
var _emscripten_bind_btConeTwistConstraint__getInfo1NonVirtual_p1 = Module["_emscripten_bind_btConeTwistConstraint__getInfo1NonVirtual_p1"] = asm["_emscripten_bind_btConeTwistConstraint__getInfo1NonVirtual_p1"];
var _emscripten_bind_btIndexedMesh__set_m_vertexStride_p1 = Module["_emscripten_bind_btIndexedMesh__set_m_vertexStride_p1"] = asm["_emscripten_bind_btIndexedMesh__set_m_vertexStride_p1"];
var _emscripten_bind_btCollisionWorld__updateAabbs_p0 = Module["_emscripten_bind_btCollisionWorld__updateAabbs_p0"] = asm["_emscripten_bind_btCollisionWorld__updateAabbs_p0"];
var _emscripten_bind_btGeneric6DofConstraint__setLinearLowerLimit_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setLinearLowerLimit_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setLinearLowerLimit_p1"];
var _emscripten_bind_btDbvtBroadphase__printStats_p0 = Module["_emscripten_bind_btDbvtBroadphase__printStats_p0"] = asm["_emscripten_bind_btDbvtBroadphase__printStats_p0"];
var _emscripten_bind_btPersistentManifold__getBody0_p0 = Module["_emscripten_bind_btPersistentManifold__getBody0_p0"] = asm["_emscripten_bind_btPersistentManifold__getBody0_p0"];
var _emscripten_bind_btConeShape__getShapeType_p0 = Module["_emscripten_bind_btConeShape__getShapeType_p0"] = asm["_emscripten_bind_btConeShape__getShapeType_p0"];
var _emscripten_bind_btEmptyShape__isNonMoving_p0 = Module["_emscripten_bind_btEmptyShape__isNonMoving_p0"] = asm["_emscripten_bind_btEmptyShape__isNonMoving_p0"];
var _emscripten_bind_btQuadWord__setW_p1 = Module["_emscripten_bind_btQuadWord__setW_p1"] = asm["_emscripten_bind_btQuadWord__setW_p1"];
var _emscripten_bind_btSimpleBroadphaseProxy__get_m_collisionFilterGroup_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__get_m_collisionFilterGroup_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__get_m_collisionFilterGroup_p0"];
var _emscripten_bind_btHinge2Constraint__getFrameOffsetB_p0 = Module["_emscripten_bind_btHinge2Constraint__getFrameOffsetB_p0"] = asm["_emscripten_bind_btHinge2Constraint__getFrameOffsetB_p0"];
var _emscripten_bind_btAxisSweep3__setOverlappingPairUserCallback_p1 = Module["_emscripten_bind_btAxisSweep3__setOverlappingPairUserCallback_p1"] = asm["_emscripten_bind_btAxisSweep3__setOverlappingPairUserCallback_p1"];
var _emscripten_bind_btAxisSweep3__aabbTest_p3 = Module["_emscripten_bind_btAxisSweep3__aabbTest_p3"] = asm["_emscripten_bind_btAxisSweep3__aabbTest_p3"];
var _emscripten_bind_btDefaultVehicleRaycaster__btDefaultVehicleRaycaster_p1 = Module["_emscripten_bind_btDefaultVehicleRaycaster__btDefaultVehicleRaycaster_p1"] = asm["_emscripten_bind_btDefaultVehicleRaycaster__btDefaultVehicleRaycaster_p1"];
var _emscripten_bind_btSliderConstraint__setSoftnessDirAng_p1 = Module["_emscripten_bind_btSliderConstraint__setSoftnessDirAng_p1"] = asm["_emscripten_bind_btSliderConstraint__setSoftnessDirAng_p1"];
var _emscripten_bind_btGhostObject__serializeSingleObject_p1 = Module["_emscripten_bind_btGhostObject__serializeSingleObject_p1"] = asm["_emscripten_bind_btGhostObject__serializeSingleObject_p1"];
var _emscripten_bind_btCylinderShapeZ__getHalfExtentsWithMargin_p0 = Module["_emscripten_bind_btCylinderShapeZ__getHalfExtentsWithMargin_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getHalfExtentsWithMargin_p0"];
var _emscripten_bind_btGhostObject__setRestitution_p1 = Module["_emscripten_bind_btGhostObject__setRestitution_p1"] = asm["_emscripten_bind_btGhostObject__setRestitution_p1"];
var _emscripten_bind_btContactConstraint__getRigidBodyA_p0 = Module["_emscripten_bind_btContactConstraint__getRigidBodyA_p0"] = asm["_emscripten_bind_btContactConstraint__getRigidBodyA_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__updateAabbs_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__updateAabbs_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__updateAabbs_p0"];
var _emscripten_bind_btConcaveShape__isNonMoving_p0 = Module["_emscripten_bind_btConcaveShape__isNonMoving_p0"] = asm["_emscripten_bind_btConcaveShape__isNonMoving_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__getDispatcher_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getDispatcher_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getDispatcher_p0"];
var _emscripten_bind_btCapsuleShapeX__getMarginNV_p0 = Module["_emscripten_bind_btCapsuleShapeX__getMarginNV_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getMarginNV_p0"];
var _emscripten_bind_btPersistentManifold__get_m_companionIdA_p0 = Module["_emscripten_bind_btPersistentManifold__get_m_companionIdA_p0"] = asm["_emscripten_bind_btPersistentManifold__get_m_companionIdA_p0"];
var _emscripten_bind_btWheelInfo__set_m_wheelsDampingCompression_p1 = Module["_emscripten_bind_btWheelInfo__set_m_wheelsDampingCompression_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_wheelsDampingCompression_p1"];
var _emscripten_bind_btWheelInfo__updateWheel_p2 = Module["_emscripten_bind_btWheelInfo__updateWheel_p2"] = asm["_emscripten_bind_btWheelInfo__updateWheel_p2"];
var _emscripten_bind_btDynamicsWorld__addConstraint_p2 = Module["_emscripten_bind_btDynamicsWorld__addConstraint_p2"] = asm["_emscripten_bind_btDynamicsWorld__addConstraint_p2"];
var _emscripten_bind_btDynamicsWorld__addConstraint_p1 = Module["_emscripten_bind_btDynamicsWorld__addConstraint_p1"] = asm["_emscripten_bind_btDynamicsWorld__addConstraint_p1"];
var _emscripten_bind_btRigidBody__getTurnVelocity_p0 = Module["_emscripten_bind_btRigidBody__getTurnVelocity_p0"] = asm["_emscripten_bind_btRigidBody__getTurnVelocity_p0"];
var _emscripten_bind_btTypedConstraint__setUserConstraintId_p1 = Module["_emscripten_bind_btTypedConstraint__setUserConstraintId_p1"] = asm["_emscripten_bind_btTypedConstraint__setUserConstraintId_p1"];
var _emscripten_bind_btBU_Simplex1to4__getNumPlanes_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getNumPlanes_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getNumPlanes_p0"];
var _emscripten_bind_btCylinderShape__getUpAxis_p0 = Module["_emscripten_bind_btCylinderShape__getUpAxis_p0"] = asm["_emscripten_bind_btCylinderShape__getUpAxis_p0"];
var _emscripten_bind_btManifoldPoint__set_m_contactMotion1_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_contactMotion1_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_contactMotion1_p1"];
var _emscripten_bind_btDbvtBroadphase__getAabb_p3 = Module["_emscripten_bind_btDbvtBroadphase__getAabb_p3"] = asm["_emscripten_bind_btDbvtBroadphase__getAabb_p3"];
var _emscripten_bind_btSphereShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btSphereShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btSphereShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback____destroy___p0 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback____destroy___p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback____destroy___p0"];
var _emscripten_bind_btBroadphaseInterface__printStats_p0 = Module["_emscripten_bind_btBroadphaseInterface__printStats_p0"] = asm["_emscripten_bind_btBroadphaseInterface__printStats_p0"];
var _emscripten_bind_btHashInt__setUid1_p1 = Module["_emscripten_bind_btHashInt__setUid1_p1"] = asm["_emscripten_bind_btHashInt__setUid1_p1"];
var _emscripten_bind_btConvexInternalAabbCachingShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btRigidBody__setCollisionFlags_p1 = Module["_emscripten_bind_btRigidBody__setCollisionFlags_p1"] = asm["_emscripten_bind_btRigidBody__setCollisionFlags_p1"];
var _emscripten_bind_btGhostObject__hasContactResponse_p0 = Module["_emscripten_bind_btGhostObject__hasContactResponse_p0"] = asm["_emscripten_bind_btGhostObject__hasContactResponse_p0"];
var _emscripten_bind_btDefaultVehicleRaycaster__castRay_p3 = Module["_emscripten_bind_btDefaultVehicleRaycaster__castRay_p3"] = asm["_emscripten_bind_btDefaultVehicleRaycaster__castRay_p3"];
var _emscripten_bind_btSliderConstraint__getUseFrameOffset_p0 = Module["_emscripten_bind_btSliderConstraint__getUseFrameOffset_p0"] = asm["_emscripten_bind_btSliderConstraint__getUseFrameOffset_p0"];
var _emscripten_bind_btCollisionObject__getIslandTag_p0 = Module["_emscripten_bind_btCollisionObject__getIslandTag_p0"] = asm["_emscripten_bind_btCollisionObject__getIslandTag_p0"];
var _emscripten_bind_btCollisionShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btCollisionShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btCollisionShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btTranslationalLimitMotor____destroy___p0 = Module["_emscripten_bind_btTranslationalLimitMotor____destroy___p0"] = asm["_emscripten_bind_btTranslationalLimitMotor____destroy___p0"];
var _emscripten_bind_btConcaveShape__isConvex_p0 = Module["_emscripten_bind_btConcaveShape__isConvex_p0"] = asm["_emscripten_bind_btConcaveShape__isConvex_p0"];
var _emscripten_bind_btRotationalLimitMotor__set_m_stopERP_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_stopERP_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_stopERP_p1"];
var _emscripten_bind_btIDebugDraw__drawCone_p5 = Module["_emscripten_bind_btIDebugDraw__drawCone_p5"] = asm["_emscripten_bind_btIDebugDraw__drawCone_p5"];
var _emscripten_bind_btSphereShape__isNonMoving_p0 = Module["_emscripten_bind_btSphereShape__isNonMoving_p0"] = asm["_emscripten_bind_btSphereShape__isNonMoving_p0"];
var _emscripten_bind_btDispatcher__freeCollisionAlgorithm_p1 = Module["_emscripten_bind_btDispatcher__freeCollisionAlgorithm_p1"] = asm["_emscripten_bind_btDispatcher__freeCollisionAlgorithm_p1"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getLocalScaling_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getLocalScaling_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getLocalScaling_p0"];
var _emscripten_bind_btCylinderShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btCylinderShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btCylinderShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btRigidBody__setInterpolationAngularVelocity_p1 = Module["_emscripten_bind_btRigidBody__setInterpolationAngularVelocity_p1"] = asm["_emscripten_bind_btRigidBody__setInterpolationAngularVelocity_p1"];
var _emscripten_bind_btHeightfieldTerrainShape__isSoftBody_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__isSoftBody_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__isSoftBody_p0"];
var _emscripten_bind_btBoxShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btBoxShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btBoxShape__getAabbNonVirtual_p3"];
var _emscripten_bind_btOptimizedBvh__reportBoxCastOverlappingNodex_p5 = Module["_emscripten_bind_btOptimizedBvh__reportBoxCastOverlappingNodex_p5"] = asm["_emscripten_bind_btOptimizedBvh__reportBoxCastOverlappingNodex_p5"];
var _emscripten_bind_btCollisionShape__getAabb_p3 = Module["_emscripten_bind_btCollisionShape__getAabb_p3"] = asm["_emscripten_bind_btCollisionShape__getAabb_p3"];
var _emscripten_bind_btCapsuleShape____destroy___p0 = Module["_emscripten_bind_btCapsuleShape____destroy___p0"] = asm["_emscripten_bind_btCapsuleShape____destroy___p0"];
var _emscripten_bind_btDynamicsWorld__removeRigidBody_p1 = Module["_emscripten_bind_btDynamicsWorld__removeRigidBody_p1"] = asm["_emscripten_bind_btDynamicsWorld__removeRigidBody_p1"];
var _emscripten_bind_btHashInt__equals_p1 = Module["_emscripten_bind_btHashInt__equals_p1"] = asm["_emscripten_bind_btHashInt__equals_p1"];
var _emscripten_bind_btCapsuleShape__isCompound_p0 = Module["_emscripten_bind_btCapsuleShape__isCompound_p0"] = asm["_emscripten_bind_btCapsuleShape__isCompound_p0"];
var _emscripten_bind_btTransform__setIdentity_p0 = Module["_emscripten_bind_btTransform__setIdentity_p0"] = asm["_emscripten_bind_btTransform__setIdentity_p0"];
var _emscripten_bind_btRigidBody__getCollisionFlags_p0 = Module["_emscripten_bind_btRigidBody__getCollisionFlags_p0"] = asm["_emscripten_bind_btRigidBody__getCollisionFlags_p0"];
var _emscripten_bind_btRigidBody__getRootCollisionShape_p0 = Module["_emscripten_bind_btRigidBody__getRootCollisionShape_p0"] = asm["_emscripten_bind_btRigidBody__getRootCollisionShape_p0"];
var _emscripten_bind_btBU_Simplex1to4__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btBU_Simplex1to4__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_btCylinderShapeX__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btCylinderShapeX__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btCylinderShapeX__getContactBreakingThreshold_p1"];
var _emscripten_bind_btRigidBody__setLinearVelocity_p1 = Module["_emscripten_bind_btRigidBody__setLinearVelocity_p1"] = asm["_emscripten_bind_btRigidBody__setLinearVelocity_p1"];
var _emscripten_bind_btTransform__getBasis_p0 = Module["_emscripten_bind_btTransform__getBasis_p0"] = asm["_emscripten_bind_btTransform__getBasis_p0"];
var _emscripten_bind_btMatrix3x3__setEulerZYX_p3 = Module["_emscripten_bind_btMatrix3x3__setEulerZYX_p3"] = asm["_emscripten_bind_btMatrix3x3__setEulerZYX_p3"];
var _emscripten_bind_btDbvtBroadphase__get_m_needcleanup_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_needcleanup_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_needcleanup_p0"];
var _emscripten_bind_btTriangleMesh__preallocateVertices_p1 = Module["_emscripten_bind_btTriangleMesh__preallocateVertices_p1"] = asm["_emscripten_bind_btTriangleMesh__preallocateVertices_p1"];
var _emscripten_bind_btManifoldPoint__set_m_index0_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_index0_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_index0_p1"];
var _emscripten_bind_btSimpleDynamicsWorld__getSolverInfo_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getSolverInfo_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getSolverInfo_p0"];
var _emscripten_bind_btUniformScalingShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btUniformScalingShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btUniformScalingShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btDbvtProxy__set_m_aabbMin_p1 = Module["_emscripten_bind_btDbvtProxy__set_m_aabbMin_p1"] = asm["_emscripten_bind_btDbvtProxy__set_m_aabbMin_p1"];
var _emscripten_bind_btRigidBody__getInvInertiaDiagLocal_p0 = Module["_emscripten_bind_btRigidBody__getInvInertiaDiagLocal_p0"] = asm["_emscripten_bind_btRigidBody__getInvInertiaDiagLocal_p0"];
var _emscripten_bind_btVector3__distance2_p1 = Module["_emscripten_bind_btVector3__distance2_p1"] = asm["_emscripten_bind_btVector3__distance2_p1"];
var _emscripten_bind_btCylinderShapeZ__getMarginNonVirtual_p0 = Module["_emscripten_bind_btCylinderShapeZ__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getMarginNonVirtual_p0"];
var _emscripten_bind_btBU_Simplex1to4__getLocalScaling_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getLocalScaling_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getLocalScaling_p0"];
var _emscripten_bind_btSliderConstraint__setRestitutionDirAng_p1 = Module["_emscripten_bind_btSliderConstraint__setRestitutionDirAng_p1"] = asm["_emscripten_bind_btSliderConstraint__setRestitutionDirAng_p1"];
var _emscripten_bind_btBvhTriangleMeshShape__buildOptimizedBvh_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__buildOptimizedBvh_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__buildOptimizedBvh_p0"];
var _emscripten_bind_btConeShapeX__getBoundingSphere_p2 = Module["_emscripten_bind_btConeShapeX__getBoundingSphere_p2"] = asm["_emscripten_bind_btConeShapeX__getBoundingSphere_p2"];
var _emscripten_bind_bt32BitAxisSweep3__testAabbOverlap_p2 = Module["_emscripten_bind_bt32BitAxisSweep3__testAabbOverlap_p2"] = asm["_emscripten_bind_bt32BitAxisSweep3__testAabbOverlap_p2"];
var _emscripten_bind_btContinuousDynamicsWorld__performDiscreteCollisionDetection_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__performDiscreteCollisionDetection_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__performDiscreteCollisionDetection_p0"];
var _emscripten_bind_btSimpleBroadphaseProxy__set_m_aabbMin_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__set_m_aabbMin_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__set_m_aabbMin_p1"];
var _emscripten_bind_btAngularLimit__set_p5 = Module["_emscripten_bind_btAngularLimit__set_p5"] = asm["_emscripten_bind_btAngularLimit__set_p5"];
var _emscripten_bind_btAngularLimit__set_p4 = Module["_emscripten_bind_btAngularLimit__set_p4"] = asm["_emscripten_bind_btAngularLimit__set_p4"];
var _emscripten_bind_btAngularLimit__set_p3 = Module["_emscripten_bind_btAngularLimit__set_p3"] = asm["_emscripten_bind_btAngularLimit__set_p3"];
var _emscripten_bind_btAngularLimit__set_p2 = Module["_emscripten_bind_btAngularLimit__set_p2"] = asm["_emscripten_bind_btAngularLimit__set_p2"];
var _emscripten_bind_btBroadphaseProxy__isConvex2d_p1 = Module["_emscripten_bind_btBroadphaseProxy__isConvex2d_p1"] = asm["_emscripten_bind_btBroadphaseProxy__isConvex2d_p1"];
var _emscripten_bind_btQuantizedBvh__setTraversalMode_p1 = Module["_emscripten_bind_btQuantizedBvh__setTraversalMode_p1"] = asm["_emscripten_bind_btQuantizedBvh__setTraversalMode_p1"];
var _emscripten_bind_btRotationalLimitMotor__get_m_maxLimitForce_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_maxLimitForce_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_maxLimitForce_p0"];
var _emscripten_bind_btCollisionWorld____destroy___p0 = Module["_emscripten_bind_btCollisionWorld____destroy___p0"] = asm["_emscripten_bind_btCollisionWorld____destroy___p0"];
var _emscripten_bind_btTriangleIndexVertexArray__serialize_p2 = Module["_emscripten_bind_btTriangleIndexVertexArray__serialize_p2"] = asm["_emscripten_bind_btTriangleIndexVertexArray__serialize_p2"];
var _emscripten_bind_btEmptyShape__isConvex2d_p0 = Module["_emscripten_bind_btEmptyShape__isConvex2d_p0"] = asm["_emscripten_bind_btEmptyShape__isConvex2d_p0"];
var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_closestHitFraction_p0 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_closestHitFraction_p0"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_closestHitFraction_p0"];
var _emscripten_bind_btCompoundShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btCompoundShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btCompoundShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btClock__getTimeMilliseconds_p0 = Module["_emscripten_bind_btClock__getTimeMilliseconds_p0"] = asm["_emscripten_bind_btClock__getTimeMilliseconds_p0"];
var _emscripten_bind_btGeneric6DofConstraint__getConstraintType_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getConstraintType_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getConstraintType_p0"];
var _emscripten_bind_btRigidBody__getBroadphaseProxy_p0 = Module["_emscripten_bind_btRigidBody__getBroadphaseProxy_p0"] = asm["_emscripten_bind_btRigidBody__getBroadphaseProxy_p0"];
var _emscripten_bind_bt32BitAxisSweep3__setOverlappingPairUserCallback_p1 = Module["_emscripten_bind_bt32BitAxisSweep3__setOverlappingPairUserCallback_p1"] = asm["_emscripten_bind_bt32BitAxisSweep3__setOverlappingPairUserCallback_p1"];
var _emscripten_bind_btPairCachingGhostObject__getBroadphaseHandle_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getBroadphaseHandle_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getBroadphaseHandle_p0"];
var _emscripten_bind_btRigidBody__clearForces_p0 = Module["_emscripten_bind_btRigidBody__clearForces_p0"] = asm["_emscripten_bind_btRigidBody__clearForces_p0"];
var _emscripten_bind_btRigidBody__getCollisionShape_p0 = Module["_emscripten_bind_btRigidBody__getCollisionShape_p0"] = asm["_emscripten_bind_btRigidBody__getCollisionShape_p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalDampingFactor_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalDampingFactor_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalDampingFactor_p1"];
var _emscripten_bind_btPolyhedralConvexShape__isNonMoving_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__isNonMoving_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__isNonMoving_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getFrameOffsetB_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getFrameOffsetB_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getFrameOffsetB_p0"];
var _emscripten_bind_btSliderConstraint__getDampingDirAng_p0 = Module["_emscripten_bind_btSliderConstraint__getDampingDirAng_p0"] = asm["_emscripten_bind_btSliderConstraint__getDampingDirAng_p0"];
var _emscripten_bind_btBroadphaseInterface__calculateOverlappingPairs_p1 = Module["_emscripten_bind_btBroadphaseInterface__calculateOverlappingPairs_p1"] = asm["_emscripten_bind_btBroadphaseInterface__calculateOverlappingPairs_p1"];
var _emscripten_bind_btConvexInternalAabbCachingShape__getBoundingSphere_p2 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getBoundingSphere_p2"];
var _emscripten_bind_btCollisionWorld__ContactResultCallback__addSingleResult_p7 = Module["_emscripten_bind_btCollisionWorld__ContactResultCallback__addSingleResult_p7"] = asm["_emscripten_bind_btCollisionWorld__ContactResultCallback__addSingleResult_p7"];
var _emscripten_bind_btUniversalConstraint____destroy___p0 = Module["_emscripten_bind_btUniversalConstraint____destroy___p0"] = asm["_emscripten_bind_btUniversalConstraint____destroy___p0"];
var _emscripten_bind_btCylinderShapeZ__setUserPointer_p1 = Module["_emscripten_bind_btCylinderShapeZ__setUserPointer_p1"] = asm["_emscripten_bind_btCylinderShapeZ__setUserPointer_p1"];
var _emscripten_bind_btHingeConstraint__getUserConstraintId_p0 = Module["_emscripten_bind_btHingeConstraint__getUserConstraintId_p0"] = asm["_emscripten_bind_btHingeConstraint__getUserConstraintId_p0"];
var _emscripten_bind_btHingeConstraint__getFrameOffsetB_p0 = Module["_emscripten_bind_btHingeConstraint__getFrameOffsetB_p0"] = asm["_emscripten_bind_btHingeConstraint__getFrameOffsetB_p0"];
var _emscripten_bind_btHingeConstraint__setBreakingImpulseThreshold_p1 = Module["_emscripten_bind_btHingeConstraint__setBreakingImpulseThreshold_p1"] = asm["_emscripten_bind_btHingeConstraint__setBreakingImpulseThreshold_p1"];
var _emscripten_bind_btPoint2PointConstraint__needsFeedback_p0 = Module["_emscripten_bind_btPoint2PointConstraint__needsFeedback_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__needsFeedback_p0"];
var _emscripten_bind_btUniformScalingShape__getAabbSlow_p3 = Module["_emscripten_bind_btUniformScalingShape__getAabbSlow_p3"] = asm["_emscripten_bind_btUniformScalingShape__getAabbSlow_p3"];
var _emscripten_bind_btSphereShape__getUserPointer_p0 = Module["_emscripten_bind_btSphereShape__getUserPointer_p0"] = asm["_emscripten_bind_btSphereShape__getUserPointer_p0"];
var _emscripten_bind_btRaycastVehicle__updateSuspension_p1 = Module["_emscripten_bind_btRaycastVehicle__updateSuspension_p1"] = asm["_emscripten_bind_btRaycastVehicle__updateSuspension_p1"];
var _emscripten_bind_btCylinderShapeX__getShapeType_p0 = Module["_emscripten_bind_btCylinderShapeX__getShapeType_p0"] = asm["_emscripten_bind_btCylinderShapeX__getShapeType_p0"];
var _emscripten_bind_btSliderConstraint__getUpperAngLimit_p0 = Module["_emscripten_bind_btSliderConstraint__getUpperAngLimit_p0"] = asm["_emscripten_bind_btSliderConstraint__getUpperAngLimit_p0"];
var _emscripten_bind_btManifoldResult__addContactPoint_p3 = Module["_emscripten_bind_btManifoldResult__addContactPoint_p3"] = asm["_emscripten_bind_btManifoldResult__addContactPoint_p3"];
var _emscripten_bind_bt32BitAxisSweep3__rayTest_p5 = Module["_emscripten_bind_bt32BitAxisSweep3__rayTest_p5"] = asm["_emscripten_bind_bt32BitAxisSweep3__rayTest_p5"];
var _emscripten_bind_bt32BitAxisSweep3__rayTest_p4 = Module["_emscripten_bind_bt32BitAxisSweep3__rayTest_p4"] = asm["_emscripten_bind_bt32BitAxisSweep3__rayTest_p4"];
var _emscripten_bind_btHingeConstraint__getLimitSign_p0 = Module["_emscripten_bind_btHingeConstraint__getLimitSign_p0"] = asm["_emscripten_bind_btHingeConstraint__getLimitSign_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getVertex_p2 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getVertex_p2"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getVertex_p2"];
var _emscripten_bind_btConvexTriangleMeshShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btWheelInfo__btWheelInfo_p1 = Module["_emscripten_bind_btWheelInfo__btWheelInfo_p1"] = asm["_emscripten_bind_btWheelInfo__btWheelInfo_p1"];
var _emscripten_bind_btMultiSphereShape__isConcave_p0 = Module["_emscripten_bind_btMultiSphereShape__isConcave_p0"] = asm["_emscripten_bind_btMultiSphereShape__isConcave_p0"];
var _emscripten_bind_btWheelInfo__get_m_wheelsSuspensionForce_p0 = Module["_emscripten_bind_btWheelInfo__get_m_wheelsSuspensionForce_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_wheelsSuspensionForce_p0"];
var _emscripten_bind_btTriangleMesh__getIndexedMeshArray_p0 = Module["_emscripten_bind_btTriangleMesh__getIndexedMeshArray_p0"] = asm["_emscripten_bind_btTriangleMesh__getIndexedMeshArray_p0"];
var _emscripten_bind_btCapsuleShape__getName_p0 = Module["_emscripten_bind_btCapsuleShape__getName_p0"] = asm["_emscripten_bind_btCapsuleShape__getName_p0"];
var _emscripten_bind_btCapsuleShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btCapsuleShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btCapsuleShape__getLocalScalingNV_p0"];
var _emscripten_bind_btMatrix3x3__getEulerYPR_p3 = Module["_emscripten_bind_btMatrix3x3__getEulerYPR_p3"] = asm["_emscripten_bind_btMatrix3x3__getEulerYPR_p3"];
var _emscripten_bind_btRaycastVehicle__setUserConstraintId_p1 = Module["_emscripten_bind_btRaycastVehicle__setUserConstraintId_p1"] = asm["_emscripten_bind_btRaycastVehicle__setUserConstraintId_p1"];
var _emscripten_bind_btHinge2Constraint__getUserConstraintPtr_p0 = Module["_emscripten_bind_btHinge2Constraint__getUserConstraintPtr_p0"] = asm["_emscripten_bind_btHinge2Constraint__getUserConstraintPtr_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__getCollisionWorld_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getCollisionWorld_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getCollisionWorld_p0"];
var _emscripten_bind_btWheelInfo__get_m_worldTransform_p0 = Module["_emscripten_bind_btWheelInfo__get_m_worldTransform_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_worldTransform_p0"];
var _emscripten_bind_btGeneric6DofConstraint__getCalculatedTransformB_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getCalculatedTransformB_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getCalculatedTransformB_p0"];
var _emscripten_bind_btHinge2Constraint__getBreakingImpulseThreshold_p0 = Module["_emscripten_bind_btHinge2Constraint__getBreakingImpulseThreshold_p0"] = asm["_emscripten_bind_btHinge2Constraint__getBreakingImpulseThreshold_p0"];
var _emscripten_bind_btPersistentManifold__getContactBreakingThreshold_p0 = Module["_emscripten_bind_btPersistentManifold__getContactBreakingThreshold_p0"] = asm["_emscripten_bind_btPersistentManifold__getContactBreakingThreshold_p0"];
var _emscripten_bind_btManifoldPoint__get_m_appliedImpulseLateral2_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_appliedImpulseLateral2_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_appliedImpulseLateral2_p0"];
var _emscripten_bind_btBoxShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btBoxShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btBoxShape__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btCompoundShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btCompoundShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btCompoundShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btDbvtBroadphase__set_m_updates_call_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_updates_call_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_updates_call_p1"];
var _emscripten_bind_btRaycastVehicle__updateWheelTransform_p2 = Module["_emscripten_bind_btRaycastVehicle__updateWheelTransform_p2"] = asm["_emscripten_bind_btRaycastVehicle__updateWheelTransform_p2"];
var _emscripten_bind_btSliderConstraint__setUpperLinLimit_p1 = Module["_emscripten_bind_btSliderConstraint__setUpperLinLimit_p1"] = asm["_emscripten_bind_btSliderConstraint__setUpperLinLimit_p1"];
var _emscripten_bind_btCollisionWorld__rayTestSingle_p6 = Module["_emscripten_bind_btCollisionWorld__rayTestSingle_p6"] = asm["_emscripten_bind_btCollisionWorld__rayTestSingle_p6"];
var _emscripten_bind_btSliderConstraint__get_m_objectType_p0 = Module["_emscripten_bind_btSliderConstraint__get_m_objectType_p0"] = asm["_emscripten_bind_btSliderConstraint__get_m_objectType_p0"];
var _emscripten_bind_btMatrix3x3__serializeFloat_p1 = Module["_emscripten_bind_btMatrix3x3__serializeFloat_p1"] = asm["_emscripten_bind_btMatrix3x3__serializeFloat_p1"];
var _emscripten_bind_btSliderConstraint__getLowerAngLimit_p0 = Module["_emscripten_bind_btSliderConstraint__getLowerAngLimit_p0"] = asm["_emscripten_bind_btSliderConstraint__getLowerAngLimit_p0"];
var _emscripten_bind_btSimpleBroadphaseProxy__get_m_uniqueId_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__get_m_uniqueId_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__get_m_uniqueId_p0"];
var _emscripten_bind_btConeShapeZ__isNonMoving_p0 = Module["_emscripten_bind_btConeShapeZ__isNonMoving_p0"] = asm["_emscripten_bind_btConeShapeZ__isNonMoving_p0"];
var _emscripten_bind_btSliderConstraint__btSliderConstraint_p3 = Module["_emscripten_bind_btSliderConstraint__btSliderConstraint_p3"] = asm["_emscripten_bind_btSliderConstraint__btSliderConstraint_p3"];
var _emscripten_bind_btConeTwistConstraint__getTwistSpan_p0 = Module["_emscripten_bind_btConeTwistConstraint__getTwistSpan_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getTwistSpan_p0"];
var _emscripten_bind_btRigidBody__set_m_frictionSolverType_p1 = Module["_emscripten_bind_btRigidBody__set_m_frictionSolverType_p1"] = asm["_emscripten_bind_btRigidBody__set_m_frictionSolverType_p1"];
var _emscripten_bind_btConvexHullShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btConvexHullShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btConvexHullShape__calculateLocalInertia_p2"];
var _emscripten_bind_btCollisionDispatcher__findAlgorithm_p2 = Module["_emscripten_bind_btCollisionDispatcher__findAlgorithm_p2"] = asm["_emscripten_bind_btCollisionDispatcher__findAlgorithm_p2"];
var _emscripten_bind_btCollisionDispatcher__findAlgorithm_p3 = Module["_emscripten_bind_btCollisionDispatcher__findAlgorithm_p3"] = asm["_emscripten_bind_btCollisionDispatcher__findAlgorithm_p3"];
var _emscripten_bind_btEmptyShape__setUserPointer_p1 = Module["_emscripten_bind_btEmptyShape__setUserPointer_p1"] = asm["_emscripten_bind_btEmptyShape__setUserPointer_p1"];
var _emscripten_bind_btConcaveShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btConcaveShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btConcaveShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btConcaveShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btConcaveShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btConcaveShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btDynamicsWorld__stepSimulation_p3 = Module["_emscripten_bind_btDynamicsWorld__stepSimulation_p3"] = asm["_emscripten_bind_btDynamicsWorld__stepSimulation_p3"];
var _emscripten_bind_btDynamicsWorld__stepSimulation_p2 = Module["_emscripten_bind_btDynamicsWorld__stepSimulation_p2"] = asm["_emscripten_bind_btDynamicsWorld__stepSimulation_p2"];
var _emscripten_bind_btDynamicsWorld__stepSimulation_p1 = Module["_emscripten_bind_btDynamicsWorld__stepSimulation_p1"] = asm["_emscripten_bind_btDynamicsWorld__stepSimulation_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__setWorldUserInfo_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setWorldUserInfo_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setWorldUserInfo_p1"];
var _emscripten_bind_btSliderConstraint__getRestitutionLimLin_p0 = Module["_emscripten_bind_btSliderConstraint__getRestitutionLimLin_p0"] = asm["_emscripten_bind_btSliderConstraint__getRestitutionLimLin_p0"];
var _emscripten_bind_btOptimizedBvh__serializeInPlace_p3 = Module["_emscripten_bind_btOptimizedBvh__serializeInPlace_p3"] = asm["_emscripten_bind_btOptimizedBvh__serializeInPlace_p3"];
var _emscripten_bind_btBoxShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btBoxShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btBoxShape__getLocalScalingNV_p0"];
var _emscripten_bind_btContactConstraint__setUserConstraintPtr_p1 = Module["_emscripten_bind_btContactConstraint__setUserConstraintPtr_p1"] = asm["_emscripten_bind_btContactConstraint__setUserConstraintPtr_p1"];
var _emscripten_bind_btUniversalConstraint__getTranslationalLimitMotor_p0 = Module["_emscripten_bind_btUniversalConstraint__getTranslationalLimitMotor_p0"] = asm["_emscripten_bind_btUniversalConstraint__getTranslationalLimitMotor_p0"];
var _emscripten_bind_btHingeConstraint__getUserConstraintType_p0 = Module["_emscripten_bind_btHingeConstraint__getUserConstraintType_p0"] = asm["_emscripten_bind_btHingeConstraint__getUserConstraintType_p0"];
var _emscripten_bind_btDbvtBroadphase__getOverlappingPairCache_p0 = Module["_emscripten_bind_btDbvtBroadphase__getOverlappingPairCache_p0"] = asm["_emscripten_bind_btDbvtBroadphase__getOverlappingPairCache_p0"];
var _emscripten_bind_btBoxShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btBoxShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btBoxShape__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btHeightfieldTerrainShape__btHeightfieldTerrainShape_p9 = Module["_emscripten_bind_btHeightfieldTerrainShape__btHeightfieldTerrainShape_p9"] = asm["_emscripten_bind_btHeightfieldTerrainShape__btHeightfieldTerrainShape_p9"];
var _emscripten_bind_btSliderConstraint__getCalculatedTransformB_p0 = Module["_emscripten_bind_btSliderConstraint__getCalculatedTransformB_p0"] = asm["_emscripten_bind_btSliderConstraint__getCalculatedTransformB_p0"];
var _emscripten_bind_btIDebugDraw__drawArc_p10 = Module["_emscripten_bind_btIDebugDraw__drawArc_p10"] = asm["_emscripten_bind_btIDebugDraw__drawArc_p10"];
var _emscripten_bind_btEmptyShape__getMargin_p0 = Module["_emscripten_bind_btEmptyShape__getMargin_p0"] = asm["_emscripten_bind_btEmptyShape__getMargin_p0"];
var _emscripten_bind_btCollisionDispatcher__freeCollisionAlgorithm_p1 = Module["_emscripten_bind_btCollisionDispatcher__freeCollisionAlgorithm_p1"] = asm["_emscripten_bind_btCollisionDispatcher__freeCollisionAlgorithm_p1"];
var _emscripten_bind_btHinge2Constraint__internalSetAppliedImpulse_p1 = Module["_emscripten_bind_btHinge2Constraint__internalSetAppliedImpulse_p1"] = asm["_emscripten_bind_btHinge2Constraint__internalSetAppliedImpulse_p1"];
var _emscripten_bind_btCapsuleShapeZ__isCompound_p0 = Module["_emscripten_bind_btCapsuleShapeZ__isCompound_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__isCompound_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__internalSingleStepSimulation_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__internalSingleStepSimulation_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__internalSingleStepSimulation_p1"];
var _emscripten_bind_btTranslationalLimitMotor__set_m_restitution_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_restitution_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_restitution_p1"];
var _emscripten_bind_btUniversalConstraint__setEnabled_p1 = Module["_emscripten_bind_btUniversalConstraint__setEnabled_p1"] = asm["_emscripten_bind_btUniversalConstraint__setEnabled_p1"];
var _emscripten_bind_btBoxShape__getAabbSlow_p3 = Module["_emscripten_bind_btBoxShape__getAabbSlow_p3"] = asm["_emscripten_bind_btBoxShape__getAabbSlow_p3"];
var _emscripten_bind_btOverlappingPairCallback__addOverlappingPair_p2 = Module["_emscripten_bind_btOverlappingPairCallback__addOverlappingPair_p2"] = asm["_emscripten_bind_btOverlappingPairCallback__addOverlappingPair_p2"];
var _emscripten_bind_btVector4__setW_p1 = Module["_emscripten_bind_btVector4__setW_p1"] = asm["_emscripten_bind_btVector4__setW_p1"];
var _emscripten_bind_btVector4__setZero_p0 = Module["_emscripten_bind_btVector4__setZero_p0"] = asm["_emscripten_bind_btVector4__setZero_p0"];
var _emscripten_bind_btRigidBody__getDeltaAngularVelocity_p0 = Module["_emscripten_bind_btRigidBody__getDeltaAngularVelocity_p0"] = asm["_emscripten_bind_btRigidBody__getDeltaAngularVelocity_p0"];
var _emscripten_bind_btConeShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btConeShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btConeShape__getAabbNonVirtual_p3"];
var _emscripten_bind_btBroadphasePair____destroy___p0 = Module["_emscripten_bind_btBroadphasePair____destroy___p0"] = asm["_emscripten_bind_btBroadphasePair____destroy___p0"];
var _emscripten_bind_btConeShapeZ__getAabbSlow_p3 = Module["_emscripten_bind_btConeShapeZ__getAabbSlow_p3"] = asm["_emscripten_bind_btConeShapeZ__getAabbSlow_p3"];
var _emscripten_bind_btHeightfieldTerrainShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btDispatcher__dispatchAllCollisionPairs_p3 = Module["_emscripten_bind_btDispatcher__dispatchAllCollisionPairs_p3"] = asm["_emscripten_bind_btDispatcher__dispatchAllCollisionPairs_p3"];
var _emscripten_bind_btConvexInternalShape__isConvex_p0 = Module["_emscripten_bind_btConvexInternalShape__isConvex_p0"] = asm["_emscripten_bind_btConvexInternalShape__isConvex_p0"];
var _emscripten_bind_btConeTwistConstraint__enableMotor_p1 = Module["_emscripten_bind_btConeTwistConstraint__enableMotor_p1"] = asm["_emscripten_bind_btConeTwistConstraint__enableMotor_p1"];
var _emscripten_bind_btCollisionAlgorithmConstructionInfo__btCollisionAlgorithmConstructionInfo_p2 = Module["_emscripten_bind_btCollisionAlgorithmConstructionInfo__btCollisionAlgorithmConstructionInfo_p2"] = asm["_emscripten_bind_btCollisionAlgorithmConstructionInfo__btCollisionAlgorithmConstructionInfo_p2"];
var _emscripten_bind_btDiscreteDynamicsWorld__clearForces_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__clearForces_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__clearForces_p0"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_convexToWorld_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_convexToWorld_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_convexToWorld_p1"];
var _emscripten_bind_btCylinderShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btCylinderShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btCylinderShape__getAabbNonVirtual_p3"];
var _emscripten_bind_btHingeConstraint__getParam_p1 = Module["_emscripten_bind_btHingeConstraint__getParam_p1"] = asm["_emscripten_bind_btHingeConstraint__getParam_p1"];
var _emscripten_bind_btHingeConstraint__getParam_p2 = Module["_emscripten_bind_btHingeConstraint__getParam_p2"] = asm["_emscripten_bind_btHingeConstraint__getParam_p2"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalAngularDampingFactor_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalAngularDampingFactor_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalAngularDampingFactor_p0"];
var _emscripten_bind_btConeShapeZ__getLocalScalingNV_p0 = Module["_emscripten_bind_btConeShapeZ__getLocalScalingNV_p0"] = asm["_emscripten_bind_btConeShapeZ__getLocalScalingNV_p0"];
var _emscripten_bind_btPoint2PointConstraint__get_m_objectType_p0 = Module["_emscripten_bind_btPoint2PointConstraint__get_m_objectType_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__get_m_objectType_p0"];
var _emscripten_bind_btConeTwistConstraint__serialize_p2 = Module["_emscripten_bind_btConeTwistConstraint__serialize_p2"] = asm["_emscripten_bind_btConeTwistConstraint__serialize_p2"];
var _emscripten_bind_btSliderConstraint__setDbgDrawSize_p1 = Module["_emscripten_bind_btSliderConstraint__setDbgDrawSize_p1"] = asm["_emscripten_bind_btSliderConstraint__setDbgDrawSize_p1"];
var _emscripten_bind_btOptimizedBvh__unQuantize_p1 = Module["_emscripten_bind_btOptimizedBvh__unQuantize_p1"] = asm["_emscripten_bind_btOptimizedBvh__unQuantize_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__calcAnchorPos_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__calcAnchorPos_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__calcAnchorPos_p0"];
var _emscripten_bind_btCapsuleShapeZ__getName_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getName_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getName_p0"];
var _emscripten_bind_btCapsuleShape__getAabbSlow_p3 = Module["_emscripten_bind_btCapsuleShape__getAabbSlow_p3"] = asm["_emscripten_bind_btCapsuleShape__getAabbSlow_p3"];
var _emscripten_bind_btSimpleBroadphaseProxy__get_m_collisionFilterMask_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__get_m_collisionFilterMask_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__get_m_collisionFilterMask_p0"];
var _emscripten_bind_btAxisSweep3__removeHandle_p2 = Module["_emscripten_bind_btAxisSweep3__removeHandle_p2"] = asm["_emscripten_bind_btAxisSweep3__removeHandle_p2"];
var _emscripten_bind_btCylinderShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btCylinderShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btCylinderShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btCollisionShape__getMargin_p0 = Module["_emscripten_bind_btCollisionShape__getMargin_p0"] = asm["_emscripten_bind_btCollisionShape__getMargin_p0"];
var _emscripten_bind_btIndexedMesh__get_m_numTriangles_p0 = Module["_emscripten_bind_btIndexedMesh__get_m_numTriangles_p0"] = asm["_emscripten_bind_btIndexedMesh__get_m_numTriangles_p0"];
var _emscripten_bind_btConeTwistConstraint__setMaxMotorImpulseNormalized_p1 = Module["_emscripten_bind_btConeTwistConstraint__setMaxMotorImpulseNormalized_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setMaxMotorImpulseNormalized_p1"];
var _emscripten_bind_btRigidBody__getConstraintRef_p1 = Module["_emscripten_bind_btRigidBody__getConstraintRef_p1"] = asm["_emscripten_bind_btRigidBody__getConstraintRef_p1"];
var _emscripten_bind_btConvexInternalShape__serializeSingleShape_p1 = Module["_emscripten_bind_btConvexInternalShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btConvexInternalShape__serializeSingleShape_p1"];
var _emscripten_bind_btBU_Simplex1to4__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btBU_Simplex1to4__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btBU_Simplex1to4__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btConvexHullShape__isCompound_p0 = Module["_emscripten_bind_btConvexHullShape__isCompound_p0"] = asm["_emscripten_bind_btConvexHullShape__isCompound_p0"];
var _emscripten_bind_btPolyhedralConvexShape__getLocalScaling_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getLocalScaling_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getLocalScaling_p0"];
var _emscripten_bind_btTriangleInfo__set_m_edgeV0V1Angle_p1 = Module["_emscripten_bind_btTriangleInfo__set_m_edgeV0V1Angle_p1"] = asm["_emscripten_bind_btTriangleInfo__set_m_edgeV0V1Angle_p1"];
var _emscripten_bind_btJacobianEntry__set_m_linearJointAxis_p1 = Module["_emscripten_bind_btJacobianEntry__set_m_linearJointAxis_p1"] = asm["_emscripten_bind_btJacobianEntry__set_m_linearJointAxis_p1"];
var _emscripten_bind_btUniformScalingShape__serialize_p2 = Module["_emscripten_bind_btUniformScalingShape__serialize_p2"] = asm["_emscripten_bind_btUniformScalingShape__serialize_p2"];
var _emscripten_bind_btDispatcherInfo__set_m_dispatchFunc_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_dispatchFunc_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_dispatchFunc_p1"];
var _emscripten_bind_btJacobianEntry____destroy___p0 = Module["_emscripten_bind_btJacobianEntry____destroy___p0"] = asm["_emscripten_bind_btJacobianEntry____destroy___p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__synchronizeSingleMotionState_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__synchronizeSingleMotionState_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__synchronizeSingleMotionState_p1"];
var _emscripten_bind_btBvhTriangleMeshShape__isSoftBody_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__isSoftBody_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__isSoftBody_p0"];
var _emscripten_bind_btCollisionShape__getShapeType_p0 = Module["_emscripten_bind_btCollisionShape__getShapeType_p0"] = asm["_emscripten_bind_btCollisionShape__getShapeType_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__getSynchronizeAllMotionStates_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getSynchronizeAllMotionStates_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getSynchronizeAllMotionStates_p0"];
var _emscripten_bind_btBU_Simplex1to4__getEdge_p3 = Module["_emscripten_bind_btBU_Simplex1to4__getEdge_p3"] = asm["_emscripten_bind_btBU_Simplex1to4__getEdge_p3"];
var _emscripten_bind_btPairCachingGhostObject__setCollisionFlags_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setCollisionFlags_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setCollisionFlags_p1"];
var _emscripten_bind_btCollisionWorld__RayResultCallback__hasHit_p0 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__hasHit_p0"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__hasHit_p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_angularDamping_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_angularDamping_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_angularDamping_p0"];
var _emscripten_bind_btQuaternion__setValue_p4 = Module["_emscripten_bind_btQuaternion__setValue_p4"] = asm["_emscripten_bind_btQuaternion__setValue_p4"];
var _emscripten_bind_btCollisionShape__serializeSingleShape_p1 = Module["_emscripten_bind_btCollisionShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btCollisionShape__serializeSingleShape_p1"];
var _emscripten_bind_btRigidBody__set_m_contactSolverType_p1 = Module["_emscripten_bind_btRigidBody__set_m_contactSolverType_p1"] = asm["_emscripten_bind_btRigidBody__set_m_contactSolverType_p1"];
var _emscripten_bind_btContactConstraint__needsFeedback_p0 = Module["_emscripten_bind_btContactConstraint__needsFeedback_p0"] = asm["_emscripten_bind_btContactConstraint__needsFeedback_p0"];
var _emscripten_bind_btAngularLimit__fit_p1 = Module["_emscripten_bind_btAngularLimit__fit_p1"] = asm["_emscripten_bind_btAngularLimit__fit_p1"];
var _emscripten_bind_btSimpleDynamicsWorld__getPairCache_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getPairCache_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getPairCache_p0"];
var _emscripten_bind_btDispatcher__clearManifold_p1 = Module["_emscripten_bind_btDispatcher__clearManifold_p1"] = asm["_emscripten_bind_btDispatcher__clearManifold_p1"];
var _emscripten_bind_btBU_Simplex1to4__setLocalScaling_p1 = Module["_emscripten_bind_btBU_Simplex1to4__setLocalScaling_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__setLocalScaling_p1"];
var _emscripten_bind_btDbvtProxy__set_leaf_p1 = Module["_emscripten_bind_btDbvtProxy__set_leaf_p1"] = asm["_emscripten_bind_btDbvtProxy__set_leaf_p1"];
var _emscripten_bind_btSimpleBroadphaseProxy__isConcave_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__isConcave_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__isConcave_p1"];
var _emscripten_bind_btWheelInfo__get_m_wheelsRadius_p0 = Module["_emscripten_bind_btWheelInfo__get_m_wheelsRadius_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_wheelsRadius_p0"];
var _emscripten_bind_btCompoundShape__getName_p0 = Module["_emscripten_bind_btCompoundShape__getName_p0"] = asm["_emscripten_bind_btCompoundShape__getName_p0"];
var _emscripten_bind_btCollisionObject__getCollisionShape_p0 = Module["_emscripten_bind_btCollisionObject__getCollisionShape_p0"] = asm["_emscripten_bind_btCollisionObject__getCollisionShape_p0"];
var _emscripten_bind_btCollisionShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btCollisionShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btCollisionShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__recalcLocalAabb_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__recalcLocalAabb_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__recalcLocalAabb_p0"];
var _emscripten_bind_btDynamicsWorld__debugDrawWorld_p0 = Module["_emscripten_bind_btDynamicsWorld__debugDrawWorld_p0"] = asm["_emscripten_bind_btDynamicsWorld__debugDrawWorld_p0"];
var _emscripten_bind_btWheelInfo__set_m_suspensionRestLength1_p1 = Module["_emscripten_bind_btWheelInfo__set_m_suspensionRestLength1_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_suspensionRestLength1_p1"];
var _emscripten_bind_btSliderConstraint__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btSliderConstraint__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btSliderConstraint__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btWheelInfo__set_m_rotation_p1 = Module["_emscripten_bind_btWheelInfo__set_m_rotation_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_rotation_p1"];
var _emscripten_bind_btDbvtBroadphase__benchmark_p1 = Module["_emscripten_bind_btDbvtBroadphase__benchmark_p1"] = asm["_emscripten_bind_btDbvtBroadphase__benchmark_p1"];
var _emscripten_bind_btHinge2Constraint__serialize_p2 = Module["_emscripten_bind_btHinge2Constraint__serialize_p2"] = asm["_emscripten_bind_btHinge2Constraint__serialize_p2"];
var _emscripten_bind_btDefaultCollisionConfiguration____destroy___p0 = Module["_emscripten_bind_btDefaultCollisionConfiguration____destroy___p0"] = asm["_emscripten_bind_btDefaultCollisionConfiguration____destroy___p0"];
var _emscripten_bind_btPolyhedralConvexShape__isPolyhedral_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__isPolyhedral_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__isPolyhedral_p0"];
var _emscripten_bind_btCollisionWorld__RayResultCallback__set_m_flags_p1 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_flags_p1"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_flags_p1"];
var _emscripten_bind_btConeTwistConstraint__setLimit_p6 = Module["_emscripten_bind_btConeTwistConstraint__setLimit_p6"] = asm["_emscripten_bind_btConeTwistConstraint__setLimit_p6"];
var _emscripten_bind_btTypedConstraint__enableFeedback_p1 = Module["_emscripten_bind_btTypedConstraint__enableFeedback_p1"] = asm["_emscripten_bind_btTypedConstraint__enableFeedback_p1"];
var _emscripten_bind_btConeTwistConstraint__setLimit_p4 = Module["_emscripten_bind_btConeTwistConstraint__setLimit_p4"] = asm["_emscripten_bind_btConeTwistConstraint__setLimit_p4"];
var _emscripten_bind_btConeTwistConstraint__setLimit_p5 = Module["_emscripten_bind_btConeTwistConstraint__setLimit_p5"] = asm["_emscripten_bind_btConeTwistConstraint__setLimit_p5"];
var _emscripten_bind_btConeTwistConstraint__setLimit_p2 = Module["_emscripten_bind_btConeTwistConstraint__setLimit_p2"] = asm["_emscripten_bind_btConeTwistConstraint__setLimit_p2"];
var _emscripten_bind_btConeTwistConstraint__setLimit_p3 = Module["_emscripten_bind_btConeTwistConstraint__setLimit_p3"] = asm["_emscripten_bind_btConeTwistConstraint__setLimit_p3"];
var _emscripten_bind_btMultiSphereShape__getAabb_p3 = Module["_emscripten_bind_btMultiSphereShape__getAabb_p3"] = asm["_emscripten_bind_btMultiSphereShape__getAabb_p3"];
var _emscripten_bind_btMultiSphereShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btMultiSphereShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btMultiSphereShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btPoint2PointConstraint__setUserConstraintPtr_p1 = Module["_emscripten_bind_btPoint2PointConstraint__setUserConstraintPtr_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__setUserConstraintPtr_p1"];
var _emscripten_bind_btAxisSweep3__destroyProxy_p2 = Module["_emscripten_bind_btAxisSweep3__destroyProxy_p2"] = asm["_emscripten_bind_btAxisSweep3__destroyProxy_p2"];
var _emscripten_bind_btManifoldPoint__set_m_partId1_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_partId1_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_partId1_p1"];
var _emscripten_bind_btOptimizedBvh__deSerializeInPlace_p3 = Module["_emscripten_bind_btOptimizedBvh__deSerializeInPlace_p3"] = asm["_emscripten_bind_btOptimizedBvh__deSerializeInPlace_p3"];
var _emscripten_bind_btConvexHullShape__btConvexHullShape_p3 = Module["_emscripten_bind_btConvexHullShape__btConvexHullShape_p3"] = asm["_emscripten_bind_btConvexHullShape__btConvexHullShape_p3"];
var _emscripten_bind_btConvexHullShape__btConvexHullShape_p2 = Module["_emscripten_bind_btConvexHullShape__btConvexHullShape_p2"] = asm["_emscripten_bind_btConvexHullShape__btConvexHullShape_p2"];
var _emscripten_bind_btConvexHullShape__btConvexHullShape_p1 = Module["_emscripten_bind_btConvexHullShape__btConvexHullShape_p1"] = asm["_emscripten_bind_btConvexHullShape__btConvexHullShape_p1"];
var _emscripten_bind_btConvexHullShape__btConvexHullShape_p0 = Module["_emscripten_bind_btConvexHullShape__btConvexHullShape_p0"] = asm["_emscripten_bind_btConvexHullShape__btConvexHullShape_p0"];
var _emscripten_bind_btHashString__btHashString_p1 = Module["_emscripten_bind_btHashString__btHashString_p1"] = asm["_emscripten_bind_btHashString__btHashString_p1"];
var _emscripten_bind_btVector3__length2_p0 = Module["_emscripten_bind_btVector3__length2_p0"] = asm["_emscripten_bind_btVector3__length2_p0"];
var _emscripten_bind_btPolyhedralConvexShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btPolyhedralConvexShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btPolyhedralConvexShape__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__getLocalScaling_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__getLocalScaling_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__getLocalScaling_p0"];
var _emscripten_bind_btPairCachingGhostObject__getHitFraction_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getHitFraction_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getHitFraction_p0"];
var _emscripten_bind_btGhostObject__getOverlappingObject_p1 = Module["_emscripten_bind_btGhostObject__getOverlappingObject_p1"] = asm["_emscripten_bind_btGhostObject__getOverlappingObject_p1"];
var _emscripten_bind_btHinge2Constraint__getInfo2NonVirtual_p7 = Module["_emscripten_bind_btHinge2Constraint__getInfo2NonVirtual_p7"] = asm["_emscripten_bind_btHinge2Constraint__getInfo2NonVirtual_p7"];
var _emscripten_bind_btDbvtProxy__get_leaf_p0 = Module["_emscripten_bind_btDbvtProxy__get_leaf_p0"] = asm["_emscripten_bind_btDbvtProxy__get_leaf_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__convexSweepTest_p5 = Module["_emscripten_bind_btContinuousDynamicsWorld__convexSweepTest_p5"] = asm["_emscripten_bind_btContinuousDynamicsWorld__convexSweepTest_p5"];
var _emscripten_bind_btContinuousDynamicsWorld__convexSweepTest_p4 = Module["_emscripten_bind_btContinuousDynamicsWorld__convexSweepTest_p4"] = asm["_emscripten_bind_btContinuousDynamicsWorld__convexSweepTest_p4"];
var _emscripten_bind_btConeShapeZ__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btConeShapeZ__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btConeShapeZ__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btRigidBody__getWorldTransform_p0 = Module["_emscripten_bind_btRigidBody__getWorldTransform_p0"] = asm["_emscripten_bind_btRigidBody__getWorldTransform_p0"];
var _emscripten_bind_btQuantizedBvh__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btQuantizedBvh__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btQuantizedBvh__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btQuantizedBvh__deSerializeDouble_p1 = Module["_emscripten_bind_btQuantizedBvh__deSerializeDouble_p1"] = asm["_emscripten_bind_btQuantizedBvh__deSerializeDouble_p1"];
var _emscripten_bind_btRigidBody__getCcdMotionThreshold_p0 = Module["_emscripten_bind_btRigidBody__getCcdMotionThreshold_p0"] = asm["_emscripten_bind_btRigidBody__getCcdMotionThreshold_p0"];
var _emscripten_bind_btStridingMeshInterface__preallocateVertices_p1 = Module["_emscripten_bind_btStridingMeshInterface__preallocateVertices_p1"] = asm["_emscripten_bind_btStridingMeshInterface__preallocateVertices_p1"];
var _emscripten_bind_btConvexTriangleMeshShape__getShapeType_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getShapeType_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getShapeType_p0"];
var _emscripten_bind_btSerializer__registerNameForPointer_p2 = Module["_emscripten_bind_btSerializer__registerNameForPointer_p2"] = asm["_emscripten_bind_btSerializer__registerNameForPointer_p2"];
var _emscripten_bind_btManifoldPoint__get_m_normalWorldOnB_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_normalWorldOnB_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_normalWorldOnB_p0"];
var _emscripten_bind_btStaticPlaneShape__isConvex_p0 = Module["_emscripten_bind_btStaticPlaneShape__isConvex_p0"] = asm["_emscripten_bind_btStaticPlaneShape__isConvex_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setEnabled_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setEnabled_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setEnabled_p1"];
var _emscripten_bind_btConeShapeX__calculateLocalInertia_p2 = Module["_emscripten_bind_btConeShapeX__calculateLocalInertia_p2"] = asm["_emscripten_bind_btConeShapeX__calculateLocalInertia_p2"];
var _emscripten_bind_btHingeConstraint__getObjectType_p0 = Module["_emscripten_bind_btHingeConstraint__getObjectType_p0"] = asm["_emscripten_bind_btHingeConstraint__getObjectType_p0"];
var _emscripten_bind_btBU_Simplex1to4__getUserPointer_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getUserPointer_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getUserPointer_p0"];
var _emscripten_bind_btCylinderShapeX__btCylinderShapeX_p1 = Module["_emscripten_bind_btCylinderShapeX__btCylinderShapeX_p1"] = asm["_emscripten_bind_btCylinderShapeX__btCylinderShapeX_p1"];
var _emscripten_bind_btRigidBody__getRestitution_p0 = Module["_emscripten_bind_btRigidBody__getRestitution_p0"] = asm["_emscripten_bind_btRigidBody__getRestitution_p0"];
var _emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitPointLocal_p1 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitPointLocal_p1"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitPointLocal_p1"];
var _emscripten_bind_btTriangleIndexVertexArray__getPremadeAabb_p2 = Module["_emscripten_bind_btTriangleIndexVertexArray__getPremadeAabb_p2"] = asm["_emscripten_bind_btTriangleIndexVertexArray__getPremadeAabb_p2"];
var _emscripten_bind_btHingeConstraint__getConstraintType_p0 = Module["_emscripten_bind_btHingeConstraint__getConstraintType_p0"] = asm["_emscripten_bind_btHingeConstraint__getConstraintType_p0"];
var _emscripten_bind_btRigidBody__getFlags_p0 = Module["_emscripten_bind_btRigidBody__getFlags_p0"] = asm["_emscripten_bind_btRigidBody__getFlags_p0"];
var _emscripten_bind_btConvexHullShape__setLocalScaling_p1 = Module["_emscripten_bind_btConvexHullShape__setLocalScaling_p1"] = asm["_emscripten_bind_btConvexHullShape__setLocalScaling_p1"];
var _emscripten_bind_btConeTwistConstraint__getRigidBodyB_p0 = Module["_emscripten_bind_btConeTwistConstraint__getRigidBodyB_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getRigidBodyB_p0"];
var _emscripten_bind_btDbvtBroadphase__get_m_releasepaircache_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_releasepaircache_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_releasepaircache_p0"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__isConvex2d_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__isConvex2d_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__isConvex2d_p0"];
var _emscripten_bind_btDynamicsWorld__clearForces_p0 = Module["_emscripten_bind_btDynamicsWorld__clearForces_p0"] = asm["_emscripten_bind_btDynamicsWorld__clearForces_p0"];
var _emscripten_bind_btConvexSeparatingDistanceUtil__btConvexSeparatingDistanceUtil_p2 = Module["_emscripten_bind_btConvexSeparatingDistanceUtil__btConvexSeparatingDistanceUtil_p2"] = asm["_emscripten_bind_btConvexSeparatingDistanceUtil__btConvexSeparatingDistanceUtil_p2"];
var _emscripten_bind_btGeneric6DofConstraint__needsFeedback_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__needsFeedback_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__needsFeedback_p0"];
var _emscripten_bind_btConstraintSetting__set_m_impulseClamp_p1 = Module["_emscripten_bind_btConstraintSetting__set_m_impulseClamp_p1"] = asm["_emscripten_bind_btConstraintSetting__set_m_impulseClamp_p1"];
var _emscripten_bind_btRigidBody__computeImpulseDenominator_p2 = Module["_emscripten_bind_btRigidBody__computeImpulseDenominator_p2"] = asm["_emscripten_bind_btRigidBody__computeImpulseDenominator_p2"];
var _emscripten_bind_btDbvtBroadphase__set_m_prediction_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_prediction_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_prediction_p1"];
var _emscripten_bind_btSerializer__getBufferPointer_p0 = Module["_emscripten_bind_btSerializer__getBufferPointer_p0"] = asm["_emscripten_bind_btSerializer__getBufferPointer_p0"];
var _emscripten_bind_btSerializer__startSerialization_p0 = Module["_emscripten_bind_btSerializer__startSerialization_p0"] = asm["_emscripten_bind_btSerializer__startSerialization_p0"];
var _emscripten_bind_btPolyhedralConvexShape__getAabb_p3 = Module["_emscripten_bind_btPolyhedralConvexShape__getAabb_p3"] = asm["_emscripten_bind_btPolyhedralConvexShape__getAabb_p3"];
var _emscripten_bind_btPairCachingGhostObject__forceActivationState_p1 = Module["_emscripten_bind_btPairCachingGhostObject__forceActivationState_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__forceActivationState_p1"];
var _emscripten_bind_btConvexInternalAabbCachingShape__isSoftBody_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__isSoftBody_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__isSoftBody_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__getEdge_p3 = Module["_emscripten_bind_btConvexTriangleMeshShape__getEdge_p3"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getEdge_p3"];
var _emscripten_bind_btBoxShape__getUserPointer_p0 = Module["_emscripten_bind_btBoxShape__getUserPointer_p0"] = asm["_emscripten_bind_btBoxShape__getUserPointer_p0"];
var _emscripten_bind_btHinge2Constraint__setEnabled_p1 = Module["_emscripten_bind_btHinge2Constraint__setEnabled_p1"] = asm["_emscripten_bind_btHinge2Constraint__setEnabled_p1"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btRigidBody__getAabb_p2 = Module["_emscripten_bind_btRigidBody__getAabb_p2"] = asm["_emscripten_bind_btRigidBody__getAabb_p2"];
var _emscripten_bind_btUniversalConstraint__testAngularLimitMotor_p1 = Module["_emscripten_bind_btUniversalConstraint__testAngularLimitMotor_p1"] = asm["_emscripten_bind_btUniversalConstraint__testAngularLimitMotor_p1"];
var _emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_collisionFilterGroup_p1 = Module["_emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_collisionFilterGroup_p1"] = asm["_emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_collisionFilterGroup_p1"];
var _emscripten_bind_btConeTwistConstraint__setupSolverConstraint_p4 = Module["_emscripten_bind_btConeTwistConstraint__setupSolverConstraint_p4"] = asm["_emscripten_bind_btConeTwistConstraint__setupSolverConstraint_p4"];
var _emscripten_bind_btSequentialImpulseConstraintSolver__setRandSeed_p1 = Module["_emscripten_bind_btSequentialImpulseConstraintSolver__setRandSeed_p1"] = asm["_emscripten_bind_btSequentialImpulseConstraintSolver__setRandSeed_p1"];
var _emscripten_bind_btRotationalLimitMotor__set_m_currentPosition_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_currentPosition_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_currentPosition_p1"];
var _emscripten_bind_btRigidBody__getVelocityInLocalPoint_p1 = Module["_emscripten_bind_btRigidBody__getVelocityInLocalPoint_p1"] = asm["_emscripten_bind_btRigidBody__getVelocityInLocalPoint_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__performDiscreteCollisionDetection_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__performDiscreteCollisionDetection_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__performDiscreteCollisionDetection_p0"];
var _emscripten_bind_btConvexHullShape__recalcLocalAabb_p0 = Module["_emscripten_bind_btConvexHullShape__recalcLocalAabb_p0"] = asm["_emscripten_bind_btConvexHullShape__recalcLocalAabb_p0"];
var _emscripten_bind_btSliderConstraint__getRestitutionLimAng_p0 = Module["_emscripten_bind_btSliderConstraint__getRestitutionLimAng_p0"] = asm["_emscripten_bind_btSliderConstraint__getRestitutionLimAng_p0"];
var _emscripten_bind_btPoint2PointConstraint__setParam_p2 = Module["_emscripten_bind_btPoint2PointConstraint__setParam_p2"] = asm["_emscripten_bind_btPoint2PointConstraint__setParam_p2"];
var _emscripten_bind_btPoint2PointConstraint__setParam_p3 = Module["_emscripten_bind_btPoint2PointConstraint__setParam_p3"] = asm["_emscripten_bind_btPoint2PointConstraint__setParam_p3"];
var _emscripten_bind_btSerializer__findPointer_p1 = Module["_emscripten_bind_btSerializer__findPointer_p1"] = asm["_emscripten_bind_btSerializer__findPointer_p1"];
var _emscripten_bind_btTriangleInfo__get_m_edgeV1V2Angle_p0 = Module["_emscripten_bind_btTriangleInfo__get_m_edgeV1V2Angle_p0"] = asm["_emscripten_bind_btTriangleInfo__get_m_edgeV1V2Angle_p0"];
var _emscripten_bind_btPairCachingGhostObject__setInterpolationWorldTransform_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setInterpolationWorldTransform_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setInterpolationWorldTransform_p1"];
var _emscripten_bind_btCapsuleShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btCapsuleShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btCapsuleShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _emscripten_bind_btRigidBody__setDeactivationTime_p1 = Module["_emscripten_bind_btRigidBody__setDeactivationTime_p1"] = asm["_emscripten_bind_btRigidBody__setDeactivationTime_p1"];
var _emscripten_bind_btConeTwistConstraint__getFixThresh_p0 = Module["_emscripten_bind_btConeTwistConstraint__getFixThresh_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getFixThresh_p0"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__ClosestConvexResultCallback_p2 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__ClosestConvexResultCallback_p2"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__ClosestConvexResultCallback_p2"];
var _emscripten_bind_btConeShape__setUserPointer_p1 = Module["_emscripten_bind_btConeShape__setUserPointer_p1"] = asm["_emscripten_bind_btConeShape__setUserPointer_p1"];
var _emscripten_bind_btConeTwistConstraint__btConeTwistConstraint_p2 = Module["_emscripten_bind_btConeTwistConstraint__btConeTwistConstraint_p2"] = asm["_emscripten_bind_btConeTwistConstraint__btConeTwistConstraint_p2"];
var _emscripten_bind_btDefaultMotionState__set_m_startWorldTrans_p1 = Module["_emscripten_bind_btDefaultMotionState__set_m_startWorldTrans_p1"] = asm["_emscripten_bind_btDefaultMotionState__set_m_startWorldTrans_p1"];
var _emscripten_bind_btCollisionAlgorithmCreateFunc__set_m_swapped_p1 = Module["_emscripten_bind_btCollisionAlgorithmCreateFunc__set_m_swapped_p1"] = asm["_emscripten_bind_btCollisionAlgorithmCreateFunc__set_m_swapped_p1"];
var _emscripten_bind_btConeTwistConstraint__btConeTwistConstraint_p4 = Module["_emscripten_bind_btConeTwistConstraint__btConeTwistConstraint_p4"] = asm["_emscripten_bind_btConeTwistConstraint__btConeTwistConstraint_p4"];
var _emscripten_bind_btTypedConstraint__getRigidBodyB_p0 = Module["_emscripten_bind_btTypedConstraint__getRigidBodyB_p0"] = asm["_emscripten_bind_btTypedConstraint__getRigidBodyB_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabbNonVirtual_p3"];
var _emscripten_bind_btCollisionDispatcher__getInternalManifoldPool_p0 = Module["_emscripten_bind_btCollisionDispatcher__getInternalManifoldPool_p0"] = asm["_emscripten_bind_btCollisionDispatcher__getInternalManifoldPool_p0"];
var _emscripten_bind_btGhostObject__getInternalType_p0 = Module["_emscripten_bind_btGhostObject__getInternalType_p0"] = asm["_emscripten_bind_btGhostObject__getInternalType_p0"];
var _emscripten_bind_btConvexHullShape__getNumPlanes_p0 = Module["_emscripten_bind_btConvexHullShape__getNumPlanes_p0"] = asm["_emscripten_bind_btConvexHullShape__getNumPlanes_p0"];
var _emscripten_bind_btDynamicsWorld__getConstraint_p1 = Module["_emscripten_bind_btDynamicsWorld__getConstraint_p1"] = asm["_emscripten_bind_btDynamicsWorld__getConstraint_p1"];
var _emscripten_bind_btConvexShape__setMargin_p1 = Module["_emscripten_bind_btConvexShape__setMargin_p1"] = asm["_emscripten_bind_btConvexShape__setMargin_p1"];
var _emscripten_bind_btSimpleBroadphaseProxy__isConvex2d_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__isConvex2d_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__isConvex2d_p1"];
var _emscripten_bind_btGeneric6DofConstraint__getAxis_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getAxis_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getAxis_p1"];
var _emscripten_bind_btConvexTriangleMeshShape__setLocalScaling_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__setLocalScaling_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__setLocalScaling_p1"];
var _emscripten_bind_btOverlappingPairCache__setInternalGhostPairCallback_p1 = Module["_emscripten_bind_btOverlappingPairCache__setInternalGhostPairCallback_p1"] = asm["_emscripten_bind_btOverlappingPairCache__setInternalGhostPairCallback_p1"];
var _emscripten_bind_btVector4____destroy___p0 = Module["_emscripten_bind_btVector4____destroy___p0"] = asm["_emscripten_bind_btVector4____destroy___p0"];
var _emscripten_bind_btVector3__z_p0 = Module["_emscripten_bind_btVector3__z_p0"] = asm["_emscripten_bind_btVector3__z_p0"];
var _emscripten_bind_btGhostObject__setIslandTag_p1 = Module["_emscripten_bind_btGhostObject__setIslandTag_p1"] = asm["_emscripten_bind_btGhostObject__setIslandTag_p1"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo____destroy___p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo____destroy___p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo____destroy___p0"];
var _emscripten_bind_btGhostPairCallback__removeOverlappingPair_p3 = Module["_emscripten_bind_btGhostPairCallback__removeOverlappingPair_p3"] = asm["_emscripten_bind_btGhostPairCallback__removeOverlappingPair_p3"];
var _emscripten_bind_btCollisionWorld__getForceUpdateAllAabbs_p0 = Module["_emscripten_bind_btCollisionWorld__getForceUpdateAllAabbs_p0"] = asm["_emscripten_bind_btCollisionWorld__getForceUpdateAllAabbs_p0"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__serialize_p2 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__serialize_p2"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__serialize_p2"];
var _emscripten_bind_btSliderConstraint__getAngDepth_p0 = Module["_emscripten_bind_btSliderConstraint__getAngDepth_p0"] = asm["_emscripten_bind_btSliderConstraint__getAngDepth_p0"];
var _emscripten_bind_btCylinderShape__getMarginNV_p0 = Module["_emscripten_bind_btCylinderShape__getMarginNV_p0"] = asm["_emscripten_bind_btCylinderShape__getMarginNV_p0"];
var _emscripten_bind_btEmptyShape__isConcave_p0 = Module["_emscripten_bind_btEmptyShape__isConcave_p0"] = asm["_emscripten_bind_btEmptyShape__isConcave_p0"];
var _emscripten_bind_btTypedObject____destroy___p0 = Module["_emscripten_bind_btTypedObject____destroy___p0"] = asm["_emscripten_bind_btTypedObject____destroy___p0"];
var _emscripten_bind_btConeTwistConstraint__internalGetAppliedImpulse_p0 = Module["_emscripten_bind_btConeTwistConstraint__internalGetAppliedImpulse_p0"] = asm["_emscripten_bind_btConeTwistConstraint__internalGetAppliedImpulse_p0"];
var _emscripten_bind_btPairCachingGhostObject__setIslandTag_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setIslandTag_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setIslandTag_p1"];
var _emscripten_bind_btCollisionObject__setContactProcessingThreshold_p1 = Module["_emscripten_bind_btCollisionObject__setContactProcessingThreshold_p1"] = asm["_emscripten_bind_btCollisionObject__setContactProcessingThreshold_p1"];
var _emscripten_bind_btPolyhedralConvexShape__isInside_p2 = Module["_emscripten_bind_btPolyhedralConvexShape__isInside_p2"] = asm["_emscripten_bind_btPolyhedralConvexShape__isInside_p2"];
var _emscripten_bind_btPolyhedralConvexShape__getMarginNV_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getMarginNV_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getMarginNV_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__initializePolyhedralFeatures_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__initializePolyhedralFeatures_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__initializePolyhedralFeatures_p0"];
var _emscripten_bind_btSphereSphereCollisionAlgorithm____destroy___p0 = Module["_emscripten_bind_btSphereSphereCollisionAlgorithm____destroy___p0"] = asm["_emscripten_bind_btSphereSphereCollisionAlgorithm____destroy___p0"];
var _emscripten_bind_btDbvtProxy__get_m_clientObject_p0 = Module["_emscripten_bind_btDbvtProxy__get_m_clientObject_p0"] = asm["_emscripten_bind_btDbvtProxy__get_m_clientObject_p0"];
var _emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionObject_p1 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionObject_p1"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionObject_p1"];
var _emscripten_bind_btCylinderShapeZ__getUpAxis_p0 = Module["_emscripten_bind_btCylinderShapeZ__getUpAxis_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getUpAxis_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__updateRHS_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__updateRHS_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__updateRHS_p1"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_flags_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_flags_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_flags_p0"];
var _emscripten_bind_btCollisionWorld__ConvexResultCallback__needsCollision_p1 = Module["_emscripten_bind_btCollisionWorld__ConvexResultCallback__needsCollision_p1"] = asm["_emscripten_bind_btCollisionWorld__ConvexResultCallback__needsCollision_p1"];
var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_flags_p1 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_flags_p1"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_flags_p1"];
var _emscripten_bind_btSliderConstraint__getLinearPos_p0 = Module["_emscripten_bind_btSliderConstraint__getLinearPos_p0"] = asm["_emscripten_bind_btSliderConstraint__getLinearPos_p0"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_hitPointWorld_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_hitPointWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_hitPointWorld_p0"];
var _emscripten_bind_btQuadWord__setMax_p1 = Module["_emscripten_bind_btQuadWord__setMax_p1"] = asm["_emscripten_bind_btQuadWord__setMax_p1"];
var _emscripten_bind_btRigidBody__wantsSleeping_p0 = Module["_emscripten_bind_btRigidBody__wantsSleeping_p0"] = asm["_emscripten_bind_btRigidBody__wantsSleeping_p0"];
var _emscripten_bind_btOptimizedBvh__deSerializeDouble_p1 = Module["_emscripten_bind_btOptimizedBvh__deSerializeDouble_p1"] = asm["_emscripten_bind_btOptimizedBvh__deSerializeDouble_p1"];
var _emscripten_bind_btEmptyShape__setLocalScaling_p1 = Module["_emscripten_bind_btEmptyShape__setLocalScaling_p1"] = asm["_emscripten_bind_btEmptyShape__setLocalScaling_p1"];
var _emscripten_bind_btBroadphaseProxy__isInfinite_p1 = Module["_emscripten_bind_btBroadphaseProxy__isInfinite_p1"] = asm["_emscripten_bind_btBroadphaseProxy__isInfinite_p1"];
var _emscripten_bind_btCollisionAlgorithm__processCollision_p4 = Module["_emscripten_bind_btCollisionAlgorithm__processCollision_p4"] = asm["_emscripten_bind_btCollisionAlgorithm__processCollision_p4"];
var _emscripten_bind_btCollisionConfiguration__getCollisionAlgorithmPool_p0 = Module["_emscripten_bind_btCollisionConfiguration__getCollisionAlgorithmPool_p0"] = asm["_emscripten_bind_btCollisionConfiguration__getCollisionAlgorithmPool_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getMarginNV_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getMarginNV_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getMarginNV_p0"];
var _emscripten_bind_btBU_Simplex1to4__getNumVertices_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getNumVertices_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getNumVertices_p0"];
var _emscripten_bind_btCylinderShapeX__getAabbNonVirtual_p3 = Module["_emscripten_bind_btCylinderShapeX__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btCylinderShapeX__getAabbNonVirtual_p3"];
var _emscripten_bind_btWheelInfo__get_m_frictionSlip_p0 = Module["_emscripten_bind_btWheelInfo__get_m_frictionSlip_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_frictionSlip_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__applyGravity_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__applyGravity_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__applyGravity_p0"];
var _emscripten_bind_btStackAlloc__beginBlock_p0 = Module["_emscripten_bind_btStackAlloc__beginBlock_p0"] = asm["_emscripten_bind_btStackAlloc__beginBlock_p0"];
var _emscripten_bind_btCollisionWorld__ContactResultCallback__get_m_collisionFilterGroup_p0 = Module["_emscripten_bind_btCollisionWorld__ContactResultCallback__get_m_collisionFilterGroup_p0"] = asm["_emscripten_bind_btCollisionWorld__ContactResultCallback__get_m_collisionFilterGroup_p0"];
var _emscripten_bind_btQuantizedBvh__reportAabbOverlappingNodex_p3 = Module["_emscripten_bind_btQuantizedBvh__reportAabbOverlappingNodex_p3"] = asm["_emscripten_bind_btQuantizedBvh__reportAabbOverlappingNodex_p3"];
var _emscripten_bind_btConeShape__isConvex2d_p0 = Module["_emscripten_bind_btConeShape__isConvex2d_p0"] = asm["_emscripten_bind_btConeShape__isConvex2d_p0"];
var _emscripten_bind_btBroadphaseProxy__get_m_aabbMax_p0 = Module["_emscripten_bind_btBroadphaseProxy__get_m_aabbMax_p0"] = asm["_emscripten_bind_btBroadphaseProxy__get_m_aabbMax_p0"];
var _emscripten_bind_btHeightfieldTerrainShape__serialize_p2 = Module["_emscripten_bind_btHeightfieldTerrainShape__serialize_p2"] = asm["_emscripten_bind_btHeightfieldTerrainShape__serialize_p2"];
var _emscripten_bind_btCollisionDispatcher__getNewManifold_p2 = Module["_emscripten_bind_btCollisionDispatcher__getNewManifold_p2"] = asm["_emscripten_bind_btCollisionDispatcher__getNewManifold_p2"];
var _emscripten_bind_btConeTwistConstraint__getSwingSpan2_p0 = Module["_emscripten_bind_btConeTwistConstraint__getSwingSpan2_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getSwingSpan2_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__getBoundingSphere_p2 = Module["_emscripten_bind_btConvexTriangleMeshShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getBoundingSphere_p2"];
var _emscripten_bind_btUniversalConstraint__calcAnchorPos_p0 = Module["_emscripten_bind_btUniversalConstraint__calcAnchorPos_p0"] = asm["_emscripten_bind_btUniversalConstraint__calcAnchorPos_p0"];
var _emscripten_bind_btTransform__deSerializeDouble_p1 = Module["_emscripten_bind_btTransform__deSerializeDouble_p1"] = asm["_emscripten_bind_btTransform__deSerializeDouble_p1"];
var _emscripten_bind_btCylinderShapeX__getAabbSlow_p3 = Module["_emscripten_bind_btCylinderShapeX__getAabbSlow_p3"] = asm["_emscripten_bind_btCylinderShapeX__getAabbSlow_p3"];
var _emscripten_bind_btBroadphaseInterface__getOverlappingPairCache_p0 = Module["_emscripten_bind_btBroadphaseInterface__getOverlappingPairCache_p0"] = asm["_emscripten_bind_btBroadphaseInterface__getOverlappingPairCache_p0"];
var _emscripten_bind_btQuaternion__btQuaternion_p4 = Module["_emscripten_bind_btQuaternion__btQuaternion_p4"] = asm["_emscripten_bind_btQuaternion__btQuaternion_p4"];
var _emscripten_bind_btQuaternion__btQuaternion_p3 = Module["_emscripten_bind_btQuaternion__btQuaternion_p3"] = asm["_emscripten_bind_btQuaternion__btQuaternion_p3"];
var _emscripten_bind_btQuaternion__btQuaternion_p2 = Module["_emscripten_bind_btQuaternion__btQuaternion_p2"] = asm["_emscripten_bind_btQuaternion__btQuaternion_p2"];
var _emscripten_bind_btQuaternion__btQuaternion_p0 = Module["_emscripten_bind_btQuaternion__btQuaternion_p0"] = asm["_emscripten_bind_btQuaternion__btQuaternion_p0"];
var _emscripten_bind_btHinge2Constraint__setUserConstraintId_p1 = Module["_emscripten_bind_btHinge2Constraint__setUserConstraintId_p1"] = asm["_emscripten_bind_btHinge2Constraint__setUserConstraintId_p1"];
var _emscripten_bind_btUniversalConstraint__needsFeedback_p0 = Module["_emscripten_bind_btUniversalConstraint__needsFeedback_p0"] = asm["_emscripten_bind_btUniversalConstraint__needsFeedback_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__removeCollisionObject_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__removeCollisionObject_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__removeCollisionObject_p1"];
var _emscripten_bind_btRaycastVehicle__btVehicleTuning____destroy___p0 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning____destroy___p0"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning____destroy___p0"];
var _emscripten_bind_btBroadphaseInterface__getAabb_p3 = Module["_emscripten_bind_btBroadphaseInterface__getAabb_p3"] = asm["_emscripten_bind_btBroadphaseInterface__getAabb_p3"];
var _emscripten_bind_btBroadphaseProxy__set_m_aabbMax_p1 = Module["_emscripten_bind_btBroadphaseProxy__set_m_aabbMax_p1"] = asm["_emscripten_bind_btBroadphaseProxy__set_m_aabbMax_p1"];
var _emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p2 = Module["_emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p2"] = asm["_emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p2"];
var _emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p1 = Module["_emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p1"] = asm["_emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p1"];
var _emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p0 = Module["_emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p0"] = asm["_emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p0"];
var _emscripten_bind_btBoxShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btBoxShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btBoxShape__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btRigidBody__getGravity_p0 = Module["_emscripten_bind_btRigidBody__getGravity_p0"] = asm["_emscripten_bind_btRigidBody__getGravity_p0"];
var _emscripten_bind_btRigidBody__getAngularFactor_p0 = Module["_emscripten_bind_btRigidBody__getAngularFactor_p0"] = asm["_emscripten_bind_btRigidBody__getAngularFactor_p0"];
var _emscripten_bind_btRotationalLimitMotor__btRotationalLimitMotor_p1 = Module["_emscripten_bind_btRotationalLimitMotor__btRotationalLimitMotor_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__btRotationalLimitMotor_p1"];
var _emscripten_bind_btRotationalLimitMotor__btRotationalLimitMotor_p0 = Module["_emscripten_bind_btRotationalLimitMotor__btRotationalLimitMotor_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__btRotationalLimitMotor_p0"];
var _emscripten_bind_btRotationalLimitMotor__get_m_maxMotorForce_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_maxMotorForce_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_maxMotorForce_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__setGravity_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__setGravity_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__setGravity_p1"];
var _emscripten_bind_btCollisionWorld__RayResultCallback__set_m_closestHitFraction_p1 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_closestHitFraction_p1"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_closestHitFraction_p1"];
var _emscripten_bind_btSphereShape__isConvex2d_p0 = Module["_emscripten_bind_btSphereShape__isConvex2d_p0"] = asm["_emscripten_bind_btSphereShape__isConvex2d_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__getAabbSlow_p3 = Module["_emscripten_bind_btConvexTriangleMeshShape__getAabbSlow_p3"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getAabbSlow_p3"];
var _emscripten_bind_btConeTwistConstraint__getSwingSpan1_p0 = Module["_emscripten_bind_btConeTwistConstraint__getSwingSpan1_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getSwingSpan1_p0"];
var _emscripten_bind_btCylinderShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btCylinderShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btCylinderShape__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btConvexHullShape__getAabb_p3 = Module["_emscripten_bind_btConvexHullShape__getAabb_p3"] = asm["_emscripten_bind_btConvexHullShape__getAabb_p3"];
var _emscripten_bind_btVector3__lerp_p2 = Module["_emscripten_bind_btVector3__lerp_p2"] = asm["_emscripten_bind_btVector3__lerp_p2"];
var _emscripten_bind_btDiscreteDynamicsWorld__setGravity_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setGravity_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setGravity_p1"];
var _emscripten_bind_btPairCachingGhostObject__upcast_p1 = Module["_emscripten_bind_btPairCachingGhostObject__upcast_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__upcast_p1"];
var _emscripten_bind_btDispatcherInfo__set_m_allowedCcdPenetration_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_allowedCcdPenetration_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_allowedCcdPenetration_p1"];
var _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_customCollisionAlgorithmMaxElementSize_p0 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_customCollisionAlgorithmMaxElementSize_p0"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_customCollisionAlgorithmMaxElementSize_p0"];
var _emscripten_bind_btHinge2Constraint__getAngularUpperLimit_p1 = Module["_emscripten_bind_btHinge2Constraint__getAngularUpperLimit_p1"] = asm["_emscripten_bind_btHinge2Constraint__getAngularUpperLimit_p1"];
var _emscripten_bind_btHingeConstraint__setAxis_p1 = Module["_emscripten_bind_btHingeConstraint__setAxis_p1"] = asm["_emscripten_bind_btHingeConstraint__setAxis_p1"];
var _emscripten_bind_btCompoundShape__serializeSingleShape_p1 = Module["_emscripten_bind_btCompoundShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btCompoundShape__serializeSingleShape_p1"];
var _emscripten_bind_btOverlappingPairCache__setOverlapFilterCallback_p1 = Module["_emscripten_bind_btOverlappingPairCache__setOverlapFilterCallback_p1"] = asm["_emscripten_bind_btOverlappingPairCache__setOverlapFilterCallback_p1"];
var _emscripten_bind_btConeShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btConeShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btConeShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _emscripten_bind_btRigidBody__internalGetAngularFactor_p0 = Module["_emscripten_bind_btRigidBody__internalGetAngularFactor_p0"] = asm["_emscripten_bind_btRigidBody__internalGetAngularFactor_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_btCylinderShape__getHalfExtentsWithMargin_p0 = Module["_emscripten_bind_btCylinderShape__getHalfExtentsWithMargin_p0"] = asm["_emscripten_bind_btCylinderShape__getHalfExtentsWithMargin_p0"];
var _emscripten_bind_btConeTwistConstraint__getUserConstraintPtr_p0 = Module["_emscripten_bind_btConeTwistConstraint__getUserConstraintPtr_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getUserConstraintPtr_p0"];
var _emscripten_bind_btManifoldPoint__set_m_distance1_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_distance1_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_distance1_p1"];
var _emscripten_bind_btVector3__setValue_p3 = Module["_emscripten_bind_btVector3__setValue_p3"] = asm["_emscripten_bind_btVector3__setValue_p3"];
var _emscripten_bind_btGeneric6DofConstraint__set_m_useSolveConstraintObsolete_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__set_m_useSolveConstraintObsolete_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__set_m_useSolveConstraintObsolete_p1"];
var _emscripten_bind_btCapsuleShapeZ__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btCapsuleShapeZ__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btCapsuleShapeZ__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btMatrix3x3__op_add_p1 = Module["_emscripten_bind_btMatrix3x3__op_add_p1"] = asm["_emscripten_bind_btMatrix3x3__op_add_p1"];
var _emscripten_bind_btStaticPlaneShape__setMargin_p1 = Module["_emscripten_bind_btStaticPlaneShape__setMargin_p1"] = asm["_emscripten_bind_btStaticPlaneShape__setMargin_p1"];
var _emscripten_bind_btTransform____destroy___p0 = Module["_emscripten_bind_btTransform____destroy___p0"] = asm["_emscripten_bind_btTransform____destroy___p0"];
var _emscripten_bind_btConeTwistConstraint__getFrameOffsetB_p0 = Module["_emscripten_bind_btConeTwistConstraint__getFrameOffsetB_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getFrameOffsetB_p0"];
var _emscripten_bind_btRotationalLimitMotor__get_m_damping_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_damping_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_damping_p0"];
var _emscripten_bind_btCollisionWorld__getPairCache_p0 = Module["_emscripten_bind_btCollisionWorld__getPairCache_p0"] = asm["_emscripten_bind_btCollisionWorld__getPairCache_p0"];
var _emscripten_bind_btHashInt____destroy___p0 = Module["_emscripten_bind_btHashInt____destroy___p0"] = asm["_emscripten_bind_btHashInt____destroy___p0"];
var _emscripten_bind_btQuantizedBvh__getLeafNodeArray_p0 = Module["_emscripten_bind_btQuantizedBvh__getLeafNodeArray_p0"] = asm["_emscripten_bind_btQuantizedBvh__getLeafNodeArray_p0"];
var _emscripten_bind_bt32BitAxisSweep3__calculateOverlappingPairs_p1 = Module["_emscripten_bind_bt32BitAxisSweep3__calculateOverlappingPairs_p1"] = asm["_emscripten_bind_bt32BitAxisSweep3__calculateOverlappingPairs_p1"];
var _emscripten_bind_btConvexTriangleMeshShape__getNumPlanes_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getNumPlanes_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getNumPlanes_p0"];
var _emscripten_bind_btRigidBody__setHitFraction_p1 = Module["_emscripten_bind_btRigidBody__setHitFraction_p1"] = asm["_emscripten_bind_btRigidBody__setHitFraction_p1"];
var _emscripten_bind_btJacobianEntry__get_m_0MinvJt_p0 = Module["_emscripten_bind_btJacobianEntry__get_m_0MinvJt_p0"] = asm["_emscripten_bind_btJacobianEntry__get_m_0MinvJt_p0"];
var _emscripten_bind_btVector4__dot_p1 = Module["_emscripten_bind_btVector4__dot_p1"] = asm["_emscripten_bind_btVector4__dot_p1"];
var _emscripten_bind_btDbvtBroadphase__destroyProxy_p2 = Module["_emscripten_bind_btDbvtBroadphase__destroyProxy_p2"] = asm["_emscripten_bind_btDbvtBroadphase__destroyProxy_p2"];
var _emscripten_bind_btCollisionObject__serializeSingleObject_p1 = Module["_emscripten_bind_btCollisionObject__serializeSingleObject_p1"] = asm["_emscripten_bind_btCollisionObject__serializeSingleObject_p1"];
var _emscripten_bind_btDispatcherInfo__get_m_timeStep_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_timeStep_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_timeStep_p0"];
var _emscripten_bind_btDbvtBroadphase__get_m_fupdates_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_fupdates_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_fupdates_p0"];
var _emscripten_bind_btTriangleMesh__btTriangleMesh_p0 = Module["_emscripten_bind_btTriangleMesh__btTriangleMesh_p0"] = asm["_emscripten_bind_btTriangleMesh__btTriangleMesh_p0"];
var _emscripten_bind_btJacobianEntry__get_m_bJ_p0 = Module["_emscripten_bind_btJacobianEntry__get_m_bJ_p0"] = asm["_emscripten_bind_btJacobianEntry__get_m_bJ_p0"];
var _emscripten_bind_btDefaultCollisionConstructionInfo__btDefaultCollisionConstructionInfo_p0 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__btDefaultCollisionConstructionInfo_p0"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__btDefaultCollisionConstructionInfo_p0"];
var _emscripten_bind_btRotationalLimitMotor____destroy___p0 = Module["_emscripten_bind_btRotationalLimitMotor____destroy___p0"] = asm["_emscripten_bind_btRotationalLimitMotor____destroy___p0"];
var _emscripten_bind_btGhostObject__convexSweepTest_p4 = Module["_emscripten_bind_btGhostObject__convexSweepTest_p4"] = asm["_emscripten_bind_btGhostObject__convexSweepTest_p4"];
var _emscripten_bind_btGhostObject__convexSweepTest_p5 = Module["_emscripten_bind_btGhostObject__convexSweepTest_p5"] = asm["_emscripten_bind_btGhostObject__convexSweepTest_p5"];
var _emscripten_bind_btPoint2PointConstraint____destroy___p0 = Module["_emscripten_bind_btPoint2PointConstraint____destroy___p0"] = asm["_emscripten_bind_btPoint2PointConstraint____destroy___p0"];
var _emscripten_bind_btHingeConstraint__getMaxMotorImpulse_p0 = Module["_emscripten_bind_btHingeConstraint__getMaxMotorImpulse_p0"] = asm["_emscripten_bind_btHingeConstraint__getMaxMotorImpulse_p0"];
var _emscripten_bind_btCapsuleShape__getUserPointer_p0 = Module["_emscripten_bind_btCapsuleShape__getUserPointer_p0"] = asm["_emscripten_bind_btCapsuleShape__getUserPointer_p0"];
var _emscripten_bind_btRigidBody__internalSetTemporaryCollisionShape_p1 = Module["_emscripten_bind_btRigidBody__internalSetTemporaryCollisionShape_p1"] = asm["_emscripten_bind_btRigidBody__internalSetTemporaryCollisionShape_p1"];
var _emscripten_bind_btConcaveShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btConcaveShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btConcaveShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btConvexInternalShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btConvexInternalShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btConvexInternalShape__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_btUniversalConstraint__internalSetAppliedImpulse_p1 = Module["_emscripten_bind_btUniversalConstraint__internalSetAppliedImpulse_p1"] = asm["_emscripten_bind_btUniversalConstraint__internalSetAppliedImpulse_p1"];
var _emscripten_bind_btEmptyShape__getAabb_p3 = Module["_emscripten_bind_btEmptyShape__getAabb_p3"] = asm["_emscripten_bind_btEmptyShape__getAabb_p3"];
var _emscripten_bind_btAxisSweep3__addHandle_p7 = Module["_emscripten_bind_btAxisSweep3__addHandle_p7"] = asm["_emscripten_bind_btAxisSweep3__addHandle_p7"];
var _emscripten_bind_btHinge2Constraint__setParam_p2 = Module["_emscripten_bind_btHinge2Constraint__setParam_p2"] = asm["_emscripten_bind_btHinge2Constraint__setParam_p2"];
var _emscripten_bind_btHinge2Constraint__setParam_p3 = Module["_emscripten_bind_btHinge2Constraint__setParam_p3"] = asm["_emscripten_bind_btHinge2Constraint__setParam_p3"];
var _emscripten_bind_btCapsuleShapeX__setMargin_p1 = Module["_emscripten_bind_btCapsuleShapeX__setMargin_p1"] = asm["_emscripten_bind_btCapsuleShapeX__setMargin_p1"];
var _emscripten_bind_btConvexInternalShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btConvexInternalShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btConvexInternalShape__getAabbNonVirtual_p3"];
var _emscripten_bind_btDiscreteDynamicsWorld__getConstraint_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getConstraint_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getConstraint_p1"];
var _emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p5 = Module["_emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p5"] = asm["_emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p5"];
var _emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p0 = Module["_emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p0"] = asm["_emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p0"];
var _emscripten_bind_btCollisionObject__setAnisotropicFriction_p1 = Module["_emscripten_bind_btCollisionObject__setAnisotropicFriction_p1"] = asm["_emscripten_bind_btCollisionObject__setAnisotropicFriction_p1"];
var _emscripten_bind_btQuaternion__y_p0 = Module["_emscripten_bind_btQuaternion__y_p0"] = asm["_emscripten_bind_btQuaternion__y_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__updateAabbs_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__updateAabbs_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__updateAabbs_p0"];
var _emscripten_bind_btDynamicsWorld__updateAabbs_p0 = Module["_emscripten_bind_btDynamicsWorld__updateAabbs_p0"] = asm["_emscripten_bind_btDynamicsWorld__updateAabbs_p0"];
var _emscripten_bind_btTranslationalLimitMotor__get_m_lowerLimit_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_lowerLimit_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_lowerLimit_p0"];
var _emscripten_bind_btContactConstraint__getParam_p1 = Module["_emscripten_bind_btContactConstraint__getParam_p1"] = asm["_emscripten_bind_btContactConstraint__getParam_p1"];
var _emscripten_bind_btJacobianEntry__set_m_bJ_p1 = Module["_emscripten_bind_btJacobianEntry__set_m_bJ_p1"] = asm["_emscripten_bind_btJacobianEntry__set_m_bJ_p1"];
var _emscripten_bind_btTypedConstraint__needsFeedback_p0 = Module["_emscripten_bind_btTypedConstraint__needsFeedback_p0"] = asm["_emscripten_bind_btTypedConstraint__needsFeedback_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__getMeshInterface_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getMeshInterface_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getMeshInterface_p0"];
var _emscripten_bind_btCollisionWorld__setForceUpdateAllAabbs_p1 = Module["_emscripten_bind_btCollisionWorld__setForceUpdateAllAabbs_p1"] = asm["_emscripten_bind_btCollisionWorld__setForceUpdateAllAabbs_p1"];
var _emscripten_bind_btBoxShape__setMargin_p1 = Module["_emscripten_bind_btBoxShape__setMargin_p1"] = asm["_emscripten_bind_btBoxShape__setMargin_p1"];
var _emscripten_bind_btConeShapeZ__getAabb_p3 = Module["_emscripten_bind_btConeShapeZ__getAabb_p3"] = asm["_emscripten_bind_btConeShapeZ__getAabb_p3"];
var _emscripten_bind_btRotationalLimitMotor__set_m_limitSoftness_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_limitSoftness_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_limitSoftness_p1"];
var _emscripten_bind_btBroadphasePair__set_m_algorithm_p1 = Module["_emscripten_bind_btBroadphasePair__set_m_algorithm_p1"] = asm["_emscripten_bind_btBroadphasePair__set_m_algorithm_p1"];
var _emscripten_bind_btVector3__distance_p1 = Module["_emscripten_bind_btVector3__distance_p1"] = asm["_emscripten_bind_btVector3__distance_p1"];
var _emscripten_bind_btConeShapeX__getAabb_p3 = Module["_emscripten_bind_btConeShapeX__getAabb_p3"] = asm["_emscripten_bind_btConeShapeX__getAabb_p3"];
var _emscripten_bind_btStaticPlaneShape__isConvex2d_p0 = Module["_emscripten_bind_btStaticPlaneShape__isConvex2d_p0"] = asm["_emscripten_bind_btStaticPlaneShape__isConvex2d_p0"];
var _emscripten_bind_btHashPtr__btHashPtr_p1 = Module["_emscripten_bind_btHashPtr__btHashPtr_p1"] = asm["_emscripten_bind_btHashPtr__btHashPtr_p1"];
var _emscripten_bind_btQuaternion__op_add_p1 = Module["_emscripten_bind_btQuaternion__op_add_p1"] = asm["_emscripten_bind_btQuaternion__op_add_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__contactPairTest_p3 = Module["_emscripten_bind_btDiscreteDynamicsWorld__contactPairTest_p3"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__contactPairTest_p3"];
var _emscripten_bind_btConvexTriangleMeshShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btPoint2PointConstraint__internalGetAppliedImpulse_p0 = Module["_emscripten_bind_btPoint2PointConstraint__internalGetAppliedImpulse_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__internalGetAppliedImpulse_p0"];
var _emscripten_bind_btCapsuleShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btCapsuleShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btCapsuleShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btCylinderShapeZ__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btCylinderShapeZ__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getImplicitShapeDimensions_p0"];
var _emscripten_bind_btPoint2PointConstraint__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btPoint2PointConstraint__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btRigidBody__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btRigidBody__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btRigidBody__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btCapsuleShapeX__localGetSupportingVertex_p1 = Module["_emscripten_bind_btCapsuleShapeX__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btCapsuleShapeX__localGetSupportingVertex_p1"];
var _emscripten_bind_btBroadphaseProxy__isSoftBody_p1 = Module["_emscripten_bind_btBroadphaseProxy__isSoftBody_p1"] = asm["_emscripten_bind_btBroadphaseProxy__isSoftBody_p1"];
var _emscripten_bind_btConeShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btConeShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btConeShape__getMarginNonVirtual_p0"];
var _emscripten_bind_btRotationalLimitMotor__get_m_stopCFM_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_stopCFM_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_stopCFM_p0"];
var _emscripten_bind_btConvexInternalAabbCachingShape__getAabb_p3 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getAabb_p3"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getAabb_p3"];
var _emscripten_bind_btGhostObject__getWorldTransform_p0 = Module["_emscripten_bind_btGhostObject__getWorldTransform_p0"] = asm["_emscripten_bind_btGhostObject__getWorldTransform_p0"];
var _emscripten_bind_btHingeConstraint__getAppliedImpulse_p0 = Module["_emscripten_bind_btHingeConstraint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btHingeConstraint__getAppliedImpulse_p0"];
var _emscripten_bind_btGeneric6DofConstraint__setUserConstraintPtr_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setUserConstraintPtr_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setUserConstraintPtr_p1"];
var _emscripten_bind_btCollisionWorld__LocalRayResult__LocalRayResult_p4 = Module["_emscripten_bind_btCollisionWorld__LocalRayResult__LocalRayResult_p4"] = asm["_emscripten_bind_btCollisionWorld__LocalRayResult__LocalRayResult_p4"];
var _emscripten_bind_btUniversalConstraint__setLowerLimit_p2 = Module["_emscripten_bind_btUniversalConstraint__setLowerLimit_p2"] = asm["_emscripten_bind_btUniversalConstraint__setLowerLimit_p2"];
var _emscripten_bind_btTransform__deSerializeFloat_p1 = Module["_emscripten_bind_btTransform__deSerializeFloat_p1"] = asm["_emscripten_bind_btTransform__deSerializeFloat_p1"];
var _emscripten_bind_btRotationalLimitMotor__get_m_bounce_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_bounce_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_bounce_p0"];
var _emscripten_bind_btHingeConstraint__solveConstraintObsolete_p3 = Module["_emscripten_bind_btHingeConstraint__solveConstraintObsolete_p3"] = asm["_emscripten_bind_btHingeConstraint__solveConstraintObsolete_p3"];
var _emscripten_bind_btHinge2Constraint__setAxis_p2 = Module["_emscripten_bind_btHinge2Constraint__setAxis_p2"] = asm["_emscripten_bind_btHinge2Constraint__setAxis_p2"];
var _emscripten_bind_btConeTwistConstraint__getAFrame_p0 = Module["_emscripten_bind_btConeTwistConstraint__getAFrame_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getAFrame_p0"];
var _emscripten_bind_btCylinderShapeX__getRadius_p0 = Module["_emscripten_bind_btCylinderShapeX__getRadius_p0"] = asm["_emscripten_bind_btCylinderShapeX__getRadius_p0"];
var _emscripten_bind_btStackAlloc__allocate_p1 = Module["_emscripten_bind_btStackAlloc__allocate_p1"] = asm["_emscripten_bind_btStackAlloc__allocate_p1"];
var _emscripten_bind_btDynamicsWorld__addRigidBody_p1 = Module["_emscripten_bind_btDynamicsWorld__addRigidBody_p1"] = asm["_emscripten_bind_btDynamicsWorld__addRigidBody_p1"];
var _emscripten_bind_btCollisionWorld__ConvexResultCallback__hasHit_p0 = Module["_emscripten_bind_btCollisionWorld__ConvexResultCallback__hasHit_p0"] = asm["_emscripten_bind_btCollisionWorld__ConvexResultCallback__hasHit_p0"];
var _emscripten_bind_btPolyhedralConvexShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getLocalScalingNV_p0"];
var _emscripten_bind_btConeShapeZ__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btConeShapeZ__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btConeShapeZ__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_btConeShape__serializeSingleShape_p1 = Module["_emscripten_bind_btConeShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btConeShape__serializeSingleShape_p1"];
var _emscripten_bind_btConvexTriangleMeshShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__needsCollision_p1 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__needsCollision_p1"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__needsCollision_p1"];
var _emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p1"];
var _emscripten_bind_btBoxShape__isConvex2d_p0 = Module["_emscripten_bind_btBoxShape__isConvex2d_p0"] = asm["_emscripten_bind_btBoxShape__isConvex2d_p0"];
var _emscripten_bind_btMatrix3x3__setEulerYPR_p3 = Module["_emscripten_bind_btMatrix3x3__setEulerYPR_p3"] = asm["_emscripten_bind_btMatrix3x3__setEulerYPR_p3"];
var _emscripten_bind_btRigidBody__setCollisionShape_p1 = Module["_emscripten_bind_btRigidBody__setCollisionShape_p1"] = asm["_emscripten_bind_btRigidBody__setCollisionShape_p1"];
var _emscripten_bind_btCollisionWorld__objectQuerySingle_p8 = Module["_emscripten_bind_btCollisionWorld__objectQuerySingle_p8"] = asm["_emscripten_bind_btCollisionWorld__objectQuerySingle_p8"];
var _emscripten_bind_btConcaveShape__isInfinite_p0 = Module["_emscripten_bind_btConcaveShape__isInfinite_p0"] = asm["_emscripten_bind_btConcaveShape__isInfinite_p0"];
var _emscripten_bind_btHinge2Constraint__setFrames_p2 = Module["_emscripten_bind_btHinge2Constraint__setFrames_p2"] = asm["_emscripten_bind_btHinge2Constraint__setFrames_p2"];
var _emscripten_bind_btHingeConstraint__setLimit_p3 = Module["_emscripten_bind_btHingeConstraint__setLimit_p3"] = asm["_emscripten_bind_btHingeConstraint__setLimit_p3"];
var _emscripten_bind_btHingeConstraint__setLimit_p2 = Module["_emscripten_bind_btHingeConstraint__setLimit_p2"] = asm["_emscripten_bind_btHingeConstraint__setLimit_p2"];
var _emscripten_bind_btMatrix3x3__tdoty_p1 = Module["_emscripten_bind_btMatrix3x3__tdoty_p1"] = asm["_emscripten_bind_btMatrix3x3__tdoty_p1"];
var _emscripten_bind_btConcaveShape__getShapeType_p0 = Module["_emscripten_bind_btConcaveShape__getShapeType_p0"] = asm["_emscripten_bind_btConcaveShape__getShapeType_p0"];
var _emscripten_bind_btCollisionObject__getInterpolationLinearVelocity_p0 = Module["_emscripten_bind_btCollisionObject__getInterpolationLinearVelocity_p0"] = asm["_emscripten_bind_btCollisionObject__getInterpolationLinearVelocity_p0"];
var _emscripten_bind_btHingeConstraint__setLimit_p5 = Module["_emscripten_bind_btHingeConstraint__setLimit_p5"] = asm["_emscripten_bind_btHingeConstraint__setLimit_p5"];
var _emscripten_bind_btCylinderShapeZ__getMargin_p0 = Module["_emscripten_bind_btCylinderShapeZ__getMargin_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getMargin_p0"];
var _emscripten_bind_btConvexInternalAabbCachingShape__setLocalScaling_p1 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__setLocalScaling_p1"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__setLocalScaling_p1"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__recalcLocalAabb_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__recalcLocalAabb_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__recalcLocalAabb_p0"];
var _emscripten_bind_btJacobianEntry__set_m_1MinvJt_p1 = Module["_emscripten_bind_btJacobianEntry__set_m_1MinvJt_p1"] = asm["_emscripten_bind_btJacobianEntry__set_m_1MinvJt_p1"];
var _emscripten_bind_btCapsuleShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btCapsuleShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btCapsuleShape__calculateLocalInertia_p2"];
var _emscripten_bind_btMultiSphereShape__serializeSingleShape_p1 = Module["_emscripten_bind_btMultiSphereShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btMultiSphereShape__serializeSingleShape_p1"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalDamping_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalDamping_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalDamping_p1"];
var _emscripten_bind_btPairCachingGhostObject__setRestitution_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setRestitution_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setRestitution_p1"];
var _emscripten_bind_btDefaultMotionState__getWorldTransform_p1 = Module["_emscripten_bind_btDefaultMotionState__getWorldTransform_p1"] = asm["_emscripten_bind_btDefaultMotionState__getWorldTransform_p1"];
var _emscripten_bind_btDbvtProxy__get_m_aabbMax_p0 = Module["_emscripten_bind_btDbvtProxy__get_m_aabbMax_p0"] = asm["_emscripten_bind_btDbvtProxy__get_m_aabbMax_p0"];
var _emscripten_bind_btVector3____destroy___p0 = Module["_emscripten_bind_btVector3____destroy___p0"] = asm["_emscripten_bind_btVector3____destroy___p0"];
var _emscripten_bind_btConeShapeX__getRadius_p0 = Module["_emscripten_bind_btConeShapeX__getRadius_p0"] = asm["_emscripten_bind_btConeShapeX__getRadius_p0"];
var _emscripten_bind_btStaticPlaneShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btStaticPlaneShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btStaticPlaneShape__getAngularMotionDisc_p0"];
var _emscripten_bind_bt32BitAxisSweep3__printStats_p0 = Module["_emscripten_bind_bt32BitAxisSweep3__printStats_p0"] = asm["_emscripten_bind_bt32BitAxisSweep3__printStats_p0"];
var _emscripten_bind_btMatrix3x3__tdotz_p1 = Module["_emscripten_bind_btMatrix3x3__tdotz_p1"] = asm["_emscripten_bind_btMatrix3x3__tdotz_p1"];
var _emscripten_bind_btCapsuleShapeZ__getMarginNonVirtual_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getMarginNonVirtual_p0"];
var _emscripten_bind_btConeTwistConstraint__calcAngleInfo_p0 = Module["_emscripten_bind_btConeTwistConstraint__calcAngleInfo_p0"] = asm["_emscripten_bind_btConeTwistConstraint__calcAngleInfo_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__getSynchronizeAllMotionStates_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getSynchronizeAllMotionStates_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getSynchronizeAllMotionStates_p0"];
var _emscripten_bind_btBU_Simplex1to4__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btBU_Simplex1to4__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btDispatcherInfo__set_m_stepCount_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_stepCount_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_stepCount_p1"];
var _emscripten_bind_btStridingMeshInterface__unLockReadOnlyVertexBase_p1 = Module["_emscripten_bind_btStridingMeshInterface__unLockReadOnlyVertexBase_p1"] = asm["_emscripten_bind_btStridingMeshInterface__unLockReadOnlyVertexBase_p1"];
var _emscripten_bind_btRaycastVehicle__getCurrentSpeedKmHour_p0 = Module["_emscripten_bind_btRaycastVehicle__getCurrentSpeedKmHour_p0"] = asm["_emscripten_bind_btRaycastVehicle__getCurrentSpeedKmHour_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__addConstraint_p2 = Module["_emscripten_bind_btDiscreteDynamicsWorld__addConstraint_p2"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__addConstraint_p2"];
var _emscripten_bind_btConvexHullShape__getShapeType_p0 = Module["_emscripten_bind_btConvexHullShape__getShapeType_p0"] = asm["_emscripten_bind_btConvexHullShape__getShapeType_p0"];
var _emscripten_bind_btOverlappingPairCache__cleanOverlappingPair_p2 = Module["_emscripten_bind_btOverlappingPairCache__cleanOverlappingPair_p2"] = asm["_emscripten_bind_btOverlappingPairCache__cleanOverlappingPair_p2"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getInfo2_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getInfo2_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getInfo2_p1"];
var _emscripten_bind_btHingeConstraint__setupSolverConstraint_p4 = Module["_emscripten_bind_btHingeConstraint__setupSolverConstraint_p4"] = asm["_emscripten_bind_btHingeConstraint__setupSolverConstraint_p4"];
var _emscripten_bind_btStaticPlaneShape__serializeSingleShape_p1 = Module["_emscripten_bind_btStaticPlaneShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btStaticPlaneShape__serializeSingleShape_p1"];
var _emscripten_bind_btBvhTriangleMeshShape__getTriangleInfoMap_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getTriangleInfoMap_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getTriangleInfoMap_p0"];
var _emscripten_bind_CProfileNode__Return_p0 = Module["_emscripten_bind_CProfileNode__Return_p0"] = asm["_emscripten_bind_CProfileNode__Return_p0"];
var _emscripten_bind_btUniversalConstraint__setupSolverConstraint_p4 = Module["_emscripten_bind_btUniversalConstraint__setupSolverConstraint_p4"] = asm["_emscripten_bind_btUniversalConstraint__setupSolverConstraint_p4"];
var _emscripten_bind_btGhostObject__setWorldTransform_p1 = Module["_emscripten_bind_btGhostObject__setWorldTransform_p1"] = asm["_emscripten_bind_btGhostObject__setWorldTransform_p1"];
var _emscripten_bind_btStaticPlaneShape__isSoftBody_p0 = Module["_emscripten_bind_btStaticPlaneShape__isSoftBody_p0"] = asm["_emscripten_bind_btStaticPlaneShape__isSoftBody_p0"];
var _emscripten_bind_btDispatcherInfo__btDispatcherInfo_p0 = Module["_emscripten_bind_btDispatcherInfo__btDispatcherInfo_p0"] = asm["_emscripten_bind_btDispatcherInfo__btDispatcherInfo_p0"];
var _emscripten_bind_bt32BitAxisSweep3__createProxy_p8 = Module["_emscripten_bind_bt32BitAxisSweep3__createProxy_p8"] = asm["_emscripten_bind_bt32BitAxisSweep3__createProxy_p8"];
var _emscripten_bind_btVector4__getSkewSymmetricMatrix_p3 = Module["_emscripten_bind_btVector4__getSkewSymmetricMatrix_p3"] = asm["_emscripten_bind_btVector4__getSkewSymmetricMatrix_p3"];
var _emscripten_bind_btCapsuleShapeZ__getMargin_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getMargin_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getMargin_p0"];
var _emscripten_bind_btGeneric6DofConstraint__calcAnchorPos_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__calcAnchorPos_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__calcAnchorPos_p0"];
var _emscripten_bind_btConvexInternalAabbCachingShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btMultiSphereShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btMultiSphereShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btMultiSphereShape__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_btGhostObject__isStaticObject_p0 = Module["_emscripten_bind_btGhostObject__isStaticObject_p0"] = asm["_emscripten_bind_btGhostObject__isStaticObject_p0"];
var _emscripten_bind_btHinge2Constraint__isLimited_p1 = Module["_emscripten_bind_btHinge2Constraint__isLimited_p1"] = asm["_emscripten_bind_btHinge2Constraint__isLimited_p1"];
var _emscripten_bind_btRaycastVehicle__addWheel_p7 = Module["_emscripten_bind_btRaycastVehicle__addWheel_p7"] = asm["_emscripten_bind_btRaycastVehicle__addWheel_p7"];
var _emscripten_bind_btDispatcherInfo__get_m_useConvexConservativeDistanceUtil_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_useConvexConservativeDistanceUtil_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_useConvexConservativeDistanceUtil_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_collisionFilterGroup_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_collisionFilterGroup_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_collisionFilterGroup_p1"];
var _emscripten_bind_btConeTwistConstraint__setDbgDrawSize_p1 = Module["_emscripten_bind_btConeTwistConstraint__setDbgDrawSize_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setDbgDrawSize_p1"];
var _emscripten_bind_btConcaveShape__setLocalScaling_p1 = Module["_emscripten_bind_btConcaveShape__setLocalScaling_p1"] = asm["_emscripten_bind_btConcaveShape__setLocalScaling_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setUseFrameOffset_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setUseFrameOffset_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setUseFrameOffset_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__removeVehicle_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__removeVehicle_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__removeVehicle_p1"];
var _emscripten_bind_btGhostObject__getCcdMotionThreshold_p0 = Module["_emscripten_bind_btGhostObject__getCcdMotionThreshold_p0"] = asm["_emscripten_bind_btGhostObject__getCcdMotionThreshold_p0"];
var _emscripten_bind_btDbvtProxy____destroy___p0 = Module["_emscripten_bind_btDbvtProxy____destroy___p0"] = asm["_emscripten_bind_btDbvtProxy____destroy___p0"];
var _emscripten_bind_btConvexHullShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btConvexHullShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btConvexHullShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btDynamicsWorld__debugDrawObject_p3 = Module["_emscripten_bind_btDynamicsWorld__debugDrawObject_p3"] = asm["_emscripten_bind_btDynamicsWorld__debugDrawObject_p3"];
var _emscripten_bind_btCylinderShapeZ__getHalfExtentsWithoutMargin_p0 = Module["_emscripten_bind_btCylinderShapeZ__getHalfExtentsWithoutMargin_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getHalfExtentsWithoutMargin_p0"];
var _emscripten_bind_btMatrix3x3__tdotx_p1 = Module["_emscripten_bind_btMatrix3x3__tdotx_p1"] = asm["_emscripten_bind_btMatrix3x3__tdotx_p1"];
var _emscripten_bind_btTriangleInfo__btTriangleInfo_p0 = Module["_emscripten_bind_btTriangleInfo__btTriangleInfo_p0"] = asm["_emscripten_bind_btTriangleInfo__btTriangleInfo_p0"];
var _emscripten_bind_btWheelInfo__get_m_maxSuspensionTravelCm_p0 = Module["_emscripten_bind_btWheelInfo__get_m_maxSuspensionTravelCm_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_maxSuspensionTravelCm_p0"];
var _emscripten_bind_btDbvtBroadphase__set_m_updates_done_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_updates_done_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_updates_done_p1"];
var _emscripten_bind_btConvexShape__getAabb_p3 = Module["_emscripten_bind_btConvexShape__getAabb_p3"] = asm["_emscripten_bind_btConvexShape__getAabb_p3"];
var _emscripten_bind_btConeShapeX__btConeShapeX_p2 = Module["_emscripten_bind_btConeShapeX__btConeShapeX_p2"] = asm["_emscripten_bind_btConeShapeX__btConeShapeX_p2"];
var _emscripten_bind_btWheelInfo__set_m_clippedInvContactDotSuspension_p1 = Module["_emscripten_bind_btWheelInfo__set_m_clippedInvContactDotSuspension_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_clippedInvContactDotSuspension_p1"];
var _emscripten_bind_btConvexInternalShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btConvexInternalShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btConvexInternalShape__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btCompoundShape__serialize_p2 = Module["_emscripten_bind_btCompoundShape__serialize_p2"] = asm["_emscripten_bind_btCompoundShape__serialize_p2"];
var _emscripten_bind_btUniversalConstraint__getAngularUpperLimit_p1 = Module["_emscripten_bind_btUniversalConstraint__getAngularUpperLimit_p1"] = asm["_emscripten_bind_btUniversalConstraint__getAngularUpperLimit_p1"];
var _emscripten_bind_btWheelInfo__set_m_suspensionStiffness_p1 = Module["_emscripten_bind_btWheelInfo__set_m_suspensionStiffness_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_suspensionStiffness_p1"];
var _emscripten_bind_btSphereShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btSphereShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btSphereShape__getImplicitShapeDimensions_p0"];
var _emscripten_bind_btConcaveShape__setUserPointer_p1 = Module["_emscripten_bind_btConcaveShape__setUserPointer_p1"] = asm["_emscripten_bind_btConcaveShape__setUserPointer_p1"];
var _emscripten_bind_btPolyhedralConvexShape__initializePolyhedralFeatures_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__initializePolyhedralFeatures_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__initializePolyhedralFeatures_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p3 = Module["_emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p3"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p3"];
var _emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p2 = Module["_emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p2"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p2"];
var _emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p1"];
var _emscripten_bind_btConeTwistConstraint__setFrames_p2 = Module["_emscripten_bind_btConeTwistConstraint__setFrames_p2"] = asm["_emscripten_bind_btConeTwistConstraint__setFrames_p2"];
var _emscripten_bind_btManifoldPoint__getAppliedImpulse_p0 = Module["_emscripten_bind_btManifoldPoint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btManifoldPoint__getAppliedImpulse_p0"];
var _emscripten_bind_btUniformScalingShape__isConvex2d_p0 = Module["_emscripten_bind_btUniformScalingShape__isConvex2d_p0"] = asm["_emscripten_bind_btUniformScalingShape__isConvex2d_p0"];
var _emscripten_bind_btDefaultMotionState__set_m_userPointer_p1 = Module["_emscripten_bind_btDefaultMotionState__set_m_userPointer_p1"] = asm["_emscripten_bind_btDefaultMotionState__set_m_userPointer_p1"];
var _emscripten_bind_btWheelInfo__set_m_worldTransform_p1 = Module["_emscripten_bind_btWheelInfo__set_m_worldTransform_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_worldTransform_p1"];
var _emscripten_bind_btDynamicsWorld__getForceUpdateAllAabbs_p0 = Module["_emscripten_bind_btDynamicsWorld__getForceUpdateAllAabbs_p0"] = asm["_emscripten_bind_btDynamicsWorld__getForceUpdateAllAabbs_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getInfo1_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getInfo1_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getInfo1_p1"];
var _emscripten_bind_btSimpleBroadphase__rayTest_p4 = Module["_emscripten_bind_btSimpleBroadphase__rayTest_p4"] = asm["_emscripten_bind_btSimpleBroadphase__rayTest_p4"];
var _emscripten_bind_btWheelInfo__get_m_clippedInvContactDotSuspension_p0 = Module["_emscripten_bind_btWheelInfo__get_m_clippedInvContactDotSuspension_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_clippedInvContactDotSuspension_p0"];
var _emscripten_bind_btHeightfieldTerrainShape__isNonMoving_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__isNonMoving_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__isNonMoving_p0"];
var _emscripten_bind_btCollisionObject__setDeactivationTime_p1 = Module["_emscripten_bind_btCollisionObject__setDeactivationTime_p1"] = asm["_emscripten_bind_btCollisionObject__setDeactivationTime_p1"];
var _emscripten_bind_btHinge2Constraint__setLinearLowerLimit_p1 = Module["_emscripten_bind_btHinge2Constraint__setLinearLowerLimit_p1"] = asm["_emscripten_bind_btHinge2Constraint__setLinearLowerLimit_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__getDispatcher_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getDispatcher_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getDispatcher_p0"];
var _emscripten_bind_btCollisionShape__setUserPointer_p1 = Module["_emscripten_bind_btCollisionShape__setUserPointer_p1"] = asm["_emscripten_bind_btCollisionShape__setUserPointer_p1"];
var _emscripten_bind_btQuantizedBvh__getSubtreeInfoArray_p0 = Module["_emscripten_bind_btQuantizedBvh__getSubtreeInfoArray_p0"] = asm["_emscripten_bind_btQuantizedBvh__getSubtreeInfoArray_p0"];
var _emscripten_bind_btVector4__setX_p1 = Module["_emscripten_bind_btVector4__setX_p1"] = asm["_emscripten_bind_btVector4__setX_p1"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getPlane_p3 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getPlane_p3"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getPlane_p3"];
var _emscripten_bind_btAngularLimit__getHalfRange_p0 = Module["_emscripten_bind_btAngularLimit__getHalfRange_p0"] = asm["_emscripten_bind_btAngularLimit__getHalfRange_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportingVertex_p1"];
var _emscripten_bind_btCollisionAlgorithmConstructionInfo__get_m_dispatcher1_p0 = Module["_emscripten_bind_btCollisionAlgorithmConstructionInfo__get_m_dispatcher1_p0"] = asm["_emscripten_bind_btCollisionAlgorithmConstructionInfo__get_m_dispatcher1_p0"];
var _emscripten_bind_btCompoundShape__isSoftBody_p0 = Module["_emscripten_bind_btCompoundShape__isSoftBody_p0"] = asm["_emscripten_bind_btCompoundShape__isSoftBody_p0"];
var _emscripten_bind_btPolyhedralConvexShape__isConcave_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__isConcave_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__isConcave_p0"];
var _emscripten_bind_btWheelInfo__get_m_suspensionRestLength1_p0 = Module["_emscripten_bind_btWheelInfo__get_m_suspensionRestLength1_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_suspensionRestLength1_p0"];
var _emscripten_bind_btRigidBody__btRigidBody_p3 = Module["_emscripten_bind_btRigidBody__btRigidBody_p3"] = asm["_emscripten_bind_btRigidBody__btRigidBody_p3"];
var _emscripten_bind_btRigidBody__btRigidBody_p1 = Module["_emscripten_bind_btRigidBody__btRigidBody_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBody_p1"];
var _emscripten_bind_btConcaveShape__getBoundingSphere_p2 = Module["_emscripten_bind_btConcaveShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btConcaveShape__getBoundingSphere_p2"];
var _emscripten_bind_btGhostObject__btGhostObject_p0 = Module["_emscripten_bind_btGhostObject__btGhostObject_p0"] = asm["_emscripten_bind_btGhostObject__btGhostObject_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__synchronizeMotionStates_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__synchronizeMotionStates_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__synchronizeMotionStates_p0"];
var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionFilterMask_p1 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionFilterMask_p1"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionFilterMask_p1"];
var _emscripten_bind_btGeneric6DofConstraint__getDbgDrawSize_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getDbgDrawSize_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getDbgDrawSize_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getShapeType_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getShapeType_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getShapeType_p0"];
var _emscripten_bind_btRigidBody__isInWorld_p0 = Module["_emscripten_bind_btRigidBody__isInWorld_p0"] = asm["_emscripten_bind_btRigidBody__isInWorld_p0"];
var _emscripten_bind_btDynamicsWorld__updateSingleAabb_p1 = Module["_emscripten_bind_btDynamicsWorld__updateSingleAabb_p1"] = asm["_emscripten_bind_btDynamicsWorld__updateSingleAabb_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__synchronizeMotionStates_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__synchronizeMotionStates_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__synchronizeMotionStates_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__getDebugDrawer_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getDebugDrawer_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getDebugDrawer_p0"];
var _emscripten_bind_btDbvtBroadphase__get_m_paircache_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_paircache_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_paircache_p0"];
var _emscripten_bind_btUniversalConstraint__setLinearUpperLimit_p1 = Module["_emscripten_bind_btUniversalConstraint__setLinearUpperLimit_p1"] = asm["_emscripten_bind_btUniversalConstraint__setLinearUpperLimit_p1"];
var _emscripten_bind_btBroadphaseProxy__set_m_aabbMin_p1 = Module["_emscripten_bind_btBroadphaseProxy__set_m_aabbMin_p1"] = asm["_emscripten_bind_btBroadphaseProxy__set_m_aabbMin_p1"];
var _emscripten_bind_btTriangleMesh__hasPremadeAabb_p0 = Module["_emscripten_bind_btTriangleMesh__hasPremadeAabb_p0"] = asm["_emscripten_bind_btTriangleMesh__hasPremadeAabb_p0"];
var _emscripten_bind_btCapsuleShapeZ__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btCapsuleShapeZ__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btCapsuleShapeZ__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_btCollisionObject__getRootCollisionShape_p0 = Module["_emscripten_bind_btCollisionObject__getRootCollisionShape_p0"] = asm["_emscripten_bind_btCollisionObject__getRootCollisionShape_p0"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_closestHitFraction_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_closestHitFraction_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_closestHitFraction_p1"];
var _emscripten_bind_btSimpleBroadphaseProxy__isNonMoving_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__isNonMoving_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__isNonMoving_p1"];
var _emscripten_bind_btConeTwistConstraint__getUserConstraintId_p0 = Module["_emscripten_bind_btConeTwistConstraint__getUserConstraintId_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getUserConstraintId_p0"];
var _emscripten_bind_btCollisionObject__getCcdMotionThreshold_p0 = Module["_emscripten_bind_btCollisionObject__getCcdMotionThreshold_p0"] = asm["_emscripten_bind_btCollisionObject__getCcdMotionThreshold_p0"];
var _emscripten_bind_btCapsuleShapeZ__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btCapsuleShapeZ__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btCapsuleShapeZ__setImplicitShapeDimensions_p1"];
var _emscripten_bind_btCollisionConfiguration__getCollisionAlgorithmCreateFunc_p2 = Module["_emscripten_bind_btCollisionConfiguration__getCollisionAlgorithmCreateFunc_p2"] = asm["_emscripten_bind_btCollisionConfiguration__getCollisionAlgorithmCreateFunc_p2"];
var _emscripten_bind_btRigidBody__setFriction_p1 = Module["_emscripten_bind_btRigidBody__setFriction_p1"] = asm["_emscripten_bind_btRigidBody__setFriction_p1"];
var _emscripten_bind_btCylinderShapeX__getAabb_p3 = Module["_emscripten_bind_btCylinderShapeX__getAabb_p3"] = asm["_emscripten_bind_btCylinderShapeX__getAabb_p3"];
var _emscripten_bind_btVector4__closestAxis_p0 = Module["_emscripten_bind_btVector4__closestAxis_p0"] = asm["_emscripten_bind_btVector4__closestAxis_p0"];
var _emscripten_bind_btConeShape__setLocalScaling_p1 = Module["_emscripten_bind_btConeShape__setLocalScaling_p1"] = asm["_emscripten_bind_btConeShape__setLocalScaling_p1"];
var _emscripten_bind_btPolyhedralConvexShape__serializeSingleShape_p1 = Module["_emscripten_bind_btPolyhedralConvexShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btPolyhedralConvexShape__serializeSingleShape_p1"];
var _emscripten_bind_btVector4__w_p0 = Module["_emscripten_bind_btVector4__w_p0"] = asm["_emscripten_bind_btVector4__w_p0"];
var _emscripten_bind_btJacobianEntry__set_m_aJ_p1 = Module["_emscripten_bind_btJacobianEntry__set_m_aJ_p1"] = asm["_emscripten_bind_btJacobianEntry__set_m_aJ_p1"];
var _emscripten_bind_btVector4__setZ_p1 = Module["_emscripten_bind_btVector4__setZ_p1"] = asm["_emscripten_bind_btVector4__setZ_p1"];
var _emscripten_bind_btBvhTriangleMeshShape__performRaycast_p3 = Module["_emscripten_bind_btBvhTriangleMeshShape__performRaycast_p3"] = asm["_emscripten_bind_btBvhTriangleMeshShape__performRaycast_p3"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__setMargin_p1 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__setMargin_p1"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__setMargin_p1"];
var _emscripten_bind_btUniversalConstraint__getRotationalLimitMotor_p1 = Module["_emscripten_bind_btUniversalConstraint__getRotationalLimitMotor_p1"] = asm["_emscripten_bind_btUniversalConstraint__getRotationalLimitMotor_p1"];
var _emscripten_bind_btVector3__furthestAxis_p0 = Module["_emscripten_bind_btVector3__furthestAxis_p0"] = asm["_emscripten_bind_btVector3__furthestAxis_p0"];
var _emscripten_bind_btUniformScalingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btUniformScalingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btUniformScalingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_closestHitFraction_p0 = Module["_emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_closestHitFraction_p0"] = asm["_emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_closestHitFraction_p0"];
var _emscripten_bind_btHinge2Constraint__setAngularLowerLimit_p1 = Module["_emscripten_bind_btHinge2Constraint__setAngularLowerLimit_p1"] = asm["_emscripten_bind_btHinge2Constraint__setAngularLowerLimit_p1"];
var _emscripten_bind_btSequentialImpulseConstraintSolver__btRandInt2_p1 = Module["_emscripten_bind_btSequentialImpulseConstraintSolver__btRandInt2_p1"] = asm["_emscripten_bind_btSequentialImpulseConstraintSolver__btRandInt2_p1"];
var _emscripten_bind_btUniversalConstraint__getUserConstraintType_p0 = Module["_emscripten_bind_btUniversalConstraint__getUserConstraintType_p0"] = asm["_emscripten_bind_btUniversalConstraint__getUserConstraintType_p0"];
var _emscripten_bind_btUniversalConstraint__getRigidBodyB_p0 = Module["_emscripten_bind_btUniversalConstraint__getRigidBodyB_p0"] = asm["_emscripten_bind_btUniversalConstraint__getRigidBodyB_p0"];
var _emscripten_bind_btEmptyShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btEmptyShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btEmptyShape__calculateLocalInertia_p2"];
var _emscripten_bind_btPairCachingGhostObject__setUserPointer_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setUserPointer_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setUserPointer_p1"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionFilterGroup_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionFilterGroup_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionFilterGroup_p1"];
var _emscripten_bind_btPersistentManifold__clearManifold_p0 = Module["_emscripten_bind_btPersistentManifold__clearManifold_p0"] = asm["_emscripten_bind_btPersistentManifold__clearManifold_p0"];
var _emscripten_bind_btVector3__safeNormalize_p0 = Module["_emscripten_bind_btVector3__safeNormalize_p0"] = asm["_emscripten_bind_btVector3__safeNormalize_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__isCompound_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__isCompound_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__isCompound_p0"];
var _emscripten_bind_btPairCachingGhostObject__hasAnisotropicFriction_p0 = Module["_emscripten_bind_btPairCachingGhostObject__hasAnisotropicFriction_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__hasAnisotropicFriction_p0"];
var _emscripten_bind_btVector4__isZero_p0 = Module["_emscripten_bind_btVector4__isZero_p0"] = asm["_emscripten_bind_btVector4__isZero_p0"];
var _emscripten_bind_btVector4__setY_p1 = Module["_emscripten_bind_btVector4__setY_p1"] = asm["_emscripten_bind_btVector4__setY_p1"];
var _emscripten_bind_btVector4__lerp_p2 = Module["_emscripten_bind_btVector4__lerp_p2"] = asm["_emscripten_bind_btVector4__lerp_p2"];
var _emscripten_bind_btCollisionWorld__RayResultCallback__get_m_closestHitFraction_p0 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_closestHitFraction_p0"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_closestHitFraction_p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_motionState_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_motionState_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_motionState_p0"];
var _emscripten_bind_btDispatcher__needsCollision_p2 = Module["_emscripten_bind_btDispatcher__needsCollision_p2"] = asm["_emscripten_bind_btDispatcher__needsCollision_p2"];
var _emscripten_bind_btCollisionObject__getContactProcessingThreshold_p0 = Module["_emscripten_bind_btCollisionObject__getContactProcessingThreshold_p0"] = asm["_emscripten_bind_btCollisionObject__getContactProcessingThreshold_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintPtr_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintPtr_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintPtr_p1"];
var _emscripten_bind_btCylinderShapeX__getBoundingSphere_p2 = Module["_emscripten_bind_btCylinderShapeX__getBoundingSphere_p2"] = asm["_emscripten_bind_btCylinderShapeX__getBoundingSphere_p2"];
var _emscripten_bind_btRigidBody__getNumConstraintRefs_p0 = Module["_emscripten_bind_btRigidBody__getNumConstraintRefs_p0"] = asm["_emscripten_bind_btRigidBody__getNumConstraintRefs_p0"];
var _emscripten_bind_btCylinderShapeZ__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btCylinderShapeZ__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btCylinderShapeZ__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btRotationalLimitMotor__get_m_accumulatedImpulse_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_accumulatedImpulse_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_accumulatedImpulse_p0"];
var _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_stackAlloc_p1 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_stackAlloc_p1"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_stackAlloc_p1"];
var _emscripten_bind_btSliderConstraint__getUseLinearReferenceFrameA_p0 = Module["_emscripten_bind_btSliderConstraint__getUseLinearReferenceFrameA_p0"] = asm["_emscripten_bind_btSliderConstraint__getUseLinearReferenceFrameA_p0"];
var _emscripten_bind_btGeneric6DofConstraint__setAngularUpperLimit_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setAngularUpperLimit_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setAngularUpperLimit_p1"];
var _emscripten_bind_btContactConstraint__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btContactConstraint__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btContactConstraint__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btSliderConstraint__getCalculatedTransformA_p0 = Module["_emscripten_bind_btSliderConstraint__getCalculatedTransformA_p0"] = asm["_emscripten_bind_btSliderConstraint__getCalculatedTransformA_p0"];
var _emscripten_bind_btTypedConstraint__getInfo1_p1 = Module["_emscripten_bind_btTypedConstraint__getInfo1_p1"] = asm["_emscripten_bind_btTypedConstraint__getInfo1_p1"];
var _emscripten_bind_btQuaternion__getW_p0 = Module["_emscripten_bind_btQuaternion__getW_p0"] = asm["_emscripten_bind_btQuaternion__getW_p0"];
var _emscripten_bind_btCapsuleShapeZ__getAabbSlow_p3 = Module["_emscripten_bind_btCapsuleShapeZ__getAabbSlow_p3"] = asm["_emscripten_bind_btCapsuleShapeZ__getAabbSlow_p3"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setDamping_p2 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setDamping_p2"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setDamping_p2"];
var _emscripten_bind_btSequentialImpulseConstraintSolver__prepareSolve_p2 = Module["_emscripten_bind_btSequentialImpulseConstraintSolver__prepareSolve_p2"] = asm["_emscripten_bind_btSequentialImpulseConstraintSolver__prepareSolve_p2"];
var _emscripten_bind_btSphereShape__setMargin_p1 = Module["_emscripten_bind_btSphereShape__setMargin_p1"] = asm["_emscripten_bind_btSphereShape__setMargin_p1"];
var _emscripten_bind_btQuadWord____destroy___p0 = Module["_emscripten_bind_btQuadWord____destroy___p0"] = asm["_emscripten_bind_btQuadWord____destroy___p0"];
var _emscripten_bind_btSliderConstraint__setSoftnessDirLin_p1 = Module["_emscripten_bind_btSliderConstraint__setSoftnessDirLin_p1"] = asm["_emscripten_bind_btSliderConstraint__setSoftnessDirLin_p1"];
var _emscripten_bind_btSphereShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btSphereShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btSphereShape__getLocalScalingNV_p0"];
var _emscripten_bind_btConeShape__getAabb_p3 = Module["_emscripten_bind_btConeShape__getAabb_p3"] = asm["_emscripten_bind_btConeShape__getAabb_p3"];
var _emscripten_bind_btSliderConstraint__getTargetAngMotorVelocity_p0 = Module["_emscripten_bind_btSliderConstraint__getTargetAngMotorVelocity_p0"] = asm["_emscripten_bind_btSliderConstraint__getTargetAngMotorVelocity_p0"];
var _emscripten_bind_btBoxShape__getVertex_p2 = Module["_emscripten_bind_btBoxShape__getVertex_p2"] = asm["_emscripten_bind_btBoxShape__getVertex_p2"];
var _emscripten_bind_btSliderConstraint__setRestitutionDirLin_p1 = Module["_emscripten_bind_btSliderConstraint__setRestitutionDirLin_p1"] = asm["_emscripten_bind_btSliderConstraint__setRestitutionDirLin_p1"];
var _emscripten_bind_btCylinderShapeX__isCompound_p0 = Module["_emscripten_bind_btCylinderShapeX__isCompound_p0"] = asm["_emscripten_bind_btCylinderShapeX__isCompound_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__getConstraint_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__getConstraint_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getConstraint_p1"];
var _emscripten_bind_btGhostObject__activate_p0 = Module["_emscripten_bind_btGhostObject__activate_p0"] = asm["_emscripten_bind_btGhostObject__activate_p0"];
var _emscripten_bind_btCollisionWorld__debugDrawWorld_p0 = Module["_emscripten_bind_btCollisionWorld__debugDrawWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__debugDrawWorld_p0"];
var _emscripten_bind_btDbvtProxy__set_m_clientObject_p1 = Module["_emscripten_bind_btDbvtProxy__set_m_clientObject_p1"] = asm["_emscripten_bind_btDbvtProxy__set_m_clientObject_p1"];
var _emscripten_bind_btSphereShape__getShapeType_p0 = Module["_emscripten_bind_btSphereShape__getShapeType_p0"] = asm["_emscripten_bind_btSphereShape__getShapeType_p0"];
var _emscripten_bind_btWheelInfo__set_m_wheelsSuspensionForce_p1 = Module["_emscripten_bind_btWheelInfo__set_m_wheelsSuspensionForce_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_wheelsSuspensionForce_p1"];
var _emscripten_bind_btCollisionObject__getHitFraction_p0 = Module["_emscripten_bind_btCollisionObject__getHitFraction_p0"] = asm["_emscripten_bind_btCollisionObject__getHitFraction_p0"];
var _emscripten_bind_btCompoundShape__updateChildTransform_p3 = Module["_emscripten_bind_btCompoundShape__updateChildTransform_p3"] = asm["_emscripten_bind_btCompoundShape__updateChildTransform_p3"];
var _emscripten_bind_btCompoundShape__updateChildTransform_p2 = Module["_emscripten_bind_btCompoundShape__updateChildTransform_p2"] = asm["_emscripten_bind_btCompoundShape__updateChildTransform_p2"];
var _emscripten_bind_btQuadWord__setZ_p1 = Module["_emscripten_bind_btQuadWord__setZ_p1"] = asm["_emscripten_bind_btQuadWord__setZ_p1"];
var _emscripten_bind_btTriangleMesh__btTriangleMesh_p2 = Module["_emscripten_bind_btTriangleMesh__btTriangleMesh_p2"] = asm["_emscripten_bind_btTriangleMesh__btTriangleMesh_p2"];
var _emscripten_bind_btTriangleMesh__btTriangleMesh_p1 = Module["_emscripten_bind_btTriangleMesh__btTriangleMesh_p1"] = asm["_emscripten_bind_btTriangleMesh__btTriangleMesh_p1"];
var _emscripten_bind_btCapsuleShapeZ__btCapsuleShapeZ_p2 = Module["_emscripten_bind_btCapsuleShapeZ__btCapsuleShapeZ_p2"] = asm["_emscripten_bind_btCapsuleShapeZ__btCapsuleShapeZ_p2"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_rayToWorld_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_rayToWorld_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_rayToWorld_p1"];
var _emscripten_bind_btMatrix3x3__timesTranspose_p1 = Module["_emscripten_bind_btMatrix3x3__timesTranspose_p1"] = asm["_emscripten_bind_btMatrix3x3__timesTranspose_p1"];
var _emscripten_bind_btMatrix3x3__absolute_p0 = Module["_emscripten_bind_btMatrix3x3__absolute_p0"] = asm["_emscripten_bind_btMatrix3x3__absolute_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__getWorldUserInfo_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getWorldUserInfo_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getWorldUserInfo_p0"];
var _emscripten_bind_btConeShapeX__localGetSupportingVertex_p1 = Module["_emscripten_bind_btConeShapeX__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btConeShapeX__localGetSupportingVertex_p1"];
var _emscripten_bind_btCylinderShapeX__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btCylinderShapeX__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btCylinderShapeX__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btRaycastVehicle__setSteeringValue_p2 = Module["_emscripten_bind_btRaycastVehicle__setSteeringValue_p2"] = asm["_emscripten_bind_btRaycastVehicle__setSteeringValue_p2"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setFrames_p2 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setFrames_p2"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setFrames_p2"];
var _emscripten_bind_btConeShape__getHeight_p0 = Module["_emscripten_bind_btConeShape__getHeight_p0"] = asm["_emscripten_bind_btConeShape__getHeight_p0"];
var _emscripten_bind_btBU_Simplex1to4__getPlane_p3 = Module["_emscripten_bind_btBU_Simplex1to4__getPlane_p3"] = asm["_emscripten_bind_btBU_Simplex1to4__getPlane_p3"];
var _emscripten_bind_btVector3__setY_p1 = Module["_emscripten_bind_btVector3__setY_p1"] = asm["_emscripten_bind_btVector3__setY_p1"];
var _emscripten_bind_bt32BitAxisSweep3__rayTest_p3 = Module["_emscripten_bind_bt32BitAxisSweep3__rayTest_p3"] = asm["_emscripten_bind_bt32BitAxisSweep3__rayTest_p3"];
var _emscripten_bind_btConvexInternalAabbCachingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _emscripten_bind_btDiscreteDynamicsWorld__getBroadphase_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getBroadphase_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getBroadphase_p0"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalAngularDampingThresholdSqr_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalAngularDampingThresholdSqr_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalAngularDampingThresholdSqr_p1"];
var _emscripten_bind_btConvexShape__setUserPointer_p1 = Module["_emscripten_bind_btConvexShape__setUserPointer_p1"] = asm["_emscripten_bind_btConvexShape__setUserPointer_p1"];
var _emscripten_bind_btConeShapeZ____destroy___p0 = Module["_emscripten_bind_btConeShapeZ____destroy___p0"] = asm["_emscripten_bind_btConeShapeZ____destroy___p0"];
var _emscripten_bind_btConeShapeX__serializeSingleShape_p1 = Module["_emscripten_bind_btConeShapeX__serializeSingleShape_p1"] = asm["_emscripten_bind_btConeShapeX__serializeSingleShape_p1"];
var _emscripten_bind_btDynamicsWorld__getNumCollisionObjects_p0 = Module["_emscripten_bind_btDynamicsWorld__getNumCollisionObjects_p0"] = asm["_emscripten_bind_btDynamicsWorld__getNumCollisionObjects_p0"];
var _emscripten_bind_btQuadWord__setX_p1 = Module["_emscripten_bind_btQuadWord__setX_p1"] = asm["_emscripten_bind_btQuadWord__setX_p1"];
var _emscripten_bind_btDispatcherInfo__get_m_useContinuous_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_useContinuous_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_useContinuous_p0"];
var _emscripten_bind_btPersistentManifold__btPersistentManifold_p0 = Module["_emscripten_bind_btPersistentManifold__btPersistentManifold_p0"] = asm["_emscripten_bind_btPersistentManifold__btPersistentManifold_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__removeAction_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__removeAction_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__removeAction_p1"];
var _emscripten_bind_btConvexHullShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btConvexHullShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btConvexHullShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btTranslationalLimitMotor__btTranslationalLimitMotor_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__btTranslationalLimitMotor_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__btTranslationalLimitMotor_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__removeCharacter_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__removeCharacter_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__removeCharacter_p1"];
var _emscripten_bind_btRotationalLimitMotor__get_m_normalCFM_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_normalCFM_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_normalCFM_p0"];
var _emscripten_bind_btStaticPlaneShape__getPlaneConstant_p0 = Module["_emscripten_bind_btStaticPlaneShape__getPlaneConstant_p0"] = asm["_emscripten_bind_btStaticPlaneShape__getPlaneConstant_p0"];
var _emscripten_bind_btDefaultMotionState__btDefaultMotionState_p2 = Module["_emscripten_bind_btDefaultMotionState__btDefaultMotionState_p2"] = asm["_emscripten_bind_btDefaultMotionState__btDefaultMotionState_p2"];
var _emscripten_bind_btDefaultMotionState__btDefaultMotionState_p1 = Module["_emscripten_bind_btDefaultMotionState__btDefaultMotionState_p1"] = asm["_emscripten_bind_btDefaultMotionState__btDefaultMotionState_p1"];
var _emscripten_bind_btDefaultMotionState__btDefaultMotionState_p0 = Module["_emscripten_bind_btDefaultMotionState__btDefaultMotionState_p0"] = asm["_emscripten_bind_btDefaultMotionState__btDefaultMotionState_p0"];
var _emscripten_bind_btConvexInternalAabbCachingShape__isConvex_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__isConvex_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__isConvex_p0"];
var _emscripten_bind_btAxisSweep3__resetPool_p1 = Module["_emscripten_bind_btAxisSweep3__resetPool_p1"] = asm["_emscripten_bind_btAxisSweep3__resetPool_p1"];
var _emscripten_bind_btOptimizedBvh__isQuantized_p0 = Module["_emscripten_bind_btOptimizedBvh__isQuantized_p0"] = asm["_emscripten_bind_btOptimizedBvh__isQuantized_p0"];
var _emscripten_bind_btHinge2Constraint__setupSolverConstraint_p4 = Module["_emscripten_bind_btHinge2Constraint__setupSolverConstraint_p4"] = asm["_emscripten_bind_btHinge2Constraint__setupSolverConstraint_p4"];
var _emscripten_bind_btVector4__setMax_p1 = Module["_emscripten_bind_btVector4__setMax_p1"] = asm["_emscripten_bind_btVector4__setMax_p1"];
var _emscripten_bind_btConeShapeZ__getName_p0 = Module["_emscripten_bind_btConeShapeZ__getName_p0"] = asm["_emscripten_bind_btConeShapeZ__getName_p0"];
var _emscripten_bind_btActionInterface__debugDraw_p1 = Module["_emscripten_bind_btActionInterface__debugDraw_p1"] = asm["_emscripten_bind_btActionInterface__debugDraw_p1"];
var _emscripten_bind_btSliderConstraint__getUserConstraintPtr_p0 = Module["_emscripten_bind_btSliderConstraint__getUserConstraintPtr_p0"] = asm["_emscripten_bind_btSliderConstraint__getUserConstraintPtr_p0"];
var _emscripten_bind_btTransform__mult_p2 = Module["_emscripten_bind_btTransform__mult_p2"] = asm["_emscripten_bind_btTransform__mult_p2"];
var _emscripten_bind_btSliderConstraint__setTargetLinMotorVelocity_p1 = Module["_emscripten_bind_btSliderConstraint__setTargetLinMotorVelocity_p1"] = asm["_emscripten_bind_btSliderConstraint__setTargetLinMotorVelocity_p1"];
var _emscripten_bind_btGhostObject__setContactProcessingThreshold_p1 = Module["_emscripten_bind_btGhostObject__setContactProcessingThreshold_p1"] = asm["_emscripten_bind_btGhostObject__setContactProcessingThreshold_p1"];
var _emscripten_bind_btVector3__btVector3_p0 = Module["_emscripten_bind_btVector3__btVector3_p0"] = asm["_emscripten_bind_btVector3__btVector3_p0"];
var _emscripten_bind_btConeShapeX__getLocalScaling_p0 = Module["_emscripten_bind_btConeShapeX__getLocalScaling_p0"] = asm["_emscripten_bind_btConeShapeX__getLocalScaling_p0"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__getBoundingSphere_p2 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__getBoundingSphere_p2"];
var _emscripten_bind_btBU_Simplex1to4__getNumEdges_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getNumEdges_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getNumEdges_p0"];
var _emscripten_bind_btCollisionShape__getName_p0 = Module["_emscripten_bind_btCollisionShape__getName_p0"] = asm["_emscripten_bind_btCollisionShape__getName_p0"];
var _emscripten_bind_btSliderConstraint__getUserConstraintType_p0 = Module["_emscripten_bind_btSliderConstraint__getUserConstraintType_p0"] = asm["_emscripten_bind_btSliderConstraint__getUserConstraintType_p0"];
var _emscripten_bind_btCylinderShapeZ__getAabb_p3 = Module["_emscripten_bind_btCylinderShapeZ__getAabb_p3"] = asm["_emscripten_bind_btCylinderShapeZ__getAabb_p3"];
var _emscripten_bind_btCollisionWorld__LocalConvexResult____destroy___p0 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult____destroy___p0"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult____destroy___p0"];
var _emscripten_bind_btCollisionObject__isStaticOrKinematicObject_p0 = Module["_emscripten_bind_btCollisionObject__isStaticOrKinematicObject_p0"] = asm["_emscripten_bind_btCollisionObject__isStaticOrKinematicObject_p0"];
var _emscripten_bind_btCollisionWorld__performDiscreteCollisionDetection_p0 = Module["_emscripten_bind_btCollisionWorld__performDiscreteCollisionDetection_p0"] = asm["_emscripten_bind_btCollisionWorld__performDiscreteCollisionDetection_p0"];
var _emscripten_bind_btCylinderShapeX__getMarginNV_p0 = Module["_emscripten_bind_btCylinderShapeX__getMarginNV_p0"] = asm["_emscripten_bind_btCylinderShapeX__getMarginNV_p0"];
var _emscripten_bind_btGhostObject__setInterpolationAngularVelocity_p1 = Module["_emscripten_bind_btGhostObject__setInterpolationAngularVelocity_p1"] = asm["_emscripten_bind_btGhostObject__setInterpolationAngularVelocity_p1"];
var _emscripten_bind_btEmptyShape__getName_p0 = Module["_emscripten_bind_btEmptyShape__getName_p0"] = asm["_emscripten_bind_btEmptyShape__getName_p0"];
var _emscripten_bind_btRaycastVehicle__updateWheelTransformsWS_p2 = Module["_emscripten_bind_btRaycastVehicle__updateWheelTransformsWS_p2"] = asm["_emscripten_bind_btRaycastVehicle__updateWheelTransformsWS_p2"];
var _emscripten_bind_btHingeConstraint__getDbgDrawSize_p0 = Module["_emscripten_bind_btHingeConstraint__getDbgDrawSize_p0"] = asm["_emscripten_bind_btHingeConstraint__getDbgDrawSize_p0"];
var _emscripten_bind_btTranslationalLimitMotor__set_m_accumulatedImpulse_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_accumulatedImpulse_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_accumulatedImpulse_p1"];
var _emscripten_bind_btRaycastVehicle__updateWheelTransformsWS_p1 = Module["_emscripten_bind_btRaycastVehicle__updateWheelTransformsWS_p1"] = asm["_emscripten_bind_btRaycastVehicle__updateWheelTransformsWS_p1"];
var _emscripten_bind_btDbvtBroadphase__get_m_pid_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_pid_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_pid_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getRelativePivotPosition_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getRelativePivotPosition_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getRelativePivotPosition_p1"];
var _emscripten_bind_btRigidBody__getPushVelocity_p0 = Module["_emscripten_bind_btRigidBody__getPushVelocity_p0"] = asm["_emscripten_bind_btRigidBody__getPushVelocity_p0"];
var _emscripten_bind_btStaticPlaneShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btStaticPlaneShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btStaticPlaneShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btConeShapeX__isConcave_p0 = Module["_emscripten_bind_btConeShapeX__isConcave_p0"] = asm["_emscripten_bind_btConeShapeX__isConcave_p0"];
var _emscripten_bind_btBoxShape__isCompound_p0 = Module["_emscripten_bind_btBoxShape__isCompound_p0"] = asm["_emscripten_bind_btBoxShape__isCompound_p0"];
var _emscripten_bind_btDbvtBroadphase__set_m_pid_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_pid_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_pid_p1"];
var _emscripten_bind_btDefaultCollisionConfiguration__getCollisionAlgorithmCreateFunc_p2 = Module["_emscripten_bind_btDefaultCollisionConfiguration__getCollisionAlgorithmCreateFunc_p2"] = asm["_emscripten_bind_btDefaultCollisionConfiguration__getCollisionAlgorithmCreateFunc_p2"];
var _emscripten_bind_btDefaultCollisionConfiguration__getCollisionAlgorithmPool_p0 = Module["_emscripten_bind_btDefaultCollisionConfiguration__getCollisionAlgorithmPool_p0"] = asm["_emscripten_bind_btDefaultCollisionConfiguration__getCollisionAlgorithmPool_p0"];
var _emscripten_bind_btHashPtr__equals_p1 = Module["_emscripten_bind_btHashPtr__equals_p1"] = asm["_emscripten_bind_btHashPtr__equals_p1"];
var _emscripten_bind_btSimpleBroadphaseProxy____destroy___p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy____destroy___p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy____destroy___p0"];
var _emscripten_bind_btCompoundShape__removeChildShapeByIndex_p1 = Module["_emscripten_bind_btCompoundShape__removeChildShapeByIndex_p1"] = asm["_emscripten_bind_btCompoundShape__removeChildShapeByIndex_p1"];
var _emscripten_bind_btConvexInternalShape__isConvex2d_p0 = Module["_emscripten_bind_btConvexInternalShape__isConvex2d_p0"] = asm["_emscripten_bind_btConvexInternalShape__isConvex2d_p0"];
var _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_maxSuspensionTravelCm_p0 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_maxSuspensionTravelCm_p0"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_maxSuspensionTravelCm_p0"];
var _emscripten_bind_btGeneric6DofConstraint__getFrameOffsetA_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getFrameOffsetA_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getFrameOffsetA_p0"];
var _emscripten_bind_btConeShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btConeShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btConeShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__addRigidBody_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__addRigidBody_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__addRigidBody_p1"];
var _emscripten_bind_btHeightfieldTerrainShape__setUseDiamondSubdivision_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__setUseDiamondSubdivision_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__setUseDiamondSubdivision_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__addRigidBody_p3 = Module["_emscripten_bind_btContinuousDynamicsWorld__addRigidBody_p3"] = asm["_emscripten_bind_btContinuousDynamicsWorld__addRigidBody_p3"];
var _emscripten_bind_btDbvtProxy__isNonMoving_p1 = Module["_emscripten_bind_btDbvtProxy__isNonMoving_p1"] = asm["_emscripten_bind_btDbvtProxy__isNonMoving_p1"];
var _emscripten_bind_btCollisionShape__getLocalScaling_p0 = Module["_emscripten_bind_btCollisionShape__getLocalScaling_p0"] = asm["_emscripten_bind_btCollisionShape__getLocalScaling_p0"];
var _emscripten_bind_btQuadWord__x_p0 = Module["_emscripten_bind_btQuadWord__x_p0"] = asm["_emscripten_bind_btQuadWord__x_p0"];
var _emscripten_bind_btCollisionDispatcher__getCollisionConfiguration_p0 = Module["_emscripten_bind_btCollisionDispatcher__getCollisionConfiguration_p0"] = asm["_emscripten_bind_btCollisionDispatcher__getCollisionConfiguration_p0"];
var _emscripten_bind_btGeneric6DofConstraint__getAppliedImpulse_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getAppliedImpulse_p0"];
var _emscripten_bind_btConstraintSolver__reset_p0 = Module["_emscripten_bind_btConstraintSolver__reset_p0"] = asm["_emscripten_bind_btConstraintSolver__reset_p0"];
var _emscripten_bind_btQuantizedBvh__deSerializeInPlace_p3 = Module["_emscripten_bind_btQuantizedBvh__deSerializeInPlace_p3"] = asm["_emscripten_bind_btQuantizedBvh__deSerializeInPlace_p3"];
var _emscripten_bind_btBvhTriangleMeshShape__refitTree_p2 = Module["_emscripten_bind_btBvhTriangleMeshShape__refitTree_p2"] = asm["_emscripten_bind_btBvhTriangleMeshShape__refitTree_p2"];
var _emscripten_bind_btCylinderShapeX__serialize_p2 = Module["_emscripten_bind_btCylinderShapeX__serialize_p2"] = asm["_emscripten_bind_btCylinderShapeX__serialize_p2"];
var _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionDamping_p1 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionDamping_p1"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionDamping_p1"];
var _emscripten_bind_bt32BitAxisSweep3__unQuantize_p3 = Module["_emscripten_bind_bt32BitAxisSweep3__unQuantize_p3"] = asm["_emscripten_bind_bt32BitAxisSweep3__unQuantize_p3"];
var _emscripten_bind_btPolyhedralConvexShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getImplicitShapeDimensions_p0"];
var _emscripten_bind_btSimpleBroadphaseProxy__get_m_aabbMin_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__get_m_aabbMin_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__get_m_aabbMin_p0"];
var _emscripten_bind_btTriangleInfoMap__set_m_planarEpsilon_p1 = Module["_emscripten_bind_btTriangleInfoMap__set_m_planarEpsilon_p1"] = asm["_emscripten_bind_btTriangleInfoMap__set_m_planarEpsilon_p1"];
var _emscripten_bind_btEmptyShape____destroy___p0 = Module["_emscripten_bind_btEmptyShape____destroy___p0"] = asm["_emscripten_bind_btEmptyShape____destroy___p0"];
var _emscripten_bind_btContactConstraint____destroy___p0 = Module["_emscripten_bind_btContactConstraint____destroy___p0"] = asm["_emscripten_bind_btContactConstraint____destroy___p0"];
var _emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p1"];
var _emscripten_bind_btTriangleMesh__getUse32bitIndices_p0 = Module["_emscripten_bind_btTriangleMesh__getUse32bitIndices_p0"] = asm["_emscripten_bind_btTriangleMesh__getUse32bitIndices_p0"];
var _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_useEpaPenetrationAlgorithm_p0 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_useEpaPenetrationAlgorithm_p0"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_useEpaPenetrationAlgorithm_p0"];
var _emscripten_bind_btDispatcherInfo__set_m_useEpa_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_useEpa_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_useEpa_p1"];
var _emscripten_bind_btJacobianEntry__btJacobianEntry_p6 = Module["_emscripten_bind_btJacobianEntry__btJacobianEntry_p6"] = asm["_emscripten_bind_btJacobianEntry__btJacobianEntry_p6"];
var _emscripten_bind_btDispatcherInfo__get_m_useEpa_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_useEpa_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_useEpa_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__getName_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getName_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getName_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p2 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p2"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p2"];
var _emscripten_bind_btSliderConstraint__enableFeedback_p1 = Module["_emscripten_bind_btSliderConstraint__enableFeedback_p1"] = asm["_emscripten_bind_btSliderConstraint__enableFeedback_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p0"];
var _emscripten_bind_btConeShapeZ__getMarginNonVirtual_p0 = Module["_emscripten_bind_btConeShapeZ__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btConeShapeZ__getMarginNonVirtual_p0"];
var _emscripten_bind_btGeneric6DofConstraint__getInfo1_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getInfo1_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getInfo1_p1"];
var _emscripten_bind_btJacobianEntry__btJacobianEntry_p4 = Module["_emscripten_bind_btJacobianEntry__btJacobianEntry_p4"] = asm["_emscripten_bind_btJacobianEntry__btJacobianEntry_p4"];
var _emscripten_bind_btJacobianEntry__get_m_1MinvJt_p0 = Module["_emscripten_bind_btJacobianEntry__get_m_1MinvJt_p0"] = asm["_emscripten_bind_btJacobianEntry__get_m_1MinvJt_p0"];
var _emscripten_bind_btDispatcherInfo__get_m_convexConservativeDistanceThreshold_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_convexConservativeDistanceThreshold_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_convexConservativeDistanceThreshold_p0"];
var _emscripten_bind_btConeShapeZ__isCompound_p0 = Module["_emscripten_bind_btConeShapeZ__isCompound_p0"] = asm["_emscripten_bind_btConeShapeZ__isCompound_p0"];
var _emscripten_bind_btConeShape__getName_p0 = Module["_emscripten_bind_btConeShape__getName_p0"] = asm["_emscripten_bind_btConeShape__getName_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p3 = Module["_emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p3"] = asm["_emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p3"];
var _emscripten_bind_btPairCachingGhostObject__hasContactResponse_p0 = Module["_emscripten_bind_btPairCachingGhostObject__hasContactResponse_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__hasContactResponse_p0"];
var _emscripten_bind_btMatrix3x3__deSerialize_p1 = Module["_emscripten_bind_btMatrix3x3__deSerialize_p1"] = asm["_emscripten_bind_btMatrix3x3__deSerialize_p1"];
var _emscripten_bind_btJacobianEntry__btJacobianEntry_p9 = Module["_emscripten_bind_btJacobianEntry__btJacobianEntry_p9"] = asm["_emscripten_bind_btJacobianEntry__btJacobianEntry_p9"];
var _emscripten_bind_btDiscreteDynamicsWorld__getForceUpdateAllAabbs_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getForceUpdateAllAabbs_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getForceUpdateAllAabbs_p0"];
var _emscripten_bind_btTransform__setFromOpenGLMatrix_p1 = Module["_emscripten_bind_btTransform__setFromOpenGLMatrix_p1"] = asm["_emscripten_bind_btTransform__setFromOpenGLMatrix_p1"];
var _emscripten_bind_btRigidBody__updateInertiaTensor_p0 = Module["_emscripten_bind_btRigidBody__updateInertiaTensor_p0"] = asm["_emscripten_bind_btRigidBody__updateInertiaTensor_p0"];
var _emscripten_bind_btUniversalConstraint__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btUniversalConstraint__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btUniversalConstraint__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btEmptyShape__getBoundingSphere_p2 = Module["_emscripten_bind_btEmptyShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btEmptyShape__getBoundingSphere_p2"];
var _emscripten_bind_btHinge2Constraint__getAppliedImpulse_p0 = Module["_emscripten_bind_btHinge2Constraint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btHinge2Constraint__getAppliedImpulse_p0"];
var _emscripten_bind_btTypedConstraint__set_m_objectType_p1 = Module["_emscripten_bind_btTypedConstraint__set_m_objectType_p1"] = asm["_emscripten_bind_btTypedConstraint__set_m_objectType_p1"];
var _emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p2 = Module["_emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p2"] = asm["_emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p2"];
var _emscripten_bind_btJacobianEntry__getNonDiagonal_p3 = Module["_emscripten_bind_btJacobianEntry__getNonDiagonal_p3"] = asm["_emscripten_bind_btJacobianEntry__getNonDiagonal_p3"];
var _emscripten_bind_btJacobianEntry__getNonDiagonal_p2 = Module["_emscripten_bind_btJacobianEntry__getNonDiagonal_p2"] = asm["_emscripten_bind_btJacobianEntry__getNonDiagonal_p2"];
var _emscripten_bind_btMultiSphereShape__getShapeType_p0 = Module["_emscripten_bind_btMultiSphereShape__getShapeType_p0"] = asm["_emscripten_bind_btMultiSphereShape__getShapeType_p0"];
var _emscripten_bind_btMultiSphereShape__getUserPointer_p0 = Module["_emscripten_bind_btMultiSphereShape__getUserPointer_p0"] = asm["_emscripten_bind_btMultiSphereShape__getUserPointer_p0"];
var _emscripten_bind_btRigidBody__setAnisotropicFriction_p1 = Module["_emscripten_bind_btRigidBody__setAnisotropicFriction_p1"] = asm["_emscripten_bind_btRigidBody__setAnisotropicFriction_p1"];
var _emscripten_bind_btStackAlloc__btStackAlloc_p1 = Module["_emscripten_bind_btStackAlloc__btStackAlloc_p1"] = asm["_emscripten_bind_btStackAlloc__btStackAlloc_p1"];
var _emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p0 = Module["_emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p0"] = asm["_emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p0"];
var _emscripten_bind_btCapsuleShapeZ__serializeSingleShape_p1 = Module["_emscripten_bind_btCapsuleShapeZ__serializeSingleShape_p1"] = asm["_emscripten_bind_btCapsuleShapeZ__serializeSingleShape_p1"];
var _emscripten_bind_btConeTwistConstraint__getUid_p0 = Module["_emscripten_bind_btConeTwistConstraint__getUid_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getUid_p0"];
var _emscripten_bind_btCylinderShapeZ__isInfinite_p0 = Module["_emscripten_bind_btCylinderShapeZ__isInfinite_p0"] = asm["_emscripten_bind_btCylinderShapeZ__isInfinite_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__processAllTriangles_p3 = Module["_emscripten_bind_btBvhTriangleMeshShape__processAllTriangles_p3"] = asm["_emscripten_bind_btBvhTriangleMeshShape__processAllTriangles_p3"];
var _emscripten_bind_btSliderConstraint__setEnabled_p1 = Module["_emscripten_bind_btSliderConstraint__setEnabled_p1"] = asm["_emscripten_bind_btSliderConstraint__setEnabled_p1"];
var _emscripten_bind_btSphereShape__setLocalScaling_p1 = Module["_emscripten_bind_btSphereShape__setLocalScaling_p1"] = asm["_emscripten_bind_btSphereShape__setLocalScaling_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getAngularUpperLimit_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getAngularUpperLimit_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getAngularUpperLimit_p1"];
var _emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionFilterMask_p1 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionFilterMask_p1"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionFilterMask_p1"];
var _emscripten_bind_btPersistentManifold__get_m_objectType_p0 = Module["_emscripten_bind_btPersistentManifold__get_m_objectType_p0"] = asm["_emscripten_bind_btPersistentManifold__get_m_objectType_p0"];
var _emscripten_bind_btCapsuleShapeX__getMargin_p0 = Module["_emscripten_bind_btCapsuleShapeX__getMargin_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getMargin_p0"];
var _emscripten_bind_btSliderConstraint__setUpperAngLimit_p1 = Module["_emscripten_bind_btSliderConstraint__setUpperAngLimit_p1"] = asm["_emscripten_bind_btSliderConstraint__setUpperAngLimit_p1"];
var _emscripten_bind_btCollisionAlgorithmConstructionInfo__set_m_dispatcher1_p1 = Module["_emscripten_bind_btCollisionAlgorithmConstructionInfo__set_m_dispatcher1_p1"] = asm["_emscripten_bind_btCollisionAlgorithmConstructionInfo__set_m_dispatcher1_p1"];
var _emscripten_bind_btCollisionAlgorithmConstructionInfo__set_m_manifold_p1 = Module["_emscripten_bind_btCollisionAlgorithmConstructionInfo__set_m_manifold_p1"] = asm["_emscripten_bind_btCollisionAlgorithmConstructionInfo__set_m_manifold_p1"];
var _emscripten_bind_btBU_Simplex1to4__reset_p0 = Module["_emscripten_bind_btBU_Simplex1to4__reset_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__reset_p0"];
var _emscripten_bind_btHingeConstraint__setUserConstraintType_p1 = Module["_emscripten_bind_btHingeConstraint__setUserConstraintType_p1"] = asm["_emscripten_bind_btHingeConstraint__setUserConstraintType_p1"];
var _emscripten_bind_btPairCachingGhostObject__getOverlappingObject_p1 = Module["_emscripten_bind_btPairCachingGhostObject__getOverlappingObject_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__getOverlappingObject_p1"];
var _emscripten_bind_btBvhTriangleMeshShape__setOptimizedBvh_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__setOptimizedBvh_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__setOptimizedBvh_p1"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__calculateLocalInertia_p2"];
var _emscripten_bind_btBvhTriangleMeshShape__setOptimizedBvh_p2 = Module["_emscripten_bind_btBvhTriangleMeshShape__setOptimizedBvh_p2"] = asm["_emscripten_bind_btBvhTriangleMeshShape__setOptimizedBvh_p2"];
var _emscripten_bind_btConvexInternalShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btConvexInternalShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btConvexInternalShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btConcaveShape__isCompound_p0 = Module["_emscripten_bind_btConcaveShape__isCompound_p0"] = asm["_emscripten_bind_btConcaveShape__isCompound_p0"];
var _emscripten_bind_btTriangleIndexVertexArray__getScaling_p0 = Module["_emscripten_bind_btTriangleIndexVertexArray__getScaling_p0"] = asm["_emscripten_bind_btTriangleIndexVertexArray__getScaling_p0"];
var _emscripten_bind_btJacobianEntry__get_m_Adiag_p0 = Module["_emscripten_bind_btJacobianEntry__get_m_Adiag_p0"] = asm["_emscripten_bind_btJacobianEntry__get_m_Adiag_p0"];
var _emscripten_bind_btGhostPairCallback____destroy___p0 = Module["_emscripten_bind_btGhostPairCallback____destroy___p0"] = asm["_emscripten_bind_btGhostPairCallback____destroy___p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_linearSleepingThreshold_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_linearSleepingThreshold_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_linearSleepingThreshold_p1"];
var _emscripten_bind_btBroadphaseProxy__set_m_collisionFilterMask_p1 = Module["_emscripten_bind_btBroadphaseProxy__set_m_collisionFilterMask_p1"] = asm["_emscripten_bind_btBroadphaseProxy__set_m_collisionFilterMask_p1"];
var _emscripten_bind_btHingeConstraint__enableFeedback_p1 = Module["_emscripten_bind_btHingeConstraint__enableFeedback_p1"] = asm["_emscripten_bind_btHingeConstraint__enableFeedback_p1"];
var _emscripten_bind_btUniversalConstraint__serialize_p2 = Module["_emscripten_bind_btUniversalConstraint__serialize_p2"] = asm["_emscripten_bind_btUniversalConstraint__serialize_p2"];
var _emscripten_bind_btCylinderShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btCylinderShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btCylinderShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _emscripten_bind_btStorageResult__get_m_closestPointInB_p0 = Module["_emscripten_bind_btStorageResult__get_m_closestPointInB_p0"] = asm["_emscripten_bind_btStorageResult__get_m_closestPointInB_p0"];
var _emscripten_bind_btCylinderShape__isPolyhedral_p0 = Module["_emscripten_bind_btCylinderShape__isPolyhedral_p0"] = asm["_emscripten_bind_btCylinderShape__isPolyhedral_p0"];
var _emscripten_bind_btConeShape__getMarginNV_p0 = Module["_emscripten_bind_btConeShape__getMarginNV_p0"] = asm["_emscripten_bind_btConeShape__getMarginNV_p0"];
var _emscripten_bind_btConeShape__getBoundingSphere_p2 = Module["_emscripten_bind_btConeShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btConeShape__getBoundingSphere_p2"];
var _emscripten_bind_btHinge2Constraint__calculateTransforms_p0 = Module["_emscripten_bind_btHinge2Constraint__calculateTransforms_p0"] = asm["_emscripten_bind_btHinge2Constraint__calculateTransforms_p0"];
var _emscripten_bind_btGeneric6DofConstraint__serialize_p2 = Module["_emscripten_bind_btGeneric6DofConstraint__serialize_p2"] = asm["_emscripten_bind_btGeneric6DofConstraint__serialize_p2"];
var _emscripten_bind_btStackAlloc____destroy___p0 = Module["_emscripten_bind_btStackAlloc____destroy___p0"] = asm["_emscripten_bind_btStackAlloc____destroy___p0"];
var _emscripten_bind_btUniversalConstraint__enableFeedback_p1 = Module["_emscripten_bind_btUniversalConstraint__enableFeedback_p1"] = asm["_emscripten_bind_btUniversalConstraint__enableFeedback_p1"];
var _emscripten_bind_btPairCachingGhostObject__getInterpolationWorldTransform_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getInterpolationWorldTransform_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getInterpolationWorldTransform_p0"];
var _emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p2 = Module["_emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p2"] = asm["_emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p2"];
var _emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p1 = Module["_emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p1"] = asm["_emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p1"];
var _emscripten_bind_btSliderConstraint__setPoweredAngMotor_p1 = Module["_emscripten_bind_btSliderConstraint__setPoweredAngMotor_p1"] = asm["_emscripten_bind_btSliderConstraint__setPoweredAngMotor_p1"];
var _emscripten_bind_btConvexTriangleMeshShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getAngle_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getAngle_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getAngle_p1"];
var _emscripten_bind_btHingeConstraint__internalGetAppliedImpulse_p0 = Module["_emscripten_bind_btHingeConstraint__internalGetAppliedImpulse_p0"] = asm["_emscripten_bind_btHingeConstraint__internalGetAppliedImpulse_p0"];
var _emscripten_bind_btBvhSubtreeInfo__get_m_rootNodeIndex_p0 = Module["_emscripten_bind_btBvhSubtreeInfo__get_m_rootNodeIndex_p0"] = asm["_emscripten_bind_btBvhSubtreeInfo__get_m_rootNodeIndex_p0"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__getName_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__getName_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__getName_p0"];
var _emscripten_bind_btPairCachingGhostObject__getCcdSweptSphereRadius_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getCcdSweptSphereRadius_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getCcdSweptSphereRadius_p0"];
var _emscripten_bind_btDbvtBroadphase____destroy___p0 = Module["_emscripten_bind_btDbvtBroadphase____destroy___p0"] = asm["_emscripten_bind_btDbvtBroadphase____destroy___p0"];
var _emscripten_bind_btTriangleMesh__serialize_p2 = Module["_emscripten_bind_btTriangleMesh__serialize_p2"] = asm["_emscripten_bind_btTriangleMesh__serialize_p2"];
var _emscripten_bind_btDbvtBroadphase__set_m_dupdates_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_dupdates_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_dupdates_p1"];
var _emscripten_bind_btHinge2Constraint__getConstraintType_p0 = Module["_emscripten_bind_btHinge2Constraint__getConstraintType_p0"] = asm["_emscripten_bind_btHinge2Constraint__getConstraintType_p0"];
var _emscripten_bind_btCollisionWorld__ContactResultCallback__set_m_collisionFilterGroup_p1 = Module["_emscripten_bind_btCollisionWorld__ContactResultCallback__set_m_collisionFilterGroup_p1"] = asm["_emscripten_bind_btCollisionWorld__ContactResultCallback__set_m_collisionFilterGroup_p1"];
var _emscripten_bind_btConeShapeZ__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btConeShapeZ__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btConeShapeZ__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btMultiSphereShape__getMargin_p0 = Module["_emscripten_bind_btMultiSphereShape__getMargin_p0"] = asm["_emscripten_bind_btMultiSphereShape__getMargin_p0"];
var _emscripten_bind_btHinge2Constraint__getLinearLowerLimit_p1 = Module["_emscripten_bind_btHinge2Constraint__getLinearLowerLimit_p1"] = asm["_emscripten_bind_btHinge2Constraint__getLinearLowerLimit_p1"];
var _emscripten_bind_btSliderConstraint__btSliderConstraint_p5 = Module["_emscripten_bind_btSliderConstraint__btSliderConstraint_p5"] = asm["_emscripten_bind_btSliderConstraint__btSliderConstraint_p5"];
var _emscripten_bind_btRotationalLimitMotor__get_m_currentPosition_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_currentPosition_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_currentPosition_p0"];
var _emscripten_bind_btDynamicsWorld__addCharacter_p1 = Module["_emscripten_bind_btDynamicsWorld__addCharacter_p1"] = asm["_emscripten_bind_btDynamicsWorld__addCharacter_p1"];
var _emscripten_bind_btCollisionObject__activate_p0 = Module["_emscripten_bind_btCollisionObject__activate_p0"] = asm["_emscripten_bind_btCollisionObject__activate_p0"];
var _emscripten_bind_btCollisionObject__activate_p1 = Module["_emscripten_bind_btCollisionObject__activate_p1"] = asm["_emscripten_bind_btCollisionObject__activate_p1"];
var _emscripten_bind_btSliderConstraint__getSoftnessLimAng_p0 = Module["_emscripten_bind_btSliderConstraint__getSoftnessLimAng_p0"] = asm["_emscripten_bind_btSliderConstraint__getSoftnessLimAng_p0"];
var _emscripten_bind_btMatrix3x3__diagonalize_p3 = Module["_emscripten_bind_btMatrix3x3__diagonalize_p3"] = asm["_emscripten_bind_btMatrix3x3__diagonalize_p3"];
var _emscripten_bind_btCapsuleShape__getShapeType_p0 = Module["_emscripten_bind_btCapsuleShape__getShapeType_p0"] = asm["_emscripten_bind_btCapsuleShape__getShapeType_p0"];
var _emscripten_bind_btHeightfieldTerrainShape__btHeightfieldTerrainShape_p7 = Module["_emscripten_bind_btHeightfieldTerrainShape__btHeightfieldTerrainShape_p7"] = asm["_emscripten_bind_btHeightfieldTerrainShape__btHeightfieldTerrainShape_p7"];
var _emscripten_bind_btWheelInfo__get_m_wheelDirectionCS_p0 = Module["_emscripten_bind_btWheelInfo__get_m_wheelDirectionCS_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_wheelDirectionCS_p0"];
var _emscripten_bind_btConvexShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btConvexShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btConvexShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btConeShapeX__isConvex2d_p0 = Module["_emscripten_bind_btConeShapeX__isConvex2d_p0"] = asm["_emscripten_bind_btConeShapeX__isConvex2d_p0"];
var _emscripten_bind_btRaycastVehicle__getRigidBody_p0 = Module["_emscripten_bind_btRaycastVehicle__getRigidBody_p0"] = asm["_emscripten_bind_btRaycastVehicle__getRigidBody_p0"];
var _emscripten_bind_btMultiSphereShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btMultiSphereShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btMultiSphereShape__getImplicitShapeDimensions_p0"];
var _emscripten_bind_btDbvtProxy__get_m_aabbMin_p0 = Module["_emscripten_bind_btDbvtProxy__get_m_aabbMin_p0"] = asm["_emscripten_bind_btDbvtProxy__get_m_aabbMin_p0"];
var _emscripten_bind_btHeightfieldTerrainShape__getUserPointer_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__getUserPointer_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__getUserPointer_p0"];
var _emscripten_bind_btRotationalLimitMotor__get_m_hiLimit_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_hiLimit_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_hiLimit_p0"];
var _emscripten_bind_btMultiSphereShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btMultiSphereShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btMultiSphereShape__getLocalScalingNV_p0"];
var _emscripten_bind_btSliderConstraint__getRigidBodyA_p0 = Module["_emscripten_bind_btSliderConstraint__getRigidBodyA_p0"] = asm["_emscripten_bind_btSliderConstraint__getRigidBodyA_p0"];
var _emscripten_bind_btStaticPlaneShape__getAabb_p3 = Module["_emscripten_bind_btStaticPlaneShape__getAabb_p3"] = asm["_emscripten_bind_btStaticPlaneShape__getAabb_p3"];
var _emscripten_bind_btHinge2Constraint__setBreakingImpulseThreshold_p1 = Module["_emscripten_bind_btHinge2Constraint__setBreakingImpulseThreshold_p1"] = asm["_emscripten_bind_btHinge2Constraint__setBreakingImpulseThreshold_p1"];
var _emscripten_bind_CProfileNode____destroy___p0 = Module["_emscripten_bind_CProfileNode____destroy___p0"] = asm["_emscripten_bind_CProfileNode____destroy___p0"];
var _emscripten_bind_btConvexHullShape__getNumPoints_p0 = Module["_emscripten_bind_btConvexHullShape__getNumPoints_p0"] = asm["_emscripten_bind_btConvexHullShape__getNumPoints_p0"];
var _emscripten_bind_btConeShape__isCompound_p0 = Module["_emscripten_bind_btConeShape__isCompound_p0"] = asm["_emscripten_bind_btConeShape__isCompound_p0"];
var _emscripten_bind_btMatrix3x3__getColumn_p1 = Module["_emscripten_bind_btMatrix3x3__getColumn_p1"] = asm["_emscripten_bind_btMatrix3x3__getColumn_p1"];
var _emscripten_bind_btPersistentManifold__getContactProcessingThreshold_p0 = Module["_emscripten_bind_btPersistentManifold__getContactProcessingThreshold_p0"] = asm["_emscripten_bind_btPersistentManifold__getContactProcessingThreshold_p0"];
var _emscripten_bind_btDispatcherInfo__get_m_stackAllocator_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_stackAllocator_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_stackAllocator_p0"];
var _emscripten_bind_btIDebugDraw__drawBox_p4 = Module["_emscripten_bind_btIDebugDraw__drawBox_p4"] = asm["_emscripten_bind_btIDebugDraw__drawBox_p4"];
var _emscripten_bind_btCapsuleShapeX__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btCapsuleShapeX__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btCapsuleShapeX__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionCompression_p1 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionCompression_p1"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionCompression_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__removeRigidBody_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__removeRigidBody_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__removeRigidBody_p1"];
var _emscripten_bind_btIDebugDraw__drawBox_p3 = Module["_emscripten_bind_btIDebugDraw__drawBox_p3"] = asm["_emscripten_bind_btIDebugDraw__drawBox_p3"];
var _emscripten_bind_btStridingMeshInterface__calculateAabbBruteForce_p2 = Module["_emscripten_bind_btStridingMeshInterface__calculateAabbBruteForce_p2"] = asm["_emscripten_bind_btStridingMeshInterface__calculateAabbBruteForce_p2"];
var _emscripten_bind_btRotationalLimitMotor__get_m_currentLimitError_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_currentLimitError_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_currentLimitError_p0"];
var _emscripten_bind_btConstraintSolver__solveGroup_p10 = Module["_emscripten_bind_btConstraintSolver__solveGroup_p10"] = asm["_emscripten_bind_btConstraintSolver__solveGroup_p10"];
var _emscripten_bind_btHinge2Constraint__setUserConstraintType_p1 = Module["_emscripten_bind_btHinge2Constraint__setUserConstraintType_p1"] = asm["_emscripten_bind_btHinge2Constraint__setUserConstraintType_p1"];
var _emscripten_bind_btMatrix3x3____destroy___p0 = Module["_emscripten_bind_btMatrix3x3____destroy___p0"] = asm["_emscripten_bind_btMatrix3x3____destroy___p0"];
var _emscripten_bind_btCollisionWorld__getDebugDrawer_p0 = Module["_emscripten_bind_btCollisionWorld__getDebugDrawer_p0"] = asm["_emscripten_bind_btCollisionWorld__getDebugDrawer_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__addRigidBody_p3 = Module["_emscripten_bind_btSimpleDynamicsWorld__addRigidBody_p3"] = asm["_emscripten_bind_btSimpleDynamicsWorld__addRigidBody_p3"];
var _emscripten_bind_btConeShapeZ__isConvex_p0 = Module["_emscripten_bind_btConeShapeZ__isConvex_p0"] = asm["_emscripten_bind_btConeShapeZ__isConvex_p0"];
var _emscripten_bind_btPairCachingGhostObject__getFriction_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getFriction_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getFriction_p0"];
var _emscripten_bind_btRigidBody__serializeSingleObject_p1 = Module["_emscripten_bind_btRigidBody__serializeSingleObject_p1"] = asm["_emscripten_bind_btRigidBody__serializeSingleObject_p1"];
var _emscripten_bind_btOptimizedBvh__updateBvhNodes_p4 = Module["_emscripten_bind_btOptimizedBvh__updateBvhNodes_p4"] = asm["_emscripten_bind_btOptimizedBvh__updateBvhNodes_p4"];
var _emscripten_bind_btManifoldPoint__get_m_appliedImpulseLateral1_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_appliedImpulseLateral1_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_appliedImpulseLateral1_p0"];
var _emscripten_bind_btSphereShape__isPolyhedral_p0 = Module["_emscripten_bind_btSphereShape__isPolyhedral_p0"] = asm["_emscripten_bind_btSphereShape__isPolyhedral_p0"];
var _emscripten_bind_btSequentialImpulseConstraintSolver__btSequentialImpulseConstraintSolver_p0 = Module["_emscripten_bind_btSequentialImpulseConstraintSolver__btSequentialImpulseConstraintSolver_p0"] = asm["_emscripten_bind_btSequentialImpulseConstraintSolver__btSequentialImpulseConstraintSolver_p0"];
var _emscripten_bind_btSphereSphereCollisionAlgorithm__calculateTimeOfImpact_p4 = Module["_emscripten_bind_btSphereSphereCollisionAlgorithm__calculateTimeOfImpact_p4"] = asm["_emscripten_bind_btSphereSphereCollisionAlgorithm__calculateTimeOfImpact_p4"];
var _emscripten_bind_btRigidBody__saveKinematicState_p1 = Module["_emscripten_bind_btRigidBody__saveKinematicState_p1"] = asm["_emscripten_bind_btRigidBody__saveKinematicState_p1"];
var _emscripten_bind_btSliderConstraint__getInfo1NonVirtual_p1 = Module["_emscripten_bind_btSliderConstraint__getInfo1NonVirtual_p1"] = asm["_emscripten_bind_btSliderConstraint__getInfo1NonVirtual_p1"];
var _emscripten_bind_btCollisionObject____destroy___p0 = Module["_emscripten_bind_btCollisionObject____destroy___p0"] = asm["_emscripten_bind_btCollisionObject____destroy___p0"];
var _emscripten_bind_btTriangleIndexVertexArray__getLockedReadOnlyVertexIndexBase_p8 = Module["_emscripten_bind_btTriangleIndexVertexArray__getLockedReadOnlyVertexIndexBase_p8"] = asm["_emscripten_bind_btTriangleIndexVertexArray__getLockedReadOnlyVertexIndexBase_p8"];
var _emscripten_bind_btWheelInfo__set_m_steering_p1 = Module["_emscripten_bind_btWheelInfo__set_m_steering_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_steering_p1"];
var _emscripten_bind_btHinge2Constraint__getUseFrameOffset_p0 = Module["_emscripten_bind_btHinge2Constraint__getUseFrameOffset_p0"] = asm["_emscripten_bind_btHinge2Constraint__getUseFrameOffset_p0"];
var _emscripten_bind_btConvexInternalShape__setUserPointer_p1 = Module["_emscripten_bind_btConvexInternalShape__setUserPointer_p1"] = asm["_emscripten_bind_btConvexInternalShape__setUserPointer_p1"];
var _emscripten_bind_btGhostObject__getCompanionId_p0 = Module["_emscripten_bind_btGhostObject__getCompanionId_p0"] = asm["_emscripten_bind_btGhostObject__getCompanionId_p0"];
var _emscripten_bind_btSimpleBroadphaseProxy__isSoftBody_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__isSoftBody_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__isSoftBody_p1"];
var _emscripten_bind_btSequentialImpulseConstraintSolver____destroy___p0 = Module["_emscripten_bind_btSequentialImpulseConstraintSolver____destroy___p0"] = asm["_emscripten_bind_btSequentialImpulseConstraintSolver____destroy___p0"];
var _emscripten_bind_btTransform__getIdentity_p0 = Module["_emscripten_bind_btTransform__getIdentity_p0"] = asm["_emscripten_bind_btTransform__getIdentity_p0"];
var _emscripten_bind_btPolyhedralConvexShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btPolyhedralConvexShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btPolyhedralConvexShape__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_btTriangleMesh__set_m_weldingThreshold_p1 = Module["_emscripten_bind_btTriangleMesh__set_m_weldingThreshold_p1"] = asm["_emscripten_bind_btTriangleMesh__set_m_weldingThreshold_p1"];
var _emscripten_bind_btBvhTriangleMeshShape__isCompound_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__isCompound_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__isCompound_p0"];
var _emscripten_bind_btCompoundShape__btCompoundShape_p1 = Module["_emscripten_bind_btCompoundShape__btCompoundShape_p1"] = asm["_emscripten_bind_btCompoundShape__btCompoundShape_p1"];
var _emscripten_bind_btCompoundShape__btCompoundShape_p0 = Module["_emscripten_bind_btCompoundShape__btCompoundShape_p0"] = asm["_emscripten_bind_btCompoundShape__btCompoundShape_p0"];
var _emscripten_bind_btPairCachingGhostObject__setHitFraction_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setHitFraction_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setHitFraction_p1"];
var _emscripten_bind_btCollisionObject__getWorldTransform_p0 = Module["_emscripten_bind_btCollisionObject__getWorldTransform_p0"] = asm["_emscripten_bind_btCollisionObject__getWorldTransform_p0"];
var _emscripten_bind_btContactConstraint__setParam_p3 = Module["_emscripten_bind_btContactConstraint__setParam_p3"] = asm["_emscripten_bind_btContactConstraint__setParam_p3"];
var _emscripten_bind_btCylinderShapeX__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btCylinderShapeX__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btCylinderShapeX__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__getBroadphase_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getBroadphase_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getBroadphase_p0"];
var _emscripten_bind_btCylinderShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btCylinderShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btCylinderShape__calculateLocalInertia_p2"];
var _emscripten_bind_btTransform__serialize_p1 = Module["_emscripten_bind_btTransform__serialize_p1"] = asm["_emscripten_bind_btTransform__serialize_p1"];
var _emscripten_bind_btStorageResult__get_m_distance_p0 = Module["_emscripten_bind_btStorageResult__get_m_distance_p0"] = asm["_emscripten_bind_btStorageResult__get_m_distance_p0"];
var _emscripten_bind_btSliderConstraint__getMaxLinMotorForce_p0 = Module["_emscripten_bind_btSliderConstraint__getMaxLinMotorForce_p0"] = asm["_emscripten_bind_btSliderConstraint__getMaxLinMotorForce_p0"];
var _emscripten_bind_btSphereShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btSphereShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btSphereShape__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btIndexedMesh__get_m_numVertices_p0 = Module["_emscripten_bind_btIndexedMesh__get_m_numVertices_p0"] = asm["_emscripten_bind_btIndexedMesh__get_m_numVertices_p0"];
var _emscripten_bind_btMultiSphereShape__setMargin_p1 = Module["_emscripten_bind_btMultiSphereShape__setMargin_p1"] = asm["_emscripten_bind_btMultiSphereShape__setMargin_p1"];
var _emscripten_bind_btBoxShape__isSoftBody_p0 = Module["_emscripten_bind_btBoxShape__isSoftBody_p0"] = asm["_emscripten_bind_btBoxShape__isSoftBody_p0"];
var _emscripten_bind_btDbvtProxy__isCompound_p1 = Module["_emscripten_bind_btDbvtProxy__isCompound_p1"] = asm["_emscripten_bind_btDbvtProxy__isCompound_p1"];
var _emscripten_bind_btConvexHullShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btConvexHullShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btConvexHullShape__getImplicitShapeDimensions_p0"];
var _emscripten_bind_btEmptyShape__isConvex_p0 = Module["_emscripten_bind_btEmptyShape__isConvex_p0"] = asm["_emscripten_bind_btEmptyShape__isConvex_p0"];
var _emscripten_bind_btConeShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btConeShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btConeShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btHingeConstraint__setAngularOnly_p1 = Module["_emscripten_bind_btHingeConstraint__setAngularOnly_p1"] = asm["_emscripten_bind_btHingeConstraint__setAngularOnly_p1"];
var _emscripten_bind_btTranslationalLimitMotor__solveLinearAxis_p9 = Module["_emscripten_bind_btTranslationalLimitMotor__solveLinearAxis_p9"] = asm["_emscripten_bind_btTranslationalLimitMotor__solveLinearAxis_p9"];
var _emscripten_bind_btCapsuleShapeX__getAabbSlow_p3 = Module["_emscripten_bind_btCapsuleShapeX__getAabbSlow_p3"] = asm["_emscripten_bind_btCapsuleShapeX__getAabbSlow_p3"];
var _emscripten_bind_btSimpleDynamicsWorld__getCollisionObjectArray_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getCollisionObjectArray_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getCollisionObjectArray_p0"];
var _emscripten_bind_btOverlappingPairCache__removeOverlappingPair_p3 = Module["_emscripten_bind_btOverlappingPairCache__removeOverlappingPair_p3"] = asm["_emscripten_bind_btOverlappingPairCache__removeOverlappingPair_p3"];
var _emscripten_bind_btCapsuleShapeX__isPolyhedral_p0 = Module["_emscripten_bind_btCapsuleShapeX__isPolyhedral_p0"] = asm["_emscripten_bind_btCapsuleShapeX__isPolyhedral_p0"];
var _emscripten_bind_btVector4__z_p0 = Module["_emscripten_bind_btVector4__z_p0"] = asm["_emscripten_bind_btVector4__z_p0"];
var _emscripten_bind_btRigidBody__getUserPointer_p0 = Module["_emscripten_bind_btRigidBody__getUserPointer_p0"] = asm["_emscripten_bind_btRigidBody__getUserPointer_p0"];
var _emscripten_bind_btSliderConstraint__internalSetAppliedImpulse_p1 = Module["_emscripten_bind_btSliderConstraint__internalSetAppliedImpulse_p1"] = asm["_emscripten_bind_btSliderConstraint__internalSetAppliedImpulse_p1"];
var _emscripten_bind_btGhostObject__getInterpolationWorldTransform_p0 = Module["_emscripten_bind_btGhostObject__getInterpolationWorldTransform_p0"] = asm["_emscripten_bind_btGhostObject__getInterpolationWorldTransform_p0"];
var _emscripten_bind_btDbvtBroadphase__set_m_paircache_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_paircache_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_paircache_p1"];
var _emscripten_bind_btHinge2Constraint__setDamping_p2 = Module["_emscripten_bind_btHinge2Constraint__setDamping_p2"] = asm["_emscripten_bind_btHinge2Constraint__setDamping_p2"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_collisionShape_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_collisionShape_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_collisionShape_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__calculateTransforms_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__calculateTransforms_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__calculateTransforms_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__recalcLocalAabb_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__recalcLocalAabb_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__recalcLocalAabb_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__calculateTransforms_p2 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__calculateTransforms_p2"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__calculateTransforms_p2"];
var _emscripten_bind_btConvexHullShape__getBoundingSphere_p2 = Module["_emscripten_bind_btConvexHullShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btConvexHullShape__getBoundingSphere_p2"];
var _emscripten_bind_btContactConstraint__getUserConstraintId_p0 = Module["_emscripten_bind_btContactConstraint__getUserConstraintId_p0"] = asm["_emscripten_bind_btContactConstraint__getUserConstraintId_p0"];
var _emscripten_bind_btHinge2Constraint__solveConstraintObsolete_p3 = Module["_emscripten_bind_btHinge2Constraint__solveConstraintObsolete_p3"] = asm["_emscripten_bind_btHinge2Constraint__solveConstraintObsolete_p3"];
var _emscripten_bind_btConeTwistConstraint__get_m_objectType_p0 = Module["_emscripten_bind_btConeTwistConstraint__get_m_objectType_p0"] = asm["_emscripten_bind_btConeTwistConstraint__get_m_objectType_p0"];
var _emscripten_bind_btMultiSphereShape__getMarginNV_p0 = Module["_emscripten_bind_btMultiSphereShape__getMarginNV_p0"] = asm["_emscripten_bind_btMultiSphereShape__getMarginNV_p0"];
var _emscripten_bind_btRaycastVehicle__rayCast_p1 = Module["_emscripten_bind_btRaycastVehicle__rayCast_p1"] = asm["_emscripten_bind_btRaycastVehicle__rayCast_p1"];
var _emscripten_bind_btConvexHullShape__isConcave_p0 = Module["_emscripten_bind_btConvexHullShape__isConcave_p0"] = asm["_emscripten_bind_btConvexHullShape__isConcave_p0"];
var _emscripten_bind_btCollisionObject__getAnisotropicFriction_p0 = Module["_emscripten_bind_btCollisionObject__getAnisotropicFriction_p0"] = asm["_emscripten_bind_btCollisionObject__getAnisotropicFriction_p0"];
var _emscripten_bind_btSimpleBroadphase____destroy___p0 = Module["_emscripten_bind_btSimpleBroadphase____destroy___p0"] = asm["_emscripten_bind_btSimpleBroadphase____destroy___p0"];
var _emscripten_bind_btCapsuleShape__btCapsuleShape_p2 = Module["_emscripten_bind_btCapsuleShape__btCapsuleShape_p2"] = asm["_emscripten_bind_btCapsuleShape__btCapsuleShape_p2"];
var _emscripten_bind_btPairCachingGhostObject__setAnisotropicFriction_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setAnisotropicFriction_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setAnisotropicFriction_p1"];
var _emscripten_bind_btBvhTriangleMeshShape__serializeSingleBvh_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__serializeSingleBvh_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__serializeSingleBvh_p1"];
var _emscripten_bind_btConvexHullShape__getLocalScaling_p0 = Module["_emscripten_bind_btConvexHullShape__getLocalScaling_p0"] = asm["_emscripten_bind_btConvexHullShape__getLocalScaling_p0"];
var _emscripten_bind_btVector4__x_p0 = Module["_emscripten_bind_btVector4__x_p0"] = asm["_emscripten_bind_btVector4__x_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__getWorldUserInfo_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getWorldUserInfo_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getWorldUserInfo_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__removeConstraint_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__removeConstraint_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__removeConstraint_p1"];
var _emscripten_bind_btBroadphaseRayCallback__set_m_rayDirectionInverse_p1 = Module["_emscripten_bind_btBroadphaseRayCallback__set_m_rayDirectionInverse_p1"] = asm["_emscripten_bind_btBroadphaseRayCallback__set_m_rayDirectionInverse_p1"];
var _emscripten_bind_btMultiSphereShape__isConvex2d_p0 = Module["_emscripten_bind_btMultiSphereShape__isConvex2d_p0"] = asm["_emscripten_bind_btMultiSphereShape__isConvex2d_p0"];
var _emscripten_bind_btCylinderShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btCylinderShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btCylinderShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btRigidBody__isActive_p0 = Module["_emscripten_bind_btRigidBody__isActive_p0"] = asm["_emscripten_bind_btRigidBody__isActive_p0"];
var _emscripten_bind_btBroadphaseRayCallback__get_m_rayDirectionInverse_p0 = Module["_emscripten_bind_btBroadphaseRayCallback__get_m_rayDirectionInverse_p0"] = asm["_emscripten_bind_btBroadphaseRayCallback__get_m_rayDirectionInverse_p0"];
var _emscripten_bind_btHeightfieldTerrainShape__setLocalScaling_p1 = Module["_emscripten_bind_btHeightfieldTerrainShape__setLocalScaling_p1"] = asm["_emscripten_bind_btHeightfieldTerrainShape__setLocalScaling_p1"];
var _emscripten_bind_btRaycastVehicle__getRightAxis_p0 = Module["_emscripten_bind_btRaycastVehicle__getRightAxis_p0"] = asm["_emscripten_bind_btRaycastVehicle__getRightAxis_p0"];
var _emscripten_bind_btUniformScalingShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btUniformScalingShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btUniformScalingShape__calculateLocalInertia_p2"];
var _emscripten_bind_btDispatcherInfo__set_m_timeStep_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_timeStep_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_timeStep_p1"];
var _emscripten_bind_btGhostObject__getNumOverlappingObjects_p0 = Module["_emscripten_bind_btGhostObject__getNumOverlappingObjects_p0"] = asm["_emscripten_bind_btGhostObject__getNumOverlappingObjects_p0"];
var _emscripten_bind_btCapsuleShapeX__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btCapsuleShapeX__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btCapsuleShapeX__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btUniversalConstraint__set_m_objectType_p1 = Module["_emscripten_bind_btUniversalConstraint__set_m_objectType_p1"] = asm["_emscripten_bind_btUniversalConstraint__set_m_objectType_p1"];
var _emscripten_bind_btContactConstraint__getInfo2_p1 = Module["_emscripten_bind_btContactConstraint__getInfo2_p1"] = asm["_emscripten_bind_btContactConstraint__getInfo2_p1"];
var _emscripten_bind_btConvexSeparatingDistanceUtil__getConservativeSeparatingDistance_p0 = Module["_emscripten_bind_btConvexSeparatingDistanceUtil__getConservativeSeparatingDistance_p0"] = asm["_emscripten_bind_btConvexSeparatingDistanceUtil__getConservativeSeparatingDistance_p0"];
var _emscripten_bind_btPairCachingGhostObject__getIslandTag_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getIslandTag_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getIslandTag_p0"];
var _emscripten_bind_btStaticPlaneShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btStaticPlaneShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btStaticPlaneShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btPairCachingGhostObject__getRootCollisionShape_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getRootCollisionShape_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getRootCollisionShape_p0"];
var _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_transformA_p0 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_transformA_p0"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_transformA_p0"];
var _emscripten_bind_btRigidBody__setContactProcessingThreshold_p1 = Module["_emscripten_bind_btRigidBody__setContactProcessingThreshold_p1"] = asm["_emscripten_bind_btRigidBody__setContactProcessingThreshold_p1"];
var _emscripten_bind_btConvexInternalShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btConvexInternalShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btConvexInternalShape__setImplicitShapeDimensions_p1"];
var _emscripten_bind_btRigidBody__getAngularDamping_p0 = Module["_emscripten_bind_btRigidBody__getAngularDamping_p0"] = asm["_emscripten_bind_btRigidBody__getAngularDamping_p0"];
var _emscripten_bind_btConcaveShape__getUserPointer_p0 = Module["_emscripten_bind_btConcaveShape__getUserPointer_p0"] = asm["_emscripten_bind_btConcaveShape__getUserPointer_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__calculatePrincipalAxisTransform_p3 = Module["_emscripten_bind_btConvexTriangleMeshShape__calculatePrincipalAxisTransform_p3"] = asm["_emscripten_bind_btConvexTriangleMeshShape__calculatePrincipalAxisTransform_p3"];
var _memset = Module["_memset"] = asm["_memset"];
var _emscripten_bind_btHinge2Constraint__getAngle_p1 = Module["_emscripten_bind_btHinge2Constraint__getAngle_p1"] = asm["_emscripten_bind_btHinge2Constraint__getAngle_p1"];
var _emscripten_bind_btCylinderShapeX__getMarginNonVirtual_p0 = Module["_emscripten_bind_btCylinderShapeX__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btCylinderShapeX__getMarginNonVirtual_p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalDampingFactor_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalDampingFactor_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalDampingFactor_p0"];
var _emscripten_bind_btWheelInfo__get_m_suspensionRelativeVelocity_p0 = Module["_emscripten_bind_btWheelInfo__get_m_suspensionRelativeVelocity_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_suspensionRelativeVelocity_p0"];
var _emscripten_bind_btPolyhedralConvexShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btPolyhedralConvexShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btPolyhedralConvexShape__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btCapsuleShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btCapsuleShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btCapsuleShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__ClosestRayResultCallback_p2 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__ClosestRayResultCallback_p2"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__ClosestRayResultCallback_p2"];
var _emscripten_bind_btTypedConstraint__isEnabled_p0 = Module["_emscripten_bind_btTypedConstraint__isEnabled_p0"] = asm["_emscripten_bind_btTypedConstraint__isEnabled_p0"];
var _emscripten_bind_btVector4__cross_p1 = Module["_emscripten_bind_btVector4__cross_p1"] = asm["_emscripten_bind_btVector4__cross_p1"];
var _emscripten_bind_btRigidBody__internalGetDeltaLinearVelocity_p0 = Module["_emscripten_bind_btRigidBody__internalGetDeltaLinearVelocity_p0"] = asm["_emscripten_bind_btRigidBody__internalGetDeltaLinearVelocity_p0"];
var _emscripten_bind_btCapsuleShapeZ__isConvex_p0 = Module["_emscripten_bind_btCapsuleShapeZ__isConvex_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__isConvex_p0"];
var _emscripten_bind_btSequentialImpulseConstraintSolver__reset_p0 = Module["_emscripten_bind_btSequentialImpulseConstraintSolver__reset_p0"] = asm["_emscripten_bind_btSequentialImpulseConstraintSolver__reset_p0"];
var _emscripten_bind_btPairCachingGhostObject__serialize_p2 = Module["_emscripten_bind_btPairCachingGhostObject__serialize_p2"] = asm["_emscripten_bind_btPairCachingGhostObject__serialize_p2"];
var _emscripten_bind_btCylinderShapeX__isInfinite_p0 = Module["_emscripten_bind_btCylinderShapeX__isInfinite_p0"] = asm["_emscripten_bind_btCylinderShapeX__isInfinite_p0"];
var _emscripten_bind_btRigidBody__getLinearSleepingThreshold_p0 = Module["_emscripten_bind_btRigidBody__getLinearSleepingThreshold_p0"] = asm["_emscripten_bind_btRigidBody__getLinearSleepingThreshold_p0"];
var _emscripten_bind_btGhostObject__setFriction_p1 = Module["_emscripten_bind_btGhostObject__setFriction_p1"] = asm["_emscripten_bind_btGhostObject__setFriction_p1"];
var _emscripten_bind_btCylinderShape__serializeSingleShape_p1 = Module["_emscripten_bind_btCylinderShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btCylinderShape__serializeSingleShape_p1"];
var _emscripten_bind_btWheelInfo__set_m_skidInfo_p1 = Module["_emscripten_bind_btWheelInfo__set_m_skidInfo_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_skidInfo_p1"];
var _emscripten_bind_btHinge2Constraint__testAngularLimitMotor_p1 = Module["_emscripten_bind_btHinge2Constraint__testAngularLimitMotor_p1"] = asm["_emscripten_bind_btHinge2Constraint__testAngularLimitMotor_p1"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__serializeSingleShape_p1 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__serializeSingleShape_p1"];
var _emscripten_bind_btGeneric6DofConstraint__get_m_useSolveConstraintObsolete_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__get_m_useSolveConstraintObsolete_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__get_m_useSolveConstraintObsolete_p0"];
var _emscripten_bind_btUniversalConstraint__getRelativePivotPosition_p1 = Module["_emscripten_bind_btUniversalConstraint__getRelativePivotPosition_p1"] = asm["_emscripten_bind_btUniversalConstraint__getRelativePivotPosition_p1"];
var _emscripten_bind_btBroadphaseInterface__destroyProxy_p2 = Module["_emscripten_bind_btBroadphaseInterface__destroyProxy_p2"] = asm["_emscripten_bind_btBroadphaseInterface__destroyProxy_p2"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getParam_p2 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getParam_p2"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getParam_p2"];
var _emscripten_bind_btConeShapeX__getShapeType_p0 = Module["_emscripten_bind_btConeShapeX__getShapeType_p0"] = asm["_emscripten_bind_btConeShapeX__getShapeType_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p2 = Module["_emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p2"] = asm["_emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p2"];
var _emscripten_bind_btTriangleMesh__getPremadeAabb_p2 = Module["_emscripten_bind_btTriangleMesh__getPremadeAabb_p2"] = asm["_emscripten_bind_btTriangleMesh__getPremadeAabb_p2"];
var _emscripten_bind_btGeneric6DofConstraint__setBreakingImpulseThreshold_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setBreakingImpulseThreshold_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setBreakingImpulseThreshold_p1"];
var _emscripten_bind_btCylinderShapeZ__getAngularMotionDisc_p0 = Module["_emscripten_bind_btCylinderShapeZ__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getAngularMotionDisc_p0"];
var _emscripten_bind_btDbvtProxy__get_m_multiSapParentProxy_p0 = Module["_emscripten_bind_btDbvtProxy__get_m_multiSapParentProxy_p0"] = asm["_emscripten_bind_btDbvtProxy__get_m_multiSapParentProxy_p0"];
var _emscripten_bind_btBU_Simplex1to4__calculateLocalInertia_p2 = Module["_emscripten_bind_btBU_Simplex1to4__calculateLocalInertia_p2"] = asm["_emscripten_bind_btBU_Simplex1to4__calculateLocalInertia_p2"];
var _emscripten_bind_btTypedConstraint__setParam_p2 = Module["_emscripten_bind_btTypedConstraint__setParam_p2"] = asm["_emscripten_bind_btTypedConstraint__setParam_p2"];
var _emscripten_bind_btTypedConstraint__setParam_p3 = Module["_emscripten_bind_btTypedConstraint__setParam_p3"] = asm["_emscripten_bind_btTypedConstraint__setParam_p3"];
var _emscripten_bind_btDefaultMotionState__set_m_centerOfMassOffset_p1 = Module["_emscripten_bind_btDefaultMotionState__set_m_centerOfMassOffset_p1"] = asm["_emscripten_bind_btDefaultMotionState__set_m_centerOfMassOffset_p1"];
var _emscripten_bind_btTypedConstraint__setUserConstraintPtr_p1 = Module["_emscripten_bind_btTypedConstraint__setUserConstraintPtr_p1"] = asm["_emscripten_bind_btTypedConstraint__setUserConstraintPtr_p1"];
var _emscripten_bind_btWheelInfo__get_m_wheelAxleCS_p0 = Module["_emscripten_bind_btWheelInfo__get_m_wheelAxleCS_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_wheelAxleCS_p0"];
var _emscripten_bind_btCompoundShape____destroy___p0 = Module["_emscripten_bind_btCompoundShape____destroy___p0"] = asm["_emscripten_bind_btCompoundShape____destroy___p0"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__hasHit_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__hasHit_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__hasHit_p0"];
var _emscripten_bind_btHashString__get_m_string_p0 = Module["_emscripten_bind_btHashString__get_m_string_p0"] = asm["_emscripten_bind_btHashString__get_m_string_p0"];
var _emscripten_bind_btQuadWord__btQuadWord_p0 = Module["_emscripten_bind_btQuadWord__btQuadWord_p0"] = asm["_emscripten_bind_btQuadWord__btQuadWord_p0"];
var _emscripten_bind_btTransform__setRotation_p1 = Module["_emscripten_bind_btTransform__setRotation_p1"] = asm["_emscripten_bind_btTransform__setRotation_p1"];
var _emscripten_bind_btDbvtBroadphase__set_m_deferedcollide_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_deferedcollide_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_deferedcollide_p1"];
var _emscripten_bind_btRigidBody__get_m_frictionSolverType_p0 = Module["_emscripten_bind_btRigidBody__get_m_frictionSolverType_p0"] = asm["_emscripten_bind_btRigidBody__get_m_frictionSolverType_p0"];
var _emscripten_bind_btSliderConstraint__solveConstraintObsolete_p3 = Module["_emscripten_bind_btSliderConstraint__solveConstraintObsolete_p3"] = asm["_emscripten_bind_btSliderConstraint__solveConstraintObsolete_p3"];
var _emscripten_bind_btDiscreteDynamicsWorld__getPairCache_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getPairCache_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getPairCache_p0"];
var _emscripten_bind_btSimpleBroadphaseProxy__set_m_uniqueId_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__set_m_uniqueId_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__set_m_uniqueId_p1"];
var _emscripten_bind_btBroadphaseProxy____destroy___p0 = Module["_emscripten_bind_btBroadphaseProxy____destroy___p0"] = asm["_emscripten_bind_btBroadphaseProxy____destroy___p0"];
var _emscripten_bind_btDbvtProxy__isInfinite_p1 = Module["_emscripten_bind_btDbvtProxy__isInfinite_p1"] = asm["_emscripten_bind_btDbvtProxy__isInfinite_p1"];
var _emscripten_bind_btCompoundShape__getUpdateRevision_p0 = Module["_emscripten_bind_btCompoundShape__getUpdateRevision_p0"] = asm["_emscripten_bind_btCompoundShape__getUpdateRevision_p0"];
var _emscripten_bind_btTranslationalLimitMotor__get_m_upperLimit_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_upperLimit_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_upperLimit_p0"];
var _emscripten_bind_btVector3__deSerialize_p1 = Module["_emscripten_bind_btVector3__deSerialize_p1"] = asm["_emscripten_bind_btVector3__deSerialize_p1"];
var _emscripten_bind_btConvexInternalShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btConvexInternalShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btConvexInternalShape__localGetSupportingVertex_p1"];
var _emscripten_bind_btHashString__getHash_p0 = Module["_emscripten_bind_btHashString__getHash_p0"] = asm["_emscripten_bind_btHashString__getHash_p0"];
var _emscripten_bind_btOverlappingPairCache__addOverlappingPair_p2 = Module["_emscripten_bind_btOverlappingPairCache__addOverlappingPair_p2"] = asm["_emscripten_bind_btOverlappingPairCache__addOverlappingPair_p2"];
var _emscripten_bind_btPairCachingGhostObject__getAnisotropicFriction_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getAnisotropicFriction_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getAnisotropicFriction_p0"];
var _emscripten_bind_btCapsuleShape__isConvex_p0 = Module["_emscripten_bind_btCapsuleShape__isConvex_p0"] = asm["_emscripten_bind_btCapsuleShape__isConvex_p0"];
var _emscripten_bind_btCylinderShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btCylinderShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btCylinderShape__getImplicitShapeDimensions_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__getWorldType_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getWorldType_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getWorldType_p0"];
var _emscripten_bind_btSimpleBroadphase__getBroadphaseAabb_p2 = Module["_emscripten_bind_btSimpleBroadphase__getBroadphaseAabb_p2"] = asm["_emscripten_bind_btSimpleBroadphase__getBroadphaseAabb_p2"];
var _emscripten_bind_btRigidBody__forceActivationState_p1 = Module["_emscripten_bind_btRigidBody__forceActivationState_p1"] = asm["_emscripten_bind_btRigidBody__forceActivationState_p1"];
var _emscripten_bind_btConeShapeX__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btConeShapeX__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btConeShapeX__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__btScaledBvhTriangleMeshShape_p2 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__btScaledBvhTriangleMeshShape_p2"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__btScaledBvhTriangleMeshShape_p2"];
var _emscripten_bind_btRotationalLimitMotor__get_m_stopERP_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_stopERP_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_stopERP_p0"];
var _emscripten_bind_btConeShapeX__isPolyhedral_p0 = Module["_emscripten_bind_btConeShapeX__isPolyhedral_p0"] = asm["_emscripten_bind_btConeShapeX__isPolyhedral_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p1"];
var _emscripten_bind_btVector3__absolute_p0 = Module["_emscripten_bind_btVector3__absolute_p0"] = asm["_emscripten_bind_btVector3__absolute_p0"];
var _emscripten_bind_btTypedConstraint__setBreakingImpulseThreshold_p1 = Module["_emscripten_bind_btTypedConstraint__setBreakingImpulseThreshold_p1"] = asm["_emscripten_bind_btTypedConstraint__setBreakingImpulseThreshold_p1"];
var _emscripten_bind_btConeTwistConstraint__getTwistLimitSign_p0 = Module["_emscripten_bind_btConeTwistConstraint__getTwistLimitSign_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getTwistLimitSign_p0"];
var _emscripten_bind_btConvexInternalAabbCachingShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getAabbNonVirtual_p3"];
var _emscripten_bind_btHingeConstraint__setLimit_p4 = Module["_emscripten_bind_btHingeConstraint__setLimit_p4"] = asm["_emscripten_bind_btHingeConstraint__setLimit_p4"];
var _emscripten_bind_btGeneric6DofConstraint__getLinearLowerLimit_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getLinearLowerLimit_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getLinearLowerLimit_p1"];
var _emscripten_bind_btConvexInternalAabbCachingShape__getLocalScaling_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getLocalScaling_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getLocalScaling_p0"];
var _emscripten_bind_btMultiSphereShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btMultiSphereShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btMultiSphereShape__getAabbNonVirtual_p3"];
var _emscripten_bind_btVector4__deSerializeDouble_p1 = Module["_emscripten_bind_btVector4__deSerializeDouble_p1"] = asm["_emscripten_bind_btVector4__deSerializeDouble_p1"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__addSingleResult_p2 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__addSingleResult_p2"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__addSingleResult_p2"];
var _emscripten_bind_btDefaultMotionState__get_m_userPointer_p0 = Module["_emscripten_bind_btDefaultMotionState__get_m_userPointer_p0"] = asm["_emscripten_bind_btDefaultMotionState__get_m_userPointer_p0"];
var _emscripten_bind_btSliderConstraint__getAncorInB_p0 = Module["_emscripten_bind_btSliderConstraint__getAncorInB_p0"] = asm["_emscripten_bind_btSliderConstraint__getAncorInB_p0"];
var _emscripten_bind_btCapsuleShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btCapsuleShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btCapsuleShape__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getDbgDrawSize_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getDbgDrawSize_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getDbgDrawSize_p0"];
var _emscripten_bind_btTransform__getOrigin_p0 = Module["_emscripten_bind_btTransform__getOrigin_p0"] = asm["_emscripten_bind_btTransform__getOrigin_p0"];
var _emscripten_bind_btWheelInfo__get_m_wheelsDampingCompression_p0 = Module["_emscripten_bind_btWheelInfo__get_m_wheelsDampingCompression_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_wheelsDampingCompression_p0"];
var _emscripten_bind_btCylinderShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btCylinderShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btCylinderShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btTypedObject__get_m_objectType_p0 = Module["_emscripten_bind_btTypedObject__get_m_objectType_p0"] = asm["_emscripten_bind_btTypedObject__get_m_objectType_p0"];
var _emscripten_bind_btCollisionAlgorithmConstructionInfo__btCollisionAlgorithmConstructionInfo_p0 = Module["_emscripten_bind_btCollisionAlgorithmConstructionInfo__btCollisionAlgorithmConstructionInfo_p0"] = asm["_emscripten_bind_btCollisionAlgorithmConstructionInfo__btCollisionAlgorithmConstructionInfo_p0"];
var _emscripten_bind_btCompoundShape__getAabb_p3 = Module["_emscripten_bind_btCompoundShape__getAabb_p3"] = asm["_emscripten_bind_btCompoundShape__getAabb_p3"];
var _emscripten_bind_btBroadphasePair__get_m_pProxy1_p0 = Module["_emscripten_bind_btBroadphasePair__get_m_pProxy1_p0"] = asm["_emscripten_bind_btBroadphasePair__get_m_pProxy1_p0"];
var _emscripten_bind_btRigidBody__getDeactivationTime_p0 = Module["_emscripten_bind_btRigidBody__getDeactivationTime_p0"] = asm["_emscripten_bind_btRigidBody__getDeactivationTime_p0"];
var _emscripten_bind_btCollisionObject__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btCollisionObject__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btCollisionObject__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btVector3__length_p0 = Module["_emscripten_bind_btVector3__length_p0"] = asm["_emscripten_bind_btVector3__length_p0"];
var _emscripten_bind_btConstraintSolver__prepareSolve_p2 = Module["_emscripten_bind_btConstraintSolver__prepareSolve_p2"] = asm["_emscripten_bind_btConstraintSolver__prepareSolve_p2"];
var _emscripten_bind_btVector4__deSerialize_p1 = Module["_emscripten_bind_btVector4__deSerialize_p1"] = asm["_emscripten_bind_btVector4__deSerialize_p1"];
var _emscripten_bind_btActivatingCollisionAlgorithm__calculateTimeOfImpact_p4 = Module["_emscripten_bind_btActivatingCollisionAlgorithm__calculateTimeOfImpact_p4"] = asm["_emscripten_bind_btActivatingCollisionAlgorithm__calculateTimeOfImpact_p4"];
var _emscripten_bind_btDbvtBroadphase__get_m_updates_done_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_updates_done_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_updates_done_p0"];
var _emscripten_bind_btContactConstraint__getInfo1_p1 = Module["_emscripten_bind_btContactConstraint__getInfo1_p1"] = asm["_emscripten_bind_btContactConstraint__getInfo1_p1"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__isNonMoving_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isNonMoving_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isNonMoving_p0"];
var _emscripten_bind_btSliderConstraint__getConstraintType_p0 = Module["_emscripten_bind_btSliderConstraint__getConstraintType_p0"] = asm["_emscripten_bind_btSliderConstraint__getConstraintType_p0"];
var _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_maximumDistanceSquared_p0 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_maximumDistanceSquared_p0"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_maximumDistanceSquared_p0"];
var _emscripten_bind_btCompoundShape__getDynamicAabbTree_p0 = Module["_emscripten_bind_btCompoundShape__getDynamicAabbTree_p0"] = asm["_emscripten_bind_btCompoundShape__getDynamicAabbTree_p0"];
var _emscripten_bind_btRotationalLimitMotor__set_m_bounce_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_bounce_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_bounce_p1"];
var _emscripten_bind_btConvexInternalShape__getBoundingSphere_p2 = Module["_emscripten_bind_btConvexInternalShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btConvexInternalShape__getBoundingSphere_p2"];
var _emscripten_bind_btCylinderShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btCylinderShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btCylinderShape__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btIDebugDraw__drawCylinder_p5 = Module["_emscripten_bind_btIDebugDraw__drawCylinder_p5"] = asm["_emscripten_bind_btIDebugDraw__drawCylinder_p5"];
var _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_stackAlloc_p0 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_stackAlloc_p0"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_stackAlloc_p0"];
var _emscripten_bind_btQuadWord__op_comp_p1 = Module["_emscripten_bind_btQuadWord__op_comp_p1"] = asm["_emscripten_bind_btQuadWord__op_comp_p1"];
var _emscripten_bind_btGeneric6DofConstraint__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btCylinderShape____destroy___p0 = Module["_emscripten_bind_btCylinderShape____destroy___p0"] = asm["_emscripten_bind_btCylinderShape____destroy___p0"];
var _emscripten_bind_btConvexHullShape__isConvex_p0 = Module["_emscripten_bind_btConvexHullShape__isConvex_p0"] = asm["_emscripten_bind_btConvexHullShape__isConvex_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__getGravity_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getGravity_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getGravity_p0"];
var _emscripten_bind_btHingeConstraint__getInfo2NonVirtual_p5 = Module["_emscripten_bind_btHingeConstraint__getInfo2NonVirtual_p5"] = asm["_emscripten_bind_btHingeConstraint__getInfo2NonVirtual_p5"];
var _emscripten_bind_btHinge2Constraint__setUseFrameOffset_p1 = Module["_emscripten_bind_btHinge2Constraint__setUseFrameOffset_p1"] = asm["_emscripten_bind_btHinge2Constraint__setUseFrameOffset_p1"];
var _emscripten_bind_btTypedConstraint__getUid_p0 = Module["_emscripten_bind_btTypedConstraint__getUid_p0"] = asm["_emscripten_bind_btTypedConstraint__getUid_p0"];
var _emscripten_bind_btTriangleIndexVertexArray__setScaling_p1 = Module["_emscripten_bind_btTriangleIndexVertexArray__setScaling_p1"] = asm["_emscripten_bind_btTriangleIndexVertexArray__setScaling_p1"];
var _emscripten_bind_btRigidBody__setWorldTransform_p1 = Module["_emscripten_bind_btRigidBody__setWorldTransform_p1"] = asm["_emscripten_bind_btRigidBody__setWorldTransform_p1"];
var _emscripten_bind_btGhostObject__serialize_p2 = Module["_emscripten_bind_btGhostObject__serialize_p2"] = asm["_emscripten_bind_btGhostObject__serialize_p2"];
var _emscripten_bind_btBoxShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btBoxShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btBoxShape__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_btQuadWord__setY_p1 = Module["_emscripten_bind_btQuadWord__setY_p1"] = asm["_emscripten_bind_btQuadWord__setY_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getUseFrameOffset_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getUseFrameOffset_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getUseFrameOffset_p0"];
var _emscripten_bind_btUniformScalingShape____destroy___p0 = Module["_emscripten_bind_btUniformScalingShape____destroy___p0"] = asm["_emscripten_bind_btUniformScalingShape____destroy___p0"];
var _emscripten_bind_btPairCachingGhostObject__setFriction_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setFriction_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setFriction_p1"];
var _emscripten_bind_btConeTwistConstraint__getBFrame_p0 = Module["_emscripten_bind_btConeTwistConstraint__getBFrame_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getBFrame_p0"];
var _emscripten_bind_btRigidBody__getCenterOfMassPosition_p0 = Module["_emscripten_bind_btRigidBody__getCenterOfMassPosition_p0"] = asm["_emscripten_bind_btRigidBody__getCenterOfMassPosition_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__rayTestSingle_p6 = Module["_emscripten_bind_btDiscreteDynamicsWorld__rayTestSingle_p6"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__rayTestSingle_p6"];
var _emscripten_bind_btTranslationalLimitMotor__set_m_maxMotorForce_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_maxMotorForce_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_maxMotorForce_p1"];
var _emscripten_bind_btConvexShape__getBoundingSphere_p2 = Module["_emscripten_bind_btConvexShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btConvexShape__getBoundingSphere_p2"];
var _emscripten_bind_btConvexShape__getUserPointer_p0 = Module["_emscripten_bind_btConvexShape__getUserPointer_p0"] = asm["_emscripten_bind_btConvexShape__getUserPointer_p0"];
var _emscripten_bind_btDbvtBroadphase__get_m_cupdates_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_cupdates_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_cupdates_p0"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_collisionFilterMask_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_collisionFilterMask_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_collisionFilterMask_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__getSolverInfo_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getSolverInfo_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getSolverInfo_p0"];
var _emscripten_bind_btIDebugDraw__drawTriangle_p8 = Module["_emscripten_bind_btIDebugDraw__drawTriangle_p8"] = asm["_emscripten_bind_btIDebugDraw__drawTriangle_p8"];
var _emscripten_bind_btSimpleBroadphase__getOverlappingPairCache_p0 = Module["_emscripten_bind_btSimpleBroadphase__getOverlappingPairCache_p0"] = asm["_emscripten_bind_btSimpleBroadphase__getOverlappingPairCache_p0"];
var _emscripten_bind_btConeShapeZ__getMarginNV_p0 = Module["_emscripten_bind_btConeShapeZ__getMarginNV_p0"] = asm["_emscripten_bind_btConeShapeZ__getMarginNV_p0"];
var _emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p2 = Module["_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p2"] = asm["_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p2"];
var _emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p5 = Module["_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p5"] = asm["_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p5"];
var _emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p4 = Module["_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p4"] = asm["_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p4"];
var _emscripten_bind_btCapsuleShapeX__isConcave_p0 = Module["_emscripten_bind_btCapsuleShapeX__isConcave_p0"] = asm["_emscripten_bind_btCapsuleShapeX__isConcave_p0"];
var _emscripten_bind_btEmptyShape__btEmptyShape_p0 = Module["_emscripten_bind_btEmptyShape__btEmptyShape_p0"] = asm["_emscripten_bind_btEmptyShape__btEmptyShape_p0"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_closestHitFraction_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_closestHitFraction_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_closestHitFraction_p0"];
var _emscripten_bind_btPoint2PointConstraint__getPivotInA_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getPivotInA_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getPivotInA_p0"];
var _emscripten_bind_btDbvtBroadphase__set_m_newpairs_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_newpairs_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_newpairs_p1"];
var _emscripten_bind_btSliderConstraint__getRestitutionDirAng_p0 = Module["_emscripten_bind_btSliderConstraint__getRestitutionDirAng_p0"] = asm["_emscripten_bind_btSliderConstraint__getRestitutionDirAng_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__getNumCollisionObjects_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getNumCollisionObjects_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getNumCollisionObjects_p0"];
var _emscripten_bind_btBU_Simplex1to4__getAabbSlow_p3 = Module["_emscripten_bind_btBU_Simplex1to4__getAabbSlow_p3"] = asm["_emscripten_bind_btBU_Simplex1to4__getAabbSlow_p3"];
var _emscripten_bind_btBoxShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btBoxShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btBoxShape__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btConvexTriangleMeshShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getMarginNonVirtual_p0"];
var _emscripten_bind_btConeTwistConstraint__internalSetAppliedImpulse_p1 = Module["_emscripten_bind_btConeTwistConstraint__internalSetAppliedImpulse_p1"] = asm["_emscripten_bind_btConeTwistConstraint__internalSetAppliedImpulse_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getUid_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getUid_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getUid_p0"];
var _emscripten_bind_btCylinderShapeZ__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btCylinderShapeZ__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btCylinderShapeZ__getContactBreakingThreshold_p1"];
var _emscripten_bind_btPolyhedralConvexShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btPolyhedralConvexShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btPolyhedralConvexShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_persistentManifoldPool_p0 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_persistentManifoldPool_p0"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_persistentManifoldPool_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__serializeSingleTriangleInfoMap_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__serializeSingleTriangleInfoMap_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__serializeSingleTriangleInfoMap_p1"];
var _emscripten_bind_btUniversalConstraint__getAngle1_p0 = Module["_emscripten_bind_btUniversalConstraint__getAngle1_p0"] = asm["_emscripten_bind_btUniversalConstraint__getAngle1_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setLinearLowerLimit_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setLinearLowerLimit_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setLinearLowerLimit_p1"];
var _emscripten_bind_btSimpleBroadphaseProxy__set_m_collisionFilterGroup_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__set_m_collisionFilterGroup_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__set_m_collisionFilterGroup_p1"];
var _emscripten_bind_btQuaternion__setY_p1 = Module["_emscripten_bind_btQuaternion__setY_p1"] = asm["_emscripten_bind_btQuaternion__setY_p1"];
var _emscripten_bind_btAngularLimit__isLimit_p0 = Module["_emscripten_bind_btAngularLimit__isLimit_p0"] = asm["_emscripten_bind_btAngularLimit__isLimit_p0"];
var _emscripten_bind_btSphereShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btSphereShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btSphereShape__getAabbNonVirtual_p3"];
var _emscripten_bind_btCapsuleShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btCapsuleShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btCapsuleShape__getImplicitShapeDimensions_p0"];
var _emscripten_bind_btStaticPlaneShape____destroy___p0 = Module["_emscripten_bind_btStaticPlaneShape____destroy___p0"] = asm["_emscripten_bind_btStaticPlaneShape____destroy___p0"];
var _emscripten_bind_btBoxShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btBoxShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btBoxShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btConeShapeX__isNonMoving_p0 = Module["_emscripten_bind_btConeShapeX__isNonMoving_p0"] = asm["_emscripten_bind_btConeShapeX__isNonMoving_p0"];
var _emscripten_bind_btConvexInternalAabbCachingShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getImplicitShapeDimensions_p0"];
var _emscripten_bind_btIDebugDraw__drawSpherePatch_p10 = Module["_emscripten_bind_btIDebugDraw__drawSpherePatch_p10"] = asm["_emscripten_bind_btIDebugDraw__drawSpherePatch_p10"];
var _emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p2 = Module["_emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p2"] = asm["_emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p2"];
var _emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p3 = Module["_emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p3"] = asm["_emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p3"];
var _emscripten_bind_btBvhSubtreeInfo__set_m_rootNodeIndex_p1 = Module["_emscripten_bind_btBvhSubtreeInfo__set_m_rootNodeIndex_p1"] = asm["_emscripten_bind_btBvhSubtreeInfo__set_m_rootNodeIndex_p1"];
var _emscripten_bind_btUniformScalingShape__getMargin_p0 = Module["_emscripten_bind_btUniformScalingShape__getMargin_p0"] = asm["_emscripten_bind_btUniformScalingShape__getMargin_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__getWorldType_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getWorldType_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getWorldType_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getMargin_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getMargin_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getMargin_p0"];
var _emscripten_bind_btConcaveShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btConcaveShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btConcaveShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btGeneric6DofConstraint__getUserConstraintId_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getUserConstraintId_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getUserConstraintId_p0"];
var _emscripten_bind_btTransform__inverse_p0 = Module["_emscripten_bind_btTransform__inverse_p0"] = asm["_emscripten_bind_btTransform__inverse_p0"];
var _emscripten_bind_btCylinderShapeX__isConvex2d_p0 = Module["_emscripten_bind_btCylinderShapeX__isConvex2d_p0"] = asm["_emscripten_bind_btCylinderShapeX__isConvex2d_p0"];
var _emscripten_bind_btOverlappingPairCache__sortOverlappingPairs_p1 = Module["_emscripten_bind_btOverlappingPairCache__sortOverlappingPairs_p1"] = asm["_emscripten_bind_btOverlappingPairCache__sortOverlappingPairs_p1"];
var _emscripten_bind_btBroadphaseProxy__set_m_collisionFilterGroup_p1 = Module["_emscripten_bind_btBroadphaseProxy__set_m_collisionFilterGroup_p1"] = asm["_emscripten_bind_btBroadphaseProxy__set_m_collisionFilterGroup_p1"];
var _emscripten_bind_btBroadphaseInterface__rayTest_p4 = Module["_emscripten_bind_btBroadphaseInterface__rayTest_p4"] = asm["_emscripten_bind_btBroadphaseInterface__rayTest_p4"];
var _emscripten_bind_btBroadphaseInterface__rayTest_p3 = Module["_emscripten_bind_btBroadphaseInterface__rayTest_p3"] = asm["_emscripten_bind_btBroadphaseInterface__rayTest_p3"];
var _emscripten_bind_btQuaternion__setZ_p1 = Module["_emscripten_bind_btQuaternion__setZ_p1"] = asm["_emscripten_bind_btQuaternion__setZ_p1"];
var _emscripten_bind_btBU_Simplex1to4__setUserPointer_p1 = Module["_emscripten_bind_btBU_Simplex1to4__setUserPointer_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__setUserPointer_p1"];
var _emscripten_bind_btQuaternion__setW_p1 = Module["_emscripten_bind_btQuaternion__setW_p1"] = asm["_emscripten_bind_btQuaternion__setW_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__objectQuerySingle_p8 = Module["_emscripten_bind_btContinuousDynamicsWorld__objectQuerySingle_p8"] = asm["_emscripten_bind_btContinuousDynamicsWorld__objectQuerySingle_p8"];
var _emscripten_bind_btRigidBody__getInvInertiaTensorWorld_p0 = Module["_emscripten_bind_btRigidBody__getInvInertiaTensorWorld_p0"] = asm["_emscripten_bind_btRigidBody__getInvInertiaTensorWorld_p0"];
var _emscripten_bind_btRigidBody__applyImpulse_p2 = Module["_emscripten_bind_btRigidBody__applyImpulse_p2"] = asm["_emscripten_bind_btRigidBody__applyImpulse_p2"];
var _emscripten_bind_btCapsuleShapeZ__localGetSupportingVertex_p1 = Module["_emscripten_bind_btCapsuleShapeZ__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btCapsuleShapeZ__localGetSupportingVertex_p1"];
var _emscripten_bind_btRigidBody__setNewBroadphaseProxy_p1 = Module["_emscripten_bind_btRigidBody__setNewBroadphaseProxy_p1"] = asm["_emscripten_bind_btRigidBody__setNewBroadphaseProxy_p1"];
var _emscripten_bind_btSliderConstraint__setPoweredLinMotor_p1 = Module["_emscripten_bind_btSliderConstraint__setPoweredLinMotor_p1"] = asm["_emscripten_bind_btSliderConstraint__setPoweredLinMotor_p1"];
var _emscripten_bind_btTriangleCallback__processTriangle_p3 = Module["_emscripten_bind_btTriangleCallback__processTriangle_p3"] = asm["_emscripten_bind_btTriangleCallback__processTriangle_p3"];
var _emscripten_bind_btDynamicsWorld__contactPairTest_p3 = Module["_emscripten_bind_btDynamicsWorld__contactPairTest_p3"] = asm["_emscripten_bind_btDynamicsWorld__contactPairTest_p3"];
var _emscripten_bind_btGeneric6DofConstraint__setUserConstraintId_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setUserConstraintId_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setUserConstraintId_p1"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__addSingleResult_p2 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__addSingleResult_p2"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__addSingleResult_p2"];
var _emscripten_bind_btStaticPlaneShape__setLocalScaling_p1 = Module["_emscripten_bind_btStaticPlaneShape__setLocalScaling_p1"] = asm["_emscripten_bind_btStaticPlaneShape__setLocalScaling_p1"];
var _emscripten_bind_btDynamicsWorld__removeAction_p1 = Module["_emscripten_bind_btDynamicsWorld__removeAction_p1"] = asm["_emscripten_bind_btDynamicsWorld__removeAction_p1"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__setMargin_p1 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__setMargin_p1"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__setMargin_p1"];
var _emscripten_bind_btQuaternion__setX_p1 = Module["_emscripten_bind_btQuaternion__setX_p1"] = asm["_emscripten_bind_btQuaternion__setX_p1"];
var _emscripten_bind_btManifoldResult__getPersistentManifold_p0 = Module["_emscripten_bind_btManifoldResult__getPersistentManifold_p0"] = asm["_emscripten_bind_btManifoldResult__getPersistentManifold_p0"];
var _emscripten_bind_btDispatcher__needsResponse_p2 = Module["_emscripten_bind_btDispatcher__needsResponse_p2"] = asm["_emscripten_bind_btDispatcher__needsResponse_p2"];
var _emscripten_bind_btCapsuleShapeX__getName_p0 = Module["_emscripten_bind_btCapsuleShapeX__getName_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getName_p0"];
var _emscripten_bind_btConvexShape__isInfinite_p0 = Module["_emscripten_bind_btConvexShape__isInfinite_p0"] = asm["_emscripten_bind_btConvexShape__isInfinite_p0"];
var _emscripten_bind_btSimpleBroadphaseProxy__get_m_nextFree_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__get_m_nextFree_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__get_m_nextFree_p0"];
var _emscripten_bind_btSimpleBroadphase__printStats_p0 = Module["_emscripten_bind_btSimpleBroadphase__printStats_p0"] = asm["_emscripten_bind_btSimpleBroadphase__printStats_p0"];
var _emscripten_bind_btCollisionWorld__serialize_p1 = Module["_emscripten_bind_btCollisionWorld__serialize_p1"] = asm["_emscripten_bind_btCollisionWorld__serialize_p1"];
var _emscripten_bind_btHeightfieldTerrainShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btHeightfieldTerrainShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btHeightfieldTerrainShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btConeShapeX__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btConeShapeX__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btConeShapeX__getImplicitShapeDimensions_p0"];
var _emscripten_bind_btConeShapeZ__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btConeShapeZ__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btConeShapeZ__getContactBreakingThreshold_p1"];
var _emscripten_bind_btPolyhedralConvexShape__isConvex_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__isConvex_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__isConvex_p0"];
var _emscripten_bind_btGeneric6DofConstraint__setParam_p2 = Module["_emscripten_bind_btGeneric6DofConstraint__setParam_p2"] = asm["_emscripten_bind_btGeneric6DofConstraint__setParam_p2"];
var _emscripten_bind_btConeTwistConstraint__solveConstraintObsolete_p3 = Module["_emscripten_bind_btConeTwistConstraint__solveConstraintObsolete_p3"] = asm["_emscripten_bind_btConeTwistConstraint__solveConstraintObsolete_p3"];
var _emscripten_bind_btUniformScalingShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btUniformScalingShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btUniformScalingShape__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__get_limit_motor_info2_p12 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__get_limit_motor_info2_p12"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__get_limit_motor_info2_p12"];
var _emscripten_bind_btDiscreteDynamicsWorld__setConstraintSolver_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setConstraintSolver_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setConstraintSolver_p1"];
var _emscripten_bind_btBU_Simplex1to4____destroy___p0 = Module["_emscripten_bind_btBU_Simplex1to4____destroy___p0"] = asm["_emscripten_bind_btBU_Simplex1to4____destroy___p0"];
var _emscripten_bind_btContinuousDynamicsWorld__synchronizeSingleMotionState_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__synchronizeSingleMotionState_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__synchronizeSingleMotionState_p1"];
var _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_stackAlloc_p1 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_stackAlloc_p1"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_stackAlloc_p1"];
var _emscripten_bind_btTranslationalLimitMotor__set_m_limitSoftness_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_limitSoftness_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_limitSoftness_p1"];
var _emscripten_bind_btMultiSphereShape__isSoftBody_p0 = Module["_emscripten_bind_btMultiSphereShape__isSoftBody_p0"] = asm["_emscripten_bind_btMultiSphereShape__isSoftBody_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__getNumConstraints_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getNumConstraints_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getNumConstraints_p0"];
var _emscripten_bind_btCompoundShape__getBoundingSphere_p2 = Module["_emscripten_bind_btCompoundShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btCompoundShape__getBoundingSphere_p2"];
var _emscripten_bind_btPoint2PointConstraint__getUserConstraintType_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getUserConstraintType_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getUserConstraintType_p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_linearSleepingThreshold_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_linearSleepingThreshold_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_linearSleepingThreshold_p0"];
var _emscripten_bind_btConstraintSetting__get_m_damping_p0 = Module["_emscripten_bind_btConstraintSetting__get_m_damping_p0"] = asm["_emscripten_bind_btConstraintSetting__get_m_damping_p0"];
var _emscripten_bind_btGeneric6DofConstraint__setDbgDrawSize_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setDbgDrawSize_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setDbgDrawSize_p1"];
var _emscripten_bind_btMatrix3x3__getRow_p1 = Module["_emscripten_bind_btMatrix3x3__getRow_p1"] = asm["_emscripten_bind_btMatrix3x3__getRow_p1"];
var _emscripten_bind_btBvhSubtreeInfo__btBvhSubtreeInfo_p0 = Module["_emscripten_bind_btBvhSubtreeInfo__btBvhSubtreeInfo_p0"] = asm["_emscripten_bind_btBvhSubtreeInfo__btBvhSubtreeInfo_p0"];
var _emscripten_bind_btConeShape__isConvex_p0 = Module["_emscripten_bind_btConeShape__isConvex_p0"] = asm["_emscripten_bind_btConeShape__isConvex_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btVector4__distance_p1 = Module["_emscripten_bind_btVector4__distance_p1"] = asm["_emscripten_bind_btVector4__distance_p1"];
var _emscripten_bind_btMatrix3x3__op_set_p1 = Module["_emscripten_bind_btMatrix3x3__op_set_p1"] = asm["_emscripten_bind_btMatrix3x3__op_set_p1"];
var _emscripten_bind_btRigidBody__getAngularSleepingThreshold_p0 = Module["_emscripten_bind_btRigidBody__getAngularSleepingThreshold_p0"] = asm["_emscripten_bind_btRigidBody__getAngularSleepingThreshold_p0"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__processAllTriangles_p3 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__processAllTriangles_p3"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__processAllTriangles_p3"];
var _emscripten_bind_btCollisionObject__getDeactivationTime_p0 = Module["_emscripten_bind_btCollisionObject__getDeactivationTime_p0"] = asm["_emscripten_bind_btCollisionObject__getDeactivationTime_p0"];
var _emscripten_bind_btCollisionShape__setMargin_p1 = Module["_emscripten_bind_btCollisionShape__setMargin_p1"] = asm["_emscripten_bind_btCollisionShape__setMargin_p1"];
var _emscripten_bind_btBroadphaseRayCallback__get_m_lambda_max_p0 = Module["_emscripten_bind_btBroadphaseRayCallback__get_m_lambda_max_p0"] = asm["_emscripten_bind_btBroadphaseRayCallback__get_m_lambda_max_p0"];
var _emscripten_bind_btSphereShape__btSphereShape_p1 = Module["_emscripten_bind_btSphereShape__btSphereShape_p1"] = asm["_emscripten_bind_btSphereShape__btSphereShape_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__setSynchronizeAllMotionStates_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__setSynchronizeAllMotionStates_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setSynchronizeAllMotionStates_p1"];
var _emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btUniformScalingShape__isNonMoving_p0 = Module["_emscripten_bind_btUniformScalingShape__isNonMoving_p0"] = asm["_emscripten_bind_btUniformScalingShape__isNonMoving_p0"];
var _emscripten_bind_btPersistentManifold__refreshContactPoints_p2 = Module["_emscripten_bind_btPersistentManifold__refreshContactPoints_p2"] = asm["_emscripten_bind_btPersistentManifold__refreshContactPoints_p2"];
var _emscripten_bind_btVector3__setZero_p0 = Module["_emscripten_bind_btVector3__setZero_p0"] = asm["_emscripten_bind_btVector3__setZero_p0"];
var _emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitNormalLocal_p1 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitNormalLocal_p1"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitNormalLocal_p1"];
var _emscripten_bind_btPolyhedralConvexShape__serialize_p2 = Module["_emscripten_bind_btPolyhedralConvexShape__serialize_p2"] = asm["_emscripten_bind_btPolyhedralConvexShape__serialize_p2"];
var _emscripten_bind_btTriangleMesh__preallocateIndices_p1 = Module["_emscripten_bind_btTriangleMesh__preallocateIndices_p1"] = asm["_emscripten_bind_btTriangleMesh__preallocateIndices_p1"];
var _emscripten_bind_btConvexTriangleMeshShape__getVertex_p2 = Module["_emscripten_bind_btConvexTriangleMeshShape__getVertex_p2"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getVertex_p2"];
var _emscripten_bind_btGeneric6DofSpringConstraint__enableFeedback_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__enableFeedback_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__enableFeedback_p1"];
var _emscripten_bind_btSliderConstraint__getDampingOrthoAng_p0 = Module["_emscripten_bind_btSliderConstraint__getDampingOrthoAng_p0"] = asm["_emscripten_bind_btSliderConstraint__getDampingOrthoAng_p0"];
var _emscripten_bind_btCapsuleShapeX__getAabbNonVirtual_p3 = Module["_emscripten_bind_btCapsuleShapeX__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btCapsuleShapeX__getAabbNonVirtual_p3"];
var _emscripten_bind_btCapsuleShapeX__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btCapsuleShapeX__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btCapsuleShapeX__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__setNumTasks_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setNumTasks_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setNumTasks_p1"];
var _emscripten_bind_btCollisionObject__setCollisionShape_p1 = Module["_emscripten_bind_btCollisionObject__setCollisionShape_p1"] = asm["_emscripten_bind_btCollisionObject__setCollisionShape_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__debugDrawConstraint_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__debugDrawConstraint_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__debugDrawConstraint_p1"];
var _emscripten_bind_btCylinderShape__getUserPointer_p0 = Module["_emscripten_bind_btCylinderShape__getUserPointer_p0"] = asm["_emscripten_bind_btCylinderShape__getUserPointer_p0"];
var _emscripten_bind_btTransform__btTransform_p1 = Module["_emscripten_bind_btTransform__btTransform_p1"] = asm["_emscripten_bind_btTransform__btTransform_p1"];
var _emscripten_bind_btTransform__btTransform_p0 = Module["_emscripten_bind_btTransform__btTransform_p0"] = asm["_emscripten_bind_btTransform__btTransform_p0"];
var _emscripten_bind_btTransform__btTransform_p2 = Module["_emscripten_bind_btTransform__btTransform_p2"] = asm["_emscripten_bind_btTransform__btTransform_p2"];
var _emscripten_bind_btVector3__normalize_p0 = Module["_emscripten_bind_btVector3__normalize_p0"] = asm["_emscripten_bind_btVector3__normalize_p0"];
var _emscripten_bind_btConvexHullShape__getPoints_p0 = Module["_emscripten_bind_btConvexHullShape__getPoints_p0"] = asm["_emscripten_bind_btConvexHullShape__getPoints_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__serialize_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__serialize_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__serialize_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getRigidBodyB_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getRigidBodyB_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getRigidBodyB_p0"];
var _emscripten_bind_btConvexInternalAabbCachingShape__getUserPointer_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getUserPointer_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getUserPointer_p0"];
var _emscripten_bind_btUniversalConstraint__getAppliedImpulse_p0 = Module["_emscripten_bind_btUniversalConstraint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btUniversalConstraint__getAppliedImpulse_p0"];
var _emscripten_bind_CProfileNode__Get_Total_Calls_p0 = Module["_emscripten_bind_CProfileNode__Get_Total_Calls_p0"] = asm["_emscripten_bind_CProfileNode__Get_Total_Calls_p0"];
var _emscripten_bind_btVector3__btVector3_p3 = Module["_emscripten_bind_btVector3__btVector3_p3"] = asm["_emscripten_bind_btVector3__btVector3_p3"];
var _emscripten_bind_btConeShapeZ__getAabbNonVirtual_p3 = Module["_emscripten_bind_btConeShapeZ__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btConeShapeZ__getAabbNonVirtual_p3"];
var _emscripten_bind_btMultiSphereShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btMultiSphereShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btMultiSphereShape__getMarginNonVirtual_p0"];
var _emscripten_bind_btCollisionWorld__contactPairTest_p3 = Module["_emscripten_bind_btCollisionWorld__contactPairTest_p3"] = asm["_emscripten_bind_btCollisionWorld__contactPairTest_p3"];
var _emscripten_bind_btDispatcherInfo__set_m_enableSPU_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_enableSPU_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_enableSPU_p1"];
var _emscripten_bind_btManifoldResult__refreshContactPoints_p0 = Module["_emscripten_bind_btManifoldResult__refreshContactPoints_p0"] = asm["_emscripten_bind_btManifoldResult__refreshContactPoints_p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__btRigidBodyConstructionInfo_p4 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__btRigidBodyConstructionInfo_p4"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__btRigidBodyConstructionInfo_p4"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__btRigidBodyConstructionInfo_p3 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__btRigidBodyConstructionInfo_p3"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__btRigidBodyConstructionInfo_p3"];
var _emscripten_bind_btCapsuleShapeX__isCompound_p0 = Module["_emscripten_bind_btCapsuleShapeX__isCompound_p0"] = asm["_emscripten_bind_btCapsuleShapeX__isCompound_p0"];
var _emscripten_bind_btOverlappingPairCache__findPair_p2 = Module["_emscripten_bind_btOverlappingPairCache__findPair_p2"] = asm["_emscripten_bind_btOverlappingPairCache__findPair_p2"];
var _emscripten_bind_btBU_Simplex1to4__isInfinite_p0 = Module["_emscripten_bind_btBU_Simplex1to4__isInfinite_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__isInfinite_p0"];
var _emscripten_bind_btWheelInfo__get_m_wheelsDampingRelaxation_p0 = Module["_emscripten_bind_btWheelInfo__get_m_wheelsDampingRelaxation_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_wheelsDampingRelaxation_p0"];
var _emscripten_bind_btGeneric6DofConstraint__getCalculatedTransformA_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getCalculatedTransformA_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getCalculatedTransformA_p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_motionState_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_motionState_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_motionState_p1"];
var _emscripten_bind_btGhostObject__getHitFraction_p0 = Module["_emscripten_bind_btGhostObject__getHitFraction_p0"] = asm["_emscripten_bind_btGhostObject__getHitFraction_p0"];
var _emscripten_bind_btSequentialImpulseConstraintSolver__solveGroup_p10 = Module["_emscripten_bind_btSequentialImpulseConstraintSolver__solveGroup_p10"] = asm["_emscripten_bind_btSequentialImpulseConstraintSolver__solveGroup_p10"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btCompoundShape__setUserPointer_p1 = Module["_emscripten_bind_btCompoundShape__setUserPointer_p1"] = asm["_emscripten_bind_btCompoundShape__setUserPointer_p1"];
var _emscripten_bind_btSequentialImpulseConstraintSolver__getRandSeed_p0 = Module["_emscripten_bind_btSequentialImpulseConstraintSolver__getRandSeed_p0"] = asm["_emscripten_bind_btSequentialImpulseConstraintSolver__getRandSeed_p0"];
var _emscripten_bind_btBoxShape____destroy___p0 = Module["_emscripten_bind_btBoxShape____destroy___p0"] = asm["_emscripten_bind_btBoxShape____destroy___p0"];
var _emscripten_bind_btConvexHullShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btConvexHullShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btConvexHullShape__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btTriangleMesh__InternalProcessAllTriangles_p3 = Module["_emscripten_bind_btTriangleMesh__InternalProcessAllTriangles_p3"] = asm["_emscripten_bind_btTriangleMesh__InternalProcessAllTriangles_p3"];
var _emscripten_bind_btUniformScalingShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btUniformScalingShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btUniformScalingShape__getAabbNonVirtual_p3"];
var _emscripten_bind_btTypedConstraint__getAppliedImpulse_p0 = Module["_emscripten_bind_btTypedConstraint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btTypedConstraint__getAppliedImpulse_p0"];
var _emscripten_bind_CProfileNode__Call_p0 = Module["_emscripten_bind_CProfileNode__Call_p0"] = asm["_emscripten_bind_CProfileNode__Call_p0"];
var _emscripten_bind_btQuaternion__length_p0 = Module["_emscripten_bind_btQuaternion__length_p0"] = asm["_emscripten_bind_btQuaternion__length_p0"];
var _emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btCapsuleShapeZ__getLocalScalingNV_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getLocalScalingNV_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getLocalScalingNV_p0"];
var _emscripten_bind_btPairCachingGhostObject__rayTest_p3 = Module["_emscripten_bind_btPairCachingGhostObject__rayTest_p3"] = asm["_emscripten_bind_btPairCachingGhostObject__rayTest_p3"];
var _emscripten_bind_btGeneric6DofSpringConstraint__get_m_useSolveConstraintObsolete_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__get_m_useSolveConstraintObsolete_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__get_m_useSolveConstraintObsolete_p0"];
var _emscripten_bind_btConvexInternalShape__isInfinite_p0 = Module["_emscripten_bind_btConvexInternalShape__isInfinite_p0"] = asm["_emscripten_bind_btConvexInternalShape__isInfinite_p0"];
var _emscripten_bind_btEmptyShape__setMargin_p1 = Module["_emscripten_bind_btEmptyShape__setMargin_p1"] = asm["_emscripten_bind_btEmptyShape__setMargin_p1"];
var _emscripten_bind_btPairCachingGhostObject__getCollisionFlags_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getCollisionFlags_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getCollisionFlags_p0"];
var _emscripten_bind_btHinge2Constraint__setLowerLimit_p1 = Module["_emscripten_bind_btHinge2Constraint__setLowerLimit_p1"] = asm["_emscripten_bind_btHinge2Constraint__setLowerLimit_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__clearForces_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__clearForces_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__clearForces_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p1"];
var _emscripten_bind_btConvexShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btConvexShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btConvexShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btVector4__minAxis_p0 = Module["_emscripten_bind_btVector4__minAxis_p0"] = asm["_emscripten_bind_btVector4__minAxis_p0"];
var _emscripten_bind_btConeShapeZ__getUserPointer_p0 = Module["_emscripten_bind_btConeShapeZ__getUserPointer_p0"] = asm["_emscripten_bind_btConeShapeZ__getUserPointer_p0"];
var _emscripten_bind_btCollisionShape__isPolyhedral_p0 = Module["_emscripten_bind_btCollisionShape__isPolyhedral_p0"] = asm["_emscripten_bind_btCollisionShape__isPolyhedral_p0"];
var _emscripten_bind_btCylinderShapeZ__getLocalScalingNV_p0 = Module["_emscripten_bind_btCylinderShapeZ__getLocalScalingNV_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getLocalScalingNV_p0"];
var _emscripten_bind_btCylinderShape__serialize_p2 = Module["_emscripten_bind_btCylinderShape__serialize_p2"] = asm["_emscripten_bind_btCylinderShape__serialize_p2"];
var _emscripten_bind_btDynamicsWorld__setDebugDrawer_p1 = Module["_emscripten_bind_btDynamicsWorld__setDebugDrawer_p1"] = asm["_emscripten_bind_btDynamicsWorld__setDebugDrawer_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__addAction_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__addAction_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__addAction_p1"];
var _emscripten_bind_btConeTwistConstraint__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btConeTwistConstraint__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btConeTwistConstraint__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btDbvtBroadphase__set_m_fupdates_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_fupdates_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_fupdates_p1"];
var _emscripten_bind_btUniversalConstraint__getConstraintType_p0 = Module["_emscripten_bind_btUniversalConstraint__getConstraintType_p0"] = asm["_emscripten_bind_btUniversalConstraint__getConstraintType_p0"];
var _emscripten_bind_btHeightfieldTerrainShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btHeightfieldTerrainShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btHeightfieldTerrainShape__calculateLocalInertia_p2"];
var _emscripten_bind_btBoxShape__setLocalScaling_p1 = Module["_emscripten_bind_btBoxShape__setLocalScaling_p1"] = asm["_emscripten_bind_btBoxShape__setLocalScaling_p1"];
var _emscripten_bind_btTransform__serializeFloat_p1 = Module["_emscripten_bind_btTransform__serializeFloat_p1"] = asm["_emscripten_bind_btTransform__serializeFloat_p1"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_startWorldTransform_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_startWorldTransform_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_startWorldTransform_p1"];
var _emscripten_bind_btJacobianEntry__get_m_linearJointAxis_p0 = Module["_emscripten_bind_btJacobianEntry__get_m_linearJointAxis_p0"] = asm["_emscripten_bind_btJacobianEntry__get_m_linearJointAxis_p0"];
var _emscripten_bind_CProfileNode__Get_Parent_p0 = Module["_emscripten_bind_CProfileNode__Get_Parent_p0"] = asm["_emscripten_bind_CProfileNode__Get_Parent_p0"];
var _emscripten_bind_btConvexShape__isCompound_p0 = Module["_emscripten_bind_btConvexShape__isCompound_p0"] = asm["_emscripten_bind_btConvexShape__isCompound_p0"];
var _emscripten_bind_btTriangleInfo__get_m_edgeV2V0Angle_p0 = Module["_emscripten_bind_btTriangleInfo__get_m_edgeV2V0Angle_p0"] = asm["_emscripten_bind_btTriangleInfo__get_m_edgeV2V0Angle_p0"];
var _emscripten_bind_btTriangleInfo____destroy___p0 = Module["_emscripten_bind_btTriangleInfo____destroy___p0"] = asm["_emscripten_bind_btTriangleInfo____destroy___p0"];
var _emscripten_bind_btSliderConstraint__getUserConstraintId_p0 = Module["_emscripten_bind_btSliderConstraint__getUserConstraintId_p0"] = asm["_emscripten_bind_btSliderConstraint__getUserConstraintId_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__contactTest_p2 = Module["_emscripten_bind_btContinuousDynamicsWorld__contactTest_p2"] = asm["_emscripten_bind_btContinuousDynamicsWorld__contactTest_p2"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_collisionFilterMask_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_collisionFilterMask_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_collisionFilterMask_p0"];
var _emscripten_bind_btRotationalLimitMotor__get_m_currentLimit_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_currentLimit_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_currentLimit_p0"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__isConvex_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__isConvex_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__isConvex_p0"];
var _emscripten_bind_btHinge2Constraint__getLinearUpperLimit_p1 = Module["_emscripten_bind_btHinge2Constraint__getLinearUpperLimit_p1"] = asm["_emscripten_bind_btHinge2Constraint__getLinearUpperLimit_p1"];
var _emscripten_bind_btDynamicsWorld__getBroadphase_p0 = Module["_emscripten_bind_btDynamicsWorld__getBroadphase_p0"] = asm["_emscripten_bind_btDynamicsWorld__getBroadphase_p0"];
var _emscripten_bind_btCapsuleShapeX__calculateLocalInertia_p2 = Module["_emscripten_bind_btCapsuleShapeX__calculateLocalInertia_p2"] = asm["_emscripten_bind_btCapsuleShapeX__calculateLocalInertia_p2"];
var _emscripten_bind_btDynamicsWorld__getDispatchInfo_p0 = Module["_emscripten_bind_btDynamicsWorld__getDispatchInfo_p0"] = asm["_emscripten_bind_btDynamicsWorld__getDispatchInfo_p0"];
var _emscripten_bind_btConvexHullShape__getNumEdges_p0 = Module["_emscripten_bind_btConvexHullShape__getNumEdges_p0"] = asm["_emscripten_bind_btConvexHullShape__getNumEdges_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__getConstraintSolver_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getConstraintSolver_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getConstraintSolver_p0"];
var _emscripten_bind_btRigidBody__upcast_p1 = Module["_emscripten_bind_btRigidBody__upcast_p1"] = asm["_emscripten_bind_btRigidBody__upcast_p1"];
var _emscripten_bind_btDispatcherInfo____destroy___p0 = Module["_emscripten_bind_btDispatcherInfo____destroy___p0"] = asm["_emscripten_bind_btDispatcherInfo____destroy___p0"];
var _emscripten_bind_btSerializer__getSerializationFlags_p0 = Module["_emscripten_bind_btSerializer__getSerializationFlags_p0"] = asm["_emscripten_bind_btSerializer__getSerializationFlags_p0"];
var _emscripten_bind_btGeneric6DofConstraint__internalGetAppliedImpulse_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__internalGetAppliedImpulse_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__internalGetAppliedImpulse_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btTransform__inverseTimes_p1 = Module["_emscripten_bind_btTransform__inverseTimes_p1"] = asm["_emscripten_bind_btTransform__inverseTimes_p1"];
var _emscripten_bind_btPoint2PointConstraint__updateRHS_p1 = Module["_emscripten_bind_btPoint2PointConstraint__updateRHS_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__updateRHS_p1"];
var _emscripten_bind_btVector3__w_p0 = Module["_emscripten_bind_btVector3__w_p0"] = asm["_emscripten_bind_btVector3__w_p0"];
var _emscripten_bind_bt32BitAxisSweep3__quantize_p3 = Module["_emscripten_bind_bt32BitAxisSweep3__quantize_p3"] = asm["_emscripten_bind_bt32BitAxisSweep3__quantize_p3"];
var _emscripten_bind_btDynamicsWorld__setForceUpdateAllAabbs_p1 = Module["_emscripten_bind_btDynamicsWorld__setForceUpdateAllAabbs_p1"] = asm["_emscripten_bind_btDynamicsWorld__setForceUpdateAllAabbs_p1"];
var _emscripten_bind_btCompoundShape__getUserPointer_p0 = Module["_emscripten_bind_btCompoundShape__getUserPointer_p0"] = asm["_emscripten_bind_btCompoundShape__getUserPointer_p0"];
var _emscripten_bind_btBU_Simplex1to4__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btBU_Simplex1to4__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__setImplicitShapeDimensions_p1"];
var _emscripten_bind_btCapsuleShape__isSoftBody_p0 = Module["_emscripten_bind_btCapsuleShape__isSoftBody_p0"] = asm["_emscripten_bind_btCapsuleShape__isSoftBody_p0"];
var _emscripten_bind_btWheelInfo__get_m_brake_p0 = Module["_emscripten_bind_btWheelInfo__get_m_brake_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_brake_p0"];
var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__addSingleResult_p2 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__addSingleResult_p2"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__addSingleResult_p2"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_closestHitFraction_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_closestHitFraction_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_closestHitFraction_p1"];
var _emscripten_bind_btTypedConstraint__getInfo2_p1 = Module["_emscripten_bind_btTypedConstraint__getInfo2_p1"] = asm["_emscripten_bind_btTypedConstraint__getInfo2_p1"];
var _emscripten_bind_btSimpleBroadphase__createProxy_p8 = Module["_emscripten_bind_btSimpleBroadphase__createProxy_p8"] = asm["_emscripten_bind_btSimpleBroadphase__createProxy_p8"];
var _emscripten_bind_btConvexInternalAabbCachingShape__isCompound_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__isCompound_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__isCompound_p0"];
var _emscripten_bind_btCompoundShape__getMargin_p0 = Module["_emscripten_bind_btCompoundShape__getMargin_p0"] = asm["_emscripten_bind_btCompoundShape__getMargin_p0"];
var _emscripten_bind_btConeShape__getLocalScaling_p0 = Module["_emscripten_bind_btConeShape__getLocalScaling_p0"] = asm["_emscripten_bind_btConeShape__getLocalScaling_p0"];
var _emscripten_bind_btPairCachingGhostObject__isActive_p0 = Module["_emscripten_bind_btPairCachingGhostObject__isActive_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__isActive_p0"];
var _emscripten_bind_btConeShape__isConcave_p0 = Module["_emscripten_bind_btConeShape__isConcave_p0"] = asm["_emscripten_bind_btConeShape__isConcave_p0"];
var _emscripten_bind_btStorageResult__set_m_normalOnSurfaceB_p1 = Module["_emscripten_bind_btStorageResult__set_m_normalOnSurfaceB_p1"] = asm["_emscripten_bind_btStorageResult__set_m_normalOnSurfaceB_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getAppliedImpulse_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getAppliedImpulse_p0"];
var _emscripten_bind_btCollisionObject__setActivationState_p1 = Module["_emscripten_bind_btCollisionObject__setActivationState_p1"] = asm["_emscripten_bind_btCollisionObject__setActivationState_p1"];
var _emscripten_bind_btConeTwistConstraint__getRigidBodyA_p0 = Module["_emscripten_bind_btConeTwistConstraint__getRigidBodyA_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getRigidBodyA_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btConvexHullShape__getPlane_p3 = Module["_emscripten_bind_btConvexHullShape__getPlane_p3"] = asm["_emscripten_bind_btConvexHullShape__getPlane_p3"];
var _emscripten_bind_btGeneric6DofConstraint__setupSolverConstraint_p4 = Module["_emscripten_bind_btGeneric6DofConstraint__setupSolverConstraint_p4"] = asm["_emscripten_bind_btGeneric6DofConstraint__setupSolverConstraint_p4"];
var _emscripten_bind_btManifoldResult____destroy___p0 = Module["_emscripten_bind_btManifoldResult____destroy___p0"] = asm["_emscripten_bind_btManifoldResult____destroy___p0"];
var _emscripten_bind_btHinge2Constraint__btHinge2Constraint_p5 = Module["_emscripten_bind_btHinge2Constraint__btHinge2Constraint_p5"] = asm["_emscripten_bind_btHinge2Constraint__btHinge2Constraint_p5"];
var _emscripten_bind_btPoint2PointConstraint__buildJacobian_p0 = Module["_emscripten_bind_btPoint2PointConstraint__buildJacobian_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__buildJacobian_p0"];
var _emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitFraction_p0 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitFraction_p0"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitFraction_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__getGravity_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getGravity_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getGravity_p0"];
var _emscripten_bind_btManifoldPoint__getPositionWorldOnB_p0 = Module["_emscripten_bind_btManifoldPoint__getPositionWorldOnB_p0"] = asm["_emscripten_bind_btManifoldPoint__getPositionWorldOnB_p0"];
var _emscripten_bind_btPolyhedralConvexShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btPolyhedralConvexShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btPolyhedralConvexShape__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btHinge2Constraint__set_m_objectType_p1 = Module["_emscripten_bind_btHinge2Constraint__set_m_objectType_p1"] = asm["_emscripten_bind_btHinge2Constraint__set_m_objectType_p1"];
var _emscripten_bind_btTypedConstraint__internalGetAppliedImpulse_p0 = Module["_emscripten_bind_btTypedConstraint__internalGetAppliedImpulse_p0"] = asm["_emscripten_bind_btTypedConstraint__internalGetAppliedImpulse_p0"];
var _emscripten_bind_btTriangleIndexVertexArray__setPremadeAabb_p2 = Module["_emscripten_bind_btTriangleIndexVertexArray__setPremadeAabb_p2"] = asm["_emscripten_bind_btTriangleIndexVertexArray__setPremadeAabb_p2"];
var _emscripten_bind_btHingeConstraint__setUseFrameOffset_p1 = Module["_emscripten_bind_btHingeConstraint__setUseFrameOffset_p1"] = asm["_emscripten_bind_btHingeConstraint__setUseFrameOffset_p1"];
var _emscripten_bind_btGhostObject__forceActivationState_p1 = Module["_emscripten_bind_btGhostObject__forceActivationState_p1"] = asm["_emscripten_bind_btGhostObject__forceActivationState_p1"];
var _emscripten_bind_btRaycastVehicle__getChassisWorldTransform_p0 = Module["_emscripten_bind_btRaycastVehicle__getChassisWorldTransform_p0"] = asm["_emscripten_bind_btRaycastVehicle__getChassisWorldTransform_p0"];
var _emscripten_bind_btTypedConstraint__getObjectType_p0 = Module["_emscripten_bind_btTypedConstraint__getObjectType_p0"] = asm["_emscripten_bind_btTypedConstraint__getObjectType_p0"];
var _emscripten_bind_CProfileNode__Get_Sub_Node_p1 = Module["_emscripten_bind_CProfileNode__Get_Sub_Node_p1"] = asm["_emscripten_bind_CProfileNode__Get_Sub_Node_p1"];
var _emscripten_bind_btQuaternion__angle_p1 = Module["_emscripten_bind_btQuaternion__angle_p1"] = asm["_emscripten_bind_btQuaternion__angle_p1"];
var _emscripten_bind_btGhostObject__setCollisionShape_p1 = Module["_emscripten_bind_btGhostObject__setCollisionShape_p1"] = asm["_emscripten_bind_btGhostObject__setCollisionShape_p1"];
var _emscripten_bind_btTriangleMesh__get_m_weldingThreshold_p0 = Module["_emscripten_bind_btTriangleMesh__get_m_weldingThreshold_p0"] = asm["_emscripten_bind_btTriangleMesh__get_m_weldingThreshold_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__getName_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getName_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getName_p0"];
var _emscripten_bind_btRigidBody__internalGetTurnVelocity_p0 = Module["_emscripten_bind_btRigidBody__internalGetTurnVelocity_p0"] = asm["_emscripten_bind_btRigidBody__internalGetTurnVelocity_p0"];
var _emscripten_bind_btVector3__op_comp_p1 = Module["_emscripten_bind_btVector3__op_comp_p1"] = asm["_emscripten_bind_btVector3__op_comp_p1"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_angularSleepingThreshold_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_angularSleepingThreshold_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_angularSleepingThreshold_p0"];
var _emscripten_bind_btVector3__getY_p0 = Module["_emscripten_bind_btVector3__getY_p0"] = asm["_emscripten_bind_btVector3__getY_p0"];
var _emscripten_bind_btManifoldPoint__set_m_positionWorldOnB_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_positionWorldOnB_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_positionWorldOnB_p1"];
var _emscripten_bind_btConvexInternalShape__getName_p0 = Module["_emscripten_bind_btConvexInternalShape__getName_p0"] = asm["_emscripten_bind_btConvexInternalShape__getName_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btConvexTriangleMeshShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getAabbNonVirtual_p3"];
var _emscripten_bind_btRigidBody__getCcdSquareMotionThreshold_p0 = Module["_emscripten_bind_btRigidBody__getCcdSquareMotionThreshold_p0"] = asm["_emscripten_bind_btRigidBody__getCcdSquareMotionThreshold_p0"];
var _emscripten_bind_btManifoldPoint__get_m_userPersistentData_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_userPersistentData_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_userPersistentData_p0"];
var _emscripten_bind_btSliderConstraint__getTargetLinMotorVelocity_p0 = Module["_emscripten_bind_btSliderConstraint__getTargetLinMotorVelocity_p0"] = asm["_emscripten_bind_btSliderConstraint__getTargetLinMotorVelocity_p0"];
var _emscripten_bind_btBU_Simplex1to4__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btBU_Simplex1to4__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btBU_Simplex1to4__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _emscripten_bind_btBroadphaseProxy__get_m_clientObject_p0 = Module["_emscripten_bind_btBroadphaseProxy__get_m_clientObject_p0"] = asm["_emscripten_bind_btBroadphaseProxy__get_m_clientObject_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__isConcave_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__isConcave_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__isConcave_p0"];
var _emscripten_bind_btCollisionObject__getInterpolationAngularVelocity_p0 = Module["_emscripten_bind_btCollisionObject__getInterpolationAngularVelocity_p0"] = asm["_emscripten_bind_btCollisionObject__getInterpolationAngularVelocity_p0"];
var _emscripten_bind_btUniversalConstraint__updateRHS_p1 = Module["_emscripten_bind_btUniversalConstraint__updateRHS_p1"] = asm["_emscripten_bind_btUniversalConstraint__updateRHS_p1"];
var _emscripten_bind_btRigidBody__applyDamping_p1 = Module["_emscripten_bind_btRigidBody__applyDamping_p1"] = asm["_emscripten_bind_btRigidBody__applyDamping_p1"];
var _emscripten_bind_btConvexInternalShape__isNonMoving_p0 = Module["_emscripten_bind_btConvexInternalShape__isNonMoving_p0"] = asm["_emscripten_bind_btConvexInternalShape__isNonMoving_p0"];
var _emscripten_bind_btStaticPlaneShape__isConcave_p0 = Module["_emscripten_bind_btStaticPlaneShape__isConcave_p0"] = asm["_emscripten_bind_btStaticPlaneShape__isConcave_p0"];
var _emscripten_bind_btVector4__deSerializeFloat_p1 = Module["_emscripten_bind_btVector4__deSerializeFloat_p1"] = asm["_emscripten_bind_btVector4__deSerializeFloat_p1"];
var _emscripten_bind_btCylinderShapeX__calculateTemporalAabb_p6 = Module["_emscripten_bind_btCylinderShapeX__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btCylinderShapeX__calculateTemporalAabb_p6"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintId_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintId_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintId_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__isInfinite_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isInfinite_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isInfinite_p0"];
var _emscripten_bind_btHinge2Constraint__calculateTransforms_p2 = Module["_emscripten_bind_btHinge2Constraint__calculateTransforms_p2"] = asm["_emscripten_bind_btHinge2Constraint__calculateTransforms_p2"];
var _emscripten_bind_btCollisionWorld__btCollisionWorld_p3 = Module["_emscripten_bind_btCollisionWorld__btCollisionWorld_p3"] = asm["_emscripten_bind_btCollisionWorld__btCollisionWorld_p3"];
var _emscripten_bind_btConeTwistConstraint__calcAngleInfo2_p4 = Module["_emscripten_bind_btConeTwistConstraint__calcAngleInfo2_p4"] = asm["_emscripten_bind_btConeTwistConstraint__calcAngleInfo2_p4"];
var _emscripten_bind_btCapsuleShapeZ____destroy___p0 = Module["_emscripten_bind_btCapsuleShapeZ____destroy___p0"] = asm["_emscripten_bind_btCapsuleShapeZ____destroy___p0"];
var _emscripten_bind_btCapsuleShapeZ__getLocalScaling_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getLocalScaling_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getLocalScaling_p0"];
var _emscripten_bind_btDynamicsWorld____destroy___p0 = Module["_emscripten_bind_btDynamicsWorld____destroy___p0"] = asm["_emscripten_bind_btDynamicsWorld____destroy___p0"];
var _emscripten_bind_btSphereSphereCollisionAlgorithm__btSphereSphereCollisionAlgorithm_p4 = Module["_emscripten_bind_btSphereSphereCollisionAlgorithm__btSphereSphereCollisionAlgorithm_p4"] = asm["_emscripten_bind_btSphereSphereCollisionAlgorithm__btSphereSphereCollisionAlgorithm_p4"];
var _emscripten_bind_btNodeOverlapCallback__processNode_p2 = Module["_emscripten_bind_btNodeOverlapCallback__processNode_p2"] = asm["_emscripten_bind_btNodeOverlapCallback__processNode_p2"];
var _emscripten_bind_btConvexShape__getLocalScaling_p0 = Module["_emscripten_bind_btConvexShape__getLocalScaling_p0"] = asm["_emscripten_bind_btConvexShape__getLocalScaling_p0"];
var _emscripten_bind_btPairCachingGhostObject__getInternalType_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getInternalType_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getInternalType_p0"];
var _emscripten_bind_btStridingMeshInterface__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btStridingMeshInterface__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btStridingMeshInterface__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btHinge2Constraint__getRigidBodyB_p0 = Module["_emscripten_bind_btHinge2Constraint__getRigidBodyB_p0"] = asm["_emscripten_bind_btHinge2Constraint__getRigidBodyB_p0"];
var _emscripten_bind_btMatrix3x3__deSerializeFloat_p1 = Module["_emscripten_bind_btMatrix3x3__deSerializeFloat_p1"] = asm["_emscripten_bind_btMatrix3x3__deSerializeFloat_p1"];
var _emscripten_bind_btBvhSubtreeInfo__setAabbFromQuantizeNode_p1 = Module["_emscripten_bind_btBvhSubtreeInfo__setAabbFromQuantizeNode_p1"] = asm["_emscripten_bind_btBvhSubtreeInfo__setAabbFromQuantizeNode_p1"];
var _emscripten_bind_btConeShapeX__setLocalScaling_p1 = Module["_emscripten_bind_btConeShapeX__setLocalScaling_p1"] = asm["_emscripten_bind_btConeShapeX__setLocalScaling_p1"];
var _emscripten_bind_btUniversalConstraint__isEnabled_p0 = Module["_emscripten_bind_btUniversalConstraint__isEnabled_p0"] = asm["_emscripten_bind_btUniversalConstraint__isEnabled_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btManifoldPoint__get_m_positionWorldOnA_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_positionWorldOnA_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_positionWorldOnA_p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_localInertia_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_localInertia_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_localInertia_p0"];
var _emscripten_bind_btPolyhedralConvexShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btPolyhedralConvexShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btPolyhedralConvexShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _emscripten_bind_btSliderConstraint__setSoftnessLimAng_p1 = Module["_emscripten_bind_btSliderConstraint__setSoftnessLimAng_p1"] = asm["_emscripten_bind_btSliderConstraint__setSoftnessLimAng_p1"];
var _emscripten_bind_btAxisSweep3__testAabbOverlap_p2 = Module["_emscripten_bind_btAxisSweep3__testAabbOverlap_p2"] = asm["_emscripten_bind_btAxisSweep3__testAabbOverlap_p2"];
var _emscripten_bind_btCapsuleShapeX__isConvex2d_p0 = Module["_emscripten_bind_btCapsuleShapeX__isConvex2d_p0"] = asm["_emscripten_bind_btCapsuleShapeX__isConvex2d_p0"];
var _emscripten_bind_btCollisionAlgorithmConstructionInfo____destroy___p0 = Module["_emscripten_bind_btCollisionAlgorithmConstructionInfo____destroy___p0"] = asm["_emscripten_bind_btCollisionAlgorithmConstructionInfo____destroy___p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__isConvex_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isConvex_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isConvex_p0"];
var _emscripten_bind_bt32BitAxisSweep3____destroy___p0 = Module["_emscripten_bind_bt32BitAxisSweep3____destroy___p0"] = asm["_emscripten_bind_bt32BitAxisSweep3____destroy___p0"];
var _emscripten_bind_btVector3__triple_p2 = Module["_emscripten_bind_btVector3__triple_p2"] = asm["_emscripten_bind_btVector3__triple_p2"];
var _emscripten_bind_ConcreteContactResultCallback__needsCollision_p1 = Module["_emscripten_bind_ConcreteContactResultCallback__needsCollision_p1"] = asm["_emscripten_bind_ConcreteContactResultCallback__needsCollision_p1"];
var _emscripten_bind_btSimpleBroadphaseProxy__getUid_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__getUid_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__getUid_p0"];
var _emscripten_bind_btConeShapeX__serialize_p2 = Module["_emscripten_bind_btConeShapeX__serialize_p2"] = asm["_emscripten_bind_btConeShapeX__serialize_p2"];
var _emscripten_bind_btCollisionDispatcher__releaseManifold_p1 = Module["_emscripten_bind_btCollisionDispatcher__releaseManifold_p1"] = asm["_emscripten_bind_btCollisionDispatcher__releaseManifold_p1"];
var _emscripten_bind_btRotationalLimitMotor__get_m_limitSoftness_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_limitSoftness_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_limitSoftness_p0"];
var _emscripten_bind_btBU_Simplex1to4__isNonMoving_p0 = Module["_emscripten_bind_btBU_Simplex1to4__isNonMoving_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__isNonMoving_p0"];
var _emscripten_bind_btUniversalConstraint__get_m_useSolveConstraintObsolete_p0 = Module["_emscripten_bind_btUniversalConstraint__get_m_useSolveConstraintObsolete_p0"] = asm["_emscripten_bind_btUniversalConstraint__get_m_useSolveConstraintObsolete_p0"];
var _emscripten_bind_btPoint2PointConstraint__getInfo2NonVirtual_p3 = Module["_emscripten_bind_btPoint2PointConstraint__getInfo2NonVirtual_p3"] = asm["_emscripten_bind_btPoint2PointConstraint__getInfo2NonVirtual_p3"];
var _emscripten_bind_btBU_Simplex1to4__getBoundingSphere_p2 = Module["_emscripten_bind_btBU_Simplex1to4__getBoundingSphere_p2"] = asm["_emscripten_bind_btBU_Simplex1to4__getBoundingSphere_p2"];
var _emscripten_bind_btCapsuleShapeX__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btCapsuleShapeX__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btCapsuleShapeX__getContactBreakingThreshold_p1"];
var _emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p0 = Module["_emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p0"] = asm["_emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p0"];
var _emscripten_bind_btVector3__angle_p1 = Module["_emscripten_bind_btVector3__angle_p1"] = asm["_emscripten_bind_btVector3__angle_p1"];
var _emscripten_bind_btCylinderShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btCylinderShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btCylinderShape__getLocalScalingNV_p0"];
var _emscripten_bind_btConeShape__isInfinite_p0 = Module["_emscripten_bind_btConeShape__isInfinite_p0"] = asm["_emscripten_bind_btConeShape__isInfinite_p0"];
var _emscripten_bind_btIndexedMesh__get_m_vertexStride_p0 = Module["_emscripten_bind_btIndexedMesh__get_m_vertexStride_p0"] = asm["_emscripten_bind_btIndexedMesh__get_m_vertexStride_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__isNonMoving_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__isNonMoving_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__isNonMoving_p0"];
var _emscripten_bind_btHinge2Constraint__getAnchor2_p0 = Module["_emscripten_bind_btHinge2Constraint__getAnchor2_p0"] = asm["_emscripten_bind_btHinge2Constraint__getAnchor2_p0"];
var _emscripten_bind_btBroadphaseProxy__set_m_uniqueId_p1 = Module["_emscripten_bind_btBroadphaseProxy__set_m_uniqueId_p1"] = asm["_emscripten_bind_btBroadphaseProxy__set_m_uniqueId_p1"];
var _emscripten_bind_btConvexInternalAabbCachingShape__serialize_p2 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__serialize_p2"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__serialize_p2"];
var _emscripten_bind_btManifoldPoint__set_m_combinedRestitution_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_combinedRestitution_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_combinedRestitution_p1"];
var _emscripten_bind_btGeneric6DofConstraint__getUserConstraintPtr_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getUserConstraintPtr_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getUserConstraintPtr_p0"];
var _emscripten_bind_btCompoundShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btCompoundShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btCompoundShape__calculateLocalInertia_p2"];
var _emscripten_bind_btSliderConstraint__getDbgDrawSize_p0 = Module["_emscripten_bind_btSliderConstraint__getDbgDrawSize_p0"] = asm["_emscripten_bind_btSliderConstraint__getDbgDrawSize_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p2 = Module["_emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p2"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p2"];
var _emscripten_bind_btRigidBody__setMotionState_p1 = Module["_emscripten_bind_btRigidBody__setMotionState_p1"] = asm["_emscripten_bind_btRigidBody__setMotionState_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getConstraintType_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getConstraintType_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getConstraintType_p0"];
var _emscripten_bind_CProfileNode__Get_Sibling_p0 = Module["_emscripten_bind_CProfileNode__Get_Sibling_p0"] = asm["_emscripten_bind_CProfileNode__Get_Sibling_p0"];
var _emscripten_bind_btHingeConstraint__enableAngularMotor_p3 = Module["_emscripten_bind_btHingeConstraint__enableAngularMotor_p3"] = asm["_emscripten_bind_btHingeConstraint__enableAngularMotor_p3"];
var _emscripten_bind_btDefaultMotionState__get_m_centerOfMassOffset_p0 = Module["_emscripten_bind_btDefaultMotionState__get_m_centerOfMassOffset_p0"] = asm["_emscripten_bind_btDefaultMotionState__get_m_centerOfMassOffset_p0"];
var _emscripten_bind_btStaticPlaneShape__getName_p0 = Module["_emscripten_bind_btStaticPlaneShape__getName_p0"] = asm["_emscripten_bind_btStaticPlaneShape__getName_p0"];
var _emscripten_bind_btGhostObject__getUserPointer_p0 = Module["_emscripten_bind_btGhostObject__getUserPointer_p0"] = asm["_emscripten_bind_btGhostObject__getUserPointer_p0"];
var _emscripten_bind_btPoint2PointConstraint__getInfo1NonVirtual_p1 = Module["_emscripten_bind_btPoint2PointConstraint__getInfo1NonVirtual_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__getInfo1NonVirtual_p1"];
var _emscripten_bind_btSimpleBroadphaseProxy__isInfinite_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__isInfinite_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__isInfinite_p1"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__isPolyhedral_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__isPolyhedral_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__isPolyhedral_p0"];
var _emscripten_bind_btConeShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btConeShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btConeShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btGeneric6DofConstraint__getInfo2NonVirtual_p7 = Module["_emscripten_bind_btGeneric6DofConstraint__getInfo2NonVirtual_p7"] = asm["_emscripten_bind_btGeneric6DofConstraint__getInfo2NonVirtual_p7"];
var _emscripten_bind_btConvexShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btConvexShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btConvexShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _emscripten_bind_btBU_Simplex1to4__getConvexPolyhedron_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getConvexPolyhedron_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getConvexPolyhedron_p0"];
var _emscripten_bind_btHingeConstraint__isEnabled_p0 = Module["_emscripten_bind_btHingeConstraint__isEnabled_p0"] = asm["_emscripten_bind_btHingeConstraint__isEnabled_p0"];
var _emscripten_bind_btGeneric6DofConstraint__getBreakingImpulseThreshold_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getBreakingImpulseThreshold_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getBreakingImpulseThreshold_p0"];
var _emscripten_bind_btSerializer__serializeName_p1 = Module["_emscripten_bind_btSerializer__serializeName_p1"] = asm["_emscripten_bind_btSerializer__serializeName_p1"];
var _emscripten_bind_btDispatcherInfo__get_m_dispatchFunc_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_dispatchFunc_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_dispatchFunc_p0"];
var _emscripten_bind_btCompoundShape__createAabbTreeFromChildren_p0 = Module["_emscripten_bind_btCompoundShape__createAabbTreeFromChildren_p0"] = asm["_emscripten_bind_btCompoundShape__createAabbTreeFromChildren_p0"];
var _emscripten_bind_btDbvtBroadphase__setVelocityPrediction_p1 = Module["_emscripten_bind_btDbvtBroadphase__setVelocityPrediction_p1"] = asm["_emscripten_bind_btDbvtBroadphase__setVelocityPrediction_p1"];
var _emscripten_bind_btConcaveShape__processAllTriangles_p3 = Module["_emscripten_bind_btConcaveShape__processAllTriangles_p3"] = asm["_emscripten_bind_btConcaveShape__processAllTriangles_p3"];
var _emscripten_bind_btGeneric6DofSpringConstraint__internalGetAppliedImpulse_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__internalGetAppliedImpulse_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__internalGetAppliedImpulse_p0"];
var _emscripten_bind_btManifoldPoint__set_m_lateralFrictionDir1_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_lateralFrictionDir1_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_lateralFrictionDir1_p1"];
var _emscripten_bind_btRigidBody__isKinematicObject_p0 = Module["_emscripten_bind_btRigidBody__isKinematicObject_p0"] = asm["_emscripten_bind_btRigidBody__isKinematicObject_p0"];
var _emscripten_bind_btCapsuleShapeX__getHalfHeight_p0 = Module["_emscripten_bind_btCapsuleShapeX__getHalfHeight_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getHalfHeight_p0"];
var _emscripten_bind_btVector4__rotate_p2 = Module["_emscripten_bind_btVector4__rotate_p2"] = asm["_emscripten_bind_btVector4__rotate_p2"];
var _emscripten_bind_btMatrix3x3__serialize_p1 = Module["_emscripten_bind_btMatrix3x3__serialize_p1"] = asm["_emscripten_bind_btMatrix3x3__serialize_p1"];
var _emscripten_bind_btBvhTriangleMeshShape__isPolyhedral_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__isPolyhedral_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__isPolyhedral_p0"];
var _emscripten_bind_btDbvtBroadphase__get_m_cid_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_cid_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_cid_p0"];
var _emscripten_bind_btContactConstraint__getUid_p0 = Module["_emscripten_bind_btContactConstraint__getUid_p0"] = asm["_emscripten_bind_btContactConstraint__getUid_p0"];
var _emscripten_bind_btVector3__setInterpolate3_p3 = Module["_emscripten_bind_btVector3__setInterpolate3_p3"] = asm["_emscripten_bind_btVector3__setInterpolate3_p3"];
var _emscripten_bind_btConstraintSolver__allSolved_p3 = Module["_emscripten_bind_btConstraintSolver__allSolved_p3"] = asm["_emscripten_bind_btConstraintSolver__allSolved_p3"];
var _emscripten_bind_btMatrix3x3__btMatrix3x3_p9 = Module["_emscripten_bind_btMatrix3x3__btMatrix3x3_p9"] = asm["_emscripten_bind_btMatrix3x3__btMatrix3x3_p9"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getObjectType_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getObjectType_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getObjectType_p0"];
var _emscripten_bind_btTriangleMesh____destroy___p0 = Module["_emscripten_bind_btTriangleMesh____destroy___p0"] = asm["_emscripten_bind_btTriangleMesh____destroy___p0"];
var _emscripten_bind_btMatrix3x3__btMatrix3x3_p1 = Module["_emscripten_bind_btMatrix3x3__btMatrix3x3_p1"] = asm["_emscripten_bind_btMatrix3x3__btMatrix3x3_p1"];
var _emscripten_bind_btMatrix3x3__btMatrix3x3_p0 = Module["_emscripten_bind_btMatrix3x3__btMatrix3x3_p0"] = asm["_emscripten_bind_btMatrix3x3__btMatrix3x3_p0"];
var _emscripten_bind_btTriangleIndexVertexArray__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btTriangleIndexVertexArray__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btTriangleIndexVertexArray__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btBvhSubtreeInfo____destroy___p0 = Module["_emscripten_bind_btBvhSubtreeInfo____destroy___p0"] = asm["_emscripten_bind_btBvhSubtreeInfo____destroy___p0"];
var _emscripten_bind_btVector3__op_add_p1 = Module["_emscripten_bind_btVector3__op_add_p1"] = asm["_emscripten_bind_btVector3__op_add_p1"];
var _emscripten_bind_btActivatingCollisionAlgorithm__getAllContactManifolds_p1 = Module["_emscripten_bind_btActivatingCollisionAlgorithm__getAllContactManifolds_p1"] = asm["_emscripten_bind_btActivatingCollisionAlgorithm__getAllContactManifolds_p1"];
var _emscripten_bind_btHinge2Constraint__getAngle2_p0 = Module["_emscripten_bind_btHinge2Constraint__getAngle2_p0"] = asm["_emscripten_bind_btHinge2Constraint__getAngle2_p0"];
var _emscripten_bind_btStridingMeshInterface__getLockedReadOnlyVertexIndexBase_p9 = Module["_emscripten_bind_btStridingMeshInterface__getLockedReadOnlyVertexIndexBase_p9"] = asm["_emscripten_bind_btStridingMeshInterface__getLockedReadOnlyVertexIndexBase_p9"];
var _emscripten_bind_btBvhTriangleMeshShape__getShapeType_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getShapeType_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getShapeType_p0"];
var _emscripten_bind_btContactConstraint__setUserConstraintType_p1 = Module["_emscripten_bind_btContactConstraint__setUserConstraintType_p1"] = asm["_emscripten_bind_btContactConstraint__setUserConstraintType_p1"];
var _emscripten_bind_btHingeConstraint__getAngularOnly_p0 = Module["_emscripten_bind_btHingeConstraint__getAngularOnly_p0"] = asm["_emscripten_bind_btHingeConstraint__getAngularOnly_p0"];
var _emscripten_bind_btCapsuleShapeX__getAngularMotionDisc_p0 = Module["_emscripten_bind_btCapsuleShapeX__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getAngularMotionDisc_p0"];
var _emscripten_bind_btBU_Simplex1to4__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btGhostObject__getCollisionShape_p0 = Module["_emscripten_bind_btGhostObject__getCollisionShape_p0"] = asm["_emscripten_bind_btGhostObject__getCollisionShape_p0"];
var _emscripten_bind_btCollisionObject__setWorldTransform_p1 = Module["_emscripten_bind_btCollisionObject__setWorldTransform_p1"] = asm["_emscripten_bind_btCollisionObject__setWorldTransform_p1"];
var _emscripten_bind_btConeShapeZ__setMargin_p1 = Module["_emscripten_bind_btConeShapeZ__setMargin_p1"] = asm["_emscripten_bind_btConeShapeZ__setMargin_p1"];
var _emscripten_bind_btCapsuleShape__serialize_p2 = Module["_emscripten_bind_btCapsuleShape__serialize_p2"] = asm["_emscripten_bind_btCapsuleShape__serialize_p2"];
var _emscripten_bind_btContactSolverInfo__btContactSolverInfo_p0 = Module["_emscripten_bind_btContactSolverInfo__btContactSolverInfo_p0"] = asm["_emscripten_bind_btContactSolverInfo__btContactSolverInfo_p0"];
var _emscripten_bind_btRigidBody__computeAngularImpulseDenominator_p1 = Module["_emscripten_bind_btRigidBody__computeAngularImpulseDenominator_p1"] = asm["_emscripten_bind_btRigidBody__computeAngularImpulseDenominator_p1"];
var _emscripten_bind_btTransform__getRotation_p0 = Module["_emscripten_bind_btTransform__getRotation_p0"] = asm["_emscripten_bind_btTransform__getRotation_p0"];
var _emscripten_bind_btStridingMeshInterface__getScaling_p0 = Module["_emscripten_bind_btStridingMeshInterface__getScaling_p0"] = asm["_emscripten_bind_btStridingMeshInterface__getScaling_p0"];
var _emscripten_bind_btGhostObject__setHitFraction_p1 = Module["_emscripten_bind_btGhostObject__setHitFraction_p1"] = asm["_emscripten_bind_btGhostObject__setHitFraction_p1"];
var _emscripten_bind_btConeShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btConeShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btConeShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _emscripten_bind_btPersistentManifold__addManifoldPoint_p1 = Module["_emscripten_bind_btPersistentManifold__addManifoldPoint_p1"] = asm["_emscripten_bind_btPersistentManifold__addManifoldPoint_p1"];
var _emscripten_bind_btSphereShape__getMargin_p0 = Module["_emscripten_bind_btSphereShape__getMargin_p0"] = asm["_emscripten_bind_btSphereShape__getMargin_p0"];
var _emscripten_bind_btEmptyShape__serializeSingleShape_p1 = Module["_emscripten_bind_btEmptyShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btEmptyShape__serializeSingleShape_p1"];
var _emscripten_bind_btQuaternion__slerp_p2 = Module["_emscripten_bind_btQuaternion__slerp_p2"] = asm["_emscripten_bind_btQuaternion__slerp_p2"];
var _emscripten_bind_btHinge2Constraint__setLinearUpperLimit_p1 = Module["_emscripten_bind_btHinge2Constraint__setLinearUpperLimit_p1"] = asm["_emscripten_bind_btHinge2Constraint__setLinearUpperLimit_p1"];
var _emscripten_bind_btPersistentManifold__getObjectType_p0 = Module["_emscripten_bind_btPersistentManifold__getObjectType_p0"] = asm["_emscripten_bind_btPersistentManifold__getObjectType_p0"];
var _emscripten_bind_btCylinderShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btCylinderShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btCylinderShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _emscripten_bind_btConvexHullShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btConvexHullShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btConvexHullShape__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_bt32BitAxisSweep3__resetPool_p1 = Module["_emscripten_bind_bt32BitAxisSweep3__resetPool_p1"] = asm["_emscripten_bind_bt32BitAxisSweep3__resetPool_p1"];
var _emscripten_bind_btHingeConstraint__testLimit_p2 = Module["_emscripten_bind_btHingeConstraint__testLimit_p2"] = asm["_emscripten_bind_btHingeConstraint__testLimit_p2"];
var _emscripten_bind_btRigidBody__setLinearFactor_p1 = Module["_emscripten_bind_btRigidBody__setLinearFactor_p1"] = asm["_emscripten_bind_btRigidBody__setLinearFactor_p1"];
var _emscripten_bind_btDynamicsWorld__setBroadphase_p1 = Module["_emscripten_bind_btDynamicsWorld__setBroadphase_p1"] = asm["_emscripten_bind_btDynamicsWorld__setBroadphase_p1"];
var _emscripten_bind_btPairCachingGhostObject__getActivationState_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getActivationState_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getActivationState_p0"];
var _emscripten_bind_btConvexInternalShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btConvexInternalShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btConvexInternalShape__calculateLocalInertia_p2"];
var _emscripten_bind_btDispatcherInfo__get_m_enableSPU_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_enableSPU_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_enableSPU_p0"];
var _emscripten_bind_btEmptyShape__isPolyhedral_p0 = Module["_emscripten_bind_btEmptyShape__isPolyhedral_p0"] = asm["_emscripten_bind_btEmptyShape__isPolyhedral_p0"];
var _emscripten_bind_btPoint2PointConstraint__isEnabled_p0 = Module["_emscripten_bind_btPoint2PointConstraint__isEnabled_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__isEnabled_p0"];
var _emscripten_bind_btConeShape__getUserPointer_p0 = Module["_emscripten_bind_btConeShape__getUserPointer_p0"] = asm["_emscripten_bind_btConeShape__getUserPointer_p0"];
var _emscripten_bind_btConvexShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btConvexShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btConvexShape__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_btCollisionWorld__ConvexResultCallback__addSingleResult_p2 = Module["_emscripten_bind_btCollisionWorld__ConvexResultCallback__addSingleResult_p2"] = asm["_emscripten_bind_btCollisionWorld__ConvexResultCallback__addSingleResult_p2"];
var _emscripten_bind_btMatrix3x3__scaled_p1 = Module["_emscripten_bind_btMatrix3x3__scaled_p1"] = asm["_emscripten_bind_btMatrix3x3__scaled_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__updateSingleAabb_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__updateSingleAabb_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__updateSingleAabb_p1"];
var _emscripten_bind_btPairCachingGhostObject__internalGetExtensionPointer_p0 = Module["_emscripten_bind_btPairCachingGhostObject__internalGetExtensionPointer_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__internalGetExtensionPointer_p0"];
var _emscripten_bind_btCylinderShapeX____destroy___p0 = Module["_emscripten_bind_btCylinderShapeX____destroy___p0"] = asm["_emscripten_bind_btCylinderShapeX____destroy___p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_restitution_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_restitution_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_restitution_p1"];
var _emscripten_bind_btContactConstraint__isEnabled_p0 = Module["_emscripten_bind_btContactConstraint__isEnabled_p0"] = asm["_emscripten_bind_btContactConstraint__isEnabled_p0"];
var _emscripten_bind_btCollisionAlgorithmCreateFunc__get_m_swapped_p0 = Module["_emscripten_bind_btCollisionAlgorithmCreateFunc__get_m_swapped_p0"] = asm["_emscripten_bind_btCollisionAlgorithmCreateFunc__get_m_swapped_p0"];
var _emscripten_bind_btUniformScalingShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btUniformScalingShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btUniformScalingShape__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btCylinderShapeX__isConvex_p0 = Module["_emscripten_bind_btCylinderShapeX__isConvex_p0"] = asm["_emscripten_bind_btCylinderShapeX__isConvex_p0"];
var _emscripten_bind_btIDebugDraw__drawArc_p9 = Module["_emscripten_bind_btIDebugDraw__drawArc_p9"] = asm["_emscripten_bind_btIDebugDraw__drawArc_p9"];
var _emscripten_bind_btDiscreteDynamicsWorld__debugDrawConstraint_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__debugDrawConstraint_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__debugDrawConstraint_p1"];
var _emscripten_bind_btSliderConstraint__getAncorInA_p0 = Module["_emscripten_bind_btSliderConstraint__getAncorInA_p0"] = asm["_emscripten_bind_btSliderConstraint__getAncorInA_p0"];
var _emscripten_bind_btHingeConstraint__getUpperLimit_p0 = Module["_emscripten_bind_btHingeConstraint__getUpperLimit_p0"] = asm["_emscripten_bind_btHingeConstraint__getUpperLimit_p0"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__getChildShape_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__getChildShape_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__getChildShape_p0"];
var _emscripten_bind_btConvexShape__setLocalScaling_p1 = Module["_emscripten_bind_btConvexShape__setLocalScaling_p1"] = asm["_emscripten_bind_btConvexShape__setLocalScaling_p1"];
var _emscripten_bind_btConeShape__getConeUpIndex_p0 = Module["_emscripten_bind_btConeShape__getConeUpIndex_p0"] = asm["_emscripten_bind_btConeShape__getConeUpIndex_p0"];
var _emscripten_bind_btHinge2Constraint____destroy___p0 = Module["_emscripten_bind_btHinge2Constraint____destroy___p0"] = asm["_emscripten_bind_btHinge2Constraint____destroy___p0"];
var _emscripten_bind_btCapsuleShapeZ__setMargin_p1 = Module["_emscripten_bind_btCapsuleShapeZ__setMargin_p1"] = asm["_emscripten_bind_btCapsuleShapeZ__setMargin_p1"];
var _emscripten_bind_btAngularLimit__getLow_p0 = Module["_emscripten_bind_btAngularLimit__getLow_p0"] = asm["_emscripten_bind_btAngularLimit__getLow_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintPtr_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintPtr_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintPtr_p0"];
var _emscripten_bind_btWheelInfo__set_m_maxSuspensionTravelCm_p1 = Module["_emscripten_bind_btWheelInfo__set_m_maxSuspensionTravelCm_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_maxSuspensionTravelCm_p1"];
var _emscripten_bind_btMultiSphereShape__getSpherePosition_p1 = Module["_emscripten_bind_btMultiSphereShape__getSpherePosition_p1"] = asm["_emscripten_bind_btMultiSphereShape__getSpherePosition_p1"];
var _emscripten_bind_btRigidBody__internalGetPushVelocity_p0 = Module["_emscripten_bind_btRigidBody__internalGetPushVelocity_p0"] = asm["_emscripten_bind_btRigidBody__internalGetPushVelocity_p0"];
var _emscripten_bind_btPolyhedralConvexShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getMarginNonVirtual_p0"];
var _emscripten_bind_btCollisionDispatcher__btCollisionDispatcher_p1 = Module["_emscripten_bind_btCollisionDispatcher__btCollisionDispatcher_p1"] = asm["_emscripten_bind_btCollisionDispatcher__btCollisionDispatcher_p1"];
var _emscripten_bind_btStaticPlaneShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btStaticPlaneShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btStaticPlaneShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btConcaveShape__isConvex2d_p0 = Module["_emscripten_bind_btConcaveShape__isConvex2d_p0"] = asm["_emscripten_bind_btConcaveShape__isConvex2d_p0"];
var _emscripten_bind_btBU_Simplex1to4__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getImplicitShapeDimensions_p0"];
var _emscripten_bind_btGeneric6DofConstraint__getInfo1NonVirtual_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getInfo1NonVirtual_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getInfo1NonVirtual_p1"];
var _emscripten_bind_btConvexShape__isConvex2d_p0 = Module["_emscripten_bind_btConvexShape__isConvex2d_p0"] = asm["_emscripten_bind_btConvexShape__isConvex2d_p0"];
var _emscripten_bind_btSerializer__setSerializationFlags_p1 = Module["_emscripten_bind_btSerializer__setSerializationFlags_p1"] = asm["_emscripten_bind_btSerializer__setSerializationFlags_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getAxis_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getAxis_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getAxis_p1"];
var _emscripten_bind_btCylinderShapeZ__isNonMoving_p0 = Module["_emscripten_bind_btCylinderShapeZ__isNonMoving_p0"] = asm["_emscripten_bind_btCylinderShapeZ__isNonMoving_p0"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__isSoftBody_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__isSoftBody_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__isSoftBody_p0"];
var _emscripten_bind_btPersistentManifold__replaceContactPoint_p2 = Module["_emscripten_bind_btPersistentManifold__replaceContactPoint_p2"] = asm["_emscripten_bind_btPersistentManifold__replaceContactPoint_p2"];
var _emscripten_bind_btManifoldPoint__get_m_index1_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_index1_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_index1_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getImplicitShapeDimensions_p0"];
var _emscripten_bind_btBoxShape__getPlane_p3 = Module["_emscripten_bind_btBoxShape__getPlane_p3"] = asm["_emscripten_bind_btBoxShape__getPlane_p3"];
var _emscripten_bind_btAxisSweep3__rayTest_p3 = Module["_emscripten_bind_btAxisSweep3__rayTest_p3"] = asm["_emscripten_bind_btAxisSweep3__rayTest_p3"];
var _emscripten_bind_btCollisionWorld__LocalRayResult____destroy___p0 = Module["_emscripten_bind_btCollisionWorld__LocalRayResult____destroy___p0"] = asm["_emscripten_bind_btCollisionWorld__LocalRayResult____destroy___p0"];
var _emscripten_bind_btBoxShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btBoxShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btBoxShape__getImplicitShapeDimensions_p0"];
var _emscripten_bind_btAxisSweep3__rayTest_p4 = Module["_emscripten_bind_btAxisSweep3__rayTest_p4"] = asm["_emscripten_bind_btAxisSweep3__rayTest_p4"];
var _emscripten_bind_btAxisSweep3__rayTest_p5 = Module["_emscripten_bind_btAxisSweep3__rayTest_p5"] = asm["_emscripten_bind_btAxisSweep3__rayTest_p5"];
var _emscripten_bind_btConvexInternalShape__isPolyhedral_p0 = Module["_emscripten_bind_btConvexInternalShape__isPolyhedral_p0"] = asm["_emscripten_bind_btConvexInternalShape__isPolyhedral_p0"];
var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionFilterMask_p0 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionFilterMask_p0"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionFilterMask_p0"];
var _emscripten_bind_btRigidBody__getInternalType_p0 = Module["_emscripten_bind_btRigidBody__getInternalType_p0"] = asm["_emscripten_bind_btRigidBody__getInternalType_p0"];
var _emscripten_bind_btCapsuleShapeZ__calculateLocalInertia_p2 = Module["_emscripten_bind_btCapsuleShapeZ__calculateLocalInertia_p2"] = asm["_emscripten_bind_btCapsuleShapeZ__calculateLocalInertia_p2"];
var _emscripten_bind_btConvexInternalAabbCachingShape__isConvex2d_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__isConvex2d_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__isConvex2d_p0"];
var _emscripten_bind_btTypedObject__set_m_objectType_p1 = Module["_emscripten_bind_btTypedObject__set_m_objectType_p1"] = asm["_emscripten_bind_btTypedObject__set_m_objectType_p1"];
var _emscripten_bind_btConvexInternalShape__getShapeType_p0 = Module["_emscripten_bind_btConvexInternalShape__getShapeType_p0"] = asm["_emscripten_bind_btConvexInternalShape__getShapeType_p0"];
var _emscripten_bind_btCollisionWorld__getBroadphase_p0 = Module["_emscripten_bind_btCollisionWorld__getBroadphase_p0"] = asm["_emscripten_bind_btCollisionWorld__getBroadphase_p0"];
var _emscripten_bind_btConeTwistConstraint__getUserConstraintType_p0 = Module["_emscripten_bind_btConeTwistConstraint__getUserConstraintType_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getUserConstraintType_p0"];
var _emscripten_bind_btTriangleInfo__get_m_edgeV0V1Angle_p0 = Module["_emscripten_bind_btTriangleInfo__get_m_edgeV0V1Angle_p0"] = asm["_emscripten_bind_btTriangleInfo__get_m_edgeV0V1Angle_p0"];
var _emscripten_bind_btGhostObject__internalSetTemporaryCollisionShape_p1 = Module["_emscripten_bind_btGhostObject__internalSetTemporaryCollisionShape_p1"] = asm["_emscripten_bind_btGhostObject__internalSetTemporaryCollisionShape_p1"];
var _emscripten_bind_btManifoldPoint__set_m_lifeTime_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_lifeTime_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_lifeTime_p1"];
var _emscripten_bind_btCollisionWorld__LocalRayResult__get_m_hitFraction_p0 = Module["_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_hitFraction_p0"] = asm["_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_hitFraction_p0"];
var _emscripten_bind_btCollisionShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btCollisionShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btCollisionShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btCompoundShape__recalculateLocalAabb_p0 = Module["_emscripten_bind_btCompoundShape__recalculateLocalAabb_p0"] = asm["_emscripten_bind_btCompoundShape__recalculateLocalAabb_p0"];
var _emscripten_bind_btHingeConstraint__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btHingeConstraint__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btHingeConstraint__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__removeConstraint_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__removeConstraint_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__removeConstraint_p1"];
var _emscripten_bind_btWheelInfo__get_m_skidInfo_p0 = Module["_emscripten_bind_btWheelInfo__get_m_skidInfo_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_skidInfo_p0"];
var _emscripten_bind_btConeTwistConstraint__getInfo2_p1 = Module["_emscripten_bind_btConeTwistConstraint__getInfo2_p1"] = asm["_emscripten_bind_btConeTwistConstraint__getInfo2_p1"];
var _emscripten_bind_btConeShapeX__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btConeShapeX__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btConeShapeX__getContactBreakingThreshold_p1"];
var _emscripten_bind_btManifoldPoint__btManifoldPoint_p0 = Module["_emscripten_bind_btManifoldPoint__btManifoldPoint_p0"] = asm["_emscripten_bind_btManifoldPoint__btManifoldPoint_p0"];
var _emscripten_bind_btBoxShape__serialize_p2 = Module["_emscripten_bind_btBoxShape__serialize_p2"] = asm["_emscripten_bind_btBoxShape__serialize_p2"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_rayFromWorld_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_rayFromWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_rayFromWorld_p0"];
var _emscripten_bind_btContactConstraint__get_m_objectType_p0 = Module["_emscripten_bind_btContactConstraint__get_m_objectType_p0"] = asm["_emscripten_bind_btContactConstraint__get_m_objectType_p0"];
var _emscripten_bind_btBroadphaseProxy__isConcave_p1 = Module["_emscripten_bind_btBroadphaseProxy__isConcave_p1"] = asm["_emscripten_bind_btBroadphaseProxy__isConcave_p1"];
var _emscripten_bind_btCollisionWorld__RayResultCallback__needsCollision_p1 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__needsCollision_p1"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__needsCollision_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__rayTest_p3 = Module["_emscripten_bind_btDiscreteDynamicsWorld__rayTest_p3"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__rayTest_p3"];
var _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_transformB_p1 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_transformB_p1"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_transformB_p1"];
var _emscripten_bind_btSliderConstraint__setRestitutionOrthoLin_p1 = Module["_emscripten_bind_btSliderConstraint__setRestitutionOrthoLin_p1"] = asm["_emscripten_bind_btSliderConstraint__setRestitutionOrthoLin_p1"];
var _emscripten_bind_btWheelInfo__get_m_rollInfluence_p0 = Module["_emscripten_bind_btWheelInfo__get_m_rollInfluence_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_rollInfluence_p0"];
var _emscripten_bind_btRaycastVehicle__getForwardVector_p0 = Module["_emscripten_bind_btRaycastVehicle__getForwardVector_p0"] = asm["_emscripten_bind_btRaycastVehicle__getForwardVector_p0"];
var _emscripten_bind_btCollisionWorld__updateSingleAabb_p1 = Module["_emscripten_bind_btCollisionWorld__updateSingleAabb_p1"] = asm["_emscripten_bind_btCollisionWorld__updateSingleAabb_p1"];
var _emscripten_bind_btAxisSweep3__setAabb_p4 = Module["_emscripten_bind_btAxisSweep3__setAabb_p4"] = asm["_emscripten_bind_btAxisSweep3__setAabb_p4"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getInfo1NonVirtual_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getInfo1NonVirtual_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getInfo1NonVirtual_p1"];
var _emscripten_bind_btCapsuleShape__setUserPointer_p1 = Module["_emscripten_bind_btCapsuleShape__setUserPointer_p1"] = asm["_emscripten_bind_btCapsuleShape__setUserPointer_p1"];
var _emscripten_bind_btUniversalConstraint__getLinearLowerLimit_p1 = Module["_emscripten_bind_btUniversalConstraint__getLinearLowerLimit_p1"] = asm["_emscripten_bind_btUniversalConstraint__getLinearLowerLimit_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__isLimited_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__isLimited_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__isLimited_p1"];
var _emscripten_bind_btConcaveShape__serializeSingleShape_p1 = Module["_emscripten_bind_btConcaveShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btConcaveShape__serializeSingleShape_p1"];
var _emscripten_bind_btConvexHullShape__getNumVertices_p0 = Module["_emscripten_bind_btConvexHullShape__getNumVertices_p0"] = asm["_emscripten_bind_btConvexHullShape__getNumVertices_p0"];
var _emscripten_bind_btRigidBody__translate_p1 = Module["_emscripten_bind_btRigidBody__translate_p1"] = asm["_emscripten_bind_btRigidBody__translate_p1"];
var _emscripten_bind_btRigidBody__getActivationState_p0 = Module["_emscripten_bind_btRigidBody__getActivationState_p0"] = asm["_emscripten_bind_btRigidBody__getActivationState_p0"];
var _emscripten_bind_btPersistentManifold__set_m_index1a_p1 = Module["_emscripten_bind_btPersistentManifold__set_m_index1a_p1"] = asm["_emscripten_bind_btPersistentManifold__set_m_index1a_p1"];
var _emscripten_bind_btConeShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btConeShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btConeShape__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__getCollisionObjectArray_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getCollisionObjectArray_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getCollisionObjectArray_p0"];
var _emscripten_bind_btCapsuleShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btCapsuleShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btCapsuleShape__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btAxisSweep3__createProxy_p8 = Module["_emscripten_bind_btAxisSweep3__createProxy_p8"] = asm["_emscripten_bind_btAxisSweep3__createProxy_p8"];
var _emscripten_bind_btUniversalConstraint__getAxis_p1 = Module["_emscripten_bind_btUniversalConstraint__getAxis_p1"] = asm["_emscripten_bind_btUniversalConstraint__getAxis_p1"];
var _emscripten_bind_btSliderConstraint__getMaxAngMotorForce_p0 = Module["_emscripten_bind_btSliderConstraint__getMaxAngMotorForce_p0"] = asm["_emscripten_bind_btSliderConstraint__getMaxAngMotorForce_p0"];
var _emscripten_bind_btSliderConstraint__calculateTransforms_p2 = Module["_emscripten_bind_btSliderConstraint__calculateTransforms_p2"] = asm["_emscripten_bind_btSliderConstraint__calculateTransforms_p2"];
var _emscripten_bind_btDbvtProxy__getUid_p0 = Module["_emscripten_bind_btDbvtProxy__getUid_p0"] = asm["_emscripten_bind_btDbvtProxy__getUid_p0"];
var _emscripten_bind_btCollisionAlgorithmCreateFunc__btCollisionAlgorithmCreateFunc_p0 = Module["_emscripten_bind_btCollisionAlgorithmCreateFunc__btCollisionAlgorithmCreateFunc_p0"] = asm["_emscripten_bind_btCollisionAlgorithmCreateFunc__btCollisionAlgorithmCreateFunc_p0"];
var _emscripten_bind_btCompoundShape__getChildTransform_p1 = Module["_emscripten_bind_btCompoundShape__getChildTransform_p1"] = asm["_emscripten_bind_btCompoundShape__getChildTransform_p1"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btCylinderShape__getHalfExtentsWithoutMargin_p0 = Module["_emscripten_bind_btCylinderShape__getHalfExtentsWithoutMargin_p0"] = asm["_emscripten_bind_btCylinderShape__getHalfExtentsWithoutMargin_p0"];
var _emscripten_bind_btRotationalLimitMotor__set_m_enableMotor_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_enableMotor_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_enableMotor_p1"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getConvexPolyhedron_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getConvexPolyhedron_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getConvexPolyhedron_p0"];
var _emscripten_bind_btConvexInternalAabbCachingShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getLocalScalingNV_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__applyGravity_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__applyGravity_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__applyGravity_p0"];
var _emscripten_bind_btStridingMeshInterface__preallocateIndices_p1 = Module["_emscripten_bind_btStridingMeshInterface__preallocateIndices_p1"] = asm["_emscripten_bind_btStridingMeshInterface__preallocateIndices_p1"];
var _emscripten_bind_btRigidBody__mergesSimulationIslands_p0 = Module["_emscripten_bind_btRigidBody__mergesSimulationIslands_p0"] = asm["_emscripten_bind_btRigidBody__mergesSimulationIslands_p0"];
var _emscripten_bind_btDbvtBroadphase__set_m_cupdates_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_cupdates_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_cupdates_p1"];
var _emscripten_bind_btTriangleMesh__getNumSubParts_p0 = Module["_emscripten_bind_btTriangleMesh__getNumSubParts_p0"] = asm["_emscripten_bind_btTriangleMesh__getNumSubParts_p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_startWorldTransform_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_startWorldTransform_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_startWorldTransform_p0"];
var _emscripten_bind_btTriangleMesh__getUse4componentVertices_p0 = Module["_emscripten_bind_btTriangleMesh__getUse4componentVertices_p0"] = asm["_emscripten_bind_btTriangleMesh__getUse4componentVertices_p0"];
var _emscripten_bind_btManifoldPoint__get_m_positionWorldOnB_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_positionWorldOnB_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_positionWorldOnB_p0"];
var _emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_localShapeInfo_p0 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_localShapeInfo_p0"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_localShapeInfo_p0"];
var _emscripten_bind_btGeneric6DofConstraint__setLinearUpperLimit_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setLinearUpperLimit_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setLinearUpperLimit_p1"];
var _emscripten_bind_btTranslationalLimitMotor__get_m_stopCFM_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_stopCFM_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_stopCFM_p0"];
var _emscripten_bind_btCollisionWorld__LocalRayResult__get_m_collisionObject_p0 = Module["_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_collisionObject_p0"] = asm["_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_collisionObject_p0"];
var _emscripten_bind_btSphereShape__setUnscaledRadius_p1 = Module["_emscripten_bind_btSphereShape__setUnscaledRadius_p1"] = asm["_emscripten_bind_btSphereShape__setUnscaledRadius_p1"];
var _emscripten_bind_btVector4__setInterpolate3_p3 = Module["_emscripten_bind_btVector4__setInterpolate3_p3"] = asm["_emscripten_bind_btVector4__setInterpolate3_p3"];
var _emscripten_bind_btIndexedMesh__set_m_numTriangles_p1 = Module["_emscripten_bind_btIndexedMesh__set_m_numTriangles_p1"] = asm["_emscripten_bind_btIndexedMesh__set_m_numTriangles_p1"];
var _emscripten_bind_btCylinderShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btCylinderShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btCylinderShape__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btHingeConstraint__getUserConstraintPtr_p0 = Module["_emscripten_bind_btHingeConstraint__getUserConstraintPtr_p0"] = asm["_emscripten_bind_btHingeConstraint__getUserConstraintPtr_p0"];
var _emscripten_bind_btConvexInternalShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btConvexInternalShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btConvexInternalShape__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btSphereShape____destroy___p0 = Module["_emscripten_bind_btSphereShape____destroy___p0"] = asm["_emscripten_bind_btSphereShape____destroy___p0"];
var _emscripten_bind_btContinuousDynamicsWorld__getWorldType_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getWorldType_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getWorldType_p0"];
var _emscripten_bind_btConvexSeparatingDistanceUtil____destroy___p0 = Module["_emscripten_bind_btConvexSeparatingDistanceUtil____destroy___p0"] = asm["_emscripten_bind_btConvexSeparatingDistanceUtil____destroy___p0"];
var _emscripten_bind_btSliderConstraint__getLowerLinLimit_p0 = Module["_emscripten_bind_btSliderConstraint__getLowerLinLimit_p0"] = asm["_emscripten_bind_btSliderConstraint__getLowerLinLimit_p0"];
var _emscripten_bind_btCapsuleShapeZ__serialize_p2 = Module["_emscripten_bind_btCapsuleShapeZ__serialize_p2"] = asm["_emscripten_bind_btCapsuleShapeZ__serialize_p2"];
var _emscripten_bind_btDynamicsWorld__addCollisionObject_p1 = Module["_emscripten_bind_btDynamicsWorld__addCollisionObject_p1"] = asm["_emscripten_bind_btDynamicsWorld__addCollisionObject_p1"];
var _emscripten_bind_btDynamicsWorld__addCollisionObject_p2 = Module["_emscripten_bind_btDynamicsWorld__addCollisionObject_p2"] = asm["_emscripten_bind_btDynamicsWorld__addCollisionObject_p2"];
var _emscripten_bind_btDynamicsWorld__addCollisionObject_p3 = Module["_emscripten_bind_btDynamicsWorld__addCollisionObject_p3"] = asm["_emscripten_bind_btDynamicsWorld__addCollisionObject_p3"];
var _emscripten_bind_btStaticPlaneShape__getShapeType_p0 = Module["_emscripten_bind_btStaticPlaneShape__getShapeType_p0"] = asm["_emscripten_bind_btStaticPlaneShape__getShapeType_p0"];
var _emscripten_bind_btCollisionDispatcher__getManifoldByIndexInternal_p1 = Module["_emscripten_bind_btCollisionDispatcher__getManifoldByIndexInternal_p1"] = asm["_emscripten_bind_btCollisionDispatcher__getManifoldByIndexInternal_p1"];
var _emscripten_bind_btDiscreteCollisionDetectorInterface__Result__setShapeIdentifiersB_p2 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__Result__setShapeIdentifiersB_p2"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__Result__setShapeIdentifiersB_p2"];
var _emscripten_bind_btMultiSphereShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btMultiSphereShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btMultiSphereShape__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btManifoldPoint__getLifeTime_p0 = Module["_emscripten_bind_btManifoldPoint__getLifeTime_p0"] = asm["_emscripten_bind_btManifoldPoint__getLifeTime_p0"];
var _emscripten_bind_btUniversalConstraint__btUniversalConstraint_p5 = Module["_emscripten_bind_btUniversalConstraint__btUniversalConstraint_p5"] = asm["_emscripten_bind_btUniversalConstraint__btUniversalConstraint_p5"];
var _emscripten_bind_btTransform__op_set_p1 = Module["_emscripten_bind_btTransform__op_set_p1"] = asm["_emscripten_bind_btTransform__op_set_p1"];
var _emscripten_bind_btWheelInfo__set_m_maxSuspensionForce_p1 = Module["_emscripten_bind_btWheelInfo__set_m_maxSuspensionForce_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_maxSuspensionForce_p1"];
var _emscripten_bind_btConvexTriangleMeshShape__getNumEdges_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getNumEdges_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getNumEdges_p0"];
var _emscripten_bind_btBU_Simplex1to4__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btBU_Simplex1to4__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btBvhTriangleMeshShape__isInfinite_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__isInfinite_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__isInfinite_p0"];
var _emscripten_bind_btCollisionShape__isConvex2d_p0 = Module["_emscripten_bind_btCollisionShape__isConvex2d_p0"] = asm["_emscripten_bind_btCollisionShape__isConvex2d_p0"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_rayFromWorld_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_rayFromWorld_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_rayFromWorld_p1"];
var _emscripten_bind_btBU_Simplex1to4__getMarginNonVirtual_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getMarginNonVirtual_p0"];
var _emscripten_bind_btUniversalConstraint__getCalculatedTransformA_p0 = Module["_emscripten_bind_btUniversalConstraint__getCalculatedTransformA_p0"] = asm["_emscripten_bind_btUniversalConstraint__getCalculatedTransformA_p0"];
var _emscripten_bind_btJacobianEntry__getRelativeVelocity_p4 = Module["_emscripten_bind_btJacobianEntry__getRelativeVelocity_p4"] = asm["_emscripten_bind_btJacobianEntry__getRelativeVelocity_p4"];
var _emscripten_bind_btTriangleInfoMap__get_m_convexEpsilon_p0 = Module["_emscripten_bind_btTriangleInfoMap__get_m_convexEpsilon_p0"] = asm["_emscripten_bind_btTriangleInfoMap__get_m_convexEpsilon_p0"];
var _emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_closestHitFraction_p1 = Module["_emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_closestHitFraction_p1"] = asm["_emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_closestHitFraction_p1"];
var _emscripten_bind_btUniformScalingShape__getName_p0 = Module["_emscripten_bind_btUniformScalingShape__getName_p0"] = asm["_emscripten_bind_btUniformScalingShape__getName_p0"];
var _emscripten_bind_btUniformScalingShape__btUniformScalingShape_p2 = Module["_emscripten_bind_btUniformScalingShape__btUniformScalingShape_p2"] = asm["_emscripten_bind_btUniformScalingShape__btUniformScalingShape_p2"];
var _emscripten_bind_btContinuousDynamicsWorld__addAction_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__addAction_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__addAction_p1"];
var _emscripten_bind_btBoxShape__setUserPointer_p1 = Module["_emscripten_bind_btBoxShape__setUserPointer_p1"] = asm["_emscripten_bind_btBoxShape__setUserPointer_p1"];
var _emscripten_bind_btCollisionObject__setCollisionFlags_p1 = Module["_emscripten_bind_btCollisionObject__setCollisionFlags_p1"] = asm["_emscripten_bind_btCollisionObject__setCollisionFlags_p1"];
var _emscripten_bind_btConeShapeZ__isSoftBody_p0 = Module["_emscripten_bind_btConeShapeZ__isSoftBody_p0"] = asm["_emscripten_bind_btConeShapeZ__isSoftBody_p0"];
var _emscripten_bind_btConstraintSetting____destroy___p0 = Module["_emscripten_bind_btConstraintSetting____destroy___p0"] = asm["_emscripten_bind_btConstraintSetting____destroy___p0"];
var _emscripten_bind_btGhostPairCallback__btGhostPairCallback_p0 = Module["_emscripten_bind_btGhostPairCallback__btGhostPairCallback_p0"] = asm["_emscripten_bind_btGhostPairCallback__btGhostPairCallback_p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_mass_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_mass_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_mass_p1"];
var _emscripten_bind_btOptimizedBvh____destroy___p0 = Module["_emscripten_bind_btOptimizedBvh____destroy___p0"] = asm["_emscripten_bind_btOptimizedBvh____destroy___p0"];
var _emscripten_bind_btRigidBody__getOrientation_p0 = Module["_emscripten_bind_btRigidBody__getOrientation_p0"] = asm["_emscripten_bind_btRigidBody__getOrientation_p0"];
var _emscripten_bind_btUniversalConstraint__getAngle2_p0 = Module["_emscripten_bind_btUniversalConstraint__getAngle2_p0"] = asm["_emscripten_bind_btUniversalConstraint__getAngle2_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__rayTestSingle_p6 = Module["_emscripten_bind_btSimpleDynamicsWorld__rayTestSingle_p6"] = asm["_emscripten_bind_btSimpleDynamicsWorld__rayTestSingle_p6"];
var _emscripten_bind_btContactConstraint__internalSetAppliedImpulse_p1 = Module["_emscripten_bind_btContactConstraint__internalSetAppliedImpulse_p1"] = asm["_emscripten_bind_btContactConstraint__internalSetAppliedImpulse_p1"];
var _emscripten_bind_btDbvtBroadphase__set_m_stageCurrent_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_stageCurrent_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_stageCurrent_p1"];
var _emscripten_bind_btPoint2PointConstraint__getDbgDrawSize_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getDbgDrawSize_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getDbgDrawSize_p0"];
var _emscripten_bind_btAxisSweep3__getNumHandles_p0 = Module["_emscripten_bind_btAxisSweep3__getNumHandles_p0"] = asm["_emscripten_bind_btAxisSweep3__getNumHandles_p0"];
var _emscripten_bind_btRigidBody__setCcdMotionThreshold_p1 = Module["_emscripten_bind_btRigidBody__setCcdMotionThreshold_p1"] = asm["_emscripten_bind_btRigidBody__setCcdMotionThreshold_p1"];
var _emscripten_bind_btUniversalConstraint__setDbgDrawSize_p1 = Module["_emscripten_bind_btUniversalConstraint__setDbgDrawSize_p1"] = asm["_emscripten_bind_btUniversalConstraint__setDbgDrawSize_p1"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__getUserPointer_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__getUserPointer_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__getUserPointer_p0"];
var _emscripten_bind_btDbvtProxy__isConcave_p1 = Module["_emscripten_bind_btDbvtProxy__isConcave_p1"] = asm["_emscripten_bind_btDbvtProxy__isConcave_p1"];
var _emscripten_bind_btVector4__triple_p2 = Module["_emscripten_bind_btVector4__triple_p2"] = asm["_emscripten_bind_btVector4__triple_p2"];
var _emscripten_bind_btCylinderShapeZ__getBoundingSphere_p2 = Module["_emscripten_bind_btCylinderShapeZ__getBoundingSphere_p2"] = asm["_emscripten_bind_btCylinderShapeZ__getBoundingSphere_p2"];
var _emscripten_bind_btOverlappingPairCache__hasDeferredRemoval_p0 = Module["_emscripten_bind_btOverlappingPairCache__hasDeferredRemoval_p0"] = asm["_emscripten_bind_btOverlappingPairCache__hasDeferredRemoval_p0"];
var _emscripten_bind_btQuaternion__getAxis_p0 = Module["_emscripten_bind_btQuaternion__getAxis_p0"] = asm["_emscripten_bind_btQuaternion__getAxis_p0"];
var _emscripten_bind_btVector3__getZ_p0 = Module["_emscripten_bind_btVector3__getZ_p0"] = asm["_emscripten_bind_btVector3__getZ_p0"];
var _emscripten_bind_btWheelInfo__set_m_chassisConnectionPointCS_p1 = Module["_emscripten_bind_btWheelInfo__set_m_chassisConnectionPointCS_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_chassisConnectionPointCS_p1"];
var _emscripten_bind_btPoint2PointConstraint__set_m_useSolveConstraintObsolete_p1 = Module["_emscripten_bind_btPoint2PointConstraint__set_m_useSolveConstraintObsolete_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__set_m_useSolveConstraintObsolete_p1"];
var _emscripten_bind_btHinge2Constraint__set_m_useSolveConstraintObsolete_p1 = Module["_emscripten_bind_btHinge2Constraint__set_m_useSolveConstraintObsolete_p1"] = asm["_emscripten_bind_btHinge2Constraint__set_m_useSolveConstraintObsolete_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__addConstraint_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__addConstraint_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__addConstraint_p1"];
var _emscripten_bind_btIndexedMesh__set_m_numVertices_p1 = Module["_emscripten_bind_btIndexedMesh__set_m_numVertices_p1"] = asm["_emscripten_bind_btIndexedMesh__set_m_numVertices_p1"];
var _emscripten_bind_btHashInt__btHashInt_p1 = Module["_emscripten_bind_btHashInt__btHashInt_p1"] = asm["_emscripten_bind_btHashInt__btHashInt_p1"];
var _emscripten_bind_btConstraintSetting__get_m_tau_p0 = Module["_emscripten_bind_btConstraintSetting__get_m_tau_p0"] = asm["_emscripten_bind_btConstraintSetting__get_m_tau_p0"];
var _emscripten_bind_btSliderConstraint__setRestitutionLimAng_p1 = Module["_emscripten_bind_btSliderConstraint__setRestitutionLimAng_p1"] = asm["_emscripten_bind_btSliderConstraint__setRestitutionLimAng_p1"];
var _emscripten_bind_btTriangleInfoMap__get_m_edgeDistanceThreshold_p0 = Module["_emscripten_bind_btTriangleInfoMap__get_m_edgeDistanceThreshold_p0"] = asm["_emscripten_bind_btTriangleInfoMap__get_m_edgeDistanceThreshold_p0"];
var _emscripten_bind_btCapsuleShape__getHalfHeight_p0 = Module["_emscripten_bind_btCapsuleShape__getHalfHeight_p0"] = asm["_emscripten_bind_btCapsuleShape__getHalfHeight_p0"];
var _emscripten_bind_btSliderConstraint__getLinDepth_p0 = Module["_emscripten_bind_btSliderConstraint__getLinDepth_p0"] = asm["_emscripten_bind_btSliderConstraint__getLinDepth_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setAngularLowerLimit_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setAngularLowerLimit_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setAngularLowerLimit_p1"];
var _emscripten_bind_btHashString__set_m_hash_p1 = Module["_emscripten_bind_btHashString__set_m_hash_p1"] = asm["_emscripten_bind_btHashString__set_m_hash_p1"];
var _emscripten_bind_btDispatcherInfo__get_m_timeOfImpact_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_timeOfImpact_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_timeOfImpact_p0"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__setUserPointer_p1 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__setUserPointer_p1"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__setUserPointer_p1"];
var _emscripten_bind_btConeTwistConstraint__getInfo1_p1 = Module["_emscripten_bind_btConeTwistConstraint__getInfo1_p1"] = asm["_emscripten_bind_btConeTwistConstraint__getInfo1_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setupSolverConstraint_p4 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setupSolverConstraint_p4"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setupSolverConstraint_p4"];
var _emscripten_bind_btConeShapeZ__getMargin_p0 = Module["_emscripten_bind_btConeShapeZ__getMargin_p0"] = asm["_emscripten_bind_btConeShapeZ__getMargin_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__getConvexPolyhedron_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getConvexPolyhedron_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getConvexPolyhedron_p0"];
var _emscripten_bind_btSphereSphereCollisionAlgorithm__getAllContactManifolds_p1 = Module["_emscripten_bind_btSphereSphereCollisionAlgorithm__getAllContactManifolds_p1"] = asm["_emscripten_bind_btSphereSphereCollisionAlgorithm__getAllContactManifolds_p1"];
var _emscripten_bind_btSerializer__getUniquePointer_p1 = Module["_emscripten_bind_btSerializer__getUniquePointer_p1"] = asm["_emscripten_bind_btSerializer__getUniquePointer_p1"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalAngularDampingFactor_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalAngularDampingFactor_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalAngularDampingFactor_p1"];
var _emscripten_bind_btUniformScalingShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btUniformScalingShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btUniformScalingShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btConvexInternalShape__isConcave_p0 = Module["_emscripten_bind_btConvexInternalShape__isConcave_p0"] = asm["_emscripten_bind_btConvexInternalShape__isConcave_p0"];
var _emscripten_bind_btVector4__getW_p0 = Module["_emscripten_bind_btVector4__getW_p0"] = asm["_emscripten_bind_btVector4__getW_p0"];
var _emscripten_bind_btCollisionConfiguration__getPersistentManifoldPool_p0 = Module["_emscripten_bind_btCollisionConfiguration__getPersistentManifoldPool_p0"] = asm["_emscripten_bind_btCollisionConfiguration__getPersistentManifoldPool_p0"];
var _emscripten_bind_btConvexHullShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btConvexHullShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btConvexHullShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btVector3__serialize_p1 = Module["_emscripten_bind_btVector3__serialize_p1"] = asm["_emscripten_bind_btVector3__serialize_p1"];
var _emscripten_bind_btQuantizedBvh__reportRayOverlappingNodex_p3 = Module["_emscripten_bind_btQuantizedBvh__reportRayOverlappingNodex_p3"] = asm["_emscripten_bind_btQuantizedBvh__reportRayOverlappingNodex_p3"];
var _emscripten_bind_btCollisionObject__isKinematicObject_p0 = Module["_emscripten_bind_btCollisionObject__isKinematicObject_p0"] = asm["_emscripten_bind_btCollisionObject__isKinematicObject_p0"];
var _emscripten_bind_btSliderConstraint__setDampingOrthoLin_p1 = Module["_emscripten_bind_btSliderConstraint__setDampingOrthoLin_p1"] = asm["_emscripten_bind_btSliderConstraint__setDampingOrthoLin_p1"];
var _emscripten_bind_btSliderConstraint__getUid_p0 = Module["_emscripten_bind_btSliderConstraint__getUid_p0"] = asm["_emscripten_bind_btSliderConstraint__getUid_p0"];
var _emscripten_bind_btDynamicsWorld__serialize_p1 = Module["_emscripten_bind_btDynamicsWorld__serialize_p1"] = asm["_emscripten_bind_btDynamicsWorld__serialize_p1"];
var _emscripten_bind_btConeShapeZ__serialize_p2 = Module["_emscripten_bind_btConeShapeZ__serialize_p2"] = asm["_emscripten_bind_btConeShapeZ__serialize_p2"];
var _emscripten_bind_btRaycastVehicle__getUpAxis_p0 = Module["_emscripten_bind_btRaycastVehicle__getUpAxis_p0"] = asm["_emscripten_bind_btRaycastVehicle__getUpAxis_p0"];
var _emscripten_bind_btCylinderShapeZ__getRadius_p0 = Module["_emscripten_bind_btCylinderShapeZ__getRadius_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getRadius_p0"];
var _emscripten_bind_btCollisionObject__internalSetExtensionPointer_p1 = Module["_emscripten_bind_btCollisionObject__internalSetExtensionPointer_p1"] = asm["_emscripten_bind_btCollisionObject__internalSetExtensionPointer_p1"];
var _emscripten_bind_btConvexHullShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btConvexHullShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btConvexHullShape__getLocalScalingNV_p0"];
var _emscripten_bind_btCylinderShape__btCylinderShape_p1 = Module["_emscripten_bind_btCylinderShape__btCylinderShape_p1"] = asm["_emscripten_bind_btCylinderShape__btCylinderShape_p1"];
var _emscripten_bind_btSimpleDynamicsWorld____destroy___p0 = Module["_emscripten_bind_btSimpleDynamicsWorld____destroy___p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld____destroy___p0"];
var _emscripten_bind_btIDebugDraw__drawPlane_p4 = Module["_emscripten_bind_btIDebugDraw__drawPlane_p4"] = asm["_emscripten_bind_btIDebugDraw__drawPlane_p4"];
var _emscripten_bind_btPairCachingGhostObject__serializeSingleObject_p1 = Module["_emscripten_bind_btPairCachingGhostObject__serializeSingleObject_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__serializeSingleObject_p1"];
var _emscripten_bind_btRaycastVehicle__setUserConstraintType_p1 = Module["_emscripten_bind_btRaycastVehicle__setUserConstraintType_p1"] = asm["_emscripten_bind_btRaycastVehicle__setUserConstraintType_p1"];
var _memcpy = Module["_memcpy"] = asm["_memcpy"];
var _emscripten_bind_btCapsuleShape__serializeSingleShape_p1 = Module["_emscripten_bind_btCapsuleShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btCapsuleShape__serializeSingleShape_p1"];
var _emscripten_bind_btPairCachingGhostObject__btPairCachingGhostObject_p0 = Module["_emscripten_bind_btPairCachingGhostObject__btPairCachingGhostObject_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__btPairCachingGhostObject_p0"];
var _emscripten_bind_btWheelInfo__get_m_steering_p0 = Module["_emscripten_bind_btWheelInfo__get_m_steering_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_steering_p0"];
var _emscripten_bind_btMultiSphereShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btMultiSphereShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btMultiSphereShape__setImplicitShapeDimensions_p1"];
var _emscripten_bind_btRigidBody__hasContactResponse_p0 = Module["_emscripten_bind_btRigidBody__hasContactResponse_p0"] = asm["_emscripten_bind_btRigidBody__hasContactResponse_p0"];
var _emscripten_bind_btGhostObject__isKinematicObject_p0 = Module["_emscripten_bind_btGhostObject__isKinematicObject_p0"] = asm["_emscripten_bind_btGhostObject__isKinematicObject_p0"];
var _emscripten_bind_btBroadphasePair__btBroadphasePair_p2 = Module["_emscripten_bind_btBroadphasePair__btBroadphasePair_p2"] = asm["_emscripten_bind_btBroadphasePair__btBroadphasePair_p2"];
var _emscripten_bind_btPairCachingGhostObject__getWorldTransform_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getWorldTransform_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getWorldTransform_p0"];
var _emscripten_bind_btPersistentManifold__getBody1_p0 = Module["_emscripten_bind_btPersistentManifold__getBody1_p0"] = asm["_emscripten_bind_btPersistentManifold__getBody1_p0"];
var _emscripten_bind_btUniversalConstraint__getAnchor2_p0 = Module["_emscripten_bind_btUniversalConstraint__getAnchor2_p0"] = asm["_emscripten_bind_btUniversalConstraint__getAnchor2_p0"];
var _emscripten_bind_btCapsuleShapeX__calculateTemporalAabb_p6 = Module["_emscripten_bind_btCapsuleShapeX__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btCapsuleShapeX__calculateTemporalAabb_p6"];
var _emscripten_bind_btSphereShape__isConcave_p0 = Module["_emscripten_bind_btSphereShape__isConcave_p0"] = asm["_emscripten_bind_btSphereShape__isConcave_p0"];
var _emscripten_bind_btPolyhedralConvexShape__getUserPointer_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getUserPointer_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getUserPointer_p0"];
var _emscripten_bind_btRigidBody__getBroadphaseHandle_p0 = Module["_emscripten_bind_btRigidBody__getBroadphaseHandle_p0"] = asm["_emscripten_bind_btRigidBody__getBroadphaseHandle_p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalLinearDampingThresholdSqr_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalLinearDampingThresholdSqr_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalLinearDampingThresholdSqr_p1"];
var _emscripten_bind_btRotationalLimitMotor__set_m_hiLimit_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_hiLimit_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_hiLimit_p1"];
var _emscripten_bind_btAxisSweep3____destroy___p0 = Module["_emscripten_bind_btAxisSweep3____destroy___p0"] = asm["_emscripten_bind_btAxisSweep3____destroy___p0"];
var _emscripten_bind_btSliderConstraint__getDampingLimLin_p0 = Module["_emscripten_bind_btSliderConstraint__getDampingLimLin_p0"] = asm["_emscripten_bind_btSliderConstraint__getDampingLimLin_p0"];
var _emscripten_bind_btConvexInternalAabbCachingShape__setMargin_p1 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__setMargin_p1"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__setMargin_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__setBroadphase_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__setBroadphase_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setBroadphase_p1"];
var _emscripten_bind_btHinge2Constraint__getInfo1NonVirtual_p1 = Module["_emscripten_bind_btHinge2Constraint__getInfo1NonVirtual_p1"] = asm["_emscripten_bind_btHinge2Constraint__getInfo1NonVirtual_p1"];
var _emscripten_bind_btGeneric6DofConstraint__getTranslationalLimitMotor_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getTranslationalLimitMotor_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getTranslationalLimitMotor_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__serialize_p2 = Module["_emscripten_bind_btBvhTriangleMeshShape__serialize_p2"] = asm["_emscripten_bind_btBvhTriangleMeshShape__serialize_p2"];
var _emscripten_bind_btConeShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btConeShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btConeShape__getImplicitShapeDimensions_p0"];
var _emscripten_bind_btDbvtProxy__set_m_uniqueId_p1 = Module["_emscripten_bind_btDbvtProxy__set_m_uniqueId_p1"] = asm["_emscripten_bind_btDbvtProxy__set_m_uniqueId_p1"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitNormalWorld_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitNormalWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitNormalWorld_p0"];
var _emscripten_bind_btCylinderShapeX__isConcave_p0 = Module["_emscripten_bind_btCylinderShapeX__isConcave_p0"] = asm["_emscripten_bind_btCylinderShapeX__isConcave_p0"];
var _emscripten_bind_btConeShapeX__getAabbNonVirtual_p3 = Module["_emscripten_bind_btConeShapeX__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btConeShapeX__getAabbNonVirtual_p3"];
var _emscripten_bind_btConvexTriangleMeshShape__getNonvirtualAabb_p4 = Module["_emscripten_bind_btConvexTriangleMeshShape__getNonvirtualAabb_p4"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getNonvirtualAabb_p4"];
var _emscripten_bind_btDiscreteDynamicsWorld__getDebugDrawer_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getDebugDrawer_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getDebugDrawer_p0"];
var _emscripten_bind_btCollisionAlgorithmCreateFunc____destroy___p0 = Module["_emscripten_bind_btCollisionAlgorithmCreateFunc____destroy___p0"] = asm["_emscripten_bind_btCollisionAlgorithmCreateFunc____destroy___p0"];
var _emscripten_bind_btUniversalConstraint__setLinearLowerLimit_p1 = Module["_emscripten_bind_btUniversalConstraint__setLinearLowerLimit_p1"] = asm["_emscripten_bind_btUniversalConstraint__setLinearLowerLimit_p1"];
var _emscripten_bind_btCapsuleShape__isPolyhedral_p0 = Module["_emscripten_bind_btCapsuleShape__isPolyhedral_p0"] = asm["_emscripten_bind_btCapsuleShape__isPolyhedral_p0"];
var _emscripten_bind_btGhostObject__getInterpolationLinearVelocity_p0 = Module["_emscripten_bind_btGhostObject__getInterpolationLinearVelocity_p0"] = asm["_emscripten_bind_btGhostObject__getInterpolationLinearVelocity_p0"];
var _emscripten_bind_btCapsuleShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btCapsuleShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btCapsuleShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btConvexTriangleMeshShape__isConvex_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__isConvex_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__isConvex_p0"];
var _emscripten_bind_btConvexShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btConvexShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btConvexShape__getMarginNonVirtual_p0"];
var _emscripten_bind_btRotationalLimitMotor__set_m_damping_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_damping_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_damping_p1"];
var _emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_collisionFilterGroup_p0 = Module["_emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_collisionFilterGroup_p0"] = asm["_emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_collisionFilterGroup_p0"];
var _emscripten_bind_btSimpleBroadphase__getAabb_p3 = Module["_emscripten_bind_btSimpleBroadphase__getAabb_p3"] = asm["_emscripten_bind_btSimpleBroadphase__getAabb_p3"];
var _emscripten_bind_btSliderConstraint__getRigidBodyB_p0 = Module["_emscripten_bind_btSliderConstraint__getRigidBodyB_p0"] = asm["_emscripten_bind_btSliderConstraint__getRigidBodyB_p0"];
var _emscripten_bind_btPersistentManifold__validContactDistance_p1 = Module["_emscripten_bind_btPersistentManifold__validContactDistance_p1"] = asm["_emscripten_bind_btPersistentManifold__validContactDistance_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getCalculatedTransformA_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getCalculatedTransformA_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getCalculatedTransformA_p0"];
var _emscripten_bind_btManifoldPoint__set_m_localPointB_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_localPointB_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_localPointB_p1"];
var _emscripten_bind_btTypedConstraint__getUserConstraintPtr_p0 = Module["_emscripten_bind_btTypedConstraint__getUserConstraintPtr_p0"] = asm["_emscripten_bind_btTypedConstraint__getUserConstraintPtr_p0"];
var _emscripten_bind_btPoint2PointConstraint__getAppliedImpulse_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getAppliedImpulse_p0"];
var _emscripten_bind_btBroadphaseProxy__isConvex_p1 = Module["_emscripten_bind_btBroadphaseProxy__isConvex_p1"] = asm["_emscripten_bind_btBroadphaseProxy__isConvex_p1"];
var _emscripten_bind_btGhostObject__setActivationState_p1 = Module["_emscripten_bind_btGhostObject__setActivationState_p1"] = asm["_emscripten_bind_btGhostObject__setActivationState_p1"];
var _emscripten_bind_btCapsuleShapeZ__getMarginNV_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getMarginNV_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getMarginNV_p0"];
var _emscripten_bind_btTranslationalLimitMotor__isLimited_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__isLimited_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__isLimited_p1"];
var _emscripten_bind_btDbvtBroadphase__rayTest_p3 = Module["_emscripten_bind_btDbvtBroadphase__rayTest_p3"] = asm["_emscripten_bind_btDbvtBroadphase__rayTest_p3"];
var _emscripten_bind_btDiscreteDynamicsWorld__setDebugDrawer_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setDebugDrawer_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setDebugDrawer_p1"];
var _emscripten_bind_btBroadphasePair__get_m_internalTmpValue_p0 = Module["_emscripten_bind_btBroadphasePair__get_m_internalTmpValue_p0"] = asm["_emscripten_bind_btBroadphasePair__get_m_internalTmpValue_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumVertices_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumVertices_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumVertices_p0"];
var _emscripten_bind_btDbvtProxy__set_stage_p1 = Module["_emscripten_bind_btDbvtProxy__set_stage_p1"] = asm["_emscripten_bind_btDbvtProxy__set_stage_p1"];
var _emscripten_bind_btSliderConstraint__setUserConstraintPtr_p1 = Module["_emscripten_bind_btSliderConstraint__setUserConstraintPtr_p1"] = asm["_emscripten_bind_btSliderConstraint__setUserConstraintPtr_p1"];
var _emscripten_bind_btConvexShape__isPolyhedral_p0 = Module["_emscripten_bind_btConvexShape__isPolyhedral_p0"] = asm["_emscripten_bind_btConvexShape__isPolyhedral_p0"];
var _emscripten_bind_btStridingMeshInterface__serialize_p2 = Module["_emscripten_bind_btStridingMeshInterface__serialize_p2"] = asm["_emscripten_bind_btStridingMeshInterface__serialize_p2"];
var _emscripten_bind_btBvhTriangleMeshShape__isConvex_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__isConvex_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__isConvex_p0"];
var _emscripten_bind_btCollisionObject__btCollisionObject_p0 = Module["_emscripten_bind_btCollisionObject__btCollisionObject_p0"] = asm["_emscripten_bind_btCollisionObject__btCollisionObject_p0"];
var _emscripten_bind_btStridingMeshInterface__getLockedVertexIndexBase_p9 = Module["_emscripten_bind_btStridingMeshInterface__getLockedVertexIndexBase_p9"] = asm["_emscripten_bind_btStridingMeshInterface__getLockedVertexIndexBase_p9"];
var _emscripten_bind_btStridingMeshInterface__getLockedVertexIndexBase_p8 = Module["_emscripten_bind_btStridingMeshInterface__getLockedVertexIndexBase_p8"] = asm["_emscripten_bind_btStridingMeshInterface__getLockedVertexIndexBase_p8"];
var _emscripten_bind_btGeneric6DofConstraint__getObjectType_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getObjectType_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getObjectType_p0"];
var _emscripten_bind_btGeneric6DofConstraint__getRigidBodyA_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getRigidBodyA_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getRigidBodyA_p0"];
var _emscripten_bind_btRaycastVehicle__resetSuspension_p0 = Module["_emscripten_bind_btRaycastVehicle__resetSuspension_p0"] = asm["_emscripten_bind_btRaycastVehicle__resetSuspension_p0"];
var _emscripten_bind_btCapsuleShapeX__getLocalScalingNV_p0 = Module["_emscripten_bind_btCapsuleShapeX__getLocalScalingNV_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getLocalScalingNV_p0"];
var _emscripten_bind_btConeShapeX__isInfinite_p0 = Module["_emscripten_bind_btConeShapeX__isInfinite_p0"] = asm["_emscripten_bind_btConeShapeX__isInfinite_p0"];
var _emscripten_bind_ConcreteContactResultCallback__ConcreteContactResultCallback_p0 = Module["_emscripten_bind_ConcreteContactResultCallback__ConcreteContactResultCallback_p0"] = asm["_emscripten_bind_ConcreteContactResultCallback__ConcreteContactResultCallback_p0"];
var _emscripten_bind_btConeShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btConeShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btConeShape__getLocalScalingNV_p0"];
var _emscripten_bind_btRigidBody__applyGravity_p0 = Module["_emscripten_bind_btRigidBody__applyGravity_p0"] = asm["_emscripten_bind_btRigidBody__applyGravity_p0"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitPointWorld_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitPointWorld_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitPointWorld_p1"];
var _emscripten_bind_btMultiSphereShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btMultiSphereShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btMultiSphereShape__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btCylinderShapeZ__getUserPointer_p0 = Module["_emscripten_bind_btCylinderShapeZ__getUserPointer_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getUserPointer_p0"];
var _emscripten_bind_btRigidBody__getContactProcessingThreshold_p0 = Module["_emscripten_bind_btRigidBody__getContactProcessingThreshold_p0"] = asm["_emscripten_bind_btRigidBody__getContactProcessingThreshold_p0"];
var _emscripten_bind_btSliderConstraint__getSoftnessDirAng_p0 = Module["_emscripten_bind_btSliderConstraint__getSoftnessDirAng_p0"] = asm["_emscripten_bind_btSliderConstraint__getSoftnessDirAng_p0"];
var _emscripten_bind_btConstraintSetting__set_m_damping_p1 = Module["_emscripten_bind_btConstraintSetting__set_m_damping_p1"] = asm["_emscripten_bind_btConstraintSetting__set_m_damping_p1"];
var _emscripten_bind_btPoint2PointConstraint__getUserConstraintPtr_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getUserConstraintPtr_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getUserConstraintPtr_p0"];
var _emscripten_bind_btUniversalConstraint__getCalculatedTransformB_p0 = Module["_emscripten_bind_btUniversalConstraint__getCalculatedTransformB_p0"] = asm["_emscripten_bind_btUniversalConstraint__getCalculatedTransformB_p0"];
var _emscripten_bind_btTypedConstraint__get_m_objectType_p0 = Module["_emscripten_bind_btTypedConstraint__get_m_objectType_p0"] = asm["_emscripten_bind_btTypedConstraint__get_m_objectType_p0"];
var _emscripten_bind_btCompoundShape__calculatePrincipalAxisTransform_p3 = Module["_emscripten_bind_btCompoundShape__calculatePrincipalAxisTransform_p3"] = asm["_emscripten_bind_btCompoundShape__calculatePrincipalAxisTransform_p3"];
var _emscripten_bind_btConvexTriangleMeshShape__isInfinite_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__isInfinite_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__isInfinite_p0"];
var _emscripten_bind_btSliderConstraint__getInfo2_p1 = Module["_emscripten_bind_btSliderConstraint__getInfo2_p1"] = asm["_emscripten_bind_btSliderConstraint__getInfo2_p1"];
var _emscripten_bind_btEmptyShape__getUserPointer_p0 = Module["_emscripten_bind_btEmptyShape__getUserPointer_p0"] = asm["_emscripten_bind_btEmptyShape__getUserPointer_p0"];
var _emscripten_bind_btSliderConstraint__getSoftnessLimLin_p0 = Module["_emscripten_bind_btSliderConstraint__getSoftnessLimLin_p0"] = asm["_emscripten_bind_btSliderConstraint__getSoftnessLimLin_p0"];
var _emscripten_bind_btCollisionObject__internalGetExtensionPointer_p0 = Module["_emscripten_bind_btCollisionObject__internalGetExtensionPointer_p0"] = asm["_emscripten_bind_btCollisionObject__internalGetExtensionPointer_p0"];
var _emscripten_bind_btTriangleMesh__addTriangle_p4 = Module["_emscripten_bind_btTriangleMesh__addTriangle_p4"] = asm["_emscripten_bind_btTriangleMesh__addTriangle_p4"];
var _emscripten_bind_btConeShapeX__getMargin_p0 = Module["_emscripten_bind_btConeShapeX__getMargin_p0"] = asm["_emscripten_bind_btConeShapeX__getMargin_p0"];
var _emscripten_bind_btSphereShape__getLocalScaling_p0 = Module["_emscripten_bind_btSphereShape__getLocalScaling_p0"] = asm["_emscripten_bind_btSphereShape__getLocalScaling_p0"];
var _emscripten_bind_btBU_Simplex1to4__calculateTemporalAabb_p6 = Module["_emscripten_bind_btBU_Simplex1to4__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btBU_Simplex1to4__calculateTemporalAabb_p6"];
var _emscripten_bind_btConvexTriangleMeshShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getLocalScalingNV_p0"];
var _emscripten_bind_btPolyhedralConvexShape__setUserPointer_p1 = Module["_emscripten_bind_btPolyhedralConvexShape__setUserPointer_p1"] = asm["_emscripten_bind_btPolyhedralConvexShape__setUserPointer_p1"];
var _emscripten_bind_btConeShapeZ__getLocalScaling_p0 = Module["_emscripten_bind_btConeShapeZ__getLocalScaling_p0"] = asm["_emscripten_bind_btConeShapeZ__getLocalScaling_p0"];
var _emscripten_bind_btCompoundShape__addChildShape_p2 = Module["_emscripten_bind_btCompoundShape__addChildShape_p2"] = asm["_emscripten_bind_btCompoundShape__addChildShape_p2"];
var _emscripten_bind_btVector3__setZ_p1 = Module["_emscripten_bind_btVector3__setZ_p1"] = asm["_emscripten_bind_btVector3__setZ_p1"];
var _emscripten_bind_btConeTwistConstraint__getParam_p1 = Module["_emscripten_bind_btConeTwistConstraint__getParam_p1"] = asm["_emscripten_bind_btConeTwistConstraint__getParam_p1"];
var _emscripten_bind_btConeTwistConstraint__getParam_p2 = Module["_emscripten_bind_btConeTwistConstraint__getParam_p2"] = asm["_emscripten_bind_btConeTwistConstraint__getParam_p2"];
var _emscripten_bind_btAxisSweep3__quantize_p3 = Module["_emscripten_bind_btAxisSweep3__quantize_p3"] = asm["_emscripten_bind_btAxisSweep3__quantize_p3"];
var _emscripten_bind_btDbvtBroadphase__set_m_fixedleft_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_fixedleft_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_fixedleft_p1"];
var _emscripten_bind_btPoint2PointConstraint__solveConstraintObsolete_p3 = Module["_emscripten_bind_btPoint2PointConstraint__solveConstraintObsolete_p3"] = asm["_emscripten_bind_btPoint2PointConstraint__solveConstraintObsolete_p3"];
var _emscripten_bind_btConvexShape__isConcave_p0 = Module["_emscripten_bind_btConvexShape__isConcave_p0"] = asm["_emscripten_bind_btConvexShape__isConcave_p0"];
var _emscripten_bind_btConvexHullShape__setMargin_p1 = Module["_emscripten_bind_btConvexHullShape__setMargin_p1"] = asm["_emscripten_bind_btConvexHullShape__setMargin_p1"];
var _emscripten_bind_btConvexInternalAabbCachingShape__isConcave_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__isConcave_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__isConcave_p0"];
var _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultStackAllocatorSize_p0 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultStackAllocatorSize_p0"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultStackAllocatorSize_p0"];
var _emscripten_bind_btCapsuleShape__getMarginNV_p0 = Module["_emscripten_bind_btCapsuleShape__getMarginNV_p0"] = asm["_emscripten_bind_btCapsuleShape__getMarginNV_p0"];
var _emscripten_bind_btCollisionWorld__debugDrawObject_p3 = Module["_emscripten_bind_btCollisionWorld__debugDrawObject_p3"] = asm["_emscripten_bind_btCollisionWorld__debugDrawObject_p3"];
var _emscripten_bind_btUniversalConstraint__getDbgDrawSize_p0 = Module["_emscripten_bind_btUniversalConstraint__getDbgDrawSize_p0"] = asm["_emscripten_bind_btUniversalConstraint__getDbgDrawSize_p0"];
var _emscripten_bind_btConvexInternalAabbCachingShape__isInfinite_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__isInfinite_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__isInfinite_p0"];
var _emscripten_bind_btQuaternion____destroy___p0 = Module["_emscripten_bind_btQuaternion____destroy___p0"] = asm["_emscripten_bind_btQuaternion____destroy___p0"];
var _emscripten_bind_btManifoldPoint__set_m_localPointA_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_localPointA_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_localPointA_p1"];
var _emscripten_bind_btSliderConstraint__setDampingLimAng_p1 = Module["_emscripten_bind_btSliderConstraint__setDampingLimAng_p1"] = asm["_emscripten_bind_btSliderConstraint__setDampingLimAng_p1"];
var _emscripten_bind_btTriangleMesh__addTriangle_p3 = Module["_emscripten_bind_btTriangleMesh__addTriangle_p3"] = asm["_emscripten_bind_btTriangleMesh__addTriangle_p3"];
var _emscripten_bind_btTriangleInfoMap__set_m_edgeDistanceThreshold_p1 = Module["_emscripten_bind_btTriangleInfoMap__set_m_edgeDistanceThreshold_p1"] = asm["_emscripten_bind_btTriangleInfoMap__set_m_edgeDistanceThreshold_p1"];
var _emscripten_bind_btConeShapeZ__setLocalScaling_p1 = Module["_emscripten_bind_btConeShapeZ__setLocalScaling_p1"] = asm["_emscripten_bind_btConeShapeZ__setLocalScaling_p1"];
var _emscripten_bind_btUniversalConstraint__getInfo2NonVirtual_p7 = Module["_emscripten_bind_btUniversalConstraint__getInfo2NonVirtual_p7"] = asm["_emscripten_bind_btUniversalConstraint__getInfo2NonVirtual_p7"];
var _emscripten_bind_btBroadphasePair__set_m_internalInfo1_p1 = Module["_emscripten_bind_btBroadphasePair__set_m_internalInfo1_p1"] = asm["_emscripten_bind_btBroadphasePair__set_m_internalInfo1_p1"];
var _emscripten_bind_btUniversalConstraint__getParam_p1 = Module["_emscripten_bind_btUniversalConstraint__getParam_p1"] = asm["_emscripten_bind_btUniversalConstraint__getParam_p1"];
var _emscripten_bind_btUniformScalingShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btUniformScalingShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btUniformScalingShape__getMarginNonVirtual_p0"];
var _emscripten_bind_btConeShape__getMargin_p0 = Module["_emscripten_bind_btConeShape__getMargin_p0"] = asm["_emscripten_bind_btConeShape__getMargin_p0"];
var _emscripten_bind_btMatrix3x3__getEulerZYX_p3 = Module["_emscripten_bind_btMatrix3x3__getEulerZYX_p3"] = asm["_emscripten_bind_btMatrix3x3__getEulerZYX_p3"];
var _emscripten_bind_btWheelInfo__get_m_clientInfo_p0 = Module["_emscripten_bind_btWheelInfo__get_m_clientInfo_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_clientInfo_p0"];
var _emscripten_bind_btMatrix3x3__getEulerZYX_p4 = Module["_emscripten_bind_btMatrix3x3__getEulerZYX_p4"] = asm["_emscripten_bind_btMatrix3x3__getEulerZYX_p4"];
var _emscripten_bind_btTriangleIndexVertexArray____destroy___p0 = Module["_emscripten_bind_btTriangleIndexVertexArray____destroy___p0"] = asm["_emscripten_bind_btTriangleIndexVertexArray____destroy___p0"];
var _emscripten_bind_btHashString__portableStringCompare_p2 = Module["_emscripten_bind_btHashString__portableStringCompare_p2"] = asm["_emscripten_bind_btHashString__portableStringCompare_p2"];
var _emscripten_bind_btCollisionShape__isSoftBody_p0 = Module["_emscripten_bind_btCollisionShape__isSoftBody_p0"] = asm["_emscripten_bind_btCollisionShape__isSoftBody_p0"];
var _emscripten_bind_btCapsuleShapeZ__isNonMoving_p0 = Module["_emscripten_bind_btCapsuleShapeZ__isNonMoving_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__isNonMoving_p0"];
var _emscripten_bind_btSliderConstraint__isEnabled_p0 = Module["_emscripten_bind_btSliderConstraint__isEnabled_p0"] = asm["_emscripten_bind_btSliderConstraint__isEnabled_p0"];
var _emscripten_bind_btConcaveShape__setMargin_p1 = Module["_emscripten_bind_btConcaveShape__setMargin_p1"] = asm["_emscripten_bind_btConcaveShape__setMargin_p1"];
var _emscripten_bind_btCollisionWorld__getDispatcher_p0 = Module["_emscripten_bind_btCollisionWorld__getDispatcher_p0"] = asm["_emscripten_bind_btCollisionWorld__getDispatcher_p0"];
var _emscripten_bind_btTriangleInfoMap__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btTriangleInfoMap__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btTriangleInfoMap__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btCollisionDispatcher__allocateCollisionAlgorithm_p1 = Module["_emscripten_bind_btCollisionDispatcher__allocateCollisionAlgorithm_p1"] = asm["_emscripten_bind_btCollisionDispatcher__allocateCollisionAlgorithm_p1"];
var _emscripten_bind_btConvexInternalAabbCachingShape__getMarginNV_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getMarginNV_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getMarginNV_p0"];
var _emscripten_bind_btUniformScalingShape__getLocalScaling_p0 = Module["_emscripten_bind_btUniformScalingShape__getLocalScaling_p0"] = asm["_emscripten_bind_btUniformScalingShape__getLocalScaling_p0"];
var _emscripten_bind_btTriangleIndexVertexArray__getLockedReadOnlyVertexIndexBase_p9 = Module["_emscripten_bind_btTriangleIndexVertexArray__getLockedReadOnlyVertexIndexBase_p9"] = asm["_emscripten_bind_btTriangleIndexVertexArray__getLockedReadOnlyVertexIndexBase_p9"];
var _emscripten_bind_btPairCachingGhostObject__isKinematicObject_p0 = Module["_emscripten_bind_btPairCachingGhostObject__isKinematicObject_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__isKinematicObject_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__debugDrawWorld_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__debugDrawWorld_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__debugDrawWorld_p0"];
var _emscripten_bind_btContactConstraint__getContactManifold_p0 = Module["_emscripten_bind_btContactConstraint__getContactManifold_p0"] = asm["_emscripten_bind_btContactConstraint__getContactManifold_p0"];
var _emscripten_bind_btTriangleIndexVertexArray__preallocateVertices_p1 = Module["_emscripten_bind_btTriangleIndexVertexArray__preallocateVertices_p1"] = asm["_emscripten_bind_btTriangleIndexVertexArray__preallocateVertices_p1"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionFilterMask_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionFilterMask_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionFilterMask_p0"];
var _emscripten_bind_btBU_Simplex1to4__isConvex_p0 = Module["_emscripten_bind_btBU_Simplex1to4__isConvex_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__isConvex_p0"];
var _emscripten_bind_btMultiSphereShape__getName_p0 = Module["_emscripten_bind_btMultiSphereShape__getName_p0"] = asm["_emscripten_bind_btMultiSphereShape__getName_p0"];
var _emscripten_bind_btStaticPlaneShape__processAllTriangles_p3 = Module["_emscripten_bind_btStaticPlaneShape__processAllTriangles_p3"] = asm["_emscripten_bind_btStaticPlaneShape__processAllTriangles_p3"];
var _emscripten_bind_btBU_Simplex1to4__getIndex_p1 = Module["_emscripten_bind_btBU_Simplex1to4__getIndex_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__getIndex_p1"];
var _emscripten_bind_CProfileNode__Get_Child_p0 = Module["_emscripten_bind_CProfileNode__Get_Child_p0"] = asm["_emscripten_bind_CProfileNode__Get_Child_p0"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_convexFromWorld_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_convexFromWorld_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_convexFromWorld_p1"];
var _emscripten_bind_btCylinderShapeZ__btCylinderShapeZ_p1 = Module["_emscripten_bind_btCylinderShapeZ__btCylinderShapeZ_p1"] = asm["_emscripten_bind_btCylinderShapeZ__btCylinderShapeZ_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__rayTestSingle_p6 = Module["_emscripten_bind_btContinuousDynamicsWorld__rayTestSingle_p6"] = asm["_emscripten_bind_btContinuousDynamicsWorld__rayTestSingle_p6"];
var _emscripten_bind_btConvexHullShape__serialize_p2 = Module["_emscripten_bind_btConvexHullShape__serialize_p2"] = asm["_emscripten_bind_btConvexHullShape__serialize_p2"];
var _emscripten_bind_btSimpleDynamicsWorld__objectQuerySingle_p8 = Module["_emscripten_bind_btSimpleDynamicsWorld__objectQuerySingle_p8"] = asm["_emscripten_bind_btSimpleDynamicsWorld__objectQuerySingle_p8"];
var _emscripten_bind_btManifoldPoint____destroy___p0 = Module["_emscripten_bind_btManifoldPoint____destroy___p0"] = asm["_emscripten_bind_btManifoldPoint____destroy___p0"];
var _emscripten_bind_btConeShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btConeShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btConeShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btQuantizedBvh____destroy___p0 = Module["_emscripten_bind_btQuantizedBvh____destroy___p0"] = asm["_emscripten_bind_btQuantizedBvh____destroy___p0"];
var _emscripten_bind_btPoint2PointConstraint__get_m_useSolveConstraintObsolete_p0 = Module["_emscripten_bind_btPoint2PointConstraint__get_m_useSolveConstraintObsolete_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__get_m_useSolveConstraintObsolete_p0"];
var _emscripten_bind_btRigidBody__getMotionState_p0 = Module["_emscripten_bind_btRigidBody__getMotionState_p0"] = asm["_emscripten_bind_btRigidBody__getMotionState_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__setForceUpdateAllAabbs_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setForceUpdateAllAabbs_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setForceUpdateAllAabbs_p1"];
var _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_maxSuspensionForce_p0 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_maxSuspensionForce_p0"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_maxSuspensionForce_p0"];
var _emscripten_bind_btIndexedMesh__get_m_triangleIndexBase_p0 = Module["_emscripten_bind_btIndexedMesh__get_m_triangleIndexBase_p0"] = asm["_emscripten_bind_btIndexedMesh__get_m_triangleIndexBase_p0"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__getShapeType_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__getShapeType_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__getShapeType_p0"];
var _emscripten_bind_btCollisionObject__hasAnisotropicFriction_p0 = Module["_emscripten_bind_btCollisionObject__hasAnisotropicFriction_p0"] = asm["_emscripten_bind_btCollisionObject__hasAnisotropicFriction_p0"];
var _emscripten_bind_btStridingMeshInterface__unLockVertexBase_p1 = Module["_emscripten_bind_btStridingMeshInterface__unLockVertexBase_p1"] = asm["_emscripten_bind_btStridingMeshInterface__unLockVertexBase_p1"];
var _emscripten_bind_btAxisSweep3__getAabb_p3 = Module["_emscripten_bind_btAxisSweep3__getAabb_p3"] = asm["_emscripten_bind_btAxisSweep3__getAabb_p3"];
var _emscripten_bind_btGeneric6DofSpringConstraint__needsFeedback_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__needsFeedback_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__needsFeedback_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__addConstraint_p2 = Module["_emscripten_bind_btContinuousDynamicsWorld__addConstraint_p2"] = asm["_emscripten_bind_btContinuousDynamicsWorld__addConstraint_p2"];
var _emscripten_bind_btCollisionAlgorithm__getAllContactManifolds_p1 = Module["_emscripten_bind_btCollisionAlgorithm__getAllContactManifolds_p1"] = asm["_emscripten_bind_btCollisionAlgorithm__getAllContactManifolds_p1"];
var _emscripten_bind_btCollisionDispatcher__setNearCallback_p1 = Module["_emscripten_bind_btCollisionDispatcher__setNearCallback_p1"] = asm["_emscripten_bind_btCollisionDispatcher__setNearCallback_p1"];
var _emscripten_bind_btMultiSphereShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btMultiSphereShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btMultiSphereShape__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p4 = Module["_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p4"] = asm["_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p4"];
var _emscripten_bind_btTypedConstraint__solveConstraintObsolete_p3 = Module["_emscripten_bind_btTypedConstraint__solveConstraintObsolete_p3"] = asm["_emscripten_bind_btTypedConstraint__solveConstraintObsolete_p3"];
var _emscripten_bind_btSimpleDynamicsWorld__convexSweepTest_p4 = Module["_emscripten_bind_btSimpleDynamicsWorld__convexSweepTest_p4"] = asm["_emscripten_bind_btSimpleDynamicsWorld__convexSweepTest_p4"];
var _emscripten_bind_btManifoldPoint__set_m_appliedImpulse_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_appliedImpulse_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_appliedImpulse_p1"];
var _emscripten_bind_btGhostObject__getIslandTag_p0 = Module["_emscripten_bind_btGhostObject__getIslandTag_p0"] = asm["_emscripten_bind_btGhostObject__getIslandTag_p0"];
var _emscripten_bind_btCollisionWorld__removeCollisionObject_p1 = Module["_emscripten_bind_btCollisionWorld__removeCollisionObject_p1"] = asm["_emscripten_bind_btCollisionWorld__removeCollisionObject_p1"];
var _emscripten_bind_btCompoundShape__removeChildShape_p1 = Module["_emscripten_bind_btCompoundShape__removeChildShape_p1"] = asm["_emscripten_bind_btCompoundShape__removeChildShape_p1"];
var _emscripten_bind_btUniformScalingShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btUniformScalingShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btUniformScalingShape__localGetSupportingVertex_p1"];
var _emscripten_bind_btContactConstraint__getUserConstraintType_p0 = Module["_emscripten_bind_btContactConstraint__getUserConstraintType_p0"] = asm["_emscripten_bind_btContactConstraint__getUserConstraintType_p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalDamping_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalDamping_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalDamping_p0"];
var _emscripten_bind_btConstraintSetting__get_m_impulseClamp_p0 = Module["_emscripten_bind_btConstraintSetting__get_m_impulseClamp_p0"] = asm["_emscripten_bind_btConstraintSetting__get_m_impulseClamp_p0"];
var _emscripten_bind_btStaticPlaneShape__btStaticPlaneShape_p2 = Module["_emscripten_bind_btStaticPlaneShape__btStaticPlaneShape_p2"] = asm["_emscripten_bind_btStaticPlaneShape__btStaticPlaneShape_p2"];
var _emscripten_bind_btAngularLimit__getHigh_p0 = Module["_emscripten_bind_btAngularLimit__getHigh_p0"] = asm["_emscripten_bind_btAngularLimit__getHigh_p0"];
var _emscripten_bind_btPairCachingGhostObject__getRestitution_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getRestitution_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getRestitution_p0"];
var _emscripten_bind_btMatrix3x3__determinant_p0 = Module["_emscripten_bind_btMatrix3x3__determinant_p0"] = asm["_emscripten_bind_btMatrix3x3__determinant_p0"];
var _emscripten_bind_btRigidBody__getTotalForce_p0 = Module["_emscripten_bind_btRigidBody__getTotalForce_p0"] = asm["_emscripten_bind_btRigidBody__getTotalForce_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__removeConstraint_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__removeConstraint_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__removeConstraint_p1"];
var _emscripten_bind_btCylinderShape__isConvex_p0 = Module["_emscripten_bind_btCylinderShape__isConvex_p0"] = asm["_emscripten_bind_btCylinderShape__isConvex_p0"];
var _emscripten_bind_CProfileNode__CProfileNode_p2 = Module["_emscripten_bind_CProfileNode__CProfileNode_p2"] = asm["_emscripten_bind_CProfileNode__CProfileNode_p2"];
var _emscripten_bind_btSliderConstraint__setTargetAngMotorVelocity_p1 = Module["_emscripten_bind_btSliderConstraint__setTargetAngMotorVelocity_p1"] = asm["_emscripten_bind_btSliderConstraint__setTargetAngMotorVelocity_p1"];
var _emscripten_bind_btSimpleBroadphaseProxy__set_m_collisionFilterMask_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__set_m_collisionFilterMask_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__set_m_collisionFilterMask_p1"];
var _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionStiffness_p1 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionStiffness_p1"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionStiffness_p1"];
var _emscripten_bind_btManifoldResult__getBody0Internal_p0 = Module["_emscripten_bind_btManifoldResult__getBody0Internal_p0"] = asm["_emscripten_bind_btManifoldResult__getBody0Internal_p0"];
var _emscripten_bind_btConeShapeX__isCompound_p0 = Module["_emscripten_bind_btConeShapeX__isCompound_p0"] = asm["_emscripten_bind_btConeShapeX__isCompound_p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalLinearDampingThresholdSqr_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalLinearDampingThresholdSqr_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalLinearDampingThresholdSqr_p0"];
var _emscripten_bind_btHingeConstraint__btHingeConstraint_p3 = Module["_emscripten_bind_btHingeConstraint__btHingeConstraint_p3"] = asm["_emscripten_bind_btHingeConstraint__btHingeConstraint_p3"];
var _emscripten_bind_btBoxShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btBoxShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btBoxShape__calculateLocalInertia_p2"];
var _emscripten_bind_btSphereShape__getRadius_p0 = Module["_emscripten_bind_btSphereShape__getRadius_p0"] = asm["_emscripten_bind_btSphereShape__getRadius_p0"];
var _emscripten_bind_btConvexInternalAabbCachingShape____destroy___p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape____destroy___p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape____destroy___p0"];
var _emscripten_bind_btUniversalConstraint__setBreakingImpulseThreshold_p1 = Module["_emscripten_bind_btUniversalConstraint__setBreakingImpulseThreshold_p1"] = asm["_emscripten_bind_btUniversalConstraint__setBreakingImpulseThreshold_p1"];
var _emscripten_bind_btHingeConstraint__getHingeAngle_p0 = Module["_emscripten_bind_btHingeConstraint__getHingeAngle_p0"] = asm["_emscripten_bind_btHingeConstraint__getHingeAngle_p0"];
var _emscripten_bind_btHingeConstraint__getHingeAngle_p2 = Module["_emscripten_bind_btHingeConstraint__getHingeAngle_p2"] = asm["_emscripten_bind_btHingeConstraint__getHingeAngle_p2"];
var _emscripten_bind_btPolyhedralConvexShape__setLocalScaling_p1 = Module["_emscripten_bind_btPolyhedralConvexShape__setLocalScaling_p1"] = asm["_emscripten_bind_btPolyhedralConvexShape__setLocalScaling_p1"];
var _emscripten_bind_btConeTwistConstraint__getBreakingImpulseThreshold_p0 = Module["_emscripten_bind_btConeTwistConstraint__getBreakingImpulseThreshold_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getBreakingImpulseThreshold_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__addConstraint_p2 = Module["_emscripten_bind_btSimpleDynamicsWorld__addConstraint_p2"] = asm["_emscripten_bind_btSimpleDynamicsWorld__addConstraint_p2"];
var _emscripten_bind_btOptimizedBvh__quantize_p3 = Module["_emscripten_bind_btOptimizedBvh__quantize_p3"] = asm["_emscripten_bind_btOptimizedBvh__quantize_p3"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_friction_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_friction_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_friction_p1"];
var _emscripten_bind_btAngularLimit__test_p1 = Module["_emscripten_bind_btAngularLimit__test_p1"] = asm["_emscripten_bind_btAngularLimit__test_p1"];
var _emscripten_bind_btContactConstraint__solveConstraintObsolete_p3 = Module["_emscripten_bind_btContactConstraint__solveConstraintObsolete_p3"] = asm["_emscripten_bind_btContactConstraint__solveConstraintObsolete_p3"];
var _emscripten_bind_btSimpleDynamicsWorld__getNumCollisionObjects_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getNumCollisionObjects_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getNumCollisionObjects_p0"];
var _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionCompression_p0 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionCompression_p0"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionCompression_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__setDebugDrawer_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__setDebugDrawer_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setDebugDrawer_p1"];
var _emscripten_bind_btUniversalConstraint__solveConstraintObsolete_p3 = Module["_emscripten_bind_btUniversalConstraint__solveConstraintObsolete_p3"] = asm["_emscripten_bind_btUniversalConstraint__solveConstraintObsolete_p3"];
var _emscripten_bind_btDynamicsWorld__setGravity_p1 = Module["_emscripten_bind_btDynamicsWorld__setGravity_p1"] = asm["_emscripten_bind_btDynamicsWorld__setGravity_p1"];
var _emscripten_bind_btHinge2Constraint__getRelativePivotPosition_p1 = Module["_emscripten_bind_btHinge2Constraint__getRelativePivotPosition_p1"] = asm["_emscripten_bind_btHinge2Constraint__getRelativePivotPosition_p1"];
var _emscripten_bind_btSimpleDynamicsWorld__getBroadphase_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getBroadphase_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getBroadphase_p0"];
var _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_hitNormalInWorld_p0 = Module["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_hitNormalInWorld_p0"] = asm["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_hitNormalInWorld_p0"];
var _emscripten_bind_btMultiSphereShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btMultiSphereShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btMultiSphereShape__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btIndexedMesh__set_m_triangleIndexBase_p1 = Module["_emscripten_bind_btIndexedMesh__set_m_triangleIndexBase_p1"] = asm["_emscripten_bind_btIndexedMesh__set_m_triangleIndexBase_p1"];
var _emscripten_bind_btSliderConstraint__setSoftnessLimLin_p1 = Module["_emscripten_bind_btSliderConstraint__setSoftnessLimLin_p1"] = asm["_emscripten_bind_btSliderConstraint__setSoftnessLimLin_p1"];
var _emscripten_bind_btCollisionShape__getUserPointer_p0 = Module["_emscripten_bind_btCollisionShape__getUserPointer_p0"] = asm["_emscripten_bind_btCollisionShape__getUserPointer_p0"];
var _emscripten_bind_btRotationalLimitMotor__set_m_targetVelocity_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_targetVelocity_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_targetVelocity_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__set_m_objectType_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__set_m_objectType_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__set_m_objectType_p1"];
var _emscripten_bind_btUniversalConstraint__setParam_p3 = Module["_emscripten_bind_btUniversalConstraint__setParam_p3"] = asm["_emscripten_bind_btUniversalConstraint__setParam_p3"];
var _emscripten_bind_btUniversalConstraint__setParam_p2 = Module["_emscripten_bind_btUniversalConstraint__setParam_p2"] = asm["_emscripten_bind_btUniversalConstraint__setParam_p2"];
var _emscripten_bind_btGeneric6DofConstraint__setUserConstraintType_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setUserConstraintType_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setUserConstraintType_p1"];
var _emscripten_bind_btManifoldResult__setPersistentManifold_p1 = Module["_emscripten_bind_btManifoldResult__setPersistentManifold_p1"] = asm["_emscripten_bind_btManifoldResult__setPersistentManifold_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__updateVehicles_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__updateVehicles_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__updateVehicles_p1"];
var _emscripten_bind_btStaticPlaneShape__getPlaneNormal_p0 = Module["_emscripten_bind_btStaticPlaneShape__getPlaneNormal_p0"] = asm["_emscripten_bind_btStaticPlaneShape__getPlaneNormal_p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_mass_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_mass_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_mass_p0"];
var _emscripten_bind_btDynamicsWorld__synchronizeMotionStates_p0 = Module["_emscripten_bind_btDynamicsWorld__synchronizeMotionStates_p0"] = asm["_emscripten_bind_btDynamicsWorld__synchronizeMotionStates_p0"];
var _emscripten_bind_btGhostObject__isStaticOrKinematicObject_p0 = Module["_emscripten_bind_btGhostObject__isStaticOrKinematicObject_p0"] = asm["_emscripten_bind_btGhostObject__isStaticOrKinematicObject_p0"];
var _emscripten_bind_btJacobianEntry__btJacobianEntry_p0 = Module["_emscripten_bind_btJacobianEntry__btJacobianEntry_p0"] = asm["_emscripten_bind_btJacobianEntry__btJacobianEntry_p0"];
var _emscripten_bind_btWheelInfo__get_m_suspensionStiffness_p0 = Module["_emscripten_bind_btWheelInfo__get_m_suspensionStiffness_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_suspensionStiffness_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__btConvexTriangleMeshShape_p2 = Module["_emscripten_bind_btConvexTriangleMeshShape__btConvexTriangleMeshShape_p2"] = asm["_emscripten_bind_btConvexTriangleMeshShape__btConvexTriangleMeshShape_p2"];
var _emscripten_bind_btConvexTriangleMeshShape__btConvexTriangleMeshShape_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__btConvexTriangleMeshShape_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__btConvexTriangleMeshShape_p1"];
var _emscripten_bind_btConeShapeZ__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btConeShapeZ__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btConeShapeZ__setImplicitShapeDimensions_p1"];
var _emscripten_bind_btSliderConstraint__getAppliedImpulse_p0 = Module["_emscripten_bind_btSliderConstraint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btSliderConstraint__getAppliedImpulse_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__serialize_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__serialize_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__serialize_p1"];
var _emscripten_bind_btConvexInternalShape__getAabbSlow_p3 = Module["_emscripten_bind_btConvexInternalShape__getAabbSlow_p3"] = asm["_emscripten_bind_btConvexInternalShape__getAabbSlow_p3"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getAngularLowerLimit_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getAngularLowerLimit_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getAngularLowerLimit_p1"];
var _emscripten_bind_btCapsuleShapeZ__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btCapsuleShapeZ__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btCapsuleShapeZ__getContactBreakingThreshold_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__setSynchronizeAllMotionStates_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setSynchronizeAllMotionStates_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setSynchronizeAllMotionStates_p1"];
var _emscripten_bind_btTriangleIndexVertexArray__getIndexedMeshArray_p0 = Module["_emscripten_bind_btTriangleIndexVertexArray__getIndexedMeshArray_p0"] = asm["_emscripten_bind_btTriangleIndexVertexArray__getIndexedMeshArray_p0"];
var _emscripten_bind_btClock__op_set_p1 = Module["_emscripten_bind_btClock__op_set_p1"] = asm["_emscripten_bind_btClock__op_set_p1"];
var _emscripten_bind_btStaticPlaneShape__isNonMoving_p0 = Module["_emscripten_bind_btStaticPlaneShape__isNonMoving_p0"] = asm["_emscripten_bind_btStaticPlaneShape__isNonMoving_p0"];
var _emscripten_bind_btPolyhedralConvexShape__getMargin_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getMargin_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getMargin_p0"];
var _emscripten_bind_btDbvtProxy__get_m_collisionFilterMask_p0 = Module["_emscripten_bind_btDbvtProxy__get_m_collisionFilterMask_p0"] = asm["_emscripten_bind_btDbvtProxy__get_m_collisionFilterMask_p0"];
var _emscripten_bind_btTriangleIndexVertexArray__calculateAabbBruteForce_p2 = Module["_emscripten_bind_btTriangleIndexVertexArray__calculateAabbBruteForce_p2"] = asm["_emscripten_bind_btTriangleIndexVertexArray__calculateAabbBruteForce_p2"];
var _emscripten_bind_btGeneric6DofSpringConstraint__solveConstraintObsolete_p3 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__solveConstraintObsolete_p3"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__solveConstraintObsolete_p3"];
var _emscripten_bind_btConvexHullShape__getVertex_p2 = Module["_emscripten_bind_btConvexHullShape__getVertex_p2"] = asm["_emscripten_bind_btConvexHullShape__getVertex_p2"];
var _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultMaxCollisionAlgorithmPoolSize_p0 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultMaxCollisionAlgorithmPoolSize_p0"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultMaxCollisionAlgorithmPoolSize_p0"];
var _emscripten_bind_btDefaultMotionState__set_m_graphicsWorldTrans_p1 = Module["_emscripten_bind_btDefaultMotionState__set_m_graphicsWorldTrans_p1"] = asm["_emscripten_bind_btDefaultMotionState__set_m_graphicsWorldTrans_p1"];
var _emscripten_bind_btHashString____destroy___p0 = Module["_emscripten_bind_btHashString____destroy___p0"] = asm["_emscripten_bind_btHashString____destroy___p0"];
var _emscripten_bind_btBU_Simplex1to4__isConvex2d_p0 = Module["_emscripten_bind_btBU_Simplex1to4__isConvex2d_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__isConvex2d_p0"];
var _emscripten_bind_btGhostObject__addOverlappingObjectInternal_p1 = Module["_emscripten_bind_btGhostObject__addOverlappingObjectInternal_p1"] = asm["_emscripten_bind_btGhostObject__addOverlappingObjectInternal_p1"];
var _emscripten_bind_btGhostObject__addOverlappingObjectInternal_p2 = Module["_emscripten_bind_btGhostObject__addOverlappingObjectInternal_p2"] = asm["_emscripten_bind_btGhostObject__addOverlappingObjectInternal_p2"];
var _emscripten_bind_btRaycastVehicle__updateFriction_p1 = Module["_emscripten_bind_btRaycastVehicle__updateFriction_p1"] = asm["_emscripten_bind_btRaycastVehicle__updateFriction_p1"];
var _emscripten_bind_btUniformScalingShape__isPolyhedral_p0 = Module["_emscripten_bind_btUniformScalingShape__isPolyhedral_p0"] = asm["_emscripten_bind_btUniformScalingShape__isPolyhedral_p0"];
var _emscripten_bind_btTypedObject__btTypedObject_p1 = Module["_emscripten_bind_btTypedObject__btTypedObject_p1"] = asm["_emscripten_bind_btTypedObject__btTypedObject_p1"];
var _emscripten_bind_btDbvtBroadphase__aabbTest_p3 = Module["_emscripten_bind_btDbvtBroadphase__aabbTest_p3"] = asm["_emscripten_bind_btDbvtBroadphase__aabbTest_p3"];
var _emscripten_bind_btCylinderShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btCylinderShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btCylinderShape__localGetSupportingVertex_p1"];
var _emscripten_bind_btCollisionShape__isConvex_p0 = Module["_emscripten_bind_btCollisionShape__isConvex_p0"] = asm["_emscripten_bind_btCollisionShape__isConvex_p0"];
var _emscripten_bind_btGeneric6DofConstraint__getInfo2_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getInfo2_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getInfo2_p1"];
var _emscripten_bind_btCollisionObject__setCcdSweptSphereRadius_p1 = Module["_emscripten_bind_btCollisionObject__setCcdSweptSphereRadius_p1"] = asm["_emscripten_bind_btCollisionObject__setCcdSweptSphereRadius_p1"];
var _emscripten_bind_btCapsuleShapeX__getBoundingSphere_p2 = Module["_emscripten_bind_btCapsuleShapeX__getBoundingSphere_p2"] = asm["_emscripten_bind_btCapsuleShapeX__getBoundingSphere_p2"];
var _emscripten_bind_btOverlappingPairCache__getNumOverlappingPairs_p0 = Module["_emscripten_bind_btOverlappingPairCache__getNumOverlappingPairs_p0"] = asm["_emscripten_bind_btOverlappingPairCache__getNumOverlappingPairs_p0"];
var _emscripten_bind_btJacobianEntry__btJacobianEntry_p5 = Module["_emscripten_bind_btJacobianEntry__btJacobianEntry_p5"] = asm["_emscripten_bind_btJacobianEntry__btJacobianEntry_p5"];
var _emscripten_bind_btTriangleIndexVertexArray__getNumSubParts_p0 = Module["_emscripten_bind_btTriangleIndexVertexArray__getNumSubParts_p0"] = asm["_emscripten_bind_btTriangleIndexVertexArray__getNumSubParts_p0"];
var _emscripten_bind_btCapsuleShapeZ__getAabb_p3 = Module["_emscripten_bind_btCapsuleShapeZ__getAabb_p3"] = asm["_emscripten_bind_btCapsuleShapeZ__getAabb_p3"];
var _emscripten_bind_btCylinderShapeX__getUserPointer_p0 = Module["_emscripten_bind_btCylinderShapeX__getUserPointer_p0"] = asm["_emscripten_bind_btCylinderShapeX__getUserPointer_p0"];
var _emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p3 = Module["_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p3"] = asm["_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p3"];
var _emscripten_bind_btContactConstraint__getAppliedImpulse_p0 = Module["_emscripten_bind_btContactConstraint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btContactConstraint__getAppliedImpulse_p0"];
var _emscripten_bind_btCylinderShapeX__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btCylinderShapeX__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btCylinderShapeX__localGetSupportingVertexWithoutMargin_p1"];
var _memmove = Module["_memmove"] = asm["_memmove"];
var _emscripten_bind_btCollisionDispatcher__clearManifold_p1 = Module["_emscripten_bind_btCollisionDispatcher__clearManifold_p1"] = asm["_emscripten_bind_btCollisionDispatcher__clearManifold_p1"];
var _emscripten_bind_btManifoldResult__setShapeIdentifiersA_p2 = Module["_emscripten_bind_btManifoldResult__setShapeIdentifiersA_p2"] = asm["_emscripten_bind_btManifoldResult__setShapeIdentifiersA_p2"];
var _emscripten_bind_btIndexedMesh__get_m_vertexType_p0 = Module["_emscripten_bind_btIndexedMesh__get_m_vertexType_p0"] = asm["_emscripten_bind_btIndexedMesh__get_m_vertexType_p0"];
var _emscripten_bind_btConeTwistConstraint__getFrameOffsetA_p0 = Module["_emscripten_bind_btConeTwistConstraint__getFrameOffsetA_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getFrameOffsetA_p0"];
var _emscripten_bind_btManifoldPoint__get_m_localPointA_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_localPointA_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_localPointA_p0"];
var _emscripten_bind_btMatrix3x3__op_get_p1 = Module["_emscripten_bind_btMatrix3x3__op_get_p1"] = asm["_emscripten_bind_btMatrix3x3__op_get_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__debugDrawObject_p3 = Module["_emscripten_bind_btContinuousDynamicsWorld__debugDrawObject_p3"] = asm["_emscripten_bind_btContinuousDynamicsWorld__debugDrawObject_p3"];
var _emscripten_bind_btMultiSphereShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btMultiSphereShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btMultiSphereShape__calculateLocalInertia_p2"];
var _emscripten_bind_btTypedConstraint__getUserConstraintId_p0 = Module["_emscripten_bind_btTypedConstraint__getUserConstraintId_p0"] = asm["_emscripten_bind_btTypedConstraint__getUserConstraintId_p0"];
var _emscripten_bind_btQuantizedBvh__btQuantizedBvh_p0 = Module["_emscripten_bind_btQuantizedBvh__btQuantizedBvh_p0"] = asm["_emscripten_bind_btQuantizedBvh__btQuantizedBvh_p0"];
var _emscripten_bind_btBU_Simplex1to4__getMargin_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getMargin_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getMargin_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__getMarginNV_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getMarginNV_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getMarginNV_p0"];
var _emscripten_bind_CProfileNode__CleanupMemory_p0 = Module["_emscripten_bind_CProfileNode__CleanupMemory_p0"] = asm["_emscripten_bind_CProfileNode__CleanupMemory_p0"];
var _emscripten_bind_btRigidBody__getLinearFactor_p0 = Module["_emscripten_bind_btRigidBody__getLinearFactor_p0"] = asm["_emscripten_bind_btRigidBody__getLinearFactor_p0"];
var _emscripten_bind_btQuadWord__btQuadWord_p3 = Module["_emscripten_bind_btQuadWord__btQuadWord_p3"] = asm["_emscripten_bind_btQuadWord__btQuadWord_p3"];
var _emscripten_bind_btPoint2PointConstraint__getRigidBodyA_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getRigidBodyA_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getRigidBodyA_p0"];
var _emscripten_bind_btBU_Simplex1to4__isInside_p2 = Module["_emscripten_bind_btBU_Simplex1to4__isInside_p2"] = asm["_emscripten_bind_btBU_Simplex1to4__isInside_p2"];
var _emscripten_bind_btConvexHullShape____destroy___p0 = Module["_emscripten_bind_btConvexHullShape____destroy___p0"] = asm["_emscripten_bind_btConvexHullShape____destroy___p0"];
var _emscripten_bind_btTranslationalLimitMotor__set_m_targetVelocity_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_targetVelocity_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_targetVelocity_p1"];
var _emscripten_bind_btManifoldPoint__get_m_appliedImpulse_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_appliedImpulse_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_appliedImpulse_p0"];
var _emscripten_bind_btWheelInfo__get_m_maxSuspensionForce_p0 = Module["_emscripten_bind_btWheelInfo__get_m_maxSuspensionForce_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_maxSuspensionForce_p0"];
var _emscripten_bind_btConcaveShape__serialize_p2 = Module["_emscripten_bind_btConcaveShape__serialize_p2"] = asm["_emscripten_bind_btConcaveShape__serialize_p2"];
var _emscripten_bind_btDiscreteDynamicsWorld__addCharacter_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__addCharacter_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__addCharacter_p1"];
var _emscripten_bind_btTypedObject__getObjectType_p0 = Module["_emscripten_bind_btTypedObject__getObjectType_p0"] = asm["_emscripten_bind_btTypedObject__getObjectType_p0"];
var _emscripten_bind_btRigidBody__get_m_contactSolverType_p0 = Module["_emscripten_bind_btRigidBody__get_m_contactSolverType_p0"] = asm["_emscripten_bind_btRigidBody__get_m_contactSolverType_p0"];
var _emscripten_bind_btBvhSubtreeInfo__set_m_subtreeSize_p1 = Module["_emscripten_bind_btBvhSubtreeInfo__set_m_subtreeSize_p1"] = asm["_emscripten_bind_btBvhSubtreeInfo__set_m_subtreeSize_p1"];
var _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_frictionSlip_p1 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_frictionSlip_p1"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_frictionSlip_p1"];
var _emscripten_bind_btCollisionShape__serialize_p2 = Module["_emscripten_bind_btCollisionShape__serialize_p2"] = asm["_emscripten_bind_btCollisionShape__serialize_p2"];
var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_rayToWorld_p0 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_rayToWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_rayToWorld_p0"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitCollisionObject_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitCollisionObject_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitCollisionObject_p1"];
var _emscripten_bind_btConcaveShape__isPolyhedral_p0 = Module["_emscripten_bind_btConcaveShape__isPolyhedral_p0"] = asm["_emscripten_bind_btConcaveShape__isPolyhedral_p0"];
var _emscripten_bind_btConeShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btConeShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btConeShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btCollisionObject__setInterpolationLinearVelocity_p1 = Module["_emscripten_bind_btCollisionObject__setInterpolationLinearVelocity_p1"] = asm["_emscripten_bind_btCollisionObject__setInterpolationLinearVelocity_p1"];
var _emscripten_bind_btPairCachingGhostObject__getContactProcessingThreshold_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getContactProcessingThreshold_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getContactProcessingThreshold_p0"];
var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback____destroy___p0 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback____destroy___p0"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback____destroy___p0"];
var _emscripten_bind_btSliderConstraint__setDampingOrthoAng_p1 = Module["_emscripten_bind_btSliderConstraint__setDampingOrthoAng_p1"] = asm["_emscripten_bind_btSliderConstraint__setDampingOrthoAng_p1"];
var _emscripten_bind_btSliderConstraint__setMaxAngMotorForce_p1 = Module["_emscripten_bind_btSliderConstraint__setMaxAngMotorForce_p1"] = asm["_emscripten_bind_btSliderConstraint__setMaxAngMotorForce_p1"];
var _emscripten_bind_btBU_Simplex1to4__getVertex_p2 = Module["_emscripten_bind_btBU_Simplex1to4__getVertex_p2"] = asm["_emscripten_bind_btBU_Simplex1to4__getVertex_p2"];
var _emscripten_bind_btCylinderShape__isInfinite_p0 = Module["_emscripten_bind_btCylinderShape__isInfinite_p0"] = asm["_emscripten_bind_btCylinderShape__isInfinite_p0"];
var _emscripten_bind_bt32BitAxisSweep3__getAabb_p3 = Module["_emscripten_bind_bt32BitAxisSweep3__getAabb_p3"] = asm["_emscripten_bind_bt32BitAxisSweep3__getAabb_p3"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setParam_p3 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setParam_p3"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setParam_p3"];
var _emscripten_bind_btCollisionObject__serialize_p2 = Module["_emscripten_bind_btCollisionObject__serialize_p2"] = asm["_emscripten_bind_btCollisionObject__serialize_p2"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btVector4__safeNormalize_p0 = Module["_emscripten_bind_btVector4__safeNormalize_p0"] = asm["_emscripten_bind_btVector4__safeNormalize_p0"];
var _emscripten_bind_btCapsuleShapeX__getUpAxis_p0 = Module["_emscripten_bind_btCapsuleShapeX__getUpAxis_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getUpAxis_p0"];
var _emscripten_bind_btTriangleMesh__findOrAddVertex_p2 = Module["_emscripten_bind_btTriangleMesh__findOrAddVertex_p2"] = asm["_emscripten_bind_btTriangleMesh__findOrAddVertex_p2"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setParam_p2 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setParam_p2"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setParam_p2"];
var _emscripten_bind_btHeightfieldTerrainShape__processAllTriangles_p3 = Module["_emscripten_bind_btHeightfieldTerrainShape__processAllTriangles_p3"] = asm["_emscripten_bind_btHeightfieldTerrainShape__processAllTriangles_p3"];
var _emscripten_bind_btHinge2Constraint__get_m_objectType_p0 = Module["_emscripten_bind_btHinge2Constraint__get_m_objectType_p0"] = asm["_emscripten_bind_btHinge2Constraint__get_m_objectType_p0"];
var _emscripten_bind_btDiscreteCollisionDetectorInterface__Result__addContactPoint_p3 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__Result__addContactPoint_p3"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__Result__addContactPoint_p3"];
var _emscripten_bind_btConvexShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btConvexShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btConvexShape__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btCollisionWorld__LocalRayResult__get_m_localShapeInfo_p0 = Module["_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_localShapeInfo_p0"] = asm["_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_localShapeInfo_p0"];
var _emscripten_bind_btPoint2PointConstraint__getRigidBodyB_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getRigidBodyB_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getRigidBodyB_p0"];
var _emscripten_bind_btPairCachingGhostObject__setDeactivationTime_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setDeactivationTime_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setDeactivationTime_p1"];
var _emscripten_bind_btBroadphaseProxy__set_m_multiSapParentProxy_p1 = Module["_emscripten_bind_btBroadphaseProxy__set_m_multiSapParentProxy_p1"] = asm["_emscripten_bind_btBroadphaseProxy__set_m_multiSapParentProxy_p1"];
var _emscripten_bind_btBvhTriangleMeshShape____destroy___p0 = Module["_emscripten_bind_btBvhTriangleMeshShape____destroy___p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape____destroy___p0"];
var _emscripten_bind_btManifoldPoint__get_m_partId1_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_partId1_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_partId1_p0"];
var _emscripten_bind_btIndexedMesh__get_m_triangleIndexStride_p0 = Module["_emscripten_bind_btIndexedMesh__get_m_triangleIndexStride_p0"] = asm["_emscripten_bind_btIndexedMesh__get_m_triangleIndexStride_p0"];
var _emscripten_bind_btRigidBody__setCcdSweptSphereRadius_p1 = Module["_emscripten_bind_btRigidBody__setCcdSweptSphereRadius_p1"] = asm["_emscripten_bind_btRigidBody__setCcdSweptSphereRadius_p1"];
var _emscripten_bind_btCylinderShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btCylinderShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btCylinderShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btCylinderShape__isConvex2d_p0 = Module["_emscripten_bind_btCylinderShape__isConvex2d_p0"] = asm["_emscripten_bind_btCylinderShape__isConvex2d_p0"];
var _emscripten_bind_btDynamicsWorld__getSolverInfo_p0 = Module["_emscripten_bind_btDynamicsWorld__getSolverInfo_p0"] = asm["_emscripten_bind_btDynamicsWorld__getSolverInfo_p0"];
var _emscripten_bind_btPairCachingGhostObject____destroy___p0 = Module["_emscripten_bind_btPairCachingGhostObject____destroy___p0"] = asm["_emscripten_bind_btPairCachingGhostObject____destroy___p0"];
var _emscripten_bind_btGeneric6DofConstraint____destroy___p0 = Module["_emscripten_bind_btGeneric6DofConstraint____destroy___p0"] = asm["_emscripten_bind_btGeneric6DofConstraint____destroy___p0"];
var _emscripten_bind_btCylinderShape__isConcave_p0 = Module["_emscripten_bind_btCylinderShape__isConcave_p0"] = asm["_emscripten_bind_btCylinderShape__isConcave_p0"];
var _emscripten_bind_btRigidBody__setRestitution_p1 = Module["_emscripten_bind_btRigidBody__setRestitution_p1"] = asm["_emscripten_bind_btRigidBody__setRestitution_p1"];
var _emscripten_bind_btCylinderShapeZ__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btCylinderShapeZ__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btCylinderShapeZ__setImplicitShapeDimensions_p1"];
var _emscripten_bind_btConvexTriangleMeshShape__getPlane_p3 = Module["_emscripten_bind_btConvexTriangleMeshShape__getPlane_p3"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getPlane_p3"];
var _emscripten_bind_btConeShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btConeShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btConeShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _emscripten_bind_btCylinderShapeX__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btCylinderShapeX__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btCylinderShapeX__getImplicitShapeDimensions_p0"];
var _emscripten_bind_ConcreteContactResultCallback__set_m_collisionFilterMask_p1 = Module["_emscripten_bind_ConcreteContactResultCallback__set_m_collisionFilterMask_p1"] = asm["_emscripten_bind_ConcreteContactResultCallback__set_m_collisionFilterMask_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__getDispatcher_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getDispatcher_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getDispatcher_p0"];
var _emscripten_bind_btPoint2PointConstraint__enableFeedback_p1 = Module["_emscripten_bind_btPoint2PointConstraint__enableFeedback_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__enableFeedback_p1"];
var _emscripten_bind_btCylinderShapeZ__isConvex2d_p0 = Module["_emscripten_bind_btCylinderShapeZ__isConvex2d_p0"] = asm["_emscripten_bind_btCylinderShapeZ__isConvex2d_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _emscripten_bind_btVector3__getX_p0 = Module["_emscripten_bind_btVector3__getX_p0"] = asm["_emscripten_bind_btVector3__getX_p0"];
var _emscripten_bind_ConcreteContactResultCallback__get_m_collisionFilterGroup_p0 = Module["_emscripten_bind_ConcreteContactResultCallback__get_m_collisionFilterGroup_p0"] = asm["_emscripten_bind_ConcreteContactResultCallback__get_m_collisionFilterGroup_p0"];
var _emscripten_bind_btPairCachingGhostObject__getInterpolationAngularVelocity_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getInterpolationAngularVelocity_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getInterpolationAngularVelocity_p0"];
var _emscripten_bind_btStridingMeshInterface__setScaling_p1 = Module["_emscripten_bind_btStridingMeshInterface__setScaling_p1"] = asm["_emscripten_bind_btStridingMeshInterface__setScaling_p1"];
var _emscripten_bind_btCapsuleShapeX__getShapeType_p0 = Module["_emscripten_bind_btCapsuleShapeX__getShapeType_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getShapeType_p0"];
var _emscripten_bind_btUniformScalingShape__isSoftBody_p0 = Module["_emscripten_bind_btUniformScalingShape__isSoftBody_p0"] = asm["_emscripten_bind_btUniformScalingShape__isSoftBody_p0"];
var _emscripten_bind_btDynamicsWorld__addVehicle_p1 = Module["_emscripten_bind_btDynamicsWorld__addVehicle_p1"] = asm["_emscripten_bind_btDynamicsWorld__addVehicle_p1"];
var _emscripten_bind_btGhostObject__hasAnisotropicFriction_p0 = Module["_emscripten_bind_btGhostObject__hasAnisotropicFriction_p0"] = asm["_emscripten_bind_btGhostObject__hasAnisotropicFriction_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getUserPointer_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getUserPointer_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getUserPointer_p0"];
var _emscripten_bind_btAxisSweep3__getBroadphaseAabb_p2 = Module["_emscripten_bind_btAxisSweep3__getBroadphaseAabb_p2"] = asm["_emscripten_bind_btAxisSweep3__getBroadphaseAabb_p2"];
var _emscripten_bind_btDbvtProxy__get_m_collisionFilterGroup_p0 = Module["_emscripten_bind_btDbvtProxy__get_m_collisionFilterGroup_p0"] = asm["_emscripten_bind_btDbvtProxy__get_m_collisionFilterGroup_p0"];
var _emscripten_bind_btCylinderShapeZ____destroy___p0 = Module["_emscripten_bind_btCylinderShapeZ____destroy___p0"] = asm["_emscripten_bind_btCylinderShapeZ____destroy___p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__getConstraintSolver_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getConstraintSolver_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getConstraintSolver_p0"];
var _emscripten_bind_btCapsuleShapeX__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btCapsuleShapeX__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getImplicitShapeDimensions_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btCapsuleShapeZ__calculateTemporalAabb_p6 = Module["_emscripten_bind_btCapsuleShapeZ__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btCapsuleShapeZ__calculateTemporalAabb_p6"];
var _emscripten_bind_btUniformScalingShape__getChildShape_p0 = Module["_emscripten_bind_btUniformScalingShape__getChildShape_p0"] = asm["_emscripten_bind_btUniformScalingShape__getChildShape_p0"];
var _emscripten_bind_btTriangleMesh__setScaling_p1 = Module["_emscripten_bind_btTriangleMesh__setScaling_p1"] = asm["_emscripten_bind_btTriangleMesh__setScaling_p1"];
var _emscripten_bind_btWheelInfo__set_m_rollInfluence_p1 = Module["_emscripten_bind_btWheelInfo__set_m_rollInfluence_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_rollInfluence_p1"];
var _emscripten_bind_btSimpleDynamicsWorld__getDispatchInfo_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getDispatchInfo_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getDispatchInfo_p0"];
var _emscripten_bind_btVector4__setValue_p4 = Module["_emscripten_bind_btVector4__setValue_p4"] = asm["_emscripten_bind_btVector4__setValue_p4"];
var _emscripten_bind_btPoint2PointConstraint__btPoint2PointConstraint_p2 = Module["_emscripten_bind_btPoint2PointConstraint__btPoint2PointConstraint_p2"] = asm["_emscripten_bind_btPoint2PointConstraint__btPoint2PointConstraint_p2"];
var _emscripten_bind_btBU_Simplex1to4__serialize_p2 = Module["_emscripten_bind_btBU_Simplex1to4__serialize_p2"] = asm["_emscripten_bind_btBU_Simplex1to4__serialize_p2"];
var _emscripten_bind_btCylinderShapeZ__getLocalScaling_p0 = Module["_emscripten_bind_btCylinderShapeZ__getLocalScaling_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getLocalScaling_p0"];
var _emscripten_bind_btPoint2PointConstraint__get_m_setting_p0 = Module["_emscripten_bind_btPoint2PointConstraint__get_m_setting_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__get_m_setting_p0"];
var _emscripten_bind_btBoxShape__initializePolyhedralFeatures_p0 = Module["_emscripten_bind_btBoxShape__initializePolyhedralFeatures_p0"] = asm["_emscripten_bind_btBoxShape__initializePolyhedralFeatures_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getRotationalLimitMotor_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getRotationalLimitMotor_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getRotationalLimitMotor_p1"];
var _emscripten_bind_btCompoundShape__isPolyhedral_p0 = Module["_emscripten_bind_btCompoundShape__isPolyhedral_p0"] = asm["_emscripten_bind_btCompoundShape__isPolyhedral_p0"];
var _emscripten_bind_btContactConstraint__getObjectType_p0 = Module["_emscripten_bind_btContactConstraint__getObjectType_p0"] = asm["_emscripten_bind_btContactConstraint__getObjectType_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__removeCharacter_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__removeCharacter_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__removeCharacter_p1"];
var _emscripten_bind_btSerializer__getCurrentBufferSize_p0 = Module["_emscripten_bind_btSerializer__getCurrentBufferSize_p0"] = asm["_emscripten_bind_btSerializer__getCurrentBufferSize_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getTranslationalLimitMotor_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getTranslationalLimitMotor_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getTranslationalLimitMotor_p0"];
var _emscripten_bind_btTypedConstraint__setEnabled_p1 = Module["_emscripten_bind_btTypedConstraint__setEnabled_p1"] = asm["_emscripten_bind_btTypedConstraint__setEnabled_p1"];
var _emscripten_bind_btCylinderShape__getLocalScaling_p0 = Module["_emscripten_bind_btCylinderShape__getLocalScaling_p0"] = asm["_emscripten_bind_btCylinderShape__getLocalScaling_p0"];
var _emscripten_bind_btManifoldPoint__set_m_appliedImpulseLateral2_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_appliedImpulseLateral2_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_appliedImpulseLateral2_p1"];
var _emscripten_bind_btDbvtProxy__isConvex2d_p1 = Module["_emscripten_bind_btDbvtProxy__isConvex2d_p1"] = asm["_emscripten_bind_btDbvtProxy__isConvex2d_p1"];
var _emscripten_bind_btTriangleInfoMap____destroy___p0 = Module["_emscripten_bind_btTriangleInfoMap____destroy___p0"] = asm["_emscripten_bind_btTriangleInfoMap____destroy___p0"];
var _emscripten_bind_btRigidBody__getAngularVelocity_p0 = Module["_emscripten_bind_btRigidBody__getAngularVelocity_p0"] = asm["_emscripten_bind_btRigidBody__getAngularVelocity_p0"];
var _emscripten_bind_btSliderConstraint__getRestitutionDirLin_p0 = Module["_emscripten_bind_btSliderConstraint__getRestitutionDirLin_p0"] = asm["_emscripten_bind_btSliderConstraint__getRestitutionDirLin_p0"];
var _emscripten_bind_btGhostObject__getActivationState_p0 = Module["_emscripten_bind_btGhostObject__getActivationState_p0"] = asm["_emscripten_bind_btGhostObject__getActivationState_p0"];
var _emscripten_bind_btStaticPlaneShape__isInfinite_p0 = Module["_emscripten_bind_btStaticPlaneShape__isInfinite_p0"] = asm["_emscripten_bind_btStaticPlaneShape__isInfinite_p0"];
var _emscripten_bind_btCapsuleShapeX__isSoftBody_p0 = Module["_emscripten_bind_btCapsuleShapeX__isSoftBody_p0"] = asm["_emscripten_bind_btCapsuleShapeX__isSoftBody_p0"];
var _emscripten_bind_btManifoldPoint__set_m_appliedImpulseLateral1_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_appliedImpulseLateral1_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_appliedImpulseLateral1_p1"];
var _emscripten_bind_btQuaternion__dot_p1 = Module["_emscripten_bind_btQuaternion__dot_p1"] = asm["_emscripten_bind_btQuaternion__dot_p1"];
var _emscripten_bind_btBoxShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btBoxShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btBoxShape__getMarginNonVirtual_p0"];
var _emscripten_bind_btDynamicsWorld__rayTestSingle_p6 = Module["_emscripten_bind_btDynamicsWorld__rayTestSingle_p6"] = asm["_emscripten_bind_btDynamicsWorld__rayTestSingle_p6"];
var _emscripten_bind_btMatrix3x3__transpose_p0 = Module["_emscripten_bind_btMatrix3x3__transpose_p0"] = asm["_emscripten_bind_btMatrix3x3__transpose_p0"];
var _emscripten_bind_btCollisionWorld__contactTest_p2 = Module["_emscripten_bind_btCollisionWorld__contactTest_p2"] = asm["_emscripten_bind_btCollisionWorld__contactTest_p2"];
var _emscripten_bind_btCapsuleShapeZ__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btCapsuleShapeZ__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btCapsuleShapeZ__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btDbvtBroadphase__set_m_needcleanup_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_needcleanup_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_needcleanup_p1"];
var _emscripten_bind_btVector3__fuzzyZero_p0 = Module["_emscripten_bind_btVector3__fuzzyZero_p0"] = asm["_emscripten_bind_btVector3__fuzzyZero_p0"];
var _emscripten_bind_btConvexInternalShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btConvexInternalShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btConvexInternalShape__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_collisionAlgorithmPool_p0 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_collisionAlgorithmPool_p0"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_collisionAlgorithmPool_p0"];
var _emscripten_bind_btQuaternion__setMax_p1 = Module["_emscripten_bind_btQuaternion__setMax_p1"] = asm["_emscripten_bind_btQuaternion__setMax_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__setBroadphase_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setBroadphase_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setBroadphase_p1"];
var _emscripten_bind_btContactConstraint__getConstraintType_p0 = Module["_emscripten_bind_btContactConstraint__getConstraintType_p0"] = asm["_emscripten_bind_btContactConstraint__getConstraintType_p0"];
var _emscripten_bind_btCylinderShape__getRadius_p0 = Module["_emscripten_bind_btCylinderShape__getRadius_p0"] = asm["_emscripten_bind_btCylinderShape__getRadius_p0"];
var _emscripten_bind_btConeShapeX__setMargin_p1 = Module["_emscripten_bind_btConeShapeX__setMargin_p1"] = asm["_emscripten_bind_btConeShapeX__setMargin_p1"];
var _emscripten_bind_btRigidBody__setFlags_p1 = Module["_emscripten_bind_btRigidBody__setFlags_p1"] = asm["_emscripten_bind_btRigidBody__setFlags_p1"];
var _emscripten_bind_btDbvtProxy__set_m_aabbMax_p1 = Module["_emscripten_bind_btDbvtProxy__set_m_aabbMax_p1"] = asm["_emscripten_bind_btDbvtProxy__set_m_aabbMax_p1"];
var _emscripten_bind_btConvexTriangleMeshShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btConvexTriangleMeshShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btHinge2Constraint__getDbgDrawSize_p0 = Module["_emscripten_bind_btHinge2Constraint__getDbgDrawSize_p0"] = asm["_emscripten_bind_btHinge2Constraint__getDbgDrawSize_p0"];
var _emscripten_bind_btClock__reset_p0 = Module["_emscripten_bind_btClock__reset_p0"] = asm["_emscripten_bind_btClock__reset_p0"];
var _emscripten_bind_btUniformScalingShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btUniformScalingShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btUniformScalingShape__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btHinge2Constraint__setUserConstraintPtr_p1 = Module["_emscripten_bind_btHinge2Constraint__setUserConstraintPtr_p1"] = asm["_emscripten_bind_btHinge2Constraint__setUserConstraintPtr_p1"];
var _emscripten_bind_btOptimizedBvh__deSerializeFloat_p1 = Module["_emscripten_bind_btOptimizedBvh__deSerializeFloat_p1"] = asm["_emscripten_bind_btOptimizedBvh__deSerializeFloat_p1"];
var _emscripten_bind_btBroadphaseInterface__getBroadphaseAabb_p2 = Module["_emscripten_bind_btBroadphaseInterface__getBroadphaseAabb_p2"] = asm["_emscripten_bind_btBroadphaseInterface__getBroadphaseAabb_p2"];
var _emscripten_bind_btBoxShape__getConvexPolyhedron_p0 = Module["_emscripten_bind_btBoxShape__getConvexPolyhedron_p0"] = asm["_emscripten_bind_btBoxShape__getConvexPolyhedron_p0"];
var _emscripten_bind_btCapsuleShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btCapsuleShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btCapsuleShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_collisionFilterGroup_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_collisionFilterGroup_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_collisionFilterGroup_p0"];
var _emscripten_bind_btDynamicsWorld__contactTest_p2 = Module["_emscripten_bind_btDynamicsWorld__contactTest_p2"] = asm["_emscripten_bind_btDynamicsWorld__contactTest_p2"];
var _emscripten_bind_btRotationalLimitMotor__get_m_enableMotor_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_enableMotor_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_enableMotor_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__internalSetAppliedImpulse_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__internalSetAppliedImpulse_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__internalSetAppliedImpulse_p1"];
var _emscripten_bind_btBroadphasePair__get_m_pProxy0_p0 = Module["_emscripten_bind_btBroadphasePair__get_m_pProxy0_p0"] = asm["_emscripten_bind_btBroadphasePair__get_m_pProxy0_p0"];
var _emscripten_bind_btRaycastVehicle__applyEngineForce_p2 = Module["_emscripten_bind_btRaycastVehicle__applyEngineForce_p2"] = asm["_emscripten_bind_btRaycastVehicle__applyEngineForce_p2"];
var _emscripten_bind_btCollisionWorld__LocalRayResult__set_m_localShapeInfo_p1 = Module["_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_localShapeInfo_p1"] = asm["_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_localShapeInfo_p1"];
var _emscripten_bind_btBroadphaseInterface__setAabb_p4 = Module["_emscripten_bind_btBroadphaseInterface__setAabb_p4"] = asm["_emscripten_bind_btBroadphaseInterface__setAabb_p4"];
var _emscripten_bind_btConvexShape__isSoftBody_p0 = Module["_emscripten_bind_btConvexShape__isSoftBody_p0"] = asm["_emscripten_bind_btConvexShape__isSoftBody_p0"];
var _emscripten_bind_btUniformScalingShape__setLocalScaling_p1 = Module["_emscripten_bind_btUniformScalingShape__setLocalScaling_p1"] = asm["_emscripten_bind_btUniformScalingShape__setLocalScaling_p1"];
var _emscripten_bind_btConvexShape__isConvex_p0 = Module["_emscripten_bind_btConvexShape__isConvex_p0"] = asm["_emscripten_bind_btConvexShape__isConvex_p0"];
var _emscripten_bind_btHeightfieldTerrainShape__serializeSingleShape_p1 = Module["_emscripten_bind_btHeightfieldTerrainShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btHeightfieldTerrainShape__serializeSingleShape_p1"];
var _emscripten_bind_btBroadphaseProxy__getUid_p0 = Module["_emscripten_bind_btBroadphaseProxy__getUid_p0"] = asm["_emscripten_bind_btBroadphaseProxy__getUid_p0"];
var _emscripten_bind_btMultiSphereShape__isPolyhedral_p0 = Module["_emscripten_bind_btMultiSphereShape__isPolyhedral_p0"] = asm["_emscripten_bind_btMultiSphereShape__isPolyhedral_p0"];
var _emscripten_bind_btSphereShape__getName_p0 = Module["_emscripten_bind_btSphereShape__getName_p0"] = asm["_emscripten_bind_btSphereShape__getName_p0"];
var _emscripten_bind_btActivatingCollisionAlgorithm__processCollision_p4 = Module["_emscripten_bind_btActivatingCollisionAlgorithm__processCollision_p4"] = asm["_emscripten_bind_btActivatingCollisionAlgorithm__processCollision_p4"];
var _emscripten_bind_btHinge2Constraint__getAnchor_p0 = Module["_emscripten_bind_btHinge2Constraint__getAnchor_p0"] = asm["_emscripten_bind_btHinge2Constraint__getAnchor_p0"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btGhostObject__activate_p1 = Module["_emscripten_bind_btGhostObject__activate_p1"] = asm["_emscripten_bind_btGhostObject__activate_p1"];
var _emscripten_bind_btCylinderShapeX__getAngularMotionDisc_p0 = Module["_emscripten_bind_btCylinderShapeX__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btCylinderShapeX__getAngularMotionDisc_p0"];
var _emscripten_bind_btQuaternion__z_p0 = Module["_emscripten_bind_btQuaternion__z_p0"] = asm["_emscripten_bind_btQuaternion__z_p0"];
var _emscripten_bind_btBoxShape__getShapeType_p0 = Module["_emscripten_bind_btBoxShape__getShapeType_p0"] = asm["_emscripten_bind_btBoxShape__getShapeType_p0"];
var _emscripten_bind_btVector4__getY_p0 = Module["_emscripten_bind_btVector4__getY_p0"] = asm["_emscripten_bind_btVector4__getY_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setLimit_p3 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setLimit_p3"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setLimit_p3"];
var _emscripten_bind_btVector4__getX_p0 = Module["_emscripten_bind_btVector4__getX_p0"] = asm["_emscripten_bind_btVector4__getX_p0"];
var _emscripten_bind_btBroadphasePair__btBroadphasePair_p1 = Module["_emscripten_bind_btBroadphasePair__btBroadphasePair_p1"] = asm["_emscripten_bind_btBroadphasePair__btBroadphasePair_p1"];
var _emscripten_bind_btBroadphasePair__btBroadphasePair_p0 = Module["_emscripten_bind_btBroadphasePair__btBroadphasePair_p0"] = asm["_emscripten_bind_btBroadphasePair__btBroadphasePair_p0"];
var _emscripten_bind_btBoxShape__getHalfExtentsWithMargin_p0 = Module["_emscripten_bind_btBoxShape__getHalfExtentsWithMargin_p0"] = asm["_emscripten_bind_btBoxShape__getHalfExtentsWithMargin_p0"];
var _emscripten_bind_btConeTwistConstraint__setUserConstraintPtr_p1 = Module["_emscripten_bind_btConeTwistConstraint__setUserConstraintPtr_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setUserConstraintPtr_p1"];
var _emscripten_bind_btConvexInternalAabbCachingShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getMarginNonVirtual_p0"];
var _emscripten_bind_btBroadphasePair__get_m_algorithm_p0 = Module["_emscripten_bind_btBroadphasePair__get_m_algorithm_p0"] = asm["_emscripten_bind_btBroadphasePair__get_m_algorithm_p0"];
var __GLOBAL__I_a = Module["__GLOBAL__I_a"] = asm["__GLOBAL__I_a"];
var _emscripten_bind_btConvexHullShape__getEdge_p3 = Module["_emscripten_bind_btConvexHullShape__getEdge_p3"] = asm["_emscripten_bind_btConvexHullShape__getEdge_p3"];
var _emscripten_bind_btCompoundShape__getChildShape_p1 = Module["_emscripten_bind_btCompoundShape__getChildShape_p1"] = asm["_emscripten_bind_btCompoundShape__getChildShape_p1"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__isInside_p2 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isInside_p2"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isInside_p2"];
var _emscripten_bind_btEmptyShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btEmptyShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btEmptyShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btCylinderShapeZ__getName_p0 = Module["_emscripten_bind_btCylinderShapeZ__getName_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getName_p0"];
var _emscripten_bind_btRotationalLimitMotor__set_m_maxMotorForce_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_maxMotorForce_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_maxMotorForce_p1"];
var _emscripten_bind_btVector3__isZero_p0 = Module["_emscripten_bind_btVector3__isZero_p0"] = asm["_emscripten_bind_btVector3__isZero_p0"];
var _emscripten_bind_btPairCachingGhostObject__getCcdMotionThreshold_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getCcdMotionThreshold_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getCcdMotionThreshold_p0"];
var _emscripten_bind_btConeShape__btConeShape_p2 = Module["_emscripten_bind_btConeShape__btConeShape_p2"] = asm["_emscripten_bind_btConeShape__btConeShape_p2"];
var _emscripten_bind_btVector3__minAxis_p0 = Module["_emscripten_bind_btVector3__minAxis_p0"] = asm["_emscripten_bind_btVector3__minAxis_p0"];
var _emscripten_bind_btIndexedMesh__get_m_vertexBase_p0 = Module["_emscripten_bind_btIndexedMesh__get_m_vertexBase_p0"] = asm["_emscripten_bind_btIndexedMesh__get_m_vertexBase_p0"];
var _emscripten_bind_btSliderConstraint__setDampingLimLin_p1 = Module["_emscripten_bind_btSliderConstraint__setDampingLimLin_p1"] = asm["_emscripten_bind_btSliderConstraint__setDampingLimLin_p1"];
var _emscripten_bind_btSphereShape__isCompound_p0 = Module["_emscripten_bind_btSphereShape__isCompound_p0"] = asm["_emscripten_bind_btSphereShape__isCompound_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__setGravity_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__setGravity_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setGravity_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getRigidBodyA_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getRigidBodyA_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getRigidBodyA_p0"];
var _emscripten_bind_btHinge2Constraint__getAxis_p1 = Module["_emscripten_bind_btHinge2Constraint__getAxis_p1"] = asm["_emscripten_bind_btHinge2Constraint__getAxis_p1"];
var _emscripten_bind_btCollisionWorld__setBroadphase_p1 = Module["_emscripten_bind_btCollisionWorld__setBroadphase_p1"] = asm["_emscripten_bind_btCollisionWorld__setBroadphase_p1"];
var _emscripten_bind_btCollisionWorld__LocalRayResult__set_m_hitFraction_p1 = Module["_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_hitFraction_p1"] = asm["_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_hitFraction_p1"];
var _emscripten_bind_btCapsuleShapeX__isNonMoving_p0 = Module["_emscripten_bind_btCapsuleShapeX__isNonMoving_p0"] = asm["_emscripten_bind_btCapsuleShapeX__isNonMoving_p0"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__isNonMoving_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__isNonMoving_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__isNonMoving_p0"];
var _emscripten_bind_btRaycastVehicle__updateAction_p2 = Module["_emscripten_bind_btRaycastVehicle__updateAction_p2"] = asm["_emscripten_bind_btRaycastVehicle__updateAction_p2"];
var _emscripten_bind_btManifoldPoint__set_m_normalWorldOnB_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_normalWorldOnB_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_normalWorldOnB_p1"];
var _emscripten_bind_btWheelInfo__set_m_brake_p1 = Module["_emscripten_bind_btWheelInfo__set_m_brake_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_brake_p1"];
var _emscripten_bind_btSphereShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btSphereShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btSphereShape__localGetSupportingVertex_p1"];
var _emscripten_bind_btPolyhedralConvexShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btPolyhedralConvexShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btPolyhedralConvexShape__localGetSupportingVertex_p1"];
var _emscripten_bind_btBvhTriangleMeshShape__getOwnsBvh_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getOwnsBvh_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getOwnsBvh_p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_restitution_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_restitution_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_restitution_p0"];
var _emscripten_bind_btCylinderShapeZ__getShapeType_p0 = Module["_emscripten_bind_btCylinderShapeZ__getShapeType_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getShapeType_p0"];
var _emscripten_bind_btGhostObject__getInterpolationAngularVelocity_p0 = Module["_emscripten_bind_btGhostObject__getInterpolationAngularVelocity_p0"] = asm["_emscripten_bind_btGhostObject__getInterpolationAngularVelocity_p0"];
var _emscripten_bind_btConvexInternalShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btConvexInternalShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btConvexInternalShape__getLocalScalingNV_p0"];
var _emscripten_bind_btConeShapeX____destroy___p0 = Module["_emscripten_bind_btConeShapeX____destroy___p0"] = asm["_emscripten_bind_btConeShapeX____destroy___p0"];
var _emscripten_bind_btUniversalConstraint__internalGetAppliedImpulse_p0 = Module["_emscripten_bind_btUniversalConstraint__internalGetAppliedImpulse_p0"] = asm["_emscripten_bind_btUniversalConstraint__internalGetAppliedImpulse_p0"];
var _emscripten_bind_btHashPtr____destroy___p0 = Module["_emscripten_bind_btHashPtr____destroy___p0"] = asm["_emscripten_bind_btHashPtr____destroy___p0"];
var _emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p1"];
var _emscripten_bind_btDynamicsWorld__setWorldUserInfo_p1 = Module["_emscripten_bind_btDynamicsWorld__setWorldUserInfo_p1"] = asm["_emscripten_bind_btDynamicsWorld__setWorldUserInfo_p1"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionFilterMask_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionFilterMask_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionFilterMask_p1"];
var _emscripten_bind_btWheelInfo__get_m_chassisConnectionPointCS_p0 = Module["_emscripten_bind_btWheelInfo__get_m_chassisConnectionPointCS_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_chassisConnectionPointCS_p0"];
var _emscripten_bind_btQuaternion__op_sub_p1 = Module["_emscripten_bind_btQuaternion__op_sub_p1"] = asm["_emscripten_bind_btQuaternion__op_sub_p1"];
var _emscripten_bind_btHingeConstraint__get_m_objectType_p0 = Module["_emscripten_bind_btHingeConstraint__get_m_objectType_p0"] = asm["_emscripten_bind_btHingeConstraint__get_m_objectType_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__updateVehicles_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__updateVehicles_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__updateVehicles_p1"];
var _emscripten_bind_btCollisionObject__internalSetTemporaryCollisionShape_p1 = Module["_emscripten_bind_btCollisionObject__internalSetTemporaryCollisionShape_p1"] = asm["_emscripten_bind_btCollisionObject__internalSetTemporaryCollisionShape_p1"];
var _emscripten_bind_btIDebugDraw__getDebugMode_p0 = Module["_emscripten_bind_btIDebugDraw__getDebugMode_p0"] = asm["_emscripten_bind_btIDebugDraw__getDebugMode_p0"];
var _emscripten_bind_btConeTwistConstraint__GetPointForAngle_p2 = Module["_emscripten_bind_btConeTwistConstraint__GetPointForAngle_p2"] = asm["_emscripten_bind_btConeTwistConstraint__GetPointForAngle_p2"];
var _emscripten_bind_btVector4__absolute_p0 = Module["_emscripten_bind_btVector4__absolute_p0"] = asm["_emscripten_bind_btVector4__absolute_p0"];
var _emscripten_bind_btStorageResult__setShapeIdentifiersA_p2 = Module["_emscripten_bind_btStorageResult__setShapeIdentifiersA_p2"] = asm["_emscripten_bind_btStorageResult__setShapeIdentifiersA_p2"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintType_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintType_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintType_p0"];
var _emscripten_bind_btStorageResult__set_m_distance_p1 = Module["_emscripten_bind_btStorageResult__set_m_distance_p1"] = asm["_emscripten_bind_btStorageResult__set_m_distance_p1"];
var _emscripten_bind_btPersistentManifold__set_m_companionIdA_p1 = Module["_emscripten_bind_btPersistentManifold__set_m_companionIdA_p1"] = asm["_emscripten_bind_btPersistentManifold__set_m_companionIdA_p1"];
var _emscripten_bind_btTypedConstraint__getConstraintType_p0 = Module["_emscripten_bind_btTypedConstraint__getConstraintType_p0"] = asm["_emscripten_bind_btTypedConstraint__getConstraintType_p0"];
var _emscripten_bind_btConvexShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btConvexShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btConvexShape__calculateLocalInertia_p2"];
var _emscripten_bind_btTriangleMesh__unLockReadOnlyVertexBase_p1 = Module["_emscripten_bind_btTriangleMesh__unLockReadOnlyVertexBase_p1"] = asm["_emscripten_bind_btTriangleMesh__unLockReadOnlyVertexBase_p1"];
var _emscripten_bind_btVector4__getZ_p0 = Module["_emscripten_bind_btVector4__getZ_p0"] = asm["_emscripten_bind_btVector4__getZ_p0"];
var _emscripten_bind_btCapsuleShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btCapsuleShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btCapsuleShape__getAabbNonVirtual_p3"];
var _emscripten_bind_btVector4__serializeDouble_p1 = Module["_emscripten_bind_btVector4__serializeDouble_p1"] = asm["_emscripten_bind_btVector4__serializeDouble_p1"];
var _emscripten_bind_btRigidBody__setActivationState_p1 = Module["_emscripten_bind_btRigidBody__setActivationState_p1"] = asm["_emscripten_bind_btRigidBody__setActivationState_p1"];
var _emscripten_bind_btTransform__invXform_p1 = Module["_emscripten_bind_btTransform__invXform_p1"] = asm["_emscripten_bind_btTransform__invXform_p1"];
var _emscripten_bind_btBroadphaseProxy__get_m_collisionFilterMask_p0 = Module["_emscripten_bind_btBroadphaseProxy__get_m_collisionFilterMask_p0"] = asm["_emscripten_bind_btBroadphaseProxy__get_m_collisionFilterMask_p0"];
var _emscripten_bind_btUniversalConstraint__setUserConstraintType_p1 = Module["_emscripten_bind_btUniversalConstraint__setUserConstraintType_p1"] = asm["_emscripten_bind_btUniversalConstraint__setUserConstraintType_p1"];
var _emscripten_bind_btCollisionObject__getFriction_p0 = Module["_emscripten_bind_btCollisionObject__getFriction_p0"] = asm["_emscripten_bind_btCollisionObject__getFriction_p0"];
var _emscripten_bind_btUniversalConstraint__set_m_useSolveConstraintObsolete_p1 = Module["_emscripten_bind_btUniversalConstraint__set_m_useSolveConstraintObsolete_p1"] = asm["_emscripten_bind_btUniversalConstraint__set_m_useSolveConstraintObsolete_p1"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_linearDamping_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_linearDamping_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_linearDamping_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__performDiscreteCollisionDetection_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__performDiscreteCollisionDetection_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__performDiscreteCollisionDetection_p0"];
var _emscripten_bind_btTranslationalLimitMotor__btTranslationalLimitMotor_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__btTranslationalLimitMotor_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__btTranslationalLimitMotor_p0"];
var _malloc = Module["_malloc"] = asm["_malloc"];
var _emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionObject_p0 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionObject_p0"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionObject_p0"];
var _emscripten_bind_btDispatcher__getNewManifold_p2 = Module["_emscripten_bind_btDispatcher__getNewManifold_p2"] = asm["_emscripten_bind_btDispatcher__getNewManifold_p2"];
var _emscripten_bind_btPolyhedralConvexShape__getName_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getName_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getName_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__addRigidBody_p3 = Module["_emscripten_bind_btDiscreteDynamicsWorld__addRigidBody_p3"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__addRigidBody_p3"];
var _emscripten_bind_btDiscreteDynamicsWorld__addRigidBody_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__addRigidBody_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__addRigidBody_p1"];
var _emscripten_bind_btConvexInternalShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btConvexInternalShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btConvexInternalShape__getMarginNonVirtual_p0"];
var _emscripten_bind_btTriangleIndexVertexArray__unLockVertexBase_p1 = Module["_emscripten_bind_btTriangleIndexVertexArray__unLockVertexBase_p1"] = asm["_emscripten_bind_btTriangleIndexVertexArray__unLockVertexBase_p1"];
var _emscripten_bind_btRigidBody__setSleepingThresholds_p2 = Module["_emscripten_bind_btRigidBody__setSleepingThresholds_p2"] = asm["_emscripten_bind_btRigidBody__setSleepingThresholds_p2"];
var _emscripten_bind_btBroadphasePair__get_m_internalInfo1_p0 = Module["_emscripten_bind_btBroadphasePair__get_m_internalInfo1_p0"] = asm["_emscripten_bind_btBroadphasePair__get_m_internalInfo1_p0"];
var _emscripten_bind_btMultiSphereShape__getSphereRadius_p1 = Module["_emscripten_bind_btMultiSphereShape__getSphereRadius_p1"] = asm["_emscripten_bind_btMultiSphereShape__getSphereRadius_p1"];
var _emscripten_bind_btConvexHullShape__serializeSingleShape_p1 = Module["_emscripten_bind_btConvexHullShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btConvexHullShape__serializeSingleShape_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p3 = Module["_emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p3"] = asm["_emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p3"];
var _emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p2 = Module["_emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p2"] = asm["_emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p2"];
var _emscripten_bind_btWheelInfo__get_m_engineForce_p0 = Module["_emscripten_bind_btWheelInfo__get_m_engineForce_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_engineForce_p0"];
var _emscripten_bind_btUniformScalingShape__getShapeType_p0 = Module["_emscripten_bind_btUniformScalingShape__getShapeType_p0"] = asm["_emscripten_bind_btUniformScalingShape__getShapeType_p0"];
var _emscripten_bind_btDefaultMotionState__setWorldTransform_p1 = Module["_emscripten_bind_btDefaultMotionState__setWorldTransform_p1"] = asm["_emscripten_bind_btDefaultMotionState__setWorldTransform_p1"];
var _emscripten_bind_btQuaternion__getZ_p0 = Module["_emscripten_bind_btQuaternion__getZ_p0"] = asm["_emscripten_bind_btQuaternion__getZ_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__debugDrawObject_p3 = Module["_emscripten_bind_btSimpleDynamicsWorld__debugDrawObject_p3"] = asm["_emscripten_bind_btSimpleDynamicsWorld__debugDrawObject_p3"];
var _emscripten_bind_btBoxShape__serializeSingleShape_p1 = Module["_emscripten_bind_btBoxShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btBoxShape__serializeSingleShape_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__addVehicle_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__addVehicle_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__addVehicle_p1"];
var _emscripten_bind_btPolyhedralConvexShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btPolyhedralConvexShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btPolyhedralConvexShape__getAabbNonVirtual_p3"];
var _emscripten_bind_btDynamicsWorld__setInternalTickCallback_p3 = Module["_emscripten_bind_btDynamicsWorld__setInternalTickCallback_p3"] = asm["_emscripten_bind_btDynamicsWorld__setInternalTickCallback_p3"];
var _emscripten_bind_btConvexInternalShape__serialize_p2 = Module["_emscripten_bind_btConvexInternalShape__serialize_p2"] = asm["_emscripten_bind_btConvexInternalShape__serialize_p2"];
var _emscripten_bind_btConvexTriangleMeshShape__getUserPointer_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getUserPointer_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getUserPointer_p0"];
var _emscripten_bind_btSliderConstraint__getSolveLinLimit_p0 = Module["_emscripten_bind_btSliderConstraint__getSolveLinLimit_p0"] = asm["_emscripten_bind_btSliderConstraint__getSolveLinLimit_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__setTriangleInfoMap_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__setTriangleInfoMap_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__setTriangleInfoMap_p1"];
var _emscripten_bind_btVector3__rotate_p2 = Module["_emscripten_bind_btVector3__rotate_p2"] = asm["_emscripten_bind_btVector3__rotate_p2"];
var _emscripten_bind_btPolyhedralConvexShape__getShapeType_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getShapeType_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getShapeType_p0"];
var _emscripten_bind_btContactConstraint__setParam_p2 = Module["_emscripten_bind_btContactConstraint__setParam_p2"] = asm["_emscripten_bind_btContactConstraint__setParam_p2"];
var _emscripten_bind_btHeightfieldTerrainShape__setUserPointer_p1 = Module["_emscripten_bind_btHeightfieldTerrainShape__setUserPointer_p1"] = asm["_emscripten_bind_btHeightfieldTerrainShape__setUserPointer_p1"];
var _emscripten_bind_btDynamicsWorld__setInternalTickCallback_p2 = Module["_emscripten_bind_btDynamicsWorld__setInternalTickCallback_p2"] = asm["_emscripten_bind_btDynamicsWorld__setInternalTickCallback_p2"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btPairCachingGhostObject__setCollisionShape_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setCollisionShape_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setCollisionShape_p1"];
var _emscripten_bind_btSphereSphereCollisionAlgorithm__processCollision_p4 = Module["_emscripten_bind_btSphereSphereCollisionAlgorithm__processCollision_p4"] = asm["_emscripten_bind_btSphereSphereCollisionAlgorithm__processCollision_p4"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_hitPointWorld_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_hitPointWorld_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_hitPointWorld_p1"];
var _emscripten_bind_btHingeConstraint__set_m_objectType_p1 = Module["_emscripten_bind_btHingeConstraint__set_m_objectType_p1"] = asm["_emscripten_bind_btHingeConstraint__set_m_objectType_p1"];
var _emscripten_bind_btDynamicsWorld__setInternalTickCallback_p1 = Module["_emscripten_bind_btDynamicsWorld__setInternalTickCallback_p1"] = asm["_emscripten_bind_btDynamicsWorld__setInternalTickCallback_p1"];
var _emscripten_bind_btCylinderShapeX__getName_p0 = Module["_emscripten_bind_btCylinderShapeX__getName_p0"] = asm["_emscripten_bind_btCylinderShapeX__getName_p0"];
var _emscripten_bind_btDispatcher__releaseManifold_p1 = Module["_emscripten_bind_btDispatcher__releaseManifold_p1"] = asm["_emscripten_bind_btDispatcher__releaseManifold_p1"];
var _emscripten_bind_btRigidBody__setInterpolationWorldTransform_p1 = Module["_emscripten_bind_btRigidBody__setInterpolationWorldTransform_p1"] = asm["_emscripten_bind_btRigidBody__setInterpolationWorldTransform_p1"];
var _emscripten_bind_btDbvtBroadphase__optimize_p0 = Module["_emscripten_bind_btDbvtBroadphase__optimize_p0"] = asm["_emscripten_bind_btDbvtBroadphase__optimize_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setDbgDrawSize_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setDbgDrawSize_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setDbgDrawSize_p1"];
var _emscripten_bind_btDiscreteCollisionDetectorInterface__getClosestPoints_p3 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__getClosestPoints_p3"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__getClosestPoints_p3"];
var _emscripten_bind_btRaycastVehicle__setPitchControl_p1 = Module["_emscripten_bind_btRaycastVehicle__setPitchControl_p1"] = asm["_emscripten_bind_btRaycastVehicle__setPitchControl_p1"];
var _emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitFraction_p1 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitFraction_p1"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitFraction_p1"];
var _emscripten_bind_btDiscreteCollisionDetectorInterface__getClosestPoints_p4 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__getClosestPoints_p4"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__getClosestPoints_p4"];
var _emscripten_bind_btCollisionObject__setUserPointer_p1 = Module["_emscripten_bind_btCollisionObject__setUserPointer_p1"] = asm["_emscripten_bind_btCollisionObject__setUserPointer_p1"];
var _emscripten_bind_btPairCachingGhostObject__getCcdSquareMotionThreshold_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getCcdSquareMotionThreshold_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getCcdSquareMotionThreshold_p0"];
var _emscripten_bind_btTranslationalLimitMotor__get_m_restitution_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_restitution_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_restitution_p0"];
var _emscripten_bind_btPolyhedralConvexShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btPolyhedralConvexShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btPolyhedralConvexShape__calculateLocalInertia_p2"];
var _emscripten_bind_btConeTwistConstraint__setEnabled_p1 = Module["_emscripten_bind_btConeTwistConstraint__setEnabled_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setEnabled_p1"];
var _emscripten_bind_btAxisSweep3__calculateOverlappingPairs_p1 = Module["_emscripten_bind_btAxisSweep3__calculateOverlappingPairs_p1"] = asm["_emscripten_bind_btAxisSweep3__calculateOverlappingPairs_p1"];
var _emscripten_bind_btCylinderShapeZ__setMargin_p1 = Module["_emscripten_bind_btCylinderShapeZ__setMargin_p1"] = asm["_emscripten_bind_btCylinderShapeZ__setMargin_p1"];
var _emscripten_bind_btVector3__normalized_p0 = Module["_emscripten_bind_btVector3__normalized_p0"] = asm["_emscripten_bind_btVector3__normalized_p0"];
var _emscripten_bind_btCollisionAlgorithmCreateFunc__CreateCollisionAlgorithm_p3 = Module["_emscripten_bind_btCollisionAlgorithmCreateFunc__CreateCollisionAlgorithm_p3"] = asm["_emscripten_bind_btCollisionAlgorithmCreateFunc__CreateCollisionAlgorithm_p3"];
var _emscripten_bind_btRigidBody__getLinearDamping_p0 = Module["_emscripten_bind_btRigidBody__getLinearDamping_p0"] = asm["_emscripten_bind_btRigidBody__getLinearDamping_p0"];
var _emscripten_bind_btRigidBody__setInvInertiaDiagLocal_p1 = Module["_emscripten_bind_btRigidBody__setInvInertiaDiagLocal_p1"] = asm["_emscripten_bind_btRigidBody__setInvInertiaDiagLocal_p1"];
var _emscripten_bind_btBroadphaseProxy__get_m_aabbMin_p0 = Module["_emscripten_bind_btBroadphaseProxy__get_m_aabbMin_p0"] = asm["_emscripten_bind_btBroadphaseProxy__get_m_aabbMin_p0"];
var _emscripten_bind_btBU_Simplex1to4__getShapeType_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getShapeType_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getShapeType_p0"];
var _emscripten_bind_btCollisionObject__setHitFraction_p1 = Module["_emscripten_bind_btCollisionObject__setHitFraction_p1"] = asm["_emscripten_bind_btCollisionObject__setHitFraction_p1"];
var _emscripten_bind_btSliderConstraint__serialize_p2 = Module["_emscripten_bind_btSliderConstraint__serialize_p2"] = asm["_emscripten_bind_btSliderConstraint__serialize_p2"];
var _emscripten_bind_btAngularLimit__getCorrection_p0 = Module["_emscripten_bind_btAngularLimit__getCorrection_p0"] = asm["_emscripten_bind_btAngularLimit__getCorrection_p0"];
var _emscripten_bind_ConcreteContactResultCallback__addSingleResult_p7 = Module["_emscripten_bind_ConcreteContactResultCallback__addSingleResult_p7"] = asm["_emscripten_bind_ConcreteContactResultCallback__addSingleResult_p7"];
var _emscripten_bind_btBroadphaseProxy__isNonMoving_p1 = Module["_emscripten_bind_btBroadphaseProxy__isNonMoving_p1"] = asm["_emscripten_bind_btBroadphaseProxy__isNonMoving_p1"];
var _emscripten_bind_btCapsuleShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btCapsuleShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btCapsuleShape__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_btCylinderShape__getBoundingSphere_p2 = Module["_emscripten_bind_btCylinderShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btCylinderShape__getBoundingSphere_p2"];
var _emscripten_bind_btDynamicsWorld__getWorldType_p0 = Module["_emscripten_bind_btDynamicsWorld__getWorldType_p0"] = asm["_emscripten_bind_btDynamicsWorld__getWorldType_p0"];
var _emscripten_bind_btVector3__op_div_p1 = Module["_emscripten_bind_btVector3__op_div_p1"] = asm["_emscripten_bind_btVector3__op_div_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p3 = Module["_emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p3"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p3"];
var _emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p2 = Module["_emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p2"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p2"];
var _emscripten_bind_btSimpleDynamicsWorld__setBroadphase_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__setBroadphase_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__setBroadphase_p1"];
var _emscripten_bind_btBvhTriangleMeshShape__getAabb_p3 = Module["_emscripten_bind_btBvhTriangleMeshShape__getAabb_p3"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getAabb_p3"];
var _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionStiffness_p0 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionStiffness_p0"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionStiffness_p0"];
var _emscripten_bind_btDbvtBroadphase__get_m_stageCurrent_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_stageCurrent_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_stageCurrent_p0"];
var _emscripten_bind_btMultiSphereShape__setLocalScaling_p1 = Module["_emscripten_bind_btMultiSphereShape__setLocalScaling_p1"] = asm["_emscripten_bind_btMultiSphereShape__setLocalScaling_p1"];
var _emscripten_bind_btConvexInternalAabbCachingShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btSliderConstraint__setUseFrameOffset_p1 = Module["_emscripten_bind_btSliderConstraint__setUseFrameOffset_p1"] = asm["_emscripten_bind_btSliderConstraint__setUseFrameOffset_p1"];
var _emscripten_bind_btHingeConstraint__setDbgDrawSize_p1 = Module["_emscripten_bind_btHingeConstraint__setDbgDrawSize_p1"] = asm["_emscripten_bind_btHingeConstraint__setDbgDrawSize_p1"];
var _emscripten_bind_btDispatcherInfo__get_m_enableSatConvex_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_enableSatConvex_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_enableSatConvex_p0"];
var _emscripten_bind_btDefaultCollisionConfiguration__getPersistentManifoldPool_p0 = Module["_emscripten_bind_btDefaultCollisionConfiguration__getPersistentManifoldPool_p0"] = asm["_emscripten_bind_btDefaultCollisionConfiguration__getPersistentManifoldPool_p0"];
var _emscripten_bind_btIDebugDraw__drawTransform_p2 = Module["_emscripten_bind_btIDebugDraw__drawTransform_p2"] = asm["_emscripten_bind_btIDebugDraw__drawTransform_p2"];
var _emscripten_bind_btConeTwistConstraint__getTwistAngle_p0 = Module["_emscripten_bind_btConeTwistConstraint__getTwistAngle_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getTwistAngle_p0"];
var _emscripten_bind_btCapsuleShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btCapsuleShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btCapsuleShape__setImplicitShapeDimensions_p1"];
var _emscripten_bind_btPairCachingGhostObject__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btPairCachingGhostObject__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btRigidBody__setInterpolationLinearVelocity_p1 = Module["_emscripten_bind_btRigidBody__setInterpolationLinearVelocity_p1"] = asm["_emscripten_bind_btRigidBody__setInterpolationLinearVelocity_p1"];
var _emscripten_bind_btStackAlloc__getAvailableMemory_p0 = Module["_emscripten_bind_btStackAlloc__getAvailableMemory_p0"] = asm["_emscripten_bind_btStackAlloc__getAvailableMemory_p0"];
var _emscripten_bind_btGeneric6DofConstraint__get_m_objectType_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__get_m_objectType_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__get_m_objectType_p0"];
var _emscripten_bind_btConvexInternalAabbCachingShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__calculateLocalInertia_p2"];
var _emscripten_bind_btBvhTriangleMeshShape__getMargin_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getMargin_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getMargin_p0"];
var _emscripten_bind_btHeightfieldTerrainShape__isConvex_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__isConvex_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__isConvex_p0"];
var _emscripten_bind_btQuantizedBvh__quantizeWithClamp_p3 = Module["_emscripten_bind_btQuantizedBvh__quantizeWithClamp_p3"] = asm["_emscripten_bind_btQuantizedBvh__quantizeWithClamp_p3"];
var _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult____destroy___p0 = Module["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult____destroy___p0"] = asm["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult____destroy___p0"];
var _emscripten_bind_btTriangleInfo__get_m_flags_p0 = Module["_emscripten_bind_btTriangleInfo__get_m_flags_p0"] = asm["_emscripten_bind_btTriangleInfo__get_m_flags_p0"];
var _emscripten_bind_btConcaveShape__getName_p0 = Module["_emscripten_bind_btConcaveShape__getName_p0"] = asm["_emscripten_bind_btConcaveShape__getName_p0"];
var _emscripten_bind_btContactConstraint__getRigidBodyB_p0 = Module["_emscripten_bind_btContactConstraint__getRigidBodyB_p0"] = asm["_emscripten_bind_btContactConstraint__getRigidBodyB_p0"];
var _emscripten_bind_btUniversalConstraint__setAngularLowerLimit_p1 = Module["_emscripten_bind_btUniversalConstraint__setAngularLowerLimit_p1"] = asm["_emscripten_bind_btUniversalConstraint__setAngularLowerLimit_p1"];
var _emscripten_bind_btOptimizedBvh__refitPartial_p3 = Module["_emscripten_bind_btOptimizedBvh__refitPartial_p3"] = asm["_emscripten_bind_btOptimizedBvh__refitPartial_p3"];
var _emscripten_bind_btConcaveShape__getAabb_p3 = Module["_emscripten_bind_btConcaveShape__getAabb_p3"] = asm["_emscripten_bind_btConcaveShape__getAabb_p3"];
var _emscripten_bind_btCollisionShape__isInfinite_p0 = Module["_emscripten_bind_btCollisionShape__isInfinite_p0"] = asm["_emscripten_bind_btCollisionShape__isInfinite_p0"];
var _emscripten_bind_btCylinderShapeZ__localGetSupportingVertex_p1 = Module["_emscripten_bind_btCylinderShapeZ__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btCylinderShapeZ__localGetSupportingVertex_p1"];
var _emscripten_bind_btSimpleBroadphaseProxy__isPolyhedral_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__isPolyhedral_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__isPolyhedral_p1"];
var _emscripten_bind_btConvexInternalShape__getMargin_p0 = Module["_emscripten_bind_btConvexInternalShape__getMargin_p0"] = asm["_emscripten_bind_btConvexInternalShape__getMargin_p0"];
var _emscripten_bind_btTriangleMesh__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btTriangleMesh__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btTriangleMesh__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btCompoundShape__isConvex_p0 = Module["_emscripten_bind_btCompoundShape__isConvex_p0"] = asm["_emscripten_bind_btCompoundShape__isConvex_p0"];
var _emscripten_bind_btSliderConstraint__setDampingDirLin_p1 = Module["_emscripten_bind_btSliderConstraint__setDampingDirLin_p1"] = asm["_emscripten_bind_btSliderConstraint__setDampingDirLin_p1"];
var _emscripten_bind_btCapsuleShape__getMargin_p0 = Module["_emscripten_bind_btCapsuleShape__getMargin_p0"] = asm["_emscripten_bind_btCapsuleShape__getMargin_p0"];
var _emscripten_bind_btAngularLimit____destroy___p0 = Module["_emscripten_bind_btAngularLimit____destroy___p0"] = asm["_emscripten_bind_btAngularLimit____destroy___p0"];
var _emscripten_bind_btUniversalConstraint__getInfo2_p1 = Module["_emscripten_bind_btUniversalConstraint__getInfo2_p1"] = asm["_emscripten_bind_btUniversalConstraint__getInfo2_p1"];
var _emscripten_bind_btMatrix3x3__getIdentity_p0 = Module["_emscripten_bind_btMatrix3x3__getIdentity_p0"] = asm["_emscripten_bind_btMatrix3x3__getIdentity_p0"];
var _free = Module["_free"] = asm["_free"];
var _emscripten_bind_btConeShapeX__getName_p0 = Module["_emscripten_bind_btConeShapeX__getName_p0"] = asm["_emscripten_bind_btConeShapeX__getName_p0"];
var _emscripten_bind_btTransform__setBasis_p1 = Module["_emscripten_bind_btTransform__setBasis_p1"] = asm["_emscripten_bind_btTransform__setBasis_p1"];
var _emscripten_bind_btCapsuleShape__isConcave_p0 = Module["_emscripten_bind_btCapsuleShape__isConcave_p0"] = asm["_emscripten_bind_btCapsuleShape__isConcave_p0"];
var _emscripten_bind_btHingeConstraint__enableMotor_p1 = Module["_emscripten_bind_btHingeConstraint__enableMotor_p1"] = asm["_emscripten_bind_btHingeConstraint__enableMotor_p1"];
var _emscripten_bind_btCollisionObject__setIslandTag_p1 = Module["_emscripten_bind_btCollisionObject__setIslandTag_p1"] = asm["_emscripten_bind_btCollisionObject__setIslandTag_p1"];
var _emscripten_bind_btSliderConstraint__setDampingDirAng_p1 = Module["_emscripten_bind_btSliderConstraint__setDampingDirAng_p1"] = asm["_emscripten_bind_btSliderConstraint__setDampingDirAng_p1"];
var _emscripten_bind_btCapsuleShapeX__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btCapsuleShapeX__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btCapsuleShapeX__setImplicitShapeDimensions_p1"];
var _emscripten_bind_btGhostObject__setCcdMotionThreshold_p1 = Module["_emscripten_bind_btGhostObject__setCcdMotionThreshold_p1"] = asm["_emscripten_bind_btGhostObject__setCcdMotionThreshold_p1"];
var _emscripten_bind_btConcaveShape__getLocalScaling_p0 = Module["_emscripten_bind_btConcaveShape__getLocalScaling_p0"] = asm["_emscripten_bind_btConcaveShape__getLocalScaling_p0"];
var _emscripten_bind_btHingeConstraint__internalSetAppliedImpulse_p1 = Module["_emscripten_bind_btHingeConstraint__internalSetAppliedImpulse_p1"] = asm["_emscripten_bind_btHingeConstraint__internalSetAppliedImpulse_p1"];
var _emscripten_bind_btTriangleInfo__set_m_edgeV1V2Angle_p1 = Module["_emscripten_bind_btTriangleInfo__set_m_edgeV1V2Angle_p1"] = asm["_emscripten_bind_btTriangleInfo__set_m_edgeV1V2Angle_p1"];
var _emscripten_bind_btQuaternion__setEulerZYX_p3 = Module["_emscripten_bind_btQuaternion__setEulerZYX_p3"] = asm["_emscripten_bind_btQuaternion__setEulerZYX_p3"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getName_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getName_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getName_p0"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_hitNormalWorld_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_hitNormalWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_hitNormalWorld_p0"];
var _emscripten_bind_btHashInt__getUid1_p0 = Module["_emscripten_bind_btHashInt__getUid1_p0"] = asm["_emscripten_bind_btHashInt__getUid1_p0"];
var _emscripten_bind_btCapsuleShapeZ__isConvex2d_p0 = Module["_emscripten_bind_btCapsuleShapeZ__isConvex2d_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__isConvex2d_p0"];
var _emscripten_bind_btVector3__maxAxis_p0 = Module["_emscripten_bind_btVector3__maxAxis_p0"] = asm["_emscripten_bind_btVector3__maxAxis_p0"];
var _emscripten_bind_btSliderConstraint__needsFeedback_p0 = Module["_emscripten_bind_btSliderConstraint__needsFeedback_p0"] = asm["_emscripten_bind_btSliderConstraint__needsFeedback_p0"];
var _emscripten_bind_btIDebugDraw__drawSpherePatch_p9 = Module["_emscripten_bind_btIDebugDraw__drawSpherePatch_p9"] = asm["_emscripten_bind_btIDebugDraw__drawSpherePatch_p9"];
var _emscripten_bind_btVector3__op_mul_p1 = Module["_emscripten_bind_btVector3__op_mul_p1"] = asm["_emscripten_bind_btVector3__op_mul_p1"];
var _emscripten_bind_btConvexHullShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btConvexHullShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btConvexHullShape__setImplicitShapeDimensions_p1"];
var _emscripten_bind_btRigidBody__setMassProps_p2 = Module["_emscripten_bind_btRigidBody__setMassProps_p2"] = asm["_emscripten_bind_btRigidBody__setMassProps_p2"];
var _emscripten_bind_btHeightfieldTerrainShape__getMargin_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__getMargin_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__getMargin_p0"];
var _emscripten_bind_btHingeConstraint__setUserConstraintId_p1 = Module["_emscripten_bind_btHingeConstraint__setUserConstraintId_p1"] = asm["_emscripten_bind_btHingeConstraint__setUserConstraintId_p1"];
var _emscripten_bind_btCollisionObject__setInterpolationAngularVelocity_p1 = Module["_emscripten_bind_btCollisionObject__setInterpolationAngularVelocity_p1"] = asm["_emscripten_bind_btCollisionObject__setInterpolationAngularVelocity_p1"];
var _emscripten_bind_btGeneric6DofConstraint__set_m_objectType_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__set_m_objectType_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__set_m_objectType_p1"];
var _emscripten_bind_btBvhTriangleMeshShape__usesQuantizedAabbCompression_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__usesQuantizedAabbCompression_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__usesQuantizedAabbCompression_p0"];
var _emscripten_bind_btSimpleBroadphaseProxy__get_m_aabbMax_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__get_m_aabbMax_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__get_m_aabbMax_p0"];
var _emscripten_bind_btConvexHullShape__getName_p0 = Module["_emscripten_bind_btConvexHullShape__getName_p0"] = asm["_emscripten_bind_btConvexHullShape__getName_p0"];
var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__AllHitsRayResultCallback_p2 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__AllHitsRayResultCallback_p2"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__AllHitsRayResultCallback_p2"];
var _emscripten_bind_btPoint2PointConstraint__getPivotInB_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getPivotInB_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getPivotInB_p0"];
var _emscripten_bind_btBU_Simplex1to4__setMargin_p1 = Module["_emscripten_bind_btBU_Simplex1to4__setMargin_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__setMargin_p1"];
var _emscripten_bind_btRaycastVehicle__getWheelInfo_p1 = Module["_emscripten_bind_btRaycastVehicle__getWheelInfo_p1"] = asm["_emscripten_bind_btRaycastVehicle__getWheelInfo_p1"];
var _emscripten_bind_btRigidBody__setAngularVelocity_p1 = Module["_emscripten_bind_btRigidBody__setAngularVelocity_p1"] = asm["_emscripten_bind_btRigidBody__setAngularVelocity_p1"];
var _emscripten_bind_btRigidBody__serialize_p2 = Module["_emscripten_bind_btRigidBody__serialize_p2"] = asm["_emscripten_bind_btRigidBody__serialize_p2"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintType_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintType_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintType_p1"];
var _emscripten_bind_btBvhTriangleMeshShape__getLocalAabbMax_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getLocalAabbMax_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getLocalAabbMax_p0"];
var _emscripten_bind_btPolyhedralConvexShape__setMargin_p1 = Module["_emscripten_bind_btPolyhedralConvexShape__setMargin_p1"] = asm["_emscripten_bind_btPolyhedralConvexShape__setMargin_p1"];
var _emscripten_bind_btPolyhedralConvexShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btPolyhedralConvexShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btPolyhedralConvexShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btCapsuleShapeX__getRadius_p0 = Module["_emscripten_bind_btCapsuleShapeX__getRadius_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getRadius_p0"];
var _emscripten_bind_btQuaternion__op_div_p1 = Module["_emscripten_bind_btQuaternion__op_div_p1"] = asm["_emscripten_bind_btQuaternion__op_div_p1"];
var _emscripten_bind_btCylinderShapeZ__setLocalScaling_p1 = Module["_emscripten_bind_btCylinderShapeZ__setLocalScaling_p1"] = asm["_emscripten_bind_btCylinderShapeZ__setLocalScaling_p1"];
var _emscripten_bind_btCompoundShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btCompoundShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btCompoundShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btHingeConstraint__setMotorTarget_p2 = Module["_emscripten_bind_btHingeConstraint__setMotorTarget_p2"] = asm["_emscripten_bind_btHingeConstraint__setMotorTarget_p2"];
var _emscripten_bind_btConeShapeX__getAabbSlow_p3 = Module["_emscripten_bind_btConeShapeX__getAabbSlow_p3"] = asm["_emscripten_bind_btConeShapeX__getAabbSlow_p3"];
var _emscripten_bind_btMultiSphereShape____destroy___p0 = Module["_emscripten_bind_btMultiSphereShape____destroy___p0"] = asm["_emscripten_bind_btMultiSphereShape____destroy___p0"];
var _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_hitPointInWorld_p1 = Module["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_hitPointInWorld_p1"] = asm["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_hitPointInWorld_p1"];
var _emscripten_bind_btOptimizedBvh__quantizeWithClamp_p3 = Module["_emscripten_bind_btOptimizedBvh__quantizeWithClamp_p3"] = asm["_emscripten_bind_btOptimizedBvh__quantizeWithClamp_p3"];
var _emscripten_bind_btConvexShape__getAabbSlow_p3 = Module["_emscripten_bind_btConvexShape__getAabbSlow_p3"] = asm["_emscripten_bind_btConvexShape__getAabbSlow_p3"];
var _emscripten_bind_btCylinderShapeZ__getAabbNonVirtual_p3 = Module["_emscripten_bind_btCylinderShapeZ__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btCylinderShapeZ__getAabbNonVirtual_p3"];
var _emscripten_bind_btCylinderShapeZ__isCompound_p0 = Module["_emscripten_bind_btCylinderShapeZ__isCompound_p0"] = asm["_emscripten_bind_btCylinderShapeZ__isCompound_p0"];
var _emscripten_bind_btPoint2PointConstraint__getObjectType_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getObjectType_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getObjectType_p0"];
var _emscripten_bind_btCylinderShapeX__isSoftBody_p0 = Module["_emscripten_bind_btCylinderShapeX__isSoftBody_p0"] = asm["_emscripten_bind_btCylinderShapeX__isSoftBody_p0"];
var _emscripten_bind_btManifoldPoint__get_m_lateralFrictionDir1_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_lateralFrictionDir1_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_lateralFrictionDir1_p0"];
var _emscripten_bind_btSliderConstraint__getDampingOrthoLin_p0 = Module["_emscripten_bind_btSliderConstraint__getDampingOrthoLin_p0"] = asm["_emscripten_bind_btSliderConstraint__getDampingOrthoLin_p0"];
var _emscripten_bind_btUniformScalingShape__getAabb_p3 = Module["_emscripten_bind_btUniformScalingShape__getAabb_p3"] = asm["_emscripten_bind_btUniformScalingShape__getAabb_p3"];
var _emscripten_bind_btSimpleDynamicsWorld__synchronizeMotionStates_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__synchronizeMotionStates_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__synchronizeMotionStates_p0"];
var _emscripten_bind_btHeightfieldTerrainShape__isCompound_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__isCompound_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__isCompound_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btCapsuleShapeZ__isConcave_p0 = Module["_emscripten_bind_btCapsuleShapeZ__isConcave_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__isConcave_p0"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__getAabb_p3 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__getAabb_p3"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__getAabb_p3"];
var _emscripten_bind_btDiscreteDynamicsWorld__getWorldUserInfo_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getWorldUserInfo_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getWorldUserInfo_p0"];
var _emscripten_bind_btBoxShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btBoxShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btBoxShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _emscripten_bind_btConeShapeX__getMarginNonVirtual_p0 = Module["_emscripten_bind_btConeShapeX__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btConeShapeX__getMarginNonVirtual_p0"];
var _emscripten_bind_btConeShapeZ__btConeShapeZ_p2 = Module["_emscripten_bind_btConeShapeZ__btConeShapeZ_p2"] = asm["_emscripten_bind_btConeShapeZ__btConeShapeZ_p2"];
var _emscripten_bind_btVector4__maxAxis4_p0 = Module["_emscripten_bind_btVector4__maxAxis4_p0"] = asm["_emscripten_bind_btVector4__maxAxis4_p0"];
var _emscripten_bind_btTranslationalLimitMotor__set_m_currentLinearDiff_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_currentLinearDiff_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_currentLinearDiff_p1"];
var _emscripten_bind_btVector4__absolute4_p0 = Module["_emscripten_bind_btVector4__absolute4_p0"] = asm["_emscripten_bind_btVector4__absolute4_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__setUserPointer_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__setUserPointer_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__setUserPointer_p1"];
var _emscripten_bind_btSerializer__findNameForPointer_p1 = Module["_emscripten_bind_btSerializer__findNameForPointer_p1"] = asm["_emscripten_bind_btSerializer__findNameForPointer_p1"];
var _emscripten_bind_btSimpleBroadphaseProxy__btSimpleBroadphaseProxy_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__btSimpleBroadphaseProxy_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__btSimpleBroadphaseProxy_p0"];
var _emscripten_bind_btSimpleBroadphaseProxy__btSimpleBroadphaseProxy_p7 = Module["_emscripten_bind_btSimpleBroadphaseProxy__btSimpleBroadphaseProxy_p7"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__btSimpleBroadphaseProxy_p7"];
var _emscripten_bind_btPairCachingGhostObject__activate_p1 = Module["_emscripten_bind_btPairCachingGhostObject__activate_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__activate_p1"];
var _emscripten_bind_btPairCachingGhostObject__activate_p0 = Module["_emscripten_bind_btPairCachingGhostObject__activate_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__activate_p0"];
var _emscripten_bind_btMatrix3x3__op_sub_p1 = Module["_emscripten_bind_btMatrix3x3__op_sub_p1"] = asm["_emscripten_bind_btMatrix3x3__op_sub_p1"];
var _emscripten_bind_btGhostObject__getRestitution_p0 = Module["_emscripten_bind_btGhostObject__getRestitution_p0"] = asm["_emscripten_bind_btGhostObject__getRestitution_p0"];
var _emscripten_bind_btHinge2Constraint__getAngle1_p0 = Module["_emscripten_bind_btHinge2Constraint__getAngle1_p0"] = asm["_emscripten_bind_btHinge2Constraint__getAngle1_p0"];
var _emscripten_bind_btSphereShape__serialize_p2 = Module["_emscripten_bind_btSphereShape__serialize_p2"] = asm["_emscripten_bind_btSphereShape__serialize_p2"];
var _emscripten_bind_btCollisionDispatcher__getDispatcherFlags_p0 = Module["_emscripten_bind_btCollisionDispatcher__getDispatcherFlags_p0"] = asm["_emscripten_bind_btCollisionDispatcher__getDispatcherFlags_p0"];
var _emscripten_bind_btCylinderShapeZ__calculateLocalInertia_p2 = Module["_emscripten_bind_btCylinderShapeZ__calculateLocalInertia_p2"] = asm["_emscripten_bind_btCylinderShapeZ__calculateLocalInertia_p2"];
var _emscripten_bind_btOverlappingPairCache__processAllOverlappingPairs_p2 = Module["_emscripten_bind_btOverlappingPairCache__processAllOverlappingPairs_p2"] = asm["_emscripten_bind_btOverlappingPairCache__processAllOverlappingPairs_p2"];
var _emscripten_bind_btRigidBody__setBroadphaseHandle_p1 = Module["_emscripten_bind_btRigidBody__setBroadphaseHandle_p1"] = asm["_emscripten_bind_btRigidBody__setBroadphaseHandle_p1"];
var _emscripten_bind_btManifoldPoint__set_m_combinedFriction_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_combinedFriction_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_combinedFriction_p1"];
var _emscripten_bind_btCapsuleShapeX__getUserPointer_p0 = Module["_emscripten_bind_btCapsuleShapeX__getUserPointer_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getUserPointer_p0"];
var _emscripten_bind_btTriangleInfoMap__get_m_maxEdgeAngleThreshold_p0 = Module["_emscripten_bind_btTriangleInfoMap__get_m_maxEdgeAngleThreshold_p0"] = asm["_emscripten_bind_btTriangleInfoMap__get_m_maxEdgeAngleThreshold_p0"];
var _emscripten_bind_btSimpleBroadphaseProxy__isConvex_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__isConvex_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__isConvex_p1"];
var _emscripten_bind_btGeneric6DofConstraint__calculateTransforms_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__calculateTransforms_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__calculateTransforms_p0"];
var _emscripten_bind_btGeneric6DofConstraint__calculateTransforms_p2 = Module["_emscripten_bind_btGeneric6DofConstraint__calculateTransforms_p2"] = asm["_emscripten_bind_btGeneric6DofConstraint__calculateTransforms_p2"];
var _emscripten_bind_btTranslationalLimitMotor__set_m_stopERP_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_stopERP_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_stopERP_p1"];
var _emscripten_bind_btManifoldPoint__set_m_lateralFrictionInitialized_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_lateralFrictionInitialized_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_lateralFrictionInitialized_p1"];
var _emscripten_bind_btPersistentManifold__btPersistentManifold_p5 = Module["_emscripten_bind_btPersistentManifold__btPersistentManifold_p5"] = asm["_emscripten_bind_btPersistentManifold__btPersistentManifold_p5"];
var _emscripten_bind_btDbvtProxy__set_m_collisionFilterMask_p1 = Module["_emscripten_bind_btDbvtProxy__set_m_collisionFilterMask_p1"] = asm["_emscripten_bind_btDbvtProxy__set_m_collisionFilterMask_p1"];
var _emscripten_bind_btManifoldPoint__getPositionWorldOnA_p0 = Module["_emscripten_bind_btManifoldPoint__getPositionWorldOnA_p0"] = asm["_emscripten_bind_btManifoldPoint__getPositionWorldOnA_p0"];
var _emscripten_bind_btCylinderShapeZ__getMarginNV_p0 = Module["_emscripten_bind_btCylinderShapeZ__getMarginNV_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getMarginNV_p0"];
var _emscripten_bind_btTriangleMesh__addIndexedMesh_p1 = Module["_emscripten_bind_btTriangleMesh__addIndexedMesh_p1"] = asm["_emscripten_bind_btTriangleMesh__addIndexedMesh_p1"];
var _emscripten_bind_btGeneric6DofConstraint__getAngularUpperLimit_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getAngularUpperLimit_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getAngularUpperLimit_p1"];
var _emscripten_bind_btTriangleMesh__addIndexedMesh_p2 = Module["_emscripten_bind_btTriangleMesh__addIndexedMesh_p2"] = asm["_emscripten_bind_btTriangleMesh__addIndexedMesh_p2"];
var _emscripten_bind_btSliderConstraint__setFrames_p2 = Module["_emscripten_bind_btSliderConstraint__setFrames_p2"] = asm["_emscripten_bind_btSliderConstraint__setFrames_p2"];
var _emscripten_bind_btUniformScalingShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btUniformScalingShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btUniformScalingShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btDispatcherInfo__get_m_allowedCcdPenetration_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_allowedCcdPenetration_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_allowedCcdPenetration_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__removeAction_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__removeAction_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__removeAction_p1"];
var _emscripten_bind_btContactConstraint__setContactManifold_p1 = Module["_emscripten_bind_btContactConstraint__setContactManifold_p1"] = asm["_emscripten_bind_btContactConstraint__setContactManifold_p1"];
var _emscripten_bind_btSphereShape__setUserPointer_p1 = Module["_emscripten_bind_btSphereShape__setUserPointer_p1"] = asm["_emscripten_bind_btSphereShape__setUserPointer_p1"];
var _emscripten_bind_btUniversalConstraint__getLinearUpperLimit_p1 = Module["_emscripten_bind_btUniversalConstraint__getLinearUpperLimit_p1"] = asm["_emscripten_bind_btUniversalConstraint__getLinearUpperLimit_p1"];
var _emscripten_bind_btCapsuleShapeZ__getUpAxis_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getUpAxis_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getUpAxis_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__getDebugDrawer_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getDebugDrawer_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getDebugDrawer_p0"];
var _emscripten_bind_btBU_Simplex1to4__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btBU_Simplex1to4__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__getContactBreakingThreshold_p1"];
var _emscripten_bind_btPolyhedralConvexShape__getPlane_p3 = Module["_emscripten_bind_btPolyhedralConvexShape__getPlane_p3"] = asm["_emscripten_bind_btPolyhedralConvexShape__getPlane_p3"];
var _emscripten_bind_btManifoldPoint__get_m_lateralFrictionDir2_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_lateralFrictionDir2_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_lateralFrictionDir2_p0"];
var _emscripten_bind_btStorageResult__get_m_normalOnSurfaceB_p0 = Module["_emscripten_bind_btStorageResult__get_m_normalOnSurfaceB_p0"] = asm["_emscripten_bind_btStorageResult__get_m_normalOnSurfaceB_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__clearForces_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__clearForces_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__clearForces_p0"];
var _emscripten_bind_btPoint2PointConstraint__setPivotB_p1 = Module["_emscripten_bind_btPoint2PointConstraint__setPivotB_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__setPivotB_p1"];
var _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_distFraction_p0 = Module["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_distFraction_p0"] = asm["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_distFraction_p0"];
var _emscripten_bind_btSerializer__finalizeChunk_p4 = Module["_emscripten_bind_btSerializer__finalizeChunk_p4"] = asm["_emscripten_bind_btSerializer__finalizeChunk_p4"];
var _emscripten_bind_btGeneric6DofConstraint__setEnabled_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setEnabled_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setEnabled_p1"];
var _emscripten_bind_btSliderConstraint__setRestitutionOrthoAng_p1 = Module["_emscripten_bind_btSliderConstraint__setRestitutionOrthoAng_p1"] = asm["_emscripten_bind_btSliderConstraint__setRestitutionOrthoAng_p1"];
var _emscripten_bind_btCylinderShapeX__getLocalScaling_p0 = Module["_emscripten_bind_btCylinderShapeX__getLocalScaling_p0"] = asm["_emscripten_bind_btCylinderShapeX__getLocalScaling_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setLinearUpperLimit_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setLinearUpperLimit_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setLinearUpperLimit_p1"];
var _emscripten_bind_btStackAlloc__endBlock_p1 = Module["_emscripten_bind_btStackAlloc__endBlock_p1"] = asm["_emscripten_bind_btStackAlloc__endBlock_p1"];
var _emscripten_bind_btCylinderShape__setLocalScaling_p1 = Module["_emscripten_bind_btCylinderShape__setLocalScaling_p1"] = asm["_emscripten_bind_btCylinderShape__setLocalScaling_p1"];
var _emscripten_bind_btPairCachingGhostObject__internalSetTemporaryCollisionShape_p1 = Module["_emscripten_bind_btPairCachingGhostObject__internalSetTemporaryCollisionShape_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__internalSetTemporaryCollisionShape_p1"];
var _emscripten_bind_btTriangleInfoMap__set_m_zeroAreaThreshold_p1 = Module["_emscripten_bind_btTriangleInfoMap__set_m_zeroAreaThreshold_p1"] = asm["_emscripten_bind_btTriangleInfoMap__set_m_zeroAreaThreshold_p1"];
var _emscripten_bind_btCompoundShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btCompoundShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btCompoundShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btMatrix3x3__adjoint_p0 = Module["_emscripten_bind_btMatrix3x3__adjoint_p0"] = asm["_emscripten_bind_btMatrix3x3__adjoint_p0"];
var _emscripten_bind_btPoint2PointConstraint__getBreakingImpulseThreshold_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getBreakingImpulseThreshold_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getBreakingImpulseThreshold_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__getMeshInterface_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getMeshInterface_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getMeshInterface_p0"];
var _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__ClosestPointInput_p0 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__ClosestPointInput_p0"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__ClosestPointInput_p0"];
var _emscripten_bind_btDbvtProxy__set_m_multiSapParentProxy_p1 = Module["_emscripten_bind_btDbvtProxy__set_m_multiSapParentProxy_p1"] = asm["_emscripten_bind_btDbvtProxy__set_m_multiSapParentProxy_p1"];
var _emscripten_bind_btVector4__normalized_p0 = Module["_emscripten_bind_btVector4__normalized_p0"] = asm["_emscripten_bind_btVector4__normalized_p0"];
var _emscripten_bind_btSliderConstraint__getObjectType_p0 = Module["_emscripten_bind_btSliderConstraint__getObjectType_p0"] = asm["_emscripten_bind_btSliderConstraint__getObjectType_p0"];
var _emscripten_bind_btRigidBody__setGravity_p1 = Module["_emscripten_bind_btRigidBody__setGravity_p1"] = asm["_emscripten_bind_btRigidBody__setGravity_p1"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__isConcave_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isConcave_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isConcave_p0"];
var _emscripten_bind_btDynamicsWorld__removeConstraint_p1 = Module["_emscripten_bind_btDynamicsWorld__removeConstraint_p1"] = asm["_emscripten_bind_btDynamicsWorld__removeConstraint_p1"];
var _emscripten_bind_btPersistentManifold__clearUserCache_p1 = Module["_emscripten_bind_btPersistentManifold__clearUserCache_p1"] = asm["_emscripten_bind_btPersistentManifold__clearUserCache_p1"];
var _emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p5 = Module["_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p5"] = asm["_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p5"];
var _emscripten_bind_btBvhTriangleMeshShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btBvhTriangleMeshShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btBvhTriangleMeshShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btDbvtProxy__btDbvtProxy_p5 = Module["_emscripten_bind_btDbvtProxy__btDbvtProxy_p5"] = asm["_emscripten_bind_btDbvtProxy__btDbvtProxy_p5"];
var _emscripten_bind_btCollisionShape__setLocalScaling_p1 = Module["_emscripten_bind_btCollisionShape__setLocalScaling_p1"] = asm["_emscripten_bind_btCollisionShape__setLocalScaling_p1"];
var _emscripten_bind_btUniversalConstraint__getObjectType_p0 = Module["_emscripten_bind_btUniversalConstraint__getObjectType_p0"] = asm["_emscripten_bind_btUniversalConstraint__getObjectType_p0"];
var _emscripten_bind_btSphereShape__getAabbSlow_p3 = Module["_emscripten_bind_btSphereShape__getAabbSlow_p3"] = asm["_emscripten_bind_btSphereShape__getAabbSlow_p3"];
var _emscripten_bind_btConeShapeZ__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btConeShapeZ__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btConeShapeZ__getImplicitShapeDimensions_p0"];
var _emscripten_bind_btConvexShape__getName_p0 = Module["_emscripten_bind_btConvexShape__getName_p0"] = asm["_emscripten_bind_btConvexShape__getName_p0"];
var _emscripten_bind_btRotationalLimitMotor__testLimitValue_p1 = Module["_emscripten_bind_btRotationalLimitMotor__testLimitValue_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__testLimitValue_p1"];
var _emscripten_bind_btCollisionWorld__getDispatchInfo_p0 = Module["_emscripten_bind_btCollisionWorld__getDispatchInfo_p0"] = asm["_emscripten_bind_btCollisionWorld__getDispatchInfo_p0"];
var _emscripten_bind_btDefaultCollisionConfiguration__getStackAllocator_p0 = Module["_emscripten_bind_btDefaultCollisionConfiguration__getStackAllocator_p0"] = asm["_emscripten_bind_btDefaultCollisionConfiguration__getStackAllocator_p0"];
var _emscripten_bind_btBoxShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btBoxShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btBoxShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btConvexInternalShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btConvexInternalShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btConvexInternalShape__getImplicitShapeDimensions_p0"];
var _emscripten_bind_btDispatcher__getInternalManifoldPool_p0 = Module["_emscripten_bind_btDispatcher__getInternalManifoldPool_p0"] = asm["_emscripten_bind_btDispatcher__getInternalManifoldPool_p0"];
var _emscripten_bind_btContactConstraint__getBreakingImpulseThreshold_p0 = Module["_emscripten_bind_btContactConstraint__getBreakingImpulseThreshold_p0"] = asm["_emscripten_bind_btContactConstraint__getBreakingImpulseThreshold_p0"];
var _emscripten_bind_btPairCachingGhostObject__getCollisionShape_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getCollisionShape_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getCollisionShape_p0"];
var _emscripten_bind_btConvexHullShape__getConvexPolyhedron_p0 = Module["_emscripten_bind_btConvexHullShape__getConvexPolyhedron_p0"] = asm["_emscripten_bind_btConvexHullShape__getConvexPolyhedron_p0"];
var _emscripten_bind_btCylinderShapeX__getHalfExtentsWithMargin_p0 = Module["_emscripten_bind_btCylinderShapeX__getHalfExtentsWithMargin_p0"] = asm["_emscripten_bind_btCylinderShapeX__getHalfExtentsWithMargin_p0"];
var _emscripten_bind_btHinge2Constraint__getUserConstraintId_p0 = Module["_emscripten_bind_btHinge2Constraint__getUserConstraintId_p0"] = asm["_emscripten_bind_btHinge2Constraint__getUserConstraintId_p0"];
var _emscripten_bind_btQuaternion__setRotation_p2 = Module["_emscripten_bind_btQuaternion__setRotation_p2"] = asm["_emscripten_bind_btQuaternion__setRotation_p2"];
var _emscripten_bind_btRigidBody__internalGetVelocityInLocalPointObsolete_p2 = Module["_emscripten_bind_btRigidBody__internalGetVelocityInLocalPointObsolete_p2"] = asm["_emscripten_bind_btRigidBody__internalGetVelocityInLocalPointObsolete_p2"];
var _emscripten_bind_btCylinderShapeX__isPolyhedral_p0 = Module["_emscripten_bind_btCylinderShapeX__isPolyhedral_p0"] = asm["_emscripten_bind_btCylinderShapeX__isPolyhedral_p0"];
var _emscripten_bind_btEmptyShape__getShapeType_p0 = Module["_emscripten_bind_btEmptyShape__getShapeType_p0"] = asm["_emscripten_bind_btEmptyShape__getShapeType_p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_friction_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_friction_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_friction_p0"];
var _emscripten_bind_btManifoldResult__getBody1Internal_p0 = Module["_emscripten_bind_btManifoldResult__getBody1Internal_p0"] = asm["_emscripten_bind_btManifoldResult__getBody1Internal_p0"];
var _emscripten_bind_btPoint2PointConstraint__setUserConstraintId_p1 = Module["_emscripten_bind_btPoint2PointConstraint__setUserConstraintId_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__setUserConstraintId_p1"];
var _emscripten_bind_btDbvtBroadphase__get_m_updates_ratio_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_updates_ratio_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_updates_ratio_p0"];
var _emscripten_bind_btQuadWord__op_set_p1 = Module["_emscripten_bind_btQuadWord__op_set_p1"] = asm["_emscripten_bind_btQuadWord__op_set_p1"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__isCompound_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isCompound_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isCompound_p0"];
var _emscripten_bind_btPersistentManifold__getNumContacts_p0 = Module["_emscripten_bind_btPersistentManifold__getNumContacts_p0"] = asm["_emscripten_bind_btPersistentManifold__getNumContacts_p0"];
var _emscripten_bind_btUniversalConstraint__get_m_objectType_p0 = Module["_emscripten_bind_btUniversalConstraint__get_m_objectType_p0"] = asm["_emscripten_bind_btUniversalConstraint__get_m_objectType_p0"];
var _emscripten_bind_btRotationalLimitMotor__get_m_loLimit_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_loLimit_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_loLimit_p0"];
var _emscripten_bind_btGeneric6DofConstraint__setAxis_p2 = Module["_emscripten_bind_btGeneric6DofConstraint__setAxis_p2"] = asm["_emscripten_bind_btGeneric6DofConstraint__setAxis_p2"];
var _emscripten_bind_btWheelInfo__getSuspensionRestLength_p0 = Module["_emscripten_bind_btWheelInfo__getSuspensionRestLength_p0"] = asm["_emscripten_bind_btWheelInfo__getSuspensionRestLength_p0"];
var _emscripten_bind_btSphereShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btSphereShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btSphereShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btHingeConstraint__getBreakingImpulseThreshold_p0 = Module["_emscripten_bind_btHingeConstraint__getBreakingImpulseThreshold_p0"] = asm["_emscripten_bind_btHingeConstraint__getBreakingImpulseThreshold_p0"];
var _emscripten_bind_btHashPtr__getPointer_p0 = Module["_emscripten_bind_btHashPtr__getPointer_p0"] = asm["_emscripten_bind_btHashPtr__getPointer_p0"];
var _emscripten_bind_btHinge2Constraint__getCalculatedTransformB_p0 = Module["_emscripten_bind_btHinge2Constraint__getCalculatedTransformB_p0"] = asm["_emscripten_bind_btHinge2Constraint__getCalculatedTransformB_p0"];
var _emscripten_bind_btPairCachingGhostObject__internalSetExtensionPointer_p1 = Module["_emscripten_bind_btPairCachingGhostObject__internalSetExtensionPointer_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__internalSetExtensionPointer_p1"];
var _emscripten_bind_btConvexInternalAabbCachingShape__getAabbSlow_p3 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getAabbSlow_p3"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getAabbSlow_p3"];
var _emscripten_bind_btBvhTriangleMeshShape__partialRefitTree_p2 = Module["_emscripten_bind_btBvhTriangleMeshShape__partialRefitTree_p2"] = asm["_emscripten_bind_btBvhTriangleMeshShape__partialRefitTree_p2"];
var _emscripten_bind_btConeShape____destroy___p0 = Module["_emscripten_bind_btConeShape____destroy___p0"] = asm["_emscripten_bind_btConeShape____destroy___p0"];
var _emscripten_bind_btSphereShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btSphereShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btSphereShape__setImplicitShapeDimensions_p1"];
var _emscripten_bind_btConeTwistConstraint__setMotorTarget_p1 = Module["_emscripten_bind_btConeTwistConstraint__setMotorTarget_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setMotorTarget_p1"];
var _emscripten_bind_btConvexShape__serialize_p2 = Module["_emscripten_bind_btConvexShape__serialize_p2"] = asm["_emscripten_bind_btConvexShape__serialize_p2"];
var _emscripten_bind_btContactConstraint__setDbgDrawSize_p1 = Module["_emscripten_bind_btContactConstraint__setDbgDrawSize_p1"] = asm["_emscripten_bind_btContactConstraint__setDbgDrawSize_p1"];
var _emscripten_bind_btQuaternion__setEuler_p3 = Module["_emscripten_bind_btQuaternion__setEuler_p3"] = asm["_emscripten_bind_btQuaternion__setEuler_p3"];
var _emscripten_bind_btTriangleInfoMap__get_m_equalVertexThreshold_p0 = Module["_emscripten_bind_btTriangleInfoMap__get_m_equalVertexThreshold_p0"] = asm["_emscripten_bind_btTriangleInfoMap__get_m_equalVertexThreshold_p0"];
var _emscripten_bind_btTriangleIndexVertexArray__preallocateIndices_p1 = Module["_emscripten_bind_btTriangleIndexVertexArray__preallocateIndices_p1"] = asm["_emscripten_bind_btTriangleIndexVertexArray__preallocateIndices_p1"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getEdge_p3 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getEdge_p3"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getEdge_p3"];
var _emscripten_bind_btPairCachingGhostObject__isStaticObject_p0 = Module["_emscripten_bind_btPairCachingGhostObject__isStaticObject_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__isStaticObject_p0"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_hitNormalWorld_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_hitNormalWorld_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_hitNormalWorld_p1"];
var _emscripten_bind_btBoxShape__getEdge_p3 = Module["_emscripten_bind_btBoxShape__getEdge_p3"] = asm["_emscripten_bind_btBoxShape__getEdge_p3"];
var _emscripten_bind_btVector4__serializeFloat_p1 = Module["_emscripten_bind_btVector4__serializeFloat_p1"] = asm["_emscripten_bind_btVector4__serializeFloat_p1"];
var _emscripten_bind_btMultiSphereShape__setUserPointer_p1 = Module["_emscripten_bind_btMultiSphereShape__setUserPointer_p1"] = asm["_emscripten_bind_btMultiSphereShape__setUserPointer_p1"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabb_p3 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabb_p3"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabb_p3"];
var _emscripten_bind_CProfileNode__Get_Name_p0 = Module["_emscripten_bind_CProfileNode__Get_Name_p0"] = asm["_emscripten_bind_CProfileNode__Get_Name_p0"];
var _emscripten_bind_bt32BitAxisSweep3__aabbTest_p3 = Module["_emscripten_bind_bt32BitAxisSweep3__aabbTest_p3"] = asm["_emscripten_bind_bt32BitAxisSweep3__aabbTest_p3"];
var _emscripten_bind_btStaticPlaneShape__getBoundingSphere_p2 = Module["_emscripten_bind_btStaticPlaneShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btStaticPlaneShape__getBoundingSphere_p2"];
var _emscripten_bind_btDbvtBroadphase__getVelocityPrediction_p0 = Module["_emscripten_bind_btDbvtBroadphase__getVelocityPrediction_p0"] = asm["_emscripten_bind_btDbvtBroadphase__getVelocityPrediction_p0"];
var _emscripten_bind_btSliderConstraint____destroy___p0 = Module["_emscripten_bind_btSliderConstraint____destroy___p0"] = asm["_emscripten_bind_btSliderConstraint____destroy___p0"];
var _emscripten_bind_btPairCachingGhostObject__addOverlappingObjectInternal_p2 = Module["_emscripten_bind_btPairCachingGhostObject__addOverlappingObjectInternal_p2"] = asm["_emscripten_bind_btPairCachingGhostObject__addOverlappingObjectInternal_p2"];
var _emscripten_bind_btUniversalConstraint__getAnchor_p0 = Module["_emscripten_bind_btUniversalConstraint__getAnchor_p0"] = asm["_emscripten_bind_btUniversalConstraint__getAnchor_p0"];
var _emscripten_bind_btPairCachingGhostObject__addOverlappingObjectInternal_p1 = Module["_emscripten_bind_btPairCachingGhostObject__addOverlappingObjectInternal_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__addOverlappingObjectInternal_p1"];
var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionFilterGroup_p1 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionFilterGroup_p1"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionFilterGroup_p1"];
var _emscripten_bind_btRotationalLimitMotor__isLimited_p0 = Module["_emscripten_bind_btRotationalLimitMotor__isLimited_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__isLimited_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__setMargin_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__setMargin_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__setMargin_p1"];
var _emscripten_bind_btHingeConstraint__updateRHS_p1 = Module["_emscripten_bind_btHingeConstraint__updateRHS_p1"] = asm["_emscripten_bind_btHingeConstraint__updateRHS_p1"];
var _emscripten_bind_btIndexedMesh__set_m_indexType_p1 = Module["_emscripten_bind_btIndexedMesh__set_m_indexType_p1"] = asm["_emscripten_bind_btIndexedMesh__set_m_indexType_p1"];
var _emscripten_bind_btSimpleDynamicsWorld__removeCollisionObject_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__removeCollisionObject_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__removeCollisionObject_p1"];
var _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_stackAlloc_p0 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_stackAlloc_p0"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_stackAlloc_p0"];
var _emscripten_bind_btManifoldPoint__get_m_distance1_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_distance1_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_distance1_p0"];
var _emscripten_bind_btSliderConstraint__getBreakingImpulseThreshold_p0 = Module["_emscripten_bind_btSliderConstraint__getBreakingImpulseThreshold_p0"] = asm["_emscripten_bind_btSliderConstraint__getBreakingImpulseThreshold_p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_angularSleepingThreshold_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_angularSleepingThreshold_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_angularSleepingThreshold_p1"];
var _emscripten_bind_btClock__getTimeMicroseconds_p0 = Module["_emscripten_bind_btClock__getTimeMicroseconds_p0"] = asm["_emscripten_bind_btClock__getTimeMicroseconds_p0"];
var _emscripten_bind_btCapsuleShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btCapsuleShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btCapsuleShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _llvm_uadd_with_overflow_i64 = Module["_llvm_uadd_with_overflow_i64"] = asm["_llvm_uadd_with_overflow_i64"];
var _emscripten_bind_btSliderConstraint__getSoftnessOrthoAng_p0 = Module["_emscripten_bind_btSliderConstraint__getSoftnessOrthoAng_p0"] = asm["_emscripten_bind_btSliderConstraint__getSoftnessOrthoAng_p0"];
var _emscripten_bind_btCylinderShapeX__getMargin_p0 = Module["_emscripten_bind_btCylinderShapeX__getMargin_p0"] = asm["_emscripten_bind_btCylinderShapeX__getMargin_p0"];
var _emscripten_bind_btContactConstraint__enableFeedback_p1 = Module["_emscripten_bind_btContactConstraint__enableFeedback_p1"] = asm["_emscripten_bind_btContactConstraint__enableFeedback_p1"];
var _emscripten_bind_btCylinderShapeX__getLocalScalingNV_p0 = Module["_emscripten_bind_btCylinderShapeX__getLocalScalingNV_p0"] = asm["_emscripten_bind_btCylinderShapeX__getLocalScalingNV_p0"];
var _emscripten_bind_btPoint2PointConstraint__setPivotA_p1 = Module["_emscripten_bind_btPoint2PointConstraint__setPivotA_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__setPivotA_p1"];
var _emscripten_bind_btConeTwistConstraint__setParam_p3 = Module["_emscripten_bind_btConeTwistConstraint__setParam_p3"] = asm["_emscripten_bind_btConeTwistConstraint__setParam_p3"];
var _emscripten_bind_btConeShapeX__calculateTemporalAabb_p6 = Module["_emscripten_bind_btConeShapeX__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btConeShapeX__calculateTemporalAabb_p6"];
var _emscripten_bind_btHinge2Constraint__updateRHS_p1 = Module["_emscripten_bind_btHinge2Constraint__updateRHS_p1"] = asm["_emscripten_bind_btHinge2Constraint__updateRHS_p1"];
var _emscripten_bind_btRaycastVehicle__btVehicleTuning__btVehicleTuning_p0 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__btVehicleTuning_p0"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__btVehicleTuning_p0"];
var _emscripten_bind_btMultiSphereShape__isConvex_p0 = Module["_emscripten_bind_btMultiSphereShape__isConvex_p0"] = asm["_emscripten_bind_btMultiSphereShape__isConvex_p0"];
var _emscripten_bind_btRigidBody__setDamping_p2 = Module["_emscripten_bind_btRigidBody__setDamping_p2"] = asm["_emscripten_bind_btRigidBody__setDamping_p2"];
var _emscripten_bind_btQuaternion__x_p0 = Module["_emscripten_bind_btQuaternion__x_p0"] = asm["_emscripten_bind_btQuaternion__x_p0"];
var _emscripten_bind_btConeShapeZ__calculateTemporalAabb_p6 = Module["_emscripten_bind_btConeShapeZ__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btConeShapeZ__calculateTemporalAabb_p6"];
var _emscripten_bind_btContinuousDynamicsWorld__setForceUpdateAllAabbs_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__setForceUpdateAllAabbs_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setForceUpdateAllAabbs_p1"];
var _emscripten_bind_btPersistentManifold__getContactPoint_p1 = Module["_emscripten_bind_btPersistentManifold__getContactPoint_p1"] = asm["_emscripten_bind_btPersistentManifold__getContactPoint_p1"];
var _emscripten_bind_btCapsuleShapeX__getMarginNonVirtual_p0 = Module["_emscripten_bind_btCapsuleShapeX__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getMarginNonVirtual_p0"];
var _emscripten_bind_btCylinderShapeZ__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btCylinderShapeZ__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btCylinderShapeZ__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_btBvhTriangleMeshShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__localGetSupportingVertex_p1"];
var _emscripten_bind_btMotionState__getWorldTransform_p1 = Module["_emscripten_bind_btMotionState__getWorldTransform_p1"] = asm["_emscripten_bind_btMotionState__getWorldTransform_p1"];
var _emscripten_bind_btRigidBody__activate_p0 = Module["_emscripten_bind_btRigidBody__activate_p0"] = asm["_emscripten_bind_btRigidBody__activate_p0"];
var _emscripten_bind_btRigidBody__activate_p1 = Module["_emscripten_bind_btRigidBody__activate_p1"] = asm["_emscripten_bind_btRigidBody__activate_p1"];
var _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__btVehicleRaycasterResult_p0 = Module["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__btVehicleRaycasterResult_p0"] = asm["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__btVehicleRaycasterResult_p0"];
var _emscripten_bind_btCompoundShape__setLocalScaling_p1 = Module["_emscripten_bind_btCompoundShape__setLocalScaling_p1"] = asm["_emscripten_bind_btCompoundShape__setLocalScaling_p1"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionObject_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionObject_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionObject_p0"];
var _emscripten_bind_btCollisionObject__setCompanionId_p1 = Module["_emscripten_bind_btCollisionObject__setCompanionId_p1"] = asm["_emscripten_bind_btCollisionObject__setCompanionId_p1"];
var _emscripten_bind_btConeTwistConstraint__set_m_objectType_p1 = Module["_emscripten_bind_btConeTwistConstraint__set_m_objectType_p1"] = asm["_emscripten_bind_btConeTwistConstraint__set_m_objectType_p1"];
var _emscripten_bind_btDynamicsWorld__getNumConstraints_p0 = Module["_emscripten_bind_btDynamicsWorld__getNumConstraints_p0"] = asm["_emscripten_bind_btDynamicsWorld__getNumConstraints_p0"];
var _emscripten_bind_btGhostObject__rayTest_p3 = Module["_emscripten_bind_btGhostObject__rayTest_p3"] = asm["_emscripten_bind_btGhostObject__rayTest_p3"];
var _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput____destroy___p0 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput____destroy___p0"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput____destroy___p0"];
var _emscripten_bind_btBoxShape__isConcave_p0 = Module["_emscripten_bind_btBoxShape__isConcave_p0"] = asm["_emscripten_bind_btBoxShape__isConcave_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p1"];
var _emscripten_bind_btPolyhedralConvexShape__isCompound_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__isCompound_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__isCompound_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__btSimpleDynamicsWorld_p4 = Module["_emscripten_bind_btSimpleDynamicsWorld__btSimpleDynamicsWorld_p4"] = asm["_emscripten_bind_btSimpleDynamicsWorld__btSimpleDynamicsWorld_p4"];
var _emscripten_bind_btSliderConstraint__setUserConstraintType_p1 = Module["_emscripten_bind_btSliderConstraint__setUserConstraintType_p1"] = asm["_emscripten_bind_btSliderConstraint__setUserConstraintType_p1"];
var _emscripten_bind_btConeTwistConstraint__setMaxMotorImpulse_p1 = Module["_emscripten_bind_btConeTwistConstraint__setMaxMotorImpulse_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setMaxMotorImpulse_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p3 = Module["_emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p3"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p3"];
var _emscripten_bind_btCollisionConfiguration__getStackAllocator_p0 = Module["_emscripten_bind_btCollisionConfiguration__getStackAllocator_p0"] = asm["_emscripten_bind_btCollisionConfiguration__getStackAllocator_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btConvexTriangleMeshShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btConvexTriangleMeshShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btStaticPlaneShape__serialize_p2 = Module["_emscripten_bind_btStaticPlaneShape__serialize_p2"] = asm["_emscripten_bind_btStaticPlaneShape__serialize_p2"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getLinearUpperLimit_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getLinearUpperLimit_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getLinearUpperLimit_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__rayTest_p3 = Module["_emscripten_bind_btContinuousDynamicsWorld__rayTest_p3"] = asm["_emscripten_bind_btContinuousDynamicsWorld__rayTest_p3"];
var _emscripten_bind_btSliderConstraint__getParam_p1 = Module["_emscripten_bind_btSliderConstraint__getParam_p1"] = asm["_emscripten_bind_btSliderConstraint__getParam_p1"];
var _emscripten_bind_btSliderConstraint__getParam_p2 = Module["_emscripten_bind_btSliderConstraint__getParam_p2"] = asm["_emscripten_bind_btSliderConstraint__getParam_p2"];
var _emscripten_bind_btPolyhedralConvexShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__get_limit_motor_info2_p11 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__get_limit_motor_info2_p11"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__get_limit_motor_info2_p11"];
var _emscripten_bind_btGeneric6DofConstraint__getAngle_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getAngle_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getAngle_p1"];
var _emscripten_bind_btGeneric6DofConstraint__getRotationalLimitMotor_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getRotationalLimitMotor_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getRotationalLimitMotor_p1"];
var _emscripten_bind_btCollisionObject__getActivationState_p0 = Module["_emscripten_bind_btCollisionObject__getActivationState_p0"] = asm["_emscripten_bind_btCollisionObject__getActivationState_p0"];
var _emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionFilterGroup_p1 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionFilterGroup_p1"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionFilterGroup_p1"];
var _emscripten_bind_btCollisionWorld__RayResultCallback__addSingleResult_p2 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__addSingleResult_p2"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__addSingleResult_p2"];
var _emscripten_bind_btStaticPlaneShape__isCompound_p0 = Module["_emscripten_bind_btStaticPlaneShape__isCompound_p0"] = asm["_emscripten_bind_btStaticPlaneShape__isCompound_p0"];
var _emscripten_bind_btBoxShape__isInfinite_p0 = Module["_emscripten_bind_btBoxShape__isInfinite_p0"] = asm["_emscripten_bind_btBoxShape__isInfinite_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__removeAction_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__removeAction_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__removeAction_p1"];
var _emscripten_bind_btBU_Simplex1to4__recalcLocalAabb_p0 = Module["_emscripten_bind_btBU_Simplex1to4__recalcLocalAabb_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__recalcLocalAabb_p0"];
var _emscripten_bind_btSliderConstraint__getUpperLinLimit_p0 = Module["_emscripten_bind_btSliderConstraint__getUpperLinLimit_p0"] = asm["_emscripten_bind_btSliderConstraint__getUpperLinLimit_p0"];
var _emscripten_bind_btConeShapeX__setUserPointer_p1 = Module["_emscripten_bind_btConeShapeX__setUserPointer_p1"] = asm["_emscripten_bind_btConeShapeX__setUserPointer_p1"];
var _emscripten_bind_btJacobianEntry__get_m_aJ_p0 = Module["_emscripten_bind_btJacobianEntry__get_m_aJ_p0"] = asm["_emscripten_bind_btJacobianEntry__get_m_aJ_p0"];
var _emscripten_bind_btDynamicsWorld__addRigidBody_p3 = Module["_emscripten_bind_btDynamicsWorld__addRigidBody_p3"] = asm["_emscripten_bind_btDynamicsWorld__addRigidBody_p3"];
var _emscripten_bind_btHeightfieldTerrainShape__getShapeType_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__getShapeType_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__getShapeType_p0"];
var _emscripten_bind_btPairCachingGhostObject__setInterpolationLinearVelocity_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setInterpolationLinearVelocity_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setInterpolationLinearVelocity_p1"];
var _emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p3 = Module["_emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p3"] = asm["_emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p3"];
var _emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p2 = Module["_emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p2"] = asm["_emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p2"];
var _emscripten_bind_btBoxShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btBoxShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btBoxShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btCylinderShapeZ__isConcave_p0 = Module["_emscripten_bind_btCylinderShapeZ__isConcave_p0"] = asm["_emscripten_bind_btCylinderShapeZ__isConcave_p0"];
var _emscripten_bind_btSimpleBroadphase__setAabb_p4 = Module["_emscripten_bind_btSimpleBroadphase__setAabb_p4"] = asm["_emscripten_bind_btSimpleBroadphase__setAabb_p4"];
var _emscripten_bind_btManifoldPoint__get_m_localPointB_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_localPointB_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_localPointB_p0"];
var _emscripten_bind_bt32BitAxisSweep3__getBroadphaseAabb_p2 = Module["_emscripten_bind_bt32BitAxisSweep3__getBroadphaseAabb_p2"] = asm["_emscripten_bind_bt32BitAxisSweep3__getBroadphaseAabb_p2"];
var _emscripten_bind_btDispatcherInfo__set_m_stackAllocator_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_stackAllocator_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_stackAllocator_p1"];
var _emscripten_bind_btGhostObject__setDeactivationTime_p1 = Module["_emscripten_bind_btGhostObject__setDeactivationTime_p1"] = asm["_emscripten_bind_btGhostObject__setDeactivationTime_p1"];
var _emscripten_bind_btQuaternion__getIdentity_p0 = Module["_emscripten_bind_btQuaternion__getIdentity_p0"] = asm["_emscripten_bind_btQuaternion__getIdentity_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__isEnabled_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__isEnabled_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__isEnabled_p0"];
var _emscripten_bind_btCylinderShapeX__setMargin_p1 = Module["_emscripten_bind_btCylinderShapeX__setMargin_p1"] = asm["_emscripten_bind_btCylinderShapeX__setMargin_p1"];
var _emscripten_bind_btCollisionShape__getBoundingSphere_p2 = Module["_emscripten_bind_btCollisionShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btCollisionShape__getBoundingSphere_p2"];
var _emscripten_bind_btBvhTriangleMeshShape__setUserPointer_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__setUserPointer_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__setUserPointer_p1"];
var _emscripten_bind_btDbvtBroadphase__get_m_prediction_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_prediction_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_prediction_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getBreakingImpulseThreshold_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getBreakingImpulseThreshold_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getBreakingImpulseThreshold_p0"];
var _emscripten_bind_btDispatcher__findAlgorithm_p3 = Module["_emscripten_bind_btDispatcher__findAlgorithm_p3"] = asm["_emscripten_bind_btDispatcher__findAlgorithm_p3"];
var _emscripten_bind_btDispatcher__findAlgorithm_p2 = Module["_emscripten_bind_btDispatcher__findAlgorithm_p2"] = asm["_emscripten_bind_btDispatcher__findAlgorithm_p2"];
var _emscripten_bind_btPairCachingGhostObject__setBroadphaseHandle_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setBroadphaseHandle_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setBroadphaseHandle_p1"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionObject_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionObject_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionObject_p1"];
var _emscripten_bind_btInternalTriangleIndexCallback__internalProcessTriangleIndex_p3 = Module["_emscripten_bind_btInternalTriangleIndexCallback__internalProcessTriangleIndex_p3"] = asm["_emscripten_bind_btInternalTriangleIndexCallback__internalProcessTriangleIndex_p3"];
var _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_customCollisionAlgorithmMaxElementSize_p1 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_customCollisionAlgorithmMaxElementSize_p1"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_customCollisionAlgorithmMaxElementSize_p1"];
var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_rayFromWorld_p0 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_rayFromWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_rayFromWorld_p0"];
var _emscripten_bind_btRigidBody__getCompanionId_p0 = Module["_emscripten_bind_btRigidBody__getCompanionId_p0"] = asm["_emscripten_bind_btRigidBody__getCompanionId_p0"];
var _emscripten_bind_btCollisionWorld__rayTest_p3 = Module["_emscripten_bind_btCollisionWorld__rayTest_p3"] = asm["_emscripten_bind_btCollisionWorld__rayTest_p3"];
var _emscripten_bind_btConvexTriangleMeshShape__setMargin_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__setMargin_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__setMargin_p1"];
var _emscripten_bind_btCollisionWorld__addCollisionObject_p1 = Module["_emscripten_bind_btCollisionWorld__addCollisionObject_p1"] = asm["_emscripten_bind_btCollisionWorld__addCollisionObject_p1"];
var _emscripten_bind_btCollisionWorld__addCollisionObject_p3 = Module["_emscripten_bind_btCollisionWorld__addCollisionObject_p3"] = asm["_emscripten_bind_btCollisionWorld__addCollisionObject_p3"];
var _emscripten_bind_btCollisionWorld__addCollisionObject_p2 = Module["_emscripten_bind_btCollisionWorld__addCollisionObject_p2"] = asm["_emscripten_bind_btCollisionWorld__addCollisionObject_p2"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_convexToWorld_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_convexToWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_convexToWorld_p0"];
var _emscripten_bind_btCapsuleShapeZ__getRadius_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getRadius_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getRadius_p0"];
var _emscripten_bind_btRigidBody__isStaticOrKinematicObject_p0 = Module["_emscripten_bind_btRigidBody__isStaticOrKinematicObject_p0"] = asm["_emscripten_bind_btRigidBody__isStaticOrKinematicObject_p0"];
var _emscripten_bind_btRigidBody__hasAnisotropicFriction_p0 = Module["_emscripten_bind_btRigidBody__hasAnisotropicFriction_p0"] = asm["_emscripten_bind_btRigidBody__hasAnisotropicFriction_p0"];
var _emscripten_bind_btOverlappingPairCache__cleanProxyFromPairs_p2 = Module["_emscripten_bind_btOverlappingPairCache__cleanProxyFromPairs_p2"] = asm["_emscripten_bind_btOverlappingPairCache__cleanProxyFromPairs_p2"];
var _emscripten_bind_btConcaveShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btConcaveShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btConcaveShape__calculateLocalInertia_p2"];
var _emscripten_bind_btBoxShape__getPlaneEquation_p2 = Module["_emscripten_bind_btBoxShape__getPlaneEquation_p2"] = asm["_emscripten_bind_btBoxShape__getPlaneEquation_p2"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getInfo2NonVirtual_p7 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getInfo2NonVirtual_p7"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getInfo2NonVirtual_p7"];
var _emscripten_bind_btCapsuleShapeZ__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getImplicitShapeDimensions_p0"];
var _emscripten_bind_btBU_Simplex1to4__getMarginNV_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getMarginNV_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getMarginNV_p0"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_collisionShape_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_collisionShape_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_collisionShape_p0"];
var _emscripten_bind_btStaticPlaneShape__getMargin_p0 = Module["_emscripten_bind_btStaticPlaneShape__getMargin_p0"] = asm["_emscripten_bind_btStaticPlaneShape__getMargin_p0"];
var _emscripten_bind_btTranslationalLimitMotor__set_m_damping_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_damping_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_damping_p1"];
var _emscripten_bind_btHeightfieldTerrainShape__setUseDiamondSubdivision_p1 = Module["_emscripten_bind_btHeightfieldTerrainShape__setUseDiamondSubdivision_p1"] = asm["_emscripten_bind_btHeightfieldTerrainShape__setUseDiamondSubdivision_p1"];
var _emscripten_bind_btConvexInternalAabbCachingShape__serializeSingleShape_p1 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__serializeSingleShape_p1"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__setImplicitShapeDimensions_p1"];
var _emscripten_bind_btScaledBvhTriangleMeshShape____destroy___p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape____destroy___p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape____destroy___p0"];
var _emscripten_bind_btGeneric6DofConstraint__getUseFrameOffset_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getUseFrameOffset_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getUseFrameOffset_p0"];
var _emscripten_bind_btGhostObject__getFriction_p0 = Module["_emscripten_bind_btGhostObject__getFriction_p0"] = asm["_emscripten_bind_btGhostObject__getFriction_p0"];
var _emscripten_bind_btConvexInternalShape__setMargin_p1 = Module["_emscripten_bind_btConvexInternalShape__setMargin_p1"] = asm["_emscripten_bind_btConvexInternalShape__setMargin_p1"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitNormalWorld_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitNormalWorld_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitNormalWorld_p1"];
var _emscripten_bind_btCylinderShapeZ__calculateTemporalAabb_p6 = Module["_emscripten_bind_btCylinderShapeZ__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btCylinderShapeZ__calculateTemporalAabb_p6"];
var _emscripten_bind_btGeneric6DofConstraint__getRigidBodyB_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getRigidBodyB_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getRigidBodyB_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__getMargin_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getMargin_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getMargin_p0"];
var _emscripten_bind_btSimpleBroadphase__aabbTest_p3 = Module["_emscripten_bind_btSimpleBroadphase__aabbTest_p3"] = asm["_emscripten_bind_btSimpleBroadphase__aabbTest_p3"];
var _emscripten_bind_btHinge2Constraint__setUpperLimit_p1 = Module["_emscripten_bind_btHinge2Constraint__setUpperLimit_p1"] = asm["_emscripten_bind_btHinge2Constraint__setUpperLimit_p1"];
var _emscripten_bind_btConvexHullShape__isConvex2d_p0 = Module["_emscripten_bind_btConvexHullShape__isConvex2d_p0"] = asm["_emscripten_bind_btConvexHullShape__isConvex2d_p0"];
var _emscripten_bind_btDynamicsWorld__getCollisionObjectArray_p0 = Module["_emscripten_bind_btDynamicsWorld__getCollisionObjectArray_p0"] = asm["_emscripten_bind_btDynamicsWorld__getCollisionObjectArray_p0"];
var _emscripten_bind_btHinge2Constraint__internalGetAppliedImpulse_p0 = Module["_emscripten_bind_btHinge2Constraint__internalGetAppliedImpulse_p0"] = asm["_emscripten_bind_btHinge2Constraint__internalGetAppliedImpulse_p0"];
var _emscripten_bind_btVector4__angle_p1 = Module["_emscripten_bind_btVector4__angle_p1"] = asm["_emscripten_bind_btVector4__angle_p1"];
var _emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p4 = Module["_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p4"] = asm["_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p4"];
var _emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p3 = Module["_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p3"] = asm["_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p3"];
var _emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p2 = Module["_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p2"] = asm["_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p2"];
var _emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p1 = Module["_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p1"];
var _emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p0 = Module["_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p0"];
var _emscripten_bind_btVector3__setMin_p1 = Module["_emscripten_bind_btVector3__setMin_p1"] = asm["_emscripten_bind_btVector3__setMin_p1"];
var _emscripten_bind_btSliderConstraint__setLowerLinLimit_p1 = Module["_emscripten_bind_btSliderConstraint__setLowerLinLimit_p1"] = asm["_emscripten_bind_btSliderConstraint__setLowerLinLimit_p1"];
var _emscripten_bind_btCylinderShape__getShapeType_p0 = Module["_emscripten_bind_btCylinderShape__getShapeType_p0"] = asm["_emscripten_bind_btCylinderShape__getShapeType_p0"];
var _emscripten_bind_btMotionState__setWorldTransform_p1 = Module["_emscripten_bind_btMotionState__setWorldTransform_p1"] = asm["_emscripten_bind_btMotionState__setWorldTransform_p1"];
var _emscripten_bind_btHingeConstraint__getUid_p0 = Module["_emscripten_bind_btHingeConstraint__getUid_p0"] = asm["_emscripten_bind_btHingeConstraint__getUid_p0"];
var _emscripten_bind_btPairCachingGhostObject__convexSweepTest_p4 = Module["_emscripten_bind_btPairCachingGhostObject__convexSweepTest_p4"] = asm["_emscripten_bind_btPairCachingGhostObject__convexSweepTest_p4"];
var _emscripten_bind_btUniformScalingShape__isConvex_p0 = Module["_emscripten_bind_btUniformScalingShape__isConvex_p0"] = asm["_emscripten_bind_btUniformScalingShape__isConvex_p0"];
var _emscripten_bind_btQuantizedBvh__setQuantizationValues_p2 = Module["_emscripten_bind_btQuantizedBvh__setQuantizationValues_p2"] = asm["_emscripten_bind_btQuantizedBvh__setQuantizationValues_p2"];
var _emscripten_bind_btQuantizedBvh__setQuantizationValues_p3 = Module["_emscripten_bind_btQuantizedBvh__setQuantizationValues_p3"] = asm["_emscripten_bind_btQuantizedBvh__setQuantizationValues_p3"];
var _emscripten_bind_btQuantizedBvh__serialize_p3 = Module["_emscripten_bind_btQuantizedBvh__serialize_p3"] = asm["_emscripten_bind_btQuantizedBvh__serialize_p3"];
var _emscripten_bind_btQuantizedBvh__serialize_p2 = Module["_emscripten_bind_btQuantizedBvh__serialize_p2"] = asm["_emscripten_bind_btQuantizedBvh__serialize_p2"];
var _emscripten_bind_btConvexHullShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btConvexHullShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btConvexHullShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _emscripten_bind_btHeightfieldTerrainShape__getName_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__getName_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__getName_p0"];
var _emscripten_bind_btQuadWord__btQuadWord_p4 = Module["_emscripten_bind_btQuadWord__btQuadWord_p4"] = asm["_emscripten_bind_btQuadWord__btQuadWord_p4"];
var _emscripten_bind_btQuantizedBvh__isQuantized_p0 = Module["_emscripten_bind_btQuantizedBvh__isQuantized_p0"] = asm["_emscripten_bind_btQuantizedBvh__isQuantized_p0"];
var _emscripten_bind_btQuaternion__nearest_p1 = Module["_emscripten_bind_btQuaternion__nearest_p1"] = asm["_emscripten_bind_btQuaternion__nearest_p1"];
var _emscripten_bind_btConeShapeZ__getShapeType_p0 = Module["_emscripten_bind_btConeShapeZ__getShapeType_p0"] = asm["_emscripten_bind_btConeShapeZ__getShapeType_p0"];
var _emscripten_bind_btHinge2Constraint__setLimit_p3 = Module["_emscripten_bind_btHinge2Constraint__setLimit_p3"] = asm["_emscripten_bind_btHinge2Constraint__setLimit_p3"];
var _emscripten_bind_btUniversalConstraint__getUserConstraintId_p0 = Module["_emscripten_bind_btUniversalConstraint__getUserConstraintId_p0"] = asm["_emscripten_bind_btUniversalConstraint__getUserConstraintId_p0"];
var _emscripten_bind_btOptimizedBvh__btOptimizedBvh_p0 = Module["_emscripten_bind_btOptimizedBvh__btOptimizedBvh_p0"] = asm["_emscripten_bind_btOptimizedBvh__btOptimizedBvh_p0"];
var _emscripten_bind_btGhostObject__setCcdSweptSphereRadius_p1 = Module["_emscripten_bind_btGhostObject__setCcdSweptSphereRadius_p1"] = asm["_emscripten_bind_btGhostObject__setCcdSweptSphereRadius_p1"];
var _emscripten_bind_btSliderConstraint__getDampingLimAng_p0 = Module["_emscripten_bind_btSliderConstraint__getDampingLimAng_p0"] = asm["_emscripten_bind_btSliderConstraint__getDampingLimAng_p0"];
var _emscripten_bind_btTypedConstraint__internalSetAppliedImpulse_p1 = Module["_emscripten_bind_btTypedConstraint__internalSetAppliedImpulse_p1"] = asm["_emscripten_bind_btTypedConstraint__internalSetAppliedImpulse_p1"];
var _emscripten_bind_btCompoundShape__isInfinite_p0 = Module["_emscripten_bind_btCompoundShape__isInfinite_p0"] = asm["_emscripten_bind_btCompoundShape__isInfinite_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__addRigidBody_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__addRigidBody_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__addRigidBody_p1"];
var _emscripten_bind_btConeShapeX__getLocalScalingNV_p0 = Module["_emscripten_bind_btConeShapeX__getLocalScalingNV_p0"] = asm["_emscripten_bind_btConeShapeX__getLocalScalingNV_p0"];
var _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_frictionSlip_p0 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_frictionSlip_p0"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_frictionSlip_p0"];
var _emscripten_bind_btCollisionAlgorithmConstructionInfo__get_m_manifold_p0 = Module["_emscripten_bind_btCollisionAlgorithmConstructionInfo__get_m_manifold_p0"] = asm["_emscripten_bind_btCollisionAlgorithmConstructionInfo__get_m_manifold_p0"];
var _emscripten_bind_btSliderConstraint__getFrameOffsetA_p0 = Module["_emscripten_bind_btSliderConstraint__getFrameOffsetA_p0"] = asm["_emscripten_bind_btSliderConstraint__getFrameOffsetA_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__addCharacter_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__addCharacter_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__addCharacter_p1"];
var _emscripten_bind_btVector3__serializeFloat_p1 = Module["_emscripten_bind_btVector3__serializeFloat_p1"] = asm["_emscripten_bind_btVector3__serializeFloat_p1"];
var _emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitPointLocal_p0 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitPointLocal_p0"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitPointLocal_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__addVehicle_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__addVehicle_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__addVehicle_p1"];
var _emscripten_bind_btGeneric6DofConstraint__solveConstraintObsolete_p3 = Module["_emscripten_bind_btGeneric6DofConstraint__solveConstraintObsolete_p3"] = asm["_emscripten_bind_btGeneric6DofConstraint__solveConstraintObsolete_p3"];
var _emscripten_bind_btAxisSweep3__printStats_p0 = Module["_emscripten_bind_btAxisSweep3__printStats_p0"] = asm["_emscripten_bind_btAxisSweep3__printStats_p0"];
var _emscripten_bind_btSphereShape__isSoftBody_p0 = Module["_emscripten_bind_btSphereShape__isSoftBody_p0"] = asm["_emscripten_bind_btSphereShape__isSoftBody_p0"];
var _emscripten_bind_btDispatcherInfo__set_m_useConvexConservativeDistanceUtil_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_useConvexConservativeDistanceUtil_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_useConvexConservativeDistanceUtil_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__setWorldUserInfo_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__setWorldUserInfo_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setWorldUserInfo_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__calculateTimeOfImpacts_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__calculateTimeOfImpacts_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__calculateTimeOfImpacts_p1"];
var _emscripten_bind_btCylinderShapeZ__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btCylinderShapeZ__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btCylinderShapeZ__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btVector3__dot_p1 = Module["_emscripten_bind_btVector3__dot_p1"] = asm["_emscripten_bind_btVector3__dot_p1"];
var _emscripten_bind_btSimpleBroadphaseProxy__SetNextFree_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__SetNextFree_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__SetNextFree_p1"];
var _emscripten_bind_btHashString__equals_p1 = Module["_emscripten_bind_btHashString__equals_p1"] = asm["_emscripten_bind_btHashString__equals_p1"];
var _emscripten_bind_btUniversalConstraint__buildJacobian_p0 = Module["_emscripten_bind_btUniversalConstraint__buildJacobian_p0"] = asm["_emscripten_bind_btUniversalConstraint__buildJacobian_p0"];
var _emscripten_bind_btSphereShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btSphereShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btSphereShape__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btContactConstraint__set_m_objectType_p1 = Module["_emscripten_bind_btContactConstraint__set_m_objectType_p1"] = asm["_emscripten_bind_btContactConstraint__set_m_objectType_p1"];
var _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionDamping_p0 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionDamping_p0"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionDamping_p0"];
var _emscripten_bind_btAngularLimit__getSoftness_p0 = Module["_emscripten_bind_btAngularLimit__getSoftness_p0"] = asm["_emscripten_bind_btAngularLimit__getSoftness_p0"];
var _emscripten_bind_btRigidBody__applyCentralForce_p1 = Module["_emscripten_bind_btRigidBody__applyCentralForce_p1"] = asm["_emscripten_bind_btRigidBody__applyCentralForce_p1"];
var _emscripten_bind_btQuaternion__farthest_p1 = Module["_emscripten_bind_btQuaternion__farthest_p1"] = asm["_emscripten_bind_btQuaternion__farthest_p1"];
var _emscripten_bind_btPersistentManifold__removeContactPoint_p1 = Module["_emscripten_bind_btPersistentManifold__removeContactPoint_p1"] = asm["_emscripten_bind_btPersistentManifold__removeContactPoint_p1"];
var _emscripten_bind_btJacobianEntry__set_m_Adiag_p1 = Module["_emscripten_bind_btJacobianEntry__set_m_Adiag_p1"] = asm["_emscripten_bind_btJacobianEntry__set_m_Adiag_p1"];
var _emscripten_bind_btConeShapeX__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btConeShapeX__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btConeShapeX__setImplicitShapeDimensions_p1"];
var _emscripten_bind_btWheelInfo__set_m_wheelsDampingRelaxation_p1 = Module["_emscripten_bind_btWheelInfo__set_m_wheelsDampingRelaxation_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_wheelsDampingRelaxation_p1"];
var _emscripten_bind_btConvexHullShape__getMargin_p0 = Module["_emscripten_bind_btConvexHullShape__getMargin_p0"] = asm["_emscripten_bind_btConvexHullShape__getMargin_p0"];
var _emscripten_bind_btMultiSphereShape__getLocalScaling_p0 = Module["_emscripten_bind_btMultiSphereShape__getLocalScaling_p0"] = asm["_emscripten_bind_btMultiSphereShape__getLocalScaling_p0"];
var _emscripten_bind_btTriangleIndexVertexArray__hasPremadeAabb_p0 = Module["_emscripten_bind_btTriangleIndexVertexArray__hasPremadeAabb_p0"] = asm["_emscripten_bind_btTriangleIndexVertexArray__hasPremadeAabb_p0"];
var _emscripten_bind_btPolyhedralConvexShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btPolyhedralConvexShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btPolyhedralConvexShape__setImplicitShapeDimensions_p1"];
var _emscripten_bind_btIDebugDraw__setDebugMode_p1 = Module["_emscripten_bind_btIDebugDraw__setDebugMode_p1"] = asm["_emscripten_bind_btIDebugDraw__setDebugMode_p1"];
var _emscripten_bind_btPairCachingGhostObject__setCompanionId_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setCompanionId_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setCompanionId_p1"];
var _emscripten_bind_btVector4__normalize_p0 = Module["_emscripten_bind_btVector4__normalize_p0"] = asm["_emscripten_bind_btVector4__normalize_p0"];
var _emscripten_bind_btUniversalConstraint__getAngularLowerLimit_p1 = Module["_emscripten_bind_btUniversalConstraint__getAngularLowerLimit_p1"] = asm["_emscripten_bind_btUniversalConstraint__getAngularLowerLimit_p1"];
var _emscripten_bind_btUniversalConstraint__setUseFrameOffset_p1 = Module["_emscripten_bind_btUniversalConstraint__setUseFrameOffset_p1"] = asm["_emscripten_bind_btUniversalConstraint__setUseFrameOffset_p1"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitCollisionObject_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitCollisionObject_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitCollisionObject_p0"];
var _emscripten_bind_btPoint2PointConstraint__getUid_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getUid_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getUid_p0"];
var _emscripten_bind_btSliderConstraint__testAngLimits_p0 = Module["_emscripten_bind_btSliderConstraint__testAngLimits_p0"] = asm["_emscripten_bind_btSliderConstraint__testAngLimits_p0"];
var _emscripten_bind_btOverlappingPairCache__removeOverlappingPairsContainingProxy_p2 = Module["_emscripten_bind_btOverlappingPairCache__removeOverlappingPairsContainingProxy_p2"] = asm["_emscripten_bind_btOverlappingPairCache__removeOverlappingPairsContainingProxy_p2"];
var _emscripten_bind_btBoxShape__isConvex_p0 = Module["_emscripten_bind_btBoxShape__isConvex_p0"] = asm["_emscripten_bind_btBoxShape__isConvex_p0"];
var _emscripten_bind_btQuantizedBvh__reportBoxCastOverlappingNodex_p5 = Module["_emscripten_bind_btQuantizedBvh__reportBoxCastOverlappingNodex_p5"] = asm["_emscripten_bind_btQuantizedBvh__reportBoxCastOverlappingNodex_p5"];
var _emscripten_bind_btPersistentManifold__get_m_companionIdB_p0 = Module["_emscripten_bind_btPersistentManifold__get_m_companionIdB_p0"] = asm["_emscripten_bind_btPersistentManifold__get_m_companionIdB_p0"];
var _emscripten_bind_btUniformScalingShape__isConcave_p0 = Module["_emscripten_bind_btUniformScalingShape__isConcave_p0"] = asm["_emscripten_bind_btUniformScalingShape__isConcave_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__getCollisionObjectArray_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getCollisionObjectArray_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getCollisionObjectArray_p0"];
var _emscripten_bind_btTranslationalLimitMotor__get_m_stopERP_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_stopERP_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_stopERP_p0"];
var _emscripten_bind_bt32BitAxisSweep3__getHandle_p1 = Module["_emscripten_bind_bt32BitAxisSweep3__getHandle_p1"] = asm["_emscripten_bind_bt32BitAxisSweep3__getHandle_p1"];
var _emscripten_bind_CProfileNode__Reset_p0 = Module["_emscripten_bind_CProfileNode__Reset_p0"] = asm["_emscripten_bind_CProfileNode__Reset_p0"];
var _emscripten_bind_btSphereShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btSphereShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btSphereShape__calculateLocalInertia_p2"];
var _emscripten_bind_btBvhSubtreeInfo__get_m_subtreeSize_p0 = Module["_emscripten_bind_btBvhSubtreeInfo__get_m_subtreeSize_p0"] = asm["_emscripten_bind_btBvhSubtreeInfo__get_m_subtreeSize_p0"];
var _emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitNormalLocal_p0 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitNormalLocal_p0"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitNormalLocal_p0"];
var _emscripten_bind_btTriangleInfoMap__get_m_planarEpsilon_p0 = Module["_emscripten_bind_btTriangleInfoMap__get_m_planarEpsilon_p0"] = asm["_emscripten_bind_btTriangleInfoMap__get_m_planarEpsilon_p0"];
var _emscripten_bind_btSimpleBroadphaseProxy__GetNextFree_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__GetNextFree_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__GetNextFree_p0"];
var _emscripten_bind_btGhostPairCallback__removeOverlappingPairsContainingProxy_p2 = Module["_emscripten_bind_btGhostPairCallback__removeOverlappingPairsContainingProxy_p2"] = asm["_emscripten_bind_btGhostPairCallback__removeOverlappingPairsContainingProxy_p2"];
var _emscripten_bind_btTriangleInfoMap__set_m_convexEpsilon_p1 = Module["_emscripten_bind_btTriangleInfoMap__set_m_convexEpsilon_p1"] = asm["_emscripten_bind_btTriangleInfoMap__set_m_convexEpsilon_p1"];
var _emscripten_bind_btBoxShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btBoxShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btBoxShape__localGetSupportingVertex_p1"];
var _emscripten_bind_btCylinderShape__getMargin_p0 = Module["_emscripten_bind_btCylinderShape__getMargin_p0"] = asm["_emscripten_bind_btCylinderShape__getMargin_p0"];
var _emscripten_bind_btQuaternion__w_p0 = Module["_emscripten_bind_btQuaternion__w_p0"] = asm["_emscripten_bind_btQuaternion__w_p0"];
var _emscripten_bind_btQuantizedBvh__getAlignmentSerializationPadding_p0 = Module["_emscripten_bind_btQuantizedBvh__getAlignmentSerializationPadding_p0"] = asm["_emscripten_bind_btQuantizedBvh__getAlignmentSerializationPadding_p0"];
var _emscripten_bind_btIDebugDraw__draw3dText_p2 = Module["_emscripten_bind_btIDebugDraw__draw3dText_p2"] = asm["_emscripten_bind_btIDebugDraw__draw3dText_p2"];
var _emscripten_bind_btMatrix3x3__setIdentity_p0 = Module["_emscripten_bind_btMatrix3x3__setIdentity_p0"] = asm["_emscripten_bind_btMatrix3x3__setIdentity_p0"];
var _emscripten_bind_btHingeConstraint____destroy___p0 = Module["_emscripten_bind_btHingeConstraint____destroy___p0"] = asm["_emscripten_bind_btHingeConstraint____destroy___p0"];
var _emscripten_bind_btConvexInternalAabbCachingShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__setImplicitShapeDimensions_p1"];
var _emscripten_bind_btCollisionWorld__setDebugDrawer_p1 = Module["_emscripten_bind_btCollisionWorld__setDebugDrawer_p1"] = asm["_emscripten_bind_btCollisionWorld__setDebugDrawer_p1"];
var _emscripten_bind_btTriangleMesh__getScaling_p0 = Module["_emscripten_bind_btTriangleMesh__getScaling_p0"] = asm["_emscripten_bind_btTriangleMesh__getScaling_p0"];
var _emscripten_bind_btManifoldPoint__set_m_contactCFM1_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_contactCFM1_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_contactCFM1_p1"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__isConcave_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__isConcave_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__isConcave_p0"];
var _emscripten_bind_btCapsuleShape__isConvex2d_p0 = Module["_emscripten_bind_btCapsuleShape__isConvex2d_p0"] = asm["_emscripten_bind_btCapsuleShape__isConvex2d_p0"];
var _emscripten_bind_btPolyhedralConvexShape__getNumVertices_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getNumVertices_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getNumVertices_p0"];
var _emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_collisionFilterMask_p1 = Module["_emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_collisionFilterMask_p1"] = asm["_emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_collisionFilterMask_p1"];
var _emscripten_bind_btCollisionWorld__ContactResultCallback__get_m_collisionFilterMask_p0 = Module["_emscripten_bind_btCollisionWorld__ContactResultCallback__get_m_collisionFilterMask_p0"] = asm["_emscripten_bind_btCollisionWorld__ContactResultCallback__get_m_collisionFilterMask_p0"];
var _emscripten_bind_btCylinderShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btCylinderShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btCylinderShape__getMarginNonVirtual_p0"];
var _emscripten_bind_btCompoundShape__isConvex2d_p0 = Module["_emscripten_bind_btCompoundShape__isConvex2d_p0"] = asm["_emscripten_bind_btCompoundShape__isConvex2d_p0"];
var _emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitCollisionObject_p0 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitCollisionObject_p0"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitCollisionObject_p0"];
var _emscripten_bind_btHinge2Constraint__isEnabled_p0 = Module["_emscripten_bind_btHinge2Constraint__isEnabled_p0"] = asm["_emscripten_bind_btHinge2Constraint__isEnabled_p0"];
var _emscripten_bind_btSliderConstraint__getDampingDirLin_p0 = Module["_emscripten_bind_btSliderConstraint__getDampingDirLin_p0"] = asm["_emscripten_bind_btSliderConstraint__getDampingDirLin_p0"];
var _emscripten_bind_btDispatcher__getInternalManifoldPointer_p0 = Module["_emscripten_bind_btDispatcher__getInternalManifoldPointer_p0"] = asm["_emscripten_bind_btDispatcher__getInternalManifoldPointer_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__getUserPointer_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getUserPointer_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getUserPointer_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__removeVehicle_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__removeVehicle_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__removeVehicle_p1"];
var _emscripten_bind_btMultiSphereShape__getSphereCount_p0 = Module["_emscripten_bind_btMultiSphereShape__getSphereCount_p0"] = asm["_emscripten_bind_btMultiSphereShape__getSphereCount_p0"];
var _emscripten_bind_btDbvtBroadphase__rayTest_p5 = Module["_emscripten_bind_btDbvtBroadphase__rayTest_p5"] = asm["_emscripten_bind_btDbvtBroadphase__rayTest_p5"];
var _emscripten_bind_btDbvtBroadphase__rayTest_p4 = Module["_emscripten_bind_btDbvtBroadphase__rayTest_p4"] = asm["_emscripten_bind_btDbvtBroadphase__rayTest_p4"];
var _emscripten_bind_btHinge2Constraint__setStiffness_p2 = Module["_emscripten_bind_btHinge2Constraint__setStiffness_p2"] = asm["_emscripten_bind_btHinge2Constraint__setStiffness_p2"];
var _emscripten_bind_btGeneric6DofSpringConstraint__enableSpring_p2 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__enableSpring_p2"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__enableSpring_p2"];
var _emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_localShapeInfo_p1 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_localShapeInfo_p1"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_localShapeInfo_p1"];
var _emscripten_bind_btCylinderShapeX__isNonMoving_p0 = Module["_emscripten_bind_btCylinderShapeX__isNonMoving_p0"] = asm["_emscripten_bind_btCylinderShapeX__isNonMoving_p0"];
var _emscripten_bind_btConvexInternalShape__getMarginNV_p0 = Module["_emscripten_bind_btConvexInternalShape__getMarginNV_p0"] = asm["_emscripten_bind_btConvexInternalShape__getMarginNV_p0"];
var _emscripten_bind_btConeShapeX__isSoftBody_p0 = Module["_emscripten_bind_btConeShapeX__isSoftBody_p0"] = asm["_emscripten_bind_btConeShapeX__isSoftBody_p0"];
var _emscripten_bind_btSequentialImpulseConstraintSolver__btRand2_p0 = Module["_emscripten_bind_btSequentialImpulseConstraintSolver__btRand2_p0"] = asm["_emscripten_bind_btSequentialImpulseConstraintSolver__btRand2_p0"];
var _emscripten_bind_btPolyhedralConvexShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btHingeConstraint__getInfo2Internal_p5 = Module["_emscripten_bind_btHingeConstraint__getInfo2Internal_p5"] = asm["_emscripten_bind_btHingeConstraint__getInfo2Internal_p5"];
var _emscripten_bind_btVector3__serializeDouble_p1 = Module["_emscripten_bind_btVector3__serializeDouble_p1"] = asm["_emscripten_bind_btVector3__serializeDouble_p1"];
var _emscripten_bind_btTriangleInfo__set_m_edgeV2V0Angle_p1 = Module["_emscripten_bind_btTriangleInfo__set_m_edgeV2V0Angle_p1"] = asm["_emscripten_bind_btTriangleInfo__set_m_edgeV2V0Angle_p1"];
var _emscripten_bind_btCollisionDispatcher__getInternalManifoldPointer_p0 = Module["_emscripten_bind_btCollisionDispatcher__getInternalManifoldPointer_p0"] = asm["_emscripten_bind_btCollisionDispatcher__getInternalManifoldPointer_p0"];
var _emscripten_bind_btVehicleRaycaster__castRay_p3 = Module["_emscripten_bind_btVehicleRaycaster__castRay_p3"] = asm["_emscripten_bind_btVehicleRaycaster__castRay_p3"];
var _emscripten_bind_btOptimizedBvh__reportRayOverlappingNodex_p3 = Module["_emscripten_bind_btOptimizedBvh__reportRayOverlappingNodex_p3"] = asm["_emscripten_bind_btOptimizedBvh__reportRayOverlappingNodex_p3"];
var _emscripten_bind_btManifoldPoint__get_m_index0_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_index0_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_index0_p0"];
var _emscripten_bind_btTriangleInfoMap__deSerialize_p1 = Module["_emscripten_bind_btTriangleInfoMap__deSerialize_p1"] = asm["_emscripten_bind_btTriangleInfoMap__deSerialize_p1"];
var _emscripten_bind_btDynamicsWorld__convexSweepTest_p4 = Module["_emscripten_bind_btDynamicsWorld__convexSweepTest_p4"] = asm["_emscripten_bind_btDynamicsWorld__convexSweepTest_p4"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__setLocalScaling_p1 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__setLocalScaling_p1"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__setLocalScaling_p1"];
var _emscripten_bind_btDbvtBroadphase__get_m_updates_call_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_updates_call_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_updates_call_p0"];
var _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultMaxPersistentManifoldPoolSize_p1 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultMaxPersistentManifoldPoolSize_p1"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultMaxPersistentManifoldPoolSize_p1"];
var _emscripten_bind_btHingeConstraint__getRigidBodyA_p0 = Module["_emscripten_bind_btHingeConstraint__getRigidBodyA_p0"] = asm["_emscripten_bind_btHingeConstraint__getRigidBodyA_p0"];
var _emscripten_bind_btGeneric6DofConstraint__get_limit_motor_info2_p12 = Module["_emscripten_bind_btGeneric6DofConstraint__get_limit_motor_info2_p12"] = asm["_emscripten_bind_btGeneric6DofConstraint__get_limit_motor_info2_p12"];
var _emscripten_bind_btGeneric6DofSpringConstraint__testAngularLimitMotor_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__testAngularLimitMotor_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__testAngularLimitMotor_p1"];
var _emscripten_bind_btCylinderShapeX__getHalfExtentsWithoutMargin_p0 = Module["_emscripten_bind_btCylinderShapeX__getHalfExtentsWithoutMargin_p0"] = asm["_emscripten_bind_btCylinderShapeX__getHalfExtentsWithoutMargin_p0"];
var _emscripten_bind_btDefaultCollisionConfiguration__btDefaultCollisionConfiguration_p1 = Module["_emscripten_bind_btDefaultCollisionConfiguration__btDefaultCollisionConfiguration_p1"] = asm["_emscripten_bind_btDefaultCollisionConfiguration__btDefaultCollisionConfiguration_p1"];
var _emscripten_bind_btDefaultCollisionConfiguration__btDefaultCollisionConfiguration_p0 = Module["_emscripten_bind_btDefaultCollisionConfiguration__btDefaultCollisionConfiguration_p0"] = asm["_emscripten_bind_btDefaultCollisionConfiguration__btDefaultCollisionConfiguration_p0"];
var _emscripten_bind_btCapsuleShape__getLocalScaling_p0 = Module["_emscripten_bind_btCapsuleShape__getLocalScaling_p0"] = asm["_emscripten_bind_btCapsuleShape__getLocalScaling_p0"];
var _emscripten_bind_btRaycastVehicle__getNumWheels_p0 = Module["_emscripten_bind_btRaycastVehicle__getNumWheels_p0"] = asm["_emscripten_bind_btRaycastVehicle__getNumWheels_p0"];
var _emscripten_bind_btUniformScalingShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btUniformScalingShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btUniformScalingShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btConvexInternalAabbCachingShape__getMargin_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getMargin_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getMargin_p0"];
var _emscripten_bind_btConcaveShape__getMargin_p0 = Module["_emscripten_bind_btConcaveShape__getMargin_p0"] = asm["_emscripten_bind_btConcaveShape__getMargin_p0"];
var _emscripten_bind_btBroadphaseProxy__set_m_clientObject_p1 = Module["_emscripten_bind_btBroadphaseProxy__set_m_clientObject_p1"] = asm["_emscripten_bind_btBroadphaseProxy__set_m_clientObject_p1"];
var _emscripten_bind_btBU_Simplex1to4__getAabb_p3 = Module["_emscripten_bind_btBU_Simplex1to4__getAabb_p3"] = asm["_emscripten_bind_btBU_Simplex1to4__getAabb_p3"];
var _emscripten_bind_btGeneric6DofSpringConstraint__getLinearLowerLimit_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getLinearLowerLimit_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getLinearLowerLimit_p1"];
var _emscripten_bind_btManifoldPoint__get_m_partId0_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_partId0_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_partId0_p0"];
var _emscripten_bind_btManifoldPoint__set_m_contactCFM2_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_contactCFM2_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_contactCFM2_p1"];
var _emscripten_bind_btUniversalConstraint__getInfo1NonVirtual_p1 = Module["_emscripten_bind_btUniversalConstraint__getInfo1NonVirtual_p1"] = asm["_emscripten_bind_btUniversalConstraint__getInfo1NonVirtual_p1"];
var _emscripten_bind_btTranslationalLimitMotor__testLimitValue_p2 = Module["_emscripten_bind_btTranslationalLimitMotor__testLimitValue_p2"] = asm["_emscripten_bind_btTranslationalLimitMotor__testLimitValue_p2"];
var _emscripten_bind_btCylinderShapeZ__getAabbSlow_p3 = Module["_emscripten_bind_btCylinderShapeZ__getAabbSlow_p3"] = asm["_emscripten_bind_btCylinderShapeZ__getAabbSlow_p3"];
var _emscripten_bind_btHingeConstraint__getUseFrameOffset_p0 = Module["_emscripten_bind_btHingeConstraint__getUseFrameOffset_p0"] = asm["_emscripten_bind_btHingeConstraint__getUseFrameOffset_p0"];
var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_flags_p0 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_flags_p0"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_flags_p0"];
var _emscripten_bind_btDynamicsWorld__convexSweepTest_p5 = Module["_emscripten_bind_btDynamicsWorld__convexSweepTest_p5"] = asm["_emscripten_bind_btDynamicsWorld__convexSweepTest_p5"];
var _emscripten_bind_btCylinderShape__isSoftBody_p0 = Module["_emscripten_bind_btCylinderShape__isSoftBody_p0"] = asm["_emscripten_bind_btCylinderShape__isSoftBody_p0"];
var _emscripten_bind_btCylinderShape__setMargin_p1 = Module["_emscripten_bind_btCylinderShape__setMargin_p1"] = asm["_emscripten_bind_btCylinderShape__setMargin_p1"];
var _emscripten_bind_btUniversalConstraint__getBreakingImpulseThreshold_p0 = Module["_emscripten_bind_btUniversalConstraint__getBreakingImpulseThreshold_p0"] = asm["_emscripten_bind_btUniversalConstraint__getBreakingImpulseThreshold_p0"];
var _emscripten_bind_btContinuousDynamicsWorld__getCollisionWorld_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getCollisionWorld_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getCollisionWorld_p0"];
var _emscripten_bind_btTriangleMesh__calculateAabbBruteForce_p2 = Module["_emscripten_bind_btTriangleMesh__calculateAabbBruteForce_p2"] = asm["_emscripten_bind_btTriangleMesh__calculateAabbBruteForce_p2"];
var _emscripten_bind_btCylinderShapeX__localGetSupportingVertex_p1 = Module["_emscripten_bind_btCylinderShapeX__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btCylinderShapeX__localGetSupportingVertex_p1"];
var _emscripten_bind_btVector3__op_sub_p1 = Module["_emscripten_bind_btVector3__op_sub_p1"] = asm["_emscripten_bind_btVector3__op_sub_p1"];
var _emscripten_bind_btIndexedMesh__get_m_indexType_p0 = Module["_emscripten_bind_btIndexedMesh__get_m_indexType_p0"] = asm["_emscripten_bind_btIndexedMesh__get_m_indexType_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__getBoundingSphere_p2 = Module["_emscripten_bind_btBvhTriangleMeshShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getBoundingSphere_p2"];
var _emscripten_bind_btBU_Simplex1to4__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btBU_Simplex1to4__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btConeTwistConstraint__setUserConstraintId_p1 = Module["_emscripten_bind_btConeTwistConstraint__setUserConstraintId_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setUserConstraintId_p1"];
var _emscripten_bind_btConvexInternalAabbCachingShape__isNonMoving_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__isNonMoving_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__isNonMoving_p0"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setAxis_p2 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setAxis_p2"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setAxis_p2"];
var _emscripten_bind_btCapsuleShapeX__isInfinite_p0 = Module["_emscripten_bind_btCapsuleShapeX__isInfinite_p0"] = asm["_emscripten_bind_btCapsuleShapeX__isInfinite_p0"];
var _emscripten_bind_btCylinderShapeZ__isConvex_p0 = Module["_emscripten_bind_btCylinderShapeZ__isConvex_p0"] = asm["_emscripten_bind_btCylinderShapeZ__isConvex_p0"];
var _emscripten_bind_btSimpleBroadphaseProxy__set_m_nextFree_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__set_m_nextFree_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__set_m_nextFree_p1"];
var _emscripten_bind_btSliderConstraint__getAngularPos_p0 = Module["_emscripten_bind_btSliderConstraint__getAngularPos_p0"] = asm["_emscripten_bind_btSliderConstraint__getAngularPos_p0"];
var _emscripten_bind_btTriangleIndexVertexArray__getLockedVertexIndexBase_p8 = Module["_emscripten_bind_btTriangleIndexVertexArray__getLockedVertexIndexBase_p8"] = asm["_emscripten_bind_btTriangleIndexVertexArray__getLockedVertexIndexBase_p8"];
var _emscripten_bind_btConvexInternalShape__isSoftBody_p0 = Module["_emscripten_bind_btConvexInternalShape__isSoftBody_p0"] = asm["_emscripten_bind_btConvexInternalShape__isSoftBody_p0"];
var _emscripten_bind_btMultiSphereShape__getBoundingSphere_p2 = Module["_emscripten_bind_btMultiSphereShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btMultiSphereShape__getBoundingSphere_p2"];
var _emscripten_bind_btManifoldPoint__set_m_contactMotion2_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_contactMotion2_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_contactMotion2_p1"];
var _emscripten_bind_btManifoldResult__setShapeIdentifiersB_p2 = Module["_emscripten_bind_btManifoldResult__setShapeIdentifiersB_p2"] = asm["_emscripten_bind_btManifoldResult__setShapeIdentifiersB_p2"];
var _emscripten_bind_btConvexHullShape__isPolyhedral_p0 = Module["_emscripten_bind_btConvexHullShape__isPolyhedral_p0"] = asm["_emscripten_bind_btConvexHullShape__isPolyhedral_p0"];
var _emscripten_bind_btBU_Simplex1to4__localGetSupportingVertex_p1 = Module["_emscripten_bind_btBU_Simplex1to4__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__localGetSupportingVertex_p1"];
var _emscripten_bind_btSphereShape__getAabb_p3 = Module["_emscripten_bind_btSphereShape__getAabb_p3"] = asm["_emscripten_bind_btSphereShape__getAabb_p3"];
var _emscripten_bind_btCollisionObject__setFriction_p1 = Module["_emscripten_bind_btCollisionObject__setFriction_p1"] = asm["_emscripten_bind_btCollisionObject__setFriction_p1"];
var _emscripten_bind_btConvexHullShape__getMarginNV_p0 = Module["_emscripten_bind_btConvexHullShape__getMarginNV_p0"] = asm["_emscripten_bind_btConvexHullShape__getMarginNV_p0"];
var _emscripten_bind_btCylinderShapeZ__isPolyhedral_p0 = Module["_emscripten_bind_btCylinderShapeZ__isPolyhedral_p0"] = asm["_emscripten_bind_btCylinderShapeZ__isPolyhedral_p0"];
var _emscripten_bind_btBU_Simplex1to4__isConcave_p0 = Module["_emscripten_bind_btBU_Simplex1to4__isConcave_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__isConcave_p0"];
var _emscripten_bind_btConvexShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btConvexShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btConvexShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btIDebugDraw__drawContactPoint_p5 = Module["_emscripten_bind_btIDebugDraw__drawContactPoint_p5"] = asm["_emscripten_bind_btIDebugDraw__drawContactPoint_p5"];
var _emscripten_bind_btConeShapeZ__isPolyhedral_p0 = Module["_emscripten_bind_btConeShapeZ__isPolyhedral_p0"] = asm["_emscripten_bind_btConeShapeZ__isPolyhedral_p0"];
var _emscripten_bind_btWheelInfo__set_m_suspensionRelativeVelocity_p1 = Module["_emscripten_bind_btWheelInfo__set_m_suspensionRelativeVelocity_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_suspensionRelativeVelocity_p1"];
var _emscripten_bind_btContactConstraint__getUserConstraintPtr_p0 = Module["_emscripten_bind_btContactConstraint__getUserConstraintPtr_p0"] = asm["_emscripten_bind_btContactConstraint__getUserConstraintPtr_p0"];
var _emscripten_bind_btContactConstraint__buildJacobian_p0 = Module["_emscripten_bind_btContactConstraint__buildJacobian_p0"] = asm["_emscripten_bind_btContactConstraint__buildJacobian_p0"];
var _emscripten_bind_btRaycastVehicle__updateVehicle_p1 = Module["_emscripten_bind_btRaycastVehicle__updateVehicle_p1"] = asm["_emscripten_bind_btRaycastVehicle__updateVehicle_p1"];
var _emscripten_bind_ConcreteContactResultCallback__set_m_collisionFilterGroup_p1 = Module["_emscripten_bind_ConcreteContactResultCallback__set_m_collisionFilterGroup_p1"] = asm["_emscripten_bind_ConcreteContactResultCallback__set_m_collisionFilterGroup_p1"];
var _emscripten_bind_btClock____destroy___p0 = Module["_emscripten_bind_btClock____destroy___p0"] = asm["_emscripten_bind_btClock____destroy___p0"];
var _emscripten_bind_btClock__btClock_p1 = Module["_emscripten_bind_btClock__btClock_p1"] = asm["_emscripten_bind_btClock__btClock_p1"];
var _emscripten_bind_btClock__btClock_p0 = Module["_emscripten_bind_btClock__btClock_p0"] = asm["_emscripten_bind_btClock__btClock_p0"];
var _emscripten_bind_btTriangleMesh__getNumTriangles_p0 = Module["_emscripten_bind_btTriangleMesh__getNumTriangles_p0"] = asm["_emscripten_bind_btTriangleMesh__getNumTriangles_p0"];
var _emscripten_bind_btHingeConstraint__getRigidBodyB_p0 = Module["_emscripten_bind_btHingeConstraint__getRigidBodyB_p0"] = asm["_emscripten_bind_btHingeConstraint__getRigidBodyB_p0"];
var _emscripten_bind_btCylinderShape__setUserPointer_p1 = Module["_emscripten_bind_btCylinderShape__setUserPointer_p1"] = asm["_emscripten_bind_btCylinderShape__setUserPointer_p1"];
var _emscripten_bind_btManifoldPoint__get_m_lifeTime_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_lifeTime_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_lifeTime_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getImplicitShapeDimensions_p0"];
var _emscripten_bind_btConvexInternalAabbCachingShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getPreferredPenetrationDirection_p2"];
var _emscripten_bind_btBroadphaseProxy__isCompound_p1 = Module["_emscripten_bind_btBroadphaseProxy__isCompound_p1"] = asm["_emscripten_bind_btBroadphaseProxy__isCompound_p1"];
var _emscripten_bind_btConvexInternalShape__getLocalScaling_p0 = Module["_emscripten_bind_btConvexInternalShape__getLocalScaling_p0"] = asm["_emscripten_bind_btConvexInternalShape__getLocalScaling_p0"];
var _emscripten_bind_btTriangleIndexVertexArray__btTriangleIndexVertexArray_p6 = Module["_emscripten_bind_btTriangleIndexVertexArray__btTriangleIndexVertexArray_p6"] = asm["_emscripten_bind_btTriangleIndexVertexArray__btTriangleIndexVertexArray_p6"];
var _emscripten_bind_btRigidBody__setUserPointer_p1 = Module["_emscripten_bind_btRigidBody__setUserPointer_p1"] = asm["_emscripten_bind_btRigidBody__setUserPointer_p1"];
var _emscripten_bind_btGhostObject__getBroadphaseHandle_p0 = Module["_emscripten_bind_btGhostObject__getBroadphaseHandle_p0"] = asm["_emscripten_bind_btGhostObject__getBroadphaseHandle_p0"];
var _emscripten_bind_btUniformScalingShape__isCompound_p0 = Module["_emscripten_bind_btUniformScalingShape__isCompound_p0"] = asm["_emscripten_bind_btUniformScalingShape__isCompound_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__debugDrawWorld_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__debugDrawWorld_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__debugDrawWorld_p0"];
var _emscripten_bind_btTriangleIndexVertexArray__btTriangleIndexVertexArray_p0 = Module["_emscripten_bind_btTriangleIndexVertexArray__btTriangleIndexVertexArray_p0"] = asm["_emscripten_bind_btTriangleIndexVertexArray__btTriangleIndexVertexArray_p0"];
var _emscripten_bind_btPairCachingGhostObject__setInterpolationAngularVelocity_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setInterpolationAngularVelocity_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setInterpolationAngularVelocity_p1"];
var _emscripten_bind_btQuadWord__z_p0 = Module["_emscripten_bind_btQuadWord__z_p0"] = asm["_emscripten_bind_btQuadWord__z_p0"];
var _emscripten_bind_btSerializer__allocate_p2 = Module["_emscripten_bind_btSerializer__allocate_p2"] = asm["_emscripten_bind_btSerializer__allocate_p2"];
var _emscripten_bind_btConvexShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btConvexShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btConvexShape__getAabbNonVirtual_p3"];
var _emscripten_bind_btSimpleDynamicsWorld__convexSweepTest_p5 = Module["_emscripten_bind_btSimpleDynamicsWorld__convexSweepTest_p5"] = asm["_emscripten_bind_btSimpleDynamicsWorld__convexSweepTest_p5"];
var _emscripten_bind_btSphereShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btSphereShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btSphereShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _emscripten_bind_btStridingMeshInterface__InternalProcessAllTriangles_p3 = Module["_emscripten_bind_btStridingMeshInterface__InternalProcessAllTriangles_p3"] = asm["_emscripten_bind_btStridingMeshInterface__InternalProcessAllTriangles_p3"];
var _emscripten_bind_btGhostObject__getDeactivationTime_p0 = Module["_emscripten_bind_btGhostObject__getDeactivationTime_p0"] = asm["_emscripten_bind_btGhostObject__getDeactivationTime_p0"];
var _emscripten_bind_btPoint2PointConstraint__setBreakingImpulseThreshold_p1 = Module["_emscripten_bind_btPoint2PointConstraint__setBreakingImpulseThreshold_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__setBreakingImpulseThreshold_p1"];
var _emscripten_bind_btManifoldResult__btManifoldResult_p2 = Module["_emscripten_bind_btManifoldResult__btManifoldResult_p2"] = asm["_emscripten_bind_btManifoldResult__btManifoldResult_p2"];
var _emscripten_bind_btManifoldResult__btManifoldResult_p0 = Module["_emscripten_bind_btManifoldResult__btManifoldResult_p0"] = asm["_emscripten_bind_btManifoldResult__btManifoldResult_p0"];
var _emscripten_bind_btSliderConstraint__getSoftnessOrthoLin_p0 = Module["_emscripten_bind_btSliderConstraint__getSoftnessOrthoLin_p0"] = asm["_emscripten_bind_btSliderConstraint__getSoftnessOrthoLin_p0"];
var _emscripten_bind_btDbvtProxy__isPolyhedral_p1 = Module["_emscripten_bind_btDbvtProxy__isPolyhedral_p1"] = asm["_emscripten_bind_btDbvtProxy__isPolyhedral_p1"];
var _emscripten_bind_btIndexedMesh__set_m_triangleIndexStride_p1 = Module["_emscripten_bind_btIndexedMesh__set_m_triangleIndexStride_p1"] = asm["_emscripten_bind_btIndexedMesh__set_m_triangleIndexStride_p1"];
var _emscripten_bind_btVector4__setMin_p1 = Module["_emscripten_bind_btVector4__setMin_p1"] = asm["_emscripten_bind_btVector4__setMin_p1"];
var _emscripten_bind_btManifoldPoint__set_m_index1_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_index1_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_index1_p1"];
var _emscripten_bind_btPoint2PointConstraint__setDbgDrawSize_p1 = Module["_emscripten_bind_btPoint2PointConstraint__setDbgDrawSize_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__setDbgDrawSize_p1"];
var _emscripten_bind_btPoint2PointConstraint__getConstraintType_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getConstraintType_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getConstraintType_p0"];
var _emscripten_bind_btEmptyShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btEmptyShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btEmptyShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btStaticPlaneShape__getLocalScaling_p0 = Module["_emscripten_bind_btStaticPlaneShape__getLocalScaling_p0"] = asm["_emscripten_bind_btStaticPlaneShape__getLocalScaling_p0"];
var _emscripten_bind_btManifoldPoint__set_m_positionWorldOnA_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_positionWorldOnA_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_positionWorldOnA_p1"];
var _emscripten_bind_btOverlapCallback__processOverlap_p1 = Module["_emscripten_bind_btOverlapCallback__processOverlap_p1"] = asm["_emscripten_bind_btOverlapCallback__processOverlap_p1"];
var _emscripten_bind_btConeShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btConeShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btConeShape__calculateLocalInertia_p2"];
var _emscripten_bind_btStackAlloc__destroy_p0 = Module["_emscripten_bind_btStackAlloc__destroy_p0"] = asm["_emscripten_bind_btStackAlloc__destroy_p0"];
var _emscripten_bind_btConeShapeX__getAngularMotionDisc_p0 = Module["_emscripten_bind_btConeShapeX__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btConeShapeX__getAngularMotionDisc_p0"];
var _emscripten_bind_btOverlappingPairCallback__removeOverlappingPairsContainingProxy_p2 = Module["_emscripten_bind_btOverlappingPairCallback__removeOverlappingPairsContainingProxy_p2"] = asm["_emscripten_bind_btOverlappingPairCallback__removeOverlappingPairsContainingProxy_p2"];
var _emscripten_bind_btBroadphasePair__set_m_pProxy0_p1 = Module["_emscripten_bind_btBroadphasePair__set_m_pProxy0_p1"] = asm["_emscripten_bind_btBroadphasePair__set_m_pProxy0_p1"];
var _emscripten_bind_btPairCachingGhostObject__setActivationState_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setActivationState_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setActivationState_p1"];
var _emscripten_bind_ConcreteContactResultCallback__get_m_collisionFilterMask_p0 = Module["_emscripten_bind_ConcreteContactResultCallback__get_m_collisionFilterMask_p0"] = asm["_emscripten_bind_ConcreteContactResultCallback__get_m_collisionFilterMask_p0"];
var _emscripten_bind_btSliderConstraint__testLinLimits_p0 = Module["_emscripten_bind_btSliderConstraint__testLinLimits_p0"] = asm["_emscripten_bind_btSliderConstraint__testLinLimits_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__serializeSingleShape_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__serializeSingleShape_p1"];
var _emscripten_bind_btSliderConstraint__setBreakingImpulseThreshold_p1 = Module["_emscripten_bind_btSliderConstraint__setBreakingImpulseThreshold_p1"] = asm["_emscripten_bind_btSliderConstraint__setBreakingImpulseThreshold_p1"];
var _emscripten_bind_btTranslationalLimitMotor__get_m_normalCFM_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_normalCFM_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_normalCFM_p0"];
var _emscripten_bind_btConeShapeX__getHeight_p0 = Module["_emscripten_bind_btConeShapeX__getHeight_p0"] = asm["_emscripten_bind_btConeShapeX__getHeight_p0"];
var _emscripten_bind_btGhostObject__getCcdSquareMotionThreshold_p0 = Module["_emscripten_bind_btGhostObject__getCcdSquareMotionThreshold_p0"] = asm["_emscripten_bind_btGhostObject__getCcdSquareMotionThreshold_p0"];
var _emscripten_bind_btMatrix3x3__cofac_p4 = Module["_emscripten_bind_btMatrix3x3__cofac_p4"] = asm["_emscripten_bind_btMatrix3x3__cofac_p4"];
var _emscripten_bind_btDbvtBroadphase__setAabb_p4 = Module["_emscripten_bind_btDbvtBroadphase__setAabb_p4"] = asm["_emscripten_bind_btDbvtBroadphase__setAabb_p4"];
var _emscripten_bind_btSimpleDynamicsWorld__setWorldUserInfo_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__setWorldUserInfo_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__setWorldUserInfo_p1"];
var _emscripten_bind_btPolyhedralConvexShape__getNumPlanes_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getNumPlanes_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getNumPlanes_p0"];
var _emscripten_bind_btGhostObject__mergesSimulationIslands_p0 = Module["_emscripten_bind_btGhostObject__mergesSimulationIslands_p0"] = asm["_emscripten_bind_btGhostObject__mergesSimulationIslands_p0"];
var _emscripten_bind_btConeTwistConstraint__setParam_p2 = Module["_emscripten_bind_btConeTwistConstraint__setParam_p2"] = asm["_emscripten_bind_btConeTwistConstraint__setParam_p2"];
var _emscripten_bind_btPersistentManifold____destroy___p0 = Module["_emscripten_bind_btPersistentManifold____destroy___p0"] = asm["_emscripten_bind_btPersistentManifold____destroy___p0"];
var _emscripten_bind_btBoxShape__getBoundingSphere_p2 = Module["_emscripten_bind_btBoxShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btBoxShape__getBoundingSphere_p2"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalAngularDampingThresholdSqr_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalAngularDampingThresholdSqr_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalAngularDampingThresholdSqr_p0"];
var _emscripten_bind_btRigidBody__getInterpolationAngularVelocity_p0 = Module["_emscripten_bind_btRigidBody__getInterpolationAngularVelocity_p0"] = asm["_emscripten_bind_btRigidBody__getInterpolationAngularVelocity_p0"];
var _emscripten_bind_btCollisionShape__isCompound_p0 = Module["_emscripten_bind_btCollisionShape__isCompound_p0"] = asm["_emscripten_bind_btCollisionShape__isCompound_p0"];
var _emscripten_bind_btVector4__minAxis4_p0 = Module["_emscripten_bind_btVector4__minAxis4_p0"] = asm["_emscripten_bind_btVector4__minAxis4_p0"];
var _emscripten_bind_btBroadphasePair__set_m_pProxy1_p1 = Module["_emscripten_bind_btBroadphasePair__set_m_pProxy1_p1"] = asm["_emscripten_bind_btBroadphasePair__set_m_pProxy1_p1"];
var _emscripten_bind_btQuadWord__setMin_p1 = Module["_emscripten_bind_btQuadWord__setMin_p1"] = asm["_emscripten_bind_btQuadWord__setMin_p1"];
var _emscripten_bind_btDispatcherInfo__set_m_enableSatConvex_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_enableSatConvex_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_enableSatConvex_p1"];
var _emscripten_bind_btDbvtBroadphase__createProxy_p8 = Module["_emscripten_bind_btDbvtBroadphase__createProxy_p8"] = asm["_emscripten_bind_btDbvtBroadphase__createProxy_p8"];
var _emscripten_bind_btCapsuleShapeZ__getBoundingSphere_p2 = Module["_emscripten_bind_btCapsuleShapeZ__getBoundingSphere_p2"] = asm["_emscripten_bind_btCapsuleShapeZ__getBoundingSphere_p2"];
var _emscripten_bind_btDynamicsWorld__getConstraintSolver_p0 = Module["_emscripten_bind_btDynamicsWorld__getConstraintSolver_p0"] = asm["_emscripten_bind_btDynamicsWorld__getConstraintSolver_p0"];
var _emscripten_bind_btSequentialImpulseConstraintSolver__allSolved_p3 = Module["_emscripten_bind_btSequentialImpulseConstraintSolver__allSolved_p3"] = asm["_emscripten_bind_btSequentialImpulseConstraintSolver__allSolved_p3"];
var _emscripten_bind_btOverlappingPairCache__getOverlappingPairArray_p0 = Module["_emscripten_bind_btOverlappingPairCache__getOverlappingPairArray_p0"] = asm["_emscripten_bind_btOverlappingPairCache__getOverlappingPairArray_p0"];
var _emscripten_bind_btQuaternion__inverse_p0 = Module["_emscripten_bind_btQuaternion__inverse_p0"] = asm["_emscripten_bind_btQuaternion__inverse_p0"];
var _emscripten_bind_btRigidBody__internalGetExtensionPointer_p0 = Module["_emscripten_bind_btRigidBody__internalGetExtensionPointer_p0"] = asm["_emscripten_bind_btRigidBody__internalGetExtensionPointer_p0"];
var _emscripten_bind_btTranslationalLimitMotor__set_m_lowerLimit_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_lowerLimit_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_lowerLimit_p1"];
var _emscripten_bind_btDynamicsWorld__objectQuerySingle_p8 = Module["_emscripten_bind_btDynamicsWorld__objectQuerySingle_p8"] = asm["_emscripten_bind_btDynamicsWorld__objectQuerySingle_p8"];
var _emscripten_bind_btCollisionObject__isStaticObject_p0 = Module["_emscripten_bind_btCollisionObject__isStaticObject_p0"] = asm["_emscripten_bind_btCollisionObject__isStaticObject_p0"];
var _emscripten_bind_btCapsuleShape__getBoundingSphere_p2 = Module["_emscripten_bind_btCapsuleShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btCapsuleShape__getBoundingSphere_p2"];
var _emscripten_bind_btStorageResult__setShapeIdentifiersB_p2 = Module["_emscripten_bind_btStorageResult__setShapeIdentifiersB_p2"] = asm["_emscripten_bind_btStorageResult__setShapeIdentifiersB_p2"];
var _emscripten_bind_bt32BitAxisSweep3__destroyProxy_p2 = Module["_emscripten_bind_bt32BitAxisSweep3__destroyProxy_p2"] = asm["_emscripten_bind_bt32BitAxisSweep3__destroyProxy_p2"];
var _emscripten_bind_btConvexInternalAabbCachingShape__isPolyhedral_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__isPolyhedral_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__isPolyhedral_p0"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__getMargin_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__getMargin_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__getMargin_p0"];
var _emscripten_bind_btSliderConstraint__getPoweredLinMotor_p0 = Module["_emscripten_bind_btSliderConstraint__getPoweredLinMotor_p0"] = asm["_emscripten_bind_btSliderConstraint__getPoweredLinMotor_p0"];
var _emscripten_bind_btPolyhedralConvexShape__getBoundingSphere_p2 = Module["_emscripten_bind_btPolyhedralConvexShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btPolyhedralConvexShape__getBoundingSphere_p2"];
var _emscripten_bind_btHinge2Constraint__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btHinge2Constraint__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btHinge2Constraint__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btGeneric6DofConstraint__getParam_p2 = Module["_emscripten_bind_btGeneric6DofConstraint__getParam_p2"] = asm["_emscripten_bind_btGeneric6DofConstraint__getParam_p2"];
var _emscripten_bind_btVector3__setX_p1 = Module["_emscripten_bind_btVector3__setX_p1"] = asm["_emscripten_bind_btVector3__setX_p1"];
var _emscripten_bind_btSphereShape__getBoundingSphere_p2 = Module["_emscripten_bind_btSphereShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btSphereShape__getBoundingSphere_p2"];
var _emscripten_bind_btGeneric6DofConstraint__getParam_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getParam_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getParam_p1"];
var _emscripten_bind_btActionInterface__updateAction_p2 = Module["_emscripten_bind_btActionInterface__updateAction_p2"] = asm["_emscripten_bind_btActionInterface__updateAction_p2"];
var _emscripten_bind_btConvexInternalAabbCachingShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btMultiSphereShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btMultiSphereShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btMultiSphereShape__getAngularMotionDisc_p0"];
var _emscripten_bind_btGeneric6DofConstraint__getAngularLowerLimit_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getAngularLowerLimit_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getAngularLowerLimit_p1"];
var _emscripten_bind_btOptimizedBvh__getQuantizedNodeArray_p0 = Module["_emscripten_bind_btOptimizedBvh__getQuantizedNodeArray_p0"] = asm["_emscripten_bind_btOptimizedBvh__getQuantizedNodeArray_p0"];
var _emscripten_bind_btQuantizedBvh__buildInternal_p0 = Module["_emscripten_bind_btQuantizedBvh__buildInternal_p0"] = asm["_emscripten_bind_btQuantizedBvh__buildInternal_p0"];
var _emscripten_bind_btConvexShape__getMargin_p0 = Module["_emscripten_bind_btConvexShape__getMargin_p0"] = asm["_emscripten_bind_btConvexShape__getMargin_p0"];
var _emscripten_bind_btPoint2PointConstraint__setUserConstraintType_p1 = Module["_emscripten_bind_btPoint2PointConstraint__setUserConstraintType_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__setUserConstraintType_p1"];
var _emscripten_bind_btPoint2PointConstraint__internalSetAppliedImpulse_p1 = Module["_emscripten_bind_btPoint2PointConstraint__internalSetAppliedImpulse_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__internalSetAppliedImpulse_p1"];
var _emscripten_bind_btDefaultMotionState__get_m_startWorldTrans_p0 = Module["_emscripten_bind_btDefaultMotionState__get_m_startWorldTrans_p0"] = asm["_emscripten_bind_btDefaultMotionState__get_m_startWorldTrans_p0"];
var _emscripten_bind_btConeShape__setMargin_p1 = Module["_emscripten_bind_btConeShape__setMargin_p1"] = asm["_emscripten_bind_btConeShape__setMargin_p1"];
var _emscripten_bind_btStackAlloc__create_p1 = Module["_emscripten_bind_btStackAlloc__create_p1"] = asm["_emscripten_bind_btStackAlloc__create_p1"];
var _emscripten_bind_btRigidBody__getAnisotropicFriction_p0 = Module["_emscripten_bind_btRigidBody__getAnisotropicFriction_p0"] = asm["_emscripten_bind_btRigidBody__getAnisotropicFriction_p0"];
var _emscripten_bind_btBU_Simplex1to4__isSoftBody_p0 = Module["_emscripten_bind_btBU_Simplex1to4__isSoftBody_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__isSoftBody_p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__btDiscreteDynamicsWorld_p4 = Module["_emscripten_bind_btDiscreteDynamicsWorld__btDiscreteDynamicsWorld_p4"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__btDiscreteDynamicsWorld_p4"];
var _emscripten_bind_btCollisionShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btCollisionShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btCollisionShape__calculateLocalInertia_p2"];
var _emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p6 = Module["_emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p6"] = asm["_emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p6"];
var _emscripten_bind_btContinuousDynamicsWorld__getNumCollisionObjects_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getNumCollisionObjects_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getNumCollisionObjects_p0"];
var _emscripten_bind_btQuaternion__length2_p0 = Module["_emscripten_bind_btQuaternion__length2_p0"] = asm["_emscripten_bind_btQuaternion__length2_p0"];
var _emscripten_bind_btRigidBody__getDeltaLinearVelocity_p0 = Module["_emscripten_bind_btRigidBody__getDeltaLinearVelocity_p0"] = asm["_emscripten_bind_btRigidBody__getDeltaLinearVelocity_p0"];
var _emscripten_bind_btPairCachingGhostObject__setCcdSweptSphereRadius_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setCcdSweptSphereRadius_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setCcdSweptSphereRadius_p1"];
var _emscripten_bind_btConvexHullShape__getNonvirtualAabb_p4 = Module["_emscripten_bind_btConvexHullShape__getNonvirtualAabb_p4"] = asm["_emscripten_bind_btConvexHullShape__getNonvirtualAabb_p4"];
var _emscripten_bind_btCylinderShapeZ__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btCylinderShapeZ__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btGeneric6DofConstraint__setUseFrameOffset_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setUseFrameOffset_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setUseFrameOffset_p1"];
var _emscripten_bind_btRaycastVehicle__getForwardAxis_p0 = Module["_emscripten_bind_btRaycastVehicle__getForwardAxis_p0"] = asm["_emscripten_bind_btRaycastVehicle__getForwardAxis_p0"];
var _emscripten_bind_btContactConstraint__internalGetAppliedImpulse_p0 = Module["_emscripten_bind_btContactConstraint__internalGetAppliedImpulse_p0"] = asm["_emscripten_bind_btContactConstraint__internalGetAppliedImpulse_p0"];
var _emscripten_bind_btDbvtBroadphase__calculateOverlappingPairs_p1 = Module["_emscripten_bind_btDbvtBroadphase__calculateOverlappingPairs_p1"] = asm["_emscripten_bind_btDbvtBroadphase__calculateOverlappingPairs_p1"];
var _emscripten_bind_btStaticPlaneShape__getUserPointer_p0 = Module["_emscripten_bind_btStaticPlaneShape__getUserPointer_p0"] = asm["_emscripten_bind_btStaticPlaneShape__getUserPointer_p0"];
var _emscripten_bind_btScaledBvhTriangleMeshShape__isCompound_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__isCompound_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__isCompound_p0"];
var _emscripten_bind_btSimpleDynamicsWorld__contactTest_p2 = Module["_emscripten_bind_btSimpleDynamicsWorld__contactTest_p2"] = asm["_emscripten_bind_btSimpleDynamicsWorld__contactTest_p2"];
var _emscripten_bind_btGhostObject__internalGetExtensionPointer_p0 = Module["_emscripten_bind_btGhostObject__internalGetExtensionPointer_p0"] = asm["_emscripten_bind_btGhostObject__internalGetExtensionPointer_p0"];
var _emscripten_bind_btStridingMeshInterface__getNumSubParts_p0 = Module["_emscripten_bind_btStridingMeshInterface__getNumSubParts_p0"] = asm["_emscripten_bind_btStridingMeshInterface__getNumSubParts_p0"];
var _emscripten_bind_btVector3__getSkewSymmetricMatrix_p3 = Module["_emscripten_bind_btVector3__getSkewSymmetricMatrix_p3"] = asm["_emscripten_bind_btVector3__getSkewSymmetricMatrix_p3"];
var _emscripten_bind_btGhostObject__setBroadphaseHandle_p1 = Module["_emscripten_bind_btGhostObject__setBroadphaseHandle_p1"] = asm["_emscripten_bind_btGhostObject__setBroadphaseHandle_p1"];
var _emscripten_bind_ConcreteContactResultCallback____destroy___p0 = Module["_emscripten_bind_ConcreteContactResultCallback____destroy___p0"] = asm["_emscripten_bind_ConcreteContactResultCallback____destroy___p0"];
var _emscripten_bind_btTranslationalLimitMotor__get_m_maxMotorForce_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_maxMotorForce_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_maxMotorForce_p0"];
var _emscripten_bind_btCapsuleShapeX__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btCapsuleShapeX__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getNumPreferredPenetrationDirections_p0"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__isConvex2d_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isConvex2d_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isConvex2d_p0"];
var _emscripten_bind_btDbvtProxy__set_m_collisionFilterGroup_p1 = Module["_emscripten_bind_btDbvtProxy__set_m_collisionFilterGroup_p1"] = asm["_emscripten_bind_btDbvtProxy__set_m_collisionFilterGroup_p1"];
var _emscripten_bind_btHingeConstraint__setFrames_p2 = Module["_emscripten_bind_btHingeConstraint__setFrames_p2"] = asm["_emscripten_bind_btHingeConstraint__setFrames_p2"];
var _emscripten_bind_btBroadphaseAabbCallback__process_p1 = Module["_emscripten_bind_btBroadphaseAabbCallback__process_p1"] = asm["_emscripten_bind_btBroadphaseAabbCallback__process_p1"];
var _emscripten_bind_btMultiSphereShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btMultiSphereShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btMultiSphereShape__getContactBreakingThreshold_p1"];
var _emscripten_bind_btCylinderShape__getAabb_p3 = Module["_emscripten_bind_btCylinderShape__getAabb_p3"] = asm["_emscripten_bind_btCylinderShape__getAabb_p3"];
var _emscripten_bind_btConvexSeparatingDistanceUtil__updateSeparatingDistance_p2 = Module["_emscripten_bind_btConvexSeparatingDistanceUtil__updateSeparatingDistance_p2"] = asm["_emscripten_bind_btConvexSeparatingDistanceUtil__updateSeparatingDistance_p2"];
var _emscripten_bind_btDynamicsWorld__getWorldUserInfo_p0 = Module["_emscripten_bind_btDynamicsWorld__getWorldUserInfo_p0"] = asm["_emscripten_bind_btDynamicsWorld__getWorldUserInfo_p0"];
var _emscripten_bind_btRaycastVehicle__getUserConstraintId_p0 = Module["_emscripten_bind_btRaycastVehicle__getUserConstraintId_p0"] = asm["_emscripten_bind_btRaycastVehicle__getUserConstraintId_p0"];
var _emscripten_bind_btEmptyShape__isInfinite_p0 = Module["_emscripten_bind_btEmptyShape__isInfinite_p0"] = asm["_emscripten_bind_btEmptyShape__isInfinite_p0"];
var _emscripten_bind_btAngularLimit__getSign_p0 = Module["_emscripten_bind_btAngularLimit__getSign_p0"] = asm["_emscripten_bind_btAngularLimit__getSign_p0"];
var _emscripten_bind_btManifoldPoint__set_m_lateralFrictionDir2_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_lateralFrictionDir2_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_lateralFrictionDir2_p1"];
var _emscripten_bind_btGeneric6DofConstraint__internalSetAppliedImpulse_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__internalSetAppliedImpulse_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__internalSetAppliedImpulse_p1"];
var _emscripten_bind_btOverlappingPairCallback__removeOverlappingPair_p3 = Module["_emscripten_bind_btOverlappingPairCallback__removeOverlappingPair_p3"] = asm["_emscripten_bind_btOverlappingPairCallback__removeOverlappingPair_p3"];
var _emscripten_bind_btTranslationalLimitMotor__set_m_upperLimit_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_upperLimit_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_upperLimit_p1"];
var _emscripten_bind_btVector3__cross_p1 = Module["_emscripten_bind_btVector3__cross_p1"] = asm["_emscripten_bind_btVector3__cross_p1"];
var _emscripten_bind_btCylinderShapeZ__serialize_p2 = Module["_emscripten_bind_btCylinderShapeZ__serialize_p2"] = asm["_emscripten_bind_btCylinderShapeZ__serialize_p2"];
var _emscripten_bind_btCylinderShapeZ__isSoftBody_p0 = Module["_emscripten_bind_btCylinderShapeZ__isSoftBody_p0"] = asm["_emscripten_bind_btCylinderShapeZ__isSoftBody_p0"];
var _emscripten_bind_btMultiSphereShape__serialize_p2 = Module["_emscripten_bind_btMultiSphereShape__serialize_p2"] = asm["_emscripten_bind_btMultiSphereShape__serialize_p2"];
var _emscripten_bind_btTriangleInfoMap__get_m_zeroAreaThreshold_p0 = Module["_emscripten_bind_btTriangleInfoMap__get_m_zeroAreaThreshold_p0"] = asm["_emscripten_bind_btTriangleInfoMap__get_m_zeroAreaThreshold_p0"];
var _emscripten_bind_btVector4__length_p0 = Module["_emscripten_bind_btVector4__length_p0"] = asm["_emscripten_bind_btVector4__length_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p3 = Module["_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p3"] = asm["_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p3"];
var _emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p2 = Module["_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p2"] = asm["_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p2"];
var _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_distFraction_p1 = Module["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_distFraction_p1"] = asm["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_distFraction_p1"];
var _emscripten_bind_btCollisionShape__isNonMoving_p0 = Module["_emscripten_bind_btCollisionShape__isNonMoving_p0"] = asm["_emscripten_bind_btCollisionShape__isNonMoving_p0"];
var _emscripten_bind_btConvexShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btConvexShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btConvexShape__localGetSupportingVertex_p1"];
var _emscripten_bind_btConvexTriangleMeshShape____destroy___p0 = Module["_emscripten_bind_btConvexTriangleMeshShape____destroy___p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape____destroy___p0"];
var _emscripten_bind_btRigidBody__setIslandTag_p1 = Module["_emscripten_bind_btRigidBody__setIslandTag_p1"] = asm["_emscripten_bind_btRigidBody__setIslandTag_p1"];
var _emscripten_bind_btBoxShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btBoxShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btBoxShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btPolyhedralConvexShape__isInfinite_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__isInfinite_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__isInfinite_p0"];
var _emscripten_bind_btTriangleMesh__unLockVertexBase_p1 = Module["_emscripten_bind_btTriangleMesh__unLockVertexBase_p1"] = asm["_emscripten_bind_btTriangleMesh__unLockVertexBase_p1"];
var _emscripten_bind_btQuaternion__setMin_p1 = Module["_emscripten_bind_btQuaternion__setMin_p1"] = asm["_emscripten_bind_btQuaternion__setMin_p1"];
var _emscripten_bind_btConeShapeZ__getHeight_p0 = Module["_emscripten_bind_btConeShapeZ__getHeight_p0"] = asm["_emscripten_bind_btConeShapeZ__getHeight_p0"];
var _emscripten_bind_btGhostObject__setInterpolationWorldTransform_p1 = Module["_emscripten_bind_btGhostObject__setInterpolationWorldTransform_p1"] = asm["_emscripten_bind_btGhostObject__setInterpolationWorldTransform_p1"];
var _emscripten_bind_btAngularLimit__getRelaxationFactor_p0 = Module["_emscripten_bind_btAngularLimit__getRelaxationFactor_p0"] = asm["_emscripten_bind_btAngularLimit__getRelaxationFactor_p0"];
var _emscripten_bind_btSphereShape__isInfinite_p0 = Module["_emscripten_bind_btSphereShape__isInfinite_p0"] = asm["_emscripten_bind_btSphereShape__isInfinite_p0"];
var _emscripten_bind_btManifoldPoint__get_m_combinedRestitution_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_combinedRestitution_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_combinedRestitution_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__getLocalScaling_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getLocalScaling_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getLocalScaling_p0"];
var _emscripten_bind_btMultiSphereShape__recalcLocalAabb_p0 = Module["_emscripten_bind_btMultiSphereShape__recalcLocalAabb_p0"] = asm["_emscripten_bind_btMultiSphereShape__recalcLocalAabb_p0"];
var _emscripten_bind_btHinge2Constraint__setDbgDrawSize_p1 = Module["_emscripten_bind_btHinge2Constraint__setDbgDrawSize_p1"] = asm["_emscripten_bind_btHinge2Constraint__setDbgDrawSize_p1"];
var _emscripten_bind_btBoxShape__getNumVertices_p0 = Module["_emscripten_bind_btBoxShape__getNumVertices_p0"] = asm["_emscripten_bind_btBoxShape__getNumVertices_p0"];
var _emscripten_bind_btOptimizedBvh__getSubtreeInfoArray_p0 = Module["_emscripten_bind_btOptimizedBvh__getSubtreeInfoArray_p0"] = asm["_emscripten_bind_btOptimizedBvh__getSubtreeInfoArray_p0"];
var _emscripten_bind_btBvhTriangleMeshShape__getLocalAabbMin_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getLocalAabbMin_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getLocalAabbMin_p0"];
var _emscripten_bind_btBU_Simplex1to4__getName_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getName_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getName_p0"];
var _emscripten_bind_btStorageResult__addContactPoint_p3 = Module["_emscripten_bind_btStorageResult__addContactPoint_p3"] = asm["_emscripten_bind_btStorageResult__addContactPoint_p3"];
var _emscripten_bind_btHingeConstraint__getSolveLimit_p0 = Module["_emscripten_bind_btHingeConstraint__getSolveLimit_p0"] = asm["_emscripten_bind_btHingeConstraint__getSolveLimit_p0"];
var _emscripten_bind_btTranslationalLimitMotor__get_m_currentLinearDiff_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_currentLinearDiff_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_currentLinearDiff_p0"];
var _emscripten_bind_btConvexTriangleMeshShape__serialize_p2 = Module["_emscripten_bind_btConvexTriangleMeshShape__serialize_p2"] = asm["_emscripten_bind_btConvexTriangleMeshShape__serialize_p2"];
var _emscripten_bind_btDispatcher__getNumManifolds_p0 = Module["_emscripten_bind_btDispatcher__getNumManifolds_p0"] = asm["_emscripten_bind_btDispatcher__getNumManifolds_p0"];
var _emscripten_bind_btSphereShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btSphereShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btSphereShape__calculateSerializeBufferSize_p0"];
var _emscripten_bind_btSliderConstraint__getInfo1_p1 = Module["_emscripten_bind_btSliderConstraint__getInfo1_p1"] = asm["_emscripten_bind_btSliderConstraint__getInfo1_p1"];
var _emscripten_bind_btSimpleDynamicsWorld__getForceUpdateAllAabbs_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getForceUpdateAllAabbs_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getForceUpdateAllAabbs_p0"];
var _emscripten_bind_btGhostObject____destroy___p0 = Module["_emscripten_bind_btGhostObject____destroy___p0"] = asm["_emscripten_bind_btGhostObject____destroy___p0"];
var _emscripten_bind_btConvexInternalAabbCachingShape__recalcLocalAabb_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__recalcLocalAabb_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__recalcLocalAabb_p0"];
var _emscripten_bind_btConvexShape__serializeSingleShape_p1 = Module["_emscripten_bind_btConvexShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btConvexShape__serializeSingleShape_p1"];
var _emscripten_bind_btCapsuleShapeX____destroy___p0 = Module["_emscripten_bind_btCapsuleShapeX____destroy___p0"] = asm["_emscripten_bind_btCapsuleShapeX____destroy___p0"];
var _emscripten_bind_btCapsuleShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btCapsuleShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btCapsuleShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"];
var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitPointWorld_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitPointWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitPointWorld_p0"];
var _emscripten_bind_btUniformScalingShape__isInfinite_p0 = Module["_emscripten_bind_btUniformScalingShape__isInfinite_p0"] = asm["_emscripten_bind_btUniformScalingShape__isInfinite_p0"];
var _emscripten_bind_btConvexHullShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btConvexHullShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btConvexHullShape__calculateTemporalAabb_p6"];
var _emscripten_bind_btBoxShape__getAabb_p3 = Module["_emscripten_bind_btBoxShape__getAabb_p3"] = asm["_emscripten_bind_btBoxShape__getAabb_p3"];
var _emscripten_bind_btHingeConstraint__setParam_p2 = Module["_emscripten_bind_btHingeConstraint__setParam_p2"] = asm["_emscripten_bind_btHingeConstraint__setParam_p2"];
var _emscripten_bind_btUniversalConstraint__isLimited_p1 = Module["_emscripten_bind_btUniversalConstraint__isLimited_p1"] = asm["_emscripten_bind_btUniversalConstraint__isLimited_p1"];
var _emscripten_bind_btCapsuleShapeX__getAabb_p3 = Module["_emscripten_bind_btCapsuleShapeX__getAabb_p3"] = asm["_emscripten_bind_btCapsuleShapeX__getAabb_p3"];
var _emscripten_bind_btSphereShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btSphereShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btSphereShape__localGetSupportingVertexWithoutMargin_p1"];
var _emscripten_bind_btHinge2Constraint__getObjectType_p0 = Module["_emscripten_bind_btHinge2Constraint__getObjectType_p0"] = asm["_emscripten_bind_btHinge2Constraint__getObjectType_p0"];
var _emscripten_bind_btManifoldPoint__setDistance_p1 = Module["_emscripten_bind_btManifoldPoint__setDistance_p1"] = asm["_emscripten_bind_btManifoldPoint__setDistance_p1"];
var _emscripten_bind_btGhostObject__checkCollideWith_p1 = Module["_emscripten_bind_btGhostObject__checkCollideWith_p1"] = asm["_emscripten_bind_btGhostObject__checkCollideWith_p1"];
var _emscripten_bind_btCapsuleShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btCapsuleShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btCapsuleShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1"];
var _emscripten_bind_btTriangleIndexVertexArray__InternalProcessAllTriangles_p3 = Module["_emscripten_bind_btTriangleIndexVertexArray__InternalProcessAllTriangles_p3"] = asm["_emscripten_bind_btTriangleIndexVertexArray__InternalProcessAllTriangles_p3"];
var _emscripten_bind_btMatrix3x3__setRotation_p1 = Module["_emscripten_bind_btMatrix3x3__setRotation_p1"] = asm["_emscripten_bind_btMatrix3x3__setRotation_p1"];
var _emscripten_bind_btVector4__btVector4_p0 = Module["_emscripten_bind_btVector4__btVector4_p0"] = asm["_emscripten_bind_btVector4__btVector4_p0"];
var _emscripten_bind_btManifoldPoint__set_m_partId0_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_partId0_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_partId0_p1"];
var _emscripten_bind_btPolyhedralConvexAabbCachingShape__setUserPointer_p1 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__setUserPointer_p1"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__setUserPointer_p1"];
var _emscripten_bind_btVector4__btVector4_p4 = Module["_emscripten_bind_btVector4__btVector4_p4"] = asm["_emscripten_bind_btVector4__btVector4_p4"];
var _emscripten_bind_btGhostObject__getCollisionFlags_p0 = Module["_emscripten_bind_btGhostObject__getCollisionFlags_p0"] = asm["_emscripten_bind_btGhostObject__getCollisionFlags_p0"];
var _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_maximumDistanceSquared_p1 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_maximumDistanceSquared_p1"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_maximumDistanceSquared_p1"];
var _emscripten_bind_btGeneric6DofConstraint__updateRHS_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__updateRHS_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__updateRHS_p1"];
var _emscripten_bind_btContactConstraint__serialize_p2 = Module["_emscripten_bind_btContactConstraint__serialize_p2"] = asm["_emscripten_bind_btContactConstraint__serialize_p2"];
var _emscripten_bind_btConvexSeparatingDistanceUtil__initSeparatingDistance_p4 = Module["_emscripten_bind_btConvexSeparatingDistanceUtil__initSeparatingDistance_p4"] = asm["_emscripten_bind_btConvexSeparatingDistanceUtil__initSeparatingDistance_p4"];
var _emscripten_bind_btMultiSphereShape__isNonMoving_p0 = Module["_emscripten_bind_btMultiSphereShape__isNonMoving_p0"] = asm["_emscripten_bind_btMultiSphereShape__isNonMoving_p0"];
var _emscripten_bind_btHinge2Constraint__enableSpring_p2 = Module["_emscripten_bind_btHinge2Constraint__enableSpring_p2"] = asm["_emscripten_bind_btHinge2Constraint__enableSpring_p2"];
var _emscripten_bind_btCapsuleShapeX__setLocalScaling_p1 = Module["_emscripten_bind_btCapsuleShapeX__setLocalScaling_p1"] = asm["_emscripten_bind_btCapsuleShapeX__setLocalScaling_p1"];
var _emscripten_bind_bt32BitAxisSweep3__getNumHandles_p0 = Module["_emscripten_bind_bt32BitAxisSweep3__getNumHandles_p0"] = asm["_emscripten_bind_bt32BitAxisSweep3__getNumHandles_p0"];
var _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_transformB_p0 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_transformB_p0"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_transformB_p0"];
var _emscripten_bind_btDefaultCollisionConstructionInfo____destroy___p0 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo____destroy___p0"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo____destroy___p0"];
var _emscripten_bind_btDiscreteDynamicsWorld__getSimulationIslandManager_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getSimulationIslandManager_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getSimulationIslandManager_p0"];
var _emscripten_bind_btHinge2Constraint__getInfo2_p1 = Module["_emscripten_bind_btHinge2Constraint__getInfo2_p1"] = asm["_emscripten_bind_btHinge2Constraint__getInfo2_p1"];
var _emscripten_bind_btPoint2PointConstraint__btPoint2PointConstraint_p4 = Module["_emscripten_bind_btPoint2PointConstraint__btPoint2PointConstraint_p4"] = asm["_emscripten_bind_btPoint2PointConstraint__btPoint2PointConstraint_p4"];
var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_localInertia_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_localInertia_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_localInertia_p1"];
var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionFilterGroup_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionFilterGroup_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionFilterGroup_p0"];
var _emscripten_bind_btUniversalConstraint__setAngularUpperLimit_p1 = Module["_emscripten_bind_btUniversalConstraint__setAngularUpperLimit_p1"] = asm["_emscripten_bind_btUniversalConstraint__setAngularUpperLimit_p1"];
var _emscripten_bind_btQuantizedBvh__deSerializeFloat_p1 = Module["_emscripten_bind_btQuantizedBvh__deSerializeFloat_p1"] = asm["_emscripten_bind_btQuantizedBvh__deSerializeFloat_p1"];
var _emscripten_bind_btConvexTriangleMeshShape__isConcave_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__isConcave_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__isConcave_p0"];
var _emscripten_bind_btRigidBody__setAngularFactor_p1 = Module["_emscripten_bind_btRigidBody__setAngularFactor_p1"] = asm["_emscripten_bind_btRigidBody__setAngularFactor_p1"];
var _emscripten_bind_btAngularLimit__btAngularLimit_p0 = Module["_emscripten_bind_btAngularLimit__btAngularLimit_p0"] = asm["_emscripten_bind_btAngularLimit__btAngularLimit_p0"];
var _emscripten_bind_btCapsuleShapeZ__setUserPointer_p1 = Module["_emscripten_bind_btCapsuleShapeZ__setUserPointer_p1"] = asm["_emscripten_bind_btCapsuleShapeZ__setUserPointer_p1"];
var _emscripten_bind_btConvexTriangleMeshShape__serializeSingleShape_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__serializeSingleShape_p1"];
var _emscripten_bind_btCollisionWorld__ContactResultCallback__needsCollision_p1 = Module["_emscripten_bind_btCollisionWorld__ContactResultCallback__needsCollision_p1"] = asm["_emscripten_bind_btCollisionWorld__ContactResultCallback__needsCollision_p1"];
var _emscripten_bind_btCollisionWorld__LocalConvexResult__LocalConvexResult_p5 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__LocalConvexResult_p5"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__LocalConvexResult_p5"];
var _emscripten_bind_btSliderConstraint__setSoftnessOrthoLin_p1 = Module["_emscripten_bind_btSliderConstraint__setSoftnessOrthoLin_p1"] = asm["_emscripten_bind_btSliderConstraint__setSoftnessOrthoLin_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__serialize_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__serialize_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__serialize_p1"];
var _emscripten_bind_btGhostObject__removeOverlappingObjectInternal_p2 = Module["_emscripten_bind_btGhostObject__removeOverlappingObjectInternal_p2"] = asm["_emscripten_bind_btGhostObject__removeOverlappingObjectInternal_p2"];
var _emscripten_bind_btSphereShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btSphereShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btSphereShape__getMarginNonVirtual_p0"];
var _emscripten_bind_btCollisionDispatcher__needsResponse_p2 = Module["_emscripten_bind_btCollisionDispatcher__needsResponse_p2"] = asm["_emscripten_bind_btCollisionDispatcher__needsResponse_p2"];
var _emscripten_bind_btCapsuleShapeX__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btCapsuleShapeX__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btCapsuleShapeX__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btPoint2PointConstraint__getParam_p2 = Module["_emscripten_bind_btPoint2PointConstraint__getParam_p2"] = asm["_emscripten_bind_btPoint2PointConstraint__getParam_p2"];
var _emscripten_bind_btConeShapeZ__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btConeShapeZ__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btConeShapeZ__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btCollisionObject__getInternalType_p0 = Module["_emscripten_bind_btCollisionObject__getInternalType_p0"] = asm["_emscripten_bind_btCollisionObject__getInternalType_p0"];
var _emscripten_bind_btPoint2PointConstraint__getParam_p1 = Module["_emscripten_bind_btPoint2PointConstraint__getParam_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__getParam_p1"];
var _emscripten_bind_btContinuousDynamicsWorld__getDispatchInfo_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getDispatchInfo_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getDispatchInfo_p0"];
var _emscripten_bind_btConeShapeX__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btConeShapeX__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btConeShapeX__localGetSupportVertexNonVirtual_p1"];
var _emscripten_bind_btGeneric6DofSpringConstraint__setAngularUpperLimit_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setAngularUpperLimit_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setAngularUpperLimit_p1"];
var _emscripten_bind_btUniformScalingShape__setMargin_p1 = Module["_emscripten_bind_btUniformScalingShape__setMargin_p1"] = asm["_emscripten_bind_btUniformScalingShape__setMargin_p1"];
var _emscripten_bind_btDiscreteCollisionDetectorInterface__Result__setShapeIdentifiersA_p2 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__Result__setShapeIdentifiersA_p2"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__Result__setShapeIdentifiersA_p2"];
var _emscripten_bind_btConvexTriangleMeshShape__isConvex2d_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__isConvex2d_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__isConvex2d_p0"];
var _emscripten_bind_btGhostObject__setInterpolationLinearVelocity_p1 = Module["_emscripten_bind_btGhostObject__setInterpolationLinearVelocity_p1"] = asm["_emscripten_bind_btGhostObject__setInterpolationLinearVelocity_p1"];
var _emscripten_bind_btOptimizedBvh__setQuantizationValues_p2 = Module["_emscripten_bind_btOptimizedBvh__setQuantizationValues_p2"] = asm["_emscripten_bind_btOptimizedBvh__setQuantizationValues_p2"];
var _emscripten_bind_btOptimizedBvh__setQuantizationValues_p3 = Module["_emscripten_bind_btOptimizedBvh__setQuantizationValues_p3"] = asm["_emscripten_bind_btOptimizedBvh__setQuantizationValues_p3"];
var _emscripten_bind_btMatrix3x3__setValue_p9 = Module["_emscripten_bind_btMatrix3x3__setValue_p9"] = asm["_emscripten_bind_btMatrix3x3__setValue_p9"];
var _emscripten_bind_btTriangleInfoMap__set_m_maxEdgeAngleThreshold_p1 = Module["_emscripten_bind_btTriangleInfoMap__set_m_maxEdgeAngleThreshold_p1"] = asm["_emscripten_bind_btTriangleInfoMap__set_m_maxEdgeAngleThreshold_p1"];
var _emscripten_bind_btDiscreteDynamicsWorld__updateSingleAabb_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__updateSingleAabb_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__updateSingleAabb_p1"];
var _emscripten_bind_btMatrix3x3__op_mul_p1 = Module["_emscripten_bind_btMatrix3x3__op_mul_p1"] = asm["_emscripten_bind_btMatrix3x3__op_mul_p1"];
var runPostSets = Module["runPostSets"] = asm["runPostSets"];
var dynCall_viiiii = Module["dynCall_viiiii"] = asm["dynCall_viiiii"];
var dynCall_iiiiiif = Module["dynCall_iiiiiif"] = asm["dynCall_iiiiiif"];
var dynCall_vif = Module["dynCall_vif"] = asm["dynCall_vif"];
var dynCall_viifii = Module["dynCall_viifii"] = asm["dynCall_viifii"];
var dynCall_viiiifffffif = Module["dynCall_viiiifffffif"] = asm["dynCall_viiiifffffif"];
var dynCall_vi = Module["dynCall_vi"] = asm["dynCall_vi"];
var dynCall_iiiiiffii = Module["dynCall_iiiiiffii"] = asm["dynCall_iiiiiffii"];
var dynCall_vii = Module["dynCall_vii"] = asm["dynCall_vii"];
var dynCall_viiifii = Module["dynCall_viiifii"] = asm["dynCall_viiifii"];
var dynCall_ifffffffff = Module["dynCall_ifffffffff"] = asm["dynCall_ifffffffff"];
var dynCall_viiiif = Module["dynCall_viiiif"] = asm["dynCall_viiiif"];
var dynCall_viiiiffffii = Module["dynCall_viiiiffffii"] = asm["dynCall_viiiiffffii"];
var dynCall_ii = Module["dynCall_ii"] = asm["dynCall_ii"];
var dynCall_iiiiiiifif = Module["dynCall_iiiiiiifif"] = asm["dynCall_iiiiiiifif"];
var dynCall_vifffi = Module["dynCall_vifffi"] = asm["dynCall_vifffi"];
var dynCall_ifiii = Module["dynCall_ifiii"] = asm["dynCall_ifiii"];
var dynCall_viifi = Module["dynCall_viifi"] = asm["dynCall_viifi"];
var dynCall_viiiiiiiii = Module["dynCall_viiiiiiiii"] = asm["dynCall_viiiiiiiii"];
var dynCall_viiiiiiff = Module["dynCall_viiiiiiff"] = asm["dynCall_viiiiiiff"];
var dynCall_iiiifiii = Module["dynCall_iiiifiii"] = asm["dynCall_iiiifiii"];
var dynCall_iiiiiiiiiiiiii = Module["dynCall_iiiiiiiiiiiiii"] = asm["dynCall_iiiiiiiiiiiiii"];
var dynCall_viffff = Module["dynCall_viffff"] = asm["dynCall_viffff"];
var dynCall_viffiii = Module["dynCall_viffiii"] = asm["dynCall_viffiii"];
var dynCall_iiiiiiiiiiii = Module["dynCall_iiiiiiiiiiii"] = asm["dynCall_iiiiiiiiiiii"];
var dynCall_fififii = Module["dynCall_fififii"] = asm["dynCall_fififii"];
var dynCall_fiiiiiiiiiii = Module["dynCall_fiiiiiiiiiii"] = asm["dynCall_fiiiiiiiiiii"];
var dynCall_fiifii = Module["dynCall_fiifii"] = asm["dynCall_fiifii"];
var dynCall_ifff = Module["dynCall_ifff"] = asm["dynCall_ifff"];
var dynCall_viiff = Module["dynCall_viiff"] = asm["dynCall_viiff"];
var dynCall_iifi = Module["dynCall_iifi"] = asm["dynCall_iifi"];
var dynCall_iiii = Module["dynCall_iiii"] = asm["dynCall_iiii"];
var dynCall_viiiifffffi = Module["dynCall_viiiifffffi"] = asm["dynCall_viiiifffffi"];
var dynCall_fif = Module["dynCall_fif"] = asm["dynCall_fif"];
var dynCall_iiiiff = Module["dynCall_iiiiff"] = asm["dynCall_iiiiff"];
var dynCall_viff = Module["dynCall_viff"] = asm["dynCall_viff"];
var dynCall_vifi = Module["dynCall_vifi"] = asm["dynCall_vifi"];
var dynCall_viiiiif = Module["dynCall_viiiiif"] = asm["dynCall_viiiiif"];
var dynCall_vifff = Module["dynCall_vifff"] = asm["dynCall_vifff"];
var dynCall_viiiiii = Module["dynCall_viiiiii"] = asm["dynCall_viiiiii"];
var dynCall_fiiff = Module["dynCall_fiiff"] = asm["dynCall_fiiff"];
var dynCall_iiif = Module["dynCall_iiif"] = asm["dynCall_iiif"];
var dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = asm["dynCall_iiiiiiii"];
var dynCall_viiiiiiii = Module["dynCall_viiiiiiii"] = asm["dynCall_viiiiiiii"];
var dynCall_viffffff = Module["dynCall_viffffff"] = asm["dynCall_viffffff"];
var dynCall_fiii = Module["dynCall_fiii"] = asm["dynCall_fiii"];
var dynCall_iiiiiiiiii = Module["dynCall_iiiiiiiiii"] = asm["dynCall_iiiiiiiiii"];
var dynCall_fiif = Module["dynCall_fiif"] = asm["dynCall_fiif"];
var dynCall_fiiiiiiiiii = Module["dynCall_fiiiiiiiiii"] = asm["dynCall_fiiiiiiiiii"];
var dynCall_ifii = Module["dynCall_ifii"] = asm["dynCall_ifii"];
var dynCall_fiffiiiiiii = Module["dynCall_fiffiiiiiii"] = asm["dynCall_fiffiiiiiii"];
var dynCall_iiiiiiiiiiiii = Module["dynCall_iiiiiiiiiiiii"] = asm["dynCall_iiiiiiiiiiiii"];
var dynCall_fiiiii = Module["dynCall_fiiiii"] = asm["dynCall_fiiiii"];
var dynCall_iif = Module["dynCall_iif"] = asm["dynCall_iif"];
var dynCall_if = Module["dynCall_if"] = asm["dynCall_if"];
var dynCall_vifffff = Module["dynCall_vifffff"] = asm["dynCall_vifffff"];
var dynCall_viiiiiiiif = Module["dynCall_viiiiiiiif"] = asm["dynCall_viiiiiiiif"];
var dynCall_vifii = Module["dynCall_vifii"] = asm["dynCall_vifii"];
var dynCall_fi = Module["dynCall_fi"] = asm["dynCall_fi"];
var dynCall_viiiiiiiiii = Module["dynCall_viiiiiiiiii"] = asm["dynCall_viiiiiiiiii"];
var dynCall_iii = Module["dynCall_iii"] = asm["dynCall_iii"];
var dynCall_iiiiii = Module["dynCall_iiiiii"] = asm["dynCall_iiiiii"];
var dynCall_iiiiiii = Module["dynCall_iiiiiii"] = asm["dynCall_iiiiiii"];
var dynCall_viiiiiiif = Module["dynCall_viiiiiiif"] = asm["dynCall_viiiiiiif"];
var dynCall_fii = Module["dynCall_fii"] = asm["dynCall_fii"];
var dynCall_vifffffffff = Module["dynCall_vifffffffff"] = asm["dynCall_vifffffffff"];
var dynCall_fiiiiiiii = Module["dynCall_fiiiiiiii"] = asm["dynCall_fiiiiiiii"];
var dynCall_iifif = Module["dynCall_iifif"] = asm["dynCall_iifif"];
var dynCall_iffff = Module["dynCall_iffff"] = asm["dynCall_iffff"];
var dynCall_viiiiffffiif = Module["dynCall_viiiiffffiif"] = asm["dynCall_viiiiffffiif"];
var dynCall_iiiiif = Module["dynCall_iiiiif"] = asm["dynCall_iiiiif"];
var dynCall_iiff = Module["dynCall_iiff"] = asm["dynCall_iiff"];
var dynCall_viiif = Module["dynCall_viiif"] = asm["dynCall_viiif"];
var dynCall_i = Module["dynCall_i"] = asm["dynCall_i"];
var dynCall_viiiifii = Module["dynCall_viiiifii"] = asm["dynCall_viiiifii"];
var dynCall_iiiifffiii = Module["dynCall_iiiifffiii"] = asm["dynCall_iiiifffiii"];
var dynCall_viii = Module["dynCall_viii"] = asm["dynCall_viii"];
var dynCall_iff = Module["dynCall_iff"] = asm["dynCall_iff"];
var dynCall_v = Module["dynCall_v"] = asm["dynCall_v"];
var dynCall_iiiiiiiii = Module["dynCall_iiiiiiiii"] = asm["dynCall_iiiiiiiii"];
var dynCall_iiiii = Module["dynCall_iiiii"] = asm["dynCall_iiiii"];
var dynCall_viif = Module["dynCall_viif"] = asm["dynCall_viif"];
var dynCall_iiiif = Module["dynCall_iiiif"] = asm["dynCall_iiiif"];
var dynCall_fiiifii = Module["dynCall_fiiifii"] = asm["dynCall_fiiifii"];
var dynCall_viiii = Module["dynCall_viiii"] = asm["dynCall_viiii"];
Runtime.stackAlloc = function(size) { return asm['stackAlloc'](size) };
Runtime.stackSave = function() { return asm['stackSave']() };
Runtime.stackRestore = function(top) { asm['stackRestore'](top) };
// Warning: printing of i64 values may be slightly rounded! No deep i64 math used, so precise i64 code not included
var i64Math = null;
// === Auto-generated postamble setup entry stuff ===
function ExitStatus(status) {
  this.name = "ExitStatus";
  this.message = "Program terminated with exit(" + status + ")";
  this.status = status;
};
ExitStatus.prototype = new Error();
ExitStatus.prototype.constructor = ExitStatus;
var initialStackTop;
var preloadStartTime = null;
Module['callMain'] = Module.callMain = function callMain(args) {
  assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)');
  assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called');
  args = args || [];
  if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) {
    Module.printErr('preload time: ' + (Date.now() - preloadStartTime) + ' ms');
  }
  ensureInitRuntime();
  var argc = args.length+1;
  function pad() {
    for (var i = 0; i < 4-1; i++) {
      argv.push(0);
    }
  }
  var argv = [allocate(intArrayFromString("/bin/this.program"), 'i8', ALLOC_NORMAL) ];
  pad();
  for (var i = 0; i < argc-1; i = i + 1) {
    argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL));
    pad();
  }
  argv.push(0);
  argv = allocate(argv, 'i32', ALLOC_NORMAL);
  initialStackTop = STACKTOP;
  try {
    var ret = Module['_main'](argc, argv, 0);
    // if we're not running an evented main loop, it's time to exit
    if (!Module['noExitRuntime']) {
      exit(ret);
    }
  }
  catch(e) {
    if (e instanceof ExitStatus) {
      // exit() throws this once it's done to make sure execution
      // has been stopped completely
      return;
    } else if (e == 'SimulateInfiniteLoop') {
      // running an evented main loop, don't immediately exit
      Module['noExitRuntime'] = true;
      return;
    } else {
      throw e;
    }
  }
}
function run(args) {
  args = args || Module['arguments'];
  if (preloadStartTime === null) preloadStartTime = Date.now();
  if (runDependencies > 0) {
    Module.printErr('run() called, but dependencies remain, so not running');
    return;
  }
  preRun();
  if (runDependencies > 0) {
    // a preRun added a dependency, run will be called later
    return;
  }
  function doRun() {
    ensureInitRuntime();
    preMain();
    calledRun = true;
    if (Module['_main'] && shouldRunNow) {
      Module['callMain'](args);
    }
    postRun();
  }
  if (Module['setStatus']) {
    Module['setStatus']('Running...');
    setTimeout(function() {
      setTimeout(function() {
        Module['setStatus']('');
      }, 1);
      if (!ABORT) doRun();
    }, 1);
  } else {
    doRun();
  }
}
Module['run'] = Module.run = run;
function exit(status) {
  ABORT = true;
  EXITSTATUS = status;
  STACKTOP = initialStackTop;
  // exit the runtime
  exitRuntime();
  // throw an exception to halt the current execution
  throw new ExitStatus(status);
}
Module['exit'] = Module.exit = exit;
function abort(text) {
  if (text) {
    Module.print(text);
    Module.printErr(text);
  }
  ABORT = true;
  EXITSTATUS = 1;
  throw 'abort() at ' + (new Error().stack);
}
Module['abort'] = Module.abort = abort;
// {{PRE_RUN_ADDITIONS}}
if (Module['preInit']) {
  if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']];
  while (Module['preInit'].length > 0) {
    Module['preInit'].pop()();
  }
}
// shouldRunNow refers to calling main(), not run().
var shouldRunNow = true;
if (Module['noInitialRun']) {
  shouldRunNow = false;
}
run();
// {{POST_RUN_ADDITIONS}}
// {{MODULE_ADDITIONS}}
// Bindings utilities
var Object__cache = {}; // we do it this way so we do not modify |Object|
function wrapPointer(ptr, __class__) {
  var cache = __class__ ? __class__.prototype.__cache__ : Object__cache;
  var ret = cache[ptr];
  if (ret) return ret;
  __class__ = __class__ || Object;
  ret = Object.create(__class__.prototype);
  ret.ptr = ptr;
  ret.__class__ = __class__;
  return cache[ptr] = ret;
}
Module['wrapPointer'] = wrapPointer;
function castObject(obj, __class__) {
  return wrapPointer(obj.ptr, __class__);
}
Module['castObject'] = castObject;
Module['NULL'] = wrapPointer(0);
function destroy(obj) {
  if (!obj['__destroy__']) throw 'Error: Cannot destroy object. (Did you create it yourself?)';
  obj['__destroy__']();
  // Remove from cache, so the object can be GC'd and refs added onto it released
  if (obj.__class__ !== Object) {
    delete obj.__class__.prototype.__cache__[obj.ptr];
  } else {
    delete Object__cache[obj.ptr];
  }
}
Module['destroy'] = destroy;
function compare(obj1, obj2) {
  return obj1.ptr === obj2.ptr;
}
Module['compare'] = compare;
function getPointer(obj) {
  return obj.ptr;
}
Module['getPointer'] = getPointer;
function getClass(obj) {
  return obj.__class__;
}
Module['getClass'] = getClass;
function customizeVTable(object, replacementPairs) {
  // Does not handle multiple inheritance
  // Find out vtable size
  var vTable = getValue(object.ptr, 'void*');
  // This assumes our modification where we null-terminate vtables
  var size = 0;
  while (getValue(vTable + Runtime.QUANTUM_SIZE*size, 'void*')) {
    size++;
  }
  // Prepare replacement lookup table and add replacements.
  // There is actually no good way to do this! So we do the following hack:
  // We create a fake vtable with canary functions, to detect which actual
  // function is being called
  var vTable2 = _malloc(size*Runtime.QUANTUM_SIZE);
  setValue(object.ptr, vTable2, 'void*');
  var canaryValue;
  var tempFuncs = [];
  for (var i = 0; i < size; i++) {
    (function(j) {
      var index = Runtime.addFunction(function() {
        canaryValue = j;
      });
      setValue(vTable2 + Runtime.QUANTUM_SIZE*i, index, 'void*');
      tempFuncs.push(index);
    })(i);
  }
  var args = [{ptr: 0}];
  replacementPairs.forEach(function(pair) {
    // We need the wrapper function that converts arguments to not fail. Keep adding arguments til it works.
    while(1) {
      try {
        pair['original'].apply(object, args);
        break;
      } catch(e) {
        args.push(args[0]);
      }
    }
    pair.originalIndex = getValue(vTable + canaryValue*Runtime.QUANTUM_SIZE, 'void*');
  });
  for (var i = 0; i < size; i++) {
    Runtime.removeFunction(tempFuncs[i]);
  }
  // Do the replacements
  var replacements = {};
  replacementPairs.forEach(function(pair) {
    replacements[pair.originalIndex] = Runtime.addFunction(pair['replacement']);
  });
  // Copy and modify vtable
  for (var i = 0; i < size; i++) {
    var value = getValue(vTable + Runtime.QUANTUM_SIZE*i, 'void*');
    if (value in replacements) value = replacements[value];
    setValue(vTable2 + Runtime.QUANTUM_SIZE*i, value, 'void*');
  }
  return object;
}
Module['customizeVTable'] = customizeVTable;
// Converts a value into a C-style string.
function ensureString(value) {
  if (typeof value == 'number') return value;
  return allocate(intArrayFromString(value), 'i8', ALLOC_STACK);
}
function btMatrix3x3(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btMatrix3x3__btMatrix3x3_p0();
  else   if (arg1 === undefined)
    this.ptr = _emscripten_bind_btMatrix3x3__btMatrix3x3_p1(arg0.ptr);
  else 
    this.ptr = _emscripten_bind_btMatrix3x3__btMatrix3x3_p9(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
  btMatrix3x3.prototype.__cache__[this.ptr] = this;
  this.__class__ = btMatrix3x3;
}
btMatrix3x3.prototype.__cache__ = {};
Module['btMatrix3x3'] = btMatrix3x3;
btMatrix3x3.prototype['getColumn'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btMatrix3x3__getColumn_p1(this.ptr, arg0), Module['btVector3']);
}
btMatrix3x3.prototype['serialize'] = function(arg0) {
    _emscripten_bind_btMatrix3x3__serialize_p1(this.ptr, arg0.ptr);
}
btMatrix3x3.prototype['deSerializeDouble'] = function(arg0) {
    _emscripten_bind_btMatrix3x3__deSerializeDouble_p1(this.ptr, arg0.ptr);
}
btMatrix3x3.prototype['scaled'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btMatrix3x3__scaled_p1(this.ptr, arg0.ptr), Module['btMatrix3x3']);
}
btMatrix3x3.prototype['op_sub'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btMatrix3x3__op_sub_p1(this.ptr, arg0.ptr), Module['btMatrix3x3']);
}
btMatrix3x3.prototype['transposeTimes'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btMatrix3x3__transposeTimes_p1(this.ptr, arg0.ptr), Module['btMatrix3x3']);
}
btMatrix3x3.prototype['getRotation'] = function(arg0) {
    _emscripten_bind_btMatrix3x3__getRotation_p1(this.ptr, arg0.ptr);
}
btMatrix3x3.prototype['tdotz'] = function(arg0) {
    return _emscripten_bind_btMatrix3x3__tdotz_p1(this.ptr, arg0.ptr);
}
btMatrix3x3.prototype['serializeFloat'] = function(arg0) {
    _emscripten_bind_btMatrix3x3__serializeFloat_p1(this.ptr, arg0.ptr);
}
btMatrix3x3.prototype['tdotx'] = function(arg0) {
    return _emscripten_bind_btMatrix3x3__tdotx_p1(this.ptr, arg0.ptr);
}
btMatrix3x3.prototype['absolute'] = function() {
    return wrapPointer(_emscripten_bind_btMatrix3x3__absolute_p0(this.ptr), Module['btMatrix3x3']);
}
btMatrix3x3.prototype['tdoty'] = function(arg0) {
    return _emscripten_bind_btMatrix3x3__tdoty_p1(this.ptr, arg0.ptr);
}
btMatrix3x3.prototype['inverse'] = function() {
    return wrapPointer(_emscripten_bind_btMatrix3x3__inverse_p0(this.ptr), Module['btMatrix3x3']);
}
btMatrix3x3.prototype['cofac'] = function(arg0, arg1, arg2, arg3) {
    return _emscripten_bind_btMatrix3x3__cofac_p4(this.ptr, arg0, arg1, arg2, arg3);
}
btMatrix3x3.prototype['deSerializeFloat'] = function(arg0) {
    _emscripten_bind_btMatrix3x3__deSerializeFloat_p1(this.ptr, arg0.ptr);
}
btMatrix3x3.prototype['getIdentity'] = function() {
    return wrapPointer(_emscripten_bind_btMatrix3x3__getIdentity_p0(), Module['btMatrix3x3']);
}
btMatrix3x3.prototype['adjoint'] = function() {
    return wrapPointer(_emscripten_bind_btMatrix3x3__adjoint_p0(this.ptr), Module['btMatrix3x3']);
}
btMatrix3x3.prototype['getRow'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btMatrix3x3__getRow_p1(this.ptr, arg0), Module['btVector3']);
}
btMatrix3x3.prototype['op_add'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btMatrix3x3__op_add_p1(this.ptr, arg0.ptr), Module['btMatrix3x3']);
}
btMatrix3x3.prototype['op_mul'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btMatrix3x3__op_mul_p1(this.ptr, arg0.ptr), Module['btMatrix3x3']);
}
btMatrix3x3.prototype['diagonalize'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btMatrix3x3__diagonalize_p3(this.ptr, arg0.ptr, arg1, arg2);
}
btMatrix3x3.prototype['setRotation'] = function(arg0) {
    _emscripten_bind_btMatrix3x3__setRotation_p1(this.ptr, arg0.ptr);
}
btMatrix3x3.prototype['setEulerZYX'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btMatrix3x3__setEulerZYX_p3(this.ptr, arg0, arg1, arg2);
}
btMatrix3x3.prototype['setIdentity'] = function() {
    _emscripten_bind_btMatrix3x3__setIdentity_p0(this.ptr);
}
btMatrix3x3.prototype['op_set'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btMatrix3x3__op_set_p1(this.ptr, arg0.ptr), Module['btMatrix3x3']);
}
btMatrix3x3.prototype['getEulerZYX'] = function(arg0, arg1, arg2, arg3) {
  if (arg3 === undefined)
    _emscripten_bind_btMatrix3x3__getEulerZYX_p3(this.ptr, arg0, arg1, arg2);
  else 
    _emscripten_bind_btMatrix3x3__getEulerZYX_p4(this.ptr, arg0, arg1, arg2, arg3);
}
btMatrix3x3.prototype['setEulerYPR'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btMatrix3x3__setEulerYPR_p3(this.ptr, arg0, arg1, arg2);
}
btMatrix3x3.prototype['determinant'] = function() {
    return _emscripten_bind_btMatrix3x3__determinant_p0(this.ptr);
}
btMatrix3x3.prototype['setValue'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {
    _emscripten_bind_btMatrix3x3__setValue_p9(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
}
btMatrix3x3.prototype['deSerialize'] = function(arg0) {
    _emscripten_bind_btMatrix3x3__deSerialize_p1(this.ptr, arg0.ptr);
}
btMatrix3x3.prototype['transpose'] = function() {
    return wrapPointer(_emscripten_bind_btMatrix3x3__transpose_p0(this.ptr), Module['btMatrix3x3']);
}
btMatrix3x3.prototype['op_get'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btMatrix3x3__op_get_p1(this.ptr, arg0), Module['btVector3']);
}
btMatrix3x3.prototype['__destroy__'] = function() {
    _emscripten_bind_btMatrix3x3____destroy___p0(this.ptr);
}
btMatrix3x3.prototype['timesTranspose'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btMatrix3x3__timesTranspose_p1(this.ptr, arg0.ptr), Module['btMatrix3x3']);
}
btMatrix3x3.prototype['getEulerYPR'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btMatrix3x3__getEulerYPR_p3(this.ptr, arg0, arg1, arg2);
}
function btDispatcherInfo() {
    this.ptr = _emscripten_bind_btDispatcherInfo__btDispatcherInfo_p0();
  btDispatcherInfo.prototype.__cache__[this.ptr] = this;
  this.__class__ = btDispatcherInfo;
}
btDispatcherInfo.prototype.__cache__ = {};
Module['btDispatcherInfo'] = btDispatcherInfo;
btDispatcherInfo.prototype['set_m_enableSatConvex'] = function(arg0) {
    _emscripten_bind_btDispatcherInfo__set_m_enableSatConvex_p1(this.ptr, arg0);
}
btDispatcherInfo.prototype['set_m_stepCount'] = function(arg0) {
    _emscripten_bind_btDispatcherInfo__set_m_stepCount_p1(this.ptr, arg0);
}
btDispatcherInfo.prototype['get_m_timeOfImpact'] = function() {
    return _emscripten_bind_btDispatcherInfo__get_m_timeOfImpact_p0(this.ptr);
}
btDispatcherInfo.prototype['get_m_stepCount'] = function() {
    return _emscripten_bind_btDispatcherInfo__get_m_stepCount_p0(this.ptr);
}
btDispatcherInfo.prototype['get_m_useEpa'] = function() {
    return _emscripten_bind_btDispatcherInfo__get_m_useEpa_p0(this.ptr);
}
btDispatcherInfo.prototype['get_m_useContinuous'] = function() {
    return _emscripten_bind_btDispatcherInfo__get_m_useContinuous_p0(this.ptr);
}
btDispatcherInfo.prototype['set_m_useContinuous'] = function(arg0) {
    _emscripten_bind_btDispatcherInfo__set_m_useContinuous_p1(this.ptr, arg0);
}
btDispatcherInfo.prototype['get_m_dispatchFunc'] = function() {
    return _emscripten_bind_btDispatcherInfo__get_m_dispatchFunc_p0(this.ptr);
}
btDispatcherInfo.prototype['set_m_stackAllocator'] = function(arg0) {
    _emscripten_bind_btDispatcherInfo__set_m_stackAllocator_p1(this.ptr, arg0.ptr);
}
btDispatcherInfo.prototype['get_m_stackAllocator'] = function() {
    return wrapPointer(_emscripten_bind_btDispatcherInfo__get_m_stackAllocator_p0(this.ptr), Module['btStackAlloc']);
}
btDispatcherInfo.prototype['get_m_timeStep'] = function() {
    return _emscripten_bind_btDispatcherInfo__get_m_timeStep_p0(this.ptr);
}
btDispatcherInfo.prototype['get_m_convexConservativeDistanceThreshold'] = function() {
    return _emscripten_bind_btDispatcherInfo__get_m_convexConservativeDistanceThreshold_p0(this.ptr);
}
btDispatcherInfo.prototype['get_m_enableSatConvex'] = function() {
    return _emscripten_bind_btDispatcherInfo__get_m_enableSatConvex_p0(this.ptr);
}
btDispatcherInfo.prototype['__destroy__'] = function() {
    _emscripten_bind_btDispatcherInfo____destroy___p0(this.ptr);
}
btDispatcherInfo.prototype['set_m_allowedCcdPenetration'] = function(arg0) {
    _emscripten_bind_btDispatcherInfo__set_m_allowedCcdPenetration_p1(this.ptr, arg0);
}
btDispatcherInfo.prototype['set_m_timeStep'] = function(arg0) {
    _emscripten_bind_btDispatcherInfo__set_m_timeStep_p1(this.ptr, arg0);
}
btDispatcherInfo.prototype['set_m_timeOfImpact'] = function(arg0) {
    _emscripten_bind_btDispatcherInfo__set_m_timeOfImpact_p1(this.ptr, arg0);
}
btDispatcherInfo.prototype['set_m_useConvexConservativeDistanceUtil'] = function(arg0) {
    _emscripten_bind_btDispatcherInfo__set_m_useConvexConservativeDistanceUtil_p1(this.ptr, arg0);
}
btDispatcherInfo.prototype['get_m_useConvexConservativeDistanceUtil'] = function() {
    return _emscripten_bind_btDispatcherInfo__get_m_useConvexConservativeDistanceUtil_p0(this.ptr);
}
btDispatcherInfo.prototype['get_m_allowedCcdPenetration'] = function() {
    return _emscripten_bind_btDispatcherInfo__get_m_allowedCcdPenetration_p0(this.ptr);
}
btDispatcherInfo.prototype['set_m_convexConservativeDistanceThreshold'] = function(arg0) {
    _emscripten_bind_btDispatcherInfo__set_m_convexConservativeDistanceThreshold_p1(this.ptr, arg0);
}
btDispatcherInfo.prototype['set_m_dispatchFunc'] = function(arg0) {
    _emscripten_bind_btDispatcherInfo__set_m_dispatchFunc_p1(this.ptr, arg0);
}
btDispatcherInfo.prototype['get_m_enableSPU'] = function() {
    return _emscripten_bind_btDispatcherInfo__get_m_enableSPU_p0(this.ptr);
}
btDispatcherInfo.prototype['set_m_enableSPU'] = function(arg0) {
    _emscripten_bind_btDispatcherInfo__set_m_enableSPU_p1(this.ptr, arg0);
}
btDispatcherInfo.prototype['set_m_useEpa'] = function(arg0) {
    _emscripten_bind_btDispatcherInfo__set_m_useEpa_p1(this.ptr, arg0);
}
btCapsuleShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btCapsuleShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btCapsuleShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btCapsuleShape__isCompound_p0(this.ptr);
}
btCapsuleShape.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCapsuleShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCapsuleShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btCapsuleShape__setUserPointer_p1(this.ptr, arg0);
}
function btCapsuleShape(arg0, arg1) {
    this.ptr = _emscripten_bind_btCapsuleShape__btCapsuleShape_p2(arg0, arg1);
  btCapsuleShape.prototype.__cache__[this.ptr] = this;
  this.__class__ = btCapsuleShape;
}
btCapsuleShape.prototype.__cache__ = {};
Module['btCapsuleShape'] = btCapsuleShape;
btCapsuleShape.prototype['getUpAxis'] = function() {
    return _emscripten_bind_btCapsuleShape__getUpAxis_p0(this.ptr);
}
btCapsuleShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btCapsuleShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btCapsuleShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btCapsuleShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btCapsuleShape.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btCapsuleShape__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btCapsuleShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btCapsuleShape__isPolyhedral_p0(this.ptr);
}
btCapsuleShape.prototype['getRadius'] = function() {
    return _emscripten_bind_btCapsuleShape__getRadius_p0(this.ptr);
}
btCapsuleShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCapsuleShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCapsuleShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btCapsuleShape__calculateSerializeBufferSize_p0(this.ptr);
}
btCapsuleShape.prototype['getName'] = function() {
    return _emscripten_bind_btCapsuleShape__getName_p0(this.ptr);
}
btCapsuleShape.prototype['getHalfHeight'] = function() {
    return _emscripten_bind_btCapsuleShape__getHalfHeight_p0(this.ptr);
}
btCapsuleShape.prototype['getLocalScalingNV'] = function() {
    return wrapPointer(_emscripten_bind_btCapsuleShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']);
}
btCapsuleShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCapsuleShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCapsuleShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCapsuleShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCapsuleShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btCapsuleShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btCapsuleShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCapsuleShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCapsuleShape.prototype['getMarginNV'] = function() {
    return _emscripten_bind_btCapsuleShape__getMarginNV_p0(this.ptr);
}
btCapsuleShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCapsuleShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCapsuleShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btCapsuleShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btCapsuleShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btCapsuleShape__isConvex_p0(this.ptr);
}
btCapsuleShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btCapsuleShape__isInfinite_p0(this.ptr);
}
btCapsuleShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btCapsuleShape__getUserPointer_p0(this.ptr);
}
btCapsuleShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btCapsuleShape__isNonMoving_p0(this.ptr);
}
btCapsuleShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btCapsuleShape__getMargin_p0(this.ptr);
}
btCapsuleShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btCapsuleShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btCapsuleShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btCapsuleShape__setMargin_p1(this.ptr, arg0);
}
btCapsuleShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btCapsuleShape__isConvex2d_p0(this.ptr);
}
btCapsuleShape.prototype['setImplicitShapeDimensions'] = function(arg0) {
    _emscripten_bind_btCapsuleShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr);
}
btCapsuleShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btCapsuleShape__isSoftBody_p0(this.ptr);
}
btCapsuleShape.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btCapsuleShape__getMarginNonVirtual_p0(this.ptr);
}
btCapsuleShape.prototype['__destroy__'] = function() {
    _emscripten_bind_btCapsuleShape____destroy___p0(this.ptr);
}
btCapsuleShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCapsuleShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btCapsuleShape.prototype['getImplicitShapeDimensions'] = function() {
    return wrapPointer(_emscripten_bind_btCapsuleShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']);
}
btCapsuleShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btCapsuleShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btCapsuleShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btCapsuleShape__getAngularMotionDisc_p0(this.ptr);
}
btCapsuleShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btCapsuleShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btCapsuleShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCapsuleShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCapsuleShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btCapsuleShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btCapsuleShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btCapsuleShape__isConcave_p0(this.ptr);
}
btCapsuleShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btCapsuleShape__getShapeType_p0(this.ptr);
}
btConvexHullShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btConvexHullShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btConvexHullShape.prototype['getNumPlanes'] = function() {
    return _emscripten_bind_btConvexHullShape__getNumPlanes_p0(this.ptr);
}
btConvexHullShape.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexHullShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConvexHullShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btConvexHullShape__getAngularMotionDisc_p0(this.ptr);
}
btConvexHullShape.prototype['getScaledPoint'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexHullShape__getScaledPoint_p1(this.ptr, arg0), Module['btVector3']);
}
btConvexHullShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btConvexHullShape__isConvex_p0(this.ptr);
}
btConvexHullShape.prototype['getEdge'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexHullShape__getEdge_p3(this.ptr, arg0, arg1.ptr, arg2.ptr);
}
btConvexHullShape.prototype['getNumVertices'] = function() {
    return _emscripten_bind_btConvexHullShape__getNumVertices_p0(this.ptr);
}
btConvexHullShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btConvexHullShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btConvexHullShape.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btConvexHullShape__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btConvexHullShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btConvexHullShape__isPolyhedral_p0(this.ptr);
}
btConvexHullShape.prototype['getVertex'] = function(arg0, arg1) {
    _emscripten_bind_btConvexHullShape__getVertex_p2(this.ptr, arg0, arg1.ptr);
}
btConvexHullShape.prototype['getUnscaledPoints'] = function() {
    return wrapPointer(_emscripten_bind_btConvexHullShape__getUnscaledPoints_p0(this.ptr), Module['btVector3']);
}
btConvexHullShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexHullShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConvexHullShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btConvexHullShape__calculateSerializeBufferSize_p0(this.ptr);
}
btConvexHullShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btConvexHullShape__setUserPointer_p1(this.ptr, arg0);
}
btConvexHullShape.prototype['getNumEdges'] = function() {
    return _emscripten_bind_btConvexHullShape__getNumEdges_p0(this.ptr);
}
btConvexHullShape.prototype['getName'] = function() {
    return _emscripten_bind_btConvexHullShape__getName_p0(this.ptr);
}
function btConvexHullShape(arg0, arg1, arg2) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btConvexHullShape__btConvexHullShape_p0();
  else   if (arg1 === undefined)
    this.ptr = _emscripten_bind_btConvexHullShape__btConvexHullShape_p1(arg0);
  else   if (arg2 === undefined)
    this.ptr = _emscripten_bind_btConvexHullShape__btConvexHullShape_p2(arg0, arg1);
  else 
    this.ptr = _emscripten_bind_btConvexHullShape__btConvexHullShape_p3(arg0, arg1, arg2);
  btConvexHullShape.prototype.__cache__[this.ptr] = this;
  this.__class__ = btConvexHullShape;
}
btConvexHullShape.prototype.__cache__ = {};
Module['btConvexHullShape'] = btConvexHullShape;
btConvexHullShape.prototype['getLocalScalingNV'] = function() {
    return wrapPointer(_emscripten_bind_btConvexHullShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']);
}
btConvexHullShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexHullShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConvexHullShape.prototype['setImplicitShapeDimensions'] = function(arg0) {
    _emscripten_bind_btConvexHullShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr);
}
btConvexHullShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btConvexHullShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btConvexHullShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexHullShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConvexHullShape.prototype['getMarginNV'] = function() {
    return _emscripten_bind_btConvexHullShape__getMarginNV_p0(this.ptr);
}
btConvexHullShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btConvexHullShape__isConvex2d_p0(this.ptr);
}
btConvexHullShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexHullShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConvexHullShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btConvexHullShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btConvexHullShape.prototype['addPoint'] = function(arg0) {
    _emscripten_bind_btConvexHullShape__addPoint_p1(this.ptr, arg0.ptr);
}
btConvexHullShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btConvexHullShape__isInfinite_p0(this.ptr);
}
btConvexHullShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btConvexHullShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btConvexHullShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btConvexHullShape__isConcave_p0(this.ptr);
}
btConvexHullShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btConvexHullShape__getUserPointer_p0(this.ptr);
}
btConvexHullShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btConvexHullShape__isNonMoving_p0(this.ptr);
}
btConvexHullShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btConvexHullShape__getMargin_p0(this.ptr);
}
btConvexHullShape.prototype['recalcLocalAabb'] = function() {
    _emscripten_bind_btConvexHullShape__recalcLocalAabb_p0(this.ptr);
}
btConvexHullShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btConvexHullShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btConvexHullShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btConvexHullShape__setMargin_p1(this.ptr, arg0);
}
btConvexHullShape.prototype['getNonvirtualAabb'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btConvexHullShape__getNonvirtualAabb_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3);
}
btConvexHullShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexHullShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConvexHullShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btConvexHullShape__isSoftBody_p0(this.ptr);
}
btConvexHullShape.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btConvexHullShape__getMarginNonVirtual_p0(this.ptr);
}
btConvexHullShape.prototype['__destroy__'] = function() {
    _emscripten_bind_btConvexHullShape____destroy___p0(this.ptr);
}
btConvexHullShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexHullShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btConvexHullShape.prototype['getPoints'] = function() {
    return wrapPointer(_emscripten_bind_btConvexHullShape__getPoints_p0(this.ptr), Module['btVector3']);
}
btConvexHullShape.prototype['getImplicitShapeDimensions'] = function() {
    return wrapPointer(_emscripten_bind_btConvexHullShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']);
}
btConvexHullShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btConvexHullShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btConvexHullShape.prototype['isInside'] = function(arg0, arg1) {
    return _emscripten_bind_btConvexHullShape__isInside_p2(this.ptr, arg0.ptr, arg1);
}
btConvexHullShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btConvexHullShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btConvexHullShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexHullShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConvexHullShape.prototype['getPlane'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexHullShape__getPlane_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btConvexHullShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btConvexHullShape__isCompound_p0(this.ptr);
}
btConvexHullShape.prototype['getConvexPolyhedron'] = function() {
    return _emscripten_bind_btConvexHullShape__getConvexPolyhedron_p0(this.ptr);
}
btConvexHullShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btConvexHullShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btConvexHullShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btConvexHullShape__getShapeType_p0(this.ptr);
}
btConvexHullShape.prototype['getNumPoints'] = function() {
    return _emscripten_bind_btConvexHullShape__getNumPoints_p0(this.ptr);
}
btConvexHullShape.prototype['initializePolyhedralFeatures'] = function() {
    return _emscripten_bind_btConvexHullShape__initializePolyhedralFeatures_p0(this.ptr);
}
btTypedObject.prototype['__destroy__'] = function() {
    _emscripten_bind_btTypedObject____destroy___p0(this.ptr);
}
function btTypedObject(arg0) {
    this.ptr = _emscripten_bind_btTypedObject__btTypedObject_p1(arg0);
  btTypedObject.prototype.__cache__[this.ptr] = this;
  this.__class__ = btTypedObject;
}
btTypedObject.prototype.__cache__ = {};
Module['btTypedObject'] = btTypedObject;
btTypedObject.prototype['getObjectType'] = function() {
    return _emscripten_bind_btTypedObject__getObjectType_p0(this.ptr);
}
btTypedObject.prototype['get_m_objectType'] = function() {
    return _emscripten_bind_btTypedObject__get_m_objectType_p0(this.ptr);
}
btTypedObject.prototype['set_m_objectType'] = function(arg0) {
    _emscripten_bind_btTypedObject__set_m_objectType_p1(this.ptr, arg0);
}
btIndexedMesh.prototype['get_m_numVertices'] = function() {
    return _emscripten_bind_btIndexedMesh__get_m_numVertices_p0(this.ptr);
}
btIndexedMesh.prototype['get_m_vertexBase'] = function() {
    return _emscripten_bind_btIndexedMesh__get_m_vertexBase_p0(this.ptr);
}
btIndexedMesh.prototype['set_m_indexType'] = function(arg0) {
    _emscripten_bind_btIndexedMesh__set_m_indexType_p1(this.ptr, arg0);
}
btIndexedMesh.prototype['set_m_numTriangles'] = function(arg0) {
    _emscripten_bind_btIndexedMesh__set_m_numTriangles_p1(this.ptr, arg0);
}
btIndexedMesh.prototype['get_m_vertexType'] = function() {
    return _emscripten_bind_btIndexedMesh__get_m_vertexType_p0(this.ptr);
}
btIndexedMesh.prototype['get_m_vertexStride'] = function() {
    return _emscripten_bind_btIndexedMesh__get_m_vertexStride_p0(this.ptr);
}
btIndexedMesh.prototype['get_m_numTriangles'] = function() {
    return _emscripten_bind_btIndexedMesh__get_m_numTriangles_p0(this.ptr);
}
btIndexedMesh.prototype['set_m_numVertices'] = function(arg0) {
    _emscripten_bind_btIndexedMesh__set_m_numVertices_p1(this.ptr, arg0);
}
btIndexedMesh.prototype['set_m_vertexType'] = function(arg0) {
    _emscripten_bind_btIndexedMesh__set_m_vertexType_p1(this.ptr, arg0);
}
btIndexedMesh.prototype['get_m_indexType'] = function() {
    return _emscripten_bind_btIndexedMesh__get_m_indexType_p0(this.ptr);
}
btIndexedMesh.prototype['__destroy__'] = function() {
    _emscripten_bind_btIndexedMesh____destroy___p0(this.ptr);
}
btIndexedMesh.prototype['set_m_vertexBase'] = function(arg0) {
var stack = Runtime.stackSave();
try {
    _emscripten_bind_btIndexedMesh__set_m_vertexBase_p1(this.ptr, ensureString(arg0));
} finally { Runtime.stackRestore(stack) }
}
function btIndexedMesh() {
    this.ptr = _emscripten_bind_btIndexedMesh__btIndexedMesh_p0();
  btIndexedMesh.prototype.__cache__[this.ptr] = this;
  this.__class__ = btIndexedMesh;
}
btIndexedMesh.prototype.__cache__ = {};
Module['btIndexedMesh'] = btIndexedMesh;
btIndexedMesh.prototype['get_m_triangleIndexBase'] = function() {
    return _emscripten_bind_btIndexedMesh__get_m_triangleIndexBase_p0(this.ptr);
}
btIndexedMesh.prototype['set_m_triangleIndexStride'] = function(arg0) {
    _emscripten_bind_btIndexedMesh__set_m_triangleIndexStride_p1(this.ptr, arg0);
}
btIndexedMesh.prototype['set_m_vertexStride'] = function(arg0) {
    _emscripten_bind_btIndexedMesh__set_m_vertexStride_p1(this.ptr, arg0);
}
btIndexedMesh.prototype['set_m_triangleIndexBase'] = function(arg0) {
var stack = Runtime.stackSave();
try {
    _emscripten_bind_btIndexedMesh__set_m_triangleIndexBase_p1(this.ptr, ensureString(arg0));
} finally { Runtime.stackRestore(stack) }
}
btIndexedMesh.prototype['get_m_triangleIndexStride'] = function() {
    return _emscripten_bind_btIndexedMesh__get_m_triangleIndexStride_p0(this.ptr);
}
btCollisionObject.prototype['getFriction'] = function() {
    return _emscripten_bind_btCollisionObject__getFriction_p0(this.ptr);
}
btCollisionObject.prototype['setContactProcessingThreshold'] = function(arg0) {
    _emscripten_bind_btCollisionObject__setContactProcessingThreshold_p1(this.ptr, arg0);
}
btCollisionObject.prototype['setInterpolationLinearVelocity'] = function(arg0) {
    _emscripten_bind_btCollisionObject__setInterpolationLinearVelocity_p1(this.ptr, arg0.ptr);
}
btCollisionObject.prototype['getDeactivationTime'] = function() {
    return _emscripten_bind_btCollisionObject__getDeactivationTime_p0(this.ptr);
}
btCollisionObject.prototype['setInterpolationAngularVelocity'] = function(arg0) {
    _emscripten_bind_btCollisionObject__setInterpolationAngularVelocity_p1(this.ptr, arg0.ptr);
}
btCollisionObject.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btCollisionObject__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btCollisionObject.prototype['setFriction'] = function(arg0) {
    _emscripten_bind_btCollisionObject__setFriction_p1(this.ptr, arg0);
}
btCollisionObject.prototype['internalSetExtensionPointer'] = function(arg0) {
    _emscripten_bind_btCollisionObject__internalSetExtensionPointer_p1(this.ptr, arg0);
}
btCollisionObject.prototype['activate'] = function(arg0) {
  if (arg0 === undefined)
    _emscripten_bind_btCollisionObject__activate_p0(this.ptr);
  else 
    _emscripten_bind_btCollisionObject__activate_p1(this.ptr, arg0);
}
btCollisionObject.prototype['setInterpolationWorldTransform'] = function(arg0) {
    _emscripten_bind_btCollisionObject__setInterpolationWorldTransform_p1(this.ptr, arg0.ptr);
}
function btCollisionObject() {
    this.ptr = _emscripten_bind_btCollisionObject__btCollisionObject_p0();
  btCollisionObject.prototype.__cache__[this.ptr] = this;
  this.__class__ = btCollisionObject;
}
btCollisionObject.prototype.__cache__ = {};
Module['btCollisionObject'] = btCollisionObject;
btCollisionObject.prototype['getInterpolationLinearVelocity'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionObject__getInterpolationLinearVelocity_p0(this.ptr), Module['btVector3']);
}
btCollisionObject.prototype['mergesSimulationIslands'] = function() {
    return _emscripten_bind_btCollisionObject__mergesSimulationIslands_p0(this.ptr);
}
btCollisionObject.prototype['setCollisionShape'] = function(arg0) {
    _emscripten_bind_btCollisionObject__setCollisionShape_p1(this.ptr, arg0.ptr);
}
btCollisionObject.prototype['setCcdMotionThreshold'] = function(arg0) {
    _emscripten_bind_btCollisionObject__setCcdMotionThreshold_p1(this.ptr, arg0);
}
btCollisionObject.prototype['getIslandTag'] = function() {
    return _emscripten_bind_btCollisionObject__getIslandTag_p0(this.ptr);
}
btCollisionObject.prototype['setCompanionId'] = function(arg0) {
    _emscripten_bind_btCollisionObject__setCompanionId_p1(this.ptr, arg0);
}
btCollisionObject.prototype['getCcdMotionThreshold'] = function() {
    return _emscripten_bind_btCollisionObject__getCcdMotionThreshold_p0(this.ptr);
}
btCollisionObject.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btCollisionObject__setUserPointer_p1(this.ptr, arg0);
}
btCollisionObject.prototype['checkCollideWith'] = function(arg0) {
    return _emscripten_bind_btCollisionObject__checkCollideWith_p1(this.ptr, arg0.ptr);
}
btCollisionObject.prototype['getAnisotropicFriction'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionObject__getAnisotropicFriction_p0(this.ptr), Module['btVector3']);
}
btCollisionObject.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btCollisionObject__calculateSerializeBufferSize_p0(this.ptr);
}
btCollisionObject.prototype['getInterpolationAngularVelocity'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionObject__getInterpolationAngularVelocity_p0(this.ptr), Module['btVector3']);
}
btCollisionObject.prototype['forceActivationState'] = function(arg0) {
    _emscripten_bind_btCollisionObject__forceActivationState_p1(this.ptr, arg0);
}
btCollisionObject.prototype['getInterpolationWorldTransform'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionObject__getInterpolationWorldTransform_p0(this.ptr), Module['btTransform']);
}
btCollisionObject.prototype['setIslandTag'] = function(arg0) {
    _emscripten_bind_btCollisionObject__setIslandTag_p1(this.ptr, arg0);
}
btCollisionObject.prototype['setHitFraction'] = function(arg0) {
    _emscripten_bind_btCollisionObject__setHitFraction_p1(this.ptr, arg0);
}
btCollisionObject.prototype['serializeSingleObject'] = function(arg0) {
    _emscripten_bind_btCollisionObject__serializeSingleObject_p1(this.ptr, arg0.ptr);
}
btCollisionObject.prototype['getCollisionFlags'] = function() {
    return _emscripten_bind_btCollisionObject__getCollisionFlags_p0(this.ptr);
}
btCollisionObject.prototype['isStaticObject'] = function() {
    return _emscripten_bind_btCollisionObject__isStaticObject_p0(this.ptr);
}
btCollisionObject.prototype['getCollisionShape'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionObject__getCollisionShape_p0(this.ptr), Module['btCollisionShape']);
}
btCollisionObject.prototype['setAnisotropicFriction'] = function(arg0) {
    _emscripten_bind_btCollisionObject__setAnisotropicFriction_p1(this.ptr, arg0.ptr);
}
btCollisionObject.prototype['__destroy__'] = function() {
    _emscripten_bind_btCollisionObject____destroy___p0(this.ptr);
}
btCollisionObject.prototype['getBroadphaseHandle'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionObject__getBroadphaseHandle_p0(this.ptr), Module['btBroadphaseProxy']);
}
btCollisionObject.prototype['getRestitution'] = function() {
    return _emscripten_bind_btCollisionObject__getRestitution_p0(this.ptr);
}
btCollisionObject.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btCollisionObject__getUserPointer_p0(this.ptr);
}
btCollisionObject.prototype['setCcdSweptSphereRadius'] = function(arg0) {
    _emscripten_bind_btCollisionObject__setCcdSweptSphereRadius_p1(this.ptr, arg0);
}
btCollisionObject.prototype['getWorldTransform'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionObject__getWorldTransform_p0(this.ptr), Module['btTransform']);
}
btCollisionObject.prototype['getCcdSquareMotionThreshold'] = function() {
    return _emscripten_bind_btCollisionObject__getCcdSquareMotionThreshold_p0(this.ptr);
}
btCollisionObject.prototype['setWorldTransform'] = function(arg0) {
    _emscripten_bind_btCollisionObject__setWorldTransform_p1(this.ptr, arg0.ptr);
}
btCollisionObject.prototype['internalSetTemporaryCollisionShape'] = function(arg0) {
    _emscripten_bind_btCollisionObject__internalSetTemporaryCollisionShape_p1(this.ptr, arg0.ptr);
}
btCollisionObject.prototype['getCompanionId'] = function() {
    return _emscripten_bind_btCollisionObject__getCompanionId_p0(this.ptr);
}
btCollisionObject.prototype['isActive'] = function() {
    return _emscripten_bind_btCollisionObject__isActive_p0(this.ptr);
}
btCollisionObject.prototype['getInternalType'] = function() {
    return _emscripten_bind_btCollisionObject__getInternalType_p0(this.ptr);
}
btCollisionObject.prototype['getActivationState'] = function() {
    return _emscripten_bind_btCollisionObject__getActivationState_p0(this.ptr);
}
btCollisionObject.prototype['hasContactResponse'] = function() {
    return _emscripten_bind_btCollisionObject__hasContactResponse_p0(this.ptr);
}
btCollisionObject.prototype['setActivationState'] = function(arg0) {
    _emscripten_bind_btCollisionObject__setActivationState_p1(this.ptr, arg0);
}
btCollisionObject.prototype['getRootCollisionShape'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionObject__getRootCollisionShape_p0(this.ptr), Module['btCollisionShape']);
}
btCollisionObject.prototype['getContactProcessingThreshold'] = function() {
    return _emscripten_bind_btCollisionObject__getContactProcessingThreshold_p0(this.ptr);
}
btCollisionObject.prototype['getHitFraction'] = function() {
    return _emscripten_bind_btCollisionObject__getHitFraction_p0(this.ptr);
}
btCollisionObject.prototype['getCcdSweptSphereRadius'] = function() {
    return _emscripten_bind_btCollisionObject__getCcdSweptSphereRadius_p0(this.ptr);
}
btCollisionObject.prototype['setDeactivationTime'] = function(arg0) {
    _emscripten_bind_btCollisionObject__setDeactivationTime_p1(this.ptr, arg0);
}
btCollisionObject.prototype['internalGetExtensionPointer'] = function() {
    return _emscripten_bind_btCollisionObject__internalGetExtensionPointer_p0(this.ptr);
}
btCollisionObject.prototype['setCollisionFlags'] = function(arg0) {
    _emscripten_bind_btCollisionObject__setCollisionFlags_p1(this.ptr, arg0);
}
btCollisionObject.prototype['isStaticOrKinematicObject'] = function() {
    return _emscripten_bind_btCollisionObject__isStaticOrKinematicObject_p0(this.ptr);
}
btCollisionObject.prototype['setRestitution'] = function(arg0) {
    _emscripten_bind_btCollisionObject__setRestitution_p1(this.ptr, arg0);
}
btCollisionObject.prototype['hasAnisotropicFriction'] = function() {
    return _emscripten_bind_btCollisionObject__hasAnisotropicFriction_p0(this.ptr);
}
btCollisionObject.prototype['setBroadphaseHandle'] = function(arg0) {
    _emscripten_bind_btCollisionObject__setBroadphaseHandle_p1(this.ptr, arg0.ptr);
}
btCollisionObject.prototype['isKinematicObject'] = function() {
    return _emscripten_bind_btCollisionObject__isKinematicObject_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btConvexTriangleMeshShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btConvexTriangleMeshShape.prototype['getNumPlanes'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__getNumPlanes_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexTriangleMeshShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConvexTriangleMeshShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btConvexTriangleMeshShape__setUserPointer_p1(this.ptr, arg0);
}
btConvexTriangleMeshShape.prototype['isInside'] = function(arg0, arg1) {
    return _emscripten_bind_btConvexTriangleMeshShape__isInside_p2(this.ptr, arg0.ptr, arg1);
}
btConvexTriangleMeshShape.prototype['getNumVertices'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__getNumVertices_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btConvexTriangleMeshShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btConvexTriangleMeshShape.prototype['getMeshInterface'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__getMeshInterface_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__isPolyhedral_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['getVertex'] = function(arg0, arg1) {
    _emscripten_bind_btConvexTriangleMeshShape__getVertex_p2(this.ptr, arg0, arg1.ptr);
}
function btConvexTriangleMeshShape(arg0, arg1) {
  if (arg1 === undefined)
    this.ptr = _emscripten_bind_btConvexTriangleMeshShape__btConvexTriangleMeshShape_p1(arg0.ptr);
  else 
    this.ptr = _emscripten_bind_btConvexTriangleMeshShape__btConvexTriangleMeshShape_p2(arg0.ptr, arg1);
  btConvexTriangleMeshShape.prototype.__cache__[this.ptr] = this;
  this.__class__ = btConvexTriangleMeshShape;
}
btConvexTriangleMeshShape.prototype.__cache__ = {};
Module['btConvexTriangleMeshShape'] = btConvexTriangleMeshShape;
btConvexTriangleMeshShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexTriangleMeshShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConvexTriangleMeshShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexTriangleMeshShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConvexTriangleMeshShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__calculateSerializeBufferSize_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['getNumEdges'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__getNumEdges_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['getName'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__getName_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['getEdge'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexTriangleMeshShape__getEdge_p3(this.ptr, arg0, arg1.ptr, arg2.ptr);
}
btConvexTriangleMeshShape.prototype['getLocalScalingNV'] = function() {
    return wrapPointer(_emscripten_bind_btConvexTriangleMeshShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']);
}
btConvexTriangleMeshShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexTriangleMeshShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConvexTriangleMeshShape.prototype['setImplicitShapeDimensions'] = function(arg0) {
    _emscripten_bind_btConvexTriangleMeshShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr);
}
btConvexTriangleMeshShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btConvexTriangleMeshShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btConvexTriangleMeshShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexTriangleMeshShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConvexTriangleMeshShape.prototype['getMarginNV'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__getMarginNV_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__isConvex2d_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btConvexTriangleMeshShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btConvexTriangleMeshShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__isConvex_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__isInfinite_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btConvexTriangleMeshShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btConvexTriangleMeshShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__getUserPointer_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__isNonMoving_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__getMargin_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['recalcLocalAabb'] = function() {
    _emscripten_bind_btConvexTriangleMeshShape__recalcLocalAabb_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btConvexTriangleMeshShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btConvexTriangleMeshShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btConvexTriangleMeshShape__setMargin_p1(this.ptr, arg0);
}
btConvexTriangleMeshShape.prototype['getNonvirtualAabb'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btConvexTriangleMeshShape__getNonvirtualAabb_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3);
}
btConvexTriangleMeshShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexTriangleMeshShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConvexTriangleMeshShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__isSoftBody_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__getMarginNonVirtual_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['__destroy__'] = function() {
    _emscripten_bind_btConvexTriangleMeshShape____destroy___p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexTriangleMeshShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btConvexTriangleMeshShape.prototype['getImplicitShapeDimensions'] = function() {
    return wrapPointer(_emscripten_bind_btConvexTriangleMeshShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']);
}
btConvexTriangleMeshShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btConvexTriangleMeshShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btConvexTriangleMeshShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__getAngularMotionDisc_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btConvexTriangleMeshShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btConvexTriangleMeshShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexTriangleMeshShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConvexTriangleMeshShape.prototype['getPlane'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexTriangleMeshShape__getPlane_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btConvexTriangleMeshShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__isCompound_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['getConvexPolyhedron'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__getConvexPolyhedron_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btConvexTriangleMeshShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btConvexTriangleMeshShape.prototype['calculatePrincipalAxisTransform'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexTriangleMeshShape__calculatePrincipalAxisTransform_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btConvexTriangleMeshShape.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__getShapeType_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__isConcave_p0(this.ptr);
}
btConvexTriangleMeshShape.prototype['initializePolyhedralFeatures'] = function() {
    return _emscripten_bind_btConvexTriangleMeshShape__initializePolyhedralFeatures_p0(this.ptr);
}
function btBroadphaseInterface(){ throw "btBroadphaseInterface is abstract!" }
btBroadphaseInterface.prototype.__cache__ = {};
Module['btBroadphaseInterface'] = btBroadphaseInterface;
btBroadphaseInterface.prototype['rayTest'] = function(arg0, arg1, arg2, arg3, arg4) {
  if (arg3 === undefined)
    _emscripten_bind_btBroadphaseInterface__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
  else   if (arg4 === undefined)
    _emscripten_bind_btBroadphaseInterface__rayTest_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
  else 
    _emscripten_bind_btBroadphaseInterface__rayTest_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr);
}
btBroadphaseInterface.prototype['setAabb'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btBroadphaseInterface__setAabb_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
}
btBroadphaseInterface.prototype['getOverlappingPairCache'] = function() {
    return wrapPointer(_emscripten_bind_btBroadphaseInterface__getOverlappingPairCache_p0(this.ptr), Module['btOverlappingPairCache']);
}
btBroadphaseInterface.prototype['resetPool'] = function(arg0) {
    _emscripten_bind_btBroadphaseInterface__resetPool_p1(this.ptr, arg0.ptr);
}
btBroadphaseInterface.prototype['calculateOverlappingPairs'] = function(arg0) {
    _emscripten_bind_btBroadphaseInterface__calculateOverlappingPairs_p1(this.ptr, arg0.ptr);
}
btBroadphaseInterface.prototype['printStats'] = function() {
    _emscripten_bind_btBroadphaseInterface__printStats_p0(this.ptr);
}
btBroadphaseInterface.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btBroadphaseInterface__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btBroadphaseInterface.prototype['aabbTest'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btBroadphaseInterface__aabbTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btBroadphaseInterface.prototype['createProxy'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
    return wrapPointer(_emscripten_bind_btBroadphaseInterface__createProxy_p8(this.ptr, arg0.ptr, arg1.ptr, arg2, arg3, arg4, arg5, arg6.ptr, arg7), Module['btBroadphaseProxy']);
}
btBroadphaseInterface.prototype['getBroadphaseAabb'] = function(arg0, arg1) {
    _emscripten_bind_btBroadphaseInterface__getBroadphaseAabb_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btBroadphaseInterface.prototype['destroyProxy'] = function(arg0, arg1) {
    _emscripten_bind_btBroadphaseInterface__destroyProxy_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btAngularLimit.prototype['getCorrection'] = function() {
    return _emscripten_bind_btAngularLimit__getCorrection_p0(this.ptr);
}
function btAngularLimit() {
    this.ptr = _emscripten_bind_btAngularLimit__btAngularLimit_p0();
  btAngularLimit.prototype.__cache__[this.ptr] = this;
  this.__class__ = btAngularLimit;
}
btAngularLimit.prototype.__cache__ = {};
Module['btAngularLimit'] = btAngularLimit;
btAngularLimit.prototype['getError'] = function() {
    return _emscripten_bind_btAngularLimit__getError_p0(this.ptr);
}
btAngularLimit.prototype['fit'] = function(arg0) {
    _emscripten_bind_btAngularLimit__fit_p1(this.ptr, arg0);
}
btAngularLimit.prototype['__destroy__'] = function() {
    _emscripten_bind_btAngularLimit____destroy___p0(this.ptr);
}
btAngularLimit.prototype['isLimit'] = function() {
    return _emscripten_bind_btAngularLimit__isLimit_p0(this.ptr);
}
btAngularLimit.prototype['getBiasFactor'] = function() {
    return _emscripten_bind_btAngularLimit__getBiasFactor_p0(this.ptr);
}
btAngularLimit.prototype['getSign'] = function() {
    return _emscripten_bind_btAngularLimit__getSign_p0(this.ptr);
}
btAngularLimit.prototype['set'] = function(arg0, arg1, arg2, arg3, arg4) {
  if (arg2 === undefined)
    _emscripten_bind_btAngularLimit__set_p2(this.ptr, arg0, arg1);
  else   if (arg3 === undefined)
    _emscripten_bind_btAngularLimit__set_p3(this.ptr, arg0, arg1, arg2);
  else   if (arg4 === undefined)
    _emscripten_bind_btAngularLimit__set_p4(this.ptr, arg0, arg1, arg2, arg3);
  else 
    _emscripten_bind_btAngularLimit__set_p5(this.ptr, arg0, arg1, arg2, arg3, arg4);
}
btAngularLimit.prototype['getSoftness'] = function() {
    return _emscripten_bind_btAngularLimit__getSoftness_p0(this.ptr);
}
btAngularLimit.prototype['getHigh'] = function() {
    return _emscripten_bind_btAngularLimit__getHigh_p0(this.ptr);
}
btAngularLimit.prototype['test'] = function(arg0) {
    _emscripten_bind_btAngularLimit__test_p1(this.ptr, arg0);
}
btAngularLimit.prototype['getHalfRange'] = function() {
    return _emscripten_bind_btAngularLimit__getHalfRange_p0(this.ptr);
}
btAngularLimit.prototype['getLow'] = function() {
    return _emscripten_bind_btAngularLimit__getLow_p0(this.ptr);
}
btAngularLimit.prototype['getRelaxationFactor'] = function() {
    return _emscripten_bind_btAngularLimit__getRelaxationFactor_p0(this.ptr);
}
btDefaultCollisionConfiguration.prototype['__destroy__'] = function() {
    _emscripten_bind_btDefaultCollisionConfiguration____destroy___p0(this.ptr);
}
btDefaultCollisionConfiguration.prototype['getStackAllocator'] = function() {
    return wrapPointer(_emscripten_bind_btDefaultCollisionConfiguration__getStackAllocator_p0(this.ptr), Module['btStackAlloc']);
}
function btDefaultCollisionConfiguration(arg0) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btDefaultCollisionConfiguration__btDefaultCollisionConfiguration_p0();
  else 
    this.ptr = _emscripten_bind_btDefaultCollisionConfiguration__btDefaultCollisionConfiguration_p1(arg0.ptr);
  btDefaultCollisionConfiguration.prototype.__cache__[this.ptr] = this;
  this.__class__ = btDefaultCollisionConfiguration;
}
btDefaultCollisionConfiguration.prototype.__cache__ = {};
Module['btDefaultCollisionConfiguration'] = btDefaultCollisionConfiguration;
btDefaultCollisionConfiguration.prototype['getPersistentManifoldPool'] = function() {
    return _emscripten_bind_btDefaultCollisionConfiguration__getPersistentManifoldPool_p0(this.ptr);
}
btDefaultCollisionConfiguration.prototype['getSimplexSolver'] = function() {
    return _emscripten_bind_btDefaultCollisionConfiguration__getSimplexSolver_p0(this.ptr);
}
btDefaultCollisionConfiguration.prototype['setConvexConvexMultipointIterations'] = function(arg0, arg1) {
  if (arg0 === undefined)
    _emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p0(this.ptr);
  else   if (arg1 === undefined)
    _emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p1(this.ptr, arg0);
  else 
    _emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p2(this.ptr, arg0, arg1);
}
btDefaultCollisionConfiguration.prototype['getCollisionAlgorithmPool'] = function() {
    return _emscripten_bind_btDefaultCollisionConfiguration__getCollisionAlgorithmPool_p0(this.ptr);
}
btDefaultCollisionConfiguration.prototype['getCollisionAlgorithmCreateFunc'] = function(arg0, arg1) {
    return wrapPointer(_emscripten_bind_btDefaultCollisionConfiguration__getCollisionAlgorithmCreateFunc_p2(this.ptr, arg0, arg1), Module['btCollisionAlgorithmCreateFunc']);
}
function ContactResultCallback(){ throw "ContactResultCallback is abstract!" }
ContactResultCallback.prototype.__cache__ = {};
Module['ContactResultCallback'] = ContactResultCallback;
ContactResultCallback.prototype['set_m_collisionFilterGroup'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ContactResultCallback__set_m_collisionFilterGroup_p1(this.ptr, arg0);
}
ContactResultCallback.prototype['set_m_collisionFilterMask'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ContactResultCallback__set_m_collisionFilterMask_p1(this.ptr, arg0);
}
ContactResultCallback.prototype['addSingleResult'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
    return _emscripten_bind_btCollisionWorld__ContactResultCallback__addSingleResult_p7(this.ptr, arg0.ptr, arg1.ptr, arg2, arg3, arg4.ptr, arg5, arg6);
}
ContactResultCallback.prototype['get_m_collisionFilterMask'] = function() {
    return _emscripten_bind_btCollisionWorld__ContactResultCallback__get_m_collisionFilterMask_p0(this.ptr);
}
ContactResultCallback.prototype['get_m_collisionFilterGroup'] = function() {
    return _emscripten_bind_btCollisionWorld__ContactResultCallback__get_m_collisionFilterGroup_p0(this.ptr);
}
ContactResultCallback.prototype['needsCollision'] = function(arg0) {
    return _emscripten_bind_btCollisionWorld__ContactResultCallback__needsCollision_p1(this.ptr, arg0.ptr);
}
btSphereSphereCollisionAlgorithm.prototype['getAllContactManifolds'] = function(arg0) {
    _emscripten_bind_btSphereSphereCollisionAlgorithm__getAllContactManifolds_p1(this.ptr, arg0);
}
function btSphereSphereCollisionAlgorithm(arg0, arg1, arg2, arg3) {
  if (arg1 === undefined)
    this.ptr = _emscripten_bind_btSphereSphereCollisionAlgorithm__btSphereSphereCollisionAlgorithm_p1(arg0.ptr);
  else 
    this.ptr = _emscripten_bind_btSphereSphereCollisionAlgorithm__btSphereSphereCollisionAlgorithm_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
  btSphereSphereCollisionAlgorithm.prototype.__cache__[this.ptr] = this;
  this.__class__ = btSphereSphereCollisionAlgorithm;
}
btSphereSphereCollisionAlgorithm.prototype.__cache__ = {};
Module['btSphereSphereCollisionAlgorithm'] = btSphereSphereCollisionAlgorithm;
btSphereSphereCollisionAlgorithm.prototype['calculateTimeOfImpact'] = function(arg0, arg1, arg2, arg3) {
    return _emscripten_bind_btSphereSphereCollisionAlgorithm__calculateTimeOfImpact_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
}
btSphereSphereCollisionAlgorithm.prototype['processCollision'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btSphereSphereCollisionAlgorithm__processCollision_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
}
btSphereSphereCollisionAlgorithm.prototype['__destroy__'] = function() {
    _emscripten_bind_btSphereSphereCollisionAlgorithm____destroy___p0(this.ptr);
}
btSimpleBroadphase.prototype['__destroy__'] = function() {
    _emscripten_bind_btSimpleBroadphase____destroy___p0(this.ptr);
}
function btSimpleBroadphase(arg0, arg1) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p0();
  else   if (arg1 === undefined)
    this.ptr = _emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p1(arg0);
  else 
    this.ptr = _emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p2(arg0, arg1.ptr);
  btSimpleBroadphase.prototype.__cache__[this.ptr] = this;
  this.__class__ = btSimpleBroadphase;
}
btSimpleBroadphase.prototype.__cache__ = {};
Module['btSimpleBroadphase'] = btSimpleBroadphase;
btSimpleBroadphase.prototype['setAabb'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btSimpleBroadphase__setAabb_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
}
btSimpleBroadphase.prototype['getOverlappingPairCache'] = function() {
    return wrapPointer(_emscripten_bind_btSimpleBroadphase__getOverlappingPairCache_p0(this.ptr), Module['btOverlappingPairCache']);
}
btSimpleBroadphase.prototype['rayTest'] = function(arg0, arg1, arg2, arg3, arg4) {
  if (arg3 === undefined)
    _emscripten_bind_btSimpleBroadphase__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
  else   if (arg4 === undefined)
    _emscripten_bind_btSimpleBroadphase__rayTest_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
  else 
    _emscripten_bind_btSimpleBroadphase__rayTest_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr);
}
btSimpleBroadphase.prototype['calculateOverlappingPairs'] = function(arg0) {
    _emscripten_bind_btSimpleBroadphase__calculateOverlappingPairs_p1(this.ptr, arg0.ptr);
}
btSimpleBroadphase.prototype['testAabbOverlap'] = function(arg0, arg1) {
    return _emscripten_bind_btSimpleBroadphase__testAabbOverlap_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btSimpleBroadphase.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btSimpleBroadphase__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btSimpleBroadphase.prototype['aabbTest'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btSimpleBroadphase__aabbTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btSimpleBroadphase.prototype['createProxy'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
    return wrapPointer(_emscripten_bind_btSimpleBroadphase__createProxy_p8(this.ptr, arg0.ptr, arg1.ptr, arg2, arg3, arg4, arg5, arg6.ptr, arg7), Module['btBroadphaseProxy']);
}
btSimpleBroadphase.prototype['printStats'] = function() {
    _emscripten_bind_btSimpleBroadphase__printStats_p0(this.ptr);
}
btSimpleBroadphase.prototype['aabbOverlap'] = function(arg0, arg1) {
    return _emscripten_bind_btSimpleBroadphase__aabbOverlap_p2(arg0.ptr, arg1.ptr);
}
btSimpleBroadphase.prototype['getBroadphaseAabb'] = function(arg0, arg1) {
    _emscripten_bind_btSimpleBroadphase__getBroadphaseAabb_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btSimpleBroadphase.prototype['destroyProxy'] = function(arg0, arg1) {
    _emscripten_bind_btSimpleBroadphase__destroyProxy_p2(this.ptr, arg0.ptr, arg1.ptr);
}
function btCollisionConfiguration(){ throw "btCollisionConfiguration is abstract!" }
btCollisionConfiguration.prototype.__cache__ = {};
Module['btCollisionConfiguration'] = btCollisionConfiguration;
btCollisionConfiguration.prototype['getPersistentManifoldPool'] = function() {
    return _emscripten_bind_btCollisionConfiguration__getPersistentManifoldPool_p0(this.ptr);
}
btCollisionConfiguration.prototype['getStackAllocator'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionConfiguration__getStackAllocator_p0(this.ptr), Module['btStackAlloc']);
}
btCollisionConfiguration.prototype['getCollisionAlgorithmPool'] = function() {
    return _emscripten_bind_btCollisionConfiguration__getCollisionAlgorithmPool_p0(this.ptr);
}
btCollisionConfiguration.prototype['getCollisionAlgorithmCreateFunc'] = function(arg0, arg1) {
    return wrapPointer(_emscripten_bind_btCollisionConfiguration__getCollisionAlgorithmCreateFunc_p2(this.ptr, arg0, arg1), Module['btCollisionAlgorithmCreateFunc']);
}
btPersistentManifold.prototype['getNumContacts'] = function() {
    return _emscripten_bind_btPersistentManifold__getNumContacts_p0(this.ptr);
}
btPersistentManifold.prototype['set_m_objectType'] = function(arg0) {
    _emscripten_bind_btPersistentManifold__set_m_objectType_p1(this.ptr, arg0);
}
btPersistentManifold.prototype['getBody1'] = function() {
    return _emscripten_bind_btPersistentManifold__getBody1_p0(this.ptr);
}
btPersistentManifold.prototype['validContactDistance'] = function(arg0) {
    return _emscripten_bind_btPersistentManifold__validContactDistance_p1(this.ptr, arg0.ptr);
}
btPersistentManifold.prototype['get_m_objectType'] = function() {
    return _emscripten_bind_btPersistentManifold__get_m_objectType_p0(this.ptr);
}
btPersistentManifold.prototype['refreshContactPoints'] = function(arg0, arg1) {
    _emscripten_bind_btPersistentManifold__refreshContactPoints_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btPersistentManifold.prototype['clearUserCache'] = function(arg0) {
    _emscripten_bind_btPersistentManifold__clearUserCache_p1(this.ptr, arg0.ptr);
}
btPersistentManifold.prototype['set_m_index1a'] = function(arg0) {
    _emscripten_bind_btPersistentManifold__set_m_index1a_p1(this.ptr, arg0);
}
function btPersistentManifold(arg0, arg1, arg2, arg3, arg4) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btPersistentManifold__btPersistentManifold_p0();
  else 
    this.ptr = _emscripten_bind_btPersistentManifold__btPersistentManifold_p5(arg0, arg1, arg2, arg3, arg4);
  btPersistentManifold.prototype.__cache__[this.ptr] = this;
  this.__class__ = btPersistentManifold;
}
btPersistentManifold.prototype.__cache__ = {};
Module['btPersistentManifold'] = btPersistentManifold;
btPersistentManifold.prototype['addManifoldPoint'] = function(arg0) {
    return _emscripten_bind_btPersistentManifold__addManifoldPoint_p1(this.ptr, arg0.ptr);
}
btPersistentManifold.prototype['getCacheEntry'] = function(arg0) {
    return _emscripten_bind_btPersistentManifold__getCacheEntry_p1(this.ptr, arg0.ptr);
}
btPersistentManifold.prototype['getObjectType'] = function() {
    return _emscripten_bind_btPersistentManifold__getObjectType_p0(this.ptr);
}
btPersistentManifold.prototype['getContactPoint'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btPersistentManifold__getContactPoint_p1(this.ptr, arg0), Module['btManifoldPoint']);
}
btPersistentManifold.prototype['getContactBreakingThreshold'] = function() {
    return _emscripten_bind_btPersistentManifold__getContactBreakingThreshold_p0(this.ptr);
}
btPersistentManifold.prototype['clearManifold'] = function() {
    _emscripten_bind_btPersistentManifold__clearManifold_p0(this.ptr);
}
btPersistentManifold.prototype['getBody0'] = function() {
    return _emscripten_bind_btPersistentManifold__getBody0_p0(this.ptr);
}
btPersistentManifold.prototype['setBodies'] = function(arg0, arg1) {
    _emscripten_bind_btPersistentManifold__setBodies_p2(this.ptr, arg0, arg1);
}
btPersistentManifold.prototype['removeContactPoint'] = function(arg0) {
    _emscripten_bind_btPersistentManifold__removeContactPoint_p1(this.ptr, arg0);
}
btPersistentManifold.prototype['__destroy__'] = function() {
    _emscripten_bind_btPersistentManifold____destroy___p0(this.ptr);
}
btPersistentManifold.prototype['get_m_index1a'] = function() {
    return _emscripten_bind_btPersistentManifold__get_m_index1a_p0(this.ptr);
}
btPersistentManifold.prototype['getContactProcessingThreshold'] = function() {
    return _emscripten_bind_btPersistentManifold__getContactProcessingThreshold_p0(this.ptr);
}
btPersistentManifold.prototype['get_m_companionIdB'] = function() {
    return _emscripten_bind_btPersistentManifold__get_m_companionIdB_p0(this.ptr);
}
btPersistentManifold.prototype['get_m_companionIdA'] = function() {
    return _emscripten_bind_btPersistentManifold__get_m_companionIdA_p0(this.ptr);
}
btPersistentManifold.prototype['set_m_companionIdB'] = function(arg0) {
    _emscripten_bind_btPersistentManifold__set_m_companionIdB_p1(this.ptr, arg0);
}
btPersistentManifold.prototype['set_m_companionIdA'] = function(arg0) {
    _emscripten_bind_btPersistentManifold__set_m_companionIdA_p1(this.ptr, arg0);
}
btPersistentManifold.prototype['replaceContactPoint'] = function(arg0, arg1) {
    _emscripten_bind_btPersistentManifold__replaceContactPoint_p2(this.ptr, arg0.ptr, arg1);
}
function btNodeOverlapCallback(){ throw "btNodeOverlapCallback is abstract!" }
btNodeOverlapCallback.prototype.__cache__ = {};
Module['btNodeOverlapCallback'] = btNodeOverlapCallback;
btNodeOverlapCallback.prototype['processNode'] = function(arg0, arg1) {
    _emscripten_bind_btNodeOverlapCallback__processNode_p2(this.ptr, arg0, arg1);
}
btCompoundShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btCompoundShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btCompoundShape.prototype['getDynamicAabbTree'] = function() {
    return wrapPointer(_emscripten_bind_btCompoundShape__getDynamicAabbTree_p0(this.ptr), Module['btDbvt']);
}
btCompoundShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btCompoundShape__isConvex_p0(this.ptr);
}
btCompoundShape.prototype['getUpdateRevision'] = function() {
    return _emscripten_bind_btCompoundShape__getUpdateRevision_p0(this.ptr);
}
btCompoundShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btCompoundShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btCompoundShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btCompoundShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btCompoundShape.prototype['createAabbTreeFromChildren'] = function() {
    _emscripten_bind_btCompoundShape__createAabbTreeFromChildren_p0(this.ptr);
}
function btCompoundShape(arg0) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btCompoundShape__btCompoundShape_p0();
  else 
    this.ptr = _emscripten_bind_btCompoundShape__btCompoundShape_p1(arg0);
  btCompoundShape.prototype.__cache__[this.ptr] = this;
  this.__class__ = btCompoundShape;
}
btCompoundShape.prototype.__cache__ = {};
Module['btCompoundShape'] = btCompoundShape;
btCompoundShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btCompoundShape__calculateSerializeBufferSize_p0(this.ptr);
}
btCompoundShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btCompoundShape__setUserPointer_p1(this.ptr, arg0);
}
btCompoundShape.prototype['getName'] = function() {
    return _emscripten_bind_btCompoundShape__getName_p0(this.ptr);
}
btCompoundShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btCompoundShape__isCompound_p0(this.ptr);
}
btCompoundShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btCompoundShape__isPolyhedral_p0(this.ptr);
}
btCompoundShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btCompoundShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btCompoundShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCompoundShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCompoundShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btCompoundShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btCompoundShape.prototype['getChildShape'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCompoundShape__getChildShape_p1(this.ptr, arg0), Module['btCollisionShape']);
}
btCompoundShape.prototype['addChildShape'] = function(arg0, arg1) {
    _emscripten_bind_btCompoundShape__addChildShape_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btCompoundShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btCompoundShape__isInfinite_p0(this.ptr);
}
btCompoundShape.prototype['getChildTransform'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCompoundShape__getChildTransform_p1(this.ptr, arg0), Module['btTransform']);
}
btCompoundShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btCompoundShape__getUserPointer_p0(this.ptr);
}
btCompoundShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btCompoundShape__isNonMoving_p0(this.ptr);
}
btCompoundShape.prototype['getChildList'] = function() {
    return wrapPointer(_emscripten_bind_btCompoundShape__getChildList_p0(this.ptr), Module['btCompoundShapeChild']);
}
btCompoundShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btCompoundShape__getMargin_p0(this.ptr);
}
btCompoundShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btCompoundShape__setMargin_p1(this.ptr, arg0);
}
btCompoundShape.prototype['getNumChildShapes'] = function() {
    return _emscripten_bind_btCompoundShape__getNumChildShapes_p0(this.ptr);
}
btCompoundShape.prototype['removeChildShapeByIndex'] = function(arg0) {
    _emscripten_bind_btCompoundShape__removeChildShapeByIndex_p1(this.ptr, arg0);
}
btCompoundShape.prototype['recalculateLocalAabb'] = function() {
    _emscripten_bind_btCompoundShape__recalculateLocalAabb_p0(this.ptr);
}
btCompoundShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btCompoundShape__isSoftBody_p0(this.ptr);
}
btCompoundShape.prototype['__destroy__'] = function() {
    _emscripten_bind_btCompoundShape____destroy___p0(this.ptr);
}
btCompoundShape.prototype['updateChildTransform'] = function(arg0, arg1, arg2) {
  if (arg2 === undefined)
    _emscripten_bind_btCompoundShape__updateChildTransform_p2(this.ptr, arg0, arg1.ptr);
  else 
    _emscripten_bind_btCompoundShape__updateChildTransform_p3(this.ptr, arg0, arg1.ptr, arg2);
}
btCompoundShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btCompoundShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btCompoundShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btCompoundShape__getAngularMotionDisc_p0(this.ptr);
}
btCompoundShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btCompoundShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btCompoundShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btCompoundShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btCompoundShape.prototype['calculatePrincipalAxisTransform'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCompoundShape__calculatePrincipalAxisTransform_p3(this.ptr, arg0, arg1.ptr, arg2.ptr);
}
btCompoundShape.prototype['removeChildShape'] = function(arg0) {
    _emscripten_bind_btCompoundShape__removeChildShape_p1(this.ptr, arg0.ptr);
}
btCompoundShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btCompoundShape__getShapeType_p0(this.ptr);
}
btCompoundShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btCompoundShape__isConcave_p0(this.ptr);
}
btCompoundShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btCompoundShape__isConvex2d_p0(this.ptr);
}
btScaledBvhTriangleMeshShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btScaledBvhTriangleMeshShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btScaledBvhTriangleMeshShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btScaledBvhTriangleMeshShape__setUserPointer_p1(this.ptr, arg0);
}
function btScaledBvhTriangleMeshShape(arg0, arg1) {
    this.ptr = _emscripten_bind_btScaledBvhTriangleMeshShape__btScaledBvhTriangleMeshShape_p2(arg0.ptr, arg1.ptr);
  btScaledBvhTriangleMeshShape.prototype.__cache__[this.ptr] = this;
  this.__class__ = btScaledBvhTriangleMeshShape;
}
btScaledBvhTriangleMeshShape.prototype.__cache__ = {};
Module['btScaledBvhTriangleMeshShape'] = btScaledBvhTriangleMeshShape;
btScaledBvhTriangleMeshShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btScaledBvhTriangleMeshShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btScaledBvhTriangleMeshShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btScaledBvhTriangleMeshShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btScaledBvhTriangleMeshShape.prototype['processAllTriangles'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btScaledBvhTriangleMeshShape__processAllTriangles_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btScaledBvhTriangleMeshShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btScaledBvhTriangleMeshShape__calculateSerializeBufferSize_p0(this.ptr);
}
btScaledBvhTriangleMeshShape.prototype['getName'] = function() {
    return _emscripten_bind_btScaledBvhTriangleMeshShape__getName_p0(this.ptr);
}
btScaledBvhTriangleMeshShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btScaledBvhTriangleMeshShape__isCompound_p0(this.ptr);
}
btScaledBvhTriangleMeshShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btScaledBvhTriangleMeshShape__isPolyhedral_p0(this.ptr);
}
btScaledBvhTriangleMeshShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btScaledBvhTriangleMeshShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btScaledBvhTriangleMeshShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btScaledBvhTriangleMeshShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btScaledBvhTriangleMeshShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btScaledBvhTriangleMeshShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btScaledBvhTriangleMeshShape.prototype['getChildShape'] = function() {
    return wrapPointer(_emscripten_bind_btScaledBvhTriangleMeshShape__getChildShape_p0(this.ptr), Module['btBvhTriangleMeshShape']);
}
btScaledBvhTriangleMeshShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btScaledBvhTriangleMeshShape__isConvex_p0(this.ptr);
}
btScaledBvhTriangleMeshShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btScaledBvhTriangleMeshShape__isInfinite_p0(this.ptr);
}
btScaledBvhTriangleMeshShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btScaledBvhTriangleMeshShape__getUserPointer_p0(this.ptr);
}
btScaledBvhTriangleMeshShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btScaledBvhTriangleMeshShape__isNonMoving_p0(this.ptr);
}
btScaledBvhTriangleMeshShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btScaledBvhTriangleMeshShape__getMargin_p0(this.ptr);
}
btScaledBvhTriangleMeshShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btScaledBvhTriangleMeshShape__setMargin_p1(this.ptr, arg0);
}
btScaledBvhTriangleMeshShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btScaledBvhTriangleMeshShape__isConvex2d_p0(this.ptr);
}
btScaledBvhTriangleMeshShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btScaledBvhTriangleMeshShape__isSoftBody_p0(this.ptr);
}
btScaledBvhTriangleMeshShape.prototype['__destroy__'] = function() {
    _emscripten_bind_btScaledBvhTriangleMeshShape____destroy___p0(this.ptr);
}
btScaledBvhTriangleMeshShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btScaledBvhTriangleMeshShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btScaledBvhTriangleMeshShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btScaledBvhTriangleMeshShape__isConcave_p0(this.ptr);
}
btScaledBvhTriangleMeshShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btScaledBvhTriangleMeshShape__getAngularMotionDisc_p0(this.ptr);
}
btScaledBvhTriangleMeshShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btScaledBvhTriangleMeshShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btScaledBvhTriangleMeshShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btScaledBvhTriangleMeshShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btScaledBvhTriangleMeshShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btScaledBvhTriangleMeshShape__getShapeType_p0(this.ptr);
}
function btDynamicsWorld(){ throw "btDynamicsWorld is abstract!" }
btDynamicsWorld.prototype.__cache__ = {};
Module['btDynamicsWorld'] = btDynamicsWorld;
btDynamicsWorld.prototype['setGravity'] = function(arg0) {
    _emscripten_bind_btDynamicsWorld__setGravity_p1(this.ptr, arg0.ptr);
}
btDynamicsWorld.prototype['addAction'] = function(arg0) {
    _emscripten_bind_btDynamicsWorld__addAction_p1(this.ptr, arg0.ptr);
}
btDynamicsWorld.prototype['getSolverInfo'] = function() {
    return wrapPointer(_emscripten_bind_btDynamicsWorld__getSolverInfo_p0(this.ptr), Module['btContactSolverInfo']);
}
btDynamicsWorld.prototype['serialize'] = function(arg0) {
    _emscripten_bind_btDynamicsWorld__serialize_p1(this.ptr, arg0.ptr);
}
btDynamicsWorld.prototype['getDispatcher'] = function() {
    return wrapPointer(_emscripten_bind_btDynamicsWorld__getDispatcher_p0(this.ptr), Module['btDispatcher']);
}
btDynamicsWorld.prototype['addRigidBody'] = function(arg0, arg1, arg2) {
  if (arg1 === undefined)
    _emscripten_bind_btDynamicsWorld__addRigidBody_p1(this.ptr, arg0.ptr);
  else 
    _emscripten_bind_btDynamicsWorld__addRigidBody_p3(this.ptr, arg0.ptr, arg1, arg2);
}
btDynamicsWorld.prototype['clearForces'] = function() {
    _emscripten_bind_btDynamicsWorld__clearForces_p0(this.ptr);
}
btDynamicsWorld.prototype['removeVehicle'] = function(arg0) {
    _emscripten_bind_btDynamicsWorld__removeVehicle_p1(this.ptr, arg0.ptr);
}
btDynamicsWorld.prototype['getDebugDrawer'] = function() {
    return wrapPointer(_emscripten_bind_btDynamicsWorld__getDebugDrawer_p0(this.ptr), Module['btIDebugDraw']);
}
btDynamicsWorld.prototype['setBroadphase'] = function(arg0) {
    _emscripten_bind_btDynamicsWorld__setBroadphase_p1(this.ptr, arg0.ptr);
}
btDynamicsWorld.prototype['performDiscreteCollisionDetection'] = function() {
    _emscripten_bind_btDynamicsWorld__performDiscreteCollisionDetection_p0(this.ptr);
}
btDynamicsWorld.prototype['getCollisionObjectArray'] = function() {
    return _emscripten_bind_btDynamicsWorld__getCollisionObjectArray_p0(this.ptr);
}
btDynamicsWorld.prototype['debugDrawObject'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btDynamicsWorld__debugDrawObject_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btDynamicsWorld.prototype['removeConstraint'] = function(arg0) {
    _emscripten_bind_btDynamicsWorld__removeConstraint_p1(this.ptr, arg0.ptr);
}
btDynamicsWorld.prototype['rayTest'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btDynamicsWorld__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btDynamicsWorld.prototype['getNumConstraints'] = function() {
    return _emscripten_bind_btDynamicsWorld__getNumConstraints_p0(this.ptr);
}
btDynamicsWorld.prototype['addCollisionObject'] = function(arg0, arg1, arg2) {
  if (arg1 === undefined)
    _emscripten_bind_btDynamicsWorld__addCollisionObject_p1(this.ptr, arg0.ptr);
  else   if (arg2 === undefined)
    _emscripten_bind_btDynamicsWorld__addCollisionObject_p2(this.ptr, arg0.ptr, arg1);
  else 
    _emscripten_bind_btDynamicsWorld__addCollisionObject_p3(this.ptr, arg0.ptr, arg1, arg2);
}
btDynamicsWorld.prototype['removeRigidBody'] = function(arg0) {
    _emscripten_bind_btDynamicsWorld__removeRigidBody_p1(this.ptr, arg0.ptr);
}
btDynamicsWorld.prototype['contactTest'] = function(arg0, arg1) {
    _emscripten_bind_btDynamicsWorld__contactTest_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btDynamicsWorld.prototype['setInternalTickCallback'] = function(arg0, arg1, arg2) {
  if (arg1 === undefined)
    _emscripten_bind_btDynamicsWorld__setInternalTickCallback_p1(this.ptr, arg0);
  else   if (arg2 === undefined)
    _emscripten_bind_btDynamicsWorld__setInternalTickCallback_p2(this.ptr, arg0, arg1);
  else 
    _emscripten_bind_btDynamicsWorld__setInternalTickCallback_p3(this.ptr, arg0, arg1, arg2);
}
btDynamicsWorld.prototype['getForceUpdateAllAabbs'] = function() {
    return _emscripten_bind_btDynamicsWorld__getForceUpdateAllAabbs_p0(this.ptr);
}
btDynamicsWorld.prototype['updateAabbs'] = function() {
    _emscripten_bind_btDynamicsWorld__updateAabbs_p0(this.ptr);
}
btDynamicsWorld.prototype['setDebugDrawer'] = function(arg0) {
    _emscripten_bind_btDynamicsWorld__setDebugDrawer_p1(this.ptr, arg0.ptr);
}
btDynamicsWorld.prototype['synchronizeMotionStates'] = function() {
    _emscripten_bind_btDynamicsWorld__synchronizeMotionStates_p0(this.ptr);
}
btDynamicsWorld.prototype['convexSweepTest'] = function(arg0, arg1, arg2, arg3, arg4) {
  if (arg4 === undefined)
    _emscripten_bind_btDynamicsWorld__convexSweepTest_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
  else 
    _emscripten_bind_btDynamicsWorld__convexSweepTest_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4);
}
btDynamicsWorld.prototype['getNumCollisionObjects'] = function() {
    return _emscripten_bind_btDynamicsWorld__getNumCollisionObjects_p0(this.ptr);
}
btDynamicsWorld.prototype['__destroy__'] = function() {
    _emscripten_bind_btDynamicsWorld____destroy___p0(this.ptr);
}
btDynamicsWorld.prototype['addConstraint'] = function(arg0, arg1) {
  if (arg1 === undefined)
    _emscripten_bind_btDynamicsWorld__addConstraint_p1(this.ptr, arg0.ptr);
  else 
    _emscripten_bind_btDynamicsWorld__addConstraint_p2(this.ptr, arg0.ptr, arg1);
}
btDynamicsWorld.prototype['contactPairTest'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btDynamicsWorld__contactPairTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btDynamicsWorld.prototype['getGravity'] = function() {
    return wrapPointer(_emscripten_bind_btDynamicsWorld__getGravity_p0(this.ptr), Module['btVector3']);
}
btDynamicsWorld.prototype['debugDrawWorld'] = function() {
    _emscripten_bind_btDynamicsWorld__debugDrawWorld_p0(this.ptr);
}
btDynamicsWorld.prototype['getBroadphase'] = function() {
    return wrapPointer(_emscripten_bind_btDynamicsWorld__getBroadphase_p0(this.ptr), Module['btBroadphaseInterface']);
}
btDynamicsWorld.prototype['rayTestSingle'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btDynamicsWorld__rayTestSingle_p6(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr);
}
btDynamicsWorld.prototype['removeAction'] = function(arg0) {
    _emscripten_bind_btDynamicsWorld__removeAction_p1(this.ptr, arg0.ptr);
}
btDynamicsWorld.prototype['setForceUpdateAllAabbs'] = function(arg0) {
    _emscripten_bind_btDynamicsWorld__setForceUpdateAllAabbs_p1(this.ptr, arg0);
}
btDynamicsWorld.prototype['setWorldUserInfo'] = function(arg0) {
    _emscripten_bind_btDynamicsWorld__setWorldUserInfo_p1(this.ptr, arg0);
}
btDynamicsWorld.prototype['removeCharacter'] = function(arg0) {
    _emscripten_bind_btDynamicsWorld__removeCharacter_p1(this.ptr, arg0.ptr);
}
btDynamicsWorld.prototype['getConstraint'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btDynamicsWorld__getConstraint_p1(this.ptr, arg0), Module['btTypedConstraint']);
}
btDynamicsWorld.prototype['getConstraintSolver'] = function() {
    return wrapPointer(_emscripten_bind_btDynamicsWorld__getConstraintSolver_p0(this.ptr), Module['btConstraintSolver']);
}
btDynamicsWorld.prototype['stepSimulation'] = function(arg0, arg1, arg2) {
  if (arg1 === undefined)
    return _emscripten_bind_btDynamicsWorld__stepSimulation_p1(this.ptr, arg0);
  else   if (arg2 === undefined)
    return _emscripten_bind_btDynamicsWorld__stepSimulation_p2(this.ptr, arg0, arg1);
  else 
    return _emscripten_bind_btDynamicsWorld__stepSimulation_p3(this.ptr, arg0, arg1, arg2);
}
btDynamicsWorld.prototype['addCharacter'] = function(arg0) {
    _emscripten_bind_btDynamicsWorld__addCharacter_p1(this.ptr, arg0.ptr);
}
btDynamicsWorld.prototype['getWorldType'] = function() {
    return _emscripten_bind_btDynamicsWorld__getWorldType_p0(this.ptr);
}
btDynamicsWorld.prototype['updateSingleAabb'] = function(arg0) {
    _emscripten_bind_btDynamicsWorld__updateSingleAabb_p1(this.ptr, arg0.ptr);
}
btDynamicsWorld.prototype['addVehicle'] = function(arg0) {
    _emscripten_bind_btDynamicsWorld__addVehicle_p1(this.ptr, arg0.ptr);
}
btDynamicsWorld.prototype['getPairCache'] = function() {
    return wrapPointer(_emscripten_bind_btDynamicsWorld__getPairCache_p0(this.ptr), Module['btOverlappingPairCache']);
}
btDynamicsWorld.prototype['getWorldUserInfo'] = function() {
    return _emscripten_bind_btDynamicsWorld__getWorldUserInfo_p0(this.ptr);
}
btDynamicsWorld.prototype['removeCollisionObject'] = function(arg0) {
    _emscripten_bind_btDynamicsWorld__removeCollisionObject_p1(this.ptr, arg0.ptr);
}
btDynamicsWorld.prototype['setConstraintSolver'] = function(arg0) {
    _emscripten_bind_btDynamicsWorld__setConstraintSolver_p1(this.ptr, arg0.ptr);
}
btDynamicsWorld.prototype['objectQuerySingle'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
    _emscripten_bind_btDynamicsWorld__objectQuerySingle_p8(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7);
}
btDynamicsWorld.prototype['getDispatchInfo'] = function() {
    return wrapPointer(_emscripten_bind_btDynamicsWorld__getDispatchInfo_p0(this.ptr), Module['btDispatcherInfo']);
}
function btDefaultVehicleRaycaster(arg0) {
    this.ptr = _emscripten_bind_btDefaultVehicleRaycaster__btDefaultVehicleRaycaster_p1(arg0.ptr);
  btDefaultVehicleRaycaster.prototype.__cache__[this.ptr] = this;
  this.__class__ = btDefaultVehicleRaycaster;
}
btDefaultVehicleRaycaster.prototype.__cache__ = {};
Module['btDefaultVehicleRaycaster'] = btDefaultVehicleRaycaster;
btDefaultVehicleRaycaster.prototype['__destroy__'] = function() {
    _emscripten_bind_btDefaultVehicleRaycaster____destroy___p0(this.ptr);
}
btDefaultVehicleRaycaster.prototype['castRay'] = function(arg0, arg1, arg2) {
    return _emscripten_bind_btDefaultVehicleRaycaster__castRay_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConstraintSetting.prototype['__destroy__'] = function() {
    _emscripten_bind_btConstraintSetting____destroy___p0(this.ptr);
}
function btConstraintSetting() {
    this.ptr = _emscripten_bind_btConstraintSetting__btConstraintSetting_p0();
  btConstraintSetting.prototype.__cache__[this.ptr] = this;
  this.__class__ = btConstraintSetting;
}
btConstraintSetting.prototype.__cache__ = {};
Module['btConstraintSetting'] = btConstraintSetting;
btConstraintSetting.prototype['set_m_impulseClamp'] = function(arg0) {
    _emscripten_bind_btConstraintSetting__set_m_impulseClamp_p1(this.ptr, arg0);
}
btConstraintSetting.prototype['get_m_damping'] = function() {
    return _emscripten_bind_btConstraintSetting__get_m_damping_p0(this.ptr);
}
btConstraintSetting.prototype['get_m_impulseClamp'] = function() {
    return _emscripten_bind_btConstraintSetting__get_m_impulseClamp_p0(this.ptr);
}
btConstraintSetting.prototype['set_m_tau'] = function(arg0) {
    _emscripten_bind_btConstraintSetting__set_m_tau_p1(this.ptr, arg0);
}
btConstraintSetting.prototype['set_m_damping'] = function(arg0) {
    _emscripten_bind_btConstraintSetting__set_m_damping_p1(this.ptr, arg0);
}
btConstraintSetting.prototype['get_m_tau'] = function() {
    return _emscripten_bind_btConstraintSetting__get_m_tau_p0(this.ptr);
}
btStackAlloc.prototype['__destroy__'] = function() {
    _emscripten_bind_btStackAlloc____destroy___p0(this.ptr);
}
btStackAlloc.prototype['create'] = function(arg0) {
    _emscripten_bind_btStackAlloc__create_p1(this.ptr, arg0);
}
function btStackAlloc(arg0) {
    this.ptr = _emscripten_bind_btStackAlloc__btStackAlloc_p1(arg0);
  btStackAlloc.prototype.__cache__[this.ptr] = this;
  this.__class__ = btStackAlloc;
}
btStackAlloc.prototype.__cache__ = {};
Module['btStackAlloc'] = btStackAlloc;
btStackAlloc.prototype['allocate'] = function(arg0) {
    return _emscripten_bind_btStackAlloc__allocate_p1(this.ptr, arg0);
}
btStackAlloc.prototype['destroy'] = function() {
    _emscripten_bind_btStackAlloc__destroy_p0(this.ptr);
}
btStackAlloc.prototype['beginBlock'] = function() {
    return wrapPointer(_emscripten_bind_btStackAlloc__beginBlock_p0(this.ptr), Module['btBlock']);
}
btStackAlloc.prototype['getAvailableMemory'] = function() {
    return _emscripten_bind_btStackAlloc__getAvailableMemory_p0(this.ptr);
}
btStackAlloc.prototype['endBlock'] = function(arg0) {
    _emscripten_bind_btStackAlloc__endBlock_p1(this.ptr, arg0.ptr);
}
function btContactSolverInfo() {
    this.ptr = _emscripten_bind_btContactSolverInfo__btContactSolverInfo_p0();
  btContactSolverInfo.prototype.__cache__[this.ptr] = this;
  this.__class__ = btContactSolverInfo;
}
btContactSolverInfo.prototype.__cache__ = {};
Module['btContactSolverInfo'] = btContactSolverInfo;
btContactSolverInfo.prototype['__destroy__'] = function() {
    _emscripten_bind_btContactSolverInfo____destroy___p0(this.ptr);
}
btUniversalConstraint.prototype['getRigidBodyB'] = function() {
    return wrapPointer(_emscripten_bind_btUniversalConstraint__getRigidBodyB_p0(this.ptr), Module['btRigidBody']);
}
btUniversalConstraint.prototype['buildJacobian'] = function() {
    _emscripten_bind_btUniversalConstraint__buildJacobian_p0(this.ptr);
}
btUniversalConstraint.prototype['setParam'] = function(arg0, arg1, arg2) {
  if (arg2 === undefined)
    _emscripten_bind_btUniversalConstraint__setParam_p2(this.ptr, arg0, arg1);
  else 
    _emscripten_bind_btUniversalConstraint__setParam_p3(this.ptr, arg0, arg1, arg2);
}
btUniversalConstraint.prototype['getUid'] = function() {
    return _emscripten_bind_btUniversalConstraint__getUid_p0(this.ptr);
}
btUniversalConstraint.prototype['set_m_objectType'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__set_m_objectType_p1(this.ptr, arg0);
}
btUniversalConstraint.prototype['setEnabled'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__setEnabled_p1(this.ptr, arg0);
}
btUniversalConstraint.prototype['getFrameOffsetA'] = function() {
    return wrapPointer(_emscripten_bind_btUniversalConstraint__getFrameOffsetA_p0(this.ptr), Module['btTransform']);
}
btUniversalConstraint.prototype['getRelativePivotPosition'] = function(arg0) {
    return _emscripten_bind_btUniversalConstraint__getRelativePivotPosition_p1(this.ptr, arg0);
}
btUniversalConstraint.prototype['getFrameOffsetB'] = function() {
    return wrapPointer(_emscripten_bind_btUniversalConstraint__getFrameOffsetB_p0(this.ptr), Module['btTransform']);
}
btUniversalConstraint.prototype['getInfo2NonVirtual'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
    _emscripten_bind_btUniversalConstraint__getInfo2NonVirtual_p7(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr);
}
btUniversalConstraint.prototype['getCalculatedTransformA'] = function() {
    return wrapPointer(_emscripten_bind_btUniversalConstraint__getCalculatedTransformA_p0(this.ptr), Module['btTransform']);
}
btUniversalConstraint.prototype['getUserConstraintId'] = function() {
    return _emscripten_bind_btUniversalConstraint__getUserConstraintId_p0(this.ptr);
}
btUniversalConstraint.prototype['get_m_objectType'] = function() {
    return _emscripten_bind_btUniversalConstraint__get_m_objectType_p0(this.ptr);
}
btUniversalConstraint.prototype['getRigidBodyA'] = function() {
    return wrapPointer(_emscripten_bind_btUniversalConstraint__getRigidBodyA_p0(this.ptr), Module['btRigidBody']);
}
btUniversalConstraint.prototype['getBreakingImpulseThreshold'] = function() {
    return _emscripten_bind_btUniversalConstraint__getBreakingImpulseThreshold_p0(this.ptr);
}
btUniversalConstraint.prototype['getParam'] = function(arg0, arg1) {
  if (arg1 === undefined)
    return _emscripten_bind_btUniversalConstraint__getParam_p1(this.ptr, arg0);
  else 
    return _emscripten_bind_btUniversalConstraint__getParam_p2(this.ptr, arg0, arg1);
}
btUniversalConstraint.prototype['setUpperLimit'] = function(arg0, arg1) {
    _emscripten_bind_btUniversalConstraint__setUpperLimit_p2(this.ptr, arg0, arg1);
}
btUniversalConstraint.prototype['getInfo1'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__getInfo1_p1(this.ptr, arg0.ptr);
}
btUniversalConstraint.prototype['getInfo2'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__getInfo2_p1(this.ptr, arg0.ptr);
}
btUniversalConstraint.prototype['calcAnchorPos'] = function() {
    _emscripten_bind_btUniversalConstraint__calcAnchorPos_p0(this.ptr);
}
btUniversalConstraint.prototype['getAngularLowerLimit'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__getAngularLowerLimit_p1(this.ptr, arg0.ptr);
}
btUniversalConstraint.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btUniversalConstraint__calculateSerializeBufferSize_p0(this.ptr);
}
btUniversalConstraint.prototype['getAxis'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btUniversalConstraint__getAxis_p1(this.ptr, arg0), Module['btVector3']);
}
btUniversalConstraint.prototype['internalGetAppliedImpulse'] = function() {
    return _emscripten_bind_btUniversalConstraint__internalGetAppliedImpulse_p0(this.ptr);
}
btUniversalConstraint.prototype['isEnabled'] = function() {
    return _emscripten_bind_btUniversalConstraint__isEnabled_p0(this.ptr);
}
btUniversalConstraint.prototype['setUserConstraintId'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__setUserConstraintId_p1(this.ptr, arg0);
}
btUniversalConstraint.prototype['getLinearUpperLimit'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__getLinearUpperLimit_p1(this.ptr, arg0.ptr);
}
btUniversalConstraint.prototype['getConstraintType'] = function() {
    return _emscripten_bind_btUniversalConstraint__getConstraintType_p0(this.ptr);
}
btUniversalConstraint.prototype['enableFeedback'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__enableFeedback_p1(this.ptr, arg0);
}
btUniversalConstraint.prototype['getAnchor'] = function() {
    return wrapPointer(_emscripten_bind_btUniversalConstraint__getAnchor_p0(this.ptr), Module['btVector3']);
}
btUniversalConstraint.prototype['setUseFrameOffset'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__setUseFrameOffset_p1(this.ptr, arg0);
}
btUniversalConstraint.prototype['isLimited'] = function(arg0) {
    return _emscripten_bind_btUniversalConstraint__isLimited_p1(this.ptr, arg0);
}
btUniversalConstraint.prototype['getAngle2'] = function() {
    return _emscripten_bind_btUniversalConstraint__getAngle2_p0(this.ptr);
}
btUniversalConstraint.prototype['getRotationalLimitMotor'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btUniversalConstraint__getRotationalLimitMotor_p1(this.ptr, arg0), Module['btRotationalLimitMotor']);
}
btUniversalConstraint.prototype['getAngle1'] = function() {
    return _emscripten_bind_btUniversalConstraint__getAngle1_p0(this.ptr);
}
btUniversalConstraint.prototype['getInfo1NonVirtual'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__getInfo1NonVirtual_p1(this.ptr, arg0.ptr);
}
btUniversalConstraint.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btUniversalConstraint__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btUniversalConstraint.prototype['setLinearLowerLimit'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__setLinearLowerLimit_p1(this.ptr, arg0.ptr);
}
btUniversalConstraint.prototype['getAnchor2'] = function() {
    return wrapPointer(_emscripten_bind_btUniversalConstraint__getAnchor2_p0(this.ptr), Module['btVector3']);
}
btUniversalConstraint.prototype['__destroy__'] = function() {
    _emscripten_bind_btUniversalConstraint____destroy___p0(this.ptr);
}
btUniversalConstraint.prototype['getLinearLowerLimit'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__getLinearLowerLimit_p1(this.ptr, arg0.ptr);
}
btUniversalConstraint.prototype['setDbgDrawSize'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__setDbgDrawSize_p1(this.ptr, arg0);
}
btUniversalConstraint.prototype['setFrames'] = function(arg0, arg1) {
    _emscripten_bind_btUniversalConstraint__setFrames_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btUniversalConstraint.prototype['getUseFrameOffset'] = function() {
    return _emscripten_bind_btUniversalConstraint__getUseFrameOffset_p0(this.ptr);
}
btUniversalConstraint.prototype['setUserConstraintType'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__setUserConstraintType_p1(this.ptr, arg0);
}
btUniversalConstraint.prototype['getCalculatedTransformB'] = function() {
    return wrapPointer(_emscripten_bind_btUniversalConstraint__getCalculatedTransformB_p0(this.ptr), Module['btTransform']);
}
btUniversalConstraint.prototype['calculateTransforms'] = function(arg0, arg1) {
  if (arg0 === undefined)
    _emscripten_bind_btUniversalConstraint__calculateTransforms_p0(this.ptr);
  else 
    _emscripten_bind_btUniversalConstraint__calculateTransforms_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btUniversalConstraint.prototype['internalSetAppliedImpulse'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__internalSetAppliedImpulse_p1(this.ptr, arg0);
}
btUniversalConstraint.prototype['setBreakingImpulseThreshold'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__setBreakingImpulseThreshold_p1(this.ptr, arg0);
}
btUniversalConstraint.prototype['get_limit_motor_info2'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11) {
  if (arg11 === undefined)
    return _emscripten_bind_btUniversalConstraint__get_limit_motor_info2_p11(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7.ptr, arg8, arg9.ptr, arg10);
  else 
    return _emscripten_bind_btUniversalConstraint__get_limit_motor_info2_p12(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7.ptr, arg8, arg9.ptr, arg10, arg11);
}
btUniversalConstraint.prototype['get_m_useSolveConstraintObsolete'] = function() {
    return _emscripten_bind_btUniversalConstraint__get_m_useSolveConstraintObsolete_p0(this.ptr);
}
btUniversalConstraint.prototype['getAppliedImpulse'] = function() {
    return _emscripten_bind_btUniversalConstraint__getAppliedImpulse_p0(this.ptr);
}
btUniversalConstraint.prototype['setLimit'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btUniversalConstraint__setLimit_p3(this.ptr, arg0, arg1, arg2);
}
function btUniversalConstraint(arg0, arg1, arg2, arg3, arg4) {
    this.ptr = _emscripten_bind_btUniversalConstraint__btUniversalConstraint_p5(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr);
  btUniversalConstraint.prototype.__cache__[this.ptr] = this;
  this.__class__ = btUniversalConstraint;
}
btUniversalConstraint.prototype.__cache__ = {};
Module['btUniversalConstraint'] = btUniversalConstraint;
btUniversalConstraint.prototype['getTranslationalLimitMotor'] = function() {
    return wrapPointer(_emscripten_bind_btUniversalConstraint__getTranslationalLimitMotor_p0(this.ptr), Module['btTranslationalLimitMotor']);
}
btUniversalConstraint.prototype['setLowerLimit'] = function(arg0, arg1) {
    _emscripten_bind_btUniversalConstraint__setLowerLimit_p2(this.ptr, arg0, arg1);
}
btUniversalConstraint.prototype['setupSolverConstraint'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btUniversalConstraint__setupSolverConstraint_p4(this.ptr, arg0, arg1, arg2, arg3);
}
btUniversalConstraint.prototype['needsFeedback'] = function() {
    return _emscripten_bind_btUniversalConstraint__needsFeedback_p0(this.ptr);
}
btUniversalConstraint.prototype['getAngle'] = function(arg0) {
    return _emscripten_bind_btUniversalConstraint__getAngle_p1(this.ptr, arg0);
}
btUniversalConstraint.prototype['set_m_useSolveConstraintObsolete'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__set_m_useSolveConstraintObsolete_p1(this.ptr, arg0);
}
btUniversalConstraint.prototype['updateRHS'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__updateRHS_p1(this.ptr, arg0);
}
btUniversalConstraint.prototype['getAngularUpperLimit'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__getAngularUpperLimit_p1(this.ptr, arg0.ptr);
}
btUniversalConstraint.prototype['setAngularLowerLimit'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__setAngularLowerLimit_p1(this.ptr, arg0.ptr);
}
btUniversalConstraint.prototype['getObjectType'] = function() {
    return _emscripten_bind_btUniversalConstraint__getObjectType_p0(this.ptr);
}
btUniversalConstraint.prototype['getUserConstraintType'] = function() {
    return _emscripten_bind_btUniversalConstraint__getUserConstraintType_p0(this.ptr);
}
btUniversalConstraint.prototype['solveConstraintObsolete'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btUniversalConstraint__solveConstraintObsolete_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btUniversalConstraint.prototype['getDbgDrawSize'] = function() {
    return _emscripten_bind_btUniversalConstraint__getDbgDrawSize_p0(this.ptr);
}
btUniversalConstraint.prototype['getAxis1'] = function() {
    return wrapPointer(_emscripten_bind_btUniversalConstraint__getAxis1_p0(this.ptr), Module['btVector3']);
}
btUniversalConstraint.prototype['getUserConstraintPtr'] = function() {
    return _emscripten_bind_btUniversalConstraint__getUserConstraintPtr_p0(this.ptr);
}
btUniversalConstraint.prototype['getAxis2'] = function() {
    return wrapPointer(_emscripten_bind_btUniversalConstraint__getAxis2_p0(this.ptr), Module['btVector3']);
}
btUniversalConstraint.prototype['setLinearUpperLimit'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__setLinearUpperLimit_p1(this.ptr, arg0.ptr);
}
btUniversalConstraint.prototype['setAngularUpperLimit'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__setAngularUpperLimit_p1(this.ptr, arg0.ptr);
}
btUniversalConstraint.prototype['setAxis'] = function(arg0, arg1) {
    _emscripten_bind_btUniversalConstraint__setAxis_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btUniversalConstraint.prototype['setUserConstraintPtr'] = function(arg0) {
    _emscripten_bind_btUniversalConstraint__setUserConstraintPtr_p1(this.ptr, arg0);
}
btUniversalConstraint.prototype['testAngularLimitMotor'] = function(arg0) {
    return _emscripten_bind_btUniversalConstraint__testAngularLimitMotor_p1(this.ptr, arg0);
}
btEmptyShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btEmptyShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btEmptyShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btEmptyShape__setUserPointer_p1(this.ptr, arg0);
}
btEmptyShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btEmptyShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btEmptyShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btEmptyShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btEmptyShape.prototype['processAllTriangles'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btEmptyShape__processAllTriangles_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btEmptyShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btEmptyShape__calculateSerializeBufferSize_p0(this.ptr);
}
btEmptyShape.prototype['getName'] = function() {
    return _emscripten_bind_btEmptyShape__getName_p0(this.ptr);
}
btEmptyShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btEmptyShape__isCompound_p0(this.ptr);
}
btEmptyShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btEmptyShape__isPolyhedral_p0(this.ptr);
}
btEmptyShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btEmptyShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btEmptyShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btEmptyShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btEmptyShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btEmptyShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btEmptyShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btEmptyShape__isConvex_p0(this.ptr);
}
btEmptyShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btEmptyShape__isInfinite_p0(this.ptr);
}
btEmptyShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btEmptyShape__getUserPointer_p0(this.ptr);
}
btEmptyShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btEmptyShape__isNonMoving_p0(this.ptr);
}
btEmptyShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btEmptyShape__getMargin_p0(this.ptr);
}
btEmptyShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btEmptyShape__setMargin_p1(this.ptr, arg0);
}
btEmptyShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btEmptyShape__isConvex2d_p0(this.ptr);
}
btEmptyShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btEmptyShape__isSoftBody_p0(this.ptr);
}
function btEmptyShape() {
    this.ptr = _emscripten_bind_btEmptyShape__btEmptyShape_p0();
  btEmptyShape.prototype.__cache__[this.ptr] = this;
  this.__class__ = btEmptyShape;
}
btEmptyShape.prototype.__cache__ = {};
Module['btEmptyShape'] = btEmptyShape;
btEmptyShape.prototype['__destroy__'] = function() {
    _emscripten_bind_btEmptyShape____destroy___p0(this.ptr);
}
btEmptyShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btEmptyShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btEmptyShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btEmptyShape__isConcave_p0(this.ptr);
}
btEmptyShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btEmptyShape__getAngularMotionDisc_p0(this.ptr);
}
btEmptyShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btEmptyShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btEmptyShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btEmptyShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btEmptyShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btEmptyShape__getShapeType_p0(this.ptr);
}
btRigidBody.prototype['updateDeactivation'] = function(arg0) {
    _emscripten_bind_btRigidBody__updateDeactivation_p1(this.ptr, arg0);
}
btRigidBody.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btRigidBody__setUserPointer_p1(this.ptr, arg0);
}
btRigidBody.prototype['wantsSleeping'] = function() {
    return _emscripten_bind_btRigidBody__wantsSleeping_p0(this.ptr);
}
btRigidBody.prototype['getOrientation'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getOrientation_p0(this.ptr), Module['btQuaternion']);
}
btRigidBody.prototype['setMassProps'] = function(arg0, arg1) {
    _emscripten_bind_btRigidBody__setMassProps_p2(this.ptr, arg0, arg1.ptr);
}
btRigidBody.prototype['setMotionState'] = function(arg0) {
    _emscripten_bind_btRigidBody__setMotionState_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['clearForces'] = function() {
    _emscripten_bind_btRigidBody__clearForces_p0(this.ptr);
}
btRigidBody.prototype['getInterpolationLinearVelocity'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getInterpolationLinearVelocity_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['set_m_frictionSolverType'] = function(arg0) {
    _emscripten_bind_btRigidBody__set_m_frictionSolverType_p1(this.ptr, arg0);
}
btRigidBody.prototype['setCollisionShape'] = function(arg0) {
    _emscripten_bind_btRigidBody__setCollisionShape_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['getHitFraction'] = function() {
    return _emscripten_bind_btRigidBody__getHitFraction_p0(this.ptr);
}
btRigidBody.prototype['getTurnVelocity'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getTurnVelocity_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['internalGetInvMass'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__internalGetInvMass_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['setIslandTag'] = function(arg0) {
    _emscripten_bind_btRigidBody__setIslandTag_p1(this.ptr, arg0);
}
btRigidBody.prototype['getInvMass'] = function() {
    return _emscripten_bind_btRigidBody__getInvMass_p0(this.ptr);
}
btRigidBody.prototype['getCollisionFlags'] = function() {
    return _emscripten_bind_btRigidBody__getCollisionFlags_p0(this.ptr);
}
btRigidBody.prototype['getTotalForce'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getTotalForce_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['getCenterOfMassPosition'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getCenterOfMassPosition_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['getDeactivationTime'] = function() {
    return _emscripten_bind_btRigidBody__getDeactivationTime_p0(this.ptr);
}
btRigidBody.prototype['getRootCollisionShape'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getRootCollisionShape_p0(this.ptr), Module['btCollisionShape']);
}
btRigidBody.prototype['getGravity'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getGravity_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['setCenterOfMassTransform'] = function(arg0) {
    _emscripten_bind_btRigidBody__setCenterOfMassTransform_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['setFlags'] = function(arg0) {
    _emscripten_bind_btRigidBody__setFlags_p1(this.ptr, arg0);
}
btRigidBody.prototype['isActive'] = function() {
    return _emscripten_bind_btRigidBody__isActive_p0(this.ptr);
}
btRigidBody.prototype['getActivationState'] = function() {
    return _emscripten_bind_btRigidBody__getActivationState_p0(this.ptr);
}
btRigidBody.prototype['getTotalTorque'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getTotalTorque_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['getInvInertiaTensorWorld'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getInvInertiaTensorWorld_p0(this.ptr), Module['btMatrix3x3']);
}
btRigidBody.prototype['computeImpulseDenominator'] = function(arg0, arg1) {
    return _emscripten_bind_btRigidBody__computeImpulseDenominator_p2(this.ptr, arg0.ptr, arg1.ptr);
}
function btRigidBody(arg0, arg1, arg2, arg3) {
  if (arg1 === undefined)
    this.ptr = _emscripten_bind_btRigidBody__btRigidBody_p1(arg0.ptr);
  else   if (arg3 === undefined)
    this.ptr = _emscripten_bind_btRigidBody__btRigidBody_p3(arg0, arg1.ptr, arg2.ptr);
  else 
    this.ptr = _emscripten_bind_btRigidBody__btRigidBody_p4(arg0, arg1.ptr, arg2.ptr, arg3.ptr);
  btRigidBody.prototype.__cache__[this.ptr] = this;
  this.__class__ = btRigidBody;
}
btRigidBody.prototype.__cache__ = {};
Module['btRigidBody'] = btRigidBody;
btRigidBody.prototype['getLinearSleepingThreshold'] = function() {
    return _emscripten_bind_btRigidBody__getLinearSleepingThreshold_p0(this.ptr);
}
btRigidBody.prototype['internalGetExtensionPointer'] = function() {
    return _emscripten_bind_btRigidBody__internalGetExtensionPointer_p0(this.ptr);
}
btRigidBody.prototype['applyForce'] = function(arg0, arg1) {
    _emscripten_bind_btRigidBody__applyForce_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btRigidBody.prototype['internalGetVelocityInLocalPointObsolete'] = function(arg0, arg1) {
    _emscripten_bind_btRigidBody__internalGetVelocityInLocalPointObsolete_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btRigidBody.prototype['mergesSimulationIslands'] = function() {
    return _emscripten_bind_btRigidBody__mergesSimulationIslands_p0(this.ptr);
}
btRigidBody.prototype['getFriction'] = function() {
    return _emscripten_bind_btRigidBody__getFriction_p0(this.ptr);
}
btRigidBody.prototype['setContactProcessingThreshold'] = function(arg0) {
    _emscripten_bind_btRigidBody__setContactProcessingThreshold_p1(this.ptr, arg0);
}
btRigidBody.prototype['internalGetDeltaAngularVelocity'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__internalGetDeltaAngularVelocity_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['applyCentralForce'] = function(arg0) {
    _emscripten_bind_btRigidBody__applyCentralForce_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['applyImpulse'] = function(arg0, arg1) {
    _emscripten_bind_btRigidBody__applyImpulse_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btRigidBody.prototype['applyTorque'] = function(arg0) {
    _emscripten_bind_btRigidBody__applyTorque_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['getIslandTag'] = function() {
    return _emscripten_bind_btRigidBody__getIslandTag_p0(this.ptr);
}
btRigidBody.prototype['internalGetAngularFactor'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__internalGetAngularFactor_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['predictIntegratedTransform'] = function(arg0, arg1) {
    _emscripten_bind_btRigidBody__predictIntegratedTransform_p2(this.ptr, arg0, arg1.ptr);
}
btRigidBody.prototype['getInterpolationAngularVelocity'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getInterpolationAngularVelocity_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['forceActivationState'] = function(arg0) {
    _emscripten_bind_btRigidBody__forceActivationState_p1(this.ptr, arg0);
}
btRigidBody.prototype['getAngularVelocity'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getAngularVelocity_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['getLinearVelocity'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getLinearVelocity_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['checkCollideWithOverride'] = function(arg0) {
    return _emscripten_bind_btRigidBody__checkCollideWithOverride_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['getBroadphaseHandle'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getBroadphaseHandle_p0(this.ptr), Module['btBroadphaseProxy']);
}
btRigidBody.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btRigidBody__getUserPointer_p0(this.ptr);
}
btRigidBody.prototype['setCcdSweptSphereRadius'] = function(arg0) {
    _emscripten_bind_btRigidBody__setCcdSweptSphereRadius_p1(this.ptr, arg0);
}
btRigidBody.prototype['setAngularVelocity'] = function(arg0) {
    _emscripten_bind_btRigidBody__setAngularVelocity_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['addConstraintRef'] = function(arg0) {
    _emscripten_bind_btRigidBody__addConstraintRef_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['integrateVelocities'] = function(arg0) {
    _emscripten_bind_btRigidBody__integrateVelocities_p1(this.ptr, arg0);
}
btRigidBody.prototype['isInWorld'] = function() {
    return _emscripten_bind_btRigidBody__isInWorld_p0(this.ptr);
}
btRigidBody.prototype['internalSetTemporaryCollisionShape'] = function(arg0) {
    _emscripten_bind_btRigidBody__internalSetTemporaryCollisionShape_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['computeAngularImpulseDenominator'] = function(arg0) {
    return _emscripten_bind_btRigidBody__computeAngularImpulseDenominator_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['getAngularDamping'] = function() {
    return _emscripten_bind_btRigidBody__getAngularDamping_p0(this.ptr);
}
btRigidBody.prototype['setNewBroadphaseProxy'] = function(arg0) {
    _emscripten_bind_btRigidBody__setNewBroadphaseProxy_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['removeConstraintRef'] = function(arg0) {
    _emscripten_bind_btRigidBody__removeConstraintRef_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['getAngularFactor'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getAngularFactor_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['isStaticOrKinematicObject'] = function() {
    return _emscripten_bind_btRigidBody__isStaticOrKinematicObject_p0(this.ptr);
}
btRigidBody.prototype['setRestitution'] = function(arg0) {
    _emscripten_bind_btRigidBody__setRestitution_p1(this.ptr, arg0);
}
btRigidBody.prototype['isKinematicObject'] = function() {
    return _emscripten_bind_btRigidBody__isKinematicObject_p0(this.ptr);
}
btRigidBody.prototype['proceedToTransform'] = function(arg0) {
    _emscripten_bind_btRigidBody__proceedToTransform_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['internalWritebackVelocity'] = function(arg0) {
  if (arg0 === undefined)
    _emscripten_bind_btRigidBody__internalWritebackVelocity_p0(this.ptr);
  else 
    _emscripten_bind_btRigidBody__internalWritebackVelocity_p1(this.ptr, arg0);
}
btRigidBody.prototype['setInterpolationLinearVelocity'] = function(arg0) {
    _emscripten_bind_btRigidBody__setInterpolationLinearVelocity_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['applyGravity'] = function() {
    _emscripten_bind_btRigidBody__applyGravity_p0(this.ptr);
}
btRigidBody.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btRigidBody__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btRigidBody.prototype['internalApplyImpulse'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btRigidBody__internalApplyImpulse_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btRigidBody.prototype['internalSetExtensionPointer'] = function(arg0) {
    _emscripten_bind_btRigidBody__internalSetExtensionPointer_p1(this.ptr, arg0);
}
btRigidBody.prototype['activate'] = function(arg0) {
  if (arg0 === undefined)
    _emscripten_bind_btRigidBody__activate_p0(this.ptr);
  else 
    _emscripten_bind_btRigidBody__activate_p1(this.ptr, arg0);
}
btRigidBody.prototype['getMotionState'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getMotionState_p0(this.ptr), Module['btMotionState']);
}
btRigidBody.prototype['setCompanionId'] = function(arg0) {
    _emscripten_bind_btRigidBody__setCompanionId_p1(this.ptr, arg0);
}
btRigidBody.prototype['internalApplyPushImpulse'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btRigidBody__internalApplyPushImpulse_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btRigidBody.prototype['setCcdMotionThreshold'] = function(arg0) {
    _emscripten_bind_btRigidBody__setCcdMotionThreshold_p1(this.ptr, arg0);
}
btRigidBody.prototype['getVelocityInLocalPoint'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btRigidBody__getVelocityInLocalPoint_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btRigidBody.prototype['getCcdMotionThreshold'] = function() {
    return _emscripten_bind_btRigidBody__getCcdMotionThreshold_p0(this.ptr);
}
btRigidBody.prototype['getLinearFactor'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getLinearFactor_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['getAnisotropicFriction'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getAnisotropicFriction_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['getAngularSleepingThreshold'] = function() {
    return _emscripten_bind_btRigidBody__getAngularSleepingThreshold_p0(this.ptr);
}
btRigidBody.prototype['getInterpolationWorldTransform'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getInterpolationWorldTransform_p0(this.ptr), Module['btTransform']);
}
btRigidBody.prototype['getAabb'] = function(arg0, arg1) {
    _emscripten_bind_btRigidBody__getAabb_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btRigidBody.prototype['serializeSingleObject'] = function(arg0) {
    _emscripten_bind_btRigidBody__serializeSingleObject_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['translate'] = function(arg0) {
    _emscripten_bind_btRigidBody__translate_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['getWorldTransform'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getWorldTransform_p0(this.ptr), Module['btTransform']);
}
btRigidBody.prototype['getBroadphaseProxy'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getBroadphaseProxy_p0(this.ptr), Module['btBroadphaseProxy']);
}
btRigidBody.prototype['getCollisionShape'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getCollisionShape_p0(this.ptr), Module['btCollisionShape']);
}
btRigidBody.prototype['setAnisotropicFriction'] = function(arg0) {
    _emscripten_bind_btRigidBody__setAnisotropicFriction_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['get_m_contactSolverType'] = function() {
    return _emscripten_bind_btRigidBody__get_m_contactSolverType_p0(this.ptr);
}
btRigidBody.prototype['internalGetDeltaLinearVelocity'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__internalGetDeltaLinearVelocity_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['hasContactResponse'] = function() {
    return _emscripten_bind_btRigidBody__hasContactResponse_p0(this.ptr);
}
btRigidBody.prototype['upcast'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btRigidBody__upcast_p1(arg0.ptr), Module['btRigidBody']);
}
btRigidBody.prototype['getCompanionId'] = function() {
    return _emscripten_bind_btRigidBody__getCompanionId_p0(this.ptr);
}
btRigidBody.prototype['saveKinematicState'] = function(arg0) {
    _emscripten_bind_btRigidBody__saveKinematicState_p1(this.ptr, arg0);
}
btRigidBody.prototype['setWorldTransform'] = function(arg0) {
    _emscripten_bind_btRigidBody__setWorldTransform_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['setActivationState'] = function(arg0) {
    _emscripten_bind_btRigidBody__setActivationState_p1(this.ptr, arg0);
}
btRigidBody.prototype['getDeltaAngularVelocity'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getDeltaAngularVelocity_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['getCcdSweptSphereRadius'] = function() {
    return _emscripten_bind_btRigidBody__getCcdSweptSphereRadius_p0(this.ptr);
}
btRigidBody.prototype['getConstraintRef'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btRigidBody__getConstraintRef_p1(this.ptr, arg0), Module['btTypedConstraint']);
}
btRigidBody.prototype['setDeactivationTime'] = function(arg0) {
    _emscripten_bind_btRigidBody__setDeactivationTime_p1(this.ptr, arg0);
}
btRigidBody.prototype['getCenterOfMassTransform'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getCenterOfMassTransform_p0(this.ptr), Module['btTransform']);
}
btRigidBody.prototype['hasAnisotropicFriction'] = function() {
    return _emscripten_bind_btRigidBody__hasAnisotropicFriction_p0(this.ptr);
}
btRigidBody.prototype['setBroadphaseHandle'] = function(arg0) {
    _emscripten_bind_btRigidBody__setBroadphaseHandle_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['getFlags'] = function() {
    return _emscripten_bind_btRigidBody__getFlags_p0(this.ptr);
}
btRigidBody.prototype['setGravity'] = function(arg0) {
    _emscripten_bind_btRigidBody__setGravity_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['getCcdSquareMotionThreshold'] = function() {
    return _emscripten_bind_btRigidBody__getCcdSquareMotionThreshold_p0(this.ptr);
}
btRigidBody.prototype['setAngularFactor'] = function(arg0) {
    _emscripten_bind_btRigidBody__setAngularFactor_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['getPushVelocity'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getPushVelocity_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['updateInertiaTensor'] = function() {
    _emscripten_bind_btRigidBody__updateInertiaTensor_p0(this.ptr);
}
btRigidBody.prototype['setInterpolationAngularVelocity'] = function(arg0) {
    _emscripten_bind_btRigidBody__setInterpolationAngularVelocity_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['setFriction'] = function(arg0) {
    _emscripten_bind_btRigidBody__setFriction_p1(this.ptr, arg0);
}
btRigidBody.prototype['setDamping'] = function(arg0, arg1) {
    _emscripten_bind_btRigidBody__setDamping_p2(this.ptr, arg0, arg1);
}
btRigidBody.prototype['getInternalType'] = function() {
    return _emscripten_bind_btRigidBody__getInternalType_p0(this.ptr);
}
btRigidBody.prototype['set_m_contactSolverType'] = function(arg0) {
    _emscripten_bind_btRigidBody__set_m_contactSolverType_p1(this.ptr, arg0);
}
btRigidBody.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btRigidBody__calculateSerializeBufferSize_p0(this.ptr);
}
btRigidBody.prototype['checkCollideWith'] = function(arg0) {
    return _emscripten_bind_btRigidBody__checkCollideWith_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['getInvInertiaDiagLocal'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getInvInertiaDiagLocal_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['applyTorqueImpulse'] = function(arg0) {
    _emscripten_bind_btRigidBody__applyTorqueImpulse_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['internalGetPushVelocity'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__internalGetPushVelocity_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['setLinearFactor'] = function(arg0) {
    _emscripten_bind_btRigidBody__setLinearFactor_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['setLinearVelocity'] = function(arg0) {
    _emscripten_bind_btRigidBody__setLinearVelocity_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['isStaticObject'] = function() {
    return _emscripten_bind_btRigidBody__isStaticObject_p0(this.ptr);
}
btRigidBody.prototype['applyCentralImpulse'] = function(arg0) {
    _emscripten_bind_btRigidBody__applyCentralImpulse_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['setCollisionFlags'] = function(arg0) {
    _emscripten_bind_btRigidBody__setCollisionFlags_p1(this.ptr, arg0);
}
btRigidBody.prototype['getDeltaLinearVelocity'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__getDeltaLinearVelocity_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['setInvInertiaDiagLocal'] = function(arg0) {
    _emscripten_bind_btRigidBody__setInvInertiaDiagLocal_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['setSleepingThresholds'] = function(arg0, arg1) {
    _emscripten_bind_btRigidBody__setSleepingThresholds_p2(this.ptr, arg0, arg1);
}
btRigidBody.prototype['get_m_frictionSolverType'] = function() {
    return _emscripten_bind_btRigidBody__get_m_frictionSolverType_p0(this.ptr);
}
btRigidBody.prototype['__destroy__'] = function() {
    _emscripten_bind_btRigidBody____destroy___p0(this.ptr);
}
btRigidBody.prototype['internalGetAngularVelocity'] = function(arg0) {
    _emscripten_bind_btRigidBody__internalGetAngularVelocity_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['getNumConstraintRefs'] = function() {
    return _emscripten_bind_btRigidBody__getNumConstraintRefs_p0(this.ptr);
}
btRigidBody.prototype['getRestitution'] = function() {
    return _emscripten_bind_btRigidBody__getRestitution_p0(this.ptr);
}
btRigidBody.prototype['getContactProcessingThreshold'] = function() {
    return _emscripten_bind_btRigidBody__getContactProcessingThreshold_p0(this.ptr);
}
btRigidBody.prototype['internalGetTurnVelocity'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__internalGetTurnVelocity_p0(this.ptr), Module['btVector3']);
}
btRigidBody.prototype['setInterpolationWorldTransform'] = function(arg0) {
    _emscripten_bind_btRigidBody__setInterpolationWorldTransform_p1(this.ptr, arg0.ptr);
}
btRigidBody.prototype['setHitFraction'] = function(arg0) {
    _emscripten_bind_btRigidBody__setHitFraction_p1(this.ptr, arg0);
}
btRigidBody.prototype['applyDamping'] = function(arg0) {
    _emscripten_bind_btRigidBody__applyDamping_p1(this.ptr, arg0);
}
btRigidBody.prototype['getLinearDamping'] = function() {
    return _emscripten_bind_btRigidBody__getLinearDamping_p0(this.ptr);
}
btOptimizedBvh.prototype['buildInternal'] = function() {
    _emscripten_bind_btOptimizedBvh__buildInternal_p0(this.ptr);
}
btOptimizedBvh.prototype['serialize'] = function(arg0, arg1, arg2) {
  if (arg2 === undefined)
    return _emscripten_bind_btOptimizedBvh__serialize_p2(this.ptr, arg0, arg1.ptr);
  else 
    return _emscripten_bind_btOptimizedBvh__serialize_p3(this.ptr, arg0, arg1, arg2);
}
btOptimizedBvh.prototype['getLeafNodeArray'] = function() {
    return _emscripten_bind_btOptimizedBvh__getLeafNodeArray_p0(this.ptr);
}
btOptimizedBvh.prototype['setQuantizationValues'] = function(arg0, arg1, arg2) {
  if (arg2 === undefined)
    _emscripten_bind_btOptimizedBvh__setQuantizationValues_p2(this.ptr, arg0.ptr, arg1.ptr);
  else 
    _emscripten_bind_btOptimizedBvh__setQuantizationValues_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btOptimizedBvh.prototype['quantize'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btOptimizedBvh__quantize_p3(this.ptr, arg0, arg1.ptr, arg2);
}
btOptimizedBvh.prototype['isQuantized'] = function() {
    return _emscripten_bind_btOptimizedBvh__isQuantized_p0(this.ptr);
}
btOptimizedBvh.prototype['getAlignmentSerializationPadding'] = function() {
    return _emscripten_bind_btOptimizedBvh__getAlignmentSerializationPadding_p0();
}
btOptimizedBvh.prototype['updateBvhNodes'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btOptimizedBvh__updateBvhNodes_p4(this.ptr, arg0.ptr, arg1, arg2, arg3);
}
btOptimizedBvh.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btOptimizedBvh__calculateSerializeBufferSize_p0(this.ptr);
}
btOptimizedBvh.prototype['getQuantizedNodeArray'] = function() {
    return _emscripten_bind_btOptimizedBvh__getQuantizedNodeArray_p0(this.ptr);
}
btOptimizedBvh.prototype['reportAabbOverlappingNodex'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btOptimizedBvh__reportAabbOverlappingNodex_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btOptimizedBvh.prototype['reportRayOverlappingNodex'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btOptimizedBvh__reportRayOverlappingNodex_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btOptimizedBvh.prototype['build'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btOptimizedBvh__build_p4(this.ptr, arg0.ptr, arg1, arg2.ptr, arg3.ptr);
}
btOptimizedBvh.prototype['refitPartial'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btOptimizedBvh__refitPartial_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btOptimizedBvh.prototype['deSerializeInPlace'] = function(arg0, arg1, arg2) {
    return wrapPointer(_emscripten_bind_btOptimizedBvh__deSerializeInPlace_p3(arg0, arg1, arg2), Module['btOptimizedBvh']);
}
btOptimizedBvh.prototype['quantizeWithClamp'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btOptimizedBvh__quantizeWithClamp_p3(this.ptr, arg0, arg1.ptr, arg2);
}
btOptimizedBvh.prototype['refit'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btOptimizedBvh__refit_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btOptimizedBvh.prototype['deSerializeDouble'] = function(arg0) {
    _emscripten_bind_btOptimizedBvh__deSerializeDouble_p1(this.ptr, arg0.ptr);
}
btOptimizedBvh.prototype['calculateSerializeBufferSizeNew'] = function() {
    return _emscripten_bind_btOptimizedBvh__calculateSerializeBufferSizeNew_p0(this.ptr);
}
btOptimizedBvh.prototype['__destroy__'] = function() {
    _emscripten_bind_btOptimizedBvh____destroy___p0(this.ptr);
}
btOptimizedBvh.prototype['deSerializeFloat'] = function(arg0) {
    _emscripten_bind_btOptimizedBvh__deSerializeFloat_p1(this.ptr, arg0.ptr);
}
btOptimizedBvh.prototype['serializeInPlace'] = function(arg0, arg1, arg2) {
    return _emscripten_bind_btOptimizedBvh__serializeInPlace_p3(this.ptr, arg0, arg1, arg2);
}
btOptimizedBvh.prototype['getSubtreeInfoArray'] = function() {
    return _emscripten_bind_btOptimizedBvh__getSubtreeInfoArray_p0(this.ptr);
}
btOptimizedBvh.prototype['unQuantize'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btOptimizedBvh__unQuantize_p1(this.ptr, arg0), Module['btVector3']);
}
btOptimizedBvh.prototype['reportBoxCastOverlappingNodex'] = function(arg0, arg1, arg2, arg3, arg4) {
    _emscripten_bind_btOptimizedBvh__reportBoxCastOverlappingNodex_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr);
}
function btOptimizedBvh() {
    this.ptr = _emscripten_bind_btOptimizedBvh__btOptimizedBvh_p0();
  btOptimizedBvh.prototype.__cache__[this.ptr] = this;
  this.__class__ = btOptimizedBvh;
}
btOptimizedBvh.prototype.__cache__ = {};
Module['btOptimizedBvh'] = btOptimizedBvh;
function btTypedConstraint(){ throw "btTypedConstraint is abstract!" }
btTypedConstraint.prototype.__cache__ = {};
Module['btTypedConstraint'] = btTypedConstraint;
btTypedConstraint.prototype['getRigidBodyB'] = function() {
    return wrapPointer(_emscripten_bind_btTypedConstraint__getRigidBodyB_p0(this.ptr), Module['btRigidBody']);
}
btTypedConstraint.prototype['buildJacobian'] = function() {
    _emscripten_bind_btTypedConstraint__buildJacobian_p0(this.ptr);
}
btTypedConstraint.prototype['getRigidBodyA'] = function() {
    return wrapPointer(_emscripten_bind_btTypedConstraint__getRigidBodyA_p0(this.ptr), Module['btRigidBody']);
}
btTypedConstraint.prototype['set_m_objectType'] = function(arg0) {
    _emscripten_bind_btTypedConstraint__set_m_objectType_p1(this.ptr, arg0);
}
btTypedConstraint.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btTypedConstraint__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btTypedConstraint.prototype['enableFeedback'] = function(arg0) {
    _emscripten_bind_btTypedConstraint__enableFeedback_p1(this.ptr, arg0);
}
btTypedConstraint.prototype['getUserConstraintId'] = function() {
    return _emscripten_bind_btTypedConstraint__getUserConstraintId_p0(this.ptr);
}
btTypedConstraint.prototype['get_m_objectType'] = function() {
    return _emscripten_bind_btTypedConstraint__get_m_objectType_p0(this.ptr);
}
btTypedConstraint.prototype['setParam'] = function(arg0, arg1, arg2) {
  if (arg2 === undefined)
    _emscripten_bind_btTypedConstraint__setParam_p2(this.ptr, arg0, arg1);
  else 
    _emscripten_bind_btTypedConstraint__setParam_p3(this.ptr, arg0, arg1, arg2);
}
btTypedConstraint.prototype['getParam'] = function(arg0, arg1) {
  if (arg1 === undefined)
    return _emscripten_bind_btTypedConstraint__getParam_p1(this.ptr, arg0);
  else 
    return _emscripten_bind_btTypedConstraint__getParam_p2(this.ptr, arg0, arg1);
}
btTypedConstraint.prototype['getInfo1'] = function(arg0) {
    _emscripten_bind_btTypedConstraint__getInfo1_p1(this.ptr, arg0.ptr);
}
btTypedConstraint.prototype['getInfo2'] = function(arg0) {
    _emscripten_bind_btTypedConstraint__getInfo2_p1(this.ptr, arg0.ptr);
}
btTypedConstraint.prototype['setBreakingImpulseThreshold'] = function(arg0) {
    _emscripten_bind_btTypedConstraint__setBreakingImpulseThreshold_p1(this.ptr, arg0);
}
btTypedConstraint.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btTypedConstraint__calculateSerializeBufferSize_p0(this.ptr);
}
btTypedConstraint.prototype['isEnabled'] = function() {
    return _emscripten_bind_btTypedConstraint__isEnabled_p0(this.ptr);
}
btTypedConstraint.prototype['setUserConstraintId'] = function(arg0) {
    _emscripten_bind_btTypedConstraint__setUserConstraintId_p1(this.ptr, arg0);
}
btTypedConstraint.prototype['getConstraintType'] = function() {
    return _emscripten_bind_btTypedConstraint__getConstraintType_p0(this.ptr);
}
btTypedConstraint.prototype['getDbgDrawSize'] = function() {
    return _emscripten_bind_btTypedConstraint__getDbgDrawSize_p0(this.ptr);
}
btTypedConstraint.prototype['internalSetAppliedImpulse'] = function(arg0) {
    _emscripten_bind_btTypedConstraint__internalSetAppliedImpulse_p1(this.ptr, arg0);
}
btTypedConstraint.prototype['needsFeedback'] = function() {
    return _emscripten_bind_btTypedConstraint__needsFeedback_p0(this.ptr);
}
btTypedConstraint.prototype['getObjectType'] = function() {
    return _emscripten_bind_btTypedConstraint__getObjectType_p0(this.ptr);
}
btTypedConstraint.prototype['getUserConstraintPtr'] = function() {
    return _emscripten_bind_btTypedConstraint__getUserConstraintPtr_p0(this.ptr);
}
btTypedConstraint.prototype['setEnabled'] = function(arg0) {
    _emscripten_bind_btTypedConstraint__setEnabled_p1(this.ptr, arg0);
}
btTypedConstraint.prototype['getUid'] = function() {
    return _emscripten_bind_btTypedConstraint__getUid_p0(this.ptr);
}
btTypedConstraint.prototype['setDbgDrawSize'] = function(arg0) {
    _emscripten_bind_btTypedConstraint__setDbgDrawSize_p1(this.ptr, arg0);
}
btTypedConstraint.prototype['setUserConstraintType'] = function(arg0) {
    _emscripten_bind_btTypedConstraint__setUserConstraintType_p1(this.ptr, arg0);
}
btTypedConstraint.prototype['internalGetAppliedImpulse'] = function() {
    return _emscripten_bind_btTypedConstraint__internalGetAppliedImpulse_p0(this.ptr);
}
btTypedConstraint.prototype['__destroy__'] = function() {
    _emscripten_bind_btTypedConstraint____destroy___p0(this.ptr);
}
btTypedConstraint.prototype['setupSolverConstraint'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btTypedConstraint__setupSolverConstraint_p4(this.ptr, arg0, arg1, arg2, arg3);
}
btTypedConstraint.prototype['getBreakingImpulseThreshold'] = function() {
    return _emscripten_bind_btTypedConstraint__getBreakingImpulseThreshold_p0(this.ptr);
}
btTypedConstraint.prototype['getUserConstraintType'] = function() {
    return _emscripten_bind_btTypedConstraint__getUserConstraintType_p0(this.ptr);
}
btTypedConstraint.prototype['solveConstraintObsolete'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btTypedConstraint__solveConstraintObsolete_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btTypedConstraint.prototype['getAppliedImpulse'] = function() {
    return _emscripten_bind_btTypedConstraint__getAppliedImpulse_p0(this.ptr);
}
btTypedConstraint.prototype['setUserConstraintPtr'] = function(arg0) {
    _emscripten_bind_btTypedConstraint__setUserConstraintPtr_p1(this.ptr, arg0);
}
function btPolyhedralConvexShape(){ throw "btPolyhedralConvexShape is abstract!" }
btPolyhedralConvexShape.prototype.__cache__ = {};
Module['btPolyhedralConvexShape'] = btPolyhedralConvexShape;
btPolyhedralConvexShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btPolyhedralConvexShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btPolyhedralConvexShape.prototype['getNumPlanes'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__getNumPlanes_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btPolyhedralConvexShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btPolyhedralConvexShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btPolyhedralConvexShape__setUserPointer_p1(this.ptr, arg0);
}
btPolyhedralConvexShape.prototype['isInside'] = function(arg0, arg1) {
    return _emscripten_bind_btPolyhedralConvexShape__isInside_p2(this.ptr, arg0.ptr, arg1);
}
btPolyhedralConvexShape.prototype['getNumVertices'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__getNumVertices_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btPolyhedralConvexShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btPolyhedralConvexShape.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__isPolyhedral_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['getVertex'] = function(arg0, arg1) {
    _emscripten_bind_btPolyhedralConvexShape__getVertex_p2(this.ptr, arg0, arg1.ptr);
}
btPolyhedralConvexShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btPolyhedralConvexShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btPolyhedralConvexShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btPolyhedralConvexShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btPolyhedralConvexShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__calculateSerializeBufferSize_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['getNumEdges'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__getNumEdges_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['getName'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__getName_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['getEdge'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btPolyhedralConvexShape__getEdge_p3(this.ptr, arg0, arg1.ptr, arg2.ptr);
}
btPolyhedralConvexShape.prototype['getLocalScalingNV'] = function() {
    return wrapPointer(_emscripten_bind_btPolyhedralConvexShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']);
}
btPolyhedralConvexShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btPolyhedralConvexShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btPolyhedralConvexShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btPolyhedralConvexShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btPolyhedralConvexShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btPolyhedralConvexShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btPolyhedralConvexShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btPolyhedralConvexShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btPolyhedralConvexShape.prototype['getMarginNV'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__getMarginNV_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__isConvex2d_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btPolyhedralConvexShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btPolyhedralConvexShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__isConvex_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__isInfinite_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btPolyhedralConvexShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btPolyhedralConvexShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__getUserPointer_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__isNonMoving_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__getMargin_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btPolyhedralConvexShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btPolyhedralConvexShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btPolyhedralConvexShape__setMargin_p1(this.ptr, arg0);
}
btPolyhedralConvexShape.prototype['initializePolyhedralFeatures'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__initializePolyhedralFeatures_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['setImplicitShapeDimensions'] = function(arg0) {
    _emscripten_bind_btPolyhedralConvexShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr);
}
btPolyhedralConvexShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__isSoftBody_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__getMarginNonVirtual_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btPolyhedralConvexShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btPolyhedralConvexShape.prototype['getImplicitShapeDimensions'] = function() {
    return wrapPointer(_emscripten_bind_btPolyhedralConvexShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']);
}
btPolyhedralConvexShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btPolyhedralConvexShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btPolyhedralConvexShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__getAngularMotionDisc_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btPolyhedralConvexShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btPolyhedralConvexShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btPolyhedralConvexShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btPolyhedralConvexShape.prototype['getPlane'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btPolyhedralConvexShape__getPlane_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btPolyhedralConvexShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__isCompound_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['getConvexPolyhedron'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__getConvexPolyhedron_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btPolyhedralConvexShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btPolyhedralConvexShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__getShapeType_p0(this.ptr);
}
btPolyhedralConvexShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btPolyhedralConvexShape__isConcave_p0(this.ptr);
}
function btIDebugDraw(){ throw "btIDebugDraw is abstract!" }
btIDebugDraw.prototype.__cache__ = {};
Module['btIDebugDraw'] = btIDebugDraw;
btIDebugDraw.prototype['draw3dText'] = function(arg0, arg1) {
var stack = Runtime.stackSave();
try {
    _emscripten_bind_btIDebugDraw__draw3dText_p2(this.ptr, arg0.ptr, ensureString(arg1));
} finally { Runtime.stackRestore(stack) }
}
btIDebugDraw.prototype['drawTriangle'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
  if (arg5 === undefined)
    _emscripten_bind_btIDebugDraw__drawTriangle_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4);
  else 
    _emscripten_bind_btIDebugDraw__drawTriangle_p8(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7);
}
btIDebugDraw.prototype['drawCone'] = function(arg0, arg1, arg2, arg3, arg4) {
    _emscripten_bind_btIDebugDraw__drawCone_p5(this.ptr, arg0, arg1, arg2, arg3.ptr, arg4.ptr);
}
btIDebugDraw.prototype['drawContactPoint'] = function(arg0, arg1, arg2, arg3, arg4) {
    _emscripten_bind_btIDebugDraw__drawContactPoint_p5(this.ptr, arg0.ptr, arg1.ptr, arg2, arg3, arg4.ptr);
}
btIDebugDraw.prototype['drawArc'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {
  if (arg9 === undefined)
    _emscripten_bind_btIDebugDraw__drawArc_p9(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4, arg5, arg6, arg7.ptr, arg8);
  else 
    _emscripten_bind_btIDebugDraw__drawArc_p10(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4, arg5, arg6, arg7.ptr, arg8, arg9);
}
btIDebugDraw.prototype['drawLine'] = function(arg0, arg1, arg2, arg3) {
  if (arg3 === undefined)
    _emscripten_bind_btIDebugDraw__drawLine_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
  else 
    _emscripten_bind_btIDebugDraw__drawLine_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
}
btIDebugDraw.prototype['reportErrorWarning'] = function(arg0) {
var stack = Runtime.stackSave();
try {
    _emscripten_bind_btIDebugDraw__reportErrorWarning_p1(this.ptr, ensureString(arg0));
} finally { Runtime.stackRestore(stack) }
}
btIDebugDraw.prototype['getDebugMode'] = function() {
    return _emscripten_bind_btIDebugDraw__getDebugMode_p0(this.ptr);
}
btIDebugDraw.prototype['drawCylinder'] = function(arg0, arg1, arg2, arg3, arg4) {
    _emscripten_bind_btIDebugDraw__drawCylinder_p5(this.ptr, arg0, arg1, arg2, arg3.ptr, arg4.ptr);
}
btIDebugDraw.prototype['drawTransform'] = function(arg0, arg1) {
    _emscripten_bind_btIDebugDraw__drawTransform_p2(this.ptr, arg0.ptr, arg1);
}
btIDebugDraw.prototype['drawAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btIDebugDraw__drawAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btIDebugDraw.prototype['drawPlane'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btIDebugDraw__drawPlane_p4(this.ptr, arg0.ptr, arg1, arg2.ptr, arg3.ptr);
}
btIDebugDraw.prototype['drawCapsule'] = function(arg0, arg1, arg2, arg3, arg4) {
    _emscripten_bind_btIDebugDraw__drawCapsule_p5(this.ptr, arg0, arg1, arg2, arg3.ptr, arg4.ptr);
}
btIDebugDraw.prototype['drawBox'] = function(arg0, arg1, arg2, arg3) {
  if (arg3 === undefined)
    _emscripten_bind_btIDebugDraw__drawBox_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
  else 
    _emscripten_bind_btIDebugDraw__drawBox_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
}
btIDebugDraw.prototype['setDebugMode'] = function(arg0) {
    _emscripten_bind_btIDebugDraw__setDebugMode_p1(this.ptr, arg0);
}
btIDebugDraw.prototype['drawSpherePatch'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {
  if (arg9 === undefined)
    _emscripten_bind_btIDebugDraw__drawSpherePatch_p9(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4, arg5, arg6, arg7, arg8.ptr);
  else 
    _emscripten_bind_btIDebugDraw__drawSpherePatch_p10(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4, arg5, arg6, arg7, arg8.ptr, arg9);
}
btIDebugDraw.prototype['drawSphere'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btIDebugDraw__drawSphere_p3(this.ptr, arg0, arg1.ptr, arg2.ptr);
}
btDbvtBroadphase.prototype['set_m_pid'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__set_m_pid_p1(this.ptr, arg0);
}
function btDbvtBroadphase(arg0) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btDbvtBroadphase__btDbvtBroadphase_p0();
  else 
    this.ptr = _emscripten_bind_btDbvtBroadphase__btDbvtBroadphase_p1(arg0.ptr);
  btDbvtBroadphase.prototype.__cache__[this.ptr] = this;
  this.__class__ = btDbvtBroadphase;
}
btDbvtBroadphase.prototype.__cache__ = {};
Module['btDbvtBroadphase'] = btDbvtBroadphase;
btDbvtBroadphase.prototype['get_m_deferedcollide'] = function() {
    return _emscripten_bind_btDbvtBroadphase__get_m_deferedcollide_p0(this.ptr);
}
btDbvtBroadphase.prototype['performDeferredRemoval'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__performDeferredRemoval_p1(this.ptr, arg0.ptr);
}
btDbvtBroadphase.prototype['set_m_releasepaircache'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__set_m_releasepaircache_p1(this.ptr, arg0);
}
btDbvtBroadphase.prototype['get_m_dupdates'] = function() {
    return _emscripten_bind_btDbvtBroadphase__get_m_dupdates_p0(this.ptr);
}
btDbvtBroadphase.prototype['set_m_paircache'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__set_m_paircache_p1(this.ptr, arg0.ptr);
}
btDbvtBroadphase.prototype['calculateOverlappingPairs'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__calculateOverlappingPairs_p1(this.ptr, arg0.ptr);
}
btDbvtBroadphase.prototype['get_m_releasepaircache'] = function() {
    return _emscripten_bind_btDbvtBroadphase__get_m_releasepaircache_p0(this.ptr);
}
btDbvtBroadphase.prototype['set_m_fupdates'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__set_m_fupdates_p1(this.ptr, arg0);
}
btDbvtBroadphase.prototype['set_m_deferedcollide'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__set_m_deferedcollide_p1(this.ptr, arg0);
}
btDbvtBroadphase.prototype['set_m_cid'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__set_m_cid_p1(this.ptr, arg0);
}
btDbvtBroadphase.prototype['rayTest'] = function(arg0, arg1, arg2, arg3, arg4) {
  if (arg3 === undefined)
    _emscripten_bind_btDbvtBroadphase__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
  else   if (arg4 === undefined)
    _emscripten_bind_btDbvtBroadphase__rayTest_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
  else 
    _emscripten_bind_btDbvtBroadphase__rayTest_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr);
}
btDbvtBroadphase.prototype['set_m_newpairs'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__set_m_newpairs_p1(this.ptr, arg0);
}
btDbvtBroadphase.prototype['setAabb'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btDbvtBroadphase__setAabb_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
}
btDbvtBroadphase.prototype['get_m_fixedleft'] = function() {
    return _emscripten_bind_btDbvtBroadphase__get_m_fixedleft_p0(this.ptr);
}
btDbvtBroadphase.prototype['resetPool'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__resetPool_p1(this.ptr, arg0.ptr);
}
btDbvtBroadphase.prototype['set_m_gid'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__set_m_gid_p1(this.ptr, arg0);
}
btDbvtBroadphase.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btDbvtBroadphase__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btDbvtBroadphase.prototype['get_m_stageCurrent'] = function() {
    return _emscripten_bind_btDbvtBroadphase__get_m_stageCurrent_p0(this.ptr);
}
btDbvtBroadphase.prototype['set_m_updates_call'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__set_m_updates_call_p1(this.ptr, arg0);
}
btDbvtBroadphase.prototype['set_m_needcleanup'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__set_m_needcleanup_p1(this.ptr, arg0);
}
btDbvtBroadphase.prototype['set_m_updates_done'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__set_m_updates_done_p1(this.ptr, arg0);
}
btDbvtBroadphase.prototype['get_m_fupdates'] = function() {
    return _emscripten_bind_btDbvtBroadphase__get_m_fupdates_p0(this.ptr);
}
btDbvtBroadphase.prototype['get_m_pid'] = function() {
    return _emscripten_bind_btDbvtBroadphase__get_m_pid_p0(this.ptr);
}
btDbvtBroadphase.prototype['set_m_dupdates'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__set_m_dupdates_p1(this.ptr, arg0);
}
btDbvtBroadphase.prototype['get_m_cid'] = function() {
    return _emscripten_bind_btDbvtBroadphase__get_m_cid_p0(this.ptr);
}
btDbvtBroadphase.prototype['set_m_updates_ratio'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__set_m_updates_ratio_p1(this.ptr, arg0);
}
btDbvtBroadphase.prototype['setVelocityPrediction'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__setVelocityPrediction_p1(this.ptr, arg0);
}
btDbvtBroadphase.prototype['benchmark'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__benchmark_p1(arg0.ptr);
}
btDbvtBroadphase.prototype['collide'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__collide_p1(this.ptr, arg0.ptr);
}
btDbvtBroadphase.prototype['get_m_updates_call'] = function() {
    return _emscripten_bind_btDbvtBroadphase__get_m_updates_call_p0(this.ptr);
}
btDbvtBroadphase.prototype['printStats'] = function() {
    _emscripten_bind_btDbvtBroadphase__printStats_p0(this.ptr);
}
btDbvtBroadphase.prototype['createProxy'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
    return wrapPointer(_emscripten_bind_btDbvtBroadphase__createProxy_p8(this.ptr, arg0.ptr, arg1.ptr, arg2, arg3, arg4, arg5, arg6.ptr, arg7), Module['btBroadphaseProxy']);
}
btDbvtBroadphase.prototype['get_m_cupdates'] = function() {
    return _emscripten_bind_btDbvtBroadphase__get_m_cupdates_p0(this.ptr);
}
btDbvtBroadphase.prototype['optimize'] = function() {
    _emscripten_bind_btDbvtBroadphase__optimize_p0(this.ptr);
}
btDbvtBroadphase.prototype['set_m_cupdates'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__set_m_cupdates_p1(this.ptr, arg0);
}
btDbvtBroadphase.prototype['get_m_prediction'] = function() {
    return _emscripten_bind_btDbvtBroadphase__get_m_prediction_p0(this.ptr);
}
btDbvtBroadphase.prototype['__destroy__'] = function() {
    _emscripten_bind_btDbvtBroadphase____destroy___p0(this.ptr);
}
btDbvtBroadphase.prototype['get_m_gid'] = function() {
    return _emscripten_bind_btDbvtBroadphase__get_m_gid_p0(this.ptr);
}
btDbvtBroadphase.prototype['get_m_needcleanup'] = function() {
    return _emscripten_bind_btDbvtBroadphase__get_m_needcleanup_p0(this.ptr);
}
btDbvtBroadphase.prototype['getOverlappingPairCache'] = function() {
    return wrapPointer(_emscripten_bind_btDbvtBroadphase__getOverlappingPairCache_p0(this.ptr), Module['btOverlappingPairCache']);
}
btDbvtBroadphase.prototype['get_m_newpairs'] = function() {
    return _emscripten_bind_btDbvtBroadphase__get_m_newpairs_p0(this.ptr);
}
btDbvtBroadphase.prototype['get_m_updates_ratio'] = function() {
    return _emscripten_bind_btDbvtBroadphase__get_m_updates_ratio_p0(this.ptr);
}
btDbvtBroadphase.prototype['setAabbForceUpdate'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btDbvtBroadphase__setAabbForceUpdate_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
}
btDbvtBroadphase.prototype['set_m_prediction'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__set_m_prediction_p1(this.ptr, arg0);
}
btDbvtBroadphase.prototype['aabbTest'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btDbvtBroadphase__aabbTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btDbvtBroadphase.prototype['getVelocityPrediction'] = function() {
    return _emscripten_bind_btDbvtBroadphase__getVelocityPrediction_p0(this.ptr);
}
btDbvtBroadphase.prototype['get_m_paircache'] = function() {
    return wrapPointer(_emscripten_bind_btDbvtBroadphase__get_m_paircache_p0(this.ptr), Module['btOverlappingPairCache']);
}
btDbvtBroadphase.prototype['get_m_updates_done'] = function() {
    return _emscripten_bind_btDbvtBroadphase__get_m_updates_done_p0(this.ptr);
}
btDbvtBroadphase.prototype['set_m_fixedleft'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__set_m_fixedleft_p1(this.ptr, arg0);
}
btDbvtBroadphase.prototype['set_m_stageCurrent'] = function(arg0) {
    _emscripten_bind_btDbvtBroadphase__set_m_stageCurrent_p1(this.ptr, arg0);
}
btDbvtBroadphase.prototype['getBroadphaseAabb'] = function(arg0, arg1) {
    _emscripten_bind_btDbvtBroadphase__getBroadphaseAabb_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btDbvtBroadphase.prototype['destroyProxy'] = function(arg0, arg1) {
    _emscripten_bind_btDbvtBroadphase__destroyProxy_p2(this.ptr, arg0.ptr, arg1.ptr);
}
function btSimpleBroadphaseProxy(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btSimpleBroadphaseProxy__btSimpleBroadphaseProxy_p0();
  else 
    this.ptr = _emscripten_bind_btSimpleBroadphaseProxy__btSimpleBroadphaseProxy_p7(arg0.ptr, arg1.ptr, arg2, arg3, arg4, arg5, arg6);
  btSimpleBroadphaseProxy.prototype.__cache__[this.ptr] = this;
  this.__class__ = btSimpleBroadphaseProxy;
}
btSimpleBroadphaseProxy.prototype.__cache__ = {};
Module['btSimpleBroadphaseProxy'] = btSimpleBroadphaseProxy;
btSimpleBroadphaseProxy.prototype['get_m_clientObject'] = function() {
    return _emscripten_bind_btSimpleBroadphaseProxy__get_m_clientObject_p0(this.ptr);
}
btSimpleBroadphaseProxy.prototype['isInfinite'] = function(arg0) {
    return _emscripten_bind_btSimpleBroadphaseProxy__isInfinite_p1(arg0);
}
btSimpleBroadphaseProxy.prototype['set_m_clientObject'] = function(arg0) {
    _emscripten_bind_btSimpleBroadphaseProxy__set_m_clientObject_p1(this.ptr, arg0);
}
btSimpleBroadphaseProxy.prototype['SetNextFree'] = function(arg0) {
    _emscripten_bind_btSimpleBroadphaseProxy__SetNextFree_p1(this.ptr, arg0);
}
btSimpleBroadphaseProxy.prototype['get_m_nextFree'] = function() {
    return _emscripten_bind_btSimpleBroadphaseProxy__get_m_nextFree_p0(this.ptr);
}
btSimpleBroadphaseProxy.prototype['set_m_multiSapParentProxy'] = function(arg0) {
    _emscripten_bind_btSimpleBroadphaseProxy__set_m_multiSapParentProxy_p1(this.ptr, arg0);
}
btSimpleBroadphaseProxy.prototype['isCompound'] = function(arg0) {
    return _emscripten_bind_btSimpleBroadphaseProxy__isCompound_p1(arg0);
}
btSimpleBroadphaseProxy.prototype['isPolyhedral'] = function(arg0) {
    return _emscripten_bind_btSimpleBroadphaseProxy__isPolyhedral_p1(arg0);
}
btSimpleBroadphaseProxy.prototype['get_m_aabbMin'] = function() {
    return wrapPointer(_emscripten_bind_btSimpleBroadphaseProxy__get_m_aabbMin_p0(this.ptr), Module['btVector3']);
}
btSimpleBroadphaseProxy.prototype['get_m_collisionFilterMask'] = function() {
    return _emscripten_bind_btSimpleBroadphaseProxy__get_m_collisionFilterMask_p0(this.ptr);
}
btSimpleBroadphaseProxy.prototype['set_m_uniqueId'] = function(arg0) {
    _emscripten_bind_btSimpleBroadphaseProxy__set_m_uniqueId_p1(this.ptr, arg0);
}
btSimpleBroadphaseProxy.prototype['isConvex'] = function(arg0) {
    return _emscripten_bind_btSimpleBroadphaseProxy__isConvex_p1(arg0);
}
btSimpleBroadphaseProxy.prototype['GetNextFree'] = function() {
    return _emscripten_bind_btSimpleBroadphaseProxy__GetNextFree_p0(this.ptr);
}
btSimpleBroadphaseProxy.prototype['getUid'] = function() {
    return _emscripten_bind_btSimpleBroadphaseProxy__getUid_p0(this.ptr);
}
btSimpleBroadphaseProxy.prototype['get_m_aabbMax'] = function() {
    return wrapPointer(_emscripten_bind_btSimpleBroadphaseProxy__get_m_aabbMax_p0(this.ptr), Module['btVector3']);
}
btSimpleBroadphaseProxy.prototype['isNonMoving'] = function(arg0) {
    return _emscripten_bind_btSimpleBroadphaseProxy__isNonMoving_p1(arg0);
}
btSimpleBroadphaseProxy.prototype['set_m_aabbMin'] = function(arg0) {
    _emscripten_bind_btSimpleBroadphaseProxy__set_m_aabbMin_p1(this.ptr, arg0.ptr);
}
btSimpleBroadphaseProxy.prototype['set_m_collisionFilterGroup'] = function(arg0) {
    _emscripten_bind_btSimpleBroadphaseProxy__set_m_collisionFilterGroup_p1(this.ptr, arg0);
}
btSimpleBroadphaseProxy.prototype['isConvex2d'] = function(arg0) {
    return _emscripten_bind_btSimpleBroadphaseProxy__isConvex2d_p1(arg0);
}
btSimpleBroadphaseProxy.prototype['isSoftBody'] = function(arg0) {
    return _emscripten_bind_btSimpleBroadphaseProxy__isSoftBody_p1(arg0);
}
btSimpleBroadphaseProxy.prototype['set_m_aabbMax'] = function(arg0) {
    _emscripten_bind_btSimpleBroadphaseProxy__set_m_aabbMax_p1(this.ptr, arg0.ptr);
}
btSimpleBroadphaseProxy.prototype['__destroy__'] = function() {
    _emscripten_bind_btSimpleBroadphaseProxy____destroy___p0(this.ptr);
}
btSimpleBroadphaseProxy.prototype['get_m_uniqueId'] = function() {
    return _emscripten_bind_btSimpleBroadphaseProxy__get_m_uniqueId_p0(this.ptr);
}
btSimpleBroadphaseProxy.prototype['set_m_nextFree'] = function(arg0) {
    _emscripten_bind_btSimpleBroadphaseProxy__set_m_nextFree_p1(this.ptr, arg0);
}
btSimpleBroadphaseProxy.prototype['set_m_collisionFilterMask'] = function(arg0) {
    _emscripten_bind_btSimpleBroadphaseProxy__set_m_collisionFilterMask_p1(this.ptr, arg0);
}
btSimpleBroadphaseProxy.prototype['isConcave'] = function(arg0) {
    return _emscripten_bind_btSimpleBroadphaseProxy__isConcave_p1(arg0);
}
btSimpleBroadphaseProxy.prototype['get_m_multiSapParentProxy'] = function() {
    return _emscripten_bind_btSimpleBroadphaseProxy__get_m_multiSapParentProxy_p0(this.ptr);
}
btSimpleBroadphaseProxy.prototype['get_m_collisionFilterGroup'] = function() {
    return _emscripten_bind_btSimpleBroadphaseProxy__get_m_collisionFilterGroup_p0(this.ptr);
}
function btCollisionDispatcher(arg0) {
    this.ptr = _emscripten_bind_btCollisionDispatcher__btCollisionDispatcher_p1(arg0.ptr);
  btCollisionDispatcher.prototype.__cache__[this.ptr] = this;
  this.__class__ = btCollisionDispatcher;
}
btCollisionDispatcher.prototype.__cache__ = {};
Module['btCollisionDispatcher'] = btCollisionDispatcher;
btCollisionDispatcher.prototype['freeCollisionAlgorithm'] = function(arg0) {
    _emscripten_bind_btCollisionDispatcher__freeCollisionAlgorithm_p1(this.ptr, arg0);
}
btCollisionDispatcher.prototype['setNearCallback'] = function(arg0) {
    _emscripten_bind_btCollisionDispatcher__setNearCallback_p1(this.ptr, arg0);
}
btCollisionDispatcher.prototype['getNearCallback'] = function() {
    return _emscripten_bind_btCollisionDispatcher__getNearCallback_p0(this.ptr);
}
btCollisionDispatcher.prototype['findAlgorithm'] = function(arg0, arg1, arg2) {
  if (arg2 === undefined)
    return wrapPointer(_emscripten_bind_btCollisionDispatcher__findAlgorithm_p2(this.ptr, arg0.ptr, arg1.ptr), Module['btCollisionAlgorithm']);
  else 
    return wrapPointer(_emscripten_bind_btCollisionDispatcher__findAlgorithm_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr), Module['btCollisionAlgorithm']);
}
btCollisionDispatcher.prototype['needsResponse'] = function(arg0, arg1) {
    return _emscripten_bind_btCollisionDispatcher__needsResponse_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btCollisionDispatcher.prototype['releaseManifold'] = function(arg0) {
    _emscripten_bind_btCollisionDispatcher__releaseManifold_p1(this.ptr, arg0.ptr);
}
btCollisionDispatcher.prototype['getDispatcherFlags'] = function() {
    return _emscripten_bind_btCollisionDispatcher__getDispatcherFlags_p0(this.ptr);
}
btCollisionDispatcher.prototype['setDispatcherFlags'] = function(arg0) {
    _emscripten_bind_btCollisionDispatcher__setDispatcherFlags_p1(this.ptr, arg0);
}
btCollisionDispatcher.prototype['getManifoldByIndexInternal'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCollisionDispatcher__getManifoldByIndexInternal_p1(this.ptr, arg0), Module['btPersistentManifold']);
}
btCollisionDispatcher.prototype['registerCollisionCreateFunc'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCollisionDispatcher__registerCollisionCreateFunc_p3(this.ptr, arg0, arg1, arg2.ptr);
}
btCollisionDispatcher.prototype['needsCollision'] = function(arg0, arg1) {
    return _emscripten_bind_btCollisionDispatcher__needsCollision_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btCollisionDispatcher.prototype['getNumManifolds'] = function() {
    return _emscripten_bind_btCollisionDispatcher__getNumManifolds_p0(this.ptr);
}
btCollisionDispatcher.prototype['setCollisionConfiguration'] = function(arg0) {
    _emscripten_bind_btCollisionDispatcher__setCollisionConfiguration_p1(this.ptr, arg0.ptr);
}
btCollisionDispatcher.prototype['clearManifold'] = function(arg0) {
    _emscripten_bind_btCollisionDispatcher__clearManifold_p1(this.ptr, arg0.ptr);
}
btCollisionDispatcher.prototype['getNewManifold'] = function(arg0, arg1) {
    return wrapPointer(_emscripten_bind_btCollisionDispatcher__getNewManifold_p2(this.ptr, arg0, arg1), Module['btPersistentManifold']);
}
btCollisionDispatcher.prototype['dispatchAllCollisionPairs'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCollisionDispatcher__dispatchAllCollisionPairs_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCollisionDispatcher.prototype['allocateCollisionAlgorithm'] = function(arg0) {
    return _emscripten_bind_btCollisionDispatcher__allocateCollisionAlgorithm_p1(this.ptr, arg0);
}
btCollisionDispatcher.prototype['__destroy__'] = function() {
    _emscripten_bind_btCollisionDispatcher____destroy___p0(this.ptr);
}
btCollisionDispatcher.prototype['getCollisionConfiguration'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionDispatcher__getCollisionConfiguration_p0(this.ptr), Module['btCollisionConfiguration']);
}
btCollisionDispatcher.prototype['getInternalManifoldPointer'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionDispatcher__getInternalManifoldPointer_p0(this.ptr), Module['btPersistentManifold']);
}
btCollisionDispatcher.prototype['defaultNearCallback'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCollisionDispatcher__defaultNearCallback_p3(arg0.ptr, arg1.ptr, arg2.ptr);
}
btCollisionDispatcher.prototype['getInternalManifoldPool'] = function() {
    return _emscripten_bind_btCollisionDispatcher__getInternalManifoldPool_p0(this.ptr);
}
function btAxisSweep3(arg0, arg1, arg2, arg3, arg4) {
  if (arg2 === undefined)
    this.ptr = _emscripten_bind_btAxisSweep3__btAxisSweep3_p2(arg0.ptr, arg1.ptr);
  else   if (arg3 === undefined)
    this.ptr = _emscripten_bind_btAxisSweep3__btAxisSweep3_p3(arg0.ptr, arg1.ptr, arg2);
  else   if (arg4 === undefined)
    this.ptr = _emscripten_bind_btAxisSweep3__btAxisSweep3_p4(arg0.ptr, arg1.ptr, arg2, arg3.ptr);
  else 
    this.ptr = _emscripten_bind_btAxisSweep3__btAxisSweep3_p5(arg0.ptr, arg1.ptr, arg2, arg3.ptr, arg4);
  btAxisSweep3.prototype.__cache__[this.ptr] = this;
  this.__class__ = btAxisSweep3;
}
btAxisSweep3.prototype.__cache__ = {};
Module['btAxisSweep3'] = btAxisSweep3;
btAxisSweep3.prototype['getNumHandles'] = function() {
    return _emscripten_bind_btAxisSweep3__getNumHandles_p0(this.ptr);
}
btAxisSweep3.prototype['addHandle'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
    return _emscripten_bind_btAxisSweep3__addHandle_p7(this.ptr, arg0.ptr, arg1.ptr, arg2, arg3, arg4, arg5.ptr, arg6);
}
btAxisSweep3.prototype['quantize'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btAxisSweep3__quantize_p3(this.ptr, arg0, arg1.ptr, arg2);
}
btAxisSweep3.prototype['removeHandle'] = function(arg0, arg1) {
    _emscripten_bind_btAxisSweep3__removeHandle_p2(this.ptr, arg0, arg1.ptr);
}
btAxisSweep3.prototype['getOverlappingPairUserCallback'] = function() {
    return wrapPointer(_emscripten_bind_btAxisSweep3__getOverlappingPairUserCallback_p0(this.ptr), Module['btOverlappingPairCallback']);
}
btAxisSweep3.prototype['processAllOverlappingPairs'] = function(arg0) {
    _emscripten_bind_btAxisSweep3__processAllOverlappingPairs_p1(this.ptr, arg0.ptr);
}
btAxisSweep3.prototype['rayTest'] = function(arg0, arg1, arg2, arg3, arg4) {
  if (arg3 === undefined)
    _emscripten_bind_btAxisSweep3__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
  else   if (arg4 === undefined)
    _emscripten_bind_btAxisSweep3__rayTest_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
  else 
    _emscripten_bind_btAxisSweep3__rayTest_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr);
}
btAxisSweep3.prototype['setAabb'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btAxisSweep3__setAabb_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
}
btAxisSweep3.prototype['resetPool'] = function(arg0) {
    _emscripten_bind_btAxisSweep3__resetPool_p1(this.ptr, arg0.ptr);
}
btAxisSweep3.prototype['testAabbOverlap'] = function(arg0, arg1) {
    return _emscripten_bind_btAxisSweep3__testAabbOverlap_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btAxisSweep3.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btAxisSweep3__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btAxisSweep3.prototype['updateHandle'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btAxisSweep3__updateHandle_p4(this.ptr, arg0, arg1.ptr, arg2.ptr, arg3.ptr);
}
btAxisSweep3.prototype['printStats'] = function() {
    _emscripten_bind_btAxisSweep3__printStats_p0(this.ptr);
}
btAxisSweep3.prototype['createProxy'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
    return wrapPointer(_emscripten_bind_btAxisSweep3__createProxy_p8(this.ptr, arg0.ptr, arg1.ptr, arg2, arg3, arg4, arg5, arg6.ptr, arg7), Module['btBroadphaseProxy']);
}
btAxisSweep3.prototype['__destroy__'] = function() {
    _emscripten_bind_btAxisSweep3____destroy___p0(this.ptr);
}
btAxisSweep3.prototype['setOverlappingPairUserCallback'] = function(arg0) {
    _emscripten_bind_btAxisSweep3__setOverlappingPairUserCallback_p1(this.ptr, arg0.ptr);
}
btAxisSweep3.prototype['calculateOverlappingPairs'] = function(arg0) {
    _emscripten_bind_btAxisSweep3__calculateOverlappingPairs_p1(this.ptr, arg0.ptr);
}
btAxisSweep3.prototype['getOverlappingPairCache'] = function() {
    return wrapPointer(_emscripten_bind_btAxisSweep3__getOverlappingPairCache_p0(this.ptr), Module['btOverlappingPairCache']);
}
btAxisSweep3.prototype['unQuantize'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btAxisSweep3__unQuantize_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btAxisSweep3.prototype['aabbTest'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btAxisSweep3__aabbTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btAxisSweep3.prototype['getBroadphaseAabb'] = function(arg0, arg1) {
    _emscripten_bind_btAxisSweep3__getBroadphaseAabb_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btAxisSweep3.prototype['destroyProxy'] = function(arg0, arg1) {
    _emscripten_bind_btAxisSweep3__destroyProxy_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btAxisSweep3.prototype['getHandle'] = function(arg0) {
    return _emscripten_bind_btAxisSweep3__getHandle_p1(this.ptr, arg0);
}
btCollisionAlgorithmConstructionInfo.prototype['set_m_dispatcher1'] = function(arg0) {
    _emscripten_bind_btCollisionAlgorithmConstructionInfo__set_m_dispatcher1_p1(this.ptr, arg0.ptr);
}
btCollisionAlgorithmConstructionInfo.prototype['__destroy__'] = function() {
    _emscripten_bind_btCollisionAlgorithmConstructionInfo____destroy___p0(this.ptr);
}
function btCollisionAlgorithmConstructionInfo(arg0, arg1) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btCollisionAlgorithmConstructionInfo__btCollisionAlgorithmConstructionInfo_p0();
  else 
    this.ptr = _emscripten_bind_btCollisionAlgorithmConstructionInfo__btCollisionAlgorithmConstructionInfo_p2(arg0.ptr, arg1);
  btCollisionAlgorithmConstructionInfo.prototype.__cache__[this.ptr] = this;
  this.__class__ = btCollisionAlgorithmConstructionInfo;
}
btCollisionAlgorithmConstructionInfo.prototype.__cache__ = {};
Module['btCollisionAlgorithmConstructionInfo'] = btCollisionAlgorithmConstructionInfo;
btCollisionAlgorithmConstructionInfo.prototype['get_m_dispatcher1'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionAlgorithmConstructionInfo__get_m_dispatcher1_p0(this.ptr), Module['btDispatcher']);
}
btCollisionAlgorithmConstructionInfo.prototype['set_m_manifold'] = function(arg0) {
    _emscripten_bind_btCollisionAlgorithmConstructionInfo__set_m_manifold_p1(this.ptr, arg0.ptr);
}
btCollisionAlgorithmConstructionInfo.prototype['get_m_manifold'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionAlgorithmConstructionInfo__get_m_manifold_p0(this.ptr), Module['btPersistentManifold']);
}
btDiscreteDynamicsWorld.prototype['setGravity'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__setGravity_p1(this.ptr, arg0.ptr);
}
btDiscreteDynamicsWorld.prototype['addAction'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__addAction_p1(this.ptr, arg0.ptr);
}
btDiscreteDynamicsWorld.prototype['getSolverInfo'] = function() {
    return wrapPointer(_emscripten_bind_btDiscreteDynamicsWorld__getSolverInfo_p0(this.ptr), Module['btContactSolverInfo']);
}
btDiscreteDynamicsWorld.prototype['getDebugDrawer'] = function() {
    return wrapPointer(_emscripten_bind_btDiscreteDynamicsWorld__getDebugDrawer_p0(this.ptr), Module['btIDebugDraw']);
}
btDiscreteDynamicsWorld.prototype['applyGravity'] = function() {
    _emscripten_bind_btDiscreteDynamicsWorld__applyGravity_p0(this.ptr);
}
btDiscreteDynamicsWorld.prototype['serialize'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__serialize_p1(this.ptr, arg0.ptr);
}
btDiscreteDynamicsWorld.prototype['getDispatcher'] = function() {
    return wrapPointer(_emscripten_bind_btDiscreteDynamicsWorld__getDispatcher_p0(this.ptr), Module['btDispatcher']);
}
btDiscreteDynamicsWorld.prototype['getCollisionWorld'] = function() {
    return wrapPointer(_emscripten_bind_btDiscreteDynamicsWorld__getCollisionWorld_p0(this.ptr), Module['btCollisionWorld']);
}
btDiscreteDynamicsWorld.prototype['addRigidBody'] = function(arg0, arg1, arg2) {
  if (arg1 === undefined)
    _emscripten_bind_btDiscreteDynamicsWorld__addRigidBody_p1(this.ptr, arg0.ptr);
  else 
    _emscripten_bind_btDiscreteDynamicsWorld__addRigidBody_p3(this.ptr, arg0.ptr, arg1, arg2);
}
btDiscreteDynamicsWorld.prototype['clearForces'] = function() {
    _emscripten_bind_btDiscreteDynamicsWorld__clearForces_p0(this.ptr);
}
btDiscreteDynamicsWorld.prototype['removeVehicle'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__removeVehicle_p1(this.ptr, arg0.ptr);
}
function btDiscreteDynamicsWorld(arg0, arg1, arg2, arg3) {
    this.ptr = _emscripten_bind_btDiscreteDynamicsWorld__btDiscreteDynamicsWorld_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
  btDiscreteDynamicsWorld.prototype.__cache__[this.ptr] = this;
  this.__class__ = btDiscreteDynamicsWorld;
}
btDiscreteDynamicsWorld.prototype.__cache__ = {};
Module['btDiscreteDynamicsWorld'] = btDiscreteDynamicsWorld;
btDiscreteDynamicsWorld.prototype['setBroadphase'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__setBroadphase_p1(this.ptr, arg0.ptr);
}
btDiscreteDynamicsWorld.prototype['getSynchronizeAllMotionStates'] = function() {
    return _emscripten_bind_btDiscreteDynamicsWorld__getSynchronizeAllMotionStates_p0(this.ptr);
}
btDiscreteDynamicsWorld.prototype['setNumTasks'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__setNumTasks_p1(this.ptr, arg0);
}
btDiscreteDynamicsWorld.prototype['setSynchronizeAllMotionStates'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__setSynchronizeAllMotionStates_p1(this.ptr, arg0);
}
btDiscreteDynamicsWorld.prototype['getCollisionObjectArray'] = function() {
    return _emscripten_bind_btDiscreteDynamicsWorld__getCollisionObjectArray_p0(this.ptr);
}
btDiscreteDynamicsWorld.prototype['debugDrawObject'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btDiscreteDynamicsWorld__debugDrawObject_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btDiscreteDynamicsWorld.prototype['removeConstraint'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__removeConstraint_p1(this.ptr, arg0.ptr);
}
btDiscreteDynamicsWorld.prototype['rayTest'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btDiscreteDynamicsWorld__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btDiscreteDynamicsWorld.prototype['getNumConstraints'] = function() {
    return _emscripten_bind_btDiscreteDynamicsWorld__getNumConstraints_p0(this.ptr);
}
btDiscreteDynamicsWorld.prototype['addCollisionObject'] = function(arg0, arg1, arg2) {
  if (arg1 === undefined)
    _emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p1(this.ptr, arg0.ptr);
  else   if (arg2 === undefined)
    _emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p2(this.ptr, arg0.ptr, arg1);
  else 
    _emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p3(this.ptr, arg0.ptr, arg1, arg2);
}
btDiscreteDynamicsWorld.prototype['removeRigidBody'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__removeRigidBody_p1(this.ptr, arg0.ptr);
}
btDiscreteDynamicsWorld.prototype['contactTest'] = function(arg0, arg1) {
    _emscripten_bind_btDiscreteDynamicsWorld__contactTest_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btDiscreteDynamicsWorld.prototype['performDiscreteCollisionDetection'] = function() {
    _emscripten_bind_btDiscreteDynamicsWorld__performDiscreteCollisionDetection_p0(this.ptr);
}
btDiscreteDynamicsWorld.prototype['setInternalTickCallback'] = function(arg0, arg1, arg2) {
  if (arg1 === undefined)
    _emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p1(this.ptr, arg0);
  else   if (arg2 === undefined)
    _emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p2(this.ptr, arg0, arg1);
  else 
    _emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p3(this.ptr, arg0, arg1, arg2);
}
btDiscreteDynamicsWorld.prototype['getForceUpdateAllAabbs'] = function() {
    return _emscripten_bind_btDiscreteDynamicsWorld__getForceUpdateAllAabbs_p0(this.ptr);
}
btDiscreteDynamicsWorld.prototype['updateAabbs'] = function() {
    _emscripten_bind_btDiscreteDynamicsWorld__updateAabbs_p0(this.ptr);
}
btDiscreteDynamicsWorld.prototype['setDebugDrawer'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__setDebugDrawer_p1(this.ptr, arg0.ptr);
}
btDiscreteDynamicsWorld.prototype['debugDrawConstraint'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__debugDrawConstraint_p1(this.ptr, arg0.ptr);
}
btDiscreteDynamicsWorld.prototype['debugDrawWorld'] = function() {
    _emscripten_bind_btDiscreteDynamicsWorld__debugDrawWorld_p0(this.ptr);
}
btDiscreteDynamicsWorld.prototype['convexSweepTest'] = function(arg0, arg1, arg2, arg3, arg4) {
  if (arg4 === undefined)
    _emscripten_bind_btDiscreteDynamicsWorld__convexSweepTest_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
  else 
    _emscripten_bind_btDiscreteDynamicsWorld__convexSweepTest_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4);
}
btDiscreteDynamicsWorld.prototype['getNumCollisionObjects'] = function() {
    return _emscripten_bind_btDiscreteDynamicsWorld__getNumCollisionObjects_p0(this.ptr);
}
btDiscreteDynamicsWorld.prototype['setWorldUserInfo'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__setWorldUserInfo_p1(this.ptr, arg0);
}
btDiscreteDynamicsWorld.prototype['addConstraint'] = function(arg0, arg1) {
  if (arg1 === undefined)
    _emscripten_bind_btDiscreteDynamicsWorld__addConstraint_p1(this.ptr, arg0.ptr);
  else 
    _emscripten_bind_btDiscreteDynamicsWorld__addConstraint_p2(this.ptr, arg0.ptr, arg1);
}
btDiscreteDynamicsWorld.prototype['getWorldUserInfo'] = function() {
    return _emscripten_bind_btDiscreteDynamicsWorld__getWorldUserInfo_p0(this.ptr);
}
btDiscreteDynamicsWorld.prototype['contactPairTest'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btDiscreteDynamicsWorld__contactPairTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btDiscreteDynamicsWorld.prototype['getGravity'] = function() {
    return wrapPointer(_emscripten_bind_btDiscreteDynamicsWorld__getGravity_p0(this.ptr), Module['btVector3']);
}
btDiscreteDynamicsWorld.prototype['getBroadphase'] = function() {
    return wrapPointer(_emscripten_bind_btDiscreteDynamicsWorld__getBroadphase_p0(this.ptr), Module['btBroadphaseInterface']);
}
btDiscreteDynamicsWorld.prototype['rayTestSingle'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btDiscreteDynamicsWorld__rayTestSingle_p6(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr);
}
btDiscreteDynamicsWorld.prototype['removeAction'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__removeAction_p1(this.ptr, arg0.ptr);
}
btDiscreteDynamicsWorld.prototype['setForceUpdateAllAabbs'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__setForceUpdateAllAabbs_p1(this.ptr, arg0);
}
btDiscreteDynamicsWorld.prototype['__destroy__'] = function() {
    _emscripten_bind_btDiscreteDynamicsWorld____destroy___p0(this.ptr);
}
btDiscreteDynamicsWorld.prototype['removeCharacter'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__removeCharacter_p1(this.ptr, arg0.ptr);
}
btDiscreteDynamicsWorld.prototype['getConstraint'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btDiscreteDynamicsWorld__getConstraint_p1(this.ptr, arg0), Module['btTypedConstraint']);
}
btDiscreteDynamicsWorld.prototype['getConstraintSolver'] = function() {
    return wrapPointer(_emscripten_bind_btDiscreteDynamicsWorld__getConstraintSolver_p0(this.ptr), Module['btConstraintSolver']);
}
btDiscreteDynamicsWorld.prototype['stepSimulation'] = function(arg0, arg1, arg2) {
  if (arg1 === undefined)
    return _emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p1(this.ptr, arg0);
  else   if (arg2 === undefined)
    return _emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p2(this.ptr, arg0, arg1);
  else 
    return _emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p3(this.ptr, arg0, arg1, arg2);
}
btDiscreteDynamicsWorld.prototype['addCharacter'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__addCharacter_p1(this.ptr, arg0.ptr);
}
btDiscreteDynamicsWorld.prototype['getWorldType'] = function() {
    return _emscripten_bind_btDiscreteDynamicsWorld__getWorldType_p0(this.ptr);
}
btDiscreteDynamicsWorld.prototype['updateSingleAabb'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__updateSingleAabb_p1(this.ptr, arg0.ptr);
}
btDiscreteDynamicsWorld.prototype['updateVehicles'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__updateVehicles_p1(this.ptr, arg0);
}
btDiscreteDynamicsWorld.prototype['synchronizeSingleMotionState'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__synchronizeSingleMotionState_p1(this.ptr, arg0.ptr);
}
btDiscreteDynamicsWorld.prototype['addVehicle'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__addVehicle_p1(this.ptr, arg0.ptr);
}
btDiscreteDynamicsWorld.prototype['getPairCache'] = function() {
    return wrapPointer(_emscripten_bind_btDiscreteDynamicsWorld__getPairCache_p0(this.ptr), Module['btOverlappingPairCache']);
}
btDiscreteDynamicsWorld.prototype['synchronizeMotionStates'] = function() {
    _emscripten_bind_btDiscreteDynamicsWorld__synchronizeMotionStates_p0(this.ptr);
}
btDiscreteDynamicsWorld.prototype['getSimulationIslandManager'] = function() {
    return _emscripten_bind_btDiscreteDynamicsWorld__getSimulationIslandManager_p0(this.ptr);
}
btDiscreteDynamicsWorld.prototype['removeCollisionObject'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__removeCollisionObject_p1(this.ptr, arg0.ptr);
}
btDiscreteDynamicsWorld.prototype['setConstraintSolver'] = function(arg0) {
    _emscripten_bind_btDiscreteDynamicsWorld__setConstraintSolver_p1(this.ptr, arg0.ptr);
}
btDiscreteDynamicsWorld.prototype['objectQuerySingle'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
    _emscripten_bind_btDiscreteDynamicsWorld__objectQuerySingle_p8(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7);
}
btDiscreteDynamicsWorld.prototype['getDispatchInfo'] = function() {
    return wrapPointer(_emscripten_bind_btDiscreteDynamicsWorld__getDispatchInfo_p0(this.ptr), Module['btDispatcherInfo']);
}
function btTriangleCallback(){ throw "btTriangleCallback is abstract!" }
btTriangleCallback.prototype.__cache__ = {};
Module['btTriangleCallback'] = btTriangleCallback;
btTriangleCallback.prototype['processTriangle'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btTriangleCallback__processTriangle_p3(this.ptr, arg0.ptr, arg1, arg2);
}
btConeTwistConstraint.prototype['getRigidBodyB'] = function() {
    return wrapPointer(_emscripten_bind_btConeTwistConstraint__getRigidBodyB_p0(this.ptr), Module['btRigidBody']);
}
btConeTwistConstraint.prototype['buildJacobian'] = function() {
    _emscripten_bind_btConeTwistConstraint__buildJacobian_p0(this.ptr);
}
btConeTwistConstraint.prototype['getRigidBodyA'] = function() {
    return wrapPointer(_emscripten_bind_btConeTwistConstraint__getRigidBodyA_p0(this.ptr), Module['btRigidBody']);
}
btConeTwistConstraint.prototype['isPastSwingLimit'] = function() {
    return _emscripten_bind_btConeTwistConstraint__isPastSwingLimit_p0(this.ptr);
}
btConeTwistConstraint.prototype['set_m_objectType'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__set_m_objectType_p1(this.ptr, arg0);
}
btConeTwistConstraint.prototype['setEnabled'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__setEnabled_p1(this.ptr, arg0);
}
btConeTwistConstraint.prototype['getFrameOffsetA'] = function() {
    return wrapPointer(_emscripten_bind_btConeTwistConstraint__getFrameOffsetA_p0(this.ptr), Module['btTransform']);
}
btConeTwistConstraint.prototype['getFrameOffsetB'] = function() {
    return wrapPointer(_emscripten_bind_btConeTwistConstraint__getFrameOffsetB_p0(this.ptr), Module['btTransform']);
}
btConeTwistConstraint.prototype['getSwingSpan2'] = function() {
    return _emscripten_bind_btConeTwistConstraint__getSwingSpan2_p0(this.ptr);
}
btConeTwistConstraint.prototype['getSwingSpan1'] = function() {
    return _emscripten_bind_btConeTwistConstraint__getSwingSpan1_p0(this.ptr);
}
btConeTwistConstraint.prototype['calcAngleInfo2'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btConeTwistConstraint__calcAngleInfo2_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
}
btConeTwistConstraint.prototype['get_m_objectType'] = function() {
    return _emscripten_bind_btConeTwistConstraint__get_m_objectType_p0(this.ptr);
}
btConeTwistConstraint.prototype['setParam'] = function(arg0, arg1, arg2) {
  if (arg2 === undefined)
    _emscripten_bind_btConeTwistConstraint__setParam_p2(this.ptr, arg0, arg1);
  else 
    _emscripten_bind_btConeTwistConstraint__setParam_p3(this.ptr, arg0, arg1, arg2);
}
btConeTwistConstraint.prototype['getParam'] = function(arg0, arg1) {
  if (arg1 === undefined)
    return _emscripten_bind_btConeTwistConstraint__getParam_p1(this.ptr, arg0);
  else 
    return _emscripten_bind_btConeTwistConstraint__getParam_p2(this.ptr, arg0, arg1);
}
btConeTwistConstraint.prototype['setDamping'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__setDamping_p1(this.ptr, arg0);
}
btConeTwistConstraint.prototype['getInfo1'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__getInfo1_p1(this.ptr, arg0.ptr);
}
btConeTwistConstraint.prototype['getInfo2'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__getInfo2_p1(this.ptr, arg0.ptr);
}
btConeTwistConstraint.prototype['setBreakingImpulseThreshold'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__setBreakingImpulseThreshold_p1(this.ptr, arg0);
}
function btConeTwistConstraint(arg0, arg1, arg2, arg3) {
  if (arg2 === undefined)
    this.ptr = _emscripten_bind_btConeTwistConstraint__btConeTwistConstraint_p2(arg0.ptr, arg1.ptr);
  else 
    this.ptr = _emscripten_bind_btConeTwistConstraint__btConeTwistConstraint_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
  btConeTwistConstraint.prototype.__cache__[this.ptr] = this;
  this.__class__ = btConeTwistConstraint;
}
btConeTwistConstraint.prototype.__cache__ = {};
Module['btConeTwistConstraint'] = btConeTwistConstraint;
btConeTwistConstraint.prototype['setMotorTarget'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__setMotorTarget_p1(this.ptr, arg0.ptr);
}
btConeTwistConstraint.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btConeTwistConstraint__calculateSerializeBufferSize_p0(this.ptr);
}
btConeTwistConstraint.prototype['setUserConstraintPtr'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__setUserConstraintPtr_p1(this.ptr, arg0);
}
btConeTwistConstraint.prototype['isEnabled'] = function() {
    return _emscripten_bind_btConeTwistConstraint__isEnabled_p0(this.ptr);
}
btConeTwistConstraint.prototype['setUserConstraintId'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__setUserConstraintId_p1(this.ptr, arg0);
}
btConeTwistConstraint.prototype['getConstraintType'] = function() {
    return _emscripten_bind_btConeTwistConstraint__getConstraintType_p0(this.ptr);
}
btConeTwistConstraint.prototype['getTwistAngle'] = function() {
    return _emscripten_bind_btConeTwistConstraint__getTwistAngle_p0(this.ptr);
}
btConeTwistConstraint.prototype['setMaxMotorImpulseNormalized'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__setMaxMotorImpulseNormalized_p1(this.ptr, arg0);
}
btConeTwistConstraint.prototype['enableFeedback'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__enableFeedback_p1(this.ptr, arg0);
}
btConeTwistConstraint.prototype['internalSetAppliedImpulse'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__internalSetAppliedImpulse_p1(this.ptr, arg0);
}
btConeTwistConstraint.prototype['needsFeedback'] = function() {
    return _emscripten_bind_btConeTwistConstraint__needsFeedback_p0(this.ptr);
}
btConeTwistConstraint.prototype['getObjectType'] = function() {
    return _emscripten_bind_btConeTwistConstraint__getObjectType_p0(this.ptr);
}
btConeTwistConstraint.prototype['getSolveTwistLimit'] = function() {
    return _emscripten_bind_btConeTwistConstraint__getSolveTwistLimit_p0(this.ptr);
}
btConeTwistConstraint.prototype['getUserConstraintPtr'] = function() {
    return _emscripten_bind_btConeTwistConstraint__getUserConstraintPtr_p0(this.ptr);
}
btConeTwistConstraint.prototype['enableMotor'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__enableMotor_p1(this.ptr, arg0);
}
btConeTwistConstraint.prototype['getBFrame'] = function() {
    return wrapPointer(_emscripten_bind_btConeTwistConstraint__getBFrame_p0(this.ptr), Module['btTransform']);
}
btConeTwistConstraint.prototype['getInfo1NonVirtual'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__getInfo1NonVirtual_p1(this.ptr, arg0.ptr);
}
btConeTwistConstraint.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btConeTwistConstraint__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btConeTwistConstraint.prototype['getUid'] = function() {
    return _emscripten_bind_btConeTwistConstraint__getUid_p0(this.ptr);
}
btConeTwistConstraint.prototype['getDbgDrawSize'] = function() {
    return _emscripten_bind_btConeTwistConstraint__getDbgDrawSize_p0(this.ptr);
}
btConeTwistConstraint.prototype['__destroy__'] = function() {
    _emscripten_bind_btConeTwistConstraint____destroy___p0(this.ptr);
}
btConeTwistConstraint.prototype['setDbgDrawSize'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__setDbgDrawSize_p1(this.ptr, arg0);
}
btConeTwistConstraint.prototype['getFixThresh'] = function() {
    return _emscripten_bind_btConeTwistConstraint__getFixThresh_p0(this.ptr);
}
btConeTwistConstraint.prototype['getSolveSwingLimit'] = function() {
    return _emscripten_bind_btConeTwistConstraint__getSolveSwingLimit_p0(this.ptr);
}
btConeTwistConstraint.prototype['setUserConstraintType'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__setUserConstraintType_p1(this.ptr, arg0);
}
btConeTwistConstraint.prototype['internalGetAppliedImpulse'] = function() {
    return _emscripten_bind_btConeTwistConstraint__internalGetAppliedImpulse_p0(this.ptr);
}
btConeTwistConstraint.prototype['setAngularOnly'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__setAngularOnly_p1(this.ptr, arg0);
}
btConeTwistConstraint.prototype['setFrames'] = function(arg0, arg1) {
    _emscripten_bind_btConeTwistConstraint__setFrames_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btConeTwistConstraint.prototype['setLimit'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
  if (arg2 === undefined)
    _emscripten_bind_btConeTwistConstraint__setLimit_p2(this.ptr, arg0, arg1);
  else   if (arg3 === undefined)
    _emscripten_bind_btConeTwistConstraint__setLimit_p3(this.ptr, arg0, arg1, arg2);
  else   if (arg4 === undefined)
    _emscripten_bind_btConeTwistConstraint__setLimit_p4(this.ptr, arg0, arg1, arg2, arg3);
  else   if (arg5 === undefined)
    _emscripten_bind_btConeTwistConstraint__setLimit_p5(this.ptr, arg0, arg1, arg2, arg3, arg4);
  else 
    _emscripten_bind_btConeTwistConstraint__setLimit_p6(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5);
}
btConeTwistConstraint.prototype['getAppliedImpulse'] = function() {
    return _emscripten_bind_btConeTwistConstraint__getAppliedImpulse_p0(this.ptr);
}
btConeTwistConstraint.prototype['getTwistLimitSign'] = function() {
    return _emscripten_bind_btConeTwistConstraint__getTwistLimitSign_p0(this.ptr);
}
btConeTwistConstraint.prototype['setMaxMotorImpulse'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__setMaxMotorImpulse_p1(this.ptr, arg0);
}
btConeTwistConstraint.prototype['setupSolverConstraint'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btConeTwistConstraint__setupSolverConstraint_p4(this.ptr, arg0, arg1, arg2, arg3);
}
btConeTwistConstraint.prototype['getUserConstraintId'] = function() {
    return _emscripten_bind_btConeTwistConstraint__getUserConstraintId_p0(this.ptr);
}
btConeTwistConstraint.prototype['updateRHS'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__updateRHS_p1(this.ptr, arg0);
}
btConeTwistConstraint.prototype['getInfo2NonVirtual'] = function(arg0, arg1, arg2, arg3, arg4) {
    _emscripten_bind_btConeTwistConstraint__getInfo2NonVirtual_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr);
}
btConeTwistConstraint.prototype['setFixThresh'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__setFixThresh_p1(this.ptr, arg0);
}
btConeTwistConstraint.prototype['setMotorTargetInConstraintSpace'] = function(arg0) {
    _emscripten_bind_btConeTwistConstraint__setMotorTargetInConstraintSpace_p1(this.ptr, arg0.ptr);
}
btConeTwistConstraint.prototype['getBreakingImpulseThreshold'] = function() {
    return _emscripten_bind_btConeTwistConstraint__getBreakingImpulseThreshold_p0(this.ptr);
}
btConeTwistConstraint.prototype['getUserConstraintType'] = function() {
    return _emscripten_bind_btConeTwistConstraint__getUserConstraintType_p0(this.ptr);
}
btConeTwistConstraint.prototype['solveConstraintObsolete'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConeTwistConstraint__solveConstraintObsolete_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btConeTwistConstraint.prototype['GetPointForAngle'] = function(arg0, arg1) {
    return wrapPointer(_emscripten_bind_btConeTwistConstraint__GetPointForAngle_p2(this.ptr, arg0, arg1), Module['btVector3']);
}
btConeTwistConstraint.prototype['calcAngleInfo'] = function() {
    _emscripten_bind_btConeTwistConstraint__calcAngleInfo_p0(this.ptr);
}
btConeTwistConstraint.prototype['getTwistSpan'] = function() {
    return _emscripten_bind_btConeTwistConstraint__getTwistSpan_p0(this.ptr);
}
btConeTwistConstraint.prototype['getAFrame'] = function() {
    return wrapPointer(_emscripten_bind_btConeTwistConstraint__getAFrame_p0(this.ptr), Module['btTransform']);
}
btHingeConstraint.prototype['getRigidBodyB'] = function() {
    return wrapPointer(_emscripten_bind_btHingeConstraint__getRigidBodyB_p0(this.ptr), Module['btRigidBody']);
}
btHingeConstraint.prototype['getInfo2NonVirtual'] = function(arg0, arg1, arg2, arg3, arg4) {
    _emscripten_bind_btHingeConstraint__getInfo2NonVirtual_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr);
}
btHingeConstraint.prototype['getRigidBodyA'] = function() {
    return wrapPointer(_emscripten_bind_btHingeConstraint__getRigidBodyA_p0(this.ptr), Module['btRigidBody']);
}
btHingeConstraint.prototype['set_m_objectType'] = function(arg0) {
    _emscripten_bind_btHingeConstraint__set_m_objectType_p1(this.ptr, arg0);
}
btHingeConstraint.prototype['getMotorTargetVelosity'] = function() {
    return _emscripten_bind_btHingeConstraint__getMotorTargetVelosity_p0(this.ptr);
}
btHingeConstraint.prototype['getFrameOffsetA'] = function() {
    return wrapPointer(_emscripten_bind_btHingeConstraint__getFrameOffsetA_p0(this.ptr), Module['btTransform']);
}
btHingeConstraint.prototype['getFrameOffsetB'] = function() {
    return wrapPointer(_emscripten_bind_btHingeConstraint__getFrameOffsetB_p0(this.ptr), Module['btTransform']);
}
btHingeConstraint.prototype['buildJacobian'] = function() {
    _emscripten_bind_btHingeConstraint__buildJacobian_p0(this.ptr);
}
btHingeConstraint.prototype['setMaxMotorImpulse'] = function(arg0) {
    _emscripten_bind_btHingeConstraint__setMaxMotorImpulse_p1(this.ptr, arg0);
}
btHingeConstraint.prototype['get_m_objectType'] = function() {
    return _emscripten_bind_btHingeConstraint__get_m_objectType_p0(this.ptr);
}
btHingeConstraint.prototype['getHingeAngle'] = function(arg0, arg1) {
  if (arg0 === undefined)
    return _emscripten_bind_btHingeConstraint__getHingeAngle_p0(this.ptr);
  else 
    return _emscripten_bind_btHingeConstraint__getHingeAngle_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btHingeConstraint.prototype['testLimit'] = function(arg0, arg1) {
    _emscripten_bind_btHingeConstraint__testLimit_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btHingeConstraint.prototype['getInfo1'] = function(arg0) {
    _emscripten_bind_btHingeConstraint__getInfo1_p1(this.ptr, arg0.ptr);
}
btHingeConstraint.prototype['getInfo2Internal'] = function(arg0, arg1, arg2, arg3, arg4) {
    _emscripten_bind_btHingeConstraint__getInfo2Internal_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr);
}
btHingeConstraint.prototype['getInfo2'] = function(arg0) {
    _emscripten_bind_btHingeConstraint__getInfo2_p1(this.ptr, arg0.ptr);
}
btHingeConstraint.prototype['getUpperLimit'] = function() {
    return _emscripten_bind_btHingeConstraint__getUpperLimit_p0(this.ptr);
}
btHingeConstraint.prototype['enableAngularMotor'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btHingeConstraint__enableAngularMotor_p3(this.ptr, arg0, arg1, arg2);
}
btHingeConstraint.prototype['getLimitSign'] = function() {
    return _emscripten_bind_btHingeConstraint__getLimitSign_p0(this.ptr);
}
function btHingeConstraint(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
  if (arg3 === undefined)
    this.ptr = _emscripten_bind_btHingeConstraint__btHingeConstraint_p3(arg0.ptr, arg1.ptr, arg2.ptr);
  else   if (arg4 === undefined)
    this.ptr = _emscripten_bind_btHingeConstraint__btHingeConstraint_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3);
  else   if (arg6 === undefined)
    this.ptr = _emscripten_bind_btHingeConstraint__btHingeConstraint_p6(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr);
  else 
    this.ptr = _emscripten_bind_btHingeConstraint__btHingeConstraint_p7(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6);
  btHingeConstraint.prototype.__cache__[this.ptr] = this;
  this.__class__ = btHingeConstraint;
}
btHingeConstraint.prototype.__cache__ = {};
Module['btHingeConstraint'] = btHingeConstraint;
btHingeConstraint.prototype['isEnabled'] = function() {
    return _emscripten_bind_btHingeConstraint__isEnabled_p0(this.ptr);
}
btHingeConstraint.prototype['setUserConstraintId'] = function(arg0) {
    _emscripten_bind_btHingeConstraint__setUserConstraintId_p1(this.ptr, arg0);
}
btHingeConstraint.prototype['solveConstraintObsolete'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btHingeConstraint__solveConstraintObsolete_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btHingeConstraint.prototype['setEnabled'] = function(arg0) {
    _emscripten_bind_btHingeConstraint__setEnabled_p1(this.ptr, arg0);
}
btHingeConstraint.prototype['getConstraintType'] = function() {
    return _emscripten_bind_btHingeConstraint__getConstraintType_p0(this.ptr);
}
btHingeConstraint.prototype['enableFeedback'] = function(arg0) {
    _emscripten_bind_btHingeConstraint__enableFeedback_p1(this.ptr, arg0);
}
btHingeConstraint.prototype['setUserConstraintPtr'] = function(arg0) {
    _emscripten_bind_btHingeConstraint__setUserConstraintPtr_p1(this.ptr, arg0);
}
btHingeConstraint.prototype['getMaxMotorImpulse'] = function() {
    return _emscripten_bind_btHingeConstraint__getMaxMotorImpulse_p0(this.ptr);
}
btHingeConstraint.prototype['getLowerLimit'] = function() {
    return _emscripten_bind_btHingeConstraint__getLowerLimit_p0(this.ptr);
}
btHingeConstraint.prototype['setParam'] = function(arg0, arg1, arg2) {
  if (arg2 === undefined)
    _emscripten_bind_btHingeConstraint__setParam_p2(this.ptr, arg0, arg1);
  else 
    _emscripten_bind_btHingeConstraint__setParam_p3(this.ptr, arg0, arg1, arg2);
}
btHingeConstraint.prototype['setUseFrameOffset'] = function(arg0) {
    _emscripten_bind_btHingeConstraint__setUseFrameOffset_p1(this.ptr, arg0);
}
btHingeConstraint.prototype['getEnableAngularMotor'] = function() {
    return _emscripten_bind_btHingeConstraint__getEnableAngularMotor_p0(this.ptr);
}
btHingeConstraint.prototype['needsFeedback'] = function() {
    return _emscripten_bind_btHingeConstraint__needsFeedback_p0(this.ptr);
}
btHingeConstraint.prototype['getObjectType'] = function() {
    return _emscripten_bind_btHingeConstraint__getObjectType_p0(this.ptr);
}
btHingeConstraint.prototype['getUserConstraintPtr'] = function() {
    return _emscripten_bind_btHingeConstraint__getUserConstraintPtr_p0(this.ptr);
}
btHingeConstraint.prototype['enableMotor'] = function(arg0) {
    _emscripten_bind_btHingeConstraint__enableMotor_p1(this.ptr, arg0);
}
btHingeConstraint.prototype['getBFrame'] = function() {
    return wrapPointer(_emscripten_bind_btHingeConstraint__getBFrame_p0(this.ptr), Module['btTransform']);
}
btHingeConstraint.prototype['getInfo1NonVirtual'] = function(arg0) {
    _emscripten_bind_btHingeConstraint__getInfo1NonVirtual_p1(this.ptr, arg0.ptr);
}
btHingeConstraint.prototype['getInfo2InternalUsingFrameOffset'] = function(arg0, arg1, arg2, arg3, arg4) {
    _emscripten_bind_btHingeConstraint__getInfo2InternalUsingFrameOffset_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr);
}
btHingeConstraint.prototype['getUid'] = function() {
    return _emscripten_bind_btHingeConstraint__getUid_p0(this.ptr);
}
btHingeConstraint.prototype['getDbgDrawSize'] = function() {
    return _emscripten_bind_btHingeConstraint__getDbgDrawSize_p0(this.ptr);
}
btHingeConstraint.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btHingeConstraint__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btHingeConstraint.prototype['setDbgDrawSize'] = function(arg0) {
    _emscripten_bind_btHingeConstraint__setDbgDrawSize_p1(this.ptr, arg0);
}
btHingeConstraint.prototype['getUseFrameOffset'] = function() {
    return _emscripten_bind_btHingeConstraint__getUseFrameOffset_p0(this.ptr);
}
btHingeConstraint.prototype['setUserConstraintType'] = function(arg0) {
    _emscripten_bind_btHingeConstraint__setUserConstraintType_p1(this.ptr, arg0);
}
btHingeConstraint.prototype['internalSetAppliedImpulse'] = function(arg0) {
    _emscripten_bind_btHingeConstraint__internalSetAppliedImpulse_p1(this.ptr, arg0);
}
btHingeConstraint.prototype['setBreakingImpulseThreshold'] = function(arg0) {
    _emscripten_bind_btHingeConstraint__setBreakingImpulseThreshold_p1(this.ptr, arg0);
}
btHingeConstraint.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btHingeConstraint__calculateSerializeBufferSize_p0(this.ptr);
}
btHingeConstraint.prototype['internalGetAppliedImpulse'] = function() {
    return _emscripten_bind_btHingeConstraint__internalGetAppliedImpulse_p0(this.ptr);
}
btHingeConstraint.prototype['setAngularOnly'] = function(arg0) {
    _emscripten_bind_btHingeConstraint__setAngularOnly_p1(this.ptr, arg0);
}
btHingeConstraint.prototype['getParam'] = function(arg0, arg1) {
  if (arg1 === undefined)
    return _emscripten_bind_btHingeConstraint__getParam_p1(this.ptr, arg0);
  else 
    return _emscripten_bind_btHingeConstraint__getParam_p2(this.ptr, arg0, arg1);
}
btHingeConstraint.prototype['setLimit'] = function(arg0, arg1, arg2, arg3, arg4) {
  if (arg2 === undefined)
    _emscripten_bind_btHingeConstraint__setLimit_p2(this.ptr, arg0, arg1);
  else   if (arg3 === undefined)
    _emscripten_bind_btHingeConstraint__setLimit_p3(this.ptr, arg0, arg1, arg2);
  else   if (arg4 === undefined)
    _emscripten_bind_btHingeConstraint__setLimit_p4(this.ptr, arg0, arg1, arg2, arg3);
  else 
    _emscripten_bind_btHingeConstraint__setLimit_p5(this.ptr, arg0, arg1, arg2, arg3, arg4);
}
btHingeConstraint.prototype['getSolveLimit'] = function() {
    return _emscripten_bind_btHingeConstraint__getSolveLimit_p0(this.ptr);
}
btHingeConstraint.prototype['__destroy__'] = function() {
    _emscripten_bind_btHingeConstraint____destroy___p0(this.ptr);
}
btHingeConstraint.prototype['setupSolverConstraint'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btHingeConstraint__setupSolverConstraint_p4(this.ptr, arg0, arg1, arg2, arg3);
}
btHingeConstraint.prototype['getUserConstraintId'] = function() {
    return _emscripten_bind_btHingeConstraint__getUserConstraintId_p0(this.ptr);
}
btHingeConstraint.prototype['updateRHS'] = function(arg0) {
    _emscripten_bind_btHingeConstraint__updateRHS_p1(this.ptr, arg0);
}
btHingeConstraint.prototype['setMotorTarget'] = function(arg0, arg1) {
    _emscripten_bind_btHingeConstraint__setMotorTarget_p2(this.ptr, arg0.ptr, arg1);
}
btHingeConstraint.prototype['getBreakingImpulseThreshold'] = function() {
    return _emscripten_bind_btHingeConstraint__getBreakingImpulseThreshold_p0(this.ptr);
}
btHingeConstraint.prototype['getUserConstraintType'] = function() {
    return _emscripten_bind_btHingeConstraint__getUserConstraintType_p0(this.ptr);
}
btHingeConstraint.prototype['getAngularOnly'] = function() {
    return _emscripten_bind_btHingeConstraint__getAngularOnly_p0(this.ptr);
}
btHingeConstraint.prototype['setFrames'] = function(arg0, arg1) {
    _emscripten_bind_btHingeConstraint__setFrames_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btHingeConstraint.prototype['getAppliedImpulse'] = function() {
    return _emscripten_bind_btHingeConstraint__getAppliedImpulse_p0(this.ptr);
}
btHingeConstraint.prototype['setAxis'] = function(arg0) {
    _emscripten_bind_btHingeConstraint__setAxis_p1(this.ptr, arg0.ptr);
}
btHingeConstraint.prototype['getAFrame'] = function() {
    return wrapPointer(_emscripten_bind_btHingeConstraint__getAFrame_p0(this.ptr), Module['btTransform']);
}
btRotationalLimitMotor.prototype['set_m_loLimit'] = function(arg0) {
    _emscripten_bind_btRotationalLimitMotor__set_m_loLimit_p1(this.ptr, arg0);
}
btRotationalLimitMotor.prototype['set_m_currentLimitError'] = function(arg0) {
    _emscripten_bind_btRotationalLimitMotor__set_m_currentLimitError_p1(this.ptr, arg0);
}
btRotationalLimitMotor.prototype['set_m_maxLimitForce'] = function(arg0) {
    _emscripten_bind_btRotationalLimitMotor__set_m_maxLimitForce_p1(this.ptr, arg0);
}
btRotationalLimitMotor.prototype['needApplyTorques'] = function() {
    return _emscripten_bind_btRotationalLimitMotor__needApplyTorques_p0(this.ptr);
}
btRotationalLimitMotor.prototype['set_m_currentPosition'] = function(arg0) {
    _emscripten_bind_btRotationalLimitMotor__set_m_currentPosition_p1(this.ptr, arg0);
}
btRotationalLimitMotor.prototype['solveAngularLimits'] = function(arg0, arg1, arg2, arg3, arg4) {
    return _emscripten_bind_btRotationalLimitMotor__solveAngularLimits_p5(this.ptr, arg0, arg1.ptr, arg2, arg3.ptr, arg4.ptr);
}
btRotationalLimitMotor.prototype['get_m_stopERP'] = function() {
    return _emscripten_bind_btRotationalLimitMotor__get_m_stopERP_p0(this.ptr);
}
btRotationalLimitMotor.prototype['set_m_stopERP'] = function(arg0) {
    _emscripten_bind_btRotationalLimitMotor__set_m_stopERP_p1(this.ptr, arg0);
}
btRotationalLimitMotor.prototype['set_m_stopCFM'] = function(arg0) {
    _emscripten_bind_btRotationalLimitMotor__set_m_stopCFM_p1(this.ptr, arg0);
}
btRotationalLimitMotor.prototype['get_m_currentPosition'] = function() {
    return _emscripten_bind_btRotationalLimitMotor__get_m_currentPosition_p0(this.ptr);
}
btRotationalLimitMotor.prototype['get_m_stopCFM'] = function() {
    return _emscripten_bind_btRotationalLimitMotor__get_m_stopCFM_p0(this.ptr);
}
function btRotationalLimitMotor(arg0) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btRotationalLimitMotor__btRotationalLimitMotor_p0();
  else 
    this.ptr = _emscripten_bind_btRotationalLimitMotor__btRotationalLimitMotor_p1(arg0.ptr);
  btRotationalLimitMotor.prototype.__cache__[this.ptr] = this;
  this.__class__ = btRotationalLimitMotor;
}
btRotationalLimitMotor.prototype.__cache__ = {};
Module['btRotationalLimitMotor'] = btRotationalLimitMotor;
btRotationalLimitMotor.prototype['get_m_enableMotor'] = function() {
    return _emscripten_bind_btRotationalLimitMotor__get_m_enableMotor_p0(this.ptr);
}
btRotationalLimitMotor.prototype['set_m_enableMotor'] = function(arg0) {
    _emscripten_bind_btRotationalLimitMotor__set_m_enableMotor_p1(this.ptr, arg0);
}
btRotationalLimitMotor.prototype['testLimitValue'] = function(arg0) {
    return _emscripten_bind_btRotationalLimitMotor__testLimitValue_p1(this.ptr, arg0);
}
btRotationalLimitMotor.prototype['get_m_currentLimitError'] = function() {
    return _emscripten_bind_btRotationalLimitMotor__get_m_currentLimitError_p0(this.ptr);
}
btRotationalLimitMotor.prototype['set_m_limitSoftness'] = function(arg0) {
    _emscripten_bind_btRotationalLimitMotor__set_m_limitSoftness_p1(this.ptr, arg0);
}
btRotationalLimitMotor.prototype['get_m_loLimit'] = function() {
    return _emscripten_bind_btRotationalLimitMotor__get_m_loLimit_p0(this.ptr);
}
btRotationalLimitMotor.prototype['get_m_currentLimit'] = function() {
    return _emscripten_bind_btRotationalLimitMotor__get_m_currentLimit_p0(this.ptr);
}
btRotationalLimitMotor.prototype['set_m_hiLimit'] = function(arg0) {
    _emscripten_bind_btRotationalLimitMotor__set_m_hiLimit_p1(this.ptr, arg0);
}
btRotationalLimitMotor.prototype['get_m_bounce'] = function() {
    return _emscripten_bind_btRotationalLimitMotor__get_m_bounce_p0(this.ptr);
}
btRotationalLimitMotor.prototype['get_m_targetVelocity'] = function() {
    return _emscripten_bind_btRotationalLimitMotor__get_m_targetVelocity_p0(this.ptr);
}
btRotationalLimitMotor.prototype['get_m_accumulatedImpulse'] = function() {
    return _emscripten_bind_btRotationalLimitMotor__get_m_accumulatedImpulse_p0(this.ptr);
}
btRotationalLimitMotor.prototype['set_m_damping'] = function(arg0) {
    _emscripten_bind_btRotationalLimitMotor__set_m_damping_p1(this.ptr, arg0);
}
btRotationalLimitMotor.prototype['set_m_maxMotorForce'] = function(arg0) {
    _emscripten_bind_btRotationalLimitMotor__set_m_maxMotorForce_p1(this.ptr, arg0);
}
btRotationalLimitMotor.prototype['set_m_normalCFM'] = function(arg0) {
    _emscripten_bind_btRotationalLimitMotor__set_m_normalCFM_p1(this.ptr, arg0);
}
btRotationalLimitMotor.prototype['__destroy__'] = function() {
    _emscripten_bind_btRotationalLimitMotor____destroy___p0(this.ptr);
}
btRotationalLimitMotor.prototype['get_m_maxLimitForce'] = function() {
    return _emscripten_bind_btRotationalLimitMotor__get_m_maxLimitForce_p0(this.ptr);
}
btRotationalLimitMotor.prototype['get_m_damping'] = function() {
    return _emscripten_bind_btRotationalLimitMotor__get_m_damping_p0(this.ptr);
}
btRotationalLimitMotor.prototype['get_m_normalCFM'] = function() {
    return _emscripten_bind_btRotationalLimitMotor__get_m_normalCFM_p0(this.ptr);
}
btRotationalLimitMotor.prototype['get_m_hiLimit'] = function() {
    return _emscripten_bind_btRotationalLimitMotor__get_m_hiLimit_p0(this.ptr);
}
btRotationalLimitMotor.prototype['set_m_accumulatedImpulse'] = function(arg0) {
    _emscripten_bind_btRotationalLimitMotor__set_m_accumulatedImpulse_p1(this.ptr, arg0);
}
btRotationalLimitMotor.prototype['set_m_targetVelocity'] = function(arg0) {
    _emscripten_bind_btRotationalLimitMotor__set_m_targetVelocity_p1(this.ptr, arg0);
}
btRotationalLimitMotor.prototype['isLimited'] = function() {
    return _emscripten_bind_btRotationalLimitMotor__isLimited_p0(this.ptr);
}
btRotationalLimitMotor.prototype['get_m_maxMotorForce'] = function() {
    return _emscripten_bind_btRotationalLimitMotor__get_m_maxMotorForce_p0(this.ptr);
}
btRotationalLimitMotor.prototype['set_m_currentLimit'] = function(arg0) {
    _emscripten_bind_btRotationalLimitMotor__set_m_currentLimit_p1(this.ptr, arg0);
}
btRotationalLimitMotor.prototype['set_m_bounce'] = function(arg0) {
    _emscripten_bind_btRotationalLimitMotor__set_m_bounce_p1(this.ptr, arg0);
}
btRotationalLimitMotor.prototype['get_m_limitSoftness'] = function() {
    return _emscripten_bind_btRotationalLimitMotor__get_m_limitSoftness_p0(this.ptr);
}
function btVehicleRaycaster(){ throw "btVehicleRaycaster is abstract!" }
btVehicleRaycaster.prototype.__cache__ = {};
Module['btVehicleRaycaster'] = btVehicleRaycaster;
btVehicleRaycaster.prototype['castRay'] = function(arg0, arg1, arg2) {
    return _emscripten_bind_btVehicleRaycaster__castRay_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConeShapeZ.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btConeShapeZ__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btConeShapeZ.prototype['isCompound'] = function() {
    return _emscripten_bind_btConeShapeZ__isCompound_p0(this.ptr);
}
btConeShapeZ.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConeShapeZ__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConeShapeZ.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btConeShapeZ__setUserPointer_p1(this.ptr, arg0);
}
btConeShapeZ.prototype['getMarginNV'] = function() {
    return _emscripten_bind_btConeShapeZ__getMarginNV_p0(this.ptr);
}
btConeShapeZ.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btConeShapeZ__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btConeShapeZ.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btConeShapeZ__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btConeShapeZ.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btConeShapeZ__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btConeShapeZ.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btConeShapeZ__isPolyhedral_p0(this.ptr);
}
btConeShapeZ.prototype['getRadius'] = function() {
    return _emscripten_bind_btConeShapeZ__getRadius_p0(this.ptr);
}
btConeShapeZ.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConeShapeZ__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConeShapeZ.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btConeShapeZ__calculateSerializeBufferSize_p0(this.ptr);
}
function btConeShapeZ(arg0, arg1) {
    this.ptr = _emscripten_bind_btConeShapeZ__btConeShapeZ_p2(arg0, arg1);
  btConeShapeZ.prototype.__cache__[this.ptr] = this;
  this.__class__ = btConeShapeZ;
}
btConeShapeZ.prototype.__cache__ = {};
Module['btConeShapeZ'] = btConeShapeZ;
btConeShapeZ.prototype['getName'] = function() {
    return _emscripten_bind_btConeShapeZ__getName_p0(this.ptr);
}
btConeShapeZ.prototype['getHeight'] = function() {
    return _emscripten_bind_btConeShapeZ__getHeight_p0(this.ptr);
}
btConeShapeZ.prototype['getLocalScalingNV'] = function() {
    return wrapPointer(_emscripten_bind_btConeShapeZ__getLocalScalingNV_p0(this.ptr), Module['btVector3']);
}
btConeShapeZ.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConeShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConeShapeZ.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConeShapeZ__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConeShapeZ.prototype['setConeUpIndex'] = function(arg0) {
    _emscripten_bind_btConeShapeZ__setConeUpIndex_p1(this.ptr, arg0);
}
btConeShapeZ.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btConeShapeZ__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btConeShapeZ.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConeShapeZ__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConeShapeZ.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConeShapeZ__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConeShapeZ.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btConeShapeZ__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btConeShapeZ.prototype['isConvex'] = function() {
    return _emscripten_bind_btConeShapeZ__isConvex_p0(this.ptr);
}
btConeShapeZ.prototype['isInfinite'] = function() {
    return _emscripten_bind_btConeShapeZ__isInfinite_p0(this.ptr);
}
btConeShapeZ.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btConeShapeZ__getUserPointer_p0(this.ptr);
}
btConeShapeZ.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btConeShapeZ__isNonMoving_p0(this.ptr);
}
btConeShapeZ.prototype['getMargin'] = function() {
    return _emscripten_bind_btConeShapeZ__getMargin_p0(this.ptr);
}
btConeShapeZ.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btConeShapeZ__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btConeShapeZ.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btConeShapeZ__setMargin_p1(this.ptr, arg0);
}
btConeShapeZ.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btConeShapeZ__isConvex2d_p0(this.ptr);
}
btConeShapeZ.prototype['setImplicitShapeDimensions'] = function(arg0) {
    _emscripten_bind_btConeShapeZ__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr);
}
btConeShapeZ.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btConeShapeZ__isSoftBody_p0(this.ptr);
}
btConeShapeZ.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btConeShapeZ__getMarginNonVirtual_p0(this.ptr);
}
btConeShapeZ.prototype['__destroy__'] = function() {
    _emscripten_bind_btConeShapeZ____destroy___p0(this.ptr);
}
btConeShapeZ.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConeShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btConeShapeZ.prototype['getImplicitShapeDimensions'] = function() {
    return wrapPointer(_emscripten_bind_btConeShapeZ__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']);
}
btConeShapeZ.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btConeShapeZ__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btConeShapeZ.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btConeShapeZ__getAngularMotionDisc_p0(this.ptr);
}
btConeShapeZ.prototype['getConeUpIndex'] = function() {
    return _emscripten_bind_btConeShapeZ__getConeUpIndex_p0(this.ptr);
}
btConeShapeZ.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btConeShapeZ__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btConeShapeZ.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConeShapeZ__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConeShapeZ.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btConeShapeZ__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btConeShapeZ.prototype['isConcave'] = function() {
    return _emscripten_bind_btConeShapeZ__isConcave_p0(this.ptr);
}
btConeShapeZ.prototype['getShapeType'] = function() {
    return _emscripten_bind_btConeShapeZ__getShapeType_p0(this.ptr);
}
btConeShapeX.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btConeShapeX__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btConeShapeX.prototype['isCompound'] = function() {
    return _emscripten_bind_btConeShapeX__isCompound_p0(this.ptr);
}
btConeShapeX.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConeShapeX__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConeShapeX.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btConeShapeX__setUserPointer_p1(this.ptr, arg0);
}
btConeShapeX.prototype['getMarginNV'] = function() {
    return _emscripten_bind_btConeShapeX__getMarginNV_p0(this.ptr);
}
btConeShapeX.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btConeShapeX__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btConeShapeX.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btConeShapeX__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btConeShapeX.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btConeShapeX__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btConeShapeX.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btConeShapeX__isPolyhedral_p0(this.ptr);
}
btConeShapeX.prototype['getRadius'] = function() {
    return _emscripten_bind_btConeShapeX__getRadius_p0(this.ptr);
}
btConeShapeX.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConeShapeX__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConeShapeX.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btConeShapeX__calculateSerializeBufferSize_p0(this.ptr);
}
function btConeShapeX(arg0, arg1) {
    this.ptr = _emscripten_bind_btConeShapeX__btConeShapeX_p2(arg0, arg1);
  btConeShapeX.prototype.__cache__[this.ptr] = this;
  this.__class__ = btConeShapeX;
}
btConeShapeX.prototype.__cache__ = {};
Module['btConeShapeX'] = btConeShapeX;
btConeShapeX.prototype['getHeight'] = function() {
    return _emscripten_bind_btConeShapeX__getHeight_p0(this.ptr);
}
btConeShapeX.prototype['getLocalScalingNV'] = function() {
    return wrapPointer(_emscripten_bind_btConeShapeX__getLocalScalingNV_p0(this.ptr), Module['btVector3']);
}
btConeShapeX.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConeShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConeShapeX.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConeShapeX__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConeShapeX.prototype['setConeUpIndex'] = function(arg0) {
    _emscripten_bind_btConeShapeX__setConeUpIndex_p1(this.ptr, arg0);
}
btConeShapeX.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btConeShapeX__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btConeShapeX.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConeShapeX__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConeShapeX.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConeShapeX__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConeShapeX.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btConeShapeX__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btConeShapeX.prototype['isConvex'] = function() {
    return _emscripten_bind_btConeShapeX__isConvex_p0(this.ptr);
}
btConeShapeX.prototype['isInfinite'] = function() {
    return _emscripten_bind_btConeShapeX__isInfinite_p0(this.ptr);
}
btConeShapeX.prototype['isConcave'] = function() {
    return _emscripten_bind_btConeShapeX__isConcave_p0(this.ptr);
}
btConeShapeX.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btConeShapeX__getUserPointer_p0(this.ptr);
}
btConeShapeX.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btConeShapeX__isNonMoving_p0(this.ptr);
}
btConeShapeX.prototype['getMargin'] = function() {
    return _emscripten_bind_btConeShapeX__getMargin_p0(this.ptr);
}
btConeShapeX.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btConeShapeX__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btConeShapeX.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btConeShapeX__setMargin_p1(this.ptr, arg0);
}
btConeShapeX.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btConeShapeX__isConvex2d_p0(this.ptr);
}
btConeShapeX.prototype['setImplicitShapeDimensions'] = function(arg0) {
    _emscripten_bind_btConeShapeX__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr);
}
btConeShapeX.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btConeShapeX__isSoftBody_p0(this.ptr);
}
btConeShapeX.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btConeShapeX__getMarginNonVirtual_p0(this.ptr);
}
btConeShapeX.prototype['__destroy__'] = function() {
    _emscripten_bind_btConeShapeX____destroy___p0(this.ptr);
}
btConeShapeX.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConeShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btConeShapeX.prototype['getImplicitShapeDimensions'] = function() {
    return wrapPointer(_emscripten_bind_btConeShapeX__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']);
}
btConeShapeX.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btConeShapeX__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btConeShapeX.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btConeShapeX__getAngularMotionDisc_p0(this.ptr);
}
btConeShapeX.prototype['getConeUpIndex'] = function() {
    return _emscripten_bind_btConeShapeX__getConeUpIndex_p0(this.ptr);
}
btConeShapeX.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btConeShapeX__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btConeShapeX.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConeShapeX__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConeShapeX.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btConeShapeX__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btConeShapeX.prototype['getName'] = function() {
    return _emscripten_bind_btConeShapeX__getName_p0(this.ptr);
}
btConeShapeX.prototype['getShapeType'] = function() {
    return _emscripten_bind_btConeShapeX__getShapeType_p0(this.ptr);
}
btTriangleMesh.prototype['get_m_weldingThreshold'] = function() {
    return _emscripten_bind_btTriangleMesh__get_m_weldingThreshold_p0(this.ptr);
}
btTriangleMesh.prototype['addIndex'] = function(arg0) {
    _emscripten_bind_btTriangleMesh__addIndex_p1(this.ptr, arg0);
}
btTriangleMesh.prototype['preallocateVertices'] = function(arg0) {
    _emscripten_bind_btTriangleMesh__preallocateVertices_p1(this.ptr, arg0);
}
btTriangleMesh.prototype['calculateAabbBruteForce'] = function(arg0, arg1) {
    _emscripten_bind_btTriangleMesh__calculateAabbBruteForce_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btTriangleMesh.prototype['findOrAddVertex'] = function(arg0, arg1) {
    return _emscripten_bind_btTriangleMesh__findOrAddVertex_p2(this.ptr, arg0.ptr, arg1);
}
btTriangleMesh.prototype['addIndexedMesh'] = function(arg0, arg1) {
  if (arg1 === undefined)
    _emscripten_bind_btTriangleMesh__addIndexedMesh_p1(this.ptr, arg0.ptr);
  else 
    _emscripten_bind_btTriangleMesh__addIndexedMesh_p2(this.ptr, arg0.ptr, arg1);
}
btTriangleMesh.prototype['getPremadeAabb'] = function(arg0, arg1) {
    _emscripten_bind_btTriangleMesh__getPremadeAabb_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btTriangleMesh.prototype['getUse4componentVertices'] = function() {
    return _emscripten_bind_btTriangleMesh__getUse4componentVertices_p0(this.ptr);
}
btTriangleMesh.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btTriangleMesh__calculateSerializeBufferSize_p0(this.ptr);
}
function btTriangleMesh(arg0, arg1) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btTriangleMesh__btTriangleMesh_p0();
  else   if (arg1 === undefined)
    this.ptr = _emscripten_bind_btTriangleMesh__btTriangleMesh_p1(arg0);
  else 
    this.ptr = _emscripten_bind_btTriangleMesh__btTriangleMesh_p2(arg0, arg1);
  btTriangleMesh.prototype.__cache__[this.ptr] = this;
  this.__class__ = btTriangleMesh;
}
btTriangleMesh.prototype.__cache__ = {};
Module['btTriangleMesh'] = btTriangleMesh;
btTriangleMesh.prototype['getScaling'] = function() {
    return wrapPointer(_emscripten_bind_btTriangleMesh__getScaling_p0(this.ptr), Module['btVector3']);
}
btTriangleMesh.prototype['setPremadeAabb'] = function(arg0, arg1) {
    _emscripten_bind_btTriangleMesh__setPremadeAabb_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btTriangleMesh.prototype['InternalProcessAllTriangles'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btTriangleMesh__InternalProcessAllTriangles_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btTriangleMesh.prototype['setScaling'] = function(arg0) {
    _emscripten_bind_btTriangleMesh__setScaling_p1(this.ptr, arg0.ptr);
}
btTriangleMesh.prototype['unLockReadOnlyVertexBase'] = function(arg0) {
    _emscripten_bind_btTriangleMesh__unLockReadOnlyVertexBase_p1(this.ptr, arg0);
}
btTriangleMesh.prototype['set_m_weldingThreshold'] = function(arg0) {
    _emscripten_bind_btTriangleMesh__set_m_weldingThreshold_p1(this.ptr, arg0);
}
btTriangleMesh.prototype['getLockedReadOnlyVertexIndexBase'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {
  if (arg8 === undefined)
    _emscripten_bind_btTriangleMesh__getLockedReadOnlyVertexIndexBase_p8(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
  else 
    _emscripten_bind_btTriangleMesh__getLockedReadOnlyVertexIndexBase_p9(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
}
btTriangleMesh.prototype['preallocateIndices'] = function(arg0) {
    _emscripten_bind_btTriangleMesh__preallocateIndices_p1(this.ptr, arg0);
}
btTriangleMesh.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btTriangleMesh__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btTriangleMesh.prototype['getUse32bitIndices'] = function() {
    return _emscripten_bind_btTriangleMesh__getUse32bitIndices_p0(this.ptr);
}
btTriangleMesh.prototype['unLockVertexBase'] = function(arg0) {
    _emscripten_bind_btTriangleMesh__unLockVertexBase_p1(this.ptr, arg0);
}
btTriangleMesh.prototype['__destroy__'] = function() {
    _emscripten_bind_btTriangleMesh____destroy___p0(this.ptr);
}
btTriangleMesh.prototype['getNumTriangles'] = function() {
    return _emscripten_bind_btTriangleMesh__getNumTriangles_p0(this.ptr);
}
btTriangleMesh.prototype['getIndexedMeshArray'] = function() {
    return _emscripten_bind_btTriangleMesh__getIndexedMeshArray_p0(this.ptr);
}
btTriangleMesh.prototype['getNumSubParts'] = function() {
    return _emscripten_bind_btTriangleMesh__getNumSubParts_p0(this.ptr);
}
btTriangleMesh.prototype['getLockedVertexIndexBase'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {
  if (arg8 === undefined)
    _emscripten_bind_btTriangleMesh__getLockedVertexIndexBase_p8(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
  else 
    _emscripten_bind_btTriangleMesh__getLockedVertexIndexBase_p9(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
}
btTriangleMesh.prototype['hasPremadeAabb'] = function() {
    return _emscripten_bind_btTriangleMesh__hasPremadeAabb_p0(this.ptr);
}
btTriangleMesh.prototype['addTriangle'] = function(arg0, arg1, arg2, arg3) {
  if (arg3 === undefined)
    _emscripten_bind_btTriangleMesh__addTriangle_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
  else 
    _emscripten_bind_btTriangleMesh__addTriangle_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3);
}
function btBroadphaseAabbCallback(){ throw "btBroadphaseAabbCallback is abstract!" }
btBroadphaseAabbCallback.prototype.__cache__ = {};
Module['btBroadphaseAabbCallback'] = btBroadphaseAabbCallback;
btBroadphaseAabbCallback.prototype['process'] = function(arg0) {
    return _emscripten_bind_btBroadphaseAabbCallback__process_p1(this.ptr, arg0.ptr);
}
btBroadphasePair.prototype['__destroy__'] = function() {
    _emscripten_bind_btBroadphasePair____destroy___p0(this.ptr);
}
btBroadphasePair.prototype['set_m_internalTmpValue'] = function(arg0) {
    _emscripten_bind_btBroadphasePair__set_m_internalTmpValue_p1(this.ptr, arg0);
}
btBroadphasePair.prototype['get_m_pProxy0'] = function() {
    return wrapPointer(_emscripten_bind_btBroadphasePair__get_m_pProxy0_p0(this.ptr), Module['btBroadphaseProxy']);
}
btBroadphasePair.prototype['get_m_pProxy1'] = function() {
    return wrapPointer(_emscripten_bind_btBroadphasePair__get_m_pProxy1_p0(this.ptr), Module['btBroadphaseProxy']);
}
btBroadphasePair.prototype['set_m_pProxy0'] = function(arg0) {
    _emscripten_bind_btBroadphasePair__set_m_pProxy0_p1(this.ptr, arg0.ptr);
}
btBroadphasePair.prototype['set_m_pProxy1'] = function(arg0) {
    _emscripten_bind_btBroadphasePair__set_m_pProxy1_p1(this.ptr, arg0.ptr);
}
function btBroadphasePair(arg0, arg1) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btBroadphasePair__btBroadphasePair_p0();
  else   if (arg1 === undefined)
    this.ptr = _emscripten_bind_btBroadphasePair__btBroadphasePair_p1(arg0.ptr);
  else 
    this.ptr = _emscripten_bind_btBroadphasePair__btBroadphasePair_p2(arg0.ptr, arg1.ptr);
  btBroadphasePair.prototype.__cache__[this.ptr] = this;
  this.__class__ = btBroadphasePair;
}
btBroadphasePair.prototype.__cache__ = {};
Module['btBroadphasePair'] = btBroadphasePair;
btBroadphasePair.prototype['get_m_internalTmpValue'] = function() {
    return _emscripten_bind_btBroadphasePair__get_m_internalTmpValue_p0(this.ptr);
}
btBroadphasePair.prototype['get_m_internalInfo1'] = function() {
    return _emscripten_bind_btBroadphasePair__get_m_internalInfo1_p0(this.ptr);
}
btBroadphasePair.prototype['get_m_algorithm'] = function() {
    return wrapPointer(_emscripten_bind_btBroadphasePair__get_m_algorithm_p0(this.ptr), Module['btCollisionAlgorithm']);
}
btBroadphasePair.prototype['set_m_internalInfo1'] = function(arg0) {
    _emscripten_bind_btBroadphasePair__set_m_internalInfo1_p1(this.ptr, arg0);
}
btBroadphasePair.prototype['set_m_algorithm'] = function(arg0) {
    _emscripten_bind_btBroadphasePair__set_m_algorithm_p1(this.ptr, arg0.ptr);
}
function btBroadphaseRayCallback(){ throw "btBroadphaseRayCallback is abstract!" }
btBroadphaseRayCallback.prototype.__cache__ = {};
Module['btBroadphaseRayCallback'] = btBroadphaseRayCallback;
btBroadphaseRayCallback.prototype['process'] = function(arg0) {
    return _emscripten_bind_btBroadphaseRayCallback__process_p1(this.ptr, arg0.ptr);
}
btBroadphaseRayCallback.prototype['get_m_rayDirectionInverse'] = function() {
    return wrapPointer(_emscripten_bind_btBroadphaseRayCallback__get_m_rayDirectionInverse_p0(this.ptr), Module['btVector3']);
}
btBroadphaseRayCallback.prototype['set_m_rayDirectionInverse'] = function(arg0) {
    _emscripten_bind_btBroadphaseRayCallback__set_m_rayDirectionInverse_p1(this.ptr, arg0.ptr);
}
btBroadphaseRayCallback.prototype['set_m_lambda_max'] = function(arg0) {
    _emscripten_bind_btBroadphaseRayCallback__set_m_lambda_max_p1(this.ptr, arg0);
}
btBroadphaseRayCallback.prototype['get_m_lambda_max'] = function() {
    return _emscripten_bind_btBroadphaseRayCallback__get_m_lambda_max_p0(this.ptr);
}
function ConvexResultCallback(){ throw "ConvexResultCallback is abstract!" }
ConvexResultCallback.prototype.__cache__ = {};
Module['ConvexResultCallback'] = ConvexResultCallback;
ConvexResultCallback.prototype['get_m_closestHitFraction'] = function() {
    return _emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_closestHitFraction_p0(this.ptr);
}
ConvexResultCallback.prototype['set_m_collisionFilterGroup'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_collisionFilterGroup_p1(this.ptr, arg0);
}
ConvexResultCallback.prototype['needsCollision'] = function(arg0) {
    return _emscripten_bind_btCollisionWorld__ConvexResultCallback__needsCollision_p1(this.ptr, arg0.ptr);
}
ConvexResultCallback.prototype['set_m_closestHitFraction'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_closestHitFraction_p1(this.ptr, arg0);
}
ConvexResultCallback.prototype['set_m_collisionFilterMask'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_collisionFilterMask_p1(this.ptr, arg0);
}
ConvexResultCallback.prototype['hasHit'] = function() {
    return _emscripten_bind_btCollisionWorld__ConvexResultCallback__hasHit_p0(this.ptr);
}
ConvexResultCallback.prototype['get_m_collisionFilterMask'] = function() {
    return _emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_collisionFilterMask_p0(this.ptr);
}
ConvexResultCallback.prototype['get_m_collisionFilterGroup'] = function() {
    return _emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_collisionFilterGroup_p0(this.ptr);
}
ConvexResultCallback.prototype['addSingleResult'] = function(arg0, arg1) {
    return _emscripten_bind_btCollisionWorld__ConvexResultCallback__addSingleResult_p2(this.ptr, arg0.ptr, arg1);
}
btDefaultMotionState.prototype['__destroy__'] = function() {
    _emscripten_bind_btDefaultMotionState____destroy___p0(this.ptr);
}
btDefaultMotionState.prototype['get_m_startWorldTrans'] = function() {
    return wrapPointer(_emscripten_bind_btDefaultMotionState__get_m_startWorldTrans_p0(this.ptr), Module['btTransform']);
}
btDefaultMotionState.prototype['get_m_userPointer'] = function() {
    return _emscripten_bind_btDefaultMotionState__get_m_userPointer_p0(this.ptr);
}
btDefaultMotionState.prototype['getWorldTransform'] = function(arg0) {
    _emscripten_bind_btDefaultMotionState__getWorldTransform_p1(this.ptr, arg0.ptr);
}
btDefaultMotionState.prototype['set_m_startWorldTrans'] = function(arg0) {
    _emscripten_bind_btDefaultMotionState__set_m_startWorldTrans_p1(this.ptr, arg0.ptr);
}
btDefaultMotionState.prototype['setWorldTransform'] = function(arg0) {
    _emscripten_bind_btDefaultMotionState__setWorldTransform_p1(this.ptr, arg0.ptr);
}
btDefaultMotionState.prototype['get_m_graphicsWorldTrans'] = function() {
    return wrapPointer(_emscripten_bind_btDefaultMotionState__get_m_graphicsWorldTrans_p0(this.ptr), Module['btTransform']);
}
btDefaultMotionState.prototype['set_m_userPointer'] = function(arg0) {
    _emscripten_bind_btDefaultMotionState__set_m_userPointer_p1(this.ptr, arg0);
}
btDefaultMotionState.prototype['set_m_graphicsWorldTrans'] = function(arg0) {
    _emscripten_bind_btDefaultMotionState__set_m_graphicsWorldTrans_p1(this.ptr, arg0.ptr);
}
function btDefaultMotionState(arg0, arg1) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btDefaultMotionState__btDefaultMotionState_p0();
  else   if (arg1 === undefined)
    this.ptr = _emscripten_bind_btDefaultMotionState__btDefaultMotionState_p1(arg0.ptr);
  else 
    this.ptr = _emscripten_bind_btDefaultMotionState__btDefaultMotionState_p2(arg0.ptr, arg1.ptr);
  btDefaultMotionState.prototype.__cache__[this.ptr] = this;
  this.__class__ = btDefaultMotionState;
}
btDefaultMotionState.prototype.__cache__ = {};
Module['btDefaultMotionState'] = btDefaultMotionState;
btDefaultMotionState.prototype['get_m_centerOfMassOffset'] = function() {
    return wrapPointer(_emscripten_bind_btDefaultMotionState__get_m_centerOfMassOffset_p0(this.ptr), Module['btTransform']);
}
btDefaultMotionState.prototype['set_m_centerOfMassOffset'] = function(arg0) {
    _emscripten_bind_btDefaultMotionState__set_m_centerOfMassOffset_p1(this.ptr, arg0.ptr);
}
btContinuousDynamicsWorld.prototype['setGravity'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__setGravity_p1(this.ptr, arg0.ptr);
}
btContinuousDynamicsWorld.prototype['addAction'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__addAction_p1(this.ptr, arg0.ptr);
}
btContinuousDynamicsWorld.prototype['getSolverInfo'] = function() {
    return wrapPointer(_emscripten_bind_btContinuousDynamicsWorld__getSolverInfo_p0(this.ptr), Module['btContactSolverInfo']);
}
btContinuousDynamicsWorld.prototype['getDebugDrawer'] = function() {
    return wrapPointer(_emscripten_bind_btContinuousDynamicsWorld__getDebugDrawer_p0(this.ptr), Module['btIDebugDraw']);
}
btContinuousDynamicsWorld.prototype['applyGravity'] = function() {
    _emscripten_bind_btContinuousDynamicsWorld__applyGravity_p0(this.ptr);
}
btContinuousDynamicsWorld.prototype['serialize'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__serialize_p1(this.ptr, arg0.ptr);
}
btContinuousDynamicsWorld.prototype['getDispatcher'] = function() {
    return wrapPointer(_emscripten_bind_btContinuousDynamicsWorld__getDispatcher_p0(this.ptr), Module['btDispatcher']);
}
btContinuousDynamicsWorld.prototype['getCollisionWorld'] = function() {
    return wrapPointer(_emscripten_bind_btContinuousDynamicsWorld__getCollisionWorld_p0(this.ptr), Module['btCollisionWorld']);
}
btContinuousDynamicsWorld.prototype['addRigidBody'] = function(arg0, arg1, arg2) {
  if (arg1 === undefined)
    _emscripten_bind_btContinuousDynamicsWorld__addRigidBody_p1(this.ptr, arg0.ptr);
  else 
    _emscripten_bind_btContinuousDynamicsWorld__addRigidBody_p3(this.ptr, arg0.ptr, arg1, arg2);
}
btContinuousDynamicsWorld.prototype['clearForces'] = function() {
    _emscripten_bind_btContinuousDynamicsWorld__clearForces_p0(this.ptr);
}
btContinuousDynamicsWorld.prototype['removeVehicle'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__removeVehicle_p1(this.ptr, arg0.ptr);
}
btContinuousDynamicsWorld.prototype['internalSingleStepSimulation'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__internalSingleStepSimulation_p1(this.ptr, arg0);
}
btContinuousDynamicsWorld.prototype['setBroadphase'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__setBroadphase_p1(this.ptr, arg0.ptr);
}
btContinuousDynamicsWorld.prototype['getSynchronizeAllMotionStates'] = function() {
    return _emscripten_bind_btContinuousDynamicsWorld__getSynchronizeAllMotionStates_p0(this.ptr);
}
btContinuousDynamicsWorld.prototype['setNumTasks'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__setNumTasks_p1(this.ptr, arg0);
}
btContinuousDynamicsWorld.prototype['setSynchronizeAllMotionStates'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__setSynchronizeAllMotionStates_p1(this.ptr, arg0);
}
btContinuousDynamicsWorld.prototype['calculateTimeOfImpacts'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__calculateTimeOfImpacts_p1(this.ptr, arg0);
}
btContinuousDynamicsWorld.prototype['debugDrawObject'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btContinuousDynamicsWorld__debugDrawObject_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btContinuousDynamicsWorld.prototype['removeConstraint'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__removeConstraint_p1(this.ptr, arg0.ptr);
}
btContinuousDynamicsWorld.prototype['rayTest'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btContinuousDynamicsWorld__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btContinuousDynamicsWorld.prototype['getNumConstraints'] = function() {
    return _emscripten_bind_btContinuousDynamicsWorld__getNumConstraints_p0(this.ptr);
}
btContinuousDynamicsWorld.prototype['addCollisionObject'] = function(arg0, arg1, arg2) {
  if (arg1 === undefined)
    _emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p1(this.ptr, arg0.ptr);
  else   if (arg2 === undefined)
    _emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p2(this.ptr, arg0.ptr, arg1);
  else 
    _emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p3(this.ptr, arg0.ptr, arg1, arg2);
}
btContinuousDynamicsWorld.prototype['removeRigidBody'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__removeRigidBody_p1(this.ptr, arg0.ptr);
}
btContinuousDynamicsWorld.prototype['contactTest'] = function(arg0, arg1) {
    _emscripten_bind_btContinuousDynamicsWorld__contactTest_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btContinuousDynamicsWorld.prototype['performDiscreteCollisionDetection'] = function() {
    _emscripten_bind_btContinuousDynamicsWorld__performDiscreteCollisionDetection_p0(this.ptr);
}
btContinuousDynamicsWorld.prototype['setInternalTickCallback'] = function(arg0, arg1, arg2) {
  if (arg1 === undefined)
    _emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p1(this.ptr, arg0);
  else   if (arg2 === undefined)
    _emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p2(this.ptr, arg0, arg1);
  else 
    _emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p3(this.ptr, arg0, arg1, arg2);
}
btContinuousDynamicsWorld.prototype['getForceUpdateAllAabbs'] = function() {
    return _emscripten_bind_btContinuousDynamicsWorld__getForceUpdateAllAabbs_p0(this.ptr);
}
btContinuousDynamicsWorld.prototype['updateAabbs'] = function() {
    _emscripten_bind_btContinuousDynamicsWorld__updateAabbs_p0(this.ptr);
}
btContinuousDynamicsWorld.prototype['setDebugDrawer'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__setDebugDrawer_p1(this.ptr, arg0.ptr);
}
btContinuousDynamicsWorld.prototype['debugDrawConstraint'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__debugDrawConstraint_p1(this.ptr, arg0.ptr);
}
btContinuousDynamicsWorld.prototype['debugDrawWorld'] = function() {
    _emscripten_bind_btContinuousDynamicsWorld__debugDrawWorld_p0(this.ptr);
}
btContinuousDynamicsWorld.prototype['convexSweepTest'] = function(arg0, arg1, arg2, arg3, arg4) {
  if (arg4 === undefined)
    _emscripten_bind_btContinuousDynamicsWorld__convexSweepTest_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
  else 
    _emscripten_bind_btContinuousDynamicsWorld__convexSweepTest_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4);
}
function btContinuousDynamicsWorld(arg0, arg1, arg2, arg3) {
    this.ptr = _emscripten_bind_btContinuousDynamicsWorld__btContinuousDynamicsWorld_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
  btContinuousDynamicsWorld.prototype.__cache__[this.ptr] = this;
  this.__class__ = btContinuousDynamicsWorld;
}
btContinuousDynamicsWorld.prototype.__cache__ = {};
Module['btContinuousDynamicsWorld'] = btContinuousDynamicsWorld;
btContinuousDynamicsWorld.prototype['getNumCollisionObjects'] = function() {
    return _emscripten_bind_btContinuousDynamicsWorld__getNumCollisionObjects_p0(this.ptr);
}
btContinuousDynamicsWorld.prototype['setWorldUserInfo'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__setWorldUserInfo_p1(this.ptr, arg0);
}
btContinuousDynamicsWorld.prototype['addConstraint'] = function(arg0, arg1) {
  if (arg1 === undefined)
    _emscripten_bind_btContinuousDynamicsWorld__addConstraint_p1(this.ptr, arg0.ptr);
  else 
    _emscripten_bind_btContinuousDynamicsWorld__addConstraint_p2(this.ptr, arg0.ptr, arg1);
}
btContinuousDynamicsWorld.prototype['getWorldUserInfo'] = function() {
    return _emscripten_bind_btContinuousDynamicsWorld__getWorldUserInfo_p0(this.ptr);
}
btContinuousDynamicsWorld.prototype['contactPairTest'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btContinuousDynamicsWorld__contactPairTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btContinuousDynamicsWorld.prototype['getGravity'] = function() {
    return wrapPointer(_emscripten_bind_btContinuousDynamicsWorld__getGravity_p0(this.ptr), Module['btVector3']);
}
btContinuousDynamicsWorld.prototype['getBroadphase'] = function() {
    return wrapPointer(_emscripten_bind_btContinuousDynamicsWorld__getBroadphase_p0(this.ptr), Module['btBroadphaseInterface']);
}
btContinuousDynamicsWorld.prototype['rayTestSingle'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btContinuousDynamicsWorld__rayTestSingle_p6(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr);
}
btContinuousDynamicsWorld.prototype['removeAction'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__removeAction_p1(this.ptr, arg0.ptr);
}
btContinuousDynamicsWorld.prototype['setForceUpdateAllAabbs'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__setForceUpdateAllAabbs_p1(this.ptr, arg0);
}
btContinuousDynamicsWorld.prototype['__destroy__'] = function() {
    _emscripten_bind_btContinuousDynamicsWorld____destroy___p0(this.ptr);
}
btContinuousDynamicsWorld.prototype['removeCharacter'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__removeCharacter_p1(this.ptr, arg0.ptr);
}
btContinuousDynamicsWorld.prototype['getConstraint'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btContinuousDynamicsWorld__getConstraint_p1(this.ptr, arg0), Module['btTypedConstraint']);
}
btContinuousDynamicsWorld.prototype['getConstraintSolver'] = function() {
    return wrapPointer(_emscripten_bind_btContinuousDynamicsWorld__getConstraintSolver_p0(this.ptr), Module['btConstraintSolver']);
}
btContinuousDynamicsWorld.prototype['stepSimulation'] = function(arg0, arg1, arg2) {
  if (arg1 === undefined)
    return _emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p1(this.ptr, arg0);
  else   if (arg2 === undefined)
    return _emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p2(this.ptr, arg0, arg1);
  else 
    return _emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p3(this.ptr, arg0, arg1, arg2);
}
btContinuousDynamicsWorld.prototype['addCharacter'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__addCharacter_p1(this.ptr, arg0.ptr);
}
btContinuousDynamicsWorld.prototype['getWorldType'] = function() {
    return _emscripten_bind_btContinuousDynamicsWorld__getWorldType_p0(this.ptr);
}
btContinuousDynamicsWorld.prototype['updateSingleAabb'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__updateSingleAabb_p1(this.ptr, arg0.ptr);
}
btContinuousDynamicsWorld.prototype['updateVehicles'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__updateVehicles_p1(this.ptr, arg0);
}
btContinuousDynamicsWorld.prototype['synchronizeSingleMotionState'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__synchronizeSingleMotionState_p1(this.ptr, arg0.ptr);
}
btContinuousDynamicsWorld.prototype['getCollisionObjectArray'] = function() {
    return _emscripten_bind_btContinuousDynamicsWorld__getCollisionObjectArray_p0(this.ptr);
}
btContinuousDynamicsWorld.prototype['addVehicle'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__addVehicle_p1(this.ptr, arg0.ptr);
}
btContinuousDynamicsWorld.prototype['getPairCache'] = function() {
    return wrapPointer(_emscripten_bind_btContinuousDynamicsWorld__getPairCache_p0(this.ptr), Module['btOverlappingPairCache']);
}
btContinuousDynamicsWorld.prototype['synchronizeMotionStates'] = function() {
    _emscripten_bind_btContinuousDynamicsWorld__synchronizeMotionStates_p0(this.ptr);
}
btContinuousDynamicsWorld.prototype['getSimulationIslandManager'] = function() {
    return _emscripten_bind_btContinuousDynamicsWorld__getSimulationIslandManager_p0(this.ptr);
}
btContinuousDynamicsWorld.prototype['removeCollisionObject'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__removeCollisionObject_p1(this.ptr, arg0.ptr);
}
btContinuousDynamicsWorld.prototype['setConstraintSolver'] = function(arg0) {
    _emscripten_bind_btContinuousDynamicsWorld__setConstraintSolver_p1(this.ptr, arg0.ptr);
}
btContinuousDynamicsWorld.prototype['objectQuerySingle'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
    _emscripten_bind_btContinuousDynamicsWorld__objectQuerySingle_p8(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7);
}
btContinuousDynamicsWorld.prototype['getDispatchInfo'] = function() {
    return wrapPointer(_emscripten_bind_btContinuousDynamicsWorld__getDispatchInfo_p0(this.ptr), Module['btDispatcherInfo']);
}
btConeShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btConeShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btConeShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btConeShape__isCompound_p0(this.ptr);
}
btConeShape.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConeShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConeShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btConeShape__setUserPointer_p1(this.ptr, arg0);
}
btConeShape.prototype['getMarginNV'] = function() {
    return _emscripten_bind_btConeShape__getMarginNV_p0(this.ptr);
}
btConeShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btConeShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btConeShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btConeShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btConeShape.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btConeShape__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btConeShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btConeShape__isPolyhedral_p0(this.ptr);
}
btConeShape.prototype['getRadius'] = function() {
    return _emscripten_bind_btConeShape__getRadius_p0(this.ptr);
}
function btConeShape(arg0, arg1) {
    this.ptr = _emscripten_bind_btConeShape__btConeShape_p2(arg0, arg1);
  btConeShape.prototype.__cache__[this.ptr] = this;
  this.__class__ = btConeShape;
}
btConeShape.prototype.__cache__ = {};
Module['btConeShape'] = btConeShape;
btConeShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btConeShape__calculateSerializeBufferSize_p0(this.ptr);
}
btConeShape.prototype['getName'] = function() {
    return _emscripten_bind_btConeShape__getName_p0(this.ptr);
}
btConeShape.prototype['getHeight'] = function() {
    return _emscripten_bind_btConeShape__getHeight_p0(this.ptr);
}
btConeShape.prototype['getLocalScalingNV'] = function() {
    return wrapPointer(_emscripten_bind_btConeShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']);
}
btConeShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConeShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConeShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConeShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConeShape.prototype['setConeUpIndex'] = function(arg0) {
    _emscripten_bind_btConeShape__setConeUpIndex_p1(this.ptr, arg0);
}
btConeShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btConeShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btConeShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConeShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConeShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConeShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConeShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btConeShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btConeShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btConeShape__isConvex_p0(this.ptr);
}
btConeShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btConeShape__isInfinite_p0(this.ptr);
}
btConeShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConeShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConeShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btConeShape__getUserPointer_p0(this.ptr);
}
btConeShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btConeShape__isNonMoving_p0(this.ptr);
}
btConeShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btConeShape__getMargin_p0(this.ptr);
}
btConeShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btConeShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btConeShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btConeShape__setMargin_p1(this.ptr, arg0);
}
btConeShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btConeShape__isConvex2d_p0(this.ptr);
}
btConeShape.prototype['setImplicitShapeDimensions'] = function(arg0) {
    _emscripten_bind_btConeShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr);
}
btConeShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btConeShape__isSoftBody_p0(this.ptr);
}
btConeShape.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btConeShape__getMarginNonVirtual_p0(this.ptr);
}
btConeShape.prototype['__destroy__'] = function() {
    _emscripten_bind_btConeShape____destroy___p0(this.ptr);
}
btConeShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConeShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btConeShape.prototype['getImplicitShapeDimensions'] = function() {
    return wrapPointer(_emscripten_bind_btConeShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']);
}
btConeShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btConeShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btConeShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btConeShape__getAngularMotionDisc_p0(this.ptr);
}
btConeShape.prototype['getConeUpIndex'] = function() {
    return _emscripten_bind_btConeShape__getConeUpIndex_p0(this.ptr);
}
btConeShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btConeShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btConeShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConeShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConeShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btConeShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btConeShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btConeShape__isConcave_p0(this.ptr);
}
btConeShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btConeShape__getShapeType_p0(this.ptr);
}
btWheelInfo.prototype['set_m_chassisConnectionPointCS'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_chassisConnectionPointCS_p1(this.ptr, arg0.ptr);
}
btWheelInfo.prototype['set_m_maxSuspensionTravelCm'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_maxSuspensionTravelCm_p1(this.ptr, arg0);
}
btWheelInfo.prototype['get_m_wheelsRadius'] = function() {
    return _emscripten_bind_btWheelInfo__get_m_wheelsRadius_p0(this.ptr);
}
btWheelInfo.prototype['get_m_suspensionRestLength1'] = function() {
    return _emscripten_bind_btWheelInfo__get_m_suspensionRestLength1_p0(this.ptr);
}
btWheelInfo.prototype['set_m_suspensionStiffness'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_suspensionStiffness_p1(this.ptr, arg0);
}
btWheelInfo.prototype['set_m_wheelsRadius'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_wheelsRadius_p1(this.ptr, arg0);
}
btWheelInfo.prototype['get_m_maxSuspensionForce'] = function() {
    return _emscripten_bind_btWheelInfo__get_m_maxSuspensionForce_p0(this.ptr);
}
btWheelInfo.prototype['updateWheel'] = function(arg0, arg1) {
    _emscripten_bind_btWheelInfo__updateWheel_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btWheelInfo.prototype['get_m_wheelsDampingCompression'] = function() {
    return _emscripten_bind_btWheelInfo__get_m_wheelsDampingCompression_p0(this.ptr);
}
btWheelInfo.prototype['get_m_clippedInvContactDotSuspension'] = function() {
    return _emscripten_bind_btWheelInfo__get_m_clippedInvContactDotSuspension_p0(this.ptr);
}
btWheelInfo.prototype['get_m_worldTransform'] = function() {
    return wrapPointer(_emscripten_bind_btWheelInfo__get_m_worldTransform_p0(this.ptr), Module['btTransform']);
}
btWheelInfo.prototype['get_m_frictionSlip'] = function() {
    return _emscripten_bind_btWheelInfo__get_m_frictionSlip_p0(this.ptr);
}
btWheelInfo.prototype['get_m_bIsFrontWheel'] = function() {
    return _emscripten_bind_btWheelInfo__get_m_bIsFrontWheel_p0(this.ptr);
}
btWheelInfo.prototype['set_m_engineForce'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_engineForce_p1(this.ptr, arg0);
}
btWheelInfo.prototype['get_m_engineForce'] = function() {
    return _emscripten_bind_btWheelInfo__get_m_engineForce_p0(this.ptr);
}
btWheelInfo.prototype['get_m_steering'] = function() {
    return _emscripten_bind_btWheelInfo__get_m_steering_p0(this.ptr);
}
btWheelInfo.prototype['get_m_rollInfluence'] = function() {
    return _emscripten_bind_btWheelInfo__get_m_rollInfluence_p0(this.ptr);
}
btWheelInfo.prototype['get_m_suspensionRelativeVelocity'] = function() {
    return _emscripten_bind_btWheelInfo__get_m_suspensionRelativeVelocity_p0(this.ptr);
}
btWheelInfo.prototype['set_m_clientInfo'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_clientInfo_p1(this.ptr, arg0);
}
btWheelInfo.prototype['set_m_brake'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_brake_p1(this.ptr, arg0);
}
btWheelInfo.prototype['set_m_suspensionRelativeVelocity'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_suspensionRelativeVelocity_p1(this.ptr, arg0);
}
btWheelInfo.prototype['set_m_bIsFrontWheel'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_bIsFrontWheel_p1(this.ptr, arg0);
}
btWheelInfo.prototype['set_m_wheelDirectionCS'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_wheelDirectionCS_p1(this.ptr, arg0.ptr);
}
btWheelInfo.prototype['set_m_wheelsDampingCompression'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_wheelsDampingCompression_p1(this.ptr, arg0);
}
btWheelInfo.prototype['set_m_deltaRotation'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_deltaRotation_p1(this.ptr, arg0);
}
btWheelInfo.prototype['get_m_clientInfo'] = function() {
    return _emscripten_bind_btWheelInfo__get_m_clientInfo_p0(this.ptr);
}
btWheelInfo.prototype['set_m_frictionSlip'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_frictionSlip_p1(this.ptr, arg0);
}
btWheelInfo.prototype['get_m_skidInfo'] = function() {
    return _emscripten_bind_btWheelInfo__get_m_skidInfo_p0(this.ptr);
}
btWheelInfo.prototype['getSuspensionRestLength'] = function() {
    return _emscripten_bind_btWheelInfo__getSuspensionRestLength_p0(this.ptr);
}
btWheelInfo.prototype['get_m_wheelsDampingRelaxation'] = function() {
    return _emscripten_bind_btWheelInfo__get_m_wheelsDampingRelaxation_p0(this.ptr);
}
btWheelInfo.prototype['get_m_maxSuspensionTravelCm'] = function() {
    return _emscripten_bind_btWheelInfo__get_m_maxSuspensionTravelCm_p0(this.ptr);
}
btWheelInfo.prototype['set_m_steering'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_steering_p1(this.ptr, arg0);
}
btWheelInfo.prototype['set_m_wheelAxleCS'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_wheelAxleCS_p1(this.ptr, arg0.ptr);
}
function btWheelInfo(arg0) {
    this.ptr = _emscripten_bind_btWheelInfo__btWheelInfo_p1(arg0.ptr);
  btWheelInfo.prototype.__cache__[this.ptr] = this;
  this.__class__ = btWheelInfo;
}
btWheelInfo.prototype.__cache__ = {};
Module['btWheelInfo'] = btWheelInfo;
btWheelInfo.prototype['get_m_chassisConnectionPointCS'] = function() {
    return wrapPointer(_emscripten_bind_btWheelInfo__get_m_chassisConnectionPointCS_p0(this.ptr), Module['btVector3']);
}
btWheelInfo.prototype['get_m_brake'] = function() {
    return _emscripten_bind_btWheelInfo__get_m_brake_p0(this.ptr);
}
btWheelInfo.prototype['set_m_skidInfo'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_skidInfo_p1(this.ptr, arg0);
}
btWheelInfo.prototype['get_m_wheelsSuspensionForce'] = function() {
    return _emscripten_bind_btWheelInfo__get_m_wheelsSuspensionForce_p0(this.ptr);
}
btWheelInfo.prototype['set_m_suspensionRestLength1'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_suspensionRestLength1_p1(this.ptr, arg0);
}
btWheelInfo.prototype['set_m_rollInfluence'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_rollInfluence_p1(this.ptr, arg0);
}
btWheelInfo.prototype['__destroy__'] = function() {
    _emscripten_bind_btWheelInfo____destroy___p0(this.ptr);
}
btWheelInfo.prototype['get_m_rotation'] = function() {
    return _emscripten_bind_btWheelInfo__get_m_rotation_p0(this.ptr);
}
btWheelInfo.prototype['set_m_wheelsDampingRelaxation'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_wheelsDampingRelaxation_p1(this.ptr, arg0);
}
btWheelInfo.prototype['get_m_wheelDirectionCS'] = function() {
    return wrapPointer(_emscripten_bind_btWheelInfo__get_m_wheelDirectionCS_p0(this.ptr), Module['btVector3']);
}
btWheelInfo.prototype['get_m_suspensionStiffness'] = function() {
    return _emscripten_bind_btWheelInfo__get_m_suspensionStiffness_p0(this.ptr);
}
btWheelInfo.prototype['set_m_clippedInvContactDotSuspension'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_clippedInvContactDotSuspension_p1(this.ptr, arg0);
}
btWheelInfo.prototype['set_m_rotation'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_rotation_p1(this.ptr, arg0);
}
btWheelInfo.prototype['get_m_wheelAxleCS'] = function() {
    return wrapPointer(_emscripten_bind_btWheelInfo__get_m_wheelAxleCS_p0(this.ptr), Module['btVector3']);
}
btWheelInfo.prototype['set_m_wheelsSuspensionForce'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_wheelsSuspensionForce_p1(this.ptr, arg0);
}
btWheelInfo.prototype['set_m_maxSuspensionForce'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_maxSuspensionForce_p1(this.ptr, arg0);
}
btWheelInfo.prototype['set_m_worldTransform'] = function(arg0) {
    _emscripten_bind_btWheelInfo__set_m_worldTransform_p1(this.ptr, arg0.ptr);
}
btWheelInfo.prototype['get_m_deltaRotation'] = function() {
    return _emscripten_bind_btWheelInfo__get_m_deltaRotation_p0(this.ptr);
}
btBU_Simplex1to4.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btBU_Simplex1to4__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btBU_Simplex1to4.prototype['getNumPlanes'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__getNumPlanes_p0(this.ptr);
}
btBU_Simplex1to4.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btBU_Simplex1to4__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btBU_Simplex1to4.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btBU_Simplex1to4__setUserPointer_p1(this.ptr, arg0);
}
btBU_Simplex1to4.prototype['isInside'] = function(arg0, arg1) {
    return _emscripten_bind_btBU_Simplex1to4__isInside_p2(this.ptr, arg0.ptr, arg1);
}
btBU_Simplex1to4.prototype['getNumVertices'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__getNumVertices_p0(this.ptr);
}
btBU_Simplex1to4.prototype['addVertex'] = function(arg0) {
    _emscripten_bind_btBU_Simplex1to4__addVertex_p1(this.ptr, arg0.ptr);
}
btBU_Simplex1to4.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btBU_Simplex1to4__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btBU_Simplex1to4.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btBU_Simplex1to4.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__isPolyhedral_p0(this.ptr);
}
btBU_Simplex1to4.prototype['getVertex'] = function(arg0, arg1) {
    _emscripten_bind_btBU_Simplex1to4__getVertex_p2(this.ptr, arg0, arg1.ptr);
}
btBU_Simplex1to4.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btBU_Simplex1to4__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btBU_Simplex1to4.prototype['getIndex'] = function(arg0) {
    return _emscripten_bind_btBU_Simplex1to4__getIndex_p1(this.ptr, arg0);
}
btBU_Simplex1to4.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btBU_Simplex1to4__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btBU_Simplex1to4.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__calculateSerializeBufferSize_p0(this.ptr);
}
btBU_Simplex1to4.prototype['getNumEdges'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__getNumEdges_p0(this.ptr);
}
btBU_Simplex1to4.prototype['getName'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__getName_p0(this.ptr);
}
btBU_Simplex1to4.prototype['getEdge'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btBU_Simplex1to4__getEdge_p3(this.ptr, arg0, arg1.ptr, arg2.ptr);
}
btBU_Simplex1to4.prototype['getLocalScalingNV'] = function() {
    return wrapPointer(_emscripten_bind_btBU_Simplex1to4__getLocalScalingNV_p0(this.ptr), Module['btVector3']);
}
btBU_Simplex1to4.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btBU_Simplex1to4__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btBU_Simplex1to4.prototype['setImplicitShapeDimensions'] = function(arg0) {
    _emscripten_bind_btBU_Simplex1to4__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr);
}
btBU_Simplex1to4.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btBU_Simplex1to4__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btBU_Simplex1to4.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btBU_Simplex1to4__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btBU_Simplex1to4.prototype['getMarginNV'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__getMarginNV_p0(this.ptr);
}
btBU_Simplex1to4.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__isConvex2d_p0(this.ptr);
}
btBU_Simplex1to4.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btBU_Simplex1to4__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btBU_Simplex1to4.prototype['isConvex'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__isConvex_p0(this.ptr);
}
btBU_Simplex1to4.prototype['isInfinite'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__isInfinite_p0(this.ptr);
}
btBU_Simplex1to4.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btBU_Simplex1to4__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btBU_Simplex1to4.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__isNonMoving_p0(this.ptr);
}
btBU_Simplex1to4.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__getUserPointer_p0(this.ptr);
}
function btBU_Simplex1to4(arg0, arg1, arg2, arg3) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p0();
  else   if (arg1 === undefined)
    this.ptr = _emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p1(arg0.ptr);
  else   if (arg2 === undefined)
    this.ptr = _emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p2(arg0.ptr, arg1.ptr);
  else   if (arg3 === undefined)
    this.ptr = _emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p3(arg0.ptr, arg1.ptr, arg2.ptr);
  else 
    this.ptr = _emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
  btBU_Simplex1to4.prototype.__cache__[this.ptr] = this;
  this.__class__ = btBU_Simplex1to4;
}
btBU_Simplex1to4.prototype.__cache__ = {};
Module['btBU_Simplex1to4'] = btBU_Simplex1to4;
btBU_Simplex1to4.prototype['getMargin'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__getMargin_p0(this.ptr);
}
btBU_Simplex1to4.prototype['recalcLocalAabb'] = function() {
    _emscripten_bind_btBU_Simplex1to4__recalcLocalAabb_p0(this.ptr);
}
btBU_Simplex1to4.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btBU_Simplex1to4__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btBU_Simplex1to4.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btBU_Simplex1to4__setMargin_p1(this.ptr, arg0);
}
btBU_Simplex1to4.prototype['initializePolyhedralFeatures'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__initializePolyhedralFeatures_p0(this.ptr);
}
btBU_Simplex1to4.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btBU_Simplex1to4__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btBU_Simplex1to4.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__isSoftBody_p0(this.ptr);
}
btBU_Simplex1to4.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__getMarginNonVirtual_p0(this.ptr);
}
btBU_Simplex1to4.prototype['reset'] = function() {
    _emscripten_bind_btBU_Simplex1to4__reset_p0(this.ptr);
}
btBU_Simplex1to4.prototype['__destroy__'] = function() {
    _emscripten_bind_btBU_Simplex1to4____destroy___p0(this.ptr);
}
btBU_Simplex1to4.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btBU_Simplex1to4__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btBU_Simplex1to4.prototype['getImplicitShapeDimensions'] = function() {
    return wrapPointer(_emscripten_bind_btBU_Simplex1to4__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']);
}
btBU_Simplex1to4.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btBU_Simplex1to4__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btBU_Simplex1to4.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__getAngularMotionDisc_p0(this.ptr);
}
btBU_Simplex1to4.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btBU_Simplex1to4__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btBU_Simplex1to4.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btBU_Simplex1to4__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btBU_Simplex1to4.prototype['getPlane'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btBU_Simplex1to4__getPlane_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btBU_Simplex1to4.prototype['isCompound'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__isCompound_p0(this.ptr);
}
btBU_Simplex1to4.prototype['getConvexPolyhedron'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__getConvexPolyhedron_p0(this.ptr);
}
btBU_Simplex1to4.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btBU_Simplex1to4__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btBU_Simplex1to4.prototype['getShapeType'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__getShapeType_p0(this.ptr);
}
btBU_Simplex1to4.prototype['isConcave'] = function() {
    return _emscripten_bind_btBU_Simplex1to4__isConcave_p0(this.ptr);
}
btBU_Simplex1to4.prototype['getNonvirtualAabb'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btBU_Simplex1to4__getNonvirtualAabb_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3);
}
btVector4.prototype['setMin'] = function(arg0) {
    _emscripten_bind_btVector4__setMin_p1(this.ptr, arg0.ptr);
}
btVector4.prototype['getSkewSymmetricMatrix'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btVector4__getSkewSymmetricMatrix_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btVector4.prototype['serialize'] = function(arg0) {
    _emscripten_bind_btVector4__serialize_p1(this.ptr, arg0.ptr);
}
btVector4.prototype['deSerializeDouble'] = function(arg0) {
    _emscripten_bind_btVector4__deSerializeDouble_p1(this.ptr, arg0.ptr);
}
btVector4.prototype['getX'] = function() {
    return _emscripten_bind_btVector4__getX_p0(this.ptr);
}
btVector4.prototype['minAxis4'] = function() {
    return _emscripten_bind_btVector4__minAxis4_p0(this.ptr);
}
btVector4.prototype['getZ'] = function() {
    return _emscripten_bind_btVector4__getZ_p0(this.ptr);
}
btVector4.prototype['setInterpolate3'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btVector4__setInterpolate3_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btVector4.prototype['triple'] = function(arg0, arg1) {
    return _emscripten_bind_btVector4__triple_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btVector4.prototype['absolute'] = function() {
    return wrapPointer(_emscripten_bind_btVector4__absolute_p0(this.ptr), Module['btVector3']);
}
btVector4.prototype['normalize'] = function() {
    return wrapPointer(_emscripten_bind_btVector4__normalize_p0(this.ptr), Module['btVector3']);
}
btVector4.prototype['angle'] = function(arg0) {
    return _emscripten_bind_btVector4__angle_p1(this.ptr, arg0.ptr);
}
btVector4.prototype['deSerializeFloat'] = function(arg0) {
    _emscripten_bind_btVector4__deSerializeFloat_p1(this.ptr, arg0.ptr);
}
btVector4.prototype['lerp'] = function(arg0, arg1) {
    return wrapPointer(_emscripten_bind_btVector4__lerp_p2(this.ptr, arg0.ptr, arg1), Module['btVector3']);
}
btVector4.prototype['setMax'] = function(arg0) {
    _emscripten_bind_btVector4__setMax_p1(this.ptr, arg0.ptr);
}
btVector4.prototype['cross'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btVector4__cross_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btVector4.prototype['serializeDouble'] = function(arg0) {
    _emscripten_bind_btVector4__serializeDouble_p1(this.ptr, arg0.ptr);
}
btVector4.prototype['absolute4'] = function() {
    return wrapPointer(_emscripten_bind_btVector4__absolute4_p0(this.ptr), Module['btVector4']);
}
btVector4.prototype['getW'] = function() {
    return _emscripten_bind_btVector4__getW_p0(this.ptr);
}
btVector4.prototype['distance2'] = function(arg0) {
    return _emscripten_bind_btVector4__distance2_p1(this.ptr, arg0.ptr);
}
btVector4.prototype['closestAxis'] = function() {
    return _emscripten_bind_btVector4__closestAxis_p0(this.ptr);
}
btVector4.prototype['setValue'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btVector4__setValue_p4(this.ptr, arg0, arg1, arg2, arg3);
}
btVector4.prototype['fuzzyZero'] = function() {
    return _emscripten_bind_btVector4__fuzzyZero_p0(this.ptr);
}
btVector4.prototype['deSerialize'] = function(arg0) {
    _emscripten_bind_btVector4__deSerialize_p1(this.ptr, arg0.ptr);
}
btVector4.prototype['distance'] = function(arg0) {
    return _emscripten_bind_btVector4__distance_p1(this.ptr, arg0.ptr);
}
btVector4.prototype['minAxis'] = function() {
    return _emscripten_bind_btVector4__minAxis_p0(this.ptr);
}
function btVector4(arg0, arg1, arg2, arg3) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btVector4__btVector4_p0();
  else 
    this.ptr = _emscripten_bind_btVector4__btVector4_p4(arg0, arg1, arg2, arg3);
  btVector4.prototype.__cache__[this.ptr] = this;
  this.__class__ = btVector4;
}
btVector4.prototype.__cache__ = {};
Module['btVector4'] = btVector4;
btVector4.prototype['isZero'] = function() {
    return _emscripten_bind_btVector4__isZero_p0(this.ptr);
}
btVector4.prototype['safeNormalize'] = function() {
    return wrapPointer(_emscripten_bind_btVector4__safeNormalize_p0(this.ptr), Module['btVector3']);
}
btVector4.prototype['normalized'] = function() {
    return wrapPointer(_emscripten_bind_btVector4__normalized_p0(this.ptr), Module['btVector3']);
}
btVector4.prototype['serializeFloat'] = function(arg0) {
    _emscripten_bind_btVector4__serializeFloat_p1(this.ptr, arg0.ptr);
}
btVector4.prototype['setX'] = function(arg0) {
    _emscripten_bind_btVector4__setX_p1(this.ptr, arg0);
}
btVector4.prototype['setY'] = function(arg0) {
    _emscripten_bind_btVector4__setY_p1(this.ptr, arg0);
}
btVector4.prototype['setZ'] = function(arg0) {
    _emscripten_bind_btVector4__setZ_p1(this.ptr, arg0);
}
btVector4.prototype['maxAxis4'] = function() {
    return _emscripten_bind_btVector4__maxAxis4_p0(this.ptr);
}
btVector4.prototype['__destroy__'] = function() {
    _emscripten_bind_btVector4____destroy___p0(this.ptr);
}
btVector4.prototype['rotate'] = function(arg0, arg1) {
    return wrapPointer(_emscripten_bind_btVector4__rotate_p2(this.ptr, arg0.ptr, arg1), Module['btVector3']);
}
btVector4.prototype['maxAxis'] = function() {
    return _emscripten_bind_btVector4__maxAxis_p0(this.ptr);
}
btVector4.prototype['closestAxis4'] = function() {
    return _emscripten_bind_btVector4__closestAxis4_p0(this.ptr);
}
btVector4.prototype['getY'] = function() {
    return _emscripten_bind_btVector4__getY_p0(this.ptr);
}
btVector4.prototype['length2'] = function() {
    return _emscripten_bind_btVector4__length2_p0(this.ptr);
}
btVector4.prototype['setZero'] = function() {
    _emscripten_bind_btVector4__setZero_p0(this.ptr);
}
btVector4.prototype['length'] = function() {
    return _emscripten_bind_btVector4__length_p0(this.ptr);
}
btVector4.prototype['setW'] = function(arg0) {
    _emscripten_bind_btVector4__setW_p1(this.ptr, arg0);
}
btVector4.prototype['furthestAxis'] = function() {
    return _emscripten_bind_btVector4__furthestAxis_p0(this.ptr);
}
btVector4.prototype['w'] = function() {
    return _emscripten_bind_btVector4__w_p0(this.ptr);
}
btVector4.prototype['y'] = function() {
    return _emscripten_bind_btVector4__y_p0(this.ptr);
}
btVector4.prototype['x'] = function() {
    return _emscripten_bind_btVector4__x_p0(this.ptr);
}
btVector4.prototype['z'] = function() {
    return _emscripten_bind_btVector4__z_p0(this.ptr);
}
btVector4.prototype['dot'] = function(arg0) {
    return _emscripten_bind_btVector4__dot_p1(this.ptr, arg0.ptr);
}
function btActionInterface(){ throw "btActionInterface is abstract!" }
btActionInterface.prototype.__cache__ = {};
Module['btActionInterface'] = btActionInterface;
btActionInterface.prototype['updateAction'] = function(arg0, arg1) {
    _emscripten_bind_btActionInterface__updateAction_p2(this.ptr, arg0.ptr, arg1);
}
btActionInterface.prototype['debugDraw'] = function(arg0) {
    _emscripten_bind_btActionInterface__debugDraw_p1(this.ptr, arg0.ptr);
}
btVector3.prototype['setMin'] = function(arg0) {
    _emscripten_bind_btVector3__setMin_p1(this.ptr, arg0.ptr);
}
btVector3.prototype['getSkewSymmetricMatrix'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btVector3__getSkewSymmetricMatrix_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btVector3.prototype['serialize'] = function(arg0) {
    _emscripten_bind_btVector3__serialize_p1(this.ptr, arg0.ptr);
}
btVector3.prototype['deSerializeDouble'] = function(arg0) {
    _emscripten_bind_btVector3__deSerializeDouble_p1(this.ptr, arg0.ptr);
}
btVector3.prototype['getX'] = function() {
    return _emscripten_bind_btVector3__getX_p0(this.ptr);
}
btVector3.prototype['getY'] = function() {
    return _emscripten_bind_btVector3__getY_p0(this.ptr);
}
btVector3.prototype['getZ'] = function() {
    return _emscripten_bind_btVector3__getZ_p0(this.ptr);
}
btVector3.prototype['setInterpolate3'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btVector3__setInterpolate3_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btVector3.prototype['triple'] = function(arg0, arg1) {
    return _emscripten_bind_btVector3__triple_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btVector3.prototype['op_sub'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btVector3__op_sub_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btVector3.prototype['absolute'] = function() {
    return wrapPointer(_emscripten_bind_btVector3__absolute_p0(this.ptr), Module['btVector3']);
}
btVector3.prototype['normalize'] = function() {
    return wrapPointer(_emscripten_bind_btVector3__normalize_p0(this.ptr), Module['btVector3']);
}
btVector3.prototype['angle'] = function(arg0) {
    return _emscripten_bind_btVector3__angle_p1(this.ptr, arg0.ptr);
}
btVector3.prototype['lerp'] = function(arg0, arg1) {
    return wrapPointer(_emscripten_bind_btVector3__lerp_p2(this.ptr, arg0.ptr, arg1), Module['btVector3']);
}
btVector3.prototype['setMax'] = function(arg0) {
    _emscripten_bind_btVector3__setMax_p1(this.ptr, arg0.ptr);
}
btVector3.prototype['cross'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btVector3__cross_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btVector3.prototype['op_add'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btVector3__op_add_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btVector3.prototype['op_comp'] = function(arg0) {
    return _emscripten_bind_btVector3__op_comp_p1(this.ptr, arg0.ptr);
}
btVector3.prototype['__destroy__'] = function() {
    _emscripten_bind_btVector3____destroy___p0(this.ptr);
}
btVector3.prototype['op_mul'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btVector3__op_mul_p1(this.ptr, arg0), Module['btVector3']);
}
btVector3.prototype['serializeDouble'] = function(arg0) {
    _emscripten_bind_btVector3__serializeDouble_p1(this.ptr, arg0.ptr);
}
btVector3.prototype['isZero'] = function() {
    return _emscripten_bind_btVector3__isZero_p0(this.ptr);
}
btVector3.prototype['op_set'] = function(arg0) {
    return _emscripten_bind_btVector3__op_set_p1(this.ptr, arg0.ptr);
}
btVector3.prototype['distance2'] = function(arg0) {
    return _emscripten_bind_btVector3__distance2_p1(this.ptr, arg0.ptr);
}
btVector3.prototype['closestAxis'] = function() {
    return _emscripten_bind_btVector3__closestAxis_p0(this.ptr);
}
btVector3.prototype['setValue'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btVector3__setValue_p3(this.ptr, arg0, arg1, arg2);
}
btVector3.prototype['fuzzyZero'] = function() {
    return _emscripten_bind_btVector3__fuzzyZero_p0(this.ptr);
}
btVector3.prototype['deSerialize'] = function(arg0) {
    _emscripten_bind_btVector3__deSerialize_p1(this.ptr, arg0.ptr);
}
btVector3.prototype['op_div'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btVector3__op_div_p1(this.ptr, arg0), Module['btVector3']);
}
btVector3.prototype['minAxis'] = function() {
    return _emscripten_bind_btVector3__minAxis_p0(this.ptr);
}
btVector3.prototype['safeNormalize'] = function() {
    return wrapPointer(_emscripten_bind_btVector3__safeNormalize_p0(this.ptr), Module['btVector3']);
}
btVector3.prototype['normalized'] = function() {
    return wrapPointer(_emscripten_bind_btVector3__normalized_p0(this.ptr), Module['btVector3']);
}
function btVector3(arg0, arg1, arg2) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btVector3__btVector3_p0();
  else 
    this.ptr = _emscripten_bind_btVector3__btVector3_p3(arg0, arg1, arg2);
  btVector3.prototype.__cache__[this.ptr] = this;
  this.__class__ = btVector3;
}
btVector3.prototype.__cache__ = {};
Module['btVector3'] = btVector3;
btVector3.prototype['serializeFloat'] = function(arg0) {
    _emscripten_bind_btVector3__serializeFloat_p1(this.ptr, arg0.ptr);
}
btVector3.prototype['setX'] = function(arg0) {
    _emscripten_bind_btVector3__setX_p1(this.ptr, arg0);
}
btVector3.prototype['setY'] = function(arg0) {
    _emscripten_bind_btVector3__setY_p1(this.ptr, arg0);
}
btVector3.prototype['setZ'] = function(arg0) {
    _emscripten_bind_btVector3__setZ_p1(this.ptr, arg0);
}
btVector3.prototype['distance'] = function(arg0) {
    return _emscripten_bind_btVector3__distance_p1(this.ptr, arg0.ptr);
}
btVector3.prototype['rotate'] = function(arg0, arg1) {
    return wrapPointer(_emscripten_bind_btVector3__rotate_p2(this.ptr, arg0.ptr, arg1), Module['btVector3']);
}
btVector3.prototype['maxAxis'] = function() {
    return _emscripten_bind_btVector3__maxAxis_p0(this.ptr);
}
btVector3.prototype['deSerializeFloat'] = function(arg0) {
    _emscripten_bind_btVector3__deSerializeFloat_p1(this.ptr, arg0.ptr);
}
btVector3.prototype['length2'] = function() {
    return _emscripten_bind_btVector3__length2_p0(this.ptr);
}
btVector3.prototype['setZero'] = function() {
    _emscripten_bind_btVector3__setZero_p0(this.ptr);
}
btVector3.prototype['length'] = function() {
    return _emscripten_bind_btVector3__length_p0(this.ptr);
}
btVector3.prototype['setW'] = function(arg0) {
    _emscripten_bind_btVector3__setW_p1(this.ptr, arg0);
}
btVector3.prototype['dot'] = function(arg0) {
    return _emscripten_bind_btVector3__dot_p1(this.ptr, arg0.ptr);
}
btVector3.prototype['w'] = function() {
    return _emscripten_bind_btVector3__w_p0(this.ptr);
}
btVector3.prototype['y'] = function() {
    return _emscripten_bind_btVector3__y_p0(this.ptr);
}
btVector3.prototype['x'] = function() {
    return _emscripten_bind_btVector3__x_p0(this.ptr);
}
btVector3.prototype['z'] = function() {
    return _emscripten_bind_btVector3__z_p0(this.ptr);
}
btVector3.prototype['furthestAxis'] = function() {
    return _emscripten_bind_btVector3__furthestAxis_p0(this.ptr);
}
function btSerializer(){ throw "btSerializer is abstract!" }
btSerializer.prototype.__cache__ = {};
Module['btSerializer'] = btSerializer;
btSerializer.prototype['setSerializationFlags'] = function(arg0) {
    _emscripten_bind_btSerializer__setSerializationFlags_p1(this.ptr, arg0);
}
btSerializer.prototype['findNameForPointer'] = function(arg0) {
    return _emscripten_bind_btSerializer__findNameForPointer_p1(this.ptr, arg0);
}
btSerializer.prototype['startSerialization'] = function() {
    _emscripten_bind_btSerializer__startSerialization_p0(this.ptr);
}
btSerializer.prototype['getSerializationFlags'] = function() {
    return _emscripten_bind_btSerializer__getSerializationFlags_p0(this.ptr);
}
btSerializer.prototype['finishSerialization'] = function() {
    _emscripten_bind_btSerializer__finishSerialization_p0(this.ptr);
}
btSerializer.prototype['getUniquePointer'] = function(arg0) {
    return _emscripten_bind_btSerializer__getUniquePointer_p1(this.ptr, arg0);
}
btSerializer.prototype['getBufferPointer'] = function() {
    return _emscripten_bind_btSerializer__getBufferPointer_p0(this.ptr);
}
btSerializer.prototype['getCurrentBufferSize'] = function() {
    return _emscripten_bind_btSerializer__getCurrentBufferSize_p0(this.ptr);
}
btSerializer.prototype['finalizeChunk'] = function(arg0, arg1, arg2, arg3) {
var stack = Runtime.stackSave();
try {
    _emscripten_bind_btSerializer__finalizeChunk_p4(this.ptr, arg0.ptr, ensureString(arg1), arg2, arg3);
} finally { Runtime.stackRestore(stack) }
}
btSerializer.prototype['serializeName'] = function(arg0) {
var stack = Runtime.stackSave();
try {
    _emscripten_bind_btSerializer__serializeName_p1(this.ptr, ensureString(arg0));
} finally { Runtime.stackRestore(stack) }
}
btSerializer.prototype['findPointer'] = function(arg0) {
    return _emscripten_bind_btSerializer__findPointer_p1(this.ptr, arg0);
}
btSerializer.prototype['registerNameForPointer'] = function(arg0, arg1) {
var stack = Runtime.stackSave();
try {
    _emscripten_bind_btSerializer__registerNameForPointer_p2(this.ptr, arg0, ensureString(arg1));
} finally { Runtime.stackRestore(stack) }
}
btSerializer.prototype['allocate'] = function(arg0, arg1) {
    return wrapPointer(_emscripten_bind_btSerializer__allocate_p2(this.ptr, arg0, arg1), Module['btChunk']);
}
btTriangleInfo.prototype['set_m_edgeV2V0Angle'] = function(arg0) {
    _emscripten_bind_btTriangleInfo__set_m_edgeV2V0Angle_p1(this.ptr, arg0);
}
btTriangleInfo.prototype['__destroy__'] = function() {
    _emscripten_bind_btTriangleInfo____destroy___p0(this.ptr);
}
btTriangleInfo.prototype['get_m_edgeV1V2Angle'] = function() {
    return _emscripten_bind_btTriangleInfo__get_m_edgeV1V2Angle_p0(this.ptr);
}
btTriangleInfo.prototype['get_m_edgeV0V1Angle'] = function() {
    return _emscripten_bind_btTriangleInfo__get_m_edgeV0V1Angle_p0(this.ptr);
}
btTriangleInfo.prototype['set_m_flags'] = function(arg0) {
    _emscripten_bind_btTriangleInfo__set_m_flags_p1(this.ptr, arg0);
}
btTriangleInfo.prototype['set_m_edgeV0V1Angle'] = function(arg0) {
    _emscripten_bind_btTriangleInfo__set_m_edgeV0V1Angle_p1(this.ptr, arg0);
}
btTriangleInfo.prototype['get_m_edgeV2V0Angle'] = function() {
    return _emscripten_bind_btTriangleInfo__get_m_edgeV2V0Angle_p0(this.ptr);
}
btTriangleInfo.prototype['set_m_edgeV1V2Angle'] = function(arg0) {
    _emscripten_bind_btTriangleInfo__set_m_edgeV1V2Angle_p1(this.ptr, arg0);
}
btTriangleInfo.prototype['get_m_flags'] = function() {
    return _emscripten_bind_btTriangleInfo__get_m_flags_p0(this.ptr);
}
function btTriangleInfo() {
    this.ptr = _emscripten_bind_btTriangleInfo__btTriangleInfo_p0();
  btTriangleInfo.prototype.__cache__[this.ptr] = this;
  this.__class__ = btTriangleInfo;
}
btTriangleInfo.prototype.__cache__ = {};
Module['btTriangleInfo'] = btTriangleInfo;
ClosestRayResultCallback.prototype['addSingleResult'] = function(arg0, arg1) {
    return _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__addSingleResult_p2(this.ptr, arg0.ptr, arg1);
}
ClosestRayResultCallback.prototype['set_m_collisionFilterGroup'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionFilterGroup_p1(this.ptr, arg0);
}
ClosestRayResultCallback.prototype['get_m_rayToWorld'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_rayToWorld_p0(this.ptr), Module['btVector3']);
}
ClosestRayResultCallback.prototype['get_m_hitPointWorld'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_hitPointWorld_p0(this.ptr), Module['btVector3']);
}
ClosestRayResultCallback.prototype['set_m_collisionObject'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionObject_p1(this.ptr, arg0.ptr);
}
ClosestRayResultCallback.prototype['get_m_collisionObject'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionObject_p0(this.ptr), Module['btCollisionObject']);
}
ClosestRayResultCallback.prototype['set_m_flags'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_flags_p1(this.ptr, arg0);
}
ClosestRayResultCallback.prototype['set_m_rayToWorld'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_rayToWorld_p1(this.ptr, arg0.ptr);
}
ClosestRayResultCallback.prototype['get_m_rayFromWorld'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_rayFromWorld_p0(this.ptr), Module['btVector3']);
}
ClosestRayResultCallback.prototype['needsCollision'] = function(arg0) {
    return _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__needsCollision_p1(this.ptr, arg0.ptr);
}
ClosestRayResultCallback.prototype['get_m_collisionFilterMask'] = function() {
    return _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionFilterMask_p0(this.ptr);
}
ClosestRayResultCallback.prototype['get_m_closestHitFraction'] = function() {
    return _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_closestHitFraction_p0(this.ptr);
}
ClosestRayResultCallback.prototype['set_m_hitNormalWorld'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_hitNormalWorld_p1(this.ptr, arg0.ptr);
}
ClosestRayResultCallback.prototype['set_m_hitPointWorld'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_hitPointWorld_p1(this.ptr, arg0.ptr);
}
ClosestRayResultCallback.prototype['__destroy__'] = function() {
    _emscripten_bind_btCollisionWorld__ClosestRayResultCallback____destroy___p0(this.ptr);
}
ClosestRayResultCallback.prototype['get_m_flags'] = function() {
    return _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_flags_p0(this.ptr);
}
ClosestRayResultCallback.prototype['set_m_closestHitFraction'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_closestHitFraction_p1(this.ptr, arg0);
}
ClosestRayResultCallback.prototype['set_m_collisionFilterMask'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionFilterMask_p1(this.ptr, arg0);
}
ClosestRayResultCallback.prototype['hasHit'] = function() {
    return _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__hasHit_p0(this.ptr);
}
ClosestRayResultCallback.prototype['get_m_hitNormalWorld'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_hitNormalWorld_p0(this.ptr), Module['btVector3']);
}
function ClosestRayResultCallback(arg0, arg1) {
    this.ptr = _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__ClosestRayResultCallback_p2(arg0.ptr, arg1.ptr);
  ClosestRayResultCallback.prototype.__cache__[this.ptr] = this;
  this.__class__ = ClosestRayResultCallback;
}
ClosestRayResultCallback.prototype.__cache__ = {};
Module['ClosestRayResultCallback'] = ClosestRayResultCallback;
ClosestRayResultCallback.prototype['get_m_collisionFilterGroup'] = function() {
    return _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionFilterGroup_p0(this.ptr);
}
ClosestRayResultCallback.prototype['set_m_rayFromWorld'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_rayFromWorld_p1(this.ptr, arg0.ptr);
}
LocalRayResult.prototype['__destroy__'] = function() {
    _emscripten_bind_btCollisionWorld__LocalRayResult____destroy___p0(this.ptr);
}
LocalRayResult.prototype['set_m_localShapeInfo'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__LocalRayResult__set_m_localShapeInfo_p1(this.ptr, arg0.ptr);
}
LocalRayResult.prototype['get_m_hitNormalLocal'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_hitNormalLocal_p0(this.ptr), Module['btVector3']);
}
LocalRayResult.prototype['set_m_hitNormalLocal'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__LocalRayResult__set_m_hitNormalLocal_p1(this.ptr, arg0.ptr);
}
LocalRayResult.prototype['set_m_hitFraction'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__LocalRayResult__set_m_hitFraction_p1(this.ptr, arg0);
}
LocalRayResult.prototype['get_m_hitFraction'] = function() {
    return _emscripten_bind_btCollisionWorld__LocalRayResult__get_m_hitFraction_p0(this.ptr);
}
function LocalRayResult(arg0, arg1, arg2, arg3) {
    this.ptr = _emscripten_bind_btCollisionWorld__LocalRayResult__LocalRayResult_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3);
  LocalRayResult.prototype.__cache__[this.ptr] = this;
  this.__class__ = LocalRayResult;
}
LocalRayResult.prototype.__cache__ = {};
Module['LocalRayResult'] = LocalRayResult;
LocalRayResult.prototype['get_m_localShapeInfo'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_localShapeInfo_p0(this.ptr), Module['LocalShapeInfo']);
}
LocalRayResult.prototype['set_m_collisionObject'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__LocalRayResult__set_m_collisionObject_p1(this.ptr, arg0.ptr);
}
LocalRayResult.prototype['get_m_collisionObject'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_collisionObject_p0(this.ptr), Module['btCollisionObject']);
}
btHinge2Constraint.prototype['getRigidBodyB'] = function() {
    return wrapPointer(_emscripten_bind_btHinge2Constraint__getRigidBodyB_p0(this.ptr), Module['btRigidBody']);
}
btHinge2Constraint.prototype['buildJacobian'] = function() {
    _emscripten_bind_btHinge2Constraint__buildJacobian_p0(this.ptr);
}
btHinge2Constraint.prototype['setParam'] = function(arg0, arg1, arg2) {
  if (arg2 === undefined)
    _emscripten_bind_btHinge2Constraint__setParam_p2(this.ptr, arg0, arg1);
  else 
    _emscripten_bind_btHinge2Constraint__setParam_p3(this.ptr, arg0, arg1, arg2);
}
btHinge2Constraint.prototype['getUid'] = function() {
    return _emscripten_bind_btHinge2Constraint__getUid_p0(this.ptr);
}
btHinge2Constraint.prototype['set_m_objectType'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__set_m_objectType_p1(this.ptr, arg0);
}
btHinge2Constraint.prototype['setEnabled'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__setEnabled_p1(this.ptr, arg0);
}
btHinge2Constraint.prototype['getFrameOffsetA'] = function() {
    return wrapPointer(_emscripten_bind_btHinge2Constraint__getFrameOffsetA_p0(this.ptr), Module['btTransform']);
}
btHinge2Constraint.prototype['getRelativePivotPosition'] = function(arg0) {
    return _emscripten_bind_btHinge2Constraint__getRelativePivotPosition_p1(this.ptr, arg0);
}
btHinge2Constraint.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btHinge2Constraint__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btHinge2Constraint.prototype['getCalculatedTransformB'] = function() {
    return wrapPointer(_emscripten_bind_btHinge2Constraint__getCalculatedTransformB_p0(this.ptr), Module['btTransform']);
}
btHinge2Constraint.prototype['getCalculatedTransformA'] = function() {
    return wrapPointer(_emscripten_bind_btHinge2Constraint__getCalculatedTransformA_p0(this.ptr), Module['btTransform']);
}
btHinge2Constraint.prototype['getUserConstraintId'] = function() {
    return _emscripten_bind_btHinge2Constraint__getUserConstraintId_p0(this.ptr);
}
btHinge2Constraint.prototype['setUpperLimit'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__setUpperLimit_p1(this.ptr, arg0);
}
btHinge2Constraint.prototype['get_m_objectType'] = function() {
    return _emscripten_bind_btHinge2Constraint__get_m_objectType_p0(this.ptr);
}
btHinge2Constraint.prototype['getRigidBodyA'] = function() {
    return wrapPointer(_emscripten_bind_btHinge2Constraint__getRigidBodyA_p0(this.ptr), Module['btRigidBody']);
}
btHinge2Constraint.prototype['getBreakingImpulseThreshold'] = function() {
    return _emscripten_bind_btHinge2Constraint__getBreakingImpulseThreshold_p0(this.ptr);
}
btHinge2Constraint.prototype['getParam'] = function(arg0, arg1) {
  if (arg1 === undefined)
    return _emscripten_bind_btHinge2Constraint__getParam_p1(this.ptr, arg0);
  else 
    return _emscripten_bind_btHinge2Constraint__getParam_p2(this.ptr, arg0, arg1);
}
btHinge2Constraint.prototype['setDamping'] = function(arg0, arg1) {
    _emscripten_bind_btHinge2Constraint__setDamping_p2(this.ptr, arg0, arg1);
}
btHinge2Constraint.prototype['getInfo1'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__getInfo1_p1(this.ptr, arg0.ptr);
}
btHinge2Constraint.prototype['getInfo2'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__getInfo2_p1(this.ptr, arg0.ptr);
}
btHinge2Constraint.prototype['calcAnchorPos'] = function() {
    _emscripten_bind_btHinge2Constraint__calcAnchorPos_p0(this.ptr);
}
btHinge2Constraint.prototype['getAngularLowerLimit'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__getAngularLowerLimit_p1(this.ptr, arg0.ptr);
}
btHinge2Constraint.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btHinge2Constraint__calculateSerializeBufferSize_p0(this.ptr);
}
btHinge2Constraint.prototype['setEquilibriumPoint'] = function(arg0, arg1) {
  if (arg0 === undefined)
    _emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p0(this.ptr);
  else   if (arg1 === undefined)
    _emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p1(this.ptr, arg0);
  else 
    _emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p2(this.ptr, arg0, arg1);
}
btHinge2Constraint.prototype['getAxis'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btHinge2Constraint__getAxis_p1(this.ptr, arg0), Module['btVector3']);
}
btHinge2Constraint.prototype['internalGetAppliedImpulse'] = function() {
    return _emscripten_bind_btHinge2Constraint__internalGetAppliedImpulse_p0(this.ptr);
}
btHinge2Constraint.prototype['isEnabled'] = function() {
    return _emscripten_bind_btHinge2Constraint__isEnabled_p0(this.ptr);
}
btHinge2Constraint.prototype['setUserConstraintId'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__setUserConstraintId_p1(this.ptr, arg0);
}
btHinge2Constraint.prototype['getLinearUpperLimit'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__getLinearUpperLimit_p1(this.ptr, arg0.ptr);
}
btHinge2Constraint.prototype['getConstraintType'] = function() {
    return _emscripten_bind_btHinge2Constraint__getConstraintType_p0(this.ptr);
}
btHinge2Constraint.prototype['enableFeedback'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__enableFeedback_p1(this.ptr, arg0);
}
btHinge2Constraint.prototype['getAnchor'] = function() {
    return wrapPointer(_emscripten_bind_btHinge2Constraint__getAnchor_p0(this.ptr), Module['btVector3']);
}
btHinge2Constraint.prototype['setUseFrameOffset'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__setUseFrameOffset_p1(this.ptr, arg0);
}
btHinge2Constraint.prototype['isLimited'] = function(arg0) {
    return _emscripten_bind_btHinge2Constraint__isLimited_p1(this.ptr, arg0);
}
btHinge2Constraint.prototype['getAngle2'] = function() {
    return _emscripten_bind_btHinge2Constraint__getAngle2_p0(this.ptr);
}
btHinge2Constraint.prototype['getRotationalLimitMotor'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btHinge2Constraint__getRotationalLimitMotor_p1(this.ptr, arg0), Module['btRotationalLimitMotor']);
}
btHinge2Constraint.prototype['getAngle1'] = function() {
    return _emscripten_bind_btHinge2Constraint__getAngle1_p0(this.ptr);
}
btHinge2Constraint.prototype['getInfo1NonVirtual'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__getInfo1NonVirtual_p1(this.ptr, arg0.ptr);
}
btHinge2Constraint.prototype['getFrameOffsetB'] = function() {
    return wrapPointer(_emscripten_bind_btHinge2Constraint__getFrameOffsetB_p0(this.ptr), Module['btTransform']);
}
btHinge2Constraint.prototype['setLinearLowerLimit'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__setLinearLowerLimit_p1(this.ptr, arg0.ptr);
}
btHinge2Constraint.prototype['getAnchor2'] = function() {
    return wrapPointer(_emscripten_bind_btHinge2Constraint__getAnchor2_p0(this.ptr), Module['btVector3']);
}
btHinge2Constraint.prototype['__destroy__'] = function() {
    _emscripten_bind_btHinge2Constraint____destroy___p0(this.ptr);
}
btHinge2Constraint.prototype['getLinearLowerLimit'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__getLinearLowerLimit_p1(this.ptr, arg0.ptr);
}
btHinge2Constraint.prototype['setDbgDrawSize'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__setDbgDrawSize_p1(this.ptr, arg0);
}
btHinge2Constraint.prototype['setFrames'] = function(arg0, arg1) {
    _emscripten_bind_btHinge2Constraint__setFrames_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btHinge2Constraint.prototype['getUseFrameOffset'] = function() {
    return _emscripten_bind_btHinge2Constraint__getUseFrameOffset_p0(this.ptr);
}
btHinge2Constraint.prototype['setUserConstraintType'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__setUserConstraintType_p1(this.ptr, arg0);
}
btHinge2Constraint.prototype['enableSpring'] = function(arg0, arg1) {
    _emscripten_bind_btHinge2Constraint__enableSpring_p2(this.ptr, arg0, arg1);
}
btHinge2Constraint.prototype['calculateTransforms'] = function(arg0, arg1) {
  if (arg0 === undefined)
    _emscripten_bind_btHinge2Constraint__calculateTransforms_p0(this.ptr);
  else 
    _emscripten_bind_btHinge2Constraint__calculateTransforms_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btHinge2Constraint.prototype['internalSetAppliedImpulse'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__internalSetAppliedImpulse_p1(this.ptr, arg0);
}
btHinge2Constraint.prototype['setBreakingImpulseThreshold'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__setBreakingImpulseThreshold_p1(this.ptr, arg0);
}
btHinge2Constraint.prototype['setStiffness'] = function(arg0, arg1) {
    _emscripten_bind_btHinge2Constraint__setStiffness_p2(this.ptr, arg0, arg1);
}
btHinge2Constraint.prototype['get_limit_motor_info2'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11) {
  if (arg11 === undefined)
    return _emscripten_bind_btHinge2Constraint__get_limit_motor_info2_p11(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7.ptr, arg8, arg9.ptr, arg10);
  else 
    return _emscripten_bind_btHinge2Constraint__get_limit_motor_info2_p12(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7.ptr, arg8, arg9.ptr, arg10, arg11);
}
btHinge2Constraint.prototype['get_m_useSolveConstraintObsolete'] = function() {
    return _emscripten_bind_btHinge2Constraint__get_m_useSolveConstraintObsolete_p0(this.ptr);
}
btHinge2Constraint.prototype['getAppliedImpulse'] = function() {
    return _emscripten_bind_btHinge2Constraint__getAppliedImpulse_p0(this.ptr);
}
btHinge2Constraint.prototype['setLimit'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btHinge2Constraint__setLimit_p3(this.ptr, arg0, arg1, arg2);
}
btHinge2Constraint.prototype['set_m_useSolveConstraintObsolete'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__set_m_useSolveConstraintObsolete_p1(this.ptr, arg0);
}
btHinge2Constraint.prototype['getTranslationalLimitMotor'] = function() {
    return wrapPointer(_emscripten_bind_btHinge2Constraint__getTranslationalLimitMotor_p0(this.ptr), Module['btTranslationalLimitMotor']);
}
btHinge2Constraint.prototype['setLowerLimit'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__setLowerLimit_p1(this.ptr, arg0);
}
btHinge2Constraint.prototype['setupSolverConstraint'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btHinge2Constraint__setupSolverConstraint_p4(this.ptr, arg0, arg1, arg2, arg3);
}
btHinge2Constraint.prototype['needsFeedback'] = function() {
    return _emscripten_bind_btHinge2Constraint__needsFeedback_p0(this.ptr);
}
btHinge2Constraint.prototype['getAngle'] = function(arg0) {
    return _emscripten_bind_btHinge2Constraint__getAngle_p1(this.ptr, arg0);
}
btHinge2Constraint.prototype['updateRHS'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__updateRHS_p1(this.ptr, arg0);
}
btHinge2Constraint.prototype['getInfo2NonVirtual'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
    _emscripten_bind_btHinge2Constraint__getInfo2NonVirtual_p7(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr);
}
btHinge2Constraint.prototype['getAngularUpperLimit'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__getAngularUpperLimit_p1(this.ptr, arg0.ptr);
}
btHinge2Constraint.prototype['setAngularLowerLimit'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__setAngularLowerLimit_p1(this.ptr, arg0.ptr);
}
btHinge2Constraint.prototype['getObjectType'] = function() {
    return _emscripten_bind_btHinge2Constraint__getObjectType_p0(this.ptr);
}
btHinge2Constraint.prototype['getUserConstraintType'] = function() {
    return _emscripten_bind_btHinge2Constraint__getUserConstraintType_p0(this.ptr);
}
btHinge2Constraint.prototype['solveConstraintObsolete'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btHinge2Constraint__solveConstraintObsolete_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btHinge2Constraint.prototype['getDbgDrawSize'] = function() {
    return _emscripten_bind_btHinge2Constraint__getDbgDrawSize_p0(this.ptr);
}
btHinge2Constraint.prototype['getAxis1'] = function() {
    return wrapPointer(_emscripten_bind_btHinge2Constraint__getAxis1_p0(this.ptr), Module['btVector3']);
}
btHinge2Constraint.prototype['getUserConstraintPtr'] = function() {
    return _emscripten_bind_btHinge2Constraint__getUserConstraintPtr_p0(this.ptr);
}
btHinge2Constraint.prototype['getAxis2'] = function() {
    return wrapPointer(_emscripten_bind_btHinge2Constraint__getAxis2_p0(this.ptr), Module['btVector3']);
}
function btHinge2Constraint(arg0, arg1, arg2, arg3, arg4) {
    this.ptr = _emscripten_bind_btHinge2Constraint__btHinge2Constraint_p5(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr);
  btHinge2Constraint.prototype.__cache__[this.ptr] = this;
  this.__class__ = btHinge2Constraint;
}
btHinge2Constraint.prototype.__cache__ = {};
Module['btHinge2Constraint'] = btHinge2Constraint;
btHinge2Constraint.prototype['setLinearUpperLimit'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__setLinearUpperLimit_p1(this.ptr, arg0.ptr);
}
btHinge2Constraint.prototype['setAngularUpperLimit'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__setAngularUpperLimit_p1(this.ptr, arg0.ptr);
}
btHinge2Constraint.prototype['setAxis'] = function(arg0, arg1) {
    _emscripten_bind_btHinge2Constraint__setAxis_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btHinge2Constraint.prototype['setUserConstraintPtr'] = function(arg0) {
    _emscripten_bind_btHinge2Constraint__setUserConstraintPtr_p1(this.ptr, arg0);
}
btHinge2Constraint.prototype['testAngularLimitMotor'] = function(arg0) {
    return _emscripten_bind_btHinge2Constraint__testAngularLimitMotor_p1(this.ptr, arg0);
}
function btConstraintSolver(){ throw "btConstraintSolver is abstract!" }
btConstraintSolver.prototype.__cache__ = {};
Module['btConstraintSolver'] = btConstraintSolver;
btConstraintSolver.prototype['reset'] = function() {
    _emscripten_bind_btConstraintSolver__reset_p0(this.ptr);
}
btConstraintSolver.prototype['allSolved'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConstraintSolver__allSolved_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConstraintSolver.prototype['solveGroup'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {
    return _emscripten_bind_btConstraintSolver__solveGroup_p10(this.ptr, arg0.ptr, arg1, arg2.ptr, arg3, arg4.ptr, arg5, arg6.ptr, arg7.ptr, arg8.ptr, arg9.ptr);
}
btConstraintSolver.prototype['prepareSolve'] = function(arg0, arg1) {
    _emscripten_bind_btConstraintSolver__prepareSolve_p2(this.ptr, arg0, arg1);
}
btRaycastVehicle.prototype['updateSuspension'] = function(arg0) {
    _emscripten_bind_btRaycastVehicle__updateSuspension_p1(this.ptr, arg0);
}
btRaycastVehicle.prototype['getRigidBody'] = function() {
    return wrapPointer(_emscripten_bind_btRaycastVehicle__getRigidBody_p0(this.ptr), Module['btRigidBody']);
}
btRaycastVehicle.prototype['getUserConstraintId'] = function() {
    return _emscripten_bind_btRaycastVehicle__getUserConstraintId_p0(this.ptr);
}
btRaycastVehicle.prototype['getWheelTransformWS'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btRaycastVehicle__getWheelTransformWS_p1(this.ptr, arg0), Module['btTransform']);
}
btRaycastVehicle.prototype['addWheel'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
    return wrapPointer(_emscripten_bind_btRaycastVehicle__addWheel_p7(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4, arg5.ptr, arg6), Module['btWheelInfo']);
}
btRaycastVehicle.prototype['updateWheelTransform'] = function(arg0, arg1) {
  if (arg1 === undefined)
    _emscripten_bind_btRaycastVehicle__updateWheelTransform_p1(this.ptr, arg0);
  else 
    _emscripten_bind_btRaycastVehicle__updateWheelTransform_p2(this.ptr, arg0, arg1);
}
btRaycastVehicle.prototype['setUserConstraintId'] = function(arg0) {
    _emscripten_bind_btRaycastVehicle__setUserConstraintId_p1(this.ptr, arg0);
}
btRaycastVehicle.prototype['getNumWheels'] = function() {
    return _emscripten_bind_btRaycastVehicle__getNumWheels_p0(this.ptr);
}
btRaycastVehicle.prototype['rayCast'] = function(arg0) {
    return _emscripten_bind_btRaycastVehicle__rayCast_p1(this.ptr, arg0.ptr);
}
btRaycastVehicle.prototype['getRightAxis'] = function() {
    return _emscripten_bind_btRaycastVehicle__getRightAxis_p0(this.ptr);
}
btRaycastVehicle.prototype['applyEngineForce'] = function(arg0, arg1) {
    _emscripten_bind_btRaycastVehicle__applyEngineForce_p2(this.ptr, arg0, arg1);
}
btRaycastVehicle.prototype['getForwardVector'] = function() {
    return wrapPointer(_emscripten_bind_btRaycastVehicle__getForwardVector_p0(this.ptr), Module['btVector3']);
}
btRaycastVehicle.prototype['getWheelInfo'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btRaycastVehicle__getWheelInfo_p1(this.ptr, arg0), Module['btWheelInfo']);
}
btRaycastVehicle.prototype['getChassisWorldTransform'] = function() {
    return wrapPointer(_emscripten_bind_btRaycastVehicle__getChassisWorldTransform_p0(this.ptr), Module['btTransform']);
}
btRaycastVehicle.prototype['updateWheelTransformsWS'] = function(arg0, arg1) {
  if (arg1 === undefined)
    _emscripten_bind_btRaycastVehicle__updateWheelTransformsWS_p1(this.ptr, arg0.ptr);
  else 
    _emscripten_bind_btRaycastVehicle__updateWheelTransformsWS_p2(this.ptr, arg0.ptr, arg1);
}
btRaycastVehicle.prototype['resetSuspension'] = function() {
    _emscripten_bind_btRaycastVehicle__resetSuspension_p0(this.ptr);
}
btRaycastVehicle.prototype['setCoordinateSystem'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btRaycastVehicle__setCoordinateSystem_p3(this.ptr, arg0, arg1, arg2);
}
btRaycastVehicle.prototype['setUserConstraintType'] = function(arg0) {
    _emscripten_bind_btRaycastVehicle__setUserConstraintType_p1(this.ptr, arg0);
}
btRaycastVehicle.prototype['debugDraw'] = function(arg0) {
    _emscripten_bind_btRaycastVehicle__debugDraw_p1(this.ptr, arg0.ptr);
}
btRaycastVehicle.prototype['__destroy__'] = function() {
    _emscripten_bind_btRaycastVehicle____destroy___p0(this.ptr);
}
btRaycastVehicle.prototype['updateFriction'] = function(arg0) {
    _emscripten_bind_btRaycastVehicle__updateFriction_p1(this.ptr, arg0);
}
function btRaycastVehicle(arg0, arg1, arg2) {
    this.ptr = _emscripten_bind_btRaycastVehicle__btRaycastVehicle_p3(arg0.ptr, arg1.ptr, arg2.ptr);
  btRaycastVehicle.prototype.__cache__[this.ptr] = this;
  this.__class__ = btRaycastVehicle;
}
btRaycastVehicle.prototype.__cache__ = {};
Module['btRaycastVehicle'] = btRaycastVehicle;
btRaycastVehicle.prototype['getForwardAxis'] = function() {
    return _emscripten_bind_btRaycastVehicle__getForwardAxis_p0(this.ptr);
}
btRaycastVehicle.prototype['getSteeringValue'] = function(arg0) {
    return _emscripten_bind_btRaycastVehicle__getSteeringValue_p1(this.ptr, arg0);
}
btRaycastVehicle.prototype['getUserConstraintType'] = function() {
    return _emscripten_bind_btRaycastVehicle__getUserConstraintType_p0(this.ptr);
}
btRaycastVehicle.prototype['getUpAxis'] = function() {
    return _emscripten_bind_btRaycastVehicle__getUpAxis_p0(this.ptr);
}
btRaycastVehicle.prototype['setPitchControl'] = function(arg0) {
    _emscripten_bind_btRaycastVehicle__setPitchControl_p1(this.ptr, arg0);
}
btRaycastVehicle.prototype['getCurrentSpeedKmHour'] = function() {
    return _emscripten_bind_btRaycastVehicle__getCurrentSpeedKmHour_p0(this.ptr);
}
btRaycastVehicle.prototype['setBrake'] = function(arg0, arg1) {
    _emscripten_bind_btRaycastVehicle__setBrake_p2(this.ptr, arg0, arg1);
}
btRaycastVehicle.prototype['setSteeringValue'] = function(arg0, arg1) {
    _emscripten_bind_btRaycastVehicle__setSteeringValue_p2(this.ptr, arg0, arg1);
}
btRaycastVehicle.prototype['updateVehicle'] = function(arg0) {
    _emscripten_bind_btRaycastVehicle__updateVehicle_p1(this.ptr, arg0);
}
btRaycastVehicle.prototype['updateAction'] = function(arg0, arg1) {
    _emscripten_bind_btRaycastVehicle__updateAction_p2(this.ptr, arg0.ptr, arg1);
}
AllHitsRayResultCallback.prototype['__destroy__'] = function() {
    _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback____destroy___p0(this.ptr);
}
AllHitsRayResultCallback.prototype['set_m_collisionFilterGroup'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionFilterGroup_p1(this.ptr, arg0);
}
AllHitsRayResultCallback.prototype['needsCollision'] = function(arg0) {
    return _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__needsCollision_p1(this.ptr, arg0.ptr);
}
AllHitsRayResultCallback.prototype['set_m_closestHitFraction'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_closestHitFraction_p1(this.ptr, arg0);
}
AllHitsRayResultCallback.prototype['set_m_collisionFilterMask'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionFilterMask_p1(this.ptr, arg0);
}
AllHitsRayResultCallback.prototype['get_m_closestHitFraction'] = function() {
    return _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_closestHitFraction_p0(this.ptr);
}
AllHitsRayResultCallback.prototype['addSingleResult'] = function(arg0, arg1) {
    return _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__addSingleResult_p2(this.ptr, arg0.ptr, arg1);
}
AllHitsRayResultCallback.prototype['set_m_rayToWorld'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_rayToWorld_p1(this.ptr, arg0.ptr);
}
AllHitsRayResultCallback.prototype['set_m_flags'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_flags_p1(this.ptr, arg0);
}
AllHitsRayResultCallback.prototype['get_m_collisionFilterMask'] = function() {
    return _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionFilterMask_p0(this.ptr);
}
AllHitsRayResultCallback.prototype['get_m_rayToWorld'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_rayToWorld_p0(this.ptr), Module['btVector3']);
}
AllHitsRayResultCallback.prototype['get_m_flags'] = function() {
    return _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_flags_p0(this.ptr);
}
AllHitsRayResultCallback.prototype['get_m_rayFromWorld'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_rayFromWorld_p0(this.ptr), Module['btVector3']);
}
AllHitsRayResultCallback.prototype['get_m_collisionFilterGroup'] = function() {
    return _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionFilterGroup_p0(this.ptr);
}
AllHitsRayResultCallback.prototype['hasHit'] = function() {
    return _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__hasHit_p0(this.ptr);
}
AllHitsRayResultCallback.prototype['set_m_collisionObject'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionObject_p1(this.ptr, arg0.ptr);
}
AllHitsRayResultCallback.prototype['set_m_rayFromWorld'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_rayFromWorld_p1(this.ptr, arg0.ptr);
}
function AllHitsRayResultCallback(arg0, arg1) {
    this.ptr = _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__AllHitsRayResultCallback_p2(arg0.ptr, arg1.ptr);
  AllHitsRayResultCallback.prototype.__cache__[this.ptr] = this;
  this.__class__ = AllHitsRayResultCallback;
}
AllHitsRayResultCallback.prototype.__cache__ = {};
Module['AllHitsRayResultCallback'] = AllHitsRayResultCallback;
AllHitsRayResultCallback.prototype['get_m_collisionObject'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionObject_p0(this.ptr), Module['btCollisionObject']);
}
btCylinderShapeX.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btCylinderShapeX__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btCylinderShapeX.prototype['isCompound'] = function() {
    return _emscripten_bind_btCylinderShapeX__isCompound_p0(this.ptr);
}
btCylinderShapeX.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCylinderShapeX__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCylinderShapeX.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btCylinderShapeX__setUserPointer_p1(this.ptr, arg0);
}
btCylinderShapeX.prototype['getUpAxis'] = function() {
    return _emscripten_bind_btCylinderShapeX__getUpAxis_p0(this.ptr);
}
btCylinderShapeX.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btCylinderShapeX__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btCylinderShapeX.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btCylinderShapeX__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btCylinderShapeX.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btCylinderShapeX__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btCylinderShapeX.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btCylinderShapeX__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btCylinderShapeX.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btCylinderShapeX__isPolyhedral_p0(this.ptr);
}
btCylinderShapeX.prototype['getRadius'] = function() {
    return _emscripten_bind_btCylinderShapeX__getRadius_p0(this.ptr);
}
btCylinderShapeX.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCylinderShapeX__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCylinderShapeX.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btCylinderShapeX__calculateSerializeBufferSize_p0(this.ptr);
}
btCylinderShapeX.prototype['getName'] = function() {
    return _emscripten_bind_btCylinderShapeX__getName_p0(this.ptr);
}
btCylinderShapeX.prototype['getLocalScalingNV'] = function() {
    return wrapPointer(_emscripten_bind_btCylinderShapeX__getLocalScalingNV_p0(this.ptr), Module['btVector3']);
}
btCylinderShapeX.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCylinderShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCylinderShapeX.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCylinderShapeX__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCylinderShapeX.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btCylinderShapeX__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btCylinderShapeX.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCylinderShapeX__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCylinderShapeX.prototype['getMarginNV'] = function() {
    return _emscripten_bind_btCylinderShapeX__getMarginNV_p0(this.ptr);
}
btCylinderShapeX.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCylinderShapeX__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCylinderShapeX.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btCylinderShapeX__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btCylinderShapeX.prototype['isConvex'] = function() {
    return _emscripten_bind_btCylinderShapeX__isConvex_p0(this.ptr);
}
btCylinderShapeX.prototype['isInfinite'] = function() {
    return _emscripten_bind_btCylinderShapeX__isInfinite_p0(this.ptr);
}
btCylinderShapeX.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btCylinderShapeX__getUserPointer_p0(this.ptr);
}
btCylinderShapeX.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btCylinderShapeX__isNonMoving_p0(this.ptr);
}
btCylinderShapeX.prototype['getMargin'] = function() {
    return _emscripten_bind_btCylinderShapeX__getMargin_p0(this.ptr);
}
btCylinderShapeX.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btCylinderShapeX__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btCylinderShapeX.prototype['getHalfExtentsWithoutMargin'] = function() {
    return wrapPointer(_emscripten_bind_btCylinderShapeX__getHalfExtentsWithoutMargin_p0(this.ptr), Module['btVector3']);
}
btCylinderShapeX.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btCylinderShapeX__isConvex2d_p0(this.ptr);
}
btCylinderShapeX.prototype['setImplicitShapeDimensions'] = function(arg0) {
    _emscripten_bind_btCylinderShapeX__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr);
}
btCylinderShapeX.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btCylinderShapeX__isSoftBody_p0(this.ptr);
}
btCylinderShapeX.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btCylinderShapeX__getMarginNonVirtual_p0(this.ptr);
}
btCylinderShapeX.prototype['__destroy__'] = function() {
    _emscripten_bind_btCylinderShapeX____destroy___p0(this.ptr);
}
btCylinderShapeX.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCylinderShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btCylinderShapeX.prototype['getImplicitShapeDimensions'] = function() {
    return wrapPointer(_emscripten_bind_btCylinderShapeX__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']);
}
btCylinderShapeX.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btCylinderShapeX__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btCylinderShapeX.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btCylinderShapeX__getAngularMotionDisc_p0(this.ptr);
}
function btCylinderShapeX(arg0) {
    this.ptr = _emscripten_bind_btCylinderShapeX__btCylinderShapeX_p1(arg0.ptr);
  btCylinderShapeX.prototype.__cache__[this.ptr] = this;
  this.__class__ = btCylinderShapeX;
}
btCylinderShapeX.prototype.__cache__ = {};
Module['btCylinderShapeX'] = btCylinderShapeX;
btCylinderShapeX.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCylinderShapeX__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCylinderShapeX.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btCylinderShapeX__setMargin_p1(this.ptr, arg0);
}
btCylinderShapeX.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btCylinderShapeX__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btCylinderShapeX.prototype['getHalfExtentsWithMargin'] = function() {
    return wrapPointer(_emscripten_bind_btCylinderShapeX__getHalfExtentsWithMargin_p0(this.ptr), Module['btVector3']);
}
btCylinderShapeX.prototype['isConcave'] = function() {
    return _emscripten_bind_btCylinderShapeX__isConcave_p0(this.ptr);
}
btCylinderShapeX.prototype['getShapeType'] = function() {
    return _emscripten_bind_btCylinderShapeX__getShapeType_p0(this.ptr);
}
function RayResultCallback(){ throw "RayResultCallback is abstract!" }
RayResultCallback.prototype.__cache__ = {};
Module['RayResultCallback'] = RayResultCallback;
RayResultCallback.prototype['get_m_closestHitFraction'] = function() {
    return _emscripten_bind_btCollisionWorld__RayResultCallback__get_m_closestHitFraction_p0(this.ptr);
}
RayResultCallback.prototype['set_m_collisionFilterGroup'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionFilterGroup_p1(this.ptr, arg0);
}
RayResultCallback.prototype['get_m_flags'] = function() {
    return _emscripten_bind_btCollisionWorld__RayResultCallback__get_m_flags_p0(this.ptr);
}
RayResultCallback.prototype['set_m_closestHitFraction'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__RayResultCallback__set_m_closestHitFraction_p1(this.ptr, arg0);
}
RayResultCallback.prototype['set_m_collisionFilterMask'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionFilterMask_p1(this.ptr, arg0);
}
RayResultCallback.prototype['set_m_flags'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__RayResultCallback__set_m_flags_p1(this.ptr, arg0);
}
RayResultCallback.prototype['hasHit'] = function() {
    return _emscripten_bind_btCollisionWorld__RayResultCallback__hasHit_p0(this.ptr);
}
RayResultCallback.prototype['get_m_collisionFilterMask'] = function() {
    return _emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionFilterMask_p0(this.ptr);
}
RayResultCallback.prototype['get_m_collisionFilterGroup'] = function() {
    return _emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionFilterGroup_p0(this.ptr);
}
RayResultCallback.prototype['addSingleResult'] = function(arg0, arg1) {
    return _emscripten_bind_btCollisionWorld__RayResultCallback__addSingleResult_p2(this.ptr, arg0.ptr, arg1);
}
RayResultCallback.prototype['set_m_collisionObject'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionObject_p1(this.ptr, arg0.ptr);
}
RayResultCallback.prototype['needsCollision'] = function(arg0) {
    return _emscripten_bind_btCollisionWorld__RayResultCallback__needsCollision_p1(this.ptr, arg0.ptr);
}
RayResultCallback.prototype['get_m_collisionObject'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionObject_p0(this.ptr), Module['btCollisionObject']);
}
btUniformScalingShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btUniformScalingShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btUniformScalingShape.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btUniformScalingShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btUniformScalingShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btUniformScalingShape__setUserPointer_p1(this.ptr, arg0);
}
btUniformScalingShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btUniformScalingShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btUniformScalingShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btUniformScalingShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btUniformScalingShape.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btUniformScalingShape__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btUniformScalingShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btUniformScalingShape__isPolyhedral_p0(this.ptr);
}
btUniformScalingShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btUniformScalingShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btUniformScalingShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btUniformScalingShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btUniformScalingShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btUniformScalingShape__calculateSerializeBufferSize_p0(this.ptr);
}
btUniformScalingShape.prototype['getName'] = function() {
    return _emscripten_bind_btUniformScalingShape__getName_p0(this.ptr);
}
btUniformScalingShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btUniformScalingShape__isCompound_p0(this.ptr);
}
btUniformScalingShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btUniformScalingShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btUniformScalingShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btUniformScalingShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btUniformScalingShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btUniformScalingShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btUniformScalingShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btUniformScalingShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btUniformScalingShape.prototype['getChildShape'] = function() {
    return wrapPointer(_emscripten_bind_btUniformScalingShape__getChildShape_p0(this.ptr), Module['btConvexShape']);
}
btUniformScalingShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btUniformScalingShape__isConvex_p0(this.ptr);
}
btUniformScalingShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btUniformScalingShape__isInfinite_p0(this.ptr);
}
btUniformScalingShape.prototype['__destroy__'] = function() {
    _emscripten_bind_btUniformScalingShape____destroy___p0(this.ptr);
}
btUniformScalingShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btUniformScalingShape__getUserPointer_p0(this.ptr);
}
btUniformScalingShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btUniformScalingShape__isNonMoving_p0(this.ptr);
}
btUniformScalingShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btUniformScalingShape__getMargin_p0(this.ptr);
}
btUniformScalingShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btUniformScalingShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btUniformScalingShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btUniformScalingShape__setMargin_p1(this.ptr, arg0);
}
btUniformScalingShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btUniformScalingShape__isConvex2d_p0(this.ptr);
}
btUniformScalingShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btUniformScalingShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btUniformScalingShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btUniformScalingShape__isSoftBody_p0(this.ptr);
}
btUniformScalingShape.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btUniformScalingShape__getMarginNonVirtual_p0(this.ptr);
}
btUniformScalingShape.prototype['getUniformScalingFactor'] = function() {
    return _emscripten_bind_btUniformScalingShape__getUniformScalingFactor_p0(this.ptr);
}
btUniformScalingShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btUniformScalingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btUniformScalingShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btUniformScalingShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btUniformScalingShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btUniformScalingShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btUniformScalingShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btUniformScalingShape__getAngularMotionDisc_p0(this.ptr);
}
btUniformScalingShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btUniformScalingShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btUniformScalingShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btUniformScalingShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
function btUniformScalingShape(arg0, arg1) {
    this.ptr = _emscripten_bind_btUniformScalingShape__btUniformScalingShape_p2(arg0.ptr, arg1);
  btUniformScalingShape.prototype.__cache__[this.ptr] = this;
  this.__class__ = btUniformScalingShape;
}
btUniformScalingShape.prototype.__cache__ = {};
Module['btUniformScalingShape'] = btUniformScalingShape;
btUniformScalingShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btUniformScalingShape__isConcave_p0(this.ptr);
}
btUniformScalingShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btUniformScalingShape__getShapeType_p0(this.ptr);
}
btVehicleRaycasterResult.prototype['__destroy__'] = function() {
    _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult____destroy___p0(this.ptr);
}
function btVehicleRaycasterResult() {
    this.ptr = _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__btVehicleRaycasterResult_p0();
  btVehicleRaycasterResult.prototype.__cache__[this.ptr] = this;
  this.__class__ = btVehicleRaycasterResult;
}
btVehicleRaycasterResult.prototype.__cache__ = {};
Module['btVehicleRaycasterResult'] = btVehicleRaycasterResult;
btVehicleRaycasterResult.prototype['set_m_distFraction'] = function(arg0) {
    _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_distFraction_p1(this.ptr, arg0);
}
btVehicleRaycasterResult.prototype['get_m_hitNormalInWorld'] = function() {
    return wrapPointer(_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_hitNormalInWorld_p0(this.ptr), Module['btVector3']);
}
btVehicleRaycasterResult.prototype['get_m_hitPointInWorld'] = function() {
    return wrapPointer(_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_hitPointInWorld_p0(this.ptr), Module['btVector3']);
}
btVehicleRaycasterResult.prototype['get_m_distFraction'] = function() {
    return _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_distFraction_p0(this.ptr);
}
btVehicleRaycasterResult.prototype['set_m_hitNormalInWorld'] = function(arg0) {
    _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_hitNormalInWorld_p1(this.ptr, arg0.ptr);
}
btVehicleRaycasterResult.prototype['set_m_hitPointInWorld'] = function(arg0) {
    _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_hitPointInWorld_p1(this.ptr, arg0.ptr);
}
btQuadWord.prototype['__destroy__'] = function() {
    _emscripten_bind_btQuadWord____destroy___p0(this.ptr);
}
btQuadWord.prototype['setMin'] = function(arg0) {
    _emscripten_bind_btQuadWord__setMin_p1(this.ptr, arg0.ptr);
}
btQuadWord.prototype['setValue'] = function(arg0, arg1, arg2, arg3) {
  if (arg3 === undefined)
    _emscripten_bind_btQuadWord__setValue_p3(this.ptr, arg0, arg1, arg2);
  else 
    _emscripten_bind_btQuadWord__setValue_p4(this.ptr, arg0, arg1, arg2, arg3);
}
btQuadWord.prototype['setMax'] = function(arg0) {
    _emscripten_bind_btQuadWord__setMax_p1(this.ptr, arg0.ptr);
}
btQuadWord.prototype['op_comp'] = function(arg0) {
    return _emscripten_bind_btQuadWord__op_comp_p1(this.ptr, arg0.ptr);
}
btQuadWord.prototype['getX'] = function() {
    return _emscripten_bind_btQuadWord__getX_p0(this.ptr);
}
btQuadWord.prototype['getY'] = function() {
    return _emscripten_bind_btQuadWord__getY_p0(this.ptr);
}
btQuadWord.prototype['getZ'] = function() {
    return _emscripten_bind_btQuadWord__getZ_p0(this.ptr);
}
btQuadWord.prototype['setW'] = function(arg0) {
    _emscripten_bind_btQuadWord__setW_p1(this.ptr, arg0);
}
btQuadWord.prototype['op_set'] = function(arg0) {
    return _emscripten_bind_btQuadWord__op_set_p1(this.ptr, arg0.ptr);
}
btQuadWord.prototype['w'] = function() {
    return _emscripten_bind_btQuadWord__w_p0(this.ptr);
}
btQuadWord.prototype['y'] = function() {
    return _emscripten_bind_btQuadWord__y_p0(this.ptr);
}
btQuadWord.prototype['x'] = function() {
    return _emscripten_bind_btQuadWord__x_p0(this.ptr);
}
btQuadWord.prototype['z'] = function() {
    return _emscripten_bind_btQuadWord__z_p0(this.ptr);
}
btQuadWord.prototype['setX'] = function(arg0) {
    _emscripten_bind_btQuadWord__setX_p1(this.ptr, arg0);
}
btQuadWord.prototype['setY'] = function(arg0) {
    _emscripten_bind_btQuadWord__setY_p1(this.ptr, arg0);
}
btQuadWord.prototype['setZ'] = function(arg0) {
    _emscripten_bind_btQuadWord__setZ_p1(this.ptr, arg0);
}
function btQuadWord(arg0, arg1, arg2, arg3) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btQuadWord__btQuadWord_p0();
  else   if (arg3 === undefined)
    this.ptr = _emscripten_bind_btQuadWord__btQuadWord_p3(arg0, arg1, arg2);
  else 
    this.ptr = _emscripten_bind_btQuadWord__btQuadWord_p4(arg0, arg1, arg2, arg3);
  btQuadWord.prototype.__cache__[this.ptr] = this;
  this.__class__ = btQuadWord;
}
btQuadWord.prototype.__cache__ = {};
Module['btQuadWord'] = btQuadWord;
btCylinderShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btCylinderShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btCylinderShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btCylinderShape__isCompound_p0(this.ptr);
}
btCylinderShape.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCylinderShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCylinderShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btCylinderShape__setUserPointer_p1(this.ptr, arg0);
}
btCylinderShape.prototype['getUpAxis'] = function() {
    return _emscripten_bind_btCylinderShape__getUpAxis_p0(this.ptr);
}
btCylinderShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btCylinderShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btCylinderShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btCylinderShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btCylinderShape.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btCylinderShape__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btCylinderShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btCylinderShape__isPolyhedral_p0(this.ptr);
}
btCylinderShape.prototype['getRadius'] = function() {
    return _emscripten_bind_btCylinderShape__getRadius_p0(this.ptr);
}
btCylinderShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCylinderShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCylinderShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btCylinderShape__calculateSerializeBufferSize_p0(this.ptr);
}
btCylinderShape.prototype['getName'] = function() {
    return _emscripten_bind_btCylinderShape__getName_p0(this.ptr);
}
btCylinderShape.prototype['getLocalScalingNV'] = function() {
    return wrapPointer(_emscripten_bind_btCylinderShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']);
}
btCylinderShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCylinderShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCylinderShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCylinderShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCylinderShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btCylinderShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btCylinderShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCylinderShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCylinderShape.prototype['getMarginNV'] = function() {
    return _emscripten_bind_btCylinderShape__getMarginNV_p0(this.ptr);
}
btCylinderShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCylinderShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCylinderShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btCylinderShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btCylinderShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btCylinderShape__isConvex_p0(this.ptr);
}
btCylinderShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btCylinderShape__isInfinite_p0(this.ptr);
}
btCylinderShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btCylinderShape__getUserPointer_p0(this.ptr);
}
btCylinderShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btCylinderShape__isNonMoving_p0(this.ptr);
}
btCylinderShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btCylinderShape__getMargin_p0(this.ptr);
}
btCylinderShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btCylinderShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btCylinderShape.prototype['getHalfExtentsWithoutMargin'] = function() {
    return wrapPointer(_emscripten_bind_btCylinderShape__getHalfExtentsWithoutMargin_p0(this.ptr), Module['btVector3']);
}
btCylinderShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btCylinderShape__isConvex2d_p0(this.ptr);
}
btCylinderShape.prototype['setImplicitShapeDimensions'] = function(arg0) {
    _emscripten_bind_btCylinderShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr);
}
btCylinderShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btCylinderShape__isSoftBody_p0(this.ptr);
}
btCylinderShape.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btCylinderShape__getMarginNonVirtual_p0(this.ptr);
}
btCylinderShape.prototype['__destroy__'] = function() {
    _emscripten_bind_btCylinderShape____destroy___p0(this.ptr);
}
btCylinderShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCylinderShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btCylinderShape.prototype['getImplicitShapeDimensions'] = function() {
    return wrapPointer(_emscripten_bind_btCylinderShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']);
}
btCylinderShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btCylinderShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btCylinderShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btCylinderShape__getAngularMotionDisc_p0(this.ptr);
}
btCylinderShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btCylinderShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btCylinderShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCylinderShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCylinderShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btCylinderShape__setMargin_p1(this.ptr, arg0);
}
btCylinderShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btCylinderShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
function btCylinderShape(arg0) {
    this.ptr = _emscripten_bind_btCylinderShape__btCylinderShape_p1(arg0.ptr);
  btCylinderShape.prototype.__cache__[this.ptr] = this;
  this.__class__ = btCylinderShape;
}
btCylinderShape.prototype.__cache__ = {};
Module['btCylinderShape'] = btCylinderShape;
btCylinderShape.prototype['getHalfExtentsWithMargin'] = function() {
    return wrapPointer(_emscripten_bind_btCylinderShape__getHalfExtentsWithMargin_p0(this.ptr), Module['btVector3']);
}
btCylinderShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btCylinderShape__isConcave_p0(this.ptr);
}
btCylinderShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btCylinderShape__getShapeType_p0(this.ptr);
}
function btStorageResult(){ throw "btStorageResult is abstract!" }
btStorageResult.prototype.__cache__ = {};
Module['btStorageResult'] = btStorageResult;
btStorageResult.prototype['set_m_distance'] = function(arg0) {
    _emscripten_bind_btStorageResult__set_m_distance_p1(this.ptr, arg0);
}
btStorageResult.prototype['set_m_closestPointInB'] = function(arg0) {
    _emscripten_bind_btStorageResult__set_m_closestPointInB_p1(this.ptr, arg0.ptr);
}
btStorageResult.prototype['addContactPoint'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btStorageResult__addContactPoint_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btStorageResult.prototype['set_m_normalOnSurfaceB'] = function(arg0) {
    _emscripten_bind_btStorageResult__set_m_normalOnSurfaceB_p1(this.ptr, arg0.ptr);
}
btStorageResult.prototype['get_m_distance'] = function() {
    return _emscripten_bind_btStorageResult__get_m_distance_p0(this.ptr);
}
btStorageResult.prototype['setShapeIdentifiersB'] = function(arg0, arg1) {
    _emscripten_bind_btStorageResult__setShapeIdentifiersB_p2(this.ptr, arg0, arg1);
}
btStorageResult.prototype['setShapeIdentifiersA'] = function(arg0, arg1) {
    _emscripten_bind_btStorageResult__setShapeIdentifiersA_p2(this.ptr, arg0, arg1);
}
btStorageResult.prototype['get_m_closestPointInB'] = function() {
    return wrapPointer(_emscripten_bind_btStorageResult__get_m_closestPointInB_p0(this.ptr), Module['btVector3']);
}
btStorageResult.prototype['get_m_normalOnSurfaceB'] = function() {
    return wrapPointer(_emscripten_bind_btStorageResult__get_m_normalOnSurfaceB_p0(this.ptr), Module['btVector3']);
}
btDbvtProxy.prototype['get_m_clientObject'] = function() {
    return _emscripten_bind_btDbvtProxy__get_m_clientObject_p0(this.ptr);
}
btDbvtProxy.prototype['get_stage'] = function() {
    return _emscripten_bind_btDbvtProxy__get_stage_p0(this.ptr);
}
btDbvtProxy.prototype['set_stage'] = function(arg0) {
    _emscripten_bind_btDbvtProxy__set_stage_p1(this.ptr, arg0);
}
btDbvtProxy.prototype['set_m_clientObject'] = function(arg0) {
    _emscripten_bind_btDbvtProxy__set_m_clientObject_p1(this.ptr, arg0);
}
btDbvtProxy.prototype['get_leaf'] = function() {
    return wrapPointer(_emscripten_bind_btDbvtProxy__get_leaf_p0(this.ptr), Module['btDbvtNode']);
}
btDbvtProxy.prototype['isCompound'] = function(arg0) {
    return _emscripten_bind_btDbvtProxy__isCompound_p1(arg0);
}
btDbvtProxy.prototype['isPolyhedral'] = function(arg0) {
    return _emscripten_bind_btDbvtProxy__isPolyhedral_p1(arg0);
}
btDbvtProxy.prototype['get_m_aabbMin'] = function() {
    return wrapPointer(_emscripten_bind_btDbvtProxy__get_m_aabbMin_p0(this.ptr), Module['btVector3']);
}
btDbvtProxy.prototype['set_m_uniqueId'] = function(arg0) {
    _emscripten_bind_btDbvtProxy__set_m_uniqueId_p1(this.ptr, arg0);
}
btDbvtProxy.prototype['isConvex'] = function(arg0) {
    return _emscripten_bind_btDbvtProxy__isConvex_p1(arg0);
}
btDbvtProxy.prototype['get_m_collisionFilterMask'] = function() {
    return _emscripten_bind_btDbvtProxy__get_m_collisionFilterMask_p0(this.ptr);
}
btDbvtProxy.prototype['getUid'] = function() {
    return _emscripten_bind_btDbvtProxy__getUid_p0(this.ptr);
}
btDbvtProxy.prototype['get_m_aabbMax'] = function() {
    return wrapPointer(_emscripten_bind_btDbvtProxy__get_m_aabbMax_p0(this.ptr), Module['btVector3']);
}
btDbvtProxy.prototype['isNonMoving'] = function(arg0) {
    return _emscripten_bind_btDbvtProxy__isNonMoving_p1(arg0);
}
btDbvtProxy.prototype['set_m_aabbMin'] = function(arg0) {
    _emscripten_bind_btDbvtProxy__set_m_aabbMin_p1(this.ptr, arg0.ptr);
}
btDbvtProxy.prototype['set_m_multiSapParentProxy'] = function(arg0) {
    _emscripten_bind_btDbvtProxy__set_m_multiSapParentProxy_p1(this.ptr, arg0);
}
btDbvtProxy.prototype['set_m_collisionFilterGroup'] = function(arg0) {
    _emscripten_bind_btDbvtProxy__set_m_collisionFilterGroup_p1(this.ptr, arg0);
}
function btDbvtProxy(arg0, arg1, arg2, arg3, arg4) {
    this.ptr = _emscripten_bind_btDbvtProxy__btDbvtProxy_p5(arg0.ptr, arg1.ptr, arg2, arg3, arg4);
  btDbvtProxy.prototype.__cache__[this.ptr] = this;
  this.__class__ = btDbvtProxy;
}
btDbvtProxy.prototype.__cache__ = {};
Module['btDbvtProxy'] = btDbvtProxy;
btDbvtProxy.prototype['isSoftBody'] = function(arg0) {
    return _emscripten_bind_btDbvtProxy__isSoftBody_p1(arg0);
}
btDbvtProxy.prototype['set_m_aabbMax'] = function(arg0) {
    _emscripten_bind_btDbvtProxy__set_m_aabbMax_p1(this.ptr, arg0.ptr);
}
btDbvtProxy.prototype['__destroy__'] = function() {
    _emscripten_bind_btDbvtProxy____destroy___p0(this.ptr);
}
btDbvtProxy.prototype['get_m_uniqueId'] = function() {
    return _emscripten_bind_btDbvtProxy__get_m_uniqueId_p0(this.ptr);
}
btDbvtProxy.prototype['set_m_collisionFilterMask'] = function(arg0) {
    _emscripten_bind_btDbvtProxy__set_m_collisionFilterMask_p1(this.ptr, arg0);
}
btDbvtProxy.prototype['set_leaf'] = function(arg0) {
    _emscripten_bind_btDbvtProxy__set_leaf_p1(this.ptr, arg0.ptr);
}
btDbvtProxy.prototype['isInfinite'] = function(arg0) {
    return _emscripten_bind_btDbvtProxy__isInfinite_p1(arg0);
}
btDbvtProxy.prototype['isConcave'] = function(arg0) {
    return _emscripten_bind_btDbvtProxy__isConcave_p1(arg0);
}
btDbvtProxy.prototype['get_m_multiSapParentProxy'] = function() {
    return _emscripten_bind_btDbvtProxy__get_m_multiSapParentProxy_p0(this.ptr);
}
btDbvtProxy.prototype['get_m_collisionFilterGroup'] = function() {
    return _emscripten_bind_btDbvtProxy__get_m_collisionFilterGroup_p0(this.ptr);
}
btDbvtProxy.prototype['isConvex2d'] = function(arg0) {
    return _emscripten_bind_btDbvtProxy__isConvex2d_p1(arg0);
}
function ConcreteContactResultCallback() {
    this.ptr = _emscripten_bind_ConcreteContactResultCallback__ConcreteContactResultCallback_p0();
  ConcreteContactResultCallback.prototype.__cache__[this.ptr] = this;
  this.__class__ = ConcreteContactResultCallback;
}
ConcreteContactResultCallback.prototype.__cache__ = {};
Module['ConcreteContactResultCallback'] = ConcreteContactResultCallback;
ConcreteContactResultCallback.prototype['__destroy__'] = function() {
    _emscripten_bind_ConcreteContactResultCallback____destroy___p0(this.ptr);
}
ConcreteContactResultCallback.prototype['set_m_collisionFilterGroup'] = function(arg0) {
    _emscripten_bind_ConcreteContactResultCallback__set_m_collisionFilterGroup_p1(this.ptr, arg0);
}
ConcreteContactResultCallback.prototype['set_m_collisionFilterMask'] = function(arg0) {
    _emscripten_bind_ConcreteContactResultCallback__set_m_collisionFilterMask_p1(this.ptr, arg0);
}
ConcreteContactResultCallback.prototype['addSingleResult'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
    return _emscripten_bind_ConcreteContactResultCallback__addSingleResult_p7(this.ptr, arg0.ptr, arg1.ptr, arg2, arg3, arg4.ptr, arg5, arg6);
}
ConcreteContactResultCallback.prototype['get_m_collisionFilterMask'] = function() {
    return _emscripten_bind_ConcreteContactResultCallback__get_m_collisionFilterMask_p0(this.ptr);
}
ConcreteContactResultCallback.prototype['get_m_collisionFilterGroup'] = function() {
    return _emscripten_bind_ConcreteContactResultCallback__get_m_collisionFilterGroup_p0(this.ptr);
}
ConcreteContactResultCallback.prototype['needsCollision'] = function(arg0) {
    return _emscripten_bind_ConcreteContactResultCallback__needsCollision_p1(this.ptr, arg0.ptr);
}
btSequentialImpulseConstraintSolver.prototype['reset'] = function() {
    _emscripten_bind_btSequentialImpulseConstraintSolver__reset_p0(this.ptr);
}
btSequentialImpulseConstraintSolver.prototype['__destroy__'] = function() {
    _emscripten_bind_btSequentialImpulseConstraintSolver____destroy___p0(this.ptr);
}
function btSequentialImpulseConstraintSolver() {
    this.ptr = _emscripten_bind_btSequentialImpulseConstraintSolver__btSequentialImpulseConstraintSolver_p0();
  btSequentialImpulseConstraintSolver.prototype.__cache__[this.ptr] = this;
  this.__class__ = btSequentialImpulseConstraintSolver;
}
btSequentialImpulseConstraintSolver.prototype.__cache__ = {};
Module['btSequentialImpulseConstraintSolver'] = btSequentialImpulseConstraintSolver;
btSequentialImpulseConstraintSolver.prototype['prepareSolve'] = function(arg0, arg1) {
    _emscripten_bind_btSequentialImpulseConstraintSolver__prepareSolve_p2(this.ptr, arg0, arg1);
}
btSequentialImpulseConstraintSolver.prototype['btRand2'] = function() {
    return _emscripten_bind_btSequentialImpulseConstraintSolver__btRand2_p0(this.ptr);
}
btSequentialImpulseConstraintSolver.prototype['getRandSeed'] = function() {
    return _emscripten_bind_btSequentialImpulseConstraintSolver__getRandSeed_p0(this.ptr);
}
btSequentialImpulseConstraintSolver.prototype['setRandSeed'] = function(arg0) {
    _emscripten_bind_btSequentialImpulseConstraintSolver__setRandSeed_p1(this.ptr, arg0);
}
btSequentialImpulseConstraintSolver.prototype['allSolved'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btSequentialImpulseConstraintSolver__allSolved_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btSequentialImpulseConstraintSolver.prototype['solveGroup'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {
    return _emscripten_bind_btSequentialImpulseConstraintSolver__solveGroup_p10(this.ptr, arg0.ptr, arg1, arg2.ptr, arg3, arg4.ptr, arg5, arg6.ptr, arg7.ptr, arg8.ptr, arg9.ptr);
}
btSequentialImpulseConstraintSolver.prototype['btRandInt2'] = function(arg0) {
    return _emscripten_bind_btSequentialImpulseConstraintSolver__btRandInt2_p1(this.ptr, arg0);
}
btSimpleDynamicsWorld.prototype['setGravity'] = function(arg0) {
    _emscripten_bind_btSimpleDynamicsWorld__setGravity_p1(this.ptr, arg0.ptr);
}
btSimpleDynamicsWorld.prototype['addAction'] = function(arg0) {
    _emscripten_bind_btSimpleDynamicsWorld__addAction_p1(this.ptr, arg0.ptr);
}
btSimpleDynamicsWorld.prototype['getSolverInfo'] = function() {
    return wrapPointer(_emscripten_bind_btSimpleDynamicsWorld__getSolverInfo_p0(this.ptr), Module['btContactSolverInfo']);
}
btSimpleDynamicsWorld.prototype['serialize'] = function(arg0) {
    _emscripten_bind_btSimpleDynamicsWorld__serialize_p1(this.ptr, arg0.ptr);
}
btSimpleDynamicsWorld.prototype['getDispatcher'] = function() {
    return wrapPointer(_emscripten_bind_btSimpleDynamicsWorld__getDispatcher_p0(this.ptr), Module['btDispatcher']);
}
btSimpleDynamicsWorld.prototype['addRigidBody'] = function(arg0, arg1, arg2) {
  if (arg1 === undefined)
    _emscripten_bind_btSimpleDynamicsWorld__addRigidBody_p1(this.ptr, arg0.ptr);
  else 
    _emscripten_bind_btSimpleDynamicsWorld__addRigidBody_p3(this.ptr, arg0.ptr, arg1, arg2);
}
btSimpleDynamicsWorld.prototype['clearForces'] = function() {
    _emscripten_bind_btSimpleDynamicsWorld__clearForces_p0(this.ptr);
}
btSimpleDynamicsWorld.prototype['removeVehicle'] = function(arg0) {
    _emscripten_bind_btSimpleDynamicsWorld__removeVehicle_p1(this.ptr, arg0.ptr);
}
btSimpleDynamicsWorld.prototype['getDebugDrawer'] = function() {
    return wrapPointer(_emscripten_bind_btSimpleDynamicsWorld__getDebugDrawer_p0(this.ptr), Module['btIDebugDraw']);
}
btSimpleDynamicsWorld.prototype['setBroadphase'] = function(arg0) {
    _emscripten_bind_btSimpleDynamicsWorld__setBroadphase_p1(this.ptr, arg0.ptr);
}
btSimpleDynamicsWorld.prototype['performDiscreteCollisionDetection'] = function() {
    _emscripten_bind_btSimpleDynamicsWorld__performDiscreteCollisionDetection_p0(this.ptr);
}
btSimpleDynamicsWorld.prototype['getCollisionObjectArray'] = function() {
    return _emscripten_bind_btSimpleDynamicsWorld__getCollisionObjectArray_p0(this.ptr);
}
btSimpleDynamicsWorld.prototype['debugDrawObject'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btSimpleDynamicsWorld__debugDrawObject_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btSimpleDynamicsWorld.prototype['removeConstraint'] = function(arg0) {
    _emscripten_bind_btSimpleDynamicsWorld__removeConstraint_p1(this.ptr, arg0.ptr);
}
btSimpleDynamicsWorld.prototype['rayTest'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btSimpleDynamicsWorld__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btSimpleDynamicsWorld.prototype['getNumConstraints'] = function() {
    return _emscripten_bind_btSimpleDynamicsWorld__getNumConstraints_p0(this.ptr);
}
btSimpleDynamicsWorld.prototype['addCollisionObject'] = function(arg0, arg1, arg2) {
  if (arg1 === undefined)
    _emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p1(this.ptr, arg0.ptr);
  else   if (arg2 === undefined)
    _emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p2(this.ptr, arg0.ptr, arg1);
  else 
    _emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p3(this.ptr, arg0.ptr, arg1, arg2);
}
btSimpleDynamicsWorld.prototype['removeRigidBody'] = function(arg0) {
    _emscripten_bind_btSimpleDynamicsWorld__removeRigidBody_p1(this.ptr, arg0.ptr);
}
btSimpleDynamicsWorld.prototype['contactTest'] = function(arg0, arg1) {
    _emscripten_bind_btSimpleDynamicsWorld__contactTest_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btSimpleDynamicsWorld.prototype['setInternalTickCallback'] = function(arg0, arg1, arg2) {
  if (arg1 === undefined)
    _emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p1(this.ptr, arg0);
  else   if (arg2 === undefined)
    _emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p2(this.ptr, arg0, arg1);
  else 
    _emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p3(this.ptr, arg0, arg1, arg2);
}
btSimpleDynamicsWorld.prototype['getForceUpdateAllAabbs'] = function() {
    return _emscripten_bind_btSimpleDynamicsWorld__getForceUpdateAllAabbs_p0(this.ptr);
}
btSimpleDynamicsWorld.prototype['updateAabbs'] = function() {
    _emscripten_bind_btSimpleDynamicsWorld__updateAabbs_p0(this.ptr);
}
btSimpleDynamicsWorld.prototype['setDebugDrawer'] = function(arg0) {
    _emscripten_bind_btSimpleDynamicsWorld__setDebugDrawer_p1(this.ptr, arg0.ptr);
}
btSimpleDynamicsWorld.prototype['debugDrawWorld'] = function() {
    _emscripten_bind_btSimpleDynamicsWorld__debugDrawWorld_p0(this.ptr);
}
btSimpleDynamicsWorld.prototype['convexSweepTest'] = function(arg0, arg1, arg2, arg3, arg4) {
  if (arg4 === undefined)
    _emscripten_bind_btSimpleDynamicsWorld__convexSweepTest_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
  else 
    _emscripten_bind_btSimpleDynamicsWorld__convexSweepTest_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4);
}
btSimpleDynamicsWorld.prototype['getNumCollisionObjects'] = function() {
    return _emscripten_bind_btSimpleDynamicsWorld__getNumCollisionObjects_p0(this.ptr);
}
btSimpleDynamicsWorld.prototype['setWorldUserInfo'] = function(arg0) {
    _emscripten_bind_btSimpleDynamicsWorld__setWorldUserInfo_p1(this.ptr, arg0);
}
btSimpleDynamicsWorld.prototype['addConstraint'] = function(arg0, arg1) {
  if (arg1 === undefined)
    _emscripten_bind_btSimpleDynamicsWorld__addConstraint_p1(this.ptr, arg0.ptr);
  else 
    _emscripten_bind_btSimpleDynamicsWorld__addConstraint_p2(this.ptr, arg0.ptr, arg1);
}
btSimpleDynamicsWorld.prototype['getWorldUserInfo'] = function() {
    return _emscripten_bind_btSimpleDynamicsWorld__getWorldUserInfo_p0(this.ptr);
}
btSimpleDynamicsWorld.prototype['contactPairTest'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btSimpleDynamicsWorld__contactPairTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btSimpleDynamicsWorld.prototype['getGravity'] = function() {
    return wrapPointer(_emscripten_bind_btSimpleDynamicsWorld__getGravity_p0(this.ptr), Module['btVector3']);
}
function btSimpleDynamicsWorld(arg0, arg1, arg2, arg3) {
    this.ptr = _emscripten_bind_btSimpleDynamicsWorld__btSimpleDynamicsWorld_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
  btSimpleDynamicsWorld.prototype.__cache__[this.ptr] = this;
  this.__class__ = btSimpleDynamicsWorld;
}
btSimpleDynamicsWorld.prototype.__cache__ = {};
Module['btSimpleDynamicsWorld'] = btSimpleDynamicsWorld;
btSimpleDynamicsWorld.prototype['getBroadphase'] = function() {
    return wrapPointer(_emscripten_bind_btSimpleDynamicsWorld__getBroadphase_p0(this.ptr), Module['btBroadphaseInterface']);
}
btSimpleDynamicsWorld.prototype['rayTestSingle'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btSimpleDynamicsWorld__rayTestSingle_p6(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr);
}
btSimpleDynamicsWorld.prototype['removeAction'] = function(arg0) {
    _emscripten_bind_btSimpleDynamicsWorld__removeAction_p1(this.ptr, arg0.ptr);
}
btSimpleDynamicsWorld.prototype['setForceUpdateAllAabbs'] = function(arg0) {
    _emscripten_bind_btSimpleDynamicsWorld__setForceUpdateAllAabbs_p1(this.ptr, arg0);
}
btSimpleDynamicsWorld.prototype['__destroy__'] = function() {
    _emscripten_bind_btSimpleDynamicsWorld____destroy___p0(this.ptr);
}
btSimpleDynamicsWorld.prototype['removeCharacter'] = function(arg0) {
    _emscripten_bind_btSimpleDynamicsWorld__removeCharacter_p1(this.ptr, arg0.ptr);
}
btSimpleDynamicsWorld.prototype['getConstraint'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btSimpleDynamicsWorld__getConstraint_p1(this.ptr, arg0), Module['btTypedConstraint']);
}
btSimpleDynamicsWorld.prototype['getConstraintSolver'] = function() {
    return wrapPointer(_emscripten_bind_btSimpleDynamicsWorld__getConstraintSolver_p0(this.ptr), Module['btConstraintSolver']);
}
btSimpleDynamicsWorld.prototype['stepSimulation'] = function(arg0, arg1, arg2) {
  if (arg1 === undefined)
    return _emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p1(this.ptr, arg0);
  else   if (arg2 === undefined)
    return _emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p2(this.ptr, arg0, arg1);
  else 
    return _emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p3(this.ptr, arg0, arg1, arg2);
}
btSimpleDynamicsWorld.prototype['addCharacter'] = function(arg0) {
    _emscripten_bind_btSimpleDynamicsWorld__addCharacter_p1(this.ptr, arg0.ptr);
}
btSimpleDynamicsWorld.prototype['getWorldType'] = function() {
    return _emscripten_bind_btSimpleDynamicsWorld__getWorldType_p0(this.ptr);
}
btSimpleDynamicsWorld.prototype['updateSingleAabb'] = function(arg0) {
    _emscripten_bind_btSimpleDynamicsWorld__updateSingleAabb_p1(this.ptr, arg0.ptr);
}
btSimpleDynamicsWorld.prototype['addVehicle'] = function(arg0) {
    _emscripten_bind_btSimpleDynamicsWorld__addVehicle_p1(this.ptr, arg0.ptr);
}
btSimpleDynamicsWorld.prototype['getPairCache'] = function() {
    return wrapPointer(_emscripten_bind_btSimpleDynamicsWorld__getPairCache_p0(this.ptr), Module['btOverlappingPairCache']);
}
btSimpleDynamicsWorld.prototype['synchronizeMotionStates'] = function() {
    _emscripten_bind_btSimpleDynamicsWorld__synchronizeMotionStates_p0(this.ptr);
}
btSimpleDynamicsWorld.prototype['removeCollisionObject'] = function(arg0) {
    _emscripten_bind_btSimpleDynamicsWorld__removeCollisionObject_p1(this.ptr, arg0.ptr);
}
btSimpleDynamicsWorld.prototype['setConstraintSolver'] = function(arg0) {
    _emscripten_bind_btSimpleDynamicsWorld__setConstraintSolver_p1(this.ptr, arg0.ptr);
}
btSimpleDynamicsWorld.prototype['objectQuerySingle'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
    _emscripten_bind_btSimpleDynamicsWorld__objectQuerySingle_p8(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7);
}
btSimpleDynamicsWorld.prototype['getDispatchInfo'] = function() {
    return wrapPointer(_emscripten_bind_btSimpleDynamicsWorld__getDispatchInfo_p0(this.ptr), Module['btDispatcherInfo']);
}
btManifoldResult.prototype['__destroy__'] = function() {
    _emscripten_bind_btManifoldResult____destroy___p0(this.ptr);
}
btManifoldResult.prototype['getPersistentManifold'] = function() {
    return wrapPointer(_emscripten_bind_btManifoldResult__getPersistentManifold_p0(this.ptr), Module['btPersistentManifold']);
}
btManifoldResult.prototype['getBody0Internal'] = function() {
    return wrapPointer(_emscripten_bind_btManifoldResult__getBody0Internal_p0(this.ptr), Module['btCollisionObject']);
}
btManifoldResult.prototype['addContactPoint'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btManifoldResult__addContactPoint_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btManifoldResult.prototype['getBody1Internal'] = function() {
    return wrapPointer(_emscripten_bind_btManifoldResult__getBody1Internal_p0(this.ptr), Module['btCollisionObject']);
}
function btManifoldResult(arg0, arg1) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btManifoldResult__btManifoldResult_p0();
  else 
    this.ptr = _emscripten_bind_btManifoldResult__btManifoldResult_p2(arg0.ptr, arg1.ptr);
  btManifoldResult.prototype.__cache__[this.ptr] = this;
  this.__class__ = btManifoldResult;
}
btManifoldResult.prototype.__cache__ = {};
Module['btManifoldResult'] = btManifoldResult;
btManifoldResult.prototype['setShapeIdentifiersB'] = function(arg0, arg1) {
    _emscripten_bind_btManifoldResult__setShapeIdentifiersB_p2(this.ptr, arg0, arg1);
}
btManifoldResult.prototype['setShapeIdentifiersA'] = function(arg0, arg1) {
    _emscripten_bind_btManifoldResult__setShapeIdentifiersA_p2(this.ptr, arg0, arg1);
}
btManifoldResult.prototype['refreshContactPoints'] = function() {
    _emscripten_bind_btManifoldResult__refreshContactPoints_p0(this.ptr);
}
btManifoldResult.prototype['setPersistentManifold'] = function(arg0) {
    _emscripten_bind_btManifoldResult__setPersistentManifold_p1(this.ptr, arg0.ptr);
}
btMultiSphereShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btMultiSphereShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btMultiSphereShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btMultiSphereShape__isCompound_p0(this.ptr);
}
btMultiSphereShape.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btMultiSphereShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btMultiSphereShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btMultiSphereShape__setUserPointer_p1(this.ptr, arg0);
}
btMultiSphereShape.prototype['getMarginNV'] = function() {
    return _emscripten_bind_btMultiSphereShape__getMarginNV_p0(this.ptr);
}
btMultiSphereShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btMultiSphereShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
function btMultiSphereShape(arg0, arg1, arg2) {
    this.ptr = _emscripten_bind_btMultiSphereShape__btMultiSphereShape_p3(arg0.ptr, arg1, arg2);
  btMultiSphereShape.prototype.__cache__[this.ptr] = this;
  this.__class__ = btMultiSphereShape;
}
btMultiSphereShape.prototype.__cache__ = {};
Module['btMultiSphereShape'] = btMultiSphereShape;
btMultiSphereShape.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btMultiSphereShape__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btMultiSphereShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btMultiSphereShape__isPolyhedral_p0(this.ptr);
}
btMultiSphereShape.prototype['getSphereRadius'] = function(arg0) {
    return _emscripten_bind_btMultiSphereShape__getSphereRadius_p1(this.ptr, arg0);
}
btMultiSphereShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btMultiSphereShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btMultiSphereShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btMultiSphereShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btMultiSphereShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btMultiSphereShape__calculateSerializeBufferSize_p0(this.ptr);
}
btMultiSphereShape.prototype['getSphereCount'] = function() {
    return _emscripten_bind_btMultiSphereShape__getSphereCount_p0(this.ptr);
}
btMultiSphereShape.prototype['getName'] = function() {
    return _emscripten_bind_btMultiSphereShape__getName_p0(this.ptr);
}
btMultiSphereShape.prototype['getLocalScalingNV'] = function() {
    return wrapPointer(_emscripten_bind_btMultiSphereShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']);
}
btMultiSphereShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btMultiSphereShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btMultiSphereShape.prototype['setImplicitShapeDimensions'] = function(arg0) {
    _emscripten_bind_btMultiSphereShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr);
}
btMultiSphereShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btMultiSphereShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btMultiSphereShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btMultiSphereShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btMultiSphereShape.prototype['getSpherePosition'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btMultiSphereShape__getSpherePosition_p1(this.ptr, arg0), Module['btVector3']);
}
btMultiSphereShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btMultiSphereShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btMultiSphereShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btMultiSphereShape__isConvex_p0(this.ptr);
}
btMultiSphereShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btMultiSphereShape__isInfinite_p0(this.ptr);
}
btMultiSphereShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btMultiSphereShape__getUserPointer_p0(this.ptr);
}
btMultiSphereShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btMultiSphereShape__isNonMoving_p0(this.ptr);
}
btMultiSphereShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btMultiSphereShape__getMargin_p0(this.ptr);
}
btMultiSphereShape.prototype['recalcLocalAabb'] = function() {
    _emscripten_bind_btMultiSphereShape__recalcLocalAabb_p0(this.ptr);
}
btMultiSphereShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btMultiSphereShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btMultiSphereShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btMultiSphereShape__setMargin_p1(this.ptr, arg0);
}
btMultiSphereShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btMultiSphereShape__isConvex2d_p0(this.ptr);
}
btMultiSphereShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btMultiSphereShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btMultiSphereShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btMultiSphereShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btMultiSphereShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btMultiSphereShape__isSoftBody_p0(this.ptr);
}
btMultiSphereShape.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btMultiSphereShape__getMarginNonVirtual_p0(this.ptr);
}
btMultiSphereShape.prototype['__destroy__'] = function() {
    _emscripten_bind_btMultiSphereShape____destroy___p0(this.ptr);
}
btMultiSphereShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btMultiSphereShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btMultiSphereShape.prototype['getImplicitShapeDimensions'] = function() {
    return wrapPointer(_emscripten_bind_btMultiSphereShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']);
}
btMultiSphereShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btMultiSphereShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btMultiSphereShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btMultiSphereShape__getAngularMotionDisc_p0(this.ptr);
}
btMultiSphereShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btMultiSphereShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btMultiSphereShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btMultiSphereShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btMultiSphereShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btMultiSphereShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btMultiSphereShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btMultiSphereShape__isConcave_p0(this.ptr);
}
btMultiSphereShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btMultiSphereShape__getShapeType_p0(this.ptr);
}
btHeightfieldTerrainShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btHeightfieldTerrainShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btHeightfieldTerrainShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btHeightfieldTerrainShape__setUserPointer_p1(this.ptr, arg0);
}
btHeightfieldTerrainShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btHeightfieldTerrainShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btHeightfieldTerrainShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btHeightfieldTerrainShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
function btHeightfieldTerrainShape(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {
  if (arg7 === undefined)
    this.ptr = _emscripten_bind_btHeightfieldTerrainShape__btHeightfieldTerrainShape_p7(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
  else 
    this.ptr = _emscripten_bind_btHeightfieldTerrainShape__btHeightfieldTerrainShape_p9(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
  btHeightfieldTerrainShape.prototype.__cache__[this.ptr] = this;
  this.__class__ = btHeightfieldTerrainShape;
}
btHeightfieldTerrainShape.prototype.__cache__ = {};
Module['btHeightfieldTerrainShape'] = btHeightfieldTerrainShape;
btHeightfieldTerrainShape.prototype['processAllTriangles'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btHeightfieldTerrainShape__processAllTriangles_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btHeightfieldTerrainShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btHeightfieldTerrainShape__calculateSerializeBufferSize_p0(this.ptr);
}
btHeightfieldTerrainShape.prototype['getName'] = function() {
    return _emscripten_bind_btHeightfieldTerrainShape__getName_p0(this.ptr);
}
btHeightfieldTerrainShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btHeightfieldTerrainShape__isCompound_p0(this.ptr);
}
btHeightfieldTerrainShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btHeightfieldTerrainShape__isPolyhedral_p0(this.ptr);
}
btHeightfieldTerrainShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btHeightfieldTerrainShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btHeightfieldTerrainShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btHeightfieldTerrainShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btHeightfieldTerrainShape.prototype['setUseDiamondSubdivision'] = function(arg0) {
  if (arg0 === undefined)
    _emscripten_bind_btHeightfieldTerrainShape__setUseDiamondSubdivision_p0(this.ptr);
  else 
    _emscripten_bind_btHeightfieldTerrainShape__setUseDiamondSubdivision_p1(this.ptr, arg0);
}
btHeightfieldTerrainShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btHeightfieldTerrainShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btHeightfieldTerrainShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btHeightfieldTerrainShape__isConvex_p0(this.ptr);
}
btHeightfieldTerrainShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btHeightfieldTerrainShape__isInfinite_p0(this.ptr);
}
btHeightfieldTerrainShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btHeightfieldTerrainShape__getUserPointer_p0(this.ptr);
}
btHeightfieldTerrainShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btHeightfieldTerrainShape__isNonMoving_p0(this.ptr);
}
btHeightfieldTerrainShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btHeightfieldTerrainShape__getMargin_p0(this.ptr);
}
btHeightfieldTerrainShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btHeightfieldTerrainShape__setMargin_p1(this.ptr, arg0);
}
btHeightfieldTerrainShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btHeightfieldTerrainShape__isConvex2d_p0(this.ptr);
}
btHeightfieldTerrainShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btHeightfieldTerrainShape__isSoftBody_p0(this.ptr);
}
btHeightfieldTerrainShape.prototype['__destroy__'] = function() {
    _emscripten_bind_btHeightfieldTerrainShape____destroy___p0(this.ptr);
}
btHeightfieldTerrainShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btHeightfieldTerrainShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btHeightfieldTerrainShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btHeightfieldTerrainShape__isConcave_p0(this.ptr);
}
btHeightfieldTerrainShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btHeightfieldTerrainShape__getAngularMotionDisc_p0(this.ptr);
}
btHeightfieldTerrainShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btHeightfieldTerrainShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btHeightfieldTerrainShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btHeightfieldTerrainShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btHeightfieldTerrainShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btHeightfieldTerrainShape__getShapeType_p0(this.ptr);
}
function btConvexInternalAabbCachingShape(){ throw "btConvexInternalAabbCachingShape is abstract!" }
btConvexInternalAabbCachingShape.prototype.__cache__ = {};
Module['btConvexInternalAabbCachingShape'] = btConvexInternalAabbCachingShape;
btConvexInternalAabbCachingShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btConvexInternalAabbCachingShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btConvexInternalAabbCachingShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btConvexInternalAabbCachingShape__isCompound_p0(this.ptr);
}
btConvexInternalAabbCachingShape.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConvexInternalAabbCachingShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btConvexInternalAabbCachingShape__setUserPointer_p1(this.ptr, arg0);
}
btConvexInternalAabbCachingShape.prototype['getMarginNV'] = function() {
    return _emscripten_bind_btConvexInternalAabbCachingShape__getMarginNV_p0(this.ptr);
}
btConvexInternalAabbCachingShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btConvexInternalAabbCachingShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btConvexInternalAabbCachingShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btConvexInternalAabbCachingShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btConvexInternalAabbCachingShape.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btConvexInternalAabbCachingShape__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btConvexInternalAabbCachingShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btConvexInternalAabbCachingShape__isPolyhedral_p0(this.ptr);
}
btConvexInternalAabbCachingShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConvexInternalAabbCachingShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexInternalAabbCachingShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConvexInternalAabbCachingShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btConvexInternalAabbCachingShape__calculateSerializeBufferSize_p0(this.ptr);
}
btConvexInternalAabbCachingShape.prototype['getName'] = function() {
    return _emscripten_bind_btConvexInternalAabbCachingShape__getName_p0(this.ptr);
}
btConvexInternalAabbCachingShape.prototype['getLocalScalingNV'] = function() {
    return wrapPointer(_emscripten_bind_btConvexInternalAabbCachingShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']);
}
btConvexInternalAabbCachingShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConvexInternalAabbCachingShape.prototype['setImplicitShapeDimensions'] = function(arg0) {
    _emscripten_bind_btConvexInternalAabbCachingShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr);
}
btConvexInternalAabbCachingShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btConvexInternalAabbCachingShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btConvexInternalAabbCachingShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexInternalAabbCachingShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConvexInternalAabbCachingShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btConvexInternalAabbCachingShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btConvexInternalAabbCachingShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btConvexInternalAabbCachingShape__isConvex_p0(this.ptr);
}
btConvexInternalAabbCachingShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btConvexInternalAabbCachingShape__isInfinite_p0(this.ptr);
}
btConvexInternalAabbCachingShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btConvexInternalAabbCachingShape__getUserPointer_p0(this.ptr);
}
btConvexInternalAabbCachingShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btConvexInternalAabbCachingShape__isNonMoving_p0(this.ptr);
}
btConvexInternalAabbCachingShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btConvexInternalAabbCachingShape__getMargin_p0(this.ptr);
}
btConvexInternalAabbCachingShape.prototype['recalcLocalAabb'] = function() {
    _emscripten_bind_btConvexInternalAabbCachingShape__recalcLocalAabb_p0(this.ptr);
}
btConvexInternalAabbCachingShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btConvexInternalAabbCachingShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btConvexInternalAabbCachingShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btConvexInternalAabbCachingShape__setMargin_p1(this.ptr, arg0);
}
btConvexInternalAabbCachingShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btConvexInternalAabbCachingShape__isConvex2d_p0(this.ptr);
}
btConvexInternalAabbCachingShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConvexInternalAabbCachingShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btConvexInternalAabbCachingShape__isSoftBody_p0(this.ptr);
}
btConvexInternalAabbCachingShape.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btConvexInternalAabbCachingShape__getMarginNonVirtual_p0(this.ptr);
}
btConvexInternalAabbCachingShape.prototype['__destroy__'] = function() {
    _emscripten_bind_btConvexInternalAabbCachingShape____destroy___p0(this.ptr);
}
btConvexInternalAabbCachingShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexInternalAabbCachingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btConvexInternalAabbCachingShape.prototype['getImplicitShapeDimensions'] = function() {
    return wrapPointer(_emscripten_bind_btConvexInternalAabbCachingShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']);
}
btConvexInternalAabbCachingShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btConvexInternalAabbCachingShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btConvexInternalAabbCachingShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btConvexInternalAabbCachingShape__getAngularMotionDisc_p0(this.ptr);
}
btConvexInternalAabbCachingShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btConvexInternalAabbCachingShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btConvexInternalAabbCachingShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexInternalAabbCachingShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConvexInternalAabbCachingShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btConvexInternalAabbCachingShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btConvexInternalAabbCachingShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btConvexInternalAabbCachingShape__isConcave_p0(this.ptr);
}
btConvexInternalAabbCachingShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btConvexInternalAabbCachingShape__getShapeType_p0(this.ptr);
}
function btConvexShape(){ throw "btConvexShape is abstract!" }
btConvexShape.prototype.__cache__ = {};
Module['btConvexShape'] = btConvexShape;
btConvexShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btConvexShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btConvexShape.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConvexShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btConvexShape__setUserPointer_p1(this.ptr, arg0);
}
btConvexShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btConvexShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btConvexShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btConvexShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btConvexShape.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btConvexShape__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btConvexShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btConvexShape__isPolyhedral_p0(this.ptr);
}
btConvexShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConvexShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConvexShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btConvexShape__calculateSerializeBufferSize_p0(this.ptr);
}
btConvexShape.prototype['getName'] = function() {
    return _emscripten_bind_btConvexShape__getName_p0(this.ptr);
}
btConvexShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btConvexShape__isCompound_p0(this.ptr);
}
btConvexShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConvexShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btConvexShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btConvexShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConvexShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btConvexShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btConvexShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btConvexShape__isConvex_p0(this.ptr);
}
btConvexShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btConvexShape__isInfinite_p0(this.ptr);
}
btConvexShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btConvexShape__getUserPointer_p0(this.ptr);
}
btConvexShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btConvexShape__isNonMoving_p0(this.ptr);
}
btConvexShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btConvexShape__getMargin_p0(this.ptr);
}
btConvexShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btConvexShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btConvexShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btConvexShape__setMargin_p1(this.ptr, arg0);
}
btConvexShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btConvexShape__isConvex2d_p0(this.ptr);
}
btConvexShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConvexShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btConvexShape__isSoftBody_p0(this.ptr);
}
btConvexShape.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btConvexShape__getMarginNonVirtual_p0(this.ptr);
}
btConvexShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btConvexShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btConvexShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btConvexShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btConvexShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btConvexShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btConvexShape__getAngularMotionDisc_p0(this.ptr);
}
btConvexShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btConvexShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btConvexShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConvexShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btConvexShape__isConcave_p0(this.ptr);
}
btConvexShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btConvexShape__getShapeType_p0(this.ptr);
}
function btDiscreteCollisionDetectorInterface(){ throw "btDiscreteCollisionDetectorInterface is abstract!" }
btDiscreteCollisionDetectorInterface.prototype.__cache__ = {};
Module['btDiscreteCollisionDetectorInterface'] = btDiscreteCollisionDetectorInterface;
btDiscreteCollisionDetectorInterface.prototype['getClosestPoints'] = function(arg0, arg1, arg2, arg3) {
  if (arg3 === undefined)
    _emscripten_bind_btDiscreteCollisionDetectorInterface__getClosestPoints_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
  else 
    _emscripten_bind_btDiscreteCollisionDetectorInterface__getClosestPoints_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3);
}
btDefaultCollisionConstructionInfo.prototype['set_m_customCollisionAlgorithmMaxElementSize'] = function(arg0) {
    _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_customCollisionAlgorithmMaxElementSize_p1(this.ptr, arg0);
}
btDefaultCollisionConstructionInfo.prototype['set_m_collisionAlgorithmPool'] = function(arg0) {
    _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_collisionAlgorithmPool_p1(this.ptr, arg0);
}
btDefaultCollisionConstructionInfo.prototype['get_m_customCollisionAlgorithmMaxElementSize'] = function() {
    return _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_customCollisionAlgorithmMaxElementSize_p0(this.ptr);
}
btDefaultCollisionConstructionInfo.prototype['get_m_persistentManifoldPool'] = function() {
    return _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_persistentManifoldPool_p0(this.ptr);
}
btDefaultCollisionConstructionInfo.prototype['set_m_useEpaPenetrationAlgorithm'] = function(arg0) {
    _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_useEpaPenetrationAlgorithm_p1(this.ptr, arg0);
}
btDefaultCollisionConstructionInfo.prototype['__destroy__'] = function() {
    _emscripten_bind_btDefaultCollisionConstructionInfo____destroy___p0(this.ptr);
}
btDefaultCollisionConstructionInfo.prototype['get_m_defaultStackAllocatorSize'] = function() {
    return _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultStackAllocatorSize_p0(this.ptr);
}
btDefaultCollisionConstructionInfo.prototype['set_m_defaultStackAllocatorSize'] = function(arg0) {
    _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultStackAllocatorSize_p1(this.ptr, arg0);
}
btDefaultCollisionConstructionInfo.prototype['get_m_defaultMaxCollisionAlgorithmPoolSize'] = function() {
    return _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultMaxCollisionAlgorithmPoolSize_p0(this.ptr);
}
btDefaultCollisionConstructionInfo.prototype['set_m_defaultMaxPersistentManifoldPoolSize'] = function(arg0) {
    _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultMaxPersistentManifoldPoolSize_p1(this.ptr, arg0);
}
btDefaultCollisionConstructionInfo.prototype['get_m_useEpaPenetrationAlgorithm'] = function() {
    return _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_useEpaPenetrationAlgorithm_p0(this.ptr);
}
btDefaultCollisionConstructionInfo.prototype['set_m_stackAlloc'] = function(arg0) {
    _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_stackAlloc_p1(this.ptr, arg0.ptr);
}
btDefaultCollisionConstructionInfo.prototype['get_m_collisionAlgorithmPool'] = function() {
    return _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_collisionAlgorithmPool_p0(this.ptr);
}
btDefaultCollisionConstructionInfo.prototype['get_m_stackAlloc'] = function() {
    return wrapPointer(_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_stackAlloc_p0(this.ptr), Module['btStackAlloc']);
}
btDefaultCollisionConstructionInfo.prototype['set_m_defaultMaxCollisionAlgorithmPoolSize'] = function(arg0) {
    _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultMaxCollisionAlgorithmPoolSize_p1(this.ptr, arg0);
}
function btDefaultCollisionConstructionInfo() {
    this.ptr = _emscripten_bind_btDefaultCollisionConstructionInfo__btDefaultCollisionConstructionInfo_p0();
  btDefaultCollisionConstructionInfo.prototype.__cache__[this.ptr] = this;
  this.__class__ = btDefaultCollisionConstructionInfo;
}
btDefaultCollisionConstructionInfo.prototype.__cache__ = {};
Module['btDefaultCollisionConstructionInfo'] = btDefaultCollisionConstructionInfo;
btDefaultCollisionConstructionInfo.prototype['get_m_defaultMaxPersistentManifoldPoolSize'] = function() {
    return _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultMaxPersistentManifoldPoolSize_p0(this.ptr);
}
btDefaultCollisionConstructionInfo.prototype['set_m_persistentManifoldPool'] = function(arg0) {
    _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_persistentManifoldPool_p1(this.ptr, arg0);
}
function btDispatcher(){ throw "btDispatcher is abstract!" }
btDispatcher.prototype.__cache__ = {};
Module['btDispatcher'] = btDispatcher;
btDispatcher.prototype['allocateCollisionAlgorithm'] = function(arg0) {
    return _emscripten_bind_btDispatcher__allocateCollisionAlgorithm_p1(this.ptr, arg0);
}
btDispatcher.prototype['getManifoldByIndexInternal'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btDispatcher__getManifoldByIndexInternal_p1(this.ptr, arg0), Module['btPersistentManifold']);
}
btDispatcher.prototype['getNumManifolds'] = function() {
    return _emscripten_bind_btDispatcher__getNumManifolds_p0(this.ptr);
}
btDispatcher.prototype['clearManifold'] = function(arg0) {
    _emscripten_bind_btDispatcher__clearManifold_p1(this.ptr, arg0.ptr);
}
btDispatcher.prototype['freeCollisionAlgorithm'] = function(arg0) {
    _emscripten_bind_btDispatcher__freeCollisionAlgorithm_p1(this.ptr, arg0);
}
btDispatcher.prototype['getInternalManifoldPointer'] = function() {
    return wrapPointer(_emscripten_bind_btDispatcher__getInternalManifoldPointer_p0(this.ptr), Module['btPersistentManifold']);
}
btDispatcher.prototype['findAlgorithm'] = function(arg0, arg1, arg2) {
  if (arg2 === undefined)
    return wrapPointer(_emscripten_bind_btDispatcher__findAlgorithm_p2(this.ptr, arg0.ptr, arg1.ptr), Module['btCollisionAlgorithm']);
  else 
    return wrapPointer(_emscripten_bind_btDispatcher__findAlgorithm_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr), Module['btCollisionAlgorithm']);
}
btDispatcher.prototype['needsResponse'] = function(arg0, arg1) {
    return _emscripten_bind_btDispatcher__needsResponse_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btDispatcher.prototype['getNewManifold'] = function(arg0, arg1) {
    return wrapPointer(_emscripten_bind_btDispatcher__getNewManifold_p2(this.ptr, arg0, arg1), Module['btPersistentManifold']);
}
btDispatcher.prototype['dispatchAllCollisionPairs'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btDispatcher__dispatchAllCollisionPairs_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btDispatcher.prototype['getInternalManifoldPool'] = function() {
    return _emscripten_bind_btDispatcher__getInternalManifoldPool_p0(this.ptr);
}
btDispatcher.prototype['needsCollision'] = function(arg0, arg1) {
    return _emscripten_bind_btDispatcher__needsCollision_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btDispatcher.prototype['releaseManifold'] = function(arg0) {
    _emscripten_bind_btDispatcher__releaseManifold_p1(this.ptr, arg0.ptr);
}
btJacobianEntry.prototype['__destroy__'] = function() {
    _emscripten_bind_btJacobianEntry____destroy___p0(this.ptr);
}
btJacobianEntry.prototype['set_m_linearJointAxis'] = function(arg0) {
    _emscripten_bind_btJacobianEntry__set_m_linearJointAxis_p1(this.ptr, arg0.ptr);
}
btJacobianEntry.prototype['get_m_bJ'] = function() {
    return wrapPointer(_emscripten_bind_btJacobianEntry__get_m_bJ_p0(this.ptr), Module['btVector3']);
}
function btJacobianEntry(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btJacobianEntry__btJacobianEntry_p0();
  else   if (arg4 === undefined)
    this.ptr = _emscripten_bind_btJacobianEntry__btJacobianEntry_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
  else   if (arg5 === undefined)
    this.ptr = _emscripten_bind_btJacobianEntry__btJacobianEntry_p5(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr);
  else   if (arg6 === undefined)
    this.ptr = _emscripten_bind_btJacobianEntry__btJacobianEntry_p6(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5);
  else 
    this.ptr = _emscripten_bind_btJacobianEntry__btJacobianEntry_p9(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6, arg7.ptr, arg8);
  btJacobianEntry.prototype.__cache__[this.ptr] = this;
  this.__class__ = btJacobianEntry;
}
btJacobianEntry.prototype.__cache__ = {};
Module['btJacobianEntry'] = btJacobianEntry;
btJacobianEntry.prototype['get_m_linearJointAxis'] = function() {
    return wrapPointer(_emscripten_bind_btJacobianEntry__get_m_linearJointAxis_p0(this.ptr), Module['btVector3']);
}
btJacobianEntry.prototype['set_m_aJ'] = function(arg0) {
    _emscripten_bind_btJacobianEntry__set_m_aJ_p1(this.ptr, arg0.ptr);
}
btJacobianEntry.prototype['getDiagonal'] = function() {
    return _emscripten_bind_btJacobianEntry__getDiagonal_p0(this.ptr);
}
btJacobianEntry.prototype['set_m_Adiag'] = function(arg0) {
    _emscripten_bind_btJacobianEntry__set_m_Adiag_p1(this.ptr, arg0);
}
btJacobianEntry.prototype['getRelativeVelocity'] = function(arg0, arg1, arg2, arg3) {
    return _emscripten_bind_btJacobianEntry__getRelativeVelocity_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
}
btJacobianEntry.prototype['set_m_bJ'] = function(arg0) {
    _emscripten_bind_btJacobianEntry__set_m_bJ_p1(this.ptr, arg0.ptr);
}
btJacobianEntry.prototype['get_m_Adiag'] = function() {
    return _emscripten_bind_btJacobianEntry__get_m_Adiag_p0(this.ptr);
}
btJacobianEntry.prototype['getNonDiagonal'] = function(arg0, arg1, arg2) {
  if (arg2 === undefined)
    return _emscripten_bind_btJacobianEntry__getNonDiagonal_p2(this.ptr, arg0.ptr, arg1);
  else 
    return _emscripten_bind_btJacobianEntry__getNonDiagonal_p3(this.ptr, arg0.ptr, arg1, arg2);
}
btJacobianEntry.prototype['set_m_1MinvJt'] = function(arg0) {
    _emscripten_bind_btJacobianEntry__set_m_1MinvJt_p1(this.ptr, arg0.ptr);
}
btJacobianEntry.prototype['get_m_0MinvJt'] = function() {
    return wrapPointer(_emscripten_bind_btJacobianEntry__get_m_0MinvJt_p0(this.ptr), Module['btVector3']);
}
btJacobianEntry.prototype['set_m_0MinvJt'] = function(arg0) {
    _emscripten_bind_btJacobianEntry__set_m_0MinvJt_p1(this.ptr, arg0.ptr);
}
btJacobianEntry.prototype['get_m_aJ'] = function() {
    return wrapPointer(_emscripten_bind_btJacobianEntry__get_m_aJ_p0(this.ptr), Module['btVector3']);
}
btJacobianEntry.prototype['get_m_1MinvJt'] = function() {
    return wrapPointer(_emscripten_bind_btJacobianEntry__get_m_1MinvJt_p0(this.ptr), Module['btVector3']);
}
function btOverlappingPairCallback(){ throw "btOverlappingPairCallback is abstract!" }
btOverlappingPairCallback.prototype.__cache__ = {};
Module['btOverlappingPairCallback'] = btOverlappingPairCallback;
btOverlappingPairCallback.prototype['addOverlappingPair'] = function(arg0, arg1) {
    return wrapPointer(_emscripten_bind_btOverlappingPairCallback__addOverlappingPair_p2(this.ptr, arg0.ptr, arg1.ptr), Module['btBroadphasePair']);
}
btOverlappingPairCallback.prototype['removeOverlappingPair'] = function(arg0, arg1, arg2) {
    return _emscripten_bind_btOverlappingPairCallback__removeOverlappingPair_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btOverlappingPairCallback.prototype['removeOverlappingPairsContainingProxy'] = function(arg0, arg1) {
    _emscripten_bind_btOverlappingPairCallback__removeOverlappingPairsContainingProxy_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btHashInt.prototype['__destroy__'] = function() {
    _emscripten_bind_btHashInt____destroy___p0(this.ptr);
}
btHashInt.prototype['setUid1'] = function(arg0) {
    _emscripten_bind_btHashInt__setUid1_p1(this.ptr, arg0);
}
function btHashInt(arg0) {
    this.ptr = _emscripten_bind_btHashInt__btHashInt_p1(arg0);
  btHashInt.prototype.__cache__[this.ptr] = this;
  this.__class__ = btHashInt;
}
btHashInt.prototype.__cache__ = {};
Module['btHashInt'] = btHashInt;
btHashInt.prototype['equals'] = function(arg0) {
    return _emscripten_bind_btHashInt__equals_p1(this.ptr, arg0.ptr);
}
btHashInt.prototype['getUid1'] = function() {
    return _emscripten_bind_btHashInt__getUid1_p0(this.ptr);
}
btHashInt.prototype['getHash'] = function() {
    return _emscripten_bind_btHashInt__getHash_p0(this.ptr);
}
btCollisionAlgorithmCreateFunc.prototype['get_m_swapped'] = function() {
    return _emscripten_bind_btCollisionAlgorithmCreateFunc__get_m_swapped_p0(this.ptr);
}
btCollisionAlgorithmCreateFunc.prototype['__destroy__'] = function() {
    _emscripten_bind_btCollisionAlgorithmCreateFunc____destroy___p0(this.ptr);
}
btCollisionAlgorithmCreateFunc.prototype['CreateCollisionAlgorithm'] = function(arg0, arg1, arg2) {
    return wrapPointer(_emscripten_bind_btCollisionAlgorithmCreateFunc__CreateCollisionAlgorithm_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr), Module['btCollisionAlgorithm']);
}
btCollisionAlgorithmCreateFunc.prototype['set_m_swapped'] = function(arg0) {
    _emscripten_bind_btCollisionAlgorithmCreateFunc__set_m_swapped_p1(this.ptr, arg0);
}
function btCollisionAlgorithmCreateFunc() {
    this.ptr = _emscripten_bind_btCollisionAlgorithmCreateFunc__btCollisionAlgorithmCreateFunc_p0();
  btCollisionAlgorithmCreateFunc.prototype.__cache__[this.ptr] = this;
  this.__class__ = btCollisionAlgorithmCreateFunc;
}
btCollisionAlgorithmCreateFunc.prototype.__cache__ = {};
Module['btCollisionAlgorithmCreateFunc'] = btCollisionAlgorithmCreateFunc;
btCollisionWorld.prototype['setBroadphase'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__setBroadphase_p1(this.ptr, arg0.ptr);
}
btCollisionWorld.prototype['serialize'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__serialize_p1(this.ptr, arg0.ptr);
}
btCollisionWorld.prototype['getDispatcher'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__getDispatcher_p0(this.ptr), Module['btDispatcher']);
}
btCollisionWorld.prototype['getDispatchInfo'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__getDispatchInfo_p0(this.ptr), Module['btDispatcherInfo']);
}
btCollisionWorld.prototype['getDebugDrawer'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__getDebugDrawer_p0(this.ptr), Module['btIDebugDraw']);
}
btCollisionWorld.prototype['performDiscreteCollisionDetection'] = function() {
    _emscripten_bind_btCollisionWorld__performDiscreteCollisionDetection_p0(this.ptr);
}
btCollisionWorld.prototype['getCollisionObjectArray'] = function() {
    return _emscripten_bind_btCollisionWorld__getCollisionObjectArray_p0(this.ptr);
}
btCollisionWorld.prototype['debugDrawObject'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCollisionWorld__debugDrawObject_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCollisionWorld.prototype['rayTest'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCollisionWorld__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCollisionWorld.prototype['addCollisionObject'] = function(arg0, arg1, arg2) {
  if (arg1 === undefined)
    _emscripten_bind_btCollisionWorld__addCollisionObject_p1(this.ptr, arg0.ptr);
  else   if (arg2 === undefined)
    _emscripten_bind_btCollisionWorld__addCollisionObject_p2(this.ptr, arg0.ptr, arg1);
  else 
    _emscripten_bind_btCollisionWorld__addCollisionObject_p3(this.ptr, arg0.ptr, arg1, arg2);
}
function btCollisionWorld(arg0, arg1, arg2) {
    this.ptr = _emscripten_bind_btCollisionWorld__btCollisionWorld_p3(arg0.ptr, arg1.ptr, arg2.ptr);
  btCollisionWorld.prototype.__cache__[this.ptr] = this;
  this.__class__ = btCollisionWorld;
}
btCollisionWorld.prototype.__cache__ = {};
Module['btCollisionWorld'] = btCollisionWorld;
btCollisionWorld.prototype['contactTest'] = function(arg0, arg1) {
    _emscripten_bind_btCollisionWorld__contactTest_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btCollisionWorld.prototype['getForceUpdateAllAabbs'] = function() {
    return _emscripten_bind_btCollisionWorld__getForceUpdateAllAabbs_p0(this.ptr);
}
btCollisionWorld.prototype['updateAabbs'] = function() {
    _emscripten_bind_btCollisionWorld__updateAabbs_p0(this.ptr);
}
btCollisionWorld.prototype['setDebugDrawer'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__setDebugDrawer_p1(this.ptr, arg0.ptr);
}
btCollisionWorld.prototype['debugDrawWorld'] = function() {
    _emscripten_bind_btCollisionWorld__debugDrawWorld_p0(this.ptr);
}
btCollisionWorld.prototype['convexSweepTest'] = function(arg0, arg1, arg2, arg3, arg4) {
  if (arg4 === undefined)
    _emscripten_bind_btCollisionWorld__convexSweepTest_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
  else 
    _emscripten_bind_btCollisionWorld__convexSweepTest_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4);
}
btCollisionWorld.prototype['getNumCollisionObjects'] = function() {
    return _emscripten_bind_btCollisionWorld__getNumCollisionObjects_p0(this.ptr);
}
btCollisionWorld.prototype['contactPairTest'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCollisionWorld__contactPairTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCollisionWorld.prototype['getBroadphase'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__getBroadphase_p0(this.ptr), Module['btBroadphaseInterface']);
}
btCollisionWorld.prototype['rayTestSingle'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btCollisionWorld__rayTestSingle_p6(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr);
}
btCollisionWorld.prototype['setForceUpdateAllAabbs'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__setForceUpdateAllAabbs_p1(this.ptr, arg0);
}
btCollisionWorld.prototype['__destroy__'] = function() {
    _emscripten_bind_btCollisionWorld____destroy___p0(this.ptr);
}
btCollisionWorld.prototype['objectQuerySingle'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
    _emscripten_bind_btCollisionWorld__objectQuerySingle_p8(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7);
}
btCollisionWorld.prototype['updateSingleAabb'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__updateSingleAabb_p1(this.ptr, arg0.ptr);
}
btCollisionWorld.prototype['getPairCache'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__getPairCache_p0(this.ptr), Module['btOverlappingPairCache']);
}
btCollisionWorld.prototype['removeCollisionObject'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__removeCollisionObject_p1(this.ptr, arg0.ptr);
}
btTranslationalLimitMotor.prototype['set_m_currentLimitError'] = function(arg0) {
    _emscripten_bind_btTranslationalLimitMotor__set_m_currentLimitError_p1(this.ptr, arg0.ptr);
}
btTranslationalLimitMotor.prototype['needApplyForce'] = function(arg0) {
    return _emscripten_bind_btTranslationalLimitMotor__needApplyForce_p1(this.ptr, arg0);
}
btTranslationalLimitMotor.prototype['get_m_currentLimitError'] = function() {
    return wrapPointer(_emscripten_bind_btTranslationalLimitMotor__get_m_currentLimitError_p0(this.ptr), Module['btVector3']);
}
btTranslationalLimitMotor.prototype['get_m_currentLinearDiff'] = function() {
    return wrapPointer(_emscripten_bind_btTranslationalLimitMotor__get_m_currentLinearDiff_p0(this.ptr), Module['btVector3']);
}
btTranslationalLimitMotor.prototype['get_m_stopERP'] = function() {
    return wrapPointer(_emscripten_bind_btTranslationalLimitMotor__get_m_stopERP_p0(this.ptr), Module['btVector3']);
}
btTranslationalLimitMotor.prototype['set_m_stopERP'] = function(arg0) {
    _emscripten_bind_btTranslationalLimitMotor__set_m_stopERP_p1(this.ptr, arg0.ptr);
}
btTranslationalLimitMotor.prototype['set_m_stopCFM'] = function(arg0) {
    _emscripten_bind_btTranslationalLimitMotor__set_m_stopCFM_p1(this.ptr, arg0.ptr);
}
btTranslationalLimitMotor.prototype['get_m_stopCFM'] = function() {
    return wrapPointer(_emscripten_bind_btTranslationalLimitMotor__get_m_stopCFM_p0(this.ptr), Module['btVector3']);
}
btTranslationalLimitMotor.prototype['get_m_lowerLimit'] = function() {
    return wrapPointer(_emscripten_bind_btTranslationalLimitMotor__get_m_lowerLimit_p0(this.ptr), Module['btVector3']);
}
btTranslationalLimitMotor.prototype['set_m_maxMotorForce'] = function(arg0) {
    _emscripten_bind_btTranslationalLimitMotor__set_m_maxMotorForce_p1(this.ptr, arg0.ptr);
}
btTranslationalLimitMotor.prototype['testLimitValue'] = function(arg0, arg1) {
    return _emscripten_bind_btTranslationalLimitMotor__testLimitValue_p2(this.ptr, arg0, arg1);
}
btTranslationalLimitMotor.prototype['set_m_restitution'] = function(arg0) {
    _emscripten_bind_btTranslationalLimitMotor__set_m_restitution_p1(this.ptr, arg0);
}
btTranslationalLimitMotor.prototype['set_m_limitSoftness'] = function(arg0) {
    _emscripten_bind_btTranslationalLimitMotor__set_m_limitSoftness_p1(this.ptr, arg0);
}
btTranslationalLimitMotor.prototype['set_m_currentLinearDiff'] = function(arg0) {
    _emscripten_bind_btTranslationalLimitMotor__set_m_currentLinearDiff_p1(this.ptr, arg0.ptr);
}
btTranslationalLimitMotor.prototype['get_m_restitution'] = function() {
    return _emscripten_bind_btTranslationalLimitMotor__get_m_restitution_p0(this.ptr);
}
btTranslationalLimitMotor.prototype['get_m_targetVelocity'] = function() {
    return wrapPointer(_emscripten_bind_btTranslationalLimitMotor__get_m_targetVelocity_p0(this.ptr), Module['btVector3']);
}
btTranslationalLimitMotor.prototype['get_m_maxMotorForce'] = function() {
    return wrapPointer(_emscripten_bind_btTranslationalLimitMotor__get_m_maxMotorForce_p0(this.ptr), Module['btVector3']);
}
btTranslationalLimitMotor.prototype['set_m_damping'] = function(arg0) {
    _emscripten_bind_btTranslationalLimitMotor__set_m_damping_p1(this.ptr, arg0);
}
btTranslationalLimitMotor.prototype['get_m_upperLimit'] = function() {
    return wrapPointer(_emscripten_bind_btTranslationalLimitMotor__get_m_upperLimit_p0(this.ptr), Module['btVector3']);
}
btTranslationalLimitMotor.prototype['set_m_accumulatedImpulse'] = function(arg0) {
    _emscripten_bind_btTranslationalLimitMotor__set_m_accumulatedImpulse_p1(this.ptr, arg0.ptr);
}
function btTranslationalLimitMotor(arg0) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btTranslationalLimitMotor__btTranslationalLimitMotor_p0();
  else 
    this.ptr = _emscripten_bind_btTranslationalLimitMotor__btTranslationalLimitMotor_p1(arg0.ptr);
  btTranslationalLimitMotor.prototype.__cache__[this.ptr] = this;
  this.__class__ = btTranslationalLimitMotor;
}
btTranslationalLimitMotor.prototype.__cache__ = {};
Module['btTranslationalLimitMotor'] = btTranslationalLimitMotor;
btTranslationalLimitMotor.prototype['set_m_upperLimit'] = function(arg0) {
    _emscripten_bind_btTranslationalLimitMotor__set_m_upperLimit_p1(this.ptr, arg0.ptr);
}
btTranslationalLimitMotor.prototype['__destroy__'] = function() {
    _emscripten_bind_btTranslationalLimitMotor____destroy___p0(this.ptr);
}
btTranslationalLimitMotor.prototype['set_m_normalCFM'] = function(arg0) {
    _emscripten_bind_btTranslationalLimitMotor__set_m_normalCFM_p1(this.ptr, arg0.ptr);
}
btTranslationalLimitMotor.prototype['get_m_damping'] = function() {
    return _emscripten_bind_btTranslationalLimitMotor__get_m_damping_p0(this.ptr);
}
btTranslationalLimitMotor.prototype['get_m_normalCFM'] = function() {
    return wrapPointer(_emscripten_bind_btTranslationalLimitMotor__get_m_normalCFM_p0(this.ptr), Module['btVector3']);
}
btTranslationalLimitMotor.prototype['set_m_targetVelocity'] = function(arg0) {
    _emscripten_bind_btTranslationalLimitMotor__set_m_targetVelocity_p1(this.ptr, arg0.ptr);
}
btTranslationalLimitMotor.prototype['isLimited'] = function(arg0) {
    return _emscripten_bind_btTranslationalLimitMotor__isLimited_p1(this.ptr, arg0);
}
btTranslationalLimitMotor.prototype['get_m_accumulatedImpulse'] = function() {
    return wrapPointer(_emscripten_bind_btTranslationalLimitMotor__get_m_accumulatedImpulse_p0(this.ptr), Module['btVector3']);
}
btTranslationalLimitMotor.prototype['set_m_lowerLimit'] = function(arg0) {
    _emscripten_bind_btTranslationalLimitMotor__set_m_lowerLimit_p1(this.ptr, arg0.ptr);
}
btTranslationalLimitMotor.prototype['get_m_limitSoftness'] = function() {
    return _emscripten_bind_btTranslationalLimitMotor__get_m_limitSoftness_p0(this.ptr);
}
btTranslationalLimitMotor.prototype['solveLinearAxis'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {
    return _emscripten_bind_btTranslationalLimitMotor__solveLinearAxis_p9(this.ptr, arg0, arg1, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6, arg7.ptr, arg8.ptr);
}
function btInternalTriangleIndexCallback(){ throw "btInternalTriangleIndexCallback is abstract!" }
btInternalTriangleIndexCallback.prototype.__cache__ = {};
Module['btInternalTriangleIndexCallback'] = btInternalTriangleIndexCallback;
btInternalTriangleIndexCallback.prototype['internalProcessTriangleIndex'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btInternalTriangleIndexCallback__internalProcessTriangleIndex_p3(this.ptr, arg0.ptr, arg1, arg2);
}
function btConvexInternalShape(){ throw "btConvexInternalShape is abstract!" }
btConvexInternalShape.prototype.__cache__ = {};
Module['btConvexInternalShape'] = btConvexInternalShape;
btConvexInternalShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btConvexInternalShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btConvexInternalShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btConvexInternalShape__isCompound_p0(this.ptr);
}
btConvexInternalShape.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexInternalShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConvexInternalShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btConvexInternalShape__setUserPointer_p1(this.ptr, arg0);
}
btConvexInternalShape.prototype['getMarginNV'] = function() {
    return _emscripten_bind_btConvexInternalShape__getMarginNV_p0(this.ptr);
}
btConvexInternalShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btConvexInternalShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btConvexInternalShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btConvexInternalShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btConvexInternalShape.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btConvexInternalShape__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btConvexInternalShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btConvexInternalShape__isPolyhedral_p0(this.ptr);
}
btConvexInternalShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexInternalShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConvexInternalShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexInternalShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConvexInternalShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btConvexInternalShape__calculateSerializeBufferSize_p0(this.ptr);
}
btConvexInternalShape.prototype['getName'] = function() {
    return _emscripten_bind_btConvexInternalShape__getName_p0(this.ptr);
}
btConvexInternalShape.prototype['getLocalScalingNV'] = function() {
    return wrapPointer(_emscripten_bind_btConvexInternalShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']);
}
btConvexInternalShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexInternalShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConvexInternalShape.prototype['setImplicitShapeDimensions'] = function(arg0) {
    _emscripten_bind_btConvexInternalShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr);
}
btConvexInternalShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btConvexInternalShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btConvexInternalShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexInternalShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConvexInternalShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btConvexInternalShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btConvexInternalShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btConvexInternalShape__isConvex_p0(this.ptr);
}
btConvexInternalShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btConvexInternalShape__isInfinite_p0(this.ptr);
}
btConvexInternalShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btConvexInternalShape__getUserPointer_p0(this.ptr);
}
btConvexInternalShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btConvexInternalShape__isNonMoving_p0(this.ptr);
}
btConvexInternalShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btConvexInternalShape__getMargin_p0(this.ptr);
}
btConvexInternalShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btConvexInternalShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btConvexInternalShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btConvexInternalShape__setMargin_p1(this.ptr, arg0);
}
btConvexInternalShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btConvexInternalShape__isConvex2d_p0(this.ptr);
}
btConvexInternalShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btConvexInternalShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btConvexInternalShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btConvexInternalShape__isSoftBody_p0(this.ptr);
}
btConvexInternalShape.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btConvexInternalShape__getMarginNonVirtual_p0(this.ptr);
}
btConvexInternalShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexInternalShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btConvexInternalShape.prototype['getImplicitShapeDimensions'] = function() {
    return wrapPointer(_emscripten_bind_btConvexInternalShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']);
}
btConvexInternalShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btConvexInternalShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btConvexInternalShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btConvexInternalShape__getAngularMotionDisc_p0(this.ptr);
}
btConvexInternalShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btConvexInternalShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btConvexInternalShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConvexInternalShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConvexInternalShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btConvexInternalShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btConvexInternalShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btConvexInternalShape__isConcave_p0(this.ptr);
}
btConvexInternalShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btConvexInternalShape__getShapeType_p0(this.ptr);
}
btHashPtr.prototype['__destroy__'] = function() {
    _emscripten_bind_btHashPtr____destroy___p0(this.ptr);
}
btHashPtr.prototype['equals'] = function(arg0) {
    return _emscripten_bind_btHashPtr__equals_p1(this.ptr, arg0.ptr);
}
btHashPtr.prototype['getHash'] = function() {
    return _emscripten_bind_btHashPtr__getHash_p0(this.ptr);
}
function btHashPtr(arg0) {
    this.ptr = _emscripten_bind_btHashPtr__btHashPtr_p1(arg0);
  btHashPtr.prototype.__cache__[this.ptr] = this;
  this.__class__ = btHashPtr;
}
btHashPtr.prototype.__cache__ = {};
Module['btHashPtr'] = btHashPtr;
btHashPtr.prototype['getPointer'] = function() {
    return _emscripten_bind_btHashPtr__getPointer_p0(this.ptr);
}
btPairCachingGhostObject.prototype['removeOverlappingObjectInternal'] = function(arg0, arg1, arg2) {
  if (arg2 === undefined)
    _emscripten_bind_btPairCachingGhostObject__removeOverlappingObjectInternal_p2(this.ptr, arg0.ptr, arg1.ptr);
  else 
    _emscripten_bind_btPairCachingGhostObject__removeOverlappingObjectInternal_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btPairCachingGhostObject.prototype['getFriction'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__getFriction_p0(this.ptr);
}
btPairCachingGhostObject.prototype['setInterpolationLinearVelocity'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__setInterpolationLinearVelocity_p1(this.ptr, arg0.ptr);
}
btPairCachingGhostObject.prototype['getDeactivationTime'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__getDeactivationTime_p0(this.ptr);
}
btPairCachingGhostObject.prototype['setCompanionId'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__setCompanionId_p1(this.ptr, arg0);
}
btPairCachingGhostObject.prototype['setInterpolationAngularVelocity'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__setInterpolationAngularVelocity_p1(this.ptr, arg0.ptr);
}
function btPairCachingGhostObject() {
    this.ptr = _emscripten_bind_btPairCachingGhostObject__btPairCachingGhostObject_p0();
  btPairCachingGhostObject.prototype.__cache__[this.ptr] = this;
  this.__class__ = btPairCachingGhostObject;
}
btPairCachingGhostObject.prototype.__cache__ = {};
Module['btPairCachingGhostObject'] = btPairCachingGhostObject;
btPairCachingGhostObject.prototype['getCcdSweptSphereRadius'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__getCcdSweptSphereRadius_p0(this.ptr);
}
btPairCachingGhostObject.prototype['setFriction'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__setFriction_p1(this.ptr, arg0);
}
btPairCachingGhostObject.prototype['internalSetExtensionPointer'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__internalSetExtensionPointer_p1(this.ptr, arg0);
}
btPairCachingGhostObject.prototype['setContactProcessingThreshold'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__setContactProcessingThreshold_p1(this.ptr, arg0);
}
btPairCachingGhostObject.prototype['setInterpolationWorldTransform'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__setInterpolationWorldTransform_p1(this.ptr, arg0.ptr);
}
btPairCachingGhostObject.prototype['getInterpolationLinearVelocity'] = function() {
    return wrapPointer(_emscripten_bind_btPairCachingGhostObject__getInterpolationLinearVelocity_p0(this.ptr), Module['btVector3']);
}
btPairCachingGhostObject.prototype['mergesSimulationIslands'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__mergesSimulationIslands_p0(this.ptr);
}
btPairCachingGhostObject.prototype['setCollisionShape'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__setCollisionShape_p1(this.ptr, arg0.ptr);
}
btPairCachingGhostObject.prototype['setCcdMotionThreshold'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__setCcdMotionThreshold_p1(this.ptr, arg0);
}
btPairCachingGhostObject.prototype['getIslandTag'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__getIslandTag_p0(this.ptr);
}
btPairCachingGhostObject.prototype['getNumOverlappingObjects'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__getNumOverlappingObjects_p0(this.ptr);
}
btPairCachingGhostObject.prototype['addOverlappingObjectInternal'] = function(arg0, arg1) {
  if (arg1 === undefined)
    _emscripten_bind_btPairCachingGhostObject__addOverlappingObjectInternal_p1(this.ptr, arg0.ptr);
  else 
    _emscripten_bind_btPairCachingGhostObject__addOverlappingObjectInternal_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btPairCachingGhostObject.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__setUserPointer_p1(this.ptr, arg0);
}
btPairCachingGhostObject.prototype['checkCollideWith'] = function(arg0) {
    return _emscripten_bind_btPairCachingGhostObject__checkCollideWith_p1(this.ptr, arg0.ptr);
}
btPairCachingGhostObject.prototype['rayTest'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btPairCachingGhostObject__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btPairCachingGhostObject.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__calculateSerializeBufferSize_p0(this.ptr);
}
btPairCachingGhostObject.prototype['getInterpolationAngularVelocity'] = function() {
    return wrapPointer(_emscripten_bind_btPairCachingGhostObject__getInterpolationAngularVelocity_p0(this.ptr), Module['btVector3']);
}
btPairCachingGhostObject.prototype['forceActivationState'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__forceActivationState_p1(this.ptr, arg0);
}
btPairCachingGhostObject.prototype['activate'] = function(arg0) {
  if (arg0 === undefined)
    _emscripten_bind_btPairCachingGhostObject__activate_p0(this.ptr);
  else 
    _emscripten_bind_btPairCachingGhostObject__activate_p1(this.ptr, arg0);
}
btPairCachingGhostObject.prototype['setIslandTag'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__setIslandTag_p1(this.ptr, arg0);
}
btPairCachingGhostObject.prototype['setHitFraction'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__setHitFraction_p1(this.ptr, arg0);
}
btPairCachingGhostObject.prototype['getInterpolationWorldTransform'] = function() {
    return wrapPointer(_emscripten_bind_btPairCachingGhostObject__getInterpolationWorldTransform_p0(this.ptr), Module['btTransform']);
}
btPairCachingGhostObject.prototype['getHitFraction'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__getHitFraction_p0(this.ptr);
}
btPairCachingGhostObject.prototype['getOverlappingObject'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btPairCachingGhostObject__getOverlappingObject_p1(this.ptr, arg0), Module['btCollisionObject']);
}
btPairCachingGhostObject.prototype['convexSweepTest'] = function(arg0, arg1, arg2, arg3, arg4) {
  if (arg4 === undefined)
    _emscripten_bind_btPairCachingGhostObject__convexSweepTest_p4(this.ptr, arg0, arg1.ptr, arg2.ptr, arg3);
  else 
    _emscripten_bind_btPairCachingGhostObject__convexSweepTest_p5(this.ptr, arg0, arg1.ptr, arg2.ptr, arg3, arg4);
}
btPairCachingGhostObject.prototype['isStaticObject'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__isStaticObject_p0(this.ptr);
}
btPairCachingGhostObject.prototype['getCollisionShape'] = function() {
    return wrapPointer(_emscripten_bind_btPairCachingGhostObject__getCollisionShape_p0(this.ptr), Module['btCollisionShape']);
}
btPairCachingGhostObject.prototype['setAnisotropicFriction'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__setAnisotropicFriction_p1(this.ptr, arg0.ptr);
}
btPairCachingGhostObject.prototype['getActivationState'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__getActivationState_p0(this.ptr);
}
btPairCachingGhostObject.prototype['getBroadphaseHandle'] = function() {
    return wrapPointer(_emscripten_bind_btPairCachingGhostObject__getBroadphaseHandle_p0(this.ptr), Module['btBroadphaseProxy']);
}
btPairCachingGhostObject.prototype['getRestitution'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__getRestitution_p0(this.ptr);
}
btPairCachingGhostObject.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__getUserPointer_p0(this.ptr);
}
btPairCachingGhostObject.prototype['setCcdSweptSphereRadius'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__setCcdSweptSphereRadius_p1(this.ptr, arg0);
}
btPairCachingGhostObject.prototype['getWorldTransform'] = function() {
    return wrapPointer(_emscripten_bind_btPairCachingGhostObject__getWorldTransform_p0(this.ptr), Module['btTransform']);
}
btPairCachingGhostObject.prototype['getCcdSquareMotionThreshold'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__getCcdSquareMotionThreshold_p0(this.ptr);
}
btPairCachingGhostObject.prototype['setWorldTransform'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__setWorldTransform_p1(this.ptr, arg0.ptr);
}
btPairCachingGhostObject.prototype['internalSetTemporaryCollisionShape'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__internalSetTemporaryCollisionShape_p1(this.ptr, arg0.ptr);
}
btPairCachingGhostObject.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btPairCachingGhostObject__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btPairCachingGhostObject.prototype['getCcdMotionThreshold'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__getCcdMotionThreshold_p0(this.ptr);
}
btPairCachingGhostObject.prototype['getCompanionId'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__getCompanionId_p0(this.ptr);
}
btPairCachingGhostObject.prototype['serializeSingleObject'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__serializeSingleObject_p1(this.ptr, arg0.ptr);
}
btPairCachingGhostObject.prototype['isActive'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__isActive_p0(this.ptr);
}
btPairCachingGhostObject.prototype['getInternalType'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__getInternalType_p0(this.ptr);
}
btPairCachingGhostObject.prototype['__destroy__'] = function() {
    _emscripten_bind_btPairCachingGhostObject____destroy___p0(this.ptr);
}
btPairCachingGhostObject.prototype['hasContactResponse'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__hasContactResponse_p0(this.ptr);
}
btPairCachingGhostObject.prototype['upcast'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btPairCachingGhostObject__upcast_p1(arg0.ptr), Module['btGhostObject']);
}
btPairCachingGhostObject.prototype['setActivationState'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__setActivationState_p1(this.ptr, arg0);
}
btPairCachingGhostObject.prototype['getRootCollisionShape'] = function() {
    return wrapPointer(_emscripten_bind_btPairCachingGhostObject__getRootCollisionShape_p0(this.ptr), Module['btCollisionShape']);
}
btPairCachingGhostObject.prototype['getContactProcessingThreshold'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__getContactProcessingThreshold_p0(this.ptr);
}
btPairCachingGhostObject.prototype['getCollisionFlags'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__getCollisionFlags_p0(this.ptr);
}
btPairCachingGhostObject.prototype['getOverlappingPairCache'] = function() {
    return wrapPointer(_emscripten_bind_btPairCachingGhostObject__getOverlappingPairCache_p0(this.ptr), Module['btHashedOverlappingPairCache']);
}
btPairCachingGhostObject.prototype['getAnisotropicFriction'] = function() {
    return wrapPointer(_emscripten_bind_btPairCachingGhostObject__getAnisotropicFriction_p0(this.ptr), Module['btVector3']);
}
btPairCachingGhostObject.prototype['setDeactivationTime'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__setDeactivationTime_p1(this.ptr, arg0);
}
btPairCachingGhostObject.prototype['internalGetExtensionPointer'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__internalGetExtensionPointer_p0(this.ptr);
}
btPairCachingGhostObject.prototype['setCollisionFlags'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__setCollisionFlags_p1(this.ptr, arg0);
}
btPairCachingGhostObject.prototype['isStaticOrKinematicObject'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__isStaticOrKinematicObject_p0(this.ptr);
}
btPairCachingGhostObject.prototype['setRestitution'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__setRestitution_p1(this.ptr, arg0);
}
btPairCachingGhostObject.prototype['hasAnisotropicFriction'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__hasAnisotropicFriction_p0(this.ptr);
}
btPairCachingGhostObject.prototype['setBroadphaseHandle'] = function(arg0) {
    _emscripten_bind_btPairCachingGhostObject__setBroadphaseHandle_p1(this.ptr, arg0.ptr);
}
btPairCachingGhostObject.prototype['isKinematicObject'] = function() {
    return _emscripten_bind_btPairCachingGhostObject__isKinematicObject_p0(this.ptr);
}
function btOverlapCallback(){ throw "btOverlapCallback is abstract!" }
btOverlapCallback.prototype.__cache__ = {};
Module['btOverlapCallback'] = btOverlapCallback;
btOverlapCallback.prototype['processOverlap'] = function(arg0) {
    return _emscripten_bind_btOverlapCallback__processOverlap_p1(this.ptr, arg0.ptr);
}
btStaticPlaneShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btStaticPlaneShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btStaticPlaneShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btStaticPlaneShape__setUserPointer_p1(this.ptr, arg0);
}
btStaticPlaneShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btStaticPlaneShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btStaticPlaneShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btStaticPlaneShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btStaticPlaneShape.prototype['processAllTriangles'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btStaticPlaneShape__processAllTriangles_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btStaticPlaneShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btStaticPlaneShape__calculateSerializeBufferSize_p0(this.ptr);
}
btStaticPlaneShape.prototype['getName'] = function() {
    return _emscripten_bind_btStaticPlaneShape__getName_p0(this.ptr);
}
btStaticPlaneShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btStaticPlaneShape__isCompound_p0(this.ptr);
}
btStaticPlaneShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btStaticPlaneShape__isPolyhedral_p0(this.ptr);
}
btStaticPlaneShape.prototype['getPlaneNormal'] = function() {
    return wrapPointer(_emscripten_bind_btStaticPlaneShape__getPlaneNormal_p0(this.ptr), Module['btVector3']);
}
btStaticPlaneShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btStaticPlaneShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btStaticPlaneShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btStaticPlaneShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btStaticPlaneShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btStaticPlaneShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btStaticPlaneShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btStaticPlaneShape__isConvex_p0(this.ptr);
}
btStaticPlaneShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btStaticPlaneShape__isInfinite_p0(this.ptr);
}
btStaticPlaneShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btStaticPlaneShape__getUserPointer_p0(this.ptr);
}
btStaticPlaneShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btStaticPlaneShape__isNonMoving_p0(this.ptr);
}
btStaticPlaneShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btStaticPlaneShape__getMargin_p0(this.ptr);
}
btStaticPlaneShape.prototype['getPlaneConstant'] = function() {
    return _emscripten_bind_btStaticPlaneShape__getPlaneConstant_p0(this.ptr);
}
btStaticPlaneShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btStaticPlaneShape__setMargin_p1(this.ptr, arg0);
}
btStaticPlaneShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btStaticPlaneShape__isConvex2d_p0(this.ptr);
}
btStaticPlaneShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btStaticPlaneShape__isSoftBody_p0(this.ptr);
}
btStaticPlaneShape.prototype['__destroy__'] = function() {
    _emscripten_bind_btStaticPlaneShape____destroy___p0(this.ptr);
}
btStaticPlaneShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btStaticPlaneShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btStaticPlaneShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btStaticPlaneShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btStaticPlaneShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btStaticPlaneShape__getAngularMotionDisc_p0(this.ptr);
}
btStaticPlaneShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btStaticPlaneShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
function btStaticPlaneShape(arg0, arg1) {
    this.ptr = _emscripten_bind_btStaticPlaneShape__btStaticPlaneShape_p2(arg0.ptr, arg1);
  btStaticPlaneShape.prototype.__cache__[this.ptr] = this;
  this.__class__ = btStaticPlaneShape;
}
btStaticPlaneShape.prototype.__cache__ = {};
Module['btStaticPlaneShape'] = btStaticPlaneShape;
btStaticPlaneShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btStaticPlaneShape__isConcave_p0(this.ptr);
}
btStaticPlaneShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btStaticPlaneShape__getShapeType_p0(this.ptr);
}
function btOverlappingPairCache(){ throw "btOverlappingPairCache is abstract!" }
btOverlappingPairCache.prototype.__cache__ = {};
Module['btOverlappingPairCache'] = btOverlappingPairCache;
btOverlappingPairCache.prototype['sortOverlappingPairs'] = function(arg0) {
    _emscripten_bind_btOverlappingPairCache__sortOverlappingPairs_p1(this.ptr, arg0.ptr);
}
btOverlappingPairCache.prototype['setInternalGhostPairCallback'] = function(arg0) {
    _emscripten_bind_btOverlappingPairCache__setInternalGhostPairCallback_p1(this.ptr, arg0.ptr);
}
btOverlappingPairCache.prototype['addOverlappingPair'] = function(arg0, arg1) {
    return wrapPointer(_emscripten_bind_btOverlappingPairCache__addOverlappingPair_p2(this.ptr, arg0.ptr, arg1.ptr), Module['btBroadphasePair']);
}
btOverlappingPairCache.prototype['removeOverlappingPairsContainingProxy'] = function(arg0, arg1) {
    _emscripten_bind_btOverlappingPairCache__removeOverlappingPairsContainingProxy_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btOverlappingPairCache.prototype['hasDeferredRemoval'] = function() {
    return _emscripten_bind_btOverlappingPairCache__hasDeferredRemoval_p0(this.ptr);
}
btOverlappingPairCache.prototype['getOverlappingPairArray'] = function() {
    return _emscripten_bind_btOverlappingPairCache__getOverlappingPairArray_p0(this.ptr);
}
btOverlappingPairCache.prototype['findPair'] = function(arg0, arg1) {
    return wrapPointer(_emscripten_bind_btOverlappingPairCache__findPair_p2(this.ptr, arg0.ptr, arg1.ptr), Module['btBroadphasePair']);
}
btOverlappingPairCache.prototype['cleanProxyFromPairs'] = function(arg0, arg1) {
    _emscripten_bind_btOverlappingPairCache__cleanProxyFromPairs_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btOverlappingPairCache.prototype['cleanOverlappingPair'] = function(arg0, arg1) {
    _emscripten_bind_btOverlappingPairCache__cleanOverlappingPair_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btOverlappingPairCache.prototype['getNumOverlappingPairs'] = function() {
    return _emscripten_bind_btOverlappingPairCache__getNumOverlappingPairs_p0(this.ptr);
}
btOverlappingPairCache.prototype['removeOverlappingPair'] = function(arg0, arg1, arg2) {
    return _emscripten_bind_btOverlappingPairCache__removeOverlappingPair_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btOverlappingPairCache.prototype['setOverlapFilterCallback'] = function(arg0) {
    _emscripten_bind_btOverlappingPairCache__setOverlapFilterCallback_p1(this.ptr, arg0.ptr);
}
btOverlappingPairCache.prototype['getOverlappingPairArrayPtr'] = function() {
    return wrapPointer(_emscripten_bind_btOverlappingPairCache__getOverlappingPairArrayPtr_p0(this.ptr), Module['btBroadphasePair']);
}
btOverlappingPairCache.prototype['processAllOverlappingPairs'] = function(arg0, arg1) {
    _emscripten_bind_btOverlappingPairCache__processAllOverlappingPairs_p2(this.ptr, arg0.ptr, arg1.ptr);
}
function btCollisionShape(){ throw "btCollisionShape is abstract!" }
btCollisionShape.prototype.__cache__ = {};
Module['btCollisionShape'] = btCollisionShape;
btCollisionShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btCollisionShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btCollisionShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btCollisionShape__setUserPointer_p1(this.ptr, arg0);
}
btCollisionShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btCollisionShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btCollisionShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btCollisionShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btCollisionShape__calculateSerializeBufferSize_p0(this.ptr);
}
btCollisionShape.prototype['getName'] = function() {
    return _emscripten_bind_btCollisionShape__getName_p0(this.ptr);
}
btCollisionShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btCollisionShape__isCompound_p0(this.ptr);
}
btCollisionShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btCollisionShape__isPolyhedral_p0(this.ptr);
}
btCollisionShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btCollisionShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btCollisionShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCollisionShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCollisionShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btCollisionShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btCollisionShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btCollisionShape__isConvex_p0(this.ptr);
}
btCollisionShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btCollisionShape__isInfinite_p0(this.ptr);
}
btCollisionShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btCollisionShape__getUserPointer_p0(this.ptr);
}
btCollisionShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btCollisionShape__isNonMoving_p0(this.ptr);
}
btCollisionShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btCollisionShape__getMargin_p0(this.ptr);
}
btCollisionShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btCollisionShape__setMargin_p1(this.ptr, arg0);
}
btCollisionShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btCollisionShape__isConvex2d_p0(this.ptr);
}
btCollisionShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btCollisionShape__isSoftBody_p0(this.ptr);
}
btCollisionShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btCollisionShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btCollisionShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btCollisionShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btCollisionShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btCollisionShape__getAngularMotionDisc_p0(this.ptr);
}
btCollisionShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btCollisionShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btCollisionShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btCollisionShape__isConcave_p0(this.ptr);
}
btCollisionShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btCollisionShape__getShapeType_p0(this.ptr);
}
btGeneric6DofConstraint.prototype['getRigidBodyB'] = function() {
    return wrapPointer(_emscripten_bind_btGeneric6DofConstraint__getRigidBodyB_p0(this.ptr), Module['btRigidBody']);
}
btGeneric6DofConstraint.prototype['buildJacobian'] = function() {
    _emscripten_bind_btGeneric6DofConstraint__buildJacobian_p0(this.ptr);
}
btGeneric6DofConstraint.prototype['setParam'] = function(arg0, arg1, arg2) {
  if (arg2 === undefined)
    _emscripten_bind_btGeneric6DofConstraint__setParam_p2(this.ptr, arg0, arg1);
  else 
    _emscripten_bind_btGeneric6DofConstraint__setParam_p3(this.ptr, arg0, arg1, arg2);
}
btGeneric6DofConstraint.prototype['getUid'] = function() {
    return _emscripten_bind_btGeneric6DofConstraint__getUid_p0(this.ptr);
}
btGeneric6DofConstraint.prototype['set_m_objectType'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__set_m_objectType_p1(this.ptr, arg0);
}
btGeneric6DofConstraint.prototype['setEnabled'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__setEnabled_p1(this.ptr, arg0);
}
btGeneric6DofConstraint.prototype['getFrameOffsetA'] = function() {
    return wrapPointer(_emscripten_bind_btGeneric6DofConstraint__getFrameOffsetA_p0(this.ptr), Module['btTransform']);
}
btGeneric6DofConstraint.prototype['getRelativePivotPosition'] = function(arg0) {
    return _emscripten_bind_btGeneric6DofConstraint__getRelativePivotPosition_p1(this.ptr, arg0);
}
btGeneric6DofConstraint.prototype['getFrameOffsetB'] = function() {
    return wrapPointer(_emscripten_bind_btGeneric6DofConstraint__getFrameOffsetB_p0(this.ptr), Module['btTransform']);
}
btGeneric6DofConstraint.prototype['getInfo2NonVirtual'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
    _emscripten_bind_btGeneric6DofConstraint__getInfo2NonVirtual_p7(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr);
}
btGeneric6DofConstraint.prototype['getCalculatedTransformA'] = function() {
    return wrapPointer(_emscripten_bind_btGeneric6DofConstraint__getCalculatedTransformA_p0(this.ptr), Module['btTransform']);
}
btGeneric6DofConstraint.prototype['getUserConstraintId'] = function() {
    return _emscripten_bind_btGeneric6DofConstraint__getUserConstraintId_p0(this.ptr);
}
function btGeneric6DofConstraint(arg0, arg1, arg2, arg3, arg4) {
  if (arg3 === undefined)
    this.ptr = _emscripten_bind_btGeneric6DofConstraint__btGeneric6DofConstraint_p3(arg0.ptr, arg1.ptr, arg2);
  else 
    this.ptr = _emscripten_bind_btGeneric6DofConstraint__btGeneric6DofConstraint_p5(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4);
  btGeneric6DofConstraint.prototype.__cache__[this.ptr] = this;
  this.__class__ = btGeneric6DofConstraint;
}
btGeneric6DofConstraint.prototype.__cache__ = {};
Module['btGeneric6DofConstraint'] = btGeneric6DofConstraint;
btGeneric6DofConstraint.prototype['getRigidBodyA'] = function() {
    return wrapPointer(_emscripten_bind_btGeneric6DofConstraint__getRigidBodyA_p0(this.ptr), Module['btRigidBody']);
}
btGeneric6DofConstraint.prototype['getBreakingImpulseThreshold'] = function() {
    return _emscripten_bind_btGeneric6DofConstraint__getBreakingImpulseThreshold_p0(this.ptr);
}
btGeneric6DofConstraint.prototype['getParam'] = function(arg0, arg1) {
  if (arg1 === undefined)
    return _emscripten_bind_btGeneric6DofConstraint__getParam_p1(this.ptr, arg0);
  else 
    return _emscripten_bind_btGeneric6DofConstraint__getParam_p2(this.ptr, arg0, arg1);
}
btGeneric6DofConstraint.prototype['getInfo1'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__getInfo1_p1(this.ptr, arg0.ptr);
}
btGeneric6DofConstraint.prototype['getInfo2'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__getInfo2_p1(this.ptr, arg0.ptr);
}
btGeneric6DofConstraint.prototype['calcAnchorPos'] = function() {
    _emscripten_bind_btGeneric6DofConstraint__calcAnchorPos_p0(this.ptr);
}
btGeneric6DofConstraint.prototype['getAngularLowerLimit'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__getAngularLowerLimit_p1(this.ptr, arg0.ptr);
}
btGeneric6DofConstraint.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btGeneric6DofConstraint__calculateSerializeBufferSize_p0(this.ptr);
}
btGeneric6DofConstraint.prototype['getAxis'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btGeneric6DofConstraint__getAxis_p1(this.ptr, arg0), Module['btVector3']);
}
btGeneric6DofConstraint.prototype['internalGetAppliedImpulse'] = function() {
    return _emscripten_bind_btGeneric6DofConstraint__internalGetAppliedImpulse_p0(this.ptr);
}
btGeneric6DofConstraint.prototype['isEnabled'] = function() {
    return _emscripten_bind_btGeneric6DofConstraint__isEnabled_p0(this.ptr);
}
btGeneric6DofConstraint.prototype['setUserConstraintId'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__setUserConstraintId_p1(this.ptr, arg0);
}
btGeneric6DofConstraint.prototype['getLinearUpperLimit'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__getLinearUpperLimit_p1(this.ptr, arg0.ptr);
}
btGeneric6DofConstraint.prototype['getConstraintType'] = function() {
    return _emscripten_bind_btGeneric6DofConstraint__getConstraintType_p0(this.ptr);
}
btGeneric6DofConstraint.prototype['enableFeedback'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__enableFeedback_p1(this.ptr, arg0);
}
btGeneric6DofConstraint.prototype['setUseFrameOffset'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__setUseFrameOffset_p1(this.ptr, arg0);
}
btGeneric6DofConstraint.prototype['needsFeedback'] = function() {
    return _emscripten_bind_btGeneric6DofConstraint__needsFeedback_p0(this.ptr);
}
btGeneric6DofConstraint.prototype['getObjectType'] = function() {
    return _emscripten_bind_btGeneric6DofConstraint__getObjectType_p0(this.ptr);
}
btGeneric6DofConstraint.prototype['getRotationalLimitMotor'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btGeneric6DofConstraint__getRotationalLimitMotor_p1(this.ptr, arg0), Module['btRotationalLimitMotor']);
}
btGeneric6DofConstraint.prototype['getInfo1NonVirtual'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__getInfo1NonVirtual_p1(this.ptr, arg0.ptr);
}
btGeneric6DofConstraint.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btGeneric6DofConstraint__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btGeneric6DofConstraint.prototype['setLinearLowerLimit'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__setLinearLowerLimit_p1(this.ptr, arg0.ptr);
}
btGeneric6DofConstraint.prototype['getDbgDrawSize'] = function() {
    return _emscripten_bind_btGeneric6DofConstraint__getDbgDrawSize_p0(this.ptr);
}
btGeneric6DofConstraint.prototype['getLinearLowerLimit'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__getLinearLowerLimit_p1(this.ptr, arg0.ptr);
}
btGeneric6DofConstraint.prototype['setDbgDrawSize'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__setDbgDrawSize_p1(this.ptr, arg0);
}
btGeneric6DofConstraint.prototype['isLimited'] = function(arg0) {
    return _emscripten_bind_btGeneric6DofConstraint__isLimited_p1(this.ptr, arg0);
}
btGeneric6DofConstraint.prototype['getUseFrameOffset'] = function() {
    return _emscripten_bind_btGeneric6DofConstraint__getUseFrameOffset_p0(this.ptr);
}
btGeneric6DofConstraint.prototype['setUserConstraintType'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__setUserConstraintType_p1(this.ptr, arg0);
}
btGeneric6DofConstraint.prototype['getCalculatedTransformB'] = function() {
    return wrapPointer(_emscripten_bind_btGeneric6DofConstraint__getCalculatedTransformB_p0(this.ptr), Module['btTransform']);
}
btGeneric6DofConstraint.prototype['calculateTransforms'] = function(arg0, arg1) {
  if (arg0 === undefined)
    _emscripten_bind_btGeneric6DofConstraint__calculateTransforms_p0(this.ptr);
  else 
    _emscripten_bind_btGeneric6DofConstraint__calculateTransforms_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btGeneric6DofConstraint.prototype['internalSetAppliedImpulse'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__internalSetAppliedImpulse_p1(this.ptr, arg0);
}
btGeneric6DofConstraint.prototype['setBreakingImpulseThreshold'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__setBreakingImpulseThreshold_p1(this.ptr, arg0);
}
btGeneric6DofConstraint.prototype['get_limit_motor_info2'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11) {
  if (arg11 === undefined)
    return _emscripten_bind_btGeneric6DofConstraint__get_limit_motor_info2_p11(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7.ptr, arg8, arg9.ptr, arg10);
  else 
    return _emscripten_bind_btGeneric6DofConstraint__get_limit_motor_info2_p12(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7.ptr, arg8, arg9.ptr, arg10, arg11);
}
btGeneric6DofConstraint.prototype['get_m_useSolveConstraintObsolete'] = function() {
    return _emscripten_bind_btGeneric6DofConstraint__get_m_useSolveConstraintObsolete_p0(this.ptr);
}
btGeneric6DofConstraint.prototype['getAppliedImpulse'] = function() {
    return _emscripten_bind_btGeneric6DofConstraint__getAppliedImpulse_p0(this.ptr);
}
btGeneric6DofConstraint.prototype['setLimit'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btGeneric6DofConstraint__setLimit_p3(this.ptr, arg0, arg1, arg2);
}
btGeneric6DofConstraint.prototype['set_m_useSolveConstraintObsolete'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__set_m_useSolveConstraintObsolete_p1(this.ptr, arg0);
}
btGeneric6DofConstraint.prototype['getTranslationalLimitMotor'] = function() {
    return wrapPointer(_emscripten_bind_btGeneric6DofConstraint__getTranslationalLimitMotor_p0(this.ptr), Module['btTranslationalLimitMotor']);
}
btGeneric6DofConstraint.prototype['__destroy__'] = function() {
    _emscripten_bind_btGeneric6DofConstraint____destroy___p0(this.ptr);
}
btGeneric6DofConstraint.prototype['setupSolverConstraint'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btGeneric6DofConstraint__setupSolverConstraint_p4(this.ptr, arg0, arg1, arg2, arg3);
}
btGeneric6DofConstraint.prototype['getAngle'] = function(arg0) {
    return _emscripten_bind_btGeneric6DofConstraint__getAngle_p1(this.ptr, arg0);
}
btGeneric6DofConstraint.prototype['updateRHS'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__updateRHS_p1(this.ptr, arg0);
}
btGeneric6DofConstraint.prototype['getAngularUpperLimit'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__getAngularUpperLimit_p1(this.ptr, arg0.ptr);
}
btGeneric6DofConstraint.prototype['get_m_objectType'] = function() {
    return _emscripten_bind_btGeneric6DofConstraint__get_m_objectType_p0(this.ptr);
}
btGeneric6DofConstraint.prototype['setAngularLowerLimit'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__setAngularLowerLimit_p1(this.ptr, arg0.ptr);
}
btGeneric6DofConstraint.prototype['getUserConstraintType'] = function() {
    return _emscripten_bind_btGeneric6DofConstraint__getUserConstraintType_p0(this.ptr);
}
btGeneric6DofConstraint.prototype['solveConstraintObsolete'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btGeneric6DofConstraint__solveConstraintObsolete_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btGeneric6DofConstraint.prototype['getUserConstraintPtr'] = function() {
    return _emscripten_bind_btGeneric6DofConstraint__getUserConstraintPtr_p0(this.ptr);
}
btGeneric6DofConstraint.prototype['setFrames'] = function(arg0, arg1) {
    _emscripten_bind_btGeneric6DofConstraint__setFrames_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btGeneric6DofConstraint.prototype['setLinearUpperLimit'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__setLinearUpperLimit_p1(this.ptr, arg0.ptr);
}
btGeneric6DofConstraint.prototype['setAngularUpperLimit'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__setAngularUpperLimit_p1(this.ptr, arg0.ptr);
}
btGeneric6DofConstraint.prototype['setAxis'] = function(arg0, arg1) {
    _emscripten_bind_btGeneric6DofConstraint__setAxis_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btGeneric6DofConstraint.prototype['setUserConstraintPtr'] = function(arg0) {
    _emscripten_bind_btGeneric6DofConstraint__setUserConstraintPtr_p1(this.ptr, arg0);
}
btGeneric6DofConstraint.prototype['testAngularLimitMotor'] = function(arg0) {
    return _emscripten_bind_btGeneric6DofConstraint__testAngularLimitMotor_p1(this.ptr, arg0);
}
btClock.prototype['reset'] = function() {
    _emscripten_bind_btClock__reset_p0(this.ptr);
}
btClock.prototype['__destroy__'] = function() {
    _emscripten_bind_btClock____destroy___p0(this.ptr);
}
btClock.prototype['getTimeMilliseconds'] = function() {
    return _emscripten_bind_btClock__getTimeMilliseconds_p0(this.ptr);
}
btClock.prototype['getTimeMicroseconds'] = function() {
    return _emscripten_bind_btClock__getTimeMicroseconds_p0(this.ptr);
}
function btClock(arg0) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btClock__btClock_p0();
  else 
    this.ptr = _emscripten_bind_btClock__btClock_p1(arg0.ptr);
  btClock.prototype.__cache__[this.ptr] = this;
  this.__class__ = btClock;
}
btClock.prototype.__cache__ = {};
Module['btClock'] = btClock;
btClock.prototype['op_set'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btClock__op_set_p1(this.ptr, arg0.ptr), Module['btClock']);
}
btTransform.prototype['setFromOpenGLMatrix'] = function(arg0) {
    _emscripten_bind_btTransform__setFromOpenGLMatrix_p1(this.ptr, arg0);
}
btTransform.prototype['setBasis'] = function(arg0) {
    _emscripten_bind_btTransform__setBasis_p1(this.ptr, arg0.ptr);
}
btTransform.prototype['getOrigin'] = function() {
    return wrapPointer(_emscripten_bind_btTransform__getOrigin_p0(this.ptr), Module['btVector3']);
}
btTransform.prototype['deSerializeDouble'] = function(arg0) {
    _emscripten_bind_btTransform__deSerializeDouble_p1(this.ptr, arg0.ptr);
}
btTransform.prototype['deSerializeFloat'] = function(arg0) {
    _emscripten_bind_btTransform__deSerializeFloat_p1(this.ptr, arg0.ptr);
}
btTransform.prototype['getRotation'] = function() {
    return wrapPointer(_emscripten_bind_btTransform__getRotation_p0(this.ptr), Module['btQuaternion']);
}
btTransform.prototype['inverse'] = function() {
    return wrapPointer(_emscripten_bind_btTransform__inverse_p0(this.ptr), Module['btTransform']);
}
btTransform.prototype['getIdentity'] = function() {
    return wrapPointer(_emscripten_bind_btTransform__getIdentity_p0(), Module['btTransform']);
}
btTransform.prototype['inverseTimes'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btTransform__inverseTimes_p1(this.ptr, arg0.ptr), Module['btTransform']);
}
btTransform.prototype['op_mul'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btTransform__op_mul_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btTransform.prototype['setRotation'] = function(arg0) {
    _emscripten_bind_btTransform__setRotation_p1(this.ptr, arg0.ptr);
}
btTransform.prototype['setIdentity'] = function() {
    _emscripten_bind_btTransform__setIdentity_p0(this.ptr);
}
btTransform.prototype['op_set'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btTransform__op_set_p1(this.ptr, arg0.ptr), Module['btTransform']);
}
btTransform.prototype['getOpenGLMatrix'] = function(arg0) {
    _emscripten_bind_btTransform__getOpenGLMatrix_p1(this.ptr, arg0);
}
btTransform.prototype['serialize'] = function(arg0) {
    _emscripten_bind_btTransform__serialize_p1(this.ptr, arg0.ptr);
}
btTransform.prototype['deSerialize'] = function(arg0) {
    _emscripten_bind_btTransform__deSerialize_p1(this.ptr, arg0.ptr);
}
btTransform.prototype['invXform'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btTransform__invXform_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btTransform.prototype['serializeFloat'] = function(arg0) {
    _emscripten_bind_btTransform__serializeFloat_p1(this.ptr, arg0.ptr);
}
btTransform.prototype['mult'] = function(arg0, arg1) {
    _emscripten_bind_btTransform__mult_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btTransform.prototype['__destroy__'] = function() {
    _emscripten_bind_btTransform____destroy___p0(this.ptr);
}
btTransform.prototype['getBasis'] = function() {
    return wrapPointer(_emscripten_bind_btTransform__getBasis_p0(this.ptr), Module['btMatrix3x3']);
}
btTransform.prototype['setOrigin'] = function(arg0) {
    _emscripten_bind_btTransform__setOrigin_p1(this.ptr, arg0.ptr);
}
function btTransform(arg0, arg1) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btTransform__btTransform_p0();
  else   if (arg1 === undefined)
    this.ptr = _emscripten_bind_btTransform__btTransform_p1(arg0.ptr);
  else 
    this.ptr = _emscripten_bind_btTransform__btTransform_p2(arg0.ptr, arg1.ptr);
  btTransform.prototype.__cache__[this.ptr] = this;
  this.__class__ = btTransform;
}
btTransform.prototype.__cache__ = {};
Module['btTransform'] = btTransform;
btRigidBodyConstructionInfo.prototype['get_m_restitution'] = function() {
    return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_restitution_p0(this.ptr);
}
btRigidBodyConstructionInfo.prototype['get_m_additionalDamping'] = function() {
    return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalDamping_p0(this.ptr);
}
btRigidBodyConstructionInfo.prototype['set_m_mass'] = function(arg0) {
    _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_mass_p1(this.ptr, arg0);
}
btRigidBodyConstructionInfo.prototype['set_m_additionalDamping'] = function(arg0) {
    _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalDamping_p1(this.ptr, arg0);
}
btRigidBodyConstructionInfo.prototype['set_m_angularSleepingThreshold'] = function(arg0) {
    _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_angularSleepingThreshold_p1(this.ptr, arg0);
}
btRigidBodyConstructionInfo.prototype['set_m_angularDamping'] = function(arg0) {
    _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_angularDamping_p1(this.ptr, arg0);
}
btRigidBodyConstructionInfo.prototype['get_m_linearSleepingThreshold'] = function() {
    return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_linearSleepingThreshold_p0(this.ptr);
}
btRigidBodyConstructionInfo.prototype['set_m_friction'] = function(arg0) {
    _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_friction_p1(this.ptr, arg0);
}
btRigidBodyConstructionInfo.prototype['get_m_linearDamping'] = function() {
    return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_linearDamping_p0(this.ptr);
}
btRigidBodyConstructionInfo.prototype['get_m_angularDamping'] = function() {
    return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_angularDamping_p0(this.ptr);
}
btRigidBodyConstructionInfo.prototype['get_m_mass'] = function() {
    return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_mass_p0(this.ptr);
}
btRigidBodyConstructionInfo.prototype['set_m_linearDamping'] = function(arg0) {
    _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_linearDamping_p1(this.ptr, arg0);
}
function btRigidBodyConstructionInfo(arg0, arg1, arg2, arg3) {
  if (arg3 === undefined)
    this.ptr = _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__btRigidBodyConstructionInfo_p3(arg0, arg1.ptr, arg2.ptr);
  else 
    this.ptr = _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__btRigidBodyConstructionInfo_p4(arg0, arg1.ptr, arg2.ptr, arg3.ptr);
  btRigidBodyConstructionInfo.prototype.__cache__[this.ptr] = this;
  this.__class__ = btRigidBodyConstructionInfo;
}
btRigidBodyConstructionInfo.prototype.__cache__ = {};
Module['btRigidBodyConstructionInfo'] = btRigidBodyConstructionInfo;
btRigidBodyConstructionInfo.prototype['set_m_restitution'] = function(arg0) {
    _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_restitution_p1(this.ptr, arg0);
}
btRigidBodyConstructionInfo.prototype['get_m_additionalAngularDampingFactor'] = function() {
    return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalAngularDampingFactor_p0(this.ptr);
}
btRigidBodyConstructionInfo.prototype['set_m_startWorldTransform'] = function(arg0) {
    _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_startWorldTransform_p1(this.ptr, arg0.ptr);
}
btRigidBodyConstructionInfo.prototype['get_m_additionalAngularDampingThresholdSqr'] = function() {
    return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalAngularDampingThresholdSqr_p0(this.ptr);
}
btRigidBodyConstructionInfo.prototype['set_m_collisionShape'] = function(arg0) {
    _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_collisionShape_p1(this.ptr, arg0.ptr);
}
btRigidBodyConstructionInfo.prototype['set_m_additionalAngularDampingThresholdSqr'] = function(arg0) {
    _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalAngularDampingThresholdSqr_p1(this.ptr, arg0);
}
btRigidBodyConstructionInfo.prototype['set_m_localInertia'] = function(arg0) {
    _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_localInertia_p1(this.ptr, arg0.ptr);
}
btRigidBodyConstructionInfo.prototype['set_m_additionalLinearDampingThresholdSqr'] = function(arg0) {
    _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalLinearDampingThresholdSqr_p1(this.ptr, arg0);
}
btRigidBodyConstructionInfo.prototype['get_m_collisionShape'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_collisionShape_p0(this.ptr), Module['btCollisionShape']);
}
btRigidBodyConstructionInfo.prototype['set_m_motionState'] = function(arg0) {
    _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_motionState_p1(this.ptr, arg0.ptr);
}
btRigidBodyConstructionInfo.prototype['get_m_friction'] = function() {
    return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_friction_p0(this.ptr);
}
btRigidBodyConstructionInfo.prototype['set_m_linearSleepingThreshold'] = function(arg0) {
    _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_linearSleepingThreshold_p1(this.ptr, arg0);
}
btRigidBodyConstructionInfo.prototype['get_m_startWorldTransform'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_startWorldTransform_p0(this.ptr), Module['btTransform']);
}
btRigidBodyConstructionInfo.prototype['get_m_localInertia'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_localInertia_p0(this.ptr), Module['btVector3']);
}
btRigidBodyConstructionInfo.prototype['get_m_motionState'] = function() {
    return wrapPointer(_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_motionState_p0(this.ptr), Module['btMotionState']);
}
btRigidBodyConstructionInfo.prototype['__destroy__'] = function() {
    _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo____destroy___p0(this.ptr);
}
btRigidBodyConstructionInfo.prototype['get_m_additionalDampingFactor'] = function() {
    return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalDampingFactor_p0(this.ptr);
}
btRigidBodyConstructionInfo.prototype['get_m_additionalLinearDampingThresholdSqr'] = function() {
    return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalLinearDampingThresholdSqr_p0(this.ptr);
}
btRigidBodyConstructionInfo.prototype['set_m_additionalDampingFactor'] = function(arg0) {
    _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalDampingFactor_p1(this.ptr, arg0);
}
btRigidBodyConstructionInfo.prototype['get_m_angularSleepingThreshold'] = function() {
    return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_angularSleepingThreshold_p0(this.ptr);
}
btRigidBodyConstructionInfo.prototype['set_m_additionalAngularDampingFactor'] = function(arg0) {
    _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalAngularDampingFactor_p1(this.ptr, arg0);
}
CProfileNode.prototype['Reset'] = function() {
    _emscripten_bind_CProfileNode__Reset_p0(this.ptr);
}
CProfileNode.prototype['__destroy__'] = function() {
    _emscripten_bind_CProfileNode____destroy___p0(this.ptr);
}
CProfileNode.prototype['Return'] = function() {
    return _emscripten_bind_CProfileNode__Return_p0(this.ptr);
}
CProfileNode.prototype['Get_Sub_Node'] = function(arg0) {
var stack = Runtime.stackSave();
try {
    return wrapPointer(_emscripten_bind_CProfileNode__Get_Sub_Node_p1(this.ptr, ensureString(arg0)), Module['CProfileNode']);
} finally { Runtime.stackRestore(stack) }
}
CProfileNode.prototype['CleanupMemory'] = function() {
    _emscripten_bind_CProfileNode__CleanupMemory_p0(this.ptr);
}
CProfileNode.prototype['Get_Parent'] = function() {
    return wrapPointer(_emscripten_bind_CProfileNode__Get_Parent_p0(this.ptr), Module['CProfileNode']);
}
CProfileNode.prototype['Get_Total_Calls'] = function() {
    return _emscripten_bind_CProfileNode__Get_Total_Calls_p0(this.ptr);
}
CProfileNode.prototype['Get_Name'] = function() {
    return _emscripten_bind_CProfileNode__Get_Name_p0(this.ptr);
}
CProfileNode.prototype['Get_Total_Time'] = function() {
    return _emscripten_bind_CProfileNode__Get_Total_Time_p0(this.ptr);
}
CProfileNode.prototype['Get_Sibling'] = function() {
    return wrapPointer(_emscripten_bind_CProfileNode__Get_Sibling_p0(this.ptr), Module['CProfileNode']);
}
CProfileNode.prototype['Call'] = function() {
    _emscripten_bind_CProfileNode__Call_p0(this.ptr);
}
CProfileNode.prototype['Get_Child'] = function() {
    return wrapPointer(_emscripten_bind_CProfileNode__Get_Child_p0(this.ptr), Module['CProfileNode']);
}
function CProfileNode(arg0, arg1) {
var stack = Runtime.stackSave();
try {
    this.ptr = _emscripten_bind_CProfileNode__CProfileNode_p2(ensureString(arg0), arg1.ptr);
} finally { Runtime.stackRestore(stack) }
  CProfileNode.prototype.__cache__[this.ptr] = this;
  this.__class__ = CProfileNode;
}
CProfileNode.prototype.__cache__ = {};
Module['CProfileNode'] = CProfileNode;
ClosestPointInput.prototype['set_m_transformB'] = function(arg0) {
    _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_transformB_p1(this.ptr, arg0.ptr);
}
function ClosestPointInput() {
    this.ptr = _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__ClosestPointInput_p0();
  ClosestPointInput.prototype.__cache__[this.ptr] = this;
  this.__class__ = ClosestPointInput;
}
ClosestPointInput.prototype.__cache__ = {};
Module['ClosestPointInput'] = ClosestPointInput;
ClosestPointInput.prototype['get_m_maximumDistanceSquared'] = function() {
    return _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_maximumDistanceSquared_p0(this.ptr);
}
ClosestPointInput.prototype['set_m_transformA'] = function(arg0) {
    _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_transformA_p1(this.ptr, arg0.ptr);
}
ClosestPointInput.prototype['get_m_transformA'] = function() {
    return wrapPointer(_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_transformA_p0(this.ptr), Module['btTransform']);
}
ClosestPointInput.prototype['get_m_transformB'] = function() {
    return wrapPointer(_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_transformB_p0(this.ptr), Module['btTransform']);
}
ClosestPointInput.prototype['__destroy__'] = function() {
    _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput____destroy___p0(this.ptr);
}
ClosestPointInput.prototype['set_m_stackAlloc'] = function(arg0) {
    _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_stackAlloc_p1(this.ptr, arg0.ptr);
}
ClosestPointInput.prototype['get_m_stackAlloc'] = function() {
    return wrapPointer(_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_stackAlloc_p0(this.ptr), Module['btStackAlloc']);
}
ClosestPointInput.prototype['set_m_maximumDistanceSquared'] = function(arg0) {
    _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_maximumDistanceSquared_p1(this.ptr, arg0);
}
btBvhTriangleMeshShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btBvhTriangleMeshShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btBvhTriangleMeshShape.prototype['getLocalAabbMax'] = function() {
    return wrapPointer(_emscripten_bind_btBvhTriangleMeshShape__getLocalAabbMax_p0(this.ptr), Module['btVector3']);
}
function btBvhTriangleMeshShape(arg0, arg1, arg2, arg3, arg4) {
  if (arg2 === undefined)
    this.ptr = _emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p2(arg0.ptr, arg1);
  else   if (arg3 === undefined)
    this.ptr = _emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p3(arg0.ptr, arg1, arg2);
  else   if (arg4 === undefined)
    this.ptr = _emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p4(arg0.ptr, arg1, arg2.ptr, arg3.ptr);
  else 
    this.ptr = _emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p5(arg0.ptr, arg1, arg2.ptr, arg3.ptr, arg4);
  btBvhTriangleMeshShape.prototype.__cache__[this.ptr] = this;
  this.__class__ = btBvhTriangleMeshShape;
}
btBvhTriangleMeshShape.prototype.__cache__ = {};
Module['btBvhTriangleMeshShape'] = btBvhTriangleMeshShape;
btBvhTriangleMeshShape.prototype['serializeSingleTriangleInfoMap'] = function(arg0) {
    _emscripten_bind_btBvhTriangleMeshShape__serializeSingleTriangleInfoMap_p1(this.ptr, arg0.ptr);
}
btBvhTriangleMeshShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btBvhTriangleMeshShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btBvhTriangleMeshShape.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btBvhTriangleMeshShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btBvhTriangleMeshShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btBvhTriangleMeshShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btBvhTriangleMeshShape.prototype['getOwnsBvh'] = function() {
    return _emscripten_bind_btBvhTriangleMeshShape__getOwnsBvh_p0(this.ptr);
}
btBvhTriangleMeshShape.prototype['getMeshInterface'] = function() {
    return wrapPointer(_emscripten_bind_btBvhTriangleMeshShape__getMeshInterface_p0(this.ptr), Module['btStridingMeshInterface']);
}
btBvhTriangleMeshShape.prototype['processAllTriangles'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btBvhTriangleMeshShape__processAllTriangles_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btBvhTriangleMeshShape.prototype['refitTree'] = function(arg0, arg1) {
    _emscripten_bind_btBvhTriangleMeshShape__refitTree_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btBvhTriangleMeshShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btBvhTriangleMeshShape__calculateSerializeBufferSize_p0(this.ptr);
}
btBvhTriangleMeshShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btBvhTriangleMeshShape__setUserPointer_p1(this.ptr, arg0);
}
btBvhTriangleMeshShape.prototype['performRaycast'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btBvhTriangleMeshShape__performRaycast_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btBvhTriangleMeshShape.prototype['setTriangleInfoMap'] = function(arg0) {
    _emscripten_bind_btBvhTriangleMeshShape__setTriangleInfoMap_p1(this.ptr, arg0.ptr);
}
btBvhTriangleMeshShape.prototype['usesQuantizedAabbCompression'] = function() {
    return _emscripten_bind_btBvhTriangleMeshShape__usesQuantizedAabbCompression_p0(this.ptr);
}
btBvhTriangleMeshShape.prototype['getName'] = function() {
    return _emscripten_bind_btBvhTriangleMeshShape__getName_p0(this.ptr);
}
btBvhTriangleMeshShape.prototype['getTriangleInfoMap'] = function() {
    return wrapPointer(_emscripten_bind_btBvhTriangleMeshShape__getTriangleInfoMap_p0(this.ptr), Module['btTriangleInfoMap']);
}
btBvhTriangleMeshShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btBvhTriangleMeshShape__isCompound_p0(this.ptr);
}
btBvhTriangleMeshShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btBvhTriangleMeshShape__isPolyhedral_p0(this.ptr);
}
btBvhTriangleMeshShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btBvhTriangleMeshShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btBvhTriangleMeshShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btBvhTriangleMeshShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btBvhTriangleMeshShape.prototype['getOptimizedBvh'] = function() {
    return wrapPointer(_emscripten_bind_btBvhTriangleMeshShape__getOptimizedBvh_p0(this.ptr), Module['btOptimizedBvh']);
}
btBvhTriangleMeshShape.prototype['getLocalAabbMin'] = function() {
    return wrapPointer(_emscripten_bind_btBvhTriangleMeshShape__getLocalAabbMin_p0(this.ptr), Module['btVector3']);
}
btBvhTriangleMeshShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btBvhTriangleMeshShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btBvhTriangleMeshShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btBvhTriangleMeshShape__isConvex_p0(this.ptr);
}
btBvhTriangleMeshShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btBvhTriangleMeshShape__isInfinite_p0(this.ptr);
}
btBvhTriangleMeshShape.prototype['buildOptimizedBvh'] = function() {
    _emscripten_bind_btBvhTriangleMeshShape__buildOptimizedBvh_p0(this.ptr);
}
btBvhTriangleMeshShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btBvhTriangleMeshShape__isConcave_p0(this.ptr);
}
btBvhTriangleMeshShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btBvhTriangleMeshShape__getUserPointer_p0(this.ptr);
}
btBvhTriangleMeshShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btBvhTriangleMeshShape__isNonMoving_p0(this.ptr);
}
btBvhTriangleMeshShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btBvhTriangleMeshShape__getMargin_p0(this.ptr);
}
btBvhTriangleMeshShape.prototype['recalcLocalAabb'] = function() {
    _emscripten_bind_btBvhTriangleMeshShape__recalcLocalAabb_p0(this.ptr);
}
btBvhTriangleMeshShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btBvhTriangleMeshShape__setMargin_p1(this.ptr, arg0);
}
btBvhTriangleMeshShape.prototype['partialRefitTree'] = function(arg0, arg1) {
    _emscripten_bind_btBvhTriangleMeshShape__partialRefitTree_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btBvhTriangleMeshShape.prototype['performConvexcast'] = function(arg0, arg1, arg2, arg3, arg4) {
    _emscripten_bind_btBvhTriangleMeshShape__performConvexcast_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr);
}
btBvhTriangleMeshShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btBvhTriangleMeshShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btBvhTriangleMeshShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btBvhTriangleMeshShape__isSoftBody_p0(this.ptr);
}
btBvhTriangleMeshShape.prototype['__destroy__'] = function() {
    _emscripten_bind_btBvhTriangleMeshShape____destroy___p0(this.ptr);
}
btBvhTriangleMeshShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btBvhTriangleMeshShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btBvhTriangleMeshShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btBvhTriangleMeshShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btBvhTriangleMeshShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btBvhTriangleMeshShape__getAngularMotionDisc_p0(this.ptr);
}
btBvhTriangleMeshShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btBvhTriangleMeshShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btBvhTriangleMeshShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btBvhTriangleMeshShape__getShapeType_p0(this.ptr);
}
btBvhTriangleMeshShape.prototype['serializeSingleBvh'] = function(arg0) {
    _emscripten_bind_btBvhTriangleMeshShape__serializeSingleBvh_p1(this.ptr, arg0.ptr);
}
btBvhTriangleMeshShape.prototype['setOptimizedBvh'] = function(arg0, arg1) {
  if (arg1 === undefined)
    _emscripten_bind_btBvhTriangleMeshShape__setOptimizedBvh_p1(this.ptr, arg0.ptr);
  else 
    _emscripten_bind_btBvhTriangleMeshShape__setOptimizedBvh_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btBvhTriangleMeshShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btBvhTriangleMeshShape__isConvex2d_p0(this.ptr);
}
function btOverlapFilterCallback(){ throw "btOverlapFilterCallback is abstract!" }
btOverlapFilterCallback.prototype.__cache__ = {};
Module['btOverlapFilterCallback'] = btOverlapFilterCallback;
btOverlapFilterCallback.prototype['needBroadphaseCollision'] = function(arg0, arg1) {
    return _emscripten_bind_btOverlapFilterCallback__needBroadphaseCollision_p2(this.ptr, arg0.ptr, arg1.ptr);
}
function btActivatingCollisionAlgorithm(){ throw "btActivatingCollisionAlgorithm is abstract!" }
btActivatingCollisionAlgorithm.prototype.__cache__ = {};
Module['btActivatingCollisionAlgorithm'] = btActivatingCollisionAlgorithm;
btActivatingCollisionAlgorithm.prototype['getAllContactManifolds'] = function(arg0) {
    _emscripten_bind_btActivatingCollisionAlgorithm__getAllContactManifolds_p1(this.ptr, arg0);
}
btActivatingCollisionAlgorithm.prototype['calculateTimeOfImpact'] = function(arg0, arg1, arg2, arg3) {
    return _emscripten_bind_btActivatingCollisionAlgorithm__calculateTimeOfImpact_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
}
btActivatingCollisionAlgorithm.prototype['processCollision'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btActivatingCollisionAlgorithm__processCollision_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
}
btSliderConstraint.prototype['getRigidBodyB'] = function() {
    return wrapPointer(_emscripten_bind_btSliderConstraint__getRigidBodyB_p0(this.ptr), Module['btRigidBody']);
}
btSliderConstraint.prototype['getRigidBodyA'] = function() {
    return wrapPointer(_emscripten_bind_btSliderConstraint__getRigidBodyA_p0(this.ptr), Module['btRigidBody']);
}
btSliderConstraint.prototype['getAngDepth'] = function() {
    return _emscripten_bind_btSliderConstraint__getAngDepth_p0(this.ptr);
}
btSliderConstraint.prototype['buildJacobian'] = function() {
    _emscripten_bind_btSliderConstraint__buildJacobian_p0(this.ptr);
}
btSliderConstraint.prototype['getTargetAngMotorVelocity'] = function() {
    return _emscripten_bind_btSliderConstraint__getTargetAngMotorVelocity_p0(this.ptr);
}
btSliderConstraint.prototype['getAngularPos'] = function() {
    return _emscripten_bind_btSliderConstraint__getAngularPos_p0(this.ptr);
}
btSliderConstraint.prototype['setRestitutionLimAng'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setRestitutionLimAng_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['getParam'] = function(arg0, arg1) {
  if (arg1 === undefined)
    return _emscripten_bind_btSliderConstraint__getParam_p1(this.ptr, arg0);
  else 
    return _emscripten_bind_btSliderConstraint__getParam_p2(this.ptr, arg0, arg1);
}
btSliderConstraint.prototype['getInfo1'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__getInfo1_p1(this.ptr, arg0.ptr);
}
btSliderConstraint.prototype['getInfo2'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__getInfo2_p1(this.ptr, arg0.ptr);
}
btSliderConstraint.prototype['isEnabled'] = function() {
    return _emscripten_bind_btSliderConstraint__isEnabled_p0(this.ptr);
}
btSliderConstraint.prototype['getPoweredLinMotor'] = function() {
    return _emscripten_bind_btSliderConstraint__getPoweredLinMotor_p0(this.ptr);
}
btSliderConstraint.prototype['setUseFrameOffset'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setUseFrameOffset_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['setSoftnessLimLin'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setSoftnessLimLin_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['getAncorInA'] = function() {
    return wrapPointer(_emscripten_bind_btSliderConstraint__getAncorInA_p0(this.ptr), Module['btVector3']);
}
btSliderConstraint.prototype['getAncorInB'] = function() {
    return wrapPointer(_emscripten_bind_btSliderConstraint__getAncorInB_p0(this.ptr), Module['btVector3']);
}
btSliderConstraint.prototype['setDampingDirAng'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setDampingDirAng_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['getSolveLinLimit'] = function() {
    return _emscripten_bind_btSliderConstraint__getSolveLinLimit_p0(this.ptr);
}
btSliderConstraint.prototype['getUseFrameOffset'] = function() {
    return _emscripten_bind_btSliderConstraint__getUseFrameOffset_p0(this.ptr);
}
btSliderConstraint.prototype['getMaxAngMotorForce'] = function() {
    return _emscripten_bind_btSliderConstraint__getMaxAngMotorForce_p0(this.ptr);
}
btSliderConstraint.prototype['setRestitutionDirAng'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setRestitutionDirAng_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['setupSolverConstraint'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btSliderConstraint__setupSolverConstraint_p4(this.ptr, arg0, arg1, arg2, arg3);
}
btSliderConstraint.prototype['needsFeedback'] = function() {
    return _emscripten_bind_btSliderConstraint__needsFeedback_p0(this.ptr);
}
btSliderConstraint.prototype['getMaxLinMotorForce'] = function() {
    return _emscripten_bind_btSliderConstraint__getMaxLinMotorForce_p0(this.ptr);
}
btSliderConstraint.prototype['getObjectType'] = function() {
    return _emscripten_bind_btSliderConstraint__getObjectType_p0(this.ptr);
}
btSliderConstraint.prototype['setDampingOrthoLin'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setDampingOrthoLin_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['getSolveAngLimit'] = function() {
    return _emscripten_bind_btSliderConstraint__getSolveAngLimit_p0(this.ptr);
}
btSliderConstraint.prototype['setPoweredAngMotor'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setPoweredAngMotor_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['enableFeedback'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__enableFeedback_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['getLinearPos'] = function() {
    return _emscripten_bind_btSliderConstraint__getLinearPos_p0(this.ptr);
}
btSliderConstraint.prototype['getCalculatedTransformB'] = function() {
    return wrapPointer(_emscripten_bind_btSliderConstraint__getCalculatedTransformB_p0(this.ptr), Module['btTransform']);
}
btSliderConstraint.prototype['getCalculatedTransformA'] = function() {
    return wrapPointer(_emscripten_bind_btSliderConstraint__getCalculatedTransformA_p0(this.ptr), Module['btTransform']);
}
btSliderConstraint.prototype['testAngLimits'] = function() {
    _emscripten_bind_btSliderConstraint__testAngLimits_p0(this.ptr);
}
btSliderConstraint.prototype['get_m_objectType'] = function() {
    return _emscripten_bind_btSliderConstraint__get_m_objectType_p0(this.ptr);
}
btSliderConstraint.prototype['setBreakingImpulseThreshold'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setBreakingImpulseThreshold_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['setDampingDirLin'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setDampingDirLin_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['getUpperAngLimit'] = function() {
    return _emscripten_bind_btSliderConstraint__getUpperAngLimit_p0(this.ptr);
}
btSliderConstraint.prototype['setUpperAngLimit'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setUpperAngLimit_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['getRestitutionLimAng'] = function() {
    return _emscripten_bind_btSliderConstraint__getRestitutionLimAng_p0(this.ptr);
}
btSliderConstraint.prototype['getSoftnessOrthoLin'] = function() {
    return _emscripten_bind_btSliderConstraint__getSoftnessOrthoLin_p0(this.ptr);
}
btSliderConstraint.prototype['setLowerLinLimit'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setLowerLinLimit_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['getRestitutionDirLin'] = function() {
    return _emscripten_bind_btSliderConstraint__getRestitutionDirLin_p0(this.ptr);
}
btSliderConstraint.prototype['getInfo1NonVirtual'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__getInfo1NonVirtual_p1(this.ptr, arg0.ptr);
}
btSliderConstraint.prototype['setRestitutionLimLin'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setRestitutionLimLin_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['getUid'] = function() {
    return _emscripten_bind_btSliderConstraint__getUid_p0(this.ptr);
}
btSliderConstraint.prototype['setTargetLinMotorVelocity'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setTargetLinMotorVelocity_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['getUpperLinLimit'] = function() {
    return _emscripten_bind_btSliderConstraint__getUpperLinLimit_p0(this.ptr);
}
btSliderConstraint.prototype['setMaxLinMotorForce'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setMaxLinMotorForce_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['getLowerAngLimit'] = function() {
    return _emscripten_bind_btSliderConstraint__getLowerAngLimit_p0(this.ptr);
}
btSliderConstraint.prototype['getBreakingImpulseThreshold'] = function() {
    return _emscripten_bind_btSliderConstraint__getBreakingImpulseThreshold_p0(this.ptr);
}
btSliderConstraint.prototype['setSoftnessDirLin'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setSoftnessDirLin_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['setUserConstraintPtr'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setUserConstraintPtr_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['getInfo2NonVirtual'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
    _emscripten_bind_btSliderConstraint__getInfo2NonVirtual_p7(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5, arg6);
}
btSliderConstraint.prototype['set_m_objectType'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__set_m_objectType_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['getFrameOffsetA'] = function() {
    return wrapPointer(_emscripten_bind_btSliderConstraint__getFrameOffsetA_p0(this.ptr), Module['btTransform']);
}
btSliderConstraint.prototype['getFrameOffsetB'] = function() {
    return wrapPointer(_emscripten_bind_btSliderConstraint__getFrameOffsetB_p0(this.ptr), Module['btTransform']);
}
btSliderConstraint.prototype['getDampingDirAng'] = function() {
    return _emscripten_bind_btSliderConstraint__getDampingDirAng_p0(this.ptr);
}
btSliderConstraint.prototype['getRestitutionLimLin'] = function() {
    return _emscripten_bind_btSliderConstraint__getRestitutionLimLin_p0(this.ptr);
}
btSliderConstraint.prototype['getSoftnessOrthoAng'] = function() {
    return _emscripten_bind_btSliderConstraint__getSoftnessOrthoAng_p0(this.ptr);
}
btSliderConstraint.prototype['setSoftnessOrthoLin'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setSoftnessOrthoLin_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['setSoftnessLimAng'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setSoftnessLimAng_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['getDampingDirLin'] = function() {
    return _emscripten_bind_btSliderConstraint__getDampingDirLin_p0(this.ptr);
}
btSliderConstraint.prototype['getDbgDrawSize'] = function() {
    return _emscripten_bind_btSliderConstraint__getDbgDrawSize_p0(this.ptr);
}
btSliderConstraint.prototype['getUserConstraintPtr'] = function() {
    return _emscripten_bind_btSliderConstraint__getUserConstraintPtr_p0(this.ptr);
}
btSliderConstraint.prototype['getSoftnessLimLin'] = function() {
    return _emscripten_bind_btSliderConstraint__getSoftnessLimLin_p0(this.ptr);
}
btSliderConstraint.prototype['setEnabled'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setEnabled_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['setPoweredLinMotor'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setPoweredLinMotor_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['setDbgDrawSize'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setDbgDrawSize_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['calculateTransforms'] = function(arg0, arg1) {
    _emscripten_bind_btSliderConstraint__calculateTransforms_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btSliderConstraint.prototype['getLinDepth'] = function() {
    return _emscripten_bind_btSliderConstraint__getLinDepth_p0(this.ptr);
}
btSliderConstraint.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btSliderConstraint__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btSliderConstraint.prototype['getDampingLimLin'] = function() {
    return _emscripten_bind_btSliderConstraint__getDampingLimLin_p0(this.ptr);
}
btSliderConstraint.prototype['getRestitutionDirAng'] = function() {
    return _emscripten_bind_btSliderConstraint__getRestitutionDirAng_p0(this.ptr);
}
btSliderConstraint.prototype['solveConstraintObsolete'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btSliderConstraint__solveConstraintObsolete_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btSliderConstraint.prototype['getAppliedImpulse'] = function() {
    return _emscripten_bind_btSliderConstraint__getAppliedImpulse_p0(this.ptr);
}
btSliderConstraint.prototype['setParam'] = function(arg0, arg1, arg2) {
  if (arg2 === undefined)
    _emscripten_bind_btSliderConstraint__setParam_p2(this.ptr, arg0, arg1);
  else 
    _emscripten_bind_btSliderConstraint__setParam_p3(this.ptr, arg0, arg1, arg2);
}
btSliderConstraint.prototype['getDampingLimAng'] = function() {
    return _emscripten_bind_btSliderConstraint__getDampingLimAng_p0(this.ptr);
}
btSliderConstraint.prototype['setRestitutionOrthoLin'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setRestitutionOrthoLin_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['setRestitutionDirLin'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setRestitutionDirLin_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['setDampingLimAng'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setDampingLimAng_p1(this.ptr, arg0);
}
function btSliderConstraint(arg0, arg1, arg2, arg3, arg4) {
  if (arg3 === undefined)
    this.ptr = _emscripten_bind_btSliderConstraint__btSliderConstraint_p3(arg0.ptr, arg1.ptr, arg2);
  else 
    this.ptr = _emscripten_bind_btSliderConstraint__btSliderConstraint_p5(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4);
  btSliderConstraint.prototype.__cache__[this.ptr] = this;
  this.__class__ = btSliderConstraint;
}
btSliderConstraint.prototype.__cache__ = {};
Module['btSliderConstraint'] = btSliderConstraint;
btSliderConstraint.prototype['getUserConstraintId'] = function() {
    return _emscripten_bind_btSliderConstraint__getUserConstraintId_p0(this.ptr);
}
btSliderConstraint.prototype['setSoftnessDirAng'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setSoftnessDirAng_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['setUpperLinLimit'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setUpperLinLimit_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btSliderConstraint__calculateSerializeBufferSize_p0(this.ptr);
}
btSliderConstraint.prototype['setTargetAngMotorVelocity'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setTargetAngMotorVelocity_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['getSoftnessDirAng'] = function() {
    return _emscripten_bind_btSliderConstraint__getSoftnessDirAng_p0(this.ptr);
}
btSliderConstraint.prototype['setMaxAngMotorForce'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setMaxAngMotorForce_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['setLowerAngLimit'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setLowerAngLimit_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['setUserConstraintId'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setUserConstraintId_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['getConstraintType'] = function() {
    return _emscripten_bind_btSliderConstraint__getConstraintType_p0(this.ptr);
}
btSliderConstraint.prototype['getPoweredAngMotor'] = function() {
    return _emscripten_bind_btSliderConstraint__getPoweredAngMotor_p0(this.ptr);
}
btSliderConstraint.prototype['getDampingOrthoAng'] = function() {
    return _emscripten_bind_btSliderConstraint__getDampingOrthoAng_p0(this.ptr);
}
btSliderConstraint.prototype['internalSetAppliedImpulse'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__internalSetAppliedImpulse_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['getRestitutionOrthoLin'] = function() {
    return _emscripten_bind_btSliderConstraint__getRestitutionOrthoLin_p0(this.ptr);
}
btSliderConstraint.prototype['getTargetLinMotorVelocity'] = function() {
    return _emscripten_bind_btSliderConstraint__getTargetLinMotorVelocity_p0(this.ptr);
}
btSliderConstraint.prototype['testLinLimits'] = function() {
    _emscripten_bind_btSliderConstraint__testLinLimits_p0(this.ptr);
}
btSliderConstraint.prototype['getLowerLinLimit'] = function() {
    return _emscripten_bind_btSliderConstraint__getLowerLinLimit_p0(this.ptr);
}
btSliderConstraint.prototype['setDampingOrthoAng'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setDampingOrthoAng_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['getUserConstraintType'] = function() {
    return _emscripten_bind_btSliderConstraint__getUserConstraintType_p0(this.ptr);
}
btSliderConstraint.prototype['setRestitutionOrthoAng'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setRestitutionOrthoAng_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['getRestitutionOrthoAng'] = function() {
    return _emscripten_bind_btSliderConstraint__getRestitutionOrthoAng_p0(this.ptr);
}
btSliderConstraint.prototype['setUserConstraintType'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setUserConstraintType_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['getDampingOrthoLin'] = function() {
    return _emscripten_bind_btSliderConstraint__getDampingOrthoLin_p0(this.ptr);
}
btSliderConstraint.prototype['internalGetAppliedImpulse'] = function() {
    return _emscripten_bind_btSliderConstraint__internalGetAppliedImpulse_p0(this.ptr);
}
btSliderConstraint.prototype['getSoftnessLimAng'] = function() {
    return _emscripten_bind_btSliderConstraint__getSoftnessLimAng_p0(this.ptr);
}
btSliderConstraint.prototype['__destroy__'] = function() {
    _emscripten_bind_btSliderConstraint____destroy___p0(this.ptr);
}
btSliderConstraint.prototype['setSoftnessOrthoAng'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setSoftnessOrthoAng_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['setDampingLimLin'] = function(arg0) {
    _emscripten_bind_btSliderConstraint__setDampingLimLin_p1(this.ptr, arg0);
}
btSliderConstraint.prototype['setFrames'] = function(arg0, arg1) {
    _emscripten_bind_btSliderConstraint__setFrames_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btSliderConstraint.prototype['getSoftnessDirLin'] = function() {
    return _emscripten_bind_btSliderConstraint__getSoftnessDirLin_p0(this.ptr);
}
btSliderConstraint.prototype['getUseLinearReferenceFrameA'] = function() {
    return _emscripten_bind_btSliderConstraint__getUseLinearReferenceFrameA_p0(this.ptr);
}
btVehicleTuning.prototype['set_m_suspensionCompression'] = function(arg0) {
    _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionCompression_p1(this.ptr, arg0);
}
btVehicleTuning.prototype['set_m_maxSuspensionTravelCm'] = function(arg0) {
    _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_maxSuspensionTravelCm_p1(this.ptr, arg0);
}
btVehicleTuning.prototype['get_m_maxSuspensionTravelCm'] = function() {
    return _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_maxSuspensionTravelCm_p0(this.ptr);
}
btVehicleTuning.prototype['set_m_suspensionStiffness'] = function(arg0) {
    _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionStiffness_p1(this.ptr, arg0);
}
btVehicleTuning.prototype['get_m_frictionSlip'] = function() {
    return _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_frictionSlip_p0(this.ptr);
}
btVehicleTuning.prototype['get_m_suspensionDamping'] = function() {
    return _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionDamping_p0(this.ptr);
}
btVehicleTuning.prototype['get_m_suspensionStiffness'] = function() {
    return _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionStiffness_p0(this.ptr);
}
btVehicleTuning.prototype['get_m_suspensionCompression'] = function() {
    return _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionCompression_p0(this.ptr);
}
btVehicleTuning.prototype['set_m_suspensionDamping'] = function(arg0) {
    _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionDamping_p1(this.ptr, arg0);
}
function btVehicleTuning() {
    this.ptr = _emscripten_bind_btRaycastVehicle__btVehicleTuning__btVehicleTuning_p0();
  btVehicleTuning.prototype.__cache__[this.ptr] = this;
  this.__class__ = btVehicleTuning;
}
btVehicleTuning.prototype.__cache__ = {};
Module['btVehicleTuning'] = btVehicleTuning;
btVehicleTuning.prototype['__destroy__'] = function() {
    _emscripten_bind_btRaycastVehicle__btVehicleTuning____destroy___p0(this.ptr);
}
btVehicleTuning.prototype['set_m_frictionSlip'] = function(arg0) {
    _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_frictionSlip_p1(this.ptr, arg0);
}
btVehicleTuning.prototype['set_m_maxSuspensionForce'] = function(arg0) {
    _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_maxSuspensionForce_p1(this.ptr, arg0);
}
btVehicleTuning.prototype['get_m_maxSuspensionForce'] = function() {
    return _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_maxSuspensionForce_p0(this.ptr);
}
function btContactConstraint(){ throw "btContactConstraint is abstract!" }
btContactConstraint.prototype.__cache__ = {};
Module['btContactConstraint'] = btContactConstraint;
btContactConstraint.prototype['getRigidBodyB'] = function() {
    return wrapPointer(_emscripten_bind_btContactConstraint__getRigidBodyB_p0(this.ptr), Module['btRigidBody']);
}
btContactConstraint.prototype['buildJacobian'] = function() {
    _emscripten_bind_btContactConstraint__buildJacobian_p0(this.ptr);
}
btContactConstraint.prototype['getRigidBodyA'] = function() {
    return wrapPointer(_emscripten_bind_btContactConstraint__getRigidBodyA_p0(this.ptr), Module['btRigidBody']);
}
btContactConstraint.prototype['set_m_objectType'] = function(arg0) {
    _emscripten_bind_btContactConstraint__set_m_objectType_p1(this.ptr, arg0);
}
btContactConstraint.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btContactConstraint__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btContactConstraint.prototype['enableFeedback'] = function(arg0) {
    _emscripten_bind_btContactConstraint__enableFeedback_p1(this.ptr, arg0);
}
btContactConstraint.prototype['getContactManifold'] = function() {
    return wrapPointer(_emscripten_bind_btContactConstraint__getContactManifold_p0(this.ptr), Module['btPersistentManifold']);
}
btContactConstraint.prototype['getUserConstraintId'] = function() {
    return _emscripten_bind_btContactConstraint__getUserConstraintId_p0(this.ptr);
}
btContactConstraint.prototype['get_m_objectType'] = function() {
    return _emscripten_bind_btContactConstraint__get_m_objectType_p0(this.ptr);
}
btContactConstraint.prototype['setParam'] = function(arg0, arg1, arg2) {
  if (arg2 === undefined)
    _emscripten_bind_btContactConstraint__setParam_p2(this.ptr, arg0, arg1);
  else 
    _emscripten_bind_btContactConstraint__setParam_p3(this.ptr, arg0, arg1, arg2);
}
btContactConstraint.prototype['getParam'] = function(arg0, arg1) {
  if (arg1 === undefined)
    return _emscripten_bind_btContactConstraint__getParam_p1(this.ptr, arg0);
  else 
    return _emscripten_bind_btContactConstraint__getParam_p2(this.ptr, arg0, arg1);
}
btContactConstraint.prototype['getInfo1'] = function(arg0) {
    _emscripten_bind_btContactConstraint__getInfo1_p1(this.ptr, arg0.ptr);
}
btContactConstraint.prototype['getInfo2'] = function(arg0) {
    _emscripten_bind_btContactConstraint__getInfo2_p1(this.ptr, arg0.ptr);
}
btContactConstraint.prototype['setBreakingImpulseThreshold'] = function(arg0) {
    _emscripten_bind_btContactConstraint__setBreakingImpulseThreshold_p1(this.ptr, arg0);
}
btContactConstraint.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btContactConstraint__calculateSerializeBufferSize_p0(this.ptr);
}
btContactConstraint.prototype['isEnabled'] = function() {
    return _emscripten_bind_btContactConstraint__isEnabled_p0(this.ptr);
}
btContactConstraint.prototype['setUserConstraintId'] = function(arg0) {
    _emscripten_bind_btContactConstraint__setUserConstraintId_p1(this.ptr, arg0);
}
btContactConstraint.prototype['setContactManifold'] = function(arg0) {
    _emscripten_bind_btContactConstraint__setContactManifold_p1(this.ptr, arg0.ptr);
}
btContactConstraint.prototype['getConstraintType'] = function() {
    return _emscripten_bind_btContactConstraint__getConstraintType_p0(this.ptr);
}
btContactConstraint.prototype['getDbgDrawSize'] = function() {
    return _emscripten_bind_btContactConstraint__getDbgDrawSize_p0(this.ptr);
}
btContactConstraint.prototype['internalSetAppliedImpulse'] = function(arg0) {
    _emscripten_bind_btContactConstraint__internalSetAppliedImpulse_p1(this.ptr, arg0);
}
btContactConstraint.prototype['needsFeedback'] = function() {
    return _emscripten_bind_btContactConstraint__needsFeedback_p0(this.ptr);
}
btContactConstraint.prototype['getObjectType'] = function() {
    return _emscripten_bind_btContactConstraint__getObjectType_p0(this.ptr);
}
btContactConstraint.prototype['getUserConstraintPtr'] = function() {
    return _emscripten_bind_btContactConstraint__getUserConstraintPtr_p0(this.ptr);
}
btContactConstraint.prototype['setEnabled'] = function(arg0) {
    _emscripten_bind_btContactConstraint__setEnabled_p1(this.ptr, arg0);
}
btContactConstraint.prototype['getUid'] = function() {
    return _emscripten_bind_btContactConstraint__getUid_p0(this.ptr);
}
btContactConstraint.prototype['setDbgDrawSize'] = function(arg0) {
    _emscripten_bind_btContactConstraint__setDbgDrawSize_p1(this.ptr, arg0);
}
btContactConstraint.prototype['setUserConstraintType'] = function(arg0) {
    _emscripten_bind_btContactConstraint__setUserConstraintType_p1(this.ptr, arg0);
}
btContactConstraint.prototype['internalGetAppliedImpulse'] = function() {
    return _emscripten_bind_btContactConstraint__internalGetAppliedImpulse_p0(this.ptr);
}
btContactConstraint.prototype['__destroy__'] = function() {
    _emscripten_bind_btContactConstraint____destroy___p0(this.ptr);
}
btContactConstraint.prototype['setupSolverConstraint'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btContactConstraint__setupSolverConstraint_p4(this.ptr, arg0, arg1, arg2, arg3);
}
btContactConstraint.prototype['getBreakingImpulseThreshold'] = function() {
    return _emscripten_bind_btContactConstraint__getBreakingImpulseThreshold_p0(this.ptr);
}
btContactConstraint.prototype['getUserConstraintType'] = function() {
    return _emscripten_bind_btContactConstraint__getUserConstraintType_p0(this.ptr);
}
btContactConstraint.prototype['solveConstraintObsolete'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btContactConstraint__solveConstraintObsolete_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btContactConstraint.prototype['getAppliedImpulse'] = function() {
    return _emscripten_bind_btContactConstraint__getAppliedImpulse_p0(this.ptr);
}
btContactConstraint.prototype['setUserConstraintPtr'] = function(arg0) {
    _emscripten_bind_btContactConstraint__setUserConstraintPtr_p1(this.ptr, arg0);
}
btManifoldPoint.prototype['get_m_contactCFM1'] = function() {
    return _emscripten_bind_btManifoldPoint__get_m_contactCFM1_p0(this.ptr);
}
btManifoldPoint.prototype['get_m_contactCFM2'] = function() {
    return _emscripten_bind_btManifoldPoint__get_m_contactCFM2_p0(this.ptr);
}
btManifoldPoint.prototype['set_m_appliedImpulse'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_appliedImpulse_p1(this.ptr, arg0);
}
btManifoldPoint.prototype['set_m_contactCFM1'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_contactCFM1_p1(this.ptr, arg0);
}
btManifoldPoint.prototype['get_m_combinedFriction'] = function() {
    return _emscripten_bind_btManifoldPoint__get_m_combinedFriction_p0(this.ptr);
}
function btManifoldPoint(arg0, arg1, arg2, arg3) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btManifoldPoint__btManifoldPoint_p0();
  else 
    this.ptr = _emscripten_bind_btManifoldPoint__btManifoldPoint_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3);
  btManifoldPoint.prototype.__cache__[this.ptr] = this;
  this.__class__ = btManifoldPoint;
}
btManifoldPoint.prototype.__cache__ = {};
Module['btManifoldPoint'] = btManifoldPoint;
btManifoldPoint.prototype['get_m_partId0'] = function() {
    return _emscripten_bind_btManifoldPoint__get_m_partId0_p0(this.ptr);
}
btManifoldPoint.prototype['get_m_partId1'] = function() {
    return _emscripten_bind_btManifoldPoint__get_m_partId1_p0(this.ptr);
}
btManifoldPoint.prototype['get_m_normalWorldOnB'] = function() {
    return wrapPointer(_emscripten_bind_btManifoldPoint__get_m_normalWorldOnB_p0(this.ptr), Module['btVector3']);
}
btManifoldPoint.prototype['set_m_combinedFriction'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_combinedFriction_p1(this.ptr, arg0);
}
btManifoldPoint.prototype['set_m_lateralFrictionDir1'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_lateralFrictionDir1_p1(this.ptr, arg0.ptr);
}
btManifoldPoint.prototype['get_m_index1'] = function() {
    return _emscripten_bind_btManifoldPoint__get_m_index1_p0(this.ptr);
}
btManifoldPoint.prototype['get_m_index0'] = function() {
    return _emscripten_bind_btManifoldPoint__get_m_index0_p0(this.ptr);
}
btManifoldPoint.prototype['set_m_userPersistentData'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_userPersistentData_p1(this.ptr, arg0);
}
btManifoldPoint.prototype['set_m_contactCFM2'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_contactCFM2_p1(this.ptr, arg0);
}
btManifoldPoint.prototype['get_m_appliedImpulse'] = function() {
    return _emscripten_bind_btManifoldPoint__get_m_appliedImpulse_p0(this.ptr);
}
btManifoldPoint.prototype['get_m_userPersistentData'] = function() {
    return _emscripten_bind_btManifoldPoint__get_m_userPersistentData_p0(this.ptr);
}
btManifoldPoint.prototype['getDistance'] = function() {
    return _emscripten_bind_btManifoldPoint__getDistance_p0(this.ptr);
}
btManifoldPoint.prototype['get_m_lifeTime'] = function() {
    return _emscripten_bind_btManifoldPoint__get_m_lifeTime_p0(this.ptr);
}
btManifoldPoint.prototype['getPositionWorldOnB'] = function() {
    return wrapPointer(_emscripten_bind_btManifoldPoint__getPositionWorldOnB_p0(this.ptr), Module['btVector3']);
}
btManifoldPoint.prototype['getPositionWorldOnA'] = function() {
    return wrapPointer(_emscripten_bind_btManifoldPoint__getPositionWorldOnA_p0(this.ptr), Module['btVector3']);
}
btManifoldPoint.prototype['set_m_partId0'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_partId0_p1(this.ptr, arg0);
}
btManifoldPoint.prototype['set_m_partId1'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_partId1_p1(this.ptr, arg0);
}
btManifoldPoint.prototype['set_m_positionWorldOnA'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_positionWorldOnA_p1(this.ptr, arg0.ptr);
}
btManifoldPoint.prototype['setDistance'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__setDistance_p1(this.ptr, arg0);
}
btManifoldPoint.prototype['set_m_positionWorldOnB'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_positionWorldOnB_p1(this.ptr, arg0.ptr);
}
btManifoldPoint.prototype['get_m_appliedImpulseLateral1'] = function() {
    return _emscripten_bind_btManifoldPoint__get_m_appliedImpulseLateral1_p0(this.ptr);
}
btManifoldPoint.prototype['get_m_appliedImpulseLateral2'] = function() {
    return _emscripten_bind_btManifoldPoint__get_m_appliedImpulseLateral2_p0(this.ptr);
}
btManifoldPoint.prototype['__destroy__'] = function() {
    _emscripten_bind_btManifoldPoint____destroy___p0(this.ptr);
}
btManifoldPoint.prototype['set_m_lateralFrictionInitialized'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_lateralFrictionInitialized_p1(this.ptr, arg0);
}
btManifoldPoint.prototype['getLifeTime'] = function() {
    return _emscripten_bind_btManifoldPoint__getLifeTime_p0(this.ptr);
}
btManifoldPoint.prototype['set_m_index0'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_index0_p1(this.ptr, arg0);
}
btManifoldPoint.prototype['get_m_contactMotion1'] = function() {
    return _emscripten_bind_btManifoldPoint__get_m_contactMotion1_p0(this.ptr);
}
btManifoldPoint.prototype['get_m_contactMotion2'] = function() {
    return _emscripten_bind_btManifoldPoint__get_m_contactMotion2_p0(this.ptr);
}
btManifoldPoint.prototype['set_m_index1'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_index1_p1(this.ptr, arg0);
}
btManifoldPoint.prototype['get_m_lateralFrictionDir1'] = function() {
    return wrapPointer(_emscripten_bind_btManifoldPoint__get_m_lateralFrictionDir1_p0(this.ptr), Module['btVector3']);
}
btManifoldPoint.prototype['set_m_normalWorldOnB'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_normalWorldOnB_p1(this.ptr, arg0.ptr);
}
btManifoldPoint.prototype['set_m_combinedRestitution'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_combinedRestitution_p1(this.ptr, arg0);
}
btManifoldPoint.prototype['get_m_positionWorldOnA'] = function() {
    return wrapPointer(_emscripten_bind_btManifoldPoint__get_m_positionWorldOnA_p0(this.ptr), Module['btVector3']);
}
btManifoldPoint.prototype['get_m_lateralFrictionDir2'] = function() {
    return wrapPointer(_emscripten_bind_btManifoldPoint__get_m_lateralFrictionDir2_p0(this.ptr), Module['btVector3']);
}
btManifoldPoint.prototype['get_m_positionWorldOnB'] = function() {
    return wrapPointer(_emscripten_bind_btManifoldPoint__get_m_positionWorldOnB_p0(this.ptr), Module['btVector3']);
}
btManifoldPoint.prototype['set_m_lateralFrictionDir2'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_lateralFrictionDir2_p1(this.ptr, arg0.ptr);
}
btManifoldPoint.prototype['set_m_appliedImpulseLateral1'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_appliedImpulseLateral1_p1(this.ptr, arg0);
}
btManifoldPoint.prototype['set_m_appliedImpulseLateral2'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_appliedImpulseLateral2_p1(this.ptr, arg0);
}
btManifoldPoint.prototype['get_m_lateralFrictionInitialized'] = function() {
    return _emscripten_bind_btManifoldPoint__get_m_lateralFrictionInitialized_p0(this.ptr);
}
btManifoldPoint.prototype['set_m_localPointB'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_localPointB_p1(this.ptr, arg0.ptr);
}
btManifoldPoint.prototype['set_m_localPointA'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_localPointA_p1(this.ptr, arg0.ptr);
}
btManifoldPoint.prototype['get_m_combinedRestitution'] = function() {
    return _emscripten_bind_btManifoldPoint__get_m_combinedRestitution_p0(this.ptr);
}
btManifoldPoint.prototype['set_m_contactMotion1'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_contactMotion1_p1(this.ptr, arg0);
}
btManifoldPoint.prototype['set_m_contactMotion2'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_contactMotion2_p1(this.ptr, arg0);
}
btManifoldPoint.prototype['get_m_localPointB'] = function() {
    return wrapPointer(_emscripten_bind_btManifoldPoint__get_m_localPointB_p0(this.ptr), Module['btVector3']);
}
btManifoldPoint.prototype['get_m_localPointA'] = function() {
    return wrapPointer(_emscripten_bind_btManifoldPoint__get_m_localPointA_p0(this.ptr), Module['btVector3']);
}
btManifoldPoint.prototype['set_m_distance1'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_distance1_p1(this.ptr, arg0);
}
btManifoldPoint.prototype['get_m_distance1'] = function() {
    return _emscripten_bind_btManifoldPoint__get_m_distance1_p0(this.ptr);
}
btManifoldPoint.prototype['getAppliedImpulse'] = function() {
    return _emscripten_bind_btManifoldPoint__getAppliedImpulse_p0(this.ptr);
}
btManifoldPoint.prototype['set_m_lifeTime'] = function(arg0) {
    _emscripten_bind_btManifoldPoint__set_m_lifeTime_p1(this.ptr, arg0);
}
function btStridingMeshInterface(){ throw "btStridingMeshInterface is abstract!" }
btStridingMeshInterface.prototype.__cache__ = {};
Module['btStridingMeshInterface'] = btStridingMeshInterface;
btStridingMeshInterface.prototype['getLockedReadOnlyVertexIndexBase'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {
  if (arg8 === undefined)
    _emscripten_bind_btStridingMeshInterface__getLockedReadOnlyVertexIndexBase_p8(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
  else 
    _emscripten_bind_btStridingMeshInterface__getLockedReadOnlyVertexIndexBase_p9(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
}
btStridingMeshInterface.prototype['preallocateIndices'] = function(arg0) {
    _emscripten_bind_btStridingMeshInterface__preallocateIndices_p1(this.ptr, arg0);
}
btStridingMeshInterface.prototype['calculateAabbBruteForce'] = function(arg0, arg1) {
    _emscripten_bind_btStridingMeshInterface__calculateAabbBruteForce_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btStridingMeshInterface.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btStridingMeshInterface__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btStridingMeshInterface.prototype['preallocateVertices'] = function(arg0) {
    _emscripten_bind_btStridingMeshInterface__preallocateVertices_p1(this.ptr, arg0);
}
btStridingMeshInterface.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btStridingMeshInterface__calculateSerializeBufferSize_p0(this.ptr);
}
btStridingMeshInterface.prototype['setScaling'] = function(arg0) {
    _emscripten_bind_btStridingMeshInterface__setScaling_p1(this.ptr, arg0.ptr);
}
btStridingMeshInterface.prototype['getScaling'] = function() {
    return wrapPointer(_emscripten_bind_btStridingMeshInterface__getScaling_p0(this.ptr), Module['btVector3']);
}
btStridingMeshInterface.prototype['setPremadeAabb'] = function(arg0, arg1) {
    _emscripten_bind_btStridingMeshInterface__setPremadeAabb_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btStridingMeshInterface.prototype['InternalProcessAllTriangles'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btStridingMeshInterface__InternalProcessAllTriangles_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btStridingMeshInterface.prototype['getPremadeAabb'] = function(arg0, arg1) {
    _emscripten_bind_btStridingMeshInterface__getPremadeAabb_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btStridingMeshInterface.prototype['getNumSubParts'] = function() {
    return _emscripten_bind_btStridingMeshInterface__getNumSubParts_p0(this.ptr);
}
btStridingMeshInterface.prototype['getLockedVertexIndexBase'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {
  if (arg8 === undefined)
    _emscripten_bind_btStridingMeshInterface__getLockedVertexIndexBase_p8(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
  else 
    _emscripten_bind_btStridingMeshInterface__getLockedVertexIndexBase_p9(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
}
btStridingMeshInterface.prototype['hasPremadeAabb'] = function() {
    return _emscripten_bind_btStridingMeshInterface__hasPremadeAabb_p0(this.ptr);
}
btStridingMeshInterface.prototype['unLockVertexBase'] = function(arg0) {
    _emscripten_bind_btStridingMeshInterface__unLockVertexBase_p1(this.ptr, arg0);
}
btStridingMeshInterface.prototype['unLockReadOnlyVertexBase'] = function(arg0) {
    _emscripten_bind_btStridingMeshInterface__unLockReadOnlyVertexBase_p1(this.ptr, arg0);
}
btPoint2PointConstraint.prototype['getRigidBodyB'] = function() {
    return wrapPointer(_emscripten_bind_btPoint2PointConstraint__getRigidBodyB_p0(this.ptr), Module['btRigidBody']);
}
btPoint2PointConstraint.prototype['getInfo2NonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btPoint2PointConstraint__getInfo2NonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btPoint2PointConstraint.prototype['setParam'] = function(arg0, arg1, arg2) {
  if (arg2 === undefined)
    _emscripten_bind_btPoint2PointConstraint__setParam_p2(this.ptr, arg0, arg1);
  else 
    _emscripten_bind_btPoint2PointConstraint__setParam_p3(this.ptr, arg0, arg1, arg2);
}
btPoint2PointConstraint.prototype['getUid'] = function() {
    return _emscripten_bind_btPoint2PointConstraint__getUid_p0(this.ptr);
}
btPoint2PointConstraint.prototype['set_m_objectType'] = function(arg0) {
    _emscripten_bind_btPoint2PointConstraint__set_m_objectType_p1(this.ptr, arg0);
}
btPoint2PointConstraint.prototype['setEnabled'] = function(arg0) {
    _emscripten_bind_btPoint2PointConstraint__setEnabled_p1(this.ptr, arg0);
}
btPoint2PointConstraint.prototype['setUserConstraintId'] = function(arg0) {
    _emscripten_bind_btPoint2PointConstraint__setUserConstraintId_p1(this.ptr, arg0);
}
btPoint2PointConstraint.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btPoint2PointConstraint__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btPoint2PointConstraint.prototype['buildJacobian'] = function() {
    _emscripten_bind_btPoint2PointConstraint__buildJacobian_p0(this.ptr);
}
btPoint2PointConstraint.prototype['getUserConstraintId'] = function() {
    return _emscripten_bind_btPoint2PointConstraint__getUserConstraintId_p0(this.ptr);
}
btPoint2PointConstraint.prototype['get_m_objectType'] = function() {
    return _emscripten_bind_btPoint2PointConstraint__get_m_objectType_p0(this.ptr);
}
btPoint2PointConstraint.prototype['getRigidBodyA'] = function() {
    return wrapPointer(_emscripten_bind_btPoint2PointConstraint__getRigidBodyA_p0(this.ptr), Module['btRigidBody']);
}
btPoint2PointConstraint.prototype['getParam'] = function(arg0, arg1) {
  if (arg1 === undefined)
    return _emscripten_bind_btPoint2PointConstraint__getParam_p1(this.ptr, arg0);
  else 
    return _emscripten_bind_btPoint2PointConstraint__getParam_p2(this.ptr, arg0, arg1);
}
btPoint2PointConstraint.prototype['set_m_useSolveConstraintObsolete'] = function(arg0) {
    _emscripten_bind_btPoint2PointConstraint__set_m_useSolveConstraintObsolete_p1(this.ptr, arg0);
}
function btPoint2PointConstraint(arg0, arg1, arg2, arg3) {
  if (arg2 === undefined)
    this.ptr = _emscripten_bind_btPoint2PointConstraint__btPoint2PointConstraint_p2(arg0.ptr, arg1.ptr);
  else 
    this.ptr = _emscripten_bind_btPoint2PointConstraint__btPoint2PointConstraint_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
  btPoint2PointConstraint.prototype.__cache__[this.ptr] = this;
  this.__class__ = btPoint2PointConstraint;
}
btPoint2PointConstraint.prototype.__cache__ = {};
Module['btPoint2PointConstraint'] = btPoint2PointConstraint;
btPoint2PointConstraint.prototype['getObjectType'] = function() {
    return _emscripten_bind_btPoint2PointConstraint__getObjectType_p0(this.ptr);
}
btPoint2PointConstraint.prototype['getInfo2'] = function(arg0) {
    _emscripten_bind_btPoint2PointConstraint__getInfo2_p1(this.ptr, arg0.ptr);
}
btPoint2PointConstraint.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btPoint2PointConstraint__calculateSerializeBufferSize_p0(this.ptr);
}
btPoint2PointConstraint.prototype['getPivotInA'] = function() {
    return wrapPointer(_emscripten_bind_btPoint2PointConstraint__getPivotInA_p0(this.ptr), Module['btVector3']);
}
btPoint2PointConstraint.prototype['getPivotInB'] = function() {
    return wrapPointer(_emscripten_bind_btPoint2PointConstraint__getPivotInB_p0(this.ptr), Module['btVector3']);
}
btPoint2PointConstraint.prototype['get_m_setting'] = function() {
    return wrapPointer(_emscripten_bind_btPoint2PointConstraint__get_m_setting_p0(this.ptr), Module['btConstraintSetting']);
}
btPoint2PointConstraint.prototype['isEnabled'] = function() {
    return _emscripten_bind_btPoint2PointConstraint__isEnabled_p0(this.ptr);
}
btPoint2PointConstraint.prototype['set_m_setting'] = function(arg0) {
    _emscripten_bind_btPoint2PointConstraint__set_m_setting_p1(this.ptr, arg0.ptr);
}
btPoint2PointConstraint.prototype['getConstraintType'] = function() {
    return _emscripten_bind_btPoint2PointConstraint__getConstraintType_p0(this.ptr);
}
btPoint2PointConstraint.prototype['enableFeedback'] = function(arg0) {
    _emscripten_bind_btPoint2PointConstraint__enableFeedback_p1(this.ptr, arg0);
}
btPoint2PointConstraint.prototype['internalSetAppliedImpulse'] = function(arg0) {
    _emscripten_bind_btPoint2PointConstraint__internalSetAppliedImpulse_p1(this.ptr, arg0);
}
btPoint2PointConstraint.prototype['needsFeedback'] = function() {
    return _emscripten_bind_btPoint2PointConstraint__needsFeedback_p0(this.ptr);
}
btPoint2PointConstraint.prototype['setPivotA'] = function(arg0) {
    _emscripten_bind_btPoint2PointConstraint__setPivotA_p1(this.ptr, arg0.ptr);
}
btPoint2PointConstraint.prototype['getUserConstraintPtr'] = function() {
    return _emscripten_bind_btPoint2PointConstraint__getUserConstraintPtr_p0(this.ptr);
}
btPoint2PointConstraint.prototype['setPivotB'] = function(arg0) {
    _emscripten_bind_btPoint2PointConstraint__setPivotB_p1(this.ptr, arg0.ptr);
}
btPoint2PointConstraint.prototype['getInfo1NonVirtual'] = function(arg0) {
    _emscripten_bind_btPoint2PointConstraint__getInfo1NonVirtual_p1(this.ptr, arg0.ptr);
}
btPoint2PointConstraint.prototype['getInfo1'] = function(arg0) {
    _emscripten_bind_btPoint2PointConstraint__getInfo1_p1(this.ptr, arg0.ptr);
}
btPoint2PointConstraint.prototype['getDbgDrawSize'] = function() {
    return _emscripten_bind_btPoint2PointConstraint__getDbgDrawSize_p0(this.ptr);
}
btPoint2PointConstraint.prototype['setDbgDrawSize'] = function(arg0) {
    _emscripten_bind_btPoint2PointConstraint__setDbgDrawSize_p1(this.ptr, arg0);
}
btPoint2PointConstraint.prototype['setUserConstraintType'] = function(arg0) {
    _emscripten_bind_btPoint2PointConstraint__setUserConstraintType_p1(this.ptr, arg0);
}
btPoint2PointConstraint.prototype['setBreakingImpulseThreshold'] = function(arg0) {
    _emscripten_bind_btPoint2PointConstraint__setBreakingImpulseThreshold_p1(this.ptr, arg0);
}
btPoint2PointConstraint.prototype['internalGetAppliedImpulse'] = function() {
    return _emscripten_bind_btPoint2PointConstraint__internalGetAppliedImpulse_p0(this.ptr);
}
btPoint2PointConstraint.prototype['get_m_useSolveConstraintObsolete'] = function() {
    return _emscripten_bind_btPoint2PointConstraint__get_m_useSolveConstraintObsolete_p0(this.ptr);
}
btPoint2PointConstraint.prototype['__destroy__'] = function() {
    _emscripten_bind_btPoint2PointConstraint____destroy___p0(this.ptr);
}
btPoint2PointConstraint.prototype['setupSolverConstraint'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btPoint2PointConstraint__setupSolverConstraint_p4(this.ptr, arg0, arg1, arg2, arg3);
}
btPoint2PointConstraint.prototype['updateRHS'] = function(arg0) {
    _emscripten_bind_btPoint2PointConstraint__updateRHS_p1(this.ptr, arg0);
}
btPoint2PointConstraint.prototype['getBreakingImpulseThreshold'] = function() {
    return _emscripten_bind_btPoint2PointConstraint__getBreakingImpulseThreshold_p0(this.ptr);
}
btPoint2PointConstraint.prototype['getUserConstraintType'] = function() {
    return _emscripten_bind_btPoint2PointConstraint__getUserConstraintType_p0(this.ptr);
}
btPoint2PointConstraint.prototype['solveConstraintObsolete'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btPoint2PointConstraint__solveConstraintObsolete_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btPoint2PointConstraint.prototype['getAppliedImpulse'] = function() {
    return _emscripten_bind_btPoint2PointConstraint__getAppliedImpulse_p0(this.ptr);
}
btPoint2PointConstraint.prototype['setUserConstraintPtr'] = function(arg0) {
    _emscripten_bind_btPoint2PointConstraint__setUserConstraintPtr_p1(this.ptr, arg0);
}
btCylinderShapeZ.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btCylinderShapeZ__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btCylinderShapeZ.prototype['isCompound'] = function() {
    return _emscripten_bind_btCylinderShapeZ__isCompound_p0(this.ptr);
}
btCylinderShapeZ.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCylinderShapeZ__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCylinderShapeZ.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btCylinderShapeZ__setUserPointer_p1(this.ptr, arg0);
}
btCylinderShapeZ.prototype['getUpAxis'] = function() {
    return _emscripten_bind_btCylinderShapeZ__getUpAxis_p0(this.ptr);
}
btCylinderShapeZ.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btCylinderShapeZ__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btCylinderShapeZ.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btCylinderShapeZ__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btCylinderShapeZ.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btCylinderShapeZ__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btCylinderShapeZ.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btCylinderShapeZ__isPolyhedral_p0(this.ptr);
}
btCylinderShapeZ.prototype['getRadius'] = function() {
    return _emscripten_bind_btCylinderShapeZ__getRadius_p0(this.ptr);
}
btCylinderShapeZ.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCylinderShapeZ__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCylinderShapeZ.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btCylinderShapeZ__calculateSerializeBufferSize_p0(this.ptr);
}
btCylinderShapeZ.prototype['getName'] = function() {
    return _emscripten_bind_btCylinderShapeZ__getName_p0(this.ptr);
}
btCylinderShapeZ.prototype['getLocalScalingNV'] = function() {
    return wrapPointer(_emscripten_bind_btCylinderShapeZ__getLocalScalingNV_p0(this.ptr), Module['btVector3']);
}
btCylinderShapeZ.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCylinderShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCylinderShapeZ.prototype['setImplicitShapeDimensions'] = function(arg0) {
    _emscripten_bind_btCylinderShapeZ__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr);
}
btCylinderShapeZ.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btCylinderShapeZ__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btCylinderShapeZ.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCylinderShapeZ__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCylinderShapeZ.prototype['getMarginNV'] = function() {
    return _emscripten_bind_btCylinderShapeZ__getMarginNV_p0(this.ptr);
}
btCylinderShapeZ.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCylinderShapeZ__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCylinderShapeZ.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btCylinderShapeZ__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btCylinderShapeZ.prototype['isConvex'] = function() {
    return _emscripten_bind_btCylinderShapeZ__isConvex_p0(this.ptr);
}
btCylinderShapeZ.prototype['isInfinite'] = function() {
    return _emscripten_bind_btCylinderShapeZ__isInfinite_p0(this.ptr);
}
btCylinderShapeZ.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btCylinderShapeZ__getUserPointer_p0(this.ptr);
}
btCylinderShapeZ.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btCylinderShapeZ__isNonMoving_p0(this.ptr);
}
btCylinderShapeZ.prototype['getMargin'] = function() {
    return _emscripten_bind_btCylinderShapeZ__getMargin_p0(this.ptr);
}
btCylinderShapeZ.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btCylinderShapeZ__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btCylinderShapeZ.prototype['getHalfExtentsWithoutMargin'] = function() {
    return wrapPointer(_emscripten_bind_btCylinderShapeZ__getHalfExtentsWithoutMargin_p0(this.ptr), Module['btVector3']);
}
btCylinderShapeZ.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btCylinderShapeZ__isConvex2d_p0(this.ptr);
}
btCylinderShapeZ.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCylinderShapeZ__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCylinderShapeZ.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btCylinderShapeZ__isSoftBody_p0(this.ptr);
}
btCylinderShapeZ.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btCylinderShapeZ__getMarginNonVirtual_p0(this.ptr);
}
btCylinderShapeZ.prototype['__destroy__'] = function() {
    _emscripten_bind_btCylinderShapeZ____destroy___p0(this.ptr);
}
btCylinderShapeZ.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCylinderShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btCylinderShapeZ.prototype['getImplicitShapeDimensions'] = function() {
    return wrapPointer(_emscripten_bind_btCylinderShapeZ__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']);
}
btCylinderShapeZ.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btCylinderShapeZ__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btCylinderShapeZ.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btCylinderShapeZ__getAngularMotionDisc_p0(this.ptr);
}
btCylinderShapeZ.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btCylinderShapeZ__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btCylinderShapeZ.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCylinderShapeZ__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
function btCylinderShapeZ(arg0) {
    this.ptr = _emscripten_bind_btCylinderShapeZ__btCylinderShapeZ_p1(arg0.ptr);
  btCylinderShapeZ.prototype.__cache__[this.ptr] = this;
  this.__class__ = btCylinderShapeZ;
}
btCylinderShapeZ.prototype.__cache__ = {};
Module['btCylinderShapeZ'] = btCylinderShapeZ;
btCylinderShapeZ.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btCylinderShapeZ__setMargin_p1(this.ptr, arg0);
}
btCylinderShapeZ.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btCylinderShapeZ__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btCylinderShapeZ.prototype['getHalfExtentsWithMargin'] = function() {
    return wrapPointer(_emscripten_bind_btCylinderShapeZ__getHalfExtentsWithMargin_p0(this.ptr), Module['btVector3']);
}
btCylinderShapeZ.prototype['isConcave'] = function() {
    return _emscripten_bind_btCylinderShapeZ__isConcave_p0(this.ptr);
}
btCylinderShapeZ.prototype['getShapeType'] = function() {
    return _emscripten_bind_btCylinderShapeZ__getShapeType_p0(this.ptr);
}
btBvhSubtreeInfo.prototype['get_m_subtreeSize'] = function() {
    return _emscripten_bind_btBvhSubtreeInfo__get_m_subtreeSize_p0(this.ptr);
}
btBvhSubtreeInfo.prototype['get_m_rootNodeIndex'] = function() {
    return _emscripten_bind_btBvhSubtreeInfo__get_m_rootNodeIndex_p0(this.ptr);
}
btBvhSubtreeInfo.prototype['__destroy__'] = function() {
    _emscripten_bind_btBvhSubtreeInfo____destroy___p0(this.ptr);
}
btBvhSubtreeInfo.prototype['set_m_rootNodeIndex'] = function(arg0) {
    _emscripten_bind_btBvhSubtreeInfo__set_m_rootNodeIndex_p1(this.ptr, arg0);
}
btBvhSubtreeInfo.prototype['setAabbFromQuantizeNode'] = function(arg0) {
    _emscripten_bind_btBvhSubtreeInfo__setAabbFromQuantizeNode_p1(this.ptr, arg0.ptr);
}
function btBvhSubtreeInfo() {
    this.ptr = _emscripten_bind_btBvhSubtreeInfo__btBvhSubtreeInfo_p0();
  btBvhSubtreeInfo.prototype.__cache__[this.ptr] = this;
  this.__class__ = btBvhSubtreeInfo;
}
btBvhSubtreeInfo.prototype.__cache__ = {};
Module['btBvhSubtreeInfo'] = btBvhSubtreeInfo;
btBvhSubtreeInfo.prototype['set_m_subtreeSize'] = function(arg0) {
    _emscripten_bind_btBvhSubtreeInfo__set_m_subtreeSize_p1(this.ptr, arg0);
}
function btMotionState(){ throw "btMotionState is abstract!" }
btMotionState.prototype.__cache__ = {};
Module['btMotionState'] = btMotionState;
btMotionState.prototype['setWorldTransform'] = function(arg0) {
    _emscripten_bind_btMotionState__setWorldTransform_p1(this.ptr, arg0.ptr);
}
btMotionState.prototype['getWorldTransform'] = function(arg0) {
    _emscripten_bind_btMotionState__getWorldTransform_p1(this.ptr, arg0.ptr);
}
ClosestConvexResultCallback.prototype['get_m_convexToWorld'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_convexToWorld_p0(this.ptr), Module['btVector3']);
}
ClosestConvexResultCallback.prototype['__destroy__'] = function() {
    _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback____destroy___p0(this.ptr);
}
ClosestConvexResultCallback.prototype['set_m_collisionFilterGroup'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_collisionFilterGroup_p1(this.ptr, arg0);
}
ClosestConvexResultCallback.prototype['needsCollision'] = function(arg0) {
    return _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__needsCollision_p1(this.ptr, arg0.ptr);
}
ClosestConvexResultCallback.prototype['set_m_closestHitFraction'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_closestHitFraction_p1(this.ptr, arg0);
}
ClosestConvexResultCallback.prototype['get_m_closestHitFraction'] = function() {
    return _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_closestHitFraction_p0(this.ptr);
}
ClosestConvexResultCallback.prototype['get_m_hitCollisionObject'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitCollisionObject_p0(this.ptr), Module['btCollisionObject']);
}
ClosestConvexResultCallback.prototype['addSingleResult'] = function(arg0, arg1) {
    return _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__addSingleResult_p2(this.ptr, arg0.ptr, arg1);
}
ClosestConvexResultCallback.prototype['set_m_hitCollisionObject'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitCollisionObject_p1(this.ptr, arg0.ptr);
}
ClosestConvexResultCallback.prototype['get_m_hitNormalWorld'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitNormalWorld_p0(this.ptr), Module['btVector3']);
}
ClosestConvexResultCallback.prototype['get_m_hitPointWorld'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitPointWorld_p0(this.ptr), Module['btVector3']);
}
ClosestConvexResultCallback.prototype['get_m_collisionFilterMask'] = function() {
    return _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_collisionFilterMask_p0(this.ptr);
}
ClosestConvexResultCallback.prototype['hasHit'] = function() {
    return _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__hasHit_p0(this.ptr);
}
ClosestConvexResultCallback.prototype['set_m_hitPointWorld'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitPointWorld_p1(this.ptr, arg0.ptr);
}
ClosestConvexResultCallback.prototype['set_m_convexToWorld'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_convexToWorld_p1(this.ptr, arg0.ptr);
}
function ClosestConvexResultCallback(arg0, arg1) {
    this.ptr = _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__ClosestConvexResultCallback_p2(arg0.ptr, arg1.ptr);
  ClosestConvexResultCallback.prototype.__cache__[this.ptr] = this;
  this.__class__ = ClosestConvexResultCallback;
}
ClosestConvexResultCallback.prototype.__cache__ = {};
Module['ClosestConvexResultCallback'] = ClosestConvexResultCallback;
ClosestConvexResultCallback.prototype['set_m_hitNormalWorld'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitNormalWorld_p1(this.ptr, arg0.ptr);
}
ClosestConvexResultCallback.prototype['get_m_convexFromWorld'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_convexFromWorld_p0(this.ptr), Module['btVector3']);
}
ClosestConvexResultCallback.prototype['get_m_collisionFilterGroup'] = function() {
    return _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_collisionFilterGroup_p0(this.ptr);
}
ClosestConvexResultCallback.prototype['set_m_convexFromWorld'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_convexFromWorld_p1(this.ptr, arg0.ptr);
}
ClosestConvexResultCallback.prototype['set_m_collisionFilterMask'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_collisionFilterMask_p1(this.ptr, arg0);
}
btConvexSeparatingDistanceUtil.prototype['updateSeparatingDistance'] = function(arg0, arg1) {
    _emscripten_bind_btConvexSeparatingDistanceUtil__updateSeparatingDistance_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btConvexSeparatingDistanceUtil.prototype['__destroy__'] = function() {
    _emscripten_bind_btConvexSeparatingDistanceUtil____destroy___p0(this.ptr);
}
function btConvexSeparatingDistanceUtil(arg0, arg1) {
    this.ptr = _emscripten_bind_btConvexSeparatingDistanceUtil__btConvexSeparatingDistanceUtil_p2(arg0, arg1);
  btConvexSeparatingDistanceUtil.prototype.__cache__[this.ptr] = this;
  this.__class__ = btConvexSeparatingDistanceUtil;
}
btConvexSeparatingDistanceUtil.prototype.__cache__ = {};
Module['btConvexSeparatingDistanceUtil'] = btConvexSeparatingDistanceUtil;
btConvexSeparatingDistanceUtil.prototype['getConservativeSeparatingDistance'] = function() {
    return _emscripten_bind_btConvexSeparatingDistanceUtil__getConservativeSeparatingDistance_p0(this.ptr);
}
btConvexSeparatingDistanceUtil.prototype['initSeparatingDistance'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btConvexSeparatingDistanceUtil__initSeparatingDistance_p4(this.ptr, arg0.ptr, arg1, arg2.ptr, arg3.ptr);
}
btGeneric6DofSpringConstraint.prototype['getRigidBodyB'] = function() {
    return wrapPointer(_emscripten_bind_btGeneric6DofSpringConstraint__getRigidBodyB_p0(this.ptr), Module['btRigidBody']);
}
btGeneric6DofSpringConstraint.prototype['buildJacobian'] = function() {
    _emscripten_bind_btGeneric6DofSpringConstraint__buildJacobian_p0(this.ptr);
}
btGeneric6DofSpringConstraint.prototype['setParam'] = function(arg0, arg1, arg2) {
  if (arg2 === undefined)
    _emscripten_bind_btGeneric6DofSpringConstraint__setParam_p2(this.ptr, arg0, arg1);
  else 
    _emscripten_bind_btGeneric6DofSpringConstraint__setParam_p3(this.ptr, arg0, arg1, arg2);
}
btGeneric6DofSpringConstraint.prototype['getUid'] = function() {
    return _emscripten_bind_btGeneric6DofSpringConstraint__getUid_p0(this.ptr);
}
btGeneric6DofSpringConstraint.prototype['set_m_objectType'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__set_m_objectType_p1(this.ptr, arg0);
}
btGeneric6DofSpringConstraint.prototype['setEnabled'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__setEnabled_p1(this.ptr, arg0);
}
btGeneric6DofSpringConstraint.prototype['getFrameOffsetA'] = function() {
    return wrapPointer(_emscripten_bind_btGeneric6DofSpringConstraint__getFrameOffsetA_p0(this.ptr), Module['btTransform']);
}
btGeneric6DofSpringConstraint.prototype['getRelativePivotPosition'] = function(arg0) {
    return _emscripten_bind_btGeneric6DofSpringConstraint__getRelativePivotPosition_p1(this.ptr, arg0);
}
btGeneric6DofSpringConstraint.prototype['getFrameOffsetB'] = function() {
    return wrapPointer(_emscripten_bind_btGeneric6DofSpringConstraint__getFrameOffsetB_p0(this.ptr), Module['btTransform']);
}
btGeneric6DofSpringConstraint.prototype['getInfo2NonVirtual'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
    _emscripten_bind_btGeneric6DofSpringConstraint__getInfo2NonVirtual_p7(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr);
}
btGeneric6DofSpringConstraint.prototype['getCalculatedTransformA'] = function() {
    return wrapPointer(_emscripten_bind_btGeneric6DofSpringConstraint__getCalculatedTransformA_p0(this.ptr), Module['btTransform']);
}
btGeneric6DofSpringConstraint.prototype['getUserConstraintId'] = function() {
    return _emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintId_p0(this.ptr);
}
btGeneric6DofSpringConstraint.prototype['get_m_objectType'] = function() {
    return _emscripten_bind_btGeneric6DofSpringConstraint__get_m_objectType_p0(this.ptr);
}
btGeneric6DofSpringConstraint.prototype['getRigidBodyA'] = function() {
    return wrapPointer(_emscripten_bind_btGeneric6DofSpringConstraint__getRigidBodyA_p0(this.ptr), Module['btRigidBody']);
}
btGeneric6DofSpringConstraint.prototype['getBreakingImpulseThreshold'] = function() {
    return _emscripten_bind_btGeneric6DofSpringConstraint__getBreakingImpulseThreshold_p0(this.ptr);
}
btGeneric6DofSpringConstraint.prototype['getParam'] = function(arg0, arg1) {
  if (arg1 === undefined)
    return _emscripten_bind_btGeneric6DofSpringConstraint__getParam_p1(this.ptr, arg0);
  else 
    return _emscripten_bind_btGeneric6DofSpringConstraint__getParam_p2(this.ptr, arg0, arg1);
}
btGeneric6DofSpringConstraint.prototype['setDamping'] = function(arg0, arg1) {
    _emscripten_bind_btGeneric6DofSpringConstraint__setDamping_p2(this.ptr, arg0, arg1);
}
btGeneric6DofSpringConstraint.prototype['getInfo1'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__getInfo1_p1(this.ptr, arg0.ptr);
}
btGeneric6DofSpringConstraint.prototype['getInfo2'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__getInfo2_p1(this.ptr, arg0.ptr);
}
btGeneric6DofSpringConstraint.prototype['calcAnchorPos'] = function() {
    _emscripten_bind_btGeneric6DofSpringConstraint__calcAnchorPos_p0(this.ptr);
}
btGeneric6DofSpringConstraint.prototype['getAngularLowerLimit'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__getAngularLowerLimit_p1(this.ptr, arg0.ptr);
}
function btGeneric6DofSpringConstraint(arg0, arg1, arg2, arg3, arg4) {
    this.ptr = _emscripten_bind_btGeneric6DofSpringConstraint__btGeneric6DofSpringConstraint_p5(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4);
  btGeneric6DofSpringConstraint.prototype.__cache__[this.ptr] = this;
  this.__class__ = btGeneric6DofSpringConstraint;
}
btGeneric6DofSpringConstraint.prototype.__cache__ = {};
Module['btGeneric6DofSpringConstraint'] = btGeneric6DofSpringConstraint;
btGeneric6DofSpringConstraint.prototype['setEquilibriumPoint'] = function(arg0, arg1) {
  if (arg0 === undefined)
    _emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p0(this.ptr);
  else   if (arg1 === undefined)
    _emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p1(this.ptr, arg0);
  else 
    _emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p2(this.ptr, arg0, arg1);
}
btGeneric6DofSpringConstraint.prototype['getAxis'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btGeneric6DofSpringConstraint__getAxis_p1(this.ptr, arg0), Module['btVector3']);
}
btGeneric6DofSpringConstraint.prototype['internalGetAppliedImpulse'] = function() {
    return _emscripten_bind_btGeneric6DofSpringConstraint__internalGetAppliedImpulse_p0(this.ptr);
}
btGeneric6DofSpringConstraint.prototype['isEnabled'] = function() {
    return _emscripten_bind_btGeneric6DofSpringConstraint__isEnabled_p0(this.ptr);
}
btGeneric6DofSpringConstraint.prototype['setUserConstraintId'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintId_p1(this.ptr, arg0);
}
btGeneric6DofSpringConstraint.prototype['getLinearUpperLimit'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__getLinearUpperLimit_p1(this.ptr, arg0.ptr);
}
btGeneric6DofSpringConstraint.prototype['getConstraintType'] = function() {
    return _emscripten_bind_btGeneric6DofSpringConstraint__getConstraintType_p0(this.ptr);
}
btGeneric6DofSpringConstraint.prototype['enableFeedback'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__enableFeedback_p1(this.ptr, arg0);
}
btGeneric6DofSpringConstraint.prototype['setUseFrameOffset'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__setUseFrameOffset_p1(this.ptr, arg0);
}
btGeneric6DofSpringConstraint.prototype['needsFeedback'] = function() {
    return _emscripten_bind_btGeneric6DofSpringConstraint__needsFeedback_p0(this.ptr);
}
btGeneric6DofSpringConstraint.prototype['getObjectType'] = function() {
    return _emscripten_bind_btGeneric6DofSpringConstraint__getObjectType_p0(this.ptr);
}
btGeneric6DofSpringConstraint.prototype['getRotationalLimitMotor'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btGeneric6DofSpringConstraint__getRotationalLimitMotor_p1(this.ptr, arg0), Module['btRotationalLimitMotor']);
}
btGeneric6DofSpringConstraint.prototype['getInfo1NonVirtual'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__getInfo1NonVirtual_p1(this.ptr, arg0.ptr);
}
btGeneric6DofSpringConstraint.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btGeneric6DofSpringConstraint__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btGeneric6DofSpringConstraint.prototype['setLinearLowerLimit'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__setLinearLowerLimit_p1(this.ptr, arg0.ptr);
}
btGeneric6DofSpringConstraint.prototype['getDbgDrawSize'] = function() {
    return _emscripten_bind_btGeneric6DofSpringConstraint__getDbgDrawSize_p0(this.ptr);
}
btGeneric6DofSpringConstraint.prototype['getLinearLowerLimit'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__getLinearLowerLimit_p1(this.ptr, arg0.ptr);
}
btGeneric6DofSpringConstraint.prototype['setDbgDrawSize'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__setDbgDrawSize_p1(this.ptr, arg0);
}
btGeneric6DofSpringConstraint.prototype['isLimited'] = function(arg0) {
    return _emscripten_bind_btGeneric6DofSpringConstraint__isLimited_p1(this.ptr, arg0);
}
btGeneric6DofSpringConstraint.prototype['getUseFrameOffset'] = function() {
    return _emscripten_bind_btGeneric6DofSpringConstraint__getUseFrameOffset_p0(this.ptr);
}
btGeneric6DofSpringConstraint.prototype['setUserConstraintType'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintType_p1(this.ptr, arg0);
}
btGeneric6DofSpringConstraint.prototype['enableSpring'] = function(arg0, arg1) {
    _emscripten_bind_btGeneric6DofSpringConstraint__enableSpring_p2(this.ptr, arg0, arg1);
}
btGeneric6DofSpringConstraint.prototype['getCalculatedTransformB'] = function() {
    return wrapPointer(_emscripten_bind_btGeneric6DofSpringConstraint__getCalculatedTransformB_p0(this.ptr), Module['btTransform']);
}
btGeneric6DofSpringConstraint.prototype['calculateTransforms'] = function(arg0, arg1) {
  if (arg0 === undefined)
    _emscripten_bind_btGeneric6DofSpringConstraint__calculateTransforms_p0(this.ptr);
  else 
    _emscripten_bind_btGeneric6DofSpringConstraint__calculateTransforms_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btGeneric6DofSpringConstraint.prototype['internalSetAppliedImpulse'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__internalSetAppliedImpulse_p1(this.ptr, arg0);
}
btGeneric6DofSpringConstraint.prototype['setBreakingImpulseThreshold'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__setBreakingImpulseThreshold_p1(this.ptr, arg0);
}
btGeneric6DofSpringConstraint.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btGeneric6DofSpringConstraint__calculateSerializeBufferSize_p0(this.ptr);
}
btGeneric6DofSpringConstraint.prototype['get_limit_motor_info2'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11) {
  if (arg11 === undefined)
    return _emscripten_bind_btGeneric6DofSpringConstraint__get_limit_motor_info2_p11(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7.ptr, arg8, arg9.ptr, arg10);
  else 
    return _emscripten_bind_btGeneric6DofSpringConstraint__get_limit_motor_info2_p12(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7.ptr, arg8, arg9.ptr, arg10, arg11);
}
btGeneric6DofSpringConstraint.prototype['get_m_useSolveConstraintObsolete'] = function() {
    return _emscripten_bind_btGeneric6DofSpringConstraint__get_m_useSolveConstraintObsolete_p0(this.ptr);
}
btGeneric6DofSpringConstraint.prototype['getAppliedImpulse'] = function() {
    return _emscripten_bind_btGeneric6DofSpringConstraint__getAppliedImpulse_p0(this.ptr);
}
btGeneric6DofSpringConstraint.prototype['setLimit'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btGeneric6DofSpringConstraint__setLimit_p3(this.ptr, arg0, arg1, arg2);
}
btGeneric6DofSpringConstraint.prototype['set_m_useSolveConstraintObsolete'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__set_m_useSolveConstraintObsolete_p1(this.ptr, arg0);
}
btGeneric6DofSpringConstraint.prototype['getTranslationalLimitMotor'] = function() {
    return wrapPointer(_emscripten_bind_btGeneric6DofSpringConstraint__getTranslationalLimitMotor_p0(this.ptr), Module['btTranslationalLimitMotor']);
}
btGeneric6DofSpringConstraint.prototype['__destroy__'] = function() {
    _emscripten_bind_btGeneric6DofSpringConstraint____destroy___p0(this.ptr);
}
btGeneric6DofSpringConstraint.prototype['setupSolverConstraint'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btGeneric6DofSpringConstraint__setupSolverConstraint_p4(this.ptr, arg0, arg1, arg2, arg3);
}
btGeneric6DofSpringConstraint.prototype['getAngle'] = function(arg0) {
    return _emscripten_bind_btGeneric6DofSpringConstraint__getAngle_p1(this.ptr, arg0);
}
btGeneric6DofSpringConstraint.prototype['updateRHS'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__updateRHS_p1(this.ptr, arg0);
}
btGeneric6DofSpringConstraint.prototype['getAngularUpperLimit'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__getAngularUpperLimit_p1(this.ptr, arg0.ptr);
}
btGeneric6DofSpringConstraint.prototype['setAngularLowerLimit'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__setAngularLowerLimit_p1(this.ptr, arg0.ptr);
}
btGeneric6DofSpringConstraint.prototype['getUserConstraintType'] = function() {
    return _emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintType_p0(this.ptr);
}
btGeneric6DofSpringConstraint.prototype['solveConstraintObsolete'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btGeneric6DofSpringConstraint__solveConstraintObsolete_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btGeneric6DofSpringConstraint.prototype['setStiffness'] = function(arg0, arg1) {
    _emscripten_bind_btGeneric6DofSpringConstraint__setStiffness_p2(this.ptr, arg0, arg1);
}
btGeneric6DofSpringConstraint.prototype['getUserConstraintPtr'] = function() {
    return _emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintPtr_p0(this.ptr);
}
btGeneric6DofSpringConstraint.prototype['setFrames'] = function(arg0, arg1) {
    _emscripten_bind_btGeneric6DofSpringConstraint__setFrames_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btGeneric6DofSpringConstraint.prototype['setLinearUpperLimit'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__setLinearUpperLimit_p1(this.ptr, arg0.ptr);
}
btGeneric6DofSpringConstraint.prototype['setAngularUpperLimit'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__setAngularUpperLimit_p1(this.ptr, arg0.ptr);
}
btGeneric6DofSpringConstraint.prototype['setAxis'] = function(arg0, arg1) {
    _emscripten_bind_btGeneric6DofSpringConstraint__setAxis_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btGeneric6DofSpringConstraint.prototype['setUserConstraintPtr'] = function(arg0) {
    _emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintPtr_p1(this.ptr, arg0);
}
btGeneric6DofSpringConstraint.prototype['testAngularLimitMotor'] = function(arg0) {
    return _emscripten_bind_btGeneric6DofSpringConstraint__testAngularLimitMotor_p1(this.ptr, arg0);
}
btBroadphaseProxy.prototype['get_m_clientObject'] = function() {
    return _emscripten_bind_btBroadphaseProxy__get_m_clientObject_p0(this.ptr);
}
btBroadphaseProxy.prototype['isInfinite'] = function(arg0) {
    return _emscripten_bind_btBroadphaseProxy__isInfinite_p1(arg0);
}
btBroadphaseProxy.prototype['set_m_clientObject'] = function(arg0) {
    _emscripten_bind_btBroadphaseProxy__set_m_clientObject_p1(this.ptr, arg0);
}
btBroadphaseProxy.prototype['set_m_multiSapParentProxy'] = function(arg0) {
    _emscripten_bind_btBroadphaseProxy__set_m_multiSapParentProxy_p1(this.ptr, arg0);
}
function btBroadphaseProxy(arg0, arg1, arg2, arg3, arg4, arg5) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p0();
  else   if (arg5 === undefined)
    this.ptr = _emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p5(arg0.ptr, arg1.ptr, arg2, arg3, arg4);
  else 
    this.ptr = _emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p6(arg0.ptr, arg1.ptr, arg2, arg3, arg4, arg5);
  btBroadphaseProxy.prototype.__cache__[this.ptr] = this;
  this.__class__ = btBroadphaseProxy;
}
btBroadphaseProxy.prototype.__cache__ = {};
Module['btBroadphaseProxy'] = btBroadphaseProxy;
btBroadphaseProxy.prototype['isCompound'] = function(arg0) {
    return _emscripten_bind_btBroadphaseProxy__isCompound_p1(arg0);
}
btBroadphaseProxy.prototype['isPolyhedral'] = function(arg0) {
    return _emscripten_bind_btBroadphaseProxy__isPolyhedral_p1(arg0);
}
btBroadphaseProxy.prototype['get_m_aabbMin'] = function() {
    return wrapPointer(_emscripten_bind_btBroadphaseProxy__get_m_aabbMin_p0(this.ptr), Module['btVector3']);
}
btBroadphaseProxy.prototype['set_m_uniqueId'] = function(arg0) {
    _emscripten_bind_btBroadphaseProxy__set_m_uniqueId_p1(this.ptr, arg0);
}
btBroadphaseProxy.prototype['isConvex'] = function(arg0) {
    return _emscripten_bind_btBroadphaseProxy__isConvex_p1(arg0);
}
btBroadphaseProxy.prototype['get_m_collisionFilterMask'] = function() {
    return _emscripten_bind_btBroadphaseProxy__get_m_collisionFilterMask_p0(this.ptr);
}
btBroadphaseProxy.prototype['getUid'] = function() {
    return _emscripten_bind_btBroadphaseProxy__getUid_p0(this.ptr);
}
btBroadphaseProxy.prototype['get_m_aabbMax'] = function() {
    return wrapPointer(_emscripten_bind_btBroadphaseProxy__get_m_aabbMax_p0(this.ptr), Module['btVector3']);
}
btBroadphaseProxy.prototype['isNonMoving'] = function(arg0) {
    return _emscripten_bind_btBroadphaseProxy__isNonMoving_p1(arg0);
}
btBroadphaseProxy.prototype['set_m_aabbMin'] = function(arg0) {
    _emscripten_bind_btBroadphaseProxy__set_m_aabbMin_p1(this.ptr, arg0.ptr);
}
btBroadphaseProxy.prototype['set_m_collisionFilterGroup'] = function(arg0) {
    _emscripten_bind_btBroadphaseProxy__set_m_collisionFilterGroup_p1(this.ptr, arg0);
}
btBroadphaseProxy.prototype['isConvex2d'] = function(arg0) {
    return _emscripten_bind_btBroadphaseProxy__isConvex2d_p1(arg0);
}
btBroadphaseProxy.prototype['isSoftBody'] = function(arg0) {
    return _emscripten_bind_btBroadphaseProxy__isSoftBody_p1(arg0);
}
btBroadphaseProxy.prototype['set_m_aabbMax'] = function(arg0) {
    _emscripten_bind_btBroadphaseProxy__set_m_aabbMax_p1(this.ptr, arg0.ptr);
}
btBroadphaseProxy.prototype['__destroy__'] = function() {
    _emscripten_bind_btBroadphaseProxy____destroy___p0(this.ptr);
}
btBroadphaseProxy.prototype['get_m_uniqueId'] = function() {
    return _emscripten_bind_btBroadphaseProxy__get_m_uniqueId_p0(this.ptr);
}
btBroadphaseProxy.prototype['set_m_collisionFilterMask'] = function(arg0) {
    _emscripten_bind_btBroadphaseProxy__set_m_collisionFilterMask_p1(this.ptr, arg0);
}
btBroadphaseProxy.prototype['isConcave'] = function(arg0) {
    return _emscripten_bind_btBroadphaseProxy__isConcave_p1(arg0);
}
btBroadphaseProxy.prototype['get_m_multiSapParentProxy'] = function() {
    return _emscripten_bind_btBroadphaseProxy__get_m_multiSapParentProxy_p0(this.ptr);
}
btBroadphaseProxy.prototype['get_m_collisionFilterGroup'] = function() {
    return _emscripten_bind_btBroadphaseProxy__get_m_collisionFilterGroup_p0(this.ptr);
}
btTriangleIndexVertexArray.prototype['getLockedReadOnlyVertexIndexBase'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {
  if (arg8 === undefined)
    _emscripten_bind_btTriangleIndexVertexArray__getLockedReadOnlyVertexIndexBase_p8(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
  else 
    _emscripten_bind_btTriangleIndexVertexArray__getLockedReadOnlyVertexIndexBase_p9(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
}
btTriangleIndexVertexArray.prototype['preallocateIndices'] = function(arg0) {
    _emscripten_bind_btTriangleIndexVertexArray__preallocateIndices_p1(this.ptr, arg0);
}
btTriangleIndexVertexArray.prototype['calculateAabbBruteForce'] = function(arg0, arg1) {
    _emscripten_bind_btTriangleIndexVertexArray__calculateAabbBruteForce_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btTriangleIndexVertexArray.prototype['__destroy__'] = function() {
    _emscripten_bind_btTriangleIndexVertexArray____destroy___p0(this.ptr);
}
btTriangleIndexVertexArray.prototype['preallocateVertices'] = function(arg0) {
    _emscripten_bind_btTriangleIndexVertexArray__preallocateVertices_p1(this.ptr, arg0);
}
btTriangleIndexVertexArray.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btTriangleIndexVertexArray__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btTriangleIndexVertexArray.prototype['getIndexedMeshArray'] = function() {
    return _emscripten_bind_btTriangleIndexVertexArray__getIndexedMeshArray_p0(this.ptr);
}
function btTriangleIndexVertexArray(arg0, arg1, arg2, arg3, arg4, arg5) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btTriangleIndexVertexArray__btTriangleIndexVertexArray_p0();
  else 
    this.ptr = _emscripten_bind_btTriangleIndexVertexArray__btTriangleIndexVertexArray_p6(arg0, arg1, arg2, arg3, arg4, arg5);
  btTriangleIndexVertexArray.prototype.__cache__[this.ptr] = this;
  this.__class__ = btTriangleIndexVertexArray;
}
btTriangleIndexVertexArray.prototype.__cache__ = {};
Module['btTriangleIndexVertexArray'] = btTriangleIndexVertexArray;
btTriangleIndexVertexArray.prototype['setScaling'] = function(arg0) {
    _emscripten_bind_btTriangleIndexVertexArray__setScaling_p1(this.ptr, arg0.ptr);
}
btTriangleIndexVertexArray.prototype['getScaling'] = function() {
    return wrapPointer(_emscripten_bind_btTriangleIndexVertexArray__getScaling_p0(this.ptr), Module['btVector3']);
}
btTriangleIndexVertexArray.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btTriangleIndexVertexArray__calculateSerializeBufferSize_p0(this.ptr);
}
btTriangleIndexVertexArray.prototype['setPremadeAabb'] = function(arg0, arg1) {
    _emscripten_bind_btTriangleIndexVertexArray__setPremadeAabb_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btTriangleIndexVertexArray.prototype['InternalProcessAllTriangles'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btTriangleIndexVertexArray__InternalProcessAllTriangles_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btTriangleIndexVertexArray.prototype['getPremadeAabb'] = function(arg0, arg1) {
    _emscripten_bind_btTriangleIndexVertexArray__getPremadeAabb_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btTriangleIndexVertexArray.prototype['addIndexedMesh'] = function(arg0, arg1) {
  if (arg1 === undefined)
    _emscripten_bind_btTriangleIndexVertexArray__addIndexedMesh_p1(this.ptr, arg0.ptr);
  else 
    _emscripten_bind_btTriangleIndexVertexArray__addIndexedMesh_p2(this.ptr, arg0.ptr, arg1);
}
btTriangleIndexVertexArray.prototype['getNumSubParts'] = function() {
    return _emscripten_bind_btTriangleIndexVertexArray__getNumSubParts_p0(this.ptr);
}
btTriangleIndexVertexArray.prototype['getLockedVertexIndexBase'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {
  if (arg8 === undefined)
    _emscripten_bind_btTriangleIndexVertexArray__getLockedVertexIndexBase_p8(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
  else 
    _emscripten_bind_btTriangleIndexVertexArray__getLockedVertexIndexBase_p9(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
}
btTriangleIndexVertexArray.prototype['hasPremadeAabb'] = function() {
    return _emscripten_bind_btTriangleIndexVertexArray__hasPremadeAabb_p0(this.ptr);
}
btTriangleIndexVertexArray.prototype['unLockVertexBase'] = function(arg0) {
    _emscripten_bind_btTriangleIndexVertexArray__unLockVertexBase_p1(this.ptr, arg0);
}
btTriangleIndexVertexArray.prototype['unLockReadOnlyVertexBase'] = function(arg0) {
    _emscripten_bind_btTriangleIndexVertexArray__unLockReadOnlyVertexBase_p1(this.ptr, arg0);
}
btBoxShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btBoxShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btBoxShape.prototype['getNumPlanes'] = function() {
    return _emscripten_bind_btBoxShape__getNumPlanes_p0(this.ptr);
}
btBoxShape.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btBoxShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btBoxShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btBoxShape__setUserPointer_p1(this.ptr, arg0);
}
btBoxShape.prototype['isInside'] = function(arg0, arg1) {
    return _emscripten_bind_btBoxShape__isInside_p2(this.ptr, arg0.ptr, arg1);
}
btBoxShape.prototype['getNumVertices'] = function() {
    return _emscripten_bind_btBoxShape__getNumVertices_p0(this.ptr);
}
btBoxShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btBoxShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btBoxShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btBoxShape__isPolyhedral_p0(this.ptr);
}
btBoxShape.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btBoxShape__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btBoxShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btBoxShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btBoxShape.prototype['getVertex'] = function(arg0, arg1) {
    _emscripten_bind_btBoxShape__getVertex_p2(this.ptr, arg0, arg1.ptr);
}
btBoxShape.prototype['getPlaneEquation'] = function(arg0, arg1) {
    _emscripten_bind_btBoxShape__getPlaneEquation_p2(this.ptr, arg0.ptr, arg1);
}
btBoxShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btBoxShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btBoxShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btBoxShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btBoxShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btBoxShape__calculateSerializeBufferSize_p0(this.ptr);
}
btBoxShape.prototype['getNumEdges'] = function() {
    return _emscripten_bind_btBoxShape__getNumEdges_p0(this.ptr);
}
btBoxShape.prototype['getName'] = function() {
    return _emscripten_bind_btBoxShape__getName_p0(this.ptr);
}
btBoxShape.prototype['getEdge'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btBoxShape__getEdge_p3(this.ptr, arg0, arg1.ptr, arg2.ptr);
}
btBoxShape.prototype['getLocalScalingNV'] = function() {
    return wrapPointer(_emscripten_bind_btBoxShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']);
}
function btBoxShape(arg0) {
    this.ptr = _emscripten_bind_btBoxShape__btBoxShape_p1(arg0.ptr);
  btBoxShape.prototype.__cache__[this.ptr] = this;
  this.__class__ = btBoxShape;
}
btBoxShape.prototype.__cache__ = {};
Module['btBoxShape'] = btBoxShape;
btBoxShape.prototype['setImplicitShapeDimensions'] = function(arg0) {
    _emscripten_bind_btBoxShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr);
}
btBoxShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btBoxShape__isCompound_p0(this.ptr);
}
btBoxShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btBoxShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btBoxShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btBoxShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btBoxShape.prototype['getMarginNV'] = function() {
    return _emscripten_bind_btBoxShape__getMarginNV_p0(this.ptr);
}
btBoxShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btBoxShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btBoxShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btBoxShape__isConvex_p0(this.ptr);
}
btBoxShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btBoxShape__isInfinite_p0(this.ptr);
}
btBoxShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btBoxShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btBoxShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btBoxShape__getUserPointer_p0(this.ptr);
}
btBoxShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btBoxShape__isNonMoving_p0(this.ptr);
}
btBoxShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btBoxShape__getMargin_p0(this.ptr);
}
btBoxShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btBoxShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btBoxShape.prototype['getHalfExtentsWithoutMargin'] = function() {
    return wrapPointer(_emscripten_bind_btBoxShape__getHalfExtentsWithoutMargin_p0(this.ptr), Module['btVector3']);
}
btBoxShape.prototype['initializePolyhedralFeatures'] = function() {
    return _emscripten_bind_btBoxShape__initializePolyhedralFeatures_p0(this.ptr);
}
btBoxShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btBoxShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btBoxShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btBoxShape__isSoftBody_p0(this.ptr);
}
btBoxShape.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btBoxShape__getMarginNonVirtual_p0(this.ptr);
}
btBoxShape.prototype['__destroy__'] = function() {
    _emscripten_bind_btBoxShape____destroy___p0(this.ptr);
}
btBoxShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btBoxShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btBoxShape.prototype['getImplicitShapeDimensions'] = function() {
    return wrapPointer(_emscripten_bind_btBoxShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']);
}
btBoxShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btBoxShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btBoxShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btBoxShape__getAngularMotionDisc_p0(this.ptr);
}
btBoxShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btBoxShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btBoxShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btBoxShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btBoxShape.prototype['getPlane'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btBoxShape__getPlane_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btBoxShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btBoxShape__setMargin_p1(this.ptr, arg0);
}
btBoxShape.prototype['getConvexPolyhedron'] = function() {
    return _emscripten_bind_btBoxShape__getConvexPolyhedron_p0(this.ptr);
}
btBoxShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btBoxShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btBoxShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btBoxShape__getShapeType_p0(this.ptr);
}
btBoxShape.prototype['getHalfExtentsWithMargin'] = function() {
    return wrapPointer(_emscripten_bind_btBoxShape__getHalfExtentsWithMargin_p0(this.ptr), Module['btVector3']);
}
btBoxShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btBoxShape__isConcave_p0(this.ptr);
}
btBoxShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btBoxShape__isConvex2d_p0(this.ptr);
}
function Result(){ throw "Result is abstract!" }
Result.prototype.__cache__ = {};
Module['Result'] = Result;
Result.prototype['setShapeIdentifiersB'] = function(arg0, arg1) {
    _emscripten_bind_btDiscreteCollisionDetectorInterface__Result__setShapeIdentifiersB_p2(this.ptr, arg0, arg1);
}
Result.prototype['setShapeIdentifiersA'] = function(arg0, arg1) {
    _emscripten_bind_btDiscreteCollisionDetectorInterface__Result__setShapeIdentifiersA_p2(this.ptr, arg0, arg1);
}
Result.prototype['addContactPoint'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btDiscreteCollisionDetectorInterface__Result__addContactPoint_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
function btPolyhedralConvexAabbCachingShape(){ throw "btPolyhedralConvexAabbCachingShape is abstract!" }
btPolyhedralConvexAabbCachingShape.prototype.__cache__ = {};
Module['btPolyhedralConvexAabbCachingShape'] = btPolyhedralConvexAabbCachingShape;
btPolyhedralConvexAabbCachingShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['getNumPlanes'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumPlanes_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btPolyhedralConvexAabbCachingShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btPolyhedralConvexAabbCachingShape__setUserPointer_p1(this.ptr, arg0);
}
btPolyhedralConvexAabbCachingShape.prototype['isInside'] = function(arg0, arg1) {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__isInside_p2(this.ptr, arg0.ptr, arg1);
}
btPolyhedralConvexAabbCachingShape.prototype['getNumVertices'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumVertices_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btPolyhedralConvexAabbCachingShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btPolyhedralConvexAabbCachingShape.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__isPolyhedral_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['getVertex'] = function(arg0, arg1) {
    _emscripten_bind_btPolyhedralConvexAabbCachingShape__getVertex_p2(this.ptr, arg0, arg1.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btPolyhedralConvexAabbCachingShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateSerializeBufferSize_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['getNumEdges'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumEdges_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['getName'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getName_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['getEdge'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btPolyhedralConvexAabbCachingShape__getEdge_p3(this.ptr, arg0, arg1.ptr, arg2.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['getLocalScalingNV'] = function() {
    return wrapPointer(_emscripten_bind_btPolyhedralConvexAabbCachingShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']);
}
btPolyhedralConvexAabbCachingShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btPolyhedralConvexAabbCachingShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btPolyhedralConvexAabbCachingShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btPolyhedralConvexAabbCachingShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__isConvex2d_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btPolyhedralConvexAabbCachingShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__isConvex_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__isInfinite_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getUserPointer_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__isNonMoving_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getMargin_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['recalcLocalAabb'] = function() {
    _emscripten_bind_btPolyhedralConvexAabbCachingShape__recalcLocalAabb_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btPolyhedralConvexAabbCachingShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btPolyhedralConvexAabbCachingShape__setMargin_p1(this.ptr, arg0);
}
btPolyhedralConvexAabbCachingShape.prototype['initializePolyhedralFeatures'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__initializePolyhedralFeatures_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['getMarginNV'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getMarginNV_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['setImplicitShapeDimensions'] = function(arg0) {
    _emscripten_bind_btPolyhedralConvexAabbCachingShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__isSoftBody_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getMarginNonVirtual_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btPolyhedralConvexAabbCachingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btPolyhedralConvexAabbCachingShape.prototype['getImplicitShapeDimensions'] = function() {
    return wrapPointer(_emscripten_bind_btPolyhedralConvexAabbCachingShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']);
}
btPolyhedralConvexAabbCachingShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btPolyhedralConvexAabbCachingShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btPolyhedralConvexAabbCachingShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getAngularMotionDisc_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btPolyhedralConvexAabbCachingShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['getPlane'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btPolyhedralConvexAabbCachingShape__getPlane_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btPolyhedralConvexAabbCachingShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__isCompound_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['getConvexPolyhedron'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getConvexPolyhedron_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getShapeType_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btPolyhedralConvexAabbCachingShape__isConcave_p0(this.ptr);
}
btPolyhedralConvexAabbCachingShape.prototype['getNonvirtualAabb'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btPolyhedralConvexAabbCachingShape__getNonvirtualAabb_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3);
}
CProfileSample.prototype['__destroy__'] = function() {
    _emscripten_bind_CProfileSample____destroy___p0(this.ptr);
}
function CProfileSample(arg0) {
var stack = Runtime.stackSave();
try {
    this.ptr = _emscripten_bind_CProfileSample__CProfileSample_p1(ensureString(arg0));
} finally { Runtime.stackRestore(stack) }
  CProfileSample.prototype.__cache__[this.ptr] = this;
  this.__class__ = CProfileSample;
}
CProfileSample.prototype.__cache__ = {};
Module['CProfileSample'] = CProfileSample;
btCapsuleShapeX.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btCapsuleShapeX__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btCapsuleShapeX.prototype['isCompound'] = function() {
    return _emscripten_bind_btCapsuleShapeX__isCompound_p0(this.ptr);
}
btCapsuleShapeX.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCapsuleShapeX__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCapsuleShapeX.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btCapsuleShapeX__setUserPointer_p1(this.ptr, arg0);
}
btCapsuleShapeX.prototype['getUpAxis'] = function() {
    return _emscripten_bind_btCapsuleShapeX__getUpAxis_p0(this.ptr);
}
btCapsuleShapeX.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btCapsuleShapeX__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btCapsuleShapeX.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btCapsuleShapeX__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btCapsuleShapeX.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btCapsuleShapeX__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btCapsuleShapeX.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btCapsuleShapeX__isPolyhedral_p0(this.ptr);
}
btCapsuleShapeX.prototype['getRadius'] = function() {
    return _emscripten_bind_btCapsuleShapeX__getRadius_p0(this.ptr);
}
btCapsuleShapeX.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCapsuleShapeX__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCapsuleShapeX.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btCapsuleShapeX__calculateSerializeBufferSize_p0(this.ptr);
}
btCapsuleShapeX.prototype['getName'] = function() {
    return _emscripten_bind_btCapsuleShapeX__getName_p0(this.ptr);
}
btCapsuleShapeX.prototype['getHalfHeight'] = function() {
    return _emscripten_bind_btCapsuleShapeX__getHalfHeight_p0(this.ptr);
}
btCapsuleShapeX.prototype['getLocalScalingNV'] = function() {
    return wrapPointer(_emscripten_bind_btCapsuleShapeX__getLocalScalingNV_p0(this.ptr), Module['btVector3']);
}
btCapsuleShapeX.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCapsuleShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCapsuleShapeX.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCapsuleShapeX__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCapsuleShapeX.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btCapsuleShapeX__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btCapsuleShapeX.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCapsuleShapeX__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCapsuleShapeX.prototype['getMarginNV'] = function() {
    return _emscripten_bind_btCapsuleShapeX__getMarginNV_p0(this.ptr);
}
btCapsuleShapeX.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCapsuleShapeX__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCapsuleShapeX.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btCapsuleShapeX__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btCapsuleShapeX.prototype['isConvex'] = function() {
    return _emscripten_bind_btCapsuleShapeX__isConvex_p0(this.ptr);
}
btCapsuleShapeX.prototype['isInfinite'] = function() {
    return _emscripten_bind_btCapsuleShapeX__isInfinite_p0(this.ptr);
}
function btCapsuleShapeX(arg0, arg1) {
    this.ptr = _emscripten_bind_btCapsuleShapeX__btCapsuleShapeX_p2(arg0, arg1);
  btCapsuleShapeX.prototype.__cache__[this.ptr] = this;
  this.__class__ = btCapsuleShapeX;
}
btCapsuleShapeX.prototype.__cache__ = {};
Module['btCapsuleShapeX'] = btCapsuleShapeX;
btCapsuleShapeX.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btCapsuleShapeX__getUserPointer_p0(this.ptr);
}
btCapsuleShapeX.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btCapsuleShapeX__isNonMoving_p0(this.ptr);
}
btCapsuleShapeX.prototype['getMargin'] = function() {
    return _emscripten_bind_btCapsuleShapeX__getMargin_p0(this.ptr);
}
btCapsuleShapeX.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btCapsuleShapeX__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btCapsuleShapeX.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btCapsuleShapeX__setMargin_p1(this.ptr, arg0);
}
btCapsuleShapeX.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btCapsuleShapeX__isConvex2d_p0(this.ptr);
}
btCapsuleShapeX.prototype['setImplicitShapeDimensions'] = function(arg0) {
    _emscripten_bind_btCapsuleShapeX__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr);
}
btCapsuleShapeX.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btCapsuleShapeX__isSoftBody_p0(this.ptr);
}
btCapsuleShapeX.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btCapsuleShapeX__getMarginNonVirtual_p0(this.ptr);
}
btCapsuleShapeX.prototype['__destroy__'] = function() {
    _emscripten_bind_btCapsuleShapeX____destroy___p0(this.ptr);
}
btCapsuleShapeX.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCapsuleShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btCapsuleShapeX.prototype['getImplicitShapeDimensions'] = function() {
    return wrapPointer(_emscripten_bind_btCapsuleShapeX__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']);
}
btCapsuleShapeX.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btCapsuleShapeX__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btCapsuleShapeX.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btCapsuleShapeX__getAngularMotionDisc_p0(this.ptr);
}
btCapsuleShapeX.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btCapsuleShapeX__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btCapsuleShapeX.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCapsuleShapeX__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCapsuleShapeX.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btCapsuleShapeX__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btCapsuleShapeX.prototype['isConcave'] = function() {
    return _emscripten_bind_btCapsuleShapeX__isConcave_p0(this.ptr);
}
btCapsuleShapeX.prototype['getShapeType'] = function() {
    return _emscripten_bind_btCapsuleShapeX__getShapeType_p0(this.ptr);
}
btQuaternion.prototype['nearest'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btQuaternion__nearest_p1(this.ptr, arg0.ptr), Module['btQuaternion']);
}
btQuaternion.prototype['setMin'] = function(arg0) {
    _emscripten_bind_btQuaternion__setMin_p1(this.ptr, arg0.ptr);
}
btQuaternion.prototype['farthest'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btQuaternion__farthest_p1(this.ptr, arg0.ptr), Module['btQuaternion']);
}
btQuaternion.prototype['getX'] = function() {
    return _emscripten_bind_btQuaternion__getX_p0(this.ptr);
}
btQuaternion.prototype['getY'] = function() {
    return _emscripten_bind_btQuaternion__getY_p0(this.ptr);
}
btQuaternion.prototype['getZ'] = function() {
    return _emscripten_bind_btQuaternion__getZ_p0(this.ptr);
}
btQuaternion.prototype['setEuler'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btQuaternion__setEuler_p3(this.ptr, arg0, arg1, arg2);
}
btQuaternion.prototype['op_sub'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btQuaternion__op_sub_p1(this.ptr, arg0.ptr), Module['btQuaternion']);
}
btQuaternion.prototype['getW'] = function() {
    return _emscripten_bind_btQuaternion__getW_p0(this.ptr);
}
btQuaternion.prototype['normalize'] = function() {
    return wrapPointer(_emscripten_bind_btQuaternion__normalize_p0(this.ptr), Module['btQuaternion']);
}
btQuaternion.prototype['slerp'] = function(arg0, arg1) {
    return wrapPointer(_emscripten_bind_btQuaternion__slerp_p2(this.ptr, arg0.ptr, arg1), Module['btQuaternion']);
}
btQuaternion.prototype['inverse'] = function() {
    return wrapPointer(_emscripten_bind_btQuaternion__inverse_p0(this.ptr), Module['btQuaternion']);
}
btQuaternion.prototype['angle'] = function(arg0) {
    return _emscripten_bind_btQuaternion__angle_p1(this.ptr, arg0.ptr);
}
btQuaternion.prototype['getAxis'] = function() {
    return wrapPointer(_emscripten_bind_btQuaternion__getAxis_p0(this.ptr), Module['btVector3']);
}
btQuaternion.prototype['getIdentity'] = function() {
    return wrapPointer(_emscripten_bind_btQuaternion__getIdentity_p0(), Module['btQuaternion']);
}
btQuaternion.prototype['setMax'] = function(arg0) {
    _emscripten_bind_btQuaternion__setMax_p1(this.ptr, arg0.ptr);
}
btQuaternion.prototype['op_add'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btQuaternion__op_add_p1(this.ptr, arg0.ptr), Module['btQuaternion']);
}
btQuaternion.prototype['op_mul'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btQuaternion__op_mul_p1(this.ptr, arg0), Module['btQuaternion']);
}
btQuaternion.prototype['setRotation'] = function(arg0, arg1) {
    _emscripten_bind_btQuaternion__setRotation_p2(this.ptr, arg0.ptr, arg1);
}
btQuaternion.prototype['setEulerZYX'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btQuaternion__setEulerZYX_p3(this.ptr, arg0, arg1, arg2);
}
btQuaternion.prototype['setValue'] = function(arg0, arg1, arg2, arg3) {
  if (arg3 === undefined)
    _emscripten_bind_btQuaternion__setValue_p3(this.ptr, arg0, arg1, arg2);
  else 
    _emscripten_bind_btQuaternion__setValue_p4(this.ptr, arg0, arg1, arg2, arg3);
}
function btQuaternion(arg0, arg1, arg2, arg3) {
  if (arg0 === undefined)
    this.ptr = _emscripten_bind_btQuaternion__btQuaternion_p0();
  else   if (arg2 === undefined)
    this.ptr = _emscripten_bind_btQuaternion__btQuaternion_p2(arg0.ptr, arg1);
  else   if (arg3 === undefined)
    this.ptr = _emscripten_bind_btQuaternion__btQuaternion_p3(arg0, arg1, arg2);
  else 
    this.ptr = _emscripten_bind_btQuaternion__btQuaternion_p4(arg0, arg1, arg2, arg3);
  btQuaternion.prototype.__cache__[this.ptr] = this;
  this.__class__ = btQuaternion;
}
btQuaternion.prototype.__cache__ = {};
Module['btQuaternion'] = btQuaternion;
btQuaternion.prototype['op_div'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btQuaternion__op_div_p1(this.ptr, arg0), Module['btQuaternion']);
}
btQuaternion.prototype['setW'] = function(arg0) {
    _emscripten_bind_btQuaternion__setW_p1(this.ptr, arg0);
}
btQuaternion.prototype['normalized'] = function() {
    return wrapPointer(_emscripten_bind_btQuaternion__normalized_p0(this.ptr), Module['btQuaternion']);
}
btQuaternion.prototype['setX'] = function(arg0) {
    _emscripten_bind_btQuaternion__setX_p1(this.ptr, arg0);
}
btQuaternion.prototype['setY'] = function(arg0) {
    _emscripten_bind_btQuaternion__setY_p1(this.ptr, arg0);
}
btQuaternion.prototype['setZ'] = function(arg0) {
    _emscripten_bind_btQuaternion__setZ_p1(this.ptr, arg0);
}
btQuaternion.prototype['__destroy__'] = function() {
    _emscripten_bind_btQuaternion____destroy___p0(this.ptr);
}
btQuaternion.prototype['getAngle'] = function() {
    return _emscripten_bind_btQuaternion__getAngle_p0(this.ptr);
}
btQuaternion.prototype['length2'] = function() {
    return _emscripten_bind_btQuaternion__length2_p0(this.ptr);
}
btQuaternion.prototype['length'] = function() {
    return _emscripten_bind_btQuaternion__length_p0(this.ptr);
}
btQuaternion.prototype['w'] = function() {
    return _emscripten_bind_btQuaternion__w_p0(this.ptr);
}
btQuaternion.prototype['y'] = function() {
    return _emscripten_bind_btQuaternion__y_p0(this.ptr);
}
btQuaternion.prototype['x'] = function() {
    return _emscripten_bind_btQuaternion__x_p0(this.ptr);
}
btQuaternion.prototype['z'] = function() {
    return _emscripten_bind_btQuaternion__z_p0(this.ptr);
}
btQuaternion.prototype['dot'] = function(arg0) {
    return _emscripten_bind_btQuaternion__dot_p1(this.ptr, arg0.ptr);
}
btCapsuleShapeZ.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btCapsuleShapeZ__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btCapsuleShapeZ.prototype['isCompound'] = function() {
    return _emscripten_bind_btCapsuleShapeZ__isCompound_p0(this.ptr);
}
btCapsuleShapeZ.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCapsuleShapeZ__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCapsuleShapeZ.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btCapsuleShapeZ__setUserPointer_p1(this.ptr, arg0);
}
btCapsuleShapeZ.prototype['getUpAxis'] = function() {
    return _emscripten_bind_btCapsuleShapeZ__getUpAxis_p0(this.ptr);
}
btCapsuleShapeZ.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btCapsuleShapeZ__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btCapsuleShapeZ.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btCapsuleShapeZ__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btCapsuleShapeZ.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btCapsuleShapeZ__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btCapsuleShapeZ.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btCapsuleShapeZ__isPolyhedral_p0(this.ptr);
}
btCapsuleShapeZ.prototype['getRadius'] = function() {
    return _emscripten_bind_btCapsuleShapeZ__getRadius_p0(this.ptr);
}
btCapsuleShapeZ.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCapsuleShapeZ__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCapsuleShapeZ.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btCapsuleShapeZ__calculateSerializeBufferSize_p0(this.ptr);
}
btCapsuleShapeZ.prototype['getName'] = function() {
    return _emscripten_bind_btCapsuleShapeZ__getName_p0(this.ptr);
}
btCapsuleShapeZ.prototype['getHalfHeight'] = function() {
    return _emscripten_bind_btCapsuleShapeZ__getHalfHeight_p0(this.ptr);
}
btCapsuleShapeZ.prototype['getLocalScalingNV'] = function() {
    return wrapPointer(_emscripten_bind_btCapsuleShapeZ__getLocalScalingNV_p0(this.ptr), Module['btVector3']);
}
btCapsuleShapeZ.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCapsuleShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCapsuleShapeZ.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCapsuleShapeZ__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCapsuleShapeZ.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btCapsuleShapeZ__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btCapsuleShapeZ.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCapsuleShapeZ__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCapsuleShapeZ.prototype['getMarginNV'] = function() {
    return _emscripten_bind_btCapsuleShapeZ__getMarginNV_p0(this.ptr);
}
btCapsuleShapeZ.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btCapsuleShapeZ__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btCapsuleShapeZ.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btCapsuleShapeZ__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btCapsuleShapeZ.prototype['isConvex'] = function() {
    return _emscripten_bind_btCapsuleShapeZ__isConvex_p0(this.ptr);
}
btCapsuleShapeZ.prototype['isInfinite'] = function() {
    return _emscripten_bind_btCapsuleShapeZ__isInfinite_p0(this.ptr);
}
function btCapsuleShapeZ(arg0, arg1) {
    this.ptr = _emscripten_bind_btCapsuleShapeZ__btCapsuleShapeZ_p2(arg0, arg1);
  btCapsuleShapeZ.prototype.__cache__[this.ptr] = this;
  this.__class__ = btCapsuleShapeZ;
}
btCapsuleShapeZ.prototype.__cache__ = {};
Module['btCapsuleShapeZ'] = btCapsuleShapeZ;
btCapsuleShapeZ.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btCapsuleShapeZ__getUserPointer_p0(this.ptr);
}
btCapsuleShapeZ.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btCapsuleShapeZ__isNonMoving_p0(this.ptr);
}
btCapsuleShapeZ.prototype['getMargin'] = function() {
    return _emscripten_bind_btCapsuleShapeZ__getMargin_p0(this.ptr);
}
btCapsuleShapeZ.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btCapsuleShapeZ__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btCapsuleShapeZ.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btCapsuleShapeZ__setMargin_p1(this.ptr, arg0);
}
btCapsuleShapeZ.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btCapsuleShapeZ__isConvex2d_p0(this.ptr);
}
btCapsuleShapeZ.prototype['setImplicitShapeDimensions'] = function(arg0) {
    _emscripten_bind_btCapsuleShapeZ__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr);
}
btCapsuleShapeZ.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btCapsuleShapeZ__isSoftBody_p0(this.ptr);
}
btCapsuleShapeZ.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btCapsuleShapeZ__getMarginNonVirtual_p0(this.ptr);
}
btCapsuleShapeZ.prototype['__destroy__'] = function() {
    _emscripten_bind_btCapsuleShapeZ____destroy___p0(this.ptr);
}
btCapsuleShapeZ.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCapsuleShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btCapsuleShapeZ.prototype['getImplicitShapeDimensions'] = function() {
    return wrapPointer(_emscripten_bind_btCapsuleShapeZ__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']);
}
btCapsuleShapeZ.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btCapsuleShapeZ__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btCapsuleShapeZ.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btCapsuleShapeZ__getAngularMotionDisc_p0(this.ptr);
}
btCapsuleShapeZ.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btCapsuleShapeZ__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btCapsuleShapeZ.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btCapsuleShapeZ__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btCapsuleShapeZ.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btCapsuleShapeZ__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btCapsuleShapeZ.prototype['isConcave'] = function() {
    return _emscripten_bind_btCapsuleShapeZ__isConcave_p0(this.ptr);
}
btCapsuleShapeZ.prototype['getShapeType'] = function() {
    return _emscripten_bind_btCapsuleShapeZ__getShapeType_p0(this.ptr);
}
btGhostObject.prototype['removeOverlappingObjectInternal'] = function(arg0, arg1, arg2) {
  if (arg2 === undefined)
    _emscripten_bind_btGhostObject__removeOverlappingObjectInternal_p2(this.ptr, arg0.ptr, arg1.ptr);
  else 
    _emscripten_bind_btGhostObject__removeOverlappingObjectInternal_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btGhostObject.prototype['getFriction'] = function() {
    return _emscripten_bind_btGhostObject__getFriction_p0(this.ptr);
}
btGhostObject.prototype['setInterpolationLinearVelocity'] = function(arg0) {
    _emscripten_bind_btGhostObject__setInterpolationLinearVelocity_p1(this.ptr, arg0.ptr);
}
btGhostObject.prototype['getDeactivationTime'] = function() {
    return _emscripten_bind_btGhostObject__getDeactivationTime_p0(this.ptr);
}
btGhostObject.prototype['setCompanionId'] = function(arg0) {
    _emscripten_bind_btGhostObject__setCompanionId_p1(this.ptr, arg0);
}
btGhostObject.prototype['setInterpolationAngularVelocity'] = function(arg0) {
    _emscripten_bind_btGhostObject__setInterpolationAngularVelocity_p1(this.ptr, arg0.ptr);
}
btGhostObject.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btGhostObject__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btGhostObject.prototype['getCcdSweptSphereRadius'] = function() {
    return _emscripten_bind_btGhostObject__getCcdSweptSphereRadius_p0(this.ptr);
}
btGhostObject.prototype['setFriction'] = function(arg0) {
    _emscripten_bind_btGhostObject__setFriction_p1(this.ptr, arg0);
}
btGhostObject.prototype['internalSetExtensionPointer'] = function(arg0) {
    _emscripten_bind_btGhostObject__internalSetExtensionPointer_p1(this.ptr, arg0);
}
btGhostObject.prototype['setContactProcessingThreshold'] = function(arg0) {
    _emscripten_bind_btGhostObject__setContactProcessingThreshold_p1(this.ptr, arg0);
}
btGhostObject.prototype['setInterpolationWorldTransform'] = function(arg0) {
    _emscripten_bind_btGhostObject__setInterpolationWorldTransform_p1(this.ptr, arg0.ptr);
}
btGhostObject.prototype['getInterpolationLinearVelocity'] = function() {
    return wrapPointer(_emscripten_bind_btGhostObject__getInterpolationLinearVelocity_p0(this.ptr), Module['btVector3']);
}
btGhostObject.prototype['mergesSimulationIslands'] = function() {
    return _emscripten_bind_btGhostObject__mergesSimulationIslands_p0(this.ptr);
}
btGhostObject.prototype['setCollisionShape'] = function(arg0) {
    _emscripten_bind_btGhostObject__setCollisionShape_p1(this.ptr, arg0.ptr);
}
btGhostObject.prototype['setCcdMotionThreshold'] = function(arg0) {
    _emscripten_bind_btGhostObject__setCcdMotionThreshold_p1(this.ptr, arg0);
}
btGhostObject.prototype['getIslandTag'] = function() {
    return _emscripten_bind_btGhostObject__getIslandTag_p0(this.ptr);
}
btGhostObject.prototype['getNumOverlappingObjects'] = function() {
    return _emscripten_bind_btGhostObject__getNumOverlappingObjects_p0(this.ptr);
}
btGhostObject.prototype['addOverlappingObjectInternal'] = function(arg0, arg1) {
  if (arg1 === undefined)
    _emscripten_bind_btGhostObject__addOverlappingObjectInternal_p1(this.ptr, arg0.ptr);
  else 
    _emscripten_bind_btGhostObject__addOverlappingObjectInternal_p2(this.ptr, arg0.ptr, arg1.ptr);
}
btGhostObject.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btGhostObject__setUserPointer_p1(this.ptr, arg0);
}
btGhostObject.prototype['checkCollideWith'] = function(arg0) {
    return _emscripten_bind_btGhostObject__checkCollideWith_p1(this.ptr, arg0.ptr);
}
btGhostObject.prototype['rayTest'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btGhostObject__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btGhostObject.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btGhostObject__calculateSerializeBufferSize_p0(this.ptr);
}
btGhostObject.prototype['getInterpolationAngularVelocity'] = function() {
    return wrapPointer(_emscripten_bind_btGhostObject__getInterpolationAngularVelocity_p0(this.ptr), Module['btVector3']);
}
btGhostObject.prototype['forceActivationState'] = function(arg0) {
    _emscripten_bind_btGhostObject__forceActivationState_p1(this.ptr, arg0);
}
btGhostObject.prototype['activate'] = function(arg0) {
  if (arg0 === undefined)
    _emscripten_bind_btGhostObject__activate_p0(this.ptr);
  else 
    _emscripten_bind_btGhostObject__activate_p1(this.ptr, arg0);
}
btGhostObject.prototype['setIslandTag'] = function(arg0) {
    _emscripten_bind_btGhostObject__setIslandTag_p1(this.ptr, arg0);
}
btGhostObject.prototype['setHitFraction'] = function(arg0) {
    _emscripten_bind_btGhostObject__setHitFraction_p1(this.ptr, arg0);
}
btGhostObject.prototype['setCcdSweptSphereRadius'] = function(arg0) {
    _emscripten_bind_btGhostObject__setCcdSweptSphereRadius_p1(this.ptr, arg0);
}
btGhostObject.prototype['getInterpolationWorldTransform'] = function() {
    return wrapPointer(_emscripten_bind_btGhostObject__getInterpolationWorldTransform_p0(this.ptr), Module['btTransform']);
}
btGhostObject.prototype['serializeSingleObject'] = function(arg0) {
    _emscripten_bind_btGhostObject__serializeSingleObject_p1(this.ptr, arg0.ptr);
}
btGhostObject.prototype['getOverlappingObject'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btGhostObject__getOverlappingObject_p1(this.ptr, arg0), Module['btCollisionObject']);
}
btGhostObject.prototype['convexSweepTest'] = function(arg0, arg1, arg2, arg3, arg4) {
  if (arg4 === undefined)
    _emscripten_bind_btGhostObject__convexSweepTest_p4(this.ptr, arg0, arg1.ptr, arg2.ptr, arg3);
  else 
    _emscripten_bind_btGhostObject__convexSweepTest_p5(this.ptr, arg0, arg1.ptr, arg2.ptr, arg3, arg4);
}
btGhostObject.prototype['isStaticObject'] = function() {
    return _emscripten_bind_btGhostObject__isStaticObject_p0(this.ptr);
}
btGhostObject.prototype['getCollisionShape'] = function() {
    return wrapPointer(_emscripten_bind_btGhostObject__getCollisionShape_p0(this.ptr), Module['btCollisionShape']);
}
btGhostObject.prototype['setAnisotropicFriction'] = function(arg0) {
    _emscripten_bind_btGhostObject__setAnisotropicFriction_p1(this.ptr, arg0.ptr);
}
btGhostObject.prototype['getActivationState'] = function() {
    return _emscripten_bind_btGhostObject__getActivationState_p0(this.ptr);
}
btGhostObject.prototype['getBroadphaseHandle'] = function() {
    return wrapPointer(_emscripten_bind_btGhostObject__getBroadphaseHandle_p0(this.ptr), Module['btBroadphaseProxy']);
}
btGhostObject.prototype['getRestitution'] = function() {
    return _emscripten_bind_btGhostObject__getRestitution_p0(this.ptr);
}
btGhostObject.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btGhostObject__getUserPointer_p0(this.ptr);
}
function btGhostObject() {
    this.ptr = _emscripten_bind_btGhostObject__btGhostObject_p0();
  btGhostObject.prototype.__cache__[this.ptr] = this;
  this.__class__ = btGhostObject;
}
btGhostObject.prototype.__cache__ = {};
Module['btGhostObject'] = btGhostObject;
btGhostObject.prototype['getWorldTransform'] = function() {
    return wrapPointer(_emscripten_bind_btGhostObject__getWorldTransform_p0(this.ptr), Module['btTransform']);
}
btGhostObject.prototype['getCcdSquareMotionThreshold'] = function() {
    return _emscripten_bind_btGhostObject__getCcdSquareMotionThreshold_p0(this.ptr);
}
btGhostObject.prototype['setWorldTransform'] = function(arg0) {
    _emscripten_bind_btGhostObject__setWorldTransform_p1(this.ptr, arg0.ptr);
}
btGhostObject.prototype['internalSetTemporaryCollisionShape'] = function(arg0) {
    _emscripten_bind_btGhostObject__internalSetTemporaryCollisionShape_p1(this.ptr, arg0.ptr);
}
btGhostObject.prototype['getCcdMotionThreshold'] = function() {
    return _emscripten_bind_btGhostObject__getCcdMotionThreshold_p0(this.ptr);
}
btGhostObject.prototype['getCompanionId'] = function() {
    return _emscripten_bind_btGhostObject__getCompanionId_p0(this.ptr);
}
btGhostObject.prototype['isActive'] = function() {
    return _emscripten_bind_btGhostObject__isActive_p0(this.ptr);
}
btGhostObject.prototype['getInternalType'] = function() {
    return _emscripten_bind_btGhostObject__getInternalType_p0(this.ptr);
}
btGhostObject.prototype['__destroy__'] = function() {
    _emscripten_bind_btGhostObject____destroy___p0(this.ptr);
}
btGhostObject.prototype['hasContactResponse'] = function() {
    return _emscripten_bind_btGhostObject__hasContactResponse_p0(this.ptr);
}
btGhostObject.prototype['upcast'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btGhostObject__upcast_p1(arg0.ptr), Module['btGhostObject']);
}
btGhostObject.prototype['setActivationState'] = function(arg0) {
    _emscripten_bind_btGhostObject__setActivationState_p1(this.ptr, arg0);
}
btGhostObject.prototype['getRootCollisionShape'] = function() {
    return wrapPointer(_emscripten_bind_btGhostObject__getRootCollisionShape_p0(this.ptr), Module['btCollisionShape']);
}
btGhostObject.prototype['getContactProcessingThreshold'] = function() {
    return _emscripten_bind_btGhostObject__getContactProcessingThreshold_p0(this.ptr);
}
btGhostObject.prototype['getCollisionFlags'] = function() {
    return _emscripten_bind_btGhostObject__getCollisionFlags_p0(this.ptr);
}
btGhostObject.prototype['getHitFraction'] = function() {
    return _emscripten_bind_btGhostObject__getHitFraction_p0(this.ptr);
}
btGhostObject.prototype['getAnisotropicFriction'] = function() {
    return wrapPointer(_emscripten_bind_btGhostObject__getAnisotropicFriction_p0(this.ptr), Module['btVector3']);
}
btGhostObject.prototype['setDeactivationTime'] = function(arg0) {
    _emscripten_bind_btGhostObject__setDeactivationTime_p1(this.ptr, arg0);
}
btGhostObject.prototype['internalGetExtensionPointer'] = function() {
    return _emscripten_bind_btGhostObject__internalGetExtensionPointer_p0(this.ptr);
}
btGhostObject.prototype['setCollisionFlags'] = function(arg0) {
    _emscripten_bind_btGhostObject__setCollisionFlags_p1(this.ptr, arg0);
}
btGhostObject.prototype['isStaticOrKinematicObject'] = function() {
    return _emscripten_bind_btGhostObject__isStaticOrKinematicObject_p0(this.ptr);
}
btGhostObject.prototype['setRestitution'] = function(arg0) {
    _emscripten_bind_btGhostObject__setRestitution_p1(this.ptr, arg0);
}
btGhostObject.prototype['hasAnisotropicFriction'] = function() {
    return _emscripten_bind_btGhostObject__hasAnisotropicFriction_p0(this.ptr);
}
btGhostObject.prototype['setBroadphaseHandle'] = function(arg0) {
    _emscripten_bind_btGhostObject__setBroadphaseHandle_p1(this.ptr, arg0.ptr);
}
btGhostObject.prototype['isKinematicObject'] = function() {
    return _emscripten_bind_btGhostObject__isKinematicObject_p0(this.ptr);
}
function btConcaveShape(){ throw "btConcaveShape is abstract!" }
btConcaveShape.prototype.__cache__ = {};
Module['btConcaveShape'] = btConcaveShape;
btConcaveShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btConcaveShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btConcaveShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btConcaveShape__setUserPointer_p1(this.ptr, arg0);
}
btConcaveShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btConcaveShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btConcaveShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btConcaveShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btConcaveShape.prototype['processAllTriangles'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConcaveShape__processAllTriangles_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConcaveShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btConcaveShape__calculateSerializeBufferSize_p0(this.ptr);
}
btConcaveShape.prototype['getName'] = function() {
    return _emscripten_bind_btConcaveShape__getName_p0(this.ptr);
}
btConcaveShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btConcaveShape__isCompound_p0(this.ptr);
}
btConcaveShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btConcaveShape__isPolyhedral_p0(this.ptr);
}
btConcaveShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btConcaveShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btConcaveShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btConcaveShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btConcaveShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btConcaveShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btConcaveShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btConcaveShape__isConvex_p0(this.ptr);
}
btConcaveShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btConcaveShape__isInfinite_p0(this.ptr);
}
btConcaveShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btConcaveShape__getUserPointer_p0(this.ptr);
}
btConcaveShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btConcaveShape__isNonMoving_p0(this.ptr);
}
btConcaveShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btConcaveShape__getMargin_p0(this.ptr);
}
btConcaveShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btConcaveShape__setMargin_p1(this.ptr, arg0);
}
btConcaveShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btConcaveShape__isConvex2d_p0(this.ptr);
}
btConcaveShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btConcaveShape__isSoftBody_p0(this.ptr);
}
btConcaveShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btConcaveShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btConcaveShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btConcaveShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btConcaveShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btConcaveShape__getAngularMotionDisc_p0(this.ptr);
}
btConcaveShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btConcaveShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btConcaveShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btConcaveShape__isConcave_p0(this.ptr);
}
btConcaveShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btConcaveShape__getShapeType_p0(this.ptr);
}
function btTriangleInfoMap(){ throw "btTriangleInfoMap is abstract!" }
btTriangleInfoMap.prototype.__cache__ = {};
Module['btTriangleInfoMap'] = btTriangleInfoMap;
btTriangleInfoMap.prototype['__destroy__'] = function() {
    _emscripten_bind_btTriangleInfoMap____destroy___p0(this.ptr);
}
btTriangleInfoMap.prototype['get_m_zeroAreaThreshold'] = function() {
    return _emscripten_bind_btTriangleInfoMap__get_m_zeroAreaThreshold_p0(this.ptr);
}
btTriangleInfoMap.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btTriangleInfoMap__calculateSerializeBufferSize_p0(this.ptr);
}
btTriangleInfoMap.prototype['get_m_maxEdgeAngleThreshold'] = function() {
    return _emscripten_bind_btTriangleInfoMap__get_m_maxEdgeAngleThreshold_p0(this.ptr);
}
btTriangleInfoMap.prototype['deSerialize'] = function(arg0) {
    _emscripten_bind_btTriangleInfoMap__deSerialize_p1(this.ptr, arg0.ptr);
}
btTriangleInfoMap.prototype['set_m_convexEpsilon'] = function(arg0) {
    _emscripten_bind_btTriangleInfoMap__set_m_convexEpsilon_p1(this.ptr, arg0);
}
btTriangleInfoMap.prototype['get_m_edgeDistanceThreshold'] = function() {
    return _emscripten_bind_btTriangleInfoMap__get_m_edgeDistanceThreshold_p0(this.ptr);
}
btTriangleInfoMap.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btTriangleInfoMap__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btTriangleInfoMap.prototype['set_m_equalVertexThreshold'] = function(arg0) {
    _emscripten_bind_btTriangleInfoMap__set_m_equalVertexThreshold_p1(this.ptr, arg0);
}
btTriangleInfoMap.prototype['set_m_planarEpsilon'] = function(arg0) {
    _emscripten_bind_btTriangleInfoMap__set_m_planarEpsilon_p1(this.ptr, arg0);
}
btTriangleInfoMap.prototype['get_m_equalVertexThreshold'] = function() {
    return _emscripten_bind_btTriangleInfoMap__get_m_equalVertexThreshold_p0(this.ptr);
}
btTriangleInfoMap.prototype['get_m_convexEpsilon'] = function() {
    return _emscripten_bind_btTriangleInfoMap__get_m_convexEpsilon_p0(this.ptr);
}
btTriangleInfoMap.prototype['set_m_edgeDistanceThreshold'] = function(arg0) {
    _emscripten_bind_btTriangleInfoMap__set_m_edgeDistanceThreshold_p1(this.ptr, arg0);
}
btTriangleInfoMap.prototype['set_m_maxEdgeAngleThreshold'] = function(arg0) {
    _emscripten_bind_btTriangleInfoMap__set_m_maxEdgeAngleThreshold_p1(this.ptr, arg0);
}
btTriangleInfoMap.prototype['set_m_zeroAreaThreshold'] = function(arg0) {
    _emscripten_bind_btTriangleInfoMap__set_m_zeroAreaThreshold_p1(this.ptr, arg0);
}
btTriangleInfoMap.prototype['get_m_planarEpsilon'] = function() {
    return _emscripten_bind_btTriangleInfoMap__get_m_planarEpsilon_p0(this.ptr);
}
LocalConvexResult.prototype['__destroy__'] = function() {
    _emscripten_bind_btCollisionWorld__LocalConvexResult____destroy___p0(this.ptr);
}
LocalConvexResult.prototype['set_m_localShapeInfo'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_localShapeInfo_p1(this.ptr, arg0.ptr);
}
LocalConvexResult.prototype['get_m_hitNormalLocal'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitNormalLocal_p0(this.ptr), Module['btVector3']);
}
LocalConvexResult.prototype['get_m_hitCollisionObject'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitCollisionObject_p0(this.ptr), Module['btCollisionObject']);
}
LocalConvexResult.prototype['set_m_hitNormalLocal'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitNormalLocal_p1(this.ptr, arg0.ptr);
}
LocalConvexResult.prototype['set_m_hitFraction'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitFraction_p1(this.ptr, arg0);
}
function LocalConvexResult(arg0, arg1, arg2, arg3, arg4) {
    this.ptr = _emscripten_bind_btCollisionWorld__LocalConvexResult__LocalConvexResult_p5(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4);
  LocalConvexResult.prototype.__cache__[this.ptr] = this;
  this.__class__ = LocalConvexResult;
}
LocalConvexResult.prototype.__cache__ = {};
Module['LocalConvexResult'] = LocalConvexResult;
LocalConvexResult.prototype['set_m_hitCollisionObject'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitCollisionObject_p1(this.ptr, arg0.ptr);
}
LocalConvexResult.prototype['get_m_hitFraction'] = function() {
    return _emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitFraction_p0(this.ptr);
}
LocalConvexResult.prototype['set_m_hitPointLocal'] = function(arg0) {
    _emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitPointLocal_p1(this.ptr, arg0.ptr);
}
LocalConvexResult.prototype['get_m_localShapeInfo'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_localShapeInfo_p0(this.ptr), Module['LocalShapeInfo']);
}
LocalConvexResult.prototype['get_m_hitPointLocal'] = function() {
    return wrapPointer(_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitPointLocal_p0(this.ptr), Module['btVector3']);
}
bt32BitAxisSweep3.prototype['getNumHandles'] = function() {
    return _emscripten_bind_bt32BitAxisSweep3__getNumHandles_p0(this.ptr);
}
bt32BitAxisSweep3.prototype['addHandle'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
    return _emscripten_bind_bt32BitAxisSweep3__addHandle_p7(this.ptr, arg0.ptr, arg1.ptr, arg2, arg3, arg4, arg5.ptr, arg6);
}
bt32BitAxisSweep3.prototype['quantize'] = function(arg0, arg1, arg2) {
    _emscripten_bind_bt32BitAxisSweep3__quantize_p3(this.ptr, arg0, arg1.ptr, arg2);
}
bt32BitAxisSweep3.prototype['removeHandle'] = function(arg0, arg1) {
    _emscripten_bind_bt32BitAxisSweep3__removeHandle_p2(this.ptr, arg0, arg1.ptr);
}
bt32BitAxisSweep3.prototype['getOverlappingPairUserCallback'] = function() {
    return wrapPointer(_emscripten_bind_bt32BitAxisSweep3__getOverlappingPairUserCallback_p0(this.ptr), Module['btOverlappingPairCallback']);
}
bt32BitAxisSweep3.prototype['processAllOverlappingPairs'] = function(arg0) {
    _emscripten_bind_bt32BitAxisSweep3__processAllOverlappingPairs_p1(this.ptr, arg0.ptr);
}
bt32BitAxisSweep3.prototype['rayTest'] = function(arg0, arg1, arg2, arg3, arg4) {
  if (arg3 === undefined)
    _emscripten_bind_bt32BitAxisSweep3__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
  else   if (arg4 === undefined)
    _emscripten_bind_bt32BitAxisSweep3__rayTest_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
  else 
    _emscripten_bind_bt32BitAxisSweep3__rayTest_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr);
}
bt32BitAxisSweep3.prototype['setAabb'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_bt32BitAxisSweep3__setAabb_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
}
bt32BitAxisSweep3.prototype['resetPool'] = function(arg0) {
    _emscripten_bind_bt32BitAxisSweep3__resetPool_p1(this.ptr, arg0.ptr);
}
bt32BitAxisSweep3.prototype['testAabbOverlap'] = function(arg0, arg1) {
    return _emscripten_bind_bt32BitAxisSweep3__testAabbOverlap_p2(this.ptr, arg0.ptr, arg1.ptr);
}
bt32BitAxisSweep3.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_bt32BitAxisSweep3__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
bt32BitAxisSweep3.prototype['updateHandle'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_bt32BitAxisSweep3__updateHandle_p4(this.ptr, arg0, arg1.ptr, arg2.ptr, arg3.ptr);
}
function bt32BitAxisSweep3(arg0, arg1, arg2, arg3, arg4) {
  if (arg2 === undefined)
    this.ptr = _emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p2(arg0.ptr, arg1.ptr);
  else   if (arg3 === undefined)
    this.ptr = _emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p3(arg0.ptr, arg1.ptr, arg2);
  else   if (arg4 === undefined)
    this.ptr = _emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p4(arg0.ptr, arg1.ptr, arg2, arg3.ptr);
  else 
    this.ptr = _emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p5(arg0.ptr, arg1.ptr, arg2, arg3.ptr, arg4);
  bt32BitAxisSweep3.prototype.__cache__[this.ptr] = this;
  this.__class__ = bt32BitAxisSweep3;
}
bt32BitAxisSweep3.prototype.__cache__ = {};
Module['bt32BitAxisSweep3'] = bt32BitAxisSweep3;
bt32BitAxisSweep3.prototype['printStats'] = function() {
    _emscripten_bind_bt32BitAxisSweep3__printStats_p0(this.ptr);
}
bt32BitAxisSweep3.prototype['createProxy'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
    return wrapPointer(_emscripten_bind_bt32BitAxisSweep3__createProxy_p8(this.ptr, arg0.ptr, arg1.ptr, arg2, arg3, arg4, arg5, arg6.ptr, arg7), Module['btBroadphaseProxy']);
}
bt32BitAxisSweep3.prototype['__destroy__'] = function() {
    _emscripten_bind_bt32BitAxisSweep3____destroy___p0(this.ptr);
}
bt32BitAxisSweep3.prototype['setOverlappingPairUserCallback'] = function(arg0) {
    _emscripten_bind_bt32BitAxisSweep3__setOverlappingPairUserCallback_p1(this.ptr, arg0.ptr);
}
bt32BitAxisSweep3.prototype['calculateOverlappingPairs'] = function(arg0) {
    _emscripten_bind_bt32BitAxisSweep3__calculateOverlappingPairs_p1(this.ptr, arg0.ptr);
}
bt32BitAxisSweep3.prototype['getOverlappingPairCache'] = function() {
    return wrapPointer(_emscripten_bind_bt32BitAxisSweep3__getOverlappingPairCache_p0(this.ptr), Module['btOverlappingPairCache']);
}
bt32BitAxisSweep3.prototype['unQuantize'] = function(arg0, arg1, arg2) {
    _emscripten_bind_bt32BitAxisSweep3__unQuantize_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
bt32BitAxisSweep3.prototype['aabbTest'] = function(arg0, arg1, arg2) {
    _emscripten_bind_bt32BitAxisSweep3__aabbTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
bt32BitAxisSweep3.prototype['getBroadphaseAabb'] = function(arg0, arg1) {
    _emscripten_bind_bt32BitAxisSweep3__getBroadphaseAabb_p2(this.ptr, arg0.ptr, arg1.ptr);
}
bt32BitAxisSweep3.prototype['destroyProxy'] = function(arg0, arg1) {
    _emscripten_bind_bt32BitAxisSweep3__destroyProxy_p2(this.ptr, arg0.ptr, arg1.ptr);
}
bt32BitAxisSweep3.prototype['getHandle'] = function(arg0) {
    return _emscripten_bind_bt32BitAxisSweep3__getHandle_p1(this.ptr, arg0);
}
function btCollisionAlgorithm(){ throw "btCollisionAlgorithm is abstract!" }
btCollisionAlgorithm.prototype.__cache__ = {};
Module['btCollisionAlgorithm'] = btCollisionAlgorithm;
btCollisionAlgorithm.prototype['getAllContactManifolds'] = function(arg0) {
    _emscripten_bind_btCollisionAlgorithm__getAllContactManifolds_p1(this.ptr, arg0);
}
btCollisionAlgorithm.prototype['calculateTimeOfImpact'] = function(arg0, arg1, arg2, arg3) {
    return _emscripten_bind_btCollisionAlgorithm__calculateTimeOfImpact_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
}
btCollisionAlgorithm.prototype['processCollision'] = function(arg0, arg1, arg2, arg3) {
    _emscripten_bind_btCollisionAlgorithm__processCollision_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr);
}
btSphereShape.prototype['calculateLocalInertia'] = function(arg0, arg1) {
    _emscripten_bind_btSphereShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr);
}
btSphereShape.prototype['isCompound'] = function() {
    return _emscripten_bind_btSphereShape__isCompound_p0(this.ptr);
}
btSphereShape.prototype['localGetSupportingVertex'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btSphereShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btSphereShape.prototype['setUserPointer'] = function(arg0) {
    _emscripten_bind_btSphereShape__setUserPointer_p1(this.ptr, arg0);
}
btSphereShape.prototype['getMarginNV'] = function() {
    return _emscripten_bind_btSphereShape__getMarginNV_p0(this.ptr);
}
btSphereShape.prototype['serialize'] = function(arg0, arg1) {
    return _emscripten_bind_btSphereShape__serialize_p2(this.ptr, arg0, arg1.ptr);
}
btSphereShape.prototype['getLocalScaling'] = function() {
    return wrapPointer(_emscripten_bind_btSphereShape__getLocalScaling_p0(this.ptr), Module['btVector3']);
}
btSphereShape.prototype['getNumPreferredPenetrationDirections'] = function() {
    return _emscripten_bind_btSphereShape__getNumPreferredPenetrationDirections_p0(this.ptr);
}
btSphereShape.prototype['isPolyhedral'] = function() {
    return _emscripten_bind_btSphereShape__isPolyhedral_p0(this.ptr);
}
btSphereShape.prototype['getRadius'] = function() {
    return _emscripten_bind_btSphereShape__getRadius_p0(this.ptr);
}
btSphereShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btSphereShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btSphereShape.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btSphereShape__calculateSerializeBufferSize_p0(this.ptr);
}
btSphereShape.prototype['getName'] = function() {
    return _emscripten_bind_btSphereShape__getName_p0(this.ptr);
}
btSphereShape.prototype['getLocalScalingNV'] = function() {
    return wrapPointer(_emscripten_bind_btSphereShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']);
}
btSphereShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btSphereShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btSphereShape.prototype['setImplicitShapeDimensions'] = function(arg0) {
    _emscripten_bind_btSphereShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr);
}
btSphereShape.prototype['setLocalScaling'] = function(arg0) {
    _emscripten_bind_btSphereShape__setLocalScaling_p1(this.ptr, arg0.ptr);
}
btSphereShape.prototype['getAabb'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btSphereShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btSphereShape.prototype['setUnscaledRadius'] = function(arg0) {
    _emscripten_bind_btSphereShape__setUnscaledRadius_p1(this.ptr, arg0);
}
btSphereShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btSphereShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btSphereShape.prototype['getContactBreakingThreshold'] = function(arg0) {
    return _emscripten_bind_btSphereShape__getContactBreakingThreshold_p1(this.ptr, arg0);
}
btSphereShape.prototype['isConvex'] = function() {
    return _emscripten_bind_btSphereShape__isConvex_p0(this.ptr);
}
btSphereShape.prototype['isInfinite'] = function() {
    return _emscripten_bind_btSphereShape__isInfinite_p0(this.ptr);
}
btSphereShape.prototype['getUserPointer'] = function() {
    return _emscripten_bind_btSphereShape__getUserPointer_p0(this.ptr);
}
btSphereShape.prototype['isNonMoving'] = function() {
    return _emscripten_bind_btSphereShape__isNonMoving_p0(this.ptr);
}
btSphereShape.prototype['getMargin'] = function() {
    return _emscripten_bind_btSphereShape__getMargin_p0(this.ptr);
}
btSphereShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) {
    _emscripten_bind_btSphereShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr);
}
btSphereShape.prototype['setMargin'] = function(arg0) {
    _emscripten_bind_btSphereShape__setMargin_p1(this.ptr, arg0);
}
btSphereShape.prototype['isConvex2d'] = function() {
    return _emscripten_bind_btSphereShape__isConvex2d_p0(this.ptr);
}
function btSphereShape(arg0) {
    this.ptr = _emscripten_bind_btSphereShape__btSphereShape_p1(arg0);
  btSphereShape.prototype.__cache__[this.ptr] = this;
  this.__class__ = btSphereShape;
}
btSphereShape.prototype.__cache__ = {};
Module['btSphereShape'] = btSphereShape;
btSphereShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btSphereShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']);
}
btSphereShape.prototype['isSoftBody'] = function() {
    return _emscripten_bind_btSphereShape__isSoftBody_p0(this.ptr);
}
btSphereShape.prototype['getMarginNonVirtual'] = function() {
    return _emscripten_bind_btSphereShape__getMarginNonVirtual_p0(this.ptr);
}
btSphereShape.prototype['__destroy__'] = function() {
    _emscripten_bind_btSphereShape____destroy___p0(this.ptr);
}
btSphereShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btSphereShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btSphereShape.prototype['getImplicitShapeDimensions'] = function() {
    return wrapPointer(_emscripten_bind_btSphereShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']);
}
btSphereShape.prototype['getBoundingSphere'] = function(arg0, arg1) {
    _emscripten_bind_btSphereShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1);
}
btSphereShape.prototype['getAngularMotionDisc'] = function() {
    return _emscripten_bind_btSphereShape__getAngularMotionDisc_p0(this.ptr);
}
btSphereShape.prototype['serializeSingleShape'] = function(arg0) {
    _emscripten_bind_btSphereShape__serializeSingleShape_p1(this.ptr, arg0.ptr);
}
btSphereShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btSphereShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btSphereShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) {
    _emscripten_bind_btSphereShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr);
}
btSphereShape.prototype['isConcave'] = function() {
    return _emscripten_bind_btSphereShape__isConcave_p0(this.ptr);
}
btSphereShape.prototype['getShapeType'] = function() {
    return _emscripten_bind_btSphereShape__getShapeType_p0(this.ptr);
}
btQuantizedBvh.prototype['setTraversalMode'] = function(arg0) {
    _emscripten_bind_btQuantizedBvh__setTraversalMode_p1(this.ptr, arg0);
}
btQuantizedBvh.prototype['buildInternal'] = function() {
    _emscripten_bind_btQuantizedBvh__buildInternal_p0(this.ptr);
}
btQuantizedBvh.prototype['serialize'] = function(arg0, arg1, arg2) {
  if (arg2 === undefined)
    return _emscripten_bind_btQuantizedBvh__serialize_p2(this.ptr, arg0, arg1.ptr);
  else 
    return _emscripten_bind_btQuantizedBvh__serialize_p3(this.ptr, arg0, arg1, arg2);
}
btQuantizedBvh.prototype['getLeafNodeArray'] = function() {
    return _emscripten_bind_btQuantizedBvh__getLeafNodeArray_p0(this.ptr);
}
btQuantizedBvh.prototype['setQuantizationValues'] = function(arg0, arg1, arg2) {
  if (arg2 === undefined)
    _emscripten_bind_btQuantizedBvh__setQuantizationValues_p2(this.ptr, arg0.ptr, arg1.ptr);
  else 
    _emscripten_bind_btQuantizedBvh__setQuantizationValues_p3(this.ptr, arg0.ptr, arg1.ptr, arg2);
}
btQuantizedBvh.prototype['quantize'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btQuantizedBvh__quantize_p3(this.ptr, arg0, arg1.ptr, arg2);
}
btQuantizedBvh.prototype['isQuantized'] = function() {
    return _emscripten_bind_btQuantizedBvh__isQuantized_p0(this.ptr);
}
btQuantizedBvh.prototype['getAlignmentSerializationPadding'] = function() {
    return _emscripten_bind_btQuantizedBvh__getAlignmentSerializationPadding_p0();
}
btQuantizedBvh.prototype['calculateSerializeBufferSize'] = function() {
    return _emscripten_bind_btQuantizedBvh__calculateSerializeBufferSize_p0(this.ptr);
}
btQuantizedBvh.prototype['getQuantizedNodeArray'] = function() {
    return _emscripten_bind_btQuantizedBvh__getQuantizedNodeArray_p0(this.ptr);
}
btQuantizedBvh.prototype['reportAabbOverlappingNodex'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btQuantizedBvh__reportAabbOverlappingNodex_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btQuantizedBvh.prototype['reportRayOverlappingNodex'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btQuantizedBvh__reportRayOverlappingNodex_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btQuantizedBvh.prototype['deSerializeInPlace'] = function(arg0, arg1, arg2) {
    return wrapPointer(_emscripten_bind_btQuantizedBvh__deSerializeInPlace_p3(arg0, arg1, arg2), Module['btQuantizedBvh']);
}
btQuantizedBvh.prototype['quantizeWithClamp'] = function(arg0, arg1, arg2) {
    _emscripten_bind_btQuantizedBvh__quantizeWithClamp_p3(this.ptr, arg0, arg1.ptr, arg2);
}
btQuantizedBvh.prototype['deSerializeDouble'] = function(arg0) {
    _emscripten_bind_btQuantizedBvh__deSerializeDouble_p1(this.ptr, arg0.ptr);
}
btQuantizedBvh.prototype['calculateSerializeBufferSizeNew'] = function() {
    return _emscripten_bind_btQuantizedBvh__calculateSerializeBufferSizeNew_p0(this.ptr);
}
btQuantizedBvh.prototype['__destroy__'] = function() {
    _emscripten_bind_btQuantizedBvh____destroy___p0(this.ptr);
}
function btQuantizedBvh() {
    this.ptr = _emscripten_bind_btQuantizedBvh__btQuantizedBvh_p0();
  btQuantizedBvh.prototype.__cache__[this.ptr] = this;
  this.__class__ = btQuantizedBvh;
}
btQuantizedBvh.prototype.__cache__ = {};
Module['btQuantizedBvh'] = btQuantizedBvh;
btQuantizedBvh.prototype['deSerializeFloat'] = function(arg0) {
    _emscripten_bind_btQuantizedBvh__deSerializeFloat_p1(this.ptr, arg0.ptr);
}
btQuantizedBvh.prototype['getSubtreeInfoArray'] = function() {
    return _emscripten_bind_btQuantizedBvh__getSubtreeInfoArray_p0(this.ptr);
}
btQuantizedBvh.prototype['unQuantize'] = function(arg0) {
    return wrapPointer(_emscripten_bind_btQuantizedBvh__unQuantize_p1(this.ptr, arg0), Module['btVector3']);
}
btQuantizedBvh.prototype['reportBoxCastOverlappingNodex'] = function(arg0, arg1, arg2, arg3, arg4) {
    _emscripten_bind_btQuantizedBvh__reportBoxCastOverlappingNodex_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr);
}
btHashString.prototype['get_m_string'] = function() {
    return _emscripten_bind_btHashString__get_m_string_p0(this.ptr);
}
btHashString.prototype['__destroy__'] = function() {
    _emscripten_bind_btHashString____destroy___p0(this.ptr);
}
btHashString.prototype['set_m_hash'] = function(arg0) {
    _emscripten_bind_btHashString__set_m_hash_p1(this.ptr, arg0);
}
btHashString.prototype['set_m_string'] = function(arg0) {
var stack = Runtime.stackSave();
try {
    _emscripten_bind_btHashString__set_m_string_p1(this.ptr, ensureString(arg0));
} finally { Runtime.stackRestore(stack) }
}
function btHashString(arg0) {
var stack = Runtime.stackSave();
try {
    this.ptr = _emscripten_bind_btHashString__btHashString_p1(ensureString(arg0));
} finally { Runtime.stackRestore(stack) }
  btHashString.prototype.__cache__[this.ptr] = this;
  this.__class__ = btHashString;
}
btHashString.prototype.__cache__ = {};
Module['btHashString'] = btHashString;
btHashString.prototype['equals'] = function(arg0) {
    return _emscripten_bind_btHashString__equals_p1(this.ptr, arg0.ptr);
}
btHashString.prototype['getHash'] = function() {
    return _emscripten_bind_btHashString__getHash_p0(this.ptr);
}
btHashString.prototype['portableStringCompare'] = function(arg0, arg1) {
var stack = Runtime.stackSave();
try {
    return _emscripten_bind_btHashString__portableStringCompare_p2(this.ptr, ensureString(arg0), ensureString(arg1));
} finally { Runtime.stackRestore(stack) }
}
btHashString.prototype['get_m_hash'] = function() {
    return _emscripten_bind_btHashString__get_m_hash_p0(this.ptr);
}
btGhostPairCallback.prototype['addOverlappingPair'] = function(arg0, arg1) {
    return wrapPointer(_emscripten_bind_btGhostPairCallback__addOverlappingPair_p2(this.ptr, arg0.ptr, arg1.ptr), Module['btBroadphasePair']);
}
btGhostPairCallback.prototype['removeOverlappingPair'] = function(arg0, arg1, arg2) {
    return _emscripten_bind_btGhostPairCallback__removeOverlappingPair_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr);
}
btGhostPairCallback.prototype['__destroy__'] = function() {
    _emscripten_bind_btGhostPairCallback____destroy___p0(this.ptr);
}
function btGhostPairCallback() {
    this.ptr = _emscripten_bind_btGhostPairCallback__btGhostPairCallback_p0();
  btGhostPairCallback.prototype.__cache__[this.ptr] = this;
  this.__class__ = btGhostPairCallback;
}
btGhostPairCallback.prototype.__cache__ = {};
Module['btGhostPairCallback'] = btGhostPairCallback;
btGhostPairCallback.prototype['removeOverlappingPairsContainingProxy'] = function(arg0, arg1) {
    _emscripten_bind_btGhostPairCallback__removeOverlappingPairsContainingProxy_p2(this.ptr, arg0.ptr, arg1.ptr);
}
this['Ammo'] = Module; /* With or without a closure, the proper usage is Ammo.* */

/** X3DOM Runtime, http://www.x3dom.org/ 1.7.0 - f33e92d248a2f25d52fa63ede8ffee570c8a6304 - Wed Jun 17 09:49:25 2015 +0200 */
if(!Array.forEach){Array.forEach=function(array,fun,thisp){var len=array.length;for(var i=0;i<len;i++){if(i in array){fun.call(thisp,array[i],i,array);}}};}
if(!Array.map){Array.map=function(array,fun,thisp){var len=array.length;var res=[];for(var i=0;i<len;i++){if(i in array){res[i]=fun.call(thisp,array[i],i,array);}}
return res;};}
if(!Array.filter){Array.filter=function(array,fun,thisp){var len=array.length;var res=[];for(var i=0;i<len;i++){if(i in array){var val=array[i];if(fun.call(thisp,val,i,array)){res.push(val);}}}
return res;};}
var x3dom={canvases:[],x3dNS:'http://www.web3d.org/specifications/x3d-namespace',x3dextNS:'http://philip.html5.org/x3d/ext',xsltNS:'http://www.w3.org/1999/XSL/x3dom.Transform',xhtmlNS:'http://www.w3.org/1999/xhtml'};x3dom.nodeTypes={};x3dom.nodeTypesLC={};x3dom.components={};x3dom.geoCache=[];x3dom.caps={PLATFORM:navigator.platform,AGENT:navigator.userAgent,RENDERMODE:"HARDWARE"};x3dom.registerNodeType=function(nodeTypeName,componentName,nodeDef){if(x3dom.components[componentName]===undefined){x3dom.components[componentName]={};}
nodeDef._typeName=nodeTypeName;nodeDef._compName=componentName;x3dom.components[componentName][nodeTypeName]=nodeDef;x3dom.nodeTypes[nodeTypeName]=nodeDef;x3dom.nodeTypesLC[nodeTypeName.toLowerCase()]=nodeDef;};x3dom.isX3DElement=function(node){var name=(node.nodeType===Node.ELEMENT_NODE&&node.localName)?node.localName.toLowerCase():null;return(name&&(x3dom.nodeTypes[node.localName]||x3dom.nodeTypesLC[name]||name=="x3d"||name=="websg"||name=="route"));};x3dom.extend=function(f){function G(){}
G.prototype=f.prototype||f;return new G();};x3dom.getStyle=function(oElm,strCssRule){var strValue="";var style=document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(oElm,null):null;if(style){strValue=style.getPropertyValue(strCssRule);}
else if(oElm.currentStyle){strCssRule=strCssRule.replace(/\-(\w)/g,function(strMatch,p1){return p1.toUpperCase();});strValue=oElm.currentStyle[strCssRule];}
return strValue;};function defineClass(parent,ctor,methods){if(parent){function Inheritance(){}
Inheritance.prototype=parent.prototype;ctor.prototype=new Inheritance();ctor.prototype.constructor=ctor;ctor.superClass=parent;}
if(methods){for(var m in methods){ctor.prototype[m]=methods[m];}}
return ctor;}
x3dom.isa=function(object,clazz){return(object instanceof clazz);};x3dom.getGlobal=function(){return(function(){return this;}).call(null);};x3dom.loadJS=function(src,path_prefix,blocking){blocking=(blocking===false)?blocking:true;if(blocking){var url=(path_prefix)?path_prefix.trim()+src:src;var req=new XMLHttpRequest();if(req){req.open("GET",url,false);req.send(null);eval(req.responseText);}}else{var head=document.getElementsByTagName('HEAD').item(0);var script=document.createElement("script");var loadpath=(path_prefix)?path_prefix.trim()+src:src;if(head){x3dom.debug.logError("Trying to load external JS file: "+loadpath);script.type="text/javascript";script.src=loadpath;head.appendChild(script);}else{alert("No document object found. Can't load components!");}}};function array_to_object(a){var o={};for(var i=0;i<a.length;i++){o[a[i]]='';}
return o;}
window.requestAnimFrame=(function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(callback,element){window.setTimeout(callback,16);};})();x3dom.toggleFullScreen=function(){if(document.fullScreen||document.mozFullScreen||document.webkitIsFullScreen){if(document.cancelFullScreen){document.cancelFullScreen();}
else if(document.mozCancelFullScreen){document.mozCancelFullScreen();}
else if(document.webkitCancelFullScreen){document.webkitCancelFullScreen();}}
else{var docElem=document.documentElement;if(docElem.requestFullScreen){docElem.requestFullScreen();}
else if(docElem.mozRequestFullScreen){docElem.mozRequestFullScreen();}
else if(docElem.webkitRequestFullScreen){docElem.webkitRequestFullScreen();}}};x3dom.debug={INFO:"INFO",WARNING:"WARNING",ERROR:"ERROR",EXCEPTION:"EXCEPTION",isActive:false,isFirebugAvailable:false,isSetup:false,isAppend:false,numLinesLogged:0,maxLinesToLog:10000,logContainer:null,setup:function(){if(x3dom.debug.isSetup){return;}
try{if(window.console.firebug!==undefined){x3dom.debug.isFirebugAvailable=true;}}
catch(err){x3dom.debug.isFirebugAvailable=false;}
x3dom.debug.setupLogContainer();x3dom.debug.isSetup=true;},activate:function(visible){x3dom.debug.isActive=true;x3dom.debug.logContainer.style.display=(visible)?"block":"none";if(!x3dom.debug.isAppend){if(navigator.appName=="Microsoft Internet Explorer"){x3dom.debug.logContainer.style.marginLeft="8px";document.documentElement.appendChild(x3dom.debug.logContainer);}else{document.body.appendChild(x3dom.debug.logContainer);}
x3dom.debug.isAppend=true;}},setupLogContainer:function(){x3dom.debug.logContainer=document.createElement("div");x3dom.debug.logContainer.id="x3dom_logdiv";x3dom.debug.logContainer.setAttribute("class","x3dom-logContainer");x3dom.debug.logContainer.style.clear="both";},doLog:function(msg,logType){if(!x3dom.debug.isActive){return;}
if(x3dom.debug.numLinesLogged===x3dom.debug.maxLinesToLog){msg="Maximum number of log lines (="+x3dom.debug.maxLinesToLog+") reached. Deactivating logging...";}
if(x3dom.debug.numLinesLogged>x3dom.debug.maxLinesToLog){return;}
var node=document.createElement("p");node.style.margin=0;switch(logType){case x3dom.debug.INFO:node.style.color="#00ff00";break;case x3dom.debug.WARNING:node.style.color="#cd853f";break;case x3dom.debug.ERROR:node.style.color="#ff4500";break;case x3dom.debug.EXCEPTION:node.style.color="#ffff00";break;default:node.style.color="#00ff00";break;}
try{node.innerHTML=logType+": "+msg;x3dom.debug.logContainer.insertBefore(node,x3dom.debug.logContainer.firstChild);}catch(err){if(window.console.firebug!==undefined){window.console.warn(msg);}}
if(x3dom.debug.isFirebugAvailable){switch(logType){case x3dom.debug.INFO:window.console.info(msg);break;case x3dom.debug.WARNING:window.console.warn(msg);break;case x3dom.debug.ERROR:window.console.error(msg);break;case x3dom.debug.EXCEPTION:window.console.debug(msg);break;default:break;}}
x3dom.debug.numLinesLogged++;},logInfo:function(msg){x3dom.debug.doLog(msg,x3dom.debug.INFO);},logWarning:function(msg){x3dom.debug.doLog(msg,x3dom.debug.WARNING);},logError:function(msg){x3dom.debug.doLog(msg,x3dom.debug.ERROR);},logException:function(msg){x3dom.debug.doLog(msg,x3dom.debug.EXCEPTION);},assert:function(c,msg){if(!c){x3dom.debug.doLog("Assertion failed in "+
x3dom.debug.assert.caller.name+': '+
msg,x3dom.debug.ERROR);}},typeOf:function(obj){var type=typeof obj;return type==="object"&&!obj?"null":type;},exists:function(obj,name,type){type=type||"function";return(obj?this.typeOf(obj[name]):"null")===type;},dumpFields:function(node){var str="";for(var fName in node){str+=(fName+", ");}
str+='\n';x3dom.debug.logInfo(str);return str;}};x3dom.debug.setup();x3dom.arc={};x3dom.arc.instance=null;x3dom.arc.Limits=function(min,max,initial)
{this._min=min;this._max=max;this.getValue=function(value)
{value=this._min+(this._max-this._min)*value;return this._max>=value?(this._min<=value?value:this._min):this._max;};};x3dom.arc.ARF=function(name,min,max,dirFac,factorGetterFunc,factorSetterFunc,getterFunc,setterFunc)
{this._name=name;this._stateValue=[0.5,0.5];this._limits=new x3dom.arc.Limits(min,max);this._factorGetterFunc=factorGetterFunc;this._factorSetterFunc=factorSetterFunc;this._setterFunc=setterFunc;this._getterFunc=getterFunc;this._dirFac=dirFac;this.getFactor=function()
{return this._factorGetterFunc();};this.update=function(state,step)
{var stateVal=this._stateValue[state]+step*this._dirFac;this._stateValue[state]=0<=stateVal?(1>=stateVal?stateVal:1):0;this._setterFunc(this._limits.getValue(this._stateValue[state]));};this.reset=function()
{this._stateValue[0]=0.5;this._stateValue[1]=0.5;};};x3dom.arc.AdaptiveRenderControl=defineClass(null,function(scene)
{x3dom.arc.instance=this;this._scene=scene;this._targetFrameRate=[];this._targetFrameRate[0]=this._scene._vf.minFrameRate;this._targetFrameRate[1]=this._scene._vf.maxFrameRate;this._currentState=0;var that=this;var environment=that._scene.getEnvironment();this._arfs=[];this._arfs.push(new x3dom.arc.ARF("smallFeatureCulling",0,10,-1,function()
{return environment._vf.smallFeatureFactor;},function(value)
{environment._vf.smallFeatureFactor=value;},function()
{return environment._vf.smallFeatureThreshold;},function(value)
{environment._vf.smallFeatureThreshold=value;}));this._arfs.push(new x3dom.arc.ARF("lowPriorityCulling",0,100,1,function()
{return environment._vf.lowPriorityFactor;},function(value)
{environment._vf.lowPriorityFactor=value;},function()
{return environment._vf.lowPriorityThreshold*100;},function(value)
{environment._vf.lowPriorityThreshold=value/100;}));this._arfs.push(new x3dom.arc.ARF("tessellationDetailCulling",1,12,-1,function()
{return environment._vf.tessellationErrorFactor;},function(value)
{environment._vf.tessellationErrorFactor=value;},function()
{return environment.tessellationErrorThreshold;},function(value)
{environment.tessellationErrorThreshold=value;}));this._stepWidth=0.1;},{update:function(state,fps)
{this._currentState=state;var delta=fps-this._targetFrameRate[state];this._stepWidth=Math.abs(delta)>10?0.1:0.01;var factorSum=0;var normFactors=[];var i,n=this._arfs.length;for(i=0;i<n;++i)
{normFactors[i]=this._arfs[i].getFactor();if(normFactors[i]>0)
factorSum+=normFactors[i];}
var dirFac=delta<0?-1:1;for(i=0;i<n;++i)
{if(normFactors[i]>0)
{normFactors[i]/=factorSum;this._arfs[i].update(state,this._stepWidth*normFactors[i]*dirFac);}}},reset:function()
{for(var i=0,n=this._arfs.length;i<n;++i)
{this._arfs[i].reset();}}});var Request=function(url,onloadCallback,priority){this.url=url;this.priority=priority;this.xhr=new XMLHttpRequest();this.onloadCallbacks=[onloadCallback];var self=this;this.xhr.onload=function(){if(x3dom.DownloadManager.debugOutput){x3dom.debug.logInfo('Download manager received data for URL \''+self.url+'\'.');}
--x3dom.DownloadManager.activeDownloads;if((x3dom.DownloadManager.stallToKeepOrder===false)||(x3dom.DownloadManager.resultGetsStalled(self.priority)===false)){var i;for(i=0;i<self.onloadCallbacks.length;++i){self.onloadCallbacks[i](self.xhr.response);}
x3dom.DownloadManager.removeDownload(self);x3dom.DownloadManager.updateStalledResults();}
else if(x3dom.DownloadManager.debugOutput){x3dom.debug.logInfo('Download manager stalled downloaded result for URL \''+self.url+'\'.');}
x3dom.DownloadManager.tryNextDownload();};};Request.prototype.send=function(){this.xhr.open('GET',encodeURI(this.url),true);this.xhr.responseType='arraybuffer';this.xhr.send(null);if(x3dom.DownloadManager.debugOutput){x3dom.debug.logInfo('Download manager posted XHR for URL \''+this.url+'\'.');}};x3dom.DownloadManager={requests:[],maxDownloads:6,activeDownloads:0,debugOutput:false,stallToKeepOrder:false,toggleDebugOutput:function(flag){this.debugOutput=flag;},toggleStrictReturnOrder:function(flag){this.stallToKeepOrder=false;},removeDownload:function(req){var i,j;var done=false;for(i=0;i<this.requests.length&&!done;++i){if(this.requests[i]){for(j=0;j<this.requests[i].length;++j){if(this.requests[i][j]===req){this.requests[i].splice(j,1);done=true;break;}}}}},tryNextDownload:function(){var firstRequest;var i,j;if(this.activeDownloads<this.maxDownloads){for(i=0;i<this.requests.length&&!firstRequest;++i){if(this.requests[i]){for(j=0;j<this.requests[i].length;++j){if(this.requests[i][j].xhr.readyState===XMLHttpRequest.UNSENT){firstRequest=this.requests[i][j];break;}}}}
if(firstRequest){firstRequest.send();++this.activeDownloads;}}},resultGetsStalled:function(priority){var i;for(i=0;i<priority;++i){if(this.requests[i]&&this.requests[i].length){return true;}}
return false;},updateStalledResults:function(){if(x3dom.DownloadManager.stallToKeepOrder){var i,j,k;var req,pendingRequestFound=false;for(i=0;i<this.requests.length&&!pendingRequestFound;++i){if(this.requests[i]){for(j=0;j<this.requests[i].length;++j){req=this.requests[i][j];if(req.xhr.readyState===XMLHttpRequest.DONE){if(x3dom.DownloadManager.debugOutput){x3dom.debug.logInfo('Download manager releases stalled result for URL \''+req.url+'\'.');}
for(k=0;k<req.onloadCallbacks.length;++k){req.onloadCallbacks[k](req.xhr.response);}
this.requests[i].splice(j,1);}
else{pendingRequestFound=true;}}}}}},get:function(urls,onloadCallbacks,priorities){var i,j,k,r;var found=false;var url,onloadCallback,priority;if(urls.length!==onloadCallbacks.length||urls.length!==priorities.length)
{x3dom.debug.logError('DownloadManager: The number of given urls, onload callbacks and priorities is not equal. Ignoring requests.');return;}
for(k=0;k<urls.length;++k){if(!onloadCallbacks[k]===undefined||!priorities[k]===undefined){x3dom.debug.logError('DownloadManager: No onload callback and / or priority specified. Ignoring request for \"'+url+'\"');continue;}
else{url=urls[k];onloadCallback=onloadCallbacks[k];priority=priorities[k];for(i=0;i<this.requests.length&&!found;++i){if(this.requests[i]){for(j=0;j<this.requests[i].length;++j){if(this.requests[i][j].url===url){this.requests[i][j].onloadCallbacks.push(onloadCallback);if(x3dom.DownloadManager.debugOutput){x3dom.debug.logInfo('Download manager appended onload callback for URL \''+url+'\' to a registered request using the same URL.');}
found=true;break;}}}}
if(!found){r=new Request(url,onloadCallback,priority);if(this.requests[priority]){this.requests[priority].push(r);}
else{this.requests[priority]=[r];}}}}
for(i=0;i<urls.length&&this.activeDownloads<this.maxDownloads;++i){this.tryNextDownload();}}};x3dom.MultiMaterial=function(params)
{this._origAmbientIntensity=params.ambientIntensity;this._origDiffuseColor=params.diffuseColor;this._origEmissiveColor=params.emissiveColor;this._origShininess=params.shininess;this._origSpeclarColor=params.specularColor;this._origTransparency=params.transparency;this._origBackAmbientIntensity=params.backAmbientIntensity;this._origBackDiffuseColor=params.backDiffuseColor;this._origBackEmissiveColor=params.backEmissiveColor;this._origBackShininess=params.backShininess;this._origBackSpecularColor=params.backSpecularColor;this._origBackTransparency=params.backTransparency;this._ambientIntensity=params.ambientIntensity;this._diffuseColor=params.diffuseColor;this._emissiveColor=params.emissiveColor;this._shininess=params.shininess;this._specularColor=params.specularColor;this._transparency=params.transparency;this._backAmbientIntensity=params.backAmbientIntensity;this._backDiffuseColor=params.backDiffuseColor;this._backEmissiveColor=params.backEmissiveColor;this._backShininess=params.backShininess;this._backSpecularColor=params.backSpecularColor;this._backTransparency=params.backTransparency;this._highlighted=false;this.reset=function(){this._ambientIntensity=this._origAmbientIntensity;this._diffuseColor=this._origDiffuseColor;this._emissiveColor=this._origEmissiveColor;this._shininess=this._origShininess;this._specularColor=this._origSpeclarColor;this._transparency=this._origTransparency;this._backAmbientIntensity=this._origBackAmbientIntensity;this._backDiffuseColor=this._origBackDiffuseColor;this._backEmissiveColor=this._origBackEmissiveColor;this._backShininess=this._origBackShininess;this._backSpecularColor=this._origBackSpecularColor;this._backTransparency=this._origBackTransparency;};};x3dom.Parts=function(multiPart,ids,colorMap,emissiveMap,specularMap,visibilityMap)
{var parts=this;this.multiPart=multiPart;this.ids=ids;this.colorMap=colorMap;this.emissiveMap=emissiveMap;this.specularMap=specularMap;this.visibilityMap=visibilityMap;this.width=parts.colorMap.getWidth();this.widthTwo=this.width*this.width;this.setDiffuseColor=function(color,side)
{var i,partID,pixelIDFront,pixelIDBack;if(side==undefined&&side!="front"&&side!="back"&&side!="both"){side="both";}
color=x3dom.fields.SFColor.parse(color);if(ids.length&&ids.length>1)
{var pixels=parts.colorMap.getPixels();for(i=0;i<parts.ids.length;i++)
{partID=parts.ids[i];pixelIDFront=partID;pixelIDBack=partID+this.widthTwo;if(side=="front")
{this.multiPart._materials[partID]._diffuseColor=color;}
else if(side=="back")
{this.multiPart._materials[partID]._backDiffuseColor=color;}
else if(side=="both")
{this.multiPart._materials[partID]._diffuseColor=color;this.multiPart._materials[partID]._backDiffuseColor=color;}
if(!this.multiPart._materials[partID]._highlighted)
{if(side=="front"){pixels[pixelIDFront].r=color.r;pixels[pixelIDFront].g=color.g;pixels[pixelIDFront].b=color.b;}else if(side=="back"){pixels[pixelIDBack].r=color.r;pixels[pixelIDBack].g=color.g;pixels[pixelIDBack].b=color.b;}else if(side=="both"){pixels[pixelIDFront].r=color.r;pixels[pixelIDFront].g=color.g;pixels[pixelIDFront].b=color.b;pixels[pixelIDBack].r=color.r;pixels[pixelIDBack].g=color.g;pixels[pixelIDBack].b=color.b;}}}
parts.colorMap.setPixels(pixels);}
else
{var xFront,yFront,xBack,yBack,pixelFront,pixelBack;partID=parts.ids[0];pixelIDFront=partID;pixelIDBack=partID+this.widthTwo;if(side=="front")
{xFront=pixelIDFront%this.width;yFront=Math.floor(pixelIDFront/this.width);pixelFront=parts.colorMap.getPixel(xFront,yFront);this.multiPart._materials[partID]._diffuseColor=color;}
else if(side=="back")
{xBack=pixelIDBack%this.width;yBack=Math.floor(pixelIDBack/this.width);pixelBack=parts.colorMap.getPixel(xBack,yBack);this.multiPart._materials[partID]._backDiffuseColor=color;}
else if(side=="both")
{xFront=pixelIDFront%this.width;yFront=Math.floor(pixelIDFront/this.width);xBack=pixelIDBack%this.width;yBack=Math.floor(pixelIDBack/this.width);pixelFront=parts.colorMap.getPixel(xFront,yFront);pixelBack=parts.colorMap.getPixel(xBack,yBack);this.multiPart._materials[partID]._diffuseColor=color;this.multiPart._materials[partID]._backDiffuseColor=color;}
if(!this.multiPart._materials[partID]._highlighted)
{if(side=="front")
{pixelFront.r=color.r;pixelFront.g=color.g;pixelFront.b=color.b;parts.colorMap.setPixel(xFront,yFront,pixelFront);}
else if(side=="back")
{pixelBack.r=color.r;pixelBack.g=color.g;pixelBack.b=color.b;parts.colorMap.setPixel(xBack,yBack,pixelBack);}
else if(side=="both")
{pixelFront.r=color.r;pixelFront.g=color.g;pixelFront.b=color.b;pixelBack.r=color.r;pixelBack.g=color.g;pixelBack.b=color.b;parts.colorMap.setPixel(xFront,yFront,pixelFront);parts.colorMap.setPixel(xBack,yBack,pixelBack);}}}};this.getDiffuseColor=function(side)
{var i,partID;if(side==undefined&&side!="front"&&side!="back"){side="front";}
if(ids.length&&ids.length>1)
{var diffuseColors=[];for(i=0;i<parts.ids.length;i++)
{partID=parts.ids[i];if(side=="front")
{diffuseColors.push(this.multiPart._materials[partID]._diffuseColor);}
else if(side=="back")
{diffuseColors.push(this.multiPart._materials[partID]._backDiffuseColor);}}
return diffuseColors;}
else
{partID=parts.ids[0];if(side=="front")
{return this.multiPart._materials[partID]._diffuseColor;}
else if(side=="back")
{return this.multiPart._materials[partID]._backDiffuseColor;}}};this.setEmissiveColor=function(color,side)
{var i,partID,pixelIDFront,pixelIDBack;if(side==undefined&&side!="front"&&side!="back"&&side!="both"){side="both";}
color=x3dom.fields.SFColor.parse(color);if(ids.length&&ids.length>1)
{var pixels=parts.emissiveMap.getPixels();for(i=0;i<parts.ids.length;i++)
{partID=parts.ids[i];pixelIDFront=partID;pixelIDBack=partID+this.widthTwo;if(side=="front")
{this.multiPart._materials[partID]._emissiveColor=color;}
else if(side=="back")
{this.multiPart._materials[partID]._backEmissiveColor=color;}
else if(side=="both")
{this.multiPart._materials[partID]._emissiveColor=color;this.multiPart._materials[partID]._backEmissiveColor=color;}
if(!this.multiPart._materials[partID]._highlighted)
{if(side=="front"){pixels[pixelIDFront].r=color.r;pixels[pixelIDFront].g=color.g;pixels[pixelIDFront].b=color.b;}else if(side=="back"){pixels[pixelIDBack].r=color.r;pixels[pixelIDBack].g=color.g;pixels[pixelIDBack].b=color.b;}else if(side=="both"){pixels[pixelIDFront].r=color.r;pixels[pixelIDFront].g=color.g;pixels[pixelIDFront].b=color.b;pixels[pixelIDBack].r=color.r;pixels[pixelIDBack].g=color.g;pixels[pixelIDBack].b=color.b;}}}
parts.emissiveMap.setPixels(pixels);}
else
{var xFront,yFront,xBack,yBack,pixelFront,pixelBack;partID=parts.ids[0];pixelIDFront=partID;pixelIDBack=partID+this.widthTwo;if(side=="front")
{xFront=pixelIDFront%this.width;yFront=Math.floor(pixelIDFront/this.width);pixelFront=parts.emissiveMap.getPixel(xFront,yFront);this.multiPart._materials[partID]._emissiveColor=color;}
else if(side=="back")
{xBack=pixelIDBack%this.width;yBack=Math.floor(pixelIDBack/this.width);pixelBack=parts.emissiveMap.getPixel(xBack,yBack);this.multiPart._materials[partID]._backEmissiveColor=color;}
else if(side=="both")
{xFront=pixelIDFront%this.width;yFront=Math.floor(pixelIDFront/this.width);xBack=pixelIDBack%this.width;yBack=Math.floor(pixelIDBack/this.width);pixelFront=parts.emissiveMap.getPixel(xFront,yFront);pixelBack=parts.emissiveMap.getPixel(xBack,yBack);this.multiPart._materials[partID]._emissiveColor=color;this.multiPart._materials[partID]._backEmissiveColor=color;}
if(!this.multiPart._materials[partID]._highlighted)
{if(side=="front")
{pixelFront.r=color.r;pixelFront.g=color.g;pixelFront.b=color.b;parts.emissiveMap.setPixel(xFront,yFront,pixelFront);}
else if(side=="back")
{pixelBack.r=color.r;pixelBack.g=color.g;pixelBack.b=color.b;parts.emissiveMap.setPixel(xBack,yBack,pixelBack);}
else if(side=="both")
{pixelFront.r=color.r;pixelFront.g=color.g;pixelFront.b=color.b;pixelBack.r=color.r;pixelBack.g=color.g;pixelBack.b=color.b;parts.emissiveMap.setPixel(xFront,yFront,pixelFront);parts.emissiveMap.setPixel(xback,yBack,pixelBack);}}}};this.getEmissiveColor=function(side)
{var i,partID;if(side==undefined&&side!="front"&&side!="back"){side="front";}
if(ids.length&&ids.length>1)
{var emissiveColors=[];for(i=0;i<parts.ids.length;i++)
{partID=parts.ids[i];if(side=="front")
{emissiveColors.push(this.multiPart._materials[partID]._emissiveColor);}
else if(side=="back")
{emissiveColors.push(this.multiPart._materials[partID]._backEmissiveColor);}}
return emissiveColors;}
else
{partID=parts.ids[0];if(side=="front")
{return this.multiPart._materials[partID]._emissiveColor;}
else if(side=="back")
{return this.multiPart._materials[partID]._backEmissiveColor;}}};this.setSpecularColor=function(color,side)
{var i,partID,pixelIDFront,pixelIDBack;if(side==undefined&&side!="front"&&side!="back"&&side!="both"){side="both";}
color=x3dom.fields.SFColor.parse(color);if(ids.length&&ids.length>1)
{var pixels=parts.specularMap.getPixels();for(i=0;i<parts.ids.length;i++)
{partID=parts.ids[i];pixelIDFront=partID;pixelIDBack=partID+this.widthTwo;if(side=="front")
{this.multiPart._materials[partID]._specularColor=color;}
else if(side=="back")
{this.multiPart._materials[partID]._backSpecularColor=color;}
else if(side=="both")
{this.multiPart._materials[partID]._specularColor=color;this.multiPart._materials[partID]._backSpecularColor=color;}
if(!this.multiPart._materials[partID]._highlighted)
{if(side=="front"){pixels[pixelIDFront].r=color.r;pixels[pixelIDFront].g=color.g;pixels[pixelIDFront].b=color.b;}else if(side=="back"){pixels[pixelIDBack].r=color.r;pixels[pixelIDBack].g=color.g;pixels[pixelIDBack].b=color.b;}else if(side=="both"){pixels[pixelIDFront].r=color.r;pixels[pixelIDFront].g=color.g;pixels[pixelIDFront].b=color.b;pixels[pixelIDBack].r=color.r;pixels[pixelIDBack].g=color.g;pixels[pixelIDBack].b=color.b;}}}
parts.specularMap.setPixels(pixels);}
else
{var xFront,yFront,xBack,yBack,pixelFront,pixelBack;partID=parts.ids[0];pixelIDFront=partID;pixelIDBack=partID+this.widthTwo;if(side=="front")
{xFront=pixelIDFront%this.width;yFront=Math.floor(pixelIDFront/this.width);pixelFront=parts.specularMap.getPixel(xFront,yFront);this.multiPart._materials[partID]._specularColor=color;}
else if(side=="back")
{xBack=pixelIDBack%this.width;yBack=Math.floor(pixelIDBack/this.width);pixelBack=parts.specularMap.getPixel(xBack,yBack);this.multiPart._materials[partID]._backSpecularColor=color;}
else if(side=="both")
{xFront=pixelIDFront%this.width;yFront=Math.floor(pixelIDFront/this.width);xBack=pixelIDBack%this.width;yBack=Math.floor(pixelIDBack/this.width);pixelFront=parts.specularMap.getPixel(xFront,yFront);pixelBack=parts.specularMap.getPixel(xBack,yBack);this.multiPart._materials[partID]._specularColor=color;this.multiPart._materials[partID]._backSpecularColor=color;}
if(!this.multiPart._materials[partID]._highlighted)
{if(side=="front")
{pixelFront.r=color.r;pixelFront.g=color.g;pixelFront.b=color.b;parts.specularMap.setPixel(xFront,yFront,pixelFront);}
else if(side=="back")
{pixelBack.r=color.r;pixelBack.g=color.g;pixelBack.b=color.b;parts.specularMap.setPixel(xBack,yBack,pixelBack);}
else if(side=="both")
{pixelFront.r=color.r;pixelFront.g=color.g;pixelFront.b=color.b;pixelBack.r=color.r;pixelBack.g=color.g;pixelBack.b=color.b;parts.specularMap.setPixel(xFront,yFront,pixelFront);parts.specularMap.setPixel(xBack,yBack,pixelBack);}}}};this.getSpecularColor=function(side)
{var i,partID;if(side==undefined&&side!="front"&&side!="back"){side="front";}
if(ids.length&&ids.length>1)
{var specularColors=[];for(i=0;i<parts.ids.length;i++)
{partID=parts.ids[i];if(side=="front")
{specularColors.push(this.multiPart._materials[partID]._specularColor);}
else if(side=="back")
{specularColors.push(this.multiPart._materials[partID]._backSpecularColor);}}
return specularColors;}
else
{partID=parts.ids[0];if(side=="front")
{return this.multiPart._materials[partID]._specularColor;}
else if(side=="back")
{return this.multiPart._materials[partID]._backSpecularColor;}}};this.setTransparency=function(transparency,side)
{var i,partID,pixelIDFront,pixelIDBack;if(side==undefined&&side!="front"&&side!="back"&&side!="both"){side="both";}
if(ids.length&&ids.length>1)
{var pixels=parts.colorMap.getPixels();for(i=0;i<parts.ids.length;i++)
{partID=parts.ids[i];pixelIDFront=partID;pixelIDBack=partID+this.widthTwo;if(side=="front")
{this.multiPart._materials[partID]._transparency=transparency;}
else if(side=="back")
{this.multiPart._materials[partID]._backTransparency=transparency;}
else if(side=="both")
{this.multiPart._materials[partID]._transparency=transparency;this.multiPart._materials[partID]._backTransparency=transparency;}
if(!this.multiPart._materials[partID]._highlighted)
{if(side=="front"){pixels[pixelIDFront].a=1.0-transparency;}else if(side=="back"){pixels[pixelIDBack].a=1.0-transparency;}else if(side=="both"){pixels[pixelIDFront].a=1.0-transparency;pixels[pixelIDBack].a=1.0-transparency;}}}
parts.colorMap.setPixels(pixels);}
else
{var xFront,yFront,xBack,yBack,pixelFront,pixelBack;partID=parts.ids[0];pixelIDFront=partID;pixelIDBack=partID+this.widthTwo;if(side=="front")
{xFront=pixelIDFront%this.width;yFront=Math.floor(pixelIDFront/this.width);pixelFront=parts.colorMap.getPixel(xFront,yFront);this.multiPart._materials[partID]._transparency=transparency;}
else if(side=="back")
{xBack=pixelIDBack%this.width;yBack=Math.floor(pixelIDBack/this.width);pixelBack=parts.colorMap.getPixel(xBack,yBack);this.multiPart._materials[partID]._backTransparency=transparency;}
else if(side=="both")
{xFront=pixelIDFront%this.width;yFront=Math.floor(pixelIDFront/this.width);xBack=pixelIDBack%this.width;yBack=Math.floor(pixelIDBack/this.width);pixelFront=parts.colorMap.getPixel(xFront,yFront);pixelBack=parts.colorMap.getPixel(xBack,yBack);this.multiPart._materials[partID]._transparency=transparency;this.multiPart._materials[partID]._backTransparency=transparency;}
if(!this.multiPart._materials[partID]._highlighted)
{if(side=="front")
{pixelFront.a=1.0-transparency;parts.colorMap.setPixel(xFront,yFront,pixelFront);}
else if(side=="back")
{pixelBack.a=1.0-transparency;parts.colorMap.setPixel(xBack,yBack,pixelBack);}
else if(side=="both")
{pixelFront.a=1.0-transparency;pixelBack.a=1.0-transparency;parts.colorMap.setPixel(xFront,yFront,pixelFront);parts.colorMap.setPixel(xBack,yBack,pixelBack);}}}};this.getTransparency=function(side)
{var i,partID;if(side==undefined&&side!="front"&&side!="back"){side="front";}
if(ids.length&&ids.length>1)
{var transparencies=[];for(i=0;i<parts.ids.length;i++)
{partID=parts.ids[i];if(side=="front")
{transparencies.push(this.multiPart._materials[partID]._transparency);}
else if(side=="back")
{transparencies.push(this.multiPart._materials[partID]._backTransparency);}}
return transparencies;}
else
{partID=parts.ids[0];if(side=="front")
{return this.multiPart._materials[partID]._transparency;}
else if(side=="back")
{return this.multiPart._materials[partID]._backTransparency;}}};this.setShininess=function(shininess,side)
{var i,partID,pixelIDFront,pixelIDBack;if(side==undefined&&side!="front"&&side!="back"&&side!="both"){side="both";}
if(ids.length&&ids.length>1)
{var pixels=parts.specularMap.getPixels();for(i=0;i<parts.ids.length;i++)
{partID=parts.ids[i];pixelIDFront=partID;pixelIDBack=partID+this.widthTwo;if(side=="front")
{this.multiPart._materials[partID]._shininess=shininess;}
else if(side=="back")
{this.multiPart._materials[partID]._backShininess=shininess;}
else if(side=="both")
{this.multiPart._materials[partID]._shininess=shininess;this.multiPart._materials[partID]._backShininess=shininess;}
if(!this.multiPart._materials[partID]._highlighted)
{if(side=="front"){pixels[pixelIDFront].a=shininess;}else if(side=="back"){pixels[pixelIDBack].a=shininess;}else if(side=="both"){pixels[pixelIDFront].a=shininess;pixels[pixelIDBack].a=shininess;}}}
parts.specularMap.setPixels(pixels);}
else
{var xFront,yFront,xBack,yBack,pixelFront,pixelBack;partID=parts.ids[0];pixelIDFront=partID;pixelIDBack=partID+this.widthTwo;if(side=="front")
{xFront=pixelIDFront%this.width;yFront=Math.floor(pixelIDFront/this.width);pixelFront=parts.specularMap.getPixel(xFront,yFront);this.multiPart._materials[partID]._shininess=shininess;}
else if(side=="back")
{xBack=pixelIDBack%this.width;yBack=Math.floor(pixelIDBack/this.width);pixelBack=parts.specularMap.getPixel(xBack,yBack);this.multiPart._materials[partID]._backShininess=shininess;}
else if(side=="both")
{xFront=pixelIDFront%this.width;yFront=Math.floor(pixelIDFront/this.width);xBack=pixelIDBack%this.width;yBack=Math.floor(pixelIDBack/this.width);pixelFront=parts.specularMap.getPixel(xFront,yFront);pixelBack=parts.specularMap.getPixel(xBack,yBack);this.multiPart._materials[partID]._shininess=shininess;this.multiPart._materials[partID]._backShininess=shininess;}
if(!this.multiPart._materials[partID]._highlighted)
{if(side=="front")
{pixelFront.a=shininess;parts.specularMap.setPixel(xFront,yFront,pixelFront);}
else if(side=="back")
{pixelBack.a=shininess;parts.specularMap.setPixel(xBack,yBack,pixelBack);}
else if(side=="both")
{pixelFront.a=shininess;pixelBack.a=shininess;parts.specularMap.setPixel(xFront,yFront,pixelFront);parts.specularMap.setPixel(xBack,yBack,pixelBack);}}}};this.getShininess=function(side)
{var i,partID;if(side==undefined&&side!="front"&&side!="back"){side="front";}
if(ids.length&&ids.length>1)
{var shininesses=[];for(i=0;i<parts.ids.length;i++)
{partID=parts.ids[i];if(side=="front")
{shininesses.push(this.multiPart._materials[partID]._shininess);}
else if(side=="back")
{shininesses.push(this.multiPart._materials[partID]._backShininess);}}
return shininesses;}
else
{partID=parts.ids[0];if(side=="front")
{return this.multiPart._materials[partID]._shininess;}
else if(side=="back")
{return this.multiPart._materials[partID]._backShininess;}}};this.setAmbientIntensity=function(ambientIntensity,side)
{var i,partID,pixelIDFront,pixelIDBack;if(side==undefined&&side!="front"&&side!="back"&&side!="both"){side="both";}
if(ids.length&&ids.length>1)
{var pixels=parts.emissiveMap.getPixels();for(i=0;i<parts.ids.length;i++)
{partID=parts.ids[i];pixelIDFront=partID;pixelIDBack=partID+this.widthTwo;if(side=="front")
{this.multiPart._materials[partID]._ambientIntensity=ambientIntensity;}
else if(side=="back")
{this.multiPart._materials[partID]._backAmbientIntensity=ambientIntensity;}
else if(side=="both")
{this.multiPart._materials[partID]._ambientIntensity=ambientIntensity;this.multiPart._materials[partID]._backAmbientIntensity=ambientIntensity;}
if(!this.multiPart._materials[partID]._highlighted)
{if(side=="front"){pixels[pixelIDFront].a=ambientIntensity;}else if(side=="back"){pixels[pixelIDBack].a=ambientIntensity;}else if(side=="both"){pixels[pixelIDFront].a=ambientIntensity;pixels[pixelIDBack].a=ambientIntensity;}}}
parts.emissiveMap.setPixels(pixels);}
else
{var xFront,yFront,xBack,yBack,pixelFront,pixelBack;partID=parts.ids[0];pixelIDFront=partID;pixelIDBack=partID+this.widthTwo;if(side=="front")
{xFront=pixelIDFront%this.width;yFront=Math.floor(pixelIDFront/this.width);pixelFront=parts.emissiveMap.getPixel(xFront,yFront);this.multiPart._materials[partID]._ambientIntensity=ambientIntensity;}
else if(side=="back")
{xBack=pixelIDBack%this.width;yBack=Math.floor(pixelIDBack/this.width);pixelBack=parts.emissiveMap.getPixel(xBack,yBack);this.multiPart._materials[partID]._backAmbientIntensity=ambientIntensity;}
else if(side=="both")
{xFront=pixelIDFront%this.width;yFront=Math.floor(pixelIDFront/this.width);xBack=pixelIDBack%this.width;yBack=Math.floor(pixelIDBack/this.width);pixelFront=parts.emissiveMap.getPixel(xFront,yFront);pixelBack=parts.emissiveMap.getPixel(xBack,yBack);this.multiPart._materials[partID]._ambientIntensity=ambientIntensity;this.multiPart._materials[partID]._backAmbientIntensity=ambientIntensity;}
if(!this.multiPart._materials[partID]._highlighted)
{if(side=="front")
{pixelFront.a=ambientIntensity;parts.emissiveMap.setPixel(xFront,yFront,pixelFront);}
else if(side=="back")
{pixelBack.a=ambientIntensity;parts.emissiveMap.setPixel(xBack,yBack,pixelBack);}
else if(side=="both")
{pixelFront.a=ambientIntensity;pixelBack.a=ambientIntensity;parts.emissiveMap.setPixel(xFront,yFront,pixelFront);parts.emissiveMap.setPixel(xBack,yBack,pixelBack);}}}};this.getAmbientIntensity=function(side)
{var i,partID;if(side==undefined&&side!="front"&&side!="back"){side="front";}
if(ids.length&&ids.length>1)
{var ambientIntensities=[];for(i=0;i<parts.ids.length;i++)
{partID=parts.ids[i];if(side=="front")
{ambientIntensities.push(this.multiPart._materials[partID]._ambientIntensity);}
else if(side=="back")
{ambientIntensities.push(this.multiPart._materials[partID]._backAmbientIntensity);}}
return ambientIntensities;}
else
{partID=parts.ids[0];if(side=="front")
{return this.multiPart._materials[partID]._ambientIntensity;}
else if(side=="back")
{return this.multiPart._materials[partID]._backAmbientIntensity;}}};this.highlight=function(color)
{var i,partID,pixelIDFront,pixelIDBack,dtColor,eaColor,ssColor;color=x3dom.fields.SFColor.parse(color);if(ids.length&&ids.length>1)
{var dtPixels=parts.colorMap.getPixels();var eaPixels=parts.emissiveMap.getPixels();var ssPixels=parts.specularMap.getPixels();dtColor=new x3dom.fields.SFColorRGBA(0,0,0,1.0);eaColor=new x3dom.fields.SFColorRGBA(color.r,color.g,color.b,0);ssColor=new x3dom.fields.SFColorRGBA(0,0,0,0);for(i=0;i<parts.ids.length;i++){partID=parts.ids[i];pixelIDFront=partID;pixelIDBack=partID+this.widthTwo;if(!this.multiPart._materials[partID]._highlighted)
{this.multiPart._materials[partID]._highlighted=true;dtPixels[pixelIDFront]=dtColor;eaPixels[pixelIDFront]=eaColor;ssPixels[pixelIDFront]=ssColor;dtPixels[pixelIDBack]=dtColor;eaPixels[pixelIDBack]=eaColor;ssPixels[pixelIDBack]=ssColor;}}
this.colorMap.setPixels(dtPixels,false);this.emissiveMap.setPixels(eaPixels,false);this.specularMap.setPixels(ssPixels,true);}
else
{partID=parts.ids[0];pixelIDFront=partID;pixelIDBack=partID+this.widthTwo;var xFront=pixelIDFront%this.width;var yFront=Math.floor(pixelIDFront/this.width);var xBack=pixelIDBack%this.width;var yBack=Math.floor(pixelIDBack/this.width);if(!this.multiPart._materials[partID]._highlighted)
{this.multiPart._materials[partID]._highlighted=true;dtColor=new x3dom.fields.SFColorRGBA(0,0,0,1);eaColor=new x3dom.fields.SFColorRGBA(color.r,color.g,color.b,0);ssColor=new x3dom.fields.SFColorRGBA(0,0,0,0);this.colorMap.setPixel(xFront,yFront,dtColor,false);this.emissiveMap.setPixel(xFront,yFront,eaColor,false);this.specularMap.setPixel(xFront,yFront,ssColor,false);this.colorMap.setPixel(xBack,yBack,dtColor,false);this.emissiveMap.setPixel(xBack,yBack,eaColor,false);this.specularMap.setPixel(xBack,yBack,ssColor,true);}}};this.unhighlight=function(){var i,partID,pixelIDFront,pixelIDBack,material;var dtColorFront,eaColorFront,ssColorFront;var dtColorBack,eaColorBack,ssColorBack;if(ids.length&&ids.length>1)
{var dtPixels=parts.colorMap.getPixels();var eaPixels=parts.emissiveMap.getPixels();var ssPixels=parts.specularMap.getPixels();for(i=0;i<parts.ids.length;i++){partID=parts.ids[i];pixelIDFront=partID;pixelIDBack=partID+this.widthTwo;material=this.multiPart._materials[partID];if(material._highlighted)
{material._highlighted=false;dtPixels[pixelIDFront]=new x3dom.fields.SFColorRGBA(material._diffuseColor.r,material._diffuseColor.g,material._diffuseColor.b,1.0-material._transparency);eaPixels[pixelIDFront]=new x3dom.fields.SFColorRGBA(material._emissiveColor.r,material._emissiveColor.g,material._emissiveColor.b,material._ambientIntensity);ssPixels[pixelIDFront]=new x3dom.fields.SFColorRGBA(material._specularColor.r,material._specularColor.g,material._specularColor.b,material._shininess);dtPixels[pixelIDBack]=new x3dom.fields.SFColorRGBA(material._backDiffuseColor.r,material._backDiffuseColor.g,material._backDiffuseColor.b,1.0-material._backTransparency);eaPixels[pixelIDBack]=new x3dom.fields.SFColorRGBA(material._backEmissiveColor.r,material._backEmissiveColor.g,material._backEmissiveColor.b,material._backAmbientIntensity);ssPixels[pixelIDBack]=new x3dom.fields.SFColorRGBA(material._backSpecularColor.r,material._backSpecularColor.g,material._backSpecularColor.b,material._backShininess);}}
this.colorMap.setPixels(dtPixels,false);this.emissiveMap.setPixels(eaPixels,false);this.specularMap.setPixels(ssPixels,true);}
else
{partID=parts.ids[0];pixelIDFront=partID;pixelIDBack=partID+this.widthTwo;var xFront=pixelIDFront%this.width;var yFront=Math.floor(pixelIDFront/this.width);var xBack=pixelIDBack%this.width;var yBack=Math.floor(pixelIDBack/this.width);material=this.multiPart._materials[partID];if(material._highlighted)
{material._highlighted=false;dtColorFront=new x3dom.fields.SFColorRGBA(material._diffuseColor.r,material._diffuseColor.g,material._diffuseColor.b,1.0-material._transparency);eaColorFront=new x3dom.fields.SFColorRGBA(material._emissiveColor.r,material._emissiveColor.g,material._emissiveColor.b,material._ambientIntensity);ssColorFront=new x3dom.fields.SFColorRGBA(material._specularColor.r,material._specularColor.g,material._specularColor.b,material._shininess);dtColorBack=new x3dom.fields.SFColorRGBA(material._backDiffuseColor.r,material._backDiffuseColor.g,material._backDiffuseColor.b,1.0-material._backTransparency);eaColorBack=new x3dom.fields.SFColorRGBA(material._backEmissiveColor.r,material._backEmissiveColor.g,material._backEmissiveColor.b,material._backAmbientIntensity);ssColorBack=new x3dom.fields.SFColorRGBA(material._backSpecularColor.r,material._backSpecularColor.g,material._backSpecularColor.b,material._backShininess);this.colorMap.setPixel(xFront,yFront,dtColorFront,false);this.emissiveMap.setPixel(xFront,yFront,eaColorFront,false);this.specularMap.setPixel(xFront,yFront,ssColorFront,false);this.colorMap.setPixel(xBack,yBack,dtColorBack,false);this.emissiveMap.setPixel(xBack,yBack,eaColorBack,false);this.specularMap.setPixel(xBack,yBack,ssColorBack,true);}}};this.toggleHighlight=function(color){for(var i=0;i<parts.ids.length;i++){if(this.multiPart._materials[parts.ids[i]]._highlighted){this.unhighlight();}else{this.highlight(color);}}};this.setColor=function(color,side){this.setDiffuseColor(color,side);};this.getColorRGB=function(){var str=this.getColorRGBA();var values=str.split(" ");return values[0]+" "+values[1]+" "+values[2];};this.getColorRGBA=function(){var x,y;var colorRGBA=this.multiPart._originalColor[parts.ids[0]];if(this.multiPart._highlightedParts[parts.ids[0]]){colorRGBA=this.multiPart._highlightedParts[parts.ids[0]];}else{x=parts.ids[0]%parts.colorMap.getWidth();y=Math.floor(parts.ids[0]/parts.colorMap.getWidth());colorRGBA=parts.colorMap.getPixel(x,y);}
return colorRGBA.toString();};this.resetColor=function(){var i,partID,pixelIDFront,pixelIDBack,material;var dtColorFront,eaColorFront,ssColorFront;var dtColorBack,eaColorBack,ssColorBack;if(ids.length&&ids.length>1)
{var dtPixels=parts.colorMap.getPixels();var eaPixels=parts.emissiveMap.getPixels();var ssPixels=parts.specularMap.getPixels();for(i=0;i<parts.ids.length;i++){partID=parts.ids[i];pixelIDFront=partID;pixelIDBack=partID+this.widthTwo;material=this.multiPart._materials[partID];material.reset();if(!material._highlighted)
{dtPixels[pixelIDFront]=new x3dom.fields.SFColorRGBA(material._diffuseColor.r,material._diffuseColor.g,material._diffuseColor.b,1.0-material._transparency);eaPixels[pixelIDFront]=new x3dom.fields.SFColorRGBA(material._emissiveColor.r,material._emissiveColor.g,material._emissiveColor.b,material._ambientIntensity);ssPixels[pixelIDFront]=new x3dom.fields.SFColorRGBA(material._specularColor.r,material._specularColor.g,material._specularColor.b,material._shininess);dtPixels[pixelIDBack]=new x3dom.fields.SFColorRGBA(material._backDiffuseColor.r,material._backDiffuseColor.g,material._backDiffuseColor.b,1.0-material._backTransparency);eaPixels[pixelIDBack]=new x3dom.fields.SFColorRGBA(material._backEmissiveColor.r,material._backEmissiveColor.g,material._backEmissiveColor.b,material._backAmbientIntensity);ssPixels[pixelIDBack]=new x3dom.fields.SFColorRGBA(material._backSpecularColor.r,material._backSpecularColor.g,material._backSpecularColor.b,material._backShininess);}}
this.colorMap.setPixels(dtPixels,false);this.emissiveMap.setPixels(eaPixels,false);this.specularMap.setPixels(ssPixels,true);}
else
{partID=parts.ids[0];pixelIDFront=partID;pixelIDBack=partID+this.widthTwo;var xFront=pixelIDFront%this.width;var yFront=Math.floor(pixelIDFront/this.width);var xBack=pixelIDBack%this.width;var yBack=Math.floor(pixelIDBack/this.width);material=this.multiPart._materials[partID];material.reset();if(!material._highlighted)
{dtColorFront=new x3dom.fields.SFColorRGBA(material._diffuseColor.r,material._diffuseColor.g,material._diffuseColor.b,1.0-material._transparency);eaColorFront=new x3dom.fields.SFColorRGBA(material._emissiveColor.r,material._emissiveColor.g,material._emissiveColor.b,material._ambientIntensity);ssColorFront=new x3dom.fields.SFColorRGBA(material._specularColor.r,material._specularColor.g,material._specularColor.b,material._shininess);dtColorBack=new x3dom.fields.SFColorRGBA(material._backDiffuseColor.r,material._backDiffuseColor.g,material._backDiffuseColor.b,1.0-material._backTransparency);eaColorBack=new x3dom.fields.SFColorRGBA(material._backEmissiveColor.r,material._backEmissiveColor.g,material._backEmissiveColor.b,material._backAmbientIntensity);ssColorBack=new x3dom.fields.SFColorRGBA(material._backSpecularColor.r,material._backSpecularColor.g,material._backSpecularColor.b,material._backShininess);this.colorMap.setPixel(xFront,yFront,dtColorFront,false);this.emissiveMap.setPixel(xFront,yFront,eaColorFront,false);this.specularMap.setPixel(xFront,yFront,ssColorFront,false);this.colorMap.setPixel(xBack,yBack,dtColorBack,false);this.emissiveMap.setPixel(xBack,yBack,eaColorBack,false);this.specularMap.setPixel(xBack,yBack,ssColorBack,true);}}};this.setVisibility=function(visibility){var i,j,x,y,usage,visibleCount,visibilityAsInt;if(!(ids.length&&ids.length>1)){x=parts.ids[0]%parts.colorMap.getWidth();y=Math.floor(parts.ids[0]/parts.colorMap.getWidth());var pixel=parts.visibilityMap.getPixel(x,y);visibilityAsInt=(visibility)?1:0;if(pixel.r!=visibilityAsInt){pixel.r=visibilityAsInt;this.multiPart._partVisibility[parts.ids[0]]=visibility;usage=this.multiPart._idMap.mapping[parts.ids[0]].usage;for(j=0;j<usage.length;j++){visibleCount=this.multiPart._visiblePartsPerShape[usage[j]];if(visibility&&visibleCount.val<visibleCount.max){visibleCount.val++;}else if(!visibility&&visibleCount.val>0){visibleCount.val--;}
if(visibleCount.val){this.multiPart._inlineNamespace.defMap[usage[j]]._vf.render=true;}else{this.multiPart._inlineNamespace.defMap[usage[j]]._vf.render=false;}}}
parts.visibilityMap.setPixel(x,y,pixel);this.multiPart.invalidateVolume();}
else
{var pixels=parts.visibilityMap.getPixels();for(i=0;i<parts.ids.length;i++){visibilityAsInt=(visibility)?1:0;if(pixels[parts.ids[i]].r!=visibilityAsInt){pixels[parts.ids[i]].r=visibilityAsInt;this.multiPart._partVisibility[parts.ids[i]]=visibility;usage=this.multiPart._idMap.mapping[parts.ids[i]].usage;for(j=0;j<usage.length;j++){visibleCount=this.multiPart._visiblePartsPerShape[usage[j]];if(visibility&&visibleCount.val<visibleCount.max){visibleCount.val++;}else if(!visibility&&visibleCount.val>0){visibleCount.val--;}
if(visibleCount.val){this.multiPart._inlineNamespace.defMap[usage[j]]._vf.render=true;}else{this.multiPart._inlineNamespace.defMap[usage[j]]._vf.render=false;}}}}
parts.visibilityMap.setPixels(pixels);this.multiPart.invalidateVolume();}};this.getVolume=function(){var volume;var transmat=this.multiPart.getCurrentTransform();if(ids.length&&ids.length>1)
{volume=new x3dom.fields.BoxVolume();for(var i=0;i<parts.ids.length;i++){volume.extendBounds(this.multiPart._partVolume[parts.ids[i]].min,this.multiPart._partVolume[parts.ids[i]].max);}
volume.transform(transmat);return volume;}
else
{volume=x3dom.fields.BoxVolume.copy(this.multiPart._partVolume[parts.ids[0]]);volume.transform(transmat);return volume;}};this.fit=function(updateCenterOfRotation){var volume=this.getVolume();this.multiPart._nameSpace.doc._viewarea.fit(volume.min,volume.max,updateCenterOfRotation);};};x3dom.Properties=function(){this.properties={};};x3dom.Properties.prototype.setProperty=function(name,value){x3dom.debug.logInfo("Properties: Setting property '"+name+"' to value '"+value+"'");this.properties[name]=value;};x3dom.Properties.prototype.getProperty=function(name,def){if(this.properties[name]){return this.properties[name]}else{return def;}};x3dom.Properties.prototype.merge=function(other){for(var attrname in other.properties){this.properties[attrname]=other.properties[attrname];}};x3dom.Properties.prototype.toString=function(){var str="";for(var name in this.properties){str+="Name: "+name+" Value: "+this.properties[name]+"\n";}
return str;};x3dom.DoublyLinkedList=function(){this.length=0;this.first=null;this.last=null;};x3dom.DoublyLinkedList.ListNode=function(point,point_index,normals,colors,texCoords){this.point=point;this.point_index=point_index;this.normals=normals;this.colors=colors;this.texCoords=texCoords;this.next=null;this.prev=null;};x3dom.DoublyLinkedList.prototype.appendNode=function(node){if(this.first===null){node.prev=node;node.next=node;this.first=node;this.last=node;}else{node.prev=this.last;node.next=this.first;this.first.prev=node;this.last.next=node;this.last=node;}
this.length++;};x3dom.DoublyLinkedList.prototype.insertAfterNode=function(node,newNode){newNode.prev=node;newNode.next=node.next;node.next.prev=newNode;node.next=newNode;if(newNode.prev==this.last){this.last=newNode;}
this.length++;};x3dom.DoublyLinkedList.prototype.deleteNode=function(node){if(this.length>1){node.prev.next=node.next;node.next.prev=node.prev;if(node==this.first){this.first=node.next;}
if(node==this.last){this.last=node.prev;}}else{this.first=null;this.last=null;}
node.prev=null;node.next=null;this.length--;};x3dom.DoublyLinkedList.prototype.getNode=function(index){var node=null;if(index>this.length){return node;}
for(var i=0;i<this.length;i++){if(i==0){node=this.first;}else{node=node.next;}
if(i==index){return node;}}
return null;};x3dom.DoublyLinkedList.prototype.invert=function(){var tmp=null;var node=this.first;for(var i=0;i<this.length;i++){tmp=node.prev;node.prev=node.next;node.next=tmp;node=node.prev;}
tmp=this.first;this.first=this.last;this.last=tmp;};x3dom.EarClipping={reversePointDirection:function(linklist,plane){var l,k;var count=0;var z=0;var nodei,nodel,nodek;if(linklist.length<3){return false;}
for(var i=0;i<linklist.length;i++){l=(i+1)%linklist.length;k=(i+2)%linklist.length;nodei=linklist.getNode(i);nodel=linklist.getNode(l);nodek=linklist.getNode(k);if(plane=='YZ'){z=(nodel.point.y-nodei.point.y)*(nodek.point.z-nodel.point.z);z-=(nodel.point.z-nodei.point.z)*(nodek.point.y-nodel.point.y);}else if(plane=='XZ'){z=(nodel.point.z-nodei.point.z)*(nodek.point.x-nodel.point.x);z-=(nodel.point.x-nodei.point.x)*(nodek.point.z-nodel.point.z);}else{z=(nodel.point.x-nodei.point.x)*(nodek.point.y-nodel.point.y);z-=(nodel.point.y-nodei.point.y)*(nodek.point.x-nodel.point.x);}
if(z<0){count--;}else{count++;}}
if(count<0){linklist.invert();return true;}
return false;},getIndexes:function(linklist){var node=linklist.first.next;var plane=this.identifyPlane(node.prev.point,node.point,node.next.point);var invers=this.reversePointDirection(linklist,plane);var indexes=[];node=linklist.first.next;var next=null;var count=0;var isEar=true;while(linklist.length>=3&&count<15){next=node.next;for(var i=0;i<linklist.length;i++){if(this.isNotEar(linklist.getNode(i).point,node.prev.point,node.point,node.next.point,plane)){isEar=false;}}
if(isEar){if(this.isKonvex(node.prev.point,node.point,node.next.point,plane)){indexes.push(node.prev.point_index,node.point_index,node.next.point_index);linklist.deleteNode(node);}else{count++;}}
node=next;isEar=true;}
if(invers){return indexes.reverse();}else{return indexes;}},getMultiIndexes:function(linklist){var node=linklist.first.next;var plane=this.identifyPlane(node.prev.point,node.point,node.next.point);var invers=this.reversePointDirection(linklist,plane);var data={};data.indices=[];data.point=[];data.normals=[];data.colors=[];data.texCoords=[];node=linklist.first.next;var next=null;var count=0;var isEar=true;while(linklist.length>=3&&count<15){next=node.next;for(var i=0;i<linklist.length;i++){if(this.isNotEar(linklist.getNode(i).point,node.prev.point,node.point,node.next.point,plane)){isEar=false;}}
if(isEar){if(this.isKonvex(node.prev.point,node.point,node.next.point,plane)){data.indices.push(node.prev.point_index,node.point_index,node.next.point_index);data.point.push(node.prev.point,node.point,node.next.point);if(node.normals){data.normals.push(node.prev.normals,node.normals,node.next.normals);}
if(node.colors){data.colors.push(node.prev.colors,node.colors,node.next.colors);}
if(node.texCoords){data.texCoords.push(node.prev.texCoords,node.texCoords,node.next.texCoords);}
linklist.deleteNode(node);}else{count++;}}
node=next;isEar=true;}
if(invers){data.indices=data.indices.reverse();data.point=data.point.reverse();data.normals=data.normals.reverse();data.colors=data.colors.reverse();data.texCoords=data.texCoords.reverse();}
return data;},isNotEar:function(ap1,tp1,tp2,tp3,plane){var b0,b1,b2,b3;var ap1a,ap1b,tp1a,tp1b,tp2a,tp2b,tp3a,tp3b;if(plane=='YZ'){ap1a=ap1.y;ap1b=ap1.z;tp1a=tp1.y;tp1b=tp1.z;tp2a=tp2.y;tp2b=tp2.z;tp3a=tp3.y;tp3b=tp3.z;}else if(plane=='XZ'){ap1a=ap1.z;ap1b=ap1.x;tp1a=tp1.z;tp1b=tp1.x;tp2a=tp2.z;tp2b=tp2.x;tp3a=tp3.z;tp3b=tp3.x;}else{ap1a=ap1.x;ap1b=ap1.y;tp1a=tp1.x;tp1b=tp1.y;tp2a=tp2.x;tp2b=tp2.y;tp3a=tp3.x;tp3b=tp3.y;}
b0=((tp2a-tp1a)*(tp3b-tp1b)-(tp3a-tp1a)*(tp2b-tp1b));if(b0!=0){b1=(((tp2a-ap1a)*(tp3b-ap1b)-(tp3a-ap1a)*(tp2b-ap1b))/b0);b2=(((tp3a-ap1a)*(tp1b-ap1b)-(tp1a-ap1a)*(tp3b-ap1b))/b0);b3=1-b1-b2;return((b1>0)&&(b2>0)&&(b3>0));}
else{return false;}},isKonvex:function(p,p1,p2,plane){var pa,pb,p1a,p1b,p2a,p2b;if(plane=='YZ'){pa=p.y;pb=p.z;p1a=p1.y;p1b=p1.z;p2a=p2.y;p2b=p2.z;}else if(plane=='XZ'){pa=p.z;pb=p.x;p1a=p1.z;p1b=p1.x;p2a=p2.z;p2b=p2.x;}else{pa=p.x;pb=p.y;p1a=p1.x;p1b=p1.y;p2a=p2.x;p2b=p2.y;}
var l=((p1a-pa)*(p2b-pb)-(p1b-pb)*(p2a-pa));return(l>=0);},identifyPlane:function(p1,p2,p3){var v1x,v1y,v1z;var v2x,v2y,v2z;var v3x,v3y,v3z;v1x=p2.x-p1.x;v1y=p2.y-p1.y;v1z=p2.z-p1.z;v2x=p3.x-p1.x;v2y=p3.y-p1.y;v2z=p3.z-p1.z;v3x=Math.abs(v1y*v2z-v1z*v2y);v3y=Math.abs(v1z*v2x-v1x*v2z);v3z=Math.abs(v1x*v2y-v1y*v2x);var angle=Math.max(v3x,v3y,v3z);if(angle==v3x){return'YZ';}else if(angle==v3y){return'XZ';}else if(angle==v3z){return'XY';}else{return'XZ';}}};x3dom.Utils={};x3dom.Utils.maxIndexableCoords=65535;x3dom.Utils.needLineWidth=false;x3dom.Utils.measurements=[];window.performance=window.performance||{};performance.now=(function(){return performance.now||performance.mozNow||performance.msNow||performance.oNow||performance.webkitNow||function(){return new Date().getTime();};})();x3dom.Utils.startMeasure=function(name){var uname=name.toUpperCase();if(!x3dom.Utils.measurements[uname]){if(performance&&performance.now){x3dom.Utils.measurements[uname]=performance.now();}else{x3dom.Utils.measurements[uname]=new Date().getTime();}}};x3dom.Utils.stopMeasure=function(name){var uname=name.toUpperCase();if(x3dom.Utils.measurements[uname]){var startTime=x3dom.Utils.measurements[uname];delete x3dom.Utils.measurements[uname];if(performance&&performance.now){return performance.now()-startTime;}else{return new Date().getTime()-startTime;}}
return 0;};x3dom.Utils.isNumber=function(n){return!isNaN(parseFloat(n))&&isFinite(n);};x3dom.Utils.createTexture2D=function(gl,doc,src,bgnd,crossOrigin,scale,genMipMaps)
{var texture=gl.createTexture();var data=new Uint8Array([0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255]);gl.bindTexture(gl.TEXTURE_2D,texture);gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,2,2,0,gl.RGBA,gl.UNSIGNED_BYTE,data);if(genMipMaps){gl.generateMipmap(gl.TEXTURE_2D);}
gl.bindTexture(gl.TEXTURE_2D,null);texture.ready=false;if(src==null||src=='')
return texture;var image=new Image();switch(crossOrigin.toLowerCase()){case'anonymous':{image.crossOrigin='anonymous';}break;case'use-credentials':{image.crossOrigin='use-credentials'}break;case'none':{}break;default:{if(x3dom.Utils.forbiddenBySOP(src)){image.crossOrigin='anonymous';}}}
image.src=src;doc.downloadCount++;image.onload=function(){if(scale)
image=x3dom.Utils.scaleImage(image);if(bgnd==true){gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL,true);}
gl.bindTexture(gl.TEXTURE_2D,texture);gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,image);if(genMipMaps){gl.generateMipmap(gl.TEXTURE_2D);}
gl.bindTexture(gl.TEXTURE_2D,null);if(bgnd==true){gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL,false);}
texture.width=image.width;texture.height=image.height;texture.ready=true;doc.downloadCount--;doc.needRender=true;};image.onerror=function(){x3dom.debug.logError("[Utils|createTexture2D] Can't load Image: "+src);doc.downloadCount--;};return texture;};x3dom.Utils.createTextureCube=function(gl,doc,src,bgnd,crossOrigin,scale,genMipMaps)
{var texture=gl.createTexture();var faces;if(bgnd){faces=[gl.TEXTURE_CUBE_MAP_POSITIVE_Z,gl.TEXTURE_CUBE_MAP_NEGATIVE_Z,gl.TEXTURE_CUBE_MAP_POSITIVE_Y,gl.TEXTURE_CUBE_MAP_NEGATIVE_Y,gl.TEXTURE_CUBE_MAP_POSITIVE_X,gl.TEXTURE_CUBE_MAP_NEGATIVE_X];}
else
{faces=[gl.TEXTURE_CUBE_MAP_NEGATIVE_Z,gl.TEXTURE_CUBE_MAP_POSITIVE_Z,gl.TEXTURE_CUBE_MAP_NEGATIVE_Y,gl.TEXTURE_CUBE_MAP_POSITIVE_Y,gl.TEXTURE_CUBE_MAP_NEGATIVE_X,gl.TEXTURE_CUBE_MAP_POSITIVE_X];}
texture.ready=false;texture.pendingTextureLoads=-1;texture.textureCubeReady=false;var width=0,height=0;for(var i=0;i<faces.length;i++){var face=faces[i];var image=new Image();switch(crossOrigin.toLowerCase()){case'anonymous':{image.crossOrigin='anonymous';}break;case'use-credentials':{image.crossOrigin='use-credentials'}break;case'none':{}break;default:{if(x3dom.Utils.forbiddenBySOP(src[i])){image.crossOrigin='anonymous';}}}
texture.pendingTextureLoads++;doc.downloadCount++;image.onload=(function(texture,face,image,swap){return function(){if(width==0&&height==0){width=image.width;height=image.height;}
else if(scale&&(width!=image.width||height!=image.height)){x3dom.debug.logWarning("[Utils|createTextureCube] Rescaling CubeMap images, which are of different size!");image=x3dom.Utils.rescaleImage(image,width,height);}
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL,swap);gl.bindTexture(gl.TEXTURE_CUBE_MAP,texture);gl.texImage2D(face,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,image);gl.bindTexture(gl.TEXTURE_CUBE_MAP,null);gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL,false);texture.pendingTextureLoads--;doc.downloadCount--;if(texture.pendingTextureLoads<0){texture.width=width;texture.height=height;texture.textureCubeReady=true;if(genMipMaps){gl.bindTexture(gl.TEXTURE_CUBE_MAP,texture);gl.generateMipmap(gl.TEXTURE_CUBE_MAP);gl.bindTexture(gl.TEXTURE_CUBE_MAP,null);}
x3dom.debug.logInfo("[Utils|createTextureCube] Loading CubeMap finished...");doc.needRender=true;}};})(texture,face,image,bgnd);image.onerror=function()
{doc.downloadCount--;x3dom.debug.logError("[Utils|createTextureCube] Can't load CubeMap!");};image.src=src[i];}
return texture;};x3dom.Utils.initFBO=function(gl,w,h,type,mipMap,needRenderBuf,numMrt){var tex=gl.createTexture();tex.width=w;tex.height=h;gl.bindTexture(gl.TEXTURE_2D,tex);gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,w,h,0,gl.RGBA,type,null);if(mipMap)
gl.generateMipmap(gl.TEXTURE_2D);gl.bindTexture(gl.TEXTURE_2D,null);var i,mrts=null;if(x3dom.caps.DRAW_BUFFERS&&numMrt!==undefined){mrts=[tex];for(i=1;i<numMrt;i++){mrts[i]=gl.createTexture();mrts[i].width=w;mrts[i].height=h;gl.bindTexture(gl.TEXTURE_2D,mrts[i]);gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,w,h,0,gl.RGBA,type,null);if(mipMap)
gl.generateMipmap(gl.TEXTURE_2D);gl.bindTexture(gl.TEXTURE_2D,null);}}
var fbo=gl.createFramebuffer();var rb=null;if(needRenderBuf){rb=gl.createRenderbuffer();gl.bindRenderbuffer(gl.RENDERBUFFER,rb);gl.renderbufferStorage(gl.RENDERBUFFER,gl.DEPTH_COMPONENT16,w,h);gl.bindRenderbuffer(gl.RENDERBUFFER,null);}
gl.bindFramebuffer(gl.FRAMEBUFFER,fbo);gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,tex,0);if(x3dom.caps.DRAW_BUFFERS&&numMrt!==undefined){for(i=1;i<numMrt;i++){gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0+i,gl.TEXTURE_2D,mrts[i],0);}}
gl.framebufferRenderbuffer(gl.FRAMEBUFFER,gl.DEPTH_ATTACHMENT,gl.RENDERBUFFER,rb);var status=gl.checkFramebufferStatus(gl.FRAMEBUFFER);if(status!=gl.FRAMEBUFFER_COMPLETE){x3dom.debug.logWarning("[Utils|InitFBO] FBO-Status: "+status);}
gl.bindFramebuffer(gl.FRAMEBUFFER,null);return{fbo:fbo,rbo:rb,tex:tex,texTargets:mrts,width:w,height:h,type:type,mipMap:mipMap};};x3dom.Utils.getFileName=function(url)
{var filename;if(url.lastIndexOf("/")>-1){filename=url.substr(url.lastIndexOf("/")+1);}
else if(url.lastIndexOf("\\")>-1){filename=url.substr(url.lastIndexOf("\\")+1);}
else{filename=url;}
return filename;};x3dom.Utils.findTextureByName=function(texture,name)
{for(var i=0;i<texture.length;++i)
{if(name==texture[i].samplerName)
return texture[i];}
return false;};x3dom.Utils.rescaleImage=function(image,width,height)
{var canvas=document.createElement("canvas");canvas.width=width;canvas.height=height;canvas.getContext("2d").drawImage(image,0,0,image.width,image.height,0,0,canvas.width,canvas.height);return canvas;};x3dom.Utils.scaleImage=function(image)
{if(!x3dom.Utils.isPowerOfTwo(image.width)||!x3dom.Utils.isPowerOfTwo(image.height)){var canvas=document.createElement("canvas");canvas.width=x3dom.Utils.nextHighestPowerOfTwo(image.width);canvas.height=x3dom.Utils.nextHighestPowerOfTwo(image.height);var ctx=canvas.getContext("2d");ctx.drawImage(image,0,0,image.width,image.height,0,0,canvas.width,canvas.height);image=canvas;}
return image;};x3dom.Utils.isPowerOfTwo=function(x)
{return((x&(x-1))===0);};x3dom.Utils.nextHighestPowerOfTwo=function(x)
{--x;for(var i=1;i<32;i<<=1){x=x|x>>i;}
return(x+1);};x3dom.Utils.nextBestPowerOfTwo=function(x)
{var log2x=Math.log(x)/0.693147180559945;return Math.pow(2,Math.round(log2x));};x3dom.Utils.getDataTypeSize=function(type)
{switch(type)
{case"Int8":case"Uint8":return 1;case"Int16":case"Uint16":return 2;case"Int32":case"Uint32":case"Float32":return 4;case"Float64":default:return 8;}};x3dom.Utils.getOffsetMultiplier=function(indexType,gl)
{switch(indexType)
{case gl.UNSIGNED_SHORT:return 1;case gl.UNSIGNED_INT:return 2;case gl.UNSIGNED_BYTE:return 0.5;default:return 1;}};x3dom.Utils.getByteAwareOffset=function(offset,indexType,gl)
{switch(indexType)
{case gl.UNSIGNED_SHORT:return 2*offset;case gl.UNSIGNED_INT:return 4*offset;case gl.UNSIGNED_BYTE:return offset;default:return 2*offset;}};x3dom.Utils.getVertexAttribType=function(type,gl)
{var dataType=gl.NONE;switch(type)
{case"Int8":dataType=gl.BYTE;break;case"Uint8":dataType=gl.UNSIGNED_BYTE;break;case"Int16":dataType=gl.SHORT;break;case"Uint16":dataType=gl.UNSIGNED_SHORT;break;case"Int32":dataType=gl.INT;break;case"Uint32":dataType=gl.UNSIGNED_INT;break;case"Float32":dataType=gl.FLOAT;break;case"Float64":default:x3dom.debug.logError("Can't find this.gl data type for "+type+", getting FLOAT...");dataType=gl.FLOAT;break;}
return dataType;};x3dom.Utils.getArrayBufferView=function(type,buffer)
{var array=null;switch(type)
{case"Int8":array=new Int8Array(buffer);break;case"Uint8":array=new Uint8Array(buffer);break;case"Int16":array=new Int16Array(buffer);break;case"Uint16":array=new Uint16Array(buffer);break;case"Int32":array=new Int32Array(buffer);break;case"Uint32":array=new Uint32Array(buffer);break;case"Float32":array=new Float32Array(buffer);break;case"Float64":array=new Float64Array(buffer);break;default:x3dom.debug.logError("Can't create typed array view of type "+type+", trying Float32...");array=new Float32Array(buffer);break;}
return array;};x3dom.Utils.isUnsignedType=function(str)
{return(str=="Uint8"||str=="Uint16"||str=="Uint16"||str=="Uint32");};x3dom.Utils.checkDirtyLighting=function(viewarea)
{return(viewarea.getLights().length+viewarea._scene.getNavigationInfo()._vf.headlight);};x3dom.Utils.checkDirtyEnvironment=function(viewarea,shaderProperties)
{var environment=viewarea._scene.getEnvironment();return(shaderProperties.GAMMACORRECTION!=environment._vf.gammaCorrectionDefault);};x3dom.Utils.minFilterDic=function(gl,minFilter)
{switch(minFilter.toUpperCase())
{case"NEAREST":return gl.NEAREST;case"LINEAR":return gl.LINEAR;case"NEAREST_MIPMAP_NEAREST":return gl.NEAREST_MIPMAP_NEAREST;case"NEAREST_MIPMAP_LINEAR":return gl.NEAREST_MIPMAP_LINEAR;case"LINEAR_MIPMAP_NEAREST":return gl.LINEAR_MIPMAP_NEAREST;case"LINEAR_MIPMAP_LINEAR":return gl.LINEAR_MIPMAP_LINEAR;case"AVG_PIXEL":return gl.LINEAR;case"AVG_PIXEL_AVG_MIPMAP":return gl.LINEAR_MIPMAP_LINEAR;case"AVG_PIXEL_NEAREST_MIPMAP":return gl.LINEAR_MIPMAP_NEAREST;case"DEFAULT":return gl.LINEAR_MIPMAP_LINEAR;case"FASTEST":return gl.NEAREST;case"NEAREST_PIXEL":return gl.NEAREST;case"NEAREST_PIXEL_AVG_MIPMAP":return gl.NEAREST_MIPMAP_LINEAR;case"NEAREST_PIXEL_NEAREST_MIPMAP":return gl.NEAREST_MIPMAP_NEAREST;case"NICEST":return gl.LINEAR_MIPMAP_LINEAR;default:return gl.LINEAR;}};x3dom.Utils.magFilterDic=function(gl,magFilter)
{switch(magFilter.toUpperCase())
{case"NEAREST":return gl.NEAREST;case"LINEAR":return gl.LINEAR;case"AVG_PIXEL":return gl.LINEAR;case"DEFAULT":return gl.LINEAR;case"FASTEST":return gl.NEAREST;case"NEAREST_PIXEL":return gl.NEAREST;case"NICEST":return gl.LINEAR;default:return gl.LINEAR;}};x3dom.Utils.boundaryModesDic=function(gl,mode)
{switch(mode.toUpperCase())
{case"CLAMP":return gl.CLAMP_TO_EDGE;case"CLAMP_TO_EDGE":return gl.CLAMP_TO_EDGE;case"CLAMP_TO_BOUNDARY":return gl.CLAMP_TO_EDGE;case"MIRRORED_REPEAT":return gl.MIRRORED_REPEAT;case"REPEAT":return gl.REPEAT;default:return gl.REPEAT;}};x3dom.Utils.primTypeDic=function(gl,type)
{switch(type.toUpperCase())
{case"POINTS":return gl.POINTS;case"LINES":return gl.LINES;case"LINELOOP":return gl.LINE_LOOP;case"LINESTRIP":return gl.LINE_STRIP;case"TRIANGLES":return gl.TRIANGLES;case"TRIANGLESTRIP":return gl.TRIANGLE_STRIP;case"TRIANGLEFAN":return gl.TRIANGLE_FAN;default:return gl.TRIANGLES;}};x3dom.Utils.depthFunc=function(gl,func)
{switch(func.toUpperCase())
{case"NEVER":return gl.NEVER;case"ALWAYS":return gl.ALWAYS;case"LESS":return gl.LESS;case"EQUAL":return gl.EQUAL;case"LEQUAL":return gl.LEQUAL;case"GREATER":return gl.GREATER;case"GEQUAL":return gl.GEQUAL;case"NOTEQUAL":return gl.NOTEQUAL;default:return gl.LEQUAL;}};x3dom.Utils.blendFunc=function(gl,func)
{switch(func.toLowerCase())
{case"zero":return gl.ZERO;case"one":return gl.ONE;case"dst_color":return gl.DST_COLOR;case"dst_alpha":return gl.DST_ALPHA;case"src_color":return gl.SRC_COLOR;case"src_alpha":return gl.SRC_ALPHA;case"one_minus_dst_color":return gl.ONE_MINUS_DST_COLOR;case"one_minus_dst_alpha":return gl.ONE_MINUS_DST_ALPHA;case"one_minus_src_color":return gl.ONE_MINUS_SRC_COLOR;case"one_minus_src_alpha":return gl.ONE_MINUS_SRC_ALPHA;case"src_alpha_saturate":return gl.SRC_ALPHA_SATURATE;case"constant_color":return gl.CONSTANT_COLOR;case"constant_alpha":return gl.CONSTANT_ALPHA;case"one_minus_constant_color":return gl.ONE_MINUS_CONSTANT_COLOR;case"one_minus_constant_alpha":return gl.ONE_MINUS_CONSTANT_ALPHA;default:return 0;}};x3dom.Utils.blendEquation=function(gl,func)
{switch(func.toLowerCase())
{case"func_add":return gl.FUNC_ADD;case"func_subtract":return gl.FUNC_SUBTRACT;case"func_reverse_subtract":return gl.FUNC_REVERSE_SUBTRACT;case"min":return 0;case"max":return 0;case"logic_op":return 0;default:return 0;}};x3dom.Utils.gunzip=function(arraybuffer)
{var byteArray=new Uint8Array(arraybuffer);try{arraybuffer=new Zlib.Gunzip(byteArray).decompress().buffer;}catch(e){}
return arraybuffer;};x3dom.Utils.generateProperties=function(viewarea,shape)
{var property={};var geometry=shape._cf.geometry.node;var appearance=shape._cf.appearance.node;var texture=appearance?appearance._cf.texture.node:null;var material=appearance?appearance._cf.material.node:null;var environment=viewarea._scene.getEnvironment();if(appearance&&appearance._shader&&x3dom.isa(appearance._shader,x3dom.nodeTypes.ComposedShader)){property.CSHADER=appearance._shader._id;}
else if(geometry){property.CSHADER=-1;property.SOLID=(shape.isSolid())?1:0;property.TEXT=(x3dom.isa(geometry,x3dom.nodeTypes.Text))?1:0;property.POPGEOMETRY=(x3dom.isa(geometry,x3dom.nodeTypes.PopGeometry))?1:0;property.IMAGEGEOMETRY=(x3dom.isa(geometry,x3dom.nodeTypes.ImageGeometry))?1:0;property.BINARYGEOMETRY=(x3dom.isa(geometry,x3dom.nodeTypes.BinaryGeometry))?1:0;property.IG_PRECISION=(property.IMAGEGEOMETRY)?geometry.numCoordinateTextures():0;property.IG_INDEXED=(property.IMAGEGEOMETRY&&geometry.getIndexTexture()!=null)?1:0;property.POINTLINE2D=!geometry.needLighting()?1:0;property.VERTEXID=(property.BINARYGEOMETRY&&geometry._vf.idsPerVertex)?1:0;property.IS_PARTICLE=(x3dom.isa(geometry,x3dom.nodeTypes.ParticleSet))?1:0;property.APPMAT=(appearance&&(material||property.CSSHADER))?1:0;property.TWOSIDEDMAT=(property.APPMAT&&x3dom.isa(material,x3dom.nodeTypes.TwoSidedMaterial))?1:0;property.SEPARATEBACKMAT=(property.TWOSIDEDMAT&&material._vf.separateBackColor)?1:0;property.SHADOW=(viewarea.getLightsShadow())?1:0;property.FOG=(viewarea._scene.getFog()._vf.visibilityRange>0)?1:0;property.CSSHADER=(appearance&&appearance._shader&&x3dom.isa(appearance._shader,x3dom.nodeTypes.CommonSurfaceShader))?1:0;property.LIGHTS=(!property.POINTLINE2D&&appearance&&shape.isLit()&&(material||property.CSSHADER))?viewarea.getLights().length+(viewarea._scene.getNavigationInfo()._vf.headlight):0;property.TEXTURED=(texture||property.TEXT)?1:0;property.PIXELTEX=(texture&&x3dom.isa(texture,x3dom.nodeTypes.PixelTexture))?1:0;property.TEXTRAFO=(appearance&&appearance._cf.textureTransform.node)?1:0;property.DIFFUSEMAP=(property.CSSHADER&&appearance._shader.getDiffuseMap())?1:0;property.NORMALMAP=(property.CSSHADER&&appearance._shader.getNormalMap())?1:0;property.NORMALSPACE=(property.NORMALMAP)?appearance._shader._vf.normalSpace.toUpperCase():"";property.SPECMAP=(property.CSSHADER&&appearance._shader.getSpecularMap())?1:0;property.SHINMAP=(property.CSSHADER&&appearance._shader.getShininessMap())?1:0;property.DISPLACEMENTMAP=(property.CSSHADER&&appearance._shader.getDisplacementMap())?1:0;property.DIFFPLACEMENTMAP=(property.CSSHADER&&appearance._shader.getDiffuseDisplacementMap())?1:0;property.MULTIDIFFALPMAP=(property.VERTEXID&&property.CSSHADER&&appearance._shader.getMultiDiffuseAlphaMap())?1:0;property.MULTIEMIAMBMAP=(property.VERTEXID&&property.CSSHADER&&appearance._shader.getMultiEmissiveAmbientMap())?1:0;property.MULTISPECSHINMAP=(property.VERTEXID&&property.CSSHADER&&appearance._shader.getMultiSpecularShininessMap())?1:0;property.MULTIVISMAP=(property.VERTEXID&&property.CSSHADER&&appearance._shader.getMultiVisibilityMap())?1:0;property.CUBEMAP=(texture&&x3dom.isa(texture,x3dom.nodeTypes.X3DEnvironmentTextureNode))?1:0;property.BLENDING=(property.TEXT||property.CUBEMAP||(texture&&texture._blending))?1:0;property.REQUIREBBOX=(geometry._vf.coordType!==undefined&&geometry._vf.coordType!="Float32")?1:0;property.REQUIREBBOXNOR=(geometry._vf.normalType!==undefined&&geometry._vf.normalType!="Float32")?1:0;property.REQUIREBBOXCOL=(geometry._vf.colorType!==undefined&&geometry._vf.colorType!="Float32")?1:0;property.REQUIREBBOXTEX=(geometry._vf.texCoordType!==undefined&&geometry._vf.texCoordType!="Float32")?1:0;property.COLCOMPONENTS=geometry._mesh._numColComponents;property.NORCOMPONENTS=geometry._mesh._numNormComponents;property.POSCOMPONENTS=geometry._mesh._numPosComponents;property.SPHEREMAPPING=(geometry._cf.texCoord!==undefined&&geometry._cf.texCoord.node!==null&&geometry._cf.texCoord.node._vf.mode&&geometry._cf.texCoord.node._vf.mode.toLowerCase()=="sphere")?1:0;property.VERTEXCOLOR=(geometry._mesh._colors[0].length>0||(property.IMAGEGEOMETRY&&geometry.getColorTexture())||(property.POPGEOMETRY&&geometry.hasColor())||(geometry._vf.color!==undefined&&geometry._vf.color.length>0))?1:0;property.CLIPPLANES=shape._clipPlanes.length;property.ALPHATHRESHOLD=(appearance)?appearance._vf.alphaClipThreshold.toFixed(2):0.1;property.GAMMACORRECTION=environment._vf.gammaCorrectionDefault;}
property.toIdentifier=function(){var id="";for(var p in this){if(this[p]!=this.toIdentifier&&this[p]!=this.toString){id+=this[p];}}
this.id=id;return id;};property.toString=function(){var str="";for(var p in this){if(this[p]!=this.toIdentifier&&this[p]!=this.toString){str+=p+": "+this[p]+", ";}}
return str;};property.toIdentifier();return property;};x3dom.Utils.wrapProgram=function(gl,program,shaderID)
{var shader={shaderID:shaderID,program:program};shader.bind=function(){gl.useProgram(program);};var loc=null;var obj=null;var i,glErr;var numUniforms=gl.getProgramParameter(program,gl.ACTIVE_UNIFORMS);for(i=0;i<numUniforms;++i){try{obj=gl.getActiveUniform(program,i);}
catch(eu){if(!obj)continue;}
glErr=gl.getError();if(glErr){x3dom.debug.logError("GL-Error (on searching uniforms): "+glErr);}
loc=gl.getUniformLocation(program,obj.name);switch(obj.type){case gl.SAMPLER_2D:shader.__defineSetter__(obj.name,(function(loc){return function(val){gl.uniform1i(loc,val);};})(loc));break;case gl.SAMPLER_CUBE:shader.__defineSetter__(obj.name,(function(loc){return function(val){gl.uniform1i(loc,val);};})(loc));break;case gl.BOOL:shader.__defineSetter__(obj.name,(function(loc){return function(val){gl.uniform1i(loc,val);};})(loc));break;case gl.FLOAT:if(obj.name.indexOf("[0]")!=-1)
shader.__defineSetter__(obj.name.substring(0,obj.name.length-3),(function(loc){return function(val){gl.uniform1fv(loc,new Float32Array(val));};})(loc));else
shader.__defineSetter__(obj.name,(function(loc){return function(val){gl.uniform1f(loc,val);};})(loc));break;case gl.FLOAT_VEC2:shader.__defineSetter__(obj.name,(function(loc){return function(val){gl.uniform2f(loc,val[0],val[1]);};})(loc));break;case gl.FLOAT_VEC3:if(obj.name.indexOf("[0]")!=-1)
shader.__defineSetter__(obj.name.substring(0,obj.name.length-3),(function(loc){return function(val){gl.uniform3fv(loc,new Float32Array(val));};})(loc));else
shader.__defineSetter__(obj.name,(function(loc){return function(val){gl.uniform3f(loc,val[0],val[1],val[2]);};})(loc));break;case gl.FLOAT_VEC4:shader.__defineSetter__(obj.name,(function(loc){return function(val){gl.uniform4f(loc,val[0],val[1],val[2],val[3]);};})(loc));break;case gl.FLOAT_MAT2:shader.__defineSetter__(obj.name,(function(loc){return function(val){gl.uniformMatrix2fv(loc,false,new Float32Array(val));};})(loc));break;case gl.FLOAT_MAT3:shader.__defineSetter__(obj.name,(function(loc){return function(val){gl.uniformMatrix3fv(loc,false,new Float32Array(val));};})(loc));break;case gl.FLOAT_MAT4:shader.__defineSetter__(obj.name,(function(loc){return function(val){gl.uniformMatrix4fv(loc,false,new Float32Array(val));};})(loc));break;case gl.INT:shader.__defineSetter__(obj.name,(function(loc){return function(val){gl.uniform1i(loc,val);};})(loc));break;default:x3dom.debug.logWarning('GLSL program variable '+obj.name+' has unknown type '+obj.type);}}
var numAttribs=gl.getProgramParameter(program,gl.ACTIVE_ATTRIBUTES);for(i=0;i<numAttribs;++i){try{obj=gl.getActiveAttrib(program,i);}
catch(ea){if(!obj)continue;}
glErr=gl.getError();if(glErr){x3dom.debug.logError("GL-Error (on searching attributes): "+glErr);}
loc=gl.getAttribLocation(program,obj.name);shader[obj.name]=loc;}
return shader;};x3dom.Utils.forbiddenBySOP=function(uri_string){uri_string=uri_string.toLowerCase();var Scheme_AuthorityPQF=uri_string.split('//');var Scheme;var AuthorityPQF;var Authority;var UserInfo_HostPort;var HostPort;var Host_Port;var Port;var Host;var originPort=document.location.port===""?"80":document.location.port;if(Scheme_AuthorityPQF.length===2){Scheme=Scheme_AuthorityPQF[0];AuthorityPQF=Scheme_AuthorityPQF[1];Authority=AuthorityPQF.split('/')[0].split('?')[0].split('#')[0];UserInfo_HostPort=Authority.split('@');if(UserInfo_HostPort.length===1){HostPort=UserInfo_HostPort[0];}else{HostPort=UserInfo_HostPort[1];}
Host_Port=HostPort.split(':');Host=Host_Port[0];Port=Host_Port[1];}
Port=Port||"80";Host=Host||document.location.host;Scheme=Scheme||document.location.protocol;return!(Port===originPort&&Host===document.location.host&&Scheme===document.location.protocol);};x3dom.States=function(x3dElem){var that=this;this.active=false;this.viewer=document.createElement('div');this.viewer.id='x3dom-state-viewer';var title=document.createElement('div');title.className='x3dom-states-head';title.appendChild(document.createTextNode('x3dom'));var subTitle=document.createElement('span');subTitle.className='x3dom-states-head2';subTitle.appendChild(document.createTextNode('stats'));title.appendChild(subTitle);this.renderMode=document.createElement('div');this.renderMode.className='x3dom-states-rendermode-hardware';this.measureList=document.createElement('ul');this.measureList.className='x3dom-states-list';this.infoList=document.createElement('ul');this.infoList.className='x3dom-states-list';this.viewer.appendChild(this.renderMode);this.viewer.appendChild(this.measureList);this.viewer.appendChild(this.infoList);this.disableContextMenu=function(e){e.preventDefault();e.stopPropagation();e.returnValue=false;return false;};this.thousandSeperator=function(value){return value.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",");};this.toFixed=function(value){var fixed=(value<1)?2:(value<10)?2:2;return value.toFixed(fixed);};this.update=function(){if(!x3dElem.runtime&&this.updateMethodID!==undefined){clearInterval(this.updateMethodID);return;}
var infos=x3dElem.runtime.states.infos;var measurements=x3dElem.runtime.states.measurements;var renderMode=x3dom.caps.RENDERMODE;if(renderMode=="HARDWARE"){this.renderMode.innerHTML="Hardware-Rendering";this.renderMode.className='x3dom-states-rendermode-hardware';}else if(renderMode=="SOFTWARE"){this.renderMode.innerHTML="Software-Rendering";this.renderMode.className='x3dom-states-rendermode-software';}
this.measureList.innerHTML="";for(var m in measurements){infoItem=document.createElement('li');infoItem.className='x3dom-states-item';infoTitle=document.createElement('div');infoTitle.className='x3dom-states-item-title';infoTitle.appendChild(document.createTextNode(m));infoValue=document.createElement('div');infoValue.className='x3dom-states-item-value';infoValue.appendChild(document.createTextNode(this.toFixed(measurements[m])));infoItem.appendChild(infoTitle);infoItem.appendChild(infoValue);this.measureList.appendChild(infoItem);}
this.infoList.innerHTML="";for(var i in infos){var infoItem=document.createElement('li');infoItem.className='x3dom-states-item';var infoTitle=document.createElement('div');infoTitle.className='x3dom-states-item-title';infoTitle.appendChild(document.createTextNode(i));var infoValue=document.createElement('div');infoValue.className='x3dom-states-item-value';infoValue.appendChild(document.createTextNode(this.thousandSeperator(infos[i])));infoItem.appendChild(infoTitle);infoItem.appendChild(infoValue);this.infoList.appendChild(infoItem);}};this.updateMethodID=window.setInterval(function(){that.update();},1000);this.viewer.addEventListener("contextmenu",that.disableContextMenu);};x3dom.States.prototype.display=function(value){this.active=(value!==undefined)?value:!this.active;this.viewer.style.display=(this.active)?"block":"none";};x3dom.StateManager=function(ctx3d)
{this.gl=ctx3d;this.states=[];this.initStates();};x3dom.StateManager.prototype.initStates=function()
{this.states['shaderID']=null;this.states['colorMask']={red:null,green:null,blue:null,alpha:null};this.states['depthMask']=null;this.states['stencilMask']=null;this.states['cullFace']=null;this.states['frontFace']=null;this.states['lineWidth']=null;this.states['blendColor']={red:null,green:null,blue:null,alpha:null};this.states['blendEquation']=null;this.states['blendEquationSeparate']={modeRGB:null,modeAlpha:null};this.states['blendFunc']={sfactor:null,dfactor:null};this.states['blendFuncSeparate']={srcRGB:null,dstRGB:null,srcAlpha:null,dstAlpha:null};this.states['depthFunc']=null;this.states['viewport']={x:null,y:null,width:null,height:null};this.states['depthRange']={zNear:null,zFar:null};};x3dom.StateManager.prototype.useProgram=function(shader)
{if(this.states['shaderID']!=shader.shaderID)
{this.gl.useProgram(shader.program);this.states['shaderID']=shader.shaderID;return true;}
return false;};x3dom.StateManager.prototype.unsetProgram=function()
{this.states['shaderID']=null;};x3dom.StateManager.prototype.enable=function(cap)
{if(this.states[cap]!==true)
{this.gl.enable(cap);this.states[cap]=true;}};x3dom.StateManager.prototype.disable=function(cap)
{if(this.states[cap]!==false)
{this.gl.disable(cap);this.states[cap]=false;}};x3dom.StateManager.prototype.colorMask=function(red,green,blue,alpha)
{if(this.states['colorMask'].red!=red||this.states['colorMask'].green!=green||this.states['colorMask'].blue!=blue||this.states['colorMask'].alpha!=alpha)
{this.gl.colorMask(red,green,blue,alpha);this.states['colorMask'].red=red;this.states['colorMask'].green=green;this.states['colorMask'].blue=blue;this.states['colorMask'].alpha=alpha;}};x3dom.StateManager.prototype.depthMask=function(flag)
{if(this.states['depthMask']!=flag)
{this.gl.depthMask(flag);this.states['depthMask']=flag;}};x3dom.StateManager.prototype.stencilMask=function(mask)
{if(this.states['stencilMask']!=mask)
{this.gl.stencilMask(mask);this.states['stencilMask']=mask;}};x3dom.StateManager.prototype.cullFace=function(mode)
{if(this.states['cullFace']!=mode)
{this.gl.cullFace(mode);this.states['cullFace']=mode;}};x3dom.StateManager.prototype.frontFace=function(mode)
{if(this.states['frontFace']!=mode)
{this.gl.frontFace(mode);this.states['frontFace']=mode;}};x3dom.StateManager.prototype.lineWidth=function(width)
{width=(width<=1)?1:width;if(this.states['lineWidth']!=width)
{this.gl.lineWidth(width);this.states['lineWidth']=width;}};x3dom.StateManager.prototype.blendColor=function(red,green,blue,alpha)
{if(this.states['blendColor'].red!=red||this.states['blendColor'].green!=green||this.states['blendColor'].blue!=blue||this.states['blendColor'].alpha!=alpha)
{this.gl.blendColor(red,green,blue,alpha);this.states['blendColor'].red=red;this.states['blendColor'].green=green;this.states['blendColor'].blue=blue;this.states['blendColor'].alpha=alpha;}};x3dom.StateManager.prototype.blendEquation=function(mode)
{if(mode&&this.states['blendEquation']!=mode)
{this.gl.blendEquation(mode);this.states['blendEquation']=mode;}};x3dom.StateManager.prototype.blendEquationSeparate=function(modeRGB,modeAlpha)
{if(this.states['blendEquationSeparate'].modeRGB!=modeRGB||this.states['blendEquationSeparate'].modeAlpha!=modeAlpha)
{this.gl.blendEquationSeparate(modeRGB,modeAlpha);this.states['blendEquationSeparate'].modeRGB=modeRGB;this.states['blendEquationSeparate'].modeAlpha=modeAlpha;}};x3dom.StateManager.prototype.blendFunc=function(sfactor,dfactor)
{if(this.states['blendFunc'].sfactor!=sfactor||this.states['blendFunc'].dfactor!=dfactor)
{this.gl.blendFunc(sfactor,dfactor);this.states['blendFunc'].sfactor=sfactor;this.states['blendFunc'].dfactor=dfactor;}};x3dom.StateManager.prototype.blendFuncSeparate=function(srcRGB,dstRGB,srcAlpha,dstAlpha)
{if(this.states['blendFuncSeparate'].srcRGB!=srcRGB||this.states['blendFuncSeparate'].dstRGB!=dstRGB||this.states['blendFuncSeparate'].srcAlpha!=srcAlpha||this.states['blendFuncSeparate'].dstAlpha!=dstAlpha)
{this.gl.blendFuncSeparate(srcRGB,dstRGB,srcAlpha,dstAlpha);this.states['blendFuncSeparate'].srcRGB=srcRGB;this.states['blendFuncSeparate'].dstRGB=dstRGB;this.states['blendFuncSeparate'].srcAlpha=srcAlpha;this.states['blendFuncSeparate'].dstAlpha=dstAlpha;}};x3dom.StateManager.prototype.depthFunc=function(func)
{if(this.states['depthFunc']!=func)
{this.gl.depthFunc(func);this.states['depthFunc']=func;}};x3dom.StateManager.prototype.depthRange=function(zNear,zFar)
{if(zNear<0||zFar<0||zNear>zFar)
{return;}
zNear=(zNear>1)?1:zNear;zFar=(zFar>1)?1:zFar;if(this.states['depthRange'].zNear!=zNear||this.states['depthRange'].zFar!=zFar)
{this.gl.depthRange(zNear,zFar);this.states['depthRange'].zNear=zNear;this.states['depthRange'].zFar=zFar;}};x3dom.StateManager.prototype.viewport=function(x,y,width,height)
{if(this.states['viewport'].x!=x||this.states['viewport'].y!=y||this.states['viewport'].width!=width||this.states['viewport'].height!=height)
{this.gl.viewport(x,y,width,height);this.states['viewport'].x=x;this.states['viewport'].y=y;this.states['viewport'].width=width;this.states['viewport'].height=height;}};x3dom.StateManager.prototype.bindFramebuffer=function(target,framebuffer)
{this.gl.bindFramebuffer(target,framebuffer);this.initStates();};x3dom.BinaryContainerLoader={outOfMemory:false,checkError:function(gl){var glErr=gl.getError();if(glErr){if(glErr==gl.OUT_OF_MEMORY){this.outOfMemory=true;x3dom.debug.logError("GL-Error "+glErr+" on loading binary container (out of memory).");console.error("WebGL: OUT_OF_MEMORY");}
else{x3dom.debug.logError("GL-Error "+glErr+" on loading binary container.");}}}};x3dom.BinaryContainerLoader.setupBinGeo=function(shape,sp,gl,viewarea,currContext)
{if(this.outOfMemory){return;}
var t00=new Date().getTime();var that=this;var binGeo=shape._cf.geometry.node;shape._webgl.binaryGeometry=-1;shape._webgl.internalDownloadCount=((binGeo._vf.index.length>0)?1:0)+
((binGeo._hasStrideOffset&&binGeo._vf.coord.length>0)?1:0)+
((!binGeo._hasStrideOffset&&binGeo._vf.coord.length>0)?1:0)+
((!binGeo._hasStrideOffset&&binGeo._vf.normal.length>0)?1:0)+
((!binGeo._hasStrideOffset&&binGeo._vf.texCoord.length>0)?1:0)+
((!binGeo._hasStrideOffset&&binGeo._vf.color.length>0)?1:0);var createTriangleSoup=(binGeo._vf.normalPerVertex==false)||((binGeo._vf.index.length>0)&&(binGeo._vf.indexType=="Int32"||(binGeo._vf.indexType=="Uint32"&&!x3dom.caps.INDEX_UINT)));shape._webgl.makeSeparateTris={index:null,coord:null,normal:null,texCoord:null,color:null,pushBuffer:function(name,buf){this[name]=buf;if(--shape._webgl.internalDownloadCount==0){if(this.coord)
this.createMesh();shape._nameSpace.doc.needRender=true;}
if(--shape._nameSpace.doc.downloadCount==0)
shape._nameSpace.doc.needRender=true;},createMesh:function(){var geoNode=binGeo;if(geoNode._hasStrideOffset){x3dom.debug.logError(geoNode._vf.indexType+" index type and per-face normals not supported for interleaved arrays.");return;}
for(var k=0;k<shape._webgl.primType.length;k++){if(shape._webgl.primType[k]==gl.TRIANGLE_STRIP){x3dom.debug.logError("makeSeparateTris: triangle strips not yet supported for per-face normals.");return;}}
var attribTypeStr=geoNode._vf.coordType;shape._webgl.coordType=x3dom.Utils.getVertexAttribType(attribTypeStr,gl);var bgCenter,bgSize,bgPrecisionMax;if(shape._webgl.coordType!=gl.FLOAT)
{if(geoNode._mesh._numPosComponents==4&&x3dom.Utils.isUnsignedType(geoNode._vf.coordType))
bgCenter=x3dom.fields.SFVec3f.copy(geoNode.getMin());else
bgCenter=x3dom.fields.SFVec3f.copy(geoNode._vf.position);bgSize=x3dom.fields.SFVec3f.copy(geoNode._vf.size);bgPrecisionMax=geoNode.getPrecisionMax('coordType');}
else
{bgCenter=new x3dom.fields.SFVec3f(0,0,0);bgSize=new x3dom.fields.SFVec3f(1,1,1);bgPrecisionMax=1.0;}
var dataLen=shape._coordStrideOffset[0]/x3dom.Utils.getDataTypeSize(geoNode._vf.coordType);dataLen=(dataLen==0)?3:dataLen;x3dom.debug.logWarning("makeSeparateTris.createMesh called with coord length "+dataLen);if(this.color&&dataLen!=shape._colorStrideOffset[0]/x3dom.Utils.getDataTypeSize(geoNode._vf.colorType))
{this.color=null;x3dom.debug.logWarning("Color format not supported.");}
var texDataLen=this.texCoord?(shape._texCoordStrideOffset[0]/x3dom.Utils.getDataTypeSize(geoNode._vf.texCoordType)):0;geoNode._vf.normalType="Float32";shape._webgl.normalType=gl.FLOAT;geoNode._mesh._numNormComponents=3;shape._normalStrideOffset=[0,0];var posBuf=[],normBuf=[],texcBuf=[],colBuf=[];var i,j,l,n=this.index?(this.index.length-2):(this.coord.length/3-2);for(i=0;i<n;i+=3)
{j=dataLen*(this.index?this.index[i]:i);var p0=new x3dom.fields.SFVec3f(bgSize.x*this.coord[j]/bgPrecisionMax,bgSize.y*this.coord[j+1]/bgPrecisionMax,bgSize.z*this.coord[j+2]/bgPrecisionMax);posBuf.push(this.coord[j]);posBuf.push(this.coord[j+1]);posBuf.push(this.coord[j+2]);if(dataLen>3)posBuf.push(this.coord[j+3]);if(this.color){colBuf.push(this.color[j]);colBuf.push(this.color[j+1]);colBuf.push(this.color[j+2]);if(dataLen>3)colBuf.push(this.color[j+3]);}
if(this.texCoord){l=texDataLen*(this.index?this.index[i]:i);texcBuf.push(this.texCoord[l]);texcBuf.push(this.texCoord[l+1]);if(texDataLen>3){texcBuf.push(this.texCoord[l+2]);texcBuf.push(this.texCoord[l+3]);}}
j=dataLen*(this.index?this.index[i+1]:i+1);var p1=new x3dom.fields.SFVec3f(bgSize.x*this.coord[j]/bgPrecisionMax,bgSize.y*this.coord[j+1]/bgPrecisionMax,bgSize.z*this.coord[j+2]/bgPrecisionMax);posBuf.push(this.coord[j]);posBuf.push(this.coord[j+1]);posBuf.push(this.coord[j+2]);if(dataLen>3)posBuf.push(this.coord[j+3]);if(this.color){colBuf.push(this.color[j]);colBuf.push(this.color[j+1]);colBuf.push(this.color[j+2]);if(dataLen>3)colBuf.push(this.color[j+3]);}
if(this.texCoord){l=texDataLen*(this.index?this.index[i+1]:i+1);texcBuf.push(this.texCoord[l]);texcBuf.push(this.texCoord[l+1]);if(texDataLen>3){texcBuf.push(this.texCoord[l+2]);texcBuf.push(this.texCoord[l+3]);}}
j=dataLen*(this.index?this.index[i+2]:i+2);var p2=new x3dom.fields.SFVec3f(bgSize.x*this.coord[j]/bgPrecisionMax,bgSize.y*this.coord[j+1]/bgPrecisionMax,bgSize.z*this.coord[j+2]/bgPrecisionMax);posBuf.push(this.coord[j]);posBuf.push(this.coord[j+1]);posBuf.push(this.coord[j+2]);if(dataLen>3)posBuf.push(this.coord[j+3]);if(this.color){colBuf.push(this.color[j]);colBuf.push(this.color[j+1]);colBuf.push(this.color[j+2]);if(dataLen>3)colBuf.push(this.color[j+3]);}
if(this.texCoord){l=texDataLen*(this.index?this.index[i+2]:i+2);texcBuf.push(this.texCoord[l]);texcBuf.push(this.texCoord[l+1]);if(texDataLen>3){texcBuf.push(this.texCoord[l+2]);texcBuf.push(this.texCoord[l+3]);}}
var a=p0.subtract(p1);var b=p1.subtract(p2);var norm=a.cross(b).normalize();for(j=0;j<3;j++){normBuf.push(norm.x);normBuf.push(norm.y);normBuf.push(norm.z);}}
var buffer=gl.createBuffer();shape._webgl.buffers[1]=buffer;gl.bindBuffer(gl.ARRAY_BUFFER,buffer);gl.bufferData(gl.ARRAY_BUFFER,x3dom.Utils.getArrayBufferView(geoNode._vf.coordType,posBuf),gl.STATIC_DRAW);gl.vertexAttribPointer(sp.position,geoNode._mesh._numPosComponents,shape._webgl.coordType,false,shape._coordStrideOffset[0],shape._coordStrideOffset[1]);gl.enableVertexAttribArray(sp.position);buffer=gl.createBuffer();shape._webgl.buffers[2]=buffer;gl.bindBuffer(gl.ARRAY_BUFFER,buffer);gl.bufferData(gl.ARRAY_BUFFER,new Float32Array(normBuf),gl.STATIC_DRAW);gl.vertexAttribPointer(sp.normal,geoNode._mesh._numNormComponents,shape._webgl.normalType,false,shape._normalStrideOffset[0],shape._normalStrideOffset[1]);gl.enableVertexAttribArray(sp.normal);if(this.texCoord)
{buffer=gl.createBuffer();shape._webgl.buffers[3]=buffer;gl.bindBuffer(gl.ARRAY_BUFFER,buffer);gl.bufferData(gl.ARRAY_BUFFER,x3dom.Utils.getArrayBufferView(geoNode._vf.texCoordType,texcBuf),gl.STATIC_DRAW);gl.vertexAttribPointer(sp.texcoord,geoNode._mesh._numTexComponents,shape._webgl.texCoordType,false,shape._texCoordStrideOffset[0],shape._texCoordStrideOffset[1]);gl.enableVertexAttribArray(sp.texcoord);}
if(this.color)
{buffer=gl.createBuffer();shape._webgl.buffers[4]=buffer;gl.bindBuffer(gl.ARRAY_BUFFER,buffer);gl.bufferData(gl.ARRAY_BUFFER,x3dom.Utils.getArrayBufferView(geoNode._vf.colorType,colBuf),gl.STATIC_DRAW);gl.vertexAttribPointer(sp.color,geoNode._mesh._numColComponents,shape._webgl.colorType,false,shape._colorStrideOffset[0],shape._colorStrideOffset[1]);gl.enableVertexAttribArray(sp.color);}
geoNode._vf.vertexCount=[];geoNode._vf.vertexCount[0]=posBuf.length/dataLen;geoNode._mesh._numCoords=geoNode._vf.vertexCount[0];geoNode._mesh._numFaces=geoNode._vf.vertexCount[0]/3;shape._webgl.primType=[];shape._webgl.primType[0]=gl.TRIANGLES;posBuf=null;normBuf=null;texcBuf=null;colBuf=null;this.index=null;this.coord=null;this.normal=null;this.texCoord=null;this.color=null;that.checkError(gl);delete shape._webgl.shader;shape._webgl.shader=currContext.cache.getDynamicShader(gl,viewarea,shape);}};if(binGeo._vf.index.length>0)
{var xmlhttp0=new XMLHttpRequest();xmlhttp0.open("GET",shape._nameSpace.getURL(binGeo._vf.index),true);xmlhttp0.responseType="arraybuffer";shape._nameSpace.doc.downloadCount+=1;xmlhttp0.send(null);xmlhttp0.onload=function()
{if(!shape._webgl)
return;var XHR_buffer=binGeo._vf.compressed==true?x3dom.Utils.gunzip(xmlhttp0.response):xmlhttp0.response;var geoNode=binGeo;var attribTypeStr=geoNode._vf.indexType;var indexArray=x3dom.Utils.getArrayBufferView(attribTypeStr,XHR_buffer);if(createTriangleSoup){shape._webgl.makeSeparateTris.pushBuffer("index",indexArray);return;}
var indicesBuffer=gl.createBuffer();shape._webgl.buffers[0]=indicesBuffer;if(x3dom.caps.INDEX_UINT&&attribTypeStr=="Uint32"){shape._webgl.indexType=gl.UNSIGNED_INT;}
else{shape._webgl.indexType=gl.UNSIGNED_SHORT;}
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,indicesBuffer);gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,indexArray,gl.STATIC_DRAW);shape._webgl.binaryGeometry=1;if(geoNode._vf.vertexCount[0]==0)
geoNode._vf.vertexCount[0]=indexArray.length;geoNode._mesh._numFaces=0;for(var i=0;i<geoNode._vf.vertexCount.length;i++){if(shape._webgl.primType[i]==gl.TRIANGLE_STRIP)
geoNode._mesh._numFaces+=geoNode._vf.vertexCount[i]-2;else
geoNode._mesh._numFaces+=geoNode._vf.vertexCount[i]/3;}
indexArray=null;shape._nameSpace.doc.downloadCount-=1;shape._webgl.internalDownloadCount-=1;if(shape._webgl.internalDownloadCount==0)
shape._nameSpace.doc.needRender=true;that.checkError(gl);var t11=new Date().getTime()-t00;x3dom.debug.logInfo("XHR0/ index load time: "+t11+" ms");};}
if(binGeo._hasStrideOffset&&binGeo._vf.coord.length>0)
{var xmlhttp=new XMLHttpRequest();xmlhttp.open("GET",shape._nameSpace.getURL(binGeo._vf.coord),true);xmlhttp.responseType="arraybuffer";shape._nameSpace.doc.downloadCount+=1;xmlhttp.send(null);xmlhttp.onload=function()
{if(!shape._webgl)
return;var XHR_buffer=binGeo._vf.compressed==true?x3dom.Utils.gunzip(xmlhttp.response):xmlhttp.response;var geoNode=binGeo;var attribTypeStr=geoNode._vf.coordType;shape._webgl.coordType=x3dom.Utils.getVertexAttribType(attribTypeStr,gl);shape._webgl.normalType=shape._webgl.coordType;shape._webgl.texCoordType=shape._webgl.coordType;shape._webgl.colorType=shape._webgl.coordType;var attributes=x3dom.Utils.getArrayBufferView(attribTypeStr,XHR_buffer);var dataLen=shape._coordStrideOffset[0]/x3dom.Utils.getDataTypeSize(attribTypeStr);if(dataLen)
geoNode._mesh._numCoords=attributes.length/dataLen;if(geoNode._vf.index.length==0){for(var i=0;i<geoNode._vf.vertexCount.length;i++){if(shape._webgl.primType[i]==gl.TRIANGLE_STRIP)
geoNode._mesh._numFaces+=geoNode._vf.vertexCount[i]-2;else
geoNode._mesh._numFaces+=geoNode._vf.vertexCount[i]/3;}}
var buffer=gl.createBuffer();shape._webgl.buffers[1]=buffer;gl.bindBuffer(gl.ARRAY_BUFFER,buffer);gl.bufferData(gl.ARRAY_BUFFER,attributes,gl.STATIC_DRAW);gl.vertexAttribPointer(sp.position,geoNode._mesh._numPosComponents,shape._webgl.coordType,false,shape._coordStrideOffset[0],shape._coordStrideOffset[1]);gl.enableVertexAttribArray(sp.position);if(geoNode._vf.normal.length>0)
{shape._webgl.buffers[2]=buffer;gl.bindBuffer(gl.ARRAY_BUFFER,buffer);gl.bufferData(gl.ARRAY_BUFFER,attributes,gl.STATIC_DRAW);gl.vertexAttribPointer(sp.normal,geoNode._mesh._numNormComponents,shape._webgl.normalType,false,shape._normalStrideOffset[0],shape._normalStrideOffset[1]);gl.enableVertexAttribArray(sp.normal);}
if(geoNode._vf.texCoord.length>0)
{console.log("YUPPIE");shape._webgl.buffers[3]=buffer;gl.bindBuffer(gl.ARRAY_BUFFER,buffer);gl.bufferData(gl.ARRAY_BUFFER,attributes,gl.STATIC_DRAW);gl.vertexAttribPointer(sp.texcoord,geoNode._mesh._numTexComponents,shape._webgl.texCoordType,false,shape._texCoordStrideOffset[0],shape._texCoordStrideOffset[1]);gl.enableVertexAttribArray(sp.texcoord);}
if(geoNode._vf.color.length>0)
{shape._webgl.buffers[4]=buffer;gl.bindBuffer(gl.ARRAY_BUFFER,buffer);gl.bufferData(gl.ARRAY_BUFFER,attributes,gl.STATIC_DRAW);gl.vertexAttribPointer(sp.color,geoNode._mesh._numColComponents,shape._webgl.colorType,false,shape._colorStrideOffset[0],shape._colorStrideOffset[1]);gl.enableVertexAttribArray(sp.color);}
attributes=null;shape._nameSpace.doc.downloadCount-=1;shape._webgl.internalDownloadCount-=1;if(shape._webgl.internalDownloadCount==0)
shape._nameSpace.doc.needRender=true;that.checkError(gl);var t11=new Date().getTime()-t00;x3dom.debug.logInfo("XHR/ interleaved array load time: "+t11+" ms");};}
if(!binGeo._hasStrideOffset&&binGeo._vf.coord.length>0)
{var xmlhttp1=new XMLHttpRequest();xmlhttp1.open("GET",shape._nameSpace.getURL(binGeo._vf.coord),true);xmlhttp1.responseType="arraybuffer";shape._nameSpace.doc.downloadCount+=1;xmlhttp1.send(null);xmlhttp1.onload=function()
{if(!shape._webgl)
return;var XHR_buffer=binGeo._vf.compressed==true?x3dom.Utils.gunzip(xmlhttp1.response):xmlhttp1.response;var geoNode=binGeo;var i=0;var attribTypeStr=geoNode._vf.coordType;shape._webgl.coordType=x3dom.Utils.getVertexAttribType(attribTypeStr,gl);var vertices=x3dom.Utils.getArrayBufferView(attribTypeStr,XHR_buffer);if(createTriangleSoup){shape._webgl.makeSeparateTris.pushBuffer("coord",vertices);return;}
gl.bindAttribLocation(sp.program,0,"position");var positionBuffer=gl.createBuffer();shape._webgl.buffers[1]=positionBuffer;gl.bindBuffer(gl.ARRAY_BUFFER,positionBuffer);gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW);gl.bindBuffer(gl.ARRAY_BUFFER,positionBuffer);gl.vertexAttribPointer(sp.position,geoNode._mesh._numPosComponents,shape._webgl.coordType,false,shape._coordStrideOffset[0],shape._coordStrideOffset[1]);gl.enableVertexAttribArray(sp.position);geoNode._mesh._numCoords=vertices.length/geoNode._mesh._numPosComponents;if(geoNode._vf.index.length==0){for(i=0;i<geoNode._vf.vertexCount.length;i++){if(shape._webgl.primType[i]==gl.TRIANGLE_STRIP)
geoNode._mesh._numFaces+=geoNode._vf.vertexCount[i]-2;else
geoNode._mesh._numFaces+=geoNode._vf.vertexCount[i]/3;}}
if((attribTypeStr=="Float32")&&(shape._vf.bboxSize.x<0||shape._vf.bboxSize.y<0||shape._vf.bboxSize.z<0))
{var min=new x3dom.fields.SFVec3f(vertices[0],vertices[1],vertices[2]);var max=new x3dom.fields.SFVec3f(vertices[0],vertices[1],vertices[2]);for(i=3;i<vertices.length;i+=3)
{if(min.x>vertices[i+0]){min.x=vertices[i+0];}
if(min.y>vertices[i+1]){min.y=vertices[i+1];}
if(min.z>vertices[i+2]){min.z=vertices[i+2];}
if(max.x<vertices[i+0]){max.x=vertices[i+0];}
if(max.y<vertices[i+1]){max.y=vertices[i+1];}
if(max.z<vertices[i+2]){max.z=vertices[i+2];}}
shape._vf.bboxCenter.setValues(min.add(max).multiply(0.5));shape._vf.bboxSize.setValues(max.subtract(min));}
vertices=null;shape._nameSpace.doc.downloadCount-=1;shape._webgl.internalDownloadCount-=1;if(shape._webgl.internalDownloadCount==0)
shape._nameSpace.doc.needRender=true;that.checkError(gl);var t11=new Date().getTime()-t00;x3dom.debug.logInfo("XHR1/ coord load time: "+t11+" ms");};}
if(!binGeo._hasStrideOffset&&binGeo._vf.normal.length>0)
{var xmlhttp2=new XMLHttpRequest();xmlhttp2.open("GET",shape._nameSpace.getURL(binGeo._vf.normal),true);xmlhttp2.responseType="arraybuffer";shape._nameSpace.doc.downloadCount+=1;xmlhttp2.send(null);xmlhttp2.onload=function()
{if(!shape._webgl)
return;var XHR_buffer=binGeo._vf.compressed==true?x3dom.Utils.gunzip(xmlhttp2.response):xmlhttp2.response;var attribTypeStr=binGeo._vf.normalType;shape._webgl.normalType=x3dom.Utils.getVertexAttribType(attribTypeStr,gl);var normals=x3dom.Utils.getArrayBufferView(attribTypeStr,XHR_buffer);if(createTriangleSoup){shape._webgl.makeSeparateTris.pushBuffer("normal",normals);return;}
var normalBuffer=gl.createBuffer();shape._webgl.buffers[2]=normalBuffer;gl.bindBuffer(gl.ARRAY_BUFFER,normalBuffer);gl.bufferData(gl.ARRAY_BUFFER,normals,gl.STATIC_DRAW);gl.vertexAttribPointer(sp.normal,binGeo._mesh._numNormComponents,shape._webgl.normalType,false,shape._normalStrideOffset[0],shape._normalStrideOffset[1]);gl.enableVertexAttribArray(sp.normal);normals=null;shape._nameSpace.doc.downloadCount-=1;shape._webgl.internalDownloadCount-=1;if(shape._webgl.internalDownloadCount==0)
shape._nameSpace.doc.needRender=true;that.checkError(gl);var t11=new Date().getTime()-t00;x3dom.debug.logInfo("XHR2/ normal load time: "+t11+" ms");};}
if(!binGeo._hasStrideOffset&&binGeo._vf.texCoord.length>0)
{var xmlhttp3=new XMLHttpRequest();xmlhttp3.open("GET",shape._nameSpace.getURL(binGeo._vf.texCoord),true);xmlhttp3.responseType="arraybuffer";shape._nameSpace.doc.downloadCount+=1;xmlhttp3.send(null);xmlhttp3.onload=function()
{var i,j;var tmp;if(!shape._webgl)
return;var XHR_buffer=binGeo._vf.compressed==true?x3dom.Utils.gunzip(xmlhttp3.response):xmlhttp3.response;var attribTypeStr=binGeo._vf.texCoordType;shape._webgl.texCoordType=x3dom.Utils.getVertexAttribType(attribTypeStr,gl);var texCoords=x3dom.Utils.getArrayBufferView(attribTypeStr,XHR_buffer);if(createTriangleSoup){shape._webgl.makeSeparateTris.pushBuffer("texCoord",texCoords);return;}
if(binGeo._vf["idsPerVertex"])
{var idBuffer=gl.createBuffer();shape._webgl.buffers[5]=idBuffer;gl.bindBuffer(gl.ARRAY_BUFFER,idBuffer);var ids=x3dom.Utils.getArrayBufferView("Float32",texCoords.length/2);for(i=0,j=0;i<texCoords.length;i+=2,j++)
{ids[j]=texCoords[i+1]*65536+texCoords[i];}
gl.bufferData(gl.ARRAY_BUFFER,ids,gl.STATIC_DRAW);gl.vertexAttribPointer(sp.id,1,gl.FLOAT,false,4,0);gl.enableVertexAttribArray(sp.id);}
else
{var texcBuffer=gl.createBuffer();shape._webgl.buffers[3]=texcBuffer;gl.bindBuffer(gl.ARRAY_BUFFER,texcBuffer);gl.bufferData(gl.ARRAY_BUFFER,texCoords,gl.STATIC_DRAW);gl.vertexAttribPointer(sp.texcoord,binGeo._mesh._numTexComponents,shape._webgl.texCoordType,false,shape._texCoordStrideOffset[0],shape._texCoordStrideOffset[1]);gl.enableVertexAttribArray(sp.texcoord);}
texCoords=null;shape._nameSpace.doc.downloadCount-=1;shape._webgl.internalDownloadCount-=1;if(shape._webgl.internalDownloadCount==0)
shape._nameSpace.doc.needRender=true;that.checkError(gl);var t11=new Date().getTime()-t00;x3dom.debug.logInfo("XHR3/ texCoord load time: "+t11+" ms");};}
if(!binGeo._hasStrideOffset&&binGeo._vf.color.length>0)
{var xmlhttp4=new XMLHttpRequest();xmlhttp4.open("GET",shape._nameSpace.getURL(binGeo._vf.color),true);xmlhttp4.responseType="arraybuffer";shape._nameSpace.doc.downloadCount+=1;xmlhttp4.send(null);xmlhttp4.onload=function()
{if(!shape._webgl)
return;var XHR_buffer=binGeo._vf.compressed==true?x3dom.Utils.gunzip(xmlhttp4.response):xmlhttp4.response;var attribTypeStr=binGeo._vf.colorType;shape._webgl.colorType=x3dom.Utils.getVertexAttribType(attribTypeStr,gl);var colors=x3dom.Utils.getArrayBufferView(attribTypeStr,XHR_buffer);if(createTriangleSoup){shape._webgl.makeSeparateTris.pushBuffer("color",colors);return;}
var colorBuffer=gl.createBuffer();shape._webgl.buffers[4]=colorBuffer;gl.bindBuffer(gl.ARRAY_BUFFER,colorBuffer);gl.bufferData(gl.ARRAY_BUFFER,colors,gl.STATIC_DRAW);gl.vertexAttribPointer(sp.color,binGeo._mesh._numColComponents,shape._webgl.colorType,false,shape._colorStrideOffset[0],shape._colorStrideOffset[1]);gl.enableVertexAttribArray(sp.color);colors=null;shape._nameSpace.doc.downloadCount-=1;shape._webgl.internalDownloadCount-=1;if(shape._webgl.internalDownloadCount==0)
shape._nameSpace.doc.needRender=true;that.checkError(gl);var t11=new Date().getTime()-t00;x3dom.debug.logInfo("XHR4/ color load time: "+t11+" ms");};}};x3dom.BinaryContainerLoader.setupPopGeo=function(shape,sp,gl,viewarea,currContext)
{if(this.outOfMemory){return;}
var popGeo=shape._cf.geometry.node;if(popGeo.hasIndex()){shape._webgl.popGeometry=1;shape._webgl.buffers[0]=gl.createBuffer();gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,shape._webgl.buffers[0]);gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,popGeo.getTotalNumberOfIndices()*2,gl.STATIC_DRAW);shape._webgl.buffers[5]=gl.createBuffer();var idBuffer=new Float32Array(popGeo._vf.vertexBufferSize);(function(){for(var i=0;i<idBuffer.length;++i)idBuffer[i]=i;})();gl.bindBuffer(gl.ARRAY_BUFFER,shape._webgl.buffers[5]);gl.bufferData(gl.ARRAY_BUFFER,idBuffer,gl.STATIC_DRAW);}
else{shape._webgl.popGeometry=-1;}
shape._webgl.buffers[1]=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,shape._webgl.buffers[1]);gl.bufferData(gl.ARRAY_BUFFER,(popGeo._vf.attributeStride*popGeo._vf.vertexBufferSize),gl.STATIC_DRAW);var attribTypeStr=popGeo._vf.coordType;shape._webgl.coordType=x3dom.Utils.getVertexAttribType(attribTypeStr,gl);shape._coordStrideOffset[0]=popGeo.getAttributeStride();shape._coordStrideOffset[1]=popGeo.getPositionOffset();gl.vertexAttribPointer(sp.position,shape._cf.geometry.node._mesh._numPosComponents,shape._webgl.coordType,false,shape._coordStrideOffset[0],shape._coordStrideOffset[1]);gl.enableVertexAttribArray(sp.position);if(popGeo.hasNormal()){attribTypeStr=popGeo._vf.normalType;shape._webgl.normalType=x3dom.Utils.getVertexAttribType(attribTypeStr,gl);shape._normalStrideOffset[0]=popGeo.getAttributeStride();shape._normalStrideOffset[1]=popGeo.getNormalOffset();shape._webgl.buffers[2]=shape._webgl.buffers[1];gl.vertexAttribPointer(sp.normal,shape._cf.geometry.node._mesh._numNormComponents,shape._webgl.normalType,false,shape._normalStrideOffset[0],shape._normalStrideOffset[1]);gl.enableVertexAttribArray(sp.normal);}
if(popGeo.hasTexCoord()){attribTypeStr=popGeo._vf.texCoordType;shape._webgl.texCoordType=x3dom.Utils.getVertexAttribType(attribTypeStr,gl);shape._webgl.buffers[3]=shape._webgl.buffers[1];shape._texCoordStrideOffset[0]=popGeo.getAttributeStride();shape._texCoordStrideOffset[1]=popGeo.getTexCoordOffset();gl.vertexAttribPointer(sp.texcoord,shape._cf.geometry.node._mesh._numTexComponents,shape._webgl.texCoordType,false,shape._texCoordStrideOffset[0],shape._texCoordStrideOffset[1]);gl.enableVertexAttribArray(sp.texcoord);}
if(popGeo.hasColor()){attribTypeStr=popGeo._vf.colorType;shape._webgl.colorType=x3dom.Utils.getVertexAttribType(attribTypeStr,gl);shape._webgl.buffers[4]=shape._webgl.buffers[1];shape._colorStrideOffset[0]=popGeo.getAttributeStride();shape._colorStrideOffset[1]=popGeo.getColorOffset();gl.vertexAttribPointer(sp.color,shape._cf.geometry.node._mesh._numColComponents,shape._webgl.colorType,false,shape._colorStrideOffset[0],shape._colorStrideOffset[1]);gl.enableVertexAttribArray(sp.color);}
shape._webgl.currentNumIndices=0;shape._webgl.currentNumVertices=0;shape._webgl.numVerticesAtLevel=[];shape._webgl.levelsAvailable=0;this.checkError(gl);shape._webgl.levelLoaded=[];(function(){for(var i=0;i<popGeo.getNumLevels();++i)
shape._webgl.levelLoaded.push(false);})();var uploadDataToGPU=function(data,lvl){shape._webgl.levelLoaded[lvl]=true;shape._webgl.numVerticesAtLevel[lvl]=0;if(data){var indexDataLengthInBytes=0;var redrawNeeded=false;if(popGeo.hasIndex()){indexDataLengthInBytes=popGeo.getNumIndicesByLevel(lvl)*2;if(indexDataLengthInBytes>0){redrawNeeded=true;var indexDataView=new Uint8Array(data,0,indexDataLengthInBytes);gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,shape._webgl.buffers[0]);(function(){var indexDataOffset=0;for(var i=0;i<lvl;++i){indexDataOffset+=popGeo.getNumIndicesByLevel(i);}
gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER,indexDataOffset*2,indexDataView);})();}}
var vertexDataLengthInBytes=data.byteLength-indexDataLengthInBytes;if(vertexDataLengthInBytes>0){redrawNeeded=true;var attributeDataView=new Uint8Array(data,indexDataLengthInBytes,vertexDataLengthInBytes);gl.bindBuffer(gl.ARRAY_BUFFER,shape._webgl.buffers[1]);if(!popGeo.hasIndex()){gl.bufferSubData(gl.ARRAY_BUFFER,shape._webgl.currentNumVertices*popGeo.getAttributeStride(),attributeDataView);}
else{gl.bufferSubData(gl.ARRAY_BUFFER,popGeo.getVertexDataBufferOffset(lvl)*popGeo.getAttributeStride(),attributeDataView);}
shape._webgl.numVerticesAtLevel[lvl]=vertexDataLengthInBytes/popGeo.getAttributeStride();shape._webgl.currentNumVertices+=shape._webgl.numVerticesAtLevel[lvl];}
(function(){var numValidIndices=0;for(var i=shape._webgl.levelsAvailable;i<popGeo.getNumLevels();++i){if(shape._webgl.levelLoaded[i]===false){break;}
else{numValidIndices+=popGeo.getNumIndicesByLevel(i);++shape._webgl.levelsAvailable;}}
shape._webgl.currentNumIndices=numValidIndices;})();popGeo._mesh._numCoords=shape._webgl.currentNumVertices;popGeo._mesh._numFaces=(popGeo.hasIndex()?shape._webgl.currentNumIndices:shape._webgl.currentNumVertices)/3;popGeo.adaptVertexCount(popGeo.hasIndex()?popGeo._mesh._numFaces*3:popGeo._mesh._numCoords);if(redrawNeeded){shape._nameSpace.doc.needRender=true;}}};var dataURLs=popGeo.getDataURLs();var downloadCallbacks=[];var priorities=[];shape._webgl.downloadStartTimer=new Date().getTime();for(var i=0;i<dataURLs.length;++i){shape._nameSpace.doc.downloadCount+=1;(function(idx){downloadCallbacks.push(function(data){shape._nameSpace.doc.downloadCount-=1;return uploadDataToGPU(data,idx);});})(i);priorities.push(i);}
x3dom.DownloadManager.get(dataURLs,downloadCallbacks,priorities);};x3dom.BinaryContainerLoader.setupImgGeo=function(shape,sp,gl,viewarea,currContext)
{if(this.outOfMemory){return;}
var imageGeometry=shape._cf.geometry.node;if(imageGeometry.getIndexTexture()){shape._webgl.imageGeometry=1;}else{shape._webgl.imageGeometry=-1;}
imageGeometry.unsetGeoDirty();if(currContext.IG_PositionBuffer==null){currContext.IG_PositionBuffer=gl.createBuffer();}
shape._webgl.buffers[1]=currContext.IG_PositionBuffer;gl.bindBuffer(gl.ARRAY_BUFFER,currContext.IG_PositionBuffer);var vertices=new Float32Array(shape._webgl.positions[0]);gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW);gl.bindBuffer(gl.ARRAY_BUFFER,currContext.IG_PositionBuffer);gl.vertexAttribPointer(sp.position,imageGeometry._mesh._numPosComponents,shape._webgl.coordType,false,shape._coordStrideOffset[0],shape._coordStrideOffset[1]);gl.enableVertexAttribArray(sp.position);vertices=null;this.checkError(gl);};x3dom.DrawableCollection=function(drawableCollectionConfig){this.collection=[];this.viewMatrix=drawableCollectionConfig.viewMatrix;this.projMatrix=drawableCollectionConfig.projMatrix;this.sceneMatrix=drawableCollectionConfig.sceneMatrix;this.viewarea=drawableCollectionConfig.viewArea;var scene=this.viewarea._scene;var env=scene.getEnvironment();var viewpoint=scene.getViewpoint();this.near=viewpoint.getNear();this.pixelHeightAtDistOne=viewpoint.getImgPlaneHeightAtDistOne()/this.viewarea._height;this.context=drawableCollectionConfig.context;this.gl=drawableCollectionConfig.gl;this.viewFrustum=this.viewarea.getViewfrustum(this.sceneMatrix);this.worldVol=new x3dom.fields.BoxVolume();this.frustumCulling=drawableCollectionConfig.frustumCulling&&(this.viewFrustum!=null);this.smallFeatureThreshold=drawableCollectionConfig.smallFeatureThreshold;this.sortOpaque=(this.smallFeatureThreshold>0&&env._lowPriorityThreshold<1);this.sortTrans=drawableCollectionConfig.sortTrans;this.prioLevels=10;this.maxTreshold=100;this.sortBySortKey=false;this.sortByPriority=false;this.numberOfNodes=0;this.length=0;};x3dom.DrawableCollection.prototype.cull=function(transform,graphState,singlePath,planeMask){var node=graphState.boundedNode;if(!node||!node._vf.render){return 0;}
var volume=node.getVolume();var MASK_SET=63;if(this.frustumCulling&&graphState.needCulling){var wvol;if(singlePath&&!graphState.worldVolume.isValid()){graphState.worldVolume.transformFrom(transform,volume);wvol=graphState.worldVolume;}
else if(planeMask<MASK_SET){this.worldVol.transformFrom(transform,volume);wvol=this.worldVol;}
if(planeMask<MASK_SET)
planeMask=this.viewFrustum.intersect(wvol,planeMask);if(planeMask<=0){return-1;}}
else{planeMask=MASK_SET;}
graphState.coverage=-1;if(this.smallFeatureThreshold>0||node.forceUpdateCoverage()){var modelViewMat=this.viewMatrix.mult(transform);graphState.center=modelViewMat.multMatrixPnt(volume.getCenter());var rVec=modelViewMat.multMatrixVec(volume.getRadialVec());var r=rVec.length();var dist=Math.max(-graphState.center.z-r,this.near);var projPixelLength=dist*this.pixelHeightAtDistOne;graphState.coverage=(r*2.0)/projPixelLength;if(this.smallFeatureThreshold>0&&graphState.coverage<this.smallFeatureThreshold&&graphState.needCulling){return 0;}}
this.numberOfNodes++;return planeMask;};x3dom.DrawableCollection.prototype.addShape=function(shape,transform,graphState){var drawable={};drawable.shape=shape;drawable.transform=transform;drawable.localTransform=graphState.localMatrix;drawable.localVolume=graphState.volume;drawable.worldVolume=x3dom.fields.BoxVolume.copy(graphState.worldVolume);drawable.priority=Math.max(0,graphState.coverage);drawable.shaderID=shape.getShaderProperties(this.viewarea).id;var appearance=shape._cf.appearance.node;drawable.sortType=appearance?appearance._vf.sortType.toLowerCase():"opaque";drawable.sortKey=appearance?appearance._vf.sortKey:0;if(drawable.sortType=='transparent'){if(this.smallFeatureThreshold>0){drawable.zPos=graphState.center.z;}
else{var center=transform.multMatrixPnt(shape.getCenter());center=this.viewMatrix.multMatrixPnt(center);drawable.zPos=center.z;}}
if(!this.sortBySortKey&&drawable.sortKey!=0){this.sortBySortKey=true;}
if(this.collection[drawable.sortType]===undefined){this.collection[drawable.sortType]=[];}
this.collection[drawable.sortType].push(drawable);this.length++;if(this.context&&this.gl){this.context.setupShape(this.gl,drawable,this.viewarea);}};x3dom.DrawableCollection.prototype.addDrawable=function(drawable){drawable.shaderID=drawable.shape.getShaderProperties(this.viewarea).id;var appearance=drawable.shape._cf.appearance.node;drawable.sortType=appearance?appearance._vf.sortType.toLowerCase():"opaque";drawable.sortKey=appearance?appearance._vf.sortKey:0;if(drawable.sortType=='transparent'){var center=drawable.transform.multMatrixPnt(drawable.shape.getCenter());center=this.viewMatrix.multMatrixPnt(center);drawable.zPos=center.z;}
if(!this.sortBySortKey&&drawable.sortKey!=0){this.sortBySortKey=true;}
if(this.collection[drawable.sortType]===undefined){this.collection[drawable.sortType]=[];}
this.collection[drawable.sortType].push(drawable);this.length++;if(this.context&&this.gl){this.context.setupShape(this.gl,drawable,this.viewarea);}};x3dom.DrawableCollection.prototype.calculatePriority=function(graphState){var priority=Math.max(0,graphState.coverage);var pl=this.prioLevels-1;priority=Math.min(Math.round(priority/(this.maxTreshold/pl)),pl);return priority;};x3dom.DrawableCollection.prototype.concat=function(){var opaque=(this.collection['opaque']!==undefined)?this.collection['opaque']:[];var transparent=(this.collection['transparent']!==undefined)?this.collection['transparent']:[];this.collection=opaque.concat(transparent);};x3dom.DrawableCollection.prototype.get=function(idx){return this.collection[idx];};x3dom.DrawableCollection.prototype.sort=function(){var opaque=[];var transparent=[];var that=this;if(this.collection['opaque']!==undefined){if(this.sortOpaque){this.collection['opaque'].sort(function(a,b){if(a.sortKey==b.sortKey||!that.sortBySortKey){return b.priority-a.priority;}
return a.sortKey-b.sortKey;});}
opaque=this.collection['opaque'];}
if(this.collection['transparent']!==undefined){if(this.sortTrans){this.collection['transparent'].sort(function(a,b){if(a.sortKey==b.sortKey||!that.sortBySortKey){if(a.priority==b.priority||!that.sortByPriority){return a.zPos-b.zPos;}
return b.priority-a.priority;}
return a.sortKey-b.sortKey;});}
transparent=this.collection['transparent'];}
this.collection=opaque.concat(transparent);};x3dom.DrawableCollection.prototype.forEach=function(fnc,maxPriority){maxPriority=(maxPriority!==undefined)?Math.min(maxPriority,this.prioLevels):this.prioLevels;var sortKey,priority,shaderID,drawable;for(sortKey=0;sortKey<this.collection['opaque'].length;++sortKey)
{if(this.collection['opaque'][sortKey]!==undefined)
{for(priority=this.collection['opaque'][sortKey].length;priority>0;--priority)
{if(this.collection['opaque'][sortKey][priority]!==undefined)
{for(shaderID in this.collection['opaque'][sortKey][priority])
{for(drawable=0;drawable<this.collection['opaque'][sortKey][priority][shaderID].length;++drawable)
{fnc(this.collection['opaque'][sortKey][priority][shaderID][drawable]);}}}}}}
for(sortKey=0;sortKey<this.collection['transparent'].length;++sortKey)
{if(this.collection['transparent'][sortKey]!==undefined)
{for(priority=this.collection['transparent'][sortKey].length;priority>0;--priority)
{if(this.collection['transparent'][sortKey][priority]!==undefined)
{for(var shaderId in this.collection['transparent'][sortKey][priority])
{this.collection['transparent'][sortKey][priority][shaderId].sort(function(a,b){return a.zPos-b.zPos});for(drawable=0;drawable<this.collection['transparent'][sortKey][priority][shaderId].length;++drawable)
{fnc(this.collection['transparent'][sortKey][priority][shaderId][drawable]);}}}}}}};x3dom.Moveable=function(x3domElem,boundedObj,callback,gridSize,mode){this._x3domRoot=x3domElem;this._runtime=x3domElem.runtime;this._callback=callback;this._gridSize=gridSize?gridSize:0;this._moveable=boundedObj;this._drag=false;this._w=0;this._h=0;this._uPlane=null;this._vPlane=null;this._pPlane=null;this._isect=null;this._translationOffset=null;this._rotationOffset=null;this._scaleOffset=null;this._lastX=0;this._lastY=0;this._buttonState=0;this._mode=(mode&&mode.length)?mode.toLowerCase():"translation";this._firstRay=null;this._matrixTrafo=null;this._navType="examine";this.attachHandlers();};x3dom.Moveable.prototype.setGridSize=function(gridSize){this._gridSize=gridSize;};x3dom.Moveable.prototype.setMode=function(mode){this._mode=mode.toLowerCase();};x3dom.Moveable.prototype.attachHandlers=function(){this._moveable._iMove=this;if(!this._x3domRoot._iMove)
this._x3domRoot._iMove=[];this._x3domRoot._iMove.push(this);this._moveable.addEventListener('mousedown',this.start,false);this._moveable.addEventListener('mouseover',this.over,false);this._moveable.addEventListener('mouseout',this.out,false);if(this._x3domRoot._iMove.length==1){this._x3domRoot.addEventListener('mouseup',this.stop,false);this._x3domRoot.addEventListener('mouseout',this.stop,false);this._x3domRoot.addEventListener('mousemove',this.move,true);if(!this._runtime.canvas.disableTouch){this._x3domRoot.addEventListener('MozTouchDown',this.touchStartHandlerMoz,false);this._x3domRoot.addEventListener('MozTouchMove',this.touchMoveHandlerMoz,true);this._x3domRoot.addEventListener('MozTouchUp',this.touchEndHandlerMoz,false);this._x3domRoot.addEventListener('touchstart',this.touchStartHandler,false);this._x3domRoot.addEventListener('touchmove',this.touchMoveHandler,true);this._x3domRoot.addEventListener('touchend',this.touchEndHandler,false);}}};x3dom.Moveable.prototype.detachHandlers=function(){var iMove=this._x3domRoot._iMove;if(iMove){for(var i=0,n=iMove.length;i<n;i++){if(iMove[i]==this){iMove.splice(i,1);break;}}}
this._moveable.removeEventListener('mousedown',this.start,false);this._moveable.removeEventListener('mouseover',this.over,false);this._moveable.removeEventListener('mouseout',this.out,false);if(iMove.length==0){this._x3domRoot.removeEventListener('mouseup',this.stop,false);this._x3domRoot.removeEventListener('mouseout',this.stop,false);this._x3domRoot.removeEventListener('mousemove',this.move,true);if(!this._runtime.canvas.disableTouch){this._x3domRoot.removeEventListener('MozTouchDown',this.touchStartHandlerMoz,false);this._x3domRoot.removeEventListener('MozTouchMove',this.touchMoveHandlerMoz,true);this._x3domRoot.removeEventListener('MozTouchUp',this.touchEndHandlerMoz,false);this._x3domRoot.removeEventListener('touchstart',this.touchStartHandler,false);this._x3domRoot.removeEventListener('touchmove',this.touchMoveHandler,true);this._x3domRoot.removeEventListener('touchend',this.touchEndHandler,false);}}
if(this._moveable._iMove)
delete this._moveable._iMove;};x3dom.Moveable.prototype.calcViewPlane=function(origin){this._w=this._runtime.getWidth();this._h=this._runtime.getHeight();var ray=this._runtime.getViewingRay(0,this._h-1);var r=ray.pos.add(ray.dir);ray=this._runtime.getViewingRay(this._w-1,this._h-1);var s=ray.pos.add(ray.dir);ray=this._runtime.getViewingRay(0,0);var t=ray.pos.add(ray.dir);this._uPlane=s.subtract(r).normalize();this._vPlane=t.subtract(r).normalize();if(arguments.length===0)
this._pPlane=r;else
this._pPlane=x3dom.fields.SFVec3f.copy(origin);};x3dom.Moveable.prototype.det=function(mat){return mat[0][0]*mat[1][1]*mat[2][2]+mat[0][1]*mat[1][2]*mat[2][0]+
mat[0][2]*mat[2][1]*mat[1][0]-mat[2][0]*mat[1][1]*mat[0][2]-
mat[0][0]*mat[2][1]*mat[1][2]-mat[1][0]*mat[0][1]*mat[2][2];};x3dom.Moveable.prototype.translateXY=function(l){var track=null;var z=[],n=[];for(var i=0;i<3;i++){z[i]=[];n[i]=[];z[i][0]=this._uPlane.at(i);n[i][0]=z[i][0];z[i][1]=this._vPlane.at(i);n[i][1]=z[i][1];z[i][2]=(l.pos.subtract(this._pPlane)).at(i);n[i][2]=-l.dir.at(i);}
var s=this.det(n);if(s!==0){var t=this.det(z)/s;track=l.pos.addScaled(l.dir,t);}
if(track){if(this._isect){track=track.subtract(this._isect);}
track=track.add(this._translationOffset);}
return track;};x3dom.Moveable.prototype.translateZ=function(l,currY){var vol=this._runtime.getSceneBBox();var sign=(currY<this._lastY)?1:-1;var fact=sign*(vol.max.subtract(vol.min)).length()/100;this._translationOffset=this._translationOffset.addScaled(l.dir,fact);return this._translationOffset;};x3dom.Moveable.prototype.rotate=function(posX,posY){var twoPi=2*Math.PI;var alpha=((posY-this._lastY)*twoPi)/this._w;var beta=((posX-this._lastX)*twoPi)/this._h;var q=x3dom.fields.Quaternion.axisAngle(this._uPlane,alpha);var h=q.toMatrix();this._rotationOffset=h.mult(this._rotationOffset);q=x3dom.fields.Quaternion.axisAngle(this._vPlane,beta);h=q.toMatrix();this._rotationOffset=h.mult(this._rotationOffset);var mat=this._rotationOffset.mult(x3dom.fields.SFMatrix4f.scale(this._scaleOffset));var rot=new x3dom.fields.Quaternion(0,0,1,0);rot.setValue(mat);return rot;};x3dom.Moveable.prototype.over=function(event){var that=this._iMove;that._runtime.getCanvas().style.cursor="crosshair";};x3dom.Moveable.prototype.out=function(event){var that=this._iMove;if(!that._drag)
that._runtime.getCanvas().style.cursor="pointer";};x3dom.Moveable.prototype.start=function(event){var that=this._iMove;switch(that._mode){case"translation":that._buttonState=(event.button==4)?1:(event.button&3);break;case"rotation":that._buttonState=4;break;case"all":default:that._buttonState=event.button;break;}
if(!that._drag&&that._buttonState){that._lastX=event.layerX;that._lastY=event.layerY;that._drag=true;that._navType=that._runtime.navigationType();that._runtime.noNav();that._isect=new x3dom.fields.SFVec3f(event.worldX,event.worldY,event.worldZ);that.calcViewPlane(that._isect);that._firstRay=that._runtime.getViewingRay(event.layerX,event.layerY);var mTrans=that._moveable.getAttribute("translation");that._matrixTrafo=null;if(mTrans){that._translationOffset=x3dom.fields.SFVec3f.parse(mTrans);var mRot=that._moveable.getAttribute("rotation");mRot=mRot?x3dom.fields.Quaternion.parseAxisAngle(mRot):new x3dom.fields.Quaternion(0,0,1,0);that._rotationOffset=mRot.toMatrix();var mScal=that._moveable.getAttribute("scale");that._scaleOffset=mScal?x3dom.fields.SFVec3f.parse(mScal):new x3dom.fields.SFVec3f(1,1,1);}
else{mTrans=that._moveable.getAttribute("matrix");if(mTrans){that._matrixTrafo=x3dom.fields.SFMatrix4f.parse(mTrans).transpose();var translation=new x3dom.fields.SFVec3f(0,0,0),scaleFactor=new x3dom.fields.SFVec3f(1,1,1);var rotation=new x3dom.fields.Quaternion(0,0,1,0),scaleOrientation=new x3dom.fields.Quaternion(0,0,1,0);that._matrixTrafo.getTransform(translation,rotation,scaleFactor,scaleOrientation);that._translationOffset=translation;that._rotationOffset=rotation.toMatrix();that._scaleOffset=scaleFactor;}
else{that._translationOffset=new x3dom.fields.SFVec3f(0,0,0);that._rotationOffset=new x3dom.fields.SFMatrix4f();that._scaleOffset=new x3dom.fields.SFVec3f(1,1,1);}}
that._runtime.getCanvas().style.cursor="crosshair";}};x3dom.Moveable.prototype.move=function(event){for(var i=0,n=this._iMove.length;i<n;i++){var that=this._iMove[i];if(that._drag){var pos=that._runtime.mousePosition(event);var ray=that._runtime.getViewingRay(pos[0],pos[1]);var track=null;if(that._buttonState==2)
track=that.translateZ(that._firstRay,pos[1]);else if(that._buttonState==1)
track=that.translateXY(ray);else
track=that.rotate(pos[0],pos[1]);if(track){if(that._gridSize>0&&that._buttonState!=4){var x=that._gridSize*Math.round(track.x/that._gridSize);var y=that._gridSize*Math.round(track.y/that._gridSize);var z=that._gridSize*Math.round(track.z/that._gridSize);track=new x3dom.fields.SFVec3f(x,y,z);}
if(!that._matrixTrafo){if(that._buttonState==4){that._moveable.setAttribute("rotation",track.toAxisAngle().toString());}
else{that._moveable.setAttribute("translation",track.toString());}}
else{if(that._buttonState==4){that._matrixTrafo.setRotate(track);}
else{that._matrixTrafo.setTranslate(track);}
that._moveable.setAttribute("matrix",that._matrixTrafo.toGL().toString());}
if(that._callback){that._callback(that._moveable,track);}}
that._lastX=pos[0];that._lastY=pos[1];}}};x3dom.Moveable.prototype.stop=function(event){for(var i=0,n=this._iMove.length;i<n;i++){var that=this._iMove[i];if(that._drag){that._lastX=event.layerX;that._lastY=event.layerY;that._isect=null;that._drag=false;var navi=that._runtime.canvas.doc._scene.getNavigationInfo();navi.setType(that._navType);that._runtime.getCanvas().style.cursor="pointer";}}};x3dom.Moveable.prototype.touchStartHandler=function(evt){evt.preventDefault();};x3dom.Moveable.prototype.touchStartHandlerMoz=function(evt){evt.preventDefault();};x3dom.Moveable.prototype.touchMoveHandler=function(evt){evt.preventDefault();};x3dom.Moveable.prototype.touchMoveHandlerMoz=function(evt){evt.preventDefault();};x3dom.Moveable.prototype.touchEndHandler=function(evt){if(this._iMove.length){var that=this._iMove[0];that.stop.apply(that._x3domRoot,[evt]);}
evt.preventDefault();};x3dom.Moveable.prototype.touchEndHandlerMoz=function(evt){if(this._iMove.length){var that=this._iMove[0];that.stop.apply(that._x3domRoot,[evt]);}
evt.preventDefault();};(function(){'use strict';function q(b){throw b;}var t=void 0,u=!0,aa=this;function A(b,a){var c=b.split("."),d=aa;!(c[0]in d)&&d.execScript&&d.execScript("var "+c[0]);for(var e;c.length&&(e=c.shift());)!c.length&&a!==t?d[e]=a:d=d[e]?d[e]:d[e]={}};var B="undefined"!==typeof Uint8Array&&"undefined"!==typeof Uint16Array&&"undefined"!==typeof Uint32Array&&"undefined"!==typeof DataView;function F(b,a){this.index="number"===typeof a?a:0;this.m=0;this.buffer=b instanceof(B?Uint8Array:Array)?b:new(B?Uint8Array:Array)(32768);2*this.buffer.length<=this.index&&q(Error("invalid index"));this.buffer.length<=this.index&&this.f()}F.prototype.f=function(){var b=this.buffer,a,c=b.length,d=new(B?Uint8Array:Array)(c<<1);if(B)d.set(b);else for(a=0;a<c;++a)d[a]=b[a];return this.buffer=d};F.prototype.d=function(b,a,c){var d=this.buffer,e=this.index,f=this.m,g=d[e],k;c&&1<a&&(b=8<a?(H[b&255]<<24|H[b>>>8&255]<<16|H[b>>>16&255]<<8|H[b>>>24&255])>>32-a:H[b]>>8-a);if(8>a+f)g=g<<a|b,f+=a;else for(k=0;k<a;++k)g=g<<1|b>>a-k-1&1,8===++f&&(f=0,d[e++]=H[g],g=0,e===d.length&&(d=this.f()));d[e]=g;this.buffer=d;this.m=f;this.index=e};F.prototype.finish=function(){var b=this.buffer,a=this.index,c;0<this.m&&(b[a]<<=8-this.m,b[a]=H[b[a]],a++);B?c=b.subarray(0,a):(b.length=a,c=b);return c};var ba=new(B?Uint8Array:Array)(256),ca;for(ca=0;256>ca;++ca){for(var K=ca,da=K,ea=7,K=K>>>1;K;K>>>=1)da<<=1,da|=K&1,--ea;ba[ca]=(da<<ea&255)>>>0}var H=ba;function ja(b,a,c){var d,e="number"===typeof a?a:a=0,f="number"===typeof c?c:b.length;d=-1;for(e=f&7;e--;++a)d=d>>>8^O[(d^b[a])&255];for(e=f>>3;e--;a+=8)d=d>>>8^O[(d^b[a])&255],d=d>>>8^O[(d^b[a+1])&255],d=d>>>8^O[(d^b[a+2])&255],d=d>>>8^O[(d^b[a+3])&255],d=d>>>8^O[(d^b[a+4])&255],d=d>>>8^O[(d^b[a+5])&255],d=d>>>8^O[(d^b[a+6])&255],d=d>>>8^O[(d^b[a+7])&255];return(d^4294967295)>>>0}
var ka=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918E3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],O=B?new Uint32Array(ka):ka;function P(){}P.prototype.getName=function(){return this.name};P.prototype.getData=function(){return this.data};P.prototype.Y=function(){return this.Z};A("Zlib.GunzipMember",P);A("Zlib.GunzipMember.prototype.getName",P.prototype.getName);A("Zlib.GunzipMember.prototype.getData",P.prototype.getData);A("Zlib.GunzipMember.prototype.getMtime",P.prototype.Y);function la(b){this.buffer=new(B?Uint16Array:Array)(2*b);this.length=0}la.prototype.getParent=function(b){return 2*((b-2)/4|0)};la.prototype.push=function(b,a){var c,d,e=this.buffer,f;c=this.length;e[this.length++]=a;for(e[this.length++]=b;0<c;)if(d=this.getParent(c),e[c]>e[d])f=e[c],e[c]=e[d],e[d]=f,f=e[c+1],e[c+1]=e[d+1],e[d+1]=f,c=d;else break;return this.length};la.prototype.pop=function(){var b,a,c=this.buffer,d,e,f;a=c[0];b=c[1];this.length-=2;c[0]=c[this.length];c[1]=c[this.length+1];for(f=0;;){e=2*f+2;if(e>=this.length)break;e+2<this.length&&c[e+2]>c[e]&&(e+=2);if(c[e]>c[f])d=c[f],c[f]=c[e],c[e]=d,d=c[f+1],c[f+1]=c[e+1],c[e+1]=d;else break;f=e}return{index:b,value:a,length:this.length}};function ma(b){var a=b.length,c=0,d=Number.POSITIVE_INFINITY,e,f,g,k,h,l,s,p,m,n;for(p=0;p<a;++p)b[p]>c&&(c=b[p]),b[p]<d&&(d=b[p]);e=1<<c;f=new(B?Uint32Array:Array)(e);g=1;k=0;for(h=2;g<=c;){for(p=0;p<a;++p)if(b[p]===g){l=0;s=k;for(m=0;m<g;++m)l=l<<1|s&1,s>>=1;n=g<<16|p;for(m=l;m<e;m+=h)f[m]=n;++k}++g;k<<=1;h<<=1}return[f,c,d]};function na(b,a){this.k=qa;this.I=0;this.input=B&&b instanceof Array?new Uint8Array(b):b;this.b=0;a&&(a.lazy&&(this.I=a.lazy),"number"===typeof a.compressionType&&(this.k=a.compressionType),a.outputBuffer&&(this.a=B&&a.outputBuffer instanceof Array?new Uint8Array(a.outputBuffer):a.outputBuffer),"number"===typeof a.outputIndex&&(this.b=a.outputIndex));this.a||(this.a=new(B?Uint8Array:Array)(32768))}var qa=2,ra={NONE:0,v:1,o:qa,ba:3},sa=[],S;for(S=0;288>S;S++)switch(u){case 143>=S:sa.push([S+48,8]);break;case 255>=S:sa.push([S-144+400,9]);break;case 279>=S:sa.push([S-256+0,7]);break;case 287>=S:sa.push([S-280+192,8]);break;default:q("invalid literal: "+S)}
na.prototype.g=function(){var b,a,c,d,e=this.input;switch(this.k){case 0:c=0;for(d=e.length;c<d;){a=B?e.subarray(c,c+65535):e.slice(c,c+65535);c+=a.length;var f=a,g=c===d,k=t,h=t,l=t,s=t,p=t,m=this.a,n=this.b;if(B){for(m=new Uint8Array(this.a.buffer);m.length<=n+f.length+5;)m=new Uint8Array(m.length<<1);m.set(this.a)}k=g?1:0;m[n++]=k|0;h=f.length;l=~h+65536&65535;m[n++]=h&255;m[n++]=h>>>8&255;m[n++]=l&255;m[n++]=l>>>8&255;if(B)m.set(f,n),n+=f.length,m=m.subarray(0,n);else{s=0;for(p=f.length;s<p;++s)m[n++]=f[s];m.length=n}this.b=n;this.a=m}break;case 1:var r=new F(B?new Uint8Array(this.a.buffer):this.a,this.b);r.d(1,1,u);r.d(1,2,u);var v=ta(this,e),x,Q,y;x=0;for(Q=v.length;x<Q;x++)if(y=v[x],F.prototype.d.apply(r,sa[y]),256<y)r.d(v[++x],v[++x],u),r.d(v[++x],5),r.d(v[++x],v[++x],u);else if(256===y)break;this.a=r.finish();this.b=this.a.length;break;case qa:var E=new F(B?new Uint8Array(this.a.buffer):this.a,this.b),Ka,R,X,Y,Z,pb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],fa,La,ga,Ma,oa,wa=Array(19),Na,$,pa,C,Oa;Ka=qa;E.d(1,1,u);E.d(Ka,2,u);R=ta(this,e);fa=ua(this.W,15);La=va(fa);ga=ua(this.V,7);Ma=va(ga);for(X=286;257<X&&0===fa[X-1];X--);for(Y=30;1<Y&&0===ga[Y-1];Y--);var Pa=X,Qa=Y,J=new(B?Uint32Array:Array)(Pa+Qa),w,L,z,ha,I=new(B?Uint32Array:Array)(316),G,D,M=new(B?Uint8Array:Array)(19);for(w=L=0;w<Pa;w++)J[L++]=fa[w];for(w=0;w<Qa;w++)J[L++]=ga[w];if(!B){w=0;for(ha=M.length;w<ha;++w)M[w]=0}w=G=0;for(ha=J.length;w<ha;w+=L){for(L=1;w+L<ha&&J[w+L]===J[w];++L);z=L;if(0===J[w])if(3>z)for(;0<z--;)I[G++]=0,M[0]++;else for(;0<z;)D=138>z?z:138,D>z-3&&D<z&&(D=z-3),10>=D?(I[G++]=17,I[G++]=D-3,M[17]++):(I[G++]=18,I[G++]=D-11,M[18]++),z-=D;else if(I[G++]=J[w],M[J[w]]++,z--,3>z)for(;0<z--;)I[G++]=J[w],M[J[w]]++;else for(;0<z;)D=6>z?z:6,D>z-3&&D<z&&(D=z-3),I[G++]=16,I[G++]=D-3,M[16]++,z-=D}b=B?I.subarray(0,G):I.slice(0,G);oa=ua(M,7);for(C=0;19>C;C++)wa[C]=oa[pb[C]];for(Z=19;4<Z&&0===wa[Z-1];Z--);Na=va(oa);E.d(X-257,5,u);E.d(Y-1,5,u);E.d(Z-4,4,u);for(C=0;C<Z;C++)E.d(wa[C],3,u);C=0;for(Oa=b.length;C<Oa;C++)if($=b[C],E.d(Na[$],oa[$],u),16<=$){C++;switch($){case 16:pa=2;break;case 17:pa=3;break;case 18:pa=7;break;default:q("invalid code: "+$)}E.d(b[C],pa,u)}var Ra=[La,fa],Sa=[Ma,ga],N,Ta,ia,za,Ua,Va,Wa,Xa;Ua=Ra[0];Va=Ra[1];Wa=Sa[0];Xa=Sa[1];N=0;for(Ta=R.length;N<Ta;++N)if(ia=R[N],E.d(Ua[ia],Va[ia],u),256<ia)E.d(R[++N],R[++N],u),za=R[++N],E.d(Wa[za],Xa[za],u),E.d(R[++N],R[++N],u);else if(256===ia)break;this.a=E.finish();this.b=this.a.length;break;default:q("invalid compression type")}return this.a};function xa(b,a){this.length=b;this.Q=a}
var ya=function(){function b(a){switch(u){case 3===a:return[257,a-3,0];case 4===a:return[258,a-4,0];case 5===a:return[259,a-5,0];case 6===a:return[260,a-6,0];case 7===a:return[261,a-7,0];case 8===a:return[262,a-8,0];case 9===a:return[263,a-9,0];case 10===a:return[264,a-10,0];case 12>=a:return[265,a-11,1];case 14>=a:return[266,a-13,1];case 16>=a:return[267,a-15,1];case 18>=a:return[268,a-17,1];case 22>=a:return[269,a-19,2];case 26>=a:return[270,a-23,2];case 30>=a:return[271,a-27,2];case 34>=a:return[272,a-31,2];case 42>=a:return[273,a-35,3];case 50>=a:return[274,a-43,3];case 58>=a:return[275,a-51,3];case 66>=a:return[276,a-59,3];case 82>=a:return[277,a-67,4];case 98>=a:return[278,a-83,4];case 114>=a:return[279,a-99,4];case 130>=a:return[280,a-115,4];case 162>=a:return[281,a-131,5];case 194>=a:return[282,a-163,5];case 226>=a:return[283,a-195,5];case 257>=a:return[284,a-227,5];case 258===a:return[285,a-258,0];default:q("invalid length: "+a)}}var a=[],c,d;for(c=3;258>=c;c++)d=b(c),a[c]=d[2]<<24|d[1]<<16|d[0];return a}(),Aa=B?new Uint32Array(ya):ya;function ta(b,a){function c(a,c){var b=a.Q,d=[],e=0,f;f=Aa[a.length];d[e++]=f&65535;d[e++]=f>>16&255;d[e++]=f>>24;var g;switch(u){case 1===b:g=[0,b-1,0];break;case 2===b:g=[1,b-2,0];break;case 3===b:g=[2,b-3,0];break;case 4===b:g=[3,b-4,0];break;case 6>=b:g=[4,b-5,1];break;case 8>=b:g=[5,b-7,1];break;case 12>=b:g=[6,b-9,2];break;case 16>=b:g=[7,b-13,2];break;case 24>=b:g=[8,b-17,3];break;case 32>=b:g=[9,b-25,3];break;case 48>=b:g=[10,b-33,4];break;case 64>=b:g=[11,b-49,4];break;case 96>=b:g=[12,b-
65,5];break;case 128>=b:g=[13,b-97,5];break;case 192>=b:g=[14,b-129,6];break;case 256>=b:g=[15,b-193,6];break;case 384>=b:g=[16,b-257,7];break;case 512>=b:g=[17,b-385,7];break;case 768>=b:g=[18,b-513,8];break;case 1024>=b:g=[19,b-769,8];break;case 1536>=b:g=[20,b-1025,9];break;case 2048>=b:g=[21,b-1537,9];break;case 3072>=b:g=[22,b-2049,10];break;case 4096>=b:g=[23,b-3073,10];break;case 6144>=b:g=[24,b-4097,11];break;case 8192>=b:g=[25,b-6145,11];break;case 12288>=b:g=[26,b-8193,12];break;case 16384>=b:g=[27,b-12289,12];break;case 24576>=b:g=[28,b-16385,13];break;case 32768>=b:g=[29,b-24577,13];break;default:q("invalid distance")}f=g;d[e++]=f[0];d[e++]=f[1];d[e++]=f[2];var h,k;h=0;for(k=d.length;h<k;++h)m[n++]=d[h];v[d[0]]++;x[d[3]]++;r=a.length+c-1;p=null}var d,e,f,g,k,h={},l,s,p,m=B?new Uint16Array(2*a.length):[],n=0,r=0,v=new(B?Uint32Array:Array)(286),x=new(B?Uint32Array:Array)(30),Q=b.I,y;if(!B){for(f=0;285>=f;)v[f++]=0;for(f=0;29>=f;)x[f++]=0}v[256]=1;d=0;for(e=a.length;d<e;++d){f=k=0;for(g=3;f<g&&d+f!==e;++f)k=k<<8|a[d+f];h[k]===t&&(h[k]=[]);l=h[k];if(!(0<r--)){for(;0<l.length&&32768<d-l[0];)l.shift();if(d+3>=e){p&&c(p,-1);f=0;for(g=e-d;f<g;++f)y=a[d+f],m[n++]=y,++v[y];break}0<l.length?(s=Ba(a,d,l),p?p.length<s.length?(y=a[d-1],m[n++]=y,++v[y],c(s,0)):c(p,-1):s.length<Q?p=s:c(s,0)):p?c(p,-1):(y=a[d],m[n++]=y,++v[y])}l.push(d)}m[n++]=256;v[256]++;b.W=v;b.V=x;return B?m.subarray(0,n):m}
function Ba(b,a,c){var d,e,f=0,g,k,h,l,s=b.length;k=0;l=c.length;a:for(;k<l;k++){d=c[l-k-1];g=3;if(3<f){for(h=f;3<h;h--)if(b[d+h-1]!==b[a+h-1])continue a;g=f}for(;258>g&&a+g<s&&b[d+g]===b[a+g];)++g;g>f&&(e=d,f=g);if(258===g)break}return new xa(f,a-e)}
function ua(b,a){var c=b.length,d=new la(572),e=new(B?Uint8Array:Array)(c),f,g,k,h,l;if(!B)for(h=0;h<c;h++)e[h]=0;for(h=0;h<c;++h)0<b[h]&&d.push(h,b[h]);f=Array(d.length/2);g=new(B?Uint32Array:Array)(d.length/2);if(1===f.length)return e[d.pop().index]=1,e;h=0;for(l=d.length/2;h<l;++h)f[h]=d.pop(),g[h]=f[h].value;k=Ca(g,g.length,a);h=0;for(l=f.length;h<l;++h)e[f[h].index]=k[h];return e}
function Ca(b,a,c){function d(b){var c=h[b][l[b]];c===a?(d(b+1),d(b+1)):--g[c];++l[b]}var e=new(B?Uint16Array:Array)(c),f=new(B?Uint8Array:Array)(c),g=new(B?Uint8Array:Array)(a),k=Array(c),h=Array(c),l=Array(c),s=(1<<c)-a,p=1<<c-1,m,n,r,v,x;e[c-1]=a;for(n=0;n<c;++n)s<p?f[n]=0:(f[n]=1,s-=p),s<<=1,e[c-2-n]=(e[c-1-n]/2|0)+a;e[0]=f[0];k[0]=Array(e[0]);h[0]=Array(e[0]);for(n=1;n<c;++n)e[n]>2*e[n-1]+f[n]&&(e[n]=2*e[n-1]+f[n]),k[n]=Array(e[n]),h[n]=Array(e[n]);for(m=0;m<a;++m)g[m]=c;for(r=0;r<e[c-1];++r)k[c-
1][r]=b[r],h[c-1][r]=r;for(m=0;m<c;++m)l[m]=0;1===f[c-1]&&(--g[0],++l[c-1]);for(n=c-2;0<=n;--n){v=m=0;x=l[n+1];for(r=0;r<e[n];r++)v=k[n+1][x]+k[n+1][x+1],v>b[m]?(k[n][r]=v,h[n][r]=a,x+=2):(k[n][r]=b[m],h[n][r]=m,++m);l[n]=0;1===f[n]&&d(n)}return g}
function va(b){var a=new(B?Uint16Array:Array)(b.length),c=[],d=[],e=0,f,g,k,h;f=0;for(g=b.length;f<g;f++)c[b[f]]=(c[b[f]]|0)+1;f=1;for(g=16;f<=g;f++)d[f]=e,e+=c[f]|0,e<<=1;f=0;for(g=b.length;f<g;f++){e=d[b[f]];d[b[f]]+=1;k=a[f]=0;for(h=b[f];k<h;k++)a[f]=a[f]<<1|e&1,e>>>=1}return a};function Da(b,a){this.input=b;this.b=this.c=0;this.i={};a&&(a.flags&&(this.i=a.flags),"string"===typeof a.filename&&(this.filename=a.filename),"string"===typeof a.comment&&(this.A=a.comment),a.deflateOptions&&(this.l=a.deflateOptions));this.l||(this.l={})}
Da.prototype.g=function(){var b,a,c,d,e,f,g,k,h=new(B?Uint8Array:Array)(32768),l=0,s=this.input,p=this.c,m=this.filename,n=this.A;h[l++]=31;h[l++]=139;h[l++]=8;b=0;this.i.fname&&(b|=Ea);this.i.fcomment&&(b|=Fa);this.i.fhcrc&&(b|=Ga);h[l++]=b;a=(Date.now?Date.now():+new Date)/1E3|0;h[l++]=a&255;h[l++]=a>>>8&255;h[l++]=a>>>16&255;h[l++]=a>>>24&255;h[l++]=0;h[l++]=Ha;if(this.i.fname!==t){g=0;for(k=m.length;g<k;++g)f=m.charCodeAt(g),255<f&&(h[l++]=f>>>8&255),h[l++]=f&255;h[l++]=0}if(this.i.comment){g=0;for(k=n.length;g<k;++g)f=n.charCodeAt(g),255<f&&(h[l++]=f>>>8&255),h[l++]=f&255;h[l++]=0}this.i.fhcrc&&(c=ja(h,0,l)&65535,h[l++]=c&255,h[l++]=c>>>8&255);this.l.outputBuffer=h;this.l.outputIndex=l;e=new na(s,this.l);h=e.g();l=e.b;B&&(l+8>h.buffer.byteLength?(this.a=new Uint8Array(l+8),this.a.set(new Uint8Array(h.buffer)),h=this.a):h=new Uint8Array(h.buffer));d=ja(s,t,t);h[l++]=d&255;h[l++]=d>>>8&255;h[l++]=d>>>16&255;h[l++]=d>>>24&255;k=s.length;h[l++]=k&255;h[l++]=k>>>8&255;h[l++]=k>>>16&255;h[l++]=k>>>24&255;this.c=p;B&&l<h.length&&(this.a=h=h.subarray(0,l));return h};var Ha=255,Ga=2,Ea=8,Fa=16;A("Zlib.Gzip",Da);A("Zlib.Gzip.prototype.compress",Da.prototype.g);function T(b,a){this.p=[];this.q=32768;this.e=this.j=this.c=this.u=0;this.input=B?new Uint8Array(b):b;this.w=!1;this.r=Ia;this.M=!1;if(a||!(a={}))a.index&&(this.c=a.index),a.bufferSize&&(this.q=a.bufferSize),a.bufferType&&(this.r=a.bufferType),a.resize&&(this.M=a.resize);switch(this.r){case Ja:this.b=32768;this.a=new(B?Uint8Array:Array)(32768+this.q+258);break;case Ia:this.b=0;this.a=new(B?Uint8Array:Array)(this.q);this.f=this.U;this.B=this.R;this.s=this.T;break;default:q(Error("invalid inflate mode"))}}
var Ja=0,Ia=1,Ya={O:Ja,N:Ia};T.prototype.h=function(){for(;!this.w;){var b=U(this,3);b&1&&(this.w=u);b>>>=1;switch(b){case 0:var a=this.input,c=this.c,d=this.a,e=this.b,f=a.length,g=t,k=t,h=d.length,l=t;this.e=this.j=0;c+1>=f&&q(Error("invalid uncompressed block header: LEN"));g=a[c++]|a[c++]<<8;c+1>=f&&q(Error("invalid uncompressed block header: NLEN"));k=a[c++]|a[c++]<<8;g===~k&&q(Error("invalid uncompressed block header: length verify"));c+g>a.length&&q(Error("input buffer is broken"));switch(this.r){case Ja:for(;e+g>d.length;){l=h-e;g-=l;if(B)d.set(a.subarray(c,c+l),e),e+=l,c+=l;else for(;l--;)d[e++]=a[c++];this.b=e;d=this.f();e=this.b}break;case Ia:for(;e+g>d.length;)d=this.f({F:2});break;default:q(Error("invalid inflate mode"))}if(B)d.set(a.subarray(c,c+g),e),e+=g,c+=g;else for(;g--;)d[e++]=a[c++];this.c=c;this.b=e;this.a=d;break;case 1:this.s(Za,$a);break;case 2:ab(this);break;default:q(Error("unknown BTYPE: "+b))}}return this.B()};var bb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],cb=B?new Uint16Array(bb):bb,db=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,258,258],eb=B?new Uint16Array(db):db,fb=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0],gb=B?new Uint8Array(fb):fb,hb=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],ib=B?new Uint16Array(hb):hb,jb=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],kb=B?new Uint8Array(jb):jb,lb=new(B?Uint8Array:Array)(288),V,mb;V=0;for(mb=lb.length;V<mb;++V)lb[V]=143>=V?8:255>=V?9:279>=V?7:8;var Za=ma(lb),nb=new(B?Uint8Array:Array)(30),ob,qb;ob=0;for(qb=nb.length;ob<qb;++ob)nb[ob]=5;var $a=ma(nb);function U(b,a){for(var c=b.j,d=b.e,e=b.input,f=b.c,g=e.length,k;d<a;)f>=g&&q(Error("input buffer is broken")),c|=e[f++]<<d,d+=8;k=c&(1<<a)-1;b.j=c>>>a;b.e=d-a;b.c=f;return k}
function rb(b,a){for(var c=b.j,d=b.e,e=b.input,f=b.c,g=e.length,k=a[0],h=a[1],l,s;d<h&&!(f>=g);)c|=e[f++]<<d,d+=8;l=k[c&(1<<h)-1];s=l>>>16;b.j=c>>s;b.e=d-s;b.c=f;return l&65535}
function ab(b){function a(a,b,c){var d,e=this.J,f,g;for(g=0;g<a;)switch(d=rb(this,b),d){case 16:for(f=3+U(this,2);f--;)c[g++]=e;break;case 17:for(f=3+U(this,3);f--;)c[g++]=0;e=0;break;case 18:for(f=11+U(this,7);f--;)c[g++]=0;e=0;break;default:e=c[g++]=d}this.J=e;return c}var c=U(b,5)+257,d=U(b,5)+1,e=U(b,4)+4,f=new(B?Uint8Array:Array)(cb.length),g,k,h,l;for(l=0;l<e;++l)f[cb[l]]=U(b,3);if(!B){l=e;for(e=f.length;l<e;++l)f[cb[l]]=0}g=ma(f);k=new(B?Uint8Array:Array)(c);h=new(B?Uint8Array:Array)(d);b.J=0;b.s(ma(a.call(b,c,g,k)),ma(a.call(b,d,g,h)))}T.prototype.s=function(b,a){var c=this.a,d=this.b;this.C=b;for(var e=c.length-258,f,g,k,h;256!==(f=rb(this,b));)if(256>f)d>=e&&(this.b=d,c=this.f(),d=this.b),c[d++]=f;else{g=f-257;h=eb[g];0<gb[g]&&(h+=U(this,gb[g]));f=rb(this,a);k=ib[f];0<kb[f]&&(k+=U(this,kb[f]));d>=e&&(this.b=d,c=this.f(),d=this.b);for(;h--;)c[d]=c[d++-k]}for(;8<=this.e;)this.e-=8,this.c--;this.b=d};T.prototype.T=function(b,a){var c=this.a,d=this.b;this.C=b;for(var e=c.length,f,g,k,h;256!==(f=rb(this,b));)if(256>f)d>=e&&(c=this.f(),e=c.length),c[d++]=f;else{g=f-257;h=eb[g];0<gb[g]&&(h+=U(this,gb[g]));f=rb(this,a);k=ib[f];0<kb[f]&&(k+=U(this,kb[f]));d+h>e&&(c=this.f(),e=c.length);for(;h--;)c[d]=c[d++-k]}for(;8<=this.e;)this.e-=8,this.c--;this.b=d};T.prototype.f=function(){var b=new(B?Uint8Array:Array)(this.b-32768),a=this.b-32768,c,d,e=this.a;if(B)b.set(e.subarray(32768,b.length));else{c=0;for(d=b.length;c<d;++c)b[c]=e[c+32768]}this.p.push(b);this.u+=b.length;if(B)e.set(e.subarray(a,a+32768));else for(c=0;32768>c;++c)e[c]=e[a+c];this.b=32768;return e};T.prototype.U=function(b){var a,c=this.input.length/this.c+1|0,d,e,f,g=this.input,k=this.a;b&&("number"===typeof b.F&&(c=b.F),"number"===typeof b.P&&(c+=b.P));2>c?(d=(g.length-this.c)/this.C[2],f=258*(d/2)|0,e=f<k.length?k.length+f:k.length<<1):e=k.length*c;B?(a=new Uint8Array(e),a.set(k)):a=k;return this.a=a};T.prototype.B=function(){var b=0,a=this.a,c=this.p,d,e=new(B?Uint8Array:Array)(this.u+(this.b-32768)),f,g,k,h;if(0===c.length)return B?this.a.subarray(32768,this.b):this.a.slice(32768,this.b);f=0;for(g=c.length;f<g;++f){d=c[f];k=0;for(h=d.length;k<h;++k)e[b++]=d[k]}f=32768;for(g=this.b;f<g;++f)e[b++]=a[f];this.p=[];return this.buffer=e};T.prototype.R=function(){var b,a=this.b;B?this.M?(b=new Uint8Array(a),b.set(this.a.subarray(0,a))):b=this.a.subarray(0,a):(this.a.length>a&&(this.a.length=a),b=this.a);return this.buffer=b};function sb(b){this.input=b;this.c=0;this.t=[];this.D=!1}sb.prototype.X=function(){this.D||this.h();return this.t.slice()};sb.prototype.h=function(){for(var b=this.input.length;this.c<b;){var a=new P,c=t,d=t,e=t,f=t,g=t,k=t,h=t,l=t,s=t,p=this.input,m=this.c;a.G=p[m++];a.H=p[m++];(31!==a.G||139!==a.H)&&q(Error("invalid file signature:"+a.G+","+a.H));a.z=p[m++];switch(a.z){case 8:break;default:q(Error("unknown compression method: "+a.z))}a.n=p[m++];l=p[m++]|p[m++]<<8|p[m++]<<16|p[m++]<<24;a.Z=new Date(1E3*l);a.fa=p[m++];a.ea=p[m++];0<(a.n&4)&&(a.aa=p[m++]|p[m++]<<8,m+=a.aa);if(0<(a.n&Ea)){h=[];for(k=0;0<(g=p[m++]);)h[k++]=String.fromCharCode(g);a.name=h.join("")}if(0<(a.n&Fa)){h=[];for(k=0;0<(g=p[m++]);)h[k++]=String.fromCharCode(g);a.A=h.join("")}0<(a.n&Ga)&&(a.S=ja(p,0,m)&65535,a.S!==(p[m++]|p[m++]<<8)&&q(Error("invalid header crc16")));c=p[p.length-4]|p[p.length-3]<<8|p[p.length-2]<<16|p[p.length-1]<<24;p.length-m-4-4<512*c&&(f=c);d=new T(p,{index:m,bufferSize:f});a.data=e=d.h();m=d.c;a.ca=s=(p[m++]|p[m++]<<8|p[m++]<<16|p[m++]<<24)>>>0;ja(e,t,t)!==s&&q(Error("invalid CRC-32 checksum: 0x"+ja(e,t,t).toString(16)+" / 0x"+s.toString(16)));a.da=c=(p[m++]|p[m++]<<8|p[m++]<<16|p[m++]<<24)>>>0;(e.length&4294967295)!==c&&q(Error("invalid input size: "+(e.length&4294967295)+" / "+c));this.t.push(a);this.c=m}this.D=u;var n=this.t,r,v,x=0,Q=0,y;r=0;for(v=n.length;r<v;++r)Q+=n[r].data.length;if(B){y=new Uint8Array(Q);for(r=0;r<v;++r)y.set(n[r].data,x),x+=n[r].data.length}else{y=[];for(r=0;r<v;++r)y[r]=n[r].data;y=Array.prototype.concat.apply([],y)}return y};A("Zlib.Gunzip",sb);A("Zlib.Gunzip.prototype.decompress",sb.prototype.h);A("Zlib.Gunzip.prototype.getMembers",sb.prototype.X);function tb(b){if("string"===typeof b){var a=b.split(""),c,d;c=0;for(d=a.length;c<d;c++)a[c]=(a[c].charCodeAt(0)&255)>>>0;b=a}for(var e=1,f=0,g=b.length,k,h=0;0<g;){k=1024<g?1024:g;g-=k;do e+=b[h++],f+=e;while(--k);e%=65521;f%=65521}return(f<<16|e)>>>0};function ub(b,a){var c,d;this.input=b;this.c=0;if(a||!(a={}))a.index&&(this.c=a.index),a.verify&&(this.$=a.verify);c=b[this.c++];d=b[this.c++];switch(c&15){case vb:this.method=vb;break;default:q(Error("unsupported compression method"))}0!==((c<<8)+d)%31&&q(Error("invalid fcheck flag:"+((c<<8)+d)%31));d&32&&q(Error("fdict flag is not supported"));this.L=new T(b,{index:this.c,bufferSize:a.bufferSize,bufferType:a.bufferType,resize:a.resize})}
ub.prototype.h=function(){var b=this.input,a,c;a=this.L.h();this.c=this.L.c;this.$&&(c=(b[this.c++]<<24|b[this.c++]<<16|b[this.c++]<<8|b[this.c++])>>>0,c!==tb(a)&&q(Error("invalid adler-32 checksum")));return a};var vb=8;function wb(b,a){this.input=b;this.a=new(B?Uint8Array:Array)(32768);this.k=W.o;var c={},d;if((a||!(a={}))&&"number"===typeof a.compressionType)this.k=a.compressionType;for(d in a)c[d]=a[d];c.outputBuffer=this.a;this.K=new na(this.input,c)}var W=ra;wb.prototype.g=function(){var b,a,c,d,e,f,g,k=0;g=this.a;b=vb;switch(b){case vb:a=Math.LOG2E*Math.log(32768)-8;break;default:q(Error("invalid compression method"))}c=a<<4|b;g[k++]=c;switch(b){case vb:switch(this.k){case W.NONE:e=0;break;case W.v:e=1;break;case W.o:e=2;break;default:q(Error("unsupported compression type"))}break;default:q(Error("invalid compression method"))}d=e<<6|0;g[k++]=d|31-(256*c+d)%31;f=tb(this.input);this.K.b=k;g=this.K.g();k=g.length;B&&(g=new Uint8Array(g.buffer),g.length<=k+4&&(this.a=new Uint8Array(g.length+4),this.a.set(g),g=this.a),g=g.subarray(0,k+4));g[k++]=f>>24&255;g[k++]=f>>16&255;g[k++]=f>>8&255;g[k++]=f&255;return g};function xb(b,a){var c,d,e,f;if(Object.keys)c=Object.keys(a);else for(d in c=[],e=0,a)c[e++]=d;e=0;for(f=c.length;e<f;++e)d=c[e],A(b+"."+d,a[d])};A("Zlib.Inflate",ub);A("Zlib.Inflate.prototype.decompress",ub.prototype.h);xb("Zlib.Inflate.BufferType",{ADAPTIVE:Ya.N,BLOCK:Ya.O});A("Zlib.Deflate",wb);A("Zlib.Deflate.compress",function(b,a){return(new wb(b,a)).g()});A("Zlib.Deflate.prototype.compress",wb.prototype.g);xb("Zlib.Deflate.CompressionType",{NONE:W.NONE,FIXED:W.v,DYNAMIC:W.o});}).call(this);x3dom.X3DCanvas=function(x3dElem,canvasIdx)
{var that=this;this._canvasIdx=canvasIdx;this.isFlashReady=false;this.x3dElem=x3dElem;this._current_dim=[0,0];this.fps_t0=new Date().getTime();this.lastTimeFPSWasTaken=0;this.framesSinceLastTime=0;this.doc=null;this.lastMousePos={x:0,y:0};x3dom.caps.DOMNodeInsertedEvent_perSubtree=!(navigator.userAgent.indexOf('MSIE')!=-1||navigator.userAgent.indexOf('Trident')!=-1);x3dElem.__setAttribute=x3dElem.setAttribute;x3dElem.setAttribute=function(attrName,newVal)
{this.__setAttribute(attrName,newVal);switch(attrName){case"width":that.canvas.setAttribute("width",newVal);if(that.doc&&that.doc._viewarea){that.doc._viewarea._width=parseInt(that.canvas.getAttribute("width"),0);that.doc.needRender=true;}
break;case"height":that.canvas.setAttribute("height",newVal);if(that.doc&&that.doc._viewarea){that.doc._viewarea._height=parseInt(that.canvas.getAttribute("height"),0);that.doc.needRender=true;}
break;default:break;}};x3dom.caps.MOBILE=(navigator.appVersion.indexOf("Mobile")>-1);this.backend=this.x3dElem.getAttribute('backend');if(this.backend)
this.backend=this.backend.toLowerCase();else
this.backend='none';if(this.backend=='flash'){this.backend='flash';this.canvas=this._createFlashObject(x3dElem);if(this.canvas!=null){this.canvas.parent=this;this.gl=this._initFlashContext(this.canvas,this.flash_renderType);}else{this._createInitFailedDiv(x3dElem);return;}}else{this.canvas=this._createHTMLCanvas(x3dElem);this.canvas.parent=this;this.gl=this._initContext(this.canvas,(this.backend.search("desktop")>=0),(this.backend.search("mobile")>=0),(this.backend.search("flashie")>=0),(this.backend.search("webgl2")>=0));this.backend='webgl';if(this.gl==null)
{x3dom.debug.logInfo("Fallback to Flash Renderer");this.backend='flash';this.canvas=this._createFlashObject(x3dElem);if(this.canvas!=null){this.canvas.parent=this;this.gl=this._initFlashContext(this.canvas,this.flash_renderType);}else{this._createInitFailedDiv(x3dElem);return;}}}
x3dom.caps.BACKEND=this.backend;var runtimeEnabled=x3dElem.getAttribute("runtimeEnabled");if(runtimeEnabled!==null){this.hasRuntime=(runtimeEnabled.toLowerCase()=="true");}else{this.hasRuntime=x3dElem.hasRuntime;}
if(this.gl===null){this.hasRuntime=false;}
if(this.backend!="flash"){this.showStat=x3dElem.getAttribute("showStat");this.stateViewer=new x3dom.States(x3dElem);if(this.showStat!==null&&this.showStat=="true"){this.stateViewer.display(true);}
this.x3dElem.appendChild(this.stateViewer.viewer);}
this.showProgress=x3dElem.getAttribute("showProgress");this.progressDiv=this._createProgressDiv();this.progressDiv.style.display=(this.showProgress!==null&&this.showProgress=="true")?"inline":"none";this.x3dElem.appendChild(this.progressDiv);this.showTouchpoints=x3dElem.getAttribute("showTouchpoints");this.showTouchpoints=this.showTouchpoints?!(this.showTouchpoints.toLowerCase()=="false"):true;this.disableTouch=x3dElem.getAttribute("disableTouch");this.disableTouch=this.disableTouch?(this.disableTouch.toLowerCase()=="true"):false;if(this.canvas!==null&&this.gl!==null&&this.hasRuntime&&this.backend!=="flash"){this.canvas.mouse_dragging=false;this.canvas.mouse_button=0;this.canvas.mouse_drag_x=0;this.canvas.mouse_drag_y=0;this.canvas.isMulti=false;this.canvas.oncontextmenu=function(evt){evt.preventDefault();evt.stopPropagation();return false;};this.canvas.addEventListener("webglcontextlost",function(event){x3dom.debug.logError("WebGL context lost");event.preventDefault();},false);this.canvas.addEventListener("webglcontextrestored",function(event){x3dom.debug.logError("recover WebGL state and resources on context lost NYI");event.preventDefault();},false);this.canvas.addEventListener('mousedown',function(evt){if(!this.isMulti){this.focus();this.classList.add('x3dom-canvas-mousedown');switch(evt.button){case 0:this.mouse_button=1;break;case 1:this.mouse_button=4;break;case 2:this.mouse_button=2;break;default:this.mouse_button=0;break;}
if(evt.shiftKey){this.mouse_button=1;}
if(evt.ctrlKey){this.mouse_button=4;}
if(evt.altKey){this.mouse_button=2;}
var pos=this.parent.mousePosition(evt);this.mouse_drag_x=pos.x;this.mouse_drag_y=pos.y;this.mouse_dragging=true;this.parent.doc.onMousePress(that.gl,this.mouse_drag_x,this.mouse_drag_y,this.mouse_button);this.parent.doc.needRender=true;}},false);this.canvas.addEventListener('mouseup',function(evt){if(!this.isMulti){var prev_mouse_button=this.mouse_button;this.classList.remove('x3dom-canvas-mousedown');this.mouse_button=0;this.mouse_dragging=false;this.parent.doc.onMouseRelease(that.gl,this.mouse_drag_x,this.mouse_drag_y,this.mouse_button,prev_mouse_button);this.parent.doc.needRender=true;}},false);this.canvas.addEventListener('mouseover',function(evt){if(!this.isMulti){this.mouse_button=0;this.mouse_dragging=false;this.parent.doc.onMouseOver(that.gl,this.mouse_drag_x,this.mouse_drag_y,this.mouse_button);this.parent.doc.needRender=true;}},false);this.canvas.addEventListener('mouseout',function(evt){if(!this.isMulti){this.mouse_button=0;this.mouse_dragging=false;this.classList.remove('x3dom-canvas-mousedown');this.parent.doc.onMouseOut(that.gl,this.mouse_drag_x,this.mouse_drag_y,this.mouse_button);this.parent.doc.needRender=true;}},false);this.canvas.addEventListener('dblclick',function(evt){if(!this.isMulti){this.mouse_button=0;var pos=this.parent.mousePosition(evt);this.mouse_drag_x=pos.x;this.mouse_drag_y=pos.y;this.mouse_dragging=false;this.parent.doc.onDoubleClick(that.gl,this.mouse_drag_x,this.mouse_drag_y);this.parent.doc.needRender=true;}},false);this.canvas.addEventListener('mousemove',function(evt){if(!this.isMulti){var pos=this.parent.mousePosition(evt);if(pos.x!=that.lastMousePos.x||pos.y!=that.lastMousePos.y){that.lastMousePos=pos;if(evt.shiftKey){this.mouse_button=1;}
if(evt.ctrlKey){this.mouse_button=4;}
if(evt.altKey){this.mouse_button=2;}
this.mouse_drag_x=pos.x;this.mouse_drag_y=pos.y;if(this.mouse_dragging){this.parent.doc.onDrag(that.gl,this.mouse_drag_x,this.mouse_drag_y,this.mouse_button);}
else{this.parent.doc.onMove(that.gl,this.mouse_drag_x,this.mouse_drag_y,this.mouse_button);}
this.parent.doc.needRender=true;evt.preventDefault();evt.stopPropagation();}}},false);this.canvas.addEventListener('DOMMouseScroll',function(evt){if(!this.isMulti){this.focus();var originalY=this.parent.mousePosition(evt).y;this.mouse_drag_y+=2*evt.detail;this.parent.doc.onWheel(that.gl,this.mouse_drag_x,this.mouse_drag_y,originalY);this.parent.doc.needRender=true;evt.preventDefault();evt.stopPropagation();}},false);this.canvas.addEventListener('mousewheel',function(evt){if(!this.isMulti){this.focus();var originalY=this.parent.mousePosition(evt).y;this.mouse_drag_y-=0.1*evt.wheelDelta;this.parent.doc.onWheel(that.gl,this.mouse_drag_x,this.mouse_drag_y,originalY);this.parent.doc.needRender=true;evt.preventDefault();evt.stopPropagation();}},false);this.canvas.addEventListener('keypress',function(evt){var keysEnabled=this.parent.x3dElem.getAttribute("keysEnabled");if(!keysEnabled||keysEnabled.toLowerCase()=="true"){this.parent.doc.onKeyPress(evt.charCode);}
this.parent.doc.needRender=true;},true);this.canvas.addEventListener('keyup',function(evt){var keysEnabled=this.parent.x3dElem.getAttribute("keysEnabled");if(!keysEnabled||keysEnabled.toLowerCase()=="true"){this.parent.doc.onKeyUp(evt.keyCode);}
this.parent.doc.needRender=true;},true);this.canvas.addEventListener('keydown',function(evt){var keysEnabled=this.parent.x3dElem.getAttribute("keysEnabled");if(!keysEnabled||keysEnabled.toLowerCase()=="true"){this.parent.doc.onKeyDown(evt.keyCode);}
this.parent.doc.needRender=true;},true);var touches={numTouches:0,firstTouchTime:new Date().getTime(),firstTouchPoint:new x3dom.fields.SFVec2f(0,0),lastPos:new x3dom.fields.SFVec2f(),lastDrag:new x3dom.fields.SFVec2f(),lastMiddle:new x3dom.fields.SFVec2f(),lastSquareDistance:0,lastAngle:0,lastLayer:[],examineNavType:1,calcAngle:function(vector)
{var rotation=vector.normalize().dot(new x3dom.fields.SFVec2f(1,0));rotation=Math.acos(rotation);if(vector.y<0)
rotation=Math.PI+(Math.PI-rotation);return rotation;},disableTouch:this.disableTouch,visMarker:this.showTouchpoints,visMarkerBag:[],visualizeTouches:function(evt)
{if(!this.visMarker)
return;var touchBag=[];var marker=null;for(var i=0;i<evt.touches.length;i++){var id=evt.touches[i].identifier||evt.touches[i].streamId;if(!id)id=0;var index=this.visMarkerBag.indexOf(id);if(index>=0){marker=document.getElementById("visMarker"+id);marker.style.left=(evt.touches[i].pageX)+"px";marker.style.top=(evt.touches[i].pageY)+"px";}
else{marker=document.createElement("div");marker.appendChild(document.createTextNode("#"+id));marker.id="visMarker"+id;marker.className="x3dom-touch-marker";document.body.appendChild(marker);index=this.visMarkerBag.length;this.visMarkerBag[index]=id;}
touchBag.push(id);}
for(var j=this.visMarkerBag.length-1;j>=0;j--){var oldId=this.visMarkerBag[j];if(touchBag.indexOf(oldId)<0){this.visMarkerBag.splice(j,1);marker=document.getElementById("visMarker"+oldId);document.body.removeChild(marker);}}}};var mozilla_ids=[];var mozilla_touches={touches:[],preventDefault:function(){}};var touchStartHandler=function(evt,doc)
{this.isMulti=true;evt.preventDefault();touches.visualizeTouches(evt);this.focus();if(doc==null)
doc=this.parent.doc;var navi=doc._scene.getNavigationInfo();switch(navi.getType()){case"examine":touches.examineNavType=1;break;case"turntable":touches.examineNavType=2;break;default:touches.examineNavType=0;break;}
touches.lastLayer=[];var i,pos;for(i=0;i<evt.touches.length;i++){pos=this.parent.mousePosition(evt.touches[i]);touches.lastLayer.push([evt.touches[i].identifier,new x3dom.fields.SFVec2f(pos.x,pos.y)]);}
if(touches.numTouches<1&&evt.touches.length==1){touches.numTouches=1;touches.lastDrag=new x3dom.fields.SFVec2f(evt.touches[0].screenX,evt.touches[0].screenY);}
else if(touches.numTouches<2&&evt.touches.length>=2){touches.numTouches=2;var touch0=new x3dom.fields.SFVec2f(evt.touches[0].screenX,evt.touches[0].screenY);var touch1=new x3dom.fields.SFVec2f(evt.touches[1].screenX,evt.touches[1].screenY);var distance=touch1.subtract(touch0);var middle=distance.multiply(0.5).add(touch0);var squareDistance=distance.dot(distance);touches.lastMiddle=middle;touches.lastSquareDistance=squareDistance;touches.lastAngle=touches.calcAngle(distance);touches.lastPos=this.parent.mousePosition(evt.touches[0]);}
doc._scene.updateVolume();if(touches.examineNavType==1){for(i=0;i<evt.touches.length;i++){pos=this.parent.mousePosition(evt.touches[i]);doc.onPick(that.gl,pos.x,pos.y);doc._viewarea.prepareEvents(pos.x,pos.y,1,"onmousedown");doc._viewarea._pickingInfo.lastClickObj=doc._viewarea._pickingInfo.pickObj;}}
else if(evt.touches.length){pos=this.parent.mousePosition(evt.touches[0]);doc.onMousePress(that.gl,pos.x,pos.y,1);}
doc.needRender=true;};var touchStartHandlerMoz=function(evt)
{this.isMulti=true;evt.preventDefault();var new_id=true;for(var i=0;i<mozilla_ids.length;++i)
if(mozilla_ids[i]==evt.streamId)
new_id=false;if(new_id==true){evt.identifier=evt.streamId;mozilla_ids.push(evt.streamId);mozilla_touches.touches.push(evt);}
touchStartHandler(mozilla_touches,this.parent.doc);};var touchMoveHandler=function(evt,doc)
{evt.preventDefault();touches.visualizeTouches(evt);if(doc==null)
doc=this.parent.doc;var pos=null;var rotMatrix=null;var touch0,touch1,distance,middle,squareDistance,deltaMiddle,deltaZoom,deltaMove;if(touches.examineNavType==1){if(evt.touches.length==1){var currentDrag=new x3dom.fields.SFVec2f(evt.touches[0].screenX,evt.touches[0].screenY);var deltaDrag=currentDrag.subtract(touches.lastDrag);touches.lastDrag=currentDrag;var mx=x3dom.fields.SFMatrix4f.rotationY(deltaDrag.x/100);var my=x3dom.fields.SFMatrix4f.rotationX(deltaDrag.y/100);rotMatrix=mx.mult(my);doc.onMoveView(that.gl,null,rotMatrix);}
else if(evt.touches.length>=2){touch0=new x3dom.fields.SFVec2f(evt.touches[0].screenX,evt.touches[0].screenY);touch1=new x3dom.fields.SFVec2f(evt.touches[1].screenX,evt.touches[1].screenY);distance=touch1.subtract(touch0);middle=distance.multiply(0.5).add(touch0);squareDistance=distance.dot(distance);deltaMiddle=middle.subtract(touches.lastMiddle);deltaZoom=squareDistance-touches.lastSquareDistance;deltaMove=new x3dom.fields.SFVec3f(deltaMiddle.x/screen.width,-deltaMiddle.y/screen.height,deltaZoom/(screen.width*screen.height*0.2));var rotation=touches.calcAngle(distance);var angleDelta=touches.lastAngle-rotation;touches.lastAngle=rotation;rotMatrix=x3dom.fields.SFMatrix4f.rotationZ(angleDelta);touches.lastMiddle=middle;touches.lastSquareDistance=squareDistance;doc.onMoveView(that.gl,deltaMove,rotMatrix);}}
else if(evt.touches.length){if(touches.examineNavType==2&&evt.touches.length>=2){touch0=new x3dom.fields.SFVec2f(evt.touches[0].screenX,evt.touches[0].screenY);touch1=new x3dom.fields.SFVec2f(evt.touches[1].screenX,evt.touches[1].screenY);distance=touch1.subtract(touch0);squareDistance=distance.dot(distance);deltaZoom=(squareDistance-touches.lastSquareDistance)/(0.1*(screen.width+screen.height));touches.lastPos.y+=deltaZoom;touches.lastSquareDistance=squareDistance;doc.onDrag(that.gl,touches.lastPos.x,touches.lastPos.y,2);}
else{pos=this.parent.mousePosition(evt.touches[0]);doc.onDrag(that.gl,pos.x,pos.y,1);}}
doc.needRender=true;};var touchMoveHandlerMoz=function(evt)
{evt.preventDefault();for(var i=0;i<mozilla_ids.length;++i)
if(mozilla_ids[i]==evt.streamId)
mozilla_touches.touches[i]=evt;touchMoveHandler(mozilla_touches,this.parent.doc);};var touchEndHandler=function(evt,doc)
{this.isMulti=false;evt.preventDefault();touches.visualizeTouches(evt);if(doc==null)
doc=this.parent.doc;doc._viewarea._isMoving=false;if(touches.numTouches==2&&evt.touches.length==1)
touches.lastDrag=new x3dom.fields.SFVec2f(evt.touches[0].screenX,evt.touches[0].screenY);var dblClick=false;if(evt.touches.length<2){if(touches.numTouches==1)
dblClick=true;touches.numTouches=evt.touches.length;}
if(touches.examineNavType==1){for(var i=0;i<touches.lastLayer.length;i++){var pos=touches.lastLayer[i][1];doc.onPick(that.gl,pos.x,pos.y);if(doc._scene._vf.pickMode.toLowerCase()!=="box"){doc._viewarea.prepareEvents(pos.x,pos.y,1,"onmouseup");doc._viewarea._pickingInfo.lastClickObj=doc._viewarea._pickingInfo.pickObj;if(doc._viewarea._pickingInfo.pickObj&&doc._viewarea._pickingInfo.pickObj===doc._viewarea._pickingInfo.lastClickObj){doc._viewarea.prepareEvents(pos.x,pos.y,1,"onclick");}}
else{var line=doc._viewarea.calcViewRay(pos.x,pos.y);var isect=doc._scene.doIntersect(line);var obj=line.hitObject;if(isect&&obj){doc._viewarea._pick.setValues(line.hitPoint);doc._viewarea.checkEvents(obj,pos.x,pos.y,1,"onclick");x3dom.debug.logInfo("Hit '"+obj._xmlNode.localName+"/ "+
obj._DEF+"' at pos "+doc._viewarea._pick);}}}
if(dblClick){var now=new Date().getTime();var dist=touches.firstTouchPoint.subtract(touches.lastDrag).length();if(dist<18&&now-touches.firstTouchTime<180)
doc.onDoubleClick(that.gl,0,0);touches.firstTouchTime=now;touches.firstTouchPoint=touches.lastDrag;}}
else if(touches.lastLayer.length){pos=touches.lastLayer[0][1];doc.onMouseRelease(that.gl,pos.x,pos.y,0,1);}
doc.needRender=true;};var touchEndHandlerMoz=function(evt)
{this.isMulti=false;evt.preventDefault();var remove_index=-1;for(var i=0;i<mozilla_ids.length;++i)
if(mozilla_ids[i]==evt.streamId)
remove_index=i;if(remove_index!=-1)
{mozilla_ids.splice(remove_index,1);mozilla_touches.touches.splice(remove_index,1);}
touchEndHandler(mozilla_touches,this.parent.doc);};if(!this.disableTouch)
{this.canvas.addEventListener('touchstart',touchStartHandler,true);this.canvas.addEventListener('touchmove',touchMoveHandler,true);this.canvas.addEventListener('touchend',touchEndHandler,true);}}};x3dom.X3DCanvas.prototype._initContext=function(canvas,forbidMobileShaders,forceMobileShaders,forceFlashForIE,tryWebGL2)
{x3dom.debug.logInfo("Initializing X3DCanvas for ["+canvas.id+"]");var gl=x3dom.gfx_webgl(canvas,forbidMobileShaders,forceMobileShaders,tryWebGL2,this.x3dElem);if(!gl)
{x3dom.debug.logError("No 3D context found...");this.x3dElem.removeChild(canvas);return null;}
else
{var webglVersion=parseFloat(x3dom.caps.VERSION.match(/\d+\.\d+/)[0]);if(webglVersion<1.0){console.log(forceFlashForIE);if(forceFlashForIE){x3dom.debug.logError("No valid 3D context found...");this.x3dElem.removeChild(canvas);return null;}else{x3dom.debug.logError("WebGL version "+x3dom.caps.VERSION+" lacks important WebGL/GLSL features needed for shadows, special vertex attribute types, etc.!");}}}
return gl;};x3dom.X3DCanvas.prototype._initFlashContext=function(canvas,renderType){x3dom.debug.logInfo("Initializing X3DObject for ["+canvas.id+"]");return x3dom.gfx_flash(canvas,renderType);};x3dom.X3DCanvas.prototype.appendParam=function(node,name,value){var param=document.createElement('param');param.setAttribute('name',name);param.setAttribute('value',value);node.appendChild(param);};x3dom.X3DCanvas.prototype._fileExists=function(url){var xhr=new XMLHttpRequest();try{xhr.open("HEAD",url,false);xhr.send(null);return(xhr.status!=404);}catch(e){return true;}};x3dom.X3DCanvas.prototype._detectFlash=function(required,max)
{var required_version=required;var max_version=max;var available_version=0;if(typeof(navigator.plugins["Shockwave Flash"])=="object")
{var description=navigator.plugins["Shockwave Flash"].description;available_version=description.substr(16,(description.indexOf(".",16)-16));}
else if(typeof(ActiveXObject)=="function"){for(var i=10;i<(max_version+1);i++){try{if(typeof(new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+i))=="object"){available_version=i+1;}}
catch(error){}}}
return[available_version,required_version];};x3dom.X3DCanvas.prototype._createInitFailedDiv=function(x3dElem){var div=document.createElement('div');div.setAttribute("id","x3dom-create-init-failed");div.style.width=x3dElem.getAttribute("width");div.style.height=x3dElem.getAttribute("height");div.style.backgroundColor="#C00";div.style.color="#FFF";div.style.fontSize="20px";div.style.fontWidth="bold";div.style.padding="10px 10px 10px 10px";div.style.display="inline-block";div.style.fontFamily="Helvetica";div.style.textAlign="center";div.appendChild(document.createTextNode('Your Browser does not support X3DOM'));div.appendChild(document.createElement('br'));div.appendChild(document.createTextNode('Read more about Browser support on:'));div.appendChild(document.createElement('br'));var link=document.createElement('a');link.setAttribute('href','http://www.x3dom.org/?page_id=9');link.appendChild(document.createTextNode('X3DOM | Browser Support'));div.appendChild(link);var altImg=x3dElem.getAttribute("altImg")||null;if(altImg){var altImgObj=new Image();altImgObj.src=altImg;div.style.backgroundImage="url("+altImg+")";div.style.backgroundRepeat="no-repeat";div.style.backgroundPosition="50% 50%";}
x3dElem.appendChild(div);x3dom.debug.logError("Your Browser does not support X3DOM!");};x3dom.X3DCanvas.prototype._createFlashObject=function(x3dElem){var result=this._detectFlash(11,11);if(!result[0]||result[0]<result[1]){return null;}else{x3dom.debug.logInfo("Creating FlashObject for (X)3D element...");var id=this.x3dElem.getAttribute("id");if(id!==null){id="x3dom-"+id+"-object";}else{var index=new Date().getTime();id="x3dom-"+index+"-object";}
var swf_path=this.x3dElem.getAttribute("swfpath");if(swf_path===null){swf_path="x3dom.swf";}
if(!this._fileExists(swf_path)){var version;if(x3dom.versionInfo===undefined||x3dom.versionInfo.version.indexOf('dev')!=-1)
{version="dev";}
else
{version=x3dom.versionInfo.version;var modification=version.substr(version.length-1);if(modification==0){version=version.substr(0,3);}}
swf_path="http://www.x3dom.org/download/"+version+"/x3dom.swf";x3dom.debug.logWarning("Can't find local x3dom.swf ("+version+"). X3DOM now using the online version from x3dom.org."+"The online version needs a <a href='http://examples.x3dom.org/crossdomain.xml'>crossdomain.xml</a> "+"file in the root directory of your domain to access textures");}
var width=this.x3dElem.getAttribute("width");var idx=-1;if(width==null){width=550;}else{idx=width.indexOf("px");if(idx!=-1){width=width.substr(0,idx);}}
var height=this.x3dElem.getAttribute("height");if(height==null){height=400;}else{idx=height.indexOf("px");if(idx!=-1){height=height.substr(0,idx);}}
var renderType=this.x3dElem.getAttribute("flashrenderer");if(renderType==null){this.flash_renderType="forward";}else{this.flash_renderType="deferred";}
var obj=document.createElement('object');obj.setAttribute('width','100%');obj.setAttribute('height','100%');obj.setAttribute('id',id);if(!document.doctype||document.doctype&&document.doctype.publicId&&document.doctype.publicId.search(/DTD XHTML/i)!=-1){x3dom.debug.logWarning("Flash backend doesn't like XHTML, please use HTML5!");obj.setAttribute('style','width:'+width+'px; height:'+height+'px;');}else{if(x3dElem.getAttribute('style')==null){x3dElem.setAttribute('style','width:'+width+'px; height:'+height+'px;');}}
this.appendParam(obj,'menu','false');this.appendParam(obj,'quality','high');this.appendParam(obj,'wmode','direct');this.appendParam(obj,'allowScriptAccess','always');this.appendParam(obj,'flashvars','canvasIdx='+this._canvasIdx+'&renderType='+this.flash_renderType);this.appendParam(obj,'movie',swf_path);if(navigator.appName=="Microsoft Internet Explorer"){x3dElem.appendChild(obj);obj.setAttribute('classid','clsid:d27cdb6e-ae6d-11cf-96b8-444553540000');}else{obj.setAttribute('type','application/x-shockwave-flash');obj.setAttribute('data',swf_path);x3dElem.appendChild(obj);}
return obj;}};x3dom.X3DCanvas.prototype._createHTMLCanvas=function(x3dElem)
{x3dom.debug.logInfo("Creating canvas for (X)3D element...");var canvas=document.createElement('canvas');canvas.setAttribute("class","x3dom-canvas");var userStyle=x3dElem.getAttribute("style");if(userStyle){x3dom.debug.logInfo("Inline X3D styles detected");}
var evtArr=["onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onclick","ondblclick","onkeydown","onkeypress","onkeyup","ontouchstart","ontouchmove","ontouchend","ontouchcancel","ontouchleave","ontouchenter","ondragstart","ondrop","ondragover"];for(var i=0;i<evtArr.length;i++)
{var evtName=evtArr[i];var userEvt=x3dElem.getAttribute(evtName);if(userEvt){x3dom.debug.logInfo(evtName+", "+userEvt);canvas.setAttribute(evtName,userEvt);x3dElem.removeAttribute(evtName);}}
var userProp=x3dElem.getAttribute("draggable");if(userProp){x3dom.debug.logInfo("draggable="+userProp);canvas.setAttribute("draggable",userProp);}
if(!x3dElem.__addEventListener&&!x3dElem.__removeEventListener)
{x3dElem.__addEventListener=x3dElem.addEventListener;x3dElem.__removeEventListener=x3dElem.removeEventListener;x3dElem.addEventListener=function(type,func,phase){var j,found=false;for(j=0;j<evtArr.length&&!found;j++){if(evtArr[j]===type){found=true;}}
if(found){x3dom.debug.logInfo('addEventListener for div.on'+type);canvas.addEventListener(type,func,phase);}else{x3dom.debug.logInfo('addEventListener for X3D.on'+type);this.__addEventListener(type,func,phase);}};x3dElem.removeEventListener=function(type,func,phase){var j,found=false;for(j=0;j<evtArr.length&&!found;j++){if(evtArr[j]===type){found=true;}}
if(found){x3dom.debug.logInfo('removeEventListener for div.on'+type);canvas.removeEventListener(type,func,phase);}else{x3dom.debug.logInfo('removeEventListener for X3D.on'+type);this.__removeEventListener(type,func,phase);}};}
x3dElem.appendChild(canvas);var id=x3dElem.getAttribute("id");if(id!==null){canvas.id="x3dom-"+id+"-canvas";}else{var index=new Date().getTime();canvas.id="x3dom-"+index+"-canvas";}
var w,h;if((w=x3dElem.getAttribute("width"))!==null){if(w.indexOf("%")>=0){x3dom.debug.logWarning("The width attribute is to be specified in pixels not in percent.");}
canvas.style.width=w;canvas.setAttribute("width",w);}
if((h=x3dElem.getAttribute("height"))!==null){if(h.indexOf("%")>=0){x3dom.debug.logWarning("The height attribute is to be specified in pixels not in percent.");}
canvas.style.height=h;canvas.setAttribute("height",h);}
canvas.setAttribute("tabindex","0");return canvas;};x3dom.X3DCanvas.prototype._watchForResize=function(){var new_dim=[parseInt(x3dom.getStyle(this.canvas,"width")),parseInt(x3dom.getStyle(this.canvas,"height"))];if((this._current_dim[0]!=new_dim[0])||(this._current_dim[1]!=new_dim[1])){this._current_dim=new_dim;this.x3dElem.setAttribute("width",new_dim[0]+"px");this.x3dElem.setAttribute("height",new_dim[1]+"px");}};x3dom.X3DCanvas.prototype._createProgressDiv=function(){var progressDiv=document.createElement('div');progressDiv.setAttribute("class","x3dom-progress");var _text=document.createElement('strong');_text.appendChild(document.createTextNode('Loading...'));progressDiv.appendChild(_text);var _inner=document.createElement('span');_inner.setAttribute('style',"width: 25%;");_inner.appendChild(document.createTextNode(' '));progressDiv.appendChild(_inner);progressDiv.oncontextmenu=progressDiv.onmousedown=function(evt){evt.preventDefault();evt.stopPropagation();return false;};return progressDiv;};x3dom.X3DCanvas.prototype.mousePosition=function(evt)
{var x=0,y=0;if("getBoundingClientRect"in document.documentElement){var elem=evt.target.offsetParent;var box=elem.getBoundingClientRect();var scrollLeft=window.pageXOffset||document.documentElement.scrollLeft;var scrollTop=window.pageYOffset||document.documentElement.scrollTop;var compStyle=document.defaultView.getComputedStyle(elem,null);var paddingLeft=parseFloat(compStyle.getPropertyValue('padding-left'));var borderLeftWidth=parseFloat(compStyle.getPropertyValue('border-left-width'));var paddingTop=parseFloat(compStyle.getPropertyValue('padding-top'));var borderTopWidth=parseFloat(compStyle.getPropertyValue('border-top-width'));x=Math.round(evt.pageX-(box.left+paddingLeft+borderLeftWidth+scrollLeft));y=Math.round(evt.pageY-(box.top+paddingTop+borderTopWidth+scrollTop));}
else{x3dom.debug.logError('NO getBoundingClientRect');}
return new x3dom.fields.SFVec2f(x,y);};x3dom.X3DCanvas.prototype.tick=function()
{var runtime=this.x3dElem.runtime;var d=new Date().getTime();var diff=d-this.lastTimeFPSWasTaken;var fps=1000.0/(d-this.fps_t0);this.fps_t0=d;this.doc.advanceTime(d/1000.0);var animD=new Date().getTime()-d;if(this.doc.needRender){if(diff>=1000){runtime.fps=this.framesSinceLastTime/(diff/1000.0);runtime.addMeasurement('FPS',runtime.fps);this.framesSinceLastTime=0;this.lastTimeFPSWasTaken=d;}
this.framesSinceLastTime++;runtime.addMeasurement('ANIM',animD);if(runtime.isReady==false){runtime.ready();runtime.isReady=true;}
runtime.enterFrame();if(this.backend=='flash'){if(this.isFlashReady){this.canvas.setFPS({fps:fps});this.doc.needRender=false;this.doc.render(this.gl);}}
else{this.doc.needRender=false;this.doc.render(this.gl);if(!this.doc._scene._vf.doPickPass)
runtime.removeMeasurement('PICKING');}
runtime.exitFrame();}
if(this.progressDiv){if(this.doc.downloadCount>0){runtime.addInfo("#LOADS:",this.doc.downloadCount);}else{runtime.removeInfo("#LOADS:");}
if(this.doc.properties.getProperty("showProgress")!=='false'){if(this.progressDiv){this.progressDiv.childNodes[0].textContent='Loading: '+(+this.doc.downloadCount);if(this.doc.downloadCount>0){this.progressDiv.style.display='inline';}else{this.progressDiv.style.display='none';}}}else{this.progressDiv.style.display='none';}}};x3dom.X3DCanvas.prototype.load=function(uri,sceneElemPos,settings){this.doc=new x3dom.X3DDocument(this.canvas,this.gl,settings);var x3dCanvas=this;this.doc.onload=function(){if(x3dCanvas.hasRuntime){(function mainloop(){if(x3dCanvas.doc&&x3dCanvas.x3dElem.runtime){x3dCanvas._watchForResize();x3dCanvas.tick();window.requestAnimFrame(mainloop,x3dCanvas);}})();}else{x3dCanvas.tick();}};this.x3dElem.render=function(){if(x3dCanvas.hasRuntime){x3dCanvas.doc.needRender=true;}else{x3dCanvas.doc.render(x3dCanvas.gl);}};this.x3dElem.context=x3dCanvas.gl.ctx3d;this.doc.onerror=function(){alert('Failed to load X3D document');};this.doc.load(uri,sceneElemPos);};x3dom.runtime={};x3dom.Runtime=function(doc,canvas){this.doc=doc;this.canvas=canvas;this.config={};this.isReady=false;this.fps=0;this.states={measurements:[],infos:[]};};x3dom.Runtime.prototype.addMeasurement=function(title,value){this.states.measurements[title]=value;};x3dom.Runtime.prototype.removeMeasurement=function(title){if(this.states.measurements[title]){delete this.states.measurements[title];}};x3dom.Runtime.prototype.addInfo=function(title,value){this.states.infos[title]=value;};x3dom.Runtime.prototype.removeInfo=function(title){delete this.states.infos[title];};x3dom.Runtime.prototype.initialize=function(doc,canvas){this.doc=doc;this.canvas=canvas;this.config={};this.isReady=false;this.fps=0;};x3dom.Runtime.prototype.noBackendFound=function(){x3dom.debug.logInfo('No backend found. Unable to render.');};x3dom.Runtime.prototype.ready=function(){x3dom.debug.logInfo('System ready.');};x3dom.Runtime.prototype.enterFrame=function(){};x3dom.Runtime.prototype.exitFrame=function(){};x3dom.Runtime.prototype.triggerRedraw=function(){this.canvas.doc.needRender=true;};x3dom.Runtime.prototype.getActiveBindable=function(typeName){var stacks;var i,current,result;var type;stacks=this.canvas.doc._bindableBag._stacks;result=[];type=x3dom.nodeTypesLC[typeName.toLowerCase()];if(!type){x3dom.debug.logError('No node of type "'+typeName+'" found.');return null;}
for(i=0;i<stacks.length;i++){current=stacks[i].getActive();if(current._xmlNode!==undefined&&x3dom.isa(current,type)){result.push(current);}}
return result[0]?result[0]._xmlNode:null;};x3dom.Runtime.prototype.nextView=function(){var stack=this.canvas.doc._scene.getViewpoint()._stack;if(stack){stack.switchTo('next');}else{x3dom.debug.logError('No valid ViewBindable stack.');}};x3dom.Runtime.prototype.prevView=function(){var stack=this.canvas.doc._scene.getViewpoint()._stack;if(stack){stack.switchTo('prev');}else{x3dom.debug.logError('No valid ViewBindable stack.');}};x3dom.Runtime.prototype.viewpoint=function(){return this.canvas.doc._scene.getViewpoint();};x3dom.Runtime.prototype.viewMatrix=function(){return this.canvas.doc._viewarea.getViewMatrix();};x3dom.Runtime.prototype.projectionMatrix=function(){return this.canvas.doc._viewarea.getProjectionMatrix();};x3dom.Runtime.prototype.getWorldToCameraCoordinatesMatrix=function(){return this.canvas.doc._viewarea.getWCtoCCMatrix();};x3dom.Runtime.prototype.getCameraToWorldCoordinatesMatrix=function(){return this.canvas.doc._viewarea.getCCtoWCMatrix();};x3dom.Runtime.prototype.getViewingRay=function(x,y){return this.canvas.doc._viewarea.calcViewRay(x,y);};x3dom.Runtime.prototype.shootRay=function(x,y){var doc=this.canvas.doc;var info=doc._viewarea._pickingInfo;doc.onPick(this.canvas.gl,x,y);return{pickPosition:info.pickObj?info.pickPos:null,pickNormal:info.pickObj?info.pickNorm:null,pickObject:info.pickObj?info.pickObj._xmlNode:null};};x3dom.Runtime.prototype.getWidth=function(){return this.canvas.doc._viewarea._width;};x3dom.Runtime.prototype.getHeight=function(){return this.canvas.doc._viewarea._height;};x3dom.Runtime.prototype.mousePosition=function(event){var pos=this.canvas.mousePosition(event);return[pos.x,pos.y];};x3dom.Runtime.prototype.calcCanvasPos=function(wx,wy,wz){var pnt=new x3dom.fields.SFVec3f(wx,wy,wz);var mat=this.canvas.doc._viewarea.getWCtoCCMatrix();var pos=mat.multFullMatrixPnt(pnt);var w=this.canvas.doc._viewarea._width;var h=this.canvas.doc._viewarea._height;var x=Math.round((pos.x+1)*(w-1)/2);var y=Math.round((h-1)*(1-pos.y)/2);return[x,y];};x3dom.Runtime.prototype.calcPagePos=function(wx,wy,wz){var elem=this.canvas.canvas.offsetParent;if(!elem){x3dom.debug.logError("Can't calc page pos without offsetParent.");return[0,0];}
var canvasPos=elem.getBoundingClientRect();var mousePos=this.calcCanvasPos(wx,wy,wz);var scrollLeft=window.pageXOffset||document.body.scrollLeft;var scrollTop=window.pageYOffset||document.body.scrollTop;var compStyle=document.defaultView.getComputedStyle(elem,null);var paddingLeft=parseFloat(compStyle.getPropertyValue('padding-left'));var borderLeftWidth=parseFloat(compStyle.getPropertyValue('border-left-width'));var paddingTop=parseFloat(compStyle.getPropertyValue('padding-top'));var borderTopWidth=parseFloat(compStyle.getPropertyValue('border-top-width'));var x=canvasPos.left+paddingLeft+borderLeftWidth+scrollLeft+mousePos[0];var y=canvasPos.top+paddingTop+borderTopWidth+scrollTop+mousePos[1];return[x,y];};x3dom.Runtime.prototype.calcClientPos=function(wx,wy,wz){var elem=this.canvas.canvas.offsetParent;if(!elem){x3dom.debug.logError("Can't calc client pos without offsetParent.");return[0,0];}
var canvasPos=elem.getBoundingClientRect();var mousePos=this.calcCanvasPos(wx,wy,wz);var compStyle=document.defaultView.getComputedStyle(elem,null);var paddingLeft=parseFloat(compStyle.getPropertyValue('padding-left'));var borderLeftWidth=parseFloat(compStyle.getPropertyValue('border-left-width'));var paddingTop=parseFloat(compStyle.getPropertyValue('padding-top'));var borderTopWidth=parseFloat(compStyle.getPropertyValue('border-top-width'));var x=canvasPos.left+paddingLeft+borderLeftWidth+mousePos[0];var y=canvasPos.top+paddingTop+borderTopWidth+mousePos[1];return[x,y];};x3dom.Runtime.prototype.getScreenshot=function(){var url="";var backend=this.canvas.backend;var canvas=this.canvas.canvas;if(canvas){if(backend=="flash"){url=canvas.getScreenshot();}
else{var canvas2d=document.createElement("canvas");canvas2d.width=canvas.width;canvas2d.height=canvas.height;var ctx=canvas2d.getContext("2d");ctx.drawImage(canvas,0,0,canvas.width,canvas.height);ctx.scale(1,-1);ctx.translate(0,-canvas.height);url=canvas2d.toDataURL();}}
return url;};x3dom.Runtime.prototype.getCanvas=function(){return this.canvas.canvas;};x3dom.Runtime.prototype.lightMatrix=function(){this.canvas.doc._viewarea.getLightMatrix();};x3dom.Runtime.prototype.resetView=function(){this.canvas.doc._viewarea.resetView();};x3dom.Runtime.prototype.lightView=function(){if(this.canvas.doc._nodeBag.lights.length>0){this.canvas.doc._viewarea.animateTo(this.canvas.doc._viewarea.getLightMatrix()[0],this.canvas.doc._scene.getViewpoint());return true;}else{x3dom.debug.logInfo("No lights to navigate to.");return false;}};x3dom.Runtime.prototype.uprightView=function(){this.canvas.doc._viewarea.uprightView();};x3dom.Runtime.prototype.fitAll=function(updateCenterOfRotation)
{if(updateCenterOfRotation===undefined){updateCenterOfRotation=true;}
var scene=this.canvas.doc._scene;scene.updateVolume();this.canvas.doc._viewarea.fit(scene._lastMin,scene._lastMax,updateCenterOfRotation);};x3dom.Runtime.prototype.fitObject=function(obj,updateCenterOfRotation)
{if(obj&&obj._x3domNode)
{if(updateCenterOfRotation===undefined){updateCenterOfRotation=true;}
var min=x3dom.fields.SFVec3f.MAX();var max=x3dom.fields.SFVec3f.MIN();var vol=obj._x3domNode.getVolume();vol.getBounds(min,max);var mat=obj._x3domNode.getCurrentTransform();min=mat.multMatrixPnt(min);max=mat.multMatrixPnt(max);if(x3dom.isa(obj._x3domNode,x3dom.nodeTypes.X3DTransformNode))
{var invMat=obj._x3domNode._trafo.inverse();min=invMat.multMatrixPnt(min);max=invMat.multMatrixPnt(max);}
this.canvas.doc._viewarea.fit(min,max,updateCenterOfRotation);}};x3dom.Runtime.prototype.showAll=function(axis){this.canvas.doc._viewarea.showAll(axis);};x3dom.Runtime.prototype.showObject=function(obj)
{if(obj&&obj._x3domNode)
{var min=x3dom.fields.SFVec3f.MAX();var max=x3dom.fields.SFVec3f.MIN();var vol=obj._x3domNode.getVolume();vol.getBounds(min,max);var mat=obj._x3domNode.getCurrentTransform();min=mat.multMatrixPnt(min);max=mat.multMatrixPnt(max);var viewarea=this.canvas.doc._viewarea;var focalLen=(viewarea._width<viewarea._height)?viewarea._width:viewarea._height;var n0=new x3dom.fields.SFVec3f(0,0,1);var viewpoint=this.canvas.doc._scene.getViewpoint();var fov=viewpoint.getFieldOfView()/2.0;var ta=Math.tan(fov);if(Math.abs(ta)>x3dom.fields.Eps){focalLen/=ta;}
var w=viewarea._width-1;var h=viewarea._height-1;var frame=0.25;var minScreenPos=new x3dom.fields.SFVec2f(frame*w,frame*h);frame=0.75;var maxScreenPos=new x3dom.fields.SFVec2f(frame*w,frame*h);var dia2=max.subtract(min).multiply(0.5);var rw=dia2.length();var pc=min.add(dia2);var vc=maxScreenPos.subtract(minScreenPos).multiply(0.5);var rs=1.5*vc.length();vc=vc.add(minScreenPos);var dist=1.0;if(rs>x3dom.fields.Eps){dist=(rw/rs)*Math.sqrt(vc.x*vc.x+vc.y*vc.y+focalLen*focalLen);}
n0=mat.multMatrixVec(n0).normalize();n0=n0.multiply(dist);var p0=pc.add(n0);var qDir=x3dom.fields.Quaternion.rotateFromTo(new x3dom.fields.SFVec3f(0,0,1),n0);var R=qDir.toMatrix();var T=x3dom.fields.SFMatrix4f.translation(p0.negate());var M=x3dom.fields.SFMatrix4f.translation(p0);M=M.mult(R).mult(T).mult(M);var viewmat=M.inverse();viewarea.animateTo(viewmat,viewpoint);}};x3dom.Runtime.prototype.getCenter=function(domNode){if(domNode&&domNode._x3domNode&&(this.isA(domNode,"X3DShapeNode")||this.isA(domNode,"X3DGeometryNode")))
{return domNode._x3domNode.getCenter();}
return null;};x3dom.Runtime.prototype.getCurrentTransform=function(domNode){if(domNode&&domNode._x3domNode)
{return domNode._x3domNode.getCurrentTransform();}
return null;};x3dom.Runtime.prototype.getBBox=function(domNode){if(domNode&&domNode._x3domNode&&this.isA(domNode,"X3DBoundedObject"))
{var vol=domNode._x3domNode.getVolume();return{min:x3dom.fields.SFVec3f.copy(vol.min),max:x3dom.fields.SFVec3f.copy(vol.max)}}
return null;};x3dom.Runtime.prototype.getSceneBBox=function(){var scene=this.canvas.doc._scene;scene.updateVolume();return{min:x3dom.fields.SFVec3f.copy(scene._lastMin),max:x3dom.fields.SFVec3f.copy(scene._lastMax)}};x3dom.Runtime.prototype.debug=function(show){var doc=this.canvas.doc;if(doc._viewarea._visDbgBuf===undefined)
doc._viewarea._visDbgBuf=(doc._x3dElem.getAttribute("showLog")==='true');if(arguments.length>0){if(show===true){doc._viewarea._visDbgBuf=true;x3dom.debug.logContainer.style.display="block";}
else{doc._viewarea._visDbgBuf=false;x3dom.debug.logContainer.style.display="none";}}
else{doc._viewarea._visDbgBuf=!doc._viewarea._visDbgBuf;x3dom.debug.logContainer.style.display=(doc._viewarea._visDbgBuf==true)?"block":"none";}
doc.needRender=true;return doc._viewarea._visDbgBuf;};x3dom.Runtime.prototype.navigationType=function(){return this.canvas.doc._scene.getNavigationInfo().getType();};x3dom.Runtime.prototype.noNav=function(){this.canvas.doc._scene.getNavigationInfo().setType("none");};x3dom.Runtime.prototype.examine=function(){this.canvas.doc._scene.getNavigationInfo().setType("examine");};x3dom.Runtime.prototype.turnTable=function(){this.canvas.doc._scene.getNavigationInfo().setType("turntable");};x3dom.Runtime.prototype.fly=function(){this.canvas.doc._scene.getNavigationInfo().setType("fly");};x3dom.Runtime.prototype.freeFly=function(){this.canvas.doc._scene.getNavigationInfo().setType("freefly");};x3dom.Runtime.prototype.lookAt=function(){this.canvas.doc._scene.getNavigationInfo().setType("lookat");};x3dom.Runtime.prototype.lookAround=function(){this.canvas.doc._scene.getNavigationInfo().setType("lookaround");};x3dom.Runtime.prototype.walk=function(){this.canvas.doc._scene.getNavigationInfo().setType("walk");};x3dom.Runtime.prototype.game=function(){this.canvas.doc._scene.getNavigationInfo().setType("game");};x3dom.Runtime.prototype.helicopter=function(){this.canvas.doc._scene.getNavigationInfo().setType("helicopter");};x3dom.Runtime.prototype.resetExamin=function(){var viewarea=this.canvas.doc._viewarea;viewarea._rotMat=x3dom.fields.SFMatrix4f.identity();viewarea._transMat=x3dom.fields.SFMatrix4f.identity();viewarea._movement=new x3dom.fields.SFVec3f(0,0,0);viewarea._needNavigationMatrixUpdate=true;this.canvas.doc.needRender=true;};x3dom.Runtime.prototype.togglePoints=function(lines){var doc=this.canvas.doc;var mod=(lines===true)?3:2;doc._viewarea._points=++doc._viewarea._points%mod;doc.needRender=true;return doc._viewarea._points;};x3dom.Runtime.prototype.pickRect=function(x1,y1,x2,y2){return this.canvas.doc.onPickRect(this.canvas.gl,x1,y1,x2,y2);};x3dom.Runtime.prototype.pickMode=function(options){if(options&&options.internal===true){return this.canvas.doc._scene._vf.pickMode;}
return this.canvas.doc._scene._vf.pickMode.toLowerCase();};x3dom.Runtime.prototype.changePickMode=function(type){type=type.toLowerCase();switch(type){case'idbuf':type='idBuf';break;case'idbuf24':type='idBuf24';break;case'idbufid':type='idBufId';break;case'texcoord':type='texCoord';break;case'color':type='color';break;case'box':type='box';break;default:x3dom.debug.logWarning("Switch pickMode to "+type+' unknown intersect type');type=undefined;}
if(type!==undefined){this.canvas.doc._scene._vf.pickMode=type;x3dom.debug.logInfo("Switched pickMode to '"+type+"'.");return true;}
return false;};x3dom.Runtime.prototype.speed=function(newSpeed){var navi=this.canvas.doc._scene.getNavigationInfo();if(newSpeed){navi._vf.speed=newSpeed;x3dom.debug.logInfo("Changed navigation speed to "+navi._vf.speed);}
return navi._vf.speed;};x3dom.Runtime.prototype.statistics=function(mode){var states=this.canvas.stateViewer;if(states){this.canvas.doc.needRender=true;if(mode===true){states.display(mode);return true;}
else if(mode===false){states.display(mode);return false;}
else{states.display(!states.active);return states.active;}}
return false;};x3dom.Runtime.prototype.processIndicator=function(mode){var processDiv=this.canvas.progressDiv;if(processDiv){if(mode===true){processDiv.style.display='inline';return true;}
else if(mode===false){processDiv.style.display='none';return false;}
return processDiv.style.display!='none'}
return false;};x3dom.Runtime.prototype.properties=function(){return this.canvas.doc.properties;};x3dom.Runtime.prototype.backendName=function(){return this.canvas.backend;};x3dom.Runtime.prototype.getFPS=function(){return this.fps;};x3dom.Runtime.prototype.isA=function(domNode,nodeType){var inherits=false;if(nodeType&&domNode&&domNode._x3domNode){if(nodeType===""){nodeType="X3DNode";}
inherits=x3dom.isa(domNode._x3domNode,x3dom.nodeTypesLC[nodeType.toLowerCase()]);}
return inherits;};x3dom.detectActiveX=function(){var isInstalled=false;if(window.ActiveXObject){var control=null;try{control=new ActiveXObject('AVALONATX.InstantPluginATXCtrl.1');}catch(e){}
if(control){isInstalled=true;}}
return isInstalled;};x3dom.rerouteSetAttribute=function(node,browser){node._setAttribute=node.setAttribute;node.setAttribute=function(name,value){var id=node.getAttribute("_x3domNode");var anode=browser.findNode(id);if(anode)
return anode.parseField(name,value);else
return 0;};for(var i=0;i<node.childNodes.length;i++){var child=node.childNodes[i];x3dom.rerouteSetAttribute(child,browser);}};x3dom.insertActiveX=function(x3d){if(typeof x3dom.atxCtrlCounter=='undefined'){x3dom.atxCtrlCounter=0;}
var height=x3d.getAttribute("height");var width=x3d.getAttribute("width");var parent=x3d.parentNode;var divelem=document.createElement("div");divelem.setAttribute("id","x3dplaceholder");var inserted=parent.insertBefore(divelem,x3d);var hiddenx3d=document.createElement("div");hiddenx3d.style.display="none";parent.appendChild(hiddenx3d);parent.removeChild(x3d);hiddenx3d.appendChild(x3d);var atx=document.createElement("object");var containerName="Avalon"+x3dom.atxCtrlCounter;x3dom.atxCtrlCounter++;atx.setAttribute("id",containerName);atx.setAttribute("classid","CLSID:F3254BA0-99FF-4D14-BD81-EDA9873A471E");atx.setAttribute("width",width?width:"500");atx.setAttribute("height",height?height:"500");inserted.appendChild(atx);var atxctrl=document.getElementById(containerName);var browser=atxctrl.getBrowser();var scene=browser.importDocument(x3d);browser.replaceWorld(scene);x3d.getBrowser=function(){return atxctrl.getBrowser();};x3dom.rerouteSetAttribute(x3d,browser);};x3dom.userAgentFeature={supportsDOMAttrModified:false};(function loadX3DOM(){"use strict";var onload=function(){var i,j;var x3ds_unfiltered=document.getElementsByTagName('X3D');var x3ds=[];for(i=0;i<x3ds_unfiltered.length;i++){if(x3ds_unfiltered[i].hasRuntime===undefined)
x3ds.push(x3ds_unfiltered[i]);}
var params;var settings=new x3dom.Properties();var validParams=array_to_object(['showLog','showStat','showProgress','PrimitiveQuality','components','loadpath','disableDoubleClick','backend','altImg','flashrenderer','swfpath','runtimeEnabled','keysEnabled','showTouchpoints','disableTouch','maxActiveDownloads']);var components,prefix;var showLoggingConsole=false;for(i=0;i<x3ds.length;i++){settings.setProperty("showLog",x3ds[i].getAttribute("showLog")||'false');settings.setProperty("showStat",x3ds[i].getAttribute("showStat")||'false');settings.setProperty("showProgress",x3ds[i].getAttribute("showProgress")||'true');settings.setProperty("PrimitiveQuality",x3ds[i].getAttribute("PrimitiveQuality")||'High');params=x3ds[i].getElementsByTagName('PARAM');for(j=0;j<params.length;j++){if(params[j].getAttribute('name')in validParams){settings.setProperty(params[j].getAttribute('name'),params[j].getAttribute('value'));}else{}}
if(settings.getProperty('showLog')==='true'){showLoggingConsole=true;}
if(typeof X3DOM_SECURITY_OFF!='undefined'&&X3DOM_SECURITY_OFF===true){components=settings.getProperty('components',x3ds[i].getAttribute("components"));if(components){prefix=settings.getProperty('loadpath',x3ds[i].getAttribute("loadpath"));components=components.trim().split(',');for(j=0;j<components.length;j++){x3dom.loadJS(components[j]+".js",prefix);}}
if(x3ds[i].getAttribute("src")){var _scene=document.createElement("scene");var _inl=document.createElement("Inline");_inl.setAttribute("url",x3ds[i].getAttribute("src"));_scene.appendChild(_inl);x3ds[i].appendChild(_scene);}}}
if(showLoggingConsole==true){x3dom.debug.activate(true);}else{x3dom.debug.activate(false);}
x3ds=Array.map(x3ds,function(n){n.hasRuntime=true;return n;});var w3sg=document.getElementsByTagName('webSG');for(i=0;i<w3sg.length;i++){w3sg[i].hasRuntime=false;x3ds.push(w3sg[i]);}
if(x3dom.versionInfo!==undefined){x3dom.debug.logInfo("X3DOM version "+x3dom.versionInfo.version+", "+"Revison <a href='https://github.com/x3dom/x3dom/tree/"+x3dom.versionInfo.revision+"'>"
+x3dom.versionInfo.revision+"</a>, "+"Date "+x3dom.versionInfo.date);}
x3dom.debug.logInfo("Found "+(x3ds.length-w3sg.length)+" X3D and "+
w3sg.length+" (experimental) WebSG nodes...");var x3d_element;var x3dcanvas;var altDiv,altP,aLnk,altImg;var t0,t1;for(i=0;i<x3ds.length;i++)
{x3d_element=x3ds[i];if(x3dom.detectActiveX()){x3dom.insertActiveX(x3d_element);continue;}
x3dcanvas=new x3dom.X3DCanvas(x3d_element,x3dom.canvases.length);x3dom.canvases.push(x3dcanvas);if(x3dcanvas.gl===null){altDiv=document.createElement("div");altDiv.setAttribute("class","x3dom-nox3d");altDiv.setAttribute("id","x3dom-nox3d");altP=document.createElement("p");altP.appendChild(document.createTextNode("WebGL is not yet supported in your browser. "));aLnk=document.createElement("a");aLnk.setAttribute("href","http://www.x3dom.org/?page_id=9");aLnk.appendChild(document.createTextNode("Follow link for a list of supported browsers... "));altDiv.appendChild(altP);altDiv.appendChild(aLnk);x3dcanvas.x3dElem.appendChild(altDiv);if(x3dcanvas.stateViewer){x3d_element.removeChild(x3dcanvas.stateViewer.viewer);}
continue;}
t0=new Date().getTime();x3ds[i].runtime=new x3dom.Runtime(x3ds[i],x3dcanvas);x3ds[i].runtime.initialize(x3ds[i],x3dcanvas);if(x3dom.runtime.ready){x3ds[i].runtime.ready=x3dom.runtime.ready;}
if(x3dcanvas.backend==''){x3dom.runtime.noBackendFound();}
x3dcanvas.load(x3ds[i],i,settings);if(settings.getProperty('showStat')==='true'){x3ds[i].runtime.statistics(true);}else{x3ds[i].runtime.statistics(false);}
if(settings.getProperty('showProgress')==='true'){if(settings.getProperty('showProgress')==='bar'){x3dcanvas.progressDiv.setAttribute("class","x3dom-progress bar");}
x3ds[i].runtime.processIndicator(true);}else{x3ds[i].runtime.processIndicator(false);}
t1=new Date().getTime()-t0;x3dom.debug.logInfo("Time for setup and init of GL element no. "+i+": "+t1+" ms.");}
var ready=(function(eventType){var evt=null;if(document.createEvent){evt=document.createEvent("Events");evt.initEvent(eventType,true,true);document.dispatchEvent(evt);}else if(document.createEventObject){evt=document.createEventObject();document.body.fireEvent('on'+eventType,evt);}})('load');};var onunload=function(){if(x3dom.canvases){for(var i=0;i<x3dom.canvases.length;i++){x3dom.canvases[i].doc.shutdown(x3dom.canvases[i].gl);}
x3dom.canvases=[];}};x3dom.reload=function(){onload();};if(navigator.userAgent.indexOf("Chrome")!=-1){document.__getElementsByTagName=document.getElementsByTagName;document.getElementsByTagName=function(tag){var obj=[];var elems=this.__getElementsByTagName("*");if(tag=="*"){obj=elems;}else{tag=tag.toUpperCase();for(var i=0;i<elems.length;i++){var tagName=elems[i].tagName.toUpperCase();if(tagName===tag){obj.push(elems[i]);}}}
return obj;};document.__getElementById=document.getElementById;document.getElementById=function(id){var obj=this.__getElementById(id);if(!obj){var elems=this.__getElementsByTagName("*");for(var i=0;i<elems.length&&!obj;i++){if(elems[i].getAttribute("id")===id){obj=elems[i];}}}
return obj;};}else{document.__getElementById=document.getElementById;document.getElementById=function(id){var obj=this.__getElementById(id);if(!obj){var elems=this.getElementsByTagName("*");for(var i=0;i<elems.length&&!obj;i++){if(elems[i].getAttribute("id")===id){obj=elems[i];}}}
return obj;};}
if(window.addEventListener){window.addEventListener('load',onload,false);window.addEventListener('unload',onunload,false);window.addEventListener('reload',onunload,false);}else if(window.attachEvent){window.attachEvent('onload',onload);window.attachEvent('onunload',onunload);window.attachEvent('onreload',onunload);}
if(document.readyState==="complete"){window.setTimeout(function(){onload();},20);}})();x3dom.Cache=function(){this.textures=[];this.shaders=[];};x3dom.Cache.prototype.getTexture2D=function(gl,doc,url,bgnd,crossOrigin,scale,genMipMaps){var textureIdentifier=url;if(this.textures[textureIdentifier]===undefined){this.textures[textureIdentifier]=x3dom.Utils.createTexture2D(gl,doc,url,bgnd,crossOrigin,scale,genMipMaps);}
return this.textures[textureIdentifier];};x3dom.Cache.prototype.getTexture2DByDEF=function(gl,nameSpace,def){var textureIdentifier=nameSpace.name+"_"+def;if(this.textures[textureIdentifier]===undefined){this.textures[textureIdentifier]=gl.createTexture();}
return this.textures[textureIdentifier];};x3dom.Cache.prototype.getTextureCube=function(gl,doc,url,bgnd,crossOrigin,scale,genMipMaps){var textureIdentifier="";for(var i=0;i<url.length;++i){textureIdentifier+=url[i]+"|";}
if(this.textures[textureIdentifier]===undefined){this.textures[textureIdentifier]=x3dom.Utils.createTextureCube(gl,doc,url,bgnd,crossOrigin,scale,genMipMaps);}
return this.textures[textureIdentifier];};x3dom.Cache.prototype.getShader=function(gl,shaderIdentifier){var program=null;if(this.shaders[shaderIdentifier]===undefined){switch(shaderIdentifier){case x3dom.shader.PICKING:program=new x3dom.shader.PickingShader(gl);break;case x3dom.shader.PICKING_24:program=new x3dom.shader.Picking24Shader(gl);break;case x3dom.shader.PICKING_ID:program=new x3dom.shader.PickingIdShader(gl);break;case x3dom.shader.PICKING_COLOR:program=new x3dom.shader.PickingColorShader(gl);break;case x3dom.shader.PICKING_TEXCOORD:program=new x3dom.shader.PickingTexcoordShader(gl);break;case x3dom.shader.FRONTGROUND_TEXTURE:program=new x3dom.shader.FrontgroundTextureShader(gl);break;case x3dom.shader.BACKGROUND_TEXTURE:program=new x3dom.shader.BackgroundTextureShader(gl);break;case x3dom.shader.BACKGROUND_SKYTEXTURE:program=new x3dom.shader.BackgroundSkyTextureShader(gl);break;case x3dom.shader.BACKGROUND_CUBETEXTURE:program=new x3dom.shader.BackgroundCubeTextureShader(gl);break;case x3dom.shader.SHADOW:program=new x3dom.shader.ShadowShader(gl);break;case x3dom.shader.BLUR:program=new x3dom.shader.BlurShader(gl);break;case x3dom.shader.DEPTH:break;case x3dom.shader.NORMAL:program=new x3dom.shader.NormalShader(gl);break;case x3dom.shader.TEXTURE_REFINEMENT:program=new x3dom.shader.TextureRefinementShader(gl);break;default:break;}
if(program)
this.shaders[shaderIdentifier]=x3dom.Utils.wrapProgram(gl,program,shaderIdentifier);else
x3dom.debug.logError("Couldn't create shader: "+shaderIdentifier);}
return this.shaders[shaderIdentifier];};x3dom.Cache.prototype.getDynamicShader=function(gl,viewarea,shape){var properties=x3dom.Utils.generateProperties(viewarea,shape);var shaderID=properties.id;if(this.shaders[shaderID]===undefined){var program=null;if(properties.CSHADER!=-1){program=new x3dom.shader.ComposedShader(gl,shape);}else{program=(x3dom.caps.MOBILE&&!properties.CSSHADER)?new x3dom.shader.DynamicMobileShader(gl,properties):new x3dom.shader.DynamicShader(gl,properties);}
this.shaders[shaderID]=x3dom.Utils.wrapProgram(gl,program,shaderID);}
return this.shaders[shaderID];};x3dom.Cache.prototype.getShaderByProperties=function(gl,shape,properties,pickMode){var shaderID=properties.id;if(pickMode!==undefined&&pickMode!==null){shaderID+=pickMode;}
if(this.shaders[shaderID]===undefined)
{var program=null;if(pickMode!==undefined&&pickMode!==null){program=new x3dom.shader.DynamicShaderPicking(gl,properties,pickMode);}
else if(properties.CSHADER!=-1){program=new x3dom.shader.ComposedShader(gl,shape);}
else{program=(x3dom.caps.MOBILE&&!properties.CSSHADER)?new x3dom.shader.DynamicMobileShader(gl,properties):new x3dom.shader.DynamicShader(gl,properties);}
this.shaders[shaderID]=x3dom.Utils.wrapProgram(gl,program,shaderID);}
return this.shaders[shaderID];};x3dom.Cache.prototype.getShadowRenderingShader=function(gl,shadowedLights){var ID="shadow";for(var i=0;i<shadowedLights.length;i++){if(x3dom.isa(shadowedLights[i],x3dom.nodeTypes.SpotLight))
ID+="S";else if(x3dom.isa(shadowedLights[i],x3dom.nodeTypes.PointLight))
ID+="P";else
ID+="D";}
if(this.shaders[ID]===undefined){var program=new x3dom.shader.ShadowRenderingShader(gl,shadowedLights);this.shaders[ID]=x3dom.Utils.wrapProgram(gl,program,ID);}
return this.shaders[ID];};x3dom.Cache.prototype.Release=function(gl){for(var texture in this.textures){gl.deleteTexture(this.textures[texture]);}
this.textures=[];for(var shaderId in this.shaders){var shader=this.shaders[shaderId];var glShaders=gl.getAttachedShaders(shader.program);for(var i=0;i<glShaders.length;++i){gl.detachShader(shader.program,glShaders[i]);gl.deleteShader(glShaders[i]);}
gl.deleteProgram(shader.program)}
this.shaders=[];};function startDashVideo(recurl,texturediv){var vars=function(){var vars={};var parts=window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(m,key,value){vars[key]=value;});return vars;},url=recurl,video,context,player;if(vars&&vars.hasOwnProperty("url")){url=vars.url;}
video=document.querySelector(texturediv);context=new Dash.di.DashContext();player=new MediaPlayer(context);player.startup();player.attachView(video);player.setAutoPlay(false);player.attachSource(url);}
x3dom.Texture=function(gl,doc,cache,node){this.gl=gl;this.doc=doc;this.cache=cache;this.node=node;this.samplerName="diffuseMap";this.type=gl.TEXTURE_2D;this.format=gl.RGBA;this.magFilter=gl.LINEAR;this.minFilter=gl.LINEAR;this.wrapS=gl.REPEAT;this.wrapT=gl.REPEAT;this.genMipMaps=false;this.texture=null;this.ready=false;this.dashtexture=false;var tex=this.node;var suffix="mpd";this.node._x3domTexture=this;if(x3dom.isa(tex,x3dom.nodeTypes.MovieTexture)){if(tex._vf.url[0].indexOf(suffix,tex._vf.url[0].length-suffix.length)!==-1){this.dashtexture=true;var js=document.getElementById("AdditionalDashVideoScript");if(!js){js=document.createElement("script");js.setAttribute("type","text/javascript");js.setAttribute("src",x3dom.Texture.dashVideoScriptFile);js.setAttribute("id","AdditionalDashVideoScript");js.onload=function(){var texObj;while((texObj=x3dom.Texture.loadDashVideos.pop())){x3dom.Texture.textNum++;texObj.update();}
js.ready=true;};document.getElementsByTagName('head')[0].appendChild(js);}
if(js.ready===true){x3dom.Texture.textNum++;this.update();}
else{x3dom.Texture.loadDashVideos.push(this);}}}
if(!this.dashtexture){this.update();}};x3dom.Texture.dashVideoScriptFile="dash.all.js";x3dom.Texture.loadDashVideos=[];x3dom.Texture.textNum=0;x3dom.Texture.clampFontSize=false;x3dom.Texture.prototype.update=function()
{if(x3dom.isa(this.node,x3dom.nodeTypes.Text))
{this.updateText();}
else
{this.updateTexture();}};x3dom.Texture.prototype.setPixel=function(x,y,pixel,update)
{var gl=this.gl;var pixels=new Uint8Array(pixel);gl.bindTexture(this.type,this.texture);gl.pixelStorei(gl.UNPACK_ALIGNMENT,1);gl.texSubImage2D(this.type,0,x,y,1,1,this.format,gl.UNSIGNED_BYTE,pixels);gl.bindTexture(this.type,null);if(update){this.doc.needRender=true;}};x3dom.Texture.prototype.updateTexture=function()
{var gl=this.gl;var doc=this.doc;var tex=this.node;this.samplerName=tex._type;if(x3dom.isa(tex,x3dom.nodeTypes.X3DEnvironmentTextureNode)){this.type=gl.TEXTURE_CUBE_MAP;}else{this.type=gl.TEXTURE_2D;}
if(x3dom.isa(tex,x3dom.nodeTypes.PixelTexture)){switch(tex._vf.image.comp)
{case 1:this.format=gl.LUMINANCE;break;case 2:this.format=gl.LUMINANCE_ALPHA;break;case 3:this.format=gl.RGB;break;case 4:this.format=gl.RGBA;break;}}else{this.format=gl.RGBA;}
if(tex._cf.textureProperties.node!==null){var texProp=tex._cf.textureProperties.node;this.wrapS=x3dom.Utils.boundaryModesDic(gl,texProp._vf.boundaryModeS);this.wrapT=x3dom.Utils.boundaryModesDic(gl,texProp._vf.boundaryModeT);this.minFilter=x3dom.Utils.minFilterDic(gl,texProp._vf.minificationFilter);this.magFilter=x3dom.Utils.magFilterDic(gl,texProp._vf.magnificationFilter);if(texProp._vf.generateMipMaps===true){this.genMipMaps=true;if(this.minFilter==gl.NEAREST){this.minFilter=gl.NEAREST_MIPMAP_NEAREST;}else if(this.minFilter==gl.LINEAR){this.minFilter=gl.LINEAR_MIPMAP_LINEAR;}
if(this.texture&&(this.texture.ready||this.texture.textureCubeReady)){gl.bindTexture(this.type,this.texture);gl.generateMipmap(this.type);gl.bindTexture(this.type,null);}}else{this.genMipMaps=false;if((this.minFilter==gl.LINEAR_MIPMAP_LINEAR)||(this.minFilter==gl.LINEAR_MIPMAP_NEAREST)){this.minFilter=gl.LINEAR;}else if((this.minFilter==gl.NEAREST_MIPMAP_LINEAR)||(this.minFilter==gl.NEAREST_MIPMAP_NEAREST)){this.minFilter=gl.NEAREST;}}}else{if(tex._vf.repeatS==false){this.wrapS=gl.CLAMP_TO_EDGE;}
else
{this.wrapS=gl.REPEAT;}
if(tex._vf.repeatT==false){this.wrapT=gl.CLAMP_TO_EDGE;}
else
{this.wrapT=gl.REPEAT;}
if(this.samplerName=="displacementMap"||this.samplerName=="multiDiffuseAlphaMap"||this.samplerName=="multiVisibilityMap"||this.samplerName=="multiEmissiveAmbientMap"||this.samplerName=="multiSpecularShininessMap")
{this.wrapS=gl.CLAMP_TO_EDGE;this.wrapT=gl.CLAMP_TO_EDGE;this.minFilter=gl.NEAREST;this.magFilter=gl.NEAREST;}}
var childTex=(tex._video&&tex._needPerFrameUpdate===true);if(tex._isCanvas&&tex._canvas)
{if(this.texture==null){this.texture=gl.createTexture()}
this.texture.width=tex._canvas.width;this.texture.height=tex._canvas.height;this.texture.ready=true;gl.bindTexture(this.type,this.texture);gl.texImage2D(this.type,0,this.format,this.format,gl.UNSIGNED_BYTE,tex._canvas);if(this.genMipMaps){gl.generateMipmap(this.type);}
gl.bindTexture(this.type,null);}
else if(x3dom.isa(tex,x3dom.nodeTypes.RenderedTexture))
{if(tex._webgl&&tex._webgl.fbo){this.texture=tex._webgl.fbo.tex;}
else{this.texture=null;x3dom.debug.logError("Try updating RenderedTexture without FBO initialized!");}
if(this.texture){this.texture.ready=true;}}
else if(x3dom.isa(tex,x3dom.nodeTypes.PixelTexture))
{if(this.texture==null){if(this.node._DEF){this.texture=this.cache.getTexture2DByDEF(gl,this.node._nameSpace,this.node._DEF);}else{this.texture=gl.createTexture();}}
this.texture.width=tex._vf.image.width;this.texture.height=tex._vf.image.height;this.texture.ready=true;var pixelArr=tex._vf.image.array;var pixelArrfont_size=tex._vf.image.width*tex._vf.image.height*tex._vf.image.comp;if(pixelArr.length<pixelArrfont_size)
{pixelArr=tex._vf.image.toGL();while(pixelArr.length<pixelArrfont_size){pixelArr.push(0);}}
var pixels=new Uint8Array(pixelArr);gl.bindTexture(this.type,this.texture);gl.pixelStorei(gl.UNPACK_ALIGNMENT,1);gl.texImage2D(this.type,0,this.format,tex._vf.image.width,tex._vf.image.height,0,this.format,gl.UNSIGNED_BYTE,pixels);if(this.genMipMaps){gl.generateMipmap(this.type);}
gl.bindTexture(this.type,null);}
else if(x3dom.isa(tex,x3dom.nodeTypes.MovieTexture)||childTex)
{var that=this;var p=document.getElementsByTagName('body')[0];if(this.texture==null){this.texture=gl.createTexture();}
if(this.dashtexture){var element_vid=document.createElement('div');element_vid.setAttribute('class','dash-video-player'+x3dom.Texture.textNum);tex._video=document.createElement('video');tex._video.setAttribute('preload','auto');tex._video.setAttribute('muted','muted');var scriptToRun=document.createElement('script');scriptToRun.setAttribute('type','text/javascript');scriptToRun.innerHTML='startDashVideo("'+tex._vf.url[0]+'",".dash-video-player'+x3dom.Texture.textNum+' video")';element_vid.appendChild(scriptToRun);element_vid.appendChild(tex._video);p.appendChild(element_vid);tex._video.style.visibility="hidden";tex._video.style.display="none";}
else{if(!childTex){tex._video=document.createElement('video');tex._video.setAttribute('preload','auto');tex._video.setAttribute('muted','muted');p.appendChild(tex._video);tex._video.style.visibility="hidden";tex._video.style.display="none";}
for(var i=0;i<tex._vf.url.length;i++){var videoUrl=tex._nameSpace.getURL(tex._vf.url[i]);x3dom.debug.logInfo('Adding video file: '+videoUrl);var src=document.createElement('source');src.setAttribute('src',videoUrl);tex._video.appendChild(src);}}
var updateMovie=function()
{gl.bindTexture(that.type,that.texture);gl.texImage2D(that.type,0,that.format,that.format,gl.UNSIGNED_BYTE,tex._video);if(that.genMipMaps){gl.generateMipmap(that.type);}
gl.bindTexture(that.type,null);that.texture.ready=true;doc.needRender=true;};var startVideo=function()
{tex._video.play();tex._intervalID=setInterval(updateMovie,16);};var videoDone=function()
{clearInterval(tex._intervalID);if(tex._vf.loop===true)
{tex._video.play();tex._intervalID=setInterval(updateMovie,16);}};tex._video.addEventListener("canplaythrough",startVideo,true);tex._video.addEventListener("ended",videoDone,true);}
else if(x3dom.isa(tex,x3dom.nodeTypes.X3DEnvironmentTextureNode))
{this.texture=this.cache.getTextureCube(gl,doc,tex.getTexUrl(),false,tex._vf.crossOrigin,tex._vf.scale,this.genMipMaps);}
else
{this.texture=this.cache.getTexture2D(gl,doc,tex._nameSpace.getURL(tex._vf.url[0]),false,tex._vf.crossOrigin,tex._vf.scale,this.genMipMaps);}};x3dom.Texture.prototype.updateText=function()
{var gl=this.gl;this.wrapS=gl.CLAMP_TO_EDGE;this.wrapT=gl.CLAMP_TO_EDGE;var fontStyleNode=this.node._cf.fontStyle.node;var font_family='serif';var font_style='normal';var font_justify='left';var font_size=1.0;var font_spacing=1.0;var font_horizontal=true;var font_language="";if(fontStyleNode!==null)
{var fonts=fontStyleNode._vf.family.toString();fonts=fonts.trim().replace(/\'/g,'').replace(/\,/,' ');fonts=fonts.split(" ");font_family=Array.map(fonts,function(s){if(s=='SANS'){return'sans-serif';}
else if(s=='SERIF'){return'serif';}
else if(s=='TYPEWRITER'){return'monospace';}
else{return''+s+'';}}).join(",");font_style=fontStyleNode._vf.style.toString().replace(/\'/g,'');switch(font_style.toUpperCase()){case'PLAIN':font_style='normal';break;case'BOLD':font_style='bold';break;case'ITALIC':font_style='italic';break;case'BOLDITALIC':font_style='italic bold';break;default:font_style='normal';}
var leftToRight=fontStyleNode._vf.leftToRight?'ltr':'rtl';var topToBottom=fontStyleNode._vf.topToBottom;font_justify=fontStyleNode._vf.justify[0].toString().replace(/\'/g,'');switch(font_justify.toUpperCase()){case'BEGIN':font_justify='left';break;case'END':font_justify='right';break;case'FIRST':font_justify='left';break;case'MIDDLE':font_justify='center';break;default:font_justify='left';break;}
font_size=fontStyleNode._vf.size;font_spacing=fontStyleNode._vf.spacing;font_horizontal=fontStyleNode._vf.horizontal;font_language=fontStyleNode._vf.language;if(font_size<0.1)font_size=0.1;if(x3dom.Texture.clampFontSize&&font_size>2.3)
{font_size=2.3;}}
var textX,textY;var paragraph=this.node._vf.string;var text_canvas=document.createElement('canvas');text_canvas.dir=leftToRight;var textHeight=font_size*42;var textAlignment=font_justify;document.body.appendChild(text_canvas);var text_ctx=text_canvas.getContext('2d');text_ctx.font=font_style+" "+textHeight+"px "+font_family;var maxWidth=text_ctx.measureText(paragraph[0]).width;var i;for(i=1;i<paragraph.length;i++){if(text_ctx.measureText(paragraph[i]).width>maxWidth)
maxWidth=text_ctx.measureText(paragraph[i]).width;}
var canvas_scale=1.1;text_canvas.width=maxWidth*canvas_scale;text_canvas.height=textHeight*paragraph.length*canvas_scale;switch(textAlignment){case"left":textX=0;break;case"center":textX=text_canvas.width/2;break;case"right":textX=text_canvas.width;break;}
var txtW=text_canvas.width;var txtH=text_canvas.height;text_ctx.fillStyle='rgba(0,0,0,0)';text_ctx.fillRect(0,0,text_ctx.canvas.width,text_ctx.canvas.height);text_ctx.fillStyle='white';text_ctx.lineWidth=2.5;text_ctx.strokeStyle='grey';text_ctx.textBaseline='top';text_ctx.font=font_style+" "+textHeight+"px "+font_family;text_ctx.textAlign=textAlignment;for(i=0;i<paragraph.length;i++){textY=i*textHeight;text_ctx.fillText(paragraph[i],textX,textY);}
if(this.texture===null)
{this.texture=gl.createTexture();}
gl.bindTexture(this.type,this.texture);gl.texImage2D(this.type,0,this.format,this.format,gl.UNSIGNED_BYTE,text_canvas);gl.bindTexture(this.type,null);document.body.removeChild(text_canvas);var w=txtW/100.0;var h=txtH/100.0;this.node._mesh._positions[0]=[-w,-h+.4,0,w,-h+.4,0,w,h+.4,0,-w,h+.4,0];this.node.invalidateVolume();Array.forEach(this.node._parentNodes,function(node){node.setAllDirty();});};x3dom.X3DDocument=function(canvas,ctx,settings){this.canvas=canvas;this.ctx=ctx;this.properties=settings;this.needRender=true;this._x3dElem=null;this._scene=null;this._viewarea=null;this.downloadCount=0;this._nodeBag={timer:[],lights:[],clipPlanes:[],followers:[],trans:[],renderTextures:[],viewarea:[],affectedPointingSensors:[]};this.onload=function(){};this.onerror=function(){};};x3dom.X3DDocument.prototype.load=function(uri,sceneElemPos){var uri_docs={};var queued_uris=[uri];var doc=this;function next_step(){if(queued_uris.length===0){doc._setup(uri_docs[uri],uri_docs,sceneElemPos);doc.onload();return;}
var next_uri=queued_uris.shift();if(x3dom.isX3DElement(next_uri)&&(next_uri.localName.toLowerCase()==='x3d'||next_uri.localName.toLowerCase()==='websg'))
{uri_docs[next_uri]=next_uri;doc._x3dElem=next_uri;next_step();}}
next_step();};x3dom.findScene=function(x3dElem){var sceneElems=[];for(var i=0;i<x3dElem.childNodes.length;i++){var sceneElem=x3dElem.childNodes[i];if(sceneElem&&sceneElem.localName&&sceneElem.localName.toLowerCase()==="scene"){sceneElems.push(sceneElem);}}
if(sceneElems.length>1){x3dom.debug.logError("X3D element has more than one Scene child (has "+
x3dElem.childNodes.length+").");}
else{return sceneElems[0];}
return null;};x3dom.X3DDocument.prototype._setup=function(sceneDoc,uriDocs,sceneElemPos){var doc=this;function cleanNodeBag(bag,node){for(var i=0,n=bag.length;i<n;i++){if(bag[i]===node){bag.splice(i,1);break;}}}
function removeX3DOMBackendGraph(domNode){var children=domNode.childNodes;for(var i=0,n=children.length;i<n;i++){removeX3DOMBackendGraph(children[i]);}
if(domNode._x3domNode){var node=domNode._x3domNode;var nameSpace=node._nameSpace;if(x3dom.isa(node,x3dom.nodeTypes.X3DShapeNode)){if(node._cleanupGLObjects){node._cleanupGLObjects(true);}
if(x3dom.nodeTypes.Shape.idMap.nodeID[node._objectID]){delete x3dom.nodeTypes.Shape.idMap.nodeID[node._objectID];}}
else if(x3dom.isa(node,x3dom.nodeTypes.TimeSensor)){cleanNodeBag(doc._nodeBag.timer,node);}
else if(x3dom.isa(node,x3dom.nodeTypes.X3DLightNode)){cleanNodeBag(doc._nodeBag.lights,node);}
else if(x3dom.isa(node,x3dom.nodeTypes.X3DFollowerNode)){cleanNodeBag(doc._nodeBag.followers,node);}
else if(x3dom.isa(node,x3dom.nodeTypes.X3DTransformNode)){cleanNodeBag(doc._nodeBag.trans,node);}
else if(x3dom.isa(node,x3dom.nodeTypes.RenderedTexture)){cleanNodeBag(doc._nodeBag.renderTextures,node);if(node._cleanupGLObjects){node._cleanupGLObjects();}}
else if(x3dom.isa(node,x3dom.nodeTypes.X3DPointingDeviceSensorNode)){cleanNodeBag(doc._nodeBag.affectedPointingSensors,node);}
else if(x3dom.isa(node,x3dom.nodeTypes.Texture)){node.shutdown();}
else if(x3dom.isa(node,x3dom.nodeTypes.AudioClip)){node.shutdown();}
else if(x3dom.isa(node,x3dom.nodeTypes.X3DBindableNode)){var stack=node._stack;if(stack){node.bind(false);cleanNodeBag(stack._bindBag,node);}
if(node._cleanupGLObjects){node._cleanupGLObjects();}}
else if(x3dom.isa(node,x3dom.nodeTypes.Scene)){if(node._webgl){node._webgl=null;}}
if(nameSpace&&!(domNode.getAttribute('use')||domNode.getAttribute('USE')))
{nameSpace.removeNode(node._DEF);}
node._xmlNode=null;delete domNode._x3domNode;}}
var domEventListener={onAttrModified:function(e){if('_x3domNode'in e.target){var attrToString={1:"MODIFICATION",2:"ADDITION",3:"REMOVAL"};e.target._x3domNode.updateField(e.attrName,e.newValue);doc.needRender=true;}},onNodeRemoved:function(e){var domNode=e.target;if(!domNode)
return;if('_x3domNode'in domNode.parentNode&&'_x3domNode'in domNode){var parent=domNode.parentNode._x3domNode;var child=domNode._x3domNode;if(parent&&child){parent.removeChild(child);parent.nodeChanged();removeX3DOMBackendGraph(domNode);if(doc._viewarea&&doc._viewarea._scene){doc._viewarea._scene.nodeChanged();doc._viewarea._scene.updateVolume();doc.needRender=true;}}}
else if(domNode.localName&&domNode.localName.toUpperCase()=="ROUTE"&&domNode._nodeNameSpace){var fromNode=domNode._nodeNameSpace.defMap[domNode.getAttribute('fromNode')];var toNode=domNode._nodeNameSpace.defMap[domNode.getAttribute('toNode')];if(fromNode&&toNode){fromNode.removeRoute(domNode.getAttribute('fromField'),toNode,domNode.getAttribute('toField'));}}
else if(domNode.localName&&domNode.localName.toUpperCase()=="X3D"){var runtime=domNode.runtime;if(runtime&&runtime.canvas&&runtime.canvas.doc&&runtime.canvas.doc._scene){var sceneNode=runtime.canvas.doc._scene._xmlNode;removeX3DOMBackendGraph(sceneNode);for(var i=0;i<x3dom.canvases.length;i++){if(x3dom.canvases[i]===runtime.canvas){x3dom.canvases[i].doc.shutdown(x3dom.canvases[i].gl);x3dom.canvases.splice(i,1);break;}}
runtime.canvas.doc._scene=null;runtime.canvas.doc._viewarea=null;runtime.canvas.doc=null;runtime.canvas=null;runtime=null;domNode.context=null;domNode.runtime=null;}}},onNodeInserted:function(e){var child=e.target;var parentNode=child.parentNode;if('_x3domNode'in parentNode){if(parentNode.tagName&&parentNode.tagName.toLowerCase()=='inline'||parentNode.tagName.toLowerCase()=='multipart'){}
else{var parent=parentNode._x3domNode;if(parent&&parent._nameSpace&&(child instanceof Element)){if(x3dom.caps.DOMNodeInsertedEvent_perSubtree)
{removeX3DOMBackendGraph(child);}
var newNode=parent._nameSpace.setupTree(child);parent.addChild(newNode,child.getAttribute("containerField"));parent.nodeChanged();var grandParentNode=parentNode.parentNode;if(grandParentNode&&grandParentNode._x3domNode)
grandParentNode._x3domNode.nodeChanged();if(doc._viewarea&&doc._viewarea._scene){doc._viewarea._scene.nodeChanged();doc._viewarea._scene.updateVolume();doc.needRender=true;}}
else{x3dom.debug.logWarning("No _nameSpace in onNodeInserted");}}}}};sceneDoc.addEventListener('DOMNodeRemoved',domEventListener.onNodeRemoved,true);sceneDoc.addEventListener('DOMNodeInserted',domEventListener.onNodeInserted,true);if((x3dom.userAgentFeature.supportsDOMAttrModified===true)){sceneDoc.addEventListener('DOMAttrModified',domEventListener.onAttrModified,true);}
var sceneElem=x3dom.findScene(sceneDoc);this._bindableBag=new x3dom.BindableBag(this);var nameSpace=new x3dom.NodeNameSpace("scene",doc);var scene=nameSpace.setupTree(sceneElem);this._scene=scene;this._bindableBag.setRefNode(scene);this._viewarea=new x3dom.Viewarea(this,scene);this._viewarea._width=this.canvas.width;this._viewarea._height=this.canvas.height;};x3dom.X3DDocument.prototype.advanceTime=function(t){var i=0;if(this._nodeBag.timer.length){for(i=0;i<this._nodeBag.timer.length;i++)
{this.needRender|=this._nodeBag.timer[i].tick(t);}}
if(this._nodeBag.followers.length){for(i=0;i<this._nodeBag.followers.length;i++)
{this.needRender|=this._nodeBag.followers[i].tick(t);}}
if(this._nodeBag.trans.length){for(i=0;i<this._nodeBag.trans.length;i++)
{this.needRender|=this._nodeBag.trans[i].tick(t);}}
if(this._nodeBag.viewarea.length){for(i=0;i<this._nodeBag.viewarea.length;i++)
{this.needRender|=this._nodeBag.viewarea[i].tick(t);}}};x3dom.X3DDocument.prototype.render=function(ctx){if(!ctx||!this._viewarea){return;}
ctx.renderScene(this._viewarea);};x3dom.X3DDocument.prototype.onPick=function(ctx,x,y){if(!ctx||!this._viewarea){return;}
ctx.pickValue(this._viewarea,x,y,1);};x3dom.X3DDocument.prototype.onPickRect=function(ctx,x1,y1,x2,y2){if(!ctx||!this._viewarea){return[];}
return ctx.pickRect(this._viewarea,x1,y1,x2,y2);};x3dom.X3DDocument.prototype.onMove=function(ctx,x,y,buttonState){if(!ctx||!this._viewarea){return;}
if(this._viewarea._scene._vf.doPickPass)
ctx.pickValue(this._viewarea,x,y,buttonState);this._viewarea.onMove(x,y,buttonState);};x3dom.X3DDocument.prototype.onMoveView=function(ctx,translation,rotation){if(!ctx||!this._viewarea){return;}
this._viewarea.onMoveView(translation,rotation);};x3dom.X3DDocument.prototype.onDrag=function(ctx,x,y,buttonState){if(!ctx||!this._viewarea){return;}
if(this._viewarea._scene._vf.doPickPass)
ctx.pickValue(this._viewarea,x,y,buttonState);this._viewarea.onDrag(x,y,buttonState);};x3dom.X3DDocument.prototype.onWheel=function(ctx,x,y,originalY){if(!ctx||!this._viewarea){return;}
if(this._viewarea._scene._vf.doPickPass)
ctx.pickValue(this._viewarea,x,originalY,0);this._viewarea.onDrag(x,y,2);};x3dom.X3DDocument.prototype.onMousePress=function(ctx,x,y,buttonState){if(!ctx||!this._viewarea){return;}
this._viewarea._scene.updateVolume();ctx.pickValue(this._viewarea,x,y,buttonState);this._viewarea.onMousePress(x,y,buttonState);};x3dom.X3DDocument.prototype.onMouseRelease=function(ctx,x,y,buttonState,prevButton){if(!ctx||!this._viewarea){return;}
var button=(prevButton<<8)|buttonState;ctx.pickValue(this._viewarea,x,y,button);this._viewarea.onMouseRelease(x,y,buttonState,prevButton);};x3dom.X3DDocument.prototype.onMouseOver=function(ctx,x,y,buttonState){if(!ctx||!this._viewarea){return;}
ctx.pickValue(this._viewarea,x,y,buttonState);this._viewarea.onMouseOver(x,y,buttonState);};x3dom.X3DDocument.prototype.onMouseOut=function(ctx,x,y,buttonState){if(!ctx||!this._viewarea){return;}
ctx.pickValue(this._viewarea,x,y,buttonState);this._viewarea.onMouseOut(x,y,buttonState);};x3dom.X3DDocument.prototype.onDoubleClick=function(ctx,x,y){if(!ctx||!this._viewarea){return;}
this._viewarea.onDoubleClick(x,y);};x3dom.X3DDocument.prototype.onKeyDown=function(keyCode)
{switch(keyCode){case 37:this._viewarea.strafeLeft();break;case 38:this._viewarea.moveFwd();break;case 39:this._viewarea.strafeRight();break;case 40:this._viewarea.moveBwd();break;default:}};x3dom.X3DDocument.prototype.onKeyUp=function(keyCode)
{var stack=null;switch(keyCode){case 13:x3dom.toggleFullScreen();break;case 27:window.history.back();break;case 33:stack=this._scene.getViewpoint()._stack;if(stack){stack.switchTo('next');}
else{x3dom.debug.logError('No valid ViewBindable stack.');}
break;case 34:stack=this._scene.getViewpoint()._stack;if(stack){stack.switchTo('prev');}
else{x3dom.debug.logError('No valid ViewBindable stack.');}
break;case 37:break;case 38:break;case 39:break;case 40:break;default:}};x3dom.X3DDocument.prototype.onKeyPress=function(charCode)
{var nav=this._scene.getNavigationInfo();var env=this._scene.getEnvironment();switch(charCode)
{case 32:var states=this.canvas.parent.stateViewer;if(states){states.display();}
x3dom.debug.logInfo("a: show all | d: show helper buffers | s: small feature culling | t: light view | "+"m: toggle render mode | c: frustum culling | p: intersect type | r: reset view | \n"+"e: examine mode | f: fly mode | y: freefly mode | w: walk mode | h: helicopter mode | "+"l: lookAt mode | o: lookaround | g: game mode | n: turntable | u: upright position | \n"+"v: print viewpoint info | pageUp: next view | pageDown: prev. view | "+"+: increase speed | -: decrease speed ");break;case 43:nav._vf.speed=2*nav._vf.speed;x3dom.debug.logInfo("Changed navigation speed to "+nav._vf.speed);break;case 45:nav._vf.speed=0.5*nav._vf.speed;x3dom.debug.logInfo("Changed navigation speed to "+nav._vf.speed);break;case 51:x3dom.nodeTypes.PopGeometry.ErrorToleranceFactor+=0.5;x3dom.debug.logInfo("Changed POP error tolerance to "+x3dom.nodeTypes.PopGeometry.ErrorToleranceFactor);break;case 52:x3dom.nodeTypes.PopGeometry.ErrorToleranceFactor-=0.5;x3dom.debug.logInfo("Changed POP error tolerance to "+x3dom.nodeTypes.PopGeometry.ErrorToleranceFactor);break;case 54:nav._vf.typeParams[1]+=1.0;nav._heliUpdated=false;x3dom.debug.logInfo("Changed helicopter height to "+nav._vf.typeParams[1]);break;case 55:nav._vf.typeParams[1]-=1.0;nav._heliUpdated=false;x3dom.debug.logInfo("Changed helicopter height to "+nav._vf.typeParams[1]);break;case 56:nav._vf.typeParams[0]-=0.02;nav._heliUpdated=false;x3dom.debug.logInfo("Changed helicopter angle to "+nav._vf.typeParams[0]);break;case 57:nav._vf.typeParams[0]+=0.02;nav._heliUpdated=false;x3dom.debug.logInfo("Changed helicopter angle to "+nav._vf.typeParams[0]);break;case 97:this._viewarea.showAll();break;case 99:env._vf.frustumCulling=!env._vf.frustumCulling;x3dom.debug.logInfo("Viewfrustum culling "+(env._vf.frustumCulling?"on":"off"));break;case 100:if(this._viewarea._visDbgBuf===undefined){this._viewarea._visDbgBuf=(this._x3dElem.getAttribute("showLog")==='true');}
this._viewarea._visDbgBuf=!this._viewarea._visDbgBuf;x3dom.debug.logContainer.style.display=(this._viewarea._visDbgBuf==true)?"block":"none";break;case 101:nav.setType("examine",this._viewarea);break;case 102:nav.setType("fly",this._viewarea);break;case 103:nav.setType("game",this._viewarea);break;case 104:nav.setType("helicopter",this._viewarea);break;case 105:this._viewarea.fit(this._scene._lastMin,this._scene._lastMax);break;case 108:nav.setType("lookat",this._viewarea);break;case 109:this._viewarea._points=++this._viewarea._points%3;break;case 110:nav.setType("turntable",this._viewarea);break;case 111:nav.setType("lookaround",this._viewarea);break;case 112:switch(this._scene._vf.pickMode.toLowerCase())
{case"idbuf":this._scene._vf.pickMode="color";break;case"color":this._scene._vf.pickMode="texCoord";break;case"texcoord":this._scene._vf.pickMode="box";break;default:this._scene._vf.pickMode="idBuf";break;}
x3dom.debug.logInfo("Switch pickMode to '"+this._scene._vf.pickMode+"'.");break;case 114:this._viewarea.resetView();break;case 115:env._vf.smallFeatureCulling=!env._vf.smallFeatureCulling;x3dom.debug.logInfo("Small feature culling "+(env._vf.smallFeatureCulling?"on":"off"));break;case 116:if(this._nodeBag.lights.length>0){this._viewarea.animateTo(this._viewarea.getLightMatrix()[0],this._scene.getViewpoint());}
break;case 117:this._viewarea.uprightView();break;case 118:var that=this;(function(){var viewpoint=that._viewarea._scene.getViewpoint();var mat_view=that._viewarea.getViewMatrix().inverse();var rotation=new x3dom.fields.Quaternion(0,0,1,0);rotation.setValue(mat_view);var rot=rotation.toAxisAngle();var translation=mat_view.e3();x3dom.debug.logInfo('\n&lt;Viewpoint position="'+translation.x.toFixed(5)+' '
+translation.y.toFixed(5)+' '+translation.z.toFixed(5)+'" '+'orientation="'+rot[0].x.toFixed(5)+' '+rot[0].y.toFixed(5)+' '
+rot[0].z.toFixed(5)+' '+rot[1].toFixed(5)+'" \n\t'+'zNear="'+viewpoint.getNear().toFixed(5)+'" '+'zFar="'+viewpoint.getFar().toFixed(5)+'" '+'description="'+viewpoint._vf.description+'"&gt;'+'&lt;/Viewpoint&gt;');})();break;case 119:nav.setType("walk",this._viewarea);break;case 121:nav.setType("freefly",this._viewarea);break;default:}};x3dom.X3DDocument.prototype.shutdown=function(ctx)
{if(!ctx){return;}
ctx.shutdown(this._viewarea);};x3dom.MatrixMixer=function(beginTime,endTime){if(arguments.length===0){this._beginTime=0;this._endTime=1;}
else{this._beginTime=beginTime;this._endTime=endTime;}
this._beginMat=x3dom.fields.SFMatrix4f.identity();this._beginInvMat=x3dom.fields.SFMatrix4f.identity();this._beginLogMat=x3dom.fields.SFMatrix4f.identity();this._endMat=x3dom.fields.SFMatrix4f.identity();this._endLogMat=x3dom.fields.SFMatrix4f.identity();};x3dom.MatrixMixer.prototype.calcFraction=function(time){var fraction=(time-this._beginTime)/(this._endTime-this._beginTime);return(Math.sin((fraction*Math.PI)-(Math.PI/2))+1)/2.0;};x3dom.MatrixMixer.prototype.setBeginMatrix=function(mat){this._beginMat.setValues(mat);this._beginInvMat=mat.inverse();this._beginLogMat=x3dom.fields.SFMatrix4f.zeroMatrix();};x3dom.MatrixMixer.prototype.setEndMatrix=function(mat){this._endMat.setValues(mat);this._endLogMat=mat.mult(this._beginInvMat).log();this._logDiffMat=this._endLogMat.addScaled(this._beginLogMat,-1);};x3dom.MatrixMixer.prototype.mix=function(time){var mat=null;if(time<=this._beginTime)
{mat=x3dom.fields.SFMatrix4f.copy(this._beginLogMat);}
else
{if(time>=this._endTime)
{mat=x3dom.fields.SFMatrix4f.copy(this._endLogMat);}
else
{var fraction=this.calcFraction(time);mat=this._logDiffMat.multiply(fraction).add(this._beginLogMat);}}
return mat.exp().mult(this._beginMat);};x3dom.InputTypes={NAVIGATION:1,INTERACTION:2};x3dom.Viewarea=function(document,scene){this._doc=document;this._scene=scene;document._nodeBag.viewarea.push(this);this._pickingInfo={pickPos:new x3dom.fields.SFVec3f(0,0,0),pickNorm:new x3dom.fields.SFVec3f(0,0,1),pickObj:null,firstObj:null,lastObj:null,lastClickObj:null,shadowObjectId:-1};this._currentInputType=x3dom.InputTypes.NAVIGATION;this._rotMat=x3dom.fields.SFMatrix4f.identity();this._transMat=x3dom.fields.SFMatrix4f.identity();this._movement=new x3dom.fields.SFVec3f(0,0,0);this._needNavigationMatrixUpdate=true;this._deltaT=0;this._flyMat=null;this._pitch=0;this._yaw=0;this._eyePos=new x3dom.fields.SFVec3f(0,0,0);this._width=400;this._height=300;this._dx=0;this._dy=0;this._lastX=-1;this._lastY=-1;this._pressX=-1;this._pressY=-1;this._lastButton=0;this._points=0;this._numRenderedNodes=0;this._pick=new x3dom.fields.SFVec3f(0,0,0);this._pickNorm=new x3dom.fields.SFVec3f(0,0,1);this._isAnimating=false;this._isMoving=false;this._lastTS=0;this._mixer=new x3dom.MatrixMixer();this.arc=null;};x3dom.Viewarea.prototype.tick=function(timeStamp)
{var needMixAnim=false;var env=this._scene.getEnvironment();if(env._vf.enableARC&&this.arc==null)
{this.arc=new x3dom.arc.AdaptiveRenderControl(this._scene);}
if(this._mixer._beginTime>0)
{needMixAnim=true;if(timeStamp>=this._mixer._beginTime)
{if(timeStamp<=this._mixer._endTime)
{var mat=this._mixer.mix(timeStamp);this._scene.getViewpoint().setView(mat);}
else{this._mixer._beginTime=0;this._mixer._endTime=0;this._scene.getViewpoint().setView(this._mixer._endMat);}}
else{this._mixer._beginTime=0;this._mixer._endTime=0;this._scene.getViewpoint().setView(this._mixer._beginMat);}}
var needNavAnim=this.navigateTo(timeStamp);var lastIsAnimating=this._isAnimating;this._lastTS=timeStamp;this._isAnimating=(needMixAnim||needNavAnim);if(this.arc!=null)
{this.arc.update(this.isMovingOrAnimating()?1:0,this._doc._x3dElem.runtime.getFPS());}
return(this._isAnimating||lastIsAnimating);};x3dom.Viewarea.prototype.isMoving=function()
{return this._isMoving;};x3dom.Viewarea.prototype.isAnimating=function()
{return this._isAnimating;};x3dom.Viewarea.prototype.isMovingOrAnimating=function()
{return(this._isMoving||this._isAnimating);};x3dom.Viewarea.prototype.navigateTo=function(timeStamp)
{var navi=this._scene.getNavigationInfo();var navType=navi.getType();var savedPickingInfo=null;var needNavAnim=(this._currentInputType==x3dom.InputTypes.NAVIGATION)&&(navType==="game"||(this._lastButton>0&&(navType.indexOf("fly")>=0||navType==="walk"||navType==="helicopter"||navType.substr(0,5)==="looka")));this._deltaT=timeStamp-this._lastTS;var removeZeroMargin=function(val,offset){if(val>0){if(val<=offset){return 0;}else{return val-offset;}}else if(val<=0){if(val>=-offset){return 0;}else{return val+offset;}}};var humanizeDiff=function(scale,diff){return((diff<0)?-1:1)*Math.pow(scale*Math.abs(diff),1.65);};if(needNavAnim)
{if(this._pickingInfo.pickObj!==null){savedPickingInfo={pickPos:this._pickingInfo.pickPos,pickNorm:this._pickingInfo.pickNorm,pickObj:this._pickingInfo.pickObj,firstObj:this._pickingInfo.firstObj,lastObj:this._pickingInfo.lastObj,lastClickObj:this._pickingInfo.lastClickObj,shadowObjectId:this._pickingInfo.shadowObjectId};}
var avatarRadius=0.25;var avatarHeight=1.6;var avatarKnee=0.75;if(navi._vf.avatarSize.length>2){avatarRadius=navi._vf.avatarSize[0];avatarHeight=navi._vf.avatarSize[1];avatarKnee=navi._vf.avatarSize[2];}
var currViewMat=this.getViewMatrix();var dist=0;var screenSize=Math.min(this._width,this._height);var rdeltaX=removeZeroMargin((this._pressX-this._lastX)/screenSize,0.01);var rdeltaY=removeZeroMargin((this._pressY-this._lastY)/screenSize,0.01);var userXdiff=humanizeDiff(1,rdeltaX);var userYdiff=humanizeDiff(1,rdeltaY);var step=(this._lastButton&2)?-1:1;step*=(this._deltaT*navi._vf.speed);var userXstep=this._deltaT*navi._vf.speed*userXdiff;var userYstep=this._deltaT*navi._vf.speed*userYdiff;var phi=Math.PI*this._deltaT*userXdiff;var theta=Math.PI*this._deltaT*userYdiff;if(this._needNavigationMatrixUpdate===true)
{this._needNavigationMatrixUpdate=false;this._rotMat=x3dom.fields.SFMatrix4f.identity();this._transMat=x3dom.fields.SFMatrix4f.identity();this._movement=new x3dom.fields.SFVec3f(0,0,0);var angleX=0;var angleY=Math.asin(currViewMat._02);var C=Math.cos(angleY);if(Math.abs(C)>0.0001){angleX=Math.atan2(-currViewMat._12/C,currViewMat._22/C);}
this._flyMat=currViewMat.inverse();this._from=this._flyMat.e3();this._at=this._from.subtract(this._flyMat.e2());if(navType==="helicopter")
this._at.y=this._from.y;if(navType.substr(0,5)==="looka")
{this._up=this._flyMat.e1();}
else
{if(typeof this._up=='undefined')
{this._up=this._flyMat.e1();}}
this._pitch=angleX*180/Math.PI;this._yaw=angleY*180/Math.PI;this._eyePos=this._from.negate();}
var tmpAt=null,tmpUp=null,tmpMat=null;var q,temp,fin;var lv,sv,up;if(navType==="game")
{this._pitch+=this._dy;this._yaw+=this._dx;if(this._pitch>=89)this._pitch=89;if(this._pitch<=-89)this._pitch=-89;if(this._yaw>=360)this._yaw-=360;if(this._yaw<0)this._yaw=360+this._yaw;this._dx=0;this._dy=0;var xMat=x3dom.fields.SFMatrix4f.rotationX(this._pitch/180*Math.PI);var yMat=x3dom.fields.SFMatrix4f.rotationY(this._yaw/180*Math.PI);var fPos=x3dom.fields.SFMatrix4f.translation(this._eyePos);this._flyMat=xMat.mult(yMat).mult(fPos);var flyMat=this._flyMat.inverse();var tmpFrom=flyMat.e3();tmpUp=new x3dom.fields.SFVec3f(0,-1,0);tmpAt=tmpFrom.add(tmpUp);tmpUp=flyMat.e0().cross(tmpUp).normalize();tmpMat=x3dom.fields.SFMatrix4f.lookAt(tmpFrom,tmpAt,tmpUp);tmpMat=tmpMat.inverse();this._scene._nameSpace.doc.ctx.pickValue(this,this._width/2,this._height/2,this._lastButton,tmpMat,this.getProjectionMatrix().mult(tmpMat));if(this._pickingInfo.pickObj)
{dist=this._pickingInfo.pickPos.subtract(tmpFrom).length();tmpFrom.y+=(avatarHeight-dist);flyMat.setTranslate(tmpFrom);this._eyePos=flyMat.e3().negate();this._flyMat=flyMat.inverse();this._pickingInfo.pickObj=null;}
this._scene.getViewpoint().setView(this._flyMat);return needNavAnim;}
else if(navType==="helicopter"){var typeParams=navi.getTypeParams();if(this._lastButton&2)
{var stepUp=200*userYstep;typeParams[1]+=stepUp;navi.setTypeParams(typeParams);}
if(this._lastButton&1){step=300*userYstep;}
else{step=0;}
theta=typeParams[0];this._from.y=typeParams[1];this._at.y=this._from.y;q=x3dom.fields.Quaternion.axisAngle(this._up,phi);temp=q.toMatrix();fin=x3dom.fields.SFMatrix4f.translation(this._from);fin=fin.mult(temp);temp=x3dom.fields.SFMatrix4f.translation(this._from.negate());fin=fin.mult(temp);this._at=fin.multMatrixPnt(this._at);lv=this._at.subtract(this._from).normalize();sv=lv.cross(this._up).normalize();up=sv.cross(lv).normalize();lv=lv.multiply(step);this._from=this._from.add(lv);this._at=this._at.add(lv);q=x3dom.fields.Quaternion.axisAngle(sv,theta);temp=q.toMatrix();fin=x3dom.fields.SFMatrix4f.translation(this._from);fin=fin.mult(temp);temp=x3dom.fields.SFMatrix4f.translation(this._from.negate());fin=fin.mult(temp);var at=fin.multMatrixPnt(this._at);this._flyMat=x3dom.fields.SFMatrix4f.lookAt(this._from,at,up);this._scene.getViewpoint().setView(this._flyMat.inverse());return needNavAnim;}
q=x3dom.fields.Quaternion.axisAngle(this._up,phi);temp=q.toMatrix();fin=x3dom.fields.SFMatrix4f.translation(this._from);fin=fin.mult(temp);temp=x3dom.fields.SFMatrix4f.translation(this._from.negate());fin=fin.mult(temp);this._at=fin.multMatrixPnt(this._at);lv=this._at.subtract(this._from).normalize();sv=lv.cross(this._up).normalize();up=sv.cross(lv).normalize();q=x3dom.fields.Quaternion.axisAngle(sv,theta);temp=q.toMatrix();fin=x3dom.fields.SFMatrix4f.translation(this._from);fin=fin.mult(temp);temp=x3dom.fields.SFMatrix4f.translation(this._from.negate());fin=fin.mult(temp);this._at=fin.multMatrixPnt(this._at);if(navType.substr(0,5)!=="looka")
{var currProjMat=this.getProjectionMatrix();if(navType!=="freefly"){if(step<0){tmpMat=new x3dom.fields.SFMatrix4f();tmpMat.setValue(this._last_mat_view.e0(),this._last_mat_view.e1(),this._last_mat_view.e2().negate(),this._last_mat_view.e3());this._scene._nameSpace.doc.ctx.pickValue(this,this._width/2,this._height/2,this._lastButton,tmpMat,currProjMat.mult(tmpMat));}
else{this._scene._nameSpace.doc.ctx.pickValue(this,this._width/2,this._height/2,this._lastButton);}
if(this._pickingInfo.pickObj)
{dist=this._pickingInfo.pickPos.subtract(this._from).length();if(dist<=avatarRadius){step=0;}}}
lv=this._at.subtract(this._from).normalize().multiply(step);this._at=this._at.add(lv);this._from=this._from.add(lv);if(navType==="walk")
{tmpAt=this._from.addScaled(up,-1.0);tmpUp=sv.cross(up.negate()).normalize();tmpMat=x3dom.fields.SFMatrix4f.lookAt(this._from,tmpAt,tmpUp);tmpMat=tmpMat.inverse();this._scene._nameSpace.doc.ctx.pickValue(this,this._width/2,this._height/2,this._lastButton,tmpMat,currProjMat.mult(tmpMat));if(this._pickingInfo.pickObj)
{dist=this._pickingInfo.pickPos.subtract(this._from).length();this._at=this._at.add(up.multiply(avatarHeight-dist));this._from=this._from.add(up.multiply(avatarHeight-dist));}}
this._pickingInfo.pickObj=null;}
this._flyMat=x3dom.fields.SFMatrix4f.lookAt(this._from,this._at,up);this._scene.getViewpoint().setView(this._flyMat.inverse());if(savedPickingInfo!==null){this._pickingInfo=savedPickingInfo;}}
return needNavAnim;};x3dom.Viewarea.prototype.moveFwd=function()
{var navi=this._scene.getNavigationInfo();if(navi.getType()==="game")
{var avatarRadius=0.25;var avatarHeight=1.6;if(navi._vf.avatarSize.length>2){avatarRadius=navi._vf.avatarSize[0];avatarHeight=navi._vf.avatarSize[1];}
var speed=5*this._deltaT*navi._vf.speed;var yRotRad=(this._yaw/180*Math.PI);var xRotRad=(this._pitch/180*Math.PI);var dist=0;var fMat=this._flyMat.inverse();this._scene._nameSpace.doc.ctx.pickValue(this,this._width/2,this._height/2,this._lastButton);if(this._pickingInfo.pickObj)
{dist=this._pickingInfo.pickPos.subtract(fMat.e3()).length();if(dist<=2*avatarRadius){}
else{this._eyePos.x-=Math.sin(yRotRad)*speed;this._eyePos.z+=Math.cos(yRotRad)*speed;this._eyePos.y+=Math.sin(xRotRad)*speed;}}}};x3dom.Viewarea.prototype.moveBwd=function()
{var navi=this._scene.getNavigationInfo();if(navi.getType()==="game")
{var speed=5*this._deltaT*navi._vf.speed;var yRotRad=(this._yaw/180*Math.PI);var xRotRad=(this._pitch/180*Math.PI);this._eyePos.x+=Math.sin(yRotRad)*speed;this._eyePos.z-=Math.cos(yRotRad)*speed;this._eyePos.y-=Math.sin(xRotRad)*speed;}};x3dom.Viewarea.prototype.strafeRight=function()
{var navi=this._scene.getNavigationInfo();if(navi.getType()==="game")
{var speed=5*this._deltaT*navi._vf.speed;var yRotRad=(this._yaw/180*Math.PI);this._eyePos.x-=Math.cos(yRotRad)*speed;this._eyePos.z-=Math.sin(yRotRad)*speed;}};x3dom.Viewarea.prototype.strafeLeft=function()
{var navi=this._scene.getNavigationInfo();if(navi.getType()==="game")
{var speed=5*this._deltaT*navi._vf.speed;var yRotRad=(this._yaw/180*Math.PI);this._eyePos.x+=Math.cos(yRotRad)*speed;this._eyePos.z+=Math.sin(yRotRad)*speed;}};x3dom.Viewarea.prototype.animateTo=function(target,prev,dur)
{var navi=this._scene.getNavigationInfo();if(x3dom.isa(target,x3dom.nodeTypes.X3DViewpointNode)){target=target.getViewMatrix().mult(target.getCurrentTransform().inverse());}
if(navi._vf.transitionType[0].toLowerCase()!=="teleport"&&navi.getType()!=="game")
{if(prev&&x3dom.isa(prev,x3dom.nodeTypes.X3DViewpointNode)){prev=prev.getViewMatrix().mult(prev.getCurrentTransform().inverse()).mult(this._transMat).mult(this._rotMat);this._mixer._beginTime=this._lastTS;if(arguments.length>=3){this._mixer._endTime=this._lastTS+dur;}
else{this._mixer._endTime=this._lastTS+navi._vf.transitionTime;}
this._mixer.setBeginMatrix(prev);this._mixer.setEndMatrix(target);this._scene.getViewpoint().setView(prev);}
else{this._scene.getViewpoint().setView(target);}}
else
{this._scene.getViewpoint().setView(target);}
this._rotMat=x3dom.fields.SFMatrix4f.identity();this._transMat=x3dom.fields.SFMatrix4f.identity();this._movement=new x3dom.fields.SFVec3f(0,0,0);this._needNavigationMatrixUpdate=true;};x3dom.Viewarea.prototype.getLights=function(){var enabledLights=[];for(var i=0;i<this._doc._nodeBag.lights.length;i++)
{if(this._doc._nodeBag.lights[i]._vf.on==true)
{enabledLights.push(this._doc._nodeBag.lights[i]);}}
return enabledLights;};x3dom.Viewarea.prototype.getLightsShadow=function(){var lights=this._doc._nodeBag.lights;for(var l=0;l<lights.length;l++){if(lights[l]._vf.shadowIntensity>0.0){return true;}}
return false;};x3dom.Viewarea.prototype.updateSpecialNavigation=function(viewpoint,mat_viewpoint){var navi=this._scene.getNavigationInfo();var navType=navi.getType();if(navType=="helicopter"&&!navi._heliUpdated)
{var typeParams=navi.getTypeParams();var theta=typeParams[0];var currViewMat=viewpoint.getViewMatrix().mult(mat_viewpoint.inverse()).inverse();this._from=currViewMat.e3();this._at=this._from.subtract(currViewMat.e2());this._up=new x3dom.fields.SFVec3f(0,1,0);this._from.y=typeParams[1];this._at.y=this._from.y;var sv=currViewMat.e0();var q=x3dom.fields.Quaternion.axisAngle(sv,theta);var temp=q.toMatrix();var fin=x3dom.fields.SFMatrix4f.translation(this._from);fin=fin.mult(temp);temp=x3dom.fields.SFMatrix4f.translation(this._from.negate());fin=fin.mult(temp);this._at=fin.multMatrixPnt(this._at);this._flyMat=x3dom.fields.SFMatrix4f.lookAt(this._from,this._at,this._up);this._scene.getViewpoint().setView(this._flyMat.inverse());navi._heliUpdated=true;}};x3dom.Viewarea.prototype.getViewpointMatrix=function()
{var viewpoint=this._scene.getViewpoint();var mat_viewpoint=viewpoint.getCurrentTransform();this.updateSpecialNavigation(viewpoint,mat_viewpoint);return viewpoint.getViewMatrix().mult(mat_viewpoint.inverse());};x3dom.Viewarea.prototype.getViewMatrix=function()
{return this.getViewpointMatrix().mult(this._transMat).mult(this._rotMat);};x3dom.Viewarea.prototype.getLightMatrix=function()
{var lights=this._doc._nodeBag.lights;var i,n=lights.length;if(n>0)
{var vol=this._scene.getVolume();if(vol.isValid())
{var min=x3dom.fields.SFVec3f.MAX();var max=x3dom.fields.SFVec3f.MIN();vol.getBounds(min,max);var l_arr=[];var viewpoint=this._scene.getViewpoint();var fov=viewpoint.getFieldOfView();var dia=max.subtract(min);var dist1=(dia.y/2.0)/Math.tan(fov/2.0)+(dia.z/2.0);var dist2=(dia.x/2.0)/Math.tan(fov/2.0)+(dia.z/2.0);dia=min.add(dia.multiply(0.5));for(i=0;i<n;i++)
{if(x3dom.isa(lights[i],x3dom.nodeTypes.PointLight)){var wcLoc=lights[i].getCurrentTransform().multMatrixPnt(lights[i]._vf.location);dia=dia.subtract(wcLoc).normalize();}
else{var dir=lights[i].getCurrentTransform().multMatrixVec(lights[i]._vf.direction);dir=dir.normalize().negate();dia=dia.add(dir.multiply(1.2*(dist1>dist2?dist1:dist2)));}
l_arr[i]=lights[i].getViewMatrix(dia);}
return l_arr;}}
return[this.getViewMatrix()];};x3dom.Viewarea.prototype.getWCtoLCMatrix=function(lMat)
{var proj=this.getProjectionMatrix();var view;if(arguments.length===0){view=this.getLightMatrix()[0];}
else{view=lMat;}
return proj.mult(view);};x3dom.Viewarea.prototype.getWCtoLCMatricesPointLight=function(view,lightNode,mat_proj)
{var zNear=lightNode._vf.zNear;var zFar=lightNode._vf.zFar;var proj=this.getLightProjectionMatrix(view,zNear,zFar,false,mat_proj);proj._00=1;proj._11=1;var matrices=[];matrices[0]=proj.mult(view);var rotationMatrix;for(var i=1;i<=3;i++){rotationMatrix=x3dom.fields.SFMatrix4f.rotationY(i*Math.PI/2);matrices[i]=proj.mult(rotationMatrix.mult(view));}
rotationMatrix=x3dom.fields.SFMatrix4f.rotationX(Math.PI/2);matrices[4]=proj.mult(rotationMatrix.mult(view));rotationMatrix=x3dom.fields.SFMatrix4f.rotationX(3*Math.PI/2);matrices[5]=proj.mult(rotationMatrix.mult(view));return matrices;};x3dom.Viewarea.prototype.getWCtoLCMatricesCascaded=function(view,lightNode,mat_proj)
{var numCascades=Math.max(1,Math.min(lightNode._vf.shadowCascades,6));var splitFactor=Math.max(0,Math.min(lightNode._vf.shadowSplitFactor,1));var splitOffset=Math.max(0,Math.min(lightNode._vf.shadowSplitOffset,1));var isSpotLight=x3dom.isa(lightNode,x3dom.nodeTypes.SpotLight);var zNear=lightNode._vf.zNear;var zFar=lightNode._vf.zFar;var proj=this.getLightProjectionMatrix(view,zNear,zFar,true,mat_proj);if(isSpotLight){proj._00=1;proj._11=1;}
var viewProj=proj.mult(view);var matrices=[];if(numCascades==1){matrices[0]=viewProj;return matrices;}
var cascadeSplits=this.getShadowSplitDepths(numCascades,splitFactor,splitOffset,true,mat_proj);for(var i=0;i<numCascades;i++){var fittingMat=this.getLightFittingMatrix(viewProj,cascadeSplits[i],cascadeSplits[i+1],mat_proj);matrices[i]=fittingMat.mult(viewProj);}
return matrices;};x3dom.Viewarea.prototype.getLightProjectionMatrix=function(lMat,zNear,zFar,highPrecision,mat_proj)
{var proj=x3dom.fields.SFMatrix4f.copy(mat_proj);if(!highPrecision||zNear>0||zFar>0){var lightPos=lMat.inverse().e3();var nearScale=0.8;var farScale=1.2;var min=x3dom.fields.SFVec3f.copy(this._scene._lastMin);var max=x3dom.fields.SFVec3f.copy(this._scene._lastMax);var dia=max.subtract(min);var sRad=dia.length()/2;var sCenter=min.add(dia.multiply(0.5));var vDist=(lightPos.subtract(sCenter)).length();var near,far;if(sRad){if(vDist>sRad)
near=(vDist-sRad)*nearScale;else
near=1;far=(vDist+sRad)*farScale;}
if(zNear>0)near=zNear;if(zFar>0)far=zFar;proj._22=-(far+near)/(far-near);proj._23=-2.0*far*near/(far-near);return proj;}
else{var cropMatrix=this.getLightCropMatrix(proj.mult(lMat));return cropMatrix.mult(proj);}};x3dom.Viewarea.prototype.getProjectionMatrix=function()
{var viewpoint=this._scene.getViewpoint();return viewpoint.getProjectionMatrix(this._width/this._height);};x3dom.Viewarea.prototype.getViewfrustum=function(clipMat)
{var env=this._scene.getEnvironment();if(env._vf.frustumCulling==true)
{if(arguments.length==0){var proj=this.getProjectionMatrix();var view=this.getViewMatrix();return new x3dom.fields.FrustumVolume(proj.mult(view));}
else{return new x3dom.fields.FrustumVolume(clipMat);}}
return null;};x3dom.Viewarea.prototype.getWCtoCCMatrix=function()
{var view=this.getViewMatrix();var proj=this.getProjectionMatrix();return proj.mult(view);};x3dom.Viewarea.prototype.getCCtoWCMatrix=function()
{var mat=this.getWCtoCCMatrix();return mat.inverse();};x3dom.Viewarea.prototype.calcViewRay=function(x,y,mat)
{var cctowc=mat?mat:this.getCCtoWCMatrix();var rx=x/(this._width-1.0)*2.0-1.0;var ry=(this._height-1.0-y)/(this._height-1.0)*2.0-1.0;var from=cctowc.multFullMatrixPnt(new x3dom.fields.SFVec3f(rx,ry,-1));var at=cctowc.multFullMatrixPnt(new x3dom.fields.SFVec3f(rx,ry,1));var dir=at.subtract(from);return new x3dom.fields.Ray(from,dir);};x3dom.Viewarea.prototype.showAll=function(axis)
{if(axis===undefined)
axis="negZ";var scene=this._scene;scene.updateVolume();var min=x3dom.fields.SFVec3f.copy(scene._lastMin);var max=x3dom.fields.SFVec3f.copy(scene._lastMax);var x="x",y="y",z="z";var sign=1;var to,from=new x3dom.fields.SFVec3f(0,0,-1);switch(axis){case"posX":sign=-1;case"negX":z="x";x="y";y="z";to=new x3dom.fields.SFVec3f(sign,0,0);break;case"posY":sign=-1;case"negY":z="y";x="z";y="x";to=new x3dom.fields.SFVec3f(0,sign,0);break;case"posZ":sign=-1;case"negZ":default:to=new x3dom.fields.SFVec3f(0,0,-sign);break;}
var viewpoint=scene.getViewpoint();var fov=viewpoint.getFieldOfView();var dia=max.subtract(min);var diaz2=dia[z]/2.0,tanfov2=Math.tan(fov/2.0);var dist1=(dia[y]/2.0)/tanfov2+diaz2;var dist2=(dia[x]/2.0)/tanfov2+diaz2;dia=min.add(dia.multiply(0.5));dia[z]+=sign*(dist1>dist2?dist1:dist2)*1.01;var quat=x3dom.fields.Quaternion.rotateFromTo(from,to);var viewmat=quat.toMatrix();viewmat=viewmat.mult(x3dom.fields.SFMatrix4f.translation(dia.negate()));this.animateTo(viewmat,viewpoint);};x3dom.Viewarea.prototype.fit=function(min,max,updateCenterOfRotation)
{if(updateCenterOfRotation===undefined){updateCenterOfRotation=true;}
var dia2=max.subtract(min).multiply(0.5);var center=min.add(dia2);var bsr=dia2.length();var viewpoint=this._scene.getViewpoint();var fov=viewpoint.getFieldOfView();var viewmat=x3dom.fields.SFMatrix4f.copy(this.getViewMatrix());var rightDir=new x3dom.fields.SFVec3f(viewmat._00,viewmat._01,viewmat._02);var upDir=new x3dom.fields.SFVec3f(viewmat._10,viewmat._11,viewmat._12);var viewDir=new x3dom.fields.SFVec3f(viewmat._20,viewmat._21,viewmat._22);var tanfov2=Math.tan(fov/2.0);var dist=bsr/tanfov2;var eyePos=center.add(viewDir.multiply(dist));viewmat._03=-rightDir.dot(eyePos);viewmat._13=-upDir.dot(eyePos);viewmat._23=-viewDir.dot(eyePos);if(updateCenterOfRotation){viewpoint.setCenterOfRotation(center);}
if(x3dom.isa(viewpoint,x3dom.nodeTypes.OrthoViewpoint))
{viewpoint._vf.fieldOfView[0]=-dist;viewpoint._vf.fieldOfView[1]=-dist;viewpoint._vf.fieldOfView[2]=dist;viewpoint._vf.fieldOfView[3]=dist;viewpoint._projMatrix=null;this.animateTo(viewmat,viewpoint,0);}
else
{this.animateTo(viewmat,viewpoint);}};x3dom.Viewarea.prototype.resetView=function()
{var navi=this._scene.getNavigationInfo();if(navi._vf.transitionType[0].toLowerCase()!=="teleport"&&navi.getType()!=="game")
{this._mixer._beginTime=this._lastTS;this._mixer._endTime=this._lastTS+navi._vf.transitionTime;this._mixer.setBeginMatrix(this.getViewMatrix());var target=this._scene.getViewpoint();target.resetView();target=target.getViewMatrix().mult(target.getCurrentTransform().inverse());this._mixer.setEndMatrix(target);}
else
{this._scene.getViewpoint().resetView();}
this.resetNavHelpers();navi._heliUpdated=false;};x3dom.Viewarea.prototype.resetNavHelpers=function()
{this._rotMat=x3dom.fields.SFMatrix4f.identity();this._transMat=x3dom.fields.SFMatrix4f.identity();this._movement=new x3dom.fields.SFVec3f(0,0,0);this._needNavigationMatrixUpdate=true;};x3dom.Viewarea.prototype.uprightView=function()
{var mat=this.getViewMatrix().inverse();var from=mat.e3();var at=from.subtract(mat.e2());var up=new x3dom.fields.SFVec3f(0,1,0);var s=mat.e2().cross(up).normalize();var v=s.cross(up).normalize();at=from.add(v);mat=x3dom.fields.SFMatrix4f.lookAt(from,at,up);mat=mat.inverse();this.animateTo(mat,this._scene.getViewpoint());};x3dom.Viewarea.prototype.callEvtHandler=function(node,eventType,event)
{if(!node||!node._xmlNode)
return null;try{var attrib=node._xmlNode[eventType];if(typeof(attrib)==="function"){attrib.call(node._xmlNode,event);}
else{var funcStr=node._xmlNode.getAttribute(eventType);var func=new Function('event',funcStr);func.call(node._xmlNode,event);}
var list=node._listeners[event.type];if(list){for(var it=0;it<list.length;it++){list[it].call(node._xmlNode,event);}}}
catch(e){x3dom.debug.logException(e);}
return event.cancelBubble;};x3dom.Viewarea.prototype.checkEvents=function(obj,x,y,buttonState,eventType)
{var that=this;var needRecurse=true;var childNode;var i,n;var target=(obj&&obj._xmlNode)?obj._xmlNode:{};var affectedPointingSensorsList=this._doc._nodeBag.affectedPointingSensors;var event={viewarea:that,target:target,type:eventType.substr(2,eventType.length-2),button:buttonState,layerX:x,layerY:y,worldX:that._pick.x,worldY:that._pick.y,worldZ:that._pick.z,normalX:that._pickNorm.x,normalY:that._pickNorm.y,normalZ:that._pickNorm.z,hitPnt:that._pick.toGL(),hitObject:target,shadowObjectId:that._pickingInfo.shadowObjectId,cancelBubble:false,stopPropagation:function(){this.cancelBubble=true;},preventDefault:function(){this.cancelBubble=true;}};try{var anObj=obj;if(anObj&&anObj._xmlNode&&anObj._cf.geometry&&!anObj._xmlNode[eventType]&&!anObj._xmlNode.hasAttribute(eventType)&&!anObj._listeners[event.type]){anObj=anObj._cf.geometry.node;}
if(anObj&&that.callEvtHandler(anObj,eventType,event)===true){needRecurse=false;}}
catch(e){x3dom.debug.logException(e);}
var recurse=function(obj){Array.forEach(obj._parentNodes,function(node){if(node._xmlNode&&(node._xmlNode[eventType]||node._xmlNode.hasAttribute(eventType)||node._listeners[event.type]))
{if(that.callEvtHandler(node,eventType,event)===true){needRecurse=false;}}
if(buttonState==0&&affectedPointingSensorsList.length==0&&(eventType=='onmousemove'||eventType=='onmouseover'||eventType=='onmouseout'))
{n=node._childNodes.length;for(i=0;i<n;++i)
{childNode=node._childNodes[i];if(x3dom.isa(childNode,x3dom.nodeTypes.X3DPointingDeviceSensorNode)&&childNode._vf.enabled)
{affectedPointingSensorsList.push(childNode);}}}
if(x3dom.isa(node,x3dom.nodeTypes.Anchor)&&eventType==='onclick'){node.handleTouch();needRecurse=false;}
else if(needRecurse){recurse(node);}});};if(needRecurse&&obj){recurse(obj);}
return needRecurse;};x3dom.Viewarea.prototype._notifyAffectedPointingSensors=function(event)
{var funcDict={"mousedown":"pointerPressedOverSibling","mousemove":"pointerMoved","mouseover":"pointerMovedOver","mouseout":"pointerMovedOut"};var func=funcDict[event.type];var affectedPointingSensorsList=this._doc._nodeBag.affectedPointingSensors;var i,n=affectedPointingSensorsList.length;if(n>0&&func!==undefined)
{for(i=0;i<n;i++)
affectedPointingSensorsList[i][func](event);}};x3dom.Viewarea.prototype.initMouseState=function()
{this._deltaT=0;this._dx=0;this._dy=0;this._lastX=-1;this._lastY=-1;this._pressX=-1;this._pressY=-1;this._lastButton=0;this._isMoving=false;this._needNavigationMatrixUpdate=true;};x3dom.Viewarea.prototype.initTurnTable=function(navi,flyTo)
{flyTo=(flyTo==undefined)?true:flyTo;var currViewMat=this.getViewMatrix();var viewpoint=this._scene.getViewpoint();var center=x3dom.fields.SFVec3f.copy(viewpoint.getCenterOfRotation());this._flyMat=currViewMat.inverse();this._from=this._flyMat.e3();this._at=center;this._up=this._flyMat.e1();this._flyMat=x3dom.fields.SFMatrix4f.lookAt(this._from,this._at,this._up);this._flyMat=this.calcOrbit(0,0,navi);var dur=0.0;if(flyTo){dur=0.2/navi._vf.speed;}
this.animateTo(this._flyMat.inverse(),viewpoint,dur);this.resetNavHelpers();};x3dom.Viewarea.prototype.onMousePress=function(x,y,buttonState)
{this._needNavigationMatrixUpdate=true;this.prepareEvents(x,y,buttonState,"onmousedown");this._pickingInfo.lastClickObj=this._pickingInfo.pickObj;this._pickingInfo.firstObj=this._pickingInfo.pickObj;this._dx=0;this._dy=0;this._lastX=x;this._lastY=y;this._pressX=x;this._pressY=y;this._lastButton=buttonState;this._isMoving=false;if(this._currentInputType==x3dom.InputTypes.NAVIGATION)
{var navi=this._scene.getNavigationInfo();if(navi.getType()==="turntable"){this.initTurnTable(navi,false);}}};x3dom.Viewarea.prototype.onMouseRelease=function(x,y,buttonState,prevButton)
{var i;var affectedPointingSensorsList=this._doc._nodeBag.affectedPointingSensors;for(i=0;i<affectedPointingSensorsList.length;++i)
{affectedPointingSensorsList[i].pointerReleased();}
this._doc._nodeBag.affectedPointingSensors=[];var tDist=3.0;var dir;var navi=this._scene.getNavigationInfo();var navType=navi.getType();if(this._scene._vf.pickMode.toLowerCase()!=="box"){this.prepareEvents(x,y,prevButton,"onmouseup");if(this._pickingInfo.pickObj&&this._pickingInfo.pickObj===this._pickingInfo.lastClickObj)
{this.prepareEvents(x,y,prevButton,"onclick");}
else if(!this._pickingInfo.pickObj&&!this._pickingInfo.lastClickObj&&!this._pickingInfo.firstObj)
{var eventType="backgroundClicked";try{if(this._scene._xmlNode&&(this._scene._xmlNode["on"+eventType]||this._scene._xmlNode.hasAttribute("on"+eventType)||this._scene._listeners[eventType])){var event={target:this._scene._xmlNode,type:eventType,button:prevButton,layerX:x,layerY:y,cancelBubble:false,stopPropagation:function(){this.cancelBubble=true;},preventDefault:function(){this.cancelBubble=true;}};this._scene.callEvtHandler(("on"+eventType),event);}}
catch(e){x3dom.debug.logException("backgroundClicked: "+e);}}}
else{var t0=new Date().getTime();var line=this.calcViewRay(x,y);var isect=this._scene.doIntersect(line);var obj=line.hitObject;if(isect&&obj)
{this._pick.setValues(line.hitPoint);this.checkEvents(obj,x,y,buttonState,"onclick");x3dom.debug.logInfo("Hit '"+obj._xmlNode.localName+"/ "+
obj._DEF+"' at dist="+line.dist.toFixed(4));x3dom.debug.logInfo("Ray hit at position "+this._pick);}
var t1=new Date().getTime()-t0;x3dom.debug.logInfo("Picking time (box): "+t1+"ms");if(!isect){dir=this.getViewMatrix().e2().negate();var u=dir.dot(line.pos.negate())/dir.dot(line.dir);this._pick=line.pos.add(line.dir.multiply(u));}}
this._pickingInfo.firstObj=null;if(this._currentInputType==x3dom.InputTypes.NAVIGATION&&(this._pickingInfo.pickObj||this._pickingInfo.shadowObjectId>=0)&&navType==="lookat"&&this._pressX===x&&this._pressY===y)
{var step=(this._lastButton&2)?-1:1;var dist=this._pickingInfo.pickPos.subtract(this._from).length()/tDist;var laMat=new x3dom.fields.SFMatrix4f();laMat.setValues(this.getViewMatrix());laMat=laMat.inverse();var from=laMat.e3();var at=from.subtract(laMat.e2());var up=laMat.e1();dir=this._pickingInfo.pickPos.subtract(from);var len=dir.length();dir=dir.normalize();var newAt=from.addScaled(dir,len);var s=dir.cross(up).normalize();dir=s.cross(up).normalize();if(step<0){dist=(0.5+len+dist)*2;}
var newFrom=newAt.addScaled(dir,dist);laMat=x3dom.fields.SFMatrix4f.lookAt(newFrom,newAt,up);laMat=laMat.inverse();dist=newFrom.subtract(from).length();var dur=Math.max(0.5,Math.log((1+dist)/navi._vf.speed));this.animateTo(laMat,this._scene.getViewpoint(),dur);}
this._dx=0;this._dy=0;this._lastX=x;this._lastY=y;this._lastButton=buttonState;this._isMoving=false;};x3dom.Viewarea.prototype.onMouseOver=function(x,y,buttonState)
{this._dx=0;this._dy=0;this._lastButton=0;this._isMoving=false;this._lastX=x;this._lastY=y;this._deltaT=0;};x3dom.Viewarea.prototype.onMouseOut=function(x,y,buttonState)
{this._dx=0;this._dy=0;this._lastButton=0;this._isMoving=false;this._lastX=x;this._lastY=y;this._deltaT=0;var i;var affectedPointingSensorsList=this._doc._nodeBag.affectedPointingSensors;for(i=0;i<affectedPointingSensorsList.length;++i)
{affectedPointingSensorsList[i].pointerReleased();}
this._doc._nodeBag.affectedPointingSensors=[];};x3dom.Viewarea.prototype.onDoubleClick=function(x,y)
{if(this._doc._x3dElem.hasAttribute('disableDoubleClick')&&this._doc._x3dElem.getAttribute('disableDoubleClick')==='true'){return;}
var navi=this._scene.getNavigationInfo();if(navi.getType()=="none"){return;}
var pickMode=this._scene._vf.pickMode.toLowerCase();if((pickMode=="color"||pickMode=="texcoord")){return;}
var viewpoint=this._scene.getViewpoint();viewpoint.setCenterOfRotation(this._pick);x3dom.debug.logInfo("New center of Rotation:  "+this._pick);var mat=this.getViewMatrix().inverse();var from=mat.e3();var at=this._pick;var up=mat.e1();var norm=mat.e0().cross(up).normalize();var dist=norm.dot(this._pick.subtract(from));from=at.addScaled(norm,-dist);mat=x3dom.fields.SFMatrix4f.lookAt(from,at,up);x3dom.debug.logInfo("New camera position:  "+from);this.animateTo(mat.inverse(),viewpoint);};x3dom.Viewarea.prototype.handleMoveEvt=function(x,y,buttonState)
{if(buttonState==0)
{this._doc._nodeBag.affectedPointingSensors=[];}
this.prepareEvents(x,y,buttonState,"onmousemove");if(this._pickingInfo.pickObj!==this._pickingInfo.lastObj)
{if(this._pickingInfo.lastObj){var obj=this._pickingInfo.pickObj;this._pickingInfo.pickObj=this._pickingInfo.lastObj;this.prepareEvents(x,y,buttonState,"onmouseout");this._pickingInfo.pickObj=obj;}
if(this._pickingInfo.pickObj){this.prepareEvents(x,y,buttonState,"onmouseover");}
this._pickingInfo.lastObj=this._pickingInfo.pickObj;}};x3dom.Viewarea.prototype.onMove=function(x,y,buttonState)
{this.handleMoveEvt(x,y,buttonState);if(this._lastX<0||this._lastY<0){this._lastX=x;this._lastY=y;}
this._dx=x-this._lastX;this._dy=y-this._lastY;this._lastX=x;this._lastY=y;};x3dom.Viewarea.prototype.onMoveView=function(translation,rotation)
{if(this._currentInputType==x3dom.InputTypes.NAVIGATION)
{var navi=this._scene.getNavigationInfo();var viewpoint=this._scene.getViewpoint();if(navi.getType()==="examine")
{if(translation)
{var distance=(this._scene._lastMax.subtract(this._scene._lastMin)).length();distance=((distance<x3dom.fields.Eps)?1:distance)*navi._vf.speed;translation=translation.multiply(distance);this._movement=this._movement.add(translation);this._transMat=viewpoint.getViewMatrix().inverse().mult(x3dom.fields.SFMatrix4f.translation(this._movement)).mult(viewpoint.getViewMatrix());}
if(rotation)
{var center=viewpoint.getCenterOfRotation();var mat=this.getViewMatrix();mat.setTranslate(new x3dom.fields.SFVec3f(0,0,0));this._rotMat=this._rotMat.mult(x3dom.fields.SFMatrix4f.translation(center)).mult(mat.inverse()).mult(rotation).mult(mat).mult(x3dom.fields.SFMatrix4f.translation(center.negate()));}
this._isMoving=true;}}};x3dom.Viewarea.prototype.onDrag=function(x,y,buttonState)
{this.handleMoveEvt(x,y,buttonState);if(this._currentInputType==x3dom.InputTypes.NAVIGATION)
{var navi=this._scene.getNavigationInfo();var navType=navi.getType();var navRestrict=navi.getExplorationMode();if(navType==="none"||navRestrict==0){return;}
var viewpoint=this._scene.getViewpoint();var dx=x-this._lastX;var dy=y-this._lastY;var d,vec,cor,mat=null;var alpha,beta;buttonState=(!navRestrict||(navRestrict!=7&&buttonState==1))?navRestrict:buttonState;if(navType==="examine")
{if(buttonState&1)
{alpha=(dy*2*Math.PI)/this._width;beta=(dx*2*Math.PI)/this._height;mat=this.getViewMatrix();var mx=x3dom.fields.SFMatrix4f.rotationX(alpha);var my=x3dom.fields.SFMatrix4f.rotationY(beta);var center=viewpoint.getCenterOfRotation();mat.setTranslate(new x3dom.fields.SFVec3f(0,0,0));this._rotMat=this._rotMat.mult(x3dom.fields.SFMatrix4f.translation(center)).mult(mat.inverse()).mult(mx).mult(my).mult(mat).mult(x3dom.fields.SFMatrix4f.translation(center.negate()));}
if(buttonState&4)
{d=(this._scene._lastMax.subtract(this._scene._lastMin)).length();d=((d<x3dom.fields.Eps)?1:d)*navi._vf.speed;vec=new x3dom.fields.SFVec3f(d*dx/this._width,d*(-dy)/this._height,0);this._movement=this._movement.add(vec);mat=this.getViewpointMatrix().mult(this._transMat);this._transMat=mat.inverse().mult(x3dom.fields.SFMatrix4f.translation(this._movement)).mult(mat);}
if(buttonState&2)
{d=(this._scene._lastMax.subtract(this._scene._lastMin)).length();d=((d<x3dom.fields.Eps)?1:d)*navi._vf.speed;vec=new x3dom.fields.SFVec3f(0,0,d*(dx+dy)/this._height);if(x3dom.isa(viewpoint,x3dom.nodeTypes.OrthoViewpoint))
{viewpoint._vf.fieldOfView[0]+=vec.z;viewpoint._vf.fieldOfView[1]+=vec.z;viewpoint._vf.fieldOfView[2]-=vec.z;viewpoint._vf.fieldOfView[3]-=vec.z;viewpoint._projMatrix=null;}
else
{this._movement=this._movement.add(vec);mat=this.getViewpointMatrix().mult(this._transMat);this._transMat=mat.inverse().mult(x3dom.fields.SFMatrix4f.translation(this._movement)).mult(mat);}}
this._isMoving=true;}
else if(navType==="turntable")
{if(!this._flyMat)
this.initTurnTable(navi,false);if(buttonState&1)
{alpha=(dy*2*Math.PI)/this._height;beta=(dx*2*Math.PI)/this._width;this._flyMat=this.calcOrbit(alpha,beta,navi);viewpoint.setView(this._flyMat.inverse());}
else if(buttonState&2)
{d=(this._scene._lastMax.subtract(this._scene._lastMin)).length();d=((d<x3dom.fields.Eps)?1:d)*navi._vf.speed;this._up=this._flyMat.e1();this._from=this._flyMat.e3();cor=viewpoint.getCenterOfRotation();var lastDir=cor.subtract(this._from);var lastDirL=lastDir.length();lastDir=lastDir.normalize();var zoomAmount=d*(dx+dy)/this._height;if(navi._vf.typeParams.length>=5&&navi._vf.typeParams[4]>0)
{var newDist=Math.min(zoomAmount,lastDirL-navi._vf.typeParams[4]);this._from=this._from.addScaled(lastDir,newDist);}
else
{var diff=zoomAmount-lastDirL+0.01;if(diff>=0){cor=cor.addScaled(lastDir,diff);viewpoint.setCenterOfRotation(cor);}
this._from=this._from.addScaled(lastDir,zoomAmount);}
this._from=this._from.addScaled(lastDir,zoomAmount);this._flyMat=x3dom.fields.SFMatrix4f.lookAt(this._from,cor,this._up);viewpoint.setView(this._flyMat.inverse());}
else if(buttonState&4)
{d=(this._scene._lastMax.subtract(this._scene._lastMin)).length();d=((d<x3dom.fields.Eps)?1:d)*navi._vf.speed*0.75;var tx=-d*dx/this._width;var ty=d*dy/this._height;this._up=this._flyMat.e1();this._from=this._flyMat.e3();var s=this._flyMat.e0();this._from=this._from.addScaled(this._up,ty);this._from=this._from.addScaled(s,tx);cor=viewpoint.getCenterOfRotation();cor=cor.addScaled(this._up,ty);cor=cor.addScaled(s,tx);viewpoint.setCenterOfRotation(cor);this._flyMat=x3dom.fields.SFMatrix4f.lookAt(this._from,cor,this._up);viewpoint.setView(this._flyMat.inverse());}
this._isMoving=true;}}
this._dx=dx;this._dy=dy;this._lastX=x;this._lastY=y;};x3dom.Viewarea.prototype.calcOrbit=function(alpha,beta,navi)
{this._up=this._flyMat.e1();this._from=this._flyMat.e3();var offset=this._from.subtract(this._at);var phi=Math.atan2(offset.x,offset.z);var theta=Math.atan2(Math.sqrt(offset.x*offset.x+offset.z*offset.z),offset.y);phi-=beta;theta-=alpha;var typeParams=navi.getTypeParams();theta=Math.max(typeParams[2],Math.min(typeParams[3],theta));var radius=offset.length();var rSinPhi=radius*Math.sin(theta);offset.x=rSinPhi*Math.sin(phi);offset.y=radius*Math.cos(theta);offset.z=rSinPhi*Math.cos(phi);offset=this._at.add(offset);theta-=Math.PI/2;var sinPhi=Math.sin(theta);var cosPhi=Math.cos(theta);var up=new x3dom.fields.SFVec3f(sinPhi*Math.sin(phi),cosPhi,sinPhi*Math.cos(phi));if(up.y<0)
up=up.negate();return x3dom.fields.SFMatrix4f.lookAt(offset,this._at,up);};x3dom.Viewarea.prototype.prepareEvents=function(x,y,buttonState,eventType)
{var affectedPointingSensorsList=this._doc._nodeBag.affectedPointingSensors;var pickMode=this._scene._vf.pickMode.toLowerCase();var avoidTraversal=(pickMode.indexOf("idbuf")==0||pickMode=="color"||pickMode=="texcoord");var obj=null;if(avoidTraversal){obj=this._pickingInfo.pickObj;if(obj){this._pick.setValues(this._pickingInfo.pickPos);this._pickNorm.setValues(this._pickingInfo.pickNorm);this.checkEvents(obj,x,y,buttonState,eventType);if(eventType==="onclick"){if(obj._xmlNode)
x3dom.debug.logInfo("Hit \""+obj._xmlNode.localName+"/ "+obj._DEF+"\"");x3dom.debug.logInfo("Ray hit at position "+this._pick);}}}
var event={viewarea:this,target:{},type:eventType.substr(2,eventType.length-2),button:buttonState,layerX:x,layerY:y,worldX:this._pick.x,worldY:this._pick.y,worldZ:this._pick.z,normalX:this._pickNorm.x,normalY:this._pickNorm.y,normalZ:this._pickNorm.z,hitPnt:this._pick.toGL(),hitObject:(obj&&obj._xmlNode)?obj._xmlNode:null,shadowObjectId:this._pickingInfo.shadowObjectId,cancelBubble:false,stopPropagation:function(){this.cancelBubble=true;},preventDefault:function(){this.cancelBubble=true;}};this._notifyAffectedPointingSensors(event);if(affectedPointingSensorsList.length>0)
{this._currentInputType=x3dom.InputTypes.INTERACTION;}
else
{this._currentInputType=x3dom.InputTypes.NAVIGATION;}};x3dom.Viewarea.prototype.getRenderMode=function()
{return this._points;};x3dom.Viewarea.prototype.getShadowedLights=function()
{var shadowedLights=[];var shadowIndex=0;var slights=this.getLights();for(var i=0;i<slights.length;i++){if(slights[i]._vf.shadowIntensity>0.0){shadowedLights[shadowIndex]=slights[i];shadowIndex++;}}
return shadowedLights;};x3dom.Viewarea.prototype.getShadowSplitDepths=function(numCascades,splitFactor,splitOffset,postProject,mat_proj)
{var logSplit;var practSplit=[];var viewPoint=this._scene.getViewpoint();var zNear=viewPoint.getNear();var zFar=viewPoint.getFar();practSplit[0]=zNear;zNear=zNear+splitOffset*(zFar-zNear)/10;for(var i=1;i<numCascades;i++){logSplit=zNear*Math.pow((zFar/zNear),i/numCascades);practSplit[i]=splitFactor*logSplit+(1-splitFactor)*(zNear+i/(numCascades*(zNear-zFar)));}
practSplit[numCascades]=zFar;if(!postProject)
return practSplit;var postProj=[];for(var j=0;j<=numCascades;j++){postProj[j]=mat_proj.multFullMatrixPnt(new x3dom.fields.SFVec3f(0,0,-practSplit[j])).z;}
return postProj;};x3dom.Viewarea.prototype.getLightCropMatrix=function(WCToLCMatrix)
{var sceneMin=x3dom.fields.SFVec3f.copy(this._scene._lastMin);var sceneMax=x3dom.fields.SFVec3f.copy(this._scene._lastMax);var sceneCorners=[];sceneCorners[0]=new x3dom.fields.SFVec3f(sceneMin.x,sceneMin.y,sceneMin.z);sceneCorners[1]=new x3dom.fields.SFVec3f(sceneMin.x,sceneMin.y,sceneMax.z);sceneCorners[2]=new x3dom.fields.SFVec3f(sceneMin.x,sceneMax.y,sceneMin.z);sceneCorners[3]=new x3dom.fields.SFVec3f(sceneMin.x,sceneMax.y,sceneMax.z);sceneCorners[4]=new x3dom.fields.SFVec3f(sceneMax.x,sceneMin.y,sceneMin.z);sceneCorners[5]=new x3dom.fields.SFVec3f(sceneMax.x,sceneMin.y,sceneMax.z);sceneCorners[6]=new x3dom.fields.SFVec3f(sceneMax.x,sceneMax.y,sceneMin.z);sceneCorners[7]=new x3dom.fields.SFVec3f(sceneMax.x,sceneMax.y,sceneMax.z);var i;for(i=0;i<8;i++){sceneCorners[i]=WCToLCMatrix.multFullMatrixPnt(sceneCorners[i]);}
var minScene=x3dom.fields.SFVec3f.copy(sceneCorners[0]);var maxScene=x3dom.fields.SFVec3f.copy(sceneCorners[0]);for(i=1;i<8;i++){minScene.z=Math.min(sceneCorners[i].z,minScene.z);maxScene.z=Math.max(sceneCorners[i].z,maxScene.z);}
var scaleZ=2.0/(maxScene.z-minScene.z);var offsetZ=-(scaleZ*(maxScene.z+minScene.z))/2.0;var cropMatrix=x3dom.fields.SFMatrix4f.identity();cropMatrix._22=scaleZ;cropMatrix._23=offsetZ;return cropMatrix;};x3dom.Viewarea.prototype.getLightFittingMatrix=function(WCToLCMatrix,zNear,zFar,mat_proj)
{var mat_view=this.getViewMatrix();var mat_view_proj=mat_proj.mult(mat_view);var mat_view_proj_inverse=mat_view_proj.inverse();var frustumCorners=[];frustumCorners[0]=new x3dom.fields.SFVec3f(-1,-1,zFar);frustumCorners[1]=new x3dom.fields.SFVec3f(-1,-1,zNear);frustumCorners[2]=new x3dom.fields.SFVec3f(-1,1,zFar);frustumCorners[3]=new x3dom.fields.SFVec3f(-1,1,zNear);frustumCorners[4]=new x3dom.fields.SFVec3f(1,-1,zFar);frustumCorners[5]=new x3dom.fields.SFVec3f(1,-1,zNear);frustumCorners[6]=new x3dom.fields.SFVec3f(1,1,zFar);frustumCorners[7]=new x3dom.fields.SFVec3f(1,1,zNear);var i;for(i=0;i<8;i++){frustumCorners[i]=mat_view_proj_inverse.multFullMatrixPnt(frustumCorners[i]);frustumCorners[i]=WCToLCMatrix.multFullMatrixPnt(frustumCorners[i]);}
var minFrustum=x3dom.fields.SFVec3f.copy(frustumCorners[0]);var maxFrustum=x3dom.fields.SFVec3f.copy(frustumCorners[0]);for(i=1;i<8;i++){minFrustum.x=Math.min(frustumCorners[i].x,minFrustum.x);minFrustum.y=Math.min(frustumCorners[i].y,minFrustum.y);minFrustum.z=Math.min(frustumCorners[i].z,minFrustum.z);maxFrustum.x=Math.max(frustumCorners[i].x,maxFrustum.x);maxFrustum.y=Math.max(frustumCorners[i].y,maxFrustum.y);maxFrustum.z=Math.max(frustumCorners[i].z,maxFrustum.z);}
function clip(min,max)
{var xMin=min.x;var yMin=min.y;var zMin=min.z;var xMax=max.x;var yMax=max.y;var zMax=max.z;if(xMin>1.0||xMax<-1.0){xMin=-1.0;xMax=1.0;}else{xMin=Math.max(xMin,-1.0);xMax=Math.min(xMax,1.0);}
if(yMin>1.0||yMax<-1.0){yMin=-1.0;yMax=1.0;}else{yMin=Math.max(yMin,-1.0);yMax=Math.min(yMax,1.0);}
if(zMin>1.0||zMax<-1.0){zMin=-1.0;zMax=1.0;}else{zMin=Math.max(zMin,-1.0);zMax=Math.min(zMax,1.0);}
var minValues=new x3dom.fields.SFVec3f(xMin,yMin,zMin);var maxValues=new x3dom.fields.SFVec3f(xMax,yMax,zMax);return new x3dom.fields.BoxVolume(minValues,maxValues);}
var frustumBB=clip(minFrustum,maxFrustum);var scaleX=2.0/(frustumBB.max.x-frustumBB.min.x);var scaleY=2.0/(frustumBB.max.y-frustumBB.min.y);var offsetX=-(scaleX*(frustumBB.max.x+frustumBB.min.x))/2.0;var offsetY=-(scaleY*(frustumBB.max.y+frustumBB.min.y))/2.0;var fittingMatrix=x3dom.fields.SFMatrix4f.identity();fittingMatrix._00=scaleX;fittingMatrix._11=scaleY;fittingMatrix._03=offsetX;fittingMatrix._13=offsetY;return fittingMatrix;};x3dom.Mesh=function(parent)
{this._parent=parent;this._vol=new x3dom.fields.BoxVolume();this._invalidate=true;this._numFaces=0;this._numCoords=0;this._primType='TRIANGLES';this._positions=[];this._normals=[];this._texCoords=[];this._colors=[];this._indices=[];this._positions[0]=[];this._normals[0]=[];this._texCoords[0]=[];this._colors[0]=[];this._indices[0]=[];};x3dom.Mesh.prototype._dynamicFields={};x3dom.Mesh.prototype._numPosComponents=3;x3dom.Mesh.prototype._numTexComponents=2;x3dom.Mesh.prototype._numColComponents=3;x3dom.Mesh.prototype._numNormComponents=3;x3dom.Mesh.prototype._lit=true;x3dom.Mesh.prototype._vol=null;x3dom.Mesh.prototype._invalidate=true;x3dom.Mesh.prototype._numFaces=0;x3dom.Mesh.prototype._numCoords=0;x3dom.Mesh.prototype.setMeshData=function(positions,normals,texCoords,colors,indices)
{this._positions[0]=positions;this._normals[0]=normals;this._texCoords[0]=texCoords;this._colors[0]=colors;this._indices[0]=indices;this._invalidate=true;this._numFaces=this._indices[0].length/3;this._numCoords=this._positions[0].length/3;};x3dom.Mesh.prototype.getVolume=function()
{if(this._invalidate==true&&!this._vol.isValid())
{var coords=this._positions[0];var n=coords.length;if(n>3)
{var initVal=new x3dom.fields.SFVec3f(coords[0],coords[1],coords[2]);this._vol.setBounds(initVal,initVal);for(var i=3;i<n;i+=3)
{if(this._vol.min.x>coords[i]){this._vol.min.x=coords[i];}
if(this._vol.min.y>coords[i+1]){this._vol.min.y=coords[i+1];}
if(this._vol.min.z>coords[i+2]){this._vol.min.z=coords[i+2];}
if(this._vol.max.x<coords[i]){this._vol.max.x=coords[i];}
if(this._vol.max.y<coords[i+1]){this._vol.max.y=coords[i+1];}
if(this._vol.max.z<coords[i+2]){this._vol.max.z=coords[i+2];}}
this._invalidate=false;}}
return this._vol;};x3dom.Mesh.prototype.invalidate=function()
{this._invalidate=true;this._vol.invalidate();};x3dom.Mesh.prototype.isValid=function()
{return this._vol.isValid();};x3dom.Mesh.prototype.getCenter=function()
{return this.getVolume().getCenter();};x3dom.Mesh.prototype.getDiameter=function()
{return this.getVolume().getDiameter();};x3dom.Mesh.prototype.doIntersect=function(line)
{var vol=this.getVolume();var isect=line.intersect(vol.min,vol.max);if(isect&&line.enter<line.dist)
{line.dist=line.enter;line.hitObject=this._parent;line.hitPoint=line.pos.add(line.dir.multiply(line.enter));}
return isect;};x3dom.Mesh.prototype.calcNormals=function(creaseAngle,ccw)
{if(ccw===undefined)
ccw=true;var multInd=this._multiIndIndices&&this._multiIndIndices.length;var idxs=multInd?this._multiIndIndices:this._indices[0];var coords=this._positions[0];var vertNormals=[];var vertFaceNormals=[];var i,j,m=coords.length;var a,b,n=null;var num=(this._posSize!==undefined&&this._posSize>m)?this._posSize/3:m/3;num=3*((num-Math.floor(num)>0)?Math.floor(num+1):num);for(i=0;i<num;++i){vertFaceNormals[i]=[];}
num=idxs.length;for(i=0;i<num;i+=3){var ind_i0,ind_i1,ind_i2;var t;if(!multInd){ind_i0=idxs[i]*3;ind_i1=idxs[i+1]*3;ind_i2=idxs[i+2]*3;t=new x3dom.fields.SFVec3f(coords[ind_i1],coords[ind_i1+1],coords[ind_i1+2]);a=new x3dom.fields.SFVec3f(coords[ind_i0],coords[ind_i0+1],coords[ind_i0+2]).subtract(t);b=t.subtract(new x3dom.fields.SFVec3f(coords[ind_i2],coords[ind_i2+1],coords[ind_i2+2]));ind_i0=i*3;ind_i1=(i+1)*3;ind_i2=(i+2)*3;}
else{ind_i0=i*3;ind_i1=(i+1)*3;ind_i2=(i+2)*3;t=new x3dom.fields.SFVec3f(coords[ind_i1],coords[ind_i1+1],coords[ind_i1+2]);a=new x3dom.fields.SFVec3f(coords[ind_i0],coords[ind_i0+1],coords[ind_i0+2]).subtract(t);b=t.subtract(new x3dom.fields.SFVec3f(coords[ind_i2],coords[ind_i2+1],coords[ind_i2+2]));}
n=a.cross(b).normalize();if(!ccw)
n=n.negate();if(creaseAngle<=x3dom.fields.Eps){vertNormals[ind_i0]=vertNormals[ind_i1]=vertNormals[ind_i2]=n.x;vertNormals[ind_i0+1]=vertNormals[ind_i1+1]=vertNormals[ind_i2+1]=n.y;vertNormals[ind_i0+2]=vertNormals[ind_i1+2]=vertNormals[ind_i2+2]=n.z;}
else{vertFaceNormals[idxs[i]].push(n);vertFaceNormals[idxs[i+1]].push(n);vertFaceNormals[idxs[i+2]].push(n);}}
if(creaseAngle>x3dom.fields.Eps)
{for(i=0;i<m;i+=3){var iThird=i/3;var arr;if(!multInd){arr=vertFaceNormals[iThird];}
else{arr=vertFaceNormals[idxs[iThird]];}
num=arr.length;n=new x3dom.fields.SFVec3f(0,0,0);for(j=0;j<num;++j){n=n.add(arr[j]);}
n=n.normalize();vertNormals[i]=n.x;vertNormals[i+1]=n.y;vertNormals[i+2]=n.z;}}
this._normals[0]=vertNormals;};x3dom.Mesh.prototype.splitMesh=function(primStride,checkMultiIndIndices)
{var pStride;var isMultiInd;if(typeof primStride===undefined){pStride=3;}else{pStride=primStride;}
if(typeof checkMultiIndIndices===undefined){checkMultiIndIndices=false;}
var MAX=x3dom.Utils.maxIndexableCoords;MAX=Math.floor(MAX/pStride)*pStride;if(this._positions[0].length/3<=MAX&&!checkMultiIndIndices){return;}
if(checkMultiIndIndices){isMultiInd=this._multiIndIndices&&this._multiIndIndices.length;}else{isMultiInd=false;}
var positions=this._positions[0];var normals=this._normals[0];var texCoords=this._texCoords[0];var colors=this._colors[0];var indices=isMultiInd?this._multiIndIndices:this._indices[0];var i=0;do
{this._positions[i]=[];this._normals[i]=[];this._texCoords[i]=[];this._colors[i]=[];this._indices[i]=[];var k=(indices.length-((i+1)*MAX)>=0);if(k){this._indices[i]=indices.slice(i*MAX,(i+1)*MAX);}else{this._indices[i]=indices.slice(i*MAX);}
if(!isMultiInd){if(i){var m=i*MAX;for(var j=0,l=this._indices[i].length;j<l;j++){this._indices[i][j]-=m;}}}else{for(var j=0,l=this._indices[i].length;j<l;j++){this._indices[i][j]=j;}}
if(k){this._positions[i]=positions.slice(i*MAX*3,3*(i+1)*MAX);}else{this._positions[i]=positions.slice(i*MAX*3);}
if(normals.length){if(k){this._normals[i]=normals.slice(i*MAX*3,3*(i+1)*MAX);}else{this._normals[i]=normals.slice(i*MAX*3);}}
if(texCoords.length){if(k){this._texCoords[i]=texCoords.slice(i*MAX*this._numTexComponents,this._numTexComponents*(i+1)*MAX);}else{this._texCoords[i]=texCoords.slice(i*MAX*this._numTexComponents);}}
if(colors.length){if(k){this._colors[i]=colors.slice(i*MAX*this._numColComponents,this._numColComponents*(i+1)*MAX);}else{this._colors[i]=colors.slice(i*MAX*this._numColComponents);}}}
while(positions.length>++i*MAX*3);};x3dom.Mesh.prototype.calcTexCoords=function(mode)
{this._texCoords[0]=[];if(mode.toLowerCase()==="sphere-local")
{for(var i=0,j=0,n=this._normals[0].length;i<n;i+=3)
{this._texCoords[0][j++]=0.5+this._normals[0][i]/2.0;this._texCoords[0][j++]=0.5+this._normals[0][i+1]/2.0;}}
else
{var min=new x3dom.fields.SFVec3f(0,0,0),max=new x3dom.fields.SFVec3f(0,0,0);var vol=this.getVolume();vol.getBounds(min,max);var dia=max.subtract(min);var S=0,T=1;if(dia.x>=dia.y)
{if(dia.x>=dia.z)
{S=0;T=dia.y>=dia.z?1:2;}
else
{S=2;T=0;}}
else
{if(dia.y>=dia.z)
{S=1;T=dia.x>=dia.z?0:2;}
else
{S=2;T=1;}}
var sDenom=1,tDenom=1;var sMin=0,tMin=0;switch(S){case 0:sDenom=dia.x;sMin=min.x;break;case 1:sDenom=dia.y;sMin=min.y;break;case 2:sDenom=dia.z;sMin=min.z;break;}
switch(T){case 0:tDenom=dia.x;tMin=min.x;break;case 1:tDenom=dia.y;tMin=min.y;break;case 2:tDenom=dia.z;tMin=min.z;break;}
for(var k=0,l=0,m=this._positions[0].length;k<m;k+=3)
{this._texCoords[0][l++]=(this._positions[0][k+S]-sMin)/sDenom;this._texCoords[0][l++]=(this._positions[0][k+T]-tMin)/tDenom;}}};if(typeof x3dom==="undefined")
{x3dom={extend:function(f){function G(){}
G.prototype=f.prototype||f;return new G();},debug:{logInfo:function(msg){console.log(msg);},logWarning:function(msg){console.warn(msg);},logError:function(msg){console.error(msg);}}};if(!Array.map){Array.map=function(array,fun,thisp){var len=array.length;var res=[];for(var i=0;i<len;i++){if(i in array){res[i]=fun.call(thisp,array[i],i,array);}}
return res;};}
console.log("Using x3dom fields.js as standalone math and/or base types library.");}
x3dom.fields={};var VecMath=x3dom.fields;x3dom.fields.Eps=0.000001;x3dom.fields.SFMatrix4f=function(_00,_01,_02,_03,_10,_11,_12,_13,_20,_21,_22,_23,_30,_31,_32,_33)
{if(arguments.length===0){this._00=1;this._01=0;this._02=0;this._03=0;this._10=0;this._11=1;this._12=0;this._13=0;this._20=0;this._21=0;this._22=1;this._23=0;this._30=0;this._31=0;this._32=0;this._33=1;}
else{this._00=_00;this._01=_01;this._02=_02;this._03=_03;this._10=_10;this._11=_11;this._12=_12;this._13=_13;this._20=_20;this._21=_21;this._22=_22;this._23=_23;this._30=_30;this._31=_31;this._32=_32;this._33=_33;}};x3dom.fields.SFMatrix4f.prototype.e0=function(){var baseVec=new x3dom.fields.SFVec3f(this._00,this._10,this._20);return baseVec.normalize();};x3dom.fields.SFMatrix4f.prototype.e1=function(){var baseVec=new x3dom.fields.SFVec3f(this._01,this._11,this._21);return baseVec.normalize();};x3dom.fields.SFMatrix4f.prototype.e2=function(){var baseVec=new x3dom.fields.SFVec3f(this._02,this._12,this._22);return baseVec.normalize();};x3dom.fields.SFMatrix4f.prototype.e3=function(){return new x3dom.fields.SFVec3f(this._03,this._13,this._23);};x3dom.fields.SFMatrix4f.copy=function(that){return new x3dom.fields.SFMatrix4f(that._00,that._01,that._02,that._03,that._10,that._11,that._12,that._13,that._20,that._21,that._22,that._23,that._30,that._31,that._32,that._33);};x3dom.fields.SFMatrix4f.prototype.copy=function(){return x3dom.fields.SFMatrix4f.copy(this);};x3dom.fields.SFMatrix4f.identity=function(){return new x3dom.fields.SFMatrix4f(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);};x3dom.fields.SFMatrix4f.zeroMatrix=function(){return new x3dom.fields.SFMatrix4f(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);};x3dom.fields.SFMatrix4f.translation=function(vec){return new x3dom.fields.SFMatrix4f(1,0,0,vec.x,0,1,0,vec.y,0,0,1,vec.z,0,0,0,1);};x3dom.fields.SFMatrix4f.rotationX=function(a){var c=Math.cos(a);var s=Math.sin(a);return new x3dom.fields.SFMatrix4f(1,0,0,0,0,c,-s,0,0,s,c,0,0,0,0,1);};x3dom.fields.SFMatrix4f.rotationY=function(a){var c=Math.cos(a);var s=Math.sin(a);return new x3dom.fields.SFMatrix4f(c,0,s,0,0,1,0,0,-s,0,c,0,0,0,0,1);};x3dom.fields.SFMatrix4f.rotationZ=function(a){var c=Math.cos(a);var s=Math.sin(a);return new x3dom.fields.SFMatrix4f(c,-s,0,0,s,c,0,0,0,0,1,0,0,0,0,1);};x3dom.fields.SFMatrix4f.scale=function(vec){return new x3dom.fields.SFMatrix4f(vec.x,0,0,0,0,vec.y,0,0,0,0,vec.z,0,0,0,0,1);};x3dom.fields.SFMatrix4f.lookAt=function(from,at,up)
{var view=from.subtract(at).normalize();var right=up.normalize().cross(view).normalize();if(right.dot(right)<x3dom.fields.Eps){x3dom.debug.logWarning("View matrix is linearly dependent.");return x3dom.fields.SFMatrix4f.translation(from);}
var newUp=view.cross(right).normalize();var tmp=x3dom.fields.SFMatrix4f.identity();tmp.setValue(right,newUp,view,from);return tmp;};x3dom.fields.SFMatrix4f.perspectiveFrustum=function(left,right,bottom,top,near,far)
{return new x3dom.fields.SFMatrix4f(2*near/(right-left),0,(right+left)/(right-left),0,0,2*near/(top-bottom),(top+bottom)/(top-bottom),0,0,0,-(far+near)/(far-near),-2*far*near/(far-near),0,0,-1,0);};x3dom.fields.SFMatrix4f.perspective=function(fov,aspect,near,far)
{var f=1/Math.tan(fov/2);return new x3dom.fields.SFMatrix4f(f/aspect,0,0,0,0,f,0,0,0,0,(near+far)/(near-far),2*near*far/(near-far),0,0,-1,0);};x3dom.fields.SFMatrix4f.ortho=function(left,right,bottom,top,near,far,aspect)
{var rl=(right-left)/2;var tb=(top-bottom)/2;var fn=far-near;if(aspect===undefined)
aspect=1.0;if(aspect<(rl/tb))
tb=rl/aspect;else
rl=tb*aspect;left=-rl;right=rl;bottom=-tb;top=tb;rl*=2;tb*=2;return new x3dom.fields.SFMatrix4f(2/rl,0,0,-(right+left)/rl,0,2/tb,0,-(top+bottom)/tb,0,0,-2/fn,-(far+near)/fn,0,0,0,1);};x3dom.fields.SFMatrix4f.prototype.setTranslate=function(vec){this._03=vec.x;this._13=vec.y;this._23=vec.z;};x3dom.fields.SFMatrix4f.prototype.setScale=function(vec){this._00=vec.x;this._11=vec.y;this._22=vec.z;};x3dom.fields.SFMatrix4f.prototype.setRotate=function(quat){var xx=quat.x*quat.x;var xy=quat.x*quat.y;var xz=quat.x*quat.z;var yy=quat.y*quat.y;var yz=quat.y*quat.z;var zz=quat.z*quat.z;var wx=quat.w*quat.x;var wy=quat.w*quat.y;var wz=quat.w*quat.z;this._00=1-2*(yy+zz);this._01=2*(xy-wz);this._02=2*(xz+wy);this._10=2*(xy+wz);this._11=1-2*(xx+zz);this._12=2*(yz-wx);this._20=2*(xz-wy);this._21=2*(yz+wx);this._22=1-2*(xx+yy);};x3dom.fields.SFMatrix4f.parseRotation=function(str){var m=/^([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)$/.exec(str);var x=+m[1],y=+m[2],z=+m[3],a=+m[4];var d=Math.sqrt(x*x+y*y+z*z);if(d===0){x=1;y=z=0;}else{x/=d;y/=d;z/=d;}
var c=Math.cos(a);var s=Math.sin(a);var t=1-c;return new x3dom.fields.SFMatrix4f(t*x*x+c,t*x*y+s*z,t*x*z-s*y,0,t*x*y-s*z,t*y*y+c,t*y*z+s*x,0,t*x*z+s*y,t*y*z-s*x,t*z*z+c,0,0,0,0,1).transpose();};x3dom.fields.SFMatrix4f.parse=function(str){var needTranspose=false;var val=/matrix.*\((.+)\)/;if(val.exec(str)){str=RegExp.$1;needTranspose=true;}
var arr=Array.map(str.split(/[,\s]+/),function(n){return+n;});if(arr.length>=16)
{if(!needTranspose){return new x3dom.fields.SFMatrix4f(arr[0],arr[1],arr[2],arr[3],arr[4],arr[5],arr[6],arr[7],arr[8],arr[9],arr[10],arr[11],arr[12],arr[13],arr[14],arr[15]);}
else{return new x3dom.fields.SFMatrix4f(arr[0],arr[4],arr[8],arr[12],arr[1],arr[5],arr[9],arr[13],arr[2],arr[6],arr[10],arr[14],arr[3],arr[7],arr[11],arr[15]);}}
else if(arr.length===6){return new x3dom.fields.SFMatrix4f(arr[0],arr[1],0,arr[4],arr[2],arr[3],0,arr[5],0,0,1,0,0,0,0,1);}
else{x3dom.debug.logWarning("SFMatrix4f - can't parse string: "+str);return x3dom.fields.SFMatrix4f.identity();}};x3dom.fields.SFMatrix4f.prototype.mult=function(that){return new x3dom.fields.SFMatrix4f(this._00*that._00+this._01*that._10+this._02*that._20+this._03*that._30,this._00*that._01+this._01*that._11+this._02*that._21+this._03*that._31,this._00*that._02+this._01*that._12+this._02*that._22+this._03*that._32,this._00*that._03+this._01*that._13+this._02*that._23+this._03*that._33,this._10*that._00+this._11*that._10+this._12*that._20+this._13*that._30,this._10*that._01+this._11*that._11+this._12*that._21+this._13*that._31,this._10*that._02+this._11*that._12+this._12*that._22+this._13*that._32,this._10*that._03+this._11*that._13+this._12*that._23+this._13*that._33,this._20*that._00+this._21*that._10+this._22*that._20+this._23*that._30,this._20*that._01+this._21*that._11+this._22*that._21+this._23*that._31,this._20*that._02+this._21*that._12+this._22*that._22+this._23*that._32,this._20*that._03+this._21*that._13+this._22*that._23+this._23*that._33,this._30*that._00+this._31*that._10+this._32*that._20+this._33*that._30,this._30*that._01+this._31*that._11+this._32*that._21+this._33*that._31,this._30*that._02+this._31*that._12+this._32*that._22+this._33*that._32,this._30*that._03+this._31*that._13+this._32*that._23+this._33*that._33);};x3dom.fields.SFMatrix4f.prototype.multMatrixPnt=function(vec){return new x3dom.fields.SFVec3f(this._00*vec.x+this._01*vec.y+this._02*vec.z+this._03,this._10*vec.x+this._11*vec.y+this._12*vec.z+this._13,this._20*vec.x+this._21*vec.y+this._22*vec.z+this._23);};x3dom.fields.SFMatrix4f.prototype.multMatrixVec=function(vec){return new x3dom.fields.SFVec3f(this._00*vec.x+this._01*vec.y+this._02*vec.z,this._10*vec.x+this._11*vec.y+this._12*vec.z,this._20*vec.x+this._21*vec.y+this._22*vec.z);};x3dom.fields.SFMatrix4f.prototype.multFullMatrixPnt=function(vec){var w=this._30*vec.x+this._31*vec.y+this._32*vec.z+this._33;if(w){w=1.0/w;}
return new x3dom.fields.SFVec3f((this._00*vec.x+this._01*vec.y+this._02*vec.z+this._03)*w,(this._10*vec.x+this._11*vec.y+this._12*vec.z+this._13)*w,(this._20*vec.x+this._21*vec.y+this._22*vec.z+this._23)*w);};x3dom.fields.SFMatrix4f.prototype.multMatrixPlane=function(plane){var normal=new x3dom.fields.SFVec3f(plane.x,plane.y,plane.z);var memberPnt=normal.multiply(-plane.w);memberPnt=this.multMatrixPnt(memberPnt);var invTranspose=this.inverse().transpose();normal=invTranspose.multMatrixVec(normal);var d=-normal.dot(memberPnt);return new x3dom.fields.SFVec4f(normal.x,normal.y,normal.z,d);};x3dom.fields.SFMatrix4f.prototype.transpose=function(){return new x3dom.fields.SFMatrix4f(this._00,this._10,this._20,this._30,this._01,this._11,this._21,this._31,this._02,this._12,this._22,this._32,this._03,this._13,this._23,this._33);};x3dom.fields.SFMatrix4f.prototype.negate=function(){return new x3dom.fields.SFMatrix4f(-this._00,-this._01,-this._02,-this._03,-this._10,-this._11,-this._12,-this._13,-this._20,-this._21,-this._22,-this._23,-this._30,-this._31,-this._32,-this._33);};x3dom.fields.SFMatrix4f.prototype.multiply=function(s){return new x3dom.fields.SFMatrix4f(s*this._00,s*this._01,s*this._02,s*this._03,s*this._10,s*this._11,s*this._12,s*this._13,s*this._20,s*this._21,s*this._22,s*this._23,s*this._30,s*this._31,s*this._32,s*this._33);};x3dom.fields.SFMatrix4f.prototype.add=function(that){return new x3dom.fields.SFMatrix4f(this._00+that._00,this._01+that._01,this._02+that._02,this._03+that._03,this._10+that._10,this._11+that._11,this._12+that._12,this._13+that._13,this._20+that._20,this._21+that._21,this._22+that._22,this._23+that._23,this._30+that._30,this._31+that._31,this._32+that._32,this._33+that._33);};x3dom.fields.SFMatrix4f.prototype.addScaled=function(that,s){return new x3dom.fields.SFMatrix4f(this._00+s*that._00,this._01+s*that._01,this._02+s*that._02,this._03+s*that._03,this._10+s*that._10,this._11+s*that._11,this._12+s*that._12,this._13+s*that._13,this._20+s*that._20,this._21+s*that._21,this._22+s*that._22,this._23+s*that._23,this._30+s*that._30,this._31+s*that._31,this._32+s*that._32,this._33+s*that._33);};x3dom.fields.SFMatrix4f.prototype.setValues=function(that){this._00=that._00;this._01=that._01;this._02=that._02;this._03=that._03;this._10=that._10;this._11=that._11;this._12=that._12;this._13=that._13;this._20=that._20;this._21=that._21;this._22=that._22;this._23=that._23;this._30=that._30;this._31=that._31;this._32=that._32;this._33=that._33;};x3dom.fields.SFMatrix4f.prototype.setValue=function(v1,v2,v3,v4){this._00=v1.x;this._01=v2.x;this._02=v3.x;this._10=v1.y;this._11=v2.y;this._12=v3.y;this._20=v1.z;this._21=v2.z;this._22=v3.z;this._30=0;this._31=0;this._32=0;if(arguments.length>3){this._03=v4.x;this._13=v4.y;this._23=v4.z;this._33=1;}};x3dom.fields.SFMatrix4f.prototype.setFromArray=function(a){this._00=a[0];this._01=a[4];this._02=a[8];this._03=a[12];this._10=a[1];this._11=a[5];this._12=a[9];this._13=a[13];this._20=a[2];this._21=a[6];this._22=a[10];this._23=a[14];this._30=a[3];this._31=a[7];this._32=a[11];this._33=a[15];};x3dom.fields.SFMatrix4f.prototype.toGL=function(){return[this._00,this._10,this._20,this._30,this._01,this._11,this._21,this._31,this._02,this._12,this._22,this._32,this._03,this._13,this._23,this._33];};x3dom.fields.SFMatrix4f.prototype.at=function(i,j){var field="_"+i+j;return this[field];};x3dom.fields.SFMatrix4f.prototype.sqrt=function(){var Y=x3dom.fields.SFMatrix4f.identity();var result=x3dom.fields.SFMatrix4f.copy(this);for(var i=0;i<6;i++)
{var iX=result.inverse();var iY=(i==0)?x3dom.fields.SFMatrix4f.identity():Y.inverse();var rd=result.det(),yd=Y.det();var g=Math.abs(Math.pow(rd*yd,-0.125));var ig=1.0/g;result=result.multiply(g);result=result.addScaled(iY,ig);result=result.multiply(0.5);Y=Y.multiply(g);Y=Y.addScaled(iX,ig);Y=Y.multiply(0.5);}
return result;};x3dom.fields.SFMatrix4f.prototype.normInfinity=function(){var t=0,m=0;if((t=Math.abs(this._00))>m){m=t;}
if((t=Math.abs(this._01))>m){m=t;}
if((t=Math.abs(this._02))>m){m=t;}
if((t=Math.abs(this._03))>m){m=t;}
if((t=Math.abs(this._10))>m){m=t;}
if((t=Math.abs(this._11))>m){m=t;}
if((t=Math.abs(this._12))>m){m=t;}
if((t=Math.abs(this._13))>m){m=t;}
if((t=Math.abs(this._20))>m){m=t;}
if((t=Math.abs(this._21))>m){m=t;}
if((t=Math.abs(this._22))>m){m=t;}
if((t=Math.abs(this._23))>m){m=t;}
if((t=Math.abs(this._30))>m){m=t;}
if((t=Math.abs(this._31))>m){m=t;}
if((t=Math.abs(this._32))>m){m=t;}
if((t=Math.abs(this._33))>m){m=t;}
return m;};x3dom.fields.SFMatrix4f.prototype.norm1_3x3=function(){var max=Math.abs(this._00)+
Math.abs(this._10)+
Math.abs(this._20);var t=0;if((t=Math.abs(this._01)+
Math.abs(this._11)+
Math.abs(this._21))>max){max=t;}
if((t=Math.abs(this._02)+
Math.abs(this._12)+
Math.abs(this._22))>max){max=t;}
return max;};x3dom.fields.SFMatrix4f.prototype.normInf_3x3=function(){var max=Math.abs(this._00)+
Math.abs(this._01)+
Math.abs(this._02);var t=0;if((t=Math.abs(this._10)+
Math.abs(this._11)+
Math.abs(this._12))>max){max=t;}
if((t=Math.abs(this._20)+
Math.abs(this._21)+
Math.abs(this._22))>max){max=t;}
return max;};x3dom.fields.SFMatrix4f.prototype.adjointT_3x3=function(){var result=x3dom.fields.SFMatrix4f.identity();result._00=this._11*this._22-this._12*this._21;result._01=this._12*this._20-this._10*this._22;result._02=this._10*this._21-this._11*this._20;result._10=this._21*this._02-this._22*this._01;result._11=this._22*this._00-this._20*this._02;result._12=this._20*this._01-this._21*this._00;result._20=this._01*this._12-this._02*this._11;result._21=this._02*this._10-this._00*this._12;result._22=this._00*this._11-this._01*this._10;return result;};x3dom.fields.SFMatrix4f.prototype.equals=function(that){var eps=0.000000000001;return Math.abs(this._00-that._00)<eps&&Math.abs(this._01-that._01)<eps&&Math.abs(this._02-that._02)<eps&&Math.abs(this._03-that._03)<eps&&Math.abs(this._10-that._10)<eps&&Math.abs(this._11-that._11)<eps&&Math.abs(this._12-that._12)<eps&&Math.abs(this._13-that._13)<eps&&Math.abs(this._20-that._20)<eps&&Math.abs(this._21-that._21)<eps&&Math.abs(this._22-that._22)<eps&&Math.abs(this._23-that._23)<eps&&Math.abs(this._30-that._30)<eps&&Math.abs(this._31-that._31)<eps&&Math.abs(this._32-that._32)<eps&&Math.abs(this._33-that._33)<eps;};x3dom.fields.SFMatrix4f.prototype.getTransform=function(translation,rotation,scaleFactor,scaleOrientation,center)
{var m=null;if(arguments.length>4){m=x3dom.fields.SFMatrix4f.translation(center.negate());m=m.mult(this);var c=x3dom.fields.SFMatrix4f.translation(center);m=m.mult(c);}
else{m=x3dom.fields.SFMatrix4f.copy(this);}
var flip=m.decompose(translation,rotation,scaleFactor,scaleOrientation);scaleFactor.setValues(scaleFactor.multiply(flip));};x3dom.fields.SFMatrix4f.prototype.decompose=function(t,r,s,so)
{var A=x3dom.fields.SFMatrix4f.copy(this);var Q=x3dom.fields.SFMatrix4f.identity(),S=x3dom.fields.SFMatrix4f.identity(),SO=x3dom.fields.SFMatrix4f.identity();t.x=A._03;t.y=A._13;t.z=A._23;A._03=0.0;A._13=0.0;A._23=0.0;A._30=0.0;A._31=0.0;A._32=0.0;var det=A.polarDecompose(Q,S);var f=1.0;if(det<0.0){Q=Q.negate();f=-1.0;}
r.setValue(Q);S.spectralDecompose(SO,s);so.setValue(SO);return f;};x3dom.fields.SFMatrix4f.prototype.polarDecompose=function(Q,S)
{var TOL=0.000000000001;var Mk=this.transpose();var Ek=x3dom.fields.SFMatrix4f.identity();var Mk_one=Mk.norm1_3x3();var Mk_inf=Mk.normInf_3x3();var MkAdjT;var MkAdjT_one,MkAdjT_inf;var Ek_one,Mk_det;do
{MkAdjT=Mk.adjointT_3x3();Mk_det=Mk._00*MkAdjT._00+
Mk._01*MkAdjT._01+
Mk._02*MkAdjT._02;if(Mk_det==0.0)
{x3dom.debug.logWarning("polarDecompose: Mk_det == 0.0");break;}
MkAdjT_one=MkAdjT.norm1_3x3();MkAdjT_inf=MkAdjT.normInf_3x3();var gamma=Math.sqrt(Math.sqrt((MkAdjT_one*MkAdjT_inf)/(Mk_one*Mk_inf))/Math.abs(Mk_det));var g1=0.5*gamma;var g2=0.5/(gamma*Mk_det);Ek.setValues(Mk);Mk=Mk.multiply(g1);Mk=Mk.addScaled(MkAdjT,g2);Ek=Ek.addScaled(Mk,-1.0);Ek_one=Ek.norm1_3x3();Mk_one=Mk.norm1_3x3();Mk_inf=Mk.normInf_3x3();}while(Ek_one>(Mk_one*TOL));Q.setValues(Mk.transpose());S.setValues(Mk.mult(this));for(var i=0;i<3;++i)
{for(var j=i;j<3;++j)
{S['_'+j+i]=0.5*(S['_'+j+i]+S['_'+i+j]);S['_'+i+j]=0.5*(S['_'+j+i]+S['_'+i+j]);}}
return Mk_det;};x3dom.fields.SFMatrix4f.prototype.spectralDecompose=function(SO,k)
{var next=[1,2,0];var maxIterations=20;var diag=[this._00,this._11,this._22];var offDiag=[this._12,this._20,this._01];for(var iter=0;iter<maxIterations;++iter)
{var sm=Math.abs(offDiag[0])+Math.abs(offDiag[1])+Math.abs(offDiag[2]);if(sm==0){break;}
for(var i=2;i>=0;--i)
{var p=next[i];var q=next[p];var absOffDiag=Math.abs(offDiag[i]);var g=100.0*absOffDiag;if(absOffDiag>0.0)
{var t=0,h=diag[q]-diag[p];var absh=Math.abs(h);if(absh+g==absh)
{t=offDiag[i]/h;}
else
{var theta=0.5*h/offDiag[i];t=1.0/(Math.abs(theta)+Math.sqrt(theta*theta+1.0));t=theta<0.0?-t:t;}
var c=1.0/Math.sqrt(t*t+1.0);var s=t*c;var tau=s/(c+1.0);var ta=t*offDiag[i];offDiag[i]=0.0;diag[p]-=ta;diag[q]+=ta;var offDiagq=offDiag[q];offDiag[q]-=s*(offDiag[p]+tau*offDiagq);offDiag[p]+=s*(offDiagq-tau*offDiag[p]);for(var j=2;j>=0;--j)
{var a=SO['_'+j+p];var b=SO['_'+j+q];SO['_'+j+p]-=s*(b+tau*a);SO['_'+j+q]+=s*(a-tau*b);}}}}
k.x=diag[0];k.y=diag[1];k.z=diag[2];};x3dom.fields.SFMatrix4f.prototype.log=function(){var maxiter=12;var eps=1e-12;var A=x3dom.fields.SFMatrix4f.copy(this),Z=x3dom.fields.SFMatrix4f.copy(this);Z._00-=1;Z._11-=1;Z._22-=1;Z._33-=1;var k=0;while(Z.normInfinity()>0.5)
{A=A.sqrt();Z.setValues(A);Z._00-=1;Z._11-=1;Z._22-=1;Z._33-=1;k++;}
A._00-=1;A._11-=1;A._22-=1;A._33-=1;A=A.negate();Z.setValues(A);var result=x3dom.fields.SFMatrix4f.copy(A);var i=1;while(Z.normInfinity()>eps&&i<maxiter)
{Z=Z.mult(A);i++;result=result.addScaled(Z,1.0/i);}
return result.multiply(-(1<<k));};x3dom.fields.SFMatrix4f.prototype.exp=function(){var q=6;var A=x3dom.fields.SFMatrix4f.copy(this),D=x3dom.fields.SFMatrix4f.identity(),N=x3dom.fields.SFMatrix4f.identity(),result=x3dom.fields.SFMatrix4f.identity();var k=0,c=1.0;var j=1.0+parseInt(Math.log(A.normInfinity()/0.693));if(j<0){j=0;}
A=A.multiply(1.0/(1<<j));for(k=1;k<=q;k++)
{c*=(q-k+1)/(k*(2*q-k+1));result=A.mult(result);N=N.addScaled(result,c);if(k%2){D=D.addScaled(result,-c);}
else{D=D.addScaled(result,c);}}
result=D.inverse().mult(N);for(k=0;k<j;k++)
{result=result.mult(result);}
return result;};x3dom.fields.SFMatrix4f.prototype.det3=function(a1,a2,a3,b1,b2,b3,c1,c2,c3){return((a1*b2*c3)+(a2*b3*c1)+(a3*b1*c2)-
(a1*b3*c2)-(a2*b1*c3)-(a3*b2*c1));};x3dom.fields.SFMatrix4f.prototype.det=function(){var a1=this._00;var b1=this._10;var c1=this._20;var d1=this._30;var a2=this._01;var b2=this._11;var c2=this._21;var d2=this._31;var a3=this._02;var b3=this._12;var c3=this._22;var d3=this._32;var a4=this._03;var b4=this._13;var c4=this._23;var d4=this._33;return(a1*this.det3(b2,b3,b4,c2,c3,c4,d2,d3,d4)-
b1*this.det3(a2,a3,a4,c2,c3,c4,d2,d3,d4)+
c1*this.det3(a2,a3,a4,b2,b3,b4,d2,d3,d4)-
d1*this.det3(a2,a3,a4,b2,b3,b4,c2,c3,c4));};x3dom.fields.SFMatrix4f.prototype.inverse=function(){var a1=this._00;var b1=this._10;var c1=this._20;var d1=this._30;var a2=this._01;var b2=this._11;var c2=this._21;var d2=this._31;var a3=this._02;var b3=this._12;var c3=this._22;var d3=this._32;var a4=this._03;var b4=this._13;var c4=this._23;var d4=this._33;var rDet=this.det();if(rDet==0)
{x3dom.debug.logWarning("Invert matrix: singular matrix, no inverse!");return x3dom.fields.SFMatrix4f.identity();}
rDet=1.0/rDet;return new x3dom.fields.SFMatrix4f(+this.det3(b2,b3,b4,c2,c3,c4,d2,d3,d4)*rDet,-this.det3(a2,a3,a4,c2,c3,c4,d2,d3,d4)*rDet,+this.det3(a2,a3,a4,b2,b3,b4,d2,d3,d4)*rDet,-this.det3(a2,a3,a4,b2,b3,b4,c2,c3,c4)*rDet,-this.det3(b1,b3,b4,c1,c3,c4,d1,d3,d4)*rDet,+this.det3(a1,a3,a4,c1,c3,c4,d1,d3,d4)*rDet,-this.det3(a1,a3,a4,b1,b3,b4,d1,d3,d4)*rDet,+this.det3(a1,a3,a4,b1,b3,b4,c1,c3,c4)*rDet,+this.det3(b1,b2,b4,c1,c2,c4,d1,d2,d4)*rDet,-this.det3(a1,a2,a4,c1,c2,c4,d1,d2,d4)*rDet,+this.det3(a1,a2,a4,b1,b2,b4,d1,d2,d4)*rDet,-this.det3(a1,a2,a4,b1,b2,b4,c1,c2,c4)*rDet,-this.det3(b1,b2,b3,c1,c2,c3,d1,d2,d3)*rDet,+this.det3(a1,a2,a3,c1,c2,c3,d1,d2,d3)*rDet,-this.det3(a1,a2,a3,b1,b2,b3,d1,d2,d3)*rDet,+this.det3(a1,a2,a3,b1,b2,b3,c1,c2,c3)*rDet);};x3dom.fields.SFMatrix4f.prototype.getEulerAngles=function(){var theta_1,theta_2,theta;var phi_1,phi_2,phi;var psi_1,psi_2,psi;var cos_theta_1,cos_theta_2;if(Math.abs((Math.abs(this._20)-1.0))>0.0001){theta_1=-Math.asin(this._20);theta_2=Math.PI-theta_1;cos_theta_1=Math.cos(theta_1);cos_theta_2=Math.cos(theta_2);psi_1=Math.atan2(this._21/cos_theta_1,this._22/cos_theta_1);psi_2=Math.atan2(this._21/cos_theta_2,this._22/cos_theta_2);phi_1=Math.atan2(this._10/cos_theta_1,this._00/cos_theta_1);phi_2=Math.atan2(this._10/cos_theta_2,this._00/cos_theta_2);return[psi_1,theta_1,phi_1,psi_2,theta_2,phi_2];}
else{phi=0;if(this._20==-1.0){theta=Math.PI/2.0;psi=phi+Math.atan2(this._01,this._02);}
else{theta=-(Math.PI/2.0);psi=-phi+Math.atan2(-this._01,-this._02);}
return[psi,theta,phi,psi,theta,phi];}};x3dom.fields.SFMatrix4f.prototype.toString=function(){return'\n'+
this._00.toFixed(6)+', '+this._01.toFixed(6)+', '+
this._02.toFixed(6)+', '+this._03.toFixed(6)+', \n'+
this._10.toFixed(6)+', '+this._11.toFixed(6)+', '+
this._12.toFixed(6)+', '+this._13.toFixed(6)+', \n'+
this._20.toFixed(6)+', '+this._21.toFixed(6)+', '+
this._22.toFixed(6)+', '+this._23.toFixed(6)+', \n'+
this._30.toFixed(6)+', '+this._31.toFixed(6)+', '+
this._32.toFixed(6)+', '+this._33.toFixed(6);};x3dom.fields.SFMatrix4f.prototype.setValueByStr=function(str){var needTranspose=false;var val=/matrix.*\((.+)\)/;if(val.exec(str)){str=RegExp.$1;needTranspose=true;}
var arr=Array.map(str.split(/[,\s]+/),function(n){return+n;});if(arr.length>=16)
{if(!needTranspose){this._00=arr[0];this._01=arr[1];this._02=arr[2];this._03=arr[3];this._10=arr[4];this._11=arr[5];this._12=arr[6];this._13=arr[7];this._20=arr[8];this._21=arr[9];this._22=arr[10];this._23=arr[11];this._30=arr[12];this._31=arr[13];this._32=arr[14];this._33=arr[15];}
else{this._00=arr[0];this._01=arr[4];this._02=arr[8];this._03=arr[12];this._10=arr[1];this._11=arr[5];this._12=arr[9];this._13=arr[13];this._20=arr[2];this._21=arr[6];this._22=arr[10];this._23=arr[14];this._30=arr[3];this._31=arr[7];this._32=arr[11];this._33=arr[15];}}
else if(arr.length===6){this._00=arr[0];this._01=arr[1];this._02=0;this._03=arr[4];this._10=arr[2];this._11=arr[3];this._12=0;this._13=arr[5];this._20=0;this._21=0;this._22=1;this._23=0;this._30=0;this._31=0;this._32=0;this._33=1;}
else{x3dom.debug.logWarning("SFMatrix4f - can't parse string: "+str);}
return this;};x3dom.fields.SFVec2f=function(x,y){if(arguments.length===0){this.x=0;this.y=0;}
else{this.x=x;this.y=y;}};x3dom.fields.SFVec2f.copy=function(v){return new x3dom.fields.SFVec2f(v.x,v.y);};x3dom.fields.SFVec2f.parse=function(str){var m=/^\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*$/.exec(str);return new x3dom.fields.SFVec2f(+m[1],+m[2]);};x3dom.fields.SFVec2f.prototype.copy=function(){return x3dom.fields.SFVec2f.copy(this);};x3dom.fields.SFVec2f.prototype.setValues=function(that){this.x=that.x;this.y=that.y;};x3dom.fields.SFVec2f.prototype.at=function(i){switch(i){case 0:return this.x;case 1:return this.y;default:return this.x;}};x3dom.fields.SFVec2f.prototype.add=function(that){return new x3dom.fields.SFVec2f(this.x+that.x,this.y+that.y);};x3dom.fields.SFVec2f.prototype.subtract=function(that){return new x3dom.fields.SFVec2f(this.x-that.x,this.y-that.y);};x3dom.fields.SFVec2f.prototype.negate=function(){return new x3dom.fields.SFVec2f(-this.x,-this.y);};x3dom.fields.SFVec2f.prototype.dot=function(that){return this.x*that.x+this.y*that.y;};x3dom.fields.SFVec2f.prototype.reflect=function(n){var d2=this.dot(n)*2;return new x3dom.fields.SFVec2f(this.x-d2*n.x,this.y-d2*n.y);};x3dom.fields.SFVec2f.prototype.normalize=function(){var n=this.length();if(n){n=1.0/n;}
return new x3dom.fields.SFVec2f(this.x*n,this.y*n);};x3dom.fields.SFVec2f.prototype.multComponents=function(that){return new x3dom.fields.SFVec2f(this.x*that.x,this.y*that.y);};x3dom.fields.SFVec2f.prototype.multiply=function(n){return new x3dom.fields.SFVec2f(this.x*n,this.y*n);};x3dom.fields.SFVec2f.prototype.divide=function(n){var denom=n?(1.0/n):1.0;return new x3dom.fields.SFVec2f(this.x*denom,this.y*denom);};x3dom.fields.SFVec2f.prototype.equals=function(that,eps){return Math.abs(this.x-that.x)<eps&&Math.abs(this.y-that.y)<eps;};x3dom.fields.SFVec2f.prototype.length=function(){return Math.sqrt((this.x*this.x)+(this.y*this.y));};x3dom.fields.SFVec2f.prototype.toGL=function(){return[this.x,this.y];};x3dom.fields.SFVec2f.prototype.toString=function(){return this.x+" "+this.y;};x3dom.fields.SFVec2f.prototype.setValueByStr=function(str){var m=/^\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*$/.exec(str);this.x=+m[1];this.y=+m[2];return this;};x3dom.fields.SFVec3f=function(x,y,z){if(arguments.length===0){this.x=0;this.y=0;this.z=0;}
else{this.x=x;this.y=y;this.z=z;}};x3dom.fields.SFVec3f.NullVector=new x3dom.fields.SFVec3f(0,0,0);x3dom.fields.SFVec3f.OneVector=new x3dom.fields.SFVec3f(1,1,1);x3dom.fields.SFVec3f.copy=function(v){return new x3dom.fields.SFVec3f(v.x,v.y,v.z);};x3dom.fields.SFVec3f.MIN=function(){return new x3dom.fields.SFVec3f(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);};x3dom.fields.SFVec3f.MAX=function(){return new x3dom.fields.SFVec3f(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE);};x3dom.fields.SFVec3f.parse=function(str){try{var m=/^\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*$/.exec(str);return new x3dom.fields.SFVec3f(+m[1],+m[2],+m[3]);}
catch(e){var c=x3dom.fields.SFColor.colorParse(str);return new x3dom.fields.SFVec3f(c.r,c.g,c.b);}};x3dom.fields.SFVec3f.prototype.copy=function(){return x3dom.fields.SFVec3f.copy(this);};x3dom.fields.SFVec3f.prototype.setValues=function(that){this.x=that.x;this.y=that.y;this.z=that.z;};x3dom.fields.SFVec3f.prototype.at=function(i){switch(i){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:return this.x;}};x3dom.fields.SFVec3f.prototype.add=function(that){return new x3dom.fields.SFVec3f(this.x+that.x,this.y+that.y,this.z+that.z);};x3dom.fields.SFVec3f.prototype.addScaled=function(that,s){return new x3dom.fields.SFVec3f(this.x+s*that.x,this.y+s*that.y,this.z+s*that.z);};x3dom.fields.SFVec3f.prototype.subtract=function(that){return new x3dom.fields.SFVec3f(this.x-that.x,this.y-that.y,this.z-that.z);};x3dom.fields.SFVec3f.prototype.negate=function(){return new x3dom.fields.SFVec3f(-this.x,-this.y,-this.z);};x3dom.fields.SFVec3f.prototype.dot=function(that){return(this.x*that.x+this.y*that.y+this.z*that.z);};x3dom.fields.SFVec3f.prototype.cross=function(that){return new x3dom.fields.SFVec3f(this.y*that.z-this.z*that.y,this.z*that.x-this.x*that.z,this.x*that.y-this.y*that.x);};x3dom.fields.SFVec3f.prototype.reflect=function(n){var d2=this.dot(n)*2;return new x3dom.fields.SFVec3f(this.x-d2*n.x,this.y-d2*n.y,this.z-d2*n.z);};x3dom.fields.SFVec3f.prototype.length=function(){return Math.sqrt((this.x*this.x)+(this.y*this.y)+(this.z*this.z));};x3dom.fields.SFVec3f.prototype.normalize=function(){var n=this.length();if(n){n=1.0/n;}
return new x3dom.fields.SFVec3f(this.x*n,this.y*n,this.z*n);};x3dom.fields.SFVec3f.prototype.multComponents=function(that){return new x3dom.fields.SFVec3f(this.x*that.x,this.y*that.y,this.z*that.z);};x3dom.fields.SFVec3f.prototype.multiply=function(n){return new x3dom.fields.SFVec3f(this.x*n,this.y*n,this.z*n);};x3dom.fields.SFVec3f.prototype.divide=function(n){var denom=n?(1.0/n):1.0;return new x3dom.fields.SFVec3f(this.x*denom,this.y*denom,this.z*denom);};x3dom.fields.SFVec3f.prototype.equals=function(that,eps){return Math.abs(this.x-that.x)<eps&&Math.abs(this.y-that.y)<eps&&Math.abs(this.z-that.z)<eps;};x3dom.fields.SFVec3f.prototype.toGL=function(){return[this.x,this.y,this.z];};x3dom.fields.SFVec3f.prototype.toString=function(){return this.x+" "+this.y+" "+this.z;};x3dom.fields.SFVec3f.prototype.setValueByStr=function(str){try{var m=/^\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*$/.exec(str);this.x=+m[1];this.y=+m[2];this.z=+m[3];}
catch(e){var c=x3dom.fields.SFColor.colorParse(str);this.x=c.r;this.y=c.g;this.z=c.b;}
return this;};x3dom.fields.SFVec4f=function(x,y,z,w){if(arguments.length===0){this.x=0;this.y=0;this.z=0;this.w=0;}
else{this.x=x;this.y=y;this.z=z;this.w=w;}};x3dom.fields.SFVec4f.copy=function(v){return new x3dom.fields.SFVec4f(v.x,v.y,v.z,v.w);};x3dom.fields.SFVec4f.prototype.copy=function(){return x3dom.fields.SFVec4f(this);};x3dom.fields.SFVec4f.parse=function(str){var m=/^\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*$/.exec(str);return new x3dom.fields.SFVec4f(+m[1],+m[2],+m[3],+m[4]);};x3dom.fields.SFVec4f.prototype.setValueByStr=function(str){var m=/^\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*$/.exec(str);this.x=+m[1];this.y=+m[2];this.z=+m[3];this.w=+m[4];return this;};x3dom.fields.SFVec4f.prototype.toGL=function(){return[this.x,this.y,this.z,this.w];};x3dom.fields.SFVec4f.prototype.toString=function(){return this.x+" "+this.y+" "+this.z+" "+this.w;};x3dom.fields.Quaternion=function(x,y,z,w){if(arguments.length===0){this.x=0;this.y=0;this.z=0;this.w=1;}
else{this.x=x;this.y=y;this.z=z;this.w=w;}};x3dom.fields.Quaternion.copy=function(v){return new x3dom.fields.Quaternion(v.x,v.y,v.z,v.w);};x3dom.fields.Quaternion.prototype.multiply=function(that){return new x3dom.fields.Quaternion(this.w*that.x+this.x*that.w+this.y*that.z-this.z*that.y,this.w*that.y+this.y*that.w+this.z*that.x-this.x*that.z,this.w*that.z+this.z*that.w+this.x*that.y-this.y*that.x,this.w*that.w-this.x*that.x-this.y*that.y-this.z*that.z);};x3dom.fields.Quaternion.parseAxisAngle=function(str){var m=/^\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*$/.exec(str);return x3dom.fields.Quaternion.axisAngle(new x3dom.fields.SFVec3f(+m[1],+m[2],+m[3]),+m[4]);};x3dom.fields.Quaternion.axisAngle=function(axis,a){var t=axis.length();if(t>x3dom.fields.Eps)
{var s=Math.sin(a/2)/t;var c=Math.cos(a/2);return new x3dom.fields.Quaternion(axis.x*s,axis.y*s,axis.z*s,c);}
else
{return new x3dom.fields.Quaternion(0,0,0,1);}};x3dom.fields.Quaternion.prototype.copy=function(){return x3dom.fields.Quaternion.copy(this);};x3dom.fields.Quaternion.prototype.toMatrix=function(){var xx=this.x*this.x;var xy=this.x*this.y;var xz=this.x*this.z;var yy=this.y*this.y;var yz=this.y*this.z;var zz=this.z*this.z;var wx=this.w*this.x;var wy=this.w*this.y;var wz=this.w*this.z;return new x3dom.fields.SFMatrix4f(1-2*(yy+zz),2*(xy-wz),2*(xz+wy),0,2*(xy+wz),1-2*(xx+zz),2*(yz-wx),0,2*(xz-wy),2*(yz+wx),1-2*(xx+yy),0,0,0,0,1);};x3dom.fields.Quaternion.prototype.toAxisAngle=function()
{var x=0,y=0,z=0;var s=0,a=0;var that=this;if(this.w>1)
{that=x3dom.fields.Quaternion.normalize(this);}
a=2*Math.acos(that.w);s=Math.sqrt(1-that.w*that.w);if(s==0)
{x=that.x;y=that.y;z=that.z;}
else
{x=that.x/s;y=that.y/s;z=that.z/s;}
return[new x3dom.fields.SFVec3f(x,y,z),a];};x3dom.fields.Quaternion.prototype.angle=function()
{return 2*Math.acos(this.w);};x3dom.fields.Quaternion.prototype.setValue=function(matrix)
{var tr,s=1;var qt=[0,0,0];var i=0,j=0,k=0;var nxt=[1,2,0];tr=matrix._00+matrix._11+matrix._22;if(tr>0.0)
{s=Math.sqrt(tr+1.0);this.w=s*0.5;s=0.5/s;this.x=(matrix._21-matrix._12)*s;this.y=(matrix._02-matrix._20)*s;this.z=(matrix._10-matrix._01)*s;}
else
{if(matrix._11>matrix._00){i=1;}
else{i=0;}
if(matrix._22>matrix.at(i,i)){i=2;}
j=nxt[i];k=nxt[j];s=Math.sqrt(matrix.at(i,i)-(matrix.at(j,j)+matrix.at(k,k))+1.0);qt[i]=s*0.5;s=0.5/s;this.w=(matrix.at(k,j)-matrix.at(j,k))*s;qt[j]=(matrix.at(j,i)+matrix.at(i,j))*s;qt[k]=(matrix.at(k,i)+matrix.at(i,k))*s;this.x=qt[0];this.y=qt[1];this.z=qt[2];}
if(this.w>1.0||this.w<-1.0)
{var errThreshold=1+(x3dom.fields.Eps*100);if(this.w>errThreshold||this.w<-errThreshold)
{x3dom.debug.logInfo("MatToQuat: BUG: |quat[4]| ("+this.w+") >> 1.0 !");}
if(this.w>1.0){this.w=1.0;}
else{this.w=-1.0;}}};x3dom.fields.Quaternion.prototype.setFromEuler=function(alpha,beta,gamma){var sx=Math.sin(alpha*0.5);var cx=Math.cos(alpha*0.5);var sy=Math.sin(beta*0.5);var cy=Math.cos(beta*0.5);var sz=Math.sin(gamma*0.5);var cz=Math.cos(gamma*0.5);this.x=(sx*cy*cz)-(cx*sy*sz);this.y=(cx*sy*cz)+(sx*cy*sz);this.z=(cx*cy*sz)-(sx*sy*cz);this.w=(cx*cy*cz)+(sx*sy*sz);};x3dom.fields.Quaternion.prototype.dot=function(that){return this.x*that.x+this.y*that.y+this.z*that.z+this.w*that.w;};x3dom.fields.Quaternion.prototype.add=function(that){return new x3dom.fields.Quaternion(this.x+that.x,this.y+that.y,this.z+that.z,this.w+that.w);};x3dom.fields.Quaternion.prototype.subtract=function(that){return new x3dom.fields.Quaternion(this.x-that.x,this.y-that.y,this.z-that.z,this.w-that.w);};x3dom.fields.Quaternion.prototype.setValues=function(that){this.x=that.x;this.y=that.y;this.z=that.z;this.w=that.w;};x3dom.fields.Quaternion.prototype.equals=function(that,eps){return(this.dot(that)>=1.0-eps);};x3dom.fields.Quaternion.prototype.multScalar=function(s){return new x3dom.fields.Quaternion(this.x*s,this.y*s,this.z*s,this.w*s);};x3dom.fields.Quaternion.prototype.normalize=function(that){var d2=this.dot(that);var id=1.0;if(d2){id=1.0/Math.sqrt(d2);}
return new x3dom.fields.Quaternion(this.x*id,this.y*id,this.z*id,this.w*id);};x3dom.fields.Quaternion.prototype.negate=function(){return new x3dom.fields.Quaternion(-this.x,-this.y,-this.z,-this.w);};x3dom.fields.Quaternion.prototype.inverse=function(){return new x3dom.fields.Quaternion(-this.x,-this.y,-this.z,this.w);};x3dom.fields.Quaternion.prototype.slerp=function(that,t){var cosom=this.dot(that);var rot1;if(cosom<0.0)
{cosom=-cosom;rot1=that.negate();}
else
{rot1=new x3dom.fields.Quaternion(that.x,that.y,that.z,that.w);}
var scalerot0,scalerot1;if((1.0-cosom)>0.00001)
{var omega=Math.acos(cosom);var sinom=Math.sin(omega);scalerot0=Math.sin((1.0-t)*omega)/sinom;scalerot1=Math.sin(t*omega)/sinom;}
else
{scalerot0=1.0-t;scalerot1=t;}
return this.multScalar(scalerot0).add(rot1.multScalar(scalerot1));};x3dom.fields.Quaternion.rotateFromTo=function(fromVec,toVec){var from=fromVec.normalize();var to=toVec.normalize();var cost=from.dot(to);if(cost>0.99999)
{return new x3dom.fields.Quaternion(0,0,0,1);}
else if(cost<-0.99999)
{var cAxis=new x3dom.fields.SFVec3f(1,0,0);var tmp=from.cross(cAxis);if(tmp.length()<0.00001)
{cAxis.x=0;cAxis.y=1;cAxis.z=0;tmp=from.cross(cAxis);}
tmp=tmp.normalize();return x3dom.fields.Quaternion.axisAngle(tmp,Math.PI);}
var axis=fromVec.cross(toVec);axis=axis.normalize();var s=Math.sqrt(0.5*(1.0-cost));axis=axis.multiply(s);s=Math.sqrt(0.5*(1.0+cost));return new x3dom.fields.Quaternion(axis.x,axis.y,axis.z,s);};x3dom.fields.Quaternion.prototype.toGL=function(){var val=this.toAxisAngle();return[val[0].x,val[0].y,val[0].z,val[1]];};x3dom.fields.Quaternion.prototype.toString=function(){return this.x+" "+this.y+" "+this.z+", "+this.w;};x3dom.fields.Quaternion.prototype.setValueByStr=function(str){var m=/^\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*$/.exec(str);var quat=x3dom.fields.Quaternion.axisAngle(new x3dom.fields.SFVec3f(+m[1],+m[2],+m[3]),+m[4]);this.x=quat.x;this.y=quat.y;this.z=quat.z;this.w=quat.w;return this;};x3dom.fields.SFColor=function(r,g,b){if(arguments.length===0){this.r=0;this.g=0;this.b=0;}
else{this.r=r;this.g=g;this.b=b;}};x3dom.fields.SFColor.parse=function(str){try{var m=/^\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*$/.exec(str);return new x3dom.fields.SFColor(+m[1],+m[2],+m[3]);}
catch(e){return x3dom.fields.SFColor.colorParse(str);}};x3dom.fields.SFColor.copy=function(that){return new x3dom.fields.SFColor(that.r,that.g,that.b);};x3dom.fields.SFColor.prototype.copy=function(){return x3dom.fields.SFColor.copy(this);};x3dom.fields.SFColor.prototype.setHSV=function(h,s,v){x3dom.debug.logWarning("SFColor.setHSV() NYI");};x3dom.fields.SFColor.prototype.getHSV=function(){var h=0,s=0,v=0;x3dom.debug.logWarning("SFColor.getHSV() NYI");return[h,s,v];};x3dom.fields.SFColor.prototype.setValues=function(color){this.r=color.r;this.g=color.g;this.b=color.b;};x3dom.fields.SFColor.prototype.equals=function(that,eps){return Math.abs(this.r-that.r)<eps&&Math.abs(this.g-that.g)<eps&&Math.abs(this.b-that.b)<eps;};x3dom.fields.SFColor.prototype.add=function(that){return new x3dom.fields.SFColor(this.r+that.r,this.g+that.g,this.b+that.b);};x3dom.fields.SFColor.prototype.subtract=function(that){return new x3dom.fields.SFColor(this.r-that.r,this.g-that.g,this.b-that.b);};x3dom.fields.SFColor.prototype.multiply=function(n){return new x3dom.fields.SFColor(this.r*n,this.g*n,this.b*n);};x3dom.fields.SFColor.prototype.toGL=function(){return[this.r,this.g,this.b];};x3dom.fields.SFColor.prototype.toString=function(){return this.r+" "+this.g+" "+this.b;};x3dom.fields.SFColor.prototype.setValueByStr=function(str){try{var m=/^\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*$/.exec(str);this.r=+m[1];this.g=+m[2];this.b=+m[3];}
catch(e){var c=x3dom.fields.SFColor.colorParse(str);this.r=c.r;this.g=c.g;this.b=c.b;}
return this;};x3dom.fields.SFColor.colorParse=function(color){var red=0,green=0,blue=0;var color_names={aliceblue:'f0f8ff',antiquewhite:'faebd7',aqua:'00ffff',aquamarine:'7fffd4',azure:'f0ffff',beige:'f5f5dc',bisque:'ffe4c4',black:'000000',blanchedalmond:'ffebcd',blue:'0000ff',blueviolet:'8a2be2',brown:'a52a2a',burlywood:'deb887',cadetblue:'5f9ea0',chartreuse:'7fff00',chocolate:'d2691e',coral:'ff7f50',cornflowerblue:'6495ed',cornsilk:'fff8dc',crimson:'dc143c',cyan:'00ffff',darkblue:'00008b',darkcyan:'008b8b',darkgoldenrod:'b8860b',darkgray:'a9a9a9',darkgreen:'006400',darkkhaki:'bdb76b',darkmagenta:'8b008b',darkolivegreen:'556b2f',darkorange:'ff8c00',darkorchid:'9932cc',darkred:'8b0000',darksalmon:'e9967a',darkseagreen:'8fbc8f',darkslateblue:'483d8b',darkslategray:'2f4f4f',darkturquoise:'00ced1',darkviolet:'9400d3',deeppink:'ff1493',deepskyblue:'00bfff',dimgray:'696969',dodgerblue:'1e90ff',feldspar:'d19275',firebrick:'b22222',floralwhite:'fffaf0',forestgreen:'228b22',fuchsia:'ff00ff',gainsboro:'dcdcdc',ghostwhite:'f8f8ff',gold:'ffd700',goldenrod:'daa520',gray:'808080',green:'008000',greenyellow:'adff2f',honeydew:'f0fff0',hotpink:'ff69b4',indianred:'cd5c5c',indigo:'4b0082',ivory:'fffff0',khaki:'f0e68c',lavender:'e6e6fa',lavenderblush:'fff0f5',lawngreen:'7cfc00',lemonchiffon:'fffacd',lightblue:'add8e6',lightcoral:'f08080',lightcyan:'e0ffff',lightgoldenrodyellow:'fafad2',lightgrey:'d3d3d3',lightgreen:'90ee90',lightpink:'ffb6c1',lightsalmon:'ffa07a',lightseagreen:'20b2aa',lightskyblue:'87cefa',lightslateblue:'8470ff',lightslategray:'778899',lightsteelblue:'b0c4de',lightyellow:'ffffe0',lime:'00ff00',limegreen:'32cd32',linen:'faf0e6',magenta:'ff00ff',maroon:'800000',mediumaquamarine:'66cdaa',mediumblue:'0000cd',mediumorchid:'ba55d3',mediumpurple:'9370d8',mediumseagreen:'3cb371',mediumslateblue:'7b68ee',mediumspringgreen:'00fa9a',mediumturquoise:'48d1cc',mediumvioletred:'c71585',midnightblue:'191970',mintcream:'f5fffa',mistyrose:'ffe4e1',moccasin:'ffe4b5',navajowhite:'ffdead',navy:'000080',oldlace:'fdf5e6',olive:'808000',olivedrab:'6b8e23',orange:'ffa500',orangered:'ff4500',orchid:'da70d6',palegoldenrod:'eee8aa',palegreen:'98fb98',paleturquoise:'afeeee',palevioletred:'d87093',papayawhip:'ffefd5',peachpuff:'ffdab9',peru:'cd853f',pink:'ffc0cb',plum:'dda0dd',powderblue:'b0e0e6',purple:'800080',red:'ff0000',rosybrown:'bc8f8f',royalblue:'4169e1',saddlebrown:'8b4513',salmon:'fa8072',sandybrown:'f4a460',seagreen:'2e8b57',seashell:'fff5ee',sienna:'a0522d',silver:'c0c0c0',skyblue:'87ceeb',slateblue:'6a5acd',slategray:'708090',snow:'fffafa',springgreen:'00ff7f',steelblue:'4682b4',tan:'d2b48c',teal:'008080',thistle:'d8bfd8',tomato:'ff6347',turquoise:'40e0d0',violet:'ee82ee',violetred:'d02090',wheat:'f5deb3',white:'ffffff',whitesmoke:'f5f5f5',yellow:'ffff00',yellowgreen:'9acd32'};if(color_names[color]){color="#"+color_names[color];}
if(color.substr&&color.substr(0,1)==="#"){color=color.substr(1);var len=color.length;if(len===6){red=parseInt("0x"+color.substr(0,2),16)/255.0;green=parseInt("0x"+color.substr(2,2),16)/255.0;blue=parseInt("0x"+color.substr(4,2),16)/255.0;}
else if(len===3){red=parseInt("0x"+color.substr(0,1),16)/15.0;green=parseInt("0x"+color.substr(1,1),16)/15.0;blue=parseInt("0x"+color.substr(2,1),16)/15.0;}}
return new x3dom.fields.SFColor(red,green,blue);};x3dom.fields.SFColorRGBA=function(r,g,b,a){if(arguments.length===0){this.r=0;this.g=0;this.b=0;this.a=1;}
else{this.r=r;this.g=g;this.b=b;this.a=a;}};x3dom.fields.SFColorRGBA.parse=function(str){try{var m=/^([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)$/.exec(str);return new x3dom.fields.SFColorRGBA(+m[1],+m[2],+m[3],+m[4]);}
catch(e){return x3dom.fields.SFColorRGBA.colorParse(str);}};x3dom.fields.SFColorRGBA.copy=function(that){return new x3dom.fields.SFColorRGBA(that.r,that.g,that.b,that.a);};x3dom.fields.SFColorRGBA.prototype.copy=function(){return x3dom.fields.SFColorRGBA.copy(this);};x3dom.fields.SFColorRGBA.prototype.setValues=function(color){this.r=color.r;this.g=color.g;this.b=color.b;this.a=color.a;};x3dom.fields.SFColorRGBA.prototype.equals=function(that,eps){return Math.abs(this.r-that.r)<eps&&Math.abs(this.g-that.g)<eps&&Math.abs(this.b-that.b)<eps&&Math.abs(this.a-that.a)<eps;};x3dom.fields.SFColorRGBA.prototype.toGL=function(){return[this.r,this.g,this.b,this.a];};x3dom.fields.SFColorRGBA.prototype.toString=function(){return this.r+" "+this.g+" "+this.b+" "+this.a;};x3dom.fields.SFColorRGBA.prototype.setValueByStr=function(str){try{var m=/^([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)\s*,?\s*([+\-]?\d*\.*\d*[eE]?[+\-]?\d*?)$/.exec(str);this.r=+m[1];this.g=+m[2];this.b=+m[3];this.a=+m[4];}
catch(e){var c=x3dom.fields.SFColorRGBA.colorParse(str);this.r=c.r;this.g=c.g;this.b=c.b;this.a=c.a;}
return this;};x3dom.fields.SFColorRGBA.prototype.toUint=function(){return((Math.round(this.r*255)<<24)|(Math.round(this.g*255)<<16)|(Math.round(this.b*255)<<8)|Math.round(this.a*255))>>>0;};x3dom.fields.SFColorRGBA.colorParse=function(color){var red=0,green=0,blue=0,alpha=0;var color_names={aliceblue:'f0f8ff',antiquewhite:'faebd7',aqua:'00ffff',aquamarine:'7fffd4',azure:'f0ffff',beige:'f5f5dc',bisque:'ffe4c4',black:'000000',blanchedalmond:'ffebcd',blue:'0000ff',blueviolet:'8a2be2',brown:'a52a2a',burlywood:'deb887',cadetblue:'5f9ea0',chartreuse:'7fff00',chocolate:'d2691e',coral:'ff7f50',cornflowerblue:'6495ed',cornsilk:'fff8dc',crimson:'dc143c',cyan:'00ffff',darkblue:'00008b',darkcyan:'008b8b',darkgoldenrod:'b8860b',darkgray:'a9a9a9',darkgreen:'006400',darkkhaki:'bdb76b',darkmagenta:'8b008b',darkolivegreen:'556b2f',darkorange:'ff8c00',darkorchid:'9932cc',darkred:'8b0000',darksalmon:'e9967a',darkseagreen:'8fbc8f',darkslateblue:'483d8b',darkslategray:'2f4f4f',darkturquoise:'00ced1',darkviolet:'9400d3',deeppink:'ff1493',deepskyblue:'00bfff',dimgray:'696969',dodgerblue:'1e90ff',feldspar:'d19275',firebrick:'b22222',floralwhite:'fffaf0',forestgreen:'228b22',fuchsia:'ff00ff',gainsboro:'dcdcdc',ghostwhite:'f8f8ff',gold:'ffd700',goldenrod:'daa520',gray:'808080',green:'008000',greenyellow:'adff2f',honeydew:'f0fff0',hotpink:'ff69b4',indianred:'cd5c5c',indigo:'4b0082',ivory:'fffff0',khaki:'f0e68c',lavender:'e6e6fa',lavenderblush:'fff0f5',lawngreen:'7cfc00',lemonchiffon:'fffacd',lightblue:'add8e6',lightcoral:'f08080',lightcyan:'e0ffff',lightgoldenrodyellow:'fafad2',lightgrey:'d3d3d3',lightgreen:'90ee90',lightpink:'ffb6c1',lightsalmon:'ffa07a',lightseagreen:'20b2aa',lightskyblue:'87cefa',lightslateblue:'8470ff',lightslategray:'778899',lightsteelblue:'b0c4de',lightyellow:'ffffe0',lime:'00ff00',limegreen:'32cd32',linen:'faf0e6',magenta:'ff00ff',maroon:'800000',mediumaquamarine:'66cdaa',mediumblue:'0000cd',mediumorchid:'ba55d3',mediumpurple:'9370d8',mediumseagreen:'3cb371',mediumslateblue:'7b68ee',mediumspringgreen:'00fa9a',mediumturquoise:'48d1cc',mediumvioletred:'c71585',midnightblue:'191970',mintcream:'f5fffa',mistyrose:'ffe4e1',moccasin:'ffe4b5',navajowhite:'ffdead',navy:'000080',oldlace:'fdf5e6',olive:'808000',olivedrab:'6b8e23',orange:'ffa500',orangered:'ff4500',orchid:'da70d6',palegoldenrod:'eee8aa',palegreen:'98fb98',paleturquoise:'afeeee',palevioletred:'d87093',papayawhip:'ffefd5',peachpuff:'ffdab9',peru:'cd853f',pink:'ffc0cb',plum:'dda0dd',powderblue:'b0e0e6',purple:'800080',red:'ff0000',rosybrown:'bc8f8f',royalblue:'4169e1',saddlebrown:'8b4513',salmon:'fa8072',sandybrown:'f4a460',seagreen:'2e8b57',seashell:'fff5ee',sienna:'a0522d',silver:'c0c0c0',skyblue:'87ceeb',slateblue:'6a5acd',slategray:'708090',snow:'fffafa',springgreen:'00ff7f',steelblue:'4682b4',tan:'d2b48c',teal:'008080',thistle:'d8bfd8',tomato:'ff6347',turquoise:'40e0d0',violet:'ee82ee',violetred:'d02090',wheat:'f5deb3',white:'ffffff',whitesmoke:'f5f5f5',yellow:'ffff00',yellowgreen:'9acd32'};if(color_names[color]){color="#"+color_names[color]+"ff";}
if(color.substr&&color.substr(0,1)==="#"){color=color.substr(1);var len=color.length;if(len===8){red=parseInt("0x"+color.substr(0,2),16)/255.0;green=parseInt("0x"+color.substr(2,2),16)/255.0;blue=parseInt("0x"+color.substr(4,2),16)/255.0;alpha=parseInt("0x"+color.substr(6,2),16)/255.0;}
else if(len===6){red=parseInt("0x"+color.substr(0,2),16)/255.0;green=parseInt("0x"+color.substr(2,2),16)/255.0;blue=parseInt("0x"+color.substr(4,2),16)/255.0;alpha=1.0;}
else if(len===4){red=parseInt("0x"+color.substr(0,1),16)/15.0;green=parseInt("0x"+color.substr(1,1),16)/15.0;blue=parseInt("0x"+color.substr(2,1),16)/15.0;alpha=parseInt("0x"+color.substr(3,1),16)/15.0;}
else if(len===3){red=parseInt("0x"+color.substr(0,1),16)/15.0;green=parseInt("0x"+color.substr(1,1),16)/15.0;blue=parseInt("0x"+color.substr(2,1),16)/15.0;alpha=1.0;}}
return new x3dom.fields.SFColorRGBA(red,green,blue,alpha);};x3dom.fields.SFImage=function(w,h,c,arr){if(arguments.length===0||!(arr&&arr.map)){this.width=0;this.height=0;this.comp=0;this.array=[];}
else{this.width=w;this.height=h;this.comp=c;var that=this.array;arr.map(function(v){that.push(v);},this.array);}};x3dom.fields.SFImage.parse=function(str){var img=new x3dom.fields.SFImage();img.setValueByStr(str);return img;};x3dom.fields.SFImage.copy=function(that){var destination=new x3dom.fields.SFImage();destination.width=that.width;destination.height=that.height;destination.comp=that.comp;destination.setPixels(that.array);return destination;};x3dom.fields.SFImage.prototype.copy=function(){return x3dom.fields.SFImage.copy(this);};x3dom.fields.SFImage.prototype.setValueByStr=function(str){var mc=str.match(/(\w+)/g);var n=mc.length;var c2=0;var hex="0123456789ABCDEF";this.array=[];if(n>2){this.width=+mc[0];this.height=+mc[1];this.comp=+mc[2];c2=2*this.comp;}else{this.width=0;this.height=0;this.comp=0;return;}
var len,i;for(i=3;i<n;i++){var r,g,b,a;if(!mc[i].substr){continue;}
if(mc[i].substr(1,1).toLowerCase()!=="x"){var inp=parseInt(mc[i],10);if(this.comp===1){r=inp;this.array.push(r);}
else if(this.comp===2){r=inp>>8&255;g=inp&255;this.array.push(r,g);}
else if(this.comp===3){r=inp>>16&255;g=inp>>8&255;b=inp&255;this.array.push(r,g,b);}
else if(this.comp===4){r=inp>>24&255;g=inp>>16&255;b=inp>>8&255;a=inp&255;this.array.push(r,g,b,a);}}
else if(mc[i].substr(1,1).toLowerCase()==="x"){mc[i]=mc[i].substr(2);len=mc[i].length;if(len===c2){if(this.comp===1){r=parseInt("0x"+mc[i].substr(0,2),16);this.array.push(r);}
else if(this.comp===2){r=parseInt("0x"+mc[i].substr(0,2),16);g=parseInt("0x"+mc[i].substr(2,2),16);this.array.push(r,g);}
else if(this.comp===3){r=parseInt("0x"+mc[i].substr(0,2),16);g=parseInt("0x"+mc[i].substr(2,2),16);b=parseInt("0x"+mc[i].substr(4,2),16);this.array.push(r,g,b);}
else if(this.comp===4){r=parseInt("0x"+mc[i].substr(0,2),16);g=parseInt("0x"+mc[i].substr(2,2),16);b=parseInt("0x"+mc[i].substr(4,2),16);a=parseInt("0x"+mc[i].substr(6,2),16);this.array.push(r,g,b,a);}}}}};x3dom.fields.SFImage.prototype.setPixel=function(x,y,color){var startIdx=(y*this.width+x)*this.comp;if(this.comp===1&&startIdx<this.array.length){this.array[startIdx]=color.r*255;}
else if(this.comp===2&&(startIdx+1)<this.array.length){this.array[startIdx]=color.r*255;this.array[startIdx+1]=color.g*255;}
else if(this.comp===3&&(startIdx+2)<this.array.length){this.array[startIdx]=color.r*255;this.array[startIdx+1]=color.g*255;this.array[startIdx+2]=color.b*255;}
else if(this.comp===4&&(startIdx+3)<this.array.length){this.array[startIdx]=color.r*255;this.array[startIdx+1]=color.g*255;this.array[startIdx+2]=color.b*255;this.array[startIdx+3]=color.a*255;}};x3dom.fields.SFImage.prototype.getPixel=function(x,y){var startIdx=(y*this.width+x)*this.comp;if(this.comp===1&&startIdx<this.array.length){return new x3dom.fields.SFColorRGBA(this.array[startIdx]/255,0,0,1);}
else if(this.comp===2&&(startIdx+1)<this.array.length){return new x3dom.fields.SFColorRGBA(this.array[startIdx]/255,this.array[startIdx+1]/255,0,1);}
else if(this.comp===3&&(startIdx+2)<this.array.length){return new x3dom.fields.SFColorRGBA(this.array[startIdx]/255,this.array[startIdx+1]/255,this.array[startIdx+2]/255,1);}
else if(this.comp===4&&(startIdx+3)<this.array.length){return new x3dom.fields.SFColorRGBA(this.array[startIdx]/255,this.array[startIdx+1]/255,this.array[startIdx+2]/255,this.array[startIdx+3]/255);}};x3dom.fields.SFImage.prototype.setPixels=function(pixels){var i,idx=0;if(this.comp===1){for(i=0;i<pixels.length;i++){this.array[idx++]=pixels[i].r*255;}}
else if(this.comp===2){for(i=0;i<pixels.length;i++){this.array[idx++]=pixels[i].r*255;this.array[idx++]=pixels[i].g*255;}}
else if(this.comp===3){for(i=0;i<pixels.length;i++){this.array[idx++]=pixels[i].r*255;this.array[idx++]=pixels[i].g*255;this.array[idx++]=pixels[i].b*255;}}
else if(this.comp===4){for(i=0;i<pixels.length;i++){this.array[idx++]=pixels[i].r*255;this.array[idx++]=pixels[i].g*255;this.array[idx++]=pixels[i].b*255;this.array[idx++]=pixels[i].a*255;}}};x3dom.fields.SFImage.prototype.getPixels=function(){var i;var pixels=[];if(this.comp===1){for(i=0;i<this.array.length;i+=this.comp){pixels.push(new x3dom.fields.SFColorRGBA(this.array[i]/255,0,0,1));}}
else if(this.comp===2){for(i=0;i<this.array.length;i+=this.comp){pixels.push(new x3dom.fields.SFColorRGBA(this.array[i]/255,this.array[i+1]/255,0,1));}}
else if(this.comp===3){for(i=0;i<this.array.length;i+=this.comp){pixels.push(new x3dom.fields.SFColorRGBA(this.array[i]/255,this.array[i+1]/255,this.array[i+2]/255,1));}}
else if(this.comp===4){for(i=0;i<this.array.length;i+=this.comp){pixels.push(new x3dom.fields.SFColorRGBA(this.array[i]/255,this.array[i+1]/255,this.array[i+2]/255,this.array[i+3]/255));}}
return pixels;};x3dom.fields.SFImage.prototype.toGL=function(){var a=[];Array.map(this.array,function(c){a.push(c);});return a;};x3dom.fields.MFColor=function(colorArray){if(colorArray){var that=this;colorArray.map(function(c){that.push(c);},this);}};x3dom.fields.MFColor.copy=function(colorArray){var destination=new x3dom.fields.MFColor();colorArray.map(function(v){destination.push(v.copy());},this);return destination;};x3dom.fields.MFColor.prototype=x3dom.extend([]);x3dom.fields.MFColor.parse=function(str){var mc=str.match(/([+\-0-9eE\.]+)/g);var colors=[];for(var i=0,n=mc?mc.length:0;i<n;i+=3){colors.push(new x3dom.fields.SFColor(+mc[i+0],+mc[i+1],+mc[i+2]));}
return new x3dom.fields.MFColor(colors);};x3dom.fields.MFColor.prototype.copy=function(){return x3dom.fields.MFColor.copy(this);};x3dom.fields.MFColor.prototype.setValueByStr=function(str){this.length=0;var mc=str.match(/([+\-0-9eE\.]+)/g);for(var i=0,n=mc?mc.length:0;i<n;i+=3){this.push(new x3dom.fields.SFColor(+mc[i+0],+mc[i+1],+mc[i+2]));}};x3dom.fields.MFColor.prototype.toGL=function(){var a=[];Array.map(this,function(c){a.push(c.r);a.push(c.g);a.push(c.b);});return a;};x3dom.fields.MFColorRGBA=function(colorArray){if(colorArray){var that=this;colorArray.map(function(c){that.push(c);},this);}};x3dom.fields.MFColorRGBA.copy=function(colorArray){var destination=new x3dom.fields.MFColorRGBA();colorArray.map(function(v){destination.push(v.copy());},this);return destination;};x3dom.fields.MFColorRGBA.prototype=x3dom.extend([]);x3dom.fields.MFColorRGBA.parse=function(str){var mc=str.match(/([+\-0-9eE\.]+)/g);var colors=[];for(var i=0,n=mc?mc.length:0;i<n;i+=4){colors.push(new x3dom.fields.SFColorRGBA(+mc[i+0],+mc[i+1],+mc[i+2],+mc[i+3]));}
return new x3dom.fields.MFColorRGBA(colors);};x3dom.fields.MFColorRGBA.prototype.copy=function(){return x3dom.fields.MFColorRGBA.copy(this);};x3dom.fields.MFColorRGBA.prototype.setValueByStr=function(str){this.length=0;var mc=str.match(/([+\-0-9eE\.]+)/g);for(var i=0,n=mc?mc.length:0;i<n;i+=4){this.push(new x3dom.fields.SFColorRGBA(+mc[i+0],+mc[i+1],+mc[i+2],+mc[i+3]));}};x3dom.fields.MFColorRGBA.prototype.toGL=function(){var a=[];Array.map(this,function(c){a.push(c.r);a.push(c.g);a.push(c.b);a.push(c.a);});return a;};x3dom.fields.MFRotation=function(rotArray){if(rotArray){var that=this;rotArray.map(function(v){that.push(v);},this);}};x3dom.fields.MFRotation.prototype=x3dom.extend([]);x3dom.fields.MFRotation.copy=function(rotationArray){var destination=new x3dom.fields.MFRotation();rotationArray.map(function(v){destination.push(v.copy());},this);return destination;};x3dom.fields.MFRotation.prototype.copy=function(){return x3dom.fields.MFRotation.copy(this);};x3dom.fields.MFRotation.parse=function(str){var mc=str.match(/([+\-0-9eE\.]+)/g);var vecs=[];for(var i=0,n=mc?mc.length:0;i<n;i+=4){vecs.push(x3dom.fields.Quaternion.axisAngle(new x3dom.fields.SFVec3f(+mc[i+0],+mc[i+1],+mc[i+2]),+mc[i+3]));}
return new x3dom.fields.MFRotation(vecs);};x3dom.fields.MFRotation.prototype.setValueByStr=function(str){this.length=0;var mc=str.match(/([+\-0-9eE\.]+)/g);for(var i=0,n=mc?mc.length:0;i<n;i+=4){this.push(x3dom.fields.Quaternion.axisAngle(new x3dom.fields.SFVec3f(+mc[i+0],+mc[i+1],+mc[i+2]),+mc[i+3]));}};x3dom.fields.MFRotation.prototype.toGL=function(){var a=[];Array.map(this,function(c){var val=c.toAxisAngle();a.push(val[0].x);a.push(val[0].y);a.push(val[0].z);a.push(val[1]);});return a;};x3dom.fields.MFVec3f=function(vec3Array){if(vec3Array){var that=this;vec3Array.map(function(v){that.push(v);},this);}};x3dom.fields.MFVec3f.prototype=x3dom.extend([]);x3dom.fields.MFVec3f.copy=function(vec3Array){var destination=new x3dom.fields.MFVec3f();vec3Array.map(function(v){destination.push(v.copy());},this);return destination;};x3dom.fields.MFVec3f.parse=function(str){var mc=str.match(/([+\-0-9eE\.]+)/g);var vecs=[];for(var i=0,n=mc?mc.length:0;i<n;i+=3){vecs.push(new x3dom.fields.SFVec3f(+mc[i+0],+mc[i+1],+mc[i+2]));}
return new x3dom.fields.MFVec3f(vecs);};x3dom.fields.MFVec3f.prototype.copy=function()
{x3dom.fields.MFVec3f.copy(this);};x3dom.fields.MFVec3f.prototype.setValueByStr=function(str){this.length=0;var mc=str.match(/([+\-0-9eE\.]+)/g);for(var i=0,n=mc?mc.length:0;i<n;i+=3){this.push(new x3dom.fields.SFVec3f(+mc[i+0],+mc[i+1],+mc[i+2]));}};x3dom.fields.MFVec3f.prototype.toGL=function(){var a=[];Array.map(this,function(c){a.push(c.x);a.push(c.y);a.push(c.z);});return a;};x3dom.fields.MFVec2f=function(vec2Array){if(vec2Array){var that=this;vec2Array.map(function(v){that.push(v);},this);}};x3dom.fields.MFVec2f.prototype=x3dom.extend([]);x3dom.fields.MFVec2f.copy=function(vec2Array){var destination=new x3dom.fields.MFVec2f();vec2Array.map(function(v){destination.push(v.copy());},this);return destination;};x3dom.fields.MFVec2f.parse=function(str){var mc=str.match(/([+\-0-9eE\.]+)/g);var vecs=[];for(var i=0,n=mc?mc.length:0;i<n;i+=2){vecs.push(new x3dom.fields.SFVec2f(+mc[i+0],+mc[i+1]));}
return new x3dom.fields.MFVec2f(vecs);};x3dom.fields.MFVec2f.prototype.copy=function(){return x3dom.fields.MFVec2f.copy(this);};x3dom.fields.MFVec2f.prototype.setValueByStr=function(str){this.length=0;var mc=str.match(/([+\-0-9eE\.]+)/g);for(var i=0,n=mc?mc.length:0;i<n;i+=2){this.push(new x3dom.fields.SFVec2f(+mc[i+0],+mc[i+1]));}};x3dom.fields.MFVec2f.prototype.toGL=function(){var a=[];Array.map(this,function(v){a.push(v.x);a.push(v.y);});return a;};x3dom.fields.MFInt32=function(array){if(array){var that=this;array.map(function(v){that.push(v);},this);}};x3dom.fields.MFInt32.prototype=x3dom.extend([]);x3dom.fields.MFInt32.copy=function(intArray){var destination=new x3dom.fields.MFInt32();intArray.map(function(v){destination.push(v);},this);return destination;};x3dom.fields.MFInt32.parse=function(str){var mc=str.match(/([+\-]?\d+\s*){1},?\s*/g);var vals=[];for(var i=0,n=mc?mc.length:0;i<n;++i){vals.push(parseInt(mc[i],10));}
return new x3dom.fields.MFInt32(vals);};x3dom.fields.MFInt32.prototype.copy=function(){return x3dom.fields.MFInt32.copy(this);};x3dom.fields.MFInt32.prototype.setValueByStr=function(str){this.length=0;var mc=str.match(/([+\-]?\d+\s*){1},?\s*/g);for(var i=0,n=mc?mc.length:0;i<n;++i){this.push(parseInt(mc[i],10));}};x3dom.fields.MFInt32.prototype.toGL=function(){var a=[];Array.map(this,function(v){a.push(v);});return a;};x3dom.fields.MFFloat=function(array){if(array){var that=this;array.map(function(v){that.push(v);},this);}};x3dom.fields.MFFloat.prototype=x3dom.extend([]);x3dom.fields.MFFloat.copy=function(floatArray){var destination=new x3dom.fields.MFFloat();floatArray.map(function(v){destination.push(v);},this);return destination;};x3dom.fields.MFFloat.parse=function(str){var mc=str.match(/([+\-0-9eE\.]+)/g);var vals=[];for(var i=0,n=mc?mc.length:0;i<n;i++){vals.push(+mc[i]);}
return new x3dom.fields.MFFloat(vals);};x3dom.fields.MFFloat.prototype.copy=function(){return x3dom.fields.MFFloat.copy(this);};x3dom.fields.MFFloat.prototype.setValueByStr=function(str){this.length=0;var mc=str.match(/([+\-0-9eE\.]+)/g);for(var i=0,n=mc?mc.length:0;i<n;i++){this.push(+mc[i]);}};x3dom.fields.MFFloat.prototype.toGL=function(){var a=[];Array.map(this,function(v){a.push(v);});return a;};x3dom.fields.MFBoolean=function(array){if(array){var that=this;array.map(function(v){that.push(v);},this);}};x3dom.fields.MFBoolean.prototype=x3dom.extend([]);x3dom.fields.MFBoolean.copy=function(boolArray){var destination=new x3dom.fields.MFBoolean();boolArray.map(function(v){destination.push(v);},this);return destination;};x3dom.fields.MFBoolean.parse=function(str){var mc=str.match(/(true|false|1|0)/ig);var vals=[];for(var i=0,n=mc?mc.length:0;i<n;i++){vals.push((mc[i]=='1'||mc[i].toLowerCase()=='true'));}
return new x3dom.fields.MFBoolean(vals);};x3dom.fields.MFBoolean.prototype.copy=function(){return x3dom.fields.MFBoolean.copy(this);};x3dom.fields.MFBoolean.prototype.setValueByStr=function(str){this.length=0;var mc=str.match(/(true|false|1|0)/ig);for(var i=0,n=mc?mc.length:0;i<n;i++){this.push((mc[i]=='1'||mc[i].toLowerCase()=='true'));}};x3dom.fields.MFBoolean.prototype.toGL=function(){var a=[];Array.map(this,function(v){a.push(v?1:0);});return a;};x3dom.fields.MFString=function(strArray){if(strArray&&strArray.map){var that=this;strArray.map(function(v){that.push(v);},this);}};x3dom.fields.MFString.prototype=x3dom.extend([]);x3dom.fields.MFString.copy=function(stringArray){var destination=new x3dom.fields.MFString();stringArray.map(function(v){destination.push(v);},this);return destination;};x3dom.fields.MFString.parse=function(str){var arr=[];if(str.length&&str[0]=='"'){var m,re=/"((?:[^\\"]|\\\\|\\")*)"/g;while((m=re.exec(str))){var s=m[1].replace(/\\([\\"])/,"$1");if(s!==undefined){arr.push(s);}}}
else{arr.push(str);}
return new x3dom.fields.MFString(arr);};x3dom.fields.MFString.prototype.copy=function(){return x3dom.fields.MFString.copy(this);};x3dom.fields.MFString.prototype.setValueByStr=function(str){this.length=0;if(str.length&&str[0]=='"'){var m,re=/"((?:[^\\"]|\\\\|\\")*)"/g;while((m=re.exec(str))){var s=m[1].replace(/\\([\\"])/,"$1");if(s!==undefined){this.push(s);}}}
else{this.push(str);}
return this;};x3dom.fields.MFString.prototype.toString=function(){var str="";for(var i=0,n=this.length;i<n;i++){str=str+this[i]+" ";}
return str;};x3dom.fields.SFNode=function(type){this.type=type;this.node=null;};x3dom.fields.SFNode.prototype.hasLink=function(node){return(node?(this.node===node):this.node);};x3dom.fields.SFNode.prototype.addLink=function(node){this.node=node;return true;};x3dom.fields.SFNode.prototype.rmLink=function(node){if(this.node===node){this.node=null;return true;}
else{return false;}};x3dom.fields.MFNode=function(type){this.type=type;this.nodes=[];};x3dom.fields.MFNode.prototype.hasLink=function(node){if(node){for(var i=0,n=this.nodes.length;i<n;i++){if(this.nodes[i]===node){return true;}}}
else{return(this.length>0);}
return false;};x3dom.fields.MFNode.prototype.addLink=function(node){this.nodes.push(node);return true;};x3dom.fields.MFNode.prototype.rmLink=function(node){for(var i=0,n=this.nodes.length;i<n;i++){if(this.nodes[i]===node){this.nodes.splice(i,1);return true;}}
return false;};x3dom.fields.MFNode.prototype.length=function(){return this.nodes.length;};x3dom.fields.Line=function(pos,dir)
{if(arguments.length===0)
{this.pos=new x3dom.fields.SFVec3f(0,0,0);this.dir=new x3dom.fields.SFVec3f(0,0,1);}
this.pos=x3dom.fields.SFVec3f.copy(pos);this.dir=x3dom.fields.SFVec3f.copy(dir);};x3dom.fields.Line.prototype.closestPoint=function(p)
{var distVec=p.subtract(this.pos);var projDist=distVec.dot(this.dir);return this.pos.add(this.dir.multiply(projDist));};x3dom.fields.Line.prototype.shortestDistance=function(p)
{var distVec=p.subtract(this.pos);var projDist=distVec.dot(this.dir);return distVec.subtract(this.dir.multiply(projDist)).length();};x3dom.fields.Ray=function(pos,dir)
{if(arguments.length===0)
{this.pos=new x3dom.fields.SFVec3f(0,0,0);this.dir=new x3dom.fields.SFVec3f(0,0,1);}
else
{this.pos=new x3dom.fields.SFVec3f(pos.x,pos.y,pos.z);var n=dir.length();if(n){n=1.0/n;}
this.dir=new x3dom.fields.SFVec3f(dir.x*n,dir.y*n,dir.z*n);}
this.enter=0;this.exit=0;this.hitObject=null;this.hitPoint={};this.dist=Number.MAX_VALUE;};x3dom.fields.Ray.prototype.toString=function(){return'Ray: ['+this.pos.toString()+'; '+this.dir.toString()+']';};x3dom.fields.Ray.prototype.intersectPlane=function(p,n)
{var result=null;var alpha;var nDotDir=n.dot(this.dir);if(nDotDir<0.0)
{alpha=(p.dot(n)-this.pos.dot(n))/nDotDir;result=this.pos.addScaled(this.dir,alpha);}
return result;};x3dom.fields.Ray.prototype.intersect=function(low,high)
{var isect=0.0;var out=Number.MAX_VALUE;var r,te,tl;if(this.dir.x>x3dom.fields.Eps)
{r=1.0/this.dir.x;te=(low.x-this.pos.x)*r;tl=(high.x-this.pos.x)*r;if(tl<out){out=tl;}
if(te>isect){isect=te;}}
else if(this.dir.x<-x3dom.fields.Eps)
{r=1.0/this.dir.x;te=(high.x-this.pos.x)*r;tl=(low.x-this.pos.x)*r;if(tl<out){out=tl;}
if(te>isect){isect=te;}}
else if(this.pos.x<low.x||this.pos.x>high.x)
{return false;}
if(this.dir.y>x3dom.fields.Eps)
{r=1.0/this.dir.y;te=(low.y-this.pos.y)*r;tl=(high.y-this.pos.y)*r;if(tl<out){out=tl;}
if(te>isect){isect=te;}
if(isect-out>=x3dom.fields.Eps){return false;}}
else if(this.dir.y<-x3dom.fields.Eps)
{r=1.0/this.dir.y;te=(high.y-this.pos.y)*r;tl=(low.y-this.pos.y)*r;if(tl<out){out=tl;}
if(te>isect){isect=te;}
if(isect-out>=x3dom.fields.Eps){return false;}}
else if(this.pos.y<low.y||this.pos.y>high.y)
{return false;}
if(this.dir.z>x3dom.fields.Eps)
{r=1.0/this.dir.z;te=(low.z-this.pos.z)*r;tl=(high.z-this.pos.z)*r;if(tl<out){out=tl;}
if(te>isect){isect=te;}}
else if(this.dir.z<-x3dom.fields.Eps)
{r=1.0/this.dir.z;te=(high.z-this.pos.z)*r;tl=(low.z-this.pos.z)*r;if(tl<out){out=tl;}
if(te>isect){isect=te;}}
else if(this.pos.z<low.z||this.pos.z>high.z)
{return false;}
this.enter=isect;this.exit=out;return(isect-out<x3dom.fields.Eps);};x3dom.fields.BoxVolume=function(min,max)
{if(arguments.length<2){this.min=new x3dom.fields.SFVec3f(0,0,0);this.max=new x3dom.fields.SFVec3f(0,0,0);this.valid=false;}
else{this.min=x3dom.fields.SFVec3f.copy(min);this.max=x3dom.fields.SFVec3f.copy(max);this.valid=true;}
this.updateInternals();};x3dom.fields.BoxVolume.prototype.getScalarValue=function()
{var extent=this.max.subtract(this.min);return(extent.x*extent.y*extent.z);};x3dom.fields.BoxVolume.copy=function(other)
{return new x3dom.fields.BoxVolume(other.min,other.max);};x3dom.fields.BoxVolume.prototype.updateInternals=function()
{this.radialVec=this.max.subtract(this.min).multiply(0.5);this.center=this.min.add(this.radialVec);this.diameter=2*this.radialVec.length();};x3dom.fields.BoxVolume.prototype.setBounds=function(min,max)
{this.min.setValues(min);this.max.setValues(max);this.updateInternals();this.valid=true;};x3dom.fields.BoxVolume.prototype.setBoundsByCenterSize=function(center,size)
{var halfSize=size.multiply(0.5);this.min=center.subtract(halfSize);this.max=center.add(halfSize);this.updateInternals();this.valid=true;};x3dom.fields.BoxVolume.prototype.extendBounds=function(min,max)
{if(this.valid)
{if(this.min.x>min.x){this.min.x=min.x;}
if(this.min.y>min.y){this.min.y=min.y;}
if(this.min.z>min.z){this.min.z=min.z;}
if(this.max.x<max.x){this.max.x=max.x;}
if(this.max.y<max.y){this.max.y=max.y;}
if(this.max.z<max.z){this.max.z=max.z;}
this.updateInternals();}
else
{this.setBounds(min,max);}};x3dom.fields.BoxVolume.prototype.getBounds=function(min,max)
{min.setValues(this.min);max.setValues(this.max);};x3dom.fields.BoxVolume.prototype.getRadialVec=function()
{return this.radialVec;};x3dom.fields.BoxVolume.prototype.invalidate=function()
{this.valid=false;this.min=new x3dom.fields.SFVec3f(0,0,0);this.max=new x3dom.fields.SFVec3f(0,0,0);};x3dom.fields.BoxVolume.prototype.isValid=function()
{return this.valid;};x3dom.fields.BoxVolume.prototype.getCenter=function()
{return this.center;};x3dom.fields.BoxVolume.prototype.getDiameter=function()
{return this.diameter;};x3dom.fields.BoxVolume.prototype.transform=function(m)
{var xmin,ymin,zmin;var xmax,ymax,zmax;xmin=xmax=m._03;ymin=ymax=m._13;zmin=zmax=m._23;var a=this.max.x*m._00;var b=this.min.x*m._00;if(a>=b){xmax+=a;xmin+=b;}
else{xmax+=b;xmin+=a;}
a=this.max.y*m._01;b=this.min.y*m._01;if(a>=b){xmax+=a;xmin+=b;}
else{xmax+=b;xmin+=a;}
a=this.max.z*m._02;b=this.min.z*m._02;if(a>=b){xmax+=a;xmin+=b;}
else{xmax+=b;xmin+=a;}
a=this.max.x*m._10;b=this.min.x*m._10;if(a>=b){ymax+=a;ymin+=b;}
else{ymax+=b;ymin+=a;}
a=this.max.y*m._11;b=this.min.y*m._11;if(a>=b){ymax+=a;ymin+=b;}
else{ymax+=b;ymin+=a;}
a=this.max.z*m._12;b=this.min.z*m._12;if(a>=b){ymax+=a;ymin+=b;}
else{ymax+=b;ymin+=a;}
a=this.max.x*m._20;b=this.min.x*m._20;if(a>=b){zmax+=a;zmin+=b;}
else{zmax+=b;zmin+=a;}
a=this.max.y*m._21;b=this.min.y*m._21;if(a>=b){zmax+=a;zmin+=b;}
else{zmax+=b;zmin+=a;}
a=this.max.z*m._22;b=this.min.z*m._22;if(a>=b){zmax+=a;zmin+=b;}
else{zmax+=b;zmin+=a;}
this.min.x=xmin;this.min.y=ymin;this.min.z=zmin;this.max.x=xmax;this.max.y=ymax;this.max.z=zmax;this.updateInternals();};x3dom.fields.BoxVolume.prototype.transformFrom=function(m,other)
{var xmin,ymin,zmin;var xmax,ymax,zmax;xmin=xmax=m._03;ymin=ymax=m._13;zmin=zmax=m._23;var a=other.max.x*m._00;var b=other.min.x*m._00;if(a>=b){xmax+=a;xmin+=b;}
else{xmax+=b;xmin+=a;}
a=other.max.y*m._01;b=other.min.y*m._01;if(a>=b){xmax+=a;xmin+=b;}
else{xmax+=b;xmin+=a;}
a=other.max.z*m._02;b=other.min.z*m._02;if(a>=b){xmax+=a;xmin+=b;}
else{xmax+=b;xmin+=a;}
a=other.max.x*m._10;b=other.min.x*m._10;if(a>=b){ymax+=a;ymin+=b;}
else{ymax+=b;ymin+=a;}
a=other.max.y*m._11;b=other.min.y*m._11;if(a>=b){ymax+=a;ymin+=b;}
else{ymax+=b;ymin+=a;}
a=other.max.z*m._12;b=other.min.z*m._12;if(a>=b){ymax+=a;ymin+=b;}
else{ymax+=b;ymin+=a;}
a=other.max.x*m._20;b=other.min.x*m._20;if(a>=b){zmax+=a;zmin+=b;}
else{zmax+=b;zmin+=a;}
a=other.max.y*m._21;b=other.min.y*m._21;if(a>=b){zmax+=a;zmin+=b;}
else{zmax+=b;zmin+=a;}
a=other.max.z*m._22;b=other.min.z*m._22;if(a>=b){zmax+=a;zmin+=b;}
else{zmax+=b;zmin+=a;}
this.min.x=xmin;this.min.y=ymin;this.min.z=zmin;this.max.x=xmax;this.max.y=ymax;this.max.z=zmax;this.updateInternals();this.valid=true;};x3dom.fields.FrustumVolume=function(clipMat)
{this.planeNormals=[];this.planeDistances=[];this.directionIndex=[];if(arguments.length===0){return;}
var planeEquation=[];for(var i=0;i<6;i++){this.planeNormals[i]=new x3dom.fields.SFVec3f(0,0,0);this.planeDistances[i]=0;this.directionIndex[i]=0;planeEquation[i]=new x3dom.fields.SFVec4f(0,0,0,0);}
planeEquation[0].x=clipMat._30-clipMat._00;planeEquation[0].y=clipMat._31-clipMat._01;planeEquation[0].z=clipMat._32-clipMat._02;planeEquation[0].w=clipMat._33-clipMat._03;planeEquation[1].x=clipMat._30+clipMat._00;planeEquation[1].y=clipMat._31+clipMat._01;planeEquation[1].z=clipMat._32+clipMat._02;planeEquation[1].w=clipMat._33+clipMat._03;planeEquation[2].x=clipMat._30+clipMat._10;planeEquation[2].y=clipMat._31+clipMat._11;planeEquation[2].z=clipMat._32+clipMat._12;planeEquation[2].w=clipMat._33+clipMat._13;planeEquation[3].x=clipMat._30-clipMat._10;planeEquation[3].y=clipMat._31-clipMat._11;planeEquation[3].z=clipMat._32-clipMat._12;planeEquation[3].w=clipMat._33-clipMat._13;planeEquation[4].x=clipMat._30+clipMat._20;planeEquation[4].y=clipMat._31+clipMat._21;planeEquation[4].z=clipMat._32+clipMat._22;planeEquation[4].w=clipMat._33+clipMat._23;planeEquation[5].x=clipMat._30-clipMat._20;planeEquation[5].y=clipMat._31-clipMat._21;planeEquation[5].z=clipMat._32-clipMat._22;planeEquation[5].w=clipMat._33-clipMat._23;for(i=0;i<6;i++){var vectorLength=Math.sqrt(planeEquation[i].x*planeEquation[i].x+
planeEquation[i].y*planeEquation[i].y+
planeEquation[i].z*planeEquation[i].z);planeEquation[i].x/=vectorLength;planeEquation[i].y/=vectorLength;planeEquation[i].z/=vectorLength;planeEquation[i].w/=-vectorLength;}
var updateDirectionIndex=function(normalVec){var ind=0;if(normalVec.x>0)ind|=1;if(normalVec.y>0)ind|=2;if(normalVec.z>0)ind|=4;return ind;};this.planeNormals[3].setValues(planeEquation[0]);this.planeDistances[3]=planeEquation[0].w;this.directionIndex[3]=updateDirectionIndex(this.planeNormals[3]);this.planeNormals[2].setValues(planeEquation[1]);this.planeDistances[2]=planeEquation[1].w;this.directionIndex[2]=updateDirectionIndex(this.planeNormals[2]);this.planeNormals[5].setValues(planeEquation[2]);this.planeDistances[5]=planeEquation[2].w;this.directionIndex[5]=updateDirectionIndex(this.planeNormals[5]);this.planeNormals[4].setValues(planeEquation[3]);this.planeDistances[4]=planeEquation[3].w;this.directionIndex[4]=updateDirectionIndex(this.planeNormals[4]);this.planeNormals[0].setValues(planeEquation[4]);this.planeDistances[0]=planeEquation[4].w;this.directionIndex[0]=updateDirectionIndex(this.planeNormals[0]);this.planeNormals[1].setValues(planeEquation[5]);this.planeDistances[1]=planeEquation[5].w;this.directionIndex[1]=updateDirectionIndex(this.planeNormals[1]);};x3dom.fields.FrustumVolume.prototype.intersect=function(vol,planeMask)
{if(this.planeNormals.length<6){x3dom.debug.logWarning("FrustumVolume not initialized!");return false;}
var that=this;var min=vol.min,max=vol.max;var setDirectionIndexPoint=function(index){var pnt=new x3dom.fields.SFVec3f(0,0,0);if(index&1){pnt.x=min.x;}
else{pnt.x=max.x;}
if(index&2){pnt.y=min.y;}
else{pnt.y=max.y;}
if(index&4){pnt.z=min.z;}
else{pnt.z=max.z;}
return pnt;};var pntIsInHalfSpace=function(i,pnt){var s=that.planeNormals[i].dot(pnt)-that.planeDistances[i];return(s>=0);};var isInHalfSpace=function(i){var p=setDirectionIndexPoint(that.directionIndex[i]);return pntIsInHalfSpace(i,p);};var isOutHalfSpace=function(i){var p=setDirectionIndexPoint(that.directionIndex[i]^7);return!pntIsInHalfSpace(i,p);};var mask=1;if(planeMask<0)planeMask=0;for(var i=0;i<6;i++,mask<<=1){if((planeMask&mask)!=0)
continue;if(isOutHalfSpace(i))
return-1;if(isInHalfSpace(i))
planeMask|=mask;}
return planeMask;};x3dom.docs={};x3dom.docs.specURLMap={CADGeometry:"CADGeometry.html",Core:"core.html",DIS:"dis.html",CubeMapTexturing:"env_texture.html",EnvironmentalEffects:"enveffects.html",EnvironmentalSensor:"envsensor.html",Followers:"followers.html",Geospatial:"geodata.html",Geometry2D:"geometry2D.html",Geometry3D:"geometry3D.html",Grouping:"group.html","H-Anim":"hanim.html",Interpolation:"interp.html",KeyDeviceSensor:"keyboard.html",Layering:"layering.html",Layout:"layout.html",Lighting:"lighting.html",Navigation:"navigation.html",Networking:"networking.html",NURBS:"nurbs.html",ParticleSystems:"particle_systems.html",Picking:"picking.html",PointingDeviceSensor:"pointingsensor.html",Rendering:"rendering.html",RigidBodyPhysics:"rigid_physics.html",Scripting:"scripting.html",Shaders:"shaders.html",Shape:"shape.html",Sound:"sound.html",Text:"text.html",Texturing3D:"texture3D.html",Texturing:"texturing.html",Time:"time.html",EventUtilities:"utils.html",VolumeRendering:"volume.html"};x3dom.docs.specBaseURL="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-1.2-X3D-AbstractSpecification/Part01/components/";x3dom.docs.getNodeTreeInfo=function(){var tn,t;var types="";var objInArray=function(array,obj){for(var i=0;i<array.length;i++){if(array[i]===obj){return true;}}
return false;};var dump=function(t,indent){for(var i=0;i<indent;i++){types+="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";}
types+="<a href='"+
x3dom.docs.specBaseURL+x3dom.docs.specURLMap[x3dom.nodeTypes[t]._compName]+"#"+t+"' style='color:black; text-decoration:none; font-weight:bold;'>"+
t+"</a> &nbsp; <a href='"+
x3dom.docs.specBaseURL+x3dom.docs.specURLMap[x3dom.nodeTypes[t]._compName]+"' style='color:black; text-decoration:none; font-style:italic;'>"+
x3dom.nodeTypes[t]._compName+"</a><br/>";for(var i in x3dom.nodeTypes[t].childTypes[t]){dump(x3dom.nodeTypes[t].childTypes[t][i],indent+1);}};for(tn in x3dom.nodeTypes){var t=x3dom.nodeTypes[tn];if(t.childTypes===undefined){t.childTypes={};}
while(t.superClass){if(t.superClass.childTypes[t.superClass._typeName]===undefined){t.superClass.childTypes[t.superClass._typeName]=[];}
if(!objInArray(t.superClass.childTypes[t.superClass._typeName],t._typeName)){t.superClass.childTypes[t.superClass._typeName].push(t._typeName);}
t=t.superClass;}}
dump("X3DNode",0);return"<div class='x3dom-doc-nodes-tree'>"+types+"</div>";};x3dom.docs.getComponentInfo=function(){var components=[];var component;var result="";var c,cn;for(c in x3dom.components){components.push(c);}
components.sort();for(cn in components){c=components[cn];component=x3dom.components[c];result+="<h2><a href='"+
x3dom.docs.specBaseURL+x3dom.docs.specURLMap[c]+"' style='color:black; text-decoration:none; font-style:italic;'>"+
c+"</a></h2>";result+="<ul style='list-style-type:circle;'>";for(var t in component){result+="<li><a href='"+
x3dom.docs.specBaseURL+x3dom.docs.specURLMap[c]+"#"+t+"' style='color:black; text-decoration:none; font-weight:bold;'>"+
t+"</a></li>";}
result+="</ul>";}
return result;};x3dom.shader={};x3dom.shader.PICKING="picking";x3dom.shader.PICKING_24="picking24";x3dom.shader.PICKING_ID="pickingId";x3dom.shader.PICKING_COLOR="pickingColor";x3dom.shader.PICKING_TEXCOORD="pickingTexCoord";x3dom.shader.FRONTGROUND_TEXTURE="frontgroundTexture";x3dom.shader.BACKGROUND_TEXTURE="backgroundTexture";x3dom.shader.BACKGROUND_SKYTEXTURE="backgroundSkyTexture";x3dom.shader.BACKGROUND_CUBETEXTURE="backgroundCubeTexture";x3dom.shader.SHADOW="shadow";x3dom.shader.BLUR="blur";x3dom.shader.DEPTH="depth";x3dom.shader.NORMAL="normal";x3dom.shader.TEXTURE_REFINEMENT="textureRefinement";x3dom.shader.SSAO="ssao";x3dom.shader.material=function(){var shaderPart="uniform vec3  diffuseColor;\n"+"uniform vec3  specularColor;\n"+"uniform vec3  emissiveColor;\n"+"uniform float shininess;\n"+"uniform float transparency;\n"+"uniform float ambientIntensity;\n";return shaderPart;};x3dom.shader.twoSidedMaterial=function(){var shaderPart="uniform vec3  backDiffuseColor;\n"+"uniform vec3  backSpecularColor;\n"+"uniform vec3  backEmissiveColor;\n"+"uniform float backShininess;\n"+"uniform float backTransparency;\n"+"uniform float backAmbientIntensity;\n";return shaderPart;};x3dom.shader.fog=function(){var shaderPart="uniform vec3  fogColor;\n"+"uniform float fogType;\n"+"uniform float fogRange;\n"+"varying vec3 fragEyePosition;\n"+"float calcFog(in vec3 eye) {\n"+"   float f0 = 0.0;\n"+"   if(fogType == 0.0) {\n"+"       if(length(eye) < fogRange){\n"+"           f0 = (fogRange-length(eye)) / fogRange;\n"+"       }\n"+"   }else{\n"+"       if(length(eye) < fogRange){\n"+"           f0 = exp(-length(eye) / (fogRange-length(eye) ) );\n"+"       }\n"+"   }\n"+"   f0 = clamp(f0, 0.0, 1.0);\n"+"   return f0;\n"+"}\n";return shaderPart;};x3dom.shader.clipPlanes=function(numClipPlanes){var shaderPart="",c;for(c=0;c<numClipPlanes;c++){shaderPart+="uniform vec4 clipPlane"+c+"_Plane;\n";shaderPart+="uniform float clipPlane"+c+"_CappingStrength;\n";shaderPart+="uniform vec3 clipPlane"+c+"_CappingColor;\n";}
shaderPart+="vec3 calculateClipPlanes() {\n";for(c=0;c<numClipPlanes;c++){shaderPart+="    vec4 clipPlane"+c+" = clipPlane"+c+"_Plane * viewMatrixInverse;\n";shaderPart+="    float dist"+c+" = dot(fragPosition, clipPlane"+c+");\n";}
shaderPart+="    if( ";for(c=0;c<numClipPlanes;c++){if(c!=0){shaderPart+=" || ";}
shaderPart+="dist"+c+" < 0.0";}
shaderPart+=" ) ";shaderPart+="{ discard; }\n";for(c=0;c<numClipPlanes;c++){shaderPart+="    if( abs(dist"+c+") < clipPlane"+c+"_CappingStrength ) ";shaderPart+="{ return clipPlane"+c+"_CappingColor; }\n";}
shaderPart+="    return vec3(-1.0, -1.0, -1.0);\n";shaderPart+="}\n";return shaderPart;};x3dom.shader.gammaCorrectionDecl=function(properties){var shaderPart="";if(properties.GAMMACORRECTION==="none"){}else if(properties.GAMMACORRECTION==="fastlinear"){shaderPart+="vec4 gammaEncode(vec4 color){\n"+"  vec4 tmp = sqrt(color);\n"+"  return vec4(tmp.rgb, color.a);\n"+"}\n";shaderPart+="vec4 gammaDecode(vec4 color){\n"+"  vec4 tmp = color * color;\n"+"  return vec4(tmp.rgb, color.a);\n"+"}\n";shaderPart+="vec3 gammaEncode(vec3 color){\n"+"  return sqrt(color);\n"+"}\n";shaderPart+="vec3 gammaDecode(vec3 color){\n"+"  return (color * color);\n"+"}\n";}else{shaderPart+="const vec4 gammaEncode4Vector = vec4(0.4545454545454545, 0.4545454545454545, 0.4545454545454545, 1.0);\n";shaderPart+="const vec4 gammaDecode4Vector = vec4(2.2, 2.2, 2.2, 1.0);\n";shaderPart+="vec4 gammaEncode(vec4 color){\n"+"    return pow(color, gammaEncode4Vector);\n"+"}\n";shaderPart+="vec4 gammaDecode(vec4 color){\n"+"    return pow(color, gammaDecode4Vector);\n"+"}\n";shaderPart+="const vec3 gammaEncode3Vector = vec3(0.4545454545454545, 0.4545454545454545, 0.4545454545454545);\n";shaderPart+="const vec3 gammaDecode3Vector = vec3(2.2, 2.2, 2.2);\n";shaderPart+="vec3 gammaEncode(vec3 color){\n"+"    return pow(color, gammaEncode3Vector);\n"+"}\n";shaderPart+="vec3 gammaDecode(vec3 color){\n"+"    return pow(color, gammaDecode3Vector);\n"+"}\n";}
return shaderPart;};x3dom.shader.encodeGamma=function(properties,expr){if(properties.GAMMACORRECTION==="none"){return expr;}else{return"gammaEncode ("+expr+")";}};x3dom.shader.decodeGamma=function(properties,expr){if(properties.GAMMACORRECTION==="none"){return expr;}else{return"gammaDecode ("+expr+")";}};x3dom.shader.rgbaPacking=function(){var shaderPart="";shaderPart+="vec4 packDepth(float depth){\n"+" depth = (depth + 1.0)*0.5;\n"+" vec4 outVal = vec4(1.0, 255.0, 65025.0, 160581375.0) * depth;\n"+" outVal = fract(outVal);\n"+"   outVal -= outVal.yzww * vec4(1.0/255.0, 1.0/255.0, 1.0/255.0, 0.0);\n"+"   return outVal;\n"+"}\n";shaderPart+="float unpackDepth(vec4 color){\n"+" float depth = dot(color, vec4(1.0, 1.0/255.0, 1.0/65025.0, 1.0/160581375.0));\n"+" return (2.0*depth - 1.0);\n"+"}\n";return shaderPart;};x3dom.shader.shadowRendering=function(){var shaderPart="";shaderPart+="float getLightInfluence(float lType, float lShadowIntensity, float lOn, vec3 lLocation, vec3 lDirection, "+"float lCutOffAngle, float lBeamWidth, vec3 lAttenuation, float lRadius, vec3 eyeCoords) {\n"+" if (lOn == 0.0 || lShadowIntensity == 0.0){ return 0.0;\n"+" } else if (lType == 0.0) {\n"+"  return 1.0;\n"+" } else {\n"+"    float attenuation = 0.0;\n"+"    vec3 lightVec = (lLocation - (eyeCoords));\n"+"    float distance = length(lightVec);\n"+"  lightVec = normalize(lightVec);\n"+"  eyeCoords = normalize(-eyeCoords);\n"+"    if(lRadius == 0.0 || distance <= lRadius) {\n"+"        attenuation = 1.0 / max(lAttenuation.x + lAttenuation.y * distance + lAttenuation.z * (distance * distance), 1.0);\n"+"  }\n"+"   if (lType == 1.0) return attenuation;\n"+"    float spotAngle = acos(max(0.0, dot(-lightVec, normalize(lDirection))));\n"+"    if(spotAngle >= lCutOffAngle) return 0.0;\n"+"    else if(spotAngle <= lBeamWidth) return attenuation;\n"+"    else return attenuation * (spotAngle - lCutOffAngle) / (lBeamWidth - lCutOffAngle);\n"+" }\n"+"}\n";shaderPart+="void getShadowValues(inout vec4 shadowMapValues, inout float viewSampleDepth, in mat4 lightMatrix, in vec4 worldCoords, in sampler2D shadowMap){\n"+" vec4 lightSpaceCoords = lightMatrix*worldCoords;\n"+" vec3 lightSpaceCoordsCart = lightSpaceCoords.xyz / lightSpaceCoords.w;\n"+" vec2 textureCoords = (lightSpaceCoordsCart.xy + 1.0)*0.5;\n"+" viewSampleDepth = lightSpaceCoordsCart.z;\n"+" shadowMapValues = texture2D(shadowMap, textureCoords);\n";if(!x3dom.caps.FP_TEXTURES||x3dom.caps.MOBILE)
shaderPart+=" shadowMapValues = vec4(1.0,1.0,unpackDepth(shadowMapValues),1.0);\n";shaderPart+="}\n";shaderPart+="void getShadowValuesPointLight(inout vec4 shadowMapValues, inout float viewSampleDepth, in vec3 lLocation, in vec4 worldCoords, in mat4 lightViewMatrix,"+"in mat4 lMatrix_0, in mat4 lMatrix_1, in mat4 lMatrix_2, in mat4 lMatrix_3, in mat4 lMatrix_4, in mat4 lMatrix_5,"+"in sampler2D shadowMap_0, in sampler2D shadowMap_1, in sampler2D shadowMap_2, in sampler2D shadowMap_3,"+"in sampler2D shadowMap_4, in sampler2D shadowMap_5){\n"+" vec4 transformed = lightViewMatrix * worldCoords;\n"+" vec3 lightVec = normalize(transformed.xyz/transformed.w);\n"+" vec3 lightVecAbs = abs(lightVec);\n"+" float maximum = max(max(lightVecAbs.x, lightVecAbs.y),lightVecAbs.z);\n"+" if (lightVecAbs.x == maximum) {\n"+"  if (lightVec.x < 0.0) getShadowValues(shadowMapValues, viewSampleDepth, lMatrix_3,worldCoords,shadowMap_3);\n"+"  else getShadowValues(shadowMapValues, viewSampleDepth, lMatrix_1,worldCoords,shadowMap_1);\n"+" }\n"+" else if (lightVecAbs.y == maximum) {\n"+"  if (lightVec.y < 0.0) getShadowValues(shadowMapValues, viewSampleDepth, lMatrix_4,worldCoords,shadowMap_4);\n"+"  else getShadowValues(shadowMapValues, viewSampleDepth, lMatrix_5,worldCoords,shadowMap_5);\n"+" }\n"+" else if (lightVec.z < 0.0) getShadowValues(shadowMapValues, viewSampleDepth, lMatrix_0,worldCoords,shadowMap_0);\n"+" else getShadowValues(shadowMapValues, viewSampleDepth, lMatrix_2,worldCoords,shadowMap_2);\n"+"}\n";shaderPart+="void getShadowValuesCascaded(inout vec4 shadowMapValues, inout float viewSampleDepth, in vec4 worldCoords, in float eyeDepth, in mat4 lMatrix_0, in mat4 lMatrix_1, in mat4 lMatrix_2,"+"in mat4 lMatrix_3, in mat4 lMatrix_4, in mat4 lMatrix_5, in sampler2D shadowMap_0, in sampler2D shadowMap_1, in sampler2D shadowMap_2,"+"in sampler2D shadowMap_3, in sampler2D shadowMap_4, in sampler2D shadowMap_5, in float split_0, in float split_1, in float split_2, in float split_3, in float split_4){\n"+" if (eyeDepth < split_0) getShadowValues(shadowMapValues, viewSampleDepth, lMatrix_0, worldCoords, shadowMap_0);\n"+" else if (eyeDepth < split_1) getShadowValues(shadowMapValues, viewSampleDepth, lMatrix_1, worldCoords, shadowMap_1);\n"+" else if (eyeDepth < split_2) getShadowValues(shadowMapValues, viewSampleDepth, lMatrix_2, worldCoords, shadowMap_2);\n"+" else if (eyeDepth < split_3) getShadowValues(shadowMapValues, viewSampleDepth, lMatrix_3, worldCoords, shadowMap_3);\n"+" else if (eyeDepth < split_4) getShadowValues(shadowMapValues, viewSampleDepth, lMatrix_4, worldCoords, shadowMap_4);\n"+" else getShadowValues(shadowMapValues, viewSampleDepth, lMatrix_5, worldCoords, shadowMap_5);\n"+"}\n";shaderPart+="float ESM(float shadowMapDepth, float viewSampleDepth, float offset){\n";if(!x3dom.caps.FP_TEXTURES||x3dom.caps.MOBILE)
shaderPart+=" return exp(-80.0*(1.0-offset)*(viewSampleDepth - shadowMapDepth));\n";else shaderPart+=" return shadowMapDepth * exp(-80.0*(1.0-offset)*viewSampleDepth);\n";shaderPart+="}\n";shaderPart+="float VSM(vec2 moments, float viewSampleDepth, float offset){\n"+" viewSampleDepth = (viewSampleDepth + 1.0) * 0.5;\n"+" if (viewSampleDepth <= moments.x) return 1.0;\n"+" float variance = moments.y - moments.x * moments.x;\n"+" variance = max(variance, 0.00002 + offset*0.01);\n"+" float d = viewSampleDepth - moments.x;\n"+" return variance/(variance + d*d);\n"+"}\n";return shaderPart;};x3dom.shader.light=function(numLights){var shaderPart="";for(var l=0;l<numLights;l++){shaderPart+="uniform float light"+l+"_On;\n"+"uniform float light"+l+"_Type;\n"+"uniform vec3  light"+l+"_Location;\n"+"uniform vec3  light"+l+"_Direction;\n"+"uniform vec3  light"+l+"_Color;\n"+"uniform vec3  light"+l+"_Attenuation;\n"+"uniform float light"+l+"_Radius;\n"+"uniform float light"+l+"_Intensity;\n"+"uniform float light"+l+"_AmbientIntensity;\n"+"uniform float light"+l+"_BeamWidth;\n"+"uniform float light"+l+"_CutOffAngle;\n"+"uniform float light"+l+"_ShadowIntensity;\n";}
shaderPart+="vec3 lighting(in float lType, in vec3 lLocation, in vec3 lDirection, in vec3 lColor, in vec3 lAttenuation, "+"in float lRadius, in float lIntensity, in float lAmbientIntensity, in float lBeamWidth, "+"in float lCutOffAngle, in vec3 N, in vec3 V, float shin, float ambIntensity)\n"+"{\n"+"   vec3 L;\n"+"   float spot = 1.0, attentuation = 0.0;\n"+"   if(lType == 0.0) {\n"+"       L = -normalize(lDirection);\n"+"  V = normalize(V);\n"+"  attentuation = 1.0;\n"+"   } else{\n"+"       L = (lLocation - (-V));\n"+"       float d = length(L);\n"+"  L = normalize(L);\n"+"  V = normalize(V);\n"+"       if(lRadius == 0.0 || d <= lRadius) {\n"+"        attentuation = 1.0 / max(lAttenuation.x + lAttenuation.y * d + lAttenuation.z * (d * d), 1.0);\n"+"  }\n"+"       if(lType == 2.0) {\n"+"           float spotAngle = acos(max(0.0, dot(-L, normalize(lDirection))));\n"+"           if(spotAngle >= lCutOffAngle) spot = 0.0;\n"+"           else if(spotAngle <= lBeamWidth) spot = 1.0;\n"+"           else spot = (spotAngle - lCutOffAngle ) / (lBeamWidth - lCutOffAngle);\n"+"       }\n"+"   }\n"+"   vec3  H = normalize( L + V );\n"+"   float NdotL = clamp(dot(L, N), 0.0, 1.0);\n"+"   float NdotH = clamp(dot(H, N), 0.0, 1.0);\n"+"   float ambientFactor  = lAmbientIntensity * ambIntensity;\n"+"   float diffuseFactor  = lIntensity * NdotL;\n"+"   float specularFactor = lIntensity * pow(NdotH, shin*128.0);\n"+"   return vec3(ambientFactor, diffuseFactor, specularFactor) * attentuation * spot;\n"+"}\n";return shaderPart;};x3dom.shader.TBNCalculation=function(){var shaderPart="";shaderPart+="mat3 cotangent_frame(vec3 N, vec3 p, vec2 uv)\n"+"{\n"+"    // get edge vectors of the pixel triangle\n"+"    vec3 dp1 = dFdx( p );\n"+"    vec3 dp2 = dFdy( p );\n"+"    vec2 duv1 = dFdx( uv );\n"+"    vec2 duv2 = dFdy( uv );\n"+"\n"+"    // solve the linear system\n"+"    vec3 dp2perp = cross( dp2, N );\n"+"    vec3 dp1perp = cross( N, dp1 );\n"+"    vec3 T = dp2perp * duv1.x + dp1perp * duv2.x;\n"+"    vec3 B = dp2perp * duv1.y + dp1perp * duv2.y;\n"+"\n"+"    // construct a scale-invariant frame\n"+"    float invmax = inversesqrt( max( dot(T,T), dot(B,B) ) );\n"+"    return mat3( T * invmax, B * invmax, N );\n"+"}\n\n";shaderPart+="vec3 perturb_normal( vec3 N, vec3 V, vec2 texcoord )\n"+"{\n"+"    // assume N, the interpolated vertex normal and\n"+"    // V, the view vector (vertex to eye)\n"+"    vec3 map = texture2D(normalMap, texcoord ).xyz;\n"+"    map = map * 255./127. - 128./127.;\n"+"    mat3 TBN = cotangent_frame(N, -V, texcoord);\n"+"    return normalize(TBN * map);\n"+"}\n\n";return shaderPart;};x3dom.shader.DynamicShader=function(gl,properties)
{this.program=gl.createProgram();var vertexShader=this.generateVertexShader(gl,properties);var fragmentShader=this.generateFragmentShader(gl,properties);gl.attachShader(this.program,vertexShader);gl.attachShader(this.program,fragmentShader);gl.bindAttribLocation(this.program,0,"position");gl.linkProgram(this.program);return this.program;};x3dom.shader.DynamicShader.prototype.generateVertexShader=function(gl,properties)
{var shader="";shader+="uniform mat4 modelViewMatrix;\n";shader+="uniform mat4 modelViewProjectionMatrix;\n";if(properties.POSCOMPONENTS==3){shader+="attribute vec3 position;\n";}else if(properties.POSCOMPONENTS==4){shader+="attribute vec4 position;\n";}
if(properties.IMAGEGEOMETRY){shader+="uniform vec3 IG_bboxMin;\n";shader+="uniform vec3 IG_bboxMax;\n";shader+="uniform float IG_coordTextureWidth;\n";shader+="uniform float IG_coordTextureHeight;\n";shader+="uniform vec2 IG_implicitMeshSize;\n";for(var i=0;i<properties.IG_PRECISION;i++){shader+="uniform sampler2D IG_coords"+i+"\n;";}
if(properties.IG_INDEXED){shader+="uniform sampler2D IG_index;\n";shader+="uniform float IG_indexTextureWidth;\n";shader+="uniform float IG_indexTextureHeight;\n";}}
if(properties.POPGEOMETRY){shader+="uniform float PG_precisionLevel;\n";shader+="uniform float PG_powPrecision;\n";shader+="uniform vec3 PG_maxBBSize;\n";shader+="uniform vec3 PG_bbMin;\n";shader+="uniform vec3 PG_bbMaxModF;\n";shader+="uniform vec3 PG_bboxShiftVec;\n";shader+="uniform float PG_numAnchorVertices;\n";shader+="attribute float PG_vertexID;\n";}
if(properties.LIGHTS){if(properties.NORMALMAP&&properties.NORMALSPACE=="OBJECT"){}else{shader+="varying vec3 fragNormal;\n";shader+="uniform mat4 normalMatrix;\n";if(properties.IMAGEGEOMETRY){shader+="uniform sampler2D IG_normals;\n";}else{if(properties.NORCOMPONENTS==2){if(properties.POSCOMPONENTS!=4){shader+="attribute vec2 normal;\n";}}else if(properties.NORCOMPONENTS==3){shader+="attribute vec3 normal;\n";}}}}
if(properties.VERTEXCOLOR){if(properties.IMAGEGEOMETRY){shader+="uniform sampler2D IG_colors;\n";if(properties.COLCOMPONENTS==3){shader+="varying vec3 fragColor;\n";}else if(properties.COLCOMPONENTS==4){shader+="varying vec4 fragColor;\n";}}else{if(properties.COLCOMPONENTS==3){shader+="attribute vec3 color;\n";shader+="varying vec3 fragColor;\n";}else if(properties.COLCOMPONENTS==4){shader+="attribute vec4 color;\n";shader+="varying vec4 fragColor;\n";}}}
if(properties.TEXTURED||properties.CSSHADER){shader+="varying vec2 fragTexcoord;\n";if(!properties.SPHEREMAPPING){if(properties.IMAGEGEOMETRY){shader+="uniform sampler2D IG_texCoords;\n";}else if(!properties.IS_PARTICLE){shader+="attribute vec2 texcoord;\n";}}
if(properties.TEXTRAFO){shader+="uniform mat4 texTrafoMatrix;\n";}
if(properties.NORMALMAP&&properties.NORMALSPACE=="TANGENT"&&!x3dom.caps.STD_DERIVATIVES){x3dom.debug.logWarning("Your System doesn't support the 'OES_STANDARD_DERIVATIVES' Extension. "+"You must set tangents and binormals manually via the FloatVertexAttribute-Node "+"to use normal maps");shader+="attribute vec3 tangent;\n";shader+="attribute vec3 binormal;\n";shader+="varying vec3 fragTangent;\n";shader+="varying vec3 fragBinormal;\n";}
if(properties.CUBEMAP){shader+="varying vec3 fragViewDir;\n";shader+="uniform mat4 viewMatrix;\n";}
if(properties.DISPLACEMENTMAP){shader+="uniform sampler2D displacementMap;\n";shader+="uniform float displacementFactor;\n";shader+="uniform float displacementWidth;\n";shader+="uniform float displacementHeight;\n";shader+="uniform float displacementAxis;\n";}
if(properties.DIFFPLACEMENTMAP){shader+="uniform sampler2D diffuseDisplacementMap;\n";shader+="uniform float displacementFactor;\n";shader+="uniform float displacementWidth;\n";shader+="uniform float displacementHeight;\n";shader+="uniform float displacementAxis;\n";}
if(properties.MULTIDIFFALPMAP||properties.MULTIVISMAP){shader+="attribute float id;\n";shader+="varying float fragID;\n";}}
if(properties.IS_PARTICLE){shader+="attribute vec3 particleSize;\n";}
if(properties.LIGHTS||properties.FOG||properties.CLIPPLANES){shader+="uniform vec3 eyePosition;\n";shader+="varying vec4 fragPosition;\n";if(properties.FOG){shader+="varying vec3 fragEyePosition;\n";}}
if(properties.REQUIREBBOX){shader+="uniform vec3 bgCenter;\n";shader+="uniform vec3 bgSize;\n";shader+="uniform float bgPrecisionMax;\n";}
if(properties.REQUIREBBOXNOR){shader+="uniform float bgPrecisionNorMax;\n";}
if(properties.REQUIREBBOXCOL){shader+="uniform float bgPrecisionColMax;\n";}
if(properties.REQUIREBBOXTEX){shader+="uniform float bgPrecisionTexMax;\n";}
shader+="void main(void) {\n";if(properties.IMAGEGEOMETRY){if(properties.IG_INDEXED){shader+="vec2 halfPixel = vec2(0.5/IG_indexTextureWidth,0.5/IG_indexTextureHeight);\n";shader+="vec2 IG_texCoord = vec2(position.x*(IG_implicitMeshSize.x/IG_indexTextureWidth), position.y*(IG_implicitMeshSize.y/IG_indexTextureHeight)) + halfPixel;\n";shader+="vec2 IG_indices = texture2D( IG_index, IG_texCoord ).rg;\n";shader+="halfPixel = vec2(0.5/IG_coordTextureWidth,0.5/IG_coordTextureHeight);\n";shader+="IG_texCoord = (IG_indices * 0.996108948) + halfPixel;\n";}else{shader+="vec2 halfPixel = vec2(0.5/IG_coordTextureWidth, 0.5/IG_coordTextureHeight);\n";shader+="vec2 IG_texCoord = vec2(position.x*(IG_implicitMeshSize.x/IG_coordTextureWidth), position.y*(IG_implicitMeshSize.y/IG_coordTextureHeight)) + halfPixel;\n";}
shader+="vec3 temp = vec3(0.0, 0.0, 0.0);\n";shader+="vec3 vertPosition = vec3(0.0, 0.0, 0.0);\n";for(var i=0;i<properties.IG_PRECISION;i++){shader+="temp = 255.0 * texture2D( IG_coords"+i+", IG_texCoord ).rgb;\n";shader+="vertPosition *= 256.0;\n";shader+="vertPosition += temp;\n";}
shader+="vertPosition /= (pow(2.0, 8.0 * "+properties.IG_PRECISION+".0) - 1.0);\n";shader+="vertPosition = vertPosition * (IG_bboxMax - IG_bboxMin) + IG_bboxMin;\n";if(properties.LIGHTS){shader+="vec3 vertNormal = texture2D( IG_normals, IG_texCoord ).rgb;\n";shader+="vertNormal = vertNormal * 2.0 - 1.0;\n";}
if(properties.VERTEXCOLOR){if(properties.COLCOMPONENTS==3){shader+="fragColor = texture2D( IG_colors, IG_texCoord ).rgb;\n";}else if(properties.COLCOMPONENTS==4){shader+="fragColor = texture2D( IG_colors, IG_texCoord ).rgba;\n";}}
if(properties.TEXTURED||properties.CSSHADER){shader+="vec4 IG_doubleTexCoords = texture2D( IG_texCoords, IG_texCoord );\n";shader+="vec2 vertTexCoord;";shader+="vertTexCoord.r = (IG_doubleTexCoords.r * 0.996108948) + (IG_doubleTexCoords.b * 0.003891051);\n";shader+="vertTexCoord.g = (IG_doubleTexCoords.g * 0.996108948) + (IG_doubleTexCoords.a * 0.003891051);\n";}}else{shader+="vec3 vertPosition = position.xyz;\n";if(properties.POPGEOMETRY){shader+="vec3 offsetVec = step(vertPosition / bgPrecisionMax, PG_bbMaxModF) * PG_bboxShiftVec;\n";shader+="if ((PG_precisionLevel <= 2.0) || PG_vertexID >= PG_numAnchorVertices) {\n";shader+="   vertPosition = floor(vertPosition / PG_powPrecision) * PG_powPrecision;\n";shader+="   vertPosition /= (65536.0 - PG_powPrecision);\n";shader+="}\n";shader+="else {\n";shader+="   vertPosition /= bgPrecisionMax;\n";shader+="}\n";shader+="vertPosition = (vertPosition + offsetVec + PG_bbMin) * PG_maxBBSize;\n";}
else if(properties.REQUIREBBOX){shader+="vertPosition = bgCenter + bgSize * vertPosition / bgPrecisionMax;\n";}
if(properties.LIGHTS){if(properties.NORCOMPONENTS==2){if(properties.POSCOMPONENTS==4){shader+="vec3 vertNormal = vec3(position.w / 256.0); \n";shader+="vertNormal.x = floor(vertNormal.x) / 255.0; \n";shader+="vertNormal.y = fract(vertNormal.y) * 1.00392156862745; \n";}
else if(properties.REQUIREBBOXNOR){shader+="vec3 vertNormal = vec3(normal.xy, 0.0) / bgPrecisionNorMax;\n";}
shader+="vec2 thetaPhi = 3.14159265358979 * vec2(vertNormal.x, vertNormal.y*2.0-1.0); \n";shader+="vec4 sinCosThetaPhi = sin( vec4(thetaPhi, thetaPhi + 1.5707963267949) ); \n";shader+="vertNormal.x = sinCosThetaPhi.x * sinCosThetaPhi.w; \n";shader+="vertNormal.y = sinCosThetaPhi.x * sinCosThetaPhi.y; \n";shader+="vertNormal.z = sinCosThetaPhi.z; \n";}else{if(properties.NORMALMAP&&properties.NORMALSPACE=="OBJECT"){}else{shader+="vec3 vertNormal = normal;\n";if(properties.REQUIREBBOXNOR){shader+="vertNormal = vertNormal / bgPrecisionNorMax;\n";}
if(properties.POPGEOMETRY){shader+="vertNormal = 2.0*vertNormal - 1.0;\n";}}}}
if(properties.VERTEXCOLOR){shader+="fragColor = color;\n";if(properties.REQUIREBBOXCOL){shader+="fragColor = fragColor / bgPrecisionColMax;\n";}}
if((properties.TEXTURED||properties.CSSHADER)&&!properties.SPHEREMAPPING){if(properties.IS_PARTICLE){shader+="vec2 vertTexCoord = vec2(0.0);\n";}
else{shader+="vec2 vertTexCoord = texcoord;\n";if(properties.REQUIREBBOXTEX){shader+="vertTexCoord = vertTexCoord / bgPrecisionTexMax;\n";}}}}
if(properties.LIGHTS){if(properties.DISPLACEMENTMAP||properties.DIFFPLACEMENTMAP&&!properties.NORMALMAP){shader+="float dx = 1.0 / displacementWidth;\n";shader+="float dy = 1.0 / displacementHeight;\n";if(properties.DISPLACEMENTMAP)
{shader+="float s1 = texture2D(displacementMap, vec2(vertTexCoord.x - dx, 1.0 - vertTexCoord.y)).r;\n";shader+="float s2 = texture2D(displacementMap, vec2(vertTexCoord.x, 1.0 - vertTexCoord.y - dy)).r;\n";shader+="float s3 = texture2D(displacementMap, vec2(vertTexCoord.x + dx, 1.0 - vertTexCoord.y)).r;\n";shader+="float s4 = texture2D(displacementMap, vec2(vertTexCoord.x, 1.0 - vertTexCoord.y + dy)).r;\n";}
else if(properties.DIFFPLACEMENTMAP)
{shader+="float s1 = texture2D(diffuseDisplacementMap, vec2(vertTexCoord.x - dx, 1.0 - vertTexCoord.y)).a;\n";shader+="float s2 = texture2D(diffuseDisplacementMap, vec2(vertTexCoord.x, 1.0 - vertTexCoord.y - dy)).a;\n";shader+="float s3 = texture2D(diffuseDisplacementMap, vec2(vertTexCoord.x + dx, 1.0 - vertTexCoord.y)).a;\n";shader+="float s4 = texture2D(diffuseDisplacementMap, vec2(vertTexCoord.x, 1.0 - vertTexCoord.y + dy)).a;\n";}
shader+="float coef = displacementFactor;\n";shader+="vec3 calcNormal;\n";shader+="if (displacementAxis == 0.0) {\n";shader+="calcNormal = vec3((s1 - s3) * coef, -5.0, (s2 - s4) * coef);\n";shader+="} else if(displacementAxis == 1.0) {\n";shader+="calcNormal = vec3((s1 - s3) * coef, -5.0, (s2 - s4) * coef);\n";shader+="} else {\n";shader+="calcNormal = vec3((s1 - s3) * coef, -(s2 - s4) * coef, 5.0);\n";shader+="}\n";shader+="calcNormal = normalize(calcNormal);\n";shader+="fragNormal = (normalMatrix * vec4(calcNormal, 0.0)).xyz;\n";}
else if(properties.NORMALMAP&&properties.NORMALSPACE=="OBJECT"){}
else
{shader+="fragNormal = (normalMatrix * vec4(vertNormal, 0.0)).xyz;\n";}}
if(properties.TEXTURED||properties.CSSHADER){if(properties.CUBEMAP){shader+="fragViewDir = (viewMatrix[3].xyz);\n";}else if(properties.SPHEREMAPPING){shader+=" fragTexcoord = 0.5 + fragNormal.xy / 2.0;\n";}else if(properties.TEXTRAFO){shader+=" fragTexcoord = (texTrafoMatrix * vec4(vertTexCoord, 1.0, 1.0)).xy;\n";}else{shader+=" fragTexcoord = vertTexCoord;\n";if(properties.POPGEOMETRY&&x3dom.debug.usePrecisionLevelAsTexCoord===true)
shader+="fragTexcoord = vec2(0.03125 + 0.9375 * (PG_precisionLevel / 16.0), 1.0);";}
if(properties.NORMALMAP&&properties.NORMALSPACE=="TANGENT"&&!x3dom.caps.STD_DERIVATIVES){shader+="fragTangent  = (normalMatrix * vec4(tangent, 0.0)).xyz;\n";shader+="fragBinormal = (normalMatrix * vec4(binormal, 0.0)).xyz;\n";}}
if(properties.LIGHTS||properties.FOG||properties.CLIPPLANES){shader+="fragPosition = (modelViewMatrix * vec4(vertPosition, 1.0));\n";if(properties.FOG){shader+="fragEyePosition = eyePosition - fragPosition.xyz;\n";}}
if(properties.MULTIDIFFALPMAP){shader+="fragID = id;\n";}
if(properties.DISPLACEMENTMAP){shader+="vertPosition += normalize(vertNormal) * texture2D(displacementMap, vec2(fragTexcoord.x, 1.0-fragTexcoord.y)).r * displacementFactor;\n";}
else if(properties.DIFFPLACEMENTMAP)
{shader+="vertPosition += normalize(vertNormal) * texture2D(diffuseDisplacementMap, vec2(fragTexcoord.x, 1.0-fragTexcoord.y)).a * displacementFactor;\n";}
shader+="gl_Position = modelViewProjectionMatrix * vec4(vertPosition, 1.0);\n";if(properties.IS_PARTICLE){shader+="float spriteDist = (gl_Position.w > 0.000001) ? gl_Position.w : 0.000001;\n";shader+="float pointSize = floor(length(particleSize) * 256.0 / spriteDist + 0.5);\n";shader+="gl_PointSize = clamp(pointSize, 2.0, 256.0);\n";}
else{shader+="gl_PointSize = 2.0;\n";}
shader+="}\n";var vertexShader=gl.createShader(gl.VERTEX_SHADER);gl.shaderSource(vertexShader,shader);gl.compileShader(vertexShader);if(!gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)){x3dom.debug.logInfo("VERTEX:\n"+shader);x3dom.debug.logError("VertexShader "+gl.getShaderInfoLog(vertexShader));}
return vertexShader;};x3dom.shader.DynamicShader.prototype.generateFragmentShader=function(gl,properties)
{var shader="#ifdef GL_FRAGMENT_PRECISION_HIGH\n";shader+=" precision highp float;\n";shader+="#else\n";shader+=" precision mediump float;\n";shader+="#endif\n\n";shader+="uniform mat4 modelMatrix;\n";shader+="uniform mat4 modelViewMatrix;\n";shader+="uniform mat4 viewMatrixInverse;\n";shader+=x3dom.shader.material();if(properties.TWOSIDEDMAT){shader+=x3dom.shader.twoSidedMaterial();}
if(properties.VERTEXCOLOR){if(properties.COLCOMPONENTS==3){shader+="varying vec3 fragColor;  \n";}else if(properties.COLCOMPONENTS==4){shader+="varying vec4 fragColor;  \n";}}
if(properties.CUBEMAP||properties.CLIPPLANES)
{shader+="uniform mat4 modelViewMatrixInverse;\n";}
if(properties.TEXTURED||properties.CSSHADER){shader+="varying vec2 fragTexcoord;\n";if((properties.TEXTURED||properties.DIFFUSEMAP)&&!properties.CUBEMAP){shader+="uniform sampler2D diffuseMap;\n";}else if(properties.CUBEMAP){shader+="uniform samplerCube cubeMap;\n";shader+="varying vec3 fragViewDir;\n";}
if(properties.SPECMAP){shader+="uniform sampler2D specularMap;\n";}
if(properties.SHINMAP){shader+="uniform sampler2D shininessMap;\n";}
if(properties.DISPLACEMENTMAP){shader+="uniform sampler2D displacementMap;\n";shader+="uniform float displacementWidth;\n";shader+="uniform float displacementHeight;\n";}
if(properties.DIFFPLACEMENTMAP){shader+="uniform sampler2D diffuseDisplacementMap;\n";shader+="uniform float displacementWidth;\n";shader+="uniform float displacementHeight;\n";}
if(properties.MULTIDIFFALPMAP||properties.MULTIVISMAP){shader+="varying float fragID;\n";}
if(properties.MULTIDIFFALPMAP){shader+="uniform sampler2D multiDiffuseAlphaMap;\n";shader+="uniform float multiDiffuseAlphaWidth;\n";shader+="uniform float multiDiffuseAlphaHeight;\n";}
if(properties.MULTIEMIAMBMAP){shader+="uniform sampler2D multiEmissiveAmbientMap;\n";shader+="uniform float multiEmissiveAmbientWidth;\n";shader+="uniform float multiEmissiveAmbientHeight;\n";}
if(properties.MULTISPECSHINMAP){shader+="uniform sampler2D multiSpecularShininessMap;\n";shader+="uniform float multiSpecularShininessWidth;\n";shader+="uniform float multiSpecularShininessHeight;\n";}
if(properties.MULTIVISMAP){shader+="uniform sampler2D multiVisibilityMap;\n";shader+="uniform float multiVisibilityWidth;\n";shader+="uniform float multiVisibilityHeight;\n";}
if(properties.NORMALMAP){shader+="uniform sampler2D normalMap;\n";if(properties.NORMALSPACE=="TANGENT"){if(x3dom.caps.STD_DERIVATIVES){shader+="#extension GL_OES_standard_derivatives:enable\n";shader+=x3dom.shader.TBNCalculation();}else{shader+="varying vec3 fragTangent;\n";shader+="varying vec3 fragBinormal;\n";}}else if(properties.NORMALSPACE=="OBJECT"){shader+="uniform mat4 normalMatrix;\n";}}}
if(properties.FOG){shader+=x3dom.shader.fog();}
if(properties.LIGHTS||properties.CLIPPLANES)
{shader+="varying vec4 fragPosition;\n";}
if(properties.LIGHTS){if(properties.NORMALMAP&&properties.NORMALSPACE=="OBJECT"){}else{shader+="varying vec3 fragNormal;\n";}
shader+=x3dom.shader.light(properties.LIGHTS);}
if(properties.CLIPPLANES){shader+=x3dom.shader.clipPlanes(properties.CLIPPLANES);}
shader+=x3dom.shader.gammaCorrectionDecl(properties);shader+="void main(void) {\n";if(properties.CLIPPLANES)
{shader+="vec3 cappingColor = calculateClipPlanes();\n";}
shader+="vec4 color;\n";shader+="color.rgb = "+x3dom.shader.decodeGamma(properties,"diffuseColor")+";\n";shader+="color.a = 1.0 - transparency;\n";shader+="vec3 _emissiveColor     = emissiveColor;\n";shader+="float _shininess        = shininess;\n";shader+="vec3 _specularColor     = specularColor;\n";shader+="float _ambientIntensity = ambientIntensity;\n";if(properties.MULTIVISMAP||properties.MULTIDIFFALPMAP||properties.MULTISPECSHINMAP||properties.MULTIEMIAMBMAP){shader+="vec2 idCoord;\n";shader+="float roundedIDVisibility = floor(fragID+0.5);\n";shader+="float roundedIDMaterial = floor(fragID+0.5);\n";shader+="if(!gl_FrontFacing) {\n";shader+="    roundedIDMaterial = floor(fragID + (multiDiffuseAlphaWidth*multiDiffuseAlphaWidth) + 0.5);\n";shader+="}\n";}
if(properties.MULTIVISMAP){shader+="idCoord.x = mod(roundedIDVisibility, multiVisibilityWidth) * (1.0 / multiVisibilityWidth) + (0.5 / multiVisibilityWidth);\n";shader+="idCoord.y = floor(roundedIDVisibility / multiVisibilityWidth) * (1.0 / multiVisibilityHeight) + (0.5 / multiVisibilityHeight);\n";shader+="vec4 visibility = texture2D( multiVisibilityMap, idCoord );\n";shader+="if (visibility.r < 1.0) discard; \n";}
if(properties.MULTIDIFFALPMAP){shader+="idCoord.x = mod(roundedIDMaterial, multiDiffuseAlphaWidth) * (1.0 / multiDiffuseAlphaWidth) + (0.5 / multiDiffuseAlphaWidth);\n";shader+="idCoord.y = floor(roundedIDMaterial / multiDiffuseAlphaWidth) * (1.0 / multiDiffuseAlphaHeight) + (0.5 / multiDiffuseAlphaHeight);\n";shader+="vec4 diffAlpha = texture2D( multiDiffuseAlphaMap, idCoord );\n";shader+="color.rgb = "+x3dom.shader.decodeGamma(properties,"diffAlpha.rgb")+";\n";shader+="color.a = diffAlpha.a;\n";}
if(properties.MULTIEMIAMBMAP){shader+="idCoord.x = mod(roundedIDMaterial, multiDiffuseAlphaWidth) * (1.0 / multiDiffuseAlphaWidth) + (0.5 / multiDiffuseAlphaWidth);\n";shader+="idCoord.y = floor(roundedIDMaterial / multiDiffuseAlphaWidth) * (1.0 / multiDiffuseAlphaHeight) + (0.5 / multiDiffuseAlphaHeight);\n";shader+="vec4 emiAmb = texture2D( multiEmissiveAmbientMap, idCoord );\n";shader+="_emissiveColor = emiAmb.rgb;\n";shader+="_ambientIntensity = emiAmb.a;\n";}
if(properties.VERTEXCOLOR){if(properties.COLCOMPONENTS===3){shader+="color.rgb = "+x3dom.shader.decodeGamma(properties,"fragColor")+";\n";}else if(properties.COLCOMPONENTS===4){shader+="color = "+x3dom.shader.decodeGamma(properties,"fragColor")+";\n";}}
if(properties.LIGHTS){shader+="vec3 ambient   = vec3(0.0, 0.0, 0.0);\n";shader+="vec3 diffuse   = vec3(0.0, 0.0, 0.0);\n";shader+="vec3 specular  = vec3(0.0, 0.0, 0.0);\n";shader+="vec3 eye    = -fragPosition.xyz;\n";if(properties.NORMALMAP&&properties.NORMALSPACE=="OBJECT"){shader+="vec3 normal  = vec3(0.0, 0.0, 0.0);\n";}else{shader+="vec3 normal    = normalize(fragNormal);\n";}
if(properties.NORMALMAP){if(properties.NORMALSPACE=="TANGENT"){shader+="vec3 n = normal;\n";if(x3dom.caps.STD_DERIVATIVES){shader+="normal = perturb_normal( n, fragPosition.xyz, vec2(fragTexcoord.x, 1.0-fragTexcoord.y) );\n";}else{shader+="vec3 t = normalize( fragTangent );\n";shader+="vec3 b = normalize( fragBinormal );\n";shader+="mat3 tangentToWorld = mat3(t, b, n);\n";shader+="normal = texture2D( normalMap, vec2(fragTexcoord.x, 1.0-fragTexcoord.y) ).rgb;\n";shader+="normal = 2.0 * normal - 1.0;\n";shader+="normal = normalize( normal * tangentToWorld );\n";shader+="normal.y = -normal.y;\n";shader+="normal.x = -normal.x;\n";}}else if(properties.NORMALSPACE=="OBJECT"){shader+="normal = texture2D( normalMap, vec2(fragTexcoord.x, 1.0-fragTexcoord.y) ).rgb;\n";shader+="normal = 2.0 * normal - 1.0;\n";shader+="normal = (normalMatrix * vec4(normal, 0.0)).xyz;\n";shader+="normal = normalize(normal);\n";}}
if(properties.SHINMAP){shader+="_shininess = texture2D( shininessMap, vec2(fragTexcoord.x, 1.0-fragTexcoord.y) ).r;\n";}
if(properties.SPECMAP){shader+="_specularColor = "+x3dom.shader.decodeGamma(properties,"texture2D(specularMap, vec2(fragTexcoord.x, 1.0-fragTexcoord.y)).rgb")+";\n";}
if(properties.MULTISPECSHINMAP){shader+="idCoord.x = mod(roundedIDMaterial, multiSpecularShininessWidth) * (1.0 / multiSpecularShininessWidth) + (0.5 / multiSpecularShininessWidth);\n";shader+="idCoord.y = floor(roundedIDMaterial / multiSpecularShininessWidth) * (1.0 / multiSpecularShininessHeight) + (0.5 / multiSpecularShininessHeight);\n";shader+="vec4 specShin = texture2D( multiSpecularShininessMap, idCoord );\n";shader+="_specularColor = specShin.rgb;\n";shader+="_shininess = specShin.a;\n";}
if(!properties.SOLID||properties.TWOSIDEDMAT){shader+="if (dot(normal, eye) < 0.0) {\n";shader+="  normal *= -1.0;\n";shader+="}\n";}
if(properties.SEPARATEBACKMAT){shader+="  if(!gl_FrontFacing) {\n";shader+="    color.rgb = "+x3dom.shader.decodeGamma(properties,"backDiffuseColor")+";\n";shader+="    color.a = 1.0 - backTransparency;\n";shader+="    _shininess = backShininess;\n";shader+="    _emissiveColor = backEmissiveColor;\n";shader+="    _specularColor = backSpecularColor;\n";shader+="    _ambientIntensity = backAmbientIntensity;\n";shader+="  }\n";}
if(properties.LIGHTS){shader+="vec3 ads;\n";for(var l=0;l<properties.LIGHTS;l++){var lightCol="light"+l+"_Color";shader+="ads = lighting(light"+l+"_Type, "+"light"+l+"_Location, "+"light"+l+"_Direction, "+
lightCol+", "+"light"+l+"_Attenuation, "+"light"+l+"_Radius, "+"light"+l+"_Intensity, "+"light"+l+"_AmbientIntensity, "+"light"+l+"_BeamWidth, "+"light"+l+"_CutOffAngle, "+"normal, eye, _shininess, _ambientIntensity);\n";shader+="   ambient  += "+lightCol+" * ads.r;\n"+"   diffuse  += "+lightCol+" * ads.g;\n"+"   specular += "+lightCol+" * ads.b;\n";}
shader+="ambient = max(ambient, 0.0);\n";shader+="diffuse = max(diffuse, 0.0);\n";shader+="specular = max(specular, 0.0);\n";}
if(properties.TEXTURED||properties.DIFFUSEMAP||properties.DIFFPLACEMENTMAP){if(properties.CUBEMAP){shader+="vec3 viewDir = normalize(fragViewDir);\n";shader+="vec3 reflected = reflect(viewDir, normal);\n";shader+="reflected = (modelViewMatrixInverse * vec4(reflected,0.0)).xyz;\n";shader+="vec4 texColor = "+x3dom.shader.decodeGamma(properties,"textureCube(cubeMap, reflected)")+";\n";shader+="color.a *= texColor.a;\n";}
else if(properties.DIFFPLACEMENTMAP)
{shader+="vec2 texCoord = vec2(fragTexcoord.x, 1.0-fragTexcoord.y);\n";shader+="vec4 texColor = texture2D(diffuseDisplacementMap, texCoord);\n";}
else
{if(properties.PIXELTEX){shader+="vec2 texCoord = fragTexcoord;\n";}else{shader+="vec2 texCoord = vec2(fragTexcoord.x, 1.0-fragTexcoord.y);\n";}
shader+="vec4 texColor = "+x3dom.shader.decodeGamma(properties,"texture2D(diffuseMap, texCoord)")+";\n";shader+="color.a *= texColor.a;\n";}
if(properties.BLENDING){shader+="color.rgb = (_emissiveColor + max(ambient + diffuse, 0.0) * color.rgb + specular*_specularColor);\n";if(properties.CUBEMAP){shader+="color.rgb = mix(color.rgb, texColor.rgb, vec3(0.75));\n";}else{shader+="color.rgb *= texColor.rgb;\n";}}else{shader+="color.rgb = (_emissiveColor + max(ambient + diffuse, 0.0) * texColor.rgb + specular*_specularColor);\n";}}else{shader+="color.rgb = (_emissiveColor + max(ambient + diffuse, 0.0) * color.rgb + specular*_specularColor);\n";}}else{if(properties.APPMAT&&!properties.VERTEXCOLOR){shader+="color = vec4(0.0, 0.0, 0.0, 1.0 - transparency);\n";}
if(properties.TEXTURED||properties.DIFFUSEMAP){if(properties.PIXELTEX){shader+="vec2 texCoord = fragTexcoord;\n";}else{shader+="vec2 texCoord = vec2(fragTexcoord.x, 1.0-fragTexcoord.y);\n";}
if(properties.IS_PARTICLE){shader+="texCoord = clamp(gl_PointCoord, 0.01, 0.99);\n";}
shader+="vec4 texColor = "+x3dom.shader.decodeGamma(properties,"texture2D(diffuseMap, texCoord)")+";\n";shader+="color.a = texColor.a;\n";if(properties.BLENDING||properties.IS_PARTICLE){shader+="color.rgb += _emissiveColor.rgb;\n";shader+="color.rgb *= texColor.rgb;\n";}else{shader+="color = texColor;\n";}}else if(!properties.VERTEXCOLOR&&!properties.POINTLINE2D){shader+="color.rgb += _emissiveColor;\n";}else if(!properties.VERTEXCOLOR&&properties.POINTLINE2D){shader+="color.rgb = _emissiveColor;\n";if(properties.IS_PARTICLE){shader+="float pAlpha = 1.0 - clamp(length((gl_PointCoord - 0.5) * 2.0), 0.0, 1.0);\n";shader+="color.rgb *= vec3(pAlpha);\n";shader+="color.a = pAlpha;\n";}}else if(properties.IS_PARTICLE){shader+="float pAlpha = 1.0 - clamp(length((gl_PointCoord - 0.5) * 2.0), 0.0, 1.0);\n";shader+="color.rgb *= vec3(pAlpha);\n";shader+="color.a = pAlpha;\n";}}
if(properties.CLIPPLANES)
{shader+="if (cappingColor.r != -1.0) {\n";shader+="    color.rgb = cappingColor;\n";shader+="}\n";}
if(properties.TEXT){shader+="if (color.a <= 0.5) discard;\n";}else{shader+="if (color.a <= "+properties.ALPHATHRESHOLD+") discard;\n";}
shader+="color = clamp(color, 0.0, 1.0);\n";shader+="color = "+x3dom.shader.encodeGamma(properties,"color")+";\n";if(properties.FOG){shader+="float f0 = calcFog(fragEyePosition);\n";shader+="color.rgb = fogColor * (1.0-f0) + f0 * (color.rgb);\n";}
shader+="gl_FragColor = color;\n";shader+="}\n";var fragmentShader=gl.createShader(gl.FRAGMENT_SHADER);gl.shaderSource(fragmentShader,shader);gl.compileShader(fragmentShader);if(!gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)){x3dom.debug.logInfo("FRAGMENT:\n"+shader);x3dom.debug.logError("FragmentShader "+gl.getShaderInfoLog(fragmentShader));}
return fragmentShader;};x3dom.shader.DynamicMobileShader=function(gl,properties)
{this.program=gl.createProgram();var vertexShader=this.generateVertexShader(gl,properties);var fragmentShader=this.generateFragmentShader(gl,properties);gl.attachShader(this.program,vertexShader);gl.attachShader(this.program,fragmentShader);gl.bindAttribLocation(this.program,0,"position");gl.linkProgram(this.program);return this.program;};x3dom.shader.DynamicMobileShader.prototype.generateVertexShader=function(gl,properties)
{var shader="";shader+=x3dom.shader.material();if(properties.TWOSIDEDMAT){shader+=x3dom.shader.twoSidedMaterial();}
shader+="uniform mat4 normalMatrix;\n";shader+="uniform mat4 modelViewMatrix;\n";shader+="uniform mat4 modelViewProjectionMatrix;\n";if(properties.POSCOMPONENTS==3){shader+="attribute vec3 position;\n";}else if(properties.POSCOMPONENTS==4){shader+="attribute vec4 position;\n";}
if(properties.IMAGEGEOMETRY){shader+="uniform vec3 IG_bboxMin;\n";shader+="uniform vec3 IG_bboxMax;\n";shader+="uniform float IG_coordTextureWidth;\n";shader+="uniform float IG_coordTextureHeight;\n";shader+="uniform vec2 IG_implicitMeshSize;\n";for(var i=0;i<properties.IG_PRECISION;i++){shader+="uniform sampler2D IG_coords"+i+"\n;";}
if(properties.IG_INDEXED){shader+="uniform sampler2D IG_index;\n";shader+="uniform float IG_indexTextureWidth;\n";shader+="uniform float IG_indexTextureHeight;\n";}}
if(properties.POPGEOMETRY){shader+="uniform float PG_precisionLevel;\n";shader+="uniform float PG_powPrecision;\n";shader+="uniform vec3 PG_maxBBSize;\n";shader+="uniform vec3 PG_bbMin;\n";shader+="uniform vec3 PG_bbMaxModF;\n";shader+="uniform vec3 PG_bboxShiftVec;\n";shader+="uniform float PG_numAnchorVertices;\n";shader+="attribute float PG_vertexID;\n";}
if(!properties.POINTLINE2D){if(properties.IMAGEGEOMETRY){shader+="uniform sampler2D IG_normals;\n";}else{if(properties.NORCOMPONENTS==2){if(properties.POSCOMPONENTS!=4){shader+="attribute vec2 normal;\n";}}else if(properties.NORCOMPONENTS==3){shader+="attribute vec3 normal;\n";}}}
shader+="varying vec4 fragColor;\n";if(properties.VERTEXCOLOR){if(properties.IMAGEGEOMETRY){shader+="uniform sampler2D IG_colors;";}else{if(properties.COLCOMPONENTS==3){shader+="attribute vec3 color;";}else if(properties.COLCOMPONENTS==4){shader+="attribute vec4 color;";}}}
if(properties.TEXTURED){shader+="varying vec2 fragTexcoord;\n";if(properties.IMAGEGEOMETRY){shader+="uniform sampler2D IG_texCoords;";}else{shader+="attribute vec2 texcoord;\n";}
if(properties.TEXTRAFO){shader+="uniform mat4 texTrafoMatrix;\n";}
if(!properties.BLENDING){shader+="varying vec3 fragAmbient;\n";shader+="varying vec3 fragDiffuse;\n";}
if(properties.CUBEMAP){shader+="varying vec3 fragViewDir;\n";shader+="varying vec3 fragNormal;\n";shader+="uniform mat4 viewMatrix;\n";}}
if(properties.FOG){shader+=x3dom.shader.fog();}
if(properties.LIGHTS){shader+=x3dom.shader.light(properties.LIGHTS);}
if(properties.REQUIREBBOX){shader+="uniform vec3 bgCenter;\n";shader+="uniform vec3 bgSize;\n";shader+="uniform float bgPrecisionMax;\n";}
if(properties.REQUIREBBOXNOR){shader+="uniform float bgPrecisionNorMax;\n";}
if(properties.REQUIREBBOXCOL){shader+="uniform float bgPrecisionColMax;\n";}
if(properties.REQUIREBBOXTEX){shader+="uniform float bgPrecisionTexMax;\n";}
shader+="void main(void) {\n";shader+="gl_PointSize = 2.0;\n";if(properties.IMAGEGEOMETRY){if(properties.IG_INDEXED){shader+="vec2 halfPixel = vec2(0.5/IG_indexTextureWidth,0.5/IG_indexTextureHeight);\n";shader+="vec2 IG_texCoord = vec2(position.x*(IG_implicitMeshSize.x/IG_indexTextureWidth), position.y*(IG_implicitMeshSize.y/IG_indexTextureHeight)) + halfPixel;\n";shader+="vec2 IG_indices = texture2D( IG_index, IG_texCoord ).rg;\n";shader+="halfPixel = vec2(0.5/IG_coordTextureWidth,0.5/IG_coordTextureHeight);\n";shader+="IG_texCoord = (IG_indices * 0.996108948) + halfPixel;\n";}else{shader+="vec2 halfPixel = vec2(0.5/IG_coordTextureWidth, 0.5/IG_coordTextureHeight);\n";shader+="vec2 IG_texCoord = vec2(position.x*(IG_implicitMeshSize.x/IG_coordTextureWidth), position.y*(IG_implicitMeshSize.y/IG_coordTextureHeight)) + halfPixel;\n";}
shader+="vec3 temp = vec3(0.0, 0.0, 0.0);\n";shader+="vec3 vertPosition = vec3(0.0, 0.0, 0.0);\n";for(var i=0;i<properties.IG_PRECISION;i++){shader+="temp = 255.0 * texture2D( IG_coords"+i+", IG_texCoord ).rgb;\n";shader+="vertPosition *= 256.0;\n";shader+="vertPosition += temp;\n";}
shader+="vertPosition /= (pow(2.0, 8.0 * "+properties.IG_PRECISION+".0) - 1.0);\n";shader+="vertPosition = vertPosition * (IG_bboxMax - IG_bboxMin) + IG_bboxMin;\n";if(!properties.POINTLINE2D){shader+="vec3 vertNormal = texture2D( IG_normals, IG_texCoord ).rgb;\n";shader+="vertNormal = vertNormal * 2.0 - 1.0;\n";}
if(properties.VERTEXCOLOR){if(properties.COLCOMPONENTS==3){shader+="vec3 vertColor = texture2D( IG_colors, IG_texCoord ).rgb;";}else if(properties.COLCOMPONENTS==4){shader+="vec4 vertColor = texture2D( IG_colors, IG_texCoord ).rgba;";}}
if(properties.TEXTURED){shader+="vec4 IG_doubleTexCoords = texture2D( IG_texCoords, IG_texCoord );\n";shader+="vec2 vertTexCoord;";shader+="vertTexCoord.r = (IG_doubleTexCoords.r * 0.996108948) + (IG_doubleTexCoords.b * 0.003891051);\n";shader+="vertTexCoord.g = (IG_doubleTexCoords.g * 0.996108948) + (IG_doubleTexCoords.a * 0.003891051);\n";}}else{shader+="vec3 vertPosition = position.xyz;\n";if(properties.POPGEOMETRY){shader+="vec3 offsetVec = step(vertPosition / bgPrecisionMax, PG_bbMaxModF) * PG_bboxShiftVec;\n";shader+="if ((PG_precisionLevel <= 2.0) || PG_vertexID >= PG_numAnchorVertices) {\n";shader+="   vertPosition = floor(vertPosition / PG_powPrecision) * PG_powPrecision;\n";shader+="   vertPosition /= (65536.0 - PG_powPrecision);\n";shader+="}\n";shader+="else {\n";shader+="   vertPosition /= bgPrecisionMax;\n";shader+="}\n";shader+="vertPosition = (vertPosition + offsetVec + PG_bbMin) * PG_maxBBSize;\n";}
else if(properties.REQUIREBBOX){shader+="vertPosition = bgCenter + bgSize * vertPosition / bgPrecisionMax;\n";}
if(!properties.POINTLINE2D){if(properties.NORCOMPONENTS==2){if(properties.POSCOMPONENTS==4){shader+="vec3 vertNormal = vec3(position.w / 256.0); \n";shader+="vertNormal.x = floor(vertNormal.x) / 255.0; \n";shader+="vertNormal.y = fract(vertNormal.y) * 1.00392156862745; \n";}else if(properties.REQUIREBBOXNOR){shader+="vec3 vertNormal = vec3(normal.xy, 0.0) / bgPrecisionNorMax;\n";}else{shader+="vec3 vertNormal = vec3(normal.xy, 0.0);\n";}
shader+="vec2 thetaPhi = 3.14159265358979 * vec2(vertNormal.x, vertNormal.y*2.0-1.0); \n";shader+="vec4 sinCosThetaPhi = vec4(thetaPhi, thetaPhi + 1.5707963267949); \n";shader+="vec4 thetaPhiPow2 = sinCosThetaPhi * sinCosThetaPhi; \n";shader+="vec4 thetaPhiPow3 =  thetaPhiPow2  * sinCosThetaPhi; \n";shader+="vec4 thetaPhiPow5 =  thetaPhiPow3  * thetaPhiPow2; \n";shader+="vec4 thetaPhiPow7 =  thetaPhiPow5  * thetaPhiPow2; \n";shader+="vec4 thetaPhiPow9 =  thetaPhiPow7  * thetaPhiPow2; \n";shader+="sinCosThetaPhi +=  -0.16666666667   * thetaPhiPow3; \n";shader+="sinCosThetaPhi +=   0.00833333333   * thetaPhiPow5; \n";shader+="sinCosThetaPhi +=  -0.000198412698  * thetaPhiPow7; \n";shader+="sinCosThetaPhi +=   0.0000027557319 * thetaPhiPow9; \n";shader+="vertNormal.x = sinCosThetaPhi.x * sinCosThetaPhi.w; \n";shader+="vertNormal.y = sinCosThetaPhi.x * sinCosThetaPhi.y; \n";shader+="vertNormal.z = sinCosThetaPhi.z; \n";}else{shader+="vec3 vertNormal = normal;\n";if(properties.REQUIREBBOXNOR){shader+="vertNormal = vertNormal / bgPrecisionNorMax;\n";}
if(properties.POPGEOMETRY){shader+="vertNormal = 2.0*vertNormal - 1.0;\n";}}}
if(properties.VERTEXCOLOR){if(properties.COLCOMPONENTS==3){shader+="vec3 vertColor = color;";}else if(properties.COLCOMPONENTS==4){shader+="vec4 vertColor = color;";}
if(properties.REQUIREBBOXCOL){shader+="vertColor = vertColor / bgPrecisionColMax;\n";}}
if(properties.TEXTURED){shader+="vec2 vertTexCoord = texcoord;\n";if(properties.REQUIREBBOXTEX){shader+="vertTexCoord = vertTexCoord / bgPrecisionTexMax;\n";}}}
shader+="vec3 positionMV = (modelViewMatrix * vec4(vertPosition, 1.0)).xyz;\n";if(!properties.POINTLINE2D){shader+="vec3 normalMV = normalize( (normalMatrix * vec4(vertNormal, 0.0)).xyz );\n";}
shader+="vec3 eye = -positionMV;\n";if(properties.VERTEXCOLOR){shader+="vec3 rgb = vertColor.rgb;\n";if(properties.COLCOMPONENTS==4){shader+="float alpha = vertColor.a;\n";}else if(properties.COLCOMPONENTS==3){shader+="float alpha = 1.0 - transparency;\n";}}else{shader+="vec3 rgb = diffuseColor;\n";shader+="float alpha = 1.0 - transparency;\n";}
if(properties.TEXTURED){if(properties.CUBEMAP){shader+="fragViewDir = viewMatrix[3].xyz;\n";shader+="fragNormal = normalMV;\n";}else if(properties.SPHEREMAPPING){shader+=" fragTexcoord = 0.5 + normalMV.xy / 2.0;\n";}else if(properties.TEXTRAFO){shader+=" fragTexcoord = (texTrafoMatrix * vec4(vertTexCoord, 1.0, 1.0)).xy;\n";}else{shader+=" fragTexcoord = vertTexCoord;\n";if(properties.POPGEOMETRY&&x3dom.debug.usePrecisionLevelAsTexCoord===true)
shader+="fragTexcoord = vec2(0.03125 + 0.9375 * (PG_precisionLevel / 16.0), 1.0);";}}
if(properties.LIGHTS){shader+="vec3 ambient   = vec3(0.0, 0.0, 0.0);\n";shader+="vec3 diffuse   = vec3(0.0, 0.0, 0.0);\n";shader+="vec3 specular  = vec3(0.0, 0.0, 0.0);\n";shader+="float _shininess     = shininess;\n";shader+="vec3 _specularColor  = specularColor;\n";shader+="vec3 _emissiveColor  = emissiveColor;\n";shader+="float _ambientIntensity = ambientIntensity;\n";if(!properties.SOLID||properties.TWOSIDEDMAT){shader+="if (dot(normalMV, eye) < 0.0) {\n";shader+="  normalMV *= -1.0;\n";if(properties.SEPARATEBACKMAT){shader+="    rgb = backDiffuseColor;\n";shader+="    alpha = 1.0 - backTransparency;\n";shader+="    _shininess = backShininess;\n";shader+="    _emissiveColor = backEmissiveColor;\n";shader+="    _specularColor = backSpecularColor;\n";shader+="    _ambientIntensity = backAmbientIntensity;\n";}
shader+="  }\n";}
if(properties.LIGHTS){shader+="vec3 ads;\n";for(var l=0;l<properties.LIGHTS;l++){var lightCol="light"+l+"_Color";shader+="ads = lighting(light"+l+"_Type, "+"light"+l+"_Location, "+"light"+l+"_Direction, "+
lightCol+", "+"light"+l+"_Attenuation, "+"light"+l+"_Radius, "+"light"+l+"_Intensity, "+"light"+l+"_AmbientIntensity, "+"light"+l+"_BeamWidth, "+"light"+l+"_CutOffAngle, "+"normalMV, eye, _shininess, _ambientIntensity);\n";shader+="   ambient  += "+lightCol+" * ads.r;\n"+"   diffuse  += "+lightCol+" * ads.g;\n"+"   specular += "+lightCol+" * ads.b;\n";}
shader+="ambient = max(ambient, 0.0);\n";shader+="diffuse = max(diffuse, 0.0);\n";shader+="specular = max(specular, 0.0);\n";}
if(properties.TEXTURED&&!properties.BLENDING){shader+="fragAmbient = ambient;\n";shader+="fragDiffuse = diffuse;\n";shader+="fragColor.rgb = (_emissiveColor + specular*_specularColor);\n";shader+="fragColor.a = alpha;\n";}else{shader+="fragColor.rgb = (_emissiveColor + max(ambient + diffuse, 0.0) * rgb + specular*_specularColor);\n";shader+="fragColor.a = alpha;\n";}}else{if(properties.APPMAT&&!properties.VERTEXCOLOR){shader+="rgb = vec3(0.0, 0.0, 0.0);\n";}
if(properties.TEXTURED&&!properties.BLENDING){shader+="fragAmbient = vec3(0.0);\n";shader+="fragDiffuse = vec3(1.0);\n";shader+="fragColor.rgb = vec3(0.0);\n";shader+="fragColor.a = alpha;\n";}else if(!properties.VERTEXCOLOR&&properties.POINTLINE2D){shader+="fragColor.rgb = emissiveColor;\n";shader+="fragColor.a = alpha;\n";}else{shader+="fragColor.rgb = rgb + emissiveColor;\n";shader+="fragColor.a = alpha;\n";}}
if(properties.FOG){shader+="float f0 = calcFog(-positionMV);\n";shader+="fragColor.rgb = fogColor * (1.0-f0) + f0 * (fragColor.rgb);\n";}
shader+="gl_Position = modelViewProjectionMatrix * vec4(vertPosition, 1.0);\n";shader+="}\n";var vertexShader=gl.createShader(gl.VERTEX_SHADER);gl.shaderSource(vertexShader,shader);gl.compileShader(vertexShader);if(!gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[DynamicMobileShader] VertexShader "+gl.getShaderInfoLog(vertexShader));}
return vertexShader;};x3dom.shader.DynamicMobileShader.prototype.generateFragmentShader=function(gl,properties)
{var shader="#ifdef GL_FRAGMENT_PRECISION_HIGH\n";shader+="precision highp float;\n";shader+="#else\n";shader+=" precision mediump float;\n";shader+="#endif\n\n";shader+="varying vec4 fragColor;\n";if(properties.TEXTURED){if(properties.CUBEMAP){shader+="uniform samplerCube cubeMap;\n";shader+="varying vec3 fragViewDir;\n";shader+="varying vec3 fragNormal;\n";shader+="uniform mat4 modelViewMatrixInverse;\n";}else{shader+="uniform sampler2D diffuseMap;           \n";shader+="varying vec2 fragTexcoord;       \n";}
if(!properties.BLENDING){shader+="varying vec3 fragAmbient;\n";shader+="varying vec3 fragDiffuse;\n";}}
shader+="void main(void) {\n";shader+="vec4 color = fragColor;\n";if(properties.TEXTURED){if(properties.CUBEMAP){shader+="vec3 normal = normalize(fragNormal);\n";shader+="vec3 viewDir = normalize(fragViewDir);\n";shader+="vec3 reflected = reflect(viewDir, normal);\n";shader+="reflected = (modelViewMatrixInverse * vec4(reflected,0.0)).xyz;\n";shader+="vec4 texColor = textureCube(cubeMap, reflected);\n";}else{shader+="vec4 texColor = texture2D(diffuseMap, vec2(fragTexcoord.s, 1.0-fragTexcoord.t));\n";}
if(properties.BLENDING){if(properties.CUBEMAP){shader+="color.rgb = mix(color.rgb, texColor.rgb, vec3(0.75));\n";shader+="color.a = texColor.a;\n";}else{shader+="color.rgb *= texColor.rgb;\n";shader+="color.a *= texColor.a;\n";}}else{shader+="color.rgb += max(fragAmbient + fragDiffuse, 0.0) * texColor.rgb;\n";shader+="color.a *= texColor.a;\n";}}
if(properties.TEXT){shader+="if (color.a <= 0.5) discard;\n";}else{shader+="if (color.a <= 0.1) discard;\n";}
shader+="gl_FragColor = clamp(color, 0.0, 1.0);\n";shader+="}\n";var fragmentShader=gl.createShader(gl.FRAGMENT_SHADER);gl.shaderSource(fragmentShader,shader);gl.compileShader(fragmentShader);if(!gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[DynamicMobileShader] FragmentShader "+gl.getShaderInfoLog(fragmentShader));}
return fragmentShader;};x3dom.shader.DynamicShaderPicking=function(gl,properties,pickMode)
{this.program=gl.createProgram();var vertexShader=this.generateVertexShader(gl,properties,pickMode);var fragmentShader=this.generateFragmentShader(gl,properties,pickMode);gl.attachShader(this.program,vertexShader);gl.attachShader(this.program,fragmentShader);gl.bindAttribLocation(this.program,0,"position");gl.linkProgram(this.program);return this.program;};x3dom.shader.DynamicShaderPicking.prototype.generateVertexShader=function(gl,properties,pickMode)
{var shader="";shader+="uniform mat4 modelMatrix;\n";shader+="uniform mat4 modelViewProjectionMatrix;\n";shader+="attribute vec3 position;\n";shader+="uniform vec3 from;\n";shader+="varying vec3 worldCoord;\n";if(pickMode==1){shader+="attribute vec3 color;\n";shader+="varying vec3 fragColor;\n";}else if(pickMode==2){shader+="attribute vec2 texcoord;\n";shader+="varying vec3 fragColor;\n";}
if(properties.REQUIREBBOX){shader+="uniform vec3 bgCenter;\n";shader+="uniform vec3 bgSize;\n";shader+="uniform float bgPrecisionMax;\n";}
if(properties.REQUIREBBOXCOL){shader+="uniform float bgPrecisionColMax;\n";}
if(properties.REQUIREBBOXTEX){shader+="uniform float bgPrecisionTexMax;\n";}
if(properties.VERTEXID){shader+="uniform float shadowIDs;\n";if(pickMode==3){shader+="varying vec3 idCoord;\n";}else{shader+="varying vec2 idCoord;\n";}
shader+="varying float fragID;\n";shader+="attribute float id;\n";}
if(properties.IMAGEGEOMETRY){shader+="uniform vec3 IG_bboxMin;\n";shader+="uniform vec3 IG_bboxMax;\n";shader+="uniform float IG_coordTextureWidth;\n";shader+="uniform float IG_coordTextureHeight;\n";shader+="uniform vec2 IG_implicitMeshSize;\n";for(var i=0;i<properties.IG_PRECISION;i++){shader+="uniform sampler2D IG_coords"+i+"\n;";}
if(properties.IG_INDEXED){shader+="uniform sampler2D IG_index;\n";shader+="uniform float IG_indexTextureWidth;\n";shader+="uniform float IG_indexTextureHeight;\n";}}
if(properties.POPGEOMETRY){shader+="uniform float PG_precisionLevel;\n";shader+="uniform float PG_powPrecision;\n";shader+="uniform vec3 PG_maxBBSize;\n";shader+="uniform vec3 PG_bbMin;\n";shader+="uniform vec3 PG_bbMaxModF;\n";shader+="uniform vec3 PG_bboxShiftVec;\n";shader+="uniform float PG_numAnchorVertices;\n";shader+="attribute float PG_vertexID;\n";}
if(properties.CLIPPLANES){shader+="uniform mat4 modelViewMatrix;\n";shader+="varying vec4 fragPosition;\n";}
shader+="void main(void) {\n";shader+="gl_PointSize = 2.0;\n";shader+="vec3 pos = position;\n";if(properties.VERTEXID){if(pickMode==0){shader+="idCoord = vec2((id + shadowIDs) / 256.0);\n";shader+="idCoord.x = floor(idCoord.x) / 255.0;\n";shader+="idCoord.y = fract(idCoord.y) * 1.00392156862745;\n";shader+="fragID = id;\n";}else if(pickMode==3){shader+="float ID = id + shadowIDs;\n";shader+="float h = floor(ID / 256.0);\n";shader+="idCoord.x = ID - (h * 256.0);\n";shader+="idCoord.z = floor(h / 256.0);\n";shader+="idCoord.y = h - (idCoord.z * 256.0);\n";shader+="idCoord = idCoord.zyx / 255.0;\n";shader+="fragID = id;\n";}else if(pickMode==4){shader+="idCoord = vec2((id + shadowIDs) / 256.0);\n";shader+="idCoord.x = floor(idCoord.x) / 255.0;\n";shader+="idCoord.y = fract(idCoord.y) * 1.00392156862745;\n";shader+="fragID = id;\n";}}
if(properties.IMAGEGEOMETRY){if(properties.IG_INDEXED){shader+="vec2 halfPixel = vec2(0.5/IG_indexTextureWidth,0.5/IG_indexTextureHeight);\n";shader+="vec2 IG_texCoord = vec2(position.x*(IG_implicitMeshSize.x/IG_indexTextureWidth), position.y*(IG_implicitMeshSize.y/IG_indexTextureHeight)) + halfPixel;\n";shader+="vec2 IG_indices = texture2D( IG_index, IG_texCoord ).rg;\n";shader+="halfPixel = vec2(0.5/IG_coordTextureWidth,0.5/IG_coordTextureHeight);\n";shader+="IG_texCoord = (IG_indices * 0.996108948) + halfPixel;\n";}else{shader+="vec2 halfPixel = vec2(0.5/IG_coordTextureWidth, 0.5/IG_coordTextureHeight);\n";shader+="vec2 IG_texCoord = vec2(position.x*(IG_implicitMeshSize.x/IG_coordTextureWidth), position.y*(IG_implicitMeshSize.y/IG_coordTextureHeight)) + halfPixel;\n";}
shader+="pos = texture2D( IG_coordinateTexture, IG_texCoord ).rgb;\n";shader+="pos = pos * (IG_bboxMax - IG_bboxMin) + IG_bboxMin;\n";}else if(properties.POPGEOMETRY){shader+="vec3 offsetVec = step(pos / bgPrecisionMax, PG_bbMaxModF) * PG_bboxShiftVec;\n";shader+="if (PG_precisionLevel <= 2.0) {\n";shader+="pos = floor(pos / PG_powPrecision) * PG_powPrecision;\n";shader+="pos /= (65536.0 - PG_powPrecision);\n";shader+="}\n";shader+="else {\n";shader+="pos /= bgPrecisionMax;\n";shader+="}\n";shader+="pos = (pos + offsetVec + PG_bbMin) * PG_maxBBSize;\n";}else{if(properties.REQUIREBBOX){shader+="pos = bgCenter + bgSize * pos / bgPrecisionMax;\n";}
if(pickMode==1&&!properties.REQUIREBBOXCOL){shader+="fragColor = color;\n";}else if(pickMode==1&&properties.REQUIREBBOXCOL){shader+="fragColor = color / bgPrecisionColMax;\n";}else if(pickMode==2&&!properties.REQUIREBBOXTEX){shader+="fragColor = vec3(abs(texcoord.x), abs(texcoord.y), 0.0);\n";}else if(pickMode==2&&properties.REQUIREBBOXTEX){shader+="vec2 texCoord = texcoord / bgPrecisionTexMax;\n";shader+="fragColor = vec3(abs(texCoord.x), abs(texCoord.y), 0.0);\n";}}
if(properties.CLIPPLANES){shader+="fragPosition = (modelViewMatrix * vec4(pos, 1.0));\n";}
shader+="worldCoord = (modelMatrix * vec4(pos, 1.0)).xyz - from;\n";shader+="gl_Position = modelViewProjectionMatrix * vec4(pos, 1.0);\n";shader+="}\n";var vertexShader=gl.createShader(gl.VERTEX_SHADER);gl.shaderSource(vertexShader,shader);gl.compileShader(vertexShader);if(!gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)){x3dom.debug.logInfo("VERTEX:\n"+shader);x3dom.debug.logError("VertexShader "+gl.getShaderInfoLog(vertexShader));}
return vertexShader;};x3dom.shader.DynamicShaderPicking.prototype.generateFragmentShader=function(gl,properties,pickMode)
{var shader="#ifdef GL_FRAGMENT_PRECISION_HIGH\n";shader+=" precision highp float;\n";shader+="#else\n";shader+=" precision mediump float;\n";shader+="#endif\n\n";shader+="uniform float highBit;\n";shader+="uniform float lowBit;\n";shader+="uniform float sceneSize;\n";shader+="varying vec3 worldCoord;\n";if(pickMode==1||pickMode==2){shader+="varying vec3 fragColor;\n";}
if(properties.VERTEXID){if(pickMode==3){shader+="varying vec3 idCoord;\n";}else{shader+="varying vec2 idCoord;\n";}
shader+="varying float fragID;\n";}
if(properties.CLIPPLANES){shader+="uniform mat4 viewMatrixInverse;\n";shader+="varying vec4 fragPosition;\n";}
if(properties.MULTIVISMAP){shader+="uniform sampler2D multiVisibilityMap;\n";shader+="uniform float multiVisibilityWidth;\n";shader+="uniform float multiVisibilityHeight;\n";}
if(properties.CLIPPLANES){shader+=x3dom.shader.clipPlanes(properties.CLIPPLANES);}
shader+="void main(void) {\n";if(properties.CLIPPLANES)
{shader+="calculateClipPlanes();\n";}
if(pickMode==1||pickMode==2){shader+="vec4 color = vec4(fragColor, lowBit);\n";}else if(pickMode==4){shader+="vec4 color = vec4(highBit, lowBit, 0.0, 0.0);\n";}else{shader+="vec4 color = vec4(0.0, 0.0, highBit, lowBit);\n";}
if(properties.VERTEXID){if(pickMode==0||pickMode==4){shader+="color.ba = idCoord;\n";}else if(pickMode==3){shader+="color.gba = idCoord;\n";}
if(properties.MULTIVISMAP){shader+="vec2 idTexCoord;\n";shader+="float roundedID = floor(fragID+0.5);\n";shader+="idTexCoord.x = (mod(roundedID, multiVisibilityWidth)) * (1.0 / multiVisibilityWidth) + (0.5 / multiVisibilityWidth);\n";shader+="idTexCoord.y = (floor(roundedID / multiVisibilityHeight)) * (1.0 / multiVisibilityHeight) + (0.5 / multiVisibilityHeight);\n";shader+="vec4 visibility = texture2D( multiVisibilityMap, idTexCoord );\n";shader+="if (visibility.r < 1.0) discard; \n";}}
if(pickMode!=1&&pickMode!=2){shader+="float d = length(worldCoord) / sceneSize;\n";}
if(pickMode==0){shader+="vec2 comp = fract(d * vec2(256.0, 1.0));\n";shader+="color.rg = comp - (comp.rr * vec2(0.0, 1.0/256.0));\n";}else if(pickMode==3){shader+="color.r = d;\n";}
shader+="gl_FragColor = color;\n";shader+="}\n";var fragmentShader=gl.createShader(gl.FRAGMENT_SHADER);gl.shaderSource(fragmentShader,shader);gl.compileShader(fragmentShader);if(!gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)){x3dom.debug.logInfo("FRAGMENT:\n"+shader);x3dom.debug.logError("FragmentShader "+gl.getShaderInfoLog(fragmentShader));}
return fragmentShader;};x3dom.shader.ComposedShader=function(gl,shape)
{this.program=gl.createProgram();var vertexShader=this.generateVertexShader(gl,shape);var fragmentShader=this.generateFragmentShader(gl,shape);gl.attachShader(this.program,vertexShader);gl.attachShader(this.program,fragmentShader);gl.bindAttribLocation(this.program,0,"position");gl.linkProgram(this.program);return this.program;};x3dom.shader.ComposedShader.prototype.generateVertexShader=function(gl,shape)
{var shader=shape._cf.appearance.node._shader._vertex._vf.url[0];var vertexShader=gl.createShader(gl.VERTEX_SHADER);gl.shaderSource(vertexShader,shader);gl.compileShader(vertexShader);if(!gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[ComposedShader] VertexShader "+gl.getShaderInfoLog(vertexShader));}
return vertexShader;};x3dom.shader.ComposedShader.prototype.generateFragmentShader=function(gl,shape)
{var shader=shape._cf.appearance.node._shader._fragment._vf.url[0];var fragmentShader=gl.createShader(gl.FRAGMENT_SHADER);gl.shaderSource(fragmentShader,shader);gl.compileShader(fragmentShader);if(!gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[ComposedShader] FragmentShader "+gl.getShaderInfoLog(fragmentShader));}
return fragmentShader;};x3dom.shader.NormalShader=function(gl)
{this.program=gl.createProgram();var vertexShader=this.generateVertexShader(gl);var fragmentShader=this.generateFragmentShader(gl);gl.attachShader(this.program,vertexShader);gl.attachShader(this.program,fragmentShader);gl.bindAttribLocation(this.program,0,"position");gl.linkProgram(this.program);return this.program;};x3dom.shader.NormalShader.prototype.generateVertexShader=function(gl)
{var shader="attribute vec3 position;\n"+"attribute vec3 normal;\n"+"uniform vec3 bgCenter;\n"+"uniform vec3 bgSize;\n"+"uniform float bgPrecisionMax;\n"+"uniform float bgPrecisionNorMax;\n"+"uniform mat4 normalMatrix;\n"+"uniform mat4 modelViewProjectionMatrix;\n"+"varying vec3 fragNormal;\n"+"void main(void) {\n"+"    vec3 pos = bgCenter + bgSize * position / bgPrecisionMax;\n"+"    fragNormal = (normalMatrix * vec4(normal / bgPrecisionNorMax, 0.0)).xyz;\n"+"    gl_Position = modelViewProjectionMatrix * vec4(pos, 1.0);\n"+"}\n";var vertexShader=gl.createShader(gl.VERTEX_SHADER);gl.shaderSource(vertexShader,shader);gl.compileShader(vertexShader);if(!gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[NormalShader] VertexShader "+gl.getShaderInfoLog(vertexShader));}
return vertexShader;};x3dom.shader.NormalShader.prototype.generateFragmentShader=function(gl)
{var shader="#ifdef GL_FRAGMENT_PRECISION_HIGH\n";shader+="precision highp float;\n";shader+="#else\n";shader+=" precision mediump float;\n";shader+="#endif\n\n";shader+="varying vec3 fragNormal;\n"+"void main(void) {\n"+"    gl_FragColor = vec4(normalize(fragNormal) / 2.0 + 0.5, 1.0);\n"+"}\n";var fragmentShader=gl.createShader(gl.FRAGMENT_SHADER);gl.shaderSource(fragmentShader,shader);gl.compileShader(fragmentShader);if(!gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[NormalShader] FragmentShader "+gl.getShaderInfoLog(fragmentShader));}
return fragmentShader;};x3dom.shader.FrontgroundTextureShader=function(gl)
{this.program=gl.createProgram();var vertexShader=this.generateVertexShader(gl);var fragmentShader=this.generateFragmentShader(gl);gl.attachShader(this.program,vertexShader);gl.attachShader(this.program,fragmentShader);gl.bindAttribLocation(this.program,0,"position");gl.linkProgram(this.program);return this.program;};x3dom.shader.FrontgroundTextureShader.prototype.generateVertexShader=function(gl)
{var shader="attribute vec3 position;\n"+"varying vec2 fragTexCoord;\n"+"\n"+"void main(void) {\n"+"    vec2 texCoord = (position.xy + 1.0) * 0.5;\n"+"    fragTexCoord = texCoord;\n"+"    gl_Position = vec4(position.xy, 0.0, 1.0);\n"+"}\n";var vertexShader=gl.createShader(gl.VERTEX_SHADER);gl.shaderSource(vertexShader,shader);gl.compileShader(vertexShader);if(!gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[FrontgroundTextureShader] VertexShader "+gl.getShaderInfoLog(vertexShader));}
return vertexShader;};x3dom.shader.FrontgroundTextureShader.prototype.generateFragmentShader=function(gl)
{var shader="#ifdef GL_FRAGMENT_PRECISION_HIGH\n";shader+="precision highp float;\n";shader+="#else\n";shader+=" precision mediump float;\n";shader+="#endif\n\n";shader+="uniform sampler2D tex;\n"+"varying vec2 fragTexCoord;\n"+"\n"+"void main(void) {\n"+"    vec4 col = texture2D(tex, fragTexCoord);\n"+"    gl_FragColor = vec4(col.rgb, 1.0);\n"+"}\n";var fragmentShader=gl.createShader(gl.FRAGMENT_SHADER);gl.shaderSource(fragmentShader,shader);gl.compileShader(fragmentShader);if(!gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[FrontgroundTextureShader] FragmentShader "+gl.getShaderInfoLog(fragmentShader));}
return fragmentShader;};x3dom.shader.BackgroundTextureShader=function(gl)
{this.program=gl.createProgram();var vertexShader=this.generateVertexShader(gl);var fragmentShader=this.generateFragmentShader(gl);gl.attachShader(this.program,vertexShader);gl.attachShader(this.program,fragmentShader);gl.bindAttribLocation(this.program,0,"position");gl.linkProgram(this.program);return this.program;};x3dom.shader.BackgroundTextureShader.prototype.generateVertexShader=function(gl)
{var shader="attribute vec3 position;\n"+"varying vec2 fragTexCoord;\n"+"\n"+"void main(void) {\n"+"    vec2 texCoord = (position.xy + 1.0) * 0.5;\n"+"    fragTexCoord = texCoord;\n"+"    gl_Position = vec4(position.xy, 0.0, 1.0);\n"+"}\n";var vertexShader=gl.createShader(gl.VERTEX_SHADER);gl.shaderSource(vertexShader,shader);gl.compileShader(vertexShader);if(!gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[BackgroundTextureShader] VertexShader "+gl.getShaderInfoLog(vertexShader));}
return vertexShader;};x3dom.shader.BackgroundTextureShader.prototype.generateFragmentShader=function(gl)
{var shader="#ifdef GL_FRAGMENT_PRECISION_HIGH\n";shader+="precision highp float;\n";shader+="#else\n";shader+=" precision mediump float;\n";shader+="#endif\n\n";shader+="uniform sampler2D tex;\n"+"varying vec2 fragTexCoord;\n"+"\n"+"void main(void) {\n"+"    gl_FragColor = texture2D(tex, fragTexCoord);\n"+"}";var fragmentShader=gl.createShader(gl.FRAGMENT_SHADER);gl.shaderSource(fragmentShader,shader);gl.compileShader(fragmentShader);if(!gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[BackgroundTextureShader] FragmentShader "+gl.getShaderInfoLog(fragmentShader));}
return fragmentShader;};x3dom.shader.BackgroundSkyTextureShader=function(gl)
{this.program=gl.createProgram();var vertexShader=this.generateVertexShader(gl);var fragmentShader=this.generateFragmentShader(gl);gl.attachShader(this.program,vertexShader);gl.attachShader(this.program,fragmentShader);gl.bindAttribLocation(this.program,0,"position");gl.linkProgram(this.program);return this.program;};x3dom.shader.BackgroundSkyTextureShader.prototype.generateVertexShader=function(gl)
{var shader="attribute vec3 position;\n"+"attribute vec2 texcoord;\n"+"uniform mat4 modelViewProjectionMatrix;\n"+"varying vec2 fragTexCoord;\n"+"\n"+"void main(void) {\n"+"    fragTexCoord = texcoord;\n"+"    gl_Position = modelViewProjectionMatrix * vec4(position, 1.0);\n"+"}\n";var vertexShader=gl.createShader(gl.VERTEX_SHADER);gl.shaderSource(vertexShader,shader);gl.compileShader(vertexShader);if(!gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[BackgroundSkyTextureShader] VertexShader "+gl.getShaderInfoLog(vertexShader));}
return vertexShader;};x3dom.shader.BackgroundSkyTextureShader.prototype.generateFragmentShader=function(gl)
{var shader="#ifdef GL_FRAGMENT_PRECISION_HIGH\n";shader+="precision highp float;\n";shader+="#else\n";shader+=" precision mediump float;\n";shader+="#endif\n\n";shader+="uniform sampler2D tex;\n"+"varying vec2 fragTexCoord;\n"+"\n"+"void main(void) {\n"+"    gl_FragColor = texture2D(tex, fragTexCoord);\n"+"}\n";var fragmentShader=gl.createShader(gl.FRAGMENT_SHADER);gl.shaderSource(fragmentShader,shader);gl.compileShader(fragmentShader);if(!gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[BackgroundSkyTextureShader] FragmentShader "+gl.getShaderInfoLog(fragmentShader));}
return fragmentShader;};x3dom.shader.BackgroundCubeTextureShader=function(gl)
{this.program=gl.createProgram();var vertexShader=this.generateVertexShader(gl);var fragmentShader=this.generateFragmentShader(gl);gl.attachShader(this.program,vertexShader);gl.attachShader(this.program,fragmentShader);gl.bindAttribLocation(this.program,0,"position");gl.linkProgram(this.program);return this.program;};x3dom.shader.BackgroundCubeTextureShader.prototype.generateVertexShader=function(gl)
{var shader="attribute vec3 position;\n"+"uniform mat4 modelViewProjectionMatrix;\n"+"varying vec3 fragNormal;\n"+"\n"+"void main(void) {\n"+"    fragNormal = normalize(position);\n"+"    gl_Position = modelViewProjectionMatrix * vec4(position, 1.0);\n"+"}\n";var vertexShader=gl.createShader(gl.VERTEX_SHADER);gl.shaderSource(vertexShader,shader);gl.compileShader(vertexShader);if(!gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[BackgroundCubeTextureShader] VertexShader "+gl.getShaderInfoLog(vertexShader));}
return vertexShader;};x3dom.shader.BackgroundCubeTextureShader.prototype.generateFragmentShader=function(gl)
{var shader="#ifdef GL_FRAGMENT_PRECISION_HIGH\n";shader+="precision highp float;\n";shader+="#else\n";shader+=" precision mediump float;\n";shader+="#endif\n\n";shader+="uniform samplerCube tex;\n"+"varying vec3 fragNormal;\n"+"\n"+"float magn(float val) {\n"+"    return ((val >= 0.0) ? val : -1.0 * val);\n"+"}"+"\n"+"void main(void) {\n"+"    vec3 normal = -reflect(normalize(fragNormal), vec3(0.0,0.0,1.0));\n"+"    if (magn(normal.y) >= magn(normal.x) && magn(normal.y) >= magn(normal.z))\n"+"        normal.xz = -normal.xz;\n"+"    gl_FragColor = textureCube(tex, normal);\n"+"}\n";var fragmentShader=gl.createShader(gl.FRAGMENT_SHADER);gl.shaderSource(fragmentShader,shader);gl.compileShader(fragmentShader);if(!gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[BackgroundCubeTextureShader] FragmentShader "+gl.getShaderInfoLog(fragmentShader));}
return fragmentShader;};x3dom.shader.ShadowShader=function(gl)
{this.program=gl.createProgram();var vertexShader=this.generateVertexShader(gl);var fragmentShader=this.generateFragmentShader(gl);gl.attachShader(this.program,vertexShader);gl.attachShader(this.program,fragmentShader);gl.bindAttribLocation(this.program,0,"position");gl.linkProgram(this.program);return this.program;};x3dom.shader.ShadowShader.prototype.generateVertexShader=function(gl)
{var shader="";if(!x3dom.caps.MOBILE){shader+="attribute vec3 position;\n"+"uniform mat4 modelViewProjectionMatrix;\n"+"varying vec4 projCoords;\n"+"uniform float imageGeometry;\n"+"uniform vec3 IG_bboxMin;\n"+"uniform vec3 IG_bboxMax;\n"+"uniform float IG_coordTextureWidth;\n"+"uniform float IG_coordTextureHeight;\n"+"uniform float IG_indexTextureWidth;\n"+"uniform float IG_indexTextureHeight;\n"+"uniform sampler2D IG_indexTexture;\n"+"uniform sampler2D IG_coordinateTexture;\n"+"uniform vec2 IG_implicitMeshSize;\n"+"uniform vec3 bgCenter;\n"+"uniform vec3 bgSize;\n"+"uniform float bgPrecisionMax;\n"+"uniform float popGeometry;\n"+"uniform float PG_precisionLevel;\n"+"uniform float PG_powPrecision;\n"+"uniform vec3 PG_maxBBSize;\n"+"uniform vec3 PG_bbMin;\n"+"uniform vec3 PG_bbMaxModF;\n"+"uniform vec3 PG_bboxShiftVec;\n"+"void main(void) {\n"+" vec3 pos;\n"+" if (imageGeometry != 0.0) {\n"+"  vec2 IG_texCoord;\n"+"  if(imageGeometry == 1.0) {\n"+"   vec2 halfPixel = vec2(0.5/IG_indexTextureWidth,0.5/IG_indexTextureHeight);\n"+"   IG_texCoord = vec2(position.x*(IG_implicitMeshSize.x/IG_indexTextureWidth), position.y*(IG_implicitMeshSize.y/IG_indexTextureHeight)) + halfPixel;\n"+"   vec2 IG_index = texture2D( IG_indexTexture, IG_texCoord ).rg;\n"+"   IG_texCoord = IG_index * 0.996108948;\n"+"  } else {\n"+"   vec2 halfPixel = vec2(0.5/IG_coordTextureWidth, 0.5/IG_coordTextureHeight);\n"+"   IG_texCoord = vec2(position.x*(IG_implicitMeshSize.x/IG_coordTextureWidth), position.y*(IG_implicitMeshSize.y/IG_coordTextureHeight)) + halfPixel;\n"+"  }\n"+"  pos = texture2D( IG_coordinateTexture, IG_texCoord ).rgb;\n"+"   pos = pos * (IG_bboxMax - IG_bboxMin) + IG_bboxMin;\n"+" } else if (popGeometry != 0.0){\n"+"  pos = position;\n"+"  vec3 offsetVec = step(pos / bgPrecisionMax, PG_bbMaxModF) * PG_bboxShiftVec;\n"+"  if (PG_precisionLevel <= 2.0) {\n"+"     pos = floor(pos / PG_powPrecision) * PG_powPrecision;\n"+"     pos /= (65536.0 - PG_powPrecision);\n"+"  }\n"+"  else {\n"+"     pos /= bgPrecisionMax;\n"+"  }\n"+"  pos = (pos + offsetVec + PG_bbMin) * PG_maxBBSize;\n"+" } else {\n"+"  pos = bgCenter + bgSize * position / bgPrecisionMax;\n"+" }\n"+"   projCoords = modelViewProjectionMatrix * vec4(pos, 1.0);\n"+"   gl_Position = projCoords;\n"+"}\n";}else{shader="attribute vec3 position;\n"+"uniform vec3 bgCenter;\n"+"uniform vec3 bgSize;\n"+"uniform float bgPrecisionMax;\n"+"uniform mat4 modelViewProjectionMatrix;\n"+"varying vec4 projCoords;\n"+"void main(void) {\n"+" vec3 pos = bgCenter + bgSize * position / bgPrecisionMax;\n"+" projCoords = modelViewProjectionMatrix * vec4(pos, 1.0);\n"+" gl_Position = projCoords;\n"+"}\n";}
var vertexShader=gl.createShader(gl.VERTEX_SHADER);gl.shaderSource(vertexShader,shader);gl.compileShader(vertexShader);if(!gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[ShadowShader] VertexShader "+gl.getShaderInfoLog(vertexShader));}
return vertexShader;};x3dom.shader.ShadowShader.prototype.generateFragmentShader=function(gl)
{var shader="#ifdef GL_FRAGMENT_PRECISION_HIGH\n";shader+="precision highp float;\n";shader+="#else\n";shader+=" precision mediump float;\n";shader+="#endif\n\n";shader+="varying vec4 projCoords;\n"+"uniform float offset;\n"+"uniform bool cameraView;\n";if(!x3dom.caps.FP_TEXTURES||x3dom.caps.MOBILE)
shader+=x3dom.shader.rgbaPacking();shader+="void main(void) {\n"+"    vec3 proj = (projCoords.xyz / projCoords.w);\n";if(!x3dom.caps.FP_TEXTURES||x3dom.caps.MOBILE){shader+="gl_FragColor = packDepth(proj.z);\n";}else{shader+=" if (!cameraView){\n"+"  proj.z = (proj.z + 1.0)*0.5;\n"+"  proj.y = proj.z * proj.z;\n"+" }\n";shader+=" gl_FragColor = vec4(proj, 1.0);\n";}
shader+="}\n";var fragmentShader=gl.createShader(gl.FRAGMENT_SHADER);gl.shaderSource(fragmentShader,shader);gl.compileShader(fragmentShader);if(!gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[ShadowShader] FragmentShader "+gl.getShaderInfoLog(fragmentShader));}
return fragmentShader;};x3dom.shader.ShadowRenderingShader=function(gl,shadowedLights)
{this.program=gl.createProgram();var vertexShader=this.generateVertexShader(gl);var fragmentShader=this.generateFragmentShader(gl,shadowedLights);gl.attachShader(this.program,vertexShader);gl.attachShader(this.program,fragmentShader);gl.bindAttribLocation(this.program,0,"position");gl.linkProgram(this.program);return this.program;};x3dom.shader.ShadowRenderingShader.prototype.generateVertexShader=function(gl)
{var shader="";shader+="attribute vec2 position;\n";shader+="varying vec2 vPosition;\n";shader+="void main(void) {\n";shader+=" vPosition = position;\n";shader+=" gl_Position = vec4(position, -1.0, 1.0);\n";shader+="}\n";var vertexShader=gl.createShader(gl.VERTEX_SHADER);gl.shaderSource(vertexShader,shader);gl.compileShader(vertexShader);if(!gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[ShadowRendering] VertexShader "+gl.getShaderInfoLog(vertexShader));}
return vertexShader;};x3dom.shader.ShadowRenderingShader.prototype.generateFragmentShader=function(gl,shadowedLights)
{var shader="#ifdef GL_FRAGMENT_PRECISION_HIGH\n";shader+="precision highp float;\n";shader+="#else\n";shader+=" precision mediump float;\n";shader+="#endif\n\n";shader+="uniform mat4 inverseViewProj;\n";shader+="uniform mat4 inverseProj;\n";shader+="varying vec2 vPosition;\n";shader+="uniform sampler2D sceneMap;\n";for(var i=0;i<5;i++)
shader+="uniform float cascade"+i+"_Depth;\n";for(var l=0;l<shadowedLights.length;l++){shader+="uniform float light"+l+"_On;\n"+"uniform float light"+l+"_Type;\n"+"uniform vec3  light"+l+"_Location;\n"+"uniform vec3  light"+l+"_Direction;\n"+"uniform vec3  light"+l+"_Attenuation;\n"+"uniform float light"+l+"_Radius;\n"+"uniform float light"+l+"_BeamWidth;\n"+"uniform float light"+l+"_CutOffAngle;\n"+"uniform float light"+l+"_ShadowIntensity;\n"+"uniform float light"+l+"_ShadowOffset;\n"+"uniform mat4 light"+l+"_ViewMatrix;\n";for(var j=0;j<6;j++){shader+="uniform mat4 light"+l+"_"+j+"_Matrix;\n";shader+="uniform sampler2D light"+l+"_"+j+"_ShadowMap;\n";}
for(var j=0;j<5;j++)
shader+="uniform float light"+l+"_"+j+"_Split;\n";}
if(!x3dom.caps.FP_TEXTURES||x3dom.caps.MOBILE)
shader+=x3dom.shader.rgbaPacking();shader+=x3dom.shader.shadowRendering();shader+=x3dom.shader.gammaCorrectionDecl({});shader+="void main(void) {\n"+" float shadowValue = 1.0;\n"+" vec2 texCoordsSceneMap = (vPosition + 1.0)*0.5;\n"+" vec4 projCoords = texture2D(sceneMap, texCoordsSceneMap);\n"+" if (projCoords != vec4(1.0,1.0,1.0,0.0)){\n";if(!x3dom.caps.FP_TEXTURES||x3dom.caps.MOBILE){shader+=" projCoords.z = unpackDepth(projCoords);\n"+" projCoords.w = 1.0;\n";}
shader+=" projCoords = projCoords / projCoords.w;\n"+" projCoords.xy = vPosition;\n"+" vec4 eyeCoords = inverseProj*projCoords;\n"+" vec4 worldCoords = inverseViewProj*projCoords;\n"+" float lightInfluence = 0.0;\n";for(var l=0;l<shadowedLights.length;l++){shader+=" lightInfluence = getLightInfluence(light"+l+"_Type, light"+l+"_ShadowIntensity, light"+l+"_On, light"+l+"_Location, light"+l+"_Direction, "+"light"+l+"_CutOffAngle, light"+l+"_BeamWidth, light"+l+"_Attenuation, light"+l+"_Radius, eyeCoords.xyz/eyeCoords.w);\n"+" if (lightInfluence != 0.0){\n"+"  vec4 shadowMapValues;\n"+"  float viewSampleDepth;\n";if(!x3dom.isa(shadowedLights[l],x3dom.nodeTypes.PointLight)){shader+="  getShadowValuesCascaded(shadowMapValues, viewSampleDepth, worldCoords, -eyeCoords.z/eyeCoords.w,"+"light"+l+"_0_Matrix,light"+l+"_1_Matrix,light"+l+"_2_Matrix,light"+l+"_3_Matrix,light"+l+"_4_Matrix,light"+l+"_5_Matrix,"+"light"+l+"_0_ShadowMap,light"+l+"_1_ShadowMap,light"+l+"_2_ShadowMap,light"+l+"_3_ShadowMap,"+"light"+l+"_4_ShadowMap,light"+l+"_5_ShadowMap, light"+l+"_0_Split, light"+l+"_1_Split, light"+l+"_2_Split, light"+l+"_3_Split, \n"+"light"+l+"_4_Split);\n";}else{shader+="  getShadowValuesPointLight(shadowMapValues, viewSampleDepth, light"+l+"_Location, worldCoords, light"+l+"_ViewMatrix, "+"light"+l+"_0_Matrix,light"+l+"_1_Matrix,light"+l+"_2_Matrix,light"+l+"_3_Matrix,light"+l+"_4_Matrix,light"+l+"_5_Matrix,"+"light"+l+"_0_ShadowMap,light"+l+"_1_ShadowMap,light"+l+"_2_ShadowMap,light"+l+"_3_ShadowMap,"+"light"+l+"_4_ShadowMap,light"+l+"_5_ShadowMap);\n";}
if(!x3dom.caps.FP_TEXTURES||x3dom.caps.MOBILE)
shader+=" shadowValue *= clamp(ESM(shadowMapValues.z, viewSampleDepth, light"+l+"_ShadowOffset), "+"    1.0 - light"+l+"_ShadowIntensity*lightInfluence, 1.0);\n";else
shader+="  shadowValue *= clamp(VSM(shadowMapValues.zy, viewSampleDepth, light"+l+"_ShadowOffset), "+"    1.0 - light"+l+"_ShadowIntensity*lightInfluence, 1.0);\n";shader+=" }\n";}
shader+="}\n"+" gl_FragColor = "+x3dom.shader.encodeGamma({},"vec4(shadowValue, shadowValue, shadowValue, 1.0)")+";\n"+"}\n";var fragmentShader=gl.createShader(gl.FRAGMENT_SHADER);gl.shaderSource(fragmentShader,shader);gl.compileShader(fragmentShader);if(!gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[ShadowRendering] FragmentShader "+gl.getShaderInfoLog(fragmentShader));}
return fragmentShader;};x3dom.shader.TextureRefinementShader=function(gl){this.program=gl.createProgram();var vertexShader=this.generateVertexShader(gl);var fragmentShader=this.generateFragmentShader(gl);gl.attachShader(this.program,vertexShader);gl.attachShader(this.program,fragmentShader);gl.bindAttribLocation(this.program,0,"position");gl.linkProgram(this.program);return this.program;};x3dom.shader.TextureRefinementShader.prototype.generateVertexShader=function(gl){var shader="attribute vec2 position;\n"+"varying vec2 fragTexCoord;\n"+"\n"+"void main(void) {\n"+"    fragTexCoord = (position.xy + 1.0) / 2.0;\n"+"    gl_Position = vec4(position, -1.0, 1.0);\n"+"}\n";var vertexShader=gl.createShader(gl.VERTEX_SHADER);gl.shaderSource(vertexShader,shader);gl.compileShader(vertexShader);if(!gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[TextureRefinementShader] VertexShader "+gl.getShaderInfoLog(vertexShader));}
return vertexShader;};x3dom.shader.TextureRefinementShader.prototype.generateFragmentShader=function(gl){var shader="#ifdef GL_FRAGMENT_PRECISION_HIGH\n"+" precision highp float;\n"+"#else\n"+" precision mediump float;\n"+"#endif\n\n";shader+="uniform sampler2D stamp;\n"+"uniform sampler2D lastTex;\n"+"uniform sampler2D curTex;\n"+"uniform int mode;\n"+"uniform vec2 repeat;\n"+"varying vec2 fragTexCoord;\n"+"\n"+"void init(void);\n"+"void refine(void);\n"+"\n"+"void main(void) {\n"+"    if (mode == 0) { init(); }\n"+"    else { refine(); }\n"+"}\n"+"\n"+"void init(void) {\n"+"    gl_FragColor = texture2D(curTex, fragTexCoord);\n"+"}\n"+"\n"+"void refine(void) {\n"+"    vec3 red = texture2D(stamp, repeat * fragTexCoord).rgb;\n"+"    vec3 v1  = texture2D(lastTex, fragTexCoord).rgb;\n"+"    vec3 v2  = texture2D(curTex, fragTexCoord).rgb;\n"+"    if (red.r <= 0.5) {\n"+"        gl_FragColor = vec4(v1, 1.0);\n"+"    }\n"+"    else {\n"+"        gl_FragColor = vec4(v2, 1.0);\n"+"    }\n"+"}\n";var fragmentShader=gl.createShader(gl.FRAGMENT_SHADER);gl.shaderSource(fragmentShader,shader);gl.compileShader(fragmentShader);if(!gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[TextureRefinementShader] FragmentShader "+gl.getShaderInfoLog(fragmentShader));}
return fragmentShader;};x3dom.shader.BlurShader=function(gl)
{this.program=gl.createProgram();var vertexShader=this.generateVertexShader(gl);var fragmentShader=this.generateFragmentShader(gl);gl.attachShader(this.program,vertexShader);gl.attachShader(this.program,fragmentShader);gl.bindAttribLocation(this.program,0,"position");gl.linkProgram(this.program);return this.program;};x3dom.shader.BlurShader.prototype.generateVertexShader=function(gl)
{var shader="";shader+="attribute vec2 position;\n";shader+="varying vec2 vPosition;\n";shader+="void main(void) {\n";shader+=" vPosition = position;\n";shader+=" gl_Position = vec4(position, -1.0, 1.0);\n";shader+="}\n";var vertexShader=gl.createShader(gl.VERTEX_SHADER);gl.shaderSource(vertexShader,shader);gl.compileShader(vertexShader);if(!gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[BlurShader] VertexShader "+gl.getShaderInfoLog(vertexShader));}
return vertexShader;};x3dom.shader.BlurShader.prototype.generateFragmentShader=function(gl)
{var shader="#ifdef GL_FRAGMENT_PRECISION_HIGH\n";shader+="precision highp float;\n";shader+="#else\n";shader+=" precision mediump float;\n";shader+="#endif\n\n";shader+="varying vec2 vPosition;\n"+"uniform sampler2D texture;\n"+"uniform bool horizontal;\n"+"uniform float pixelSizeHor;\n"+"uniform float pixelSizeVert;\n"+"uniform int filterSize;\n";if(!x3dom.caps.FP_TEXTURES||x3dom.caps.MOBILE){shader+=x3dom.shader.rgbaPacking()+"void main(void) {\n"+" vec2 texCoords = (vPosition + 1.0)*0.5;\n"+" vec2 offset;\n"+" if (horizontal) offset = vec2(pixelSizeHor, 0.0);\n"+" else offset = vec2(0.0, pixelSizeVert);\n"+" float depth = unpackDepth(texture2D(texture, texCoords));\n"+" if (filterSize == 3){\n"+"  depth = depth * 0.3844;\n"+"  depth += 0.3078*unpackDepth(texture2D(texture, texCoords-offset));\n"+"  depth += 0.3078*unpackDepth(texture2D(texture, texCoords+offset));\n"+" } else if (filterSize == 5){\n"+"  depth = depth * 0.2921;\n"+"  depth += 0.2339*unpackDepth(texture2D(texture, texCoords-offset));\n"+"  depth += 0.2339*unpackDepth(texture2D(texture, texCoords+offset));\n"+"  depth += 0.1201*unpackDepth(texture2D(texture, texCoords-2.0*offset));\n"+"  depth += 0.1201*unpackDepth(texture2D(texture, texCoords+2.0*offset));\n"+" } else if (filterSize == 7){\n"+"  depth = depth * 0.2161;\n"+"  depth += 0.1907*unpackDepth(texture2D(texture, texCoords-offset));\n"+"  depth += 0.1907*unpackDepth(texture2D(texture, texCoords+offset));\n"+"  depth += 0.1311*unpackDepth(texture2D(texture, texCoords-2.0*offset));\n"+"  depth += 0.1311*unpackDepth(texture2D(texture, texCoords+2.0*offset));\n"+"  depth += 0.0702*unpackDepth(texture2D(texture, texCoords-3.0*offset));\n"+"  depth += 0.0702*unpackDepth(texture2D(texture, texCoords+3.0*offset));\n"+" }\n"+" gl_FragColor = packDepth(depth);\n"+"}\n";}else{shader+="void main(void) {\n"+" vec2 texCoords = (vPosition + 1.0)*0.5;\n"+" vec2 offset;\n"+" if (horizontal) offset = vec2(pixelSizeHor, 0.0);\n"+" else offset = vec2(0.0, pixelSizeVert);\n"+" vec4 color = texture2D(texture, texCoords);\n"+" if (filterSize == 3){\n"+"  color = color * 0.3844;\n"+"  color += 0.3078*texture2D(texture, texCoords-offset);\n"+"  color += 0.3078*texture2D(texture, texCoords+offset);\n"+" } else if (filterSize == 5){\n"+"  color = color * 0.2921;\n"+"  color += 0.2339*texture2D(texture, texCoords-offset);\n"+"  color += 0.2339*texture2D(texture, texCoords+offset);\n"+"  color += 0.1201*texture2D(texture, texCoords-2.0*offset);\n"+"  color += 0.1201*texture2D(texture, texCoords+2.0*offset);\n"+" } else if (filterSize == 7){\n"+"  color = color * 0.2161;\n"+"  color += 0.1907*texture2D(texture, texCoords-offset);\n"+"  color += 0.1907*texture2D(texture, texCoords+offset);\n"+"  color += 0.1311*texture2D(texture, texCoords-2.0*offset);\n"+"  color += 0.1311*texture2D(texture, texCoords+2.0*offset);\n"+"  color += 0.0702*texture2D(texture, texCoords-3.0*offset);\n"+"  color += 0.0702*texture2D(texture, texCoords+3.0*offset);\n"+" }\n"+" gl_FragColor = color;\n"+"}\n";}
var fragmentShader=gl.createShader(gl.FRAGMENT_SHADER);gl.shaderSource(fragmentShader,shader);gl.compileShader(fragmentShader);if(!gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[BlurShader] FragmentShader "+gl.getShaderInfoLog(fragmentShader));}
return fragmentShader;};x3dom.shader.SSAOShader=function(gl)
{this.program=gl.createProgram();var vertexShader=this.generateVertexShader(gl);var fragmentShader=this.generateFragmentShader(gl);gl.attachShader(this.program,vertexShader);gl.attachShader(this.program,fragmentShader);gl.bindAttribLocation(this.program,0,"position");gl.linkProgram(this.program);return this.program;};x3dom.shader.SSAOShader.prototype.generateVertexShader=function(gl)
{var shader="attribute vec3 position;\n"+"varying vec2 depthTexCoord;\n"+"varying vec2 randomTexCoord;\n"+"uniform vec2 randomTextureTilingFactor;\n"+"\n"+"void main(void) {\n"+"    vec2 texCoord = (position.xy + 1.0) * 0.5;\n"+"    depthTexCoord = texCoord;\n"+"  randomTexCoord = randomTextureTilingFactor*texCoord;\n"+"    gl_Position = vec4(position.xy, 0.0, 1.0);\n"+"}\n";var vertexShader=gl.createShader(gl.VERTEX_SHADER);gl.shaderSource(vertexShader,shader);gl.compileShader(vertexShader);if(!gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[SSAOShader] VertexShader "+gl.getShaderInfoLog(vertexShader));}
return vertexShader;};x3dom.shader.SSAOShader.depthReconsructionFunctionCode=function()
{var code="uniform float depthReconstructionConstantA;\n"+"uniform float depthReconstructionConstantB;\n";if(!x3dom.caps.FP_TEXTURES||x3dom.caps.MOBILE)
code+=x3dom.shader.rgbaPacking();code+="float getDepth(vec2 depthTexCoord) {\n"+"    vec4 col = texture2D(depthTexture, depthTexCoord);\n"+"    float d;\n";if(!x3dom.caps.FP_TEXTURES||x3dom.caps.MOBILE){code+="    d = unpackDepth(col);\n";}else{code+="    d = col.b;\n"}
code+="    return depthReconstructionConstantB/(depthReconstructionConstantA+d);\n";code+="}\n";return code;}
x3dom.shader.SSAOShader.prototype.generateFragmentShader=function(gl)
{var shader="#ifdef GL_FRAGMENT_PRECISION_HIGH\n";shader+="precision highp float;\n";shader+="#else\n";shader+=" precision mediump float;\n";shader+="#endif\n\n";shader+="uniform sampler2D depthTexture;\n"+"uniform sampler2D randomTexture;\n"+"uniform float nearPlane;\n"+"uniform float farPlane;\n"+"uniform float radius;\n"+"uniform float depthBufferEpsilon;\n"+"uniform vec3 samples[16];\n"+"varying vec2 depthTexCoord;\n"+"varying vec2 randomTexCoord;\n";shader+=x3dom.shader.SSAOShader.depthReconsructionFunctionCode();shader+="void main(void) {\n"+"    float referenceDepth = getDepth(depthTexCoord);\n"+"    if(referenceDepth == 1.0)\n"+"    {\n"+"        gl_FragColor = vec4(1.0,1.0,1.0, 1.0);\n"+"        return;\n"+"    }\n"+"    int numOcclusions = 0;\n"+"    for(int i = 0; i<16; ++i){\n"+"        float scale  = 1.0/referenceDepth;\n"+"        vec3 samplepos = reflect(samples[i],texture2D(randomTexture,randomTexCoord).xyz*2.0-vec3(1.0,1.0,1.0));\n"+"        float sampleDepth = getDepth(depthTexCoord+samplepos.xy*scale*radius);\n"+"        //if(abs(sampleDepth-referenceDepth)<=radius*(1.0/nearPlane))\n"+"        if( sampleDepth < referenceDepth-depthBufferEpsilon) {\n"+"            ++numOcclusions;\n"+"        }\n"+"    }\n"+"    float r = 1.0-float(numOcclusions)/16.0;\n"+"    r*=2.0;\n"+"    gl_FragColor = vec4(r,r,r, 1.0);\n"+"}\n";var fragmentShader=gl.createShader(gl.FRAGMENT_SHADER);gl.shaderSource(fragmentShader,shader);gl.compileShader(fragmentShader);if(!gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[SSAOhader] FragmentShader "+gl.getShaderInfoLog(fragmentShader));}
return fragmentShader;};x3dom.shader.SSAOBlurShader=function(gl)
{this.program=gl.createProgram();var vertexShader=this.generateVertexShader(gl);var fragmentShader=this.generateFragmentShader(gl);gl.attachShader(this.program,vertexShader);gl.attachShader(this.program,fragmentShader);gl.bindAttribLocation(this.program,0,"position");gl.linkProgram(this.program);return this.program;};x3dom.shader.SSAOBlurShader.prototype.generateVertexShader=function(gl)
{var shader="attribute vec3 position;\n"+"varying vec2 fragTexCoord;\n"+"\n"+"void main(void) {\n"+"    vec2 texCoord = (position.xy + 1.0) * 0.5;\n"+"    fragTexCoord = texCoord;\n"+"    gl_Position = vec4(position.xy, 0.0, 1.0);\n"+"}\n";var vertexShader=gl.createShader(gl.VERTEX_SHADER);gl.shaderSource(vertexShader,shader);gl.compileShader(vertexShader);if(!gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[SSAOShader] VertexShader "+gl.getShaderInfoLog(vertexShader));}
return vertexShader;};x3dom.shader.SSAOBlurShader.prototype.generateFragmentShader=function(gl)
{var shader="#ifdef GL_FRAGMENT_PRECISION_HIGH\n";shader+="precision highp float;\n";shader+="#else\n";shader+=" precision mediump float;\n";shader+="#endif\n\n";shader+="uniform sampler2D SSAOTexture;\n"+"uniform sampler2D depthTexture;\n"+"uniform float nearPlane;\n"+"uniform float farPlane;\n"+"uniform float amount;\n"+"uniform vec2 pixelSize;\n"+"uniform float depthThreshold;\n"+"varying vec2 fragTexCoord;\n";shader+=x3dom.shader.SSAOShader.depthReconsructionFunctionCode();shader+="void main(void) {\n"+"    float sum = 0.0;\n"+"    float numSamples = 0.0;\n"+"    float referenceDepth = getDepth(fragTexCoord);\n"+"    for(int i = -2; i<2;i++){\n"+"        for(int j = -2; j<2;j++){\n"+"            vec2 sampleTexCoord = fragTexCoord+vec2(pixelSize.x*float(i),pixelSize.y*float(j));\n"+"            if(abs(referenceDepth - getDepth(sampleTexCoord))<depthThreshold){\n"+"                sum+= texture2D(SSAOTexture,sampleTexCoord).r;\n"+"                numSamples++;\n"+"    }}}\n"+"    float intensity = mix(1.0,sum/numSamples,amount);\n"+"    gl_FragColor = vec4(intensity,intensity,intensity,1.0);\n"+"}\n";var fragmentShader=gl.createShader(gl.FRAGMENT_SHADER);gl.shaderSource(fragmentShader,shader);gl.compileShader(fragmentShader);if(!gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)){x3dom.debug.logError("[SSAOhader] FragmentShader "+gl.getShaderInfoLog(fragmentShader));}
return fragmentShader;};x3dom.SSAO={};x3dom.SSAO.isEnabled=function(scene){return scene.getEnvironment()._vf.SSAO};x3dom.SSAO.reinitializeShadersIfNecessary=function(gl){if(x3dom.SSAO.shaderProgram===undefined){x3dom.SSAO.shaderProgram=x3dom.Utils.wrapProgram(gl,new x3dom.shader.SSAOShader(gl),"ssao");}
if(x3dom.SSAO.blurShaderProgram===undefined){x3dom.SSAO.blurShaderProgram=x3dom.Utils.wrapProgram(gl,new x3dom.shader.SSAOBlurShader(gl),"ssao-blur");}};x3dom.SSAO.reinitializeRandomTextureIfNecessary=function(gl,scene){var sizeHasChanged=scene.getEnvironment()._vf.SSAOrandomTextureSize!=x3dom.SSAO.currentRandomTextureSize;if(x3dom.SSAO.randomTexture===undefined){x3dom.SSAO.randomTexture=gl.createTexture();}
if(x3dom.SSAO.randomTexture===undefined||sizeHasChanged){gl.bindTexture(gl.TEXTURE_2D,x3dom.SSAO.randomTexture);var rTexSize=x3dom.SSAO.currentRandomTextureSize=scene.getEnvironment()._vf.SSAOrandomTextureSize;var randomImageBuffer=new ArrayBuffer(rTexSize*rTexSize*4);var randomImageView=new Uint8Array(randomImageBuffer);for(var i=0;i<rTexSize*rTexSize;++i){var x=Math.random()*2.0-1.0;var y=Math.random()*2.0-1.0;var z=0;var length=Math.sqrt(x*x+y*y+z*z);x/=length;y/=length;randomImageView[4*i]=(x+1.0)*0.5*255.0;randomImageView[4*i+1]=(y+1.0)*0.5*255.0;randomImageView[4*i+2]=(z+1.0)*0.5*255.0;randomImageView[4*i+3]=255;}
gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,rTexSize,rTexSize,0,gl.RGBA,gl.UNSIGNED_BYTE,randomImageView);gl.bindTexture(gl.TEXTURE_2D,null);}};x3dom.SSAO.reinitializeFBOIfNecessary=function(gl,canvas){var dimensionsHaveChanged=x3dom.SSAO.currentFBOWidth!=canvas.width||x3dom.SSAO.currentFBOHeight!=canvas.height;if(x3dom.SSAO.fbo===undefined||dimensionsHaveChanged)
{x3dom.SSAO.currentFBOWidth=canvas.width;x3dom.SSAO.currentFBOHeight=canvas.height;var oldfbo=gl.getParameter(gl.FRAMEBUFFER_BINDING);if(x3dom.SSAO.fbo===undefined){x3dom.SSAO.fbo=gl.createFramebuffer();}
gl.bindFramebuffer(gl.FRAMEBUFFER,x3dom.SSAO.fbo);if(x3dom.SSAO.fbotex===undefined){x3dom.SSAO.fbotex=gl.createTexture();}
gl.bindTexture(gl.TEXTURE_2D,x3dom.SSAO.fbotex);gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,x3dom.SSAO.currentFBOWidth,x3dom.SSAO.currentFBOHeight,0,gl.RGBA,gl.UNSIGNED_BYTE,null);gl.bindTexture(gl.TEXTURE_2D,null);gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,x3dom.SSAO.fbotex,0);gl.bindFramebuffer(gl.FRAMEBUFFER,oldfbo);}};x3dom.SSAO.render=function(stateManager,gl,scene,tex,canvas,fbo){var oldfbo=gl.getParameter(gl.FRAMEBUFFER_BINDING);if(fbo!=null){gl.bindFramebuffer(gl.FRAMEBUFFER,fbo);}
stateManager.frontFace(gl.CCW);stateManager.disable(gl.CULL_FACE);stateManager.disable(gl.DEPTH_TEST);var sp=x3dom.SSAO.shaderProgram;stateManager.useProgram(sp);sp.depthTexture=0;sp.randomTexture=1;sp.radius=scene.getEnvironment()._vf.SSAOradius;sp.randomTextureTilingFactor=[canvas.width/x3dom.SSAO.currentRandomTextureSize,canvas.height/x3dom.SSAO.currentRandomTextureSize];var viewpoint=scene.getViewpoint();var nearPlane=viewpoint.getNear();var farPlane=viewpoint.getFar();sp.nearPlane=nearPlane;sp.farPlane=farPlane;sp.depthReconstructionConstantA=(farPlane+nearPlane)/(nearPlane-farPlane);sp.depthReconstructionConstantB=(2.0*farPlane*nearPlane)/(nearPlane-farPlane);sp.depthBufferEpsilon=0.0001*(farPlane-nearPlane);sp.samples=[0.03800223814729654,0.10441029119843426,-0.04479934806797181,-0.03800223814729654,-0.10441029119843426,0.04479934806797181,-0.17023209847088397,0.1428416910414532,0.6154407640895228,0.17023209847088397,-0.1428416910414532,-0.6154407640895228,-0.288675134594813,-0.16666666666666646,-0.3774214123135722,0.288675134594813,0.16666666666666646,0.3774214123135722,0.07717696785196887,-0.43769233467209245,-0.5201284112706428,-0.07717696785196887,0.43769233467209245,0.5201284112706428,0.5471154183401156,-0.09647120981496134,-0.15886420745887797,-0.5471154183401156,0.09647120981496134,0.15886420745887797,0.3333333333333342,0.5773502691896253,-0.8012446019636266,-0.3333333333333342,-0.5773502691896253,0.8012446019636266,-0.49994591864508653,0.5958123446480936,-0.15385106176844343,0.49994591864508653,-0.5958123446480936,0.15385106176844343,-0.8352823295874743,-0.3040179051783715,0.7825440557226517,0.8352823295874743,0.3040179051783715,-0.7825440557226517];if(!sp.tex){sp.tex=0;}
gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,tex);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.activeTexture(gl.TEXTURE1);gl.bindTexture(gl.TEXTURE_2D,x3dom.SSAO.randomTexture);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.REPEAT);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.REPEAT);gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,scene._fgnd._webgl.buffers[0]);gl.bindBuffer(gl.ARRAY_BUFFER,scene._fgnd._webgl.buffers[1]);gl.vertexAttribPointer(sp.position,3,gl.FLOAT,false,0,0);gl.enableVertexAttribArray(sp.position);gl.drawElements(scene._fgnd._webgl.primType,scene._fgnd._webgl.indexes.length,gl.UNSIGNED_SHORT,0);gl.disableVertexAttribArray(sp.position);gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,null);gl.activeTexture(gl.TEXTURE1);gl.bindTexture(gl.TEXTURE_2D,null);if(fbo!=null){gl.bindFramebuffer(gl.FRAMEBUFFER,oldfbo);}};x3dom.SSAO.blur=function(stateManager,gl,scene,ssaoTexture,depthTexture,canvas,fbo){var oldfbo=gl.getParameter(gl.FRAMEBUFFER_BINDING);if(fbo!=null){gl.bindFramebuffer(gl.FRAMEBUFFER,fbo);}
stateManager.frontFace(gl.CCW);stateManager.disable(gl.CULL_FACE);stateManager.disable(gl.DEPTH_TEST);var sp=x3dom.SSAO.blurShaderProgram;stateManager.useProgram(sp);sp.SSAOTexture=0;sp.depthTexture=1;sp.depthThreshold=scene.getEnvironment()._vf.SSAOblurDepthTreshold;var viewpoint=scene.getViewpoint();var nearPlane=viewpoint.getNear();var farPlane=viewpoint.getFar();sp.nearPlane=nearPlane;sp.farPlane=farPlane;sp.depthReconstructionConstantA=(farPlane+nearPlane)/(nearPlane-farPlane);sp.depthReconstructionConstantB=(2.0*farPlane*nearPlane)/(nearPlane-farPlane);sp.pixelSize=[1.0/canvas.width,1.0/canvas.height];sp.amount=scene.getEnvironment()._vf.SSAOamount;gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,ssaoTexture);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.activeTexture(gl.TEXTURE1);gl.bindTexture(gl.TEXTURE_2D,depthTexture);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,scene._fgnd._webgl.buffers[0]);gl.bindBuffer(gl.ARRAY_BUFFER,scene._fgnd._webgl.buffers[1]);gl.vertexAttribPointer(sp.position,3,gl.FLOAT,false,0,0);gl.enableVertexAttribArray(sp.position);gl.drawElements(scene._fgnd._webgl.primType,scene._fgnd._webgl.indexes.length,gl.UNSIGNED_SHORT,0);gl.disableVertexAttribArray(sp.position);gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,null);gl.activeTexture(gl.TEXTURE1);gl.bindTexture(gl.TEXTURE_2D,null);if(fbo!=null){gl.bindFramebuffer(gl.FRAMEBUFFER,oldfbo);}};x3dom.SSAO.renderSSAO=function(stateManager,gl,scene,canvas){this.reinitializeShadersIfNecessary(gl);this.reinitializeRandomTextureIfNecessary(gl,scene);this.reinitializeFBOIfNecessary(gl,canvas);stateManager.viewport(0,0,canvas.width,canvas.height);this.render(stateManager,gl,scene,scene._webgl.fboScene.tex,canvas,x3dom.SSAO.fbo);gl.enable(gl.BLEND);gl.blendFunc(gl.DST_COLOR,gl.ONE_MINUS_SRC_ALPHA);this.blur(stateManager,gl,scene,x3dom.SSAO.fbotex,scene._webgl.fboScene.tex,canvas,null);gl.disable(gl.BLEND);};x3dom.gfx_webgl=(function(){"use strict";function Context(ctx3d,canvas,name,x3dElem){this.ctx3d=ctx3d;this.canvas=canvas;this.name=name;this.x3dElem=x3dElem;this.IG_PositionBuffer=null;this.cache=new x3dom.Cache();this.stateManager=new x3dom.StateManager(ctx3d);}
Context.prototype.getName=function(){return this.name;};function setupContext(canvas,forbidMobileShaders,forceMobileShaders,tryWebGL2,x3dElem){var validContextNames=['webgl','experimental-webgl','moz-webgl','webkit-3d'];if(tryWebGL2){validContextNames=['experimental-webgl2'].concat(validContextNames);}
var ctx=null;var envNodes=x3dElem.getElementsByTagName("Environment");var ssaoEnabled=(envNodes&&envNodes[0]&&envNodes[0].hasAttribute("SSAO")&&envNodes[0].getAttribute("SSAO").toLowerCase()==='true')?true:false;var ctxAttribs={alpha:true,depth:true,stencil:true,antialias:!ssaoEnabled,premultipliedAlpha:false,preserveDrawingBuffer:true,failIfMajorPerformanceCaveat:true};for(var i=0;i<validContextNames.length;i++){try{ctx=canvas.getContext(validContextNames[i],ctxAttribs);if(!ctx){x3dom.caps.RENDERMODE="SOFTWARE";ctxAttribs.failIfMajorPerformanceCaveat=false;ctx=canvas.getContext(validContextNames[i],ctxAttribs);}
if(ctx){var newCtx=new Context(ctx,canvas,'webgl',x3dElem);try{x3dom.caps.VENDOR=ctx.getParameter(ctx.VENDOR);x3dom.caps.VERSION=ctx.getParameter(ctx.VERSION);x3dom.caps.RENDERER=ctx.getParameter(ctx.RENDERER);x3dom.caps.SHADING_LANGUAGE_VERSION=ctx.getParameter(ctx.SHADING_LANGUAGE_VERSION);x3dom.caps.RED_BITS=ctx.getParameter(ctx.RED_BITS);x3dom.caps.GREEN_BITS=ctx.getParameter(ctx.GREEN_BITS);x3dom.caps.BLUE_BITS=ctx.getParameter(ctx.BLUE_BITS);x3dom.caps.ALPHA_BITS=ctx.getParameter(ctx.ALPHA_BITS);x3dom.caps.DEPTH_BITS=ctx.getParameter(ctx.DEPTH_BITS);x3dom.caps.MAX_VERTEX_ATTRIBS=ctx.getParameter(ctx.MAX_VERTEX_ATTRIBS);x3dom.caps.MAX_VERTEX_TEXTURE_IMAGE_UNITS=ctx.getParameter(ctx.MAX_VERTEX_TEXTURE_IMAGE_UNITS);x3dom.caps.MAX_VARYING_VECTORS=ctx.getParameter(ctx.MAX_VARYING_VECTORS);x3dom.caps.MAX_VERTEX_UNIFORM_VECTORS=ctx.getParameter(ctx.MAX_VERTEX_UNIFORM_VECTORS);x3dom.caps.MAX_COMBINED_TEXTURE_IMAGE_UNITS=ctx.getParameter(ctx.MAX_COMBINED_TEXTURE_IMAGE_UNITS);x3dom.caps.MAX_TEXTURE_SIZE=ctx.getParameter(ctx.MAX_TEXTURE_SIZE);x3dom.caps.MAX_TEXTURE_IMAGE_UNITS=ctx.getParameter(ctx.MAX_TEXTURE_IMAGE_UNITS);x3dom.caps.MAX_CUBE_MAP_TEXTURE_SIZE=ctx.getParameter(ctx.MAX_CUBE_MAP_TEXTURE_SIZE);x3dom.caps.COMPRESSED_TEXTURE_FORMATS=ctx.getParameter(ctx.COMPRESSED_TEXTURE_FORMATS);x3dom.caps.MAX_RENDERBUFFER_SIZE=ctx.getParameter(ctx.MAX_RENDERBUFFER_SIZE);x3dom.caps.MAX_VIEWPORT_DIMS=ctx.getParameter(ctx.MAX_VIEWPORT_DIMS);x3dom.caps.ALIASED_LINE_WIDTH_RANGE=ctx.getParameter(ctx.ALIASED_LINE_WIDTH_RANGE);x3dom.caps.ALIASED_POINT_SIZE_RANGE=ctx.getParameter(ctx.ALIASED_POINT_SIZE_RANGE);x3dom.caps.SAMPLES=ctx.getParameter(ctx.SAMPLES);x3dom.caps.INDEX_UINT=ctx.getExtension("OES_element_index_uint");x3dom.caps.FP_TEXTURES=ctx.getExtension("OES_texture_float");x3dom.caps.FPL_TEXTURES=ctx.getExtension("OES_texture_float_linear");x3dom.caps.STD_DERIVATIVES=ctx.getExtension("OES_standard_derivatives");x3dom.caps.DRAW_BUFFERS=ctx.getExtension("WEBGL_draw_buffers");x3dom.caps.DEBUGRENDERINFO=ctx.getExtension("WEBGL_debug_renderer_info");x3dom.caps.EXTENSIONS=ctx.getSupportedExtensions();if(x3dom.caps.DEBUGRENDERINFO){x3dom.caps.UNMASKED_RENDERER_WEBGL=ctx.getParameter(x3dom.caps.DEBUGRENDERINFO.UNMASKED_RENDERER_WEBGL);x3dom.caps.UNMASKED_VENDOR_WEBGL=ctx.getParameter(x3dom.caps.DEBUGRENDERINFO.UNMASKED_VENDOR_WEBGL);}else{x3dom.caps.UNMASKED_RENDERER_WEBGL="";x3dom.caps.UNMASKED_VENDOR_WEBGL="";}
var extString=x3dom.caps.EXTENSIONS.toString().replace(/,/g,", ");x3dom.debug.logInfo(validContextNames[i]+" context found\nVendor: "+x3dom.caps.VENDOR+" "+x3dom.caps.UNMASKED_VENDOR_WEBGL+", Renderer: "+x3dom.caps.RENDERER+" "+x3dom.caps.UNMASKED_RENDERER_WEBGL+", "+"Version: "+x3dom.caps.VERSION+", "+"ShadingLangV.: "+x3dom.caps.SHADING_LANGUAGE_VERSION
+", MSAA samples: "+x3dom.caps.SAMPLES+"\nExtensions: "+extString);if(x3dom.caps.INDEX_UINT){x3dom.Utils.maxIndexableCoords=4294967295;}
x3dom.caps.MOBILE=(function(a){return(/android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))})(navigator.userAgent||navigator.vendor||window.opera);if(x3dom.caps.RENDERER.indexOf("PowerVR")>=0||navigator.appVersion.indexOf("Mobile")>-1||x3dom.caps.MAX_VARYING_VECTORS<=8||x3dom.caps.MAX_VERTEX_TEXTURE_IMAGE_UNITS<2){x3dom.caps.MOBILE=true;}
if(x3dom.caps.MOBILE){if(forbidMobileShaders){x3dom.caps.MOBILE=false;x3dom.debug.logWarning("Detected mobile graphics card! "+"But being forced to desktop shaders which might not work!");}
else{x3dom.debug.logWarning("Detected mobile graphics card! "+"Using low quality shaders without ImageGeometry support!");}}
else{if(forceMobileShaders){x3dom.caps.MOBILE=true;x3dom.debug.logWarning("Detected desktop graphics card! "+"But being forced to mobile shaders with lower quality!");}}}
catch(ex){x3dom.debug.logWarning("Your browser probably supports an older WebGL version. "+"Please try the old mobile runtime instead:\n"+"http://www.x3dom.org/x3dom/src_mobile/x3dom.js");newCtx=null;}
return newCtx;}}
catch(e){x3dom.debug.logWarning(e);}}
return null;}
Context.prototype.setupShape=function(gl,drawable,viewarea){var q=0,q6;var textures,t;var vertices,positionBuffer;var texCoordBuffer,normalBuffer,colorBuffer;var indicesBuffer,indexArray;var shape=drawable.shape;var geoNode=shape._cf.geometry.node;if(shape._webgl!==undefined){var needFullReInit=false;if(shape._dirty.colors===true&&shape._webgl.shader.color===undefined&&geoNode._mesh._colors[0].length){needFullReInit=true;}
if(needFullReInit&&shape._cleanupGLObjects){shape._cleanupGLObjects(true,false);}
if(shape._dirty.texture===true){if(shape._webgl.texture.length!=shape.getTextures().length){for(t=0;t<shape._webgl.texture.length;++t){shape._webgl.texture.pop();}
textures=shape.getTextures();for(t=0;t<textures.length;++t){shape._webgl.texture.push(new x3dom.Texture(gl,shape._nameSpace.doc,this.cache,textures[t]));}
shape._dirty.shader=true;if(shape._webgl.shader.texcoord===undefined)
shape._dirty.texcoords=true;}
else{textures=shape.getTextures();for(t=0;t<textures.length;++t){if(textures[t]===shape._webgl.texture[t].node){shape._webgl.texture[t].update();}
else{shape._webgl.texture[t].texture=null;shape._webgl.texture[t].node=textures[t];shape._webgl.texture[t].update();}}}
shape._dirty.texture=false;}
shape._webgl.shader=this.cache.getShaderByProperties(gl,shape,shape.getShaderProperties(viewarea));if(!needFullReInit&&shape._webgl.binaryGeometry==0)
{for(q=0;q<shape._webgl.positions.length;q++)
{q6=6*q;if(shape._dirty.positions==true||shape._dirty.indexes==true){if(shape._webgl.shader.position!==undefined){shape._webgl.indexes[q]=geoNode._mesh._indices[q];gl.deleteBuffer(shape._webgl.buffers[q6]);indicesBuffer=gl.createBuffer();shape._webgl.buffers[q6]=indicesBuffer;if(x3dom.caps.INDEX_UINT&&(geoNode._mesh._positions[0].length/3>65535)){indexArray=new Uint32Array(shape._webgl.indexes[q]);shape._webgl.indexType=gl.UNSIGNED_INT;}
else{indexArray=new Uint16Array(shape._webgl.indexes[q]);shape._webgl.indexType=gl.UNSIGNED_SHORT;}
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,indicesBuffer);gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,indexArray,gl.STATIC_DRAW);indexArray=null;shape._webgl.positions[q]=geoNode._mesh._positions[q];gl.deleteBuffer(shape._webgl.buffers[q6+1]);positionBuffer=gl.createBuffer();shape._webgl.buffers[q6+1]=positionBuffer;gl.bindBuffer(gl.ARRAY_BUFFER,positionBuffer);gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,shape._webgl.buffers[q6]);vertices=new Float32Array(shape._webgl.positions[q]);gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW);gl.bindBuffer(gl.ARRAY_BUFFER,positionBuffer);gl.vertexAttribPointer(shape._webgl.shader.position,geoNode._mesh._numPosComponents,shape._webgl.coordType,false,shape._coordStrideOffset[0],shape._coordStrideOffset[1]);vertices=null;}
shape._dirty.positions=false;shape._dirty.indexes=false;}
if(shape._dirty.colors==true){if(shape._webgl.shader.color!==undefined){shape._webgl.colors[q]=geoNode._mesh._colors[q];gl.deleteBuffer(shape._webgl.buffers[q6+4]);colorBuffer=gl.createBuffer();shape._webgl.buffers[q6+4]=colorBuffer;colors=new Float32Array(shape._webgl.colors[q]);gl.bindBuffer(gl.ARRAY_BUFFER,colorBuffer);gl.bufferData(gl.ARRAY_BUFFER,colors,gl.STATIC_DRAW);gl.vertexAttribPointer(shape._webgl.shader.color,geoNode._mesh._numColComponents,shape._webgl.colorType,false,shape._colorStrideOffset[0],shape._colorStrideOffset[1]);colors=null;}
shape._dirty.colors=false;}
if(shape._dirty.normals==true){if(shape._webgl.shader.normal!==undefined){shape._webgl.normals[q]=geoNode._mesh._normals[q];gl.deleteBuffer(shape._webgl.buffers[q6+2]);normalBuffer=gl.createBuffer();shape._webgl.buffers[q6+2]=normalBuffer;normals=new Float32Array(shape._webgl.normals[q]);gl.bindBuffer(gl.ARRAY_BUFFER,normalBuffer);gl.bufferData(gl.ARRAY_BUFFER,normals,gl.STATIC_DRAW);gl.vertexAttribPointer(shape._webgl.shader.normal,geoNode._mesh._numNormComponents,shape._webgl.normalType,false,shape._normalStrideOffset[0],shape._normalStrideOffset[1]);normals=null;}
shape._dirty.normals=false;}
if(shape._dirty.texcoords==true){if(shape._webgl.shader.texcoord!==undefined){shape._webgl.texcoords[q]=geoNode._mesh._texCoords[q];gl.deleteBuffer(shape._webgl.buffers[q6+3]);texCoordBuffer=gl.createBuffer();shape._webgl.buffers[q6+3]=texCoordBuffer;texCoords=new Float32Array(shape._webgl.texcoords[q]);gl.bindBuffer(gl.ARRAY_BUFFER,texCoordBuffer);gl.bufferData(gl.ARRAY_BUFFER,texCoords,gl.STATIC_DRAW);gl.vertexAttribPointer(shape._webgl.shader.texCoord,geoNode._mesh._numTexComponents,shape._webgl.texCoordType,false,shape._texCoordStrideOffset[0],shape._texCoordStrideOffset[1]);texCoords=null;}
shape._dirty.texcoords=false;}
if(shape._dirty.specialAttribs==true){if(shape._webgl.shader.particleSize!==undefined){var szArr=geoNode._vf.size.toGL();if(szArr.length){gl.deleteBuffer(shape._webgl.buffers[q6+5]);shape._webgl.buffers[q6+5]=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,shape._webgl.buffers[q6+5]);gl.bufferData(gl.ARRAY_BUFFER,new Float32Array(szArr),gl.STATIC_DRAW);}
shape._dirty.specialAttribs=false;}}}}
else
{}
if(shape._webgl.imageGeometry!=0){for(t=0;t<shape._webgl.texture.length;++t){shape._webgl.texture[t].updateTexture();}
geoNode.unsetGeoDirty();shape.unsetGeoDirty();}
if(!needFullReInit){return;}}
else if(!(x3dom.isa(geoNode,x3dom.nodeTypes.Text)||x3dom.isa(geoNode,x3dom.nodeTypes.BinaryGeometry)||x3dom.isa(geoNode,x3dom.nodeTypes.PopGeometry)||x3dom.isa(geoNode,x3dom.nodeTypes.ExternalGeometry))&&(!geoNode||geoNode._mesh._positions[0].length<1))
{if(x3dom.caps.MAX_VERTEX_TEXTURE_IMAGE_UNITS<2&&x3dom.isa(geoNode,x3dom.nodeTypes.ImageGeometry)){x3dom.debug.logError("Can't render ImageGeometry nodes with only "+
x3dom.caps.MAX_VERTEX_TEXTURE_IMAGE_UNITS+" vertex texture units. Please upgrade your GPU!");}
else{x3dom.debug.logError("NO VALID MESH OR NO VERTEX POSITIONS SET!");}
return;}
shape.unsetDirty();if(!shape._cleanupGLObjects)
{shape._cleanupGLObjects=function(force,delGL)
{if(this._webgl&&((arguments.length>0&&force)||this._parentNodes.length==0))
{var sp=this._webgl.shader;for(var q=0;q<this._webgl.positions.length;q++){var q6=6*q;if(sp.position!==undefined){gl.deleteBuffer(this._webgl.buffers[q6+1]);gl.deleteBuffer(this._webgl.buffers[q6]);}
if(sp.normal!==undefined){gl.deleteBuffer(this._webgl.buffers[q6+2]);}
if(sp.texcoord!==undefined){gl.deleteBuffer(this._webgl.buffers[q6+3]);}
if(sp.color!==undefined){gl.deleteBuffer(this._webgl.buffers[q6+4]);}
if(sp.id!==undefined){gl.deleteBuffer(this._webgl.buffers[q6+5]);}}
for(var df=0;df<this._webgl.dynamicFields.length;df++){var attrib=this._webgl.dynamicFields[df];if(sp[attrib.name]!==undefined){gl.deleteBuffer(attrib.buf);}}
if(delGL===undefined)
delGL=true;if(delGL){delete this._webgl;x3dom.BinaryContainerLoader.outOfMemory=false;}}};}
shape._webgl={positions:geoNode._mesh._positions,normals:geoNode._mesh._normals,texcoords:geoNode._mesh._texCoords,colors:geoNode._mesh._colors,indexes:geoNode._mesh._indices,indexType:gl.UNSIGNED_SHORT,coordType:gl.FLOAT,normalType:gl.FLOAT,texCoordType:gl.FLOAT,colorType:gl.FLOAT,texture:[],dirtyLighting:x3dom.Utils.checkDirtyLighting(viewarea),imageGeometry:0,binaryGeometry:0,popGeometry:0,externalGeometry:0};textures=shape.getTextures();for(t=0;t<textures.length;++t){shape._webgl.texture.push(new x3dom.Texture(gl,shape._nameSpace.doc,this.cache,textures[t]));}
shape._webgl.shader=this.cache.getShaderByProperties(gl,shape,shape.getShaderProperties(viewarea));var sp=shape._webgl.shader;var currAttribs=0;shape._webgl.buffers=[];shape._webgl.dynamicFields=[];if(x3dom.isa(geoNode,x3dom.nodeTypes.X3DBinaryContainerGeometryNode))
{shape._webgl.primType=[];for(var primCnt=0;primCnt<geoNode._vf.primType.length;++primCnt)
{shape._webgl.primType.push(x3dom.Utils.primTypeDic(gl,geoNode._vf.primType[primCnt]));}}
else
{shape._webgl.primType=x3dom.Utils.primTypeDic(gl,geoNode._mesh._primType);}
if(x3dom.isa(geoNode,x3dom.nodeTypes.ExternalGeometry))
{geoNode.updateRenderData(shape,sp,gl,viewarea,this);}
else if(x3dom.isa(geoNode,x3dom.nodeTypes.BinaryGeometry))
{x3dom.BinaryContainerLoader.setupBinGeo(shape,sp,gl,viewarea,this);}
else if(x3dom.isa(geoNode,x3dom.nodeTypes.PopGeometry))
{x3dom.BinaryContainerLoader.setupPopGeo(shape,sp,gl,viewarea,this);}
else if(x3dom.isa(geoNode,x3dom.nodeTypes.ImageGeometry))
{x3dom.BinaryContainerLoader.setupImgGeo(shape,sp,gl,viewarea,this);}
else
{for(q=0;q<shape._webgl.positions.length;q++)
{q6=6*q;if(sp.position!==undefined){indicesBuffer=gl.createBuffer();shape._webgl.buffers[q6]=indicesBuffer;if(x3dom.caps.INDEX_UINT&&(shape._webgl.positions[0].length/3>65535)){indexArray=new Uint32Array(shape._webgl.indexes[q]);shape._webgl.indexType=gl.UNSIGNED_INT;}
else{indexArray=new Uint16Array(shape._webgl.indexes[q]);shape._webgl.indexType=gl.UNSIGNED_SHORT;}
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,indicesBuffer);gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,indexArray,gl.STATIC_DRAW);indexArray=null;positionBuffer=gl.createBuffer();shape._webgl.buffers[q6+1]=positionBuffer;gl.bindBuffer(gl.ARRAY_BUFFER,positionBuffer);vertices=new Float32Array(shape._webgl.positions[q]);gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW);gl.bindBuffer(gl.ARRAY_BUFFER,positionBuffer);gl.vertexAttribPointer(sp.position,geoNode._mesh._numPosComponents,shape._webgl.coordType,false,shape._coordStrideOffset[0],shape._coordStrideOffset[1]);gl.enableVertexAttribArray(sp.position);vertices=null;}
if(sp.normal!==undefined||shape._webgl.normals[q]){normalBuffer=gl.createBuffer();shape._webgl.buffers[q6+2]=normalBuffer;var normals=new Float32Array(shape._webgl.normals[q]);gl.bindBuffer(gl.ARRAY_BUFFER,normalBuffer);gl.bufferData(gl.ARRAY_BUFFER,normals,gl.STATIC_DRAW);gl.vertexAttribPointer(sp.normal,geoNode._mesh._numNormComponents,shape._webgl.normalType,false,shape._normalStrideOffset[0],shape._normalStrideOffset[1]);gl.enableVertexAttribArray(sp.normal);normals=null;}
if(sp.texcoord!==undefined){var texcBuffer=gl.createBuffer();shape._webgl.buffers[q6+3]=texcBuffer;var texCoords=new Float32Array(shape._webgl.texcoords[q]);gl.bindBuffer(gl.ARRAY_BUFFER,texcBuffer);gl.bufferData(gl.ARRAY_BUFFER,texCoords,gl.STATIC_DRAW);gl.vertexAttribPointer(sp.texcoord,geoNode._mesh._numTexComponents,shape._webgl.texCoordType,false,shape._texCoordStrideOffset[0],shape._texCoordStrideOffset[1]);gl.enableVertexAttribArray(sp.texcoord);texCoords=null;}
if(sp.color!==undefined){colorBuffer=gl.createBuffer();shape._webgl.buffers[q6+4]=colorBuffer;var colors=new Float32Array(shape._webgl.colors[q]);gl.bindBuffer(gl.ARRAY_BUFFER,colorBuffer);gl.bufferData(gl.ARRAY_BUFFER,colors,gl.STATIC_DRAW);gl.vertexAttribPointer(sp.color,geoNode._mesh._numColComponents,shape._webgl.colorType,false,shape._colorStrideOffset[0],shape._colorStrideOffset[1]);gl.enableVertexAttribArray(sp.color);colors=null;}
if(sp.particleSize!==undefined){var sizeArr=geoNode._vf.size.toGL();if(sizeArr.length){var sizeBuffer=gl.createBuffer();shape._webgl.buffers[q6+5]=sizeBuffer;gl.bindBuffer(gl.ARRAY_BUFFER,sizeBuffer);gl.bufferData(gl.ARRAY_BUFFER,new Float32Array(sizeArr),gl.STATIC_DRAW);}}}
for(var df in geoNode._mesh._dynamicFields)
{if(!geoNode._mesh._dynamicFields.hasOwnProperty(df))
continue;var attrib=geoNode._mesh._dynamicFields[df];shape._webgl.dynamicFields[currAttribs]={buf:{},name:df,numComponents:attrib.numComponents};if(sp[df]!==undefined){var attribBuffer=gl.createBuffer();shape._webgl.dynamicFields[currAttribs++].buf=attribBuffer;var attribs=new Float32Array(attrib.value);gl.bindBuffer(gl.ARRAY_BUFFER,attribBuffer);gl.bufferData(gl.ARRAY_BUFFER,attribs,gl.STATIC_DRAW);gl.vertexAttribPointer(sp[df],attrib.numComponents,gl.FLOAT,false,0,0);attribs=null;}}}};Context.prototype.setupScene=function(gl,bgnd){var sphere=null;var texture=null;var that=this;if(bgnd._webgl!==undefined){if(!bgnd._dirty){return;}
if(bgnd._webgl.texture!==undefined&&bgnd._webgl.texture){gl.deleteTexture(bgnd._webgl.texture);}
if(bgnd._cleanupGLObjects){bgnd._cleanupGLObjects();}
bgnd._webgl={};}
bgnd._dirty=false;var url=bgnd.getTexUrl();var i=0;var w=1,h=1;if(url.length>0&&url[0].length>0){if(url.length>=6&&url[1].length>0&&url[2].length>0&&url[3].length>0&&url[4].length>0&&url[5].length>0){sphere=new x3dom.nodeTypes.Sphere();bgnd._webgl={positions:sphere._mesh._positions[0],indexes:sphere._mesh._indices[0],buffers:[{},{}]};bgnd._webgl.primType=gl.TRIANGLES;bgnd._webgl.shader=this.cache.getShader(gl,x3dom.shader.BACKGROUND_CUBETEXTURE);bgnd._webgl.texture=x3dom.Utils.createTextureCube(gl,bgnd._nameSpace.doc,url,true,bgnd._vf.crossOrigin,true,false);}
else{bgnd._webgl={positions:[-w,-h,0,-w,h,0,w,-h,0,w,h,0],indexes:[0,1,2,3],buffers:[{},{}]};url=bgnd._nameSpace.getURL(url[0]);bgnd._webgl.texture=x3dom.Utils.createTexture2D(gl,bgnd._nameSpace.doc,url,true,bgnd._vf.crossOrigin,true,false);bgnd._webgl.primType=gl.TRIANGLE_STRIP;bgnd._webgl.shader=this.cache.getShader(gl,x3dom.shader.BACKGROUND_TEXTURE);}}
else{if(bgnd.getSkyColor().length>1||bgnd.getGroundColor().length){sphere=new x3dom.nodeTypes.Sphere();texture=gl.createTexture();bgnd._webgl={positions:sphere._mesh._positions[0],texcoords:sphere._mesh._texCoords[0],indexes:sphere._mesh._indices[0],buffers:[{},{},{}],texture:texture,primType:gl.TRIANGLES};var N=x3dom.Utils.nextHighestPowerOfTwo(bgnd.getSkyColor().length+bgnd.getGroundColor().length+2);N=(N<512)?512:N;var n=bgnd._vf.groundAngle.length;var tmp=[],arr=[];var colors=[],sky=[0];for(i=0;i<bgnd._vf.skyColor.length;i++){colors[i]=bgnd._vf.skyColor[i];}
for(i=0;i<bgnd._vf.skyAngle.length;i++){sky[i+1]=bgnd._vf.skyAngle[i];}
if(n>0||bgnd._vf.groundColor.length==1){if(sky[sky.length-1]<Math.PI/2){sky[sky.length]=Math.PI/2-x3dom.fields.Eps;colors[colors.length]=colors[colors.length-1];}
for(i=n-1;i>=0;i--){if((i==n-1)&&(Math.PI-bgnd._vf.groundAngle[i]<=Math.PI/2)){sky[sky.length]=Math.PI/2;colors[colors.length]=bgnd._vf.groundColor[bgnd._vf.groundColor.length-1];}
sky[sky.length]=Math.PI-bgnd._vf.groundAngle[i];colors[colors.length]=bgnd._vf.groundColor[i+1];}
if(n==0&&bgnd._vf.groundColor.length==1){sky[sky.length]=Math.PI/2;colors[colors.length]=bgnd._vf.groundColor[0];}
sky[sky.length]=Math.PI;colors[colors.length]=bgnd._vf.groundColor[0];}
else{if(sky[sky.length-1]<Math.PI){sky[sky.length]=Math.PI;colors[colors.length]=colors[colors.length-1];}}
for(i=0;i<sky.length;i++){sky[i]/=Math.PI;}
if(sky.length!=colors.length){x3dom.debug.logError("Number of background colors and corresponding angles are different!");var minArrayLength=(sky.length<colors.length)?sky.length:colors.length;sky.length=minArrayLength;colors.length=minArrayLength;}
var interp=new x3dom.nodeTypes.ColorInterpolator();interp._vf.key=new x3dom.fields.MFFloat(sky);interp._vf.keyValue=new x3dom.fields.MFColor(colors);for(i=0;i<N;i++){interp._vf.set_fraction=i/(N-1.0);interp.fieldChanged("set_fraction");tmp[i]=interp._vf.value_changed;}
tmp.reverse();var alpha=Math.floor((1.0-bgnd.getTransparency())*255);for(i=0;i<tmp.length;i++){arr.push(Math.floor(tmp[i].r*255),Math.floor(tmp[i].g*255),Math.floor(tmp[i].b*255),alpha);}
var pixels=new Uint8Array(arr);var format=gl.RGBA;N=pixels.length/4;gl.bindTexture(gl.TEXTURE_2D,texture);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.pixelStorei(gl.UNPACK_ALIGNMENT,1);gl.texImage2D(gl.TEXTURE_2D,0,format,1,N,0,format,gl.UNSIGNED_BYTE,pixels);gl.bindTexture(gl.TEXTURE_2D,null);bgnd._webgl.shader=this.cache.getShader(gl,x3dom.shader.BACKGROUND_SKYTEXTURE);}
else{bgnd._webgl={};}}
if(bgnd._webgl.shader){var sp=bgnd._webgl.shader;var positionBuffer=gl.createBuffer();bgnd._webgl.buffers[1]=positionBuffer;gl.bindBuffer(gl.ARRAY_BUFFER,positionBuffer);var vertices=new Float32Array(bgnd._webgl.positions);gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW);gl.bindBuffer(gl.ARRAY_BUFFER,positionBuffer);gl.vertexAttribPointer(sp.position,3,gl.FLOAT,false,0,0);gl.enableVertexAttribArray(sp.position);var indicesBuffer=gl.createBuffer();bgnd._webgl.buffers[0]=indicesBuffer;var indexArray=new Uint16Array(bgnd._webgl.indexes);gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,indicesBuffer);gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,indexArray,gl.STATIC_DRAW);vertices=null;indexArray=null;if(sp.texcoord!==undefined){var texcBuffer=gl.createBuffer();bgnd._webgl.buffers[2]=texcBuffer;var texcoords=new Float32Array(bgnd._webgl.texcoords);gl.bindBuffer(gl.ARRAY_BUFFER,texcBuffer);gl.bufferData(gl.ARRAY_BUFFER,texcoords,gl.STATIC_DRAW);gl.vertexAttribPointer(sp.texcoord,2,gl.FLOAT,false,0,0);gl.enableVertexAttribArray(sp.texcoord);texcoords=null;}
bgnd._cleanupGLObjects=function(){var sp=this._webgl.shader;if(sp.position!==undefined){gl.deleteBuffer(this._webgl.buffers[0]);gl.deleteBuffer(this._webgl.buffers[1]);}
if(sp.texcoord!==undefined){gl.deleteBuffer(this._webgl.buffers[2]);}};}
bgnd._webgl.render=function(gl,mat_view,mat_proj)
{var sp=bgnd._webgl.shader;var alpha=1.0-bgnd.getTransparency();var mat_scene=null;var projMatrix_22=mat_proj._22,projMatrix_23=mat_proj._23;var camPos=mat_view.e3();if((sp!==undefined&&sp!==null)&&(sp.texcoord!==undefined&&sp.texcoord!==null)&&(bgnd._webgl.texture!==undefined&&bgnd._webgl.texture!==null)){gl.clearColor(0,0,0,alpha);gl.clearDepth(1.0);gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT|gl.STENCIL_BUFFER_BIT);that.stateManager.frontFace(gl.CCW);that.stateManager.disable(gl.CULL_FACE);that.stateManager.disable(gl.DEPTH_TEST);that.stateManager.disable(gl.BLEND);that.stateManager.useProgram(sp);if(!sp.tex){sp.tex=0;}
mat_proj._22=100001/99999;mat_proj._23=200000/99999;mat_view._03=0;mat_view._13=0;mat_view._23=0;mat_scene=mat_proj.mult(mat_view);sp.modelViewProjectionMatrix=mat_scene.toGL();mat_view._03=camPos.x;mat_view._13=camPos.y;mat_view._23=camPos.z;mat_proj._22=projMatrix_22;mat_proj._23=projMatrix_23;gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,bgnd._webgl.texture);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,bgnd._webgl.buffers[0]);gl.bindBuffer(gl.ARRAY_BUFFER,bgnd._webgl.buffers[1]);gl.vertexAttribPointer(sp.position,3,gl.FLOAT,false,0,0);gl.enableVertexAttribArray(sp.position);gl.bindBuffer(gl.ARRAY_BUFFER,bgnd._webgl.buffers[2]);gl.vertexAttribPointer(sp.texcoord,2,gl.FLOAT,false,0,0);gl.enableVertexAttribArray(sp.texcoord);gl.drawElements(bgnd._webgl.primType,bgnd._webgl.indexes.length,gl.UNSIGNED_SHORT,0);gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,null);gl.disableVertexAttribArray(sp.position);gl.disableVertexAttribArray(sp.texcoord);gl.clear(gl.DEPTH_BUFFER_BIT);}
else if(!sp||!bgnd._webgl.texture||(bgnd._webgl.texture.textureCubeReady!==undefined&&bgnd._webgl.texture.textureCubeReady!==true)){var bgCol=bgnd.getSkyColor().toGL();gl.clearColor(bgCol[0],bgCol[1],bgCol[2],alpha);gl.clearDepth(1.0);gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT|gl.STENCIL_BUFFER_BIT);}
else{gl.clearColor(0,0,0,alpha);gl.clearDepth(1.0);gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT|gl.STENCIL_BUFFER_BIT);that.stateManager.frontFace(gl.CCW);that.stateManager.disable(gl.CULL_FACE);that.stateManager.disable(gl.DEPTH_TEST);that.stateManager.disable(gl.BLEND);that.stateManager.useProgram(sp);if(!sp.tex){sp.tex=0;}
if(bgnd._webgl.texture.textureCubeReady){mat_proj._22=100001/99999;mat_proj._23=200000/99999;mat_view._03=0;mat_view._13=0;mat_view._23=0;mat_scene=mat_proj.mult(mat_view);sp.modelViewProjectionMatrix=mat_scene.toGL();mat_view._03=camPos.x;mat_view._13=camPos.y;mat_view._23=camPos.z;mat_proj._22=projMatrix_22;mat_proj._23=projMatrix_23;gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_CUBE_MAP,bgnd._webgl.texture);gl.texParameteri(gl.TEXTURE_CUBE_MAP,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_CUBE_MAP,gl.TEXTURE_MAG_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_CUBE_MAP,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_CUBE_MAP,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);}
else{gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,bgnd._webgl.texture);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);}
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,bgnd._webgl.buffers[0]);gl.bindBuffer(gl.ARRAY_BUFFER,bgnd._webgl.buffers[1]);gl.vertexAttribPointer(sp.position,3,gl.FLOAT,false,0,0);gl.enableVertexAttribArray(sp.position);gl.drawElements(bgnd._webgl.primType,bgnd._webgl.indexes.length,gl.UNSIGNED_SHORT,0);gl.disableVertexAttribArray(sp.position);gl.activeTexture(gl.TEXTURE0);if(bgnd._webgl.texture.textureCubeReady){gl.bindTexture(gl.TEXTURE_CUBE_MAP,null);}
else{gl.bindTexture(gl.TEXTURE_2D,null);}
gl.clear(gl.DEPTH_BUFFER_BIT);}};};Context.prototype.setupFgnds=function(gl,scene){if(scene._fgnd!==undefined){return;}
var that=this;var w=1,h=1;scene._fgnd={};scene._fgnd._webgl={positions:[-w,-h,0,-w,h,0,w,-h,0,w,h,0],indexes:[0,1,2,3],buffers:[{},{}]};scene._fgnd._webgl.primType=gl.TRIANGLE_STRIP;scene._fgnd._webgl.shader=this.cache.getShader(gl,x3dom.shader.FRONTGROUND_TEXTURE);var sp=scene._fgnd._webgl.shader;var positionBuffer=gl.createBuffer();scene._fgnd._webgl.buffers[1]=positionBuffer;gl.bindBuffer(gl.ARRAY_BUFFER,positionBuffer);var vertices=new Float32Array(scene._fgnd._webgl.positions);gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW);gl.bindBuffer(gl.ARRAY_BUFFER,positionBuffer);gl.vertexAttribPointer(sp.position,3,gl.FLOAT,false,0,0);var indicesBuffer=gl.createBuffer();scene._fgnd._webgl.buffers[0]=indicesBuffer;var indexArray=new Uint16Array(scene._fgnd._webgl.indexes);gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,indicesBuffer);gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,indexArray,gl.STATIC_DRAW);vertices=null;indexArray=null;scene._fgnd._webgl.render=function(gl,tex){scene._fgnd._webgl.texture=tex;that.stateManager.frontFace(gl.CCW);that.stateManager.disable(gl.CULL_FACE);that.stateManager.disable(gl.DEPTH_TEST);that.stateManager.useProgram(sp);if(!sp.tex){sp.tex=0;}
gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,scene._fgnd._webgl.texture);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,scene._fgnd._webgl.buffers[0]);gl.bindBuffer(gl.ARRAY_BUFFER,scene._fgnd._webgl.buffers[1]);gl.vertexAttribPointer(sp.position,3,gl.FLOAT,false,0,0);gl.enableVertexAttribArray(sp.position);gl.drawElements(scene._fgnd._webgl.primType,scene._fgnd._webgl.indexes.length,gl.UNSIGNED_SHORT,0);gl.disableVertexAttribArray(sp.position);gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,null);};};Context.prototype.renderShadowPass=function(gl,viewarea,mat_scene,mat_view,targetFbo,camOffset,isCameraView)
{var scene=viewarea._scene;var sp=scene._webgl.shadowShader;this.stateManager.bindFramebuffer(gl.FRAMEBUFFER,targetFbo.fbo);this.stateManager.viewport(0,0,targetFbo.width,targetFbo.height);this.stateManager.useProgram(sp);sp.cameraView=isCameraView;sp.offset=camOffset;{sp.PG_precisionLevel=1.0;sp.PG_powPrecision=1.0;sp.PG_maxBBSize=[0,0,0];sp.PG_bbMin=[0,0,0];sp.PG_bbMaxModF=[0,0,0];sp.PG_bboxShiftVec=[0,0,0];}
gl.clearColor(1.0,1.0,1.0,0.0);gl.clearDepth(1.0);gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT);this.stateManager.depthFunc(gl.LEQUAL);this.stateManager.enable(gl.DEPTH_TEST);this.stateManager.enable(gl.CULL_FACE);this.stateManager.disable(gl.BLEND);var bgCenter=x3dom.fields.SFVec3f.NullVector.toGL();var bgSize=x3dom.fields.SFVec3f.OneVector.toGL();var env=scene.getEnvironment();var excludeTrans=env._vf.shadowExcludeTransparentObjects;var i,n=scene.drawableCollection.length;for(i=0;i<n;i++)
{var drawable=scene.drawableCollection.get(i);var trafo=drawable.transform;var shape=drawable.shape;var s_gl=shape._webgl;if(!s_gl||(excludeTrans&&drawable.sortType=='transparent')){continue;}
var s_geo=shape._cf.geometry.node;var s_msh=s_geo._mesh;sp.modelViewProjectionMatrix=mat_scene.mult(trafo).toGL();sp.imageGeometry=s_gl.imageGeometry;sp.popGeometry=s_gl.popGeometry;if(s_gl.coordType!=gl.FLOAT){if(!s_gl.popGeometry&&(x3dom.Utils.isUnsignedType(s_geo._vf.coordType))){sp.bgCenter=s_geo.getMin().toGL();}
else{sp.bgCenter=s_geo._vf.position.toGL();}
sp.bgSize=s_geo._vf.size.toGL();sp.bgPrecisionMax=s_geo.getPrecisionMax('coordType');}
else{sp.bgCenter=bgCenter;sp.bgSize=bgSize;sp.bgPrecisionMax=1;}
if(s_gl.colorType!=gl.FLOAT){sp.bgPrecisionColMax=s_geo.getPrecisionMax('colorType');}
if(s_gl.texCoordType!=gl.FLOAT){sp.bgPrecisionTexMax=s_geo.getPrecisionMax('texCoordType');}
if(s_gl.imageGeometry!=0&&!x3dom.caps.MOBILE)
{sp.IG_bboxMin=s_geo.getMin().toGL();sp.IG_bboxMax=s_geo.getMax().toGL();sp.IG_implicitMeshSize=s_geo._vf.implicitMeshSize.toGL();var coordTex=x3dom.Utils.findTextureByName(s_gl.texture,"IG_coords0");if(coordTex){sp.IG_coordTextureWidth=coordTex.texture.width;sp.IG_coordTextureHeight=coordTex.texture.height;}
if(s_gl.imageGeometry==1){var indexTex=x3dom.Utils.findTextureByName(s_gl.texture,"IG_index");if(indexTex){sp.IG_indexTextureWidth=indexTex.texture.width;sp.IG_indexTextureHeight=indexTex.texture.height;}
gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,indexTex.texture);gl.activeTexture(gl.TEXTURE1);gl.bindTexture(gl.TEXTURE_2D,coordTex.texture);}
else{gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,coordTex.texture);}
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST);var texUnit=0;if(s_geo.getIndexTexture()){if(!sp.IG_indexTexture){sp.IG_indexTexture=texUnit++;}}
if(s_geo.getCoordinateTexture(0)){if(!sp.IG_coordinateTexture){sp.IG_coordinateTexture=texUnit++;}}}
if(shape.isSolid()){this.stateManager.enable(gl.CULL_FACE);if(shape.isCCW()){this.stateManager.frontFace(gl.CCW);}
else{this.stateManager.frontFace(gl.CW);}}
else{this.stateManager.disable(gl.CULL_FACE);}
if(s_gl.popGeometry){var model_view=mat_view.mult(trafo);this.updatePopState(drawable,s_geo,sp,s_gl,scene,model_view,viewarea,this.x3dElem.runtime.fps);}
var q_n;if(s_gl.externalGeometry!=0)
{q_n=s_gl.primType.length;}
else
{q_n=s_gl.positions.length;}
for(var q=0;q<q_n;q++){var q6=6*q;var v,v_n,offset;if(!(sp.position!==undefined&&s_gl.buffers[q6+1]&&(s_gl.indexes[q]||s_gl.externalGeometry!=0)))
continue;if(s_gl.buffers[q6]){gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,s_gl.buffers[q6]);}
gl.bindBuffer(gl.ARRAY_BUFFER,s_gl.buffers[q6+1]);gl.vertexAttribPointer(sp.position,s_msh._numPosComponents,s_gl.coordType,false,shape._coordStrideOffset[0],shape._coordStrideOffset[1]);gl.enableVertexAttribArray(sp.position);if(s_gl.binaryGeometry>0||s_gl.popGeometry>0){for(v=0,offset=0,v_n=s_geo._vf.vertexCount.length;v<v_n;v++){gl.drawElements(s_gl.primType[v],s_geo._vf.vertexCount[v],s_gl.indexType,x3dom.Utils.getByteAwareOffset(offset,s_gl.indexType,gl));offset+=s_geo._vf.vertexCount[v];}}
else if(s_gl.binaryGeometry<0||s_gl.popGeometry<0||s_gl.imageGeometry){for(v=0,offset=0,v_n=s_geo._vf.vertexCount.length;v<v_n;v++){gl.drawArrays(s_gl.primType[v],offset,s_geo._vf.vertexCount[v]);offset+=s_geo._vf.vertexCount[v];}}
else if(s_gl.externalGeometry==1)
{gl.drawElements(s_gl.primType[q],s_gl.drawCount[q],s_gl.indexType,s_gl.indexOffset[q]);}
else if(s_gl.externalGeometry==-1)
{gl.drawArrays(s_gl.primType[q],0,s_gl.drawCount[q]);}
else if(s_geo.hasIndexOffset()){var indOff=shape.tessellationProperties();for(v=0,v_n=indOff.length;v<v_n;v++){gl.drawElements(s_gl.primType,indOff[v].count,s_gl.indexType,indOff[v].offset*x3dom.Utils.getOffsetMultiplier(s_gl.indexType,gl));}}
else if(s_gl.indexes[q].length==0){gl.drawArrays(s_gl.primType,0,s_gl.positions[q].length/3);}
else{gl.drawElements(s_gl.primType,s_gl.indexes[q].length,s_gl.indexType,0);}
gl.disableVertexAttribArray(sp.position);}
if(s_gl.imageGeometry!=0&&!x3dom.caps.MOBILE){gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,null);if(s_gl.imageGeometry==1){gl.activeTexture(gl.TEXTURE1);gl.bindTexture(gl.TEXTURE_2D,null);}}}
gl.flush();this.stateManager.bindFramebuffer(gl.FRAMEBUFFER,null);};Context.prototype.renderPickingPass=function(gl,scene,mat_view,mat_scene,from,sceneSize,pickMode,lastX,lastY,width,height)
{var ps=scene._webgl.pickScale;var bufHeight=scene._webgl.fboPick.height;var x=lastX*ps;var y=(bufHeight-1)-lastY*ps;this.stateManager.bindFramebuffer(gl.FRAMEBUFFER,scene._webgl.fboPick.fbo);this.stateManager.viewport(0,0,scene._webgl.fboPick.width,bufHeight);gl.clearColor(0.0,0.0,0.0,0.0);gl.clearDepth(1.0);gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT);var viewarea=scene.drawableCollection.viewarea;var env=scene.getEnvironment();var n=scene.drawableCollection.length;if(env._vf.smallFeatureCulling&&env._lowPriorityThreshold<1&&viewarea.isMovingOrAnimating()){n=Math.floor(n*env._lowPriorityThreshold);if(!n&&scene.drawableCollection.length)
n=1;}
var bgCenter=x3dom.fields.SFVec3f.NullVector.toGL();var bgSize=x3dom.fields.SFVec3f.OneVector.toGL();this.stateManager.depthFunc(gl.LEQUAL);this.stateManager.enable(gl.DEPTH_TEST);this.stateManager.enable(gl.CULL_FACE);this.stateManager.disable(gl.BLEND);if(x3dom.Utils.needLineWidth){this.stateManager.lineWidth(2);}
for(var i=0;i<n;i++)
{var drawable=scene.drawableCollection.get(i);var trafo=drawable.transform;var shape=drawable.shape;var s_gl=shape._webgl;if(!s_gl||shape._objectID<1||!shape._vf.isPickable){continue;}
var s_geo=shape._cf.geometry.node;var s_app=shape._cf.appearance.node;var s_msh=s_geo._mesh;var properties=shape.getShaderProperties(viewarea);var sp=this.cache.getShaderByProperties(gl,shape,properties,pickMode);if(!sp){return;}
this.stateManager.useProgram(sp);sp.modelMatrix=trafo.toGL();sp.modelViewProjectionMatrix=mat_scene.mult(trafo).toGL();sp.lowBit=(shape._objectID&255)/255.0;sp.highBit=(shape._objectID>>>8)/255.0;sp.from=from.toGL();sp.sceneSize=sceneSize;if(s_gl.binaryGeometry!=0&&s_geo._vf.idsPerVertex){sp.shadowIDs=(shape._vf.idOffset+x3dom.nodeTypes.Shape.objectID+2);}
if(s_gl.coordType!=gl.FLOAT){if(!s_gl.popGeometry&&(x3dom.Utils.isUnsignedType(s_geo._vf.coordType))){sp.bgCenter=s_geo.getMin().toGL();}
else{sp.bgCenter=s_geo._vf.position.toGL();}
sp.bgSize=s_geo._vf.size.toGL();sp.bgPrecisionMax=s_geo.getPrecisionMax('coordType');}
if(pickMode==1&&s_gl.colorType!=gl.FLOAT){sp.bgPrecisionColMax=s_geo.getPrecisionMax('colorType');}
if(pickMode==2&&s_gl.texCoordType!=gl.FLOAT){sp.bgPrecisionTexMax=s_geo.getPrecisionMax('texCoordType');}
if(shape._clipPlanes){sp.modelViewMatrix=mat_view.mult(trafo).toGL();sp.viewMatrixInverse=mat_view.inverse().toGL();for(var cp=0;cp<shape._clipPlanes.length;cp++){var clip_plane=shape._clipPlanes[cp].plane;var clip_trafo=shape._clipPlanes[cp].trafo;sp['clipPlane'+cp+'_Plane']=clip_trafo.multMatrixPlane(clip_plane._vf.plane).toGL();sp['clipPlane'+cp+'_CappingStrength']=clip_plane._vf.cappingStrength;sp['clipPlane'+cp+'_CappingColor']=clip_plane._vf.cappingColor.toGL();}}
if(s_gl.imageGeometry!=0&&!x3dom.caps.MOBILE)
{sp.IG_bboxMin=s_geo.getMin().toGL();sp.IG_bboxMax=s_geo.getMax().toGL();sp.IG_implicitMeshSize=s_geo._vf.implicitMeshSize.toGL();var coordTex=x3dom.Utils.findTextureByName(s_gl.texture,"IG_coords0");if(coordTex){sp.IG_coordTextureWidth=coordTex.texture.width;sp.IG_coordTextureHeight=coordTex.texture.height;}
if(s_gl.imageGeometry==1){var indexTex=x3dom.Utils.findTextureByName(s_gl.texture,"IG_index");if(indexTex){sp.IG_indexTextureWidth=indexTex.texture.width;sp.IG_indexTextureHeight=indexTex.texture.height;}
gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,indexTex.texture);gl.activeTexture(gl.TEXTURE1);gl.bindTexture(gl.TEXTURE_2D,coordTex.texture);}
else{gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,coordTex.texture);}
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST);var texUnit=0;if(s_geo.getIndexTexture()){if(!sp.IG_indexTexture){sp.IG_indexTexture=texUnit++;}}
if(s_geo.getCoordinateTexture(0)){if(!sp.IG_coordinateTexture){sp.IG_coordinateTexture=texUnit++;}}}
else if(s_gl.binaryGeometry!=0&&s_geo._vf.idsPerVertex){var shader=s_app._shader;if(shader&&x3dom.isa(s_app._shader,x3dom.nodeTypes.CommonSurfaceShader)){if(shader.getMultiVisibilityMap()){sp.multiVisibilityMap=0;var visTex=x3dom.Utils.findTextureByName(s_gl.texture,"multiVisibilityMap");sp.multiVisibilityWidth=visTex.texture.width;sp.multiVisibilityHeight=visTex.texture.height;gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,visTex.texture);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST);}}}
if(shape.isSolid()){this.stateManager.enable(gl.CULL_FACE);if(shape.isCCW()){this.stateManager.frontFace(gl.CCW);}
else{this.stateManager.frontFace(gl.CW);}}
else{this.stateManager.disable(gl.CULL_FACE);}
var depthMode=s_app?s_app._cf.depthMode.node:null;if(depthMode)
{if(depthMode._vf.enableDepthTest)
{this.stateManager.enable(gl.DEPTH_TEST);this.stateManager.depthMask(!depthMode._vf.readOnly);this.stateManager.depthFunc(x3dom.Utils.depthFunc(gl,depthMode._vf.depthFunc));this.stateManager.depthRange(depthMode._vf.zNearRange,depthMode._vf.zFarRange);}
else
{this.stateManager.disable(gl.DEPTH_TEST);}}
else
{this.stateManager.enable(gl.DEPTH_TEST);this.stateManager.depthMask(true);this.stateManager.depthFunc(gl.LEQUAL);}
if(s_gl.popGeometry){var model_view=mat_view.mult(trafo);this.updatePopState(drawable,s_geo,sp,s_gl,scene,model_view,viewarea,this.x3dElem.runtime.fps);}
var q_n;if(s_gl.externalGeometry!=0)
{q_n=s_gl.primType.length;}
else
{q_n=s_gl.positions.length;}
for(var q=0;q<q_n;q++){var q6=6*q;var v,v_n,offset;if(!(sp.position!==undefined&&s_gl.buffers[q6+1]&&(s_gl.indexes[q]||s_gl.externalGeometry!=0)))
continue;if(s_gl.buffers[q6]){gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,s_gl.buffers[q6]);}
gl.bindBuffer(gl.ARRAY_BUFFER,s_gl.buffers[q6+1]);gl.vertexAttribPointer(sp.position,s_msh._numPosComponents,s_gl.coordType,false,shape._coordStrideOffset[0],shape._coordStrideOffset[1]);gl.enableVertexAttribArray(sp.position);if(pickMode==1&&sp.color!==undefined&&s_gl.buffers[q6+4]){gl.bindBuffer(gl.ARRAY_BUFFER,s_gl.buffers[q6+4]);gl.vertexAttribPointer(sp.color,s_msh._numColComponents,s_gl.colorType,false,shape._colorStrideOffset[0],shape._colorStrideOffset[1]);gl.enableVertexAttribArray(sp.color);}
if(pickMode==2&&sp.texcoord!==undefined&&s_gl.buffers[q6+3]){gl.bindBuffer(gl.ARRAY_BUFFER,s_gl.buffers[q6+3]);gl.vertexAttribPointer(sp.texcoord,s_msh._numTexComponents,s_gl.texCoordType,false,shape._texCoordStrideOffset[0],shape._texCoordStrideOffset[1]);gl.enableVertexAttribArray(sp.texcoord);}
if(sp.id!==undefined&&s_gl.buffers[q6+5]){gl.bindBuffer(gl.ARRAY_BUFFER,s_gl.buffers[q6+5]);if(s_gl.binaryGeometry!=0&&s_geo._vf["idsPerVertex"]==true)
{gl.vertexAttribPointer(sp.id,1,gl.FLOAT,false,4,0);gl.enableVertexAttribArray(sp.id);}
else
{}}
if(s_gl.binaryGeometry>0||s_gl.popGeometry>0){for(v=0,offset=0,v_n=s_geo._vf.vertexCount.length;v<v_n;v++){gl.drawElements(s_gl.primType[v],s_geo._vf.vertexCount[v],s_gl.indexType,x3dom.Utils.getByteAwareOffset(offset,s_gl.indexType,gl));offset+=s_geo._vf.vertexCount[v];}}
else if(s_gl.binaryGeometry<0||s_gl.popGeometry<0||s_gl.imageGeometry){for(v=0,offset=0,v_n=s_geo._vf.vertexCount.length;v<v_n;v++){gl.drawArrays(s_gl.primType[v],offset,s_geo._vf.vertexCount[v]);offset+=s_geo._vf.vertexCount[v];}}
else if(s_gl.externalGeometry==1)
{gl.drawElements(s_gl.primType[q],s_gl.drawCount[q],s_gl.indexType,s_gl.indexOffset[q]);}
else if(s_gl.externalGeometry==-1)
{gl.drawArrays(s_gl.primType[q],0,s_gl.drawCount[q]);}
else if(s_geo.hasIndexOffset()){var indOff=shape.tessellationProperties();for(v=0,v_n=indOff.length;v<v_n;v++){gl.drawElements(s_gl.primType,indOff[v].count,s_gl.indexType,indOff[v].offset*x3dom.Utils.getOffsetMultiplier(s_gl.indexType,gl));}}
else if(s_gl.indexes[q].length==0){gl.drawArrays(s_gl.primType,0,s_gl.positions[q].length/3);}
else{gl.drawElements(s_gl.primType,s_gl.indexes[q].length,s_gl.indexType,0);}
gl.disableVertexAttribArray(sp.position);if(sp.texcoord!==undefined&&s_gl.buffers[q6+3]){gl.disableVertexAttribArray(sp.texcoord);}
if(sp.color!==undefined&&s_gl.buffers[q6+4]){gl.disableVertexAttribArray(sp.color);}
if(sp.id!==undefined&&s_gl.buffers[q6+5]){gl.disableVertexAttribArray(sp.id);}}
if(s_gl.imageGeometry!=0&&!x3dom.caps.MOBILE){gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,null);if(s_gl.imageGeometry==1){gl.activeTexture(gl.TEXTURE1);gl.bindTexture(gl.TEXTURE_2D,null);}}}
if(x3dom.Utils.needLineWidth){this.stateManager.lineWidth(1);}
if(depthMode){this.stateManager.enable(gl.DEPTH_TEST);this.stateManager.depthMask(true);this.stateManager.depthFunc(gl.LEQUAL);this.stateManager.depthRange(0,1);}
gl.flush();try{var data=new Uint8Array(4*width*height);gl.readPixels(x,y,width,height,gl.RGBA,gl.UNSIGNED_BYTE,data);scene._webgl.fboPick.pixelData=data;}
catch(se){scene._webgl.fboPick.pixelData=[];x3dom.debug.logException(se+" (cannot pick)");}
this.stateManager.bindFramebuffer(gl.FRAMEBUFFER,null);};Context.prototype.renderShape=function(drawable,viewarea,slights,numLights,mat_view,mat_scene,mat_light,mat_proj,gl)
{var shape=drawable.shape;var transform=drawable.transform;if(!shape||!shape._webgl||!transform){x3dom.debug.logError("[Context|RenderShape] No valid Shape!");return;}
var s_gl=shape._webgl;var sp=s_gl.shader;if(!sp){x3dom.debug.logError("[Context|RenderShape] No Shader is set!");return;}
var changed=this.stateManager.useProgram(sp);var s_app=shape._cf.appearance.node;var s_geo=shape._cf.geometry.node;var s_msh=s_geo._mesh;var scene=viewarea._scene;var tex=null;if(s_gl.coordType!=gl.FLOAT){if(!s_gl.popGeometry&&(x3dom.Utils.isUnsignedType(s_geo._vf.coordType))){sp.bgCenter=s_geo.getMin().toGL();}
else{sp.bgCenter=s_geo._vf.position.toGL();}
sp.bgSize=s_geo._vf.size.toGL();sp.bgPrecisionMax=s_geo.getPrecisionMax('coordType');}
else{sp.bgCenter=[0,0,0];sp.bgSize=[1,1,1];sp.bgPrecisionMax=1;}
if(s_gl.colorType!=gl.FLOAT){sp.bgPrecisionColMax=s_geo.getPrecisionMax('colorType');}
else{sp.bgPrecisionColMax=1;}
if(s_gl.texCoordType!=gl.FLOAT){sp.bgPrecisionTexMax=s_geo.getPrecisionMax('texCoordType');}
else{sp.bgPrecisionTexMax=1;}
if(s_gl.normalType!=gl.FLOAT){sp.bgPrecisionNorMax=s_geo.getPrecisionMax('normalType');}
else{sp.bgPrecisionNorMax=1;}
if(s_gl.imageGeometry!=0){sp.IG_bboxMin=s_geo.getMin().toGL();sp.IG_bboxMax=s_geo.getMax().toGL();sp.IG_implicitMeshSize=s_geo._vf.implicitMeshSize.toGL();tex=x3dom.Utils.findTextureByName(s_gl.texture,"IG_coords0");if(tex){sp.IG_coordTextureWidth=tex.texture.width;sp.IG_coordTextureHeight=tex.texture.height;}
if(s_gl.imageGeometry==1){tex=x3dom.Utils.findTextureByName(s_gl.texture,"IG_index");if(tex){sp.IG_indexTextureWidth=tex.texture.width;sp.IG_indexTextureHeight=tex.texture.height;}}
tex=null;}
var fog=scene.getFog();if(fog&&changed){sp.fogColor=fog._vf.color.toGL();sp.fogRange=fog._vf.visibilityRange;sp.fogType=(fog._vf.fogType=="LINEAR")?0.0:1.0;}
var mat=s_app?s_app._cf.material.node:null;var shader=s_app?s_app._shader:null;var twoSidedMat=false;var isUserDefinedShader=shader&&x3dom.isa(shader,x3dom.nodeTypes.ComposedShader);if(s_gl.csshader){sp.diffuseColor=shader._vf.diffuseFactor.toGL();sp.specularColor=shader._vf.specularFactor.toGL();sp.emissiveColor=shader._vf.emissiveFactor.toGL();sp.shininess=shader._vf.shininessFactor;sp.ambientIntensity=(shader._vf.ambientFactor.x+
shader._vf.ambientFactor.y+
shader._vf.ambientFactor.z)/3;sp.transparency=1.0-shader._vf.alphaFactor;if(shader.getDisplacementMap()){tex=x3dom.Utils.findTextureByName(s_gl.texture,"displacementMap");sp.displacementWidth=tex.texture.width;sp.displacementHeight=tex.texture.height;sp.displacementFactor=shader._vf.displacementFactor;sp.displacementAxis=(shader._vf.displacementAxis=="x")?0.0:(shader._vf.displacementAxis=="y")?1.0:2.0;}
else if(shader.getDiffuseDisplacementMap()){tex=x3dom.Utils.findTextureByName(s_gl.texture,"diffuseDisplacementMap");sp.displacementWidth=tex.texture.width;sp.displacementHeight=tex.texture.height;sp.displacementFactor=shader._vf.displacementFactor;sp.displacementAxis=(shader._vf.displacementAxis=="x")?0.0:(shader._vf.displacementAxis=="y")?1.0:2.0;}
if(shader.getMultiDiffuseAlphaMap()){tex=x3dom.Utils.findTextureByName(s_gl.texture,"multiDiffuseAlphaMap");sp.multiDiffuseAlphaWidth=tex.texture.width;sp.multiDiffuseAlphaHeight=tex.texture.height;}
if(shader.getMultiEmissiveAmbientMap()){tex=x3dom.Utils.findTextureByName(s_gl.texture,"multiEmissiveAmbientMap");sp.multiEmissiveAmbientWidth=tex.texture.width;sp.multiEmissiveAmbientHeight=tex.texture.height;}
if(shader.getMultiSpecularShininessMap()){tex=x3dom.Utils.findTextureByName(s_gl.texture,"multiSpecularShininessMap");sp.multiSpecularShininessWidth=tex.texture.width;sp.multiSpecularShininessHeight=tex.texture.height;}
if(shader.getMultiVisibilityMap()){tex=x3dom.Utils.findTextureByName(s_gl.texture,"multiVisibilityMap");sp.multiVisibilityWidth=tex.texture.width;sp.multiVisibilityHeight=tex.texture.height;}}
else if(mat){sp.diffuseColor=mat._vf.diffuseColor.toGL();sp.specularColor=mat._vf.specularColor.toGL();sp.emissiveColor=mat._vf.emissiveColor.toGL();sp.shininess=mat._vf.shininess;sp.ambientIntensity=mat._vf.ambientIntensity;sp.transparency=mat._vf.transparency;if(x3dom.isa(mat,x3dom.nodeTypes.TwoSidedMaterial)){twoSidedMat=true;sp.backDiffuseColor=mat._vf.backDiffuseColor.toGL();sp.backSpecularColor=mat._vf.backSpecularColor.toGL();sp.backEmissiveColor=mat._vf.backEmissiveColor.toGL();sp.backShininess=mat._vf.backShininess;sp.backAmbientIntensity=mat._vf.backAmbientIntensity;sp.backTransparency=mat._vf.backTransparency;}}
else{sp.diffuseColor=[1.0,1.0,1.0];sp.specularColor=[0.0,0.0,0.0];sp.emissiveColor=[0.0,0.0,0.0];sp.shininess=0.0;sp.ambientIntensity=1.0;sp.transparency=0.0;}
if(shader){if(isUserDefinedShader){for(var fName in shader._vf){if(shader._vf.hasOwnProperty(fName)&&fName!=='language'){var field=shader._vf[fName];if(field!==undefined&&field!==null){if(field.toGL){sp[fName]=field.toGL();}
else{sp[fName]=field;}}}}}
else if(x3dom.isa(shader,x3dom.nodeTypes.CommonSurfaceShader)){s_gl.csshader=shader;}}
for(var p=0;p<numLights&&changed;p++){var light_transform=mat_view.mult(slights[p].getCurrentTransform());if(x3dom.isa(slights[p],x3dom.nodeTypes.DirectionalLight)){sp['light'+p+'_Type']=0.0;sp['light'+p+'_On']=(slights[p]._vf.on)?1.0:0.0;sp['light'+p+'_Color']=slights[p]._vf.color.toGL();sp['light'+p+'_Intensity']=slights[p]._vf.intensity;sp['light'+p+'_AmbientIntensity']=slights[p]._vf.ambientIntensity;sp['light'+p+'_Direction']=light_transform.multMatrixVec(slights[p]._vf.direction).toGL();sp['light'+p+'_Attenuation']=[1.0,1.0,1.0];sp['light'+p+'_Location']=[1.0,1.0,1.0];sp['light'+p+'_Radius']=0.0;sp['light'+p+'_BeamWidth']=0.0;sp['light'+p+'_CutOffAngle']=0.0;sp['light'+p+'_ShadowIntensity']=slights[p]._vf.shadowIntensity;}
else if(x3dom.isa(slights[p],x3dom.nodeTypes.PointLight)){sp['light'+p+'_Type']=1.0;sp['light'+p+'_On']=(slights[p]._vf.on)?1.0:0.0;sp['light'+p+'_Color']=slights[p]._vf.color.toGL();sp['light'+p+'_Intensity']=slights[p]._vf.intensity;sp['light'+p+'_AmbientIntensity']=slights[p]._vf.ambientIntensity;sp['light'+p+'_Direction']=[1.0,1.0,1.0];sp['light'+p+'_Attenuation']=slights[p]._vf.attenuation.toGL();sp['light'+p+'_Location']=light_transform.multMatrixPnt(slights[p]._vf.location).toGL();sp['light'+p+'_Radius']=slights[p]._vf.radius;sp['light'+p+'_BeamWidth']=0.0;sp['light'+p+'_CutOffAngle']=0.0;sp['light'+p+'_ShadowIntensity']=slights[p]._vf.shadowIntensity;}
else if(x3dom.isa(slights[p],x3dom.nodeTypes.SpotLight)){sp['light'+p+'_Type']=2.0;sp['light'+p+'_On']=(slights[p]._vf.on)?1.0:0.0;sp['light'+p+'_Color']=slights[p]._vf.color.toGL();sp['light'+p+'_Intensity']=slights[p]._vf.intensity;sp['light'+p+'_AmbientIntensity']=slights[p]._vf.ambientIntensity;sp['light'+p+'_Direction']=light_transform.multMatrixVec(slights[p]._vf.direction).toGL();sp['light'+p+'_Attenuation']=slights[p]._vf.attenuation.toGL();sp['light'+p+'_Location']=light_transform.multMatrixPnt(slights[p]._vf.location).toGL();sp['light'+p+'_Radius']=slights[p]._vf.radius;sp['light'+p+'_BeamWidth']=slights[p]._vf.beamWidth;sp['light'+p+'_CutOffAngle']=slights[p]._vf.cutOffAngle;sp['light'+p+'_ShadowIntensity']=slights[p]._vf.shadowIntensity;}}
var nav=scene.getNavigationInfo();if(nav._vf.headlight&&changed){numLights=(numLights)?numLights:0;sp['light'+numLights+'_Type']=0.0;sp['light'+numLights+'_On']=1.0;sp['light'+numLights+'_Color']=[1.0,1.0,1.0];sp['light'+numLights+'_Intensity']=1.0;sp['light'+numLights+'_AmbientIntensity']=0.0;sp['light'+numLights+'_Direction']=[0.0,0.0,-1.0];sp['light'+numLights+'_Attenuation']=[1.0,1.0,1.0];sp['light'+numLights+'_Location']=[1.0,1.0,1.0];sp['light'+numLights+'_Radius']=0.0;sp['light'+numLights+'_BeamWidth']=0.0;sp['light'+numLights+'_CutOffAngle']=0.0;sp['light'+numLights+'_ShadowIntensity']=0.0;}
if(shape._clipPlanes){for(var cp=0;cp<shape._clipPlanes.length;cp++){var clip_plane=shape._clipPlanes[cp].plane;var clip_trafo=shape._clipPlanes[cp].trafo;sp['clipPlane'+cp+'_Plane']=clip_trafo.multMatrixPlane(clip_plane._vf.plane).toGL();sp['clipPlane'+cp+'_CappingStrength']=clip_plane._vf.cappingStrength;sp['clipPlane'+cp+'_CappingColor']=clip_plane._vf.cappingColor.toGL();}}
var depthMode=s_app?s_app._cf.depthMode.node:null;if(depthMode)
{if(depthMode._vf.enableDepthTest)
{this.stateManager.enable(gl.DEPTH_TEST);this.stateManager.depthMask(!depthMode._vf.readOnly);this.stateManager.depthFunc(x3dom.Utils.depthFunc(gl,depthMode._vf.depthFunc));this.stateManager.depthRange(depthMode._vf.zNearRange,depthMode._vf.zFarRange);}
else
{this.stateManager.disable(gl.DEPTH_TEST);}}
else
{this.stateManager.enable(gl.DEPTH_TEST);this.stateManager.depthMask(true);this.stateManager.depthFunc(gl.LEQUAL);}
var blendMode=s_app?s_app._cf.blendMode.node:null;if(blendMode)
{var srcFactor=x3dom.Utils.blendFunc(gl,blendMode._vf.srcFactor);var destFactor=x3dom.Utils.blendFunc(gl,blendMode._vf.destFactor);if(srcFactor&&destFactor)
{this.stateManager.enable(gl.BLEND);this.stateManager.blendFuncSeparate(srcFactor,destFactor,gl.ONE,gl.ONE);this.stateManager.blendColor(blendMode._vf.color.r,blendMode._vf.color.g,blendMode._vf.color.b,1.0-blendMode._vf.colorTransparency);this.stateManager.blendEquation(x3dom.Utils.blendEquation(gl,blendMode._vf.equation));}
else
{this.stateManager.disable(gl.BLEND);}}
else
{this.stateManager.enable(gl.BLEND);this.stateManager.blendFuncSeparate(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA,gl.ONE,gl.ONE);}
var colorMaskMode=s_app?s_app._cf.colorMaskMode.node:null;if(colorMaskMode)
{this.stateManager.colorMask(colorMaskMode._vf.maskR,colorMaskMode._vf.maskG,colorMaskMode._vf.maskB,colorMaskMode._vf.maskA);}
else
{this.stateManager.colorMask(true,true,true,true);}
var lineProperties=s_app?s_app._cf.lineProperties.node:null;if(lineProperties)
{this.stateManager.lineWidth(lineProperties._vf.linewidthScaleFactor);}
else if(x3dom.Utils.needLineWidth)
{this.stateManager.lineWidth(1);}
if(shape.isSolid()&&!twoSidedMat){this.stateManager.enable(gl.CULL_FACE);if(shape.isCCW()){this.stateManager.frontFace(gl.CCW);}
else{this.stateManager.frontFace(gl.CW);}}
else{this.stateManager.disable(gl.CULL_FACE);}
var model_view=mat_view.mult(transform);var model_view_inv=model_view.inverse();sp.modelViewMatrix=model_view.toGL();sp.viewMatrix=mat_view.toGL();sp.normalMatrix=model_view_inv.transpose().toGL();sp.modelViewMatrixInverse=model_view_inv.toGL();sp.modelViewProjectionMatrix=mat_scene.mult(transform).toGL();if(isUserDefinedShader||shape._clipPlanes&&shape._clipPlanes.length)
{sp.viewMatrixInverse=mat_view.inverse().toGL();}
if(isUserDefinedShader){sp.projectionMatrix=mat_proj.toGL();sp.worldMatrix=transform.toGL();sp.worldInverseTranspose=transform.inverse().transpose().toGL();}
if(s_gl.popGeometry){this.updatePopState(drawable,s_geo,sp,s_gl,scene,model_view,viewarea,this.x3dElem.runtime.fps);}
for(var cnt=0,cnt_n=s_gl.texture.length;cnt<cnt_n;cnt++){tex=s_gl.texture[cnt];gl.activeTexture(gl.TEXTURE0+cnt);gl.bindTexture(tex.type,tex.texture);gl.texParameteri(tex.type,gl.TEXTURE_WRAP_S,tex.wrapS);gl.texParameteri(tex.type,gl.TEXTURE_WRAP_T,tex.wrapT);gl.texParameteri(tex.type,gl.TEXTURE_MAG_FILTER,tex.magFilter);gl.texParameteri(tex.type,gl.TEXTURE_MIN_FILTER,tex.minFilter);if(!shader||!isUserDefinedShader){if(!sp[tex.samplerName])
sp[tex.samplerName]=cnt;}}
if(s_app&&s_app._cf.textureTransform.node){var texTrafo=s_app.texTransformMatrix();sp.texTrafoMatrix=texTrafo.toGL();}
var attrib=null;var df,df_n=s_gl.dynamicFields.length;for(df=0;df<df_n;df++){attrib=s_gl.dynamicFields[df];if(sp[attrib.name]!==undefined){gl.bindBuffer(gl.ARRAY_BUFFER,attrib.buf);gl.vertexAttribPointer(sp[attrib.name],attrib.numComponents,gl.FLOAT,false,0,0);gl.enableVertexAttribArray(sp[attrib.name]);}}
var v,v_n,offset,q_n;var isParticleSet=false;if(x3dom.isa(s_geo,x3dom.nodeTypes.ParticleSet)){isParticleSet=true;}
if(s_gl.externalGeometry!=0)
{q_n=s_gl.primType.length;}
else
{q_n=s_gl.positions.length;}
for(var q=0;q<q_n;q++){var q6=6*q;if(!(sp.position!==undefined&&s_gl.buffers[q6+1]&&(s_gl.indexes[q]||s_gl.externalGeometry!=0)))
continue;if(s_gl.buffers[q6]){if(isParticleSet&&s_geo.drawOrder()!="any"){var indexArray,zPos=[];var pnts=s_geo._cf.coord.node.getPoints();var pn=(pnts.length==s_gl.indexes[q].length)?s_gl.indexes[q].length:0;for(var i=0;i<pn;i++){var center=model_view.multMatrixPnt(pnts[i]);zPos.push([i,center.z]);}
if(s_geo.drawOrder()=="backtofront")
zPos.sort(function(a,b){return a[1]-b[1];});else
zPos.sort(function(b,a){return a[1]-b[1];});for(i=0;i<pn;i++){shape._webgl.indexes[q][i]=zPos[i][0];}
if(x3dom.caps.INDEX_UINT&&(pn>65535)){indexArray=new Uint32Array(shape._webgl.indexes[q]);shape._webgl.indexType=gl.UNSIGNED_INT;}
else{indexArray=new Uint16Array(shape._webgl.indexes[q]);shape._webgl.indexType=gl.UNSIGNED_SHORT;}
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,s_gl.buffers[q6]);gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,indexArray,gl.DYNAMIC_DRAW);indexArray=null;}
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,s_gl.buffers[q6]);}
gl.bindBuffer(gl.ARRAY_BUFFER,s_gl.buffers[q6+1]);gl.vertexAttribPointer(sp.position,s_msh._numPosComponents,s_gl.coordType,false,shape._coordStrideOffset[0],shape._coordStrideOffset[1]);gl.enableVertexAttribArray(sp.position);if(sp.normal!==undefined&&s_gl.buffers[q6+2]){gl.bindBuffer(gl.ARRAY_BUFFER,s_gl.buffers[q6+2]);gl.vertexAttribPointer(sp.normal,s_msh._numNormComponents,s_gl.normalType,false,shape._normalStrideOffset[0],shape._normalStrideOffset[1]);gl.enableVertexAttribArray(sp.normal);}
if(sp.texcoord!==undefined&&s_gl.buffers[q6+3]){gl.bindBuffer(gl.ARRAY_BUFFER,s_gl.buffers[q6+3]);gl.vertexAttribPointer(sp.texcoord,s_msh._numTexComponents,s_gl.texCoordType,false,shape._texCoordStrideOffset[0],shape._texCoordStrideOffset[1]);gl.enableVertexAttribArray(sp.texcoord);}
if(sp.color!==undefined&&s_gl.buffers[q6+4]){gl.bindBuffer(gl.ARRAY_BUFFER,s_gl.buffers[q6+4]);gl.vertexAttribPointer(sp.color,s_msh._numColComponents,s_gl.colorType,false,shape._colorStrideOffset[0],shape._colorStrideOffset[1]);gl.enableVertexAttribArray(sp.color);}
if((sp.id!==undefined||sp.particleSize!==undefined)&&s_gl.buffers[q6+5]){gl.bindBuffer(gl.ARRAY_BUFFER,s_gl.buffers[q6+5]);if(s_gl.binaryGeometry!=0&&s_geo._vf.idsPerVertex==true)
{gl.vertexAttribPointer(sp.id,1,gl.FLOAT,false,4,0);gl.enableVertexAttribArray(sp.id);}
else if(isParticleSet)
{gl.vertexAttribPointer(sp.particleSize,3,gl.FLOAT,false,0,0);gl.enableVertexAttribArray(sp.particleSize);}}
if(s_gl.popGeometry!=0&&s_gl.buffers[q6+5]){gl.bindBuffer(gl.ARRAY_BUFFER,s_gl.buffers[q6+5]);gl.vertexAttribPointer(sp.PG_vertexID,1,gl.FLOAT,false,4,0);gl.enableVertexAttribArray(sp.PG_vertexID);}
var indOff,renderMode=viewarea.getRenderMode();if(renderMode>0){var polyMode=(renderMode==1)?gl.POINTS:gl.LINES;if(s_gl.binaryGeometry>0||s_gl.popGeometry>0){for(v=0,offset=0,v_n=s_geo._vf.vertexCount.length;v<v_n;v++){gl.drawElements(polyMode,s_geo._vf.vertexCount[v],s_gl.indexType,x3dom.Utils.getByteAwareOffset(offset,s_gl.indexType,gl));offset+=s_geo._vf.vertexCount[v];}}
else if(s_gl.binaryGeometry<0||s_gl.popGeometry<0||s_gl.imageGeometry){for(v=0,offset=0,v_n=s_geo._vf.vertexCount.length;v<v_n;v++){gl.drawArrays(polyMode,offset,s_geo._vf.vertexCount[v]);offset+=s_geo._vf.vertexCount[v];}}
else if(s_gl.externalGeometry==1)
{gl.drawElements(polyMode,s_gl.drawCount[q],s_gl.indexType,s_gl.indexOffset[q]);}
else if(s_gl.externalGeometry==-1)
{gl.drawArrays(polyMode,0,s_gl.drawCount[q]);}
else if(s_geo.hasIndexOffset()){indOff=shape.tessellationProperties();for(v=0,v_n=indOff.length;v<v_n;v++){gl.drawElements(polyMode,indOff[v].count,s_gl.indexType,indOff[v].offset*x3dom.Utils.getOffsetMultiplier(s_gl.indexType,gl));}}
else if(s_gl.indexes[q].length==0){gl.drawArrays(polyMode,0,s_gl.positions[q].length/3);}
else{gl.drawElements(polyMode,s_gl.indexes[q].length,s_gl.indexType,0);}}
else{if(s_gl.binaryGeometry>0||s_gl.popGeometry>0){for(v=0,offset=0,v_n=s_geo._vf.vertexCount.length;v<v_n;v++){gl.drawElements(s_gl.primType[v],s_geo._vf.vertexCount[v],s_gl.indexType,x3dom.Utils.getByteAwareOffset(offset,s_gl.indexType,gl));offset+=s_geo._vf.vertexCount[v];}}
else if(s_gl.binaryGeometry<0||s_gl.popGeometry<0||s_gl.imageGeometry){for(v=0,offset=0,v_n=s_geo._vf.vertexCount.length;v<v_n;v++){gl.drawArrays(s_gl.primType[v],offset,s_geo._vf.vertexCount[v]);offset+=s_geo._vf.vertexCount[v];}}
else if(s_gl.externalGeometry==1)
{gl.drawElements(s_gl.primType[q],s_gl.drawCount[q],s_gl.indexType,s_gl.indexOffset[q]);}
else if(s_gl.externalGeometry==-1)
{gl.drawArrays(s_gl.primType[q],0,s_gl.drawCount[q]);}
else if(s_geo.hasIndexOffset()){indOff=shape.tessellationProperties();for(v=0,v_n=indOff.length;v<v_n;v++){gl.drawElements(s_gl.primType,indOff[v].count,s_gl.indexType,indOff[v].offset*x3dom.Utils.getOffsetMultiplier(s_gl.indexType,gl));}}
else if(s_gl.indexes[q].length==0){gl.drawArrays(s_gl.primType,0,s_gl.positions[q].length/3);}
else{gl.drawElements(s_gl.primType,s_gl.indexes[q].length,s_gl.indexType,0);}}
gl.disableVertexAttribArray(sp.position);if(sp.normal!==undefined){gl.disableVertexAttribArray(sp.normal);}
if(sp.texcoord!==undefined){gl.disableVertexAttribArray(sp.texcoord);}
if(sp.color!==undefined){gl.disableVertexAttribArray(sp.color);}
if(s_gl.buffers[q6+5]){if(sp.id!==undefined)
gl.disableVertexAttribArray(sp.id);else if(sp.particleSize!==undefined)
gl.disableVertexAttribArray(sp.particleSize);}
if(s_gl.popGeometry!=0&&sp.PG_vertexID!==undefined){gl.disableVertexAttribArray(sp.PG_vertexID);}}
for(df=0;df<df_n;df++){attrib=s_gl.dynamicFields[df];if(sp[attrib.name]!==undefined){gl.disableVertexAttribArray(sp[attrib.name]);}}
if(s_gl.imageGeometry){v_n=s_geo._vf.vertexCount.length;this.numDrawCalls+=v_n;for(v=0;v<v_n;v++){if(s_gl.primType[v]==gl.TRIANGLE_STRIP)
this.numFaces+=(s_geo._vf.vertexCount[v]-2);else
this.numFaces+=(s_geo._vf.vertexCount[v]/3);this.numCoords+=s_geo._vf.vertexCount[v];}}
else{this.numCoords+=s_msh._numCoords;this.numFaces+=s_msh._numFaces;if(s_gl.binaryGeometry||s_gl.popGeometry){this.numDrawCalls+=s_geo._vf.vertexCount.length;}
else if(s_geo.hasIndexOffset()){this.numDrawCalls+=shape.tessellationProperties().length;}
else{this.numDrawCalls+=q_n;}}
if(depthMode){this.stateManager.enable(gl.DEPTH_TEST);this.stateManager.depthMask(true);this.stateManager.depthFunc(gl.LEQUAL);this.stateManager.depthRange(0,1);}
if(blendMode){this.stateManager.enable(gl.BLEND);this.stateManager.blendFuncSeparate(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA,gl.ONE,gl.ONE);this.stateManager.blendColor(1,1,1,1);this.stateManager.blendEquation(gl.FUNC_ADD);}
if(colorMaskMode){this.stateManager.colorMask(true,true,true,true);}
if(lineProperties){this.stateManager.lineWidth(1);}
var s_gl_tex=s_gl.texture;cnt_n=s_gl_tex?s_gl_tex.length:0;for(cnt=0;cnt<cnt_n;cnt++){if(!s_gl_tex[cnt])
continue;if(s_app&&s_app._cf.texture.node){tex=s_app._cf.texture.node.getTexture(cnt);gl.activeTexture(gl.TEXTURE0+cnt);if(x3dom.isa(tex,x3dom.nodeTypes.X3DEnvironmentTextureNode)){gl.bindTexture(gl.TEXTURE_CUBE_MAP,null);}
else{gl.bindTexture(gl.TEXTURE_2D,null);}}}};Context.prototype.updatePopState=function(drawable,popGeo,sp,s_gl,scene,model_view,viewarea,currFps)
{var tol=x3dom.nodeTypes.PopGeometry.ErrorToleranceFactor*popGeo._vf.precisionFactor;if(currFps<=1||viewarea.isMovingOrAnimating()){tol*=x3dom.nodeTypes.PopGeometry.PrecisionFactorOnMove;}
var currentLOD=16;if(tol>0){var viewpoint=scene.getViewpoint();var imgPlaneHeightAtDistOne=viewpoint.getImgPlaneHeightAtDistOne();var near=viewpoint.getNear();var center=model_view.multMatrixPnt(popGeo._vf.position);var tightRad=model_view.multMatrixVec(popGeo._vf.size).length()*0.5;var largestRad=model_view.multMatrixVec(popGeo._vf.maxBBSize).length()*0.5;var dist=Math.max(-center.z-tightRad,near);var projPixelLength=dist*(imgPlaneHeightAtDistOne/viewarea._height);var arg=(2*largestRad)/(tol*projPixelLength);currentLOD=Math.ceil(Math.log(arg)/0.693147180559945);currentLOD=(currentLOD<1)?1:((currentLOD>16)?16:currentLOD);}
var minPrec=popGeo._vf.minPrecisionLevel,maxPrec=popGeo._vf.maxPrecisionLevel;currentLOD=(minPrec!=-1&&currentLOD<minPrec)?minPrec:currentLOD;currentLOD=(maxPrec!=-1&&currentLOD>maxPrec)?maxPrec:currentLOD;var currentLOD_min=(s_gl.levelsAvailable<currentLOD)?s_gl.levelsAvailable:currentLOD;currentLOD=currentLOD_min;if(tol<=1)
currentLOD=(currentLOD==popGeo.getNumLevels())?16:currentLOD;var hasIndex=popGeo._vf.indexedRendering;var p_msh=popGeo._mesh;p_msh._numCoords=0;p_msh._numFaces=0;for(var i=0;i<currentLOD_min;++i){var numVerticesAtLevel_i=s_gl.numVerticesAtLevel[i];p_msh._numCoords+=numVerticesAtLevel_i;p_msh._numFaces+=(hasIndex?popGeo.getNumIndicesByLevel(i):numVerticesAtLevel_i)/3;}
x3dom.nodeTypes.PopGeometry.numRenderedVerts+=p_msh._numCoords;x3dom.nodeTypes.PopGeometry.numRenderedTris+=p_msh._numFaces;p_msh.currentLOD=currentLOD;popGeo.adaptVertexCount(hasIndex?p_msh._numFaces*3:p_msh._numCoords);sp.PG_maxBBSize=popGeo._vf.maxBBSize.toGL();sp.PG_bbMin=popGeo._bbMinBySize;sp.PG_numAnchorVertices=popGeo._vf.numAnchorVertices;sp.PG_bbMaxModF=popGeo._vf.bbMaxModF.toGL();sp.PG_bboxShiftVec=popGeo._vf.bbShiftVec.toGL();sp.PG_precisionLevel=currentLOD;sp.PG_powPrecision=x3dom.nodeTypes.PopGeometry.powLUT[currentLOD-1];};Context.prototype.pickValue=function(viewarea,x,y,buttonState,viewMat,sceneMat)
{x3dom.Utils.startMeasure("picking");var scene=viewarea._scene;var gl=this.ctx3d;if(!gl||!scene||!scene._webgl||!scene.drawableCollection){return false;}
var pm=scene._vf.pickMode.toLowerCase();var pickMode=0;switch(pm){case"box":return false;case"idbuf":pickMode=0;break;case"idbuf24":pickMode=3;break;case"idbufid":pickMode=4;break;case"color":pickMode=1;break;case"texcoord":pickMode=2;break;}
var mat_view,mat_scene;if(arguments.length>4){mat_view=viewMat;mat_scene=sceneMat;}
else{mat_view=viewarea._last_mat_view;mat_scene=viewarea._last_mat_scene;}
var min=x3dom.fields.SFVec3f.copy(scene._lastMin);var max=x3dom.fields.SFVec3f.copy(scene._lastMax);var from=mat_view.inverse().e3();var _min=x3dom.fields.SFVec3f.copy(from);var _max=x3dom.fields.SFVec3f.copy(from);if(_min.x>min.x){_min.x=min.x;}
if(_min.y>min.y){_min.y=min.y;}
if(_min.z>min.z){_min.z=min.z;}
if(_max.x<max.x){_max.x=max.x;}
if(_max.y<max.y){_max.y=max.y;}
if(_max.z<max.z){_max.z=max.z;}
scene._lastMin.setValues(_min);scene._lastMax.setValues(_max);var sceneSize=scene._lastMax.subtract(scene._lastMin).length();var cctowc=viewarea.getCCtoWCMatrix();scene._lastMin.setValues(min);scene._lastMax.setValues(max);var baseID=x3dom.nodeTypes.Shape.objectID+2;this.renderPickingPass(gl,scene,mat_view,mat_scene,from,sceneSize,pickMode,x,y,2,2);var pixelData=scene._webgl.fboPick.pixelData;if(pixelData&&pixelData.length)
{var pickPos=new x3dom.fields.SFVec3f(0,0,0);var pickNorm=new x3dom.fields.SFVec3f(0,0,1);var index=0;var objId=pixelData[index+3],shapeId;var pixelOffset=1.0/scene._webgl.pickScale;var denom=1.0/256.0;var dist,line,lineoff,right,up;if(pickMode==0){objId+=256*pixelData[index+2];dist=(pixelData[index]/255.0)*denom+
(pixelData[index+1]/255.0);line=viewarea.calcViewRay(x,y,cctowc);pickPos=line.pos.add(line.dir.multiply(dist*sceneSize));index=4;dist=(pixelData[index]/255.0)*denom+
(pixelData[index+1]/255.0);lineoff=viewarea.calcViewRay(x+pixelOffset,y,cctowc);right=lineoff.pos.add(lineoff.dir.multiply(dist*sceneSize));right=right.subtract(pickPos).normalize();index=8;dist=(pixelData[index]/255.0)*denom+
(pixelData[index+1]/255.0);lineoff=viewarea.calcViewRay(x,y-pixelOffset,cctowc);up=lineoff.pos.add(lineoff.dir.multiply(dist*sceneSize));up=up.subtract(pickPos).normalize();pickNorm=right.cross(up).normalize();}
else if(pickMode==3){objId+=256*pixelData[index+2]+
65536*pixelData[index+1];dist=pixelData[index]/255.0;line=viewarea.calcViewRay(x,y,cctowc);pickPos=line.pos.add(line.dir.multiply(dist*sceneSize));index=4;dist=pixelData[index]/255.0;lineoff=viewarea.calcViewRay(x+pixelOffset,y,cctowc);right=lineoff.pos.add(lineoff.dir.multiply(dist*sceneSize));right=right.subtract(pickPos).normalize();index=8;dist=pixelData[index]/255.0;lineoff=viewarea.calcViewRay(x,y-pixelOffset,cctowc);up=lineoff.pos.add(lineoff.dir.multiply(dist*sceneSize));up=up.subtract(pickPos).normalize();pickNorm=right.cross(up).normalize();}
else if(pickMode==4){objId+=256*pixelData[index+2];shapeId=pixelData[index+1];shapeId+=256*pixelData[index];if(objId==0&&(shapeId>0&&shapeId<baseID)){objId=shapeId;}}
else{pickPos.x=pixelData[index];pickPos.y=pixelData[index+1];pickPos.z=pixelData[index+2];}
var eventType="shadowObjectIdChanged";var shadowObjectIdChanged,event;var button=Math.max(buttonState>>>8,buttonState&255);if(objId>=baseID){objId-=baseID;var hitObject;if(pickMode!=4){viewarea._pickingInfo.pickPos=pickPos;viewarea._pick.setValues(pickPos);viewarea._pickingInfo.pickNorm=pickNorm;viewarea._pickNorm.setValues(pickNorm);viewarea._pickingInfo.pickObj=null;viewarea._pickingInfo.lastClickObj=null;hitObject=scene._xmlNode;}
else{viewarea._pickingInfo.pickObj=x3dom.nodeTypes.Shape.idMap.nodeID[shapeId];hitObject=viewarea._pickingInfo.pickObj._xmlNode;}
if(scene._multiPartMap){var mp,multiPart;for(mp=0;mp<scene._multiPartMap.multiParts.length;mp++)
{multiPart=scene._multiPartMap.multiParts[mp];if(objId>=multiPart._minId&&objId<=multiPart._maxId)
{hitObject=multiPart._xmlNode;event={target:multiPart._xmlNode,button:button,mouseup:((buttonState>>>8)>0),layerX:x,layerY:y,pickedId:objId,worldX:pickPos.x,worldY:pickPos.y,worldZ:pickPos.z,normalX:pickNorm.x,normalY:pickNorm.y,normalZ:pickNorm.z,hitPnt:pickPos.toGL(),hitObject:hitObject,cancelBubble:false,stopPropagation:function(){this.cancelBubble=true;},preventDefault:function(){this.cancelBubble=true;}};multiPart.handleEvents(event);}
else
{event={target:multiPart._xmlNode,button:button,mouseup:((buttonState>>>8)>0),layerX:x,layerY:y,pickedId:-1,cancelBubble:false,stopPropagation:function(){this.cancelBubble=true;},preventDefault:function(){this.cancelBubble=true;}};multiPart.handleEvents(event);}}}
shadowObjectIdChanged=(viewarea._pickingInfo.shadowObjectId!=objId);viewarea._pickingInfo.lastShadowObjectId=viewarea._pickingInfo.shadowObjectId;viewarea._pickingInfo.shadowObjectId=objId;if((shadowObjectIdChanged||button)&&scene._xmlNode&&(scene._xmlNode["on"+eventType]||scene._xmlNode.hasAttribute("on"+eventType)||scene._listeners[eventType]))
{event={target:scene._xmlNode,type:eventType,button:button,mouseup:((buttonState>>>8)>0),layerX:x,layerY:y,shadowObjectId:objId,worldX:pickPos.x,worldY:pickPos.y,worldZ:pickPos.z,normalX:pickNorm.x,normalY:pickNorm.y,normalZ:pickNorm.z,hitPnt:pickPos.toGL(),hitObject:hitObject,cancelBubble:false,stopPropagation:function(){this.cancelBubble=true;},preventDefault:function(){this.cancelBubble=true;}};scene.callEvtHandler(("on"+eventType),event);}
if(scene._shadowIdMap&&scene._shadowIdMap.mapping&&objId<scene._shadowIdMap.mapping.length){var shIds=scene._shadowIdMap.mapping[objId].usage;var n,c,shObj;if(!line){line=viewarea.calcViewRay(x,y,cctowc);}
for(c=0;c<shIds.length;c++){shObj=scene._nameSpace.defMap[shIds[c]];if(shObj&&shObj.doIntersect(line)){viewarea._pickingInfo.pickObj=shObj;break;}}
for(n=0;n<scene._nameSpace.childSpaces.length;n++)
{for(c=0;c<shIds.length;c++){shObj=scene._nameSpace.childSpaces[n].defMap[shIds[c]];if(shObj&&shObj.doIntersect(line)){viewarea._pickingInfo.pickObj=shObj;break;}}}}}
else{if(scene._multiPartMap){for(mp=0;mp<scene._multiPartMap.multiParts.length;mp++)
{multiPart=scene._multiPartMap.multiParts[mp];event={target:multiPart._xmlNode,button:button,mouseup:((buttonState>>>8)>0),layerX:x,layerY:y,pickedId:-1,cancelBubble:false,stopPropagation:function(){this.cancelBubble=true;},preventDefault:function(){this.cancelBubble=true;}};multiPart.handleEvents(event);}}
shadowObjectIdChanged=(viewarea._pickingInfo.shadowObjectId!=-1);viewarea._pickingInfo.shadowObjectId=-1;if(shadowObjectIdChanged&&scene._xmlNode&&(scene._xmlNode["on"+eventType]||scene._xmlNode.hasAttribute("on"+eventType)||scene._listeners[eventType]))
{event={target:scene._xmlNode,type:eventType,button:button,mouseup:((buttonState>>>8)>0),layerX:x,layerY:y,shadowObjectId:viewarea._pickingInfo.shadowObjectId,cancelBubble:false,stopPropagation:function(){this.cancelBubble=true;},preventDefault:function(){this.cancelBubble=true;}};scene.callEvtHandler(("on"+eventType),event);}
if(objId>0){viewarea._pickingInfo.pickPos=pickPos;viewarea._pickingInfo.pickNorm=pickNorm;viewarea._pickingInfo.pickObj=x3dom.nodeTypes.Shape.idMap.nodeID[objId];}
else{viewarea._pickingInfo.pickObj=null;viewarea._pickingInfo.lastClickObj=null;}}}
var pickTime=x3dom.Utils.stopMeasure("picking");this.x3dElem.runtime.addMeasurement('PICKING',pickTime);return true;};Context.prototype.pickRect=function(viewarea,x1,y1,x2,y2)
{var gl=this.ctx3d;var scene=viewarea?viewarea._scene:null;if(!gl||!scene||!scene._webgl||!scene.drawableCollection)
return false;var from=viewarea._last_mat_view.inverse().e3();var sceneSize=scene._lastMax.subtract(scene._lastMin).length();var x=(x1<=x2)?x1:x2;var y=(y1>=y2)?y1:y2;var width=(1+Math.abs(x2-x1))*scene._webgl.pickScale;var height=(1+Math.abs(y2-y1))*scene._webgl.pickScale;this.renderPickingPass(gl,scene,viewarea._last_mat_view,viewarea._last_mat_scene,from,sceneSize,0,x,y,(width<1)?1:width,(height<1)?1:height);var index;var pickedObjects=[];for(index=0;scene._webgl.fboPick.pixelData&&index<scene._webgl.fboPick.pixelData.length;index+=4){var objId=scene._webgl.fboPick.pixelData[index+3]+
scene._webgl.fboPick.pixelData[index+2]*256;if(objId>0)
pickedObjects.push(objId);}
pickedObjects.sort();var pickedObjectsTemp=(function(arr){var a=[],l=arr.length;for(var i=0;i<l;i++){for(var j=i+1;j<l;j++){if(arr[i]===arr[j])
j=++i;}
a.push(arr[i]);}
return a;})(pickedObjects);pickedObjects=pickedObjectsTemp;var pickedNode,pickedNodes=[];var hitObject;var baseID=x3dom.nodeTypes.Shape.objectID+2;for(index=0;index<pickedObjects.length;index++){objId=pickedObjects[index];if(objId>=baseID)
{objId-=baseID;if(scene._multiPartMap){var mp,multiPart,colorMap,emissiveMap,specularMap,visibilityMap,partID;for(mp=0;mp<scene._multiPartMap.multiParts.length;mp++){multiPart=scene._multiPartMap.multiParts[mp];colorMap=multiPart._inlineNamespace.defMap["MultiMaterial_ColorMap"];emissiveMap=multiPart._inlineNamespace.defMap["MultiMaterial_EmissiveMap"];specularMap=multiPart._inlineNamespace.defMap["MultiMaterial_SpecularMap"];visibilityMap=multiPart._inlineNamespace.defMap["MultiMaterial_VisibilityMap"];if(objId>=multiPart._minId&&objId<=multiPart._maxId){partID=multiPart._idMap.mapping[objId-multiPart._minId].name;hitObject=new x3dom.Parts(multiPart,[objId],colorMap,emissiveMap,specularMap,visibilityMap);pickedNode={"partID":partID,"part":hitObject};pickedNodes.push(pickedNode);}}}}
else
{hitObject=x3dom.nodeTypes.Shape.idMap.nodeID[objId];hitObject=(hitObject&&hitObject._xmlNode)?hitObject._xmlNode:null;if(hitObject)
pickedNodes.push(hitObject);}}
return pickedNodes;};Context.prototype.renderScene=function(viewarea)
{var gl=this.ctx3d;var scene=viewarea._scene;if(gl===null||scene===null){return;}
var rentex=viewarea._doc._nodeBag.renderTextures;var rt_tex,rtl_i,rtl_n=rentex.length;var texProp=null;var type=gl.UNSIGNED_BYTE;var shadowType=gl.UNSIGNED_BYTE;var nearestFilt=false;if(x3dom.caps.FP_TEXTURES&&!x3dom.caps.MOBILE){type=gl.FLOAT;shadowType=gl.FLOAT;if(!x3dom.caps.FPL_TEXTURES){nearestFilt=true;}}
var shadowedLights,numShadowMaps;var i,j,n,size,sizeAvailable;var texType,refinementPos;var vertices=[-1,-1,1,-1,-1,1,-1,1,1,-1,1,1];scene.updateVolume();if(!scene._webgl)
{scene._webgl={};this.setupFgnds(gl,scene);scene._webgl.pickScale=0.5;scene._webgl._currFboWidth=Math.round(this.canvas.width*scene._webgl.pickScale);scene._webgl._currFboHeight=Math.round(this.canvas.height*scene._webgl.pickScale);scene._webgl.fboPick=x3dom.Utils.initFBO(gl,scene._webgl._currFboWidth,scene._webgl._currFboHeight,gl.UNSIGNED_BYTE,false,true);scene._webgl.fboPick.pixelData=null;scene._webgl.normalShader=this.cache.getShader(gl,x3dom.shader.NORMAL);scene._webgl.fboShadow=[];shadowedLights=viewarea.getShadowedLights();n=shadowedLights.length;for(i=0;i<n;i++)
{size=shadowedLights[i]._vf.shadowMapSize;if(!x3dom.isa(shadowedLights[i],x3dom.nodeTypes.PointLight))
numShadowMaps=Math.max(1,Math.min(shadowedLights[i]._vf.shadowCascades,6));else
numShadowMaps=6;scene._webgl.fboShadow[i]=[];for(j=0;j<numShadowMaps;j++)
scene._webgl.fboShadow[i][j]=x3dom.Utils.initFBO(gl,size,size,shadowType,false,true);}
if(scene._webgl.fboShadow.length>0||x3dom.SSAO.isEnabled(scene))
scene._webgl.fboScene=x3dom.Utils.initFBO(gl,this.canvas.width,this.canvas.height,shadowType,false,true);scene._webgl.fboBlur=[];for(i=0;i<n;i++)
{size=scene._webgl.fboShadow[i][0].height;sizeAvailable=false;for(j=0;j<scene._webgl.fboBlur.length;j++){if(size==scene._webgl.fboBlur[j].height)
sizeAvailable=true;}
if(!sizeAvailable)
scene._webgl.fboBlur[scene._webgl.fboBlur.length]=x3dom.Utils.initFBO(gl,size,size,shadowType,false,true);}
scene._webgl.ppBuffer=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,scene._webgl.ppBuffer);gl.bufferData(gl.ARRAY_BUFFER,new Float32Array(vertices),gl.STATIC_DRAW);scene._webgl.shadowShader=this.cache.getShader(gl,x3dom.shader.SHADOW);scene._webgl.refinement={stamps:new Array(2),positionBuffer:gl.createBuffer()};gl.bindBuffer(gl.ARRAY_BUFFER,scene._webgl.refinement.positionBuffer);gl.bufferData(gl.ARRAY_BUFFER,new Float32Array(vertices),gl.STATIC_DRAW);for(rtl_i=0;rtl_i<rtl_n;rtl_i++){rt_tex=rentex[rtl_i];texProp=rt_tex._cf.textureProperties.node;texType=rt_tex.requirePingPong()?gl.UNSIGNED_BYTE:type;rt_tex._webgl={};rt_tex._webgl.fbo=x3dom.Utils.initFBO(gl,rt_tex._vf.dimensions[0],rt_tex._vf.dimensions[1],texType,(texProp&&texProp._vf.generateMipMaps),!rt_tex.requirePingPong());rt_tex._cleanupGLObjects=function(retainTex){if(!retainTex)
gl.deleteTexture(this._webgl.fbo.tex);if(this._webgl.fbo.rbo)
gl.deleteRenderbuffer(this._webgl.fbo.rbo);gl.bindFramebuffer(gl.FRAMEBUFFER,null);gl.deleteFramebuffer(this._webgl.fbo.fbo);this._webgl.fbo.rbo=null;this._webgl.fbo.fbo=null;};if(rt_tex.requirePingPong()){refinementPos=rt_tex._vf.dimensions[0]+"x"+rt_tex._vf.dimensions[1];if(scene._webgl.refinement[refinementPos]===undefined){scene._webgl.refinement[refinementPos]=x3dom.Utils.initFBO(gl,rt_tex._vf.dimensions[0],rt_tex._vf.dimensions[1],texType,false,false);}
rt_tex._webgl.texture=null;}}
viewarea._last_mat_view=x3dom.fields.SFMatrix4f.identity();viewarea._last_mat_proj=x3dom.fields.SFMatrix4f.identity();viewarea._last_mat_scene=x3dom.fields.SFMatrix4f.identity();this._calledViewpointChangedHandler=false;}
else
{var fboWidth=Math.round(this.canvas.width*scene._webgl.pickScale);var fboHeight=Math.round(this.canvas.height*scene._webgl.pickScale);if(scene._webgl._currFboWidth!==fboWidth||scene._webgl._currFboHeight!==fboHeight){scene._webgl._currFboWidth=fboWidth;scene._webgl._currFboHeight=fboHeight;scene._webgl.fboPick=x3dom.Utils.initFBO(gl,fboWidth,fboHeight,scene._webgl.fboPick.type,false,true);scene._webgl.fboPick.pixelData=null;x3dom.debug.logInfo("Refreshed picking FBO to size ("+fboWidth+", "+fboHeight+")");}
for(rtl_i=0;rtl_i<rtl_n;rtl_i++){rt_tex=rentex[rtl_i];if(rt_tex._webgl&&rt_tex._webgl.fbo&&rt_tex._webgl.fbo.width==rt_tex._vf.dimensions[0]&&rt_tex._webgl.fbo.height==rt_tex._vf.dimensions[1])
continue;rt_tex.invalidateGLObject();if(rt_tex._cleanupGLObjects)
rt_tex._cleanupGLObjects();else
rt_tex._cleanupGLObjects=function(retainTex){if(!retainTex)
gl.deleteTexture(this._webgl.fbo.tex);if(this._webgl.fbo.rbo)
gl.deleteRenderbuffer(this._webgl.fbo.rbo);gl.bindFramebuffer(gl.FRAMEBUFFER,null);gl.deleteFramebuffer(this._webgl.fbo.fbo);this._webgl.fbo.rbo=null;this._webgl.fbo.fbo=null;};texProp=rt_tex._cf.textureProperties.node;texType=rt_tex.requirePingPong()?gl.UNSIGNED_BYTE:type;rt_tex._webgl={};rt_tex._webgl.fbo=x3dom.Utils.initFBO(gl,rt_tex._vf.dimensions[0],rt_tex._vf.dimensions[1],texType,(texProp&&texProp._vf.generateMipMaps),!rt_tex.requirePingPong());if(rt_tex.requirePingPong()){refinementPos=rt_tex._vf.dimensions[0]+"x"+rt_tex._vf.dimensions[1];if(scene._webgl.refinement[refinementPos]===undefined){scene._webgl.refinement[refinementPos]=x3dom.Utils.initFBO(gl,rt_tex._vf.dimensions[0],rt_tex._vf.dimensions[1],texType,false,false);}
rt_tex._webgl.texture=null;}
x3dom.debug.logInfo("Init/resize RenderedTexture_"+rtl_i+" to size "+
rt_tex._vf.dimensions[0]+" x "+rt_tex._vf.dimensions[1]);}
shadowedLights=viewarea.getShadowedLights();n=shadowedLights.length;for(i=0;i<n;i++){size=shadowedLights[i]._vf.shadowMapSize;if(!x3dom.isa(shadowedLights[i],x3dom.nodeTypes.PointLight))
numShadowMaps=Math.max(1,Math.min(shadowedLights[i]._vf.shadowCascades,6));else
numShadowMaps=6;if(typeof scene._webgl.fboShadow[i]==="undefined"||scene._webgl.fboShadow[i].length!=numShadowMaps||scene._webgl.fboShadow[i][0].height!=size){scene._webgl.fboShadow[i]=[];for(j=0;j<numShadowMaps;j++){scene._webgl.fboShadow[i][j]=x3dom.Utils.initFBO(gl,size,size,shadowType,false,true);}}}
for(i=0;i<n;i++){size=scene._webgl.fboShadow[i][0].height;sizeAvailable=false;for(j=0;j<scene._webgl.fboBlur.length;j++){if(size==scene._webgl.fboBlur[j].height)
sizeAvailable=true;}
if(!sizeAvailable)
scene._webgl.fboBlur[scene._webgl.fboBlur.length]=x3dom.Utils.initFBO(gl,size,size,shadowType,false,true);}
if((x3dom.SSAO.isEnabled(scene)||scene._webgl.fboShadow.length>0)&&typeof scene._webgl.fboScene=="undefined"||scene._webgl.fboScene&&(this.canvas.width!=scene._webgl.fboScene.width||this.canvas.height!=scene._webgl.fboScene.height)){scene._webgl.fboScene=x3dom.Utils.initFBO(gl,this.canvas.width,this.canvas.height,shadowType,false,true);}}
var env=scene.getEnvironment();env.checkSanity();var bgnd=scene.getBackground();this.setupScene(gl,bgnd);this.numFaces=0;this.numCoords=0;this.numDrawCalls=0;var mat_proj=viewarea.getProjectionMatrix();var mat_view=viewarea.getViewMatrix();if(!this._calledViewpointChangedHandler||!viewarea._last_mat_view.equals(mat_view)){var e_viewpoint=scene.getViewpoint();var e_eventType="viewpointChanged";try{if(e_viewpoint._xmlNode&&(e_viewpoint._xmlNode["on"+e_eventType]||e_viewpoint._xmlNode.hasAttribute("on"+e_eventType)||e_viewpoint._listeners[e_eventType])){var e_viewtrafo=e_viewpoint.getCurrentTransform();e_viewtrafo=e_viewtrafo.inverse().mult(mat_view);var e_mat=e_viewtrafo.inverse();var e_rotation=new x3dom.fields.Quaternion(0,0,1,0);e_rotation.setValue(e_mat);var e_translation=e_mat.e3();var e_event={target:e_viewpoint._xmlNode,type:e_eventType,matrix:e_viewtrafo,position:e_translation,orientation:e_rotation.toAxisAngle(),cancelBubble:false,stopPropagation:function(){this.cancelBubble=true;},preventDefault:function(){this.cancelBubble=true;}};e_viewpoint.callEvtHandler(("on"+e_eventType),e_event);this._calledViewpointChangedHandler=true;}}
catch(e_e){x3dom.debug.logException(e_e);}}
viewarea._last_mat_view=mat_view;viewarea._last_mat_proj=mat_proj;var mat_scene=mat_proj.mult(mat_view);viewarea._last_mat_scene=mat_scene;scene.drawableCollection=null;if(!scene.drawableCollection)
{var drawableCollectionConfig={viewArea:viewarea,sortTrans:env._vf.sortTrans,viewMatrix:mat_view,projMatrix:mat_proj,sceneMatrix:mat_scene,frustumCulling:true,smallFeatureThreshold:env._smallFeatureThreshold,context:this,gl:gl};scene.drawableCollection=new x3dom.DrawableCollection(drawableCollectionConfig);x3dom.Utils.startMeasure('traverse');scene.collectDrawableObjects(x3dom.fields.SFMatrix4f.identity(),scene.drawableCollection,true,false,0,[]);var traverseTime=x3dom.Utils.stopMeasure('traverse');this.x3dElem.runtime.addMeasurement('TRAVERSE',traverseTime);}
x3dom.Utils.startMeasure('sorting');scene.drawableCollection.sort();var sortTime=x3dom.Utils.stopMeasure('sorting');this.x3dElem.runtime.addMeasurement('SORT',sortTime);var slights=viewarea.getLights();var numLights=slights.length;var mat_light;var WCToLCMatrices=[];var lMatrices=[];var shadowCount=0;x3dom.Utils.startMeasure('shadow');for(var p=0;p<numLights;p++){if(slights[p]._vf.shadowIntensity>0.0){var lightMatrix=viewarea.getLightMatrix()[p];shadowMaps=scene._webgl.fboShadow[shadowCount];var offset=Math.max(0.0,Math.min(1.0,slights[p]._vf.shadowOffset));if(!x3dom.isa(slights[p],x3dom.nodeTypes.PointLight)){var numCascades=Math.max(1,Math.min(slights[p]._vf.shadowCascades,6));mat_light=viewarea.getWCtoLCMatricesCascaded(lightMatrix,slights[p],mat_proj);for(i=0;i<numCascades;i++){this.renderShadowPass(gl,viewarea,mat_light[i],mat_view,shadowMaps[i],offset,false);}}
else{mat_light=viewarea.getWCtoLCMatricesPointLight(lightMatrix,slights[p],mat_proj);for(i=0;i<6;i++){this.renderShadowPass(gl,viewarea,mat_light[i],mat_view,shadowMaps[i],offset,false);}}
shadowCount++;WCToLCMatrices[WCToLCMatrices.length]=mat_light;lMatrices[lMatrices.length]=lightMatrix;}}
if(shadowCount>0||x3dom.SSAO.isEnabled(scene)){this.renderShadowPass(gl,viewarea,mat_scene,mat_view,scene._webgl.fboScene,0.0,true);var shadowTime=x3dom.Utils.stopMeasure('shadow');this.x3dElem.runtime.addMeasurement('SHADOW',shadowTime);}
else{this.x3dElem.runtime.removeMeasurement('SHADOW');}
mat_light=viewarea.getWCtoLCMatrix(viewarea.getLightMatrix()[0]);for(rtl_i=0;rtl_i<rtl_n;rtl_i++){this.renderRTPass(gl,viewarea,rentex[rtl_i]);}
x3dom.Utils.startMeasure('render');this.stateManager.viewport(0,0,this.canvas.width,this.canvas.height);bgnd._webgl.render(gl,mat_view,mat_proj);x3dom.nodeTypes.PopGeometry.numRenderedVerts=0;x3dom.nodeTypes.PopGeometry.numRenderedTris=0;n=scene.drawableCollection.length;if(env._vf.smallFeatureCulling&&env._lowPriorityThreshold<1&&viewarea.isMovingOrAnimating()){n=Math.floor(n*env._lowPriorityThreshold);if(!n&&scene.drawableCollection.length)
n=1;}
this.stateManager.unsetProgram();for(i=0;i<n;i++){var drawable=scene.drawableCollection.get(i);this.renderShape(drawable,viewarea,slights,numLights,mat_view,mat_scene,mat_light,mat_proj,gl);}
if(shadowCount>0)
this.renderShadows(gl,viewarea,shadowedLights,WCToLCMatrices,lMatrices,mat_view,mat_proj,mat_scene);this.stateManager.disable(gl.BLEND);this.stateManager.disable(gl.DEPTH_TEST);viewarea._numRenderedNodes=n;if(x3dom.SSAO.isEnabled(scene))
x3dom.SSAO.renderSSAO(this.stateManager,gl,scene,this.canvas);if(viewarea._visDbgBuf!==undefined&&viewarea._visDbgBuf)
{var pm=scene._vf.pickMode.toLowerCase();if(pm.indexOf("idbuf")==0||pm=="color"||pm=="texcoord"){this.stateManager.viewport(0,3*this.canvas.height/4,this.canvas.width/4,this.canvas.height/4);scene._fgnd._webgl.render(gl,scene._webgl.fboPick.tex);}
if(shadowCount>0||x3dom.SSAO.isEnabled(scene)){this.stateManager.viewport(this.canvas.width/4,3*this.canvas.height/4,this.canvas.width/4,this.canvas.height/4);scene._fgnd._webgl.render(gl,scene._webgl.fboScene.tex);}
var row=3,col=2;for(i=0;i<shadowCount;i++){var shadowMaps=scene._webgl.fboShadow[i];for(j=0;j<shadowMaps.length;j++){this.stateManager.viewport(col*this.canvas.width/4,row*this.canvas.height/4,this.canvas.width/4,this.canvas.height/4);scene._fgnd._webgl.render(gl,shadowMaps[j].tex);if(col<2){col++;}else{col=0;row--;}}}
for(rtl_i=0;rtl_i<rtl_n;rtl_i++){rt_tex=rentex[rtl_i];if(!rt_tex._webgl.fbo.fbo)
continue;this.stateManager.viewport(rtl_i*this.canvas.width/8,5*this.canvas.height/8,this.canvas.width/8,this.canvas.height/8);scene._fgnd._webgl.render(gl,rt_tex._webgl.fbo.tex);}}
gl.finish();var renderTime=x3dom.Utils.stopMeasure('render');this.x3dElem.runtime.addMeasurement('RENDER',renderTime);this.x3dElem.runtime.addMeasurement('DRAW',(n?renderTime/n:0));this.x3dElem.runtime.addInfo('#NODES:',scene.drawableCollection.numberOfNodes);this.x3dElem.runtime.addInfo('#SHAPES:',viewarea._numRenderedNodes);this.x3dElem.runtime.addInfo("#DRAWS:",this.numDrawCalls);this.x3dElem.runtime.addInfo("#POINTS:",this.numCoords);this.x3dElem.runtime.addInfo("#TRIS:",this.numFaces);};Context.prototype.renderPingPongPass=function(gl,viewarea,rt){var scene=viewarea._scene;var refinementPos=rt._vf.dimensions[0]+"x"+rt._vf.dimensions[1];var refinementFbo=scene._webgl.refinement[refinementPos];if(rt._currLoadLevel==0&&(!scene._webgl.refinement.stamps[0]||!scene._webgl.refinement.stamps[1])){scene._webgl.refinement.stamps[0]=this.cache.getTexture2D(gl,rt._nameSpace.doc,rt._nameSpace.getURL(rt._vf.stamp0),false,false,false,false);scene._webgl.refinement.stamps[1]=this.cache.getTexture2D(gl,rt._nameSpace.doc,rt._nameSpace.getURL(rt._vf.stamp1),false,false,false,false);}
if(rt._currLoadLevel<rt._loadLevel){rt._currLoadLevel++;if(rt._webgl.texture)
gl.deleteTexture(rt._webgl.texture);var filename=rt._vf.url[0]+"/"+rt._currLoadLevel+"."+rt._vf.format;rt._webgl.texture=x3dom.Utils.createTexture2D(gl,rt._nameSpace.doc,rt._nameSpace.getURL(filename),false,false,false,false);if(rt._vf.iterations%2===0)
(rt._currLoadLevel%2!==0)?rt._repeat.x*=2.0:rt._repeat.y*=2.0;else
(rt._currLoadLevel%2===0)?rt._repeat.x*=2.0:rt._repeat.y*=2.0;}
if(!rt._webgl.texture.ready||!scene._webgl.refinement.stamps[0].ready||!scene._webgl.refinement.stamps[1].ready)
return;this.stateManager.bindFramebuffer(gl.FRAMEBUFFER,refinementFbo.fbo);this.stateManager.viewport(0,0,refinementFbo.width,refinementFbo.height);this.stateManager.disable(gl.BLEND);this.stateManager.disable(gl.CULL_FACE);this.stateManager.disable(gl.DEPTH_TEST);gl.clearColor(0,0,0,1);gl.clearDepth(1);gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT);var sp=this.cache.getShader(gl,x3dom.shader.TEXTURE_REFINEMENT);this.stateManager.useProgram(sp);gl.bindBuffer(gl.ARRAY_BUFFER,scene._webgl.refinement.positionBuffer);gl.vertexAttribPointer(sp.position,2,gl.FLOAT,false,0,0);gl.enableVertexAttribArray(sp.position);sp.stamp=0;gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,scene._webgl.refinement.stamps[(rt._currLoadLevel+1)%2]);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.REPEAT);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.REPEAT);if(rt._currLoadLevel>1){sp.lastTex=1;gl.activeTexture(gl.TEXTURE1);gl.bindTexture(gl.TEXTURE_2D,rt._webgl.fbo.tex);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);}
sp.curTex=2;gl.activeTexture(gl.TEXTURE2);gl.bindTexture(gl.TEXTURE_2D,rt._webgl.texture);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);sp.mode=rt._currLoadLevel-1;sp.repeat=rt._repeat.toGL();gl.drawArrays(gl.TRIANGLES,0,6);this.stateManager.bindFramebuffer(gl.FRAMEBUFFER,rt._webgl.fbo.fbo);gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT);sp.mode=0;sp.curTex=2;gl.activeTexture(gl.TEXTURE2);gl.bindTexture(gl.TEXTURE_2D,refinementFbo.tex);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.drawArrays(gl.TRIANGLES,0,6);gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,null);gl.disableVertexAttribArray(sp.position);this.stateManager.bindFramebuffer(gl.FRAMEBUFFER,null);this.stateManager.viewport(0,0,this.canvas.width,this.canvas.height);if(rt._vf.autoRefinement)
rt.nextLevel();if(rt._currLoadLevel==rt._vf.maxLevel)
rt._currLoadLevel++;if(rt._webgl.fbo.mipMap){gl.bindTexture(gl.TEXTURE_2D,rt._webgl.fbo.tex);gl.generateMipmap(gl.TEXTURE_2D);gl.bindTexture(gl.TEXTURE_2D,null);}
if(!rt.requirePingPong()){gl.deleteTexture(rt._webgl.texture);delete rt._webgl.texture;rt._cleanupGLObjects(true);}
rt._renderedImage++;};Context.prototype.renderRTPass=function(gl,viewarea,rt)
{if(x3dom.isa(rt,x3dom.nodeTypes.RefinementTexture)){if(rt.requirePingPong()){this.renderPingPongPass(gl,viewarea,rt);}
return;}
switch(rt._vf.update.toUpperCase()){case"NONE":return;case"NEXT_FRAME_ONLY":if(!rt._needRenderUpdate){return;}
rt._needRenderUpdate=false;break;case"ALWAYS":default:break;}
var scene=viewarea._scene;var bgnd=null;var mat_view=rt.getViewMatrix();var mat_proj=rt.getProjectionMatrix();var mat_scene=mat_proj.mult(mat_view);var lightMatrix=viewarea.getLightMatrix()[0];var mat_light=viewarea.getWCtoLCMatrix(lightMatrix);var i,n,m=rt._cf.excludeNodes.nodes.length;var arr=new Array(m);for(i=0;i<m;i++){var render=rt._cf.excludeNodes.nodes[i]._vf.render;if(render===undefined){arr[i]=-1;}
else{if(render===true){arr[i]=1;}else{arr[i]=0;}}
rt._cf.excludeNodes.nodes[i]._vf.render=false;}
this.stateManager.bindFramebuffer(gl.FRAMEBUFFER,rt._webgl.fbo.fbo);this.stateManager.viewport(0,0,rt._webgl.fbo.width,rt._webgl.fbo.height);if(rt._cf.background.node===null){gl.clearColor(0,0,0,1);gl.clearDepth(1.0);gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT|gl.STENCIL_BUFFER_BIT);}
else if(rt._cf.background.node===scene.getBackground()){bgnd=scene.getBackground();bgnd._webgl.render(gl,mat_view,mat_proj);}
else{bgnd=rt._cf.background.node;this.setupScene(gl,bgnd);bgnd._webgl.render(gl,mat_view,mat_proj);}
this.stateManager.depthFunc(gl.LEQUAL);this.stateManager.enable(gl.DEPTH_TEST);this.stateManager.enable(gl.CULL_FACE);this.stateManager.blendFuncSeparate(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA,gl.ONE,gl.ONE);this.stateManager.enable(gl.BLEND);var slights=viewarea.getLights();var numLights=slights.length;var transform,shape,drawable;var locScene=rt._cf.scene.node;if(!locScene||locScene===scene){n=scene.drawableCollection.length;if(rt._vf.showNormals){this.renderNormals(gl,scene,scene._webgl.normalShader,mat_view,mat_scene);}
else{this.stateManager.unsetProgram();for(i=0;i<n;i++){drawable=scene.drawableCollection.get(i);this.renderShape(drawable,viewarea,slights,numLights,mat_view,mat_scene,mat_light,mat_proj,gl);}}}
else{var env=scene.getEnvironment();var drawableCollectionConfig={viewArea:viewarea,sortTrans:env._vf.sortTrans,viewMatrix:mat_view,projMatrix:mat_proj,sceneMatrix:mat_scene,frustumCulling:false,smallFeatureThreshold:1,context:this,gl:gl};locScene.numberOfNodes=0;locScene.drawableCollection=new x3dom.DrawableCollection(drawableCollectionConfig);locScene.collectDrawableObjects(x3dom.fields.SFMatrix4f.identity(),locScene.drawableCollection,true,false,0,[]);locScene.drawableCollection.sort();n=locScene.drawableCollection.length;if(rt._vf.showNormals){this.renderNormals(gl,locScene,scene._webgl.normalShader,mat_view,mat_scene);}
else{this.stateManager.unsetProgram();for(i=0;i<n;i++){drawable=locScene.drawableCollection.get(i);if(!drawable.shape._vf.render){continue;}
this.renderShape(drawable,viewarea,slights,numLights,mat_view,mat_scene,mat_light,mat_proj,gl);}}}
this.stateManager.disable(gl.BLEND);this.stateManager.disable(gl.DEPTH_TEST);gl.flush();this.stateManager.bindFramebuffer(gl.FRAMEBUFFER,null);if(rt._webgl.fbo.mipMap){gl.bindTexture(gl.TEXTURE_2D,rt._webgl.fbo.tex);gl.generateMipmap(gl.TEXTURE_2D);gl.bindTexture(gl.TEXTURE_2D,null);}
for(i=0;i<m;i++){if(arr[i]!==0){rt._cf.excludeNodes.nodes[i]._vf.render=true;}}};Context.prototype.renderNormals=function(gl,scene,sp,mat_view,mat_scene)
{if(!sp||!scene){return;}
this.stateManager.depthFunc(gl.LEQUAL);this.stateManager.enable(gl.DEPTH_TEST);this.stateManager.enable(gl.CULL_FACE);this.stateManager.disable(gl.BLEND);this.stateManager.useProgram(sp);var bgCenter=x3dom.fields.SFVec3f.NullVector.toGL();var bgSize=x3dom.fields.SFVec3f.OneVector.toGL();for(var i=0,n=scene.drawableCollection.length;i<n;i++)
{var drawable=scene.drawableCollection.get(i);var trafo=drawable.transform;var shape=drawable.shape;var s_gl=shape._webgl;if(!s_gl||!shape||!shape._vf.render){continue;}
var s_geo=shape._cf.geometry.node;var s_msh=s_geo._mesh;var model_view_inv=mat_view.mult(trafo).inverse();sp.normalMatrix=model_view_inv.transpose().toGL();sp.modelViewProjectionMatrix=mat_scene.mult(trafo).toGL();sp.imageGeometry=s_gl.imageGeometry;if(s_gl.coordType!=gl.FLOAT){if(s_gl.popGeometry!=0||(s_msh._numPosComponents==4&&x3dom.Utils.isUnsignedType(s_geo._vf.coordType)))
sp.bgCenter=s_geo.getMin().toGL();else
sp.bgCenter=s_geo._vf.position.toGL();sp.bgSize=s_geo._vf.size.toGL();sp.bgPrecisionMax=s_geo.getPrecisionMax('coordType');}
else{sp.bgCenter=bgCenter;sp.bgSize=bgSize;sp.bgPrecisionMax=1;}
if(s_gl.normalType!=gl.FLOAT){sp.bgPrecisionNorMax=s_geo.getPrecisionMax('normalType');}
else{sp.bgPrecisionNorMax=1;}
if(shape.isSolid()){this.stateManager.enable(gl.CULL_FACE);if(shape.isCCW()){this.stateManager.frontFace(gl.CCW);}
else{this.stateManager.frontFace(gl.CW);}}
else{this.stateManager.disable(gl.CULL_FACE);}
for(var q=0,q_n=s_gl.positions.length;q<q_n;q++){var q6=6*q;var v,v_n,offset;if(!(sp.position!==undefined&&s_gl.buffers[q6+1]&&s_gl.indexes[q]))
continue;if(s_gl.buffers[q6]){gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,s_gl.buffers[q6]);}
gl.bindBuffer(gl.ARRAY_BUFFER,s_gl.buffers[q6+1]);gl.vertexAttribPointer(sp.position,s_msh._numPosComponents,s_gl.coordType,false,shape._coordStrideOffset[0],shape._coordStrideOffset[1]);gl.enableVertexAttribArray(sp.position);if(sp.normal!==undefined&&s_gl.buffers[q6+2]){gl.bindBuffer(gl.ARRAY_BUFFER,s_gl.buffers[q6+2]);gl.vertexAttribPointer(sp.normal,s_msh._numNormComponents,s_gl.normalType,false,shape._normalStrideOffset[0],shape._normalStrideOffset[1]);gl.enableVertexAttribArray(sp.normal);}
if(s_gl.binaryGeometry>0||s_gl.popGeometry>0){for(v=0,offset=0,v_n=s_geo._vf.vertexCount.length;v<v_n;v++){gl.drawElements(s_gl.primType[v],s_geo._vf.vertexCount[v],s_gl.indexType,x3dom.Utils.getByteAwareOffset(offset,s_gl.indexType,gl));offset+=s_geo._vf.vertexCount[v];}}
else if(s_gl.binaryGeometry<0||s_gl.popGeometry<0||s_gl.imageGeometry){for(v=0,offset=0,v_n=s_geo._vf.vertexCount.length;v<v_n;v++){gl.drawArrays(s_gl.primType[v],offset,s_geo._vf.vertexCount[v]);offset+=s_geo._vf.vertexCount[v];}}
else if(s_geo.hasIndexOffset()){var indOff=shape.tessellationProperties();for(v=0,v_n=indOff.length;v<v_n;v++){gl.drawElements(s_gl.primType,indOff[v].count,s_gl.indexType,indOff[v].offset*x3dom.Utils.getOffsetMultiplier(s_gl.indexType,gl));}}
else if(s_gl.indexes[q].length==0){gl.drawArrays(s_gl.primType,0,s_gl.positions[q].length/3);}
else{gl.drawElements(s_gl.primType,s_gl.indexes[q].length,s_gl.indexType,0);}
gl.disableVertexAttribArray(sp.position);if(sp.normal!==undefined){gl.disableVertexAttribArray(sp.normal);}}}};Context.prototype.shutdown=function(viewarea){var gl=this.ctx3d;var scene=viewarea._scene;if(gl==null||!scene){return;}
var bgnd=scene.getBackground();if(bgnd._webgl.position!==undefined){gl.deleteBuffer(bgnd._webgl.buffers[1]);gl.deleteBuffer(bgnd._webgl.buffers[0]);}
var fgnd=scene._fgnd;if(fgnd._webgl.position!==undefined){gl.deleteBuffer(fgnd._webgl.buffers[1]);gl.deleteBuffer(fgnd._webgl.buffers[0]);}
var n=scene.drawableCollection?scene.drawableCollection.length:0;for(var i=0;i<n;i++){var shape=scene.drawableCollection.get(i).shape;if(shape._cleanupGLObjects)
shape._cleanupGLObjects(true);}
this.cache.Release(gl);};Context.prototype.renderShadows=function(gl,viewarea,shadowedLights,wctolc,lMatrices,mat_view,mat_proj,mat_scene)
{var scene=viewarea._scene;var texLimit=x3dom.caps.MAX_TEXTURE_IMAGE_UNITS;if(texLimit<7)
return;var texUnits=1;var renderSplit=[0];var shadowMaps,numShadowMaps;var i,j,k;for(i=0;i<shadowedLights.length;i++)
{var filterSize=shadowedLights[i]._vf.shadowFilterSize;shadowMaps=scene._webgl.fboShadow[i];numShadowMaps=shadowMaps.length;for(j=0;j<numShadowMaps;j++){this.blurTex(gl,scene,shadowMaps[j],filterSize);}
texUnits+=6;if(texUnits>texLimit){renderSplit[renderSplit.length]=i;texUnits=7;}}
renderSplit[renderSplit.length]=shadowedLights.length;var n=renderSplit.length-1;var mat_proj_inv=mat_proj.inverse();var mat_scene_inv=mat_scene.inverse();this.stateManager.enable(gl.BLEND);this.stateManager.blendFunc(gl.DST_COLOR,gl.ZERO);for(var s=0;s<n;s++)
{var startIndex=renderSplit[s];var endIndex=renderSplit[s+1];var currentLights=[];for(k=startIndex;k<endIndex;k++)
currentLights[currentLights.length]=shadowedLights[k];var sp=this.cache.getShadowRenderingShader(gl,currentLights);this.stateManager.useProgram(sp);gl.bindBuffer(gl.ARRAY_BUFFER,scene._webgl.ppBuffer);gl.vertexAttribPointer(sp.position,2,gl.FLOAT,false,0,0);gl.enableVertexAttribArray(sp.position);sp.sceneMap=0;gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,scene._webgl.fboScene.tex);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);sp.inverseProj=mat_proj_inv.toGL();sp.inverseViewProj=mat_scene_inv.toGL();var mat_light;var lightMatrix;var shadowIndex=0;for(var p=0,pn=currentLights.length;p<pn;p++){lightMatrix=lMatrices[p+startIndex];mat_light=wctolc[p+startIndex];shadowMaps=scene._webgl.fboShadow[p+startIndex];numShadowMaps=mat_light.length;for(i=0;i<numShadowMaps;i++){gl.activeTexture(gl.TEXTURE1+shadowIndex);gl.bindTexture(gl.TEXTURE_2D,shadowMaps[i].tex);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);sp['light'+p+'_'+i+'_ShadowMap']=shadowIndex+1;sp['light'+p+'_'+i+'_Matrix']=mat_light[i].toGL();shadowIndex++;}
sp['light'+p+'_ViewMatrix']=lightMatrix.toGL();if(!x3dom.isa(currentLights[p],x3dom.nodeTypes.PointLight)){for(j=0;j<numShadowMaps;j++){var numCascades=Math.max(1,Math.min(currentLights[p]._vf.shadowCascades,6));var splitFactor=Math.max(0,Math.min(currentLights[p]._vf.shadowSplitFactor,1));var splitOffset=Math.max(0,Math.min(currentLights[p]._vf.shadowSplitOffset,1));var splitDepths=viewarea.getShadowSplitDepths(numCascades,splitFactor,splitOffset,false,mat_proj);sp['light'+p+'_'+j+'_Split']=splitDepths[j+1];}}
var light_transform=mat_view.mult(currentLights[p].getCurrentTransform());if(x3dom.isa(currentLights[p],x3dom.nodeTypes.DirectionalLight))
{sp['light'+p+'_Type']=0.0;sp['light'+p+'_On']=(currentLights[p]._vf.on)?1.0:0.0;sp['light'+p+'_Direction']=light_transform.multMatrixVec(currentLights[p]._vf.direction).toGL();sp['light'+p+'_Attenuation']=[1.0,1.0,1.0];sp['light'+p+'_Location']=[1.0,1.0,1.0];sp['light'+p+'_Radius']=0.0;sp['light'+p+'_BeamWidth']=0.0;sp['light'+p+'_CutOffAngle']=0.0;sp['light'+p+'_ShadowIntensity']=currentLights[p]._vf.shadowIntensity;sp['light'+p+'_ShadowCascades']=currentLights[p]._vf.shadowCascades;sp['light'+p+'_ShadowOffset']=Math.max(0.0,Math.min(1.0,currentLights[p]._vf.shadowOffset));}
else if(x3dom.isa(currentLights[p],x3dom.nodeTypes.PointLight))
{sp['light'+p+'_Type']=1.0;sp['light'+p+'_On']=(currentLights[p]._vf.on)?1.0:0.0;sp['light'+p+'_Direction']=[1.0,1.0,1.0];sp['light'+p+'_Attenuation']=currentLights[p]._vf.attenuation.toGL();sp['light'+p+'_Location']=light_transform.multMatrixPnt(currentLights[p]._vf.location).toGL();sp['light'+p+'_Radius']=currentLights[p]._vf.radius;sp['light'+p+'_BeamWidth']=0.0;sp['light'+p+'_CutOffAngle']=0.0;sp['light'+p+'_ShadowIntensity']=currentLights[p]._vf.shadowIntensity;sp['light'+p+'_ShadowOffset']=Math.max(0.0,Math.min(1.0,currentLights[p]._vf.shadowOffset));}
else if(x3dom.isa(currentLights[p],x3dom.nodeTypes.SpotLight))
{sp['light'+p+'_Type']=2.0;sp['light'+p+'_On']=(currentLights[p]._vf.on)?1.0:0.0;sp['light'+p+'_Direction']=light_transform.multMatrixVec(currentLights[p]._vf.direction).toGL();sp['light'+p+'_Attenuation']=currentLights[p]._vf.attenuation.toGL();sp['light'+p+'_Location']=light_transform.multMatrixPnt(currentLights[p]._vf.location).toGL();sp['light'+p+'_Radius']=currentLights[p]._vf.radius;sp['light'+p+'_BeamWidth']=currentLights[p]._vf.beamWidth;sp['light'+p+'_CutOffAngle']=currentLights[p]._vf.cutOffAngle;sp['light'+p+'_ShadowIntensity']=currentLights[p]._vf.shadowIntensity;sp['light'+p+'_ShadowCascades']=currentLights[p]._vf.shadowCascades;sp['light'+p+'_ShadowOffset']=Math.max(0.0,Math.min(1.0,currentLights[p]._vf.shadowOffset));}}
gl.drawArrays(gl.TRIANGLES,0,6);var nk=shadowIndex+1;for(k=0;k<nk;k++){gl.activeTexture(gl.TEXTURE0+k);gl.bindTexture(gl.TEXTURE_2D,null);}
gl.disableVertexAttribArray(sp.position);}
this.stateManager.blendFunc(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA);};Context.prototype.blurTex=function(gl,scene,targetFbo,filterSize)
{if(filterSize<=0)
return;else if(filterSize<5)
filterSize=3;else if(filterSize<7)
filterSize=5;else
filterSize=7;var width=targetFbo.width;var height=targetFbo.height;var fboBlur=null;for(var i=0,n=scene._webgl.fboBlur.length;i<n;i++)
if(height==scene._webgl.fboBlur[i].height){fboBlur=scene._webgl.fboBlur[i];break;}
this.stateManager.bindFramebuffer(gl.FRAMEBUFFER,fboBlur.fbo);this.stateManager.viewport(0,0,width,height);this.stateManager.enable(gl.BLEND);this.stateManager.blendFunc(gl.ONE,gl.ZERO);this.stateManager.disable(gl.CULL_FACE);this.stateManager.disable(gl.DEPTH_TEST);gl.clearColor(1.0,1.0,1.0,0.0);gl.clearDepth(1.0);gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT);var sp=this.cache.getShader(gl,x3dom.shader.BLUR);this.stateManager.useProgram(sp);gl.bindBuffer(gl.ARRAY_BUFFER,scene._webgl.ppBuffer);gl.vertexAttribPointer(sp.position,2,gl.FLOAT,false,0,0);gl.enableVertexAttribArray(sp.position);sp.pixelSizeHor=1.0/width;sp.pixelSizeVert=1.0/height;sp.filterSize=filterSize;sp.horizontal=true;sp.texture=0;gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,targetFbo.tex);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.drawArrays(gl.TRIANGLES,0,6);this.stateManager.bindFramebuffer(gl.FRAMEBUFFER,targetFbo.fbo);gl.clearColor(1.0,1.0,1.0,0.0);gl.clearDepth(1.0);gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT);sp.horizontal=false;gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,fboBlur.tex);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.drawArrays(gl.TRIANGLES,0,6);gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,null);gl.disableVertexAttribArray(sp.position);gl.flush();this.stateManager.blendFunc(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA);this.stateManager.bindFramebuffer(gl.FRAMEBUFFER,null);this.stateManager.viewport(0,0,this.canvas.width,this.canvas.height);};return setupContext;})();x3dom.bridge={setFlashReady:function(driver,canvas){var x3dCanvas=x3dom.canvases[canvas];x3dCanvas.isFlashReady=true;x3dom.debug.logInfo('Flash is ready for rendering ('+driver+')');},onMouseDown:function(x,y,button,canvas){var x3dCanvas=x3dom.canvases[canvas];x3dCanvas.doc.onMousePress(x3dCanvas.gl,x,y,button);x3dCanvas.doc.needRender=true;},onMouseUp:function(x,y,button,canvas){var x3dCanvas=x3dom.canvases[canvas];x3dCanvas.doc.onMouseRelease(x3dCanvas.gl,x,y,button);x3dCanvas.doc.needRender=true;},onMouseOver:function(x,y,button,canvas){var x3dCanvas=x3dom.canvases[canvas];x3dCanvas.doc.onMouseOver(x3dCanvas.gl,x,y,button);x3dCanvas.doc.needRender=true;},onMouseOut:function(x,y,button,canvas){var x3dCanvas=x3dom.canvases[canvas];x3dCanvas.doc.onMouseOut(x3dCanvas.gl,x,y,button);x3dCanvas.doc.needRender=true;},onDoubleClick:function(x,y,canvas){var x3dCanvas=x3dom.canvases[canvas];x3dCanvas.doc.onDoubleClick(x3dCanvas.gl,x,y);x3dCanvas.doc.needRender=true;x3dom.debug.logInfo("dblClick");},onMouseDrag:function(x,y,button,canvas){var x3dCanvas=x3dom.canvases[canvas];x3dCanvas.doc.onDrag(x3dCanvas.gl,x,y,button);x3dCanvas.doc.needRender=true;},onMouseMove:function(x,y,button,canvas){var x3dCanvas=x3dom.canvases[canvas];x3dCanvas.doc.onMove(x3dCanvas.gl,x,y,button);x3dCanvas.doc.needRender=true;},onMouseWheel:function(x,y,button,canvas){var x3dCanvas=x3dom.canvases[canvas];x3dCanvas.doc.onDrag(x3dCanvas.gl,x,y,button);x3dCanvas.doc.needRender=true;},onKeyDown:function(charCode,canvas){var x3dCanvas=x3dom.canvases[canvas];var keysEnabled=x3dCanvas.x3dElem.getAttribute("keysEnabled");if(!keysEnabled||keysEnabled.toLowerCase()==="true"){x3dCanvas.doc.onKeyPress(charCode);}
x3dCanvas.doc.needRender=true;},setBBox:function(id,center,size){var shape=x3dom.nodeTypes.Shape.idMap.nodeID[id];},setShapeDirty:function(id){var shape=x3dom.nodeTypes.Shape.idMap.nodeID[id];shape.setAllDirty();}};x3dom.gfx_flash=(function(){function Context(object,name,renderType){this.object=object;this.name=name;this.isAlreadySet=false;this.renderType=renderType;}
function setupContext(object,renderType){x3dom.Utils.maxIndexableCoords=65535;return new Context(object,'flash',renderType);}
Context.prototype.getName=function(){return this.name;};Context.prototype.renderScene=function(viewarea){var scene=viewarea._scene;var min=x3dom.fields.SFVec3f.MAX();var max=x3dom.fields.SFVec3f.MIN();var vol=scene.getVolume();vol.getBounds(min,max);scene._lastMin=min;scene._lastMax=max;viewarea._last_mat_view=x3dom.fields.SFMatrix4f.identity();viewarea._last_mat_proj=x3dom.fields.SFMatrix4f.identity();viewarea._last_mat_scene=x3dom.fields.SFMatrix4f.identity();var viewpoint=scene.getViewpoint();if(viewpoint._vf.zNear==-1||viewpoint._vf.zFar==-1){viewpoint._vf.zFar=20000;viewpoint._vf.zNear=0.1;}
var mat_view=viewarea.getViewMatrix();var mat_proj=viewarea.getProjectionMatrix();var mat_scene=mat_proj.mult(mat_view);this.setupScene(scene,viewarea);var background=scene.getBackground();this.setupBackground(background);var fog=scene.getFog();this.setupFog(fog);scene.drawableCollection=null;var env=scene.getEnvironment();var drawableCollectionConfig={viewArea:viewarea,sortTrans:env._vf.sortTrans,viewMatrix:mat_view,projMatrix:mat_proj,sceneMatrix:mat_scene,frustumCulling:false,smallFeatureThreshold:false,context:null,gl:null};scene.drawableCollection=new x3dom.DrawableCollection(drawableCollectionConfig);scene.collectDrawableObjects(x3dom.fields.SFMatrix4f.identity(),scene.drawableCollection,true,false,0,[]);scene.drawableCollection.concat();var numDrawableObjects=scene.drawableCollection.length;if(numDrawableObjects>0){var RefList=[];for(var i=0;i<numDrawableObjects;i++){var drawable=scene.drawableCollection.get(i);var trafo=drawable.transform;var obj3d=drawable.shape;if(RefList[obj3d._objectID]!=undefined){RefList[obj3d._objectID]++;}else{RefList[obj3d._objectID]=0;}
this.setupShape(obj3d,trafo,RefList[obj3d._objectID]);}}
this.object.renderScene();};Context.prototype.setupScene=function(scene,viewarea){var mat_view=viewarea.getViewMatrix();if(!viewarea._last_mat_view.equals(mat_view)){var e_viewpoint=viewarea._scene.getViewpoint();var e_eventType="viewpointChanged";try{if(e_viewpoint._xmlNode&&(e_viewpoint._xmlNode["on"+e_eventType]||e_viewpoint._xmlNode.hasAttribute("on"+e_eventType)||e_viewpoint._listeners[e_eventType])){var e_viewtrafo=e_viewpoint.getCurrentTransform();e_viewtrafo=e_viewtrafo.inverse().mult(mat_view);var e_mat=e_viewtrafo.inverse();var e_rotation=new x3dom.fields.Quaternion(0,0,1,0);var e_translation=e_mat.e3();var e_event={target:e_viewpoint._xmlNode,type:e_eventType,matrix:e_viewtrafo,position:e_translation,orientation:e_rotation.toAxisAngle(),cancelBubble:false,stopPropagation:function(){this.cancelBubble=true;}};e_viewpoint.callEvtHandler(e_eventType,e_event);}}
catch(e_e){x3dom.debug.logException(e_e);}}
viewarea._last_mat_view=mat_view;var viewpoint=scene.getViewpoint();var mat_proj=viewarea.getProjectionMatrix();this.object.setViewpoint({fov:viewpoint._vf.fov,zFar:viewpoint._vf.zFar,zNear:viewpoint._vf.zNear,viewMatrix:mat_view.toGL(),projectionMatrix:mat_proj.toGL()});var nav=scene.getNavigationInfo();if(nav._vf.headlight){this.object.setHeadLight({id:-1,on:1.0,color:[1.0,1.0,1.0],intensity:1.0,ambientIntensity:0.0,direction:[0.0,0.0,-1.0]});}
if(this.renderType=="deferred"){var lights=viewarea.getLights();for(var i=0;i<lights.length;i++){if(lights[i]._dirty){if(x3dom.isa(lights[i],x3dom.nodeTypes.DirectionalLight)){this.object.setDirectionalLight({id:lights[i]._lightID,on:lights[i]._vf.on,color:lights[i]._vf.color.toGL(),intensity:lights[i]._vf.intensity,ambientIntensity:lights[i]._vf.ambientIntensity,direction:lights[i]._vf.direction.toGL()});}
else if(x3dom.isa(lights[i],x3dom.nodeTypes.PointLight)){var light_transform=mat_view.mult(lights[i].getCurrentTransform());this.object.setPointLight({id:lights[i]._lightID,on:lights[i]._vf.on,color:lights[i]._vf.color.toGL(),intensity:lights[i]._vf.intensity,ambientIntensity:lights[i]._vf.ambientIntensity,attenuation:lights[i]._vf.attenuation.toGL(),location:lights[i]._vf.location.toGL(),radius:lights[i]._vf.radius});}
else if(x3dom.isa(lights[i],x3dom.nodeTypes.SpotLight)){}
lights[i]._dirty=false;}}}};Context.prototype.setupBackground=function(background){if(background._dirty){this.object.setBackground({texURLs:background.getTexUrl(),skyAngle:background._vf.skyAngle,skyColor:background.getSkyColor().toGL(),groundAngle:background._vf.groundAngle,groundColor:background.getGroundColor().toGL(),transparency:background.getTransparency()});background._dirty=false;}};Context.prototype.setupFog=function(fog){if(!fog||!fog._vf||fog._vf.visibilityRange<=0.0){this.object.setFog({color:null,visibilityRange:-1.0,fogType:-1.0});return;};this.object.setFog({color:fog._vf.color.toGL(),visibilityRange:fog._vf.visibilityRange,fogType:(fog._vf.fogType==="LINEAR")?0.0:1.0});};Context.prototype.setupShape=function(shape,trafo,refID){if(x3dom.isa(shape._cf.geometry.node,x3dom.nodeTypes.PointSet)){x3dom.debug.logError("Flash backend doesn't support PointSets yet");}else if(x3dom.isa(shape._cf.geometry.node,x3dom.nodeTypes.IndexedLineSet)){x3dom.debug.logError("Flash backend doesn't support LineSets yet");}else if(x3dom.isa(shape._cf.geometry.node,x3dom.nodeTypes.Text)){this.setupText(shape,trafo,refID);}else{this.setupIndexedFaceSet(shape,trafo,refID);}};Context.prototype.setupIndexedFaceSet=function(shape,trafo,refID){this.object.setMeshTransform({id:shape._objectID,refID:refID,transform:trafo.toGL()});if(refID==0){var isImageGeometry=x3dom.isa(shape._cf.geometry.node,x3dom.nodeTypes.ImageGeometry);var isBinaryGeometry=x3dom.isa(shape._cf.geometry.node,x3dom.nodeTypes.BinaryGeometry);var appearance=shape._cf.appearance.node;var sortType=(appearance)?shape._cf.appearance.node._vf.sortType:"auto";var sortKey=(appearance)?shape._cf.appearance.node._vf.sortKey:0
if(isImageGeometry){this.object.setMeshProperties({id:shape._objectID,type:"ImageGeometry",sortType:sortType,sortKey:sortKey,solid:shape.isSolid(),bboxMin:shape._cf.geometry.node.getMin().toGL(),bboxMax:shape._cf.geometry.node.getMax().toGL(),bboxCenter:shape._cf.geometry.node.getCenter().toGL(),primType:shape._cf.geometry.node._vf.primType,vertexCount:shape._cf.geometry.node._vf.vertexCount});}else if(isBinaryGeometry){this.object.setMeshProperties({id:shape._objectID,type:"BinaryGeometry",sortType:sortType,sortKey:sortKey,solid:shape.isSolid(),bgCenter:shape._cf.geometry.node._vf.position.toGL(),bgSize:shape._cf.geometry.node._vf.size.toGL(),bboxCenter:shape._cf.geometry.node.getCenter().toGL(),primType:shape._cf.geometry.node._vf.primType,vertexCount:shape._cf.geometry.node._vf.vertexCount});}else{this.object.setMeshProperties({id:shape._objectID,type:"Default",sortType:sortType,sortKey:sortKey,solid:shape.isSolid()});}
if(shape._dirty.indexes===true){if(isImageGeometry){}else if(isBinaryGeometry){this.object.setMeshIndices({id:shape._objectID,idx:0,indices:shape._nameSpace.getURL(shape._cf.geometry.node._vf.index)});}else{if(shape._cf.geometry.node._mesh._multiIndIndices&&shape._cf.geometry.node._mesh._multiIndIndices.length)
{shape._cf.geometry.node._mesh.splitMesh(3,true);}
for(var i=0;i<shape._cf.geometry.node._mesh._indices.length;i++){this.object.setMeshIndices({id:shape._objectID,idx:i,indices:shape._cf.geometry.node._mesh._indices[i]});}}
shape._dirty.indexes=false;}
if(shape._dirty.positions===true){if(isImageGeometry){this.object.setMeshVertices({id:shape._objectID,idx:0,coordinateTexture0:shape._cf.geometry.node.getCoordinateTextureURL(0),coordinateTexture1:shape._cf.geometry.node.getCoordinateTextureURL(1)});}else if(isBinaryGeometry){this.object.setMeshVertices({id:shape._objectID,idx:0,interleaved:shape._cf.geometry.node._hasStrideOffset,vertices:shape._nameSpace.getURL(shape._cf.geometry.node._vf.coord),normals:shape._nameSpace.getURL(shape._cf.geometry.node._vf.normal),texCoords:shape._nameSpace.getURL(shape._cf.geometry.node._vf.texCoord),colors:shape._nameSpace.getURL(shape._cf.geometry.node._vf.color),numColorComponents:shape._cf.geometry.node._mesh._numColComponents,numNormalComponents:shape._cf.geometry.node._mesh._numNormComponents,vertexType:shape._cf.geometry.node._vf.coordType,normalType:shape._cf.geometry.node._vf.normalType,texCoordType:shape._cf.geometry.node._vf.texCoordType,colorType:shape._cf.geometry.node._vf.colorType,vertexStrideOffset:shape._coordStrideOffset,normalStrideOffset:shape._normalStrideOffset,texCoordStrideOffset:shape._texCoordStrideOffset,colorStrideOffset:shape._colorStrideOffset});}else{for(var i=0;i<shape._cf.geometry.node._mesh._positions.length;i++){this.object.setMeshVertices({id:shape._objectID,idx:i,vertices:shape._cf.geometry.node._mesh._positions[i]});}}
shape._dirty.positions=false;}
if(shape._dirty.normals===true){if(isImageGeometry){this.object.setMeshNormals({id:shape._objectID,idx:0,normalTexture:shape._cf.geometry.node.getNormalTextureURL()});}else if(isBinaryGeometry){if(!shape._cf.geometry.node._hasStrideOffset){this.object.setMeshNormals({id:shape._objectID,idx:0,normals:shape._nameSpace.getURL(shape._cf.geometry.node._vf.normal)});}}else{if(shape._cf.geometry.node._mesh._normals[0].length){for(var i=0;i<shape._cf.geometry.node._mesh._normals.length;i++){this.object.setMeshNormals({id:shape._objectID,idx:i,normals:shape._cf.geometry.node._mesh._normals[i]});}}}
shape._dirty.normals=false;}
if(shape._dirty.colors===true){if(isImageGeometry){this.object.setMeshColors({id:shape._objectID,idx:0,colorTexture:shape._cf.geometry.node.getColorTextureURL(),components:shape._cf.geometry.node._mesh._numColComponents});}else if(isBinaryGeometry){if(!shape._cf.geometry.node._hasStrideOffset){this.object.setMeshColors({id:shape._objectID,idx:0,colors:shape._nameSpace.getURL(shape._cf.geometry.node._vf.color),components:shape._cf.geometry.node._mesh._numColComponents});}}else{if(shape._cf.geometry.node._mesh._colors[0].length){for(var i=0;i<shape._cf.geometry.node._mesh._colors.length;i++){this.object.setMeshColors({id:shape._objectID,idx:i,colors:shape._cf.geometry.node._mesh._colors[i],components:shape._cf.geometry.node._mesh._numColComponents});}}}
shape._dirty.colors=false;}
if(shape._dirty.texcoords===true){if(isImageGeometry){this.object.setMeshTexCoords({id:shape._objectID,idx:0,texCoordTexture:shape._cf.geometry.node.getTexCoordTextureURL()});}else if(isBinaryGeometry){if(!shape._cf.geometry.node._hasStrideOffset){this.object.setMeshTexCoords({id:shape._objectID,idx:0,texCoords:shape._nameSpace.getURL(shape._cf.geometry.node._vf.texCoord)});}}else{if(shape._cf.geometry.node._mesh._texCoords[0].length){for(var i=0;i<shape._cf.geometry.node._mesh._texCoords.length;i++){this.object.setMeshTexCoords({id:shape._objectID,idx:i,texCoords:shape._cf.geometry.node._mesh._texCoords[i]});}}}
shape._dirty.texcoords=false;}
if(shape._dirty.material===true){if(appearance){var material=shape._cf.appearance.node._cf.material.node;if(material){this.object.setMeshMaterial({id:shape._objectID,ambientIntensity:material._vf.ambientIntensity,diffuseColor:material._vf.diffuseColor.toGL(),emissiveColor:material._vf.emissiveColor.toGL(),shininess:material._vf.shininess,specularColor:material._vf.specularColor.toGL(),transparency:material._vf.transparency});}}
shape._dirty.material=false;}
if(shape._dirty.texture===true){if(appearance){var texTrafo=null;if(appearance._cf.textureTransform.node){texTrafo=appearance.texTransformMatrix().toGL();}
var texture=shape._cf.appearance.node._cf.texture.node;if(texture){if(x3dom.isa(texture,x3dom.nodeTypes.PixelTexture)){this.object.setPixelTexture({id:shape._objectID,width:texture._vf.image.width,height:texture._vf.image.height,comp:texture._vf.image.comp,pixels:texture._vf.image.toGL()});}else if(x3dom.isa(texture,x3dom.nodeTypes.ComposedCubeMapTexture)){this.object.setCubeTexture({id:shape._objectID,texURLs:texture.getTexUrl()});}else if(texture._isCanvas&&texture._canvas){this.object.setCanvasTexture({id:shape._objectID,width:texture._canvas.width,height:texture._canvas.height,dataURL:texture._canvas.toDataURL()});}else if(x3dom.isa(texture,x3dom.nodeTypes.MultiTexture)){x3dom.debug.logError("Flash backend doesn't support MultiTextures yet");}else if(x3dom.isa(texture,x3dom.nodeTypes.MovieTexture)){x3dom.debug.logError("Flash backend doesn't support MovieTextures yet");}else{this.object.setMeshTexture({id:shape._objectID,origChannelCount:texture._vf.origChannelCount,repeatS:texture._vf.repeatS,repeatT:texture._vf.repeatT,url:texture._vf.url[0],transform:texTrafo});}}else{this.object.removeTexture({id:shape._objectID});}}
shape._dirty.texture=false;}
if(shape._cf.geometry.node._cf.texCoord!==undefined&&shape._cf.geometry.node._cf.texCoord.node!==null&&!x3dom.isa(shape._cf.geometry.node._cf.texCoord.node,x3dom.nodeTypes.X3DTextureNode)&&shape._cf.geometry.node._cf.texCoord.node._vf.mode){var texMode=shape._cf.geometry.node._cf.texCoord.node._vf.mode;if(texMode.toLowerCase()=="sphere"){this.object.setSphereMapping({id:shape._objectID,sphereMapping:1});}
else{this.object.setSphereMapping({id:shape._objectID,sphereMapping:0});}}
else{this.object.setSphereMapping({id:shape._objectID,sphereMapping:0});}}};Context.prototype.setupText=function(shape,trafo,refID){this.object.setMeshTransform({id:shape._objectID,refID:refID,transform:trafo.toGL()});if(refID==0){var appearance=shape._cf.appearance.node;var sortType=(appearance)?shape._cf.appearance.node._vf.sortType:"auto";var sortKey=(appearance)?shape._cf.appearance.node._vf.sortKey:0
if(shape._dirty.text===true){var fontStyleNode=shape._cf.geometry.node._cf.fontStyle.node;if(fontStyleNode===null){this.object.setMeshProperties({id:shape._objectID,type:"Text",sortType:sortType,sortKey:sortKey,solid:shape.isSolid(),text:shape._cf.geometry.node._vf.string,fontFamily:['SERIF'],fontStyle:"PLAIN",fontAlign:"BEGIN",fontSize:32,fontSpacing:1.0,fontHorizontal:true,fontLanguage:"",fontLeftToRight:true,fontTopToBottom:true});}else{this.object.setMeshProperties({id:shape._objectID,type:"Text",sortType:sortType,sortKey:sortKey,solid:shape.isSolid(),text:shape._cf.geometry.node._vf.string,fontFamily:fontStyleNode._vf.family.toString(),fontStyle:fontStyleNode._vf.style.toString(),fontAlign:fontStyleNode._vf.justify.toString(),fontSize:fontStyleNode._vf.size,fontSpacing:fontStyleNode._vf.spacing,fontHorizontal:fontStyleNode._vf.horizontal,fontLanguage:fontStyleNode._vf.language,fontLeftToRight:fontStyleNode._vf.leftToRight,fontTopToBottom:fontStyleNode._vf.topToBottom});}
shape._dirty.text=false;}
if(shape._dirty.material===true){if(appearance){var material=shape._cf.appearance.node._cf.material.node;if(material){this.object.setMeshMaterial({id:shape._objectID,ambientIntensity:material._vf.ambientIntensity,diffuseColor:material._vf.diffuseColor.toGL(),emissiveColor:material._vf.emissiveColor.toGL(),shininess:material._vf.shininess,specularColor:material._vf.specularColor.toGL(),transparency:material._vf.transparency});}}
shape._dirty.material=false;}}};Context.prototype.pickValue=function(viewarea,x,y,viewMat,sceneMat){var scene=viewarea._scene;if(this.object===null||scene===null||scene.drawableCollection===undefined||!scene.drawableCollection||scene._vf.pickMode.toLowerCase()==="box"){return false;}
var pickMode=(scene._vf.pickMode.toLowerCase()==="color")?1:((scene._vf.pickMode.toLowerCase()==="texcoord")?2:0);var data=this.object.pickValue({pickMode:pickMode});if(data.objID>0){viewarea._pickingInfo.pickPos=new x3dom.fields.SFVec3f(data.pickPosX,data.pickPosY,data.pickPosZ);viewarea._pickingInfo.pickObj=x3dom.nodeTypes.Shape.idMap.nodeID[data.objID];}else{viewarea._pickingInfo.pickObj=null;viewarea._pickingInfo.lastClickObj=null;}
return true;};Context.prototype.shutdown=function(viewarea){};return setupContext;})();x3dom.NodeNameSpace=function(name,document){this.name=name;this.doc=document;this.baseURL="";this.defMap={};this.parent=null;this.childSpaces=[];};x3dom.NodeNameSpace.prototype.addNode=function(node,name){this.defMap[name]=node;node._nameSpace=this;};x3dom.NodeNameSpace.prototype.removeNode=function(name){var node=name?this.defMap[name]:null;if(node){delete this.defMap[name];node._nameSpace=null;}};x3dom.NodeNameSpace.prototype.getNamedNode=function(name){return this.defMap[name];};x3dom.NodeNameSpace.prototype.getNamedElement=function(name){var node=this.defMap[name];return(node?node._xmlNode:null);};x3dom.NodeNameSpace.prototype.addSpace=function(space){this.childSpaces.push(space);space.parent=this;};x3dom.NodeNameSpace.prototype.removeSpace=function(space){space.parent=null;for(var it=0;it<this.childSpaces.length;it++){if(this.childSpaces[it]==space){this.childSpaces.splice(it,1);}}};x3dom.NodeNameSpace.prototype.setBaseURL=function(url){var i=url.lastIndexOf("/");this.baseURL=(i>=0)?url.substr(0,i+1):"";x3dom.debug.logInfo("setBaseURL: "+this.baseURL);};x3dom.NodeNameSpace.prototype.getURL=function(url){if(url===undefined||!url.length){return"";}
else{return((url[0]==='/')||(url.indexOf(":")>=0))?url:(this.baseURL+url);}};x3dom.hasElementAttribute=function(attrName)
{var ok=this.__hasAttribute(attrName);if(!ok&&attrName){ok=this.__hasAttribute(attrName.toLowerCase());}
return ok;};x3dom.getElementAttribute=function(attrName)
{var attrib=this.__getAttribute(attrName);if(!attrib&&attrib!=""&&attrName){attrib=this.__getAttribute(attrName.toLowerCase());}
if(attrib||!this._x3domNode){return attrib;}
else{return this._x3domNode._vf[attrName];}};x3dom.setElementAttribute=function(attrName,newVal)
{this.__setAttribute(attrName,newVal);var x3dNode=this._x3domNode;if(x3dNode){x3dNode.updateField(attrName,newVal);x3dNode._nameSpace.doc.needRender=true;}};x3dom.getFieldValue=function(fieldName)
{var x3dNode=this._x3domNode;if(x3dNode&&x3dNode._vf[fieldName]){return x3dNode._vf[fieldName].copy();}
return null;};x3dom.setFieldValue=function(fieldName,fieldvalue){var x3dNode=this._x3domNode;if(x3dNode&&x3dNode._vf[fieldName]){if(fieldvalue instanceof Object&&'copy'in fieldvalue)
{x3dNode._vf[fieldName]=fieldvalue.copy();}
else
x3dNode._vf[fieldName]=fieldvalue;x3dNode.fieldChanged(fieldName);x3dNode._nameSpace.doc.needRender=true;}};x3dom.requestFieldRef=function(fieldName)
{var x3dNode=this._x3domNode;if(x3dNode&&x3dNode._vf[fieldName])
{return x3dNode._vf[fieldName];}
return null;};x3dom.releaseFieldRef=function(fieldName)
{var x3dNode=this._x3domNode;if(x3dNode&&x3dNode._vf[fieldName])
{x3dNode.fieldChanged(fieldName);x3dNode._nameSpace.doc.needRender=true;}};x3dom.NodeNameSpace.prototype.setupTree=function(domNode){var n=null;if(x3dom.isX3DElement(domNode)){if(domNode._x3domNode){x3dom.debug.logWarning('Tree is already initialized');return null;}
if((domNode.tagName!==undefined)&&(!domNode.__addEventListener)&&(!domNode.__removeEventListener))
{domNode.__addEventListener=domNode.addEventListener;domNode.addEventListener=function(type,func,phase){if(!this._x3domNode._listeners[type]){this._x3domNode._listeners[type]=[];}
this._x3domNode._listeners[type].push(func);this.__addEventListener(type,func,phase);};domNode.__removeEventListener=domNode.removeEventListener;domNode.removeEventListener=function(type,func,phase){var list=this._x3domNode._listeners[type];if(list){for(var it=0;it<list.length;it++){if(list[it]==func){list.splice(it,1);}}}
this.__removeEventListener(type,func,phase);};}
if(domNode.hasAttribute('USE')||domNode.hasAttribute('use'))
{if(!domNode.hasAttribute('USE')){domNode.setAttribute('USE',domNode.getAttribute('use'));}
n=this.defMap[domNode.getAttribute('USE')];if(!n){var nsName=domNode.getAttribute('USE').split('__');if(nsName.length>=2){var otherNS=this;while(otherNS){if(otherNS.name==nsName[0])
n=otherNS.defMap[nsName[1]];if(n)
otherNS=null;else
otherNS=otherNS.parent;}
if(!n){n=null;x3dom.debug.logWarning('Could not USE: '+domNode.getAttribute('USE'));}}}
if(n){domNode._x3domNode=n;}
return n;}
else{if(domNode.localName.toLowerCase()==='route'){var route=domNode;var fnAtt=route.getAttribute('fromNode')||route.getAttribute('fromnode');var tnAtt=route.getAttribute('toNode')||route.getAttribute('tonode');var fromNode=this.defMap[fnAtt];var toNode=this.defMap[tnAtt];if(!(fromNode&&toNode)){x3dom.debug.logWarning("Broken route - can't find all DEFs for "+fnAtt+" -> "+tnAtt);}
else{fnAtt=route.getAttribute('fromField')||route.getAttribute('fromfield');tnAtt=route.getAttribute('toField')||route.getAttribute('tofield');fromNode.setupRoute(fnAtt,toNode,tnAtt);route._nodeNameSpace=this;}
return null;}
domNode.requestFieldRef=x3dom.requestFieldRef;domNode.releaseFieldRef=x3dom.releaseFieldRef;domNode.getFieldValue=x3dom.getFieldValue;domNode.setFieldValue=x3dom.setFieldValue;var nodeType=x3dom.nodeTypesLC[domNode.localName.toLowerCase()];if(nodeType===undefined){x3dom.debug.logWarning("Unrecognised X3D element &lt;"+domNode.localName+"&gt;.");}
else{if((x3dom.userAgentFeature.supportsDOMAttrModified===false)&&(domNode instanceof Element)){if(domNode.setAttribute&&!domNode.__setAttribute){domNode.__setAttribute=domNode.setAttribute;domNode.setAttribute=x3dom.setElementAttribute;}
if(domNode.getAttribute&&!domNode.__getAttribute){domNode.__getAttribute=domNode.getAttribute;domNode.getAttribute=x3dom.getElementAttribute;}
if(domNode.hasAttribute&&!domNode.__hasAttribute){domNode.__hasAttribute=domNode.hasAttribute;domNode.hasAttribute=x3dom.hasElementAttribute;}}
var ctx={doc:this.doc,xmlNode:domNode,nameSpace:this};n=new nodeType(ctx);if(domNode.hasAttribute('DEF')){n._DEF=domNode.getAttribute('DEF');this.defMap[n._DEF]=n;}
else{if(domNode.hasAttribute('id')){n._DEF=domNode.getAttribute('id');this.defMap[n._DEF]=n;}}
if(domNode.highlight===undefined)
{domNode.highlight=function(enable,colorStr){var color=x3dom.fields.SFColor.parse(colorStr);this._x3domNode.highlight(enable,color);this._x3domNode._nameSpace.doc.needRender=true;};}
n._xmlNode=domNode;domNode._x3domNode=n;var that=this;Array.forEach(domNode.childNodes,function(childDomNode){var c=that.setupTree(childDomNode);if(c){n.addChild(c,childDomNode.getAttribute("containerField"));}});n.nodeChanged();return n;}}}
else if(domNode.localName){x3dom.debug.logWarning("Unrecognised X3D element &lt;"+domNode.localName+"&gt;.");n=null;}
return n;};x3dom.registerNodeType("X3DNode","Core",defineClass(null,function(ctx){this._xmlNode=null;this._DEF=null;this._nameSpace=(ctx&&ctx.nameSpace)?ctx.nameSpace:null;this._vf={};this._vfFieldTypes={};this._cf={};this._cfFieldTypes={};this._fieldWatchers={};this._routes={};this._listeners={};this._parentNodes=[];this._childNodes=[];this.addField_SFNode('metadata',x3dom.nodeTypes.X3DMetadataObject);},{type:function(){return this.constructor;},typeName:function(){return this.constructor._typeName;},addChild:function(node,containerFieldName){if(node){var field=null;if(containerFieldName){field=this._cf[containerFieldName];}
else{for(var fieldName in this._cf){if(this._cf.hasOwnProperty(fieldName)){var testField=this._cf[fieldName];if(x3dom.isa(node,testField.type)){field=testField;break;}}}}
if(field&&field.addLink(node)){node._parentNodes.push(this);this._childNodes.push(node);node.parentAdded(this);return true;}}
return false;},removeChild:function(node){if(node){for(var fieldName in this._cf){if(this._cf.hasOwnProperty(fieldName)){var field=this._cf[fieldName];if(field.rmLink(node)){for(var i=node._parentNodes.length-1;i>=0;i--){if(node._parentNodes[i]===this){node._parentNodes.splice(i,1);node.parentRemoved(this);}}
for(var j=this._childNodes.length-1;j>=0;j--){if(this._childNodes[j]===node){node.onRemove();this._childNodes.splice(j,1);return true;}}}}}}
return false;},onRemove:function(){},parentAdded:function(parent){},parentRemoved:function(parent){for(var i=0,n=this._childNodes.length;i<n;i++){if(this._childNodes[i]){this._childNodes[i].parentRemoved(this);}}},getCurrentTransform:function(){if(this._parentNodes.length>=1){return this.transformMatrix(this._parentNodes[0].getCurrentTransform());}
else{return x3dom.fields.SFMatrix4f.identity();}},transformMatrix:function(transform){return transform;},getVolume:function(){return null;},invalidateVolume:function(){},invalidateCache:function(){},volumeValid:function(){return false;},collectDrawableObjects:function(transform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes){},highlight:function(enable,color)
{if(this._vf.hasOwnProperty("diffuseColor"))
{if(enable){if(this._actDiffuseColor===undefined){this._actDiffuseColor=new x3dom.fields.SFColor();this._highlightOn=false;}
if(!this._highlightOn){this._actDiffuseColor.setValues(this._vf.diffuseColor);this._highlightOn=true;}
this._vf.diffuseColor.setValues(color);}
else{if(this._actDiffuseColor!==undefined){this._vf.diffuseColor.setValues(this._actDiffuseColor);this._highlightOn=false;delete this._actDiffuseColor;}}}
for(var i=0,n=this._childNodes.length;i<n;i++)
{if(this._childNodes[i])
this._childNodes[i].highlight(enable,color);}},findX3DDoc:function(){return this._nameSpace.doc;},doIntersect:function(line){var isect=false;for(var i=0;i<this._childNodes.length;i++){if(this._childNodes[i]){isect=this._childNodes[i].doIntersect(line)||isect;}}
return isect;},postMessage:function(field,msg){this._vf[field]=msg;var listeners=this._fieldWatchers[field];var that=this;if(listeners){Array.forEach(listeners,function(l){l.call(that,msg);});}
var eventObject={target:that._xmlNode,type:"outputchange",fieldName:field,value:msg};this.callEvtHandler("onoutputchange",eventObject);},updateField:function(field,msg){var f=this._vf[field];if(f===undefined){for(var key in this._vf){if(key.toLowerCase()==field){field=key;f=this._vf[field];break;}}
var pre="set_";if(f===undefined&&field.indexOf(pre)==0){var fieldName=field.substr(pre.length,field.length-1);if(this._vf[fieldName]!==undefined){field=fieldName;f=this._vf[field];}}
if(f===undefined){f=null;this._vf[field]=f;}}
if(f!==null){try{this._vf[field].setValueByStr(msg);}
catch(exc1){try{switch((typeof(this._vf[field])).toString()){case"number":if(typeof(msg)=="number")
this._vf[field]=msg;else
this._vf[field]=+msg;break;case"boolean":if(typeof(msg)=="boolean")
this._vf[field]=msg;else
this._vf[field]=(msg.toLowerCase()=="true");break;case"string":this._vf[field]=msg;break;}}
catch(exc2){x3dom.debug.logError("updateField: setValueByStr() NYI for "+typeof(f));}}
this.fieldChanged(field);}},setupRoute:function(fromField,toNode,toField){var pos;var fieldName;var pre="set_",post="_changed";if(!this._vf[fromField]){pos=fromField.indexOf(pre);if(pos===0){fieldName=fromField.substr(pre.length,fromField.length-1);if(this._vf[fieldName]){fromField=fieldName;}}else{pos=fromField.indexOf(post);if(pos>0){fieldName=fromField.substr(0,fromField.length-post.length);if(this._vf[fieldName]){fromField=fieldName;}}}}
if(!toNode._vf[toField]){pos=toField.indexOf(pre);if(pos===0){fieldName=toField.substr(pre.length,toField.length-1);if(toNode._vf[fieldName]){toField=fieldName;}}
else{pos=toField.indexOf(post);if(pos>0){fieldName=toField.substr(0,toField.length-post.length);if(toNode._vf[fieldName]){toField=fieldName;}}}}
var where=this._DEF+"&"+fromField+"&"+toNode._DEF+"&"+toField;if(!this._routes[where]){if(!this._fieldWatchers[fromField]){this._fieldWatchers[fromField]=[];}
this._fieldWatchers[fromField].push(function(msg){toNode.postMessage(toField,msg);});if(!toNode._fieldWatchers[toField]){toNode._fieldWatchers[toField]=[];}
toNode._fieldWatchers[toField].push(function(msg){toNode._vf[toField]=msg;toNode.fieldChanged(toField);});this._routes[where]={from:this._fieldWatchers[fromField].length-1,to:toNode._fieldWatchers[toField].length-1};}},removeRoute:function(fromField,toNode,toField){var pos;var fieldName;var pre="set_",post="_changed";if(!this._vf[fromField]){pos=fromField.indexOf(pre);if(pos===0){fieldName=fromField.substr(pre.length,fromField.length-1);if(this._vf[fieldName]){fromField=fieldName;}}else{pos=fromField.indexOf(post);if(pos>0){fieldName=fromField.substr(0,fromField.length-post.length);if(this._vf[fieldName]){fromField=fieldName;}}}}
if(!toNode._vf[toField]){pos=toField.indexOf(pre);if(pos===0){fieldName=toField.substr(pre.length,toField.length-1);if(toNode._vf[fieldName]){toField=fieldName;}}
else{pos=toField.indexOf(post);if(pos>0){fieldName=toField.substr(0,toField.length-post.length);if(toNode._vf[fieldName]){toField=fieldName;}}}}
var where=this._DEF+"&"+fromField+"&"+toNode._DEF+"&"+toField;if(this._routes[where]){this._fieldWatchers[fromField].splice(this._routes[where].from,1);toNode._fieldWatchers[toField].splice(this._routes[where].to,1);delete this._routes[where];}},fieldChanged:function(fieldName){},nodeChanged:function(){},callEvtHandler:function(eventType,event){var node=this;if(!node._xmlNode){return event.cancelBubble;}
try{var attrib=node._xmlNode[eventType];event.target=node._xmlNode;if(typeof(attrib)==="function"){attrib.call(node._xmlNode,event);}
else{var funcStr=node._xmlNode.getAttribute(eventType);var func=new Function('event',funcStr);func.call(node._xmlNode,event);}
var list=node._listeners[event.type];if(list){for(var it=0;it<list.length;it++){list[it].call(node._xmlNode,event);}}}
catch(ex){x3dom.debug.logException(ex);}
return event.cancelBubble;},initSetter:function(xmlNode,name){if(!xmlNode||!name)
return;var nameLC=name.toLowerCase();if(xmlNode.__defineSetter__&&xmlNode.__defineGetter__){xmlNode.__defineSetter__(name,function(value){xmlNode.setAttribute(name,value);});xmlNode.__defineGetter__(name,function(){return xmlNode.getAttribute(name);});if(nameLC!=name){xmlNode.__defineSetter__(nameLC,function(value){xmlNode.setAttribute(name,value);});xmlNode.__defineGetter__(nameLC,function(){return xmlNode.getAttribute(name);});}}
else{Object.defineProperty(xmlNode,name,{set:function(value){xmlNode.setAttribute(name,value);},get:function(){return xmlNode.getAttribute(name);},configurable:true,enumerable:true});}
if(this._vf[name]&&!xmlNode.attributes[name]&&!xmlNode.attributes[name.toLowerCase()]){var str="";try{if(this._vf[name].toGL)
str=this._vf[name].toGL().toString();else
str=this._vf[name].toString();}
catch(e){str=this._vf[name].toString();}
if(!str){str="";}
xmlNode.setAttribute(name,str);}},addField_SFInt32:function(ctx,name,n){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?parseInt(ctx.xmlNode.getAttribute(name),10):n;if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="SFInt32";},addField_SFFloat:function(ctx,name,n){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?+ctx.xmlNode.getAttribute(name):n;if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="SFFloat";},addField_SFDouble:function(ctx,name,n){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?+ctx.xmlNode.getAttribute(name):n;if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="SFDouble";},addField_SFTime:function(ctx,name,n){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?+ctx.xmlNode.getAttribute(name):n;if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="SFTime";},addField_SFBool:function(ctx,name,n){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?ctx.xmlNode.getAttribute(name).toLowerCase()==="true":n;if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="SFBool";},addField_SFString:function(ctx,name,n){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?ctx.xmlNode.getAttribute(name):n;if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="SFString";},addField_SFColor:function(ctx,name,r,g,b){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?x3dom.fields.SFColor.parse(ctx.xmlNode.getAttribute(name)):new x3dom.fields.SFColor(r,g,b);if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="SFColor";},addField_SFColorRGBA:function(ctx,name,r,g,b,a){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?x3dom.fields.SFColorRGBA.parse(ctx.xmlNode.getAttribute(name)):new x3dom.fields.SFColorRGBA(r,g,b,a);if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="SFColorRGBA";},addField_SFVec2f:function(ctx,name,x,y){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?x3dom.fields.SFVec2f.parse(ctx.xmlNode.getAttribute(name)):new x3dom.fields.SFVec2f(x,y);if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="SFVec2f";},addField_SFVec3f:function(ctx,name,x,y,z){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?x3dom.fields.SFVec3f.parse(ctx.xmlNode.getAttribute(name)):new x3dom.fields.SFVec3f(x,y,z);if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="SFVec3f";},addField_SFVec4f:function(ctx,name,x,y,z,w){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?x3dom.fields.SFVec4f.parse(ctx.xmlNode.getAttribute(name)):new x3dom.fields.SFVec4f(x,y,z,w);if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="SFVec4f";},addField_SFVec3d:function(ctx,name,x,y,z){this.addField_SFVec3f(ctx,name,x,y,z);this._vfFieldTypes[name]="SFVec3d";},addField_SFRotation:function(ctx,name,x,y,z,a){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?x3dom.fields.Quaternion.parseAxisAngle(ctx.xmlNode.getAttribute(name)):x3dom.fields.Quaternion.axisAngle(new x3dom.fields.SFVec3f(x,y,z),a);if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="SFRotation";},addField_SFMatrix4f:function(ctx,name,_00,_01,_02,_03,_10,_11,_12,_13,_20,_21,_22,_23,_30,_31,_32,_33){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?x3dom.fields.SFMatrix4f.parse(ctx.xmlNode.getAttribute(name)):new x3dom.fields.SFMatrix4f(_00,_01,_02,_03,_10,_11,_12,_13,_20,_21,_22,_23,_30,_31,_32,_33);if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="SFMatrix4f";},addField_SFImage:function(ctx,name,def){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?x3dom.fields.SFImage.parse(ctx.xmlNode.getAttribute(name)):new x3dom.fields.SFImage(def);if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="SFImage";},addField_MFString:function(ctx,name,def){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?x3dom.fields.MFString.parse(ctx.xmlNode.getAttribute(name)):new x3dom.fields.MFString(def);if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="MFString";},addField_MFBoolean:function(ctx,name,def){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?x3dom.fields.MFBoolean.parse(ctx.xmlNode.getAttribute(name)):new x3dom.fields.MFBoolean(def);if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="MFBoolean";},addField_MFInt32:function(ctx,name,def){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?x3dom.fields.MFInt32.parse(ctx.xmlNode.getAttribute(name)):new x3dom.fields.MFInt32(def);if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="MFInt32";},addField_MFFloat:function(ctx,name,def){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?x3dom.fields.MFFloat.parse(ctx.xmlNode.getAttribute(name)):new x3dom.fields.MFFloat(def);if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="MFFloat";},addField_MFDouble:function(ctx,name,def){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?x3dom.fields.MFFloat.parse(ctx.xmlNode.getAttribute(name)):new x3dom.fields.MFFloat(def);if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="MFDouble";},addField_MFColor:function(ctx,name,def){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?x3dom.fields.MFColor.parse(ctx.xmlNode.getAttribute(name)):new x3dom.fields.MFColor(def);if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="MFColor";},addField_MFColorRGBA:function(ctx,name,def){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?x3dom.fields.MFColorRGBA.parse(ctx.xmlNode.getAttribute(name)):new x3dom.fields.MFColorRGBA(def);if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="MFColorRGBA";},addField_MFVec2f:function(ctx,name,def){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?x3dom.fields.MFVec2f.parse(ctx.xmlNode.getAttribute(name)):new x3dom.fields.MFVec2f(def);if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="MFVec2f";},addField_MFVec3f:function(ctx,name,def){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?x3dom.fields.MFVec3f.parse(ctx.xmlNode.getAttribute(name)):new x3dom.fields.MFVec3f(def);if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="MFVec3f";},addField_MFVec3d:function(ctx,name,def){this.addField_MFVec3f(ctx,name,def);this._vfFieldTypes[name]="MFVec3d";},addField_MFRotation:function(ctx,name,def){this._vf[name]=ctx&&ctx.xmlNode&&ctx.xmlNode.hasAttribute(name)?x3dom.fields.MFRotation.parse(ctx.xmlNode.getAttribute(name)):new x3dom.fields.MFRotation(def);if(ctx&&ctx.xmlNode){this.initSetter(ctx.xmlNode,name);}
this._vfFieldTypes[name]="MFRotation";},addField_SFNode:function(name,type){this._cf[name]=new x3dom.fields.SFNode(type);this._cfFieldTypes[name]="SFNode";},addField_MFNode:function(name,type){this._cf[name]=new x3dom.fields.MFNode(type);this._cfFieldTypes[name]="MFNode";}}));x3dom.registerNodeType("X3DMetadataObject","Core",defineClass(x3dom.nodeTypes.X3DNode,function(ctx){x3dom.nodeTypes.X3DMetadataObject.superClass.call(this,ctx);this.addField_SFString(ctx,'name',"");this.addField_SFString(ctx,'reference',"");}));x3dom.registerNodeType("MetadataBoolean","Core",defineClass(x3dom.nodeTypes.X3DMetadataObject,function(ctx){x3dom.nodeTypes.MetadataBoolean.superClass.call(this,ctx);this.addField_MFBoolean(ctx,'value',[]);}));x3dom.registerNodeType("MetadataDouble","Core",defineClass(x3dom.nodeTypes.X3DMetadataObject,function(ctx){x3dom.nodeTypes.MetadataDouble.superClass.call(this,ctx);this.addField_MFDouble(ctx,'value',[]);}));x3dom.registerNodeType("MetadataFloat","Core",defineClass(x3dom.nodeTypes.X3DMetadataObject,function(ctx){x3dom.nodeTypes.MetadataFloat.superClass.call(this,ctx);this.addField_MFFloat(ctx,'value',[]);}));x3dom.registerNodeType("MetadataInteger","Core",defineClass(x3dom.nodeTypes.X3DMetadataObject,function(ctx){x3dom.nodeTypes.MetadataInteger.superClass.call(this,ctx);this.addField_MFInt32(ctx,'value',[]);}));x3dom.registerNodeType("MetadataSet","Core",defineClass(x3dom.nodeTypes.X3DMetadataObject,function(ctx){x3dom.nodeTypes.MetadataSet.superClass.call(this,ctx);this.addField_MFNode('value',x3dom.nodeTypes.X3DMetadataObject);}));x3dom.registerNodeType("MetadataString","Core",defineClass(x3dom.nodeTypes.X3DMetadataObject,function(ctx){x3dom.nodeTypes.MetadataString.superClass.call(this,ctx);this.addField_MFString(ctx,'value',[]);}));x3dom.registerNodeType("Field","Core",defineClass(x3dom.nodeTypes.X3DNode,function(ctx){x3dom.nodeTypes.Field.superClass.call(this,ctx);this.addField_SFString(ctx,'name',"");this.addField_SFString(ctx,'type',"");this.addField_SFString(ctx,'value',"");},{fieldChanged:function(fieldName){var that=this;if(fieldName==='value'){Array.forEach(this._parentNodes,function(node){node.fieldChanged(that._vf.name);});}}}));x3dom.registerNodeType("X3DChildNode","Core",defineClass(x3dom.nodeTypes.X3DNode,function(ctx){x3dom.nodeTypes.X3DChildNode.superClass.call(this,ctx);}));x3dom.registerNodeType("X3DBindableNode","Core",defineClass(x3dom.nodeTypes.X3DChildNode,function(ctx){x3dom.nodeTypes.X3DBindableNode.superClass.call(this,ctx);this.addField_SFBool(ctx,'bind',false);this.addField_SFString(ctx,'description',"");this.addField_SFBool(ctx,'isActive',false);this._autoGen=(ctx&&ctx.autoGen?true:false);if(this._autoGen)
this._vf.description="default"+this.constructor.superClass._typeName;this._stack=null;},{bind:function(value){if(this._stack){if(value){this._stack.push(this);}
else{this._stack.pop(this);}}
else{x3dom.debug.logError('No BindStack in '+this.typeName()+'Bindable');}},activate:function(prev){this.postMessage('isActive',true);x3dom.debug.logInfo('activate '+this.typeName()+'Bindable '+
this._DEF+'/'+this._vf.description);},deactivate:function(prev){this.postMessage('isActive',false);x3dom.debug.logInfo('deactivate '+this.typeName()+'Bindable '+
this._DEF+'/'+this._vf.description);},fieldChanged:function(fieldName){if(fieldName.indexOf("bind")>=0){this.bind(this._vf.bind);}},nodeChanged:function(){this._stack=this._nameSpace.doc._bindableBag.addBindable(this);}}));x3dom.registerNodeType("X3DInfoNode","Core",defineClass(x3dom.nodeTypes.X3DChildNode,function(ctx){x3dom.nodeTypes.X3DInfoNode.superClass.call(this,ctx);}));x3dom.registerNodeType("WorldInfo","Core",defineClass(x3dom.nodeTypes.X3DInfoNode,function(ctx){x3dom.nodeTypes.WorldInfo.superClass.call(this,ctx);this.addField_MFString(ctx,'info',[]);this.addField_SFString(ctx,'title',"");x3dom.debug.logInfo(this._vf.info);x3dom.debug.logInfo(this._vf.title);}));x3dom.registerNodeType("X3DSensorNode","Core",defineClass(x3dom.nodeTypes.X3DChildNode,function(ctx){x3dom.nodeTypes.X3DSensorNode.superClass.call(this,ctx);this.addField_SFBool(ctx,'enabled',true);}));x3dom.registerNodeType("Param","Core",defineClass(x3dom.nodeTypes.X3DNode,function(ctx){x3dom.nodeTypes.Param.superClass.call(this,ctx);x3dom.debug.logWarning('DEPRECATED: Param element needs to be child of X3D element '
+'[<a href="http://x3dom.org/docs/latest/configuration.html">DOCS</a>]');}));x3dom.registerNodeType("X3DBoundedObject","Grouping",defineClass(x3dom.nodeTypes.X3DChildNode,function(ctx){x3dom.nodeTypes.X3DBoundedObject.superClass.call(this,ctx);this.addField_SFBool(ctx,'render',true);this.addField_SFVec3f(ctx,'bboxCenter',0,0,0);this.addField_SFVec3f(ctx,'bboxSize',-1,-1,-1);this._graph={boundedNode:this,localMatrix:x3dom.fields.SFMatrix4f.identity(),globalMatrix:null,volume:new x3dom.fields.BoxVolume(),worldVolume:new x3dom.fields.BoxVolume(),center:new x3dom.fields.SFVec3f(0,0,0),coverage:-1,needCulling:true};},{fieldChanged:function(fieldName){if(this._vf.hasOwnProperty(fieldName)){this.invalidateVolume();}},nodeChanged:function(){this.invalidateVolume();},parentAdded:function(parent){this.invalidateVolume();},getVolume:function()
{var vol=this._graph.volume;if(!this.volumeValid()&&this._vf.render)
{for(var i=0,n=this._childNodes.length;i<n;i++)
{var child=this._childNodes[i];if(!child||child._vf.render!==true)
continue;var childVol=child.getVolume();if(childVol&&childVol.isValid())
vol.extendBounds(childVol.min,childVol.max);}}
return vol;},invalidateVolume:function()
{var graph=this._graph;graph.volume.invalidate();graph.worldVolume.invalidate();graph.globalMatrix=null;for(var i=0,n=this._parentNodes.length;i<n;i++){var node=this._parentNodes[i];if(node&&node.volumeValid())
node.invalidateVolume();}},invalidateCache:function()
{var graph=this._graph;graph.worldVolume.invalidate();graph.globalMatrix=null;},cacheInvalid:function()
{return(this._graph.globalMatrix==null||!this._graph.worldVolume.isValid());},volumeValid:function()
{return this._graph.volume.isValid();},graphState:function()
{return this._graph;},forceUpdateCoverage:function()
{return false;}}));x3dom.registerNodeType("X3DGroupingNode","Grouping",defineClass(x3dom.nodeTypes.X3DBoundedObject,function(ctx){x3dom.nodeTypes.X3DGroupingNode.superClass.call(this,ctx);this.addField_MFNode('children',x3dom.nodeTypes.X3DChildNode);},{collectDrawableObjects:function(transform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes)
{if(singlePath&&(this._parentNodes.length>1))
singlePath=false;if(singlePath&&(invalidateCache=invalidateCache||this.cacheInvalid()))
this.invalidateCache();planeMask=drawableCollection.cull(transform,this.graphState(),singlePath,planeMask);if(planeMask<=0){return;}
var cnode,childTransform;if(singlePath){if(!this._graph.globalMatrix){this._graph.globalMatrix=this.transformMatrix(transform);}
childTransform=this._graph.globalMatrix;}
else{childTransform=this.transformMatrix(transform);}
var n=this._childNodes.length;if(x3dom.nodeTypes.ClipPlane.count>0){var localClipPlanes=[];for(var j=0;j<n;j++){if((cnode=this._childNodes[j])){if(x3dom.isa(cnode,x3dom.nodeTypes.ClipPlane)&&cnode._vf.on&&cnode._vf.enabled){localClipPlanes.push({plane:cnode,trafo:childTransform});}}}
clipPlanes=localClipPlanes.concat(clipPlanes);}
for(var i=0;i<n;i++){if((cnode=this._childNodes[i])){cnode.collectDrawableObjects(childTransform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes);}}}}));x3dom.registerNodeType("Switch","Grouping",defineClass(x3dom.nodeTypes.X3DGroupingNode,function(ctx){x3dom.nodeTypes.Switch.superClass.call(this,ctx);this.addField_SFInt32(ctx,'whichChoice',-1);},{fieldChanged:function(fieldName){if(fieldName=="whichChoice"){this.invalidateVolume();}},getVolume:function()
{var vol=this._graph.volume;if(!this.volumeValid()&&this._vf.render)
{if(this._vf.whichChoice>=0&&this._vf.whichChoice<this._childNodes.length)
{var child=this._childNodes[this._vf.whichChoice];var childVol=(child&&child._vf.render===true)?child.getVolume():null;if(childVol&&childVol.isValid())
vol.extendBounds(childVol.min,childVol.max);}}
return vol;},collectDrawableObjects:function(transform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes)
{if(singlePath&&(this._parentNodes.length>1))
singlePath=false;if(singlePath&&(invalidateCache=invalidateCache||this.cacheInvalid()))
this.invalidateCache();if(this._vf.whichChoice<0||this._vf.whichChoice>=this._childNodes.length||(planeMask=drawableCollection.cull(transform,this.graphState(),singlePath,planeMask))<=0){return;}
var cnode,childTransform;if(singlePath){if(!this._graph.globalMatrix){this._graph.globalMatrix=this.transformMatrix(transform);}
childTransform=this._graph.globalMatrix;}
else{childTransform=this.transformMatrix(transform);}
if((cnode=this._childNodes[this._vf.whichChoice])){cnode.collectDrawableObjects(childTransform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes);}},doIntersect:function(line)
{if(this._vf.whichChoice<0||this._vf.whichChoice>=this._childNodes.length){return false;}
var child=this._childNodes[this._vf.whichChoice];if(child){return child.doIntersect(line);}
return false;}}));x3dom.registerNodeType("X3DTransformNode","Grouping",defineClass(x3dom.nodeTypes.X3DGroupingNode,function(ctx){x3dom.nodeTypes.X3DTransformNode.superClass.call(this,ctx);if(ctx)
ctx.doc._nodeBag.trans.push(this);else
x3dom.debug.logWarning("X3DTransformNode: No runtime context found!");this._trafo=null;this._needCssStyleUpdates=true;},{tick:function(t)
{var dom=this._xmlNode;if(dom&&(dom['ontransform']||dom.hasAttribute('ontransform')||this._listeners['transform'])){var transMatrix=this.getCurrentTransform();var event={target:dom,type:'transform',worldX:transMatrix._03,worldY:transMatrix._13,worldZ:transMatrix._23,cancelBubble:false,stopPropagation:function(){this.cancelBubble=true;}};this.callEvtHandler("ontransform",event);}
if(this._needCssStyleUpdates&&dom){var trans=x3dom.getStyle(dom,"-webkit-transform")||x3dom.getStyle(dom,"-moz-transform")||x3dom.getStyle(dom,"-ms-transform")||x3dom.getStyle(dom,"transform");if(trans&&(trans!='none')){this._trafo.setValueByStr(trans);this.invalidateVolume();return true;}
this._needCssStyleUpdates=false;}
return false;},transformMatrix:function(transform){return transform.mult(this._trafo);},getVolume:function()
{var vol=this._graph.volume;if(!this.volumeValid()&&this._vf.render)
{this._graph.localMatrix=this._trafo;for(var i=0,n=this._childNodes.length;i<n;i++)
{var child=this._childNodes[i];if(!child||child._vf.render!==true)
continue;var childVol=child.getVolume();if(childVol&&childVol.isValid())
vol.extendBounds(childVol.min,childVol.max);}
if(vol.isValid())
vol.transform(this._trafo);}
return vol;},doIntersect:function(line)
{var isect=false;var mat=this._trafo.inverse();var tmpPos=new x3dom.fields.SFVec3f(line.pos.x,line.pos.y,line.pos.z);var tmpDir=new x3dom.fields.SFVec3f(line.dir.x,line.dir.y,line.dir.z);line.pos=mat.multMatrixPnt(line.pos);line.dir=mat.multMatrixVec(line.dir);if(line.hitObject){line.dist*=line.dir.length();}
for(var i=0;i<this._childNodes.length;i++)
{if(this._childNodes[i]){isect=this._childNodes[i].doIntersect(line)||isect;}}
line.pos.setValues(tmpPos);line.dir.setValues(tmpDir);if(isect){line.hitPoint=this._trafo.multMatrixPnt(line.hitPoint);line.dist*=line.dir.length();}
return isect;},parentRemoved:function(parent)
{var i,n;if(this._parentNodes.length==0){var doc=this.findX3DDoc();for(i=0,n=doc._nodeBag.trans.length;i<n;i++){if(doc._nodeBag.trans[i]===this){doc._nodeBag.trans.splice(i,1);}}}
for(i=0,n=this._childNodes.length;i<n;i++){if(this._childNodes[i]){this._childNodes[i].parentRemoved(this);}}}}));x3dom.registerNodeType("Transform","Grouping",defineClass(x3dom.nodeTypes.X3DTransformNode,function(ctx){x3dom.nodeTypes.Transform.superClass.call(this,ctx);this.addField_SFVec3f(ctx,'center',0,0,0);this.addField_SFVec3f(ctx,'translation',0,0,0);this.addField_SFRotation(ctx,'rotation',0,0,1,0);this.addField_SFVec3f(ctx,'scale',1,1,1);this.addField_SFRotation(ctx,'scaleOrientation',0,0,1,0);this._trafo=x3dom.fields.SFMatrix4f.translation(this._vf.translation.add(this._vf.center)).mult(this._vf.rotation.toMatrix()).mult(this._vf.scaleOrientation.toMatrix()).mult(x3dom.fields.SFMatrix4f.scale(this._vf.scale)).mult(this._vf.scaleOrientation.toMatrix().inverse()).mult(x3dom.fields.SFMatrix4f.translation(this._vf.center.negate()));},{fieldChanged:function(fieldName)
{if(fieldName=="center"||fieldName=="translation"||fieldName=="rotation"||fieldName=="scale"||fieldName=="scaleOrientation")
{this._trafo=x3dom.fields.SFMatrix4f.translation(this._vf.translation.add(this._vf.center)).mult(this._vf.rotation.toMatrix()).mult(this._vf.scaleOrientation.toMatrix()).mult(x3dom.fields.SFMatrix4f.scale(this._vf.scale)).mult(this._vf.scaleOrientation.toMatrix().inverse()).mult(x3dom.fields.SFMatrix4f.translation(this._vf.center.negate()));this.invalidateVolume();}
else if(fieldName=="render"){this.invalidateVolume();}}}));x3dom.registerNodeType("MatrixTransform","Grouping",defineClass(x3dom.nodeTypes.X3DTransformNode,function(ctx){x3dom.nodeTypes.MatrixTransform.superClass.call(this,ctx);this.addField_SFMatrix4f(ctx,'matrix',1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);this._trafo=this._vf.matrix.transpose();},{fieldChanged:function(fieldName){if(fieldName=="matrix"){this._trafo=this._vf.matrix.transpose();this.invalidateVolume();}
else if(fieldName=="render"){this.invalidateVolume();}}}));x3dom.registerNodeType("Group","Grouping",defineClass(x3dom.nodeTypes.X3DGroupingNode,function(ctx){x3dom.nodeTypes.Group.superClass.call(this,ctx);}));x3dom.registerNodeType("Block","Grouping",defineClass(x3dom.nodeTypes.X3DGroupingNode,function(ctx){x3dom.nodeTypes.Block.superClass.call(this,ctx);this.addField_MFString(ctx,'nameSpaceName',[]);}));x3dom.registerNodeType("StaticGroup","Grouping",defineClass(x3dom.nodeTypes.X3DGroupingNode,function(ctx){x3dom.nodeTypes.StaticGroup.superClass.call(this,ctx);x3dom.debug.logWarning("StaticGroup erroneously also bakes parent transforms, if happens use Group node!");this.addField_SFBool(ctx,'debug',false);this.addField_SFBool(ctx,'showDebugBoxVolumes',false);this.addField_SFString(ctx,'bvhType','jsBIH');this.addField_SFInt32(ctx,'maxObjectsPerNode',1);this.addField_SFInt32(ctx,'maxDepth',-1);this.addField_SFFloat(ctx,'minRelativeBBoxSize',0.01);this.needBvhRebuild=true;this.drawableCollection=null;this.bvh=null;},{getMaxDepth:function()
{if(this._vf.maxDepth==-1)
{return(this._vf.bvhType==('jsBIH'||'BIH'))?50:4;}
return this._vf.maxDepth;},collectDrawableObjects:function(transform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes)
{if(singlePath&&(this._parentNodes.length>1))
singlePath=false;if(singlePath&&(invalidateCache=invalidateCache||this.cacheInvalid()))
this.invalidateCache();planeMask=drawableCollection.cull(transform,this.graphState(),singlePath,planeMask);if(planeMask<=0){return;}
var cnode,childTransform;if(singlePath){if(!this._graph.globalMatrix){this._graph.globalMatrix=this.transformMatrix(transform);}
childTransform=this._graph.globalMatrix;}
else{childTransform=this.transformMatrix(transform);}
if(this.needBvhRebuild)
{var drawableCollectionConfig={viewArea:drawableCollection.viewarea,sortTrans:drawableCollection.sortTrans,viewMatrix:drawableCollection.viewMatrix,projMatrix:drawableCollection.projMatrix,sceneMatrix:drawableCollection.sceneMatrix,frustumCulling:false,smallFeatureThreshold:0,context:drawableCollection.context};this.drawableCollection=new x3dom.DrawableCollection(drawableCollectionConfig);var i,n=this._childNodes.length;for(i=0;i<n;i++){if((cnode=this._childNodes[i])){cnode.collectDrawableObjects(childTransform,this.drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes);}}
this.drawableCollection.concat();var scene=this._nameSpace.doc._scene;var bvhSettings=new x3dom.bvh.Settings(this._vf.debug,this._vf.showDebugBoxVolumes,this._vf.bvhType,this._vf.maxObjectsPerNode,this.getMaxDepth(),this._vf.minRelativeBBoxSize);this.bvh=(this._vf.bvhType=='jsBIH')?new x3dom.bvh.BIH(scene,bvhSettings):new x3dom.bvh.Culler(this.drawableCollection,scene,bvhSettings);if(this._vf.debug||this._vf.showDebugBoxVolumes)
this.bvh=new x3dom.bvh.DebugDecorator(this.bvh,scene,bvhSettings);n=this.drawableCollection.length;for(i=0;i<n;i++)
{this.bvh.addDrawable(this.drawableCollection.get(i))}
this.bvh.compile();if(this._vf.debug)
this.bvh.showCompileStats();this.needBvhRebuild=false;}
x3dom.Utils.startMeasure('bvhTraverse');this.bvh.collectDrawables(drawableCollection);var dt=x3dom.Utils.stopMeasure('bvhTraverse');this._nameSpace.doc.ctx.x3dElem.runtime.addMeasurement('BVH',dt);this.bvh.showTraverseStats(this._nameSpace.doc.ctx.x3dElem.runtime);}}));x3dom.registerNodeType("RemoteSelectionGroup","Grouping",defineClass(x3dom.nodeTypes.X3DGroupingNode,function(ctx){x3dom.nodeTypes.RemoteSelectionGroup.superClass.call(this,ctx);this.addField_MFString(ctx,'url',["ws://localhost:35668/cstreams/0"]);this.addField_MFString(ctx,'label',[]);this.addField_SFInt32(ctx,'maxRenderedIds',-1);this.addField_SFBool(ctx,'reconnect',true);this.addField_SFFloat(ctx,'scaleRenderedIdsOnMove',1.0);this.addField_SFBool(ctx,'enableCulling',true);this.addField_MFString(ctx,'invisibleNodes',[]);this._idList=[];this._websocket=null;this._nameObjMap={};this._createTime=[];this._visibleList=[];if(ctx)
this.initializeSocket();else
x3dom.debug.logWarning("RemoteSelectionGroup: No runtime context found!");},{initializeSocket:function()
{var that=this;if("WebSocket"in window)
{var wsUrl="ws://localhost:35668/cstreams/0";if(this._vf.url.length&&this._vf.url[0].length)
wsUrl=this._vf.url[0];this._websocket=new WebSocket(wsUrl);this._websocket._lastMsg=null;this._websocket._lastData="";this._websocket.onopen=function(evt)
{x3dom.debug.logInfo("WS Connected");var view=that._nameSpace.doc._viewarea.getViewMatrix();this._lastMsg=view.toGL().toString();view=that._nameSpace.doc._viewarea.getProjectionMatrix();this._lastMsg+=(","+view.toGL().toString());this.send(this._lastMsg);x3dom.debug.logInfo("WS Sent: "+this._lastMsg);this._lastMsg="";this._lastData="";};this._websocket.onclose=function(evt)
{x3dom.debug.logInfo("WS Disconnected");if(that._vf.reconnect)
{window.setTimeout(function(){that.initializeSocket();},2000);}};this._websocket.onmessage=function(evt)
{if(that._vf.maxRenderedIds<0)
{that._idList=x3dom.fields.MFString.parse(evt.data);}
else if(that._vf.maxRenderedIds>0)
{that._idList=[];var arr=x3dom.fields.MFString.parse(evt.data);var n=Math.min(arr.length,Math.abs(that._vf.maxRenderedIds));for(var i=0;i<n;++i){that._idList[i]=arr[i];}}
if(that._vf.maxRenderedIds!=0&&this._lastData!=evt.data)
{this._lastData=evt.data;that._nameSpace.doc.needRender=true;that.invalidateVolume();}};this._websocket.onerror=function(evt)
{x3dom.debug.logError(evt.data);};this._websocket.updateCamera=function()
{var view=that._nameSpace.doc._viewarea.getViewMatrix();var message=view.toGL().toString();view=that._nameSpace.doc._viewarea.getProjectionMatrix();message+=(","+view.toGL().toString());if(this._lastMsg!=null&&this._lastMsg!=message)
{this._lastMsg=message;this.send(message);}};}
else
{x3dom.debug.logError("Browser has no WebSocket support!");}},nodeChanged:function()
{var n=this._vf.label.length;this._nameObjMap={};this._createTime=new Array(n);this._visibleList=new Array(n);for(var i=0;i<n;++i)
{var shape=this._childNodes[i];if(shape&&x3dom.isa(shape,x3dom.nodeTypes.X3DShapeNode))
{this._nameObjMap[this._vf.label[i]]={shape:shape,pos:i};this._visibleList[i]=true;}
else{this._visibleList[i]=false;x3dom.debug.logError("Invalid children: "+this._vf.label[i]);}
this._createTime[i]=0;}
this.invalidateVolume();x3dom.debug.logInfo("RemoteSelectionGroup has "+n+" entries.");},fieldChanged:function(fieldName)
{if(fieldName=="url")
{if(this._websocket){this._websocket.close();this._websocket=null;}
this.initializeSocket();}
else if(fieldName=="invisibleNodes")
{for(var i=0,n=this._vf.label.length;i<n;++i)
{var shape=this._childNodes[i];if(shape&&x3dom.isa(shape,x3dom.nodeTypes.X3DShapeNode))
{this._visibleList[i]=true;for(var j=0,numInvis=this._vf.invisibleNodes.length;j<numInvis;++j)
{var nodeName=this._vf.invisibleNodes[j];var starInd=nodeName.lastIndexOf('*');var matchNameBegin=false;if(starInd>0){nodeName=nodeName.substring(0,starInd);matchNameBegin=true;}
if(nodeName.length<=1)
continue;if((matchNameBegin&&this._vf.label[i].indexOf(nodeName)==0)||this._vf.label[i]==nodeName){this._visibleList[i]=false;break;}}}
else{this._visibleList[i]=false;}}
this.invalidateVolume();}
else if(fieldName=="render"){this.invalidateVolume();}},getNumRenderedObjects:function(len,isMoving)
{var n=len;if(this._vf.maxRenderedIds>0)
{var num=Math.max(this._vf.maxRenderedIds,16);var scale=1;if(isMoving)
scale=Math.min(this._vf.scaleRenderedIdsOnMove,1);num=Math.max(Math.round(scale*num),0);n=Math.min(n,num);}
return n;},collectDrawableObjects:function(transform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes)
{if(singlePath&&(this._parentNodes.length>1))
singlePath=false;if(singlePath&&(invalidateCache=invalidateCache||this.cacheInvalid()))
this.invalidateCache();planeMask=drawableCollection.cull(transform,this.graphState(),singlePath,planeMask);if(planeMask<=0){return;}
var viewarea=this._nameSpace.doc._viewarea;var isMoving=viewarea.isMovingOrAnimating();var ts=new Date().getTime();var maxLiveTime=10000;var i,n,numChild=this._childNodes.length;if(!this._vf.enableCulling)
{n=this.getNumRenderedObjects(numChild,isMoving);var cnt=0;for(i=0;i<numChild;i++)
{var shape=this._childNodes[i];if(shape)
{var needCleanup=true;if(this._visibleList[i]&&cnt<n&&shape.collectDrawableObjects(transform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes))
{this._createTime[i]=ts;cnt++;needCleanup=false;}
if(needCleanup&&!isMoving&&this._createTime[i]>0&&ts-this._createTime[i]>maxLiveTime&&shape._cleanupGLObjects)
{shape._cleanupGLObjects(true);this._createTime[i]=0;}}}
return;}
if(this._websocket)
this._websocket.updateCamera();if(this._vf.label.length)
{n=this.getNumRenderedObjects(this._idList.length,isMoving);for(i=0;i<n;i++)
{var obj=this._nameObjMap[this._idList[i]];if(obj&&obj.shape){obj.shape.collectDrawableObjects(transform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes);this._createTime[obj.pos]=ts;}
else
x3dom.debug.logError("Invalid label: "+this._idList[i]);}
for(i=0;i<this._childNodes.length;i++)
{if(this._childNodes[i]&&!isMoving&&this._createTime[i]>0&&ts-this._createTime[i]>maxLiveTime&&this._childNodes[i]._cleanupGLObjects)
{this._childNodes[i]._cleanupGLObjects(true);this._createTime[i]=0;}}}}}));x3dom.registerNodeType("Scene","Grouping",defineClass(x3dom.nodeTypes.X3DGroupingNode,function(ctx){x3dom.nodeTypes.Scene.superClass.call(this,ctx);this.addField_SFString(ctx,'pickMode',"idBuf");this.addField_SFBool(ctx,'doPickPass',true);this.addField_SFString(ctx,'shadowObjectIdMapping',"");this._lastMin=new x3dom.fields.SFVec3f(0,0,0);this._lastMax=new x3dom.fields.SFVec3f(1,1,1);this._shadowIdMap=null;this.loadMapping();this._multiPartMap=null;},{fieldChanged:function(fieldName)
{if(fieldName=="shadowObjectIdMapping")
{this.loadMapping();}},updateVolume:function()
{var vol=this.getVolume();if(vol.isValid())
{this._lastMin=x3dom.fields.SFVec3f.copy(vol.min);this._lastMax=x3dom.fields.SFVec3f.copy(vol.max);}},loadMapping:function()
{this._shadowIdMap=null;if(this._vf.shadowObjectIdMapping.length==0){return;}
var that=this;var xhr=new XMLHttpRequest();xhr.open("GET",this._nameSpace.getURL(this._vf.shadowObjectIdMapping),true);xhr.send();xhr.onload=function()
{that._shadowIdMap=eval("("+xhr.response+")");if(!that._shadowIdMap||!that._shadowIdMap.mapping){x3dom.debug.logWarning("Invalid ID map: "+that._vf.shadowObjectIdMapping);}
else{x3dom.debug.assert(that._shadowIdMap.maxID<=that._shadowIdMap.mapping.length,"Too few ID map entries in "+that._vf.shadowObjectIdMapping+", "+"length of mapping array is only "+that._shadowIdMap.mapping.length+" instead of "+that._shadowIdMap.ids.length+"!");}};}}));x3dom.BindableStack=function(doc,type,defaultType,getter){this._doc=doc;this._type=type;this._defaultType=defaultType;this._defaultRoot=null;this._getter=getter;this._bindBag=[];this._bindStack=[];};x3dom.BindableStack.prototype.top=function(){return((this._bindStack.length>0)?this._bindStack[this._bindStack.length-1]:null);};x3dom.BindableStack.prototype.push=function(bindable){var top=this.top();if(top===bindable){return;}
if(top){top.deactivate();}
this._bindStack.push(bindable);bindable.activate(top);};x3dom.BindableStack.prototype.replaceTop=function(bindable){var top=this.top();if(top===bindable){return;}
if(top){top.deactivate();this._bindStack[this._bindStack.length-1]=bindable;bindable.activate(top);}};x3dom.BindableStack.prototype.pop=function(bindable){var top;if(bindable){top=this.top();if(bindable!==top){return null;}}
top=this._bindStack.pop();if(top){top.deactivate();}
return top;};x3dom.BindableStack.prototype.switchTo=function(target){var last=this.getActive();var n=this._bindBag.length;var toBind=0;var i=0,lastIndex=-1;if(n<=1){return;}
switch(target)
{case'first':toBind=this._bindBag[0];break;case'last':toBind=this._bindBag[n-1];break;default:for(i=0;i<n;i++){if(this._bindBag[i]==last){lastIndex=i;break;}}
if(lastIndex>=0){i=lastIndex;while(!toBind){if(target=='next'){i=(i<(n-1))?(i+1):0;}else{i=(i>0)?(i-1):(n-1);}
if(i==lastIndex){break;}
if(this._bindBag[i]._vf.description.length>=0){toBind=this._bindBag[i];}}}
break;}
if(toBind){this.replaceTop(toBind);}else{x3dom.debug.logWarning('Cannot switch bindable; no other bindable with description found.');}};x3dom.BindableStack.prototype.getActive=function(){if(this._bindStack.length===0){if(this._bindBag.length===0){if(this._defaultRoot){x3dom.debug.logInfo('create new '+this._defaultType._typeName+' for '+this._type._typeName+'-stack');var obj=new this._defaultType({doc:this._doc,nameSpace:this._defaultRoot._nameSpace,autoGen:true});this._defaultRoot.addChild(obj);obj.nodeChanged();}
else{x3dom.debug.logError('stack without defaultRoot');}}
else{x3dom.debug.logInfo('activate first '+this._type._typeName+' for '+this._type._typeName+'-stack');}
this._bindStack.push(this._bindBag[0]);this._bindBag[0].activate();}
return this._bindStack[this._bindStack.length-1];};x3dom.BindableBag=function(doc){this._stacks=[];this.addType("X3DViewpointNode","Viewpoint","getViewpoint",doc);this.addType("X3DNavigationInfoNode","NavigationInfo","getNavigationInfo",doc);this.addType("X3DBackgroundNode","Background","getBackground",doc);this.addType("X3DFogNode","Fog","getFog",doc);this.addType("X3DEnvironmentNode","Environment","getEnvironment",doc);};x3dom.BindableBag.prototype.addType=function(typeName,defaultTypeName,getter,doc){var type=x3dom.nodeTypes[typeName];var defaultType=x3dom.nodeTypes[defaultTypeName];if(type&&defaultType){var stack=new x3dom.BindableStack(doc,type,defaultType,getter);this._stacks.push(stack);}
else{x3dom.debug.logWarning('Invalid Bindable type/defaultType: '+
typeName+'/'+defaultType);}};x3dom.BindableBag.prototype.setRefNode=function(node){Array.forEach(this._stacks,function(stack){stack._defaultRoot=node;node[stack._getter]=function(){return stack.getActive();};});};x3dom.BindableBag.prototype.addBindable=function(node){for(var i=0,n=this._stacks.length;i<n;i++){var stack=this._stacks[i];if(x3dom.isa(node,stack._type)){x3dom.debug.logInfo('register '+node.typeName()+'Bindable '+
node._DEF+'/'+node._vf.description);stack._bindBag.push(node);var top=stack.top();if(top&&top._autoGen){stack.replaceTop(node);for(var j=0,m=stack._bindBag.length;j<m;j++){if(stack._bindBag[j]===top){stack._bindBag.splice(j,1);break;}}
stack._defaultRoot.removeChild(top);}
return stack;}}
x3dom.debug.logError(node.typeName()+' is not a valid bindable');return null;};x3dom.registerNodeType("X3DGeometryNode","Rendering",defineClass(x3dom.nodeTypes.X3DNode,function(ctx){x3dom.nodeTypes.X3DGeometryNode.superClass.call(this,ctx);this.addField_SFBool(ctx,'solid',true);this.addField_SFBool(ctx,'ccw',true);this.addField_SFBool(ctx,'useGeoCache',true);this.addField_SFBool(ctx,'lit',true);this._mesh=new x3dom.Mesh(this);},{getVolume:function(){return this._mesh.getVolume();},invalidateVolume:function(){this._mesh.invalidate();},getCenter:function(){return this._mesh.getCenter();},getDiameter:function(){return this._mesh.getDiameter();},doIntersect:function(line){return this._mesh.doIntersect(line);},forceUpdateCoverage:function(){return false;},hasIndexOffset:function(){return false;},getColorTexture:function(){return null;},getColorTextureURL:function(){return null;},parentAdded:function(parent){if(x3dom.isa(parent,x3dom.nodeTypes.X3DShapeNode)){if(parent._cleanupGLObjects){parent._cleanupGLObjects(true);}
parent.setAllDirty();parent.invalidateVolume();}},needLighting:function(){var hasTris=this._mesh._primType.indexOf("TRIANGLE")>=0;return(this._vf.lit&&hasTris);}}));x3dom.registerNodeType("Mesh","Rendering",defineClass(x3dom.nodeTypes.X3DGeometryNode,function(ctx){x3dom.nodeTypes.Mesh.superClass.call(this,ctx);this.addField_SFString(ctx,'primType',"triangle");this.addField_MFInt32(ctx,'index',[]);this.addField_MFNode('vertexAttributes',x3dom.nodeTypes.X3DVertexAttributeNode);},{nodeChanged:function()
{var time0=new Date().getTime();var i,n=this._cf.vertexAttributes.nodes.length;for(i=0;i<n;i++)
{var name=this._cf.vertexAttributes.nodes[i]._vf.name;switch(name.toLowerCase())
{case"position":this._mesh._positions[0]=this._cf.vertexAttributes.nodes[i]._vf.value.toGL();break;case"normal":this._mesh._normals[0]=this._cf.vertexAttributes.nodes[i]._vf.value.toGL();break;case"texcoord":this._mesh._texCoords[0]=this._cf.vertexAttributes.nodes[i]._vf.value.toGL();break;case"color":this._mesh._colors[0]=this._cf.vertexAttributes.nodes[i]._vf.value.toGL();break;default:this._mesh._dynamicFields[name]={};this._mesh._dynamicFields[name].numComponents=this._cf.vertexAttributes.nodes[i]._vf.numComponents;this._mesh._dynamicFields[name].value=this._cf.vertexAttributes.nodes[i]._vf.value.toGL();break;}}
this._mesh._indices[0]=this._vf.index.toGL();this.invalidateVolume();this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;var time1=new Date().getTime()-time0;x3dom.debug.logWarning("Mesh load time: "+time1+" ms");}}));x3dom.registerNodeType("PointSet","Rendering",defineClass(x3dom.nodeTypes.X3DGeometryNode,function(ctx){x3dom.nodeTypes.PointSet.superClass.call(this,ctx);this.addField_SFNode('coord',x3dom.nodeTypes.X3DCoordinateNode);this.addField_SFNode('color',x3dom.nodeTypes.X3DColorNode);this._mesh._primType='POINTS';},{nodeChanged:function()
{var time0=new Date().getTime();var coordNode=this._cf.coord.node;x3dom.debug.assert(coordNode,"PointSet without coord node!");var positions=coordNode.getPoints();var numColComponents=3;var colorNode=this._cf.color.node;var colors=new x3dom.fields.MFColor();if(colorNode){colors=colorNode._vf.color;x3dom.debug.assert(positions.length==colors.length,"Size of color and coord array differs!");if(x3dom.isa(colorNode,x3dom.nodeTypes.ColorRGBA)){numColComponents=4;}}
this._mesh._numColComponents=numColComponents;this._mesh._lit=false;this._mesh._indices[0]=[];this._mesh._positions[0]=positions.toGL();this._mesh._colors[0]=colors.toGL();this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];this.invalidateVolume();this._mesh._numCoords=this._mesh._positions[0].length/3;var time1=new Date().getTime()-time0;},fieldChanged:function(fieldName)
{var pnts=null;if(fieldName=="coord")
{pnts=this._cf.coord.node.getPoints();this._mesh._positions[0]=pnts.toGL();this.invalidateVolume();Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;node.invalidateVolume();});}
else if(fieldName=="color")
{pnts=this._cf.color.node._vf.color;this._mesh._colors[0]=pnts.toGL();Array.forEach(this._parentNodes,function(node){node._dirty.colors=true;});}}}));x3dom.registerNodeType("X3DComposedGeometryNode","Rendering",defineClass(x3dom.nodeTypes.X3DGeometryNode,function(ctx){x3dom.nodeTypes.X3DComposedGeometryNode.superClass.call(this,ctx);this.addField_SFBool(ctx,'colorPerVertex',true);this.addField_SFBool(ctx,'normalPerVertex',true);this.addField_SFString(ctx,'normalUpdateMode','fast');this.addField_MFNode('attrib',x3dom.nodeTypes.X3DVertexAttributeNode);this.addField_SFNode('coord',x3dom.nodeTypes.X3DCoordinateNode);this.addField_SFNode('normal',x3dom.nodeTypes.Normal);this.addField_SFNode('color',x3dom.nodeTypes.X3DColorNode);this.addField_SFNode('texCoord',x3dom.nodeTypes.X3DTextureCoordinateNode);},{handleAttribs:function()
{var i,n=this._cf.attrib.nodes.length;for(i=0;i<n;i++)
{var name=this._cf.attrib.nodes[i]._vf.name;switch(name.toLowerCase())
{case"position":this._mesh._positions[0]=this._cf.attrib.nodes[i]._vf.value.toGL();break;case"normal":this._mesh._normals[0]=this._cf.attrib.nodes[i]._vf.value.toGL();break;case"texcoord":this._mesh._texCoords[0]=this._cf.attrib.nodes[i]._vf.value.toGL();break;case"color":this._mesh._colors[0]=this._cf.attrib.nodes[i]._vf.value.toGL();break;default:this._mesh._dynamicFields[name]={};this._mesh._dynamicFields[name].numComponents=this._cf.attrib.nodes[i]._vf.numComponents;this._mesh._dynamicFields[name].value=this._cf.attrib.nodes[i]._vf.value.toGL();break;}}}}));x3dom.registerNodeType("LineSet","Rendering",defineClass(x3dom.nodeTypes.X3DGeometryNode,function(ctx){x3dom.nodeTypes.LineSet.superClass.call(this,ctx);this.addField_MFInt32(ctx,'vertexCount',[]);this.addField_MFNode('attrib',x3dom.nodeTypes.X3DVertexAttributeNode);this.addField_SFNode('coord',x3dom.nodeTypes.X3DCoordinateNode);this.addField_SFNode('color',x3dom.nodeTypes.X3DColorNode);this._mesh._primType="LINES";x3dom.Utils.needLineWidth=true;},{nodeChanged:function(){var coordNode=this._cf.coord.node;x3dom.debug.assert(coordNode);var positions=coordNode.getPoints();this._mesh._positions[0]=positions.toGL();var colorNode=this._cf.color.node;if(colorNode){var colors=colorNode._vf.color;this._mesh._colors[0]=colors.toGL();this._mesh._numColComponents=3;if(x3dom.isa(colorNode,x3dom.nodeTypes.ColorRGBA)){this._mesh._numColComponents=4;}}
var cnt=0;this._mesh._indices[0]=[];for(var i=0,n=this._vf.vertexCount.length;i<n;i++){var vc=this._vf.vertexCount[i];if(vc<2){x3dom.debug.logError("LineSet.vertexCount must not be smaller than 2!");break;}
for(var j=vc-2;j>=0;j--){this._mesh._indices[0].push(cnt++,cnt);if(j==0)cnt++;}}},fieldChanged:function(fieldName){if(fieldName=="coord"){var pnts=this._cf.coord.node.getPoints();this._mesh._positions[0]=pnts.toGL();this.invalidateVolume();Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;node.invalidateVolume();});}
else if(fieldName=="color"){var cols=this._cf.color.node._vf.color;this._mesh._colors[0]=cols.toGL();Array.forEach(this._parentNodes,function(node){node._dirty.colors=true;});}}}));x3dom.registerNodeType("IndexedLineSet","Rendering",defineClass(x3dom.nodeTypes.X3DGeometryNode,function(ctx){x3dom.nodeTypes.IndexedLineSet.superClass.call(this,ctx);this.addField_SFBool(ctx,'colorPerVertex',true);this.addField_MFNode('attrib',x3dom.nodeTypes.X3DVertexAttributeNode);this.addField_SFNode('coord',x3dom.nodeTypes.X3DCoordinateNode);this.addField_SFNode('color',x3dom.nodeTypes.X3DColorNode);this.addField_MFInt32(ctx,'coordIndex',[]);this.addField_MFInt32(ctx,'colorIndex',[]);this._mesh._primType='LINES';x3dom.Utils.needLineWidth=true;},{nodeChanged:function()
{var time0=new Date().getTime();var indexes=this._vf.coordIndex;var colorInd=this._vf.colorIndex;var hasColor=false,hasColorInd=false;var colPerVert=this._vf.colorPerVertex;if(colorInd.length>0)
{hasColorInd=true;}
var positions,colors;var coordNode=this._cf.coord.node;x3dom.debug.assert(coordNode);positions=coordNode.getPoints();var numColComponents=3;var colorNode=this._cf.color.node;if(colorNode)
{hasColor=true;colors=colorNode._vf.color;if(x3dom.isa(colorNode,x3dom.nodeTypes.ColorRGBA)){numColComponents=4;}}
else{hasColor=false;}
this._mesh._indices[0]=[];this._mesh._positions[0]=[];this._mesh._colors[0]=[];var i,t,cnt,lineCnt;var p0,p1,c0,c1;if((hasColor&&hasColorInd)||positions.length>x3dom.Utils.maxIndexableCoords)
{t=0;cnt=0;lineCnt=0;for(i=0;i<indexes.length;++i)
{if(indexes[i]===-1){t=0;continue;}
if(hasColorInd){x3dom.debug.assert(colorInd[i]!=-1);}
switch(t)
{case 0:p0=+indexes[i];if(hasColorInd&&colPerVert){c0=+colorInd[i];}
else{c0=p0;}
t=1;break;case 1:p1=+indexes[i];if(hasColorInd&&colPerVert){c1=+colorInd[i];}
else if(hasColorInd&&!colPerVert){c1=+colorInd[lineCnt];}
else{c1=p1;}
this._mesh._indices[0].push(cnt++,cnt++);this._mesh._positions[0].push(positions[p0].x);this._mesh._positions[0].push(positions[p0].y);this._mesh._positions[0].push(positions[p0].z);this._mesh._positions[0].push(positions[p1].x);this._mesh._positions[0].push(positions[p1].y);this._mesh._positions[0].push(positions[p1].z);if(hasColor){if(!colPerVert){c0=c1;}
this._mesh._colors[0].push(colors[c0].r);this._mesh._colors[0].push(colors[c0].g);this._mesh._colors[0].push(colors[c0].b);this._mesh._colors[0].push(colors[c1].r);this._mesh._colors[0].push(colors[c1].g);this._mesh._colors[0].push(colors[c1].b);}
t=2;lineCnt++;break;case 2:p0=p1;c0=c1;p1=+indexes[i];if(hasColorInd&&colPerVert){c1=+colorInd[i];}
else if(hasColorInd&&!colPerVert){c1=+colorInd[lineCnt];}
else{c1=p1;}
this._mesh._indices[0].push(cnt++,cnt++);this._mesh._positions[0].push(positions[p0].x);this._mesh._positions[0].push(positions[p0].y);this._mesh._positions[0].push(positions[p0].z);this._mesh._positions[0].push(positions[p1].x);this._mesh._positions[0].push(positions[p1].y);this._mesh._positions[0].push(positions[p1].z);if(hasColor){if(!colPerVert){c0=c1;}
this._mesh._colors[0].push(colors[c0].r);this._mesh._colors[0].push(colors[c0].g);this._mesh._colors[0].push(colors[c0].b);this._mesh._colors[0].push(colors[c1].r);this._mesh._colors[0].push(colors[c1].g);this._mesh._colors[0].push(colors[c1].b);}
lineCnt++;break;default:}}
if(positions.length>x3dom.Utils.maxIndexableCoords)
this._mesh.splitMesh(2);}
else
{var n=indexes.length;t=0;for(i=0;i<n;++i)
{if(indexes[i]==-1){t=0;continue;}
switch(t){case 0:p0=+indexes[i];t=1;break;case 1:p1=+indexes[i];t=2;this._mesh._indices[0].push(p0,p1);break;case 2:p0=p1;p1=+indexes[i];this._mesh._indices[0].push(p0,p1);break;}}
this._mesh._positions[0]=positions.toGL();if(hasColor){this._mesh._colors[0]=colors.toGL();this._mesh._numColComponents=numColComponents;}}
this.invalidateVolume();this._mesh._numCoords=0;for(i=0;i<this._mesh._indices.length;i++){this._mesh._numCoords+=this._mesh._positions[i].length/3;}
var time1=new Date().getTime()-time0;},fieldChanged:function(fieldName)
{var pnts=null;if(fieldName=="coord")
{pnts=this._cf.coord.node._vf.point;this._mesh._positions[0]=pnts.toGL();this.invalidateVolume();Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;node.invalidateVolume();});}
else if(fieldName=="color")
{pnts=this._cf.color.node._vf.color;this._mesh._colors[0]=pnts.toGL();Array.forEach(this._parentNodes,function(node){node._dirty.colors=true;});}
else if(fieldName=="coordIndex"){this._mesh._indices[0]=[];var indexes=this._vf.coordIndex;var p0,p1,t=0;for(var i=0,n=indexes.length;i<n;++i){if(indexes[i]==-1){t=0;}
else{switch(t){case 0:p0=+indexes[i];t=1;break;case 1:p1=+indexes[i];t=2;this._mesh._indices[0].push(p0,p1);break;case 2:p0=p1;p1=+indexes[i];this._mesh._indices[0].push(p0,p1);break;}}}
this.invalidateVolume();Array.forEach(this._parentNodes,function(node){node._dirty.indexes=true;node.invalidateVolume();});}}}));x3dom.registerNodeType("IndexedTriangleSet","Rendering",defineClass(x3dom.nodeTypes.X3DComposedGeometryNode,function(ctx){x3dom.nodeTypes.IndexedTriangleSet.superClass.call(this,ctx);this.addField_MFInt32(ctx,'index',[]);},{nodeChanged:function()
{var time0=new Date().getTime();this.handleAttribs();var colPerVert=this._vf.colorPerVertex;var normPerVert=this._vf.normalPerVertex;var indexes=this._vf.index;var hasNormal=false,hasTexCoord=false,hasColor=false;var positions,normals,texCoords,colors;var coordNode=this._cf.coord.node;x3dom.debug.assert(coordNode);positions=coordNode._vf.point;var normalNode=this._cf.normal.node;if(normalNode){hasNormal=true;normals=normalNode._vf.vector;}
else{hasNormal=false;}
var texMode="",numTexComponents=2;var texCoordNode=this._cf.texCoord.node;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.MultiTextureCoordinate)){if(texCoordNode._cf.texCoord.nodes.length)
texCoordNode=texCoordNode._cf.texCoord.nodes[0];}
if(texCoordNode){if(texCoordNode._vf.point){hasTexCoord=true;texCoords=texCoordNode._vf.point;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.TextureCoordinate3D)){numTexComponents=3;}}
else if(texCoordNode._vf.mode){texMode=texCoordNode._vf.mode;}}
else{hasTexCoord=false;}
var numColComponents=3;var colorNode=this._cf.color.node;if(colorNode){hasColor=true;colors=colorNode._vf.color;if(x3dom.isa(colorNode,x3dom.nodeTypes.ColorRGBA)){numColComponents=4;}}
else{hasColor=false;}
this._mesh._indices[0]=[];this._mesh._positions[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];this._mesh._colors[0]=[];var i,t,cnt,faceCnt,posMax;var p0,p1,p2,n0,n1,n2,t0,t1,t2,c0,c1,c2;while(positions.length%3>0){positions.push(positions.length-1);}
posMax=positions.length;if(!normPerVert||posMax>x3dom.Utils.maxIndexableCoords)
{t=0;cnt=0;faceCnt=0;this._mesh._multiIndIndices=[];this._mesh._posSize=positions.length;for(i=0;i<indexes.length;++i)
{if((i>0)&&(i%3===0)){t=0;faceCnt++;}
switch(t)
{case 0:p0=+indexes[i];if(normPerVert){n0=p0;}else if(!normPerVert){n0=faceCnt;}
t0=p0;if(colPerVert){c0=p0;}else if(!colPerVert){c0=faceCnt;}
t=1;break;case 1:p1=+indexes[i];if(normPerVert){n1=p1;}else if(!normPerVert){n1=faceCnt;}
t1=p1;if(colPerVert){c1=p1;}else if(!colPerVert){c1=faceCnt;}
t=2;break;case 2:p2=+indexes[i];if(normPerVert){n2=p2;}else if(!normPerVert){n2=faceCnt;}
t2=p2;if(colPerVert){c2=p2;}else if(!colPerVert){c2=faceCnt;}
t=3;this._mesh._indices[0].push(cnt++,cnt++,cnt++);this._mesh._positions[0].push(positions[p0].x);this._mesh._positions[0].push(positions[p0].y);this._mesh._positions[0].push(positions[p0].z);this._mesh._positions[0].push(positions[p1].x);this._mesh._positions[0].push(positions[p1].y);this._mesh._positions[0].push(positions[p1].z);this._mesh._positions[0].push(positions[p2].x);this._mesh._positions[0].push(positions[p2].y);this._mesh._positions[0].push(positions[p2].z);if(hasNormal){this._mesh._normals[0].push(normals[n0].x);this._mesh._normals[0].push(normals[n0].y);this._mesh._normals[0].push(normals[n0].z);this._mesh._normals[0].push(normals[n1].x);this._mesh._normals[0].push(normals[n1].y);this._mesh._normals[0].push(normals[n1].z);this._mesh._normals[0].push(normals[n2].x);this._mesh._normals[0].push(normals[n2].y);this._mesh._normals[0].push(normals[n2].z);}
else{this._mesh._multiIndIndices.push(p0,p1,p2);}
if(hasColor){this._mesh._colors[0].push(colors[c0].r);this._mesh._colors[0].push(colors[c0].g);this._mesh._colors[0].push(colors[c0].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c0].a);}
this._mesh._colors[0].push(colors[c1].r);this._mesh._colors[0].push(colors[c1].g);this._mesh._colors[0].push(colors[c1].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c1].a);}
this._mesh._colors[0].push(colors[c2].r);this._mesh._colors[0].push(colors[c2].g);this._mesh._colors[0].push(colors[c2].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c2].a);}}
if(hasTexCoord){this._mesh._texCoords[0].push(texCoords[t0].x);this._mesh._texCoords[0].push(texCoords[t0].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t0].z);}
this._mesh._texCoords[0].push(texCoords[t1].x);this._mesh._texCoords[0].push(texCoords[t1].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t1].z);}
this._mesh._texCoords[0].push(texCoords[t2].x);this._mesh._texCoords[0].push(texCoords[t2].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t2].z);}}
break;default:}}
if(!hasNormal){this._mesh.calcNormals(normPerVert?Math.PI:0);}
if(!hasTexCoord){this._mesh.calcTexCoords(texMode);}
this._mesh.splitMesh();}
else
{faceCnt=0;for(i=0;i<indexes.length;i++)
{if((i>0)&&(i%3===0)){faceCnt++;}
this._mesh._indices[0].push(indexes[i]);if(!normPerVert&&hasNormal){this._mesh._normals[0].push(normals[faceCnt].x);this._mesh._normals[0].push(normals[faceCnt].y);this._mesh._normals[0].push(normals[faceCnt].z);}
if(!colPerVert&&hasColor){this._mesh._colors[0].push(colors[faceCnt].r);this._mesh._colors[0].push(colors[faceCnt].g);this._mesh._colors[0].push(colors[faceCnt].b);if(numColComponents===4){this._mesh._colors[0].push(colors[faceCnt].a);}}}
this._mesh._positions[0]=positions.toGL();if(hasNormal){this._mesh._normals[0]=normals.toGL();}
else{this._mesh.calcNormals(normPerVert?Math.PI:0);}
if(hasTexCoord){this._mesh._texCoords[0]=texCoords.toGL();this._mesh._numTexComponents=numTexComponents;}
else{this._mesh.calcTexCoords(texMode);}
if(hasColor&&colPerVert){this._mesh._colors[0]=colors.toGL();this._mesh._numColComponents=numColComponents;}}
this.invalidateVolume();this._mesh._numFaces=0;this._mesh._numCoords=0;for(i=0;i<this._mesh._indices.length;i++){this._mesh._numFaces+=this._mesh._indices[i].length/3;this._mesh._numCoords+=this._mesh._positions[i].length/3;}
var time1=new Date().getTime()-time0;},fieldChanged:function(fieldName)
{var pnts=this._cf.coord.node._vf.point;if(pnts.length>x3dom.Utils.maxIndexableCoords)
{x3dom.debug.logWarning("IndexedTriangleSet: fieldChanged with "+"too many coordinates not yet implemented!");return;}
if(fieldName=="coord")
{this._mesh._positions[0]=pnts.toGL();this.invalidateVolume();Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;node.invalidateVolume();});}
else if(fieldName=="color")
{pnts=this._cf.color.node._vf.color;if(this._vf.colorPerVertex){this._mesh._colors[0]=pnts.toGL();}else if(!this._vf.colorPerVertex){var faceCnt=0;var numColComponents=3;if(x3dom.isa(this._cf.color.node,x3dom.nodeTypes.ColorRGBA)){numColComponents=4;}
this._mesh._colors[0]=[];var indexes=this._vf.index;for(var i=0;i<indexes.length;++i)
{if((i>0)&&(i%3===0)){faceCnt++;}
this._mesh._colors[0].push(pnts[faceCnt].r);this._mesh._colors[0].push(pnts[faceCnt].g);this._mesh._colors[0].push(pnts[faceCnt].b);if(numColComponents===4){this._mesh._colors[0].push(pnts[faceCnt].a);}}}
Array.forEach(this._parentNodes,function(node){node._dirty.colors=true;});}
else if(fieldName=="normal")
{pnts=this._cf.normal.node._vf.vector;if(this._vf.normalPerVertex){this._mesh._normals[0]=pnts.toGL();}else if(!this._vf.normalPerVertex){var indexes=this._vf.index;this._mesh._normals[0]=[];var faceCnt=0;for(var i=0;i<indexes.length;++i)
{if((i>0)&&(i%3===0)){faceCnt++;}
this._mesh._normals[0].push(pnts[faceCnt].x);this._mesh._normals[0].push(pnts[faceCnt].y);this._mesh._normals[0].push(pnts[faceCnt].z);}}
Array.forEach(this._parentNodes,function(node){node._dirty.normals=true;});}
else if(fieldName=="texCoord")
{var texCoordNode=this._cf.texCoord.node;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.MultiTextureCoordinate)){if(texCoordNode._cf.texCoord.nodes.length)
texCoordNode=texCoordNode._cf.texCoord.nodes[0];}
pnts=texCoordNode._vf.point;this._mesh._texCoords[0]=pnts.toGL();Array.forEach(this._parentNodes,function(node){node._dirty.texcoords=true;});}}}));x3dom.registerNodeType("IndexedTriangleStripSet","Rendering",defineClass(x3dom.nodeTypes.X3DComposedGeometryNode,function(ctx){x3dom.nodeTypes.IndexedTriangleStripSet.superClass.call(this,ctx);this.addField_MFInt32(ctx,'index',[]);this._hasIndexOffset=false;this._indexOffset=null;},{hasIndexOffset:function(){return this._hasIndexOffset;},nodeChanged:function()
{this.handleAttribs();var hasNormal=false,hasTexCoord=false,hasColor=false;var colPerVert=this._vf.colorPerVertex;var normPerVert=this._vf.normalPerVertex;var indexes=this._vf.index;var positions,normals,texCoords,colors;var coordNode=this._cf.coord.node;x3dom.debug.assert(coordNode);positions=coordNode._vf.point;var normalNode=this._cf.normal.node;if(normalNode){hasNormal=true;normals=normalNode._vf.vector;}
else{hasNormal=false;}
var texMode="",numTexComponents=2;var texCoordNode=this._cf.texCoord.node;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.MultiTextureCoordinate)){if(texCoordNode._cf.texCoord.nodes.length)
texCoordNode=texCoordNode._cf.texCoord.nodes[0];}
if(texCoordNode){if(texCoordNode._vf.point){hasTexCoord=true;texCoords=texCoordNode._vf.point;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.TextureCoordinate3D)){numTexComponents=3;}}
else if(texCoordNode._vf.mode){texMode=texCoordNode._vf.mode;}}
else{hasTexCoord=false;}
this._mesh._numTexComponents=numTexComponents;var numColComponents=3;var colorNode=this._cf.color.node;if(colorNode){hasColor=true;colors=colorNode._vf.color;if(x3dom.isa(colorNode,x3dom.nodeTypes.ColorRGBA)){numColComponents=4;}}
else{hasColor=false;}
this._mesh._numColComponents=numColComponents;this._mesh._indices[0]=[];this._mesh._positions[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];this._mesh._colors[0]=[];this.invalidateVolume();this._mesh._numFaces=0;this._mesh._numCoords=0;var faceCnt=0,cnt=0;if(hasNormal&&positions.length<=x3dom.Utils.maxIndexableCoords)
{this._hasIndexOffset=true;this._indexOffset=[];this._mesh._primType='TRIANGLESTRIP';var indexOffset=[0];for(i=0;i<indexes.length;i++)
{if(indexes[i]==-1){faceCnt++;indexOffset.push(this._mesh._indices[0].length);}
else{this._mesh._indices[0].push(+indexes[i]);if(!normPerVert){this._mesh._normals[0].push(normals[faceCnt].x);this._mesh._normals[0].push(normals[faceCnt].y);this._mesh._normals[0].push(normals[faceCnt].z);}
if(!colPerVert){this._mesh._colors[0].push(colors[faceCnt].r);this._mesh._colors[0].push(colors[faceCnt].g);this._mesh._colors[0].push(colors[faceCnt].b);if(numColComponents===4){this._mesh._colors[0].push(colors[faceCnt].a);}}}}
this._mesh._positions[0]=positions.toGL();if(normPerVert){this._mesh._normals[0]=normals.toGL();}
if(hasTexCoord){this._mesh._texCoords[0]=texCoords.toGL();this._mesh._numTexComponents=numTexComponents;}
else{x3dom.debug.logWarning("IndexedTriangleStripSet: no texCoords given and won't calculate!");}
if(hasColor){if(colPerVert){this._mesh._colors[0]=colors.toGL();}
this._mesh._numColComponents=numColComponents;}
for(i=1;i<indexOffset.length;i++){var triCnt=indexOffset[i]-indexOffset[i-1];this._indexOffset.push({count:triCnt,offset:2*indexOffset[i-1]});this._mesh._numFaces+=(triCnt-2);}
this._mesh._numCoords=this._mesh._positions[0].length/3;}
else
{this._hasIndexOffset=false;var p1,p2,p3,n1,n2,n3,t1,t2,t3,c1,c2,c3;var swapOrder=false;for(var i=1;i<indexes.length-2;++i)
{if(indexes[i+1]==-1){i=i+2;faceCnt++;continue;}
if(swapOrder){p1=indexes[i];p2=indexes[i-1];p3=indexes[i+1];}
else{p1=indexes[i-1];p2=indexes[i];p3=indexes[i+1];}
swapOrder=!swapOrder;if(normPerVert){n1=p1;n2=p2;n3=p3;}else if(!normPerVert){n1=n2=n3=faceCnt;}
t1=p1;t2=p2;t3=p3;if(colPerVert){c1=p1;c2=p2;c3=p3;}else if(!colPerVert){c1=c2=c3=faceCnt;}
this._mesh._indices[0].push(cnt++,cnt++,cnt++);this._mesh._positions[0].push(positions[p1].x);this._mesh._positions[0].push(positions[p1].y);this._mesh._positions[0].push(positions[p1].z);this._mesh._positions[0].push(positions[p2].x);this._mesh._positions[0].push(positions[p2].y);this._mesh._positions[0].push(positions[p2].z);this._mesh._positions[0].push(positions[p3].x);this._mesh._positions[0].push(positions[p3].y);this._mesh._positions[0].push(positions[p3].z);if(hasNormal){this._mesh._normals[0].push(normals[n1].x);this._mesh._normals[0].push(normals[n1].y);this._mesh._normals[0].push(normals[n1].z);this._mesh._normals[0].push(normals[n2].x);this._mesh._normals[0].push(normals[n2].y);this._mesh._normals[0].push(normals[n2].z);this._mesh._normals[0].push(normals[n3].x);this._mesh._normals[0].push(normals[n3].y);this._mesh._normals[0].push(normals[n3].z);}
if(hasColor){this._mesh._colors[0].push(colors[c1].r);this._mesh._colors[0].push(colors[c1].g);this._mesh._colors[0].push(colors[c1].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c1].a);}
this._mesh._colors[0].push(colors[c2].r);this._mesh._colors[0].push(colors[c2].g);this._mesh._colors[0].push(colors[c2].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c2].a);}
this._mesh._colors[0].push(colors[c3].r);this._mesh._colors[0].push(colors[c3].g);this._mesh._colors[0].push(colors[c3].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c3].a);}}
if(hasTexCoord){this._mesh._texCoords[0].push(texCoords[t1].x);this._mesh._texCoords[0].push(texCoords[t1].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t1].z);}
this._mesh._texCoords[0].push(texCoords[t2].x);this._mesh._texCoords[0].push(texCoords[t2].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t2].z);}
this._mesh._texCoords[0].push(texCoords[t3].x);this._mesh._texCoords[0].push(texCoords[t3].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t3].z);}}}
if(!hasNormal){this._mesh.calcNormals(Math.PI);}
if(!hasTexCoord){this._mesh.calcTexCoords(texMode);}
this._mesh.splitMesh();this.invalidateVolume();for(i=0;i<this._mesh._indices.length;i++){this._mesh._numFaces+=this._mesh._indices[i].length/3;this._mesh._numCoords+=this._mesh._positions[i].length/3;}}},fieldChanged:function(fieldName)
{if(fieldName!="coord"&&fieldName!="normal"&&fieldName!="texCoord"&&fieldName!="color")
{x3dom.debug.logWarning("IndexedTriangleStripSet: fieldChanged for "+
fieldName+" not yet implemented!");return;}
var pnts=this._cf.coord.node._vf.point;if((this._cf.normal.node===null)||(pnts.length>x3dom.Utils.maxIndexableCoords))
{if(fieldName=="coord"){this._mesh._positions[0]=[];this._mesh._indices[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];var hasNormal=false,hasTexCoord=false,hasColor=false;var colPerVert=this._vf.colorPerVertex;var normPerVert=this._vf.normalPerVertex;var indexes=this._vf.index;var positions,normals,texCoords,colors;var coordNode=this._cf.coord.node;x3dom.debug.assert(coordNode);positions=coordNode._vf.point;var normalNode=this._cf.normal.node;if(normalNode){hasNormal=true;normals=normalNode._vf.vector;}
else{hasNormal=false;}
var texMode="",numTexComponents=2;var texCoordNode=this._cf.texCoord.node;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.MultiTextureCoordinate)){if(texCoordNode._cf.texCoord.nodes.length)
texCoordNode=texCoordNode._cf.texCoord.nodes[0];}
if(texCoordNode){if(texCoordNode._vf.point){hasTexCoord=true;texCoords=texCoordNode._vf.point;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.TextureCoordinate3D)){numTexComponents=3;}}
else if(texCoordNode._vf.mode){texMode=texCoordNode._vf.mode;}}
else{hasTexCoord=false;}
this._mesh._numTexComponents=numTexComponents;var numColComponents=3;var colorNode=this._cf.color.node;if(colorNode){hasColor=true;colors=colorNode._vf.color;if(x3dom.isa(colorNode,x3dom.nodeTypes.ColorRGBA)){numColComponents=4;}}
else{hasColor=false;}
this._mesh._numColComponents=numColComponents;this._mesh._indices[0]=[];this._mesh._positions[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];this._mesh._colors[0]=[];var faceCnt=0,cnt=0;var p1,p2,p3,n1,n2,n3,t1,t2,t3,c1,c2,c3;var swapOrder=false;if(hasNormal||hasTexCoord||hasColor){for(var i=1;i<indexes.length-2;++i)
{if(indexes[i+1]==-1){i=i+2;faceCnt++;continue;}
if(swapOrder){p1=indexes[i];p2=indexes[i-1];p3=indexes[i+1];}
else{p1=indexes[i-1];p2=indexes[i];p3=indexes[i+1];}
swapOrder=!swapOrder;if(normPerVert){n1=p1;n2=p2;n3=p3;}else if(!normPerVert){n1=n2=n3=faceCnt;}
t1=p1;t2=p2;t3=p3;if(colPerVert){c1=p1;c2=p2;c3=p3;}else if(!colPerVert){c1=c2=c3=faceCnt;}
this._mesh._indices[0].push(cnt++,cnt++,cnt++);this._mesh._positions[0].push(positions[p1].x);this._mesh._positions[0].push(positions[p1].y);this._mesh._positions[0].push(positions[p1].z);this._mesh._positions[0].push(positions[p2].x);this._mesh._positions[0].push(positions[p2].y);this._mesh._positions[0].push(positions[p2].z);this._mesh._positions[0].push(positions[p3].x);this._mesh._positions[0].push(positions[p3].y);this._mesh._positions[0].push(positions[p3].z);if(hasNormal){this._mesh._normals[0].push(normals[n1].x);this._mesh._normals[0].push(normals[n1].y);this._mesh._normals[0].push(normals[n1].z);this._mesh._normals[0].push(normals[n2].x);this._mesh._normals[0].push(normals[n2].y);this._mesh._normals[0].push(normals[n2].z);this._mesh._normals[0].push(normals[n3].x);this._mesh._normals[0].push(normals[n3].y);this._mesh._normals[0].push(normals[n3].z);}
if(hasColor){this._mesh._colors[0].push(colors[c1].r);this._mesh._colors[0].push(colors[c1].g);this._mesh._colors[0].push(colors[c1].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c1].a);}
this._mesh._colors[0].push(colors[c2].r);this._mesh._colors[0].push(colors[c2].g);this._mesh._colors[0].push(colors[c2].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c2].a);}
this._mesh._colors[0].push(colors[c3].r);this._mesh._colors[0].push(colors[c3].g);this._mesh._colors[0].push(colors[c3].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c3].a);}}
if(hasTexCoord){this._mesh._texCoords[0].push(texCoords[t1].x);this._mesh._texCoords[0].push(texCoords[t1].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t1].z);}
this._mesh._texCoords[0].push(texCoords[t2].x);this._mesh._texCoords[0].push(texCoords[t2].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t2].z);}
this._mesh._texCoords[0].push(texCoords[t3].x);this._mesh._texCoords[0].push(texCoords[t3].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t3].z);}}}
if(!hasNormal){this._mesh.calcNormals(Math.PI);}
if(!hasTexCoord){this._mesh.calcTexCoords(texMode);}
this._mesh.splitMesh();}else{var swapOrder=false;for(var i=1;i<indexes.length;++i)
{if(indexes[i+1]==-1){i=i+2;continue;}
if(swapOrder){this._mesh._indices[0].push(indexes[i]);this._mesh._indices[0].push(indexes[i-1]);this._mesh._indices[0].push(indexes[i+1]);}
else{this._mesh._indices[0].push(indexes[i-1]);this._mesh._indices[0].push(indexes[i]);this._mesh._indices[0].push(indexes[i+1]);}
swapOrder=!swapOrder;}
this._mesh._positions[0]=positions.toGL();if(hasNormal){this._mesh._normals[0]=normals.toGL();}
else{this._mesh.calcNormals(Math.PI);}
if(hasTexCoord){this._mesh._texCoords[0]=texCoords.toGL();this._mesh._numTexComponents=numTexComponents;}
else{this._mesh.calcTexCoords(texMode);}
if(hasColor){this._mesh._colors[0]=colors.toGL();this._mesh._numColComponents=numColComponents;}}
this.invalidateVolume();this._mesh._numFaces=0;this._mesh._numCoords=0;for(i=0;i<this._mesh._indices.length;i++){this._mesh._numFaces+=this._mesh._indices[i].length/3;this._mesh._numCoords+=this._mesh._positions[i].length/3;}
Array.forEach(this._parentNodes,function(node){node.setAllDirty();node.invalidateVolume();});}
else if(fieldName=="color"){var col=this._cf.color.node._vf.color;var faceCnt=0;var c1=c2=c3=0;var numColComponents=3;if(x3dom.isa(this._cf.color.node,x3dom.nodeTypes.ColorRGBA)){numColComponents=4;}
this._mesh._colors[0]=[];var indexes=this._vf.index;var swapOrder=false;for(i=1;i<indexes.length-2;++i)
{if(indexes[i+1]==-1){i=i+2;faceCnt++;continue;}
if(this._vf.colorPerVertex){if(swapOrder){c1=indexes[i];c2=indexes[i-1];c3=indexes[i+1];}
else{c1=indexes[i-1];c2=indexes[i];c3=indexes[i+1];}
swapOrder=!swapOrder;}else if(!this._vf.colorPerVertex){c1=c2=c3=faceCnt;}
this._mesh._colors[0].push(col[c1].r);this._mesh._colors[0].push(col[c1].g);this._mesh._colors[0].push(col[c1].b);if(numColComponents===4){this._mesh._colors[0].push(col[c1].a);}
this._mesh._colors[0].push(col[c2].r);this._mesh._colors[0].push(col[c2].g);this._mesh._colors[0].push(col[c2].b);if(numColComponents===4){this._mesh._colors[0].push(col[c2].a);}
this._mesh._colors[0].push(col[c3].r);this._mesh._colors[0].push(col[c3].g);this._mesh._colors[0].push(col[c3].b);if(numColComponents===4){this._mesh._colors[0].push(col[c3].a);}}
Array.forEach(this._parentNodes,function(node){node._dirty.colors=true;});}
else if(fieldName=="normal"){var nor=this._cf.normal.node._vf.vector;var faceCnt=0;var n1=n2=n3=0;this._mesh._normals[0]=[];var indexes=this._vf.index;var swapOrder=false;for(i=1;i<indexes.length-2;++i)
{if(indexes[i+1]==-1){i=i+2;faceCnt++;continue;}
if(this._vf.normalPerVertex){if(swapOrder){n1=indexes[i];n2=indexes[i-1];n3=indexes[i+1];}
else{n1=indexes[i-1];n2=indexes[i];n3=indexes[i+1];}
swapOrder=!swapOrder;}else if(!this._vf.normalPerVertex){n1=n2=n3=faceCnt;}
this._mesh._normals[0].push(nor[n1].x);this._mesh._normals[0].push(nor[n1].y);this._mesh._normals[0].push(nor[n1].z);this._mesh._normals[0].push(nor[n2].x);this._mesh._normals[0].push(nor[n2].y);this._mesh._normals[0].push(nor[n2].z);this._mesh._normals[0].push(nor[n3].x);this._mesh._normals[0].push(nor[n3].y);this._mesh._normals[0].push(nor[n3].z);}
Array.forEach(this._parentNodes,function(node){node._dirty.normals=true;});}
else if(fieldName=="texCoord"){var texCoordNode=this._cf.texCoord.node;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.MultiTextureCoordinate)){if(texCoordNode._cf.texCoord.nodes.length)
texCoordNode=texCoordNode._cf.texCoord.nodes[0];}
var tex=texCoordNode._vf.point;var t1=t2=t3=0;var numTexComponents=2;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.TextureCoordinate3D)){numTexComponents=3;}
this._mesh._texCoords[0]=[];var indexes=this._vf.index;var swapOrder=false;for(i=1;i<indexes.length-2;++i)
{if(indexes[i+1]==-1){i=i+2;continue;}
if(swapOrder){t1=indexes[i];t2=indexes[i-1];t3=indexes[i+1];}
else{t1=indexes[i-1];t2=indexes[i];t3=indexes[i+1];}
swapOrder=!swapOrder;this._mesh._texCoords[0].push(tex[t1].x);this._mesh._texCoords[0].push(tex[t1].y);if(numTexComponents===3){this._mesh._texCoords[0].push(tex[t1].z);}
this._mesh._texCoords[0].push(tex[t2].x);this._mesh._texCoords[0].push(tex[t2].y);if(numTexComponents===3){this._mesh._texCoords[0].tex(col[t2].z);}
this._mesh._texCoords[0].push(tex[t3].x);this._mesh._texCoords[0].push(tex[t3].y);if(numTexComponents===3){this._mesh._texCoords[0].push(tex[t3].z);}}
Array.forEach(this._parentNodes,function(node){node._dirty.texcoords=true;});}}
else
{if(fieldName=="coord")
{this._mesh._positions[0]=pnts.toGL();this.invalidateVolume();Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;node.invalidateVolume();});}
else if(fieldName=="color")
{pnts=this._cf.color.node._vf.color;if(this._vf.colorPerVertex){this._mesh._colors[0]=pnts.toGL();}else if(!this._vf.colorPerVertex){var faceCnt=0;var numColComponents=3;if(x3dom.isa(this._cf.color.node,x3dom.nodeTypes.ColorRGBA)){numColComponents=4;}
this._mesh._colors[0]=[];var indexes=this._vf.index;for(i=0;i<indexes.length;++i)
{if(indexes[i]==-1){faceCnt++;continue;}
this._mesh._colors[0].push(pnts[faceCnt].r);this._mesh._colors[0].push(pnts[faceCnt].g);this._mesh._colors[0].push(pnts[faceCnt].b);if(numColComponents===4){this._mesh._colors[0].push(pnts[faceCnt].a);}}}
Array.forEach(this._parentNodes,function(node){node._dirty.colors=true;});}
else if(fieldName=="normal")
{pnts=this._cf.normal.node._vf.vector;if(this._vf.normalPerVertex){this._mesh._normals[0]=pnts.toGL();}else if(!this._vf.normalPerVertex){var indexes=this._vf.index;this._mesh._normals[0]=[];var faceCnt=0;for(i=0;i<indexes.length;++i)
{if(indexes[i]==-1){faceCnt++;continue;}
this._mesh._normals[0].push(pnts[faceCnt].x);this._mesh._normals[0].push(pnts[faceCnt].y);this._mesh._normals[0].push(pnts[faceCnt].z);}}
Array.forEach(this._parentNodes,function(node){node._dirty.normals=true;});}
else if(fieldName=="texCoord")
{var texCoordNode=this._cf.texCoord.node;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.MultiTextureCoordinate)){if(texCoordNode._cf.texCoord.nodes.length)
texCoordNode=texCoordNode._cf.texCoord.nodes[0];}
pnts=texCoordNode._vf.point;this._mesh._texCoords[0]=pnts.toGL();Array.forEach(this._parentNodes,function(node){node._dirty.texcoords=true;});}}}}));x3dom.registerNodeType("TriangleSet","Rendering",defineClass(x3dom.nodeTypes.X3DComposedGeometryNode,function(ctx){x3dom.nodeTypes.TriangleSet.superClass.call(this,ctx);},{nodeChanged:function()
{var colPerVert=this._vf.colorPerVertex;var normPerVert=this._vf.normalPerVertex;var hasNormal=false,hasTexCoord=false,hasColor=false;var positions,normals,texCoords,colors;var coordNode=this._cf.coord.node;x3dom.debug.assert(coordNode);positions=coordNode._vf.point;var normalNode=this._cf.normal.node;if(normalNode){hasNormal=true;normals=normalNode._vf.vector;}
else{hasNormal=false;}
var texMode="",numTexComponents=2;var texCoordNode=this._cf.texCoord.node;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.MultiTextureCoordinate)){if(texCoordNode._cf.texCoord.nodes.length)
texCoordNode=texCoordNode._cf.texCoord.nodes[0];}
if(texCoordNode){if(texCoordNode._vf.point){hasTexCoord=true;texCoords=texCoordNode._vf.point;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.TextureCoordinate3D)){numTexComponents=3;}}
else if(texCoordNode._vf.mode){texMode=texCoordNode._vf.mode;}}
else{hasTexCoord=false;}
var numColComponents=3;var colorNode=this._cf.color.node;if(colorNode){hasColor=true;colors=colorNode._vf.color;if(x3dom.isa(colorNode,x3dom.nodeTypes.ColorRGBA)){numColComponents=4;}}
else{hasColor=false;}
while(positions.length%3>0){positions.pop();}
this._mesh._indices[0]=new Array(positions.length);this._mesh._positions[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];this._mesh._colors[0]=[];var posMax=positions.length/3;var faceCnt,i=0;for(faceCnt=0;faceCnt<posMax;faceCnt++)
{this._mesh._indices[0][i]=i++;this._mesh._indices[0][i]=i++;this._mesh._indices[0][i]=i++;if(!normPerVert&&hasNormal){this._mesh._normals[0].push(normals[faceCnt].x);this._mesh._normals[0].push(normals[faceCnt].y);this._mesh._normals[0].push(normals[faceCnt].z);}
if(!colPerVert&&hasColor){this._mesh._colors[0].push(colors[faceCnt].r);this._mesh._colors[0].push(colors[faceCnt].g);this._mesh._colors[0].push(colors[faceCnt].b);if(numColComponents===4){this._mesh._colors[0].push(colors[faceCnt].a);}}}
this._mesh._positions[0]=positions.toGL();if(hasNormal){this._mesh._normals[0]=normals.toGL();}
else{this._mesh.calcNormals(normPerVert?Math.PI:0);}
if(hasTexCoord){this._mesh._texCoords[0]=texCoords.toGL();this._mesh._numTexComponents=numTexComponents;}
else{this._mesh.calcTexCoords(texMode);}
if(hasColor&&colPerVert){this._mesh._colors[0]=colors.toGL();this._mesh._numColComponents=numColComponents;}
this._mesh._numFaces=posMax;this._mesh._numCoords=positions.length;this.invalidateVolume();},fieldChanged:function(fieldName)
{var pnts=this._cf.coord.node._vf.point;if(fieldName=="coord")
{this._mesh._positions[0]=pnts.toGL();this.invalidateVolume();Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;node.invalidateVolume();});}
else if(fieldName=="color")
{pnts=this._cf.color.node._vf.color;if(this._vf.colorPerVertex){this._mesh._colors[0]=pnts.toGL();}
Array.forEach(this._parentNodes,function(node){node._dirty.colors=true;});}
else if(fieldName=="normal")
{pnts=this._cf.normal.node._vf.vector;if(this._vf.normalPerVertex){this._mesh._normals[0]=pnts.toGL();}
Array.forEach(this._parentNodes,function(node){node._dirty.normals=true;});}
else if(fieldName=="texCoord")
{var texCoordNode=this._cf.texCoord.node;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.MultiTextureCoordinate)){if(texCoordNode._cf.texCoord.nodes.length)
texCoordNode=texCoordNode._cf.texCoord.nodes[0];}
pnts=texCoordNode._vf.point;this._mesh._texCoords[0]=pnts.toGL();Array.forEach(this._parentNodes,function(node){node._dirty.texcoords=true;});}}}));x3dom.registerNodeType("X3DGeometricPropertyNode","Rendering",defineClass(x3dom.nodeTypes.X3DNode,function(ctx){x3dom.nodeTypes.X3DGeometricPropertyNode.superClass.call(this,ctx);}));x3dom.registerNodeType("X3DCoordinateNode","Rendering",defineClass(x3dom.nodeTypes.X3DGeometricPropertyNode,function(ctx){x3dom.nodeTypes.X3DCoordinateNode.superClass.call(this,ctx);},{fieldChanged:function(fieldName){if(fieldName==="coord"||fieldName==="point"){Array.forEach(this._parentNodes,function(node){node.fieldChanged("coord");});}},parentAdded:function(parent){if(parent._mesh&&parent._cf.coord.node!==this){parent.fieldChanged("coord");}}}));x3dom.registerNodeType("Coordinate","Rendering",defineClass(x3dom.nodeTypes.X3DCoordinateNode,function(ctx){x3dom.nodeTypes.Coordinate.superClass.call(this,ctx);this.addField_MFVec3f(ctx,'point',[]);},{getPoints:function(){return this._vf.point;}}));x3dom.registerNodeType("Normal","Rendering",defineClass(x3dom.nodeTypes.X3DGeometricPropertyNode,function(ctx){x3dom.nodeTypes.Normal.superClass.call(this,ctx);this.addField_MFVec3f(ctx,'vector',[]);},{fieldChanged:function(fieldName){if(fieldName==="normal"||fieldName==="vector"){Array.forEach(this._parentNodes,function(node){node.fieldChanged("normal");});}},parentAdded:function(parent){if(parent._mesh&&parent._cf.normal.node!==this){parent.fieldChanged("normal");}}}));x3dom.registerNodeType("X3DColorNode","Rendering",defineClass(x3dom.nodeTypes.X3DGeometricPropertyNode,function(ctx){x3dom.nodeTypes.X3DColorNode.superClass.call(this,ctx);},{fieldChanged:function(fieldName){if(fieldName==="color"){Array.forEach(this._parentNodes,function(node){node.fieldChanged("color");});}},parentAdded:function(parent){if(parent._mesh&&parent._cf.color.node!==this){parent.fieldChanged("color");}}}));x3dom.registerNodeType("Color","Rendering",defineClass(x3dom.nodeTypes.X3DColorNode,function(ctx){x3dom.nodeTypes.Color.superClass.call(this,ctx);this.addField_MFColor(ctx,'color',[]);}));x3dom.registerNodeType("ColorRGBA","Rendering",defineClass(x3dom.nodeTypes.X3DColorNode,function(ctx){x3dom.nodeTypes.ColorRGBA.superClass.call(this,ctx);this.addField_MFColorRGBA(ctx,'color',[]);}));x3dom.registerNodeType("ParticleSet","Rendering",defineClass(x3dom.nodeTypes.PointSet,function(ctx){x3dom.nodeTypes.ParticleSet.superClass.call(this,ctx);this.addField_SFString(ctx,'mode','ViewDirQuads');this.addField_SFString(ctx,'drawOrder','Any');this.addField_SFNode('normal',x3dom.nodeTypes.Normal);this.addField_MFVec3f(ctx,'size',[]);this.addField_MFInt32(ctx,'index',[]);this.addField_MFFloat(ctx,'textureZ',[]);this._mesh._primType='POINTS';},{drawOrder:function(){return this._vf.drawOrder.toLowerCase();},nodeChanged:function()
{var coordNode=this._cf.coord.node;x3dom.debug.assert(coordNode,"ParticleSet without coord node!");var positions=coordNode.getPoints();var numColComponents=3;var colorNode=this._cf.color.node;var colors=new x3dom.fields.MFColor();if(colorNode){colors=colorNode._vf.color;x3dom.debug.assert(positions.length==colors.length,"Size of color and coord array differs!");if(x3dom.isa(colorNode,x3dom.nodeTypes.ColorRGBA)){numColComponents=4;}}
var normalNode=this._cf.normal.node;var normals=new x3dom.fields.MFVec3f();if(normalNode){normals=normalNode._vf.vector;}
var indices=[];if(this.drawOrder()!="any"){indices=this._vf.index.toGL();if(indices.length==0){var i,n=positions.length;indices=new Array(n);for(i=0;i<n;i++){indices[i]=i;}}}
this._mesh._numColComponents=numColComponents;this._mesh._lit=false;this._mesh._indices[0]=indices;this._mesh._positions[0]=positions.toGL();this._mesh._colors[0]=colors.toGL();this._mesh._normals[0]=normals.toGL();this._mesh._texCoords[0]=[];this.invalidateVolume();this._mesh._numCoords=this._mesh._positions[0].length/3;},fieldChanged:function(fieldName)
{var pnts=null;if(fieldName=="index")
{this._mesh._indices[0]=this._vf.index.toGL();Array.forEach(this._parentNodes,function(node){node._dirty.indexes=true;});}
else if(fieldName=="size")
{Array.forEach(this._parentNodes,function(node){node._dirty.specialAttribs=true;});}
else if(fieldName=="coord")
{pnts=this._cf.coord.node.getPoints();this._mesh._positions[0]=pnts.toGL();var indices=[];if(this.drawOrder()!="any"){indices=this._vf.index.toGL();if(indices.length==0){var i,n=pnts.length;indices=new Array(n);for(i=0;i<n;i++){indices[i]=i;}}}
this._mesh._indices[0]=indices;this.invalidateVolume();Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;node._dirty.indexes=true;node.invalidateVolume();});}
else if(fieldName=="color")
{pnts=this._cf.color.node._vf.color;this._mesh._colors[0]=pnts.toGL();Array.forEach(this._parentNodes,function(node){node._dirty.colors=true;});}}}));x3dom.registerNodeType("ClipPlane","Rendering",defineClass(x3dom.nodeTypes.X3DChildNode,function(ctx){x3dom.nodeTypes.ClipPlane.superClass.call(this,ctx);this.addField_SFBool(ctx,'enabled',true);this.addField_SFVec4f(ctx,'plane',0,1,0,0);this.addField_SFFloat(ctx,'cappingStrength',0.0);this.addField_SFColor(ctx,'cappingColor',1.0,1.0,1.0);this.addField_SFBool(ctx,'on',true);},{fieldChanged:function(fieldName){if(fieldName=="enabled"||fieldName=="on"){}},nodeChanged:function(){x3dom.nodeTypes.ClipPlane.count++;},onRemove:function(){x3dom.nodeTypes.ClipPlane.count--;},parentAdded:function(parent){},parentRemoved:function(parent){}}));x3dom.nodeTypes.ClipPlane.count=0;x3dom.registerNodeType("X3DAppearanceNode","Shape",defineClass(x3dom.nodeTypes.X3DNode,function(ctx){x3dom.nodeTypes.X3DAppearanceNode.superClass.call(this,ctx);}));x3dom.registerNodeType("Appearance","Shape",defineClass(x3dom.nodeTypes.X3DAppearanceNode,function(ctx){x3dom.nodeTypes.Appearance.superClass.call(this,ctx);this.addField_SFNode('material',x3dom.nodeTypes.X3DMaterialNode);this.addField_SFNode('texture',x3dom.nodeTypes.X3DTextureNode);this.addField_SFNode('textureTransform',x3dom.nodeTypes.X3DTextureTransformNode);this.addField_SFNode('lineProperties',x3dom.nodeTypes.LineProperties);this.addField_SFNode('colorMaskMode',x3dom.nodeTypes.ColorMaskMode);this.addField_SFNode('blendMode',x3dom.nodeTypes.BlendMode);this.addField_SFNode('depthMode',x3dom.nodeTypes.DepthMode);this.addField_MFNode('shaders',x3dom.nodeTypes.X3DShaderNode);this.addField_SFString(ctx,'sortType','auto');this.addField_SFInt32(ctx,'sortKey',0);this.addField_SFFloat(ctx,'alphaClipThreshold',0.1);this._shader=null;},{fieldChanged:function(fieldName){if(fieldName=="alphaClipThreshold"){Array.forEach(this._parentNodes,function(shape){shape.setAppDirty();});}},nodeChanged:function(){if(!this._cf.material.node){}
if(this._cf.shaders.nodes.length){this._shader=this._cf.shaders.nodes[0];}
else if(this._shader)
this._shader=null;Array.forEach(this._parentNodes,function(shape){shape.setAppDirty();});this.checkSortType();},checkSortType:function(){if(this._vf.sortType=='auto'){if(this._cf.material.node&&(this._cf.material.node._vf.transparency>0||this._cf.material.node._vf.backTransparency&&this._cf.material.node._vf.backTransparency>0)){this._vf.sortType='transparent';}
else if(this._cf.texture.node&&this._cf.texture.node._vf.url.length){if(this._cf.texture.node._vf.url[0].toLowerCase().indexOf('.'+'png')>=0){this._vf.sortType='transparent';}
else{this._vf.sortType='opaque';}}
else{this._vf.sortType='opaque';}}},texTransformMatrix:function(){if(this._cf.textureTransform.node===null){return x3dom.fields.SFMatrix4f.identity();}
else{return this._cf.textureTransform.node.texTransformMatrix();}},parentAdded:function(parent){if(this!=x3dom.nodeTypes.Appearance._defaultNode){parent.setAppDirty();}}}));x3dom.nodeTypes.Appearance.defaultNode=function(){if(!x3dom.nodeTypes.Appearance._defaultNode){x3dom.nodeTypes.Appearance._defaultNode=new x3dom.nodeTypes.Appearance();x3dom.nodeTypes.Appearance._defaultNode.nodeChanged();}
return x3dom.nodeTypes.Appearance._defaultNode;};x3dom.registerNodeType("X3DAppearanceChildNode","Shape",defineClass(x3dom.nodeTypes.X3DNode,function(ctx){x3dom.nodeTypes.X3DAppearanceChildNode.superClass.call(this,ctx);}));x3dom.registerNodeType("BlendMode","Shape",defineClass(x3dom.nodeTypes.X3DAppearanceChildNode,function(ctx){x3dom.nodeTypes.BlendMode.superClass.call(this,ctx);this.addField_SFString(ctx,'srcFactor',"src_alpha");this.addField_SFString(ctx,'destFactor',"one_minus_src_alpha");this.addField_SFColor(ctx,'color',1,1,1);this.addField_SFFloat(ctx,'colorTransparency',0);this.addField_SFString(ctx,'alphaFunc',"none");this.addField_SFFloat(ctx,'alphaFuncValue',0);this.addField_SFString(ctx,'equation',"none");}));x3dom.registerNodeType("DepthMode","Shape",defineClass(x3dom.nodeTypes.X3DAppearanceChildNode,function(ctx){x3dom.nodeTypes.DepthMode.superClass.call(this,ctx);this.addField_SFBool(ctx,'enableDepthTest',true);this.addField_SFString(ctx,'depthFunc',"none");this.addField_SFBool(ctx,'readOnly',false);this.addField_SFFloat(ctx,'zNearRange',-1);this.addField_SFFloat(ctx,'zFarRange',-1);}));x3dom.registerNodeType("ColorMaskMode","Shape",defineClass(x3dom.nodeTypes.X3DAppearanceChildNode,function(ctx){x3dom.nodeTypes.ColorMaskMode.superClass.call(this,ctx);this.addField_SFBool(ctx,'maskR',true);this.addField_SFBool(ctx,'maskG',true);this.addField_SFBool(ctx,'maskB',true);this.addField_SFBool(ctx,'maskA',true);}));x3dom.registerNodeType("LineProperties","Shape",defineClass(x3dom.nodeTypes.X3DAppearanceChildNode,function(ctx){x3dom.nodeTypes.LineProperties.superClass.call(this,ctx);this.addField_SFBool(ctx,'applied',true);this.addField_SFInt32(ctx,'linetype',1);this.addField_SFFloat(ctx,'linewidthScaleFactor',0);}));x3dom.registerNodeType("X3DMaterialNode","Shape",defineClass(x3dom.nodeTypes.X3DAppearanceChildNode,function(ctx){x3dom.nodeTypes.X3DMaterialNode.superClass.call(this,ctx);}));x3dom.registerNodeType("Material","Shape",defineClass(x3dom.nodeTypes.X3DMaterialNode,function(ctx){x3dom.nodeTypes.Material.superClass.call(this,ctx);this.addField_SFFloat(ctx,'ambientIntensity',0.2);this.addField_SFColor(ctx,'diffuseColor',0.8,0.8,0.8);this.addField_SFColor(ctx,'emissiveColor',0,0,0);this.addField_SFFloat(ctx,'shininess',0.2);this.addField_SFColor(ctx,'specularColor',0,0,0);this.addField_SFFloat(ctx,'transparency',0);},{fieldChanged:function(fieldName){if(fieldName=="ambientIntensity"||fieldName=="diffuseColor"||fieldName=="emissiveColor"||fieldName=="shininess"||fieldName=="specularColor"||fieldName=="transparency")
{Array.forEach(this._parentNodes,function(app){Array.forEach(app._parentNodes,function(shape){shape._dirty.material=true;});app.checkSortType();});}}}));x3dom.nodeTypes.Material.defaultNode=function(){if(!x3dom.nodeTypes.Material._defaultNode){x3dom.nodeTypes.Material._defaultNode=new x3dom.nodeTypes.Material();x3dom.nodeTypes.Material._defaultNode.nodeChanged();}
return x3dom.nodeTypes.Material._defaultNode;};x3dom.registerNodeType("TwoSidedMaterial","Shape",defineClass(x3dom.nodeTypes.Material,function(ctx){x3dom.nodeTypes.TwoSidedMaterial.superClass.call(this,ctx);this.addField_SFFloat(ctx,'backAmbientIntensity',0.2);this.addField_SFColor(ctx,'backDiffuseColor',0.8,0.8,0.8);this.addField_SFColor(ctx,'backEmissiveColor',0,0,0);this.addField_SFFloat(ctx,'backShininess',0.2);this.addField_SFColor(ctx,'backSpecularColor',0,0,0);this.addField_SFFloat(ctx,'backTransparency',0);this.addField_SFBool(ctx,'separateBackColor',false);},{fieldChanged:function(fieldName){if(fieldName=="ambientIntensity"||fieldName=="diffuseColor"||fieldName=="emissiveColor"||fieldName=="shininess"||fieldName=="specularColor"||fieldName=="transparency"||fieldName=="backAmbientIntensity"||fieldName=="backDiffuseColor"||fieldName=="backEmissiveColor"||fieldName=="backShininess"||fieldName=="backSpecularColor"||fieldName=="backTransparency"||fieldName=="separateBackColor")
{Array.forEach(this._parentNodes,function(app){Array.forEach(app._parentNodes,function(shape){shape._dirty.material=true;});app.checkSortType();});}}}));x3dom.registerNodeType("X3DShapeNode","Shape",defineClass(x3dom.nodeTypes.X3DBoundedObject,function(ctx){x3dom.nodeTypes.X3DShapeNode.superClass.call(this,ctx);this.addField_SFBool(ctx,'isPickable',true);this.addField_SFInt32(ctx,'idOffset',0);this.addField_SFNode('appearance',x3dom.nodeTypes.X3DAppearanceNode);this.addField_SFNode('geometry',x3dom.nodeTypes.X3DGeometryNode);this._objectID=0;this._shaderProperties=null;this._clipPlanes=[];this._cleanupGLObjects=null;this._dirty={positions:true,normals:true,texcoords:true,colors:true,specialAttribs:true,indexes:true,texture:true,material:true,text:true,shader:true};this._coordStrideOffset=[0,0];this._normalStrideOffset=[0,0];this._texCoordStrideOffset=[0,0];this._colorStrideOffset=[0,0];this._tessellationProperties=[];},{collectDrawableObjects:function(transform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes)
{var graphState=this.graphState();if(singlePath&&(this._parentNodes.length>1))
singlePath=false;if(singlePath&&(invalidateCache=invalidateCache||this.cacheInvalid()))
this.invalidateCache();if(!this._cf.geometry.node||drawableCollection.cull(transform,graphState,singlePath,planeMask)<=0){return false;}
if(singlePath&&!this._graph.globalMatrix)
this._graph.globalMatrix=transform;if(this._clipPlanes.length!=clipPlanes.length)
{this._dirty.shader=true;}
this._clipPlanes=clipPlanes;drawableCollection.addShape(this,transform,graphState);return true;},getVolume:function()
{var vol=this._graph.volume;if(!this.volumeValid()&&this._vf.render)
{var geo=this._cf.geometry.node;var childVol=geo?geo.getVolume():null;if(childVol&&childVol.isValid())
vol.extendBounds(childVol.min,childVol.max);}
return vol;},getCenter:function(){var geo=this._cf.geometry.node;return(geo?geo.getCenter():new x3dom.fields.SFVec3f(0,0,0));},getDiameter:function(){var geo=this._cf.geometry.node;return(geo?geo.getDiameter():0);},doIntersect:function(line){return this._cf.geometry.node.doIntersect(line);},forceUpdateCoverage:function()
{var geo=this._cf.geometry.node;return(geo?geo.forceUpdateCoverage():false);},tessellationProperties:function()
{var geo=this._cf.geometry.node;if(geo&&geo._indexOffset)
return geo._indexOffset;else
return this._tessellationProperties;},isLit:function(){return this._cf.geometry.node._vf.lit;},isSolid:function(){var twoSidedMat=(this._cf.appearance.node&&this._cf.appearance.node._cf.material.node&&x3dom.isa(this._cf.appearance.node._cf.material.node,x3dom.nodeTypes.TwoSidedMaterial));return this._cf.geometry.node._vf.solid&&!twoSidedMat;},isCCW:function(){return this._cf.geometry.node._vf.ccw;},parentRemoved:function(parent){for(var i=0,n=this._childNodes.length;i<n;i++){var child=this._childNodes[i];if(child){child.parentRemoved(this);}}
if(parent)
parent.invalidateVolume();if(this._parentNodes.length>0)
this.invalidateVolume();if(this._cleanupGLObjects){this._cleanupGLObjects();}},unsetDirty:function(){this._dirty.positions=false;this._dirty.normals=false;this._dirty.texcoords=false;this._dirty.colors=false;this._dirty.specialAttribs=false;this._dirty.indexes=false;this._dirty.texture=false;this._dirty.material=false;this._dirty.text=false;this._dirty.shader=false;},unsetGeoDirty:function(){this._dirty.positions=false;this._dirty.normals=false;this._dirty.texcoords=false;this._dirty.colors=false;this._dirty.specialAttribs=false;this._dirty.indexes=false;},setAllDirty:function(){this._dirty.positions=true;this._dirty.normals=true;this._dirty.texcoords=true;this._dirty.colors=true;this._dirty.specialAttribs=true;this._dirty.indexes=true;this._dirty.texture=true;this._dirty.material=true;this._dirty.text=true;this._dirty.shader=true;this.invalidateVolume();},setAppDirty:function(){this._dirty.texture=true;this._dirty.material=true;this._dirty.shader=true;},setGeoDirty:function(){this._dirty.positions=true;this._dirty.normals=true;this._dirty.texcoords=true;this._dirty.colors=true;this._dirty.specialAttribs=true;this._dirty.indexes=true;this.invalidateVolume();},getShaderProperties:function(viewarea)
{if(this._shaderProperties==null||this._dirty.shader==true||(this._webgl!==undefined&&this._webgl.dirtyLighting!=x3dom.Utils.checkDirtyLighting(viewarea))||x3dom.Utils.checkDirtyEnvironment(viewarea,this._shaderProperties)==true)
{this._shaderProperties=x3dom.Utils.generateProperties(viewarea,this);this._dirty.shader=false;if(this._webgl!==undefined)
{this._webgl.dirtyLighting=x3dom.Utils.checkDirtyLighting(viewarea);}}
return this._shaderProperties;},getTextures:function(){var textures=[];var appearance=this._cf.appearance.node;if(appearance){var tex=appearance._cf.texture.node;if(tex){if(x3dom.isa(tex,x3dom.nodeTypes.MultiTexture)){textures=textures.concat(tex.getTextures());}
else{textures.push(tex);}}
var shader=appearance._cf.shaders.nodes[0];if(shader){if(x3dom.isa(shader,x3dom.nodeTypes.CommonSurfaceShader)){textures=textures.concat(shader.getTextures());}}}
var geometry=this._cf.geometry.node;if(geometry){if(x3dom.isa(geometry,x3dom.nodeTypes.ImageGeometry)){textures=textures.concat(geometry.getTextures());}
else if(x3dom.isa(geometry,x3dom.nodeTypes.Text)){textures=textures.concat(geometry);}}
return textures;}}));x3dom.registerNodeType("Shape","Shape",defineClass(x3dom.nodeTypes.X3DShapeNode,function(ctx){x3dom.nodeTypes.Shape.superClass.call(this,ctx);},{nodeChanged:function(){if(!this._cf.appearance.node){}
if(!this._cf.geometry.node){if(this._DEF)
x3dom.debug.logError("No geometry given in Shape/"+this._DEF);}
else if(!this._objectID){this._objectID=++x3dom.nodeTypes.Shape.objectID;x3dom.nodeTypes.Shape.idMap.nodeID[this._objectID]=this;}
this.invalidateVolume();}}));x3dom.nodeTypes.Shape.shaderPartID=0;x3dom.nodeTypes.Shape.objectID=0;x3dom.nodeTypes.Shape.idMap={nodeID:{},remove:function(obj){for(var prop in this.nodeID){if(this.nodeID.hasOwnProperty(prop)){var val=this.nodeID[prop];if(val._objectID&&obj._objectID&&val._objectID===obj._objectID)
{delete this.nodeID[prop];x3dom.debug.logInfo("Unreg "+val._objectID);}}}}};x3dom.registerNodeType("X3DLightNode","Lighting",defineClass(x3dom.nodeTypes.X3DChildNode,function(ctx){x3dom.nodeTypes.X3DLightNode.superClass.call(this,ctx);if(ctx)
ctx.doc._nodeBag.lights.push(this);else
x3dom.debug.logWarning("X3DLightNode: No runtime context found!");this._lightID=0;this._dirty=true;this.addField_SFFloat(ctx,'ambientIntensity',0);this.addField_SFColor(ctx,'color',1,1,1);this.addField_SFFloat(ctx,'intensity',1);this.addField_SFBool(ctx,'global',false);this.addField_SFBool(ctx,'on',true);this.addField_SFFloat(ctx,'shadowIntensity',0);this.addField_SFInt32(ctx,'shadowMapSize',1024);this.addField_SFInt32(ctx,'shadowFilterSize',0);this.addField_SFFloat(ctx,'shadowOffset',0);this.addField_SFFloat(ctx,'zNear',-1);this.addField_SFFloat(ctx,'zFar',-1);},{getViewMatrix:function(vec){return x3dom.fields.SFMatrix4f.identity;},nodeChanged:function(){if(!this._lightID){this._lightID=++x3dom.nodeTypes.X3DLightNode.lightID;}},fieldChanged:function(fieldName)
{if(this._vf.hasOwnProperty(fieldName)){this._dirty=true;}},parentRemoved:function(parent)
{if(this._parentNodes.length===1&&this._parentNodes[0]==parent){var doc=this.findX3DDoc();for(var i=0,n=doc._nodeBag.lights.length;i<n;i++){if(doc._nodeBag.lights[i]===this){doc._nodeBag.lights.splice(i,1);}}}},onRemove:function()
{console.log("remove");}}));x3dom.nodeTypes.X3DLightNode.lightID=0;x3dom.registerNodeType("DirectionalLight","Lighting",defineClass(x3dom.nodeTypes.X3DLightNode,function(ctx){x3dom.nodeTypes.DirectionalLight.superClass.call(this,ctx);this.addField_SFVec3f(ctx,'direction',0,0,-1);this.addField_SFInt32(ctx,'shadowCascades',1);this.addField_SFFloat(ctx,'shadowSplitFactor',1);this.addField_SFFloat(ctx,'shadowSplitOffset',0.1);},{getViewMatrix:function(vec){var dir=this.getCurrentTransform().multMatrixVec(this._vf.direction).normalize();var orientation=x3dom.fields.Quaternion.rotateFromTo(new x3dom.fields.SFVec3f(0,0,-1),dir);return orientation.toMatrix().transpose().mult(x3dom.fields.SFMatrix4f.translation(vec.negate()));}}));x3dom.registerNodeType("PointLight","Lighting",defineClass(x3dom.nodeTypes.X3DLightNode,function(ctx){x3dom.nodeTypes.PointLight.superClass.call(this,ctx);this.addField_SFVec3f(ctx,'attenuation',1,0,0);this.addField_SFVec3f(ctx,'location',0,0,0);this.addField_SFFloat(ctx,'radius',100);this._vf.global=true;},{getViewMatrix:function(vec){var pos=this.getCurrentTransform().multMatrixPnt(this._vf.location);var orientation=x3dom.fields.Quaternion.rotateFromTo(new x3dom.fields.SFVec3f(0,0,-1),vec);return orientation.toMatrix().transpose().mult(x3dom.fields.SFMatrix4f.translation(pos.negate()));}}));x3dom.registerNodeType("SpotLight","Lighting",defineClass(x3dom.nodeTypes.X3DLightNode,function(ctx){x3dom.nodeTypes.SpotLight.superClass.call(this,ctx);this.addField_SFVec3f(ctx,'direction',0,0,-1);this.addField_SFVec3f(ctx,'attenuation',1,0,0);this.addField_SFVec3f(ctx,'location',0,0,0);this.addField_SFFloat(ctx,'radius',100);this.addField_SFFloat(ctx,'beamWidth',1.5707963);this.addField_SFFloat(ctx,'cutOffAngle',1.5707963);this.addField_SFInt32(ctx,'shadowCascades',1);this.addField_SFFloat(ctx,'shadowSplitFactor',1);this.addField_SFFloat(ctx,'shadowSplitOffset',0.1);this._vf.global=true;},{getViewMatrix:function(vec){var pos=this.getCurrentTransform().multMatrixPnt(this._vf.location);var dir=this.getCurrentTransform().multMatrixVec(this._vf.direction).normalize();var orientation=x3dom.fields.Quaternion.rotateFromTo(new x3dom.fields.SFVec3f(0,0,-1),dir);return orientation.toMatrix().transpose().mult(x3dom.fields.SFMatrix4f.translation(pos.negate()));}}));x3dom.registerNodeType("X3DFollowerNode","Followers",defineClass(x3dom.nodeTypes.X3DChildNode,function(ctx){x3dom.nodeTypes.X3DFollowerNode.superClass.call(this,ctx);if(ctx)
ctx.doc._nodeBag.followers.push(this);else
x3dom.debug.logWarning("X3DFollowerNode: No runtime context found!");this.addField_SFBool(ctx,'isActive',false);this._eps=x3dom.fields.Eps;},{parentRemoved:function(parent)
{if(this._parentNodes.length===0){var doc=this.findX3DDoc();for(var i=0,n=doc._nodeBag.followers.length;i<n;i++){if(doc._nodeBag.followers[i]===this){doc._nodeBag.followers.splice(i,1);}}}},tick:function(t){return false;},stepResponse:function(t)
{if(t<=0){return 0;}
if(t>=this._vf.duration){return 1;}
return this.stepResponseCore(t/this._vf.duration);},stepResponseCore:function(T)
{return 0.5-0.5*Math.cos(T*Math.PI);}}));x3dom.registerNodeType("X3DChaserNode","Followers",defineClass(x3dom.nodeTypes.X3DFollowerNode,function(ctx){x3dom.nodeTypes.X3DChaserNode.superClass.call(this,ctx);this.addField_SFTime(ctx,'duration',1);this._initDone=false;this._stepTime=0;this._currTime=0;this._bufferEndTime=0;this._numSupports=60;}));x3dom.registerNodeType("X3DDamperNode","Followers",defineClass(x3dom.nodeTypes.X3DFollowerNode,function(ctx){x3dom.nodeTypes.X3DDamperNode.superClass.call(this,ctx);this.addField_SFTime(ctx,'tau',0.3);this.addField_SFFloat(ctx,'tolerance',-1);this.addField_SFInt32(ctx,'order',3);this._eps=this._vf.tolerance<0?this._eps:this._vf.tolerance;this._lastTick=0;}));x3dom.registerNodeType("ColorChaser","Followers",defineClass(x3dom.nodeTypes.X3DChaserNode,function(ctx){x3dom.nodeTypes.ColorChaser.superClass.call(this,ctx);this.addField_SFColor(ctx,'initialDestination',0.8,0.8,0.8);this.addField_SFColor(ctx,'initialValue',0.8,0.8,0.8);this.addField_SFColor(ctx,'value',0,0,0);this.addField_SFColor(ctx,'destination',0,0,0);this._buffer=new x3dom.fields.MFColor();this._previousValue=new x3dom.fields.SFColor(0,0,0);this._value=new x3dom.fields.SFColor(0,0,0);this.initialize();},{fieldChanged:function(fieldName)
{if(fieldName.indexOf("destination")>=0)
{this.initialize();this.updateBuffer(this._currTime);if(!this._vf.isActive){this.postMessage('isActive',true);}}
else if(fieldName.indexOf("value")>=0)
{this.initialize();this._previousValue.setValues(this._vf.value);for(var C=1;C<this._buffer.length;C++){this._buffer[C].setValues(this._vf.value);}
this.postMessage('value',this._vf.value);if(!this._vf.isActive){this.postMessage('isActive',true);}}},initialize:function()
{if(!this._initDone)
{this._initDone=true;this._vf.destination=this._vf.initialDestination;this._buffer.length=this._numSupports;this._buffer[0]=this._vf.initialDestination;for(var C=1;C<this._buffer.length;C++){this._buffer[C]=this._vf.initialValue;}
this._previousValue=this._vf.initialValue;this._stepTime=this._vf.duration/this._numSupports;var active=!this._buffer[0].equals(this._buffer[1],this._eps);if(this._vf.isActive!==active){this.postMessage('isActive',active);}}},tick:function(now)
{this.initialize();this._currTime=now;if(!this._bufferEndTime)
{this._bufferEndTime=now;this._value=this._vf.initialValue;this.postMessage('value',this._value);return true;}
var Frac=this.updateBuffer(now);var Output=this._previousValue;var DeltaIn=this._buffer[this._buffer.length-1].subtract(this._previousValue);var DeltaOut=DeltaIn.multiply(this.stepResponse((this._buffer.length-1+Frac)*this._stepTime));Output=Output.add(DeltaOut);for(var C=this._buffer.length-2;C>=0;C--)
{DeltaIn=this._buffer[C].subtract(this._buffer[C+1]);DeltaOut=DeltaIn.multiply(this.stepResponse((C+Frac)*this._stepTime));Output=Output.add(DeltaOut);}
if(!Output.equals(this._value,this._eps)){this._value.setValues(Output);this.postMessage('value',this._value);}
else{this.postMessage('isActive',false);}
return this._vf.isActive;},updateBuffer:function(now)
{var Frac=(now-this._bufferEndTime)/this._stepTime;var C;var NumToShift;var Alpha;if(Frac>=1)
{NumToShift=Math.floor(Frac);Frac-=NumToShift;if(NumToShift<this._buffer.length)
{this._previousValue=this._buffer[this._buffer.length-NumToShift];for(C=this._buffer.length-1;C>=NumToShift;C--){this._buffer[C]=this._buffer[C-NumToShift];}
for(C=0;C<NumToShift;C++)
{Alpha=C/NumToShift;this._buffer[C]=this._buffer[NumToShift].multiply(Alpha).add(this._vf.destination.multiply((1-Alpha)));}}
else
{this._previousValue=(NumToShift==this._buffer.length)?this._buffer[0]:this._vf.destination;for(C=0;C<this._buffer.length;C++){this._buffer[C]=this._vf.destination;}}
this._bufferEndTime+=NumToShift*this._stepTime;}
return Frac;}}));x3dom.registerNodeType("ColorDamper","Followers",defineClass(x3dom.nodeTypes.X3DDamperNode,function(ctx){x3dom.nodeTypes.ColorDamper.superClass.call(this,ctx);this.addField_SFColor(ctx,'initialDestination',0.8,0.8,0.8);this.addField_SFColor(ctx,'initialValue',0.8,0.8,0.8);this.addField_SFColor(ctx,'value',0,0,0);this.addField_SFColor(ctx,'destination',0,0,0);this._value0=new x3dom.fields.SFColor(0,0,0);this._value1=new x3dom.fields.SFColor(0,0,0);this._value2=new x3dom.fields.SFColor(0,0,0);this._value3=new x3dom.fields.SFColor(0,0,0);this._value4=new x3dom.fields.SFColor(0,0,0);this._value5=new x3dom.fields.SFColor(0,0,0);this.initialize();},{fieldChanged:function(fieldName)
{if(fieldName==="tolerance")
{this._eps=this._vf.tolerance<0?0.001:this._vf.tolerance;}
else if(fieldName.indexOf("destination")>=0)
{if(!this._value0.equals(this._vf.destination,this._eps)){this._value0=this._vf.destination;if(!this._vf.isActive){this.postMessage('isActive',true);}}}
else if(fieldName.indexOf("value")>=0)
{this._value1.setValues(this._vf.value);this._value2.setValues(this._vf.value);this._value3.setValues(this._vf.value);this._value4.setValues(this._vf.value);this._value5.setValues(this._vf.value);this._lastTick=0;this.postMessage('value',this._value5);if(!this._vf.isActive){this._lastTick=0;this.postMessage('isActive',true);}}},initialize:function()
{this._value0.setValues(this._vf.initialDestination);this._value1.setValues(this._vf.initialValue);this._value2.setValues(this._vf.initialValue);this._value3.setValues(this._vf.initialValue);this._value4.setValues(this._vf.initialValue);this._value5.setValues(this._vf.initialValue);this._lastTick=0;var active=!this._value0.equals(this._value1,this._eps);if(this._vf.isActive!==active){this.postMessage('isActive',active);}},distance:function(a,b)
{var diff=a.subtract(b);return Math.sqrt(diff.r*diff.r+diff.g*diff.g+diff.b*diff.b);},tick:function(now)
{if(!this._lastTick)
{this._lastTick=now;return false;}
var delta=now-this._lastTick;var alpha=Math.exp(-delta/this._vf.tau);this._value1=this._vf.order>0&&this._vf.tau?this._value0.add(this._value1.subtract(this._value0).multiply(alpha)):new x3dom.fields.SFColor(this._value0.r,this._value0.g,this._value0.b);this._value2=this._vf.order>1&&this._vf.tau?this._value1.add(this._value2.subtract(this._value1).multiply(alpha)):new x3dom.fields.SFColor(this._value1.r,this._value1.g,this._value1.b);this._value3=this._vf.order>2&&this._vf.tau?this._value2.add(this._value3.subtract(this._value2).multiply(alpha)):new x3dom.fields.SFColor(this._value2.r,this._value2.g,this._value2.b);this._value4=this._vf.order>3&&this._vf.tau?this._value3.add(this._value4.subtract(this._value3).multiply(alpha)):new x3dom.fields.SFColor(this._value3.r,this._value3.g,this._value3.b);this._value5=this._vf.order>4&&this._vf.tau?this._value4.add(this._value5.subtract(this._value4).multiply(alpha)):new x3dom.fields.SFColor(this._value4.r,this._value4.g,this._value4.b);var dist=this.distance(this._value1,this._value0);if(this._vf.order>1)
{var dist2=this.distance(this._value2,this._value1);if(dist2>dist){dist=dist2;}}
if(this._vf.order>2)
{var dist3=this.distance(this._value3,this._value2);if(dist3>dist){dist=dist3;}}
if(this._vf.order>3)
{var dist4=this.distance(this._value4,this._value3);if(dist4>dist){dist=dist4;}}
if(this._vf.order>4)
{var dist5=this.distance(this._value5,this._value4);if(dist5>dist){dist=dist5;}}
if(dist<=this._eps)
{this._value1.setValues(this._value0);this._value2.setValues(this._value0);this._value3.setValues(this._value0);this._value4.setValues(this._value0);this._value5.setValues(this._value0);this.postMessage('value',this._value0);this.postMessage('isActive',false);this._lastTick=0;return false;}
this.postMessage('value',this._value5);this._lastTick=now;return true;}}));x3dom.registerNodeType("OrientationChaser","Followers",defineClass(x3dom.nodeTypes.X3DChaserNode,function(ctx){x3dom.nodeTypes.OrientationChaser.superClass.call(this,ctx);this.addField_SFRotation(ctx,'initialDestination',0,1,0,0);this.addField_SFRotation(ctx,'initialValue',0,1,0,0);this.addField_SFRotation(ctx,'value',0,1,0,0);this.addField_SFRotation(ctx,'destination',0,1,0,0);this._numSupports=30;this._buffer=new x3dom.fields.MFRotation();this._previousValue=new x3dom.fields.Quaternion(0,1,0,0);this._value=new x3dom.fields.Quaternion(0,1,0,0);this.initialize();},{fieldChanged:function(fieldName)
{if(fieldName.indexOf("destination")>=0)
{this.initialize();this.updateBuffer(this._currTime);if(!this._vf.isActive){this.postMessage('isActive',true);}}
else if(fieldName.indexOf("value")>=0)
{this.initialize();this._previousValue.setValues(this._vf.value);for(var C=1;C<this._buffer.length;C++){this._buffer[C].setValues(this._vf.value);}
this.postMessage('value',this._vf.value);if(!this._vf.isActive){this.postMessage('isActive',true);}}},initialize:function()
{if(!this._initDone)
{this._initDone=true;this._vf.destination=x3dom.fields.Quaternion.copy(this._vf.initialDestination);this._buffer.length=this._numSupports;this._buffer[0]=x3dom.fields.Quaternion.copy(this._vf.initialDestination);for(var C=1;C<this._buffer.length;C++){this._buffer[C]=x3dom.fields.Quaternion.copy(this._vf.initialValue);}
this._previousValue=x3dom.fields.Quaternion.copy(this._vf.initialValue);this._stepTime=this._vf.duration/this._numSupports;var active=!this._buffer[0].equals(this._buffer[1],this._eps);if(this._vf.isActive!==active){this.postMessage('isActive',active);}}},tick:function(now)
{this.initialize();this._currTime=now;if(!this._bufferEndTime)
{this._bufferEndTime=now;this._value=x3dom.fields.Quaternion.copy(this._vf.initialValue);this.postMessage('value',this._value);return true;}
var Frac=this.updateBuffer(now);var Output=x3dom.fields.Quaternion.copy(this._previousValue);var DeltaIn=this._previousValue.inverse().multiply(this._buffer[this._buffer.length-1]);Output=Output.slerp(Output.multiply(DeltaIn),this.stepResponse((this._buffer.length-1+Frac)*this._stepTime));for(var C=this._buffer.length-2;C>=0;C--)
{DeltaIn=this._buffer[C+1].inverse().multiply(this._buffer[C]);Output=Output.slerp(Output.multiply(DeltaIn),this.stepResponse((C+Frac)*this._stepTime));}
if(!Output.equals(this._value,this._eps)){Output=Output.normalize(Output);this._value.setValues(Output);this.postMessage('value',this._value);}
else{this.postMessage('isActive',false);}
return this._vf.isActive;},updateBuffer:function(now)
{var Frac=(now-this._bufferEndTime)/this._stepTime;var C;var NumToShift;var Alpha;if(Frac>=1)
{NumToShift=Math.floor(Frac);Frac-=NumToShift;if(NumToShift<this._buffer.length)
{this._previousValue=x3dom.fields.Quaternion.copy(this._buffer[this._buffer.length-NumToShift]);for(C=this._buffer.length-1;C>=NumToShift;C--){this._buffer[C]=x3dom.fields.Quaternion.copy(this._buffer[C-NumToShift]);}
for(C=0;C<NumToShift;C++)
{Alpha=C/NumToShift;this._buffer[C]=this._vf.destination.slerp(this._buffer[NumToShift],Alpha);}}
else
{this._previousValue=x3dom.fields.Quaternion.copy((NumToShift==this._buffer.length)?this._buffer[0]:this._vf.destination);for(C=0;C<this._buffer.length;C++){this._buffer[C]=x3dom.fields.Quaternion.copy(this._vf.destination);}}
this._bufferEndTime+=NumToShift*this._stepTime;}
return Frac;}}));x3dom.registerNodeType("OrientationDamper","Followers",defineClass(x3dom.nodeTypes.X3DDamperNode,function(ctx){x3dom.nodeTypes.OrientationDamper.superClass.call(this,ctx);this.addField_SFRotation(ctx,'initialDestination',0,1,0,0);this.addField_SFRotation(ctx,'initialValue',0,1,0,0);this.addField_SFRotation(ctx,'value',0,1,0,0);this.addField_SFRotation(ctx,'destination',0,1,0,0);this._value0=new x3dom.fields.Quaternion(0,1,0,0);this._value1=new x3dom.fields.Quaternion(0,1,0,0);this._value2=new x3dom.fields.Quaternion(0,1,0,0);this._value3=new x3dom.fields.Quaternion(0,1,0,0);this._value4=new x3dom.fields.Quaternion(0,1,0,0);this._value5=new x3dom.fields.Quaternion(0,1,0,0);this.initialize();},{fieldChanged:function(fieldName)
{if(fieldName==="tolerance")
{this._eps=this._vf.tolerance<0?0.001:this._vf.tolerance;}
else if(fieldName.indexOf("destination")>=0)
{if(!this._value0.equals(this._vf.destination,this._eps)){this._value0=this._vf.destination;if(!this._vf.isActive){this.postMessage('isActive',true);}}}
else if(fieldName.indexOf("value")>=0)
{this._value1.setValues(this._vf.value);this._value2.setValues(this._vf.value);this._value3.setValues(this._vf.value);this._value4.setValues(this._vf.value);this._value5.setValues(this._vf.value);this._lastTick=0;this.postMessage('value',this._value5);if(!this._vf.isActive){this._lastTick=0;this.postMessage('isActive',true);}}},initialize:function()
{this._value0.setValues(this._vf.initialDestination);this._value1.setValues(this._vf.initialValue);this._value2.setValues(this._vf.initialValue);this._value3.setValues(this._vf.initialValue);this._value4.setValues(this._vf.initialValue);this._value5.setValues(this._vf.initialValue);this._lastTick=0;var active=!this._value0.equals(this._value1,this._eps);if(this._vf.isActive!==active){this.postMessage('isActive',active);}},tick:function(now)
{if(!this._lastTick)
{this._lastTick=now;return false;}
var delta=now-this._lastTick;var alpha=Math.exp(-delta/this._vf.tau);this._value1=this._vf.order>0&&this._vf.tau?this._value0.slerp(this._value1,alpha):new x3dom.fields.Quaternion(this._value0.x,this._value0.y,this._value0.z,this._value0.w);this._value2=this._vf.order>1&&this._vf.tau?this._value1.slerp(this._value2,alpha):new x3dom.fields.Quaternion(this._value1.x,this._value1.y,this._value1.z,this._value1.w);this._value3=this._vf.order>2&&this._vf.tau?this._value2.slerp(this._value3,alpha):new x3dom.fields.Quaternion(this._value2.x,this._value2.y,this._value2.z,this._value2.w);this._value4=this._vf.order>3&&this._vf.tau?this._value3.slerp(this._value4,alpha):new x3dom.fields.Quaternion(this._value3.x,this._value3.y,this._value3.z,this._value3.w);this._value5=this._vf.order>4&&this._vf.tau?this._value4.slerp(this._value5,alpha):new x3dom.fields.Quaternion(this._value4.x,this._value4.y,this._value4.z,this._value4.w);var dist=Math.abs(this._value1.inverse().multiply(this._value0).angle());if(this._vf.order>1)
{var dist2=Math.abs(this._value2.inverse().multiply(this._value1).angle());if(dist2>dist){dist=dist2;}}
if(this._vf.order>2)
{var dist3=Math.abs(this._value3.inverse().multiply(this._value2).angle());if(dist3>dist){dist=dist3;}}
if(this._vf.order>3)
{var dist4=Math.abs(this._value4.inverse().multiply(this._value3).angle());if(dist4>dist){dist=dist4;}}
if(this._vf.order>4)
{var dist5=Math.abs(this._value5.inverse().multiply(this._value4).angle());if(dist5>dist){dist=dist5;}}
if(dist<=this._eps)
{this._value1.setValues(this._value0);this._value2.setValues(this._value0);this._value3.setValues(this._value0);this._value4.setValues(this._value0);this._value5.setValues(this._value0);this.postMessage('value',this._value0);this.postMessage('isActive',false);this._lastTick=0;return false;}
this.postMessage('value',this._value5);this._lastTick=now;return true;}}));x3dom.registerNodeType("PositionChaser","Followers",defineClass(x3dom.nodeTypes.X3DChaserNode,function(ctx){x3dom.nodeTypes.PositionChaser.superClass.call(this,ctx);this.addField_SFVec3f(ctx,'initialDestination',0,0,0);this.addField_SFVec3f(ctx,'initialValue',0,0,0);this.addField_SFVec3f(ctx,'value',0,0,0);this.addField_SFVec3f(ctx,'destination',0,0,0);this._buffer=new x3dom.fields.MFVec3f();this._previousValue=new x3dom.fields.SFVec3f(0,0,0);this._value=new x3dom.fields.SFVec3f(0,0,0);this.initialize();},{fieldChanged:function(fieldName)
{if(fieldName.indexOf("destination")>=0)
{this.initialize();this.updateBuffer(this._currTime);if(!this._vf.isActive){this.postMessage('isActive',true);}}
else if(fieldName.indexOf("value")>=0)
{this.initialize();this._previousValue.setValues(this._vf.value);for(var C=1;C<this._buffer.length;C++){this._buffer[C].setValues(this._vf.value);}
this.postMessage('value',this._vf.value);if(!this._vf.isActive){this.postMessage('isActive',true);}}},initialize:function()
{if(!this._initDone)
{this._initDone=true;this._vf.destination=x3dom.fields.SFVec3f.copy(this._vf.initialDestination);this._buffer.length=this._numSupports;this._buffer[0]=x3dom.fields.SFVec3f.copy(this._vf.initialDestination);for(var C=1;C<this._buffer.length;C++){this._buffer[C]=x3dom.fields.SFVec3f.copy(this._vf.initialValue);}
this._previousValue=x3dom.fields.SFVec3f.copy(this._vf.initialValue);this._stepTime=this._vf.duration/this._numSupports;var active=!this._buffer[0].equals(this._buffer[1],this._eps);if(this._vf.isActive!==active){this.postMessage('isActive',active);}}},tick:function(now)
{this.initialize();this._currTime=now;if(!this._bufferEndTime)
{this._bufferEndTime=now;this._value=x3dom.fields.SFVec3f.copy(this._vf.initialValue);this.postMessage('value',this._value);return true;}
var Frac=this.updateBuffer(now);var Output=x3dom.fields.SFVec3f.copy(this._previousValue);var DeltaIn=this._buffer[this._buffer.length-1].subtract(this._previousValue);var DeltaOut=DeltaIn.multiply(this.stepResponse((this._buffer.length-1+Frac)*this._stepTime));Output=Output.add(DeltaOut);for(var C=this._buffer.length-2;C>=0;C--)
{DeltaIn=this._buffer[C].subtract(this._buffer[C+1]);DeltaOut=DeltaIn.multiply(this.stepResponse((C+Frac)*this._stepTime));Output=Output.add(DeltaOut);}
if(!Output.equals(this._value,this._eps)){this._value.setValues(Output);this.postMessage('value',this._value);}
else{this.postMessage('isActive',false);}
return this._vf.isActive;},updateBuffer:function(now)
{var Frac=(now-this._bufferEndTime)/this._stepTime;var C;var NumToShift;var Alpha;if(Frac>=1)
{NumToShift=Math.floor(Frac);Frac-=NumToShift;if(NumToShift<this._buffer.length)
{this._previousValue=x3dom.fields.SFVec3f.copy(this._buffer[this._buffer.length-NumToShift]);for(C=this._buffer.length-1;C>=NumToShift;C--){this._buffer[C]=x3dom.fields.SFVec3f.copy(this._buffer[C-NumToShift]);}
for(C=0;C<NumToShift;C++)
{Alpha=C/NumToShift;this._buffer[C]=this._buffer[NumToShift].multiply(Alpha).add(this._vf.destination.multiply((1-Alpha)));}}
else
{this._previousValue=x3dom.fields.SFVec3f.copy((NumToShift==this._buffer.length)?this._buffer[0]:this._vf.destination);for(C=0;C<this._buffer.length;C++){this._buffer[C]=x3dom.fields.SFVec3f.copy(this._vf.destination);}}
this._bufferEndTime+=NumToShift*this._stepTime;}
return Frac;}}));x3dom.registerNodeType("PositionChaser2D","Followers",defineClass(x3dom.nodeTypes.X3DChaserNode,function(ctx){x3dom.nodeTypes.PositionChaser2D.superClass.call(this,ctx);this.addField_SFVec2f(ctx,'initialDestination',0,0);this.addField_SFVec2f(ctx,'initialValue',0,0);this.addField_SFVec2f(ctx,'value',0,0);this.addField_SFVec2f(ctx,'destination',0,0);this._buffer=new x3dom.fields.MFVec2f();this._previousValue=new x3dom.fields.SFVec2f(0,0);this._value=new x3dom.fields.SFVec2f(0,0);this.initialize();},{fieldChanged:function(fieldName)
{if(fieldName.indexOf("destination")>=0)
{this.initialize();this.updateBuffer(this._currTime);if(!this._vf.isActive){this.postMessage('isActive',true);}}
else if(fieldName.indexOf("value")>=0)
{this.initialize();this._previousValue.setValues(this._vf.value);for(var C=1;C<this._buffer.length;C++){this._buffer[C].setValues(this._vf.value);}
this.postMessage('value',this._vf.value);if(!this._vf.isActive){this.postMessage('isActive',true);}}},initialize:function()
{if(!this._initDone)
{this._initDone=true;this._vf.destination=x3dom.fields.SFVec2f.copy(this._vf.initialDestination);this._buffer.length=this._numSupports;this._buffer[0]=x3dom.fields.SFVec2f.copy(this._vf.initialDestination);for(var C=1;C<this._buffer.length;C++){this._buffer[C]=x3dom.fields.SFVec2f.copy(this._vf.initialValue);}
this._previousValue=x3dom.fields.SFVec2f.copy(this._vf.initialValue);this._stepTime=this._vf.duration/this._numSupports;var active=!this._buffer[0].equals(this._buffer[1],this._eps);if(this._vf.isActive!==active){this.postMessage('isActive',active);}}},tick:function(now)
{this.initialize();this._currTime=now;if(!this._bufferEndTime)
{this._bufferEndTime=now;this._value=x3dom.fields.SFVec2f.copy(this._vf.initialValue);this.postMessage('value',this._value);return true;}
var Frac=this.updateBuffer(now);var Output=x3dom.fields.SFVec2f.copy(this._previousValue);var DeltaIn=this._buffer[this._buffer.length-1].subtract(this._previousValue);var DeltaOut=DeltaIn.multiply(this.stepResponse((this._buffer.length-1+Frac)*this._stepTime));Output=Output.add(DeltaOut);for(var C=this._buffer.length-2;C>=0;C--)
{DeltaIn=this._buffer[C].subtract(this._buffer[C+1]);DeltaOut=DeltaIn.multiply(this.stepResponse((C+Frac)*this._stepTime));Output=Output.add(DeltaOut);}
if(!Output.equals(this._value,this._eps)){this._value.setValues(Output);this.postMessage('value',this._value);}
else{this.postMessage('isActive',false);}
return this._vf.isActive;},updateBuffer:function(now)
{var Frac=(now-this._bufferEndTime)/this._stepTime;var C;var NumToShift;var Alpha;if(Frac>=1)
{NumToShift=Math.floor(Frac);Frac-=NumToShift;if(NumToShift<this._buffer.length)
{this._previousValue=x3dom.fields.SFVec2f.copy(this._buffer[this._buffer.length-NumToShift]);for(C=this._buffer.length-1;C>=NumToShift;C--){this._buffer[C]=x3dom.fields.SFVec2f.copy(this._buffer[C-NumToShift]);}
for(C=0;C<NumToShift;C++)
{Alpha=C/NumToShift;this._buffer[C]=this._buffer[NumToShift].multiply(Alpha).add(this._vf.destination.multiply((1-Alpha)));}}
else
{this._previousValue=x3dom.fields.SFVec2f.copy((NumToShift==this._buffer.length)?this._buffer[0]:this._vf.destination);for(C=0;C<this._buffer.length;C++){this._buffer[C]=x3dom.fields.SFVec2f.copy(this._vf.destination);}}
this._bufferEndTime+=NumToShift*this._stepTime;}
return Frac;}}));x3dom.registerNodeType("PositionDamper","Followers",defineClass(x3dom.nodeTypes.X3DDamperNode,function(ctx){x3dom.nodeTypes.PositionDamper.superClass.call(this,ctx);this.addField_SFVec3f(ctx,'initialDestination',0,0,0);this.addField_SFVec3f(ctx,'initialValue',0,0,0);this.addField_SFVec3f(ctx,'value',0,0,0);this.addField_SFVec3f(ctx,'destination',0,0,0);this._value0=new x3dom.fields.SFVec3f(0,0,0);this._value1=new x3dom.fields.SFVec3f(0,0,0);this._value2=new x3dom.fields.SFVec3f(0,0,0);this._value3=new x3dom.fields.SFVec3f(0,0,0);this._value4=new x3dom.fields.SFVec3f(0,0,0);this._value5=new x3dom.fields.SFVec3f(0,0,0);this.initialize();},{fieldChanged:function(fieldName)
{if(fieldName==="tolerance")
{this._eps=this._vf.tolerance<0?0.001:this._vf.tolerance;}
else if(fieldName.indexOf("destination")>=0)
{if(!this._value0.equals(this._vf.destination,this._eps)){this._value0=this._vf.destination;if(!this._vf.isActive){this.postMessage('isActive',true);}}}
else if(fieldName.indexOf("value")>=0)
{this._value1.setValues(this._vf.value);this._value2.setValues(this._vf.value);this._value3.setValues(this._vf.value);this._value4.setValues(this._vf.value);this._value5.setValues(this._vf.value);this._lastTick=0;this.postMessage('value',this._value5);if(!this._vf.isActive){this._lastTick=0;this.postMessage('isActive',true);}}},initialize:function()
{this._value0.setValues(this._vf.initialDestination);this._value1.setValues(this._vf.initialValue);this._value2.setValues(this._vf.initialValue);this._value3.setValues(this._vf.initialValue);this._value4.setValues(this._vf.initialValue);this._value5.setValues(this._vf.initialValue);this._lastTick=0;var active=!this._value0.equals(this._value1,this._eps);if(this._vf.isActive!==active){this.postMessage('isActive',active);}},tick:function(now)
{if(!this._lastTick)
{this._lastTick=now;return false;}
var delta=now-this._lastTick;var alpha=Math.exp(-delta/this._vf.tau);this._value1=this._vf.order>0&&this._vf.tau?this._value0.add(this._value1.subtract(this._value0).multiply(alpha)):new x3dom.fields.SFVec3f(this._value0.x,this._value0.y,this._value0.z);this._value2=this._vf.order>1&&this._vf.tau?this._value1.add(this._value2.subtract(this._value1).multiply(alpha)):new x3dom.fields.SFVec3f(this._value1.x,this._value1.y,this._value1.z);this._value3=this._vf.order>2&&this._vf.tau?this._value2.add(this._value3.subtract(this._value2).multiply(alpha)):new x3dom.fields.SFVec3f(this._value2.x,this._value2.y,this._value2.z);this._value4=this._vf.order>3&&this._vf.tau?this._value3.add(this._value4.subtract(this._value3).multiply(alpha)):new x3dom.fields.SFVec3f(this._value3.x,this._value3.y,this._value3.z);this._value5=this._vf.order>4&&this._vf.tau?this._value4.add(this._value5.subtract(this._value4).multiply(alpha)):new x3dom.fields.SFVec3f(this._value4.x,this._value4.y,this._value4.z);var dist=this._value1.subtract(this._value0).length();if(this._vf.order>1)
{var dist2=this._value2.subtract(this._value1).length();if(dist2>dist){dist=dist2;}}
if(this._vf.order>2)
{var dist3=this._value3.subtract(this._value2).length();if(dist3>dist){dist=dist3;}}
if(this._vf.order>3)
{var dist4=this._value4.subtract(this._value3).length();if(dist4>dist){dist=dist4;}}
if(this._vf.order>4)
{var dist5=this._value5.subtract(this._value4).length();if(dist5>dist){dist=dist5;}}
if(dist<=this._eps)
{this._value1.setValues(this._value0);this._value2.setValues(this._value0);this._value3.setValues(this._value0);this._value4.setValues(this._value0);this._value5.setValues(this._value0);this.postMessage('value',this._value0);this.postMessage('isActive',false);this._lastTick=0;return false;}
this.postMessage('value',this._value5);this._lastTick=now;return true;}}));x3dom.registerNodeType("PositionDamper2D","Followers",defineClass(x3dom.nodeTypes.X3DDamperNode,function(ctx){x3dom.nodeTypes.PositionDamper2D.superClass.call(this,ctx);this.addField_SFVec2f(ctx,'initialDestination',0,0);this.addField_SFVec2f(ctx,'initialValue',0,0);this.addField_SFVec2f(ctx,'value',0,0);this.addField_SFVec2f(ctx,'destination',0,0);this._value0=new x3dom.fields.SFVec2f(0,0);this._value1=new x3dom.fields.SFVec2f(0,0);this._value2=new x3dom.fields.SFVec2f(0,0);this._value3=new x3dom.fields.SFVec2f(0,0);this._value4=new x3dom.fields.SFVec2f(0,0);this._value5=new x3dom.fields.SFVec2f(0,0);this.initialize();},{fieldChanged:function(fieldName)
{if(fieldName==="tolerance")
{this._eps=this._vf.tolerance<0?0.001:this._vf.tolerance;}
else if(fieldName.indexOf("destination")>=0)
{if(!this._value0.equals(this._vf.destination,this._eps)){this._value0=this._vf.destination;if(!this._vf.isActive){this.postMessage('isActive',true);}}}
else if(fieldName.indexOf("value")>=0)
{this._value1.setValues(this._vf.value);this._value2.setValues(this._vf.value);this._value3.setValues(this._vf.value);this._value4.setValues(this._vf.value);this._value5.setValues(this._vf.value);this._lastTick=0;this.postMessage('value',this._value5);if(!this._vf.isActive){this._lastTick=0;this.postMessage('isActive',true);}}},initialize:function()
{this._value0.setValues(this._vf.initialDestination);this._value1.setValues(this._vf.initialValue);this._value2.setValues(this._vf.initialValue);this._value3.setValues(this._vf.initialValue);this._value4.setValues(this._vf.initialValue);this._value5.setValues(this._vf.initialValue);this._lastTick=0;var active=!this._value0.equals(this._value1,this._eps);if(this._vf.isActive!==active){this.postMessage('isActive',active);}},tick:function(now)
{if(!this._lastTick)
{this._lastTick=now;return false;}
var delta=now-this._lastTick;var alpha=Math.exp(-delta/this._vf.tau);this._value1=this._vf.order>0&&this._vf.tau?this._value0.add(this._value1.subtract(this._value0).multiply(alpha)):new x3dom.fields.SFVec2f(this._value0.x,this._value0.y,this._value0.z);this._value2=this._vf.order>1&&this._vf.tau?this._value1.add(this._value2.subtract(this._value1).multiply(alpha)):new x3dom.fields.SFVec2f(this._value1.x,this._value1.y,this._value1.z);this._value3=this._vf.order>2&&this._vf.tau?this._value2.add(this._value3.subtract(this._value2).multiply(alpha)):new x3dom.fields.SFVec2f(this._value2.x,this._value2.y,this._value2.z);this._value4=this._vf.order>3&&this._vf.tau?this._value3.add(this._value4.subtract(this._value3).multiply(alpha)):new x3dom.fields.SFVec2f(this._value3.x,this._value3.y,this._value3.z);this._value5=this._vf.order>4&&this._vf.tau?this._value4.add(this._value5.subtract(this._value4).multiply(alpha)):new x3dom.fields.SFVec2f(this._value4.x,this._value4.y,this._value4.z);var dist=this._value1.subtract(this._value0).length();if(this._vf.order>1)
{var dist2=this._value2.subtract(this._value1).length();if(dist2>dist){dist=dist2;}}
if(this._vf.order>2)
{var dist3=this._value3.subtract(this._value2).length();if(dist3>dist){dist=dist3;}}
if(this._vf.order>3)
{var dist4=this._value4.subtract(this._value3).length();if(dist4>dist){dist=dist4;}}
if(this._vf.order>4)
{var dist5=this._value5.subtract(this._value4).length();if(dist5>dist){dist=dist5;}}
if(dist<=this._eps)
{this._value1.setValues(this._value0);this._value2.setValues(this._value0);this._value3.setValues(this._value0);this._value4.setValues(this._value0);this._value5.setValues(this._value0);this.postMessage('value',this._value0);this.postMessage('isActive',false);this._lastTick=0;return false;}
this.postMessage('value',this._value5);this._lastTick=now;return true;}}));x3dom.registerNodeType("ScalarChaser","Followers",defineClass(x3dom.nodeTypes.X3DChaserNode,function(ctx){x3dom.nodeTypes.ScalarChaser.superClass.call(this,ctx);this.addField_SFFloat(ctx,'initialDestination',0);this.addField_SFFloat(ctx,'initialValue',0);this.addField_SFFloat(ctx,'value',0);this.addField_SFFloat(ctx,'destination',0);this._buffer=[];this._previousValue=0;this._value=0;this.initialize();},{fieldChanged:function(fieldName)
{if(fieldName.indexOf("destination")>=0)
{this.initialize();this.updateBuffer(this._currTime);if(!this._vf.isActive){this.postMessage('isActive',true);}}
else if(fieldName.indexOf("value")>=0)
{this.initialize();this._previousValue=this._vf.value;for(var C=1;C<this._buffer.length;C++){this._buffer[C]=this._vf.value;}
this.postMessage('value',this._vf.value);if(!this._vf.isActive){this.postMessage('isActive',true);}}},initialize:function()
{if(!this._initDone)
{this._initDone=true;this._vf.destination=this._vf.initialDestination;this._buffer.length=this._numSupports;this._buffer[0]=this._vf.initialDestination;for(var C=1;C<this._buffer.length;C++){this._buffer[C]=this._vf.initialValue;}
this._previousValue=this._vf.initialValue;this._stepTime=this._vf.duration/this._numSupports;var active=(Math.abs(this._buffer[0]-this._buffer[1])>this._eps);if(this._vf.isActive!==active){this.postMessage('isActive',active);}}},tick:function(now)
{this.initialize();this._currTime=now;if(!this._bufferEndTime)
{this._bufferEndTime=now;this._value=this._vf.initialValue;this.postMessage('value',this._value);return true;}
var Frac=this.updateBuffer(now);var Output=this._previousValue;var DeltaIn=this._buffer[this._buffer.length-1]-this._previousValue;var DeltaOut=DeltaIn*(this.stepResponse((this._buffer.length-1+Frac)*this._stepTime));Output=Output+DeltaOut;for(var C=this._buffer.length-2;C>=0;C--)
{DeltaIn=this._buffer[C]-this._buffer[C+1];DeltaOut=DeltaIn*(this.stepResponse((C+Frac)*this._stepTime));Output=Output+DeltaOut;}
if(Math.abs(Output-this._value)>this._eps){this._value=Output;this.postMessage('value',this._value);}
else{this.postMessage('isActive',false);}
return this._vf.isActive;},updateBuffer:function(now)
{var Frac=(now-this._bufferEndTime)/this._stepTime;var C;var NumToShift;var Alpha;if(Frac>=1)
{NumToShift=Math.floor(Frac);Frac-=NumToShift;if(NumToShift<this._buffer.length)
{this._previousValue=this._buffer[this._buffer.length-NumToShift];for(C=this._buffer.length-1;C>=NumToShift;C--){this._buffer[C]=this._buffer[C-NumToShift];}
for(C=0;C<NumToShift;C++)
{Alpha=C/NumToShift;this._buffer[C]=this._buffer[NumToShift]*Alpha+this._vf.destination*(1-Alpha);}}
else
{this._previousValue=(NumToShift==this._buffer.length)?this._buffer[0]:this._vf.destination;for(C=0;C<this._buffer.length;C++){this._buffer[C]=this._vf.destination;}}
this._bufferEndTime+=NumToShift*this._stepTime;}
return Frac;}}));x3dom.registerNodeType("ScalarDamper","Followers",defineClass(x3dom.nodeTypes.X3DDamperNode,function(ctx){x3dom.nodeTypes.ScalarDamper.superClass.call(this,ctx);this.addField_SFFloat(ctx,'initialDestination',0);this.addField_SFFloat(ctx,'initialValue',0);this.addField_SFFloat(ctx,'value',0);this.addField_SFFloat(ctx,'destination',0);this._value0=0;this._value1=0;this._value2=0;this._value3=0;this._value4=0;this._value5=0;this.initialize();},{fieldChanged:function(fieldName)
{if(fieldName==="tolerance")
{this._eps=this._vf.tolerance<0?0.001:this._vf.tolerance;}
else if(fieldName.indexOf("destination")>=0)
{if(Math.abs(this._value0-this._vf.destination)>this._eps){this._value0=this._vf.destination;if(!this._vf.isActive){this.postMessage('isActive',true);}}}
else if(fieldName.indexOf("value")>=0)
{this._value1=this._vf.value;this._value2=this._vf.value;this._value3=this._vf.value;this._value4=this._vf.value;this._value5=this._vf.value;this._lastTick=0;this.postMessage('value',this._value5);if(!this._vf.isActive){this._lastTick=0;this.postMessage('isActive',true);}}},initialize:function()
{this._value0=this._vf.initialDestination;this._value1=this._vf.initialValue;this._value2=this._vf.initialValue;this._value3=this._vf.initialValue;this._value4=this._vf.initialValue;this._value5=this._vf.initialValue;this._lastTick=0;var active=(Math.abs(this._value0-this._value1)>this._eps);if(this._vf.isActive!==active){this.postMessage('isActive',active);}},tick:function(now)
{if(!this._lastTick)
{this._lastTick=now;return false;}
var delta=now-this._lastTick;var alpha=Math.exp(-delta/this._vf.tau);this._value1=this._vf.order>0&&this._vf.tau?this._value0+alpha*(this._value1-this._value0):this._value0;this._value2=this._vf.order>1&&this._vf.tau?this._value1+alpha*(this._value2-this._value1):this._value1;this._value3=this._vf.order>2&&this._vf.tau?this._value2+alpha*(this._value3-this._value2):this._value2;this._value4=this._vf.order>3&&this._vf.tau?this._value3+alpha*(this._value4-this._value3):this._value3;this._value5=this._vf.order>4&&this._vf.tau?this._value4+alpha*(this._value5-this._value4):this._value4;var dist=Math.abs(this._value1-this._value0);if(this._vf.order>1)
{var dist2=Math.abs(this._value2-this._value1);if(dist2>dist){dist=dist2;}}
if(this._vf.order>2)
{var dist3=Math.abs(this._value3-this._value2);if(dist3>dist){dist=dist3;}}
if(this._vf.order>3)
{var dist4=Math.abs(this._value4-this._value3);if(dist4>dist){dist=dist4;}}
if(this._vf.order>4)
{var dist5=Math.abs(this._value5-this._value4);if(dist5>dist){dist=dist5;}}
if(dist<=this._eps)
{this._value1=this._value0;this._value2=this._value0;this._value3=this._value0;this._value4=this._value0;this._value5=this._value0;this.postMessage('value',this._value0);this.postMessage('isActive',false);this._lastTick=0;return false;}
this.postMessage('value',this._value5);this._lastTick=now;return true;}}));x3dom.registerNodeType("CoordinateDamper","Followers",defineClass(x3dom.nodeTypes.X3DDamperNode,function(ctx){x3dom.nodeTypes.CoordinateDamper.superClass.call(this,ctx);this.addField_MFVec3f(ctx,'initialDestination',[]);this.addField_MFVec3f(ctx,'initialValue',[]);this.addField_MFVec3f(ctx,'value',[]);this.addField_MFVec3f(ctx,'destination',[]);x3dom.debug.logWarning("CoordinateDamper NYI");}));x3dom.registerNodeType("TexCoordDamper2D","Followers",defineClass(x3dom.nodeTypes.X3DDamperNode,function(ctx){x3dom.nodeTypes.TexCoordDamper2D.superClass.call(this,ctx);this.addField_MFVec2f(ctx,'initialDestination',[]);this.addField_MFVec2f(ctx,'initialValue',[]);this.addField_MFVec2f(ctx,'value',[]);this.addField_MFVec2f(ctx,'destination',[]);x3dom.debug.logWarning("TexCoordDamper2D NYI");}));x3dom.registerNodeType("X3DInterpolatorNode","Interpolation",defineClass(x3dom.nodeTypes.X3DChildNode,function(ctx){x3dom.nodeTypes.X3DInterpolatorNode.superClass.call(this,ctx);this.addField_MFFloat(ctx,'key',[]);this.addField_SFFloat(ctx,'set_fraction',0);},{linearInterp:function(time,interp){if(time<=this._vf.key[0])
return this._vf.keyValue[0];else if(time>=this._vf.key[this._vf.key.length-1])
return this._vf.keyValue[this._vf.key.length-1];for(var i=0;i<this._vf.key.length-1;++i){if((this._vf.key[i]<time)&&(time<=this._vf.key[i+1]))
return interp(this._vf.keyValue[i],this._vf.keyValue[i+1],(time-this._vf.key[i])/(this._vf.key[i+1]-this._vf.key[i]));}
return this._vf.keyValue[0];}}));x3dom.registerNodeType("OrientationInterpolator","Interpolation",defineClass(x3dom.nodeTypes.X3DInterpolatorNode,function(ctx){x3dom.nodeTypes.OrientationInterpolator.superClass.call(this,ctx);this.addField_MFRotation(ctx,'keyValue',[]);},{fieldChanged:function(fieldName)
{if(fieldName==="set_fraction")
{var value=this.linearInterp(this._vf.set_fraction,function(a,b,t){return a.slerp(b,t);});this.postMessage('value_changed',value);}}}));x3dom.registerNodeType("PositionInterpolator","Interpolation",defineClass(x3dom.nodeTypes.X3DInterpolatorNode,function(ctx){x3dom.nodeTypes.PositionInterpolator.superClass.call(this,ctx);this.addField_MFVec3f(ctx,'keyValue',[]);},{fieldChanged:function(fieldName)
{if(fieldName==="set_fraction")
{var value=this.linearInterp(this._vf.set_fraction,function(a,b,t){return a.multiply(1.0-t).add(b.multiply(t));});this.postMessage('value_changed',value);}}}));x3dom.registerNodeType("NormalInterpolator","Interpolation",defineClass(x3dom.nodeTypes.X3DInterpolatorNode,function(ctx){x3dom.nodeTypes.NormalInterpolator.superClass.call(this,ctx);this.addField_MFVec3f(ctx,'keyValue',[]);},{fieldChanged:function(fieldName)
{if(fieldName==="set_fraction")
{var value=this.linearInterp(this._vf.set_fraction,function(a,b,t){return a.multiply(1.0-t).add(b.multiply(t)).normalize();});this.postMessage('value_changed',value);}}}));x3dom.registerNodeType("ColorInterpolator","Interpolation",defineClass(x3dom.nodeTypes.X3DInterpolatorNode,function(ctx){x3dom.nodeTypes.ColorInterpolator.superClass.call(this,ctx);this.addField_MFColor(ctx,'keyValue',[]);},{fieldChanged:function(fieldName)
{if(fieldName==="set_fraction")
{var value=this.linearInterp(this._vf.set_fraction,function(a,b,t){return a.multiply(1.0-t).add(b.multiply(t));});this.postMessage('value_changed',value);}}}));x3dom.registerNodeType("ScalarInterpolator","Interpolation",defineClass(x3dom.nodeTypes.X3DInterpolatorNode,function(ctx){x3dom.nodeTypes.ScalarInterpolator.superClass.call(this,ctx);this.addField_MFFloat(ctx,'keyValue',[]);},{fieldChanged:function(fieldName)
{if(fieldName==="set_fraction")
{var value=this.linearInterp(this._vf.set_fraction,function(a,b,t){return(1.0-t)*a+t*b;});this.postMessage('value_changed',value);}}}));x3dom.registerNodeType("CoordinateInterpolator","Interpolation",defineClass(x3dom.nodeTypes.X3DInterpolatorNode,function(ctx){x3dom.nodeTypes.CoordinateInterpolator.superClass.call(this,ctx);this.addField_MFVec3f(ctx,'keyValue',[]);if(ctx&&ctx.xmlNode.hasAttribute('keyValue')){this._vf.keyValue=[];var arr=x3dom.fields.MFVec3f.parse(ctx.xmlNode.getAttribute('keyValue'));var key=this._vf.key.length>0?this._vf.key.length:1;var len=arr.length/key;for(var i=0;i<key;i++){var val=new x3dom.fields.MFVec3f();for(var j=0;j<len;j++){val.push(arr[i*len+j]);}
this._vf.keyValue.push(val);}}},{fieldChanged:function(fieldName)
{if(fieldName==="set_fraction")
{var value=this.linearInterp(this._vf.set_fraction,function(a,b,t){var val=new x3dom.fields.MFVec3f();for(var i=0;i<a.length;i++)
val.push(a[i].multiply(1.0-t).add(b[i].multiply(t)));return val;});this.postMessage('value_changed',value);}}}));x3dom.registerNodeType("SplinePositionInterpolator","Interpolation",defineClass(x3dom.nodeTypes.X3DInterpolatorNode,function(ctx){x3dom.nodeTypes.SplinePositionInterpolator.superClass.call(this,ctx);this.addField_MFVec3f(ctx,'keyValue',[]);this.addField_MFVec3f(ctx,'keyVelocity',[]);this.addField_SFBool(ctx,'closed',false);this.addField_SFBool(ctx,'normalizeVelocity',false);this.dtot=0.0;this.T0=[];this.T1=[];this.checkSanity=function(){var sane=(this._vf.key.length==this._vf.keyValue.length)&&((this._vf.key.length==this._vf.keyVelocity.length)||(this._vf.keyVelocity.length==2&&this._vf.key.length>=2)||(this._vf.keyVelocity.length==0));if(!sane)
x3dom.debug.logWarning("SplinePositionInterpolator Node: 'key' , 'keyValue' and/or 'keyVelocity' fields have inappropriate sizes");};this.calcDtot=function()
{this.dtot=0.0;for(var i=0;i<this._vf.key.length-1;i++)
{this.dtot+=Math.abs(this._vf.key[i]-this._vf.key[i+1]);}};this.calcAdjustedKeyVelocity=function()
{var i,Ti,F_plus_i,F_minus_i;var N=this._vf.key.length;if(this._vf.keyVelocity.length==N)
{for(i=0;i<N;i++)
{Ti=this._vf.keyVelocity[i];if(this._vf.normalizeVelocity)
Ti=Ti.multiply(this.dtot/Ti.length());F_plus_i=(i==0||i==N-1)?1.0:2.0*(this._vf.key[i]-this._vf.key[i-1])/(this._vf.key[i+1]-this._vf.key[i-1]);F_minus_i=(i==0||i==N-1)?1.0:2.0*(this._vf.key[i+1]-this._vf.key[i])/(this._vf.key[i+1]-this._vf.key[i-1]);this.T0[i]=Ti.multiply(F_plus_i);this.T1[i]=Ti.multiply(F_minus_i);}}
else if(this._vf.keyVelocity.length==2&&N>2)
{for(i=0;i<N;i++)
{if(i==0)
Ti=this._vf.keyVelocity[0];else if(i==N-1)
Ti=this._vf.keyVelocity[1];else
Ti=this._vf.keyValue[i+1].subtract(this._vf.keyValue[i-1]).multiply(0.5);if(this._vf.normalizeVelocity)
Ti=Ti.multiply(this.dtot/Ti.length());F_plus_i=(i==0||i==N-1)?1.0:2.0*(this._vf.key[i]-this._vf.key[i-1])/(this._vf.key[i+1]-this._vf.key[i-1]);F_minus_i=(i==0||i==N-1)?1.0:2.0*(this._vf.key[i+1]-this._vf.key[i])/(this._vf.key[i+1]-this._vf.key[i-1]);this.T0[i]=Ti.multiply(F_plus_i);this.T1[i]=Ti.multiply(F_minus_i);}}
else
{var closed=this._vf.closed&&this._vf.keyValue[0].equals(this._vf.keyValue[N-1],0.00001);for(i=0;i<N;i++)
{if((i==0||i==N-1)&&!closed)
{this.T0[i]=new x3dom.fields.SFVec3f(0,0,0);this.T1[i]=new x3dom.fields.SFVec3f(0,0,0);continue;}
else if((i==0||i==N-1)&&closed)
{Ti=this._vf.keyValue[1].subtract(this._vf.keyValue[N-2]).multiply(0.5);if(i==0){F_plus_i=2.0*(this._vf.key[0]-this._vf.key[N-2])/(this._vf.key[1]-this._vf.key[N-2]);F_minus_i=2.0*(this._vf.key[1]-this._vf.key[0])/(this._vf.key[1]-this._vf.key[N-2]);}
else{F_plus_i=2.0*(this._vf.key[N-1]-this._vf.key[N-2])/(this._vf.key[1]-this._vf.key[N-2]);F_minus_i=2.0*(this._vf.key[1]-this._vf.key[N-1])/(this._vf.key[1]-this._vf.key[N-2]);}
F_plus_i=2.0*(this._vf.key[N-1]-this._vf.key[N-2])/(this._vf.key[N-2]-this._vf.key[1]);F_minus_i=2.0*(this._vf.key[1]-this._vf.key[0])/(this._vf.key[N-2]-this._vf.key[1]);}
else
{Ti=this._vf.keyValue[i+1].subtract(this._vf.keyValue[i-1]).multiply(0.5);F_plus_i=2.0*(this._vf.key[i]-this._vf.key[i-1])/(this._vf.key[i+1]-this._vf.key[i-1]);F_minus_i=2.0*(this._vf.key[i+1]-this._vf.key[i])/(this._vf.key[i+1]-this._vf.key[i-1]);}
this.T0[i]=Ti.multiply(F_plus_i);this.T1[i]=Ti.multiply(F_minus_i);}}};this.checkSanity();this.calcDtot();this.calcAdjustedKeyVelocity();},{fieldChanged:function(fieldName)
{switch(fieldName)
{case'key':case'keyValue':case'keyVelocity':{this.checkSanity();this.calcDtot();this.calcAdjustedKeyVelocity();break;}
case'closed':case'normalizeVelocity':{this.calcAdjustedKeyVelocity();break;}
case'set_fraction':{var value;if(this._vf.key.length>0.0){if(this._vf.set_fraction<=this._vf.key[0])
value=x3dom.fields.SFVec3f.copy(this._vf.keyValue[0]);else if(this._vf.set_fraction>=this._vf.key[this._vf.key.length-1])
value=x3dom.fields.SFVec3f.copy(this._vf.keyValue[this._vf.key.length-1]);}
for(var i=0;i<this._vf.key.length-1;i++){if((this._vf.key[i]<this._vf.set_fraction)&&(this._vf.set_fraction<=this._vf.key[i+1])){var s=(this._vf.set_fraction-this._vf.key[i])/(this._vf.key[i+1]-this._vf.key[i]);var S_H=new x3dom.fields.SFVec4f(2.0*s*s*s-3.0*s*s+1.0,-2.0*s*s*s+3.0*s*s,s*s*s-2.0*s*s+s,s*s*s-s*s);value=new x3dom.fields.SFVec3f(S_H.x*this._vf.keyValue[i].x+S_H.y*this._vf.keyValue[i+1].x+S_H.z*this.T0[i].x+S_H.w*this.T1[i+1].x,S_H.x*this._vf.keyValue[i].y+S_H.y*this._vf.keyValue[i+1].y+S_H.z*this.T0[i].y+S_H.w*this.T1[i+1].y,S_H.x*this._vf.keyValue[i].z+S_H.y*this._vf.keyValue[i+1].z+S_H.z*this.T0[i].z+S_H.w*this.T1[i+1].z);break;}}
if(value!==undefined)
this.postMessage('value_changed',value);else
x3dom.debug.logWarning("SplinePositionInterpolator Node: value_changed is undefined!");}}}}));x3dom.registerNodeType("TimeSensor","Time",defineClass(x3dom.nodeTypes.X3DSensorNode,function(ctx){x3dom.nodeTypes.TimeSensor.superClass.call(this,ctx);if(ctx)
ctx.doc._nodeBag.timer.push(this);else
x3dom.debug.logWarning("TimeSensor: No runtime context found!");this.addField_SFTime(ctx,'cycleInterval',1);this.addField_SFBool(ctx,'loop',false);this.addField_SFTime(ctx,'startTime',0);this.addField_SFTime(ctx,'stopTime',0);this.addField_SFTime(ctx,'pauseTime',0);this.addField_SFTime(ctx,'resumeTime',0);this.addField_SFTime(ctx,'cycleTime',0);this.addField_SFTime(ctx,'elapsedTime',0);this.addField_SFFloat(ctx,'fraction_changed',0);this.addField_SFBool(ctx,'isActive',false);this.addField_SFBool(ctx,'isPaused',false);this.addField_SFTime(ctx,'time',0);this.addField_SFBool(ctx,'first',true);this.addField_SFFloat(ctx,'firstCycle',0.0);this._prevCycle=-1;this._lastTime=0;this._cycleStopTime=0;this._activatedTime=0;if(this._vf.startTime>0){this._updateCycleStopTime();}
this._backupStartTime=this._vf.startTime;this._backupStopTime=this._vf.stopTime;this._backupCycleInterval=this._vf.cycleInterval;},{tick:function(time)
{if(!this._vf.enabled){this._lastTime=time;return false;}
var isActive=(this._vf.cycleInterval>0&&time>=this._vf.startTime&&(time<this._vf.stopTime||this._vf.stopTime<=this._vf.startTime)&&(this._vf.loop==true||(this._vf.loop==false&&time<this._cycleStopTime)));if(isActive&&!this._vf.isActive){this.postMessage('isActive',true);this._activatedTime=time;}
if(isActive||this._vf.isActive){this.postMessage('elapsedTime',time-this._activatedTime);var isPaused=(time>=this._vf.pauseTime&&this._vf.pauseTime>this._vf.resumeTime);if(isPaused&&!this._vf.isPaused){this.postMessage('isPaused',true);this.postMessage('pauseTime',time);}else if(!isPaused&&this._vf.isPaused){this.postMessage('isPaused',false);this.postMessage('resumeTime',time);}
if(!isPaused){var cycleFrac=this._getCycleAt(time);var cycle=Math.floor(cycleFrac);var cycleTime=this._vf.startTime+cycle*this._vf.cycleInterval;var adjustTime=0;if(this._vf.stopTime>this._vf.startTime&&this._lastTime<this._vf.stopTime&&time>=this._vf.stopTime)
adjustTime=this._vf.stopTime;else if(this._lastTime<cycleTime&&time>=cycleTime)
adjustTime=cycleTime;if(adjustTime>0){time=adjustTime;cycleFrac=this._getCycleAt(time);cycle=Math.floor(cycleFrac);}
var fraction=cycleFrac-cycle;if(fraction<x3dom.fields.Eps){fraction=(this._lastTime<this._vf.startTime?0.0:1.0);this.postMessage('cycleTime',time);}
this.postMessage('fraction_changed',fraction);this.postMessage('time',time);}}
if(!isActive&&this._vf.isActive)
this.postMessage('isActive',false);this._lastTime=time;return true;},fieldChanged:function(fieldName)
{if(fieldName=="enabled"){if(!this._vf.enabled&&this._vf.isActive){this.postMessage('isActive',false);}}
else if(fieldName=="startTime"){if(this._vf.isActive){this._vf.startTime=this._backupStartTime;return;}
this._backupStartTime=this._vf.startTime;this._updateCycleStopTime();}
else if(fieldName=="stopTime"){if(this._vf.isActive&&this._vf.stopTime<=this._vf.startTime){this._vf.stopTime=this._backupStopTime;return;}
this._backupStopTime=this._vf.stopTime;}
else if(fieldName=="cycleInterval"){if(this._vf.isActive){this._vf.cycleInterval=this._backupCycleInterval;return;}
this._backupCycleInterval=this._vf.cycleInterval;}
else if(fieldName=="loop"){this._updateCycleStopTime();}},parentRemoved:function(parent)
{if(this._parentNodes.length===0){var doc=this.findX3DDoc();for(var i=0,n=doc._nodeBag.timer.length;i<n;i++){if(doc._nodeBag.timer[i]===this){doc._nodeBag.timer.splice(i,1);}}}},_getCycleAt:function(time)
{return Math.max(0.0,time-this._vf.startTime)/this._vf.cycleInterval;},_updateCycleStopTime:function()
{if(this._vf.loop==false){var now=new Date().getTime()/1000;var cycleToStop=Math.floor(this._getCycleAt(now))+1;this._cycleStopTime=this._vf.startTime+cycleToStop*this._vf.cycleInterval;}
else{this._cycleStopTime=0;}}}));x3dom.registerNodeType("X3DTimeDependentNode","Time",defineClass(x3dom.nodeTypes.X3DChildNode,function(ctx){x3dom.nodeTypes.X3DTimeDependentNode.superClass.call(this,ctx);this.addField_SFBool(ctx,'loop',false);}));x3dom.registerNodeType("Anchor","Networking",defineClass(x3dom.nodeTypes.X3DGroupingNode,function(ctx){x3dom.nodeTypes.Anchor.superClass.call(this,ctx);this.addField_MFString(ctx,'url',[]);this.addField_MFString(ctx,'parameter',[]);this.addField_SFString(ctx,'description',"");},{doIntersect:function(line){var isect=false;for(var i=0;i<this._childNodes.length;i++){if(this._childNodes[i]){isect=this._childNodes[i].doIntersect(line)||isect;}}
return isect;},handleTouch:function(){var url=this._vf.url.length?this._vf.url[0]:"";var aPos=url.search("#");var anchor="";if(aPos>=0)
anchor=url.slice(aPos+1);var param=this._vf.parameter.length?this._vf.parameter[0]:"";var tPos=param.search("target=");var target="";if(tPos>=0)
target=param.slice(tPos+7);x3dom.debug.logInfo("Anchor url="+url+", target="+target+", #viewpoint="+anchor);if(target.length!=0||target!="_self"){window.open(this._nameSpace.getURL(url),target);}
else{window.location=this._nameSpace.getURL(url);}}}));x3dom.registerNodeType("Inline","Networking",defineClass(x3dom.nodeTypes.X3DGroupingNode,function(ctx){x3dom.nodeTypes.Inline.superClass.call(this,ctx);this.addField_MFString(ctx,'url',[]);this.addField_SFBool(ctx,'load',true);this.addField_MFString(ctx,'nameSpaceName',[]);this.addField_SFBool(ctx,'mapDEFToID',false);this.initDone=false;this.count=0;this.numRetries=x3dom.nodeTypes.Inline.MaximumRetries;},{fieldChanged:function(fieldName)
{if(fieldName=="url"){if(this._vf.nameSpaceName.length!=0){var node=this._xmlNode;if(node&&node.hasChildNodes())
{while(node.childNodes.length>=1)
{node.removeChild(node.firstChild);}}}
this.loadInline();}
else if(fieldName=="render"){this.invalidateVolume();}},nodeChanged:function()
{if(!this.initDone){this.initDone=true;this.loadInline();}},fireEvents:function(eventType)
{if(this._xmlNode&&(this._xmlNode['on'+eventType]||this._xmlNode.hasAttribute('on'+eventType)||this._listeners[eventType]))
{var event={target:this._xmlNode,type:eventType,error:(eventType=="error")?"XMLHttpRequest Error":"",cancelBubble:false,stopPropagation:function(){this.cancelBubble=true;}};try{var attrib=this._xmlNode["on"+eventType];if(typeof(attrib)==="function"){attrib.call(this._xmlNode,event);}
else{var funcStr=this._xmlNode.getAttribute("on"+eventType);var func=new Function('event',funcStr);func.call(this._xmlNode,event);}
var list=this._listeners[eventType];if(list){for(var i=0;i<list.length;i++){list[i].call(this._xmlNode,event);}}}
catch(ex){x3dom.debug.logException(ex);}}},loadInline:function()
{var that=this;var xhr=new window.XMLHttpRequest();if(xhr.overrideMimeType)
xhr.overrideMimeType('text/xml');xhr.onreadystatechange=function()
{if(xhr.readyState!=4){return xhr;}
if(xhr.status===x3dom.nodeTypes.Inline.AwaitTranscoding){if(that.count<that.numRetries)
{that.count++;var refreshTime=+xhr.getResponseHeader("Refresh")||5;x3dom.debug.logInfo('XHR status: '+xhr.status+' - Await Transcoding ('+that.count+'/'+that.numRetries+'): '+'Next request in '+refreshTime+' seconds');window.setTimeout(function(){that._nameSpace.doc.downloadCount-=1;that.loadInline();},refreshTime*1000);return xhr;}
else
{x3dom.debug.logError('XHR status: '+xhr.status+' - Await Transcoding ('+that.count+'/'+that.numRetries+'): '+'No Retries left');that._nameSpace.doc.downloadCount-=1;that.count=0;return xhr;}}
else if((xhr.status!==200)&&(xhr.status!==0)){that.fireEvents("error");x3dom.debug.logError('XHR status: '+xhr.status+' - XMLHttpRequest requires web server running!');that._nameSpace.doc.downloadCount-=1;that.count=0;return xhr;}
else if((xhr.status==200)||(xhr.status==0)){that.count=0;}
x3dom.debug.logInfo('Inline: downloading '+that._vf.url[0]+' done.');var inlScene=null,newScene=null,nameSpace=null,xml=null;if(navigator.appName!="Microsoft Internet Explorer")
xml=xhr.responseXML;else
xml=new DOMParser().parseFromString(xhr.responseText,"text/xml");if(xml!==undefined&&xml!==null)
{inlScene=xml.getElementsByTagName('Scene')[0]||xml.getElementsByTagName('scene')[0];}
else{that.fireEvents("error");}
if(inlScene)
{var nsName=(that._vf.nameSpaceName.length!=0)?that._vf.nameSpaceName.toString().replace(' ',''):"";nameSpace=new x3dom.NodeNameSpace(nsName,that._nameSpace.doc);var url=that._vf.url.length?that._vf.url[0]:"";if((url[0]==='/')||(url.indexOf(":")>=0))
nameSpace.setBaseURL(url);else
nameSpace.setBaseURL(that._nameSpace.baseURL+url);newScene=nameSpace.setupTree(inlScene);that._nameSpace.addSpace(nameSpace);if(that._vf.nameSpaceName.length!=0)
{Array.forEach(inlScene.childNodes,function(childDomNode)
{if(childDomNode instanceof Element)
{setNamespace(that._vf.nameSpaceName,childDomNode,that._vf.mapDEFToID);that._xmlNode.appendChild(childDomNode);}});}}
else{if(xml&&xml.localName)
x3dom.debug.logError('No Scene in '+xml.localName);else
x3dom.debug.logError('No Scene in resource');}
var global=x3dom.getGlobal();if(that._childNodes.length>0&&that._childNodes[0]&&that._childNodes[0]._nameSpace)
that._nameSpace.removeSpace(that._childNodes[0]._nameSpace);while(that._childNodes.length!==0)
global['_remover']=that.removeChild(that._childNodes[0]);delete global['_remover'];if(newScene)
{that.addChild(newScene);that.invalidateVolume();that._nameSpace.doc.downloadCount-=1;that._nameSpace.doc.needRender=true;x3dom.debug.logInfo('Inline: added '+that._vf.url[0]+' to scene.');var theScene=that._nameSpace.doc._scene;if(theScene){theScene.invalidateVolume();window.setTimeout(function(){that.invalidateVolume();theScene.updateVolume();that._nameSpace.doc.needRender=true;},1000);}
that.fireEvents("load");}
newScene=null;nameSpace=null;inlScene=null;xml=null;return xhr;};if(this._vf.url.length&&this._vf.url[0].length)
{var xhrURI=this._nameSpace.getURL(this._vf.url[0]);xhr.open('GET',xhrURI,true);this._nameSpace.doc.downloadCount+=1;try{xhr.send(null);}
catch(ex){this.fireEvents("error");x3dom.debug.logError(this._vf.url[0]+": "+ex);}}}}));x3dom.nodeTypes.Inline.AwaitTranscoding=202;x3dom.nodeTypes.Inline.MaximumRetries=15;function setNamespace(prefix,childDomNode,mapDEFToID)
{if(childDomNode instanceof Element&&childDomNode.__setAttribute!==undefined){if(childDomNode.hasAttribute('id')){childDomNode.__setAttribute('id',prefix.toString().replace(' ','')+'__'+childDomNode.getAttribute('id'));}else if(childDomNode.hasAttribute('DEF')&&mapDEFToID){childDomNode.__setAttribute('id',prefix.toString().replace(' ','')+'__'+childDomNode.getAttribute('DEF'));if(!childDomNode.id)
childDomNode.id=childDomNode.__getAttribute('id');}}
if(childDomNode.hasChildNodes()){Array.forEach(childDomNode.childNodes,function(children){setNamespace(prefix,children,mapDEFToID);});}}
x3dom.registerNodeType("MultiPart","Networking",defineClass(x3dom.nodeTypes.Inline,function(ctx){x3dom.nodeTypes.MultiPart.superClass.call(this,ctx);this.addField_MFString(ctx,'urlIDMap',[]);this.addField_SFBool(ctx,'isPickable',true);this.addField_SFString(ctx,'sortType','auto');this.addField_SFBool(ctx,'solid',false);this.addField_SFInt32(ctx,'sortKey',0);this.addField_SFString(ctx,'initialVisibility','auto');this._idMap=null;this._inlineNamespace=null;this._highlightedParts=[];this._minId=0;this._maxId=0;this._lastId=-1;this._lastClickedId=-1;this._lastButton=0;this._identifierToPartId=[];this._identifierToAppId=[];this._visiblePartsPerShape=[];this._partVolume=[];this._partVisibility=[];this._originalColor=[];this._materials=[];},{fieldChanged:function(fieldName)
{if(fieldName=="url"){if(this._vf.nameSpaceName.length!=0){var node=this._xmlNode;if(node&&node.hasChildNodes())
{while(node.childNodes.length>=1)
{node.removeChild(node.firstChild);}}}
this.loadInline();}
else if(fieldName=="render"){this.invalidateVolume();}},nodeChanged:function()
{if(!this.initDone){this.initDone=true;this.loadIDMap();}},getVolume:function()
{var vol=this._graph.volume;if(!this.volumeValid()&&this._vf.render)
{for(var i=0;i<this._partVisibility.length;i++)
{if(!this._partVisibility[i])
continue;var childVol=this._partVolume[i];if(childVol&&childVol.isValid())
vol.extendBounds(childVol.min,childVol.max);}}
return vol;},handleEvents:function(e)
{if(this._inlineNamespace){var colorMap=this._inlineNamespace.defMap["MultiMaterial_ColorMap"];var emissiveMap=this._inlineNamespace.defMap["MultiMaterial_EmissiveMap"];var specularMap=this._inlineNamespace.defMap["MultiMaterial_SpecularMap"];var visibilityMap=this._inlineNamespace.defMap["MultiMaterial_VisibilityMap"];if(e.pickedId==-1&&e.button!=0){this._lastClickedId=-1;this._lastButton=e.button;}else if(e.pickedId==-1&&e.button==0){this._lastClickedId=-1;this._lastButton=0;}
if(e.pickedId!=-1){e.part=new x3dom.Parts(this,[e.pickedId-this._minId],colorMap,emissiveMap,specularMap,visibilityMap);e.partID=this._idMap.mapping[e.pickedId-this._minId].name;e.type="mousemove";this.callEvtHandler("onmousemove",e);e.type="mouseover";this.callEvtHandler("onmouseover",e);if(!e.mouseup&&e.button&&e.button!=this._lastButton){e.type="mousedown";this._lastButton=e.button;if(this._lastClickedId==-1){this._lastClickedId=e.pickedId;}
this.callEvtHandler("onmousedown",e);}
if(e.mouseup||(this._lastButton!=0&&e.button==0)){e.type="mouseup";this.callEvtHandler("onmouseup",e);this._lastButton=0;if(e.pickedId==this._lastClickedId){this._lastClickedId=-1;e.type="click";this.callEvtHandler("onclick",e);}
this._lastClickedId=-1;}
if(e.pickedId!=this._lastId){if(this._lastId!=-1){e.part=new x3dom.Parts(this,[this._lastId-this._minId],colorMap,emissiveMap,specularMap,visibilityMap);e.partID=this._idMap.mapping[this._lastId-this._minId].name;e.type="mouseleave";this.callEvtHandler("onmouseleave",e);}
e.part=new x3dom.Parts(this,[e.pickedId-this._minId],colorMap,emissiveMap,specularMap,visibilityMap);e.partID=this._idMap.mapping[e.pickedId-this._minId].name;e.type="mouseenter";this.callEvtHandler("onmouseenter",e);this._lastId=e.pickedId;}
this._lastId=e.pickedId;}
else if(this._lastId!=-1){e.part=new x3dom.Parts(this,[this._lastId-this._minId],colorMap,emissiveMap,specularMap,visibilityMap);e.partID=this._idMap.mapping[this._lastId-this._minId].name;e.type="mouseout";this.callEvtHandler("onmouseout",e);e.type="mouseleave";this.callEvtHandler("onmouseleave",e);this._lastId=-1;}}},loadIDMap:function()
{if(this._vf.urlIDMap.length&&this._vf.urlIDMap[0].length)
{var i;var that=this;var idMapURI=this._nameSpace.getURL(this._vf.urlIDMap[0]);var xhr=new XMLHttpRequest();xhr.open("GET",idMapURI,true);xhr.onload=function()
{that._idMap=JSON.parse(this.responseText);if(that._nameSpace.doc._scene._multiPartMap==null){that._nameSpace.doc._scene._multiPartMap={numberOfIds:0,multiParts:[]};}
that._minId=that._nameSpace.doc._scene._multiPartMap.numberOfIds;that._maxId=that._minId+that._idMap.numberOfIDs-1;that._nameSpace.doc._scene._multiPartMap.numberOfIds+=that._idMap.numberOfIDs;that._nameSpace.doc._scene._multiPartMap.multiParts.push(that);for(i=0;i<that._idMap.mapping.length;i++)
{if(!that._identifierToPartId[that._idMap.mapping[i].name]){that._identifierToPartId[that._idMap.mapping[i].name]=[];}
if(!that._identifierToPartId[that._idMap.mapping[i].appearance]){that._identifierToPartId[that._idMap.mapping[i].appearance]=[];}
that._identifierToPartId[that._idMap.mapping[i].name].push(i);that._identifierToPartId[that._idMap.mapping[i].appearance].push(i);if(!that._partVolume[i]){var min=x3dom.fields.SFVec3f.parse(that._idMap.mapping[i].min);var max=x3dom.fields.SFVec3f.parse(that._idMap.mapping[i].max);that._partVolume[i]=new x3dom.fields.BoxVolume(min,max);}}
for(i=0;i<that._idMap.appearance.length;i++)
{that._identifierToAppId[that._idMap.appearance[i].name]=i;}
that.loadInline();};xhr.send(null);}},createMaterialData:function()
{var diffuseColor,transparency,specularColor,shininess,emissiveColor,ambientIntensity;var backDiffuseColor,backTransparency,backSpecularColor,backShininess,backEmissiveColor,backAmbientIntensity;var rgba_DT="",rgba_SS="",rgba_EA="";var rgba_DT_B="",rgba_SS_B="",rgba_EA_B="";var size=Math.ceil(Math.sqrt(this._idMap.numberOfIDs));size=x3dom.Utils.nextHighestPowerOfTwo(size);var sizeTwo=size*2.0;var diffuseTransparencyData=size+" "+sizeTwo+" 4";var specularShininessData=size+" "+sizeTwo+" 4";var emissiveAmbientIntensityData=size+" "+sizeTwo+" 4";for(var i=0;i<size*size;i++)
{if(i<this._idMap.mapping.length)
{var appName=this._idMap.mapping[i].appearance;var appID=this._identifierToAppId[appName];if(this._idMap.appearance[appID].material.ambientIntensity){ambientIntensity=this._idMap.appearance[appID].material.ambientIntensity}else{ambientIntensity="0.2";}
if(this._idMap.appearance[appID].material.backAmbientIntensity){backAmbientIntensity=this._idMap.appearance[appID].material.backAmbientIntensity}else{backAmbientIntensity=ambientIntensity;}
if(this._idMap.appearance[appID].material.diffuseColor){diffuseColor=this._idMap.appearance[appID].material.diffuseColor}else{diffuseColor="0.8 0.8 0.8";}
if(this._idMap.appearance[appID].material.backDiffuseColor){backDiffuseColor=this._idMap.appearance[appID].material.backDiffuseColor}else{backDiffuseColor=diffuseColor;}
if(this._idMap.appearance[appID].material.emissiveColor){emissiveColor=this._idMap.appearance[appID].material.emissiveColor}else{emissiveColor="0.0 0.0 0.0";}
if(this._idMap.appearance[appID].material.backEmissiveColor){backEmissiveColor=this._idMap.appearance[appID].material.backEmissiveColor}else{backEmissiveColor=emissiveColor;}
if(this._idMap.appearance[appID].material.shininess){shininess=this._idMap.appearance[appID].material.shininess;}else{shininess="0.2";}
if(this._idMap.appearance[appID].material.backShininess){backShininess=this._idMap.appearance[appID].material.backShininess;}else{backShininess=shininess;}
if(this._idMap.appearance[appID].material.specularColor){specularColor=this._idMap.appearance[appID].material.specularColor;}else{specularColor="0 0 0";}
if(this._idMap.appearance[appID].material.backSpecularColor){backSpecularColor=this._idMap.appearance[appID].material.backSpecularColor;}else{backSpecularColor=specularColor;}
if(this._idMap.appearance[appID].material.transparency){transparency=this._idMap.appearance[appID].material.transparency;}else{transparency=0.0;}
if(this._idMap.appearance[appID].material.backTransparency){backTransparency=this._idMap.appearance[appID].material.backTransparency;}else{backTransparency=transparency;}
rgba_DT+=" "+x3dom.fields.SFColorRGBA.parse(diffuseColor+" "+(1.0-transparency)).toUint();rgba_SS+=" "+x3dom.fields.SFColorRGBA.parse(specularColor+" "+shininess).toUint();rgba_EA+=" "+x3dom.fields.SFColorRGBA.parse(emissiveColor+" "+ambientIntensity).toUint();rgba_DT_B+=" "+x3dom.fields.SFColorRGBA.parse(backDiffuseColor+" "+(1.0-backTransparency)).toUint();rgba_SS_B+=" "+x3dom.fields.SFColorRGBA.parse(backSpecularColor+" "+backShininess).toUint();rgba_EA_B+=" "+x3dom.fields.SFColorRGBA.parse(backEmissiveColor+" "+backAmbientIntensity).toUint();this._originalColor[i]=rgba_DT;this._materials[i]=new x3dom.MultiMaterial({"ambientIntensity":ambientIntensity,"diffuseColor":x3dom.fields.SFColor.parse(diffuseColor),"emissiveColor":x3dom.fields.SFColor.parse(emissiveColor),"shininess":shininess,"specularColor":x3dom.fields.SFColor.parse(specularColor),"transparency":transparency,"backAmbientIntensity":backAmbientIntensity,"backDiffuseColor":x3dom.fields.SFColor.parse(backDiffuseColor),"backEmissiveColor":x3dom.fields.SFColor.parse(backEmissiveColor),"backShininess":backShininess,"backSpecularColor":x3dom.fields.SFColor.parse(backSpecularColor),"backTransparency":backTransparency});}
else
{rgba_DT+=" 255";rgba_SS+=" 255";rgba_EA+=" 255";rgba_DT_B+=" 255";rgba_SS_B+=" 255";rgba_EA_B+=" 255";}}
diffuseTransparencyData+=rgba_DT+rgba_DT_B;specularShininessData+=rgba_SS+rgba_SS_B;emissiveAmbientIntensityData+=rgba_EA+rgba_EA_B;return{"diffuseTransparency":diffuseTransparencyData,"specularShininess":specularShininessData,"emissiveAmbientIntensity":emissiveAmbientIntensityData};},createVisibilityData:function()
{var i,j;var size=Math.ceil(Math.sqrt(this._idMap.numberOfIDs));size=x3dom.Utils.nextHighestPowerOfTwo(size);var visibilityData=size+" "+size+" 1";for(i=0;i<size*size;i++)
{if(i<this._idMap.mapping.length)
{if(this._vf.initialVisibility=='auto')
{visibilityData+=" 255";if(!this._partVisibility[i]){this._partVisibility[i]=true;}
for(j=0;j<this._idMap.mapping[i].usage.length;j++)
{if(!this._visiblePartsPerShape[this._idMap.mapping[i].usage[j]]){this._visiblePartsPerShape[this._idMap.mapping[i].usage[j]]={val:0,max:0};}
this._visiblePartsPerShape[this._idMap.mapping[i].usage[j]].val++;this._visiblePartsPerShape[this._idMap.mapping[i].usage[j]].max++;}}
else if(this._vf.initialVisibility=='visible')
{visibilityData+=" 255";if(!this._partVisibility[i]){this._partVisibility[i]=true;}
for(j=0;j<this._idMap.mapping[i].usage.length;j++)
{if(!this._visiblePartsPerShape[this._idMap.mapping[i].usage[j]]){this._visiblePartsPerShape[this._idMap.mapping[i].usage[j]]={val:0,max:0};}
this._visiblePartsPerShape[this._idMap.mapping[i].usage[j]].val++;this._visiblePartsPerShape[this._idMap.mapping[i].usage[j]].max++;}}
else if(this._vf.initialVisibility=='invisible')
{visibilityData+=" 0";if(!this._partVisibility[i]){this._partVisibility[i]=false;}
for(j=0;j<this._idMap.mapping[i].usage.length;j++)
{if(!this._visiblePartsPerShape[this._idMap.mapping[i].usage[j]]){this._visiblePartsPerShape[this._idMap.mapping[i].usage[j]]={val:0,max:0};}
this._visiblePartsPerShape[this._idMap.mapping[i].usage[j]].max++;}}}
else
{visibilityData+=" 0";}}
return visibilityData;},replaceMaterials:function(inlScene)
{var css,shapeDEF,materialData,visibilityData,appearance;var firstMat=true;if(inlScene&&inlScene.hasChildNodes())
{materialData=this.createMaterialData();visibilityData=this.createVisibilityData();var shapes=inlScene.getElementsByTagName("Shape");for(var s=0;s<shapes.length;s++)
{shapeDEF=shapes[s].getAttribute("DEF")||shapes[s].getAttribute("def");if(shapeDEF&&this._visiblePartsPerShape[shapeDEF]&&this._visiblePartsPerShape[shapeDEF].val==0)
{shapes[s].setAttribute("render","false");}
shapes[s].setAttribute("idOffset",this._minId);shapes[s].setAttribute("isPickable",this._vf.isPickable);var geometries=shapes[s].getElementsByTagName("BinaryGeometry");if(geometries&&geometries.length){for(var g=0;g<geometries.length;g++){geometries[g].setAttribute("solid",this._vf.solid);}}
var appearances=shapes[s].getElementsByTagName("Appearance");if(appearances.length)
{for(var a=0;a<appearances.length;a++)
{appearances[a].removeAttribute("DEF");appearances[a].removeAttribute("USE");appearances[a].setAttribute("sortType",this._vf.sortType);appearances[a].setAttribute("sortKey",this._vf.sortKey);var materials=appearances[a].getElementsByTagName("Material");if(materials.length)
{if(firstMat){firstMat=false;css=document.createElement("CommonSurfaceShader");css.setAttribute("DEF","MultiMaterial");var ptDA=document.createElement("PixelTexture");ptDA.setAttribute("containerField","multiDiffuseAlphaTexture");ptDA.setAttribute("id","MultiMaterial_ColorMap");ptDA.setAttribute("image",materialData.diffuseTransparency);var ptEA=document.createElement("PixelTexture");ptEA.setAttribute("containerField","multiEmissiveAmbientTexture");ptEA.setAttribute("id","MultiMaterial_EmissiveMap");ptEA.setAttribute("image",materialData.emissiveAmbientIntensity);var ptSS=document.createElement("PixelTexture");ptSS.setAttribute("containerField","multiSpecularShininessTexture");ptSS.setAttribute("id","MultiMaterial_SpecularMap");ptSS.setAttribute("image",materialData.specularShininess);var ptV=document.createElement("PixelTexture");ptV.setAttribute("containerField","multiVisibilityTexture");ptV.setAttribute("id","MultiMaterial_VisibilityMap");ptV.setAttribute("image",visibilityData);css.appendChild(ptDA);css.appendChild(ptEA);css.appendChild(ptSS);css.appendChild(ptV);}
else
{css=document.createElement("CommonSurfaceShader");css.setAttribute("USE","MultiMaterial");}
appearances[a].replaceChild(css,materials[0]);}
else
{if(firstMat){firstMat=false;css=document.createElement("CommonSurfaceShader");css.setAttribute("DEF","MultiMaterial");var ptDA=document.createElement("PixelTexture");ptDA.setAttribute("containerField","multiDiffuseAlphaTexture");ptDA.setAttribute("id","MultiMaterial_ColorMap");ptDA.setAttribute("image",materialData.diffuseTransparency);var ptEA=document.createElement("PixelTexture");ptEA.setAttribute("containerField","multiEmissiveAmbientTexture");ptEA.setAttribute("id","MultiMaterial_EmissiveMap");ptEA.setAttribute("image",materialData.emissiveAmbientIntensity);var ptSS=document.createElement("PixelTexture");ptSS.setAttribute("containerField","multiSpecularShininessTexture");ptSS.setAttribute("id","MultiMaterial_SpecularMap");ptSS.setAttribute("image",materialData.specularShininess);var ptV=document.createElement("PixelTexture");ptV.setAttribute("containerField","multiVisibilityTexture");ptV.setAttribute("id","MultiMaterial_VisibilityMap");ptV.setAttribute("image",visibilityData);css.appendChild(ptDA);css.appendChild(ptEA);css.appendChild(ptSS);css.appendChild(ptV);}
else
{css=document.createElement("CommonSurfaceShader");css.setAttribute("USE","MultiMaterial");}
appearances[a].appendChild(css);}}}
else
{appearance=document.createElement("Appearance");if(firstMat){firstMat=false;css=document.createElement("CommonSurfaceShader");css.setAttribute("DEF","MultiMaterial");var ptDA=document.createElement("PixelTexture");ptDA.setAttribute("containerField","multiDiffuseAlphaTexture");ptDA.setAttribute("id","MultiMaterial_ColorMap");ptDA.setAttribute("image",materialData.diffuseTransparency);var ptEA=document.createElement("PixelTexture");ptEA.setAttribute("containerField","multiEmissiveAmbientTexture");ptEA.setAttribute("id","MultiMaterial_EmissiveMap");ptEA.setAttribute("image",materialData.emissiveAmbientIntensity);var ptSS=document.createElement("PixelTexture");ptSS.setAttribute("containerField","multiSpecularShininessTexture");ptSS.setAttribute("id","MultiMaterial_SpecularMap");ptSS.setAttribute("image",materialData.specularShininess);var ptV=document.createElement("PixelTexture");ptV.setAttribute("containerField","multiVisibilityTexture");ptV.setAttribute("id","MultiMaterial_VisibilityMap");ptV.setAttribute("image",visibilityData);css.appendChild(ptDA);css.appendChild(ptEA);css.appendChild(ptSS);css.appendChild(ptV);}
else
{css=document.createElement("CommonSurfaceShader");css.setAttribute("USE","MultiMaterial");}
appearance.appendChild(css);geometries[g].appendChild(appearance);}}}},appendAPI:function()
{var multiPart=this;this._xmlNode.getIdList=function()
{var i,ids=[];for(i=0;i<multiPart._idMap.mapping.length;i++){ids.push(multiPart._idMap.mapping[i].name);}
return ids;};this._xmlNode.getAppearanceIdList=function()
{var i,ids=[];for(i=0;i<multiPart._idMap.appearance.length;i++){ids.push(multiPart._idMap.appearance[i].name);}
return ids;};this._xmlNode.getParts=function(selector)
{var i,m;var selection=[];if(selector==undefined){for(m=0;m<multiPart._idMap.mapping.length;m++){selection.push(m);}}else if(selector instanceof Array){for(i=0;i<selector.length;i++){if(multiPart._identifierToPartId[selector[i]]){selection=selection.concat(multiPart._identifierToPartId[selector[i]]);}}}else if(selector instanceof RegExp){for(var key in multiPart._identifierToPartId){if(key.match(selector)){selection=selection.concat(multiPart._identifierToPartId[key]);}}}
var colorMap=multiPart._inlineNamespace.defMap["MultiMaterial_ColorMap"];var emissiveMap=multiPart._inlineNamespace.defMap["MultiMaterial_EmissiveMap"];var specularMap=multiPart._inlineNamespace.defMap["MultiMaterial_SpecularMap"];var visibilityMap=multiPart._inlineNamespace.defMap["MultiMaterial_VisibilityMap"];if(selection.length==0){return null;}else{return new x3dom.Parts(multiPart,selection,colorMap,emissiveMap,specularMap,visibilityMap);}};},loadInline:function()
{var that=this;var xhr=new window.XMLHttpRequest();if(xhr.overrideMimeType)
xhr.overrideMimeType('text/xml');xhr.onreadystatechange=function()
{if(xhr.readyState!=4){return xhr;}
if(xhr.status===x3dom.nodeTypes.Inline.AwaitTranscoding){if(that.count<that.numRetries)
{that.count++;var refreshTime=+xhr.getResponseHeader("Refresh")||5;x3dom.debug.logInfo('XHR status: '+xhr.status+' - Await Transcoding ('+that.count+'/'+that.numRetries+'): '+'Next request in '+refreshTime+' seconds');window.setTimeout(function(){that._nameSpace.doc.downloadCount-=1;that.loadInline();},refreshTime*1000);return xhr;}
else
{x3dom.debug.logError('XHR status: '+xhr.status+' - Await Transcoding ('+that.count+'/'+that.numRetries+'): '+'No Retries left');that._nameSpace.doc.downloadCount-=1;that.count=0;return xhr;}}
else if((xhr.status!==200)&&(xhr.status!==0)){that.fireEvents("error");x3dom.debug.logError('XHR status: '+xhr.status+' - XMLHttpRequest requires web server running!');that._nameSpace.doc.downloadCount-=1;that.count=0;return xhr;}
else if((xhr.status==200)||(xhr.status==0)){that.count=0;}
x3dom.debug.logInfo('Inline: downloading '+that._vf.url[0]+' done.');var inlScene=null,newScene=null,nameSpace=null,xml=null;if(navigator.appName!="Microsoft Internet Explorer")
xml=xhr.responseXML;else
xml=new DOMParser().parseFromString(xhr.responseText,"text/xml");if(xml!==undefined&&xml!==null)
{inlScene=xml.getElementsByTagName('Scene')[0]||xml.getElementsByTagName('scene')[0];}
else{that.fireEvents("error");}
if(inlScene)
{var nsDefault="ns"+that._nameSpace.childSpaces.length;var nsName=(that._vf.nameSpaceName.length!=0)?that._vf.nameSpaceName.toString().replace(' ',''):nsDefault;that._inlineNamespace=new x3dom.NodeNameSpace(nsName,that._nameSpace.doc);var url=that._vf.url.length?that._vf.url[0]:"";if((url[0]==='/')||(url.indexOf(":")>=0))
{that._inlineNamespace.setBaseURL(url);}
else
{that._inlineNamespace.setBaseURL(that._nameSpace.baseURL+url);}
that.replaceMaterials(inlScene);newScene=that._inlineNamespace.setupTree(inlScene);that._nameSpace.addSpace(that._inlineNamespace);if(that._vf.nameSpaceName.length!=0)
{Array.forEach(inlScene.childNodes,function(childDomNode)
{if(childDomNode instanceof Element)
{setNamespace(that._vf.nameSpaceName,childDomNode,that._vf.mapDEFToID);that._xmlNode.appendChild(childDomNode);}});}}
else{if(xml&&xml.localName){x3dom.debug.logError('No Scene in '+xml.localName);}else{x3dom.debug.logError('No Scene in resource');}}
var global=x3dom.getGlobal();if(that._childNodes.length>0&&that._childNodes[0]&&that._childNodes[0]._nameSpace){that._nameSpace.removeSpace(that._childNodes[0]._nameSpace);}
while(that._childNodes.length!==0){global['_remover']=that.removeChild(that._childNodes[0]);}
delete global['_remover'];if(newScene)
{that.addChild(newScene);that.invalidateVolume();that._nameSpace.doc.downloadCount-=1;that._nameSpace.doc.needRender=true;x3dom.debug.logInfo('Inline: added '+that._vf.url[0]+' to scene.');var theScene=that._nameSpace.doc._scene;if(theScene){theScene.invalidateVolume();window.setTimeout(function(){that.invalidateVolume();theScene.updateVolume();that._nameSpace.doc.needRender=true;},1000);}
that.appendAPI();that.fireEvents("load");}
newScene=null;inlScene=null;xml=null;return xhr;};if(this._vf.url.length&&this._vf.url[0].length)
{var xhrURI=this._nameSpace.getURL(this._vf.url[0]);xhr.open('GET',xhrURI,true);this._nameSpace.doc.downloadCount+=1;try{xhr.send(null);}
catch(ex){this.fireEvents("error");x3dom.debug.logError(this._vf.url[0]+": "+ex);}}}}));x3dom.registerNodeType("X3DBackgroundNode","EnvironmentalEffects",defineClass(x3dom.nodeTypes.X3DBindableNode,function(ctx){x3dom.nodeTypes.X3DBackgroundNode.superClass.call(this,ctx);var trans=(ctx&&ctx.autoGen)?1:0;this.addField_SFString(ctx,'crossOrigin','');this.addField_MFColor(ctx,'groundColor',[]);this.addField_MFFloat(ctx,'groundAngle',[]);this.addField_MFColor(ctx,'skyColor',[new x3dom.fields.SFColor(0,0,0)]);this.addField_MFFloat(ctx,'skyAngle',[]);this.addField_SFFloat(ctx,'transparency',trans);this._dirty=true;},{getSkyColor:function(){return new x3dom.fields.SFColor(0,0,0);},getTransparency:function(){return 0;},getTexUrl:function(){return[];}}));x3dom.registerNodeType("X3DFogNode","EnvironmentalEffects",defineClass(x3dom.nodeTypes.X3DBindableNode,function(ctx){x3dom.nodeTypes.X3DFogNode.superClass.call(this,ctx);this.addField_SFColor(ctx,'color',1,1,1);this.addField_SFString(ctx,'fogType',"LINEAR");this.addField_SFFloat(ctx,'visibilityRange',0);},{}));x3dom.registerNodeType("Fog","EnvironmentalEffects",defineClass(x3dom.nodeTypes.X3DFogNode,function(ctx){x3dom.nodeTypes.Fog.superClass.call(this,ctx);},{}));x3dom.registerNodeType("Background","EnvironmentalEffects",defineClass(x3dom.nodeTypes.X3DBackgroundNode,function(ctx){x3dom.nodeTypes.Background.superClass.call(this,ctx);this.addField_MFString(ctx,'backUrl',[]);this.addField_MFString(ctx,'bottomUrl',[]);this.addField_MFString(ctx,'frontUrl',[]);this.addField_MFString(ctx,'leftUrl',[]);this.addField_MFString(ctx,'rightUrl',[]);this.addField_MFString(ctx,'topUrl',[]);},{fieldChanged:function(fieldName)
{if(fieldName.indexOf("Url")>0||fieldName=="transparency"||fieldName.search("sky")>=0||fieldName.search("ground")>=0){this._dirty=true;}
else if(fieldName.indexOf("bind")>=0){this.bind(this._vf.bind);}},getSkyColor:function(){return this._vf.skyColor;},getGroundColor:function(){return this._vf.groundColor;},getTransparency:function(){return this._vf.transparency;},getTexUrl:function(){return[this._nameSpace.getURL(this._vf.backUrl[0]),this._nameSpace.getURL(this._vf.frontUrl[0]),this._nameSpace.getURL(this._vf.bottomUrl[0]),this._nameSpace.getURL(this._vf.topUrl[0]),this._nameSpace.getURL(this._vf.leftUrl[0]),this._nameSpace.getURL(this._vf.rightUrl[0])];}}));x3dom.registerNodeType("X3DEnvironmentNode","EnvironmentalEffects",defineClass(x3dom.nodeTypes.X3DBindableNode,function(ctx){x3dom.nodeTypes.X3DEnvironmentNode.superClass.call(this,ctx);}));x3dom.registerNodeType("Environment","EnvironmentalEffects",defineClass(x3dom.nodeTypes.X3DEnvironmentNode,function(ctx){x3dom.nodeTypes.Environment.superClass.call(this,ctx);this.addField_SFBool(ctx,'sortTrans',true);this.addField_SFBool(ctx,'shadowExcludeTransparentObjects',false);this.addField_SFString(ctx,'gammaCorrectionDefault',"linear");this.addField_SFBool(ctx,'frustumCulling',true);this.addField_SFBool(ctx,'smallFeatureCulling',false);this.addField_SFFloat(ctx,'smallFeatureThreshold',1.0);this.addField_SFBool(ctx,'occlusionCulling',false);this.addField_SFFloat(ctx,'occlusionVisibilityThreshold',0.0);this.addField_SFBool(ctx,'lowPriorityCulling',false);this.addField_SFFloat(ctx,'lowPriorityThreshold',1.0);this.addField_SFBool(ctx,'tessellationDetailCulling',false);this.addField_SFFloat(ctx,'tessellationErrorThreshold',0.0);this.addField_SFBool(ctx,'enableARC',false);this.addField_SFFloat(ctx,'minFrameRate',1.0);this.addField_SFFloat(ctx,'maxFrameRate',62.5);this.addField_SFFloat(ctx,'userDataFactor',-1);this.addField_SFFloat(ctx,'smallFeatureFactor',-1);this.addField_SFFloat(ctx,'occlusionVisibilityFactor',-1);this.addField_SFFloat(ctx,'lowPriorityFactor',-1);this.addField_SFFloat(ctx,'tessellationErrorFactor',-1);this.addField_SFBool(ctx,'SSAO',false);this.addField_SFFloat(ctx,'SSAOradius',0.7);this.addField_SFFloat(ctx,'SSAOamount',0.3);this.addField_SFInt32(ctx,'SSAOrandomTextureSize',4);this.addField_SFInt32(ctx,'SSAOblurDepthTreshold',1);this._validGammaCorrectionTypes=["none","fastlinear","linear"];this.checkSanity();},{checkSanity:function()
{var checkParam=function(flag,value,defaultOn,defaultOff)
{if(flag&&(value==defaultOff))
return defaultOn;if(!flag&&(value!=defaultOff))
return defaultOff;return value;};this._smallFeatureThreshold=checkParam(this._vf.smallFeatureCulling,this._vf.smallFeatureThreshold,10,0);this._lowPriorityThreshold=checkParam(this._vf.lowPriorityCulling,this._vf.lowPriorityThreshold,0.5,1);this._occlusionVisibilityThreshold=checkParam(this._vf.occlusionCulling,this._vf.occlusionVisibilityThreshold,1,0);this._tessellationErrorThreshold=checkParam(this._vf.tessellationDetailCulling,this._vf.tessellationErrorThreshold,1,0);var checkGamma=function(field,that){field=field.toLowerCase();if(that._validGammaCorrectionTypes.indexOf(field)>-1){return field;}
else{x3dom.debug.logWarning(field+" gammaCorrectionDefault may only be linear (default), fastLinear, or none");return that._validGammaCorrectionTypes[0];}};this._vf.gammaCorrectionDefault=checkGamma(this._vf.gammaCorrectionDefault,this);}}));x3dom.registerNodeType("X3DViewpointNode","Navigation",defineClass(x3dom.nodeTypes.X3DBindableNode,function(ctx){x3dom.nodeTypes.X3DViewpointNode.superClass.call(this,ctx);if(ctx&&ctx.xmlNode){var domNode=ctx.xmlNode;if(!domNode.resetView&&!domNode.getFieldOfView&&!domNode.getNear&&!domNode.getFar)
{domNode.resetView=function(){var that=this._x3domNode;that.resetView();that._nameSpace.doc.needRender=true;};domNode.getFieldOfView=function(){return this._x3domNode.getFieldOfView();};domNode.getNear=function(){return this._x3domNode.getNear();};domNode.getFar=function(){return this._x3domNode.getFar();};}}},{activate:function(prev){var viewarea=this._nameSpace.doc._viewarea;if(prev){viewarea.animateTo(this,prev._autoGen?null:prev);}
viewarea._needNavigationMatrixUpdate=true;x3dom.nodeTypes.X3DBindableNode.prototype.activate.call(this,prev);},deactivate:function(prev){x3dom.nodeTypes.X3DBindableNode.prototype.deactivate.call(this,prev);},getTransformation:function(){return this.getCurrentTransform();},getCenterOfRotation:function(){return new x3dom.fields.SFVec3f(0,0,0);},setCenterOfRotation:function(cor){this._vf.centerOfRotation.setValues(cor);},getFieldOfView:function(){return 1.57079633;},setView:function(newView){var mat=this.getCurrentTransform();this._viewMatrix=newView.mult(mat);},setViewAbsolute:function(newView)
{this._viewMatrix=newView},setProjectionMatrix:function(matrix)
{},resetView:function(){},getNear:function(){return 0.1;},getFar:function(){return 10000;},getImgPlaneHeightAtDistOne:function(){return 2.0;},getViewMatrix:function(){return null;},getProjectionMatrix:function(aspect){return null;}}));x3dom.registerNodeType("Viewpoint","Navigation",defineClass(x3dom.nodeTypes.X3DViewpointNode,function(ctx){x3dom.nodeTypes.Viewpoint.superClass.call(this,ctx);this.addField_SFFloat(ctx,'fieldOfView',0.785398);this.addField_SFVec3f(ctx,'position',0,0,10);this.addField_SFRotation(ctx,'orientation',0,0,0,1);this.addField_SFVec3f(ctx,'centerOfRotation',0,0,0);this.addField_SFFloat(ctx,'zNear',-1);this.addField_SFFloat(ctx,'zFar',-1);this._viewMatrix=x3dom.fields.SFMatrix4f.translation(this._vf.position).mult(this._vf.orientation.toMatrix()).inverse();this._projMatrix=null;this._lastAspect=1.0;this._zRatio=10000;this._zNear=this._vf.zNear;this._zFar=this._vf.zFar;this._imgPlaneHeightAtDistOne=2.0*Math.tan(this._vf.fieldOfView/2.0);},{fieldChanged:function(fieldName){if(fieldName=="position"||fieldName=="orientation"){this.resetView();}
else if(fieldName=="fieldOfView"||fieldName=="zNear"||fieldName=="zFar"){this._projMatrix=null;this._zNear=this._vf.zNear;this._zFar=this._vf.zFar;this._imgPlaneHeightAtDistOne=2.0*Math.tan(this._vf.fieldOfView/2.0);}
else if(fieldName.indexOf("bind")>=0){this.bind(this._vf.bind);}},setProjectionMatrix:function(matrix)
{this._projMatrix=matrix;},getCenterOfRotation:function(){return this.getCurrentTransform().multMatrixPnt(this._vf.centerOfRotation);},getViewMatrix:function(){return this._viewMatrix;},getFieldOfView:function(){return this._vf.fieldOfView;},resetView:function(){this._viewMatrix=x3dom.fields.SFMatrix4f.translation(this._vf.position).mult(this._vf.orientation.toMatrix()).inverse();if(this._nameSpace.doc._viewarea){this._nameSpace.doc._viewarea.resetNavHelpers();}},getNear:function(){return this._zNear;},getFar:function(){return this._zFar;},getImgPlaneHeightAtDistOne:function(){return this._imgPlaneHeightAtDistOne;},getProjectionMatrix:function(aspect)
{var fovy=this._vf.fieldOfView;var zfar=this._vf.zFar;var znear=this._vf.zNear;if(znear<=0||zfar<=0)
{var nearScale=0.8,farScale=1.2;var viewarea=this._nameSpace.doc._viewarea;var scene=viewarea._scene;var min=x3dom.fields.SFVec3f.copy(scene._lastMin);var max=x3dom.fields.SFVec3f.copy(scene._lastMax);var dia=max.subtract(min);var sRad=dia.length()/2;var mat=viewarea.getViewMatrix().inverse();var vp=mat.e3();var translation=new x3dom.fields.SFVec3f(0,0,0),scaleFactor=new x3dom.fields.SFVec3f(1,1,1);var rotation=new x3dom.fields.Quaternion(0,0,1,0),scaleOrientation=new x3dom.fields.Quaternion(0,0,1,0);mat.getTransform(translation,rotation,scaleFactor,scaleOrientation);var minScal=scaleFactor.x,maxScal=scaleFactor.x;if(maxScal<scaleFactor.y)maxScal=scaleFactor.y;if(minScal>scaleFactor.y)minScal=scaleFactor.y;if(maxScal<scaleFactor.z)maxScal=scaleFactor.z;if(minScal>scaleFactor.z)minScal=scaleFactor.z;if(maxScal>1)
nearScale/=maxScal;else if(minScal>x3dom.fields.Eps&&minScal<1)
farScale/=minScal;var sCenter=min.add(dia.multiply(0.5));var vDist=(vp.subtract(sCenter)).length();if(sRad){if(vDist>sRad)
znear=(vDist-sRad)*nearScale;else
znear=0;zfar=(vDist+sRad)*farScale;}
else{znear=0.1;zfar=100000;}
var zNearLimit=zfar/this._zRatio;znear=Math.max(znear,Math.max(x3dom.fields.Eps,zNearLimit));if(zfar>this._vf.zNear&&this._vf.zNear>0)
znear=this._vf.zNear;if(this._vf.zFar>znear)
zfar=this._vf.zFar;if(zfar<=znear)
zfar=znear+1;}
if(this._projMatrix==null)
{this._projMatrix=x3dom.fields.SFMatrix4f.perspective(fovy,aspect,znear,zfar);}
else if(this._zNear!=znear||this._zFar!=zfar)
{var div=znear-zfar;this._projMatrix._22=(znear+zfar)/div;this._projMatrix._23=2*znear*zfar/div;}
else if(this._lastAspect!=aspect)
{this._projMatrix._00=(1/Math.tan(fovy/2))/aspect;this._lastAspect=aspect;}
this._zNear=znear;this._zFar=zfar;return this._projMatrix;}}));x3dom.registerNodeType("OrthoViewpoint","Navigation",defineClass(x3dom.nodeTypes.X3DViewpointNode,function(ctx){x3dom.nodeTypes.OrthoViewpoint.superClass.call(this,ctx);this.addField_MFFloat(ctx,'fieldOfView',[-1,-1,1,1]);this.addField_SFVec3f(ctx,'position',0,0,10);this.addField_SFRotation(ctx,'orientation',0,0,0,1);this.addField_SFVec3f(ctx,'centerOfRotation',0,0,0);this.addField_SFFloat(ctx,'zNear',0.1);this.addField_SFFloat(ctx,'zFar',10000);this._viewMatrix=null;this._projMatrix=null;this._lastAspect=1.0;this.resetView();},{fieldChanged:function(fieldName){if(fieldName=="position"||fieldName=="orientation"){this.resetView();}
else if(fieldName=="fieldOfView"||fieldName=="zNear"||fieldName=="zFar"){this._projMatrix=null;this.resetView();}
else if(fieldName.indexOf("bind")>=0){this.bind(this._vf.bind);}},getCenterOfRotation:function(){return this.getCurrentTransform().multMatrixPnt(this._vf.centerOfRotation);},getViewMatrix:function(){return this._viewMatrix;},resetView:function(){var offset=x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f((this._vf.fieldOfView[0]+this._vf.fieldOfView[2])/2,(this._vf.fieldOfView[1]+this._vf.fieldOfView[3])/2,0));this._viewMatrix=x3dom.fields.SFMatrix4f.translation(this._vf.position).mult(this._vf.orientation.toMatrix());this._viewMatrix=this._viewMatrix.mult(offset).inverse();if(this._nameSpace.doc._viewarea){this._nameSpace.doc._viewarea.resetNavHelpers();}},getNear:function(){return this._vf.zNear;},getFar:function(){return this._vf.zFar;},getProjectionMatrix:function(aspect)
{if(this._projMatrix==null||this._lastAspect!=aspect)
{var near=this.getNear();var far=this.getFar();var left=this._vf.fieldOfView[0];var bottom=this._vf.fieldOfView[1];var right=this._vf.fieldOfView[2];var top=this._vf.fieldOfView[3];this._projMatrix=x3dom.fields.SFMatrix4f.ortho(left,right,bottom,top,near,far,aspect);}
this._lastAspect=aspect;return this._projMatrix;}}));x3dom.registerNodeType("Viewfrustum","Navigation",defineClass(x3dom.nodeTypes.X3DViewpointNode,function(ctx){x3dom.nodeTypes.Viewfrustum.superClass.call(this,ctx);this.addField_SFMatrix4f(ctx,'modelview',1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);this.addField_SFMatrix4f(ctx,'projection',1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);this._viewMatrix=this._vf.modelview.transpose().inverse();this._projMatrix=this._vf.projection.transpose();this._centerOfRotation=new x3dom.fields.SFVec3f(0,0,0);},{fieldChanged:function(fieldName){if(fieldName=="modelview"){this.resetView();}
else if(fieldName=="projection"){this._projMatrix=this._vf.projection.transpose();}
else if(fieldName.indexOf("bind")>=0){this.bind(this._vf.bind);}},getCenterOfRotation:function(){return this.getCurrentTransform().multMatrixPnt(this._centerOfRotation);},setCenterOfRotation:function(cor){this._centerOfRotation.setValues(cor);},getViewMatrix:function(){return this._viewMatrix;},getFieldOfView:function(){return(2.0*Math.atan(1.0/this._projMatrix._11));},getImgPlaneHeightAtDistOne:function(){return 2.0/this._projMatrix._11;},resetView:function(){this._viewMatrix=this._vf.modelview.transpose().inverse();this._centerOfRotation=new x3dom.fields.SFVec3f(0,0,0);},getProjectionMatrix:function(aspect){return this._projMatrix;}}));x3dom.registerNodeType("X3DNavigationInfoNode","Navigation",defineClass(x3dom.nodeTypes.X3DBindableNode,function(ctx){x3dom.nodeTypes.X3DNavigationInfoNode.superClass.call(this,ctx);}));x3dom.registerNodeType("NavigationInfo","Navigation",defineClass(x3dom.nodeTypes.X3DNavigationInfoNode,function(ctx){x3dom.nodeTypes.NavigationInfo.superClass.call(this,ctx);this.addField_SFBool(ctx,'headlight',true);this.addField_MFString(ctx,'type',["EXAMINE","ANY"]);this.addField_MFFloat(ctx,'typeParams',[-0.4,60,0.05,2.8]);this.addField_SFString(ctx,'explorationMode','all');this.addField_MFFloat(ctx,'avatarSize',[0.25,1.6,0.75]);this.addField_SFFloat(ctx,'visibilityLimit',0.0);this.addField_SFFloat(ctx,'speed',1.0);this.addField_SFTime(ctx,'transitionTime',1.0);this.addField_MFString(ctx,'transitionType',["LINEAR"]);this._validTypes=["none","examine","turntable","fly","freefly","lookat","lookaround","walk","game","helicopter","any"];this._heliUpdated=false;var type=this.checkType(this.getType());x3dom.debug.logInfo("NavType: "+type);},{fieldChanged:function(fieldName){if(fieldName=="typeParams"){this._heliUpdated=false;}
else if(fieldName=="type"){var type=this.checkType(this.getType());switch(type){case'game':this._nameSpace.doc._viewarea.initMouseState();break;case'helicopter':this._heliUpdated=false;break;case"turntable":this._nameSpace.doc._viewarea.initMouseState();this._nameSpace.doc._viewarea.initTurnTable(this);break;default:break;}
this._vf.type[0]=type;x3dom.debug.logInfo("Switch to "+type+" mode.");}},setType:function(type,viewarea){var navType=this.checkType(type.toLowerCase());var oldType=this.checkType(this.getType());switch(navType){case'game':if(oldType!==navType){if(viewarea)
viewarea.initMouseState();else
this._nameSpace.doc._viewarea.initMouseState();}
break;case'helicopter':if(oldType!==navType){this._heliUpdated=false;}
break;case"turntable":if(oldType!==navType){if(viewarea){viewarea.initMouseState();viewarea.initTurnTable(this);}
else{this._nameSpace.doc._viewarea.initMouseState();this._nameSpace.doc._viewarea.initTurnTable(this);}}
break;default:break;}
this._vf.type[0]=navType;x3dom.debug.logInfo("Switch to "+navType+" mode.");},getType:function(){var type=this._vf.type[0].toLowerCase();if(type.length<=1)
type="none";else if(type=="any")
type="examine";return type;},getTypeParams:function(){var length=this._vf.typeParams.length;var theta=(length>=1)?this._vf.typeParams[0]:-0.4;var height=(length>=2)?this._vf.typeParams[1]:60.0;var minAngle=(length>=3)?this._vf.typeParams[2]:x3dom.fields.Eps;var maxAngle=(length>=4)?this._vf.typeParams[3]:Math.PI-x3dom.fields.Eps;var params=[theta,height,minAngle,maxAngle];if(length>=5)
{params.push(this._vf.typeParams[4]);}
return params;},setTypeParams:function(params){for(var i=0;i<params.length;i++){this._vf.typeParams[i]=params[i];}},checkType:function(type){if(this._validTypes.indexOf(type)>-1){return type;}
else{x3dom.debug.logWarning(type+" is no valid navigation type, use one of "+
this._validTypes.toString());return"examine";}},getExplorationMode:function(){switch(this._vf.explorationMode.toLowerCase()){case"all":return 7;case"rotate":return 1;case"zoom":return 2;case"pan":return 4;case"none":return 0;default:return 7;}}}));x3dom.registerNodeType("Billboard","Navigation",defineClass(x3dom.nodeTypes.X3DGroupingNode,function(ctx){x3dom.nodeTypes.Billboard.superClass.call(this,ctx);this.addField_SFVec3f(ctx,'axisOfRotation',0,1,0);this._eye=new x3dom.fields.SFVec3f(0,0,0);this._eyeViewUp=new x3dom.fields.SFVec3f(0,0,0);this._eyeLook=new x3dom.fields.SFVec3f(0,0,0);},{collectDrawableObjects:function(transform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes)
{if(singlePath&&(this._parentNodes.length>1))
singlePath=false;if(singlePath&&(invalidateCache=invalidateCache||this.cacheInvalid()))
this.invalidateCache();planeMask=drawableCollection.cull(transform,this.graphState(),singlePath,planeMask);if(planeMask<=0){return;}
singlePath=false;var vol=this.getVolume();var min=x3dom.fields.SFVec3f.MAX();var max=x3dom.fields.SFVec3f.MIN();vol.getBounds(min,max);var mat_view=drawableCollection.viewMatrix;var center=new x3dom.fields.SFVec3f(0,0,0);center=mat_view.inverse().multMatrixPnt(center);var mat_view_model=mat_view.mult(transform);this._eye=transform.inverse().multMatrixPnt(center);this._eyeViewUp=new x3dom.fields.SFVec3f(mat_view_model._10,mat_view_model._11,mat_view_model._12);this._eyeLook=new x3dom.fields.SFVec3f(mat_view_model._20,mat_view_model._21,mat_view_model._22);var rotMat=x3dom.fields.SFMatrix4f.identity();var mid=max.add(min).multiply(0.5);var billboard_to_viewer=this._eye.subtract(mid);if(this._vf.axisOfRotation.equals(new x3dom.fields.SFVec3f(0,0,0),x3dom.fields.Eps)){var rot1=x3dom.fields.Quaternion.rotateFromTo(billboard_to_viewer,new x3dom.fields.SFVec3f(0,0,1));rotMat=rot1.toMatrix().transpose();var yAxis=rotMat.multMatrixPnt(new x3dom.fields.SFVec3f(0,1,0)).normalize();var zAxis=rotMat.multMatrixPnt(new x3dom.fields.SFVec3f(0,0,1)).normalize();if(!this._eyeViewUp.equals(new x3dom.fields.SFVec3f(0,0,0),x3dom.fields.Eps)){var rot2=x3dom.fields.Quaternion.rotateFromTo(this._eyeLook,zAxis);var rotatedyAxis=rot2.toMatrix().transpose().multMatrixVec(yAxis);var rot3=x3dom.fields.Quaternion.rotateFromTo(this._eyeViewUp,rotatedyAxis);rotMat=rot2.toMatrix().transpose().mult(rotMat);rotMat=rot3.toMatrix().transpose().mult(rotMat);}}
else{var normalPlane=this._vf.axisOfRotation.cross(billboard_to_viewer).normalize();if(this._eye.z<0){normalPlane=normalPlane.multiply(-1);}
var degreesToRotate=Math.asin(normalPlane.dot(new x3dom.fields.SFVec3f(0,0,1)));if(this._eye.z<0){degreesToRotate+=Math.PI;}
rotMat=x3dom.fields.SFMatrix4f.parseRotation(this._vf.axisOfRotation.x+", "+this._vf.axisOfRotation.y+", "+
this._vf.axisOfRotation.z+", "+degreesToRotate*(-1));}
var childTransform=this.transformMatrix(transform.mult(rotMat));for(var i=0,i_n=this._childNodes.length;i<i_n;i++)
{var cnode=this._childNodes[i];if(cnode){cnode.collectDrawableObjects(childTransform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes);}}}}));x3dom.registerNodeType("Collision","Navigation",defineClass(x3dom.nodeTypes.X3DGroupingNode,function(ctx){x3dom.nodeTypes.Collision.superClass.call(this,ctx);this.addField_SFBool(ctx,"enabled",true);this.addField_SFNode("proxy",x3dom.nodeTypes.X3DGroupingNode);this.addField_SFTime(ctx,"collideTime",0);this.addField_SFBool(ctx,"isActive",true);},{collectDrawableObjects:function(transform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes)
{if(singlePath&&(this._parentNodes.length>1))
singlePath=false;if(singlePath&&(invalidateCache=invalidateCache||this.cacheInvalid()))
this.invalidateCache();planeMask=drawableCollection.cull(transform,this.graphState(),singlePath,planeMask);if(planeMask<=0){return;}
var cnode,childTransform;if(singlePath){if(!this._graph.globalMatrix){this._graph.globalMatrix=this.transformMatrix(transform);}
childTransform=this._graph.globalMatrix;}
else{childTransform=this.transformMatrix(transform);}
for(var i=0,n=this._childNodes.length;i<n;i++)
{if((cnode=this._childNodes[i])&&(cnode!==this._cf.proxy.node)){cnode.collectDrawableObjects(childTransform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes);}}}}));x3dom.registerNodeType("X3DLODNode","Navigation",defineClass(x3dom.nodeTypes.X3DGroupingNode,function(ctx){x3dom.nodeTypes.X3DLODNode.superClass.call(this,ctx);this.addField_SFBool(ctx,"forceTransitions",false);this.addField_SFVec3f(ctx,"center",0,0,0);this._eye=new x3dom.fields.SFVec3f(0,0,0);},{collectDrawableObjects:function(transform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes)
{if(singlePath&&(this._parentNodes.length>1))
singlePath=false;if(singlePath&&(invalidateCache=invalidateCache||this.cacheInvalid()))
this.invalidateCache();planeMask=drawableCollection.cull(transform,this.graphState(),singlePath,planeMask);if(planeMask<=0){return;}
singlePath=false;this.visitChildren(transform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes);},visitChildren:function(transform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes){}}));x3dom.registerNodeType("LOD","Navigation",defineClass(x3dom.nodeTypes.X3DLODNode,function(ctx){x3dom.nodeTypes.LOD.superClass.call(this,ctx);this.addField_MFFloat(ctx,"range",[]);this._lastRangePos=-1;},{visitChildren:function(transform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes)
{var i=0,n=this._childNodes.length;var mat_view=drawableCollection.viewMatrix;var center=new x3dom.fields.SFVec3f(0,0,0);center=mat_view.inverse().multMatrixPnt(center);this._eye=transform.inverse().multMatrixPnt(center);var len=this._vf.center.subtract(this._eye).length();while(i<this._vf.range.length&&len>this._vf.range[i]){i++;}
if(i&&i>=n){i=n-1;}
this._lastRangePos=i;var cnode=this._childNodes[i];if(n&&cnode)
{var childTransform=this.transformMatrix(transform);cnode.collectDrawableObjects(childTransform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes);}},getVolume:function()
{var vol=this._graph.volume;if(!this.volumeValid()&&this._vf.render)
{var child,childVol;if(this._lastRangePos>=0){child=this._childNodes[this._lastRangePos];childVol=(child&&child._vf.render===true)?child.getVolume():null;if(childVol&&childVol.isValid())
vol.extendBounds(childVol.min,childVol.max);}
else{for(var i=0,n=this._childNodes.length;i<n;i++)
{if(!(child=this._childNodes[i])||child._vf.render!==true)
continue;childVol=child.getVolume();if(childVol&&childVol.isValid())
vol.extendBounds(childVol.min,childVol.max);}}}
return vol;},nodeChanged:function(){this.invalidateVolume();},fieldChanged:function(fieldName){if(fieldName=="render"||fieldName=="center"||fieldName=="range"){this.invalidateVolume();}}}));x3dom.registerNodeType("DynamicLOD","Navigation",defineClass(x3dom.nodeTypes.X3DLODNode,function(ctx){x3dom.nodeTypes.DynamicLOD.superClass.call(this,ctx);this.addField_SFFloat(ctx,'subScale',0.5);this.addField_SFVec2f(ctx,'size',2,2);this.addField_SFVec2f(ctx,'subdivision',1,1);this.addField_SFNode('root',x3dom.nodeTypes.X3DShapeNode);this.addField_SFString(ctx,'urlHead',"http://r");this.addField_SFString(ctx,'urlCenter',".ortho.tiles.virtualearth.net/tiles/h");this.addField_SFString(ctx,'urlTail',".png?g=-1");this.rootGeometry=new x3dom.nodeTypes.Plane(ctx);this.level=0;this.quadrant=4;this.cell="";},{nodeChanged:function()
{var root=this._cf.root.node;if(root==null||root._cf.geometry.node!=null)
return;this.rootGeometry._vf.size.setValues(this._vf.size);this.rootGeometry._vf.subdivision.setValues(this._vf.subdivision);this.rootGeometry._vf.center.setValues(this._vf.center);this.rootGeometry.fieldChanged("subdivision");this._cf.root.node.addChild(this.rootGeometry);this.rootGeometry.nodeChanged();this._cf.root.node.nodeChanged();this._nameSpace.doc.needRender=true;},visitChildren:function(transform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes)
{var root=this._cf.root.node;if(root==null)
return;var mat_view=drawableCollection.viewMatrix;var center=new x3dom.fields.SFVec3f(0,0,0);center=mat_view.inverse().multMatrixPnt(center);this._eye=transform.inverse().multMatrixPnt(center);var l,len=this._vf.center.subtract(this._eye).length();if(len>x3dom.fields.Eps&&len*this._vf.subScale<=this._vf.size.length()){if(this._childNodes.length<=1){var offset=new Array(new x3dom.fields.SFVec3f(-0.25*this._vf.size.x,0.25*this._vf.size.y,0),new x3dom.fields.SFVec3f(0.25*this._vf.size.x,0.25*this._vf.size.y,0),new x3dom.fields.SFVec3f(-0.25*this._vf.size.x,-0.25*this._vf.size.y,0),new x3dom.fields.SFVec3f(0.25*this._vf.size.x,-0.25*this._vf.size.y,0));for(l=0;l<4;l++){var node=new x3dom.nodeTypes.DynamicLOD();node._nameSpace=this._nameSpace;node._eye.setValues(this._eye);node.level=this.level+1;node.quadrant=l;node.cell=this.cell+l;node._vf.urlHead=this._vf.urlHead;node._vf.urlCenter=this._vf.urlCenter;node._vf.urlTail=this._vf.urlTail;node._vf.center=this._vf.center.add(offset[l]);node._vf.size=this._vf.size.multiply(0.5);node._vf.subdivision.setValues(this._vf.subdivision);var app=new x3dom.nodeTypes.Appearance();var tex=new x3dom.nodeTypes.ImageTexture();tex._nameSpace=this._nameSpace;tex._vf.url[0]=this._vf.urlHead+node.quadrant+this._vf.urlCenter+node.cell+this._vf.urlTail;app.addChild(tex);tex.nodeChanged();var shape=new x3dom.nodeTypes.Shape();shape._nameSpace=this._nameSpace;shape.addChild(app);app.nodeChanged();node.addChild(shape,"root");shape.nodeChanged();this.addChild(node);node.nodeChanged();}}
else{for(l=1;l<this._childNodes.length;l++){this._childNodes[l].collectDrawableObjects(transform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes);}}}
else{root.collectDrawableObjects(transform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes);}},getVolume:function(){var vol=this._graph.volume;if(!vol.isValid()){vol.min.setValues(this._vf.center);vol.min.x-=0.5*this._vf.size.x;vol.min.y-=0.5*this._vf.size.y;vol.min.z-=x3dom.fields.Eps;vol.max.setValues(this._vf.center);vol.max.x+=0.5*this._vf.size.x;vol.max.y+=0.5*this._vf.size.y;vol.max.z+=x3dom.fields.Eps;}
return vol;}}));x3dom.registerNodeType("X3DFontStyleNode","Text",defineClass(x3dom.nodeTypes.X3DNode,function(ctx){x3dom.nodeTypes.X3DFontStyleNode.superClass.call(this,ctx);}));x3dom.registerNodeType("FontStyle","Text",defineClass(x3dom.nodeTypes.X3DFontStyleNode,function(ctx){x3dom.nodeTypes.FontStyle.superClass.call(this,ctx);this.addField_MFString(ctx,'family',['SERIF']);this.addField_SFBool(ctx,'horizontal',true);this.addField_MFString(ctx,'justify',['BEGIN']);this.addField_SFString(ctx,'language',"");this.addField_SFBool(ctx,'leftToRight',true);this.addField_SFFloat(ctx,'size',1.0);this.addField_SFFloat(ctx,'spacing',1.0);this.addField_SFString(ctx,'style',"PLAIN");this.addField_SFBool(ctx,'topToBottom',true);},{fieldChanged:function(fieldName){if(fieldName=='family'||fieldName=='horizontal'||fieldName=='justify'||fieldName=='language'||fieldName=='leftToRight'||fieldName=='size'||fieldName=='spacing'||fieldName=='style'||fieldName=='topToBottom'){Array.forEach(this._parentNodes,function(node){node.fieldChanged(fieldName);});}}}));x3dom.nodeTypes.FontStyle.defaultNode=function(){if(!x3dom.nodeTypes.FontStyle._defaultNode){x3dom.nodeTypes.FontStyle._defaultNode=new x3dom.nodeTypes.FontStyle();x3dom.nodeTypes.FontStyle._defaultNode.nodeChanged();}
return x3dom.nodeTypes.FontStyle._defaultNode;};x3dom.registerNodeType("Text","Text",defineClass(x3dom.nodeTypes.X3DGeometryNode,function(ctx){x3dom.nodeTypes.Text.superClass.call(this,ctx);this.addField_MFString(ctx,'string',[]);this.addField_MFFloat(ctx,'length',[]);this.addField_SFFloat(ctx,'maxExtent',0.0);this.addField_SFNode('fontStyle',x3dom.nodeTypes.X3DFontStyleNode);this._mesh._positions[0]=[];this._mesh._normals[0]=[0,0,1,0,0,1,0,0,1,0,0,1];this._mesh._texCoords[0]=[0,0,1,0,1,1,0,1];this._mesh._colors[0]=[];this._mesh._indices[0]=[0,1,2,2,3,0];this._mesh._invalidate=true;this._mesh._numFaces=2;this._mesh._numCoords=4;},{nodeChanged:function(){if(!this._cf.fontStyle.node){this.addChild(x3dom.nodeTypes.FontStyle.defaultNode());}
this.invalidateVolume();},fieldChanged:function(fieldName){if(fieldName=='string'||fieldName=='length'||fieldName=='maxExtent'){this.invalidateVolume();Array.forEach(this._parentNodes,function(node){node.setAllDirty();});}}}));x3dom.registerNodeType("X3DSoundNode","Sound",defineClass(x3dom.nodeTypes.X3DChildNode,function(ctx){x3dom.nodeTypes.X3DSoundNode.superClass.call(this,ctx);}));x3dom.registerNodeType("Sound","Sound",defineClass(x3dom.nodeTypes.X3DSoundNode,function(ctx){x3dom.nodeTypes.Sound.superClass.call(this,ctx);this.addField_SFNode('source',x3dom.nodeTypes.X3DSoundSourceNode);},{nodeChanged:function()
{if(this._cf.source.node||!this._xmlNode){return;}
x3dom.debug.logInfo("No AudioClip child node given, searching for &lt;audio&gt; elements...");try{Array.forEach(this._xmlNode.childNodes,function(childDomNode){if(childDomNode.nodeType===1)
{x3dom.debug.logInfo("### Found &lt;"+childDomNode.nodeName+"&gt; tag.");if(childDomNode.localName.toLowerCase()==="audio")
{var loop=childDomNode.getAttribute("loop");loop=loop?(loop.toLowerCase()==="loop"):false;var newNode=childDomNode.cloneNode(false);childDomNode.parentNode.removeChild(childDomNode);childDomNode=null;if(navigator.appName!="Microsoft Internet Explorer"){document.body.appendChild(newNode);}
var startAudio=function(){newNode.play();};var audioDone=function(){if(loop){newNode.play();}};newNode.addEventListener("canplaythrough",startAudio,true);newNode.addEventListener("ended",audioDone,true);}}});}
catch(e){x3dom.debug.logException(e);}}}));x3dom.registerNodeType("X3DSoundSourceNode","Sound",defineClass(x3dom.nodeTypes.X3DTimeDependentNode,function(ctx){x3dom.nodeTypes.X3DSoundSourceNode.superClass.call(this,ctx);}));x3dom.registerNodeType("AudioClip","Sound",defineClass(x3dom.nodeTypes.X3DSoundSourceNode,function(ctx){x3dom.nodeTypes.AudioClip.superClass.call(this,ctx);this.addField_MFString(ctx,'url',[]);this.addField_SFBool(ctx,'enabled',false);this.addField_SFBool(ctx,'loop',false);this._audio=document.createElement('audio');if(navigator.appName!="Microsoft Internet Explorer"){document.body.appendChild(this._audio);}
this._sources=[];},{nodeChanged:function()
{this._createSources=function()
{this._sources=[];for(var i=0;i<this._vf.url.length;i++)
{var audioUrl=this._nameSpace.getURL(this._vf.url[i]);x3dom.debug.logInfo('Adding sound file: '+audioUrl);var src=document.createElement('source');src.setAttribute('src',audioUrl);this._sources.push(src);this._audio.appendChild(src);}};var that=this;this._startAudio=function()
{that._audio.loop=that._vf.loop?"loop":"";if(that._vf.enabled===true)
{that._audio.play();}};this._stopAudio=function()
{that._audio.pause();};this._audioEnded=function()
{if(that._vf.enabled===true&&that._vf.loop===true)
{that._startAudio();}};var log=function(e)
{x3dom.debug.logWarning("MediaEvent error:"+e);};this._audio.addEventListener("canplaythrough",this._startAudio,true);this._audio.addEventListener("ended",this._audioEnded,true);this._audio.addEventListener("error",log,true);this._audio.addEventListener("pause",this._audioEnded,true);this._createSources();},fieldChanged:function(fieldName)
{if(fieldName==="enabled")
{if(this._vf.enabled===true)
{this._startAudio();}
else
{this._stopAudio();}}
else if(fieldName==="loop")
{}
else if(fieldName==="url")
{this._stopAudio();while(this._audio.hasChildNodes())
{this._audio.removeChild(this._audio.firstChild);}
for(var i=0;i<this._vf.url.length;i++)
{var audioUrl=this._nameSpace.getURL(this._vf.url[i]);x3dom.debug.logInfo('Adding sound file: '+audioUrl);var src=document.createElement('source');src.setAttribute('src',audioUrl);this._audio.appendChild(src);}}},shutdown:function(){if(this._audio){this._audio.pause();while(this._audio.hasChildNodes()){this._audio.removeChild(this._audio.firstChild);}
document.body.removeChild(this._audio);this._audio=null;}}}));x3dom.registerNodeType("X3DTextureTransformNode","Texturing",defineClass(x3dom.nodeTypes.X3DAppearanceChildNode,function(ctx){x3dom.nodeTypes.X3DTextureTransformNode.superClass.call(this,ctx);}));x3dom.registerNodeType("TextureTransform","Texturing",defineClass(x3dom.nodeTypes.X3DTextureTransformNode,function(ctx){x3dom.nodeTypes.TextureTransform.superClass.call(this,ctx);this.addField_SFVec2f(ctx,'center',0,0);this.addField_SFFloat(ctx,'rotation',0);this.addField_SFVec2f(ctx,'scale',1,1);this.addField_SFVec2f(ctx,'translation',0,0);var negCenter=new x3dom.fields.SFVec3f(-this._vf.center.x,-this._vf.center.y,1);var posCenter=new x3dom.fields.SFVec3f(this._vf.center.x,this._vf.center.y,0);var trans3=new x3dom.fields.SFVec3f(this._vf.translation.x,this._vf.translation.y,0);var scale3=new x3dom.fields.SFVec3f(this._vf.scale.x,this._vf.scale.y,0);this._trafo=x3dom.fields.SFMatrix4f.translation(negCenter).mult(x3dom.fields.SFMatrix4f.scale(scale3)).mult(x3dom.fields.SFMatrix4f.rotationZ(this._vf.rotation)).mult(x3dom.fields.SFMatrix4f.translation(posCenter.add(trans3)));},{fieldChanged:function(fieldName){if(fieldName=='center'||fieldName=='rotation'||fieldName=='scale'||fieldName=='translation'){var negCenter=new x3dom.fields.SFVec3f(-this._vf.center.x,-this._vf.center.y,1);var posCenter=new x3dom.fields.SFVec3f(this._vf.center.x,this._vf.center.y,0);var trans3=new x3dom.fields.SFVec3f(this._vf.translation.x,this._vf.translation.y,0);var scale3=new x3dom.fields.SFVec3f(this._vf.scale.x,this._vf.scale.y,0);this._trafo=x3dom.fields.SFMatrix4f.translation(negCenter).mult(x3dom.fields.SFMatrix4f.scale(scale3)).mult(x3dom.fields.SFMatrix4f.rotationZ(this._vf.rotation)).mult(x3dom.fields.SFMatrix4f.translation(posCenter.add(trans3)));}},texTransformMatrix:function(){return this._trafo;}}));x3dom.registerNodeType("TextureProperties","Texturing",defineClass(x3dom.nodeTypes.X3DNode,function(ctx){x3dom.nodeTypes.TextureProperties.superClass.call(this,ctx);this.addField_SFFloat(ctx,'anisotropicDegree',1.0);this.addField_SFColorRGBA(ctx,'borderColor',0,0,0,0);this.addField_SFInt32(ctx,'borderWidth',0);this.addField_SFString(ctx,'boundaryModeS',"REPEAT");this.addField_SFString(ctx,'boundaryModeT',"REPEAT");this.addField_SFString(ctx,'boundaryModeR',"REPEAT");this.addField_SFString(ctx,'magnificationFilter',"FASTEST");this.addField_SFString(ctx,'minificationFilter',"FASTEST");this.addField_SFString(ctx,'textureCompression',"FASTEST");this.addField_SFFloat(ctx,'texturePriority',0);this.addField_SFBool(ctx,'generateMipMaps',false);},{fieldChanged:function(fieldName)
{if(this._vf.hasOwnProperty(fieldName)){Array.forEach(this._parentNodes,function(texture){Array.forEach(texture._parentNodes,function(app){Array.forEach(app._parentNodes,function(shape){shape._dirty.texture=true;});});});this._nameSpace.doc.needRender=true;}}}));x3dom.registerNodeType("X3DTextureNode","Texturing",defineClass(x3dom.nodeTypes.X3DAppearanceChildNode,function(ctx){x3dom.nodeTypes.X3DTextureNode.superClass.call(this,ctx);this.addField_SFInt32(ctx,'origChannelCount',0);this.addField_MFString(ctx,'url',[]);this.addField_SFBool(ctx,'repeatS',true);this.addField_SFBool(ctx,'repeatT',true);this.addField_SFBool(ctx,'scale',true);this.addField_SFString(ctx,'crossOrigin','');this.addField_SFNode('textureProperties',x3dom.nodeTypes.TextureProperties);this._needPerFrameUpdate=false;this._isCanvas=false;this._type="diffuseMap";this._blending=(this._vf.origChannelCount==1||this._vf.origChannelCount==2);},{invalidateGLObject:function()
{Array.forEach(this._parentNodes,function(app){Array.forEach(app._parentNodes,function(shape){if(x3dom.isa(shape,x3dom.nodeTypes.X3DShapeNode)){shape._dirty.texture=true;}
else{Array.forEach(shape._parentNodes,function(realShape){if(x3dom.isa(realShape,x3dom.nodeTypes.X3DShapeNode)){realShape._dirty.texture=true;}else{Array.forEach(realShape._parentNodes,function(realShape2){if(x3dom.isa(realShape2,x3dom.nodeTypes.X3DShapeNode)){realShape2._dirty.texture=true;}});}});}});});this._nameSpace.doc.needRender=true;},parentAdded:function(parent)
{Array.forEach(parent._parentNodes,function(shape){if(x3dom.isa(shape,x3dom.nodeTypes.Shape)){shape._dirty.texture=true;}
else{Array.forEach(shape._parentNodes,function(realShape){realShape._dirty.texture=true;});}});},parentRemoved:function(parent)
{Array.forEach(parent._parentNodes,function(shape){if(x3dom.isa(shape,x3dom.nodeTypes.Shape)){shape._dirty.texture=true;}
else{Array.forEach(shape._parentNodes,function(realShape){realShape._dirty.texture=true;});}});},fieldChanged:function(fieldName)
{if(fieldName=="url"||fieldName=="origChannelCount"||fieldName=="repeatS"||fieldName=="repeatT"||fieldName=="scale"||fieldName=="crossOrigin")
{var that=this;Array.forEach(this._parentNodes,function(app){if(x3dom.isa(app,x3dom.nodeTypes.X3DAppearanceNode)){app.nodeChanged();Array.forEach(app._parentNodes,function(shape){shape._dirty.texture=true;});}
else if(x3dom.isa(app,x3dom.nodeTypes.MultiTexture)){Array.forEach(app._parentNodes,function(realApp){realApp.nodeChanged();Array.forEach(realApp._parentNodes,function(shape){shape._dirty.texture=true;});});}
else if(x3dom.isa(app,x3dom.nodeTypes.ImageGeometry)){var cf=null;if(that._xmlNode&&that._xmlNode.hasAttribute('containerField')){cf=that._xmlNode.getAttribute('containerField');app._dirty[cf]=true;}}
else if(x3dom.nodeTypes.X3DVolumeDataNode!==undefined){if(x3dom.isa(app,x3dom.nodeTypes.X3DVolumeRenderStyleNode)){if(that._xmlNode&&that._xmlNode.hasAttribute('containerField')){if(app._volumeDataParent){app._volumeDataParent._dirty.texture=true;}else{var volumeDataParent=app._parentNodes[0];while(!x3dom.isa(volumeDataParent,x3dom.nodeTypes.X3DVolumeDataNode)&&x3dom.isa(volumeDataParent,x3dom.nodeTypes.X3DNode)){volumeDataParent=volumeDataParent._parentNodes[0];}
if(x3dom.isa(volumeDataParent,x3dom.nodeTypes.X3DNode)){volumeDataParent._dirty.texture=true;}}}}else if(x3dom.isa(app,x3dom.nodeTypes.X3DVolumeDataNode)){if(that._xmlNode&&that._xmlNode.hasAttribute('containerField')){app._dirty.texture=true;}}}});}},getTexture:function(pos){if(pos===0){return this;}
return null;},size:function(){return 1;}}));x3dom.registerNodeType("MultiTexture","Texturing",defineClass(x3dom.nodeTypes.X3DTextureNode,function(ctx){x3dom.nodeTypes.MultiTexture.superClass.call(this,ctx);this.addField_MFNode('texture',x3dom.nodeTypes.X3DTextureNode);},{getTexture:function(pos){if(pos>=0&&pos<this._cf.texture.nodes.length){return this._cf.texture.nodes[pos];}
return null;},getTextures:function(){return this._cf.texture.nodes;},size:function(){return this._cf.texture.nodes.length;}}));x3dom.registerNodeType("Texture","Texturing",defineClass(x3dom.nodeTypes.X3DTextureNode,function(ctx){x3dom.nodeTypes.Texture.superClass.call(this,ctx);this.addField_SFBool(ctx,'hideChildren',true);this._video=null;this._intervalID=0;this._canvas=null;},{nodeChanged:function()
{if(this._vf.url.length||!this._xmlNode){return;}
x3dom.debug.logInfo("No Texture URL given, searching for &lt;img&gt; elements...");var that=this;try{Array.forEach(this._xmlNode.childNodes,function(childDomNode){if(childDomNode.nodeType===1){var url=childDomNode.getAttribute("src");if(url){that._vf.url.push(url);x3dom.debug.logInfo(that._vf.url[that._vf.url.length-1]);if(childDomNode.localName.toLowerCase()==="video"){that._needPerFrameUpdate=true;that._video=document.createElement('video');that._video.setAttribute('preload','auto');that._video.setAttribute('muted','muted');var p=document.getElementsByTagName('body')[0];p.appendChild(that._video);that._video.style.display="none";that._video.style.visibility="hidden";}}
else if(childDomNode.localName.toLowerCase()==="canvas"){that._needPerFrameUpdate=true;that._isCanvas=true;that._canvas=childDomNode;}
if(childDomNode.style&&that._vf.hideChildren){childDomNode.style.display="none";childDomNode.style.visibility="hidden";}
x3dom.debug.logInfo("### Found &lt;"+childDomNode.nodeName+"&gt; tag.");}});}
catch(e){x3dom.debug.logException(e);}},shutdown:function(){if(this._video){this._video.pause();while(this._video.hasChildNodes()){this._video.removeChild(this._video.firstChild);}
document.body.removeChild(this._video);this._video=null;}}}));x3dom.registerNodeType("RenderedTexture","Texturing",defineClass(x3dom.nodeTypes.X3DTextureNode,function(ctx){x3dom.nodeTypes.RenderedTexture.superClass.call(this,ctx);if(ctx)
ctx.doc._nodeBag.renderTextures.push(this);else
x3dom.debug.logWarning("RenderedTexture: No runtime context found!");this.addField_SFNode('viewpoint',x3dom.nodeTypes.X3DViewpointNode);this.addField_SFNode('background',x3dom.nodeTypes.X3DBackgroundNode);this.addField_SFNode('fog',x3dom.nodeTypes.X3DFogNode);this.addField_SFNode('scene',x3dom.nodeTypes.X3DNode);this.addField_MFNode('excludeNodes',x3dom.nodeTypes.X3DNode);this.addField_MFInt32(ctx,'dimensions',[128,128,4]);this.addField_SFString(ctx,'update','NONE');this.addField_SFBool(ctx,'showNormals',false);this.addField_SFString(ctx,'stereoMode','NONE');this.addField_SFFloat(ctx,'interpupillaryDistance',0.064);this.addField_SFBool(ctx,'oculusRiftVersion',1);this.hScreenSize=(this._vf.oculusRiftVersion==1)?0.14976:0.12576;this.vScreenSize=(this._vf.oculusRiftVersion==1)?0.09356:0.07074;this.vScreenCenter=this.vScreenSize/2;this.eyeToScreenDistance=0.041;this.lensSeparationDistance=0.0635;this.distortionK=[1.0,0.22,0.24,0.0];this.lensCenter=0.151976495726;x3dom.debug.assert(this._vf.dimensions.length>=3,"RenderedTexture.dimensions requires at least 3 entries.");this._clearParents=true;this._needRenderUpdate=true;},{nodeChanged:function()
{this._clearParents=true;this._needRenderUpdate=true;},fieldChanged:function(fieldName)
{switch(fieldName)
{case"excludeNodes":this._clearParents=true;break;case"update":if(this._vf.update.toUpperCase()=="NEXT_FRAME_ONLY"||this._vf.update.toUpperCase()=="ALWAYS"){this._needRenderUpdate=true;}
break;default:break;}},getViewMatrix:function()
{if(this._clearParents&&this._cf.excludeNodes.nodes.length){var that=this;Array.forEach(this._cf.excludeNodes.nodes,function(node){for(var i=0,n=node._parentNodes.length;i<n;i++){if(node._parentNodes[i]===that){node._parentNodes.splice(i,1);node.parentRemoved(that);}}});this._clearParents=false;}
var locScene=this._cf.scene.node;var scene=this._nameSpace.doc._scene;var vbP=scene.getViewpoint();var view=this._cf.viewpoint.node;var ret_mat=null;if(view===null||view===vbP){ret_mat=this._nameSpace.doc._viewarea.getViewMatrix();}
else if(locScene&&locScene!==scene){ret_mat=view.getViewMatrix()}
else{var mat_viewpoint=view.getCurrentTransform();ret_mat=view.getViewMatrix().mult(mat_viewpoint.inverse());}
var stereoMode=this._vf.stereoMode.toUpperCase();if(stereoMode!="NONE"){var d=this._vf.interpupillaryDistance/2;if(stereoMode=="RIGHT_EYE"){d=-d;}
var modifier=new x3dom.fields.SFMatrix4f(1,0,0,d,0,1,0,0,0,0,1,0,0,0,0,1);ret_mat=modifier.mult(ret_mat);}
return ret_mat;},getProjectionMatrix:function()
{var doc=this._nameSpace.doc;var vbP=doc._scene.getViewpoint();var view=this._cf.viewpoint.node;var ret_mat=null;var f,w=this._vf.dimensions[0],h=this._vf.dimensions[1];var stereoMode=this._vf.stereoMode.toUpperCase();var stereo=(stereoMode!="NONE");if(view===null||view===vbP){ret_mat=x3dom.fields.SFMatrix4f.copy(doc._viewarea.getProjectionMatrix());if(stereo){f=2*Math.atan(this.vScreenSize/(2*this.eyeToScreenDistance));f=1/Math.tan(f/2);}
else{f=1/Math.tan(vbP._vf.fieldOfView/2);}
ret_mat._00=f/(w/h);ret_mat._11=f;}
else{ret_mat=view.getProjectionMatrix(w/h);}
if(stereo){var hp=this.lensCenter;if(stereoMode=="RIGHT_EYE"){hp=-hp;}
var modifier=new x3dom.fields.SFMatrix4f(1,0,0,hp,0,1,0,0,0,0,1,0,0,0,0,1);ret_mat=modifier.mult(ret_mat);}
return ret_mat;},getWCtoCCMatrix:function()
{var view=this.getViewMatrix();var proj=this.getProjectionMatrix();return proj.mult(view);},parentRemoved:function(parent)
{if(this._parentNodes.length===0){var doc=this.findX3DDoc();for(var i=0,n=doc._nodeBag.renderTextures.length;i<n;i++){if(doc._nodeBag.renderTextures[i]===this){doc._nodeBag.renderTextures.splice(i,1);}}}
if(this._cf.scene.node){this._cf.scene.node.parentRemoved(this);}},requirePingPong:function()
{return false;}}));x3dom.registerNodeType("RefinementTexture","Texturing",defineClass(x3dom.nodeTypes.RenderedTexture,function(ctx){x3dom.nodeTypes.RefinementTexture.superClass.call(this,ctx);this.addField_SFString(ctx,'stamp0',"gpuii/stamps/0.gif");this.addField_SFString(ctx,'stamp1',"gpuii/stamps/1.gif");this.addField_SFBool(ctx,'autoRefinement',true);this.addField_SFString(ctx,'format','jpg');this.addField_SFInt32(ctx,'iterations',7);this.addField_SFInt32(ctx,'maxLevel',this._vf.iterations);if(this._vf.iterations%2===0){var temp=this._vf.stamp0;this._vf.stamp0=this._vf.stamp1;this._vf.stamp1=temp;}
this._vf.iterations=(this._vf.iterations>11)?11:this._vf.iterations;this._vf.iterations=(this._vf.iterations<3)?3:this._vf.iterations;this._vf.maxLevel=(this._vf.maxLevel>11)?11:this._vf.maxLevel;this._vf.maxLevel=(this._vf.maxLevel<3)?3:this._vf.maxLevel;this._vf.maxLevel=(this._vf.maxLevel>this._vf.iterations)?this._vf.iterations:this._vf.maxLevel;var repeatConfig=[{x:4,y:8},{x:8,y:8},{x:8,y:16},{x:16,y:16},{x:16,y:32},{x:32,y:32},{x:32,y:64},{x:64,y:64},{x:64,y:128}];this._repeat=new x3dom.fields.SFVec2f(this._vf.dimensions[0]/repeatConfig[this._vf.iterations-3].x,this._vf.dimensions[1]/repeatConfig[this._vf.iterations-3].y);this._renderedImage=0;this._currLoadLevel=0;this._loadLevel=1;},{nextLevel:function(){if(this._loadLevel<this._vf.maxLevel){this._loadLevel++;this._nameSpace.doc.needRender=true;}},requirePingPong:function(){return(this._currLoadLevel<=this._vf.maxLevel&&this._renderedImage<this._loadLevel);}}));x3dom.registerNodeType("PixelTexture","Texturing",defineClass(x3dom.nodeTypes.X3DTextureNode,function(ctx){x3dom.nodeTypes.PixelTexture.superClass.call(this,ctx);this.addField_SFImage(ctx,'image',0,0,0);},{fieldChanged:function(fieldName)
{if(fieldName=="image"){this.invalidateGLObject();}},getWidth:function(){return this._vf.image.width;},getHeight:function(){return this._vf.image.height;},getComponents:function(){return this._vf.image.comp;},setPixel:function(x,y,color,update){update=(update==undefined)?true:update;if(this._x3domTexture){this._x3domTexture.setPixel(x,y,[color.r*255,color.g*255,color.b*255,color.a*255],update);this._vf.image.setPixel(x,y,color);}
else
{this._vf.image.setPixel(x,y,color);if(update){this.invalidateGLObject();}}},getPixel:function(x,y){return this._vf.image.getPixel(x,y);},setPixels:function(pixels,update){update=(update==undefined)?true:update;this._vf.image.setPixels(pixels);if(update){this.invalidateGLObject();}},getPixels:function(){return this._vf.image.getPixels();}}));x3dom.registerNodeType("ImageTexture","Texturing",defineClass(x3dom.nodeTypes.Texture,function(ctx){x3dom.nodeTypes.ImageTexture.superClass.call(this,ctx);}));x3dom.registerNodeType("MovieTexture","Texturing",defineClass(x3dom.nodeTypes.Texture,function(ctx){x3dom.nodeTypes.MovieTexture.superClass.call(this,ctx);this.addField_SFBool(ctx,'loop',false);this.addField_SFFloat(ctx,'speed',1.0);this.addField_SFTime(ctx,'pauseTime',0);this.addField_SFFloat(ctx,'pitch',1.0);this.addField_SFTime(ctx,'resumeTime',0);this.addField_SFTime(ctx,'startTime',0);this.addField_SFTime(ctx,'stopTime',0);}));x3dom.registerNodeType("X3DTextureCoordinateNode","Texturing",defineClass(x3dom.nodeTypes.X3DGeometricPropertyNode,function(ctx){x3dom.nodeTypes.X3DTextureCoordinateNode.superClass.call(this,ctx);},{fieldChanged:function(fieldName){if(fieldName==="texCoord"||fieldName==="point"||fieldName==="parameter"||fieldName==="mode")
{Array.forEach(this._parentNodes,function(node){node.fieldChanged("texCoord");});}},parentAdded:function(parent){if(parent._mesh&&parent._cf.texCoord.node!==this){parent.fieldChanged("texCoord");}}}));x3dom.registerNodeType("TextureCoordinate","Texturing",defineClass(x3dom.nodeTypes.X3DTextureCoordinateNode,function(ctx){x3dom.nodeTypes.TextureCoordinate.superClass.call(this,ctx);this.addField_MFVec2f(ctx,'point',[]);}));x3dom.registerNodeType("TextureCoordinateGenerator","Texturing",defineClass(x3dom.nodeTypes.X3DTextureCoordinateNode,function(ctx){x3dom.nodeTypes.TextureCoordinateGenerator.superClass.call(this,ctx);this.addField_SFString(ctx,'mode',"SPHERE");this.addField_MFFloat(ctx,'parameter',[]);}));x3dom.registerNodeType("MultiTextureCoordinate","Texturing",defineClass(x3dom.nodeTypes.X3DTextureCoordinateNode,function(ctx){x3dom.nodeTypes.MultiTextureCoordinate.superClass.call(this,ctx);this.addField_MFNode('texCoord',x3dom.nodeTypes.X3DTextureCoordinateNode);}));x3dom.registerNodeType("ImageTextureAtlas","Texturing",defineClass(x3dom.nodeTypes.Texture,function(ctx){x3dom.nodeTypes.ImageTextureAtlas.superClass.call(this,ctx);this.addField_SFInt32(ctx,'numberOfSlices',0);this.addField_SFInt32(ctx,'slicesOverX',0);this.addField_SFInt32(ctx,'slicesOverY',0);}));x3dom.registerNodeType("X3DEnvironmentTextureNode","CubeMapTexturing",defineClass(x3dom.nodeTypes.X3DTextureNode,function(ctx){x3dom.nodeTypes.X3DEnvironmentTextureNode.superClass.call(this,ctx);},{getTexUrl:function(){return[];},getTexSize:function(){return-1;}}));x3dom.registerNodeType("ComposedCubeMapTexture","CubeMapTexturing",defineClass(x3dom.nodeTypes.X3DEnvironmentTextureNode,function(ctx){x3dom.nodeTypes.ComposedCubeMapTexture.superClass.call(this,ctx);this.addField_SFNode('back',x3dom.nodeTypes.Texture);this.addField_SFNode('front',x3dom.nodeTypes.Texture);this.addField_SFNode('bottom',x3dom.nodeTypes.Texture);this.addField_SFNode('top',x3dom.nodeTypes.Texture);this.addField_SFNode('left',x3dom.nodeTypes.Texture);this.addField_SFNode('right',x3dom.nodeTypes.Texture);this._type="cubeMap";},{getTexUrl:function(){return[this._nameSpace.getURL(this._cf.back.node._vf.url[0]),this._nameSpace.getURL(this._cf.front.node._vf.url[0]),this._nameSpace.getURL(this._cf.bottom.node._vf.url[0]),this._nameSpace.getURL(this._cf.top.node._vf.url[0]),this._nameSpace.getURL(this._cf.left.node._vf.url[0]),this._nameSpace.getURL(this._cf.right.node._vf.url[0])];}}));x3dom.registerNodeType("GeneratedCubeMapTexture","CubeMapTexturing",defineClass(x3dom.nodeTypes.X3DEnvironmentTextureNode,function(ctx){x3dom.nodeTypes.GeneratedCubeMapTexture.superClass.call(this,ctx);this.addField_SFInt32(ctx,'size',128);this.addField_SFString(ctx,'update','NONE');this._type="cubeMap";x3dom.debug.logWarning("GeneratedCubeMapTexture NYI");},{getTexSize:function(){return this._vf.size;}}));x3dom.registerNodeType("Uniform","Shaders",defineClass(x3dom.nodeTypes.Field,function(ctx){x3dom.nodeTypes.Uniform.superClass.call(this,ctx);}));x3dom.registerNodeType("SurfaceShaderTexture","Shaders",defineClass(x3dom.nodeTypes.X3DTextureNode,function(ctx){x3dom.nodeTypes.SurfaceShaderTexture.superClass.call(this,ctx);this.addField_SFInt32(ctx,'textureCoordinatesId',0);this.addField_SFString(ctx,'channelMask',"DEFAULT");this.addField_SFBool(ctx,'isSRGB',false);this.addField_SFNode('texture',x3dom.nodeTypes.X3DTextureNode);this.addField_SFNode('textureTransform',x3dom.nodeTypes.X3DTextureTransformNode);}));x3dom.registerNodeType("X3DShaderNode","Shaders",defineClass(x3dom.nodeTypes.X3DAppearanceChildNode,function(ctx){x3dom.nodeTypes.X3DShaderNode.superClass.call(this,ctx);this.addField_SFString(ctx,'language',"");}));x3dom.registerNodeType("CommonSurfaceShader","Shaders",defineClass(x3dom.nodeTypes.X3DShaderNode,function(ctx){x3dom.nodeTypes.CommonSurfaceShader.superClass.call(this,ctx);this.addField_SFInt32(ctx,'tangentTextureCoordinatesId',-1);this.addField_SFInt32(ctx,'binormalTextureCoordinatesId',-1);this.addField_SFVec3f(ctx,'emissiveFactor',0,0,0);this.addField_SFInt32(ctx,'emissiveTextureId',-1);this.addField_SFInt32(ctx,'emissiveTextureCoordinatesId',0);this.addField_SFString(ctx,'emissiveTextureChannelMask','rgb');this.addField_SFVec3f(ctx,'ambientFactor',0.2,0.2,0.2);this.addField_SFInt32(ctx,'ambientTextureId',-1);this.addField_SFInt32(ctx,'ambientTextureCoordinatesId',0);this.addField_SFString(ctx,'ambientTextureChannelMask','rgb');this.addField_SFVec3f(ctx,'diffuseFactor',0.8,0.8,0.8);this.addField_SFInt32(ctx,'diffuseTextureId',-1);this.addField_SFInt32(ctx,'diffuseTextureCoordinatesId',0);this.addField_SFString(ctx,'diffuseTextureChannelMask','rgb');this.addField_SFVec3f(ctx,'specularFactor',0,0,0);this.addField_SFInt32(ctx,'specularTextureId',-1);this.addField_SFInt32(ctx,'specularTextureCoordinatesId',0);this.addField_SFString(ctx,'specularTextureChannelMask','rgb');this.addField_SFFloat(ctx,'shininessFactor',0.2);this.addField_SFInt32(ctx,'shininessTextureId',-1);this.addField_SFInt32(ctx,'shininessTextureCoordinatesId',0);this.addField_SFString(ctx,'shininessTextureChannelMask','a');this.addField_SFString(ctx,'normalFormat','UNORM');this.addField_SFString(ctx,'normalSpace','TANGENT');this.addField_SFInt32(ctx,'normalTextureId',-1);this.addField_SFInt32(ctx,'normalTextureCoordinatesId',0);this.addField_SFString(ctx,'normalTextureChannelMask','rgb');this.addField_SFVec3f(ctx,'reflectionFactor',0,0,0);this.addField_SFInt32(ctx,'reflectionTextureId',-1);this.addField_SFInt32(ctx,'reflectionTextureCoordinatesId',0);this.addField_SFString(ctx,'reflectionTextureChannelMask','rgb');this.addField_SFVec3f(ctx,'transmissionFactor',0,0,0);this.addField_SFInt32(ctx,'transmissionTextureId',-1);this.addField_SFInt32(ctx,'transmissionTextureCoordinatesId',0);this.addField_SFString(ctx,'transmissionTextureChannelMask','rgb');this.addField_SFVec3f(ctx,'environmentFactor',1,1,1);this.addField_SFInt32(ctx,'environmentTextureId',-1);this.addField_SFInt32(ctx,'environmentTextureCoordinatesId',0);this.addField_SFString(ctx,'environmentTextureChannelMask','rgb');this.addField_SFFloat(ctx,'relativeIndexOfRefraction',1);this.addField_SFFloat(ctx,'fresnelBlend',0);this.addField_SFString(ctx,'displacementAxis','y');this.addField_SFFloat(ctx,'displacementFactor',255.0);this.addField_SFInt32(ctx,'displacementTextureId',-1);this.addField_SFInt32(ctx,'displacementTextureCoordinatesId',0);this.addField_SFNode('emissiveTexture',x3dom.nodeTypes.X3DTextureNode);this.addField_SFNode('ambientTexture',x3dom.nodeTypes.X3DTextureNode);this.addField_SFNode('diffuseTexture',x3dom.nodeTypes.X3DTextureNode);this.addField_SFNode('specularTexture',x3dom.nodeTypes.X3DTextureNode);this.addField_SFNode('shininessTexture',x3dom.nodeTypes.X3DTextureNode);this.addField_SFNode('normalTexture',x3dom.nodeTypes.X3DTextureNode);this.addField_SFNode('reflectionTexture',x3dom.nodeTypes.X3DTextureNode);this.addField_SFNode('transmissionTexture',x3dom.nodeTypes.X3DTextureNode);this.addField_SFNode('environmentTexture',x3dom.nodeTypes.X3DTextureNode);this.addField_SFNode('displacementTexture',x3dom.nodeTypes.X3DTextureNode);this.addField_SFNode('diffuseDisplacementTexture',x3dom.nodeTypes.X3DTextureNode);this.addField_SFNode('multiDiffuseAlphaTexture',x3dom.nodeTypes.X3DTextureNode);this.addField_SFNode('multiSpecularShininessTexture',x3dom.nodeTypes.X3DTextureNode);this.addField_SFNode('multiEmissiveAmbientTexture',x3dom.nodeTypes.X3DTextureNode);this.addField_SFNode('multiVisibilityTexture',x3dom.nodeTypes.X3DTextureNode);this.addField_SFVec3f(ctx,'normalScale',2,2,2);this.addField_SFVec3f(ctx,'normalBias',-1,-1,-1);this.addField_SFFloat(ctx,'alphaFactor',1);this.addField_SFBool(ctx,'invertAlphaTexture',false);this.addField_SFInt32(ctx,'alphaTextureId',-1);this.addField_SFInt32(ctx,'alphaTextureCoordinatesId',0);this.addField_SFString(ctx,'alphaTextureChannelMask','a');this.addField_SFNode('alphaTexture',x3dom.nodeTypes.X3DTextureNode);this._dirty={};},{getDiffuseMap:function()
{if(this._cf.diffuseTexture.node){if(x3dom.isa(this._cf.diffuseTexture.node,x3dom.nodeTypes.SurfaceShaderTexture)){this._cf.diffuseTexture.node._cf.texture.node._type="diffuseMap";return this._cf.diffuseTexture.node._cf.texture.node;}else{this._cf.diffuseTexture.node._type="diffuseMap";return this._cf.diffuseTexture.node;}}else{return null;}},getNormalMap:function()
{if(this._cf.normalTexture.node){if(x3dom.isa(this._cf.normalTexture.node,x3dom.nodeTypes.SurfaceShaderTexture)){this._cf.normalTexture.node._cf.texture.node._type="normalMap";return this._cf.normalTexture.node._cf.texture.node;}else{this._cf.normalTexture.node._type="normalMap";return this._cf.normalTexture.node;}}else{return null;}},getAmbientMap:function()
{if(this._cf.ambientTexture.node){if(x3dom.isa(this._cf.ambientTexture.node,x3dom.nodeTypes.SurfaceShaderTexture)){this._cf.ambientTexture.node._cf.texture.node._type="ambientMap";return this._cf.ambientTexture.node._cf.texture.node;}else{this._cf.ambientTexture.node._type="ambientMap";return this._cf.ambientTexture.node;}}else{return null;}},getSpecularMap:function()
{if(this._cf.specularTexture.node){if(x3dom.isa(this._cf.specularTexture.node,x3dom.nodeTypes.SurfaceShaderTexture)){this._cf.specularTexture.node._cf.texture.node._type="specularMap";return this._cf.specularTexture.node._cf.texture.node;}else{this._cf.specularTexture.node._type="specularMap";return this._cf.specularTexture.node;}}else{return null;}},getShininessMap:function()
{if(this._cf.shininessTexture.node){if(x3dom.isa(this._cf.shininessTexture.node,x3dom.nodeTypes.SurfaceShaderTexture)){this._cf.shininessTexture.node._cf.texture.node._type="shininessMap";return this._cf.shininessTexture.node._cf.texture.node;}else{this._cf.shininessTexture.node._type="shininessMap";return this._cf.shininessTexture.node;}}else{return null;}},getAlphaMap:function()
{if(this._cf.alphaTexture.node){if(x3dom.isa(this._cf.alphaTexture.node,x3dom.nodeTypes.SurfaceShaderTexture)){this._cf.alphaTexture.node._cf.texture.node._type="alphaMap";return this._cf.alphaTexture.node._cf.texture.node;}else{this._cf.alphaTexture.node._type="alphaMap";return this._cf.alphaTexture.node;}}else{return null;}},getDisplacementMap:function()
{if(this._cf.displacementTexture.node){if(x3dom.isa(this._cf.displacementTexture.node,x3dom.nodeTypes.SurfaceShaderTexture)){this._cf.displacementTexture.node._cf.texture.node._type="displacementMap";return this._cf.displacementTexture.node._cf.texture.node;}else{this._cf.displacementTexture.node._type="displacementMap";return this._cf.displacementTexture.node;}}else{return null;}},getDiffuseDisplacementMap:function()
{if(this._cf.diffuseDisplacementTexture.node){if(x3dom.isa(this._cf.diffuseDisplacementTexture.node,x3dom.nodeTypes.SurfaceShaderTexture)){this._cf.diffuseDisplacementTexture.node._cf.texture.node._type="diffuseDisplacementMap";return this._cf.diffuseDisplacementTexture.node._cf.texture.node;}else{this._cf.diffuseDisplacementTexture.node._type="diffuseDisplacementMap";return this._cf.diffuseDisplacementTexture.node;}}else{return null;}},getMultiDiffuseAlphaMap:function()
{if(this._cf.multiDiffuseAlphaTexture.node){if(x3dom.isa(this._cf.multiDiffuseAlphaTexture.node,x3dom.nodeTypes.SurfaceShaderTexture)){this._cf.multiDiffuseAlphaTexture.node._cf.texture.node._type="multiDiffuseAlphaMap";return this._cf.multiDiffuseAlphaTexture.node._cf.texture.node;}else{this._cf.multiDiffuseAlphaTexture.node._type="multiDiffuseAlphaMap";return this._cf.multiDiffuseAlphaTexture.node;}}else{return null;}},getMultiEmissiveAmbientMap:function()
{if(this._cf.multiEmissiveAmbientTexture.node){if(x3dom.isa(this._cf.multiEmissiveAmbientTexture.node,x3dom.nodeTypes.SurfaceShaderTexture)){this._cf.multiEmissiveAmbientTexture.node._cf.texture.node._type="multiEmissiveAmbientMap";return this._cf.multiEmissiveAmbientTexture.node._cf.texture.node;}else{this._cf.multiEmissiveAmbientTexture.node._type="multiEmissiveAmbientMap";return this._cf.multiEmissiveAmbientTexture.node;}}else{return null;}},getMultiSpecularShininessMap:function()
{if(this._cf.multiSpecularShininessTexture.node){if(x3dom.isa(this._cf.multiSpecularShininessTexture.node,x3dom.nodeTypes.SurfaceShaderTexture)){this._cf.multiSpecularShininessTexture.node._cf.texture.node._type="multiSpecularShininessMap";return this._cf.multiSpecularShininessTexture.node._cf.texture.node;}else{this._cf.multiSpecularShininessTexture.node._type="multiSpecularShininessMap";return this._cf.multiSpecularShininessTexture.node;}}else{return null;}},getMultiVisibilityMap:function()
{if(this._cf.multiVisibilityTexture.node){if(x3dom.isa(this._cf.multiVisibilityTexture.node,x3dom.nodeTypes.SurfaceShaderTexture)){this._cf.multiVisibilityTexture.node._cf.texture.node._type="multiVisibilityMap";return this._cf.multiVisibilityTexture.node._cf.texture.node;}else{this._cf.multiVisibilityTexture.node._type="multiVisibilityMap";return this._cf.multiVisibilityTexture.node;}}else{return null;}},getTextures:function()
{var textures=[];var diff=this.getDiffuseMap();if(diff)textures.push(diff);var norm=this.getNormalMap();if(norm)textures.push(norm);var spec=this.getSpecularMap();if(spec)textures.push(spec);var shin=this.getShininessMap();if(shin)textures.push(shin);var displacement=this.getDisplacementMap();if(displacement)textures.push(displacement);var diffuseDisplacement=this.getDiffuseDisplacementMap();if(diffuseDisplacement)textures.push(diffuseDisplacement);var multiDiffuseAlpha=this.getMultiDiffuseAlphaMap();if(multiDiffuseAlpha)textures.push(multiDiffuseAlpha);var multiEmissiveAmbient=this.getMultiEmissiveAmbientMap();if(multiEmissiveAmbient)textures.push(multiEmissiveAmbient);var multiSpecularShininess=this.getMultiSpecularShininessMap();if(multiSpecularShininess)textures.push(multiSpecularShininess);var multiVisibility=this.getMultiVisibilityMap();if(multiVisibility)textures.push(multiVisibility);return textures;}}));x3dom.registerNodeType("ComposedShader","Shaders",defineClass(x3dom.nodeTypes.X3DShaderNode,function(ctx){x3dom.nodeTypes.ComposedShader.superClass.call(this,ctx);this.addField_MFNode('fields',x3dom.nodeTypes.Field);this.addField_MFNode('parts',x3dom.nodeTypes.ShaderPart);this._vertex=null;this._fragment=null;this._id=null;if(!x3dom.nodeTypes.ComposedShader.ShaderInfoMsgShown){x3dom.debug.logInfo("Current ComposedShader node implementation limitations:\n"+"Vertex attributes (if given in the standard X3D fields 'coord', 'color', "+"'normal', 'texCoord'), matrices and texture are provided as follows...\n"+"(see also <a href='http://x3dom.org/x3dom/doc/help/composedShader.html'>"+"http://x3dom.org/x3dom/doc/help/composedShader.html</a>)\n"+"    attribute vec3 position;\n"+"    attribute vec3 normal;\n"+"    attribute vec2 texcoord;\n"+"    attribute vec3 color;\n"+"    uniform mat4 modelViewProjectionMatrix;\n"+"    uniform mat4 modelViewMatrix;\n"+"    uniform mat4 normalMatrix;\n"+"    uniform mat4 viewMatrix;\n"+"    uniform sampler2D tex;\n");x3dom.nodeTypes.ComposedShader.ShaderInfoMsgShown=true;}},{nodeChanged:function()
{var i,n=this._cf.parts.nodes.length;for(i=0;i<n;i++)
{if(this._cf.parts.nodes[i]._vf.type.toLowerCase()=='vertex'){this._vertex=this._cf.parts.nodes[i];this._id=this._cf.parts.nodes[i]._id;}
else if(this._cf.parts.nodes[i]._vf.type.toLowerCase()=='fragment'){this._fragment=this._cf.parts.nodes[i];this._id+=" - "+this._cf.parts.nodes[i]._id;}}
var ctx={};n=this._cf.fields.nodes.length;for(i=0;i<n;i++)
{var fieldName=this._cf.fields.nodes[i]._vf.name;ctx.xmlNode=this._cf.fields.nodes[i]._xmlNode;var needNode=false;if(ctx.xmlNode===undefined||ctx.xmlNode===null){ctx.xmlNode=document.createElement("field");needNode=true;}
ctx.xmlNode.setAttribute(fieldName,this._cf.fields.nodes[i]._vf.value);var funcName="this.addField_"+this._cf.fields.nodes[i]._vf.type+"(ctx, name);";var func=new Function('ctx','name',funcName);func.call(this,ctx,fieldName);if(needNode){ctx.xmlNode=null;}}
Array.forEach(this._parentNodes,function(app){Array.forEach(app._parentNodes,function(shape){if(shape._cleanupGLObjects)
shape._cleanupGLObjects();shape.setAllDirty();});});},fieldChanged:function(fieldName)
{var i,n=this._cf.fields.nodes.length;for(i=0;i<n;i++)
{var field=this._cf.fields.nodes[i]._vf.name;if(field===fieldName)
{var msg=this._cf.fields.nodes[i]._vf.value;try{this._vf[field].setValueByStr(msg);}
catch(exc1){try{switch((typeof(this._vf[field])).toString()){case"number":this._vf[field]=+msg;break;case"boolean":this._vf[field]=(msg.toLowerCase()==="true");break;case"string":this._vf[field]=msg;break;}}
catch(exc2){x3dom.debug.logError("setValueByStr() NYI for "+typeof(this._vf[field]));}}
break;}}
if(field==='url')
{Array.forEach(this._parentNodes,function(app){Array.forEach(app._parentNodes,function(shape){shape._dirty.shader=true;});});}},parentAdded:function(parent)
{parent.nodeChanged();}}));x3dom.nodeTypes.ComposedShader.ShaderInfoMsgShown=false;x3dom.registerNodeType("ShaderPart","Shaders",defineClass(x3dom.nodeTypes.X3DNode,function(ctx){x3dom.nodeTypes.ShaderPart.superClass.call(this,ctx);this.addField_MFString(ctx,'url',[]);this.addField_SFString(ctx,'type',"VERTEX");this._id=(ctx&&ctx.xmlNode&&ctx.xmlNode.id!="")?ctx.xmlNode.id:++x3dom.nodeTypes.Shape.shaderPartID;x3dom.debug.assert(this._vf.type.toLowerCase()=='vertex'||this._vf.type.toLowerCase()=='fragment',"Unknown shader part type!");},{nodeChanged:function()
{var ctx={};ctx.xmlNode=this._xmlNode;if(ctx.xmlNode!==undefined&&ctx.xmlNode!==null)
{var that=this;if(that._vf.url.length&&that._vf.url[0].indexOf('\n')==-1)
{var xhr=new XMLHttpRequest();xhr.open("GET",that._nameSpace.getURL(that._vf.url[0]),false);xhr.onload=function(){that._vf.url=new x3dom.fields.MFString([]);that._vf.url.push(xhr.response);};xhr.onerror=function(){x3dom.debug.logError("Could not load file '"+that._vf.url[0]+"'.");};xhr.send(null);}
else
{if(that._vf.url.length){that._vf.url=new x3dom.fields.MFString([]);}
try{that._vf.url.push(ctx.xmlNode.childNodes[1].nodeValue);ctx.xmlNode.removeChild(ctx.xmlNode.childNodes[1]);}
catch(e){Array.forEach(ctx.xmlNode.childNodes,function(childDomNode){if(childDomNode.nodeType===3){that._vf.url.push(childDomNode.nodeValue);}
else if(childDomNode.nodeType===4){that._vf.url.push(childDomNode.data);}
childDomNode.parentNode.removeChild(childDomNode);});}}}
Array.forEach(this._parentNodes,function(shader){shader.nodeChanged();});},fieldChanged:function(fieldName)
{if(fieldName==="url"){Array.forEach(this._parentNodes,function(shader){shader.fieldChanged("url");});}},parentAdded:function(parent)
{parent.nodeChanged();}}));x3dom.registerNodeType("X3DVertexAttributeNode","Shaders",defineClass(x3dom.nodeTypes.X3DGeometricPropertyNode,function(ctx){x3dom.nodeTypes.X3DVertexAttributeNode.superClass.call(this,ctx);this.addField_SFString(ctx,'name',"");}));x3dom.registerNodeType("FloatVertexAttribute","Shaders",defineClass(x3dom.nodeTypes.X3DVertexAttributeNode,function(ctx){x3dom.nodeTypes.FloatVertexAttribute.superClass.call(this,ctx);this.addField_SFInt32(ctx,'numComponents',4);this.addField_MFFloat(ctx,'value',[]);}));x3dom.registerNodeType("X3DSpatialGeometryNode","Geometry3D",defineClass(x3dom.nodeTypes.X3DGeometryNode,function(ctx){x3dom.nodeTypes.X3DSpatialGeometryNode.superClass.call(this,ctx);}));x3dom.registerNodeType("Plane","Geometry3D",defineClass(x3dom.nodeTypes.X3DSpatialGeometryNode,function(ctx){x3dom.nodeTypes.Plane.superClass.call(this,ctx);this.addField_SFVec2f(ctx,'size',2,2);this.addField_SFVec2f(ctx,'subdivision',1,1);this.addField_SFVec3f(ctx,'center',0,0,0);this.addField_MFString(ctx,'primType',['TRIANGLES']);if(this._vf.primType.length)
this._mesh._primType=this._vf.primType[0];var sx=this._vf.size.x,sy=this._vf.size.y;var subx=this._vf.subdivision.x,suby=this._vf.subdivision.y;var geoCacheID='Plane_'+sx+'-'+sy+'-'+subx+'-'+suby+'-'+
this._vf.center.x+'-'+this._vf.center.y+'-'+this._vf.center.z;if(ctx&&this._vf.useGeoCache&&x3dom.geoCache[geoCacheID]!==undefined){this._mesh=x3dom.geoCache[geoCacheID];}
else{var x=0,y=0;var xstep=sx/subx;var ystep=sy/suby;sx/=2;sy/=2;for(y=0;y<=suby;y++){for(x=0;x<=subx;x++){this._mesh._positions[0].push(this._vf.center.x+x*xstep-sx);this._mesh._positions[0].push(this._vf.center.y+y*ystep-sy);this._mesh._positions[0].push(this._vf.center.z);this._mesh._normals[0].push(0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(1);this._mesh._texCoords[0].push(x/subx);this._mesh._texCoords[0].push(y/suby);}}
for(y=1;y<=suby;y++){for(x=0;x<subx;x++){this._mesh._indices[0].push((y-1)*(subx+1)+x);this._mesh._indices[0].push((y-1)*(subx+1)+x+1);this._mesh._indices[0].push(y*(subx+1)+x);this._mesh._indices[0].push(y*(subx+1)+x);this._mesh._indices[0].push((y-1)*(subx+1)+x+1);this._mesh._indices[0].push(y*(subx+1)+x+1);}}
this._mesh._invalidate=true;this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;x3dom.geoCache[geoCacheID]=this._mesh;}},{fieldChanged:function(fieldName){if(fieldName=="size"||fieldName=="center"){this._mesh._positions[0]=[];var sx=this._vf.size.x,sy=this._vf.size.y;var subx=this._vf.subdivision.x,suby=this._vf.subdivision.y;var x=0,y=0;var xstep=sx/subx;var ystep=sy/suby;sx/=2;sy/=2;for(y=0;y<=suby;y++){for(x=0;x<=subx;x++){this._mesh._positions[0].push(this._vf.center.x+x*xstep-sx);this._mesh._positions[0].push(this._vf.center.y+y*ystep-sy);this._mesh._positions[0].push(this._vf.center.z);}}
this.invalidateVolume();this._mesh._numCoords=this._mesh._positions[0].length/3;Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;node.invalidateVolume();});}
else if(fieldName=="subdivision"){this._mesh._positions[0]=[];this._mesh._indices[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];var sx=this._vf.size.x,sy=this._vf.size.y;var subx=this._vf.subdivision.x,suby=this._vf.subdivision.y;var x=0,y=0;var xstep=sx/subx;var ystep=sy/suby;sx/=2;sy/=2;for(y=0;y<=suby;y++){for(x=0;x<=subx;x++){this._mesh._positions[0].push(this._vf.center.x+x*xstep-sx);this._mesh._positions[0].push(this._vf.center.y+y*ystep-sy);this._mesh._positions[0].push(this._vf.center.z);this._mesh._normals[0].push(0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(1);this._mesh._texCoords[0].push(x/subx);this._mesh._texCoords[0].push(y/suby);}}
for(y=1;y<=suby;y++){for(x=0;x<subx;x++){this._mesh._indices[0].push((y-1)*(subx+1)+x);this._mesh._indices[0].push((y-1)*(subx+1)+x+1);this._mesh._indices[0].push(y*(subx+1)+x);this._mesh._indices[0].push(y*(subx+1)+x);this._mesh._indices[0].push((y-1)*(subx+1)+x+1);this._mesh._indices[0].push(y*(subx+1)+x+1);}}
this.invalidateVolume();this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;Array.forEach(this._parentNodes,function(node){node.setAllDirty();node.invalidateVolume();});}}}));x3dom.registerNodeType("Box","Geometry3D",defineClass(x3dom.nodeTypes.X3DSpatialGeometryNode,function(ctx){x3dom.nodeTypes.Box.superClass.call(this,ctx);this.addField_SFVec3f(ctx,'size',2,2,2);this.addField_SFBool(ctx,'hasHelperColors',false);var sx=this._vf.size.x,sy=this._vf.size.y,sz=this._vf.size.z;var geoCacheID='Box_'+sx+'-'+sy+'-'+sz;if(this._vf.useGeoCache&&x3dom.geoCache[geoCacheID]!==undefined)
{this._mesh=x3dom.geoCache[geoCacheID];}
else
{sx/=2;sy/=2;sz/=2;this._mesh._positions[0]=[-sx,-sy,-sz,-sx,sy,-sz,sx,sy,-sz,sx,-sy,-sz,-sx,-sy,sz,-sx,sy,sz,sx,sy,sz,sx,-sy,sz,-sx,-sy,-sz,-sx,-sy,sz,-sx,sy,sz,-sx,sy,-sz,sx,-sy,-sz,sx,-sy,sz,sx,sy,sz,sx,sy,-sz,-sx,sy,-sz,-sx,sy,sz,sx,sy,sz,sx,sy,-sz,-sx,-sy,-sz,-sx,-sy,sz,sx,-sy,sz,sx,-sy,-sz];this._mesh._normals[0]=[0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0];this._mesh._texCoords[0]=[1,0,1,1,0,1,0,0,0,0,0,1,1,1,1,0,0,0,1,0,1,1,0,1,1,0,0,0,0,1,1,1,0,1,0,0,1,0,1,1,0,0,0,1,1,1,1,0];if(this._vf.hasHelperColors){this._mesh._colors[0]=[0,0,0,0,1,0,1,1,0,1,0,0,0,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,1,0,1,1,0,1,0,1,0,0,1,0,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,1,1,0,0];}
this._mesh._indices[0]=[0,1,2,2,3,0,4,7,5,5,7,6,8,9,10,10,11,8,12,14,13,14,12,15,16,17,18,18,19,16,20,22,21,22,20,23];this._mesh._invalidate=true;this._mesh._numFaces=12;this._mesh._numCoords=24;x3dom.geoCache[geoCacheID]=this._mesh;}},{fieldChanged:function(fieldName)
{if(fieldName==="size"){var sx=this._vf.size.x/2,sy=this._vf.size.y/2,sz=this._vf.size.z/2;this._mesh._positions[0]=[-sx,-sy,-sz,-sx,sy,-sz,sx,sy,-sz,sx,-sy,-sz,-sx,-sy,sz,-sx,sy,sz,sx,sy,sz,sx,-sy,sz,-sx,-sy,-sz,-sx,-sy,sz,-sx,sy,sz,-sx,sy,-sz,sx,-sy,-sz,sx,-sy,sz,sx,sy,sz,sx,sy,-sz,-sx,sy,-sz,-sx,sy,sz,sx,sy,sz,sx,sy,-sz,-sx,-sy,-sz,-sx,-sy,sz,sx,-sy,sz,sx,-sy,-sz];this.invalidateVolume();Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;node.invalidateVolume();});}
else if(fieldName==="hasHelperColors"){if(this._vf.hasHelperColors){this._mesh._colors[0]=[0,0,0,0,1,0,1,1,0,1,0,0,0,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,1,0,1,1,0,1,0,1,0,0,1,0,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,1,1,0,0];}
else{this._mesh._colors[0]=[];}
Array.forEach(this._parentNodes,function(node){node._dirty.colors=true;});}}}));x3dom.registerNodeType("Sphere","Geometry3D",defineClass(x3dom.nodeTypes.X3DSpatialGeometryNode,function(ctx){x3dom.nodeTypes.Sphere.superClass.call(this,ctx);this.addField_SFFloat(ctx,'radius',ctx?1:10000);this.addField_SFVec2f(ctx,'subdivision',24,24);var qfactor=1.0;var r=this._vf.radius;var subx=this._vf.subdivision.x,suby=this._vf.subdivision.y;var geoCacheID='Sphere_'+r+'-'+subx+'-'+suby;if(this._vf.useGeoCache&&x3dom.geoCache[geoCacheID]!==undefined){this._mesh=x3dom.geoCache[geoCacheID];}
else{if(ctx){qfactor=ctx.doc.properties.getProperty("PrimitiveQuality","Medium");}
if(!x3dom.Utils.isNumber(qfactor)){switch(qfactor.toLowerCase()){case"low":qfactor=0.3;break;case"medium":qfactor=0.5;break;case"high":qfactor=1.0;break;}}else{qfactor=parseFloat(qfactor);}
this._quality=qfactor;var latNumber,longNumber;var latitudeBands=Math.floor(subx*qfactor);var longitudeBands=Math.floor(suby*qfactor);var theta,sinTheta,cosTheta;var phi,sinPhi,cosPhi;var x,y,z,u,v;for(latNumber=0;latNumber<=latitudeBands;latNumber++){theta=(latNumber*Math.PI)/latitudeBands;sinTheta=Math.sin(theta);cosTheta=Math.cos(theta);for(longNumber=0;longNumber<=longitudeBands;longNumber++){phi=(longNumber*2.0*Math.PI)/longitudeBands;sinPhi=Math.sin(phi);cosPhi=Math.cos(phi);x=-cosPhi*sinTheta;y=-cosTheta;z=-sinPhi*sinTheta;u=0.25-(longNumber/longitudeBands);v=latNumber/latitudeBands;this._mesh._positions[0].push(r*x);this._mesh._positions[0].push(r*y);this._mesh._positions[0].push(r*z);this._mesh._normals[0].push(x);this._mesh._normals[0].push(y);this._mesh._normals[0].push(z);this._mesh._texCoords[0].push(u);this._mesh._texCoords[0].push(v);}}
var first,second;for(latNumber=0;latNumber<latitudeBands;latNumber++){for(longNumber=0;longNumber<longitudeBands;longNumber++){first=(latNumber*(longitudeBands+1))+longNumber;second=first+longitudeBands+1;this._mesh._indices[0].push(first);this._mesh._indices[0].push(second);this._mesh._indices[0].push(first+1);this._mesh._indices[0].push(second);this._mesh._indices[0].push(second+1);this._mesh._indices[0].push(first+1);}}
this._mesh._invalidate=true;this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;x3dom.geoCache[geoCacheID]=this._mesh;}},{fieldChanged:function(fieldName){if(fieldName==="radius"){this._mesh._positions[0]=[];var r=this._vf.radius;var subx=this._vf.subdivision.x,suby=this._vf.subdivision.y;var qfactor=this._quality;var latNumber,longNumber;var latitudeBands=Math.floor(subx*qfactor);var longitudeBands=Math.floor(suby*qfactor);var theta,sinTheta,cosTheta;var phi,sinPhi,cosPhi;var x,y,z;for(latNumber=0;latNumber<=latitudeBands;latNumber++){theta=(latNumber*Math.PI)/latitudeBands;sinTheta=Math.sin(theta);cosTheta=Math.cos(theta);for(longNumber=0;longNumber<=longitudeBands;longNumber++){phi=(longNumber*2.0*Math.PI)/longitudeBands;sinPhi=Math.sin(phi);cosPhi=Math.cos(phi);x=-cosPhi*sinTheta;y=-cosTheta;z=-sinPhi*sinTheta;this._mesh._positions[0].push(r*x);this._mesh._positions[0].push(r*y);this._mesh._positions[0].push(r*z);}}
this.invalidateVolume();this._mesh._numCoords=this._mesh._positions[0].length/3;Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;node.invalidateVolume();});}
else if(fieldName==="subdivision"){this._mesh._positions[0]=[];this._mesh._indices[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];var r=this._vf.radius;var subx=this._vf.subdivision.x,suby=this._vf.subdivision.y;var qfactor=this._quality;var latNumber,longNumber;var latitudeBands=Math.floor(subx*qfactor);var longitudeBands=Math.floor(suby*qfactor);var theta,sinTheta,cosTheta;var phi,sinPhi,cosPhi;var x,y,z,u,v;for(latNumber=0;latNumber<=latitudeBands;latNumber++){theta=(latNumber*Math.PI)/latitudeBands;sinTheta=Math.sin(theta);cosTheta=Math.cos(theta);for(longNumber=0;longNumber<=longitudeBands;longNumber++){phi=(longNumber*2.0*Math.PI)/longitudeBands;sinPhi=Math.sin(phi);cosPhi=Math.cos(phi);x=-cosPhi*sinTheta;y=-cosTheta;z=-sinPhi*sinTheta;u=0.25-(longNumber/longitudeBands);v=latNumber/latitudeBands;this._mesh._positions[0].push(r*x);this._mesh._positions[0].push(r*y);this._mesh._positions[0].push(r*z);this._mesh._normals[0].push(x);this._mesh._normals[0].push(y);this._mesh._normals[0].push(z);this._mesh._texCoords[0].push(u);this._mesh._texCoords[0].push(v);}}
var first,second;for(latNumber=0;latNumber<latitudeBands;latNumber++){for(longNumber=0;longNumber<longitudeBands;longNumber++){first=(latNumber*(longitudeBands+1))+longNumber;second=first+longitudeBands+1;this._mesh._indices[0].push(first);this._mesh._indices[0].push(second);this._mesh._indices[0].push(first+1);this._mesh._indices[0].push(second);this._mesh._indices[0].push(second+1);this._mesh._indices[0].push(first+1);}}
this.invalidateVolume();this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;Array.forEach(this._parentNodes,function(node){node.setAllDirty();node.invalidateVolume();});}}}));x3dom.registerNodeType("Torus","Geometry3D",defineClass(x3dom.nodeTypes.X3DSpatialGeometryNode,function(ctx){x3dom.nodeTypes.Torus.superClass.call(this,ctx);var twoPi=2.0*Math.PI;this.addField_SFFloat(ctx,'innerRadius',0.5);this.addField_SFFloat(ctx,'outerRadius',1.0);this.addField_SFFloat(ctx,'angle',twoPi);this.addField_SFBool(ctx,'caps',true);this.addField_SFVec2f(ctx,'subdivision',24,24);this.addField_SFBool(ctx,'insideOutsideRadius',false);if(this._vf.angle<0)
this._vf.angle=0;else if(this._vf.angle>twoPi)
this._vf.angle=twoPi;this._origCCW=this._vf.ccw;var innerRadius=this._vf.innerRadius;var outerRadius=this._vf.outerRadius;if(this._vf.insideOutsideRadius==true)
{if(innerRadius>outerRadius){var tmp=innerRadius;innerRadius=outerRadius;outerRadius=tmp;}
var rad=(outerRadius-innerRadius)/2;outerRadius=innerRadius+rad;innerRadius=rad;this._vf.ccw=!this._origCCW;}
var rings=this._vf.subdivision.x,sides=this._vf.subdivision.y;rings=Math.max(3,Math.round((this._vf.angle/twoPi)*rings));var geoCacheID='Torus_'+innerRadius+'_'+outerRadius+'_'+this._vf.angle+'_'+
this._vf.subdivision+'-'+this._vf.caps;if(this._vf.useGeoCache&&x3dom.geoCache[geoCacheID]!==undefined)
{this._mesh=x3dom.geoCache[geoCacheID];}
else
{var ringDelta=this._vf.angle/rings;var sideDelta=twoPi/sides;var a,b,theta,phi;var cosTheta,sinTheta,cosPhi,sinPhi,dist;for(a=0,theta=0;a<=rings;a++,theta+=ringDelta)
{cosTheta=Math.cos(theta);sinTheta=Math.sin(theta);for(b=0,phi=0;b<=sides;b++,phi+=sideDelta)
{cosPhi=Math.cos(phi);sinPhi=Math.sin(phi);dist=outerRadius+innerRadius*cosPhi;if(this._vf.insideOutsideRadius){this._mesh._positions[0].push(cosTheta*dist,innerRadius*sinPhi,-sinTheta*dist);this._mesh._normals[0].push(cosTheta*cosPhi,sinPhi,-sinTheta*cosPhi);}
else{this._mesh._positions[0].push(cosTheta*dist,-sinTheta*dist,innerRadius*sinPhi);this._mesh._normals[0].push(cosTheta*cosPhi,-sinTheta*cosPhi,sinPhi);}
this._mesh._texCoords[0].push(-a/rings,b/sides);}}
for(a=0;a<sides;a++)
{for(b=0;b<rings;b++)
{this._mesh._indices[0].push(b*(sides+1)+a);this._mesh._indices[0].push(b*(sides+1)+a+1);this._mesh._indices[0].push((b+1)*(sides+1)+a);this._mesh._indices[0].push(b*(sides+1)+a+1);this._mesh._indices[0].push((b+1)*(sides+1)+a+1);this._mesh._indices[0].push((b+1)*(sides+1)+a);}}
if(this._vf.angle<twoPi&&this._vf.caps==true)
{var origPos=this._mesh._positions[0].length/3;if(this._vf.insideOutsideRadius){this._mesh._positions[0].push(outerRadius,0,0);this._mesh._normals[0].push(0,0,1);}
else{this._mesh._positions[0].push(outerRadius,0,0);this._mesh._normals[0].push(0,1,0);}
this._mesh._texCoords[0].push(0.5,0.5);for(b=0,phi=0;b<=sides;b++,phi+=sideDelta)
{cosPhi=Math.cos(phi);sinPhi=Math.sin(phi);dist=outerRadius+innerRadius*cosPhi;if(this._vf.insideOutsideRadius){this._mesh._positions[0].push(dist,sinPhi*innerRadius,0);this._mesh._normals[0].push(0,0,1);}
else{this._mesh._positions[0].push(dist,0,sinPhi*innerRadius);this._mesh._normals[0].push(0,1,0);}
this._mesh._texCoords[0].push((1+cosPhi)*0.5,(1-sinPhi)*0.5);if(b>0){this._mesh._indices[0].push(origPos);this._mesh._indices[0].push(origPos+b);this._mesh._indices[0].push(origPos+b-1);}
if(b==sides){this._mesh._indices[0].push(origPos);this._mesh._indices[0].push(origPos+1);this._mesh._indices[0].push(origPos+b);}}
cosTheta=Math.cos(this._vf.angle);sinTheta=Math.sin(this._vf.angle);origPos=this._mesh._positions[0].length/3;var nx=-sinTheta,ny=-cosTheta;if(this._vf.insideOutsideRadius){this._mesh._positions[0].push(cosTheta*outerRadius,0,-sinTheta*outerRadius);this._mesh._normals[0].push(nx,0,ny);}
else{this._mesh._positions[0].push(cosTheta*outerRadius,-sinTheta*outerRadius,0);this._mesh._normals[0].push(nx,ny,0);}
this._mesh._texCoords[0].push(0.5,0.5);for(b=0,phi=0;b<=sides;b++,phi+=sideDelta)
{cosPhi=Math.cos(phi);sinPhi=Math.sin(phi);dist=outerRadius+innerRadius*cosPhi;if(this._vf.insideOutsideRadius){this._mesh._positions[0].push(cosTheta*dist,sinPhi*innerRadius,-sinTheta*dist);this._mesh._normals[0].push(nx,0,ny);}
else{this._mesh._positions[0].push(cosTheta*dist,-sinTheta*dist,sinPhi*innerRadius);this._mesh._normals[0].push(nx,ny,0);}
this._mesh._texCoords[0].push(1-(1+cosPhi)*0.5,(1-sinPhi)*0.5);if(b>0){this._mesh._indices[0].push(origPos);this._mesh._indices[0].push(origPos+b-1);this._mesh._indices[0].push(origPos+b);}
if(b==sides){this._mesh._indices[0].push(origPos);this._mesh._indices[0].push(origPos+b);this._mesh._indices[0].push(origPos+1);}}}
this._mesh._invalidate=true;this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;x3dom.geoCache[geoCacheID]=this._mesh;}},{fieldChanged:function(fieldName)
{if(fieldName=="innerRadius"||fieldName=="outerRadius"||fieldName=="subdivision"||fieldName=="angle"||fieldName=="insideOutsideRadius"||fieldName=="caps")
{var twoPi=2.0*Math.PI;if(this._vf.angle<0)
this._vf.angle=0;else if(this._vf.angle>twoPi)
this._vf.angle=twoPi;var innerRadius=this._vf.innerRadius;var outerRadius=this._vf.outerRadius;if(this._vf.insideOutsideRadius==true)
{if(innerRadius>outerRadius){var tmp=innerRadius;innerRadius=outerRadius;outerRadius=tmp;}
var rad=(outerRadius-innerRadius)/2;outerRadius=innerRadius+rad;innerRadius=rad;this._vf.ccw=!this._origCCW;}
else
this._vf.ccw=this._origCCW;var rings=this._vf.subdivision.x,sides=this._vf.subdivision.y;rings=Math.max(3,Math.round((this._vf.angle/twoPi)*rings));var ringDelta=this._vf.angle/rings;var sideDelta=twoPi/sides;var a,b,theta,phi;var cosTheta,sinTheta,cosPhi,sinPhi,dist;this._mesh._positions[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];this._mesh._indices[0]=[];for(a=0,theta=0;a<=rings;a++,theta+=ringDelta)
{cosTheta=Math.cos(theta);sinTheta=Math.sin(theta);for(b=0,phi=0;b<=sides;b++,phi+=sideDelta)
{cosPhi=Math.cos(phi);sinPhi=Math.sin(phi);dist=outerRadius+innerRadius*cosPhi;if(this._vf.insideOutsideRadius){this._mesh._positions[0].push(cosTheta*dist,innerRadius*sinPhi,-sinTheta*dist);this._mesh._normals[0].push(cosTheta*cosPhi,sinPhi,-sinTheta*cosPhi);}
else{this._mesh._positions[0].push(cosTheta*dist,-sinTheta*dist,innerRadius*sinPhi);this._mesh._normals[0].push(cosTheta*cosPhi,-sinTheta*cosPhi,sinPhi);}
this._mesh._texCoords[0].push(-a/rings,b/sides);}}
for(a=0;a<sides;a++)
{for(b=0;b<rings;b++)
{this._mesh._indices[0].push(b*(sides+1)+a);this._mesh._indices[0].push(b*(sides+1)+a+1);this._mesh._indices[0].push((b+1)*(sides+1)+a);this._mesh._indices[0].push(b*(sides+1)+a+1);this._mesh._indices[0].push((b+1)*(sides+1)+a+1);this._mesh._indices[0].push((b+1)*(sides+1)+a);}}
if(this._vf.angle<twoPi&&this._vf.caps==true)
{var origPos=this._mesh._positions[0].length/3;if(this._vf.insideOutsideRadius){this._mesh._positions[0].push(outerRadius,0,0);this._mesh._normals[0].push(0,0,1);}
else{this._mesh._positions[0].push(outerRadius,0,0);this._mesh._normals[0].push(0,1,0);}
this._mesh._texCoords[0].push(0.5,0.5);for(b=0,phi=0;b<=sides;b++,phi+=sideDelta)
{cosPhi=Math.cos(phi);sinPhi=Math.sin(phi);dist=outerRadius+innerRadius*cosPhi;if(this._vf.insideOutsideRadius){this._mesh._positions[0].push(dist,sinPhi*innerRadius,0);this._mesh._normals[0].push(0,0,1);}
else{this._mesh._positions[0].push(dist,0,sinPhi*innerRadius);this._mesh._normals[0].push(0,1,0);}
this._mesh._texCoords[0].push((1+cosPhi)*0.5,(1-sinPhi)*0.5);if(b>0){this._mesh._indices[0].push(origPos);this._mesh._indices[0].push(origPos+b);this._mesh._indices[0].push(origPos+b-1);}
if(b==sides){this._mesh._indices[0].push(origPos);this._mesh._indices[0].push(origPos+1);this._mesh._indices[0].push(origPos+b);}}
cosTheta=Math.cos(this._vf.angle);sinTheta=Math.sin(this._vf.angle);origPos=this._mesh._positions[0].length/3;var nx=-sinTheta,ny=-cosTheta;if(this._vf.insideOutsideRadius){this._mesh._positions[0].push(cosTheta*outerRadius,0,-sinTheta*outerRadius);this._mesh._normals[0].push(nx,0,ny);}
else{this._mesh._positions[0].push(cosTheta*outerRadius,-sinTheta*outerRadius,0);this._mesh._normals[0].push(nx,ny,0);}
this._mesh._texCoords[0].push(0.5,0.5);for(b=0,phi=0;b<=sides;b++,phi+=sideDelta)
{cosPhi=Math.cos(phi);sinPhi=Math.sin(phi);dist=outerRadius+innerRadius*cosPhi;if(this._vf.insideOutsideRadius){this._mesh._positions[0].push(cosTheta*dist,sinPhi*innerRadius,-sinTheta*dist);this._mesh._normals[0].push(nx,0,ny);}
else{this._mesh._positions[0].push(cosTheta*dist,-sinTheta*dist,sinPhi*innerRadius);this._mesh._normals[0].push(nx,ny,0);}
this._mesh._texCoords[0].push(1-(1+cosPhi)*0.5,(1-sinPhi)*0.5);if(b>0){this._mesh._indices[0].push(origPos);this._mesh._indices[0].push(origPos+b-1);this._mesh._indices[0].push(origPos+b);}
if(b==sides){this._mesh._indices[0].push(origPos);this._mesh._indices[0].push(origPos+b);this._mesh._indices[0].push(origPos+1);}}}
this.invalidateVolume();this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;Array.forEach(this._parentNodes,function(node){node.setAllDirty();node.invalidateVolume();});}}}));x3dom.registerNodeType("Cone","Geometry3D",defineClass(x3dom.nodeTypes.X3DSpatialGeometryNode,function(ctx){x3dom.nodeTypes.Cone.superClass.call(this,ctx);this.addField_SFFloat(ctx,'bottomRadius',1.0);this.addField_SFFloat(ctx,'topRadius',0);this.addField_SFFloat(ctx,'height',2.0);this.addField_SFBool(ctx,'bottom',true);this.addField_SFBool(ctx,'side',true);this.addField_SFBool(ctx,'top',true);this.addField_SFFloat(ctx,'subdivision',32);var geoCacheID='Cone_'+this._vf.bottomRadius+'_'+this._vf.height+'_'+this._vf.top+'_'+
this._vf.bottom+'_'+this._vf.side+'_'+this._vf.topRadius+'_'+this._vf.subdivision;if(this._vf.useGeoCache&&x3dom.geoCache[geoCacheID]!==undefined){this._mesh=x3dom.geoCache[geoCacheID];}
else{var bottomRadius=this._vf.bottomRadius,height=this._vf.height;var topRadius=this._vf.topRadius,sides=this._vf.subdivision;var beta,x,z;var delta=2.0*Math.PI/sides;var incl=(bottomRadius-topRadius)/height;var nlen=1.0/Math.sqrt(1.0+incl*incl);var j=0,k=0;var h,base;if(this._vf.side&&height>0){var px=0,pz=0;for(j=0,k=0;j<=sides;j++){beta=j*delta;x=Math.sin(beta);z=-Math.cos(beta);if(topRadius>x3dom.fields.Eps){px=x*topRadius;pz=z*topRadius;}
this._mesh._positions[0].push(px,height/2,pz);this._mesh._normals[0].push(x/nlen,incl/nlen,z/nlen);this._mesh._texCoords[0].push(1.0-j/sides,1);this._mesh._positions[0].push(x*bottomRadius,-height/2,z*bottomRadius);this._mesh._normals[0].push(x/nlen,incl/nlen,z/nlen);this._mesh._texCoords[0].push(1.0-j/sides,0);if(j>0){this._mesh._indices[0].push(k);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+3);k+=2;}}}
if(this._vf.bottom&&bottomRadius>0){base=this._mesh._positions[0].length/3;for(j=sides-1;j>=0;j--){beta=j*delta;x=bottomRadius*Math.sin(beta);z=-bottomRadius*Math.cos(beta);this._mesh._positions[0].push(x,-height/2,z);this._mesh._normals[0].push(0,-1,0);this._mesh._texCoords[0].push(x/bottomRadius/2+0.5,z/bottomRadius/2+0.5);}
h=base+1;for(j=2;j<sides;j++){this._mesh._indices[0].push(h);this._mesh._indices[0].push(base);h=base+j;this._mesh._indices[0].push(h);}}
if(this._vf.top&&topRadius>x3dom.fields.Eps){base=this._mesh._positions[0].length/3;for(j=sides-1;j>=0;j--){beta=j*delta;x=topRadius*Math.sin(beta);z=-topRadius*Math.cos(beta);this._mesh._positions[0].push(x,height/2,z);this._mesh._normals[0].push(0,1,0);this._mesh._texCoords[0].push(x/topRadius/2+0.5,1.0-z/topRadius/2+0.5);}
h=base+1;for(j=2;j<sides;j++){this._mesh._indices[0].push(base);this._mesh._indices[0].push(h);h=base+j;this._mesh._indices[0].push(h);}}
this._mesh._invalidate=true;this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;x3dom.geoCache[geoCacheID]=this._mesh;}},{fieldChanged:function(fieldName)
{if(fieldName=="bottomRadius"||fieldName=="topRadius"||fieldName=="height"||fieldName=="subdivision"||fieldName=="bottom"||fieldName=="top"||fieldName=="side")
{this._mesh._positions[0]=[];this._mesh._indices[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];var bottomRadius=this._vf.bottomRadius,height=this._vf.height;var topRadius=this._vf.topRadius,sides=this._vf.subdivision;var beta,x,z;var delta=2.0*Math.PI/sides;var incl=(bottomRadius-topRadius)/height;var nlen=1.0/Math.sqrt(1.0+incl*incl);var j=0,k=0;var h,base;if(this._vf.side&&height>0)
{var px=0,pz=0;for(j=0,k=0;j<=sides;j++){beta=j*delta;x=Math.sin(beta);z=-Math.cos(beta);if(topRadius>x3dom.fields.Eps){px=x*topRadius;pz=z*topRadius;}
this._mesh._positions[0].push(px,height/2,pz);this._mesh._normals[0].push(x/nlen,incl/nlen,z/nlen);this._mesh._texCoords[0].push(1.0-j/sides,1);this._mesh._positions[0].push(x*bottomRadius,-height/2,z*bottomRadius);this._mesh._normals[0].push(x/nlen,incl/nlen,z/nlen);this._mesh._texCoords[0].push(1.0-j/sides,0);if(j>0){this._mesh._indices[0].push(k);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+3);k+=2;}}}
if(this._vf.bottom&&bottomRadius>0)
{base=this._mesh._positions[0].length/3;for(j=sides-1;j>=0;j--){beta=j*delta;x=bottomRadius*Math.sin(beta);z=-bottomRadius*Math.cos(beta);this._mesh._positions[0].push(x,-height/2,z);this._mesh._normals[0].push(0,-1,0);this._mesh._texCoords[0].push(x/bottomRadius/2+0.5,z/bottomRadius/2+0.5);}
h=base+1;for(j=2;j<sides;j++){this._mesh._indices[0].push(h);this._mesh._indices[0].push(base);h=base+j;this._mesh._indices[0].push(h);}}
if(this._vf.top&&topRadius>x3dom.fields.Eps)
{base=this._mesh._positions[0].length/3;for(j=sides-1;j>=0;j--){beta=j*delta;x=topRadius*Math.sin(beta);z=-topRadius*Math.cos(beta);this._mesh._positions[0].push(x,height/2,z);this._mesh._normals[0].push(0,1,0);this._mesh._texCoords[0].push(x/topRadius/2+0.5,1.0-z/topRadius/2+0.5);}
h=base+1;for(j=2;j<sides;j++){this._mesh._indices[0].push(base);this._mesh._indices[0].push(h);h=base+j;this._mesh._indices[0].push(h);}}
this.invalidateVolume();this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;Array.forEach(this._parentNodes,function(node){node.setAllDirty();node.invalidateVolume();});}}}));x3dom.registerNodeType("Cylinder","Geometry3D",defineClass(x3dom.nodeTypes.X3DSpatialGeometryNode,function(ctx){x3dom.nodeTypes.Cylinder.superClass.call(this,ctx);this.addField_SFFloat(ctx,'radius',1.0);this.addField_SFFloat(ctx,'height',2.0);this.addField_SFBool(ctx,'bottom',true);this.addField_SFBool(ctx,'top',true);this.addField_SFFloat(ctx,'subdivision',32);this.addField_SFBool(ctx,'side',true);var sides=this._vf.subdivision;var geoCacheID='Cylinder_'+this._vf.radius+'_'+this._vf.height+'_'+this._vf.bottom+'_'+this._vf.top+'_'+
this._vf.side+'_'+this._vf.subdivision;if(this._vf.useGeoCache&&x3dom.geoCache[geoCacheID]!==undefined)
{this._mesh=x3dom.geoCache[geoCacheID];}
else
{var radius=this._vf.radius;var height=this._vf.height/2;var beta,x,z;var delta=2.0*Math.PI/sides;var j,k;if(this._vf.side)
{for(j=0,k=0;j<=sides;j++)
{beta=j*delta;x=Math.sin(beta);z=-Math.cos(beta);this._mesh._positions[0].push(x*radius,-height,z*radius);this._mesh._normals[0].push(x,0,z);this._mesh._texCoords[0].push(1.0-j/sides,0);this._mesh._positions[0].push(x*radius,height,z*radius);this._mesh._normals[0].push(x,0,z);this._mesh._texCoords[0].push(1.0-j/sides,1);if(j>0)
{this._mesh._indices[0].push(k);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+3);k+=2;}}}
if(radius>0)
{var h,base=this._mesh._positions[0].length/3;if(this._vf.top)
{for(j=sides-1;j>=0;j--)
{beta=j*delta;x=radius*Math.sin(beta);z=-radius*Math.cos(beta);this._mesh._positions[0].push(x,height,z);this._mesh._normals[0].push(0,1,0);this._mesh._texCoords[0].push(x/radius/2+0.5,-z/radius/2+0.5);}
h=base+1;for(j=2;j<sides;j++)
{this._mesh._indices[0].push(base);this._mesh._indices[0].push(h);h=base+j;this._mesh._indices[0].push(h);}
base=this._mesh._positions[0].length/3;}
if(this._vf.bottom)
{for(j=sides-1;j>=0;j--)
{beta=j*delta;x=radius*Math.sin(beta);z=-radius*Math.cos(beta);this._mesh._positions[0].push(x,-height,z);this._mesh._normals[0].push(0,-1,0);this._mesh._texCoords[0].push(x/radius/2+0.5,z/radius/2+0.5);}
h=base+1;for(j=2;j<sides;j++)
{this._mesh._indices[0].push(h);this._mesh._indices[0].push(base);h=base+j;this._mesh._indices[0].push(h);}}}
this._mesh._invalidate=true;this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;x3dom.geoCache[geoCacheID]=this._mesh;}},{fieldChanged:function(fieldName){if(fieldName==="radius"||fieldName==="height")
{this._mesh._positions[0]=[];var radius=this._vf.radius,height=this._vf.height/2;var sides=this._vf.subdivision;var beta,x,z,j;var delta=2.0*Math.PI/sides;if(this._vf.side)
{for(j=0;j<=sides;j++)
{beta=j*delta;x=Math.sin(beta);z=-Math.cos(beta);this._mesh._positions[0].push(x*radius,-height,z*radius);this._mesh._positions[0].push(x*radius,height,z*radius);}}
if(radius>0)
{var h,base=this._mesh._positions[0].length/3;if(this._vf.top)
{for(j=sides-1;j>=0;j--)
{beta=j*delta;x=radius*Math.sin(beta);z=-radius*Math.cos(beta);this._mesh._positions[0].push(x,height,z);}}}
if(this._vf.bottom)
{for(j=sides-1;j>=0;j--)
{beta=j*delta;x=radius*Math.sin(beta);z=-radius*Math.cos(beta);this._mesh._positions[0].push(x,-height,z);}}
this.invalidateVolume();this._mesh._numCoords=this._mesh._positions[0].length/3;Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;node.invalidateVolume();});}
else if(fieldName==="subdivision"||fieldName==="bottom"||fieldName==="top"||fieldName==="side")
{this._mesh._positions[0]=[];this._mesh._indices[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];var radius=this._vf.radius,height=this._vf.height/2;var sides=this._vf.subdivision;var beta,x,z,j;var delta=2.0*Math.PI/sides;var k=0;if(this._vf.side)
{for(j=0,k=0;j<=sides;j++)
{beta=j*delta;x=Math.sin(beta);z=-Math.cos(beta);this._mesh._positions[0].push(x*radius,-height,z*radius);this._mesh._normals[0].push(x,0,z);this._mesh._texCoords[0].push(1.0-j/sides,0);this._mesh._positions[0].push(x*radius,height,z*radius);this._mesh._normals[0].push(x,0,z);this._mesh._texCoords[0].push(1.0-j/sides,1);if(j>0)
{this._mesh._indices[0].push(k+0);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+3);k+=2;}}}
if(radius>0)
{var h,base=this._mesh._positions[0].length/3;if(this._vf.top)
{for(j=sides-1;j>=0;j--)
{beta=j*delta;x=radius*Math.sin(beta);z=-radius*Math.cos(beta);this._mesh._positions[0].push(x,height,z);this._mesh._normals[0].push(0,1,0);this._mesh._texCoords[0].push(x/radius/2+0.5,-z/radius/2+0.5);}
h=base+1;for(j=2;j<sides;j++)
{this._mesh._indices[0].push(base);this._mesh._indices[0].push(h);h=base+j;this._mesh._indices[0].push(h);}
base=this._mesh._positions[0].length/3;}
if(this._vf.bottom)
{for(j=sides-1;j>=0;j--)
{beta=j*delta;x=radius*Math.sin(beta);z=-radius*Math.cos(beta);this._mesh._positions[0].push(x,-height,z);this._mesh._normals[0].push(0,-1,0);this._mesh._texCoords[0].push(x/radius/2+0.5,z/radius/2+0.5);}
h=base+1;for(j=2;j<sides;j++)
{this._mesh._indices[0].push(h);this._mesh._indices[0].push(base);h=base+j;this._mesh._indices[0].push(h);}}}
this.invalidateVolume();this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;Array.forEach(this._parentNodes,function(node){node.setAllDirty();node.invalidateVolume();});}}}));x3dom.registerNodeType("ExternalGeometry","Geometry3D",defineClass(x3dom.nodeTypes.X3DSpatialGeometryNode,function(ctx){x3dom.nodeTypes.ExternalGeometry.superClass.call(this,ctx);this.addField_MFString(ctx,'url',[]);this._mesh._invalidate=false;this._mesh._numCoords=0;this._mesh._numFaces=0;this._currentURLIdx=0;},{updateRenderData:function(shape,shaderProgram,gl,viewarea,context){var that=this;var xhr;if(this._vf['url'].length==0||this._currentURLIdx>=this._vf['url'].length)
{return;}
if(x3dom.BinaryContainerLoader.outOfMemory){return;}
shape._webgl.internalDownloadCount=1;shape._nameSpace.doc.downloadCount=1;xhr=new XMLHttpRequest();xhr.open("GET",this._vf['url'][this._currentURLIdx],true);xhr.responseType="arraybuffer";xhr.send(null);xhr.onerror=function(){x3dom.debug.logError("Unable to load SRC data from URL \""+that._vf['url'][that._currentURLIdx]+"\"");};xhr.onload=function(){shape._webgl.internalDownloadCount=0;shape._nameSpace.doc.downloadCount=0;var responseBeginUint32=new Uint32Array(xhr.response,0,12);var srcHeaderSize,srcBodySize,srcBodyOffset;var srcHeaderView,srcBodyView;var srcHeaderObj;if((xhr.status==200||xhr.status==0)&&responseBeginUint32.length>=3){srcHeaderSize=responseBeginUint32[2];srcBodyOffset=srcHeaderSize+12;srcBodySize=xhr.response.byteLength-srcBodyOffset;if(srcHeaderSize>0&&srcBodySize>=0)
{srcHeaderView=new Uint8Array(xhr.response,12,srcHeaderSize);srcBodyView=new Uint8Array(xhr.response,srcBodyOffset,srcBodySize);try
{srcHeaderObj=JSON.parse(String.fromCharCode.apply(null,srcHeaderView));}
catch(exc)
{x3dom.debug.logError("Unable to parse SRC header: "+exc);return;}
that._updateRenderDataFromSRC(shape,shaderProgram,gl,srcHeaderObj,srcBodyView);}
else
{if((that._currentURLIdx+1)<that._vf['url'].length)
{x3dom.debug.logWarning("Invalid SRC data, loaded from URL \""+
that._vf['url'][that._currentURLIdx]+"\", trying next specified URL");++that._currentURLIdx;that.updateRenderData(shape,shaderProgram,gl,viewarea,context);}
else
{x3dom.debug.logError("Invalid SRC data, loaded from URL \""+
that._vf['url'][that._currentURLIdx]+"\","+" no other URLs left to try.");}}}
else
{if((that._currentURLIdx+1)<that._vf['url'].length)
{x3dom.debug.logWarning("Invalid SRC data, loaded from URL \""+
that._vf['url'][that._currentURLIdx]+"\", trying next specified URL");++that._currentURLIdx;that.updateRenderData(shape,shaderProgram,gl,viewarea,context);}
else
{x3dom.debug.logError("Invalid SRC data, loaded from URL \""+
that._vf['url'][that._currentURLIdx]+"\","+" no other URLs left to try.");}}};},_updateRenderDataFromSRC:function(shape,shaderProgram,gl,srcHeaderObj,srcBodyView)
{var INDEX_BUFFER_IDX=0;var POSITION_BUFFER_IDX=1;var NORMAL_BUFFER_IDX=2;var TEXCOORD_BUFFER_IDX=3;var COLOR_BUFFER_IDX=4;var ID_BUFFER_IDX=5;var MAX_NUM_BUFFERS_PER_DRAW=6;var indexViews=srcHeaderObj["accessors"]["indexViews"];var indexViewID,indexView;var attributeViews=srcHeaderObj["accessors"]["attributeViews"];var attributes;var attributeID,attributeView;var x3domTypeID,x3domShortTypeID,numComponents;var meshes=srcHeaderObj["meshes"];var mesh,meshID;var meshIdx,bufferOffset;var viewIDsToGLBufferIDs={};var indexViewBufferIDs={};for(indexViewID in indexViews)
{indexView=indexViews[indexViewID];indexViewBufferIDs[indexView["bufferView"]]=true;}
this._createGLBuffersFromSRCChunks(gl,srcHeaderObj["bufferChunks"],srcHeaderObj["bufferViews"],srcBodyView,indexViewBufferIDs,viewIDsToGLBufferIDs);for(indexViewID in indexViews)
{indexView=indexViews[indexViewID];if(indexView["componentType"]!=gl.UNSIGNED_SHORT)
{x3dom.debug.logWarning("SRC index componentType "+indexView["componentType"]+" is not UNSIGNED_SHORT. "+"Ignoring given value and assuming UNSIGNED_SHORT indices.");}
shape._webgl.indexType=gl.UNSIGNED_SHORT;}
meshIdx=0;bufferOffset=0;shape._webgl.primType=[];shape._webgl.indexOffset=[];shape._webgl.drawCount=[];this._mesh._numCoords=0;this._mesh._numFaces=0;for(meshID in meshes)
{mesh=meshes[meshID];indexViewID=mesh["indices"];if(indexViewID!="")
{shape._webgl.externalGeometry=1;indexView=indexViews[indexViewID];shape._webgl.indexOffset[meshIdx]=indexView["byteOffset"];shape._webgl.drawCount[meshIdx]=indexView["count"];shape._webgl.buffers[INDEX_BUFFER_IDX+bufferOffset]=viewIDsToGLBufferIDs[indexView["bufferView"]];this._mesh._numFaces+=indexView["count"]/3;}
else
{shape._webgl.externalGeometry=-1;}
shape._webgl.primType[meshIdx]=mesh["primitive"];attributes=mesh["attributes"];for(attributeID in attributes)
{attributeView=attributeViews[attributes[attributeID]];switch(attributeID)
{case"position":x3domTypeID="coord";x3domShortTypeID="Pos";shape._webgl.buffers[POSITION_BUFFER_IDX+bufferOffset]=viewIDsToGLBufferIDs[attributeView["bufferView"]];if(mesh["indices"]=="")
{shape._webgl.drawCount[meshIdx]=attributeView["count"];this._mesh._numFaces+=attributeView["count"]/3;}
this._mesh._numCoords+=attributeView["count"];break;case"normal":x3domTypeID="normal";x3domShortTypeID="Norm";shape._webgl.buffers[NORMAL_BUFFER_IDX+bufferOffset]=viewIDsToGLBufferIDs[attributeView["bufferView"]];break;case"texcoord":x3domTypeID="texCoord";x3domShortTypeID="Tex";shape._webgl.buffers[TEXCOORD_BUFFER_IDX+bufferOffset]=viewIDsToGLBufferIDs[attributeView["bufferView"]];break;case"color":x3domTypeID="color";x3domShortTypeID="Col";shape._webgl.buffers[COLOR_BUFFER_IDX+bufferOffset]=viewIDsToGLBufferIDs[attributeView["bufferView"]];break;case"id":x3domTypeID="id";x3domShortTypeID="Id";shape._webgl.buffers[ID_BUFFER_IDX+bufferOffset]=viewIDsToGLBufferIDs[attributeView["bufferView"]];break;}
shape["_"+x3domTypeID+"StrideOffset"][0]=attributeView["byteStride"];shape["_"+x3domTypeID+"StrideOffset"][1]=attributeView["byteOffset"];shape._webgl[x3domTypeID+"Type"]=attributeView["componentType"];numComponents=x3dom.nodeTypes.ExternalGeometry._findNumComponentsForSRCAccessorType(attributeView["type"]);this._mesh["_num"+x3domShortTypeID+"Components"]=numComponents;}
++meshIdx;bufferOffset+=MAX_NUM_BUFFERS_PER_DRAW;}
shape._nameSpace.doc.needRender=true;x3dom.BinaryContainerLoader.checkError(gl);},_createGLBuffersFromSRCChunks:function(gl,bufferChunksObj,bufferViewsObj,srcBodyView,indexViewBufferIDs,viewIDsToGLBufferIDs)
{var i;var bufferView;var chunkIDList;var bufferType;var chunk;var newBuffer;var chunkDataView;var currentChunkDataOffset;for(var bufferViewID in bufferViewsObj)
{bufferType=(typeof indexViewBufferIDs[bufferViewID]!=='undefined')?gl.ELEMENT_ARRAY_BUFFER:gl.ARRAY_BUFFER;bufferView=bufferViewsObj[bufferViewID];chunkIDList=bufferView["chunks"];if(chunkIDList.length==1)
{chunk=bufferChunksObj[chunkIDList[0]];chunkDataView=new Uint8Array(srcBodyView.buffer,srcBodyView.byteOffset+chunk["byteOffset"],chunk["byteLength"]);newBuffer=gl.createBuffer();gl.bindBuffer(bufferType,newBuffer);gl.bufferData(bufferType,chunkDataView,gl.STATIC_DRAW);viewIDsToGLBufferIDs[bufferViewID]=newBuffer;}
else
{newBuffer=gl.createBuffer();gl.bindBuffer(bufferType,newBuffer);gl.bufferData(bufferType,bufferView["byteLength"],gl.STATIC_DRAW);currentChunkDataOffset=0;for(i=0;i<chunkIDList.length;++i)
{chunk=bufferChunksObj[chunkIDList[i]];chunkDataView=new Uint8Array(srcBodyView.buffer,srcBodyView.byteOffset+chunk["byteOffset"],chunk["byteLength"]);gl.bufferSubData(bufferType,currentChunkDataOffset,chunkDataView);currentChunkDataOffset+=chunk["byteLength"];}
viewIDsToGLBufferIDs[bufferViewID]=newBuffer;}}},getVolume:function()
{var vol=this._mesh._vol;var shapeNode;if(!vol.isValid())
{shapeNode=this._parentNodes[0];if(typeof shapeNode._vf["bboxCenter"]!='undefined'&&typeof shapeNode._vf["bboxSize"]!='undefined')
{vol.setBoundsByCenterSize(shapeNode._vf["bboxCenter"],shapeNode._vf["bboxSize"]);}
else
{}}
return vol;}}));x3dom.nodeTypes.ExternalGeometry._findNumComponentsForSRCAccessorType=function(type)
{switch(type)
{case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":return 4;default:return 0;}};x3dom.registerNodeType("X3DBinaryContainerGeometryNode","Geometry3D",defineClass(x3dom.nodeTypes.X3DSpatialGeometryNode,function(ctx){x3dom.nodeTypes.X3DBinaryContainerGeometryNode.superClass.call(this,ctx);this.addField_SFVec3f(ctx,'position',0,0,0);this.addField_SFVec3f(ctx,'size',1,1,1);this.addField_MFInt32(ctx,'vertexCount',[0]);this.addField_MFString(ctx,'primType',['TRIANGLES']);this._mesh._invalidate=false;this._mesh._numCoords=0;this._mesh._numFaces=0;this._diameter=this._vf.size.length();},{getMin:function(){var vol=this._mesh._vol;if(!vol.isValid()){vol.setBoundsByCenterSize(this._vf.position,this._vf.size);}
return vol.min;},getMax:function(){var vol=this._mesh._vol;if(!vol.isValid()){vol.setBoundsByCenterSize(this._vf.position,this._vf.size);}
return vol.max;},getVolume:function(){var vol=this._mesh._vol;if(!vol.isValid()){vol.setBoundsByCenterSize(this._vf.position,this._vf.size);}
return vol;},invalidateVolume:function(){},getCenter:function(){return this._vf.position;},getDiameter:function(){return this._diameter;},needLighting:function(){var hasTris=(this._vf.primType.length&&this._vf.primType[0].indexOf("TRIANGLE")>=0);return(this._vf.lit&&hasTris);}}));x3dom.registerNodeType("BinaryGeometry","Geometry3D",defineClass(x3dom.nodeTypes.X3DBinaryContainerGeometryNode,function(ctx){x3dom.nodeTypes.BinaryGeometry.superClass.call(this,ctx);this.addField_SFString(ctx,'index',"");this.addField_SFString(ctx,'coord',"");this.addField_SFString(ctx,'normal',"");this.addField_SFString(ctx,'texCoord',"");this.addField_SFString(ctx,'color',"");this.addField_SFString(ctx,'tangent',"");this.addField_SFString(ctx,'binormal',"");this.addField_SFString(ctx,'indexType',"Uint16");this.addField_SFString(ctx,'coordType',"Float32");this.addField_SFString(ctx,'normalType',"Float32");this.addField_SFString(ctx,'texCoordType',"Float32");this.addField_SFString(ctx,'colorType',"Float32");this.addField_SFString(ctx,'tangentType',"Float32");this.addField_SFString(ctx,'binormalType',"Float32");this.addField_SFBool(ctx,'normalAsSphericalCoordinates',false);this.addField_SFBool(ctx,'rgbaColors',false);this.addField_SFInt32(ctx,'numTexCoordComponents',2);this.addField_SFBool(ctx,'normalPerVertex',true);this.addField_SFBool(ctx,'idsPerVertex',false);this.addField_SFBool(ctx,'compressed',false);this._hasStrideOffset=false;this._mesh._numPosComponents=this._vf.normalAsSphericalCoordinates?4:3;this._mesh._numTexComponents=this._vf.numTexCoordComponents;this._mesh._numColComponents=this._vf.rgbaColors?4:3;this._mesh._numNormComponents=this._vf.normalAsSphericalCoordinates?2:3;this._vertexCountSum=0;for(var i=0;i<this._vf.vertexCount.length;++i){this._vertexCountSum+=this._vf.vertexCount[i];}},{parentAdded:function(parent)
{var offsetInd,strideInd,offset,stride;offsetInd=this._vf.coord.lastIndexOf('#');strideInd=this._vf.coord.lastIndexOf('+');if(offsetInd>=0&&strideInd>=0){offset=+this._vf.coord.substring(++offsetInd,strideInd);stride=+this._vf.coord.substring(strideInd);parent._coordStrideOffset=[stride,offset];this._hasStrideOffset=true;if((offset/8)-Math.floor(offset/8)==0){this._mesh._numPosComponents=4;}}
else if(strideInd>=0){stride=+this._vf.coord.substring(strideInd);parent._coordStrideOffset=[stride,0];if((stride/8)-Math.floor(stride/8)==0){this._mesh._numPosComponents=4;}}
offsetInd=this._vf.normal.lastIndexOf('#');strideInd=this._vf.normal.lastIndexOf('+');if(offsetInd>=0&&strideInd>=0){offset=+this._vf.normal.substring(++offsetInd,strideInd);stride=+this._vf.normal.substring(strideInd);parent._normalStrideOffset=[stride,offset];}
else if(strideInd>=0){stride=+this._vf.normal.substring(strideInd);parent._normalStrideOffset=[stride,0];}
offsetInd=this._vf.texCoord.lastIndexOf('#');strideInd=this._vf.texCoord.lastIndexOf('+');if(offsetInd>=0&&strideInd>=0){offset=+this._vf.texCoord.substring(++offsetInd,strideInd);stride=+this._vf.texCoord.substring(strideInd);parent._texCoordStrideOffset=[stride,offset];}
else if(strideInd>=0){stride=+this._vf.texCoord.substring(strideInd);parent._texCoordStrideOffset=[stride,0];}
offsetInd=this._vf.color.lastIndexOf('#');strideInd=this._vf.color.lastIndexOf('+');if(offsetInd>=0&&strideInd>=0){offset=+this._vf.color.substring(++offsetInd,strideInd);stride=+this._vf.color.substring(strideInd);parent._colorStrideOffset=[stride,offset];}
else if(strideInd>=0){stride=+this._vf.color.substring(strideInd);parent._colorStrideOffset=[stride,0];}
if(this._vf.indexType!="Uint16"&&!x3dom.caps.INDEX_UINT)
x3dom.debug.logWarning("Index type "+this._vf.indexType+" problematic");},doIntersect:function(line)
{var min=this.getMin();var max=this.getMax();var isect=line.intersect(min,max);if(isect&&line.enter<line.dist){line.dist=line.enter;line.hitObject=this;line.hitPoint=line.pos.add(line.dir.multiply(line.enter));return true;}
else{return false;}},getPrecisionMax:function(type)
{switch(this._vf[type])
{case"Int8":return 127.0;case"Uint8":return 255.0;case"Int16":return 32767.0;case"Uint16":return 65535.0;case"Int32":return 2147483647.0;case"Uint32":return 4294967295.0;case"Float32":case"Float64":default:return 1.0;}}}));x3dom.registerNodeType("PopGeometryLevel","Geometry3D",defineClass(x3dom.nodeTypes.X3DGeometricPropertyNode,function(ctx){x3dom.nodeTypes.PopGeometryLevel.superClass.call(this,ctx);this.addField_SFString(ctx,'src',"");this.addField_SFInt32(ctx,'numIndices',0);this.addField_SFInt32(ctx,'vertexDataBufferOffset',0);},{getSrc:function(){return this._vf.src;},getNumIndices:function(){return this._vf.numIndices;},getVertexDataBufferOffset:function(){return this._vf.vertexDataBufferOffset;}}));x3dom.registerNodeType("PopGeometry","Geometry3D",defineClass(x3dom.nodeTypes.X3DBinaryContainerGeometryNode,function(ctx){x3dom.nodeTypes.PopGeometry.superClass.call(this,ctx);this.addField_SFVec3f(ctx,'tightSize',1,1,1);this.addField_SFVec3f(ctx,'maxBBSize',1,1,1);this.addField_SFVec3f(ctx,'bbMinModF',0,0,0);this.addField_SFVec3f(ctx,'bbMaxModF',1,1,1);this.addField_SFVec3f(ctx,'bbMin',0,0,0);this.addField_SFVec3f(ctx,'bbShiftVec',0,0,0);if(this._vf.bbMinModF.x>this._vf.bbMaxModF.x)
this._vf.bbShiftVec.x=1.0;if(this._vf.bbMinModF.y>this._vf.bbMaxModF.y)
this._vf.bbShiftVec.y=1.0;if(this._vf.bbMinModF.z>this._vf.bbMaxModF.z)
this._vf.bbShiftVec.z=1.0;this.addField_MFNode('levels',x3dom.nodeTypes.PopGeometryLevel);this.addField_SFInt32(ctx,'attributeStride',0);this.addField_SFInt32(ctx,'positionOffset',0);this.addField_SFInt32(ctx,'normalOffset',0);this.addField_SFInt32(ctx,'texcoordOffset',0);this.addField_SFInt32(ctx,'colorOffset',0);this.addField_SFInt32(ctx,'numAnchorVertices',0);this.addField_SFInt32(ctx,'positionPrecision',2);this.addField_SFInt32(ctx,'normalPrecision',1);this.addField_SFInt32(ctx,'texcoordPrecision',2);this.addField_SFInt32(ctx,'colorPrecision',1);this.addField_SFInt32(ctx,'minPrecisionLevel',-1);this.addField_SFInt32(ctx,'maxPrecisionLevel',-1);this.addField_SFFloat(ctx,'precisionFactor',1.0);this.addField_SFString(ctx,'coordType',"Uint16");this.addField_SFString(ctx,'normalType',"Uint8");this.addField_SFString(ctx,'texCoordType',"Uint16");this.addField_SFString(ctx,'colorType',"Uint8");this.addField_SFInt32(ctx,'vertexBufferSize',0);this.addField_SFBool(ctx,'indexedRendering',true);this.addField_SFBool(ctx,'sphericalNormals',false);this.addField_MFInt32(ctx,'originalVertexCount',[0]);for(var i=0;i<this._vf.vertexCount.length;++i){this._vf.originalVertexCount[i]=this._vf.vertexCount[i];}
this._vf.maxBBSize=x3dom.fields.SFVec3f.copy(this._vf.size);this._vf.size=this._vf.tightSize;this._diameter=this._vf.size.length();this._bbMinBySize=[Math.floor(this._vf.bbMin.x/this._vf.maxBBSize.x),Math.floor(this._vf.bbMin.y/this._vf.maxBBSize.y),Math.floor(this._vf.bbMin.z/this._vf.maxBBSize.z)];this._volRadius=this._vf.size.length()/2;this._volLargestRadius=this._vf.maxBBSize.length()/2;this._mesh._numPosComponents=this._vf.sphericalNormals?4:3;this._mesh._numNormComponents=this._vf.sphericalNormals?2:3;this._mesh._numTexComponents=2;this._mesh._numColComponents=3;x3dom.nodeTypes.PopGeometry.numTotalVerts+=this.getVertexCount();x3dom.nodeTypes.PopGeometry.numTotalTris+=(this.hasIndex()?this.getTotalNumberOfIndices():this.getVertexCount())/3;},{forceUpdateCoverage:function(){return true;},getBBoxShiftVec:function(){return this._vf.bbShiftVec;},getBBoxSize:function(){return this._vf.size;},hasIndex:function(){return this._vf.indexedRendering;},getTotalNumberOfIndices:function(){if(this._vf.indexedRendering){var sum=0;for(var i=0;i<this._vf.originalVertexCount.length;++i){sum+=this._vf.originalVertexCount[i];}
return sum;}
else{return 0;}},getVertexCount:function(){var sum=0;for(var i=0;i<this._vf.originalVertexCount.length;++i){sum+=this._vf.originalVertexCount[i];}
return sum;},adaptVertexCount:function(numVerts){var verts=0;for(var i=0;i<this._vf.originalVertexCount.length;++i){if((this._vf.originalVertexCount[i]+verts)<=numVerts){this._vf.vertexCount[i]=this._vf.originalVertexCount[i];verts+=this._vf.originalVertexCount[i];}
else{this._vf.vertexCount[i]=numVerts-verts;break;}}},hasNormal:function(){return(this._vf.normalOffset!=0)&&!this._vf.sphericalNormals;},hasTexCoord:function(){return(this._vf.texcoordOffset!=0);},hasColor:function(){return(this._vf.colorOffset!=0);},getPositionPrecision:function(){return this._vf.positionPrecision;},getNormalPrecision:function(){return this._vf.normalPrecision;},getTexCoordPrecision:function(){return this._vf.texcoordPrecision;},getColorPrecision:function(){return this._vf.colorPrecision;},getAttributeStride:function(){return this._vf.attributeStride;},getPositionOffset:function(){return this._vf.positionOffset;},getNormalOffset:function(){return this._vf.normalOffset;},getTexCoordOffset:function(){return this._vf.texcoordOffset;},getColorOffset:function(){return this._vf.colorOffset;},getBufferTypeStringFromByteCount:function(bytes){switch(bytes)
{case 1:return"Uint8";case 2:return"Uint16";default:return 0;}},getDataURLs:function(){var urls=[];for(var i=0;i<this._cf.levels.nodes.length;++i){urls.push(this._cf.levels.nodes[i].getSrc());}
return urls;},getNumIndicesByLevel:function(lvl){return this._cf.levels.nodes[lvl].getNumIndices();},getNumLevels:function(lvl){return this._cf.levels.nodes.length;},getVertexDataBufferOffset:function(lvl){return this._cf.levels.nodes[lvl].getVertexDataBufferOffset();},getPrecisionMax:function(type){switch(this._vf[type])
{case"Uint8":return 255.0;case"Uint16":return 65535.0;default:return 1.0;}}}));x3dom.nodeTypes.PopGeometry.ErrorToleranceFactor=1;x3dom.nodeTypes.PopGeometry.PrecisionFactorOnMove=1;x3dom.nodeTypes.PopGeometry.numRenderedVerts=0;x3dom.nodeTypes.PopGeometry.numRenderedTris=0;x3dom.nodeTypes.PopGeometry.numTotalVerts=0;x3dom.nodeTypes.PopGeometry.numTotalTris=0;x3dom.nodeTypes.PopGeometry.powLUT=[32768,16384,8192,4096,2048,1024,512,256,128,64,32,16,8,4,2,1];x3dom.registerNodeType("ImageGeometry","Geometry3D",defineClass(x3dom.nodeTypes.X3DBinaryContainerGeometryNode,function(ctx){x3dom.nodeTypes.ImageGeometry.superClass.call(this,ctx);this.addField_SFVec2f(ctx,'implicitMeshSize',256,256);this.addField_SFInt32(ctx,'numColorComponents',3);this.addField_SFInt32(ctx,'numTexCoordComponents',2);this.addField_SFNode('index',x3dom.nodeTypes.X3DTextureNode);this.addField_MFNode('coord',x3dom.nodeTypes.X3DTextureNode);this.addField_SFNode('normal',x3dom.nodeTypes.X3DTextureNode);this.addField_SFNode('texCoord',x3dom.nodeTypes.X3DTextureNode);this.addField_SFNode('color',x3dom.nodeTypes.X3DTextureNode);this._mesh._numColComponents=this._vf.numColorComponents;this._mesh._numTexComponents=this._vf.numTexCoordComponents;if(this._vf.implicitMeshSize.y==0)
this._vf.implicitMeshSize.y=this._vf.implicitMeshSize.x;if(x3dom.caps.BACKEND=='webgl'&&x3dom.caps.MAX_VERTEX_TEXTURE_IMAGE_UNITS>0){var geoCacheID='ImageGeometry_'+this._vf.implicitMeshSize.x+'_'+this._vf.implicitMeshSize.y;if(this._vf.useGeoCache&&x3dom.geoCache[geoCacheID]!==undefined)
{this._mesh=x3dom.geoCache[geoCacheID];}
else
{for(var y=0;y<this._vf.implicitMeshSize.y;y++)
{for(var x=0;x<this._vf.implicitMeshSize.x;x++)
{this._mesh._positions[0].push(x/this._vf.implicitMeshSize.x,y/this._vf.implicitMeshSize.y,0);}}
this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;x3dom.geoCache[geoCacheID]=this._mesh;}}
this._vol=new x3dom.fields.BoxVolume();this._dirty={coord:true,normal:true,texCoord:true,color:true,index:true};},{setGeoDirty:function(){this._dirty.coord=true;this._dirty.normal=true;this._dirty.texCoords=true;this._dirty.color=true;this._dirty.index=true;},unsetGeoDirty:function(){this._dirty.coord=false;this._dirty.normal=false;this._dirty.texCoords=false;this._dirty.color=false;this._dirty.index=false;},nodeChanged:function()
{Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;node._dirty.normals=true;node._dirty.texcoords=true;node._dirty.colors=true;});this._vol.invalidate();},fieldChanged:function(fieldName)
{if(fieldName=="index"||fieldName=="coord"||fieldName=="normal"||fieldName=="texCoord"||fieldName=="color"){this._dirty[fieldName]=true;this._vol.invalidate();}
else if(fieldName=="implicitMeshSize"){this._vol.invalidate();}},getMin:function(){var vol=this._vol;if(!vol.isValid()){vol.setBoundsByCenterSize(this._vf.position,this._vf.size);}
return vol.min;},getMax:function(){var vol=this._vol;if(!vol.isValid()){vol.setBoundsByCenterSize(this._vf.position,this._vf.size);}
return vol.max;},getVolume:function(){var vol=this._vol;if(!vol.isValid()){vol.setBoundsByCenterSize(this._vf.position,this._vf.size);}
return vol;},numCoordinateTextures:function()
{return this._cf.coord.nodes.length;},getIndexTexture:function()
{if(this._cf.index.node){this._cf.index.node._type="IG_index";return this._cf.index.node;}else{return null;}},getIndexTextureURL:function()
{if(this._cf.index.node){return this._cf.index.node._vf.url;}else{return null;}},getCoordinateTexture:function(pos)
{if(this._cf.coord.nodes[pos]){this._cf.coord.nodes[pos]._type="IG_coords"+pos;return this._cf.coord.nodes[pos];}else{return null;}},getCoordinateTextureURL:function(pos)
{if(this._cf.coord.nodes[pos]){return this._cf.coord.nodes[pos]._vf.url;}else{return null;}},getCoordinateTextureURLs:function()
{var urls=[];for(var i=0;i<this._cf.coord.nodes.length;i++)
{urls.push(this._cf.coord.nodes[i]._vf.url);}
return urls;},getNormalTexture:function()
{if(this._cf.normal.node){this._cf.normal.node._type="IG_normals";return this._cf.normal.node;}else{return null;}},getNormalTextureURL:function()
{if(this._cf.normal.node){return this._cf.normal.node._vf.url;}else{return null;}},getTexCoordTexture:function()
{if(this._cf.texCoord.node){this._cf.texCoord.node._type="IG_texCoords";return this._cf.texCoord.node;}else{return null;}},getTexCoordTextureURL:function()
{if(this._cf.texCoord.node){return this._cf.texCoord.node._vf.url;}else{return null;}},getColorTexture:function()
{if(this._cf.color.node){this._cf.color.node._type="IG_colors";return this._cf.color.node;}else{return null;}},getColorTextureURL:function()
{if(this._cf.color.node){return this._cf.color.node._vf.url;}else{return null;}},getTextures:function()
{var textures=[];var index=this.getIndexTexture();if(index)textures.push(index);for(i=0;i<this.numCoordinateTextures();i++){var coord=this.getCoordinateTexture(i);if(coord)textures.push(coord);}
var normal=this.getNormalTexture();if(normal)textures.push(normal);var texCoord=this.getTexCoordTexture();if(texCoord)textures.push(texCoord);var color=this.getColorTexture();if(color)textures.push(color);return textures;}}));x3dom.registerNodeType("IndexedFaceSet","Geometry3D",defineClass(x3dom.nodeTypes.X3DComposedGeometryNode,function(ctx){x3dom.nodeTypes.IndexedFaceSet.superClass.call(this,ctx);this.addField_SFFloat(ctx,'creaseAngle',0);this.addField_SFBool(ctx,'convex',true);this.addField_MFInt32(ctx,'coordIndex',[]);this.addField_MFInt32(ctx,'normalIndex',[]);this.addField_MFInt32(ctx,'colorIndex',[]);this.addField_MFInt32(ctx,'texCoordIndex',[]);},{nodeChanged:function()
{var time0=new Date().getTime();this.handleAttribs();var indexes=this._vf.coordIndex;if(indexes.length&&indexes[indexes.length-1]!=-1)
{indexes.push(-1);}
var normalInd=this._vf.normalIndex;var texCoordInd=this._vf.texCoordIndex;var colorInd=this._vf.colorIndex;var hasNormal=false,hasNormalInd=false;var hasTexCoord=false,hasTexCoordInd=false;var hasColor=false,hasColorInd=false;var colPerVert=this._vf.colorPerVertex;var normPerVert=this._vf.normalPerVertex;if(normalInd.length>0)
{hasNormalInd=true;}
if(texCoordInd.length>0)
{hasTexCoordInd=true;}
if(colorInd.length>0)
{hasColorInd=true;}
var positions,normals,texCoords,colors;var coordNode=this._cf.coord.node;x3dom.debug.assert(coordNode);positions=coordNode.getPoints();var normalNode=this._cf.normal.node;if(normalNode)
{hasNormal=true;normals=normalNode._vf.vector;}
else{hasNormal=false;}
var texMode="",numTexComponents=2;var texCoordNode=this._cf.texCoord.node;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.MultiTextureCoordinate)){if(texCoordNode._cf.texCoord.nodes.length)
texCoordNode=texCoordNode._cf.texCoord.nodes[0];}
if(texCoordNode)
{if(texCoordNode._vf.point){hasTexCoord=true;texCoords=texCoordNode._vf.point;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.TextureCoordinate3D)){numTexComponents=3;}}
else if(texCoordNode._vf.mode){texMode=texCoordNode._vf.mode;}}
else{hasTexCoord=false;}
this._mesh._numTexComponents=numTexComponents;var numColComponents=3;var colorNode=this._cf.color.node;if(colorNode)
{hasColor=true;colors=colorNode._vf.color;if(x3dom.isa(colorNode,x3dom.nodeTypes.ColorRGBA)){numColComponents=4;}}
else{hasColor=false;}
this._mesh._numColComponents=numColComponents;this._mesh._indices[0]=[];this._mesh._positions[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];this._mesh._colors[0]=[];var i,j,t,cnt,faceCnt;var p0,p1,p2,n0,n1,n2,t0,t1,t2,c0,c1,c2;if((this._vf.creaseAngle<=x3dom.fields.Eps)||(positions.length>x3dom.Utils.maxIndexableCoords)||(hasNormal&&hasNormalInd)||(hasTexCoord&&hasTexCoordInd)||(hasColor&&hasColorInd))
{if(this._vf.creaseAngle<=x3dom.fields.Eps)
x3dom.debug.logWarning('Fallback to inefficient multi-index mode since creaseAngle=0.');if(this._vf.convex){t=0;cnt=0;faceCnt=0;this._mesh._multiIndIndices=[];this._mesh._posSize=positions.length;for(i=0;i<indexes.length;++i)
{if(indexes[i]==-1){t=0;faceCnt++;continue;}
if(hasNormalInd){x3dom.debug.assert(normalInd[i]!=-1);}
if(hasTexCoordInd){x3dom.debug.assert(texCoordInd[i]!=-1);}
if(hasColorInd){x3dom.debug.assert(colorInd[i]!=-1);}
switch(t)
{case 0:p0=+indexes[i];if(hasNormalInd&&normPerVert){n0=+normalInd[i];}
else if(hasNormalInd&&!normPerVert){n0=+normalInd[faceCnt];}
else if(normPerVert){n0=p0;}
else{n0=faceCnt;}
if(hasTexCoordInd){t0=+texCoordInd[i];}
else{t0=p0;}
if(hasColorInd&&colPerVert){c0=+colorInd[i];}
else if(hasColorInd&&!colPerVert){c0=+colorInd[faceCnt];}
else if(colPerVert){c0=p0;}
else{c0=faceCnt;}
t=1;break;case 1:p1=+indexes[i];if(hasNormalInd&&normPerVert){n1=+normalInd[i];}
else if(hasNormalInd&&!normPerVert){n1=+normalInd[faceCnt];}
else if(normPerVert){n1=p1;}
else{n1=faceCnt;}
if(hasTexCoordInd){t1=+texCoordInd[i];}
else{t1=p1;}
if(hasColorInd&&colPerVert){c1=+colorInd[i];}
else if(hasColorInd&&!colPerVert){c1=+colorInd[faceCnt];}
else if(colPerVert){c1=p1;}
else{c1=faceCnt;}
t=2;break;case 2:p2=+indexes[i];if(hasNormalInd&&normPerVert){n2=+normalInd[i];}
else if(hasNormalInd&&!normPerVert){n2=+normalInd[faceCnt];}
else if(normPerVert){n2=p2;}
else{n2=faceCnt;}
if(hasTexCoordInd){t2=+texCoordInd[i];}
else{t2=p2;}
if(hasColorInd&&colPerVert){c2=+colorInd[i];}
else if(hasColorInd&&!colPerVert){c2=+colorInd[faceCnt];}
else if(colPerVert){c2=p2;}
else{c2=faceCnt;}
t=3;this._mesh._positions[0].push(positions[p0].x);this._mesh._positions[0].push(positions[p0].y);this._mesh._positions[0].push(positions[p0].z);this._mesh._positions[0].push(positions[p1].x);this._mesh._positions[0].push(positions[p1].y);this._mesh._positions[0].push(positions[p1].z);this._mesh._positions[0].push(positions[p2].x);this._mesh._positions[0].push(positions[p2].y);this._mesh._positions[0].push(positions[p2].z);if(hasNormal){this._mesh._normals[0].push(normals[n0].x);this._mesh._normals[0].push(normals[n0].y);this._mesh._normals[0].push(normals[n0].z);this._mesh._normals[0].push(normals[n1].x);this._mesh._normals[0].push(normals[n1].y);this._mesh._normals[0].push(normals[n1].z);this._mesh._normals[0].push(normals[n2].x);this._mesh._normals[0].push(normals[n2].y);this._mesh._normals[0].push(normals[n2].z);}
this._mesh._multiIndIndices.push(p0,p1,p2);if(hasColor){this._mesh._colors[0].push(colors[c0].r);this._mesh._colors[0].push(colors[c0].g);this._mesh._colors[0].push(colors[c0].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c0].a);}
this._mesh._colors[0].push(colors[c1].r);this._mesh._colors[0].push(colors[c1].g);this._mesh._colors[0].push(colors[c1].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c1].a);}
this._mesh._colors[0].push(colors[c2].r);this._mesh._colors[0].push(colors[c2].g);this._mesh._colors[0].push(colors[c2].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c2].a);}}
if(hasTexCoord){this._mesh._texCoords[0].push(texCoords[t0].x);this._mesh._texCoords[0].push(texCoords[t0].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t0].z);}
this._mesh._texCoords[0].push(texCoords[t1].x);this._mesh._texCoords[0].push(texCoords[t1].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t1].z);}
this._mesh._texCoords[0].push(texCoords[t2].x);this._mesh._texCoords[0].push(texCoords[t2].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t2].z);}}
break;case 3:p1=p2;t1=t2;if(normPerVert){n1=n2;}
if(colPerVert){c1=c2;}
p2=+indexes[i];if(hasNormalInd&&normPerVert){n2=+normalInd[i];}else if(hasNormalInd&&!normPerVert){}else if(normPerVert){n2=p2;}else{n2=faceCnt;}
if(hasTexCoordInd){t2=+texCoordInd[i];}else{t2=p2;}
if(hasColorInd&&colPerVert){c2=+colorInd[i];}else if(hasColorInd&&!colPerVert){}else if(colPerVert){c2=p2;}else{c2=faceCnt;}
this._mesh._positions[0].push(positions[p0].x);this._mesh._positions[0].push(positions[p0].y);this._mesh._positions[0].push(positions[p0].z);this._mesh._positions[0].push(positions[p1].x);this._mesh._positions[0].push(positions[p1].y);this._mesh._positions[0].push(positions[p1].z);this._mesh._positions[0].push(positions[p2].x);this._mesh._positions[0].push(positions[p2].y);this._mesh._positions[0].push(positions[p2].z);if(hasNormal){this._mesh._normals[0].push(normals[n0].x);this._mesh._normals[0].push(normals[n0].y);this._mesh._normals[0].push(normals[n0].z);this._mesh._normals[0].push(normals[n1].x);this._mesh._normals[0].push(normals[n1].y);this._mesh._normals[0].push(normals[n1].z);this._mesh._normals[0].push(normals[n2].x);this._mesh._normals[0].push(normals[n2].y);this._mesh._normals[0].push(normals[n2].z);}
this._mesh._multiIndIndices.push(p0,p1,p2);if(hasColor){this._mesh._colors[0].push(colors[c0].r);this._mesh._colors[0].push(colors[c0].g);this._mesh._colors[0].push(colors[c0].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c0].a);}
this._mesh._colors[0].push(colors[c1].r);this._mesh._colors[0].push(colors[c1].g);this._mesh._colors[0].push(colors[c1].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c1].a);}
this._mesh._colors[0].push(colors[c2].r);this._mesh._colors[0].push(colors[c2].g);this._mesh._colors[0].push(colors[c2].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c2].a);}}
if(hasTexCoord){this._mesh._texCoords[0].push(texCoords[t0].x);this._mesh._texCoords[0].push(texCoords[t0].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t0].z);}
this._mesh._texCoords[0].push(texCoords[t1].x);this._mesh._texCoords[0].push(texCoords[t1].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t1].z);}
this._mesh._texCoords[0].push(texCoords[t2].x);this._mesh._texCoords[0].push(texCoords[t2].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t2].z);}}
break;default:}}}
else{var linklist=new x3dom.DoublyLinkedList();var data={};cnt=0;faceCnt=0;for(i=0;i<indexes.length;++i)
{if(indexes[i]==-1){var multi_index_data=x3dom.EarClipping.getMultiIndexes(linklist);for(j=0;j<multi_index_data.indices.length;j++)
{this._mesh._indices[0].push(cnt);cnt++;this._mesh._positions[0].push(multi_index_data.point[j].x,multi_index_data.point[j].y,multi_index_data.point[j].z);if(hasNormal){this._mesh._normals[0].push(multi_index_data.normals[j].x,multi_index_data.normals[j].y,multi_index_data.normals[j].z);}
if(hasColor){this._mesh._colors[0].push(multi_index_data.colors[j].r,multi_index_data.colors[j].g,multi_index_data.colors[j].b);if(numColComponents===4){this._mesh._colors[0].push(multi_index_data.colors[j].a);}}
if(hasTexCoord){this._mesh._texCoords[0].push(multi_index_data.texCoords[j].x,multi_index_data.texCoords[j].y);if(numTexComponents===3){this._mesh._texCoords[0].push(multi_index_data.texCoords[j].z);}}}
linklist=new x3dom.DoublyLinkedList();faceCnt++;continue;}
if(hasNormal){if(hasNormalInd&&normPerVert){data.normals=normals[normalInd[i]];}else if(hasNormalInd&&!normPerVert){data.normals=normals[normalInd[faceCnt]];}else{data.normals=normals[indexes[i]];}}
if(hasColor){if(hasColorInd&&colPerVert){data.colors=colors[colorInd[i]];}else if(hasColorInd&&!colPerVert){data.colors=colors[colorInd[faceCnt]];}else if(colPerVert){data.colors=colors[indexes[i]];}else{data.colors=colors[faceCnt];}}
if(hasTexCoord){if(hasTexCoordInd){data.texCoords=texCoords[texCoordInd[i]];}else{data.texCoords=texCoords[indexes[i]];}}
linklist.appendNode(new x3dom.DoublyLinkedList.ListNode(positions[indexes[i]],indexes[i],data.normals,data.colors,data.texCoords));}
this._mesh.splitMesh();}
if(!hasNormal){this._mesh.calcNormals(this._vf.creaseAngle,this._vf.ccw);}
if(!hasTexCoord){this._mesh.calcTexCoords(texMode);}}
else
{t=0;if(this._vf.convex){for(i=0;i<indexes.length;++i)
{if(indexes[i]==-1){t=0;continue;}
switch(t){case 0:n0=+indexes[i];t=1;break;case 1:n1=+indexes[i];t=2;break;case 2:n2=+indexes[i];t=3;this._mesh._indices[0].push(n0,n1,n2);break;case 3:n1=n2;n2=+indexes[i];this._mesh._indices[0].push(n0,n1,n2);break;}}}
else{linklist=new x3dom.DoublyLinkedList();for(i=0;i<indexes.length;++i)
{if(indexes[i]==-1){var linklist_indices=x3dom.EarClipping.getIndexes(linklist);for(j=0;j<linklist_indices.length;j++){this._mesh._indices[0].push(linklist_indices[j]);}
linklist=new x3dom.DoublyLinkedList();continue;}
linklist.appendNode(new x3dom.DoublyLinkedList.ListNode(positions[indexes[i]],indexes[i]));}}
this._mesh._positions[0]=positions.toGL();if(hasNormal){this._mesh._normals[0]=normals.toGL();}
else{this._mesh.calcNormals(this._vf.creaseAngle,this._vf.ccw);}
if(hasTexCoord){this._mesh._texCoords[0]=texCoords.toGL();this._mesh._numTexComponents=numTexComponents;}
else{this._mesh.calcTexCoords(texMode);}
if(hasColor){this._mesh._colors[0]=colors.toGL();this._mesh._numColComponents=numColComponents;}}
this.invalidateVolume();this._mesh._numFaces=0;this._mesh._numCoords=0;for(i=0;i<this._mesh._positions.length;i++){var indexLength=this._mesh._indices[i].length;var numCoords=this._mesh._positions[i].length/3;this._mesh._numCoords+=numCoords;if(indexLength>0)
this._mesh._numFaces+=indexLength/3;else
this._mesh._numFaces+=numCoords/3;}},fieldChanged:function(fieldName)
{if(fieldName!="coord"&&fieldName!="normal"&&fieldName!="texCoord"&&fieldName!="color"&&fieldName!="coordIndex")
{x3dom.debug.logWarning("IndexedFaceSet: fieldChanged for "+
fieldName+" not yet implemented!");return;}
var pnts=this._cf.coord.node._vf.point;var n=pnts.length;var texCoordNode=this._cf.texCoord.node;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.MultiTextureCoordinate)){if(texCoordNode._cf.texCoord.nodes.length)
texCoordNode=texCoordNode._cf.texCoord.nodes[0];}
if(((this._vf.creaseAngle<=x3dom.fields.Eps)||(n>x3dom.Utils.maxIndexableCoords)||(this._vf.normalIndex.length>0&&this._cf.normal.node)||(this._vf.texCoordIndex.length>0&&texCoordNode)||(this._vf.colorIndex.length>0&&this._cf.color.node))&&this._mesh._multiIndIndices)
{var needNormals=!this._cf.normal.node&&this._vf.normalUpdateMode.toLowerCase()!='none';n=this._mesh._multiIndIndices.length;this._mesh._positions[0]=[];this._mesh._indices[0]=[];if(fieldName=="coord"&&n)
{if(needNormals){this._mesh._normals[0]=[];}
for(i=0;i<n;i+=3){var ind0=this._mesh._multiIndIndices[i];var ind1=this._mesh._multiIndIndices[i+1];var ind2=this._mesh._multiIndIndices[i+2];var pos0=pnts[ind0];var pos1=pnts[ind1];var pos2=pnts[ind2];this._mesh._positions[0].push(pos0.x,pos0.y,pos0.z);this._mesh._positions[0].push(pos1.x,pos1.y,pos1.z);this._mesh._positions[0].push(pos2.x,pos2.y,pos2.z);if(needNormals){var a=pos0.subtract(pos1);var b=pos1.subtract(pos2);var norm=a.cross(b).normalize();if(!this._vf.ccw)
norm=norm.negate();this._mesh._normals[0].push(norm.x,norm.y,norm.z);this._mesh._normals[0].push(norm.x,norm.y,norm.z);this._mesh._normals[0].push(norm.x,norm.y,norm.z);}}
this.invalidateVolume();Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;if(needNormals)
node._dirty.normals=true;});return;}
this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];this._mesh._colors[0]=[];var indexes=this._vf.coordIndex;var normalInd=this._vf.normalIndex;var texCoordInd=this._vf.texCoordIndex;var colorInd=this._vf.colorIndex;var hasNormal=false,hasNormalInd=false;var hasTexCoord=false,hasTexCoordInd=false;var hasColor=false,hasColorInd=false;var colPerVert=this._vf.colorPerVertex;var normPerVert=this._vf.normalPerVertex;if(normalInd.length>0)
{hasNormalInd=true;}
if(texCoordInd.length>0)
{hasTexCoordInd=true;}
if(colorInd.length>0)
{hasColorInd=true;}
var positions,normals,texCoords,colors;var coordNode=this._cf.coord.node;x3dom.debug.assert(coordNode);positions=coordNode.getPoints();var normalNode=this._cf.normal.node;if(normalNode)
{hasNormal=true;normals=normalNode._vf.vector;}
else{hasNormal=false;}
var texMode="",numTexComponents=2;texCoordNode=this._cf.texCoord.node;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.MultiTextureCoordinate)){if(texCoordNode._cf.texCoord.nodes.length)
texCoordNode=texCoordNode._cf.texCoord.nodes[0];}
if(texCoordNode)
{if(texCoordNode._vf.point){hasTexCoord=true;texCoords=texCoordNode._vf.point;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.TextureCoordinate3D)){numTexComponents=3;}}
else if(texCoordNode._vf.mode){texMode=texCoordNode._vf.mode;}}
else{hasTexCoord=false;}
this._mesh._numTexComponents=numTexComponents;var numColComponents=3;var colorNode=this._cf.color.node;if(colorNode)
{hasColor=true;colors=colorNode._vf.color;if(x3dom.isa(colorNode,x3dom.nodeTypes.ColorRGBA)){numColComponents=4;}}
else{hasColor=false;}
this._mesh._numColComponents=numColComponents;var i,j,t,cnt,faceCnt;var p0,p1,p2,n0,n1,n2,t0,t1,t2,c0,c1,c2;if(this._vf.convex){t=0;cnt=0;faceCnt=0;this._mesh._multiIndIndices=[];this._mesh._posSize=positions.length;for(i=0;i<indexes.length;++i)
{if(indexes[i]==-1){t=0;faceCnt++;continue;}
if(hasNormalInd){x3dom.debug.assert(normalInd[i]!=-1);}
if(hasTexCoordInd){x3dom.debug.assert(texCoordInd[i]!=-1);}
if(hasColorInd){x3dom.debug.assert(colorInd[i]!=-1);}
switch(t)
{case 0:p0=+indexes[i];if(hasNormalInd&&normPerVert){n0=+normalInd[i];}
else if(hasNormalInd&&!normPerVert){n0=+normalInd[faceCnt];}
else if(normPerVert){n0=p0;}
else{n0=faceCnt;}
if(hasTexCoordInd){t0=+texCoordInd[i];}
else{t0=p0;}
if(hasColorInd&&colPerVert){c0=+colorInd[i];}
else if(hasColorInd&&!colPerVert){c0=+colorInd[faceCnt];}
else if(colPerVert){c0=p0;}
else{c0=faceCnt;}
t=1;break;case 1:p1=+indexes[i];if(hasNormalInd&&normPerVert){n1=+normalInd[i];}
else if(hasNormalInd&&!normPerVert){n1=+normalInd[faceCnt];}
else if(normPerVert){n1=p1;}
else{n1=faceCnt;}
if(hasTexCoordInd){t1=+texCoordInd[i];}
else{t1=p1;}
if(hasColorInd&&colPerVert){c1=+colorInd[i];}
else if(hasColorInd&&!colPerVert){c1=+colorInd[faceCnt];}
else if(colPerVert){c1=p1;}
else{c1=faceCnt;}
t=2;break;case 2:p2=+indexes[i];if(hasNormalInd&&normPerVert){n2=+normalInd[i];}
else if(hasNormalInd&&!normPerVert){n2=+normalInd[faceCnt];}
else if(normPerVert){n2=p2;}
else{n2=faceCnt;}
if(hasTexCoordInd){t2=+texCoordInd[i];}
else{t2=p2;}
if(hasColorInd&&colPerVert){c2=+colorInd[i];}
else if(hasColorInd&&!colPerVert){c2=+colorInd[faceCnt];}
else if(colPerVert){c2=p2;}
else{c2=faceCnt;}
t=3;this._mesh._positions[0].push(positions[p0].x);this._mesh._positions[0].push(positions[p0].y);this._mesh._positions[0].push(positions[p0].z);this._mesh._positions[0].push(positions[p1].x);this._mesh._positions[0].push(positions[p1].y);this._mesh._positions[0].push(positions[p1].z);this._mesh._positions[0].push(positions[p2].x);this._mesh._positions[0].push(positions[p2].y);this._mesh._positions[0].push(positions[p2].z);if(hasNormal){this._mesh._normals[0].push(normals[n0].x);this._mesh._normals[0].push(normals[n0].y);this._mesh._normals[0].push(normals[n0].z);this._mesh._normals[0].push(normals[n1].x);this._mesh._normals[0].push(normals[n1].y);this._mesh._normals[0].push(normals[n1].z);this._mesh._normals[0].push(normals[n2].x);this._mesh._normals[0].push(normals[n2].y);this._mesh._normals[0].push(normals[n2].z);}
this._mesh._multiIndIndices.push(p0,p1,p2);if(hasColor){this._mesh._colors[0].push(colors[c0].r);this._mesh._colors[0].push(colors[c0].g);this._mesh._colors[0].push(colors[c0].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c0].a);}
this._mesh._colors[0].push(colors[c1].r);this._mesh._colors[0].push(colors[c1].g);this._mesh._colors[0].push(colors[c1].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c1].a);}
this._mesh._colors[0].push(colors[c2].r);this._mesh._colors[0].push(colors[c2].g);this._mesh._colors[0].push(colors[c2].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c2].a);}}
if(hasTexCoord){this._mesh._texCoords[0].push(texCoords[t0].x);this._mesh._texCoords[0].push(texCoords[t0].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t0].z);}
this._mesh._texCoords[0].push(texCoords[t1].x);this._mesh._texCoords[0].push(texCoords[t1].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t1].z);}
this._mesh._texCoords[0].push(texCoords[t2].x);this._mesh._texCoords[0].push(texCoords[t2].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t2].z);}}
break;case 3:p1=p2;t1=t2;if(normPerVert){n1=n2;}
if(colPerVert){c1=c2;}
p2=+indexes[i];if(hasNormalInd&&normPerVert){n2=+normalInd[i];}else if(hasNormalInd&&!normPerVert){}else if(normPerVert){n2=p2;}else{n2=faceCnt;}
if(hasTexCoordInd){t2=+texCoordInd[i];}else{t2=p2;}
if(hasColorInd&&colPerVert){c2=+colorInd[i];}else if(hasColorInd&&!colPerVert){}else if(colPerVert){c2=p2;}else{c2=faceCnt;}
this._mesh._positions[0].push(positions[p0].x);this._mesh._positions[0].push(positions[p0].y);this._mesh._positions[0].push(positions[p0].z);this._mesh._positions[0].push(positions[p1].x);this._mesh._positions[0].push(positions[p1].y);this._mesh._positions[0].push(positions[p1].z);this._mesh._positions[0].push(positions[p2].x);this._mesh._positions[0].push(positions[p2].y);this._mesh._positions[0].push(positions[p2].z);if(hasNormal){this._mesh._normals[0].push(normals[n0].x);this._mesh._normals[0].push(normals[n0].y);this._mesh._normals[0].push(normals[n0].z);this._mesh._normals[0].push(normals[n1].x);this._mesh._normals[0].push(normals[n1].y);this._mesh._normals[0].push(normals[n1].z);this._mesh._normals[0].push(normals[n2].x);this._mesh._normals[0].push(normals[n2].y);this._mesh._normals[0].push(normals[n2].z);}
this._mesh._multiIndIndices.push(p0,p1,p2);if(hasColor){this._mesh._colors[0].push(colors[c0].r);this._mesh._colors[0].push(colors[c0].g);this._mesh._colors[0].push(colors[c0].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c0].a);}
this._mesh._colors[0].push(colors[c1].r);this._mesh._colors[0].push(colors[c1].g);this._mesh._colors[0].push(colors[c1].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c1].a);}
this._mesh._colors[0].push(colors[c2].r);this._mesh._colors[0].push(colors[c2].g);this._mesh._colors[0].push(colors[c2].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c2].a);}}
if(hasTexCoord){this._mesh._texCoords[0].push(texCoords[t0].x);this._mesh._texCoords[0].push(texCoords[t0].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t0].z);}
this._mesh._texCoords[0].push(texCoords[t1].x);this._mesh._texCoords[0].push(texCoords[t1].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t1].z);}
this._mesh._texCoords[0].push(texCoords[t2].x);this._mesh._texCoords[0].push(texCoords[t2].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[t2].z);}}
break;default:}}}
else{var linklist=new x3dom.DoublyLinkedList();var data={};cnt=0;faceCnt=0;for(i=0;i<indexes.length;++i)
{if(indexes[i]==-1){var multi_index_data=x3dom.EarClipping.getMultiIndexes(linklist);for(j=0;j<multi_index_data.indices.length;j++)
{this._mesh._indices[0].push(cnt);cnt++;this._mesh._positions[0].push(multi_index_data.point[j].x,multi_index_data.point[j].y,multi_index_data.point[j].z);if(hasNormal){this._mesh._normals[0].push(multi_index_data.normals[j].x,multi_index_data.normals[j].y,multi_index_data.normals[j].z);}
if(hasColor){this._mesh._colors[0].push(multi_index_data.colors[j].r,multi_index_data.colors[j].g,multi_index_data.colors[j].b);if(numColComponents===4){this._mesh._colors[0].push(multi_index_data.colors[j].a);}}
if(hasTexCoord){this._mesh._texCoords[0].push(multi_index_data.texCoords[j].x,multi_index_data.texCoords[j].y);if(numTexComponents===3){this._mesh._texCoords[0].push(multi_index_data.texCoords[j].z);}}}
linklist=new x3dom.DoublyLinkedList();faceCnt++;continue;}
if(hasNormal){if(hasNormalInd&&normPerVert){data.normals=normals[normalInd[i]];}else if(hasNormalInd&&!normPerVert){data.normals=normals[normalInd[faceCnt]];}else{data.normals=normals[indexes[i]];}}
if(hasColor){if(hasColorInd&&colPerVert){data.colors=colors[colorInd[i]];}else if(hasColorInd&&!colPerVert){data.colors=colors[colorInd[faceCnt]];}else{data.colors=colors[indexes[i]];}}
if(hasTexCoord){if(hasTexCoordInd){data.texCoords=texCoords[texCoordInd[i]];}else{data.texCoords=texCoords[indexes[i]];}}
linklist.appendNode(new x3dom.DoublyLinkedList.ListNode(positions[indexes[i]],indexes[i],data.normals,data.colors,data.texCoords));}
this._mesh.splitMesh();}
if(!hasNormal){this._mesh.calcNormals(this._vf.creaseAngle,this._vf.ccw);}
if(!hasTexCoord){this._mesh.calcTexCoords(texMode);}
this.invalidateVolume();this._mesh._numFaces=0;this._mesh._numCoords=0;for(i=0;i<this._mesh._positions.length;i++){var indexLength=this._mesh._indices[i].length;var numCoords=this._mesh._positions[i].length/3;this._mesh._numCoords+=numCoords;if(indexLength>0)
this._mesh._numFaces+=indexLength/3;else
this._mesh._numFaces+=numCoords/3;}
Array.forEach(this._parentNodes,function(node){node.setGeoDirty();});}
else{if(fieldName=="coord")
{var needNormals=!this._cf.normal.node&&this._vf.normalUpdateMode.toLowerCase()!='none';this._mesh._positions[0]=pnts.toGL();if(needNormals){this._mesh.calcNormals(this._vf.creaseAngle,this._vf.ccw);}
this.invalidateVolume();Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;if(needNormals)
node._dirty.normals=true;node.invalidateVolume();});}
else if(fieldName=="color")
{pnts=this._cf.color.node._vf.color;this._mesh._colors[0]=pnts.toGL();Array.forEach(this._parentNodes,function(node){node._dirty.colors=true;});}
else if(fieldName=="normal")
{pnts=this._cf.normal.node._vf.vector;this._mesh._normals[0]=pnts.toGL();Array.forEach(this._parentNodes,function(node){node._dirty.normals=true;});}
else if(fieldName=="texCoord")
{texCoordNode=this._cf.texCoord.node;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.MultiTextureCoordinate)){if(texCoordNode._cf.texCoord.nodes.length)
texCoordNode=texCoordNode._cf.texCoord.nodes[0];}
pnts=texCoordNode._vf.point;this._mesh._texCoords[0]=pnts.toGL();Array.forEach(this._parentNodes,function(node){node._dirty.texcoords=true;});}
else if(fieldName=="coordIndex")
{needNormals=!this._cf.normal.node&&this._vf.normalUpdateMode.toLowerCase()!='none';indexes=this._vf.coordIndex;t=0;n=indexes.length;this._mesh._indices[0]=[];for(i=0;i<n;++i){if(indexes[i]==-1){t=0;}
else{switch(t){case 0:p0=+indexes[i];t=1;break;case 1:p1=+indexes[i];t=2;break;case 2:p2=+indexes[i];t=3;this._mesh._indices[0].push(p0,p1,p2);break;case 3:p1=p2;p2=+indexes[i];this._mesh._indices[0].push(p0,p1,p2);break;}}}
if(needNormals){this._mesh.calcNormals(this._vf.creaseAngle,this._vf.ccw);}
Array.forEach(this._parentNodes,function(node){node._dirty.indexes=true;if(needNormals)
node._dirty.normals=true;});}}}}));x3dom.registerNodeType("X3DTexture3DNode","Texturing3D",defineClass(x3dom.nodeTypes.X3DTextureNode,function(ctx){x3dom.nodeTypes.X3DTexture3DNode.superClass.call(this,ctx);}));x3dom.registerNodeType("ComposedTexture3D","Texturing3D",defineClass(x3dom.nodeTypes.X3DTexture3DNode,function(ctx){x3dom.nodeTypes.ComposedTexture3D.superClass.call(this,ctx);this.addField_MFNode('texture',x3dom.nodeTypes.X3DTexture3DNode);}));x3dom.registerNodeType("ImageTexture3D","Texturing3D",defineClass(x3dom.nodeTypes.X3DTexture3DNode,function(ctx){x3dom.nodeTypes.ImageTexture3D.superClass.call(this,ctx);}));x3dom.registerNodeType("PixelTexture3D","Texturing3D",defineClass(x3dom.nodeTypes.X3DTexture3DNode,function(ctx){x3dom.nodeTypes.PixelTexture3D.superClass.call(this,ctx);}));x3dom.registerNodeType("TextureCoordinate3D","Texturing3D",defineClass(x3dom.nodeTypes.X3DTextureCoordinateNode,function(ctx){x3dom.nodeTypes.TextureCoordinate3D.superClass.call(this,ctx);this.addField_MFVec3f(ctx,'point',[]);}));x3dom.registerNodeType("TextureTransform3D","Texturing3D",defineClass(x3dom.nodeTypes.X3DTextureTransformNode,function(ctx){x3dom.nodeTypes.TextureTransform3D.superClass.call(this,ctx);this.addField_SFVec3f(ctx,'center',0,0,0);this.addField_SFRotation(ctx,'rotation',0,0,1,0);this.addField_SFVec3f(ctx,'scale',1,1,1);this.addField_SFVec3f(ctx,'translation',0,0,0);this.addField_SFRotation(ctx,'scaleOrientation',0,0,1,0);}));x3dom.registerNodeType("TextureTransformMatrix3D","Texturing3D",defineClass(x3dom.nodeTypes.X3DTextureTransformNode,function(ctx){x3dom.nodeTypes.TextureTransformMatrix3D.superClass.call(this,ctx);this.addField_SFMatrix4f(ctx,'matrix',1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);}));x3dom.registerNodeType("X3DPointingDeviceSensorNode","PointingDeviceSensor",defineClass(x3dom.nodeTypes.X3DSensorNode,function(ctx)
{x3dom.nodeTypes.X3DPointingDeviceSensorNode.superClass.call(this,ctx);},{pointerPressedOverSibling:function(event)
{if(this._vf.enabled)
{this._vf.isActive=true;this.postMessage('isActive',true);}},pointerMoved:function(event)
{},pointerMovedOver:function(event)
{if(this._vf.enabled)
{this.postMessage('isOver',true);}},pointerMovedOut:function(event)
{if(this._vf.enabled)
{this.postMessage('isOver',false);}},pointerReleased:function()
{if(this._vf.enabled)
{this._vf.isActive=false;this.postMessage('isActive',false);}}}));x3dom.registerNodeType("X3DDragSensorNode","PointingDeviceSensor",defineClass(x3dom.nodeTypes.X3DPointingDeviceSensorNode,function(ctx)
{x3dom.nodeTypes.X3DDragSensorNode.superClass.call(this,ctx);this.addField_SFBool(ctx,'autoOffset',true);this._lastX=-1;this._lastY=-1;},{pointerPressedOverSibling:function(event)
{x3dom.nodeTypes.X3DPointingDeviceSensorNode.prototype.pointerPressedOverSibling.call(this,event);this._lastX=event.layerX;this._lastY=event.layerY;this._startDragging(event.viewarea,event.layerX,event.layerX,event.worldX,event.worldY,event.worldZ);},pointerMoved:function(event)
{x3dom.nodeTypes.X3DPointingDeviceSensorNode.prototype.pointerMoved.call(this,event);if(this._vf.isActive&&this._vf.enabled)
{this._process2DDrag(event.layerX,event.layerY,event.layerX-this._lastX,event.layerY-this._lastY);}},pointerReleased:function()
{x3dom.nodeTypes.X3DPointingDeviceSensorNode.prototype.pointerReleased.call(this);this._stopDragging();},_startDragging:function(viewarea,x,y,wx,wy,wz)
{},_process2DDrag:function(x,y,dx,dy)
{},_stopDragging:function()
{}}));x3dom.registerNodeType("X3DTouchSensorNode","PointingDeviceSensor",defineClass(x3dom.nodeTypes.X3DPointingDeviceSensorNode,function(ctx)
{x3dom.nodeTypes.X3DTouchSensorNode.superClass.call(this,ctx);},{}));x3dom.registerNodeType("TouchSensor","PointingDeviceSensor",defineClass(x3dom.nodeTypes.X3DTouchSensorNode,function(ctx)
{x3dom.nodeTypes.TouchSensor.superClass.call(this,ctx);},{}));x3dom.registerNodeType("PlaneSensor","PointingDeviceSensor",defineClass(x3dom.nodeTypes.X3DDragSensorNode,function(ctx)
{x3dom.nodeTypes.PlaneSensor.superClass.call(this,ctx);this.addField_SFRotation(ctx,'axisRotation',0,0,1,0);this.addField_SFVec2f(ctx,'minPosition',0,0);this.addField_SFVec2f(ctx,'maxPosition',-1,-1);this.addField_SFVec3f(ctx,'offset',0,0,0);this._rotationMatrix=this._vf.axisRotation.toMatrix();this._worldToLocalMatrix=null;this._initialPlaneIntersection=null;this._planeNormal=null;this._viewArea=null;this._currentTranslation=new x3dom.fields.SFVec3f(0.0,0.0,0.0);},{getCurrentTransform:function()
{var parentTransform=x3dom.nodeTypes.X3DDragSensorNode.prototype.getCurrentTransform.call(this);return parentTransform.mult(this._rotationMatrix);},_startDragging:function(viewarea,x,y,wx,wy,wz)
{x3dom.nodeTypes.X3DDragSensorNode.prototype._startDragging.call(this,viewarea,x,y,wx,wy,wz);this._viewArea=viewarea;this._currentTranslation=new x3dom.fields.SFVec3f(0.0,0.0,0.0).add(this._vf.offset);this._worldToLocalMatrix=this.getCurrentTransform().inverse();this._initialPlaneIntersection=this._worldToLocalMatrix.multMatrixPnt(new x3dom.fields.SFVec3f(wx,wy,wz));this._planeNormal=new x3dom.fields.SFVec3f(0.0,0.0,1.0);},_process2DDrag:function(x,y,dx,dy)
{x3dom.nodeTypes.X3DDragSensorNode.prototype._process2DDrag.call(this,x,y,dx,dy);var intersectionPoint;var minPos,maxPos;if(this._initialPlaneIntersection)
{var viewRay=this._viewArea.calcViewRay(x,y);viewRay.pos=this._worldToLocalMatrix.multMatrixPnt(viewRay.pos);viewRay.dir=this._worldToLocalMatrix.multMatrixVec(viewRay.dir.normalize());intersectionPoint=viewRay.intersectPlane(this._initialPlaneIntersection,this._planeNormal);if(!intersectionPoint)
{intersectionPoint=viewRay.intersectPlane(this._initialPlaneIntersection,this._planeNormal.negate());}
if(intersectionPoint)
{this._currentTranslation=intersectionPoint.subtract(this._initialPlaneIntersection);this._currentTranslation=this._currentTranslation.add(this._vf.offset);minPos=this._vf.minPosition;maxPos=this._vf.maxPosition;if(minPos.x<=maxPos.x)
{this._currentTranslation.x=Math.min(this._currentTranslation.x,maxPos.x);this._currentTranslation.x=Math.max(this._currentTranslation.x,minPos.x);}
if(minPos.y<=maxPos.y)
{this._currentTranslation.y=Math.min(this._currentTranslation.y,maxPos.y);this._currentTranslation.y=Math.max(this._currentTranslation.y,minPos.y);}
this.postMessage('translation_changed',x3dom.fields.SFVec3f.copy(this._currentTranslation));}}},_stopDragging:function()
{x3dom.nodeTypes.X3DDragSensorNode.prototype._stopDragging.call(this);if(this._vf.autoOffset)
{this._vf.offset=x3dom.fields.SFVec3f.copy(this._currentTranslation);this.postMessage('offset_changed',this._vf.offset);}}}));x3dom.registerNodeType("SphereSensor","PointingDeviceSensor",defineClass(x3dom.nodeTypes.X3DDragSensorNode,function(ctx)
{x3dom.nodeTypes.SphereSensor.superClass.call(this,ctx);this.addField_SFRotation(ctx,'offset',0,1,0,0);this._currentRotation=null;this._rotationMatrix=this._vf.offset.toMatrix();},{getCurrentTransform:function()
{var parentTransform=x3dom.nodeTypes.X3DDragSensorNode.prototype.getCurrentTransform.call(this);return parentTransform.mult(this._rotationMatrix);},_startDragging:function(viewarea,x,y,wx,wy,wz)
{x3dom.nodeTypes.X3DDragSensorNode.prototype._startDragging.call(this,viewarea,x,y,wx,wy,wz);this._currentRotation=new x3dom.fields.Quaternion();this._viewArea=viewarea;this._localOrigin=new x3dom.fields.SFVec3f(0.0,0.0,0.0);this._inverseToWorldMatrix=this.getCurrentTransform().inverse();var firstIntersection=this._inverseToWorldMatrix.multMatrixPnt(new x3dom.fields.SFVec3f(wx,wy,wz));this._initialSphereIntersectionVector=firstIntersection.subtract(this._localOrigin);this._sphereRadius=this._initialSphereIntersectionVector.length();this._initialSphereIntersectionVector=this._initialSphereIntersectionVector.normalize();},_process2DDrag:function(x,y,dx,dy)
{x3dom.nodeTypes.X3DDragSensorNode.prototype._process2DDrag.call(this,x,y,dx,dy);var viewRay=this._viewArea.calcViewRay(x,y);viewRay.pos=this._inverseToWorldMatrix.multMatrixPnt(viewRay.pos);viewRay.dir=this._inverseToWorldMatrix.multMatrixVec(viewRay.dir);var A=viewRay.dir.dot(viewRay.dir);var B=2.0*(viewRay.dir.dot(viewRay.pos.subtract(this._localOrigin)));var C=viewRay.pos.dot(viewRay.pos)-2.0*this._localOrigin.dot(viewRay.pos)+
this._localOrigin.dot(this._localOrigin)-this._sphereRadius*this._sphereRadius;var determinant=(B*B)-(4.0*A*C);var alpha_1;var alpha_2;if(determinant>=0.0){alpha_1=(-B+Math.sqrt(determinant))/(2.0*A);alpha_2=(-B-Math.sqrt(determinant))/(2.0*A);alpha_1=Math.min(alpha_1,alpha_2);if(alpha_1>=1.0){var hitPoint=viewRay.pos.add(viewRay.dir.multiply(alpha_1));var vecToHitPoint=hitPoint.subtract(this._localOrigin).normalize();this._currentRotation=x3dom.fields.Quaternion.rotateFromTo(this._initialSphereIntersectionVector,vecToHitPoint);this._currentRotation=this._currentRotation.multiply(this._vf.offset);this.postMessage('rotation_changed',this._currentRotation);}}
else{}},_stopDragging:function()
{x3dom.nodeTypes.X3DDragSensorNode.prototype._stopDragging.call(this);if(this._vf.autoOffset)
{this._vf.offset=this._currentRotation;this.postMessage('offset_changed',this._vf.offset);}
this._currentRotation=new x3dom.fields.Quaternion();}}));x3dom.registerNodeType("CylinderSensor","PointingDeviceSensor",defineClass(x3dom.nodeTypes.X3DDragSensorNode,function(ctx)
{x3dom.nodeTypes.CylinderSensor.superClass.call(this,ctx);this.addField_SFFloat(ctx,'offset',0);this.addField_SFRotation(ctx,'axisRotation',0,1,0,0);this.addField_SFFloat(ctx,'diskAngle',0.262);this.addField_SFFloat(ctx,'minAngle',0);this.addField_SFFloat(ctx,'maxAngle',-1);this._rotationMatrix=this._vf.axisRotation.toMatrix();this._inverseToWorldMatrix=null;this._initialCylinderIntersectionVector=null;this._viewArea=null;this._cylinderRadius=0.0;this._yAxisLine=null;this._cylinderMode=true;this._currentRotationAngle=0.0;},{getCurrentTransform:function()
{var parentTransform=x3dom.nodeTypes.X3DDragSensorNode.prototype.getCurrentTransform.call(this);return parentTransform.mult(this._rotationMatrix);},_startDragging:function(viewarea,x,y,wx,wy,wz)
{x3dom.nodeTypes.X3DDragSensorNode.prototype._startDragging.call(this,viewarea,x,y,wx,wy,wz);this._currentRotation=new x3dom.fields.Quaternion();this._viewArea=viewarea;this._yAxisLine=new x3dom.fields.Line(new x3dom.fields.SFVec3f(0.0,0.0,0.0),new x3dom.fields.SFVec3f(0.0,1.0,0.0));this._inverseToWorldMatrix=this.getCurrentTransform().inverse();var firstIntersection=this._inverseToWorldMatrix.multMatrixPnt(new x3dom.fields.SFVec3f(wx,wy,wz));var closestPointOnYAxis=this._yAxisLine.closestPoint(firstIntersection);this._initialCylinderIntersectionVector=firstIntersection.subtract(closestPointOnYAxis);this._cylinderRadius=this._initialCylinderIntersectionVector.length();this._initialCylinderIntersectionVector=this._initialCylinderIntersectionVector.normalize();},_process2DDrag:function(x,y,dx,dy)
{x3dom.nodeTypes.X3DDragSensorNode.prototype._process2DDrag.call(this,x,y,dx,dy);if(this._cylinderMode)
{var viewRay=this._viewArea.calcViewRay(x,y);viewRay.pos=this._inverseToWorldMatrix.multMatrixPnt(viewRay.pos);viewRay.dir=this._inverseToWorldMatrix.multMatrixVec(viewRay.dir);var A=viewRay.dir.subtract(this._yAxisLine.dir.multiply(viewRay.dir.dot(this._yAxisLine.dir)));var B=viewRay.pos.subtract(this._yAxisLine.pos).add(this._yAxisLine.dir.multiply(this._yAxisLine.dir.dot(this._yAxisLine.pos.subtract(viewRay.pos))));var p=2*A.dot(B)/A.dot(A);var q=(B.dot(B)-this._cylinderRadius*this._cylinderRadius)/A.dot(A);var sqrt_part=p*p*0.25-q;var alpha_1;var alpha_2;if(sqrt_part>=0)
{sqrt_part=Math.sqrt(sqrt_part);alpha_1=-p*0.5+sqrt_part;alpha_2=-p*0.5-sqrt_part;alpha_1=Math.min(alpha_1,alpha_2);if(alpha_1>0.0)
{var hitPoint=viewRay.pos.add(viewRay.dir.multiply(alpha_1));var closestPointOnYAxis=this._yAxisLine.closestPoint(hitPoint);var vecToHitPoint=hitPoint.subtract(closestPointOnYAxis).normalize();this._currentRotation=x3dom.fields.Quaternion.rotateFromTo(this._initialCylinderIntersectionVector,vecToHitPoint);var offsetQuat=x3dom.fields.Quaternion.axisAngle(this._yAxisLine.dir,this._vf.offset);this._currentRotation=this._currentRotation.multiply(offsetQuat);this.postMessage('rotation_changed',this._currentRotation);}}}
else
{}},_stopDragging:function()
{x3dom.nodeTypes.X3DDragSensorNode.prototype._stopDragging.call(this);if(this._vf.autoOffset)
{this._vf.offset=this._currentRotation.angle();this.postMessage('offset_changed',this._vf.offset);}}}));x3dom.registerNodeType("GeoCoordinate","Geospatial",defineClass(x3dom.nodeTypes.X3DCoordinateNode,function(ctx){x3dom.nodeTypes.GeoCoordinate.superClass.call(this,ctx);this.addField_MFVec3f(ctx,'point',[]);this.addField_MFString(ctx,'geoSystem',['GD','WE']);this.addField_SFNode('geoOrigin',x3dom.nodeTypes.GeoOrigin);},{elipsoideParameters:{'AA':['Airy 1830','6377563.396','299.3249646'],'AM':['Modified Airy','6377340.189','299.3249646'],'AN':['Australian National','6378160','298.25'],'BN':['Bessel 1841 (Namibia)','6377483.865','299.1528128'],'BR':['Bessel 1841 (Ethiopia Indonesia...)','6377397.155','299.1528128'],'CC':['Clarke 1866','6378206.4','294.9786982'],'CD':['Clarke 1880','6378249.145','293.465'],'EA':['Everest (India 1830)','6377276.345','300.8017'],'EB':['Everest (Sabah & Sarawak)','6377298.556','300.8017'],'EC':['Everest (India 1956)','6377301.243','300.8017'],'ED':['Everest (W. Malaysia 1969)','6377295.664','300.8017'],'EE':['Everest (W. Malaysia & Singapore 1948)','6377304.063','300.8017'],'EF':['Everest (Pakistan)','6377309.613','300.8017'],'FA':['Modified Fischer 1960','6378155','298.3'],'HE':['Helmert 1906','6378200','298.3'],'HO':['Hough 1960','6378270','297'],'ID':['Indonesian 1974','6378160','298.247'],'IN':['International 1924','6378388','297'],'KA':['Krassovsky 1940','6378245','298.3'],'RF':['Geodetic Reference System 1980 (GRS 80)','6378137','298.257222101'],'SA':['South American 1969','6378160','298.25'],'WD':['WGS 72','6378135','298.26'],'WE':['WGS 84','6378137','298.257223563']},fieldChanged:function(fieldName){if(fieldName=="point"||fieldName=="geoSystem"){Array.forEach(this._parentNodes,function(node){node.fieldChanged("coord");});}},isLogitudeFirst:function(geoSystem){for(var i=0;i<geoSystem.length;++i)
if(geoSystem[i]=='longitude_first')
return true;return false;},getElipsoideCode:function(geoSystem)
{for(var i=0;i<geoSystem.length;++i)
{var code=geoSystem[i];if(this.elipsoideParameters[code])
return code;}
return'WE';},getElipsoide:function(geoSystem)
{return this.elipsoideParameters[this.getElipsoideCode(geoSystem)];},getReferenceFrame:function(geoSystem)
{for(var i=0;i<geoSystem.length;++i)
{var code=geoSystem[i];if(code=='GD'||code=='GDC')
return'GD';if(code=='GC'||code=='GCC')
return'GC';if(code=='UTM')
return'UTM';else
x3dom.debug.logError('Unknown GEO system: ['+geoSystem+']');}
return'GD';},getUTMZone:function(geoSystem)
{for(var i=0;i<geoSystem.length;++i)
{var code=geoSystem[i];if(code[0]=='Z')
return code.substring(1);}
x3dom.debug.logError('no UTM zone but is required:'+geoSystem);},getUTMHemisphere:function(geoSystem)
{for(var i=0;i<geoSystem.length;++i)
{var code=geoSystem[i];if(code=='S')
return code;}
return'N';},isUTMEastingFirst:function(geoSystem)
{for(var i=0;i<geoSystem.length;++i)
{var code=geoSystem[i];if(code=='easting_first')
return true;}
return false;},UTMtoGC:function(geoSystem,coords)
{var utmzone=this.getUTMZone(geoSystem);if(utmzone<1||utmzone>60||utmzone===undefined)
return x3dom.debug.logError('invalid UTM zone: '+utmzone+' in geosystem '+geoSystem);var hemisphere=this.getUTMHemisphere(geoSystem);var eastingFirst=this.isUTMEastingFirst(geoSystem);var elipsoide=this.getElipsoide(geoSystem);var a=elipsoide[1];var f=1/elipsoide[2];var k0=0.9996;var b=a*(1-f);var esq=(1-(b/a)*(b/a));var e=Math.sqrt(esq);var e0=e/Math.sqrt(1-esq);var e0sq=esq/(1-esq);var zcm=3+6*(utmzone-1)-180;var e1=(1-Math.sqrt(1-esq))/(1+Math.sqrt(1-esq));var e1sq=e1*e1;var output=new x3dom.fields.MFVec3f();var rad2deg=180/Math.PI;var f3o64=3/64;var f5o256=5/256;var f27o32=27/32;var f21o16=21/16;var f55o32=55/32;var f151o96=151/96;var f1097o512=1097/512;var fmua=1-esq*(0.25+esq*(f3o64+f5o256*esq));var fphi11=e1*(1.5-f27o32*e1sq);var fphi12=e1sq*(f21o16-f55o32*e1sq);var current,x,y,z,M,mu,phi1,cosphi1,C1,tanphi1,T1,T1sq;var esinphi1,oneesinphi1,N1,R1,D,Dsq,C1sq,phi,lng;for(var i=0;i<coords.length;++i)
{x=(eastingFirst?coords[i].x:coords[i].y);y=(eastingFirst?coords[i].y:coords[i].x);z=coords[i].z;M=(hemisphere=="S"?(y-10000000):y)/k0;mu=M/(a*fmua);phi1=mu+fphi11*Math.sin(2*mu)+fphi12*Math.sin(4*mu);phi1=phi1+e1*(e1sq*(Math.sin(6*mu)*f151o96+Math.sin(8*mu)*f1097o512));cosphi1=Math.cos(phi1);C1=e0sq*cosphi1*cosphi1;tanphi1=Math.tan(phi1);T1=tanphi1*tanphi1;T1sq=T1*T1;esinphi1=e*Math.sin(phi1);oneesinphi1=1-esinphi1*esinphi1;N1=a/Math.sqrt(oneesinphi1);R1=N1*(1-esq)/oneesinphi1;D=(x-500000)/(N1*k0);Dsq=D*D;C1sq=C1*C1;phi=Dsq*(0.5-Dsq*(5+3*T1+10*C1-4*C1sq-9*e0sq)/24);phi=phi+Math.pow(D,6)*(61+90*T1+298*C1+45*T1sq-252*e0sq-3*C1sq)/720;phi=phi1-(N1*tanphi1/R1)*phi;lng=D*(1+Dsq*((-1-2*T1-C1)/6+Dsq*(5-2*C1+28*T1-3*C1sq+8*e0sq+24*T1sq)/120))/cosphi1;current=new x3dom.fields.SFVec3f();current.x=zcm+rad2deg*lng;current.y=rad2deg*phi;current.z=coords[i].z;output.push(current);}
var GDgeoSystem=new x3dom.fields.MFString();GDgeoSystem.push("GD");GDgeoSystem.push(this.getElipsoideCode(geoSystem));GDgeoSystem.push("longitude_first");return this.GDtoGC(GDgeoSystem,output);},GCtoUTM:function(geoSystem,coords){var coordsGD=this.GCtoGD(geoSystem,coords);var utmzone=this.getUTMZone(geoSystem);if(utmzone<1||utmzone>60||utmzone===undefined)
return x3dom.debug.logError('invalid UTM zone: '+utmzone+' in geosystem '+geoSystem);var hemisphere=this.getUTMHemisphere(geoSystem);var eastingFirst=this.isUTMEastingFirst(geoSystem);var elipsoide=this.getElipsoide(geoSystem);var a=elipsoide[1];var f=1/elipsoide[2];var k0=0.9996;var b=a*(1-f);var esq=(1-(b/a)*(b/a));var e=Math.sqrt(esq);var e0sq=esq/(1-esq);var M0=0;var deg2rad=Math.PI/180;var zcmrad=(3+6*(utmzone-1)-180)*deg2rad;var coordsUTM=new x3dom.fields.MFVec3f();var N,T,C,A,M,x,y,phi,lng,cosphi,tanphi,Asq;var i,current;var fMphi=1-esq*(1/4+esq*(3/64+5*esq/256));var fM2phi=esq*(3/8+esq*(3/32+45*esq/1024));var fM4phi=esq*esq*(15/256+esq*45/1024);var fM6phi=esq*esq*esq*(35/3072);for(i=0;i<coordsGD.length;++i){current=new x3dom.fields.SFVec3f();phi=coordsGD[i].y*deg2rad;lng=coordsGD[i].x*deg2rad;cosphi=Math.cos(phi);tanphi=Math.tan(phi);N=a/Math.sqrt(1-Math.pow(e*Math.sin(phi),2));T=Math.pow(tanphi,2);C=e0sq*Math.pow(cosphi,2);A=(lng-zcmrad)*cosphi;M=phi*fMphi;M=M-Math.sin(2*phi)*fM2phi;M=M+Math.sin(4*phi)*fM4phi;M=M-Math.sin(6*phi)*fM6phi;M=M*a;Asq=A*A;x=k0*N*A*(1+Asq*((1-T+C)/6+Asq*(5-T*(18+T)+72*C-58*e0sq)/120));x=x+500000;y=k0*(M-M0+N*tanphi*(Asq*(0.5+Asq*((5-T+9*C+4*C*C)/24+Asq*(61-T*(58+T)+600*C-330*e0sq)/720))));if(y<0){if(hemisphere=="N"){x3dom.debug.logError('UTM zone in northern hemisphere but coordinates in southern!');}
y=10000000+y;}
current.x=eastingFirst?x:y;current.y=eastingFirst?y:x;current.z=coordsGD[i].z;coordsUTM.push(current);}
return coordsUTM;},GDtoGC:function(geoSystem,coords){var output=new x3dom.fields.MFVec3f();var elipsoide=this.getElipsoide(geoSystem);var A=elipsoide[1];var eccentricity=elipsoide[2];var longitudeFirst=this.isLogitudeFirst(geoSystem);var A2=A*A;var F=1.0/eccentricity;var C=A*(1.0-F);var C2=C*C;var C2oA2=C2/A2;var Eps2=F*(2.0-F);var radiansPerDegree=0.0174532925199432957692;var i,current,source_lat,source_lon,slat,slat2,clat,Rn,RnPh;for(i=0;i<coords.length;++i)
{current=new x3dom.fields.SFVec3f();source_lat=radiansPerDegree*(longitudeFirst==true?coords[i].y:coords[i].x);source_lon=radiansPerDegree*(longitudeFirst==true?coords[i].x:coords[i].y);slat=Math.sin(source_lat);slat2=slat*slat;clat=Math.cos(source_lat);Rn=A/Math.sqrt(1.0-Eps2*slat2);RnPh=Rn+coords[i].z;current.x=RnPh*clat*Math.cos(source_lon);current.y=RnPh*clat*Math.sin(source_lon);current.z=(C2oA2*Rn+coords[i].z)*slat;output.push(current);}
return output;},GCtoGD:function(geoSystem,coords){var output=new x3dom.fields.MFVec3f();var rad2deg=180/Math.PI;var ellipsoide=this.getElipsoide(geoSystem);var a=ellipsoide[1];var f=1/ellipsoide[2];var b=a*(1-f);var esq=(1-(b/a)*(b/a));var eps=esq/(1-esq);var i,current,x,y,z,p,q,lat,nu,elev,lon;for(i=0;i<coords.length;++i){x=coords[i].x;y=coords[i].y;z=coords[i].z;p=Math.sqrt(x*x+y*y);q=Math.atan((z*a)/(p*b));lat=Math.atan((z+eps*b*Math.pow(Math.sin(q),3))/(p-esq*a*Math.pow(Math.cos(q),3)));nu=a/Math.sqrt(1-esq*Math.pow(Math.sin(lat),2));elev=p/Math.cos(lat)-nu;lon=Math.atan2(y,x);current=new x3dom.fields.SFVec3f();current.x=lon*rad2deg;current.y=lat*rad2deg;current.z=elev;output.push(current);}
return output;},GEOtoGC:function(geoSystem,geoOrigin,coords){var referenceFrame=this.getReferenceFrame(geoSystem);if(referenceFrame=='GD')
return this.GDtoGC(geoSystem,coords);else if(referenceFrame=='UTM')
return this.UTMtoGC(geoSystem,coords);else if(referenceFrame=='GC')
{if(geoOrigin.node)
{var copy=new x3dom.fields.MFVec3f();for(var i=0;i<coords.length;++i)
{var current=new x3dom.fields.SFVec3f();current.x=coords[i].x;current.y=coords[i].y;current.z=coords[i].z;copy.push(current);}
return copy;}
else
return coords;}
else{x3dom.debug.logError('Unknown geoSystem: '+geoSystem[0]);return new x3dom.fields.MFVec3f();}},GCtoGEO:function(geoSystem,geoOrigin,coords){var referenceFrame=this.getReferenceFrame(geoSystem);if(referenceFrame=='GD'){var coordsGD=this.GCtoGD(geoSystem,coords);if(!this.isLogitudeFirst(geoSystem)){var currentx;for(var i=0;i<coordsGD.length;++i){currentx=coordsGD[i].x;coordsGD[i].x=coordsGD[i].y;coordsGD[i].y=currentx;}}
return coordsGD;}
else if(referenceFrame=='UTM')
return this.GCtoUTM(geoSystem,coords);else if(referenceFrame=='GC')
{if(geoOrigin.node)
{var copy=new x3dom.fields.MFVec3f();for(var i=0;i<coords.length;++i)
{var current=new x3dom.fields.SFVec3f();current.x=coords[i].x;current.y=coords[i].y;current.z=coords[i].z;copy.push(current);}
return copy;}
else
return coords;}
else{x3dom.debug.logError('Unknown geoSystem: '+geoSystem[0]);return new x3dom.fields.MFVec3f();}},OriginToGC:function(geoOrigin)
{var geoCoords=geoOrigin.node._vf.geoCoords;var geoSystem=geoOrigin.node._vf.geoSystem;var point=new x3dom.fields.SFVec3f();point.x=geoCoords.x;point.y=geoCoords.y;point.z=geoCoords.z;var temp=new x3dom.fields.MFVec3f();temp.push(point);var origin=this.GEOtoGC(geoSystem,geoOrigin,temp);return origin[0];},GCtoX3D:function(geoSystem,geoOrigin,coords)
{var gc=coords;if(geoOrigin.node)
{var origin=this.OriginToGC(geoOrigin);var matrix=x3dom.fields.SFMatrix4f.translation(origin.negate());if(geoOrigin.node._vf.rotateYUp)
{var rotmat=x3dom.nodeTypes.GeoLocation.prototype.getGeoRotMat(geoSystem,origin).inverse();matrix=rotmat.mult(matrix);}
for(var i=0;i<coords.length;++i)
gc[i]=matrix.multMatrixPnt(coords[i]);}
return gc;},GEOtoX3D:function(geoSystem,geoOrigin,coords)
{var gc=this.GEOtoGC(geoSystem,geoOrigin,coords);return this.GCtoX3D(geoSystem,geoOrigin,gc);},getPoints:function()
{return this.GEOtoX3D(this._vf.geoSystem,this._cf.geoOrigin,this._vf.point);}}));x3dom.registerNodeType("GeoElevationGrid","Geospatial",defineClass(x3dom.nodeTypes.X3DGeometryNode,function(ctx){x3dom.nodeTypes.GeoElevationGrid.superClass.call(this,ctx);this.addField_MFString(ctx,'geoSystem',['GD','WE']);this.addField_SFVec3d(ctx,'geoGridOrigin',0,0,0);this.addField_MFDouble(ctx,'height',0,0);this.addField_SFBool(ctx,'ccw',true);this.addField_SFDouble(ctx,'creaseAngle',0);this.addField_SFInt32(ctx,'xDimension',0);this.addField_SFDouble(ctx,'xSpacing',1.0);this.addField_SFFloat(ctx,'yScale',1);this.addField_SFInt32(ctx,'zDimension',0);this.addField_SFDouble(ctx,'zSpacing',1.0);this.addField_SFNode('geoOrigin',x3dom.nodeTypes.GeoOrigin);this.addField_SFBool(ctx,'lit',true);},{nodeChanged:function()
{var geoSystem=this._vf.geoSystem;var geoOrigin=this._cf.geoOrigin;var height=this._vf.height;var yScale=this._vf.yScale;var xDimension=this._vf.xDimension;var zDimension=this._vf.zDimension;var xSpacing=this._vf.xSpacing;var zSpacing=this._vf.zSpacing;var geoGridOrigin=this._vf.geoGridOrigin;if(height.length!==(xDimension*zDimension))
x3dom.debug.logError('GeoElevationGrid: height.length('+height.length+') != x/zDimension('+xDimension+'*'+zDimension+')');var longitude_first=x3dom.nodeTypes.GeoCoordinate.prototype.isLogitudeFirst(geoSystem);var easting_first=x3dom.nodeTypes.GeoCoordinate.prototype.isUTMEastingFirst(geoSystem);var ccw=this._vf.ccw;var delta_x=1/(xDimension-1);var delta_z=1/(zDimension-1);var positions=new x3dom.fields.MFVec3f();var texCoords=new x3dom.fields.MFVec2f();for(var z=0;z<zDimension;++z)
for(var x=0;x<xDimension;++x)
{var tex_coord=new x3dom.fields.SFVec2f(x*delta_x,z*delta_z);texCoords.push(tex_coord);var coord=new x3dom.fields.SFVec3f();if(longitude_first||easting_first)
{coord.x=x*xSpacing;coord.y=z*zSpacing;}
else
{coord.x=z*zSpacing;coord.y=x*xSpacing;}
coord.z=height[(z*xDimension)+x]*yScale;coord=coord.add(geoGridOrigin);positions.push(coord);}
var indices=new x3dom.fields.MFInt32();for(var z=0;z<(zDimension-1);z++)
{for(var x=0;x<(xDimension-1);x++)
{var p0=x+(z*xDimension);var p1=x+(z*xDimension)+1;var p2=x+((z+1)*xDimension)+1;var p3=x+((z+1)*xDimension);if(ccw)
{indices.push(p0);indices.push(p1);indices.push(p2);indices.push(p0);indices.push(p2);indices.push(p3);}
else
{indices.push(p0);indices.push(p3);indices.push(p2);indices.push(p0);indices.push(p2);indices.push(p1);}}}
var transformed=x3dom.nodeTypes.GeoCoordinate.prototype.GEOtoX3D(geoSystem,geoOrigin,positions);if(this._vf.creaseAngle<=x3dom.fields.Eps){var that=this;(function(){var indicesFlat=new x3dom.fields.MFInt32(),positionsFlat=new x3dom.fields.MFVec3f(),texCoordsFlat=new x3dom.fields.MFVec3f();that.generateNonIndexedTriangleData(indices,transformed,null,texCoords,null,positionsFlat,null,texCoordsFlat,null);for(var i=0;i<positionsFlat.length;++i){indicesFlat.push(i);}
that._mesh._indices[0]=indicesFlat.toGL();that._mesh._positions[0]=positionsFlat.toGL();that._mesh._texCoords[0]=texCoordsFlat.toGL();})();this._mesh.calcNormals(0);}
else{this._mesh._indices[0]=indices.toGL();this._mesh._positions[0]=transformed.toGL();this._mesh._texCoords[0]=texCoords.toGL();this._mesh.calcNormals(Math.PI);}
this._mesh._invalidate=true;this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;},generateNonIndexedTriangleData:function(indices,positions,normals,texCoords,colors,newPositions,newNormals,newTexCoords,newColors)
{for(var i=0;i<indices.length;i+=3){var i0=indices[i],i1=indices[i+1],i2=indices[i+2];if(positions){var p0=new x3dom.fields.SFVec3f(),p1=new x3dom.fields.SFVec3f(),p2=new x3dom.fields.SFVec3f();p0.setValues(positions[i0]);p1.setValues(positions[i1]);p2.setValues(positions[i2]);newPositions.push(p0);newPositions.push(p1);newPositions.push(p2);}
if(normals){var n0=new x3dom.fields.SFVec3f(),n1=new x3dom.fields.SFVec3f(),n2=new x3dom.fields.SFVec3f();n0.setValues(normals[i0]);n1.setValues(normals[i1]);n2.setValues(normals[i2]);newNormals.push(n0);newNormals.push(n1);newNormals.push(n2);}
if(texCoords){var t0=new x3dom.fields.SFVec2f(),t1=new x3dom.fields.SFVec2f(),t2=new x3dom.fields.SFVec2f();t0.setValues(texCoords[i0]);t1.setValues(texCoords[i1]);t1.setValues(texCoords[i2]);newTexCoords.push(t0);newTexCoords.push(t1);newTexCoords.push(t2);}
if(colors){var c0=new x3dom.fields.SFVec3f(),c1=new x3dom.fields.SFVec3f(),c2=new x3dom.fields.SFVec3f();c0.setValues(texCoords[i0]);c1.setValues(texCoords[i1]);c1.setValues(texCoords[i2]);newColors.push(c0);newColors.push(c1);newColors.push(c2);}}}}));x3dom.registerNodeType("GeoLOD","Geospatial",defineClass(x3dom.nodeTypes.X3DLODNode,function(ctx){x3dom.nodeTypes.GeoLOD.superClass.call(this,ctx);this.addField_MFString(ctx,'geoSystem',['GD','WE']);this.addField_MFString(ctx,'rootUrl',[]);this.addField_MFString(ctx,'child1Url',[]);this.addField_MFString(ctx,'child2Url',[]);this.addField_MFString(ctx,'child3Url',[]);this.addField_MFString(ctx,'child4Url',[]);this.addField_SFFloat(ctx,'range',10);this.addField_SFString(ctx,'referenceBindableDescription',[]);this.addField_SFNode('geoOrigin',x3dom.nodeTypes.X3DChildNode);this.addField_SFNode('rootNode',x3dom.nodeTypes.X3DChildNode);this.addField_SFNode('privateChild1Node',x3dom.nodeTypes.X3DChildNode);this.addField_SFNode('privateChild2Node',x3dom.nodeTypes.X3DChildNode);this.addField_SFNode('privateChild3Node',x3dom.nodeTypes.X3DChildNode);this.addField_SFNode('privateChild4Node',x3dom.nodeTypes.X3DChildNode);this.addField_SFNode('privateRootNode',x3dom.nodeTypes.X3DChildNode);}));x3dom.registerNodeType("GeoLocation","Geospatial",defineClass(x3dom.nodeTypes.X3DTransformNode,function(ctx){x3dom.nodeTypes.GeoLocation.superClass.call(this,ctx);this.addField_MFString(ctx,'geoSystem',['GD','WE']);this.addField_SFVec3d(ctx,'geoCoords',0,0,0);this.addField_SFNode('geoOrigin',x3dom.nodeTypes.GeoOrigin);},{nodeChanged:function()
{var position=this._vf.geoCoords;var geoSystem=this._vf.geoSystem;var geoOrigin=this._cf.geoOrigin;this._trafo=this.getGeoTransRotMat(geoSystem,geoOrigin,position);},getGeoRotMat:function(geoSystem,positionGC)
{var coords=new x3dom.fields.MFVec3f();coords.push(positionGC);var positionGD=x3dom.nodeTypes.GeoCoordinate.prototype.GCtoGD(geoSystem,coords)[0];var Xaxis=new x3dom.fields.SFVec3f(1,0,0);var rotlat=180-positionGD.y;var deg2rad=Math.PI/180;var rotUpQuat=x3dom.fields.Quaternion.axisAngle(Xaxis,rotlat*deg2rad);var Zaxis=new x3dom.fields.SFVec3f(0,0,1);var rotlon=90+positionGD.x;var rotZQuat=x3dom.fields.Quaternion.axisAngle(Zaxis,rotlon*deg2rad);return rotZQuat.multiply(rotUpQuat).toMatrix();},getGeoTransRotMat:function(geoSystem,geoOrigin,position)
{var coords=new x3dom.fields.MFVec3f();coords.push(position);var transformed=x3dom.nodeTypes.GeoCoordinate.prototype.GEOtoGC(geoSystem,geoOrigin,coords)[0];var rotMat=this.getGeoRotMat(geoSystem,transformed);if(geoOrigin.node)
{var origin=x3dom.nodeTypes.GeoCoordinate.prototype.OriginToGC(geoOrigin);if(geoOrigin.node._vf.rotateYUp)
{var rotMatOrigin=this.getGeoRotMat(geoSystem,origin);return rotMatOrigin.inverse().mult(x3dom.fields.SFMatrix4f.translation(transformed.subtract(origin)).mult(rotMat));}
return x3dom.fields.SFMatrix4f.translation(transformed.subtract(origin)).mult(rotMat);}
else
{return x3dom.fields.SFMatrix4f.translation(transformed).mult(rotMat);}},fieldChanged:function(fieldName)
{if(fieldName=="geoSystem"||fieldName=="geoCoords"||fieldName=="geoOrigin")
{var position=this._vf.geoCoords;var geoSystem=this._vf.geoSystem;var geoOrigin=this._cf.geoOrigin;this._trafo=this.getGeoTransRotMat(geoSystem,geoOrigin,position);this.invalidateVolume();}
else if(fieldName=="render"){this.invalidateVolume();}}}));x3dom.registerNodeType("GeoMetadata","Geospatial",defineClass(x3dom.nodeTypes.X3DInfoNode,function(ctx){x3dom.nodeTypes.GeoMetadata.superClass.call(this,ctx);this.addField_MFString(ctx,'url',[]);this.addField_MFNode('data',x3dom.nodeTypes.X3DInfoNode);this.addField_MFString(ctx,'summary',[]);}));x3dom.registerNodeType("GeoOrigin","Geospatial",defineClass(x3dom.nodeTypes.X3DNode,function(ctx){x3dom.nodeTypes.GeoOrigin.superClass.call(this,ctx);this.addField_MFString(ctx,'geoSystem',['GD','WE']);this.addField_SFVec3d(ctx,'geoCoords',0,0,0);this.addField_SFBool(ctx,'rotateYUp',false);}));x3dom.registerNodeType("GeoPositionInterpolator","Geospatial",defineClass(x3dom.nodeTypes.X3DInterpolatorNode,function(ctx){x3dom.nodeTypes.GeoPositionInterpolator.superClass.call(this,ctx);this.addField_MFString(ctx,'geoSystem',['GD','WE']);this.addField_MFVec3f(ctx,'keyValue',[]);this.addField_SFNode('geoOrigin',x3dom.nodeTypes.GeoOrigin);this.addField_SFBool(ctx,'onGreatCircle',false);},{linearInterpHintKeyValue:function(time,keyHint,key,keyValue,interp){var keylength=key.length;if(time<=key[0])
return[0,keyValue[0]];else if(time>=key[keylength-1])
return[keylength-1,keyValue[keylength-1]];var keyIndexStart=keyHint;var i;for(var ii=0;ii<keylength-1;++ii){i=(keyIndexStart+ii)%keylength;if((key[i]<time)&&(time<=key[i+1]))
return[i,interp(keyValue[i],keyValue[i+1],(time-key[i])/(key[i+1]-key[i]))];i=(keyIndexStart-ii+keylength)%keylength;if((key[i]<time)&&(time<=key[i+1]))
return[i,interp(keyValue[i],keyValue[i+1],(time-key[i])/(key[i+1]-key[i]))];}
return[0,keyValue[0]];},slerp:function(a,b,t){var cosom=a.dot(b)/(a.length()*b.length());var rot1;{rot1=new x3dom.fields.SFVec3f(b.x,b.y,b.z);}
var scalerot0,scalerot1;if((1.0-cosom)>0.00001)
{var omega=Math.acos(cosom);var sinom=Math.sin(omega);scalerot0=Math.sin((1.0-t)*omega)/sinom;scalerot1=Math.sin(t*omega)/sinom;}
else
{scalerot0=1.0-t;scalerot1=t;}
return a.multiply(scalerot0).add(rot1.multiply(scalerot1));},nodeChanged:function(){this._keyValueGC=x3dom.nodeTypes.GeoCoordinate.prototype.GEOtoGC(this._vf.geoSystem,this._cf.geoOrigin,this._vf.keyValue);this._keyHint=0;},fieldChanged:function(fieldName)
{if(fieldName==="set_fraction"){var value,indexValue,valueGC,valueX3D,coords;if(this._vf.onGreatCircle){indexValue=this.linearInterpHintKeyValue(this._vf.set_fraction,this._keyHint,this._vf.key,this._keyValueGC,x3dom.nodeTypes.GeoPositionInterpolator.prototype.slerp);this._keyHint=indexValue[0];valueGC=indexValue[1];coords=new x3dom.fields.MFVec3f();coords.push(valueGC);value=x3dom.nodeTypes.GeoCoordinate.prototype.GCtoGEO(this._vf.geoSystem,this._cf.geoOrigin,coords)[0];}
else{indexValue=this.linearInterpHintKeyValue(this._vf.set_fraction,this._keyHint,this._vf.key,this._vf.keyValue,function(a,b,t){return a.multiply(1.0-t).add(b.multiply(t));});this._keyHint=indexValue[0];value=indexValue[1];coords=new x3dom.fields.MFVec3f();coords.push(value);valueGC=x3dom.nodeTypes.GeoCoordinate.prototype.GEOtoGC(this._vf.geoSystem,this._cf.geoOrigin,coords)[0];}
coords=new x3dom.fields.MFVec3f();coords.push(valueGC);var GCgeoSystem=new x3dom.fields.MFString();GCgeoSystem.push("GC");GCgeoSystem.push(x3dom.nodeTypes.GeoCoordinate.prototype.getElipsoideCode(this._vf.geoSystem));valueX3D=x3dom.nodeTypes.GeoCoordinate.prototype.GCtoX3D(GCgeoSystem,this._cf.geoOrigin,coords)[0];this.postMessage('value_changed',valueX3D);this.postMessage('geovalue_changed',value);}}}));x3dom.registerNodeType("GeoTransform","Geospatial",defineClass(x3dom.nodeTypes.X3DGroupingNode,function(ctx){x3dom.nodeTypes.GeoTransform.superClass.call(this,ctx);this.addField_SFVec3d(ctx,'geoCenter',0,0,0);this.addField_SFRotation(ctx,'rotation',0,0,1,0);this.addField_SFVec3f(ctx,'scale',1,1,1);this.addField_SFRotation(ctx,'scaleOrientation',0,0,1,0);this.addField_SFVec3f(ctx,'translation',0,0,0);this.addField_SFNode('geoOrigin',x3dom.nodeTypes.Transform);this.addField_MFString(ctx,'geoSystem',['GD','WE']);}));x3dom.registerNodeType("GeoViewpoint","Geospatial",defineClass(x3dom.nodeTypes.X3DViewpointNode,function(ctx){x3dom.nodeTypes.GeoViewpoint.superClass.call(this,ctx);this.addField_MFString(ctx,'geoSystem',['GD','WE']);this.addField_SFFloat(ctx,'fieldOfView',0.785398);this.addField_SFRotation(ctx,'orientation',0,0,1,0);this.addField_SFVec3f(ctx,'centerOfRotation',0,0,0);this.addField_SFVec3d(ctx,'position',0,0,100000);this.addField_SFBool(ctx,'headlight',undefined);this.addField_MFString(ctx,'navType',undefined);this.addField_SFFloat(ctx,'speedFactor',1.0);this.addField_SFFloat(ctx,'zNear',-1);this.addField_SFFloat(ctx,'zFar',-1);this.addField_SFBool(ctx,'elevationScaling',true);this.addField_SFNode('geoOrigin',x3dom.nodeTypes.GeoOrigin);this._geoCenterOfRotation=this._vf.centerOfRotation;},{activate:function(prev){var viewarea=this._nameSpace.doc._viewarea;if(prev){viewarea.animateTo(this,prev._autoGen?null:prev);}
viewarea._needNavigationMatrixUpdate=true;x3dom.nodeTypes.X3DBindableNode.prototype.activate.call(this,prev);var navi=viewarea._scene.getNavigationInfo();this._initSpeed=navi._vf.speed;this._examineSpeed=navi._vf.speed;this._lastSpeed=navi._vf.speed;this._userSpeedFactor=1.0;this._lastNavType=navi.getType();x3dom.debug.logInfo("initial navigation speed: "+this._initSpeed);if(this._vf.headlight!==undefined){navi._vf.headlight=this._vf.headlight;}
if(this._vf.navType!==undefined){navi._vf.navType=this._vf.navType;}},deactivate:function(prev){var viewarea=this._nameSpace.doc._viewarea;var navi=viewarea._scene.getNavigationInfo();navi._vf.speed=this._examineSpeed;x3dom.debug.logInfo("navigation speed restored to: "+this._examineSpeed);x3dom.nodeTypes.X3DBindableNode.prototype.deactivate.call(this,prev);},nodeChanged:function(){this._stack=this._nameSpace.doc._bindableBag.addBindable(this);this._geoOrigin=this._cf.geoOrigin;this._geoSystem=this._vf.geoSystem;this._position=this._vf.position;this._orientation=this._vf.orientation;this._viewMatrix=this.getInitViewMatrix(this._orientation,this._geoSystem,this._geoOrigin,this._position);this._vf.centerOfRotation=this.getGeoCenterOfRotation(this._geoSystem,this._geoOrigin,this._geoCenterOfRotation);this._projMatrix=null;this._lastAspect=1.0;this._zRatio=10000;this._zNear=this._vf.zNear;this._zFar=this._vf.zFar;this._imgPlaneHeightAtDistOne=2.0*Math.tan(this._vf.fieldOfView/2.0);},fieldChanged:function(fieldName){if(fieldName=="position"||fieldName=="orientation"){this.resetView();}
else if(fieldName=="fieldOfView"||fieldName=="zNear"||fieldName=="zFar"){this._projMatrix=null;this._zNear=this._vf.zNear;this._zFar=this._vf.zFar;this._imgPlaneHeightAtDistOne=2.0*Math.tan(this._vf.fieldOfView/2.0);}
else if(fieldName.indexOf("bind")>=0){this.bind(this._vf.bind);}},setProjectionMatrix:function(matrix)
{this._projMatrix=matrix;},getCenterOfRotation:function(){return this.getCurrentTransform().multMatrixPnt(this._vf.centerOfRotation);},getGeoCenterOfRotation:function(geoSystem,geoOrigin,geoCenterOfRotation){var coords=new x3dom.fields.MFVec3f();coords.push(geoCenterOfRotation);var transformed=x3dom.nodeTypes.GeoCoordinate.prototype.GEOtoX3D(geoSystem,geoOrigin,coords);return transformed[0];},isExamineMode:function(navType){return(navType=='examine'||navType=='turntable'||navType=='lookaround'||navType=='lookat');},getViewMatrix:function(){if(this._vf.isActive&&this._vf.elevationScaling){var viewarea=this._nameSpace.doc._viewarea;var navi=viewarea._scene.getNavigationInfo();var navType=navi.getType();if(this.isExamineMode(navType)){if(!this.isExamineMode(this._lastNavType)){navi._vf.speed=this._examineSpeed;}
this._lastNavType=navType;}
else{if(this.isExamineMode(this._lastNavType)){this._examineSpeed=navi._vf.speed;x3dom.debug.logInfo("back from examine mode, resume speed: "+this._lastSpeed);navi._vf.speed=this._lastSpeed;}
this._lastNavType=navType;if(navi._vf.speed!=this._lastSpeed){this._userSpeedFactor*=navi._vf.speed/this._lastSpeed;x3dom.debug.logInfo("interactive speed factor changed: "+this._userSpeedFactor);}
var viewtrafo=viewarea._scene.getViewpoint().getCurrentTransform();viewtrafo=viewtrafo.inverse().mult(this._viewMatrix);var position=viewtrafo.inverse().e3();var geoOrigin=this._geoOrigin;var geoSystem=this._geoSystem;var positionGC=position;if(geoOrigin.node){var origin=x3dom.nodeTypes.GeoCoordinate.prototype.OriginToGC(geoOrigin);if(geoOrigin.node._vf.rotateYUp){var rotmat=x3dom.nodeTypes.GeoLocation.prototype.getGeoRotMat(geoSystem,origin);positionGC=rotmat.multMatrixPnt(position);}
positionGC=positionGC.add(origin);}
var coords=new x3dom.fields.MFVec3f();coords.push(positionGC);var positionGD=x3dom.nodeTypes.GeoCoordinate.prototype.GCtoGD(geoSystem,coords)[0];var elevationSpeed=Math.abs(positionGD.z/10);elevationSpeed=elevationSpeed>1?elevationSpeed:1;navi._vf.speed=elevationSpeed*this._vf.speedFactor*this._userSpeedFactor;this._lastSpeed=navi._vf.speed;}}
return this._viewMatrix;},getInitViewMatrix:function(orientation,geoSystem,geoOrigin,position){var coords=new x3dom.fields.MFVec3f();coords.push(position);var positionGC=x3dom.nodeTypes.GeoCoordinate.prototype.GEOtoGC(geoSystem,geoOrigin,coords)[0];var orientMatrix=orientation.toMatrix();var rotMat=x3dom.nodeTypes.GeoLocation.prototype.getGeoRotMat(geoSystem,positionGC);var rotOrient=rotMat.mult(orientMatrix);if(geoOrigin.node){if(geoOrigin.node._vf.rotateYUp){var origin=x3dom.nodeTypes.GeoCoordinate.prototype.OriginToGC(geoOrigin);var rotMatOrigin=x3dom.nodeTypes.GeoLocation.prototype.getGeoRotMat(geoSystem,origin);rotOrient=rotMatOrigin.inverse().mult(rotOrient);}}
var positionX3D=x3dom.nodeTypes.GeoCoordinate.prototype.GEOtoX3D(geoSystem,geoOrigin,coords)[0];return x3dom.fields.SFMatrix4f.translation(positionX3D).mult(rotOrient).inverse();},getFieldOfView:function(){return this._vf.fieldOfView;},resetView:function(){this._viewMatrix=this.getInitViewMatrix(this._vf.orientation,this._vf.geoSystem,this._cf.geoOrigin,this._vf.position);this._vf.centerOfRotation=this.getGeoCenterOfRotation(this._vf.geoSystem,this._cf.geoOrigin,this._geoCenterOfRotation);if(this._nameSpace.doc._viewarea){this._nameSpace.doc._viewarea.resetNavHelpers();}},getNear:function(){return this._zNear;},getFar:function(){return this._zFar;},getImgPlaneHeightAtDistOne:function(){return this._imgPlaneHeightAtDistOne;},getProjectionMatrix:function(aspect)
{var fovy=this._vf.fieldOfView;var zfar=this._vf.zFar;var znear=this._vf.zNear;if(znear<=0||zfar<=0)
{var nearScale=0.8,farScale=1.2;var viewarea=this._nameSpace.doc._viewarea;var scene=viewarea._scene;var min=x3dom.fields.SFVec3f.copy(scene._lastMin);var max=x3dom.fields.SFVec3f.copy(scene._lastMax);var dia=max.subtract(min);var sRad=dia.length()/2;var mat=viewarea.getViewMatrix().inverse();var vp=mat.e3();var translation=new x3dom.fields.SFVec3f(0,0,0),scaleFactor=new x3dom.fields.SFVec3f(1,1,1);var rotation=new x3dom.fields.Quaternion(0,0,1,0),scaleOrientation=new x3dom.fields.Quaternion(0,0,1,0);mat.getTransform(translation,rotation,scaleFactor,scaleOrientation);var minScal=scaleFactor.x,maxScal=scaleFactor.x;if(maxScal<scaleFactor.y)maxScal=scaleFactor.y;if(minScal>scaleFactor.y)minScal=scaleFactor.y;if(maxScal<scaleFactor.z)maxScal=scaleFactor.z;if(minScal>scaleFactor.z)minScal=scaleFactor.z;if(maxScal>1)
nearScale/=maxScal;else if(minScal>x3dom.fields.Eps&&minScal<1)
farScale/=minScal;var sCenter=min.add(dia.multiply(0.5));var vDist=(vp.subtract(sCenter)).length();if(sRad){if(vDist>sRad)
znear=(vDist-sRad)*nearScale;else
znear=0;zfar=(vDist+sRad)*farScale;}
else{znear=0.1;zfar=100000;}
var zNearLimit=zfar/this._zRatio;znear=Math.max(znear,Math.max(x3dom.fields.Eps,zNearLimit));if(zfar>this._vf.zNear&&this._vf.zNear>0)
znear=this._vf.zNear;if(this._vf.zFar>znear)
zfar=this._vf.zFar;if(zfar<=znear)
zfar=znear+1;}
if(this._projMatrix==null)
{this._projMatrix=x3dom.fields.SFMatrix4f.perspective(fovy,aspect,znear,zfar);}
else if(this._zNear!=znear||this._zFar!=zfar)
{var div=znear-zfar;this._projMatrix._22=(znear+zfar)/div;this._projMatrix._23=2*znear*zfar/div;}
else if(this._lastAspect!=aspect)
{this._projMatrix._00=(1/Math.tan(fovy/2))/aspect;this._lastAspect=aspect;}
this._zNear=znear;this._zFar=zfar;return this._projMatrix;}}));x3dom.registerNodeType("ScreenGroup","Layout",defineClass(x3dom.nodeTypes.X3DGroupingNode,function(ctx){x3dom.nodeTypes.ScreenGroup.superClass.call(this,ctx);},{collectDrawableObjects:function(transform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes)
{if(singlePath&&(this._parentNodes.length>1))
singlePath=false;if(singlePath&&(invalidateCache=invalidateCache||this.cacheInvalid()))
this.invalidateCache();planeMask=drawableCollection.cull(transform,this.graphState(),singlePath,planeMask);if(planeMask<=0){return;}
singlePath=false;var doc,vp,minus_one,zero,viewport_height,one_to_one_pixel_depth,view_transform,view_direction,model_transform,camera_position,screengroup_position,viewpoint_to_screengroup,ratio,scale_matrix;doc=this._nameSpace.doc;vp=doc._scene.getViewpoint();viewport_height=doc._x3dElem.clientHeight;one_to_one_pixel_depth=viewport_height/vp.getImgPlaneHeightAtDistOne();minus_one=new x3dom.fields.SFVec3f(0,0,-1.0);zero=new x3dom.fields.SFVec3f(0,0,0);view_transform=drawableCollection.viewMatrix;model_transform=transform;view_direction=minus_one;camera_position=zero;screengroup_position=view_transform.multMatrixPnt(model_transform.multMatrixPnt(zero));viewpoint_to_screengroup=screengroup_position.subtract(camera_position);ratio=view_direction.dot(viewpoint_to_screengroup)/one_to_one_pixel_depth;scale_matrix=x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(ratio,ratio,ratio));var childTransform=this.transformMatrix(model_transform.mult(scale_matrix));for(var i=0,i_n=this._childNodes.length;i<i_n;i++)
{var cnode=this._childNodes[i];if(cnode){cnode.collectDrawableObjects(childTransform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes);}}}}));x3dom.registerNodeType("X3DPlanarGeometryNode","Geometry2D",defineClass(x3dom.nodeTypes.X3DGeometryNode,function(ctx){x3dom.nodeTypes.X3DPlanarGeometryNode.superClass.call(this,ctx);}));x3dom.registerNodeType("Arc2D","Geometry2D",defineClass(x3dom.nodeTypes.X3DPlanarGeometryNode,function(ctx){x3dom.nodeTypes.Arc2D.superClass.call(this,ctx);this.addField_SFFloat(ctx,'radius',1);this.addField_SFFloat(ctx,'startAngle',0);this.addField_SFFloat(ctx,'endAngle',1.570796);this.addField_SFFloat(ctx,'subdivision',32);this._mesh._primType='LINES';var r=this._vf.radius;var start=this._vf.startAngle;var end=this._vf.endAngle;var Pi2=Math.PI*2.0;start-=Math.floor(start/Pi2)*Pi2;end-=Math.floor(end/Pi2)*Pi2;if(end<=start)
end+=Pi2;var geoCacheID='Arc2D_'+r+start+end;if(this._vf.useGeoCache&&x3dom.geoCache[geoCacheID]!==undefined){this._mesh=x3dom.geoCache[geoCacheID];}else{var anzahl=this._vf.subdivision;var t=(end-start)/anzahl;var theta=start;for(var i=0;i<=anzahl+1;i++){var x=Math.cos(theta)*r;var y=Math.sin(theta)*r;this._mesh._positions[0].push(x);this._mesh._positions[0].push(y);this._mesh._positions[0].push(0.0);theta+=t;}
for(var j=0;j<anzahl;j++){this._mesh._indices[0].push(j);this._mesh._indices[0].push(j+1);}
this._mesh._invalidate=true;this._mesh._numFaces=this._mesh._indices[0].length/2;this._mesh._numCoords=this._mesh._positions[0].length/3;x3dom.geoCache[geoCacheID]=this._mesh;}},{fieldChanged:function(fieldName){if(fieldName=="radius"||fieldName=="subdivision"||fieldName=="startAngle"||fieldName=="endAngle"){this._mesh._positions[0]=[];this._mesh._indices[0]=[];var r=this._vf.radius;var start=this._vf.startAngle;var end=this._vf.endAngle;var anzahl=this._vf.subdivision;var Pi2=Math.PI*2.0;start-=Math.floor(start/Pi2)*Pi2;end-=Math.floor(end/Pi2)*Pi2;if(end<=start)
end+=Pi2;var t=(end-start)/anzahl;var theta=start;for(var i=0;i<=anzahl+1;i++){var x=Math.cos(theta)*r;var y=Math.sin(theta)*r;this._mesh._positions[0].push(x);this._mesh._positions[0].push(y);this._mesh._positions[0].push(0.0);theta+=t;}
for(var j=0;j<anzahl;j++){this._mesh._indices[0].push(j);this._mesh._indices[0].push(j+1);}
this.invalidateVolume();this._mesh._numFaces=this._mesh._indices[0].length/2;this._mesh._numCoords=this._mesh._positions[0].length/3;Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;node._dirty.indexes=true;node.invalidateVolume();});}}}));x3dom.registerNodeType("ArcClose2D","Geometry2D",defineClass(x3dom.nodeTypes.X3DPlanarGeometryNode,function(ctx){x3dom.nodeTypes.ArcClose2D.superClass.call(this,ctx);this.addField_SFString(ctx,'closureType',"PIE");this.addField_SFFloat(ctx,'radius',1);this.addField_SFFloat(ctx,'startAngle',0);this.addField_SFFloat(ctx,'endAngle',1.570796);this.addField_SFFloat(ctx,'subdivision',32);var r=this._vf.radius;var start=this._vf.startAngle;var end=this._vf.endAngle;var anzahl=this._vf.subdivision;var Pi2=Math.PI*2.0;start-=Math.floor(start/Pi2)*Pi2;end-=Math.floor(end/Pi2)*Pi2;if(end<=start)
end+=Pi2;var geoCacheID='ArcClose2D_'+r+start+end+this._vf.closureType;if(this._vf.useGeoCache&&x3dom.geoCache[geoCacheID]!==undefined){this._mesh=x3dom.geoCache[geoCacheID];}else{var t=(end-start)/anzahl;var theta=start;if(this._vf.closureType.toUpperCase()=='PIE'){this._mesh._positions[0].push(0.0);this._mesh._positions[0].push(0.0);this._mesh._positions[0].push(0.0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(1);this._mesh._texCoords[0].push(0.5);this._mesh._texCoords[0].push(0.5);for(var i=0;i<=anzahl;i++){var x=Math.cos(theta)*r;var y=Math.sin(theta)*r;this._mesh._positions[0].push(x);this._mesh._positions[0].push(y);this._mesh._positions[0].push(0.0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(1);this._mesh._texCoords[0].push((x+r)/(2*r));this._mesh._texCoords[0].push((y+r)/(2*r));theta+=t;}
for(var j=1;j<=anzahl;j++){this._mesh._indices[0].push(j+1);this._mesh._indices[0].push(0);this._mesh._indices[0].push(j);}}else{for(var i=0;i<=anzahl;i++){var x=Math.cos(theta)*r;var y=Math.sin(theta)*r;this._mesh._positions[0].push(x);this._mesh._positions[0].push(y);this._mesh._positions[0].push(0.0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(1);this._mesh._texCoords[0].push((x+r)/(2*r));this._mesh._texCoords[0].push((y+r)/(2*r));theta+=t;}
var x=(this._mesh._positions[0][0]+this._mesh._positions[0][this._mesh._positions[0].length-3])/2;var y=(this._mesh._positions[0][1]+this._mesh._positions[0][this._mesh._positions[0].length-2])/2;this._mesh._positions[0].push(x);this._mesh._positions[0].push(y);this._mesh._positions[0].push(0.0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(1);this._mesh._texCoords[0].push((x+r)/(2*r));this._mesh._texCoords[0].push((y+r)/(2*r));for(var j=0;j<anzahl;j++){this._mesh._indices[0].push(j+1);this._mesh._indices[0].push(anzahl+1);this._mesh._indices[0].push(j);}}
this._mesh._numTexComponents=2;this._mesh._invalidate=true;this._mesh._numFaces=this._mesh._indices[0].length/2;this._mesh._numCoords=this._mesh._positions[0].length/3;x3dom.geoCache[geoCacheID]=this._mesh;}},{fieldChanged:function(fieldName){var r=this._vf.radius;var start=this._vf.startAngle;var end=this._vf.endAngle;var anzahl=this._vf.subdivision;var Pi2=Math.PI*2.0;start-=Math.floor(start/Pi2)*Pi2;end-=Math.floor(end/Pi2)*Pi2;if(end<=start)
end+=Pi2;var t=(end-start)/anzahl;var theta=start;if(fieldName==="radius"){this._mesh._positions[0]=[];if(this._vf.closureType.toUpperCase()=='PIE'){this._mesh._positions[0].push(0.0);this._mesh._positions[0].push(0.0);this._mesh._positions[0].push(0.0);for(var i=0;i<=anzahl;i++){var x=Math.cos(theta)*r;var y=Math.sin(theta)*r;this._mesh._positions[0].push(x);this._mesh._positions[0].push(y);this._mesh._positions[0].push(0.0);theta+=t;}}else{for(var i=0;i<=anzahl;i++){var x=Math.cos(theta)*r;var y=Math.sin(theta)*r;this._mesh._positions[0].push(x);this._mesh._positions[0].push(y);this._mesh._positions[0].push(0.0);theta+=t;}
var x=(this._mesh._positions[0][0]+this._mesh._positions[0][this._mesh._positions[0].length-3])/2;var y=(this._mesh._positions[0][1]+this._mesh._positions[0][this._mesh._positions[0].length-2])/2;this._mesh._positions[0].push(x);this._mesh._positions[0].push(y);this._mesh._positions[0].push(0.0);}
this.invalidateVolume();this._mesh._numCoords=this._mesh._positions[0].length/3;Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;node.invalidateVolume();});}else if(fieldName=="closureType"||fieldName=="subdivision"||fieldName=="startAngle"||fieldName=="endAngle"){this._mesh._positions[0]=[];this._mesh._indices[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];if(this._vf.closureType.toUpperCase()=='PIE'){this._mesh._positions[0].push(0.0);this._mesh._positions[0].push(0.0);this._mesh._positions[0].push(0.0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(1);this._mesh._texCoords[0].push(0.5);this._mesh._texCoords[0].push(0.5);for(var i=0;i<=anzahl;i++){var x=Math.cos(theta)*r;var y=Math.sin(theta)*r;this._mesh._positions[0].push(x);this._mesh._positions[0].push(y);this._mesh._positions[0].push(0.0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(1);this._mesh._texCoords[0].push((x+r)/(2*r));this._mesh._texCoords[0].push((y+r)/(2*r));theta+=t;}
for(var j=1;j<=anzahl;j++){this._mesh._indices[0].push(j+1);this._mesh._indices[0].push(0);this._mesh._indices[0].push(j);}}else{for(var i=0;i<=anzahl;i++){var x=Math.cos(theta)*r;var y=Math.sin(theta)*r;this._mesh._positions[0].push(x);this._mesh._positions[0].push(y);this._mesh._positions[0].push(0.0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(1);this._mesh._texCoords[0].push((x+r)/(2*r));this._mesh._texCoords[0].push((y+r)/(2*r));theta+=t;}
var x=(this._mesh._positions[0][0]+this._mesh._positions[0][this._mesh._positions[0].length-3])/2;var y=(this._mesh._positions[0][1]+this._mesh._positions[0][this._mesh._positions[0].length-2])/2;this._mesh._positions[0].push(x);this._mesh._positions[0].push(y);this._mesh._positions[0].push(0.0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(1);this._mesh._texCoords[0].push((x+r)/(2*r));this._mesh._texCoords[0].push((y+r)/(2*r));for(var j=0;j<anzahl;j++){this._mesh._indices[0].push(j+1);this._mesh._indices[0].push(anzahl+1);this._mesh._indices[0].push(j);}}
this._mesh._numTexComponents=2;this.invalidateVolume();this._mesh._numFaces=this._mesh._indices[0].length/2;this._mesh._numCoords=this._mesh._positions[0].length/3;Array.forEach(this._parentNodes,function(node){node.setAllDirty();});}}}));x3dom.registerNodeType("Circle2D","Geometry2D",defineClass(x3dom.nodeTypes.X3DPlanarGeometryNode,function(ctx){x3dom.nodeTypes.Circle2D.superClass.call(this,ctx);this.addField_SFFloat(ctx,'radius',1);this.addField_SFFloat(ctx,'subdivision',32);this._mesh._primType='LINES';var r=this._vf.radius;var geoCacheID='Circle2D_'+r;if(this._vf.useGeoCache&&x3dom.geoCache[geoCacheID]!==undefined){this._mesh=x3dom.geoCache[geoCacheID];}else{var anzahl=this._vf.subdivision;for(var i=0;i<=anzahl;i++){var theta=i*((2*Math.PI)/anzahl);var x=Math.cos(theta)*r;var y=Math.sin(theta)*r;this._mesh._positions[0].push(x);this._mesh._positions[0].push(y);this._mesh._positions[0].push(0.0);}
for(i=0;i<anzahl;i++){this._mesh._indices[0].push(i);if((i+1)==anzahl){this._mesh._indices[0].push(0);}else{this._mesh._indices[0].push(i+1);}}
this._mesh._invalidate=true;this._mesh._numFaces=this._mesh._indices[0].length/2;this._mesh._numCoords=this._mesh._positions[0].length/3;x3dom.geoCache[geoCacheID]=this._mesh;}},{fieldChanged:function(fieldName){if(fieldName=="radius"||fieldName=="subdivision"){var r=this._vf.radius;var anzahl=this._vf.subdivision;this._mesh._positions[0]=[];this._mesh._indices[0]=[];for(var i=0;i<=anzahl;i++){var theta=i*((2*Math.PI)/anzahl);var x=Math.cos(theta)*r;var y=Math.sin(theta)*r;this._mesh._positions[0].push(x);this._mesh._positions[0].push(y);this._mesh._positions[0].push(0.0);}
for(i=0;i<anzahl;i++){this._mesh._indices[0].push(i);if((i+1)==anzahl){this._mesh._indices[0].push(0);}else{this._mesh._indices[0].push(i+1);}}
this.invalidateVolume();this._mesh._numFaces=this._mesh._indices[0].length/2;this._mesh._numCoords=this._mesh._positions[0].length/3;Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;node._dirty.indexes=true;node.invalidateVolume();});}}}));x3dom.registerNodeType("Disk2D","Geometry2D",defineClass(x3dom.nodeTypes.X3DPlanarGeometryNode,function(ctx){x3dom.nodeTypes.Disk2D.superClass.call(this,ctx);this.addField_SFFloat(ctx,'innerRadius',0);this.addField_SFFloat(ctx,'outerRadius',1);this.addField_SFFloat(ctx,'subdivision',32);var ir=this._vf.innerRadius;var or=this._vf.outerRadius;var geoCacheID='Disk2D_'+ir+or;if(this._vf.useGeoCache&&x3dom.geoCache[geoCacheID]!==undefined){this._mesh=x3dom.geoCache[geoCacheID];}else{var anzahl=this._vf.subdivision;for(var i=0;i<=anzahl;i++){var theta=i*((2*Math.PI)/anzahl);var ox=Math.cos(theta)*or;var oy=Math.sin(theta)*or;var ix=Math.cos(theta)*ir;var iy=Math.sin(theta)*ir;this._mesh._positions[0].push(ox);this._mesh._positions[0].push(oy);this._mesh._positions[0].push(0.0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(1);this._mesh._texCoords[0].push((ox+or)/(2*or));this._mesh._texCoords[0].push((oy+or)/(2*or));this._mesh._positions[0].push(ix);this._mesh._positions[0].push(iy);this._mesh._positions[0].push(0.0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(1);this._mesh._texCoords[0].push((ix+or)/(2*or));this._mesh._texCoords[0].push((iy+or)/(2*or));}
for(i=0;i<anzahl*2;i=i+2){if(i==(anzahl*2)-2){this._mesh._indices[0].push(i+1);this._mesh._indices[0].push(i);this._mesh._indices[0].push(1);this._mesh._indices[0].push(1);this._mesh._indices[0].push(i);this._mesh._indices[0].push(0);}else{this._mesh._indices[0].push(i+1);this._mesh._indices[0].push(i);this._mesh._indices[0].push(i+3);this._mesh._indices[0].push(i+3);this._mesh._indices[0].push(i);this._mesh._indices[0].push(i+2);}}
this._mesh._numTexComponents=2;this._mesh._invalidate=true;this._mesh._numFaces=this._mesh._indices[0].length/2;this._mesh._numCoords=this._mesh._positions[0].length/3;x3dom.geoCache[geoCacheID]=this._mesh;}},{fieldChanged:function(fieldName){if(fieldName=="innerRadius"||fieldName=="outerRadius"||fieldName=="subdivision"){this._mesh._positions[0]=[];this._mesh._indices[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];var ir=this._vf.innerRadius;var or=this._vf.outerRadius;var anzahl=this._vf.subdivision;for(var i=0;i<=anzahl;i++){var theta=i*((2*Math.PI)/anzahl);var ox=Math.cos(theta)*or;var oy=Math.sin(theta)*or;var ix=Math.cos(theta)*ir;var iy=Math.sin(theta)*ir;this._mesh._positions[0].push(ox);this._mesh._positions[0].push(oy);this._mesh._positions[0].push(0.0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(1);this._mesh._texCoords[0].push((ox+or)/(2*or));this._mesh._texCoords[0].push((oy+or)/(2*or));this._mesh._positions[0].push(ix);this._mesh._positions[0].push(iy);this._mesh._positions[0].push(0.0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(1);this._mesh._texCoords[0].push((ix+or)/(2*or));this._mesh._texCoords[0].push((iy+or)/(2*or));}
for(i=0;i<anzahl*2;i=i+2){if(i==(anzahl*2)-2){this._mesh._indices[0].push(i+1);this._mesh._indices[0].push(i);this._mesh._indices[0].push(1);this._mesh._indices[0].push(1);this._mesh._indices[0].push(i);this._mesh._indices[0].push(0);}else{this._mesh._indices[0].push(i+1);this._mesh._indices[0].push(i);this._mesh._indices[0].push(i+3);this._mesh._indices[0].push(i+3);this._mesh._indices[0].push(i);this._mesh._indices[0].push(i+2);}}
this._mesh._numTexComponents=2;this.invalidateVolume();this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;Array.forEach(this._parentNodes,function(node){node.setAllDirty();});}}}));x3dom.registerNodeType("Polyline2D","Geometry2D",defineClass(x3dom.nodeTypes.X3DPlanarGeometryNode,function(ctx){x3dom.nodeTypes.Polyline2D.superClass.call(this,ctx);this.addField_MFVec2f(ctx,'lineSegments',[]);this._mesh._primType='LINES';var x=0,y=0;if(this._vf.lineSegments.length){x=this._vf.lineSegments[0].x;y=this._vf.lineSegments[0].y;}
var geoCacheID='Polyline2D_'+x+'-'+y;if(this._vf.useGeoCache&&x3dom.geoCache[geoCacheID]!==undefined){this._mesh=x3dom.geoCache[geoCacheID];}
else{for(var i=0;i<this._vf.lineSegments.length;i++){x=this._vf.lineSegments[i].x;y=this._vf.lineSegments[i].y;this._mesh._positions[0].push(x);this._mesh._positions[0].push(y);this._mesh._positions[0].push(0.0);}
for(var j=0;j<this._vf.lineSegments.length-1;j++){this._mesh._indices[0].push(j);this._mesh._indices[0].push(j+1);}
this._mesh._invalidate=true;this._mesh._numFaces=this._mesh._indices[0].length/2;this._mesh._numCoords=this._mesh._positions[0].length/3;x3dom.geoCache[geoCacheID]=this._mesh;}},{fieldChanged:function(fieldName){if(fieldName=="lineSegments"){var x,y;this._mesh._positions[0]=[];this._mesh._indices[0]=[];for(var i=0;i<this._vf.lineSegments.length;i++){x=this._vf.lineSegments[i].x;y=this._vf.lineSegments[i].y;this._mesh._positions[0].push(x);this._mesh._positions[0].push(y);this._mesh._positions[0].push(0.0);}
for(var j=0;j<this._vf.lineSegments.length-1;j++){this._mesh._indices[0].push(j);this._mesh._indices[0].push(j+1);}
this.invalidateVolume();this._mesh._numFaces=this._mesh._indices[0].length/2;this._mesh._numCoords=this._mesh._positions[0].length/3;Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;node._dirty.indexes=true;node.invalidateVolume();});}}}));x3dom.registerNodeType("Polypoint2D","Geometry2D",defineClass(x3dom.nodeTypes.X3DPlanarGeometryNode,function(ctx){x3dom.nodeTypes.Polypoint2D.superClass.call(this,ctx);this.addField_MFVec2f(ctx,'point',[]);this._mesh._primType='POINTS';var x=0,y=0;if(this._vf.point.length){x=this._vf.point[0].x;y=this._vf.point[0].y;}
var geoCacheID='Polypoint2D_'+x+'-'+y;if(this._vf.useGeoCache&&x3dom.geoCache[geoCacheID]!==undefined){this._mesh=x3dom.geoCache[geoCacheID];}
else{for(var i=0;i<this._vf.point.length;i++){x=this._vf.point[i].x;y=this._vf.point[i].y;this._mesh._positions[0].push(x);this._mesh._positions[0].push(y);this._mesh._positions[0].push(0.0);}
this._mesh._invalidate=true;this._mesh._numCoords=this._mesh._positions[0].length/3;x3dom.geoCache[geoCacheID]=this._mesh;}},{fieldChanged:function(fieldName){if(fieldName=="point"){this._mesh._positions[0]=[];this._mesh._indices[0]=[];for(var i=0;i<this._vf.point.length;i++){var x=this._vf.point[i].x;var y=this._vf.point[i].y;this._mesh._positions[0].push(x);this._mesh._positions[0].push(y);this._mesh._positions[0].push(0.0);}
this.invalidateVolume();this._mesh._numCoords=this._mesh._positions[0].length/3;Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;node.invalidateVolume();});}}}));x3dom.registerNodeType("Rectangle2D","Geometry2D",defineClass(x3dom.nodeTypes.X3DPlanarGeometryNode,function(ctx){x3dom.nodeTypes.Rectangle2D.superClass.call(this,ctx);this.addField_SFVec2f(ctx,'size',2,2);this.addField_SFVec2f(ctx,'subdivision',1,1);var sx=this._vf.size.x,sy=this._vf.size.y;var partx=this._vf.subdivision.x,party=this._vf.subdivision.y;var geoCacheID='Rectangle2D_'+sx+'-'+sy;if(this._vf.useGeoCache&&x3dom.geoCache[geoCacheID]!==undefined){this._mesh=x3dom.geoCache[geoCacheID];}
else{var xstep=sx/partx;var ystep=sy/party;sx/=2;sy/=2;for(var i=0;i<=partx;i++){for(var j=0;j<=party;j++){this._mesh._positions[0].push(i*xstep-sx,j*ystep-sy,0);this._mesh._normals[0].push(0,0,1);this._mesh._texCoords[0].push(i/partx,j/party);}}
for(var i=1;i<=party;i++){for(var j=0;j<partx;j++){this._mesh._indices[0].push((i-1)*(partx+1)+j+1);this._mesh._indices[0].push((i-1)*(partx+1)+j);this._mesh._indices[0].push(i*(partx+1)+j);this._mesh._indices[0].push((i-1)*(partx+1)+j+1);this._mesh._indices[0].push(i*(partx+1)+j);this._mesh._indices[0].push(i*(partx+1)+j+1);}}
this._mesh._invalidate=true;this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;x3dom.geoCache[geoCacheID]=this._mesh;}},{fieldChanged:function(fieldName){if(fieldName=="size"){this._mesh._positions[0]=[];var size=this._vf.size;var sx=size.x/2;var sy=size.y/2;var partx=this._vf.subdivision.x,party=this._vf.subdivision.y;var xstep=sx/partx;var ystep=sy/party;sx/=2;sy/=2;for(var i=0;i<=partx;i++){for(var j=0;j<=party;j++){this._mesh._positions[0].push(i*xstep-sx,j*ystep-sy,0);}}
this.invalidateVolume();this._mesh._numCoords=this._mesh._positions[0].length/3;Array.forEach(this._parentNodes,function(node){node.setAllDirty();});}else if(fieldName=="subdivision"){this._mesh._positions[0]=[];this._mesh._indices[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];var sx=this._vf.size.x/2;var sy=this._vf.size.y/2;var partx=this._vf.subdivision.x,party=this._vf.subdivision.y;var xstep=sx/partx;var ystep=sy/party;sx/=2;sy/=2;for(var i=0;i<=partx;i++){for(var j=0;j<=party;j++){this._mesh._positions[0].push(i*xstep-sx,j*ystep-sy,0);this._mesh._normals[0].push(0,0,1);this._mesh._texCoords[0].push(i/partx,j/party);}}
for(var i=1;i<=party;i++){for(var j=0;j<partx;j++){this._mesh._indices[0].push((i-1)*(partx+1)+j+1);this._mesh._indices[0].push((i-1)*(partx+1)+j);this._mesh._indices[0].push(i*(partx+1)+j);this._mesh._indices[0].push((i-1)*(partx+1)+j+1);this._mesh._indices[0].push(i*(partx+1)+j);this._mesh._indices[0].push(i*(partx+1)+j+1);}}
this.invalidateVolume();this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;Array.forEach(this._parentNodes,function(node){node.setAllDirty();});}}}));x3dom.registerNodeType("TriangleSet2D","Geometry2D",defineClass(x3dom.nodeTypes.X3DPlanarGeometryNode,function(ctx){x3dom.nodeTypes.TriangleSet2D.superClass.call(this,ctx);this.addField_MFVec2f(ctx,'vertices',[]);var x=0,y=0;if(this._vf.vertices.length){x=this._vf.vertices[0].x;y=this._vf.vertices[0].y;}
var geoCacheID='TriangleSet2D_'+x+'-'+y;if(this._vf.useGeoCache&&x3dom.geoCache[geoCacheID]!==undefined){this._mesh=x3dom.geoCache[geoCacheID];}
else{var minx=0,miny=0,maxx=0,maxy=0;if(this._vf.vertices.length){minx=this._vf.vertices[0].x;miny=this._vf.vertices[0].y;maxx=this._vf.vertices[0].x;maxy=this._vf.vertices[0].y;}
for(var i=0;i<this._vf.vertices.length;i++){if(this._vf.vertices[i].x<minx){minx=this._vf.vertices[i].x}
if(this._vf.vertices[i].y<miny){miny=this._vf.vertices[i].y}
if(this._vf.vertices[i].x>maxx){maxx=this._vf.vertices[i].x}
if(this._vf.vertices[i].y>maxy){maxy=this._vf.vertices[i].y}}
for(var i=0;i<this._vf.vertices.length;i++){x=this._vf.vertices[i].x;y=this._vf.vertices[i].y;this._mesh._positions[0].push(x);this._mesh._positions[0].push(y);this._mesh._positions[0].push(0.0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(1);this._mesh._texCoords[0].push((x-minx)/(maxx-minx));this._mesh._texCoords[0].push((y-miny)/(maxy-miny));}
for(var j=0;j<this._vf.vertices.length;j+=3){this._mesh._indices[0].push(j);this._mesh._indices[0].push(j+2);this._mesh._indices[0].push(j+1);}
this._mesh._numTexComponents=2;this._mesh._invalidate=true;this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;x3dom.geoCache[geoCacheID]=this._mesh;}},{fieldChanged:function(fieldName){if(fieldName=="vertices"){this._mesh._positions[0]=[];this._mesh._indices[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];var minx=this._vf.vertices[0].x;var miny=this._vf.vertices[0].y;var maxx=this._vf.vertices[0].x;var maxy=this._vf.vertices[0].y;for(var i=0;i<this._vf.vertices.length;i++){if(this._vf.vertices[i].x<minx){minx=this._vf.vertices[i].x}
if(this._vf.vertices[i].y<miny){miny=this._vf.vertices[i].y}
if(this._vf.vertices[i].x>maxx){maxx=this._vf.vertices[i].x}
if(this._vf.vertices[i].y>maxy){maxy=this._vf.vertices[i].y}}
for(var i=0;i<this._vf.vertices.length;i++){var x=this._vf.vertices[i].x;var y=this._vf.vertices[i].y;this._mesh._positions[0].push(x);this._mesh._positions[0].push(y);this._mesh._positions[0].push(0.0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(1);this._mesh._texCoords[0].push((x-minx)/(maxx-minx));this._mesh._texCoords[0].push((y-miny)/(maxy-miny));}
for(var j=0;j<this._vf.vertices.length;j+=3){this._mesh._indices[0].push(j);this._mesh._indices[0].push(j+2);this._mesh._indices[0].push(j+1);}
this._mesh._numTexComponents=2;this.invalidateVolume();this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;Array.forEach(this._parentNodes,function(node){node.setAllDirty();});}}}));x3dom.registerNodeType("X3DVolumeDataNode","VolumeRendering",defineClass(x3dom.nodeTypes.X3DShapeNode,function(ctx){x3dom.nodeTypes.X3DVolumeDataNode.superClass.call(this,ctx);this.addField_SFVec3f(ctx,'dimensions',1,1,1);this.addField_SFNode('voxels',x3dom.nodeTypes.Texture);this._textureID=0;this._first=true;this._styleList=[];this.surfaceNormalsNeeded=false;this.normalTextureProvided=false;this.fragmentPreamble="#ifdef GL_FRAGMENT_PRECISION_HIGH\n"+"  precision highp float;\n"+"#else\n"+"  precision mediump float;\n"+"#endif\n\n";},{getTextureSize:function(texture){var size={w:0,h:0,valid:false};var texBag=this._webgl?this._webgl.texture:null;var t,n=(texture&&texBag)?texBag.length:0;for(t=0;t<n;t++){if(texture==texBag[t].node&&texBag[t].texture){size.w=texBag[t].texture.width;size.h=texBag[t].texture.height;if(size.w&&size.h){size.valid=true;}
break;}}
return size;},vertexShaderText:function(){var shader="attribute vec3 position;\n"+"uniform vec3 dimensions;\n"+"uniform mat4 modelViewProjectionMatrix;\n"+"varying vec4 vertexPosition;\n"+"varying vec4 pos;\n";if(x3dom.nodeTypes.X3DLightNode.lightID>0){shader+="uniform mat4 modelViewMatrix;\n"+"varying vec4 position_eye;\n";}
shader+="\n"+"void main()\n"+"{\n"+"  vertexPosition = modelViewProjectionMatrix * vec4(position, 1.0);\n";if(x3dom.nodeTypes.X3DLightNode.lightID>0){shader+="  position_eye = modelViewMatrix * vec4(position, 1.0);\n";}
shader+="  pos = vec4((position/dimensions)+0.5, 1.0);\n"+"  gl_Position = vertexPosition;\n"+"}";return shader;},defaultUniformsShaderText:function(numberOfSlices,slicesOverX,slicesOverY){var uniformsText="uniform sampler2D uVolData;\n"+"uniform vec3 dimensions;\n"+"uniform vec3 offset;\n"+"uniform mat4 modelViewMatrix;\n"+"uniform mat4 modelViewMatrixInverse;\n"+"varying vec4 vertexPosition;\n"+"varying vec4 pos;\n";if(x3dom.nodeTypes.X3DLightNode.lightID>0){uniformsText+="varying vec4 position_eye;\n";}
for(var l=0;l<x3dom.nodeTypes.X3DLightNode.lightID;l++){uniformsText+="uniform float light"+l+"_On;\n"+"uniform float light"+l+"_Type;\n"+"uniform vec3  light"+l+"_Location;\n"+"uniform vec3  light"+l+"_Direction;\n"+"uniform vec3  light"+l+"_Color;\n"+"uniform vec3  light"+l+"_Attenuation;\n"+"uniform float light"+l+"_Radius;\n"+"uniform float light"+l+"_Intensity;\n"+"uniform float light"+l+"_AmbientIntensity;\n"+"uniform float light"+l+"_BeamWidth;\n"+"uniform float light"+l+"_CutOffAngle;\n"+"uniform float light"+l+"_ShadowIntensity;\n";}
uniformsText+="const float Steps = 60.0;\n"+"const float numberOfSlices = "+numberOfSlices.toPrecision(5)+";\n"+"const float slicesOverX = "+slicesOverX.toPrecision(5)+";\n"+"const float slicesOverY = "+slicesOverY.toPrecision(5)+";\n";return uniformsText;},texture3DFunctionShaderText:"vec4 cTexture3D(sampler2D vol, vec3 volpos, float nS, float nX, float nY)\n"+"{\n"+"  float s1,s2;\n"+"  float dx1,dy1;\n"+"  float dx2,dy2;\n"+"  vec2 texpos1,texpos2;\n"+"  s1 = floor(volpos.z*nS);\n"+"  s2 = s1+1.0;\n"+"  dx1 = fract(s1/nX);\n"+"  dy1 = floor(s1/nY)/nY;\n"+"  dx2 = fract(s2/nX);\n"+"  dy2 = floor(s2/nY)/nY;\n"+"  texpos1.x = dx1+(volpos.x/nX);\n"+"  texpos1.y = dy1+(volpos.y/nY);\n"+"  texpos2.x = dx2+(volpos.x/nX);\n"+"  texpos2.y = dy2+(volpos.y/nY);\n"+"  return mix( texture2D(vol,texpos1), texture2D(vol,texpos2), (volpos.z*nS)-s1);\n"+"}\n"+"\n",normalFunctionShaderText:function(){if(this.surfaceNormalsNeeded){return"vec4 getNormalFromTexture(sampler2D sampler, vec3 pos, float nS, float nX, float nY) {\n"+"   vec4 n = (2.0*cTexture3D(sampler, pos, nS, nX, nY)-1.0);\n"+"   return vec4(normalize(n.xyz), length(n.xyz));\n"+"}\n"+"\n"+"vec4 getNormalOnTheFly(sampler2D sampler, vec3 voxPos, float nS, float nX, float nY){\n"+"   float v0 = cTexture3D(sampler, voxPos + vec3(offset.x, 0, 0), nS, nX, nY).r;\n"+"   float v1 = cTexture3D(sampler, voxPos - vec3(offset.x, 0, 0), nS, nX, nY).r;\n"+"   float v2 = cTexture3D(sampler, voxPos + vec3(0, offset.y, 0), nS, nX, nY).r;\n"+"   float v3 = cTexture3D(sampler, voxPos - vec3(0, offset.y, 0), nS, nX, nY).r;\n"+"   float v4 = cTexture3D(sampler, voxPos + vec3(0, 0, offset.z), nS, nX, nY).r;\n"+"   float v5 = cTexture3D(sampler, voxPos - vec3(0, 0, offset.z), nS, nX, nY).r;\n"+"   vec3 grad = vec3(v0-v1, v2-v3, v4-v5)*0.5;\n"+"   return vec4(normalize(grad), length(grad));\n"+"}\n"+"\n";}else{return"";}},defaultLoopFragmentShaderText:function(inlineShaderText,inlineLightAssigment,initializeValues){initializeValues=typeof initializeValues!=='undefined'?initializeValues:"";var shaderLoop="void main()\n"+"{\n"+"  bool out_box = all(bvec2(any(greaterThan(pos.xyz, vec3(1.0))), any(lessThan(pos.xyz, vec3(0.0)))));\n"+"  if(out_box) discard;\n"+"  vec3 cam_pos = vec3(modelViewMatrixInverse[3][0], modelViewMatrixInverse[3][1], modelViewMatrixInverse[3][2]);\n"+"  vec3 dir = normalize(pos.xyz-(cam_pos/dimensions+0.5));\n"+"  vec3 ray_pos = pos.xyz;\n"+"  vec4 accum  = vec4(0.0, 0.0, 0.0, 0.0);\n"+"  vec4 sample = vec4(0.0, 0.0, 0.0, 0.0);\n"+"  vec4 value  = vec4(0.0, 0.0, 0.0, 0.0);\n"+"  float cont = 0.0;\n"+"  vec3 step_size = dir/Steps;\n";if(x3dom.nodeTypes.X3DLightNode.lightID>0){shaderLoop+="  vec3 ambient = vec3(0.0, 0.0, 0.0);\n"+"  vec3 diffuse = vec3(0.0, 0.0, 0.0);\n"+"  vec3 specular = vec3(0.0, 0.0, 0.0);\n"+"  vec4 step_eye = modelViewMatrix * vec4(step_size, 0.0);\n"+"  vec4 positionE = position_eye;\n"+"  float lightFactor = 1.0;\n";}else{shaderLoop+="  float lightFactor = 1.2;\n";}
shaderLoop+=initializeValues+"  float opacityFactor = 10.0;\n"+"  float t_near;\n"+"  float t_far;\n"+"  for(float i = 0.0; i < Steps; i+=1.0)\n"+"  {\n"+"    value = cTexture3D(uVolData, ray_pos, numberOfSlices, slicesOverX, slicesOverY);\n"+"    value = value.rgbr;\n";if(this.surfaceNormalsNeeded){if(this.normalTextureProvided){shaderLoop+="    vec4 gradEye = getNormalFromTexture(uSurfaceNormals, ray_pos, numberOfSlices, slicesOverX, slicesOverY);\n";}else{shaderLoop+="    vec4 gradEye = getNormalOnTheFly(uVolData, ray_pos, numberOfSlices, slicesOverX, slicesOverY);\n";}
shaderLoop+="    vec4 grad = vec4((modelViewMatrix * vec4(gradEye.xyz, 0.0)).xyz, gradEye.a);\n";}
shaderLoop+=inlineShaderText;if(x3dom.nodeTypes.X3DLightNode.lightID>0){shaderLoop+=inlineLightAssigment;}
shaderLoop+="    sample.a = value.a * opacityFactor * (1.0/Steps);\n"+"    sample.rgb = value.rgb * sample.a * lightFactor;\n"+"    accum.rgb += (1.0 - accum.a) * sample.rgb;\n"+"    accum.a += (1.0 - accum.a) * sample.a;\n"+"    ray_pos.xyz += step_size;\n";if(x3dom.nodeTypes.X3DLightNode.lightID>0){shaderLoop+="    positionE += step_eye;\n";}
shaderLoop+="    if(accum.a >= 1.0 || ray_pos.x < 0.0 || ray_pos.y < 0.0 || ray_pos.z < 0.0 || ray_pos.x > 1.0 || ray_pos.y > 1.0 || ray_pos.z > 1.0)\n"+"      break;\n"+"  }\n"+"  gl_FragColor = accum;\n"+"}";return shaderLoop;}}));x3dom.registerNodeType("X3DVolumeRenderStyleNode","VolumeRendering",defineClass(x3dom.nodeTypes.X3DNode,function(ctx){x3dom.nodeTypes.X3DVolumeRenderStyleNode.superClass.call(this,ctx);this.addField_SFBool(ctx,'enabled',true);this._styleID=0;this._first=false;this._volumeDataParent=null;},{nodeChanged:function(){if(!this._styleID){this._styleID=++x3dom.nodeTypes.X3DVolumeRenderStyleNode.styleID;}},updateProperties:function(volumeData){if(this._cf.renderStyle){if(this._cf.renderStyle.nodes){for(var i=0;i<this._cf.renderStyle.nodes.length;i++){if(this._cf.renderStyle.nodes[i].updateProperties!=undefined){this._cf.renderStyle.nodes[i].updateProperties(volumeData);}}}else if(this._cf.renderStyle.node){this._cf.renderStyle.node.updateProperties(volumeData);}}
this._volumeDataParent=volumeData;if(this._volumeDataParent._styleList.indexOf(this.typeName())!=-1){this._first=false;}else{this._first=true;this._volumeDataParent._styleList.push(this.typeName());}},initializeValues:function(){return"";},styleUniformsShaderText:function(){return"";},styleShaderText:function(){return"";},inlineStyleShaderText:function(){return"";},lightAssigment:function(){var shaderText="";for(var l=0;l<x3dom.nodeTypes.X3DLightNode.lightID;l++){shaderText+="    lighting(light"+l+"_Type, "+"light"+l+"_Location, "+"light"+l+"_Direction, "+"light"+l+"_Color, "+"light"+l+"_Attenuation, "+"light"+l+"_Radius, "+"light"+l+"_Intensity, "+"light"+l+"_AmbientIntensity, "+"light"+l+"_BeamWidth, "+"light"+l+"_CutOffAngle, "+"grad.xyz, positionE.xyz, ambient, diffuse, specular);\n";}
shaderText+="    value.rgb = ambient*value.rgb + diffuse*value.rgb + specular;\n";return shaderText;},lightEquationShaderText:function(){if(x3dom.nodeTypes.X3DLightNode.lightID>0){return"void lighting(in float lType, in vec3 lLocation, in vec3 lDirection, in vec3 lColor, in vec3 lAttenuation, "+"in float lRadius, in float lIntensity, in float lAmbientIntensity, in float lBeamWidth, "+"in float lCutOffAngle, in vec3 N, in vec3 V, inout vec3 ambient, inout vec3 diffuse, "+"inout vec3 specular)\n"+"{\n"+"   vec3 L;\n"+"   float spot = 1.0, attentuation = 0.0;\n"+"   if(lType == 0.0) {\n"+"       L = -normalize(lDirection);\n"+"       V = normalize(V);\n"+"       attentuation = 1.0;\n"+"   } else{\n"+"       L = (lLocation - (-V));\n"+"       float d = length(L);\n"+"       L = normalize(L);\n"+"       V = normalize(V);\n"+"       if(lRadius == 0.0 || d <= lRadius) {\n"+"           attentuation = 1.0 / max(lAttenuation.x + lAttenuation.y * d + lAttenuation.z * (d * d), 1.0);\n"+"       }\n"+"       if(lType == 2.0) {\n"+"           float spotAngle = acos(max(0.0, dot(-L, normalize(lDirection))));\n"+"           if(spotAngle >= lCutOffAngle) spot = 0.0;\n"+"           else if(spotAngle <= lBeamWidth) spot = 1.0;\n"+"           else spot = (spotAngle - lCutOffAngle ) / (lBeamWidth - lCutOffAngle);\n"+"       }\n"+"   }\n"+"   vec3  H = normalize( L + V );\n"+"   float NdotL = max(0.0, dot(L, N));\n"+"   float NdotH = max(0.0, dot(H, N));\n"+"   float ambientFactor  = lAmbientIntensity;\n"+"   float diffuseFactor  = lIntensity * NdotL;\n"+"   float specularFactor = lIntensity * pow(NdotH,128.0);\n"+"   ambient  += lColor * ambientFactor * attentuation * spot;\n"+"   diffuse  += lColor * diffuseFactor * attentuation * spot;\n"+"   specular += lColor * specularFactor * attentuation * spot;\n"+"}\n"+"\n";}else{return"";}}}));x3dom.nodeTypes.X3DVolumeRenderStyleNode.styleID=0;x3dom.registerNodeType("X3DComposableVolumeRenderStyleNode","VolumeRendering",defineClass(x3dom.nodeTypes.X3DVolumeRenderStyleNode,function(ctx){x3dom.nodeTypes.X3DComposableVolumeRenderStyleNode.superClass.call(this,ctx);this.addField_SFNode('surfaceNormals',x3dom.nodeTypes.Texture);},{}));x3dom.registerNodeType("BlendedVolumeStyle","VolumeRendering",defineClass(x3dom.nodeTypes.X3DComposableVolumeRenderStyleNode,function(ctx){x3dom.nodeTypes.BlendedVolumeStyle.superClass.call(this,ctx);this.addField_SFNode('renderStyle',x3dom.nodeTypes.X3DComposableVolumeRenderStyleNode);this.addField_SFNode('voxels',x3dom.nodeTypes.X3DVolumeDataNode);this.addField_SFFloat(ctx,'weightConstant1',0.5);this.addField_SFFloat(ctx,'weightConstant2',0.5);this.addField_SFString(ctx,'weightFunction1',"CONSTANT");this.addField_SFString(ctx,'weightFunction2',"CONSTANT");this.addField_SFNode('weightTransferFunction1',x3dom.nodeTypes.X3DTexture2DNode);this.addField_SFNode('weightTransferFunction2',x3dom.nodeTypes.X3DTexture2DNode);this.uniformFloatWeightConstant1=new x3dom.nodeTypes.Uniform(ctx);this.uniformFloatWeightConstant2=new x3dom.nodeTypes.Uniform(ctx);this.uniformSampler2DVoxels=new x3dom.nodeTypes.Uniform(ctx);this.uniformSampler2DWeightTransferFunction1=new x3dom.nodeTypes.Uniform(ctx);this.uniformSampler2DWeightTransferFunction2=new x3dom.nodeTypes.Uniform(ctx);},{fieldChanged:function(fieldName){switch(fieldName){case'weightConstant1':this.uniformFloatWeightConstant1._vf.value=this._vf.weightConstant1;this.uniformFloatWeightConstant1.fieldChanged("value");break;case'weightConstant2':this.uniformFloatWeightConstant2._vf.value=this._vf.weightConstant2;this.uniformFloatWeightConstant2.fieldChanged("value");break;case'weightFunction1':break;case'weightFunction2':break;}},uniforms:function(){var unis=[];if(this._cf.voxels.node||this._cf.weightTransferFunction1.node||this._cf.weightTransferFunction2.node){this.uniformSampler2DVoxels._vf.name='uVolBlendData';this.uniformSampler2DVoxels._vf.type='SFInt32';this.uniformSampler2DVoxels._vf.value=this._volumeDataParent._textureID++;unis.push(this.uniformSampler2DVoxels);if(this._cf.weightTransferFunction1.node){this.uniformSampler2DWeightTransferFunction1._vf.name='uWeightTransferFunctionA';this.uniformSampler2DWeightTransferFunction1._vf.type='SFInt32';this.uniformSampler2DWeightTransferFunction1._vf.value=this._volumeDataParent._textureID++;unis.push(this.uniformSampler2DWeightTransferFunction1);}
if(this._cf.weightTransferFunction2.node){this.uniformSampler2DWeightTransferFunction2._vf.name='uWeightTransferFunctionB';this.uniformSampler2DWeightTransferFunction2._vf.type='SFInt32';this.uniformSampler2DWeightTransferFunction2._vf.value=this._volumeDataParent._textureID++;unis.push(this.uniformSampler2DWeightTransferFunction2);}}
this.uniformFloatWeightConstant1._vf.name='uWeightConstantA';this.uniformFloatWeightConstant1._vf.type='SFFloat';this.uniformFloatWeightConstant1._vf.value=this._vf.weightConstant1;unis.push(this.uniformFloatWeightConstant1);this.uniformFloatWeightConstant2._vf.name='uWeightConstantB';this.uniformFloatWeightConstant2._vf.type='SFFloat';this.uniformFloatWeightConstant2._vf.value=this._vf.weightConstant2;unis.push(this.uniformFloatWeightConstant2);if(this._cf.renderStyle.node){var renderStyleUniforms=this._cf.renderStyle.node.uniforms();Array.forEach(renderStyleUniforms,function(uni){uni._vf.name=uni._vf.name.replace(/uSurfaceNormals/,"uBlendSurfaceNormals")});unis=unis.concat(renderStyleUniforms);}
return unis;},textures:function(){var texs=[];if(this._cf.voxels.node){var tex=this._cf.voxels.node;tex._vf.repeatS=false;tex._vf.repeatT=false;texs.push(tex);}
if(this._cf.weightTransferFunction1.node){var tex=this._cf.weightTransferFunction1.node;tex._vf.repeatS=false;tex._vf.repeatT=false;texs.push(tex);}
if(this._cf.weightTransferFunction2.node){var tex=this._cf.weightTransferFunction2.node;tex._vf.repeatS=false;tex._vf.repeatT=false;texs.push(tex);}
if(this._cf.renderStyle.node){var renderStyleTextures=this._cf.renderStyle.node.textures();texs=texs.concat(renderStyleTextures);}
return texs;},initializeValues:function(){var initialValues="";if(x3dom.nodeTypes.X3DLightNode.lightID>0){initialValues+="  vec3 ambientBlend = vec3(0.0, 0.0, 0.0);\n"+"  vec3 diffuseBlend = vec3(0.0, 0.0, 0.0);\n"+"  vec3 specularBlend = vec3(0.0, 0.0, 0.0);\n";}
return initialValues;},styleUniformsShaderText:function(){var uniformsText="uniform float uWeightConstantA;\n"+"uniform float uWeightConstantB;\n"+"uniform sampler2D uBlendSurfaceNormals;\n";if(this._cf.voxels.node){uniformsText+="uniform sampler2D uVolBlendData;\n";}
if(this._cf.weightTransferFunction1.node){uniformsText+="uniform sampler2D uWeightTransferFunctionA;\n";}
if(this._cf.weightTransferFunction2.node){uniformsText+="uniform sampler2D uWeightTransferFunctionB;\n";}
if(this._cf.renderStyle.node){uniformsText+=this._cf.renderStyle.node.styleUniformsShaderText();}
return uniformsText;},styleShaderText:function(){var styleText="";if(this._cf.renderStyle.node&&this._cf.renderStyle.node.styleShaderText!=undefined){styleText+=this._cf.renderStyle.node.styleShaderText();}
return styleText;},inlineStyleShaderText:function(){var nSlices=this._cf.voxels.node._vf.numberOfSlices.toPrecision(5);var xSlices=this._cf.voxels.node._vf.slicesOverX.toPrecision(5);var ySlices=this._cf.voxels.node._vf.slicesOverY.toPrecision(5);var inlineText="    vec4 blendValue = cTexture3D(uVolBlendData, ray_pos, "+nSlices+", "+xSlices+", "+ySlices+");\n"+"    blendValue = vec4(blendValue.rgb,(0.299*blendValue.r)+(0.587*blendValue.g)+(0.114*blendValue.b));\n";if(this._cf.renderStyle.node&&this._cf.renderStyle.node._cf.surfaceNormals.node){inlineText+="    vec4 blendGradEye = getNormalFromTexture(uBlendSurfaceNormals, ray_pos, "+nSlices+", "+xSlices+", "+ySlices+");\n";}else{inlineText+="    vec4 blendGradEye = getNormalOnTheFly(uVolBlendData, ray_pos, "+nSlices+", "+xSlices+", "+ySlices+");\n";}
inlineText+="    vec4 blendGrad = vec4((modelViewMatrix * vec4(blendGradEye.xyz, 0.0)).xyz, blendGradEye.a);\n";if(this._cf.renderStyle.node){var tempText=this._cf.renderStyle.node.inlineStyleShaderText().replace(/value/gm,"blendValue").replace(/grad/gm,"blendGrad");inlineText+=tempText.replace(/ambient/gm,"ambientBlend").replace(/diffuse/gm,"diffuseBlend").replace(/specular/gm,"specularBlend");}
switch(this._vf.weightFunction1.toUpperCase()){case"CONSTANT":inlineText+="    float wA = uWeightConstantA;\n";break;case"ALPHA0":inlineText+="    float wA = value.a;\n";break;case"ALPHA1":inlineText+="    float wA = blendValue.a;\n";break;case"ONE_MINUS_ALPHA0":inlineText+="    float wA = 1.0 - value.a;\n";break;case"ONE_MINUS_ALPHA1":inlineText+="    float wA = 1.0 - blendValue.a;\n";break;case"TABLE":if(this._cf.weightTransferFunction1){inlineText+="    float wA = texture2D(uWeightTransferFunctionA, vec2(value.a, blendValue.a));\n";}else{inlineText+="    float wA = value.a;\n";x3dom.debug.logWarning('[VolumeRendering][BlendedVolumeStyle] TABLE specified on weightFunction1 but not weightTrnafer function provided, using ALPHA0.');}
break;}
switch(this._vf.weightFunction2.toUpperCase()){case"CONSTANT":inlineText+="    float wB = uWeightConstantB;\n";break;case"ALPHA0":inlineText+="    float wB = value.a;\n";break;case"ALPHA1":inlineText+="    float wB = blendValue.a;\n";break;case"ONE_MINUS_ALPHA0":inlineText+="    float wB = 1.0 - value.a;\n";break;case"ONE_MINUS_ALPHA1":inlineText+="    float wB = 1.0 - blendValue.a;\n";break;case"TABLE":if(this._cf.weightTransferFunction2){inlineText+="    float wB = texture2D(uWeightTransferFunctionB, vec2(value.a, blendValue.a));\n";}else{inlineText+="    float wB = value.a;\n";x3dom.debug.logWarning('[VolumeRendering][BlendedVolumeStyle] TABLE specified on weightFunction2 but not weightTrasnferFunction provided, using ALPHA0.');}
break;}
if(x3dom.nodeTypes.X3DLightNode.lightID==0){inlineText+="    value = clamp(value * wA + blendValue * wB, 0.0, 1.0);\n";}
return inlineText;},lightAssigment:function(){var inlineText="";if(x3dom.nodeTypes.X3DLightNode.lightID>0){if(this._cf.renderStyle.node){var tempText=this._cf.renderStyle.node.lightAssigment().replace(/value/gm,"blendValue").replace(/grad/gm,"blendGrad");inlineText+=tempText.replace(/ambient/gm,"ambientBlend").replace(/diffuse/gm,"diffuseBlend").replace(/specular/gm,"specularBlend");}else{for(var l=0;l<x3dom.nodeTypes.X3DLightNode.lightID;l++){inlineText+="    lighting(light"+l+"_Type, "+"light"+l+"_Location, "+"light"+l+"_Direction, "+"light"+l+"_Color, "+"light"+l+"_Attenuation, "+"light"+l+"_Radius, "+"light"+l+"_Intensity, "+"light"+l+"_AmbientIntensity, "+"light"+l+"_BeamWidth, "+"light"+l+"_CutOffAngle, "+"blendGradEye.xyz, -positionE.xyz, ambientBlend, diffuseBlend, specularBlend);\n";}
inlineText+="    blendValue.rgb = ambientBlend*blendValue.rgb + diffuseBlend*blendValue.rgb + specularBlend;\n";}}
inlineText+="    value.rgb = clamp(value.rgb * wA + blendValue.rgb * wB, 0.0, 1.0);\n"+"    value.a = clamp(value.a * wA + blendValue.a * wB, 0.0, 1.0);\n";return inlineText;}}));x3dom.registerNodeType("BoundaryEnhancementVolumeStyle","VolumeRendering",defineClass(x3dom.nodeTypes.X3DComposableVolumeRenderStyleNode,function(ctx){x3dom.nodeTypes.BoundaryEnhancementVolumeStyle.superClass.call(this,ctx);this.addField_SFFloat(ctx,'retainedOpacity',1);this.addField_SFFloat(ctx,'boundaryOpacity',0);this.addField_SFFloat(ctx,'opacityFactor',1);this.uniformFloatRetainedOpacity=new x3dom.nodeTypes.Uniform(ctx);this.uniformFloatBoundaryOpacity=new x3dom.nodeTypes.Uniform(ctx);this.uniformFloatOpacityFactor=new x3dom.nodeTypes.Uniform(ctx);this.uniformSampler2DSurfaceNormals=new x3dom.nodeTypes.Uniform(ctx);this.uniformBoolEnableBoundary=new x3dom.nodeTypes.Uniform(ctx);},{fieldChanged:function(fieldName){switch(fieldName){case'retainedOpacity':this.uniformFloatRetainedOpacity._vf.value=this._vf.retainedOpacity;this.uniformFloatRetainedOpacity.fieldChanged("value");break;case'boundaryOpacity':this.uniformFloatBoundaryOpacity._vf.value=this._vf.boundaryOpacity;this.uniformFloatBoundaryOpacity.fieldChanged("value");break;case'opacityFactor':this.uniformFloatOpacityFactor._vf.value=this._vf.opacityFactor;this.uniformFloatOpacityFactor.fieldChanged("value");break;}},uniforms:function(){var unis=[];if(this._cf.surfaceNormals.node){var volumeDataParent=this._parentNodes[0];while(!x3dom.isa(volumeDataParent,x3dom.nodeTypes.X3DVolumeDataNode)||!x3dom.isa(volumeDataParent,x3dom.nodeTypes.X3DNode)){volumeDataParent=volumeDataParent._parentNodes[0];}
if(x3dom.isa(volumeDataParent,x3dom.nodeTypes.X3DVolumeDataNode)==false){x3dom.debug.logError("[VolumeRendering][BoundaryEnhancementVolumeStyle] Not VolumeData parent found!");volumeDataParent=null;}
this.uniformSampler2DSurfaceNormals._vf.name='uSurfaceNormals';this.uniformSampler2DSurfaceNormals._vf.type='SFInt32';this.uniformSampler2DSurfaceNormals._vf.value=volumeDataParent._textureID++;unis.push(this.uniformSampler2DSurfaceNormals);}
this.uniformFloatRetainedOpacity._vf.name='uRetainedOpacity'+this._styleID;this.uniformFloatRetainedOpacity._vf.type='SFFloat';this.uniformFloatRetainedOpacity._vf.value=this._vf.retainedOpacity;unis.push(this.uniformFloatRetainedOpacity);this.uniformFloatBoundaryOpacity._vf.name='uBoundaryOpacity'+this._styleID;this.uniformFloatBoundaryOpacity._vf.type='SFFloat';this.uniformFloatBoundaryOpacity._vf.value=this._vf.boundaryOpacity;unis.push(this.uniformFloatBoundaryOpacity);this.uniformFloatOpacityFactor._vf.name='uOpacityFactor'+this._styleID;this.uniformFloatOpacityFactor._vf.type='SFFloat';this.uniformFloatOpacityFactor._vf.value=this._vf.opacityFactor;unis.push(this.uniformFloatOpacityFactor);this.uniformBoolEnableBoundary._vf.name='uEnableBoundary'+this._styleID;this.uniformBoolEnableBoundary._vf.type='SFBool';this.uniformBoolEnableBoundary._vf.value=this._vf.enabled;unis.push(this.uniformBoolEnableBoundary);return unis;},textures:function(){var texs=[];if(!(this._cf.surfaceNormals.node==null)){var tex=this._cf.surfaceNormals.node;tex._vf.repeatS=false;tex._vf.repeatT=false;texs.push(tex)}
return texs;},styleUniformsShaderText:function(){return"uniform float uRetainedOpacity"+this._styleID+";\n"+"uniform float uBoundaryOpacity"+this._styleID+";\n"+"uniform float uOpacityFactor"+this._styleID+";\n"+"uniform bool uEnableBoundary"+this._styleID+";\n";},styleShaderText:function(){if(this._first){return"void boundaryEnhancement(inout vec4 original_color, in float gradientMagnitude, in float retainedOpacity, in float boundaryOpacity, in float opacityFactor){\n"+"   original_color.a = original_color.a * (retainedOpacity + (boundaryOpacity * pow(gradientMagnitude, opacityFactor)));\n"+"}\n";}else{return"";}},inlineStyleShaderText:function(){var inlineText="    if(uEnableBoundary"+this._styleID+"){\n"+"    boundaryEnhancement(value, grad.w, uRetainedOpacity"+this._styleID+", uBoundaryOpacity"+this._styleID+", uOpacityFactor"+this._styleID+");\n"+"}\n";return inlineText;}}));x3dom.registerNodeType("CartoonVolumeStyle","VolumeRendering",defineClass(x3dom.nodeTypes.X3DComposableVolumeRenderStyleNode,function(ctx){x3dom.nodeTypes.CartoonVolumeStyle.superClass.call(this,ctx);this.addField_SFColor(ctx,'parallelColor',0,0,0);this.addField_SFColor(ctx,'orthogonalColor',1,1,1);this.addField_SFInt32(ctx,'colorSteps',4);this.uniformParallelColor=new x3dom.nodeTypes.Uniform(ctx);this.uniformOrthogonalColor=new x3dom.nodeTypes.Uniform(ctx);this.uniformIntColorSteps=new x3dom.nodeTypes.Uniform(ctx);this.uniformSampler2DSurfaceNormals=new x3dom.nodeTypes.Uniform(ctx);this.uniformBoolEnableCartoon=new x3dom.nodeTypes.Uniform(ctx);},{fieldChanged:function(fieldName){switch(fieldName){case'parallelColor':this.uniformParallelColor._vf.value=this._vf.parallelColor;this.uniformParallelColor.fieldChanged("value");break;case'orthogonalColor':this.uniformOrthogonalColor._vf.value=this._vf.orthogonalColor;this.uniformOrthogonalColor.fieldChanged("value");break;case'colorSteps':this.uniformIntColorSteps._vf.value=this._vf.colorSteps;this.uniformIntColorSteps.fieldChanged("value");break;}},uniforms:function(){var unis=[];if(this._cf.surfaceNormals.node){this.uniformSampler2DSurfaceNormals._vf.name='uSurfaceNormals';this.uniformSampler2DSurfaceNormals._vf.type='SFInt32';this.uniformSampler2DSurfaceNormals._vf.value=this._volumeDataParent._textureID++;unis.push(this.uniformSampler2DSurfaceNormals);}
this.uniformParallelColor._vf.name='uParallelColor'+this._styleID;this.uniformParallelColor._vf.type='SFColor';this.uniformParallelColor._vf.value=this._vf.parallelColor;unis.push(this.uniformParallelColor);this.uniformOrthogonalColor._vf.name='uOrthogonalColor'+this._styleID;this.uniformOrthogonalColor._vf.type='SFColor';this.uniformOrthogonalColor._vf.value=this._vf.orthogonalColor;unis.push(this.uniformOrthogonalColor);this.uniformIntColorSteps._vf.name='uColorSteps'+this._styleID;this.uniformIntColorSteps._vf.type='SFInt32';this.uniformIntColorSteps._vf.value=this._vf.colorSteps;unis.push(this.uniformIntColorSteps);this.uniformBoolEnableCartoon._vf.name='uEnableCartoon'+this._styleID;this.uniformBoolEnableCartoon._vf.type='SFBool';this.uniformBoolEnableCartoon._vf.value=this._vf.enabled;unis.push(this.uniformBoolEnableCartoon);return unis;},textures:function(){var texs=[];if(this._cf.surfaceNormals.node){var tex=this._cf.surfaceNormals.node;tex._vf.repeatS=false;tex._vf.repeatT=false;texs.push(tex);}
return texs;},styleShaderText:function(){if(this._first){return"//Convert RGBA color to HSVA\n"+"vec4 rgba2hsva(vec4 rgba){\n"+"   float zat, izen;\n"+"   float R = rgba.r, G = rgba.g, B = rgba.b;\n"+"   float minim = min(R, min(G, B)), maxim = max(R, max(G, B));\n"+"   float delta = maxim-minim;\n"+"   if(minim == maxim){\n"+"       return vec4(0.0, 0.0, maxim, rgba.a);\n"+"   }else{\n"+"       zat = (R == maxim) ? G - B : ((G == maxim) ? B - R : R - G);\n"+"       izen = (R == maxim) ? ((G<B) ? 6.0 : 0.0) : ((G == maxim) ? 2.0 : 4.0);\n"+"        return vec4((zat/delta + izen)/6.0, delta/maxim, maxim, rgba.a);\n"+"    }\n"+"}\n"+"\n"+"//Convert RGB color to HSV\n"+"vec3 rgb2hsv(vec3 rgb){\n"+"    return rgba2hsva(vec4(rgb, 1.0)).rgb;\n"+"}\n"+"\n"+"//Convert HSVA color to RGBA\n"+"vec4 hsva2rgba(vec4 hsva){\n"+"   float r, g, b;\n"+"   float h=hsva.x, s=hsva.y, v=hsva.z;\n"+"   float i = floor(h * 6.0);\n"+"   float f = h * 6.0 - i;\n"+"   float p = v * (1.0 - s);\n"+"   float q = v * (1.0 - f * s);\n"+"   float t = v * (1.0 - (1.0 - f) * s);\n"+"   i = mod(i,6.0);\n"+"   if( i == 6.0 || i == 0.0 ) r = v, g = t, b = p;\n"+"   else if( i == 1.0) r = q, g = v, b = p;\n"+"   else if( i == 2.0) r = p, g = v, b = t;\n"+"   else if( i == 3.0) r = p, g = q, b = v;\n"+"   else if( i == 4.0) r = t, g = p, b = v;\n"+"   else if( i == 5.0) r = v, g = p, b = q;\n"+"   return vec4(r,g,b,hsva.w);\n"+"}\n"+"\n"+"//Convert HSV color to RGB\n"+"vec3 hsv2rgb(vec3 hsv){\n"+"   return hsva2rgba(vec4(hsv, 1.0)).rgb;\n"+"}\n"+"void getCartoonStyle(inout vec4 outputColor, vec3 orthogonalColor, vec3 parallelColor, int colorSteps, vec4 surfNormal, vec3 V)\n"+"{\n"+"   float steps = clamp(float(colorSteps), 1.0,64.0);\n"+"   float range_size = pi_half / steps;\n"+"   float cos_angle = abs(dot(surfNormal.xyz, V));\n"+"   float interval = clamp(floor(cos_angle / range_size),0.0,steps);\n"+"   float ang = interval * range_size;\n"+"   outputColor.rgb = hsv2rgb(mix(orthogonalColor, parallelColor, ang));\n"+"}\n"+"\n";}else{return"";}},styleUniformsShaderText:function(){var styleText="uniform vec3 uParallelColor"+this._styleID+";\n"+"uniform vec3 uOrthogonalColor"+this._styleID+";\n"+"uniform int uColorSteps"+this._styleID+";\n"+"uniform bool uEnableCartoon"+this._styleID+";\n";if(this._first){styleText+="const float pi_half = "+(Math.PI/2.0).toPrecision(5)+";\n";}
return styleText;},inlineStyleShaderText:function(){var inlineText="  if(uEnableCartoon"+this._styleID+"){\n"+"      getCartoonStyle(value, rgb2hsv(uOrthogonalColor"+this._styleID+"), rgb2hsv(uParallelColor"+this._styleID+"), uColorSteps"+this._styleID+", gradEye, dir);\n"+"  }\n";return inlineText;}}));x3dom.registerNodeType("ComposedVolumeStyle","VolumeRendering",defineClass(x3dom.nodeTypes.X3DComposableVolumeRenderStyleNode,function(ctx){x3dom.nodeTypes.ComposedVolumeStyle.superClass.call(this,ctx);this.addField_MFNode('renderStyle',x3dom.nodeTypes.X3DComposableVolumeRenderStyleNode);this.normalTextureProvided=false;},{uniforms:function(){var unis=[];var i,n=this._cf.renderStyle.nodes.length;for(i=0;i<n;i++){var that=this;Array.forEach(this._cf.renderStyle.nodes[i].uniforms(),function(uniform){var contains_uniform=false;Array.forEach(unis,function(accum){if(accum._vf.name==uniform._vf.name){contains_uniform=true;}});if(contains_uniform==false){unis=unis.concat(uniform);}});}
return unis;},textures:function(){var texs=[];var i,n=this._cf.renderStyle.nodes.length;for(i=0;i<n;i++){Array.forEach(this._cf.renderStyle.nodes[i].textures(),function(texture){var contains_texture=false;Array.forEach(texs,function(accum){if(accum._vf.url[0]==texture._vf.url[0]){contains_texture=true;}});if(contains_texture==false){texs=texs.concat(texture);}});}
return texs;},initializeValues:function(){var initialValues="";var n=this._cf.renderStyle.nodes.length;for(var i=0;i<n;i++){if(this._cf.renderStyle.nodes[i].initializeValues!=undefined){initialValues+=this._cf.renderStyle.nodes[i].initializeValues()+"\n";}}
return initialValues;},styleUniformsShaderText:function(){var styleText="";var n=this._cf.renderStyle.nodes.length;if(n==1&&!x3dom.isa(this._cf.renderStyle.nodes[0],x3dom.nodeTypes.OpacityMapVolumeStyle)){this.surfaceNormalsNeeded=true;}
for(var i=0;i<n;i++){styleText+=this._cf.renderStyle.nodes[i].styleUniformsShaderText()+"\n";if(this._cf.renderStyle.nodes[i]._cf.surfaceNormals&&this._cf.renderStyle.nodes[i]._cf.surfaceNormals.node!=null){this.normalTextureProvided=true;this._cf.surfaceNormals.node=this._cf.renderStyle.nodes[i]._cf.surfaceNormals.node;}}
return styleText;},styleShaderText:function(){var styleText="";var n=this._cf.renderStyle.nodes.length;for(var i=0;i<n;i++){if(this._cf.renderStyle.nodes[i].styleShaderText!=undefined){styleText+=this._cf.renderStyle.nodes[i].styleShaderText()+"\n";}}
return styleText;},inlineStyleShaderText:function(){var inlineText="";var n=this._cf.renderStyle.nodes.length;for(var i=0;i<n;i++){inlineText+=this._cf.renderStyle.nodes[i].inlineStyleShaderText();}
return inlineText;},lightAssigment:function(){var isBlendedStyle=false;var blendedLightAssigmentText;Array.forEach(this._cf.renderStyle.nodes,function(style){if(x3dom.isa(style,x3dom.nodeTypes.BlendedVolumeStyle)){isBlendedStyle=true;blendedLightAssigmentText=style.lightAssigment();}});if(!isBlendedStyle){return this._cf.renderStyle.nodes[0].lightAssigment();}else{return this._cf.renderStyle.nodes[0].lightAssigment()+blendedLightAssigmentText;}},lightEquationShaderText:function(){return this._cf.renderStyle.nodes[0].lightEquationShaderText();}}));x3dom.registerNodeType("EdgeEnhancementVolumeStyle","VolumeRendering",defineClass(x3dom.nodeTypes.X3DComposableVolumeRenderStyleNode,function(ctx){x3dom.nodeTypes.EdgeEnhancementVolumeStyle.superClass.call(this,ctx);this.addField_SFColor(ctx,'edgeColor',0,0,0);this.addField_SFFloat(ctx,'gradientThreshold',0.4);this.uniformColorEdgeColor=new x3dom.nodeTypes.Uniform(ctx);this.uniformFloatGradientThreshold=new x3dom.nodeTypes.Uniform(ctx);this.uniformSampler2DSurfaceNormals=new x3dom.nodeTypes.Uniform(ctx);this.uniformBoolEdgeEnable=new x3dom.nodeTypes.Uniform(ctx);},{fieldChanged:function(fieldName){if(fieldName=="edgeColor"){this.uniformColorEdgeColor._vf.value=this._vf.edgeColor;this.uniformColorEdgeColor.fieldChanged("value");}else if(fieldName=="gradientThreshold"){this.uniformFloatGradientThreshold._vf.value=this._vf.gradientThreshold;this.uniformFloatGradientThreshold.fieldChanged("value");}},uniforms:function(){var unis=[];if(this._cf.surfaceNormals.node){this.uniformSampler2DSurfaceNormals._vf.name='uSurfaceNormals';this.uniformSampler2DSurfaceNormals._vf.type='SFInt32';this.uniformSampler2DSurfaceNormals._vf.value=this._volumeDataParent._textureID++;unis.push(this.uniformSampler2DSurfaceNormals);}
this.uniformColorEdgeColor._vf.name='uEdgeColor'+this._styleID;this.uniformColorEdgeColor._vf.type='SFColor';this.uniformColorEdgeColor._vf.value=this._vf.edgeColor;unis.push(this.uniformColorEdgeColor);this.uniformFloatGradientThreshold._vf.name='uGradientThreshold'+this._styleID;this.uniformFloatGradientThreshold._vf.type='SFFloat';this.uniformFloatGradientThreshold._vf.value=this._vf.gradientThreshold;unis.push(this.uniformFloatGradientThreshold);this.uniformBoolEdgeEnable._vf.name='uEnableEdge'+this._styleID;this.uniformBoolEdgeEnable._vf.type='SFBool';this.uniformBoolEdgeEnable._vf.value=this._vf.enabled;unis.push(this.uniformBoolEdgeEnable);return unis;},textures:function(){var texs=[];if(this._cf.surfaceNormals.node){var tex=this._cf.surfaceNormals.node;tex._vf.repeatS=false;tex._vf.repeatT=false;texs.push(tex)}
return texs;},styleUniformsShaderText:function(){return"uniform vec3 uEdgeColor"+this._styleID+";\n"+"uniform float uGradientThreshold"+this._styleID+";\n"+"uniform bool uEnableEdge"+this._styleID+";\n";},styleShaderText:function(){if(this._first){return"void edgeEnhancement(inout vec4 originalColor, in vec4 gradient, in vec3 V, in vec3 edgeColor, in float gradientT)\n"+"{\n"+"   if(gradient.a > 0.05){\n"+"       float angle_dif = abs(dot(gradient.xyz,V));\n"+"       if(angle_dif > cos(gradientT)){\n"+"           originalColor.rgb = mix(edgeColor, originalColor.rgb, angle_dif);\n"+"       }\n"+"   }\n"+"}\n";}else{return"";}},inlineStyleShaderText:function(){var inlineText="   if(uEnableEdge"+this._styleID+"){\n"+"       edgeEnhancement(value, gradEye, dir, uEdgeColor"+this._styleID+", uGradientThreshold"+this._styleID+");\n"+"   }\n";return inlineText;}}));x3dom.registerNodeType("IsoSurfaceVolumeData","VolumeRendering",defineClass(x3dom.nodeTypes.X3DVolumeDataNode,function(ctx){x3dom.nodeTypes.IsoSurfaceVolumeData.superClass.call(this,ctx);this.addField_MFNode('renderStyle',x3dom.nodeTypes.X3DVolumeRenderStyleNode);this.addField_SFNode('gradients',x3dom.nodeTypes.Texture);this.addField_MFFloat(ctx,'surfaceValues',[0.0]);this.addField_SFFloat(ctx,'contourStepSize',0);this.addField_SFFloat(ctx,'surfaceTolerance',0);this.uniformSampler2DGradients=new x3dom.nodeTypes.Uniform(ctx);this.uniformFloatContourStepSize=new x3dom.nodeTypes.Uniform(ctx);this.uniformFloatSurfaceTolerance=new x3dom.nodeTypes.Uniform(ctx);this.uniformFloatArraySurfaceValues=new x3dom.nodeTypes.Uniform(ctx);this.vrcMultiTexture=new x3dom.nodeTypes.MultiTexture(ctx);this.vrcVolumeTexture=null;this.vrcSinglePassShader=new x3dom.nodeTypes.ComposedShader(ctx);this.vrcSinglePassShaderVertex=new x3dom.nodeTypes.ShaderPart(ctx);this.vrcSinglePassShaderFragment=new x3dom.nodeTypes.ShaderPart(ctx);this.vrcSinglePassShaderFieldVolData=new x3dom.nodeTypes.Field(ctx);this.vrcSinglePassShaderFieldOffset=new x3dom.nodeTypes.Field(ctx);this.vrcSinglePassShaderFieldDimensions=new x3dom.nodeTypes.Field(ctx);},{fieldChanged:function(fieldName){switch(fieldName){case'surfaceValues':this.uniformFloatArraySurfaceValues._vf.value=this._vf.surfaceValues;this.uniformFloatArraySurfaceValues.fieldChanged("value");break;case'surfaceTolerance':this.uniformFloatSurfaceTolerance._vf.value=this._vf.surfaceTolerance;this.uniformFloatSurfaceTolerance.fieldChanged("value");break;case'contourStepSize':break;}},uniforms:function(){var unis=[];if(this._cf.gradients.node){this.uniformSampler2DGradients._vf.name='uSurfaceNormals';this.uniformSampler2DGradients._vf.type='SFInt32';this.uniformSampler2DGradients._vf.value=this._textureID++;unis.push(this.uniformSampler2DGradients);}
this.uniformFloatArraySurfaceValues._vf.name='uSurfaceValues';this.uniformFloatArraySurfaceValues._vf.type='MFFloat';this.uniformFloatArraySurfaceValues._vf.value=this._vf.surfaceValues;unis.push(this.uniformFloatArraySurfaceValues);this.uniformFloatSurfaceTolerance._vf.name='uSurfaceTolerance';this.uniformFloatSurfaceTolerance._vf.type='MFFloat';this.uniformFloatSurfaceTolerance._vf.value=this._vf.surfaceTolerance;unis.push(this.uniformFloatSurfaceTolerance);if(this._cf.renderStyle.nodes){var n=this._cf.renderStyle.nodes.length;for(var i=0;i<n;i++){Array.forEach(this._cf.renderStyle.nodes[i].uniforms(),function(uniform){var contains_uniform=false;Array.forEach(unis,function(accum){if(accum._vf.name==uniform._vf.name){contains_uniform=true;}});if(contains_uniform==false){unis=unis.concat(uniform);}});}}
return unis;},textures:function(){var texs=[];if(this._cf.gradients.node){var tex=this._cf.gradients.node;tex._vf.repeatS=false;tex._vf.repeatT=false;texs.push(tex);}
var i,n=this._cf.renderStyle.nodes.length;for(i=0;i<n;i++){Array.forEach(this._cf.renderStyle.nodes[i].textures(),function(texture){var contains_texture=false;Array.forEach(texs,function(accum){if(accum._vf.url[0]==texture._vf.url[0]){contains_texture=true;}});if(contains_texture==false){texs=texs.concat(texture);}});}
return texs;},initializeValues:function(){var initialValues="  float previous_value = 0.0;\n";var n=this._cf.renderStyle.nodes.length;for(var i=0;i<n;i++){if(this._cf.renderStyle.nodes[i].initializeValues!=undefined){initialValues+=this._cf.renderStyle.nodes[i].initializeValues()+"\n";}}
return initialValues;},styleUniformsShaderText:function(){var styleText="uniform float uSurfaceTolerance;\n"+"uniform float uSurfaceValues["+this._vf.surfaceValues.length+"];\n";if(this._cf.gradients.node){styleText+="uniform sampler2D uSurfaceNormals;\n";}
var n=this._cf.renderStyle.nodes.length;for(var i=0;i<n;i++){styleText+=this._cf.renderStyle.nodes[i].styleUniformsShaderText()+"\n";if(this._cf.renderStyle.nodes[i]._cf.surfaceNormals&&this._cf.renderStyle.nodes[i]._cf.surfaceNormals.node!=null){this.normalTextureProvided=true;this.surfaceNormals=this._cf.renderStyle.nodes[i]._cf.surfaceNormals.node;}}
this.surfaceNormalsNeeded=true;return styleText;},inlineStyleShaderText:function(){var inlineText="    sample = value.r;\n";if(this._vf.surfaceValues.length==1){if(this._vf.contourStepSize==0.0){inlineText+="   if(((sample>=uSurfaceValues[0] && previous_value<uSurfaceValues[0])||(sample<uSurfaceValues[0] && previous_value>=uSurfaceValues[0])) && (grad.a>=uSurfaceTolerance)){\n"+"       value = vec4(vec3(uSurfaceValues[0]),1.0);\n";if(this._cf.renderStyle.nodes){inlineText+=this._cf.renderStyle.nodes[0].inlineStyleShaderText();}
inlineText+="       accum.rgb += (1.0 - accum.a) * (value.rgb * value.a);\n"+"       accum.a += (1.0 - accum.a) * value.a;\n"+"   }\n";}else{var tmp=this._vf.surfaceValues[0];var positive_range=[tmp];var negative_range=[];var range=[];while(tmp+this._vf.contourStepSize<=1.0){tmp+=this._vf.contourStepSize;positive_range.push(tmp);}
tmp=this._vf.surfaceValues[0];while(tmp-this._vf.contourStepSize>=0.0){tmp-=this._vf.contourStepSize;negative_range.unshift(tmp);}
range=negative_range.concat(positive_range);for(var i=0;i<=range.length-1;i++){var s_value=range[i].toPrecision(3);inlineText+=" if(((sample>="+s_value+" && previous_value<"+s_value+")||(sample<"+s_value+" && previous_value>="+s_value+")) && (grad.a>=uSurfaceTolerance)){\n"+"       value = vec4(vec3("+s_value+"),1.0);\n";if(this._cf.renderStyle.nodes){inlineText+=this._cf.renderStyle.nodes[0].inlineStyleShaderText();}
inlineText+="       accum.rgb += (1.0 - accum.a) * (value.rgb * value.a);\n"+"       accum.a += (1.0 - accum.a) * value.a;\n"+"   }\n";};}}else{var n_styles=this._cf.renderStyle.nodes.length-1;var s_values=this._vf.surfaceValues.length;for(var i=0;i<s_values;i++){var index=Math.min(i,n_styles);inlineText+="   if(((sample>=uSurfaceValues["+i+"] && previous_value<uSurfaceValues["+i+"])||(sample<uSurfaceValues["+i+"] && previous_value>=uSurfaceValues["+i+"])) && (grad.a>=uSurfaceTolerance)){\n"+"       value = vec4(vec3(uSurfaceValues["+i+"]),1.0);\n";if(this._cf.renderStyle.nodes){inlineText+=this._cf.renderStyle.nodes[index].inlineStyleShaderText();}
inlineText+="   accum.rgb += (1.0 - accum.a) * (value.rgb * value.a);\n"+"   accum.a += (1.0 - accum.a) * value.a;\n"+"   }\n";}}
inlineText+="    previous_value = sample;\n";return inlineText;},styleShaderText:function(){var styleText="";var n=this._cf.renderStyle.nodes.length;for(var i=0;i<n;i++){if(this._cf.renderStyle.nodes[i].styleShaderText!=undefined){styleText+=this._cf.renderStyle.nodes[i].styleShaderText()+"\n";}}
return styleText;},lightAssigment:function(){return this._cf.renderStyle.nodes[0].lightAssigment();},lightEquationShaderText:function(){return this._cf.renderStyle.nodes[0].lightEquationShaderText();},nodeChanged:function()
{if(!this._cf.appearance.node)
{var i;this.addChild(new x3dom.nodeTypes.Appearance());this.vrcVolumeTexture=this._cf.voxels.node;this.vrcVolumeTexture._vf.repeatS=false;this.vrcVolumeTexture._vf.repeatT=false;this.vrcMultiTexture._nameSpace=this._nameSpace;this.vrcMultiTexture.addChild(this.vrcVolumeTexture,'texture');this.vrcVolumeTexture.nodeChanged();var styleTextures=this.textures();for(i=0;i<styleTextures.length;i++)
{this.vrcMultiTexture.addChild(styleTextures[i],'texture');this.vrcVolumeTexture.nodeChanged();}
this._cf.appearance.node.addChild(this.vrcMultiTexture);this.vrcMultiTexture.nodeChanged();for(var i=0;i<this._cf.renderStyle.nodes.length;i++){this._cf.renderStyle.nodes[i].updateProperties(this);}
this.vrcSinglePassShaderVertex._vf.type='vertex';this.vrcSinglePassShaderVertex._vf.url[0]=this.vertexShaderText();;this.vrcSinglePassShaderFragment._vf.type='fragment';shaderText=this.fragmentPreamble+
this.defaultUniformsShaderText(this.vrcVolumeTexture._vf.numberOfSlices,this.vrcVolumeTexture._vf.slicesOverX,this.vrcVolumeTexture._vf.slicesOverY)+
this.styleUniformsShaderText()+
this.styleShaderText()+
this.texture3DFunctionShaderText+
this.normalFunctionShaderText()+
this.lightEquationShaderText();shaderText+="void main()\n"+"{\n"+"  bool out_box = all(bvec2(any(greaterThan(pos.xyz, vec3(1.0))), any(lessThan(pos.xyz, vec3(0.0)))));\n"+"  if(out_box) discard;\n"+"  vec3 cam_pos = vec3(modelViewMatrixInverse[3][0], modelViewMatrixInverse[3][1], modelViewMatrixInverse[3][2]);\n"+"  vec3 dir = normalize(pos.xyz-(cam_pos/dimensions+0.5));\n"+"  vec3 ray_pos = pos.xyz;\n"+"  vec4 accum  = vec4(0.0, 0.0, 0.0, 0.0);\n"+"  float sample = 0.0;\n"+"  vec4 value  = vec4(0.0, 0.0, 0.0, 0.0);\n"+"  float cont = 0.0;\n"+"  vec3 step = dir/Steps;\n";if(x3dom.nodeTypes.X3DLightNode.lightID>0){shaderText+="  vec3 ambient = vec3(0.0, 0.0, 0.0);\n"+"  vec3 diffuse = vec3(0.0, 0.0, 0.0);\n"+"  vec3 specular = vec3(0.0, 0.0, 0.0);\n"+"  vec4 step_eye = modelViewMatrix * vec4(step, 0.0);\n"+"  vec4 positionE = position_eye;\n"+"  float lightFactor = 1.0;\n";}else{shaderText+="  float lightFactor = 1.2;\n";}
shaderText+=this.initializeValues()+"  float opacityFactor = 6.0;\n"+"  float t_near;\n"+"  float t_far;\n"+"  for(float i = 0.0; i < Steps; i+=1.0)\n"+"  {\n"+"    value = cTexture3D(uVolData, ray_pos, numberOfSlices, slicesOverX, slicesOverY);\n"+"    value = value.rgbr;\n";if(this._cf.gradients.node){shaderText+="    vec4 gradEye = getNormalFromTexture(uSurfaceNormals, ray_pos, numberOfSlices, slicesOverX, slicesOverY);\n";}else{shaderText+="    vec4 gradEye = getNormalOnTheFly(uVolData, ray_pos, numberOfSlices, slicesOverX, slicesOverY);\n";}
shaderText+="    vec4 grad = vec4((modelViewMatrix * vec4(gradEye.xyz, 0.0)).xyz, gradEye.a);\n";for(var l=0;l<x3dom.nodeTypes.X3DLightNode.lightID;l++){shaderText+="    lighting(light"+l+"_Type, "+"light"+l+"_Location, "+"light"+l+"_Direction, "+"light"+l+"_Color, "+"light"+l+"_Attenuation, "+"light"+l+"_Radius, "+"light"+l+"_Intensity, "+"light"+l+"_AmbientIntensity, "+"light"+l+"_BeamWidth, "+"light"+l+"_CutOffAngle, "+"grad.xyz, positionE.xyz, ambient, diffuse, specular);\n";}
shaderText+=this.inlineStyleShaderText();if(x3dom.nodeTypes.X3DLightNode.lightID>0){shaderText+=this.lightAssigment();}
shaderText+="    //advance the current position\n"+"    ray_pos.xyz += step;\n";if(x3dom.nodeTypes.X3DLightNode.lightID>0){shaderText+="    positionE += step_eye;\n";}
shaderText+="    //break if the position is greater than <1, 1, 1>\n"+"    if(ray_pos.x > 1.0 || ray_pos.y > 1.0 || ray_pos.z > 1.0 || ray_pos.x <= 0.0 || ray_pos.y <= 0.0 || ray_pos.z <= 0.0 || accum.a>=1.0)\n"+"      break;\n"+"  }\n"+"  gl_FragColor = accum;\n"+"}";this.vrcSinglePassShaderFragment._vf.url[0]=shaderText;this.vrcSinglePassShader.addChild(this.vrcSinglePassShaderVertex,'parts');this.vrcSinglePassShaderVertex.nodeChanged();this.vrcSinglePassShader.addChild(this.vrcSinglePassShaderFragment,'parts');this.vrcSinglePassShaderFragment.nodeChanged();this.vrcSinglePassShaderFieldVolData._vf.name='uVolData';this.vrcSinglePassShaderFieldVolData._vf.type='SFInt32';this.vrcSinglePassShaderFieldVolData._vf.value=this._textureID++;this.vrcSinglePassShaderFieldDimensions._vf.name='dimensions';this.vrcSinglePassShaderFieldDimensions._vf.type='SFVec3f';this.vrcSinglePassShaderFieldDimensions._vf.value=this._vf.dimensions;this.vrcSinglePassShaderFieldOffset._vf.name='offset';this.vrcSinglePassShaderFieldOffset._vf.type='SFVec3f';this.vrcSinglePassShaderFieldOffset._vf.value="0.01 0.01 0.01";this.vrcSinglePassShader.addChild(this.vrcSinglePassShaderFieldVolData,'fields');this.vrcSinglePassShaderFieldVolData.nodeChanged();this.vrcSinglePassShader.addChild(this.vrcSinglePassShaderFieldDimensions,'fields');this.vrcSinglePassShaderFieldDimensions.nodeChanged();this.vrcSinglePassShader.addChild(this.vrcSinglePassShaderFieldOffset,'fields');this.offsetInterval=window.setInterval((function(aTex,obj){return function(){x3dom.debug.logInfo('[VolumeRendering][IsoSurfaceVolumeData] Looking for Volume Texture size...');var s=obj.getTextureSize(aTex);if(s.valid){clearInterval(obj.offsetInterval);obj.vrcSinglePassShaderFieldOffset._vf.value=new x3dom.fields.SFVec3f(1.0/(s.w/aTex._vf.slicesOverX),1.0/(s.h/aTex._vf.slicesOverY),1.0/aTex._vf.numberOfSlices);obj.vrcSinglePassShader.nodeChanged();x3dom.debug.logInfo('[VolumeRendering][IsoSurfaceVolumeData] Volume Texture size obtained');}}})(this.vrcVolumeTexture,this),1000);var ShaderUniforms=this.uniforms();for(i=0;i<ShaderUniforms.length;i++)
{this.vrcSinglePassShader.addChild(ShaderUniforms[i],'fields');}
this._cf.appearance.node.addChild(this.vrcSinglePassShader);this.vrcSinglePassShader.nodeChanged();this._cf.appearance.node.nodeChanged();}
if(!this._cf.geometry.node){this.addChild(new x3dom.nodeTypes.Box());this._cf.geometry.node._vf.hasHelperColors=false;this._cf.geometry.node._vf.size=new x3dom.fields.SFVec3f(this._vf.dimensions.x,this._vf.dimensions.y,this._vf.dimensions.z);this._cf.geometry.node.fieldChanged("size");}}}));x3dom.registerNodeType("MPRVolumeStyle","VolumeRendering",defineClass(x3dom.nodeTypes.X3DVolumeRenderStyleNode,function(ctx){x3dom.nodeTypes.MPRVolumeStyle.superClass.call(this,ctx);this.addField_SFVec3f(ctx,'originLine',1.0,1.0,0.0);this.addField_SFVec3f(ctx,'finalLine',0.0,1.0,0.0);this.addField_SFFloat(ctx,'positionLine',0.2);this.uniformVec3fOriginLine=new x3dom.nodeTypes.Uniform(ctx);this.uniformVec3fFinalLine=new x3dom.nodeTypes.Uniform(ctx);this.uniformFloatPosition=new x3dom.nodeTypes.Uniform(ctx);},{fieldChanged:function(fieldName){switch(fieldName){case'positionLine':this.uniformFloatPosition._vf.value=this._vf.positionLine;this.uniformFloatPosition.fieldChanged("value");break;case'originLine':this.uniformVec3fOriginLine._vf.value=this._vf.originLine;this.uniformVec3fOriginLine.fieldChanged("value");break;case'finalLine':this.uniformVec3fFinalLine._vf.value=this._vf.finalLine;this.uniformVec3fFinalLine.fieldChanged("value");break;}},uniforms:function(){var unis=[];this.uniformVec3fOriginLine._vf.name='originLine';this.uniformVec3fOriginLine._vf.type='SFVec3f';this.uniformVec3fOriginLine._vf.value=this._vf.originLine;unis.push(this.uniformVec3fOriginLine);this.uniformVec3fFinalLine._vf.name='finalLine';this.uniformVec3fFinalLine._vf.type='SFVec3f';this.uniformVec3fFinalLine._vf.value=this._vf.finalLine;unis.push(this.uniformVec3fFinalLine);this.uniformFloatPosition._vf.name='positionLine';this.uniformFloatPosition._vf.type='SFFloat';this.uniformFloatPosition._vf.value=this._vf.positionLine;unis.push(this.uniformFloatPosition);return unis;},styleUniformsShaderText:function(){return"uniform vec3 originLine;\nuniform vec3 finalLine;\nuniform float positionLine;\n";},fragmentShaderText:function(numberOfSlices,slicesOverX,slicesOverY){var shader=this._parentNodes[0].fragmentPreamble+
this._parentNodes[0].defaultUniformsShaderText(numberOfSlices,slicesOverX,slicesOverY)+
this.styleUniformsShaderText()+
this._parentNodes[0].texture3DFunctionShaderText+"void main()\n"+"{\n"+"  vec3 cam_pos = vec3(modelViewMatrixInverse[3][0], modelViewMatrixInverse[3][1], modelViewMatrixInverse[3][2]);\n"+"  cam_pos = cam_pos/dimensions+0.5;\n"+"  vec3 dir = normalize(pos.xyz-cam_pos);\n"+"  vec3 normalPlane = finalLine-originLine;\n"+"  vec3 pointLine = normalPlane*positionLine+originLine;\n"+"  float d = dot(pointLine-pos.xyz,normalPlane)/dot(dir,normalPlane);\n"+"  vec4 color = vec4(0.0,0.0,0.0,0.0);\n"+"  vec3 pos = d*dir+pos.rgb;\n"+"  if (!(pos.x > 1.0 || pos.y > 1.0 || pos.z > 1.0 || pos.x<0.0 || pos.y<0.0 || pos.z<0.0)){\n"+"    color = vec4(cTexture3D(uVolData,pos.rgb,numberOfSlices,slicesOverX,slicesOverY).rgb,1.0);\n"+"  }\n"+"  gl_FragColor = color;\n"+"}";return shader;}}));x3dom.registerNodeType("OpacityMapVolumeStyle","VolumeRendering",defineClass(x3dom.nodeTypes.X3DComposableVolumeRenderStyleNode,function(ctx){x3dom.nodeTypes.OpacityMapVolumeStyle.superClass.call(this,ctx);this.addField_SFNode('transferFunction',x3dom.nodeTypes.Texture);this.addField_SFString(ctx,'type',"simple");this.addField_SFFloat(ctx,'opacityFactor',6.0);this.addField_SFFloat(ctx,'lightFactor',1.2);this.uniformFloatOpacityFactor=new x3dom.nodeTypes.Uniform(ctx);this.uniformFloatLightFactor=new x3dom.nodeTypes.Uniform(ctx);this.uniformSampler2DTransferFunction=new x3dom.nodeTypes.Uniform(ctx);this.uniformBoolEnableOpacityMap=new x3dom.nodeTypes.Uniform(ctx);},{fieldChanged:function(fieldName){switch(fieldName){case'opacityFactor':this.uniformFloatOpacityFactor._vf.value=this._vf.opacityFactor;this.uniformFloatOpacityFactor.fieldChanged("value");break;case'lightFactor':this.uniformFloatLightFactor._vf.value=this._vf.lightFactor;this.uniformFloatLightFactor.fieldChanged("value");break;}},uniforms:function(){var unis=[];if(this._cf.transferFunction.node){this.uniformSampler2DTransferFunction._vf.name='uTransferFunction'+this._styleID;this.uniformSampler2DTransferFunction._vf.type='SFInt32';this.uniformSampler2DTransferFunction._vf.value=this._volumeDataParent._textureID++;unis.push(this.uniformSampler2DTransferFunction);}
this.uniformFloatOpacityFactor._vf.name='uOpacityFactor'+this._styleID;this.uniformFloatOpacityFactor._vf.type='SFFloat';this.uniformFloatOpacityFactor._vf.value=this._vf.opacityFactor;unis.push(this.uniformFloatOpacityFactor);this.uniformFloatLightFactor._vf.name='uLightFactor'+this._styleID;this.uniformFloatLightFactor._vf.type='SFFloat';this.uniformFloatLightFactor._vf.value=this._vf.lightFactor;unis.push(this.uniformFloatLightFactor);this.uniformBoolEnableOpacityMap._vf.name='uEnableOpacityMap'+this._styleID;this.uniformBoolEnableOpacityMap._vf.type='SFBool';this.uniformBoolEnableOpacityMap._vf.value=this._vf.enabled;unis.push(this.uniformBoolEnableOpacityMap);return unis;},textures:function(){var texs=[];var tex=this._cf.transferFunction.node;if(tex){tex._vf.repeatS=false;tex._vf.repeatT=false;texs.push(tex);}
return texs;},styleUniformsShaderText:function(){var uniformsText="uniform float uOpacityFactor"+this._styleID+";\n"+"uniform float uLightFactor"+this._styleID+";\n"+"uniform bool uEnableOpacityMap"+this._styleID+";\n";if(this._cf.transferFunction.node){uniformsText+="uniform sampler2D uTransferFunction"+this._styleID+";\n";}
return uniformsText;},inlineStyleShaderText:function(){var shaderText="    if(uEnableOpacityMap"+this._styleID+"){\n"+"       opacityFactor = uOpacityFactor"+this._styleID+";\n"+"       lightFactor = uLightFactor"+this._styleID+";\n";if(this._cf.transferFunction.node){shaderText+="       value = texture2D(uTransferFunction"+this._styleID+",vec2(value.r,0.5));\n";}
shaderText+="    }\n";return shaderText;}}));x3dom.registerNodeType("ProjectionVolumeStyle","VolumeRendering",defineClass(x3dom.nodeTypes.X3DVolumeRenderStyleNode,function(ctx){x3dom.nodeTypes.ProjectionVolumeStyle.superClass.call(this,ctx);this.addField_SFFloat(ctx,'intensityThreshold',0);this.addField_SFString(ctx,'type',"MAX");this.uniformIntensityThreshold=new x3dom.nodeTypes.Uniform(ctx);},{fieldChanged:function(fieldName){if(fieldName==='intensityThreshold'){this.uniformIntensityThreshold._vf.value=this._vf.intensityThreshold;this.uniformIntensityThreshold.fieldChanged("value");}else if(fieldName==='type'){}},uniforms:function(){var unis=[];this.uniformIntensityThreshold._vf.name='uIntensityThreshold';this.uniformIntensityThreshold._vf.type='SFFloat';this.uniformIntensityThreshold._vf.value=this._vf.intensityThreshold;unis.push(this.uniformIntensityThreshold);return unis;},styleUniformsShaderText:function(){return"uniform int uType;\n"+"uniform float uIntensityThreshold;\n";},fragmentShaderText:function(numberOfSlices,slicesOverX,slicesOverY){var shader=this._parentNodes[0].fragmentPreamble+
this._parentNodes[0].defaultUniformsShaderText(numberOfSlices,slicesOverX,slicesOverY)+
this.styleUniformsShaderText()+
this._parentNodes[0].texture3DFunctionShaderText+"void main()\n"+"{\n"+"  vec3 cam_pos = vec3(modelViewMatrixInverse[3][0], modelViewMatrixInverse[3][1], modelViewMatrixInverse[3][2]);\n"+"  cam_pos = cam_pos/dimensions+0.5;\n"+"  vec3 dir = normalize(pos.xyz-cam_pos);\n"+"  vec3 ray_pos = pos.xyz;\n"+"  vec4 accum  = vec4(0.0, 0.0, 0.0, 0.0);\n"+"  vec4 sample = vec4(0.0, 0.0, 0.0, 0.0);\n"+"  vec4 value  = vec4(0.0, 0.0, 0.0, 0.0);\n"+"  vec4 color  = vec4(0.0);\n";if(this._vf.type.toLowerCase()==="max"){shader+="vec2 previous_value = vec2(0.0);\n";}else{shader+="vec2 previous_value = vec2(1.0);\n";}
shader+="  float cont = 0.0;\n"+"  vec3 step_size = dir/Steps;\n"+"  const float lightFactor = 1.3;\n"+"  const float opacityFactor = 3.0;\n"+"  for(float i = 0.0; i < Steps; i+=1.0)\n"+"  {\n"+"    value = cTexture3D(uVolData,ray_pos,numberOfSlices,slicesOverX,slicesOverY);\n"+"    value = vec4(value.rgb,(0.299*value.r)+(0.587*value.g)+(0.114*value.b));\n"+"    //Process the volume sample\n"+"    sample.a = value.a * opacityFactor * (1.0/Steps);\n"+"    sample.rgb = value.rgb * sample.a * lightFactor;\n"+"    accum.a += (1.0-accum.a)*sample.a;\n";if(this._vf.enabled){switch(this._vf.type.toLowerCase()){case"max":shader+="if(value.r > uIntensityThreshold && value.r <= previous_value.x){\n"+"   break;\n"+"}\n"+"color.rgb = vec3(max(value.r, previous_value.x));\n"+"color.a = (value.r > previous_value.x) ? accum.a : previous_value.y;\n";break;case"min":shader+="if(value.r < uIntensityThreshold && value.r >= previous_value.x){\n"+"   break;\n"+"}\n"+"color.rgb = vec3(min(value.r, previous_value.x));\n"+"color.a = (value.r < previous_value.x) ? accum.a : previous_value.y;\n";break;case"average":shader+="color.rgb += (1.0 - accum.a) * sample.rgb;\n"+"color.a = accum.a;\n";break;}}
shader+="    //update the previous value and keeping the accumulated alpha\n"+"    previous_value.x = color.r;\n"+"    previous_value.y = accum.a;\n"+"    //advance the current position\n"+"    ray_pos.xyz += step_size;\n"+"    //break if the position is greater than <1, 1, 1>\n"+"    if(ray_pos.x > 1.0 || ray_pos.y > 1.0 || ray_pos.z > 1.0 || ray_pos.x <= 0.0 || ray_pos.y <= 0.0 || ray_pos.z <= 0.0 || accum.a>=1.0){\n";if(this._vf.type.toLowerCase()=="average"&&this._vf.enabled){shader+="     if((i > 0.0) && (i < Steps-1.0)){\n"+"color.rgb = color.rgb/i;\n"+"}\n";}
shader+="      break;\n"+"    }\n"+" }\n"+" gl_FragColor = color;\n"+"}";return shader;}}));x3dom.registerNodeType("SegmentedVolumeData","VolumeRendering",defineClass(x3dom.nodeTypes.X3DVolumeDataNode,function(ctx){x3dom.nodeTypes.SegmentedVolumeData.superClass.call(this,ctx);this.addField_MFNode('renderStyle',x3dom.nodeTypes.X3DComposableVolumeRenderStyleNode);this.addField_SFNode('segmentIdentifiers',x3dom.nodeTypes.Texture);this.addField_SFFloat(ctx,'numberOfMaxSegments',10.0);this.uniformSampler2DSegmentIdentifiers=new x3dom.nodeTypes.Uniform(ctx);this.normalTextureProvided=false;this.vrcMultiTexture=new x3dom.nodeTypes.MultiTexture(ctx);this.vrcVolumeTexture=null;this.vrcSinglePassShader=new x3dom.nodeTypes.ComposedShader(ctx);this.vrcSinglePassShaderVertex=new x3dom.nodeTypes.ShaderPart(ctx);this.vrcSinglePassShaderFragment=new x3dom.nodeTypes.ShaderPart(ctx);this.vrcSinglePassShaderFieldBackCoord=new x3dom.nodeTypes.Field(ctx);this.vrcSinglePassShaderFieldVolData=new x3dom.nodeTypes.Field(ctx);this.vrcSinglePassShaderFieldOffset=new x3dom.nodeTypes.Field(ctx);this.vrcSinglePassShaderFieldDimensions=new x3dom.nodeTypes.Field(ctx);},{fieldChanged:function(fieldName){if(fieldName==="numberOfMaxSegments"||fieldname==="segmentIdentifiers"){}},uniforms:function(){var unis=[];if(this._cf.segmentIdentifiers.node){this.uniformSampler2DSegmentIdentifiers._vf.name='uSegmentIdentifiers';this.uniformSampler2DSegmentIdentifiers._vf.type='SFInt32';this.uniformSampler2DSegmentIdentifiers._vf.value=this._textureID++;unis.push(this.uniformSampler2DSegmentIdentifiers);}
if(this._cf.renderStyle.nodes){var i,n=this._cf.renderStyle.nodes.length;for(i=0;i<n;i++){var that=this;Array.forEach(this._cf.renderStyle.nodes[i].uniforms(),function(uniform){var contains_uniform=false;Array.forEach(unis,function(accum){if(accum._vf.name==uniform._vf.name){contains_uniform=true;}});if(contains_uniform==false){unis=unis.concat(uniform);}});}}
return unis;},textures:function(){var texs=[];if(this._cf.segmentIdentifiers.node){var tex=this._cf.segmentIdentifiers.node;tex._vf.repeatS=false;tex._vf.repeatT=false;texs.push(tex);}
var i,n=this._cf.renderStyle.nodes.length;for(i=0;i<n;i++){Array.forEach(this._cf.renderStyle.nodes[i].textures(),function(texture){var contains_texture=false;Array.forEach(texs,function(accum){if(accum._vf.url[0]==texture._vf.url[0]){contains_texture=true;}});if(contains_texture==false){texs=texs.concat(texture);}});}
return texs;},initializeValues:function(){var initialValues="";var n=this._cf.renderStyle.nodes.length;for(var i=0;i<n;i++){if(this._cf.renderStyle.nodes[i].initializeValues!=undefined){initialValues+=this._cf.renderStyle.nodes[i].initializeValues()+"\n";}}
return initialValues;},styleUniformsShaderText:function(){var styleText="const float maxSegments = "+this._vf.numberOfMaxSegments.toPrecision(3)+";\n"+"uniform sampler2D uSegmentIdentifiers;\n";var n=this._cf.renderStyle.nodes.length;for(var i=0;i<n;i++){styleText+=this._cf.renderStyle.nodes[i].styleUniformsShaderText()+"\n";if(this._cf.renderStyle.nodes[i]._cf.surfaceNormals&&this._cf.renderStyle.nodes[i]._cf.surfaceNormals.node!=null){styleText+="uniform sampler2D uSurfaceNormals;\n";this.normalTextureProvided=true;this.surfaceNormals=this._cf.renderStyle.nodes[i]._cf.surfaceNormals.node;}
if(!x3dom.isa(this._cf.renderStyle.nodes[i],x3dom.nodeTypes.OpacityMapVolumeStyle)){this.surfaceNormalsNeeded=true;}}
return styleText;},styleShaderText:function(){var styleText="";var n=this._cf.renderStyle.nodes.length;for(var i=0;i<n;i++){if(this._cf.renderStyle.nodes[i].styleShaderText!=undefined){styleText+=this._cf.renderStyle.nodes[i].styleShaderText()+"\n";}}
return styleText;},inlineStyleShaderText:function(){var inlineText="";if(this._cf.segmentIdentifiers.node){inlineText+="    float t_id = cTexture3D(uSegmentIdentifiers, ray_pos, numberOfSlices, slicesOverX, slicesOverY).r;\n"+"    int s_id = int(clamp(floor(t_id*maxSegments-0.5),0.0,maxSegments));\n"+"    opacityFactor = 10.0;\n";if(x3dom.nodeTypes.X3DLightNode.lightID>0){inlineText+="    lightFactor = 1.0;\n";}else{inlineText+="    lightFactor = 1.2;\n";}}else{inlineText+="    int s_id = 0;\n";}
var n=this._cf.renderStyle.nodes.length;for(var i=0;i<n;i++){inlineText+="    if (s_id == "+i+"){\n"+
this._cf.renderStyle.nodes[i].inlineStyleShaderText()+"    }\n";}
return inlineText;},lightAssigment:function(){return this._cf.renderStyle.nodes[0].lightAssigment();},lightEquationShaderText:function(){return this._cf.renderStyle.nodes[0].lightEquationShaderText();},nodeChanged:function()
{if(!this._cf.appearance.node)
{var i;this.addChild(new x3dom.nodeTypes.Appearance());this.vrcVolumeTexture=this._cf.voxels.node;this.vrcVolumeTexture._vf.repeatS=false;this.vrcVolumeTexture._vf.repeatT=false;this.vrcMultiTexture._nameSpace=this._nameSpace;this.vrcMultiTexture.addChild(this.vrcVolumeTexture,'texture');this.vrcVolumeTexture.nodeChanged();var styleTextures=this.textures();for(i=0;i<styleTextures.length;i++)
{this.vrcMultiTexture.addChild(styleTextures[i],'texture');this.vrcVolumeTexture.nodeChanged();}
this._cf.appearance.node.addChild(this.vrcMultiTexture);this.vrcMultiTexture.nodeChanged();for(var i=0;i<this._cf.renderStyle.nodes.length;i++){this._cf.renderStyle.nodes[i].updateProperties(this);}
this.vrcSinglePassShaderVertex._vf.type='vertex';this.vrcSinglePassShaderVertex._vf.url[0]=this.vertexShaderText();this.vrcSinglePassShaderFragment._vf.type='fragment';shaderText=this.fragmentPreamble+
this.defaultUniformsShaderText(this.vrcVolumeTexture._vf.numberOfSlices,this.vrcVolumeTexture._vf.slicesOverX,this.vrcVolumeTexture._vf.slicesOverY)+
this.styleUniformsShaderText()+
this.styleShaderText()+
this.texture3DFunctionShaderText+
this.normalFunctionShaderText()+
this.lightEquationShaderText()+
this.defaultLoopFragmentShaderText(this.inlineStyleShaderText(),this.lightAssigment(),this.initializeValues());this.vrcSinglePassShaderFragment._vf.url[0]=shaderText;this.vrcSinglePassShader.addChild(this.vrcSinglePassShaderVertex,'parts');this.vrcSinglePassShaderVertex.nodeChanged();this.vrcSinglePassShader.addChild(this.vrcSinglePassShaderFragment,'parts');this.vrcSinglePassShaderFragment.nodeChanged();this.vrcSinglePassShaderFieldVolData._vf.name='uVolData';this.vrcSinglePassShaderFieldVolData._vf.type='SFInt32';this.vrcSinglePassShaderFieldVolData._vf.value=this._textureID++;this.vrcSinglePassShaderFieldDimensions._vf.name='dimensions';this.vrcSinglePassShaderFieldDimensions._vf.type='SFVec3f';this.vrcSinglePassShaderFieldDimensions._vf.value=this._vf.dimensions;this.vrcSinglePassShaderFieldOffset._vf.name='offset';this.vrcSinglePassShaderFieldOffset._vf.type='SFVec3f';this.vrcSinglePassShaderFieldOffset._vf.value="0.01 0.01 0.01";this.vrcSinglePassShader.addChild(this.vrcSinglePassShaderFieldVolData,'fields');this.vrcSinglePassShaderFieldVolData.nodeChanged();this.vrcSinglePassShader.addChild(this.vrcSinglePassShaderFieldDimensions,'fields');this.vrcSinglePassShaderFieldDimensions.nodeChanged();this.vrcSinglePassShader.addChild(this.vrcSinglePassShaderFieldOffset,'fields');this.offsetInterval=window.setInterval((function(aTex,obj){return function(){x3dom.debug.logInfo('[VolumeRendering][SegmentedVolumeData] Looking for Volume Texture size...');var s=obj.getTextureSize(aTex);if(s.valid){clearInterval(obj.offsetInterval);obj.vrcSinglePassShaderFieldOffset._vf.value=new x3dom.fields.SFVec3f(1.0/(s.w/aTex._vf.slicesOverX),1.0/(s.h/aTex._vf.slicesOverY),1.0/aTex._vf.numberOfSlices);obj.vrcSinglePassShader.nodeChanged();x3dom.debug.logInfo('[VolumeRendering][SegmentedVolumeData] Volume Texture size obtained');}}})(this.vrcVolumeTexture,this),1000);var ShaderUniforms=this.uniforms();for(i=0;i<ShaderUniforms.length;i++)
{this.vrcSinglePassShader.addChild(ShaderUniforms[i],'fields');}
this._cf.appearance.node.addChild(this.vrcSinglePassShader);this.vrcSinglePassShader.nodeChanged();this._cf.appearance.node.nodeChanged();}
if(!this._cf.geometry.node){this.addChild(new x3dom.nodeTypes.Box());this._cf.geometry.node._vf.size=new x3dom.fields.SFVec3f(this._vf.dimensions.x,this._vf.dimensions.y,this._vf.dimensions.z);this._cf.geometry.node.fieldChanged("size");}}}));x3dom.registerNodeType("ShadedVolumeStyle","VolumeRendering",defineClass(x3dom.nodeTypes.X3DComposableVolumeRenderStyleNode,function(ctx){x3dom.nodeTypes.ShadedVolumeStyle.superClass.call(this,ctx);this.addField_SFNode('material',x3dom.nodeTypes.X3DMaterialNode);this.addField_SFBool(ctx,'lighting',false);this.addField_SFBool(ctx,'shadows',false);this.addField_SFString(ctx,'phaseFunction',"Henyey-Greenstein");this.uniformBoolLigthning=new x3dom.nodeTypes.Uniform(ctx);this.uniformBoolShadows=new x3dom.nodeTypes.Uniform(ctx);this.uniformSampler2DSurfaceNormals=new x3dom.nodeTypes.Uniform(ctx);this.uniformColorSpecular=new x3dom.nodeTypes.Uniform(ctx);this.uniformFloatAmbientIntensity=new x3dom.nodeTypes.Uniform(ctx);this.uniformFloatShininess=new x3dom.nodeTypes.Uniform(ctx);this.uniformFloatTransparency=new x3dom.nodeTypes.Uniform(ctx);this.uniformColorEmissive=new x3dom.nodeTypes.Uniform(ctx);this.uniformColorDiffuse=new x3dom.nodeTypes.Uniform(ctx);this.uniformBoolEnableShaded=new x3dom.nodeTypes.Uniform(ctx);},{fieldChanged:function(fieldName){switch(fieldName){case'lightning':this.uniformBoolLightning._vf.value=this._vf.lightning;this.uniformBoolLightning.fieldChanged("value");break;case'shadows':this.uniformBoolShadows._vf.value=this._vf.shadows;this.uniformBoolShadows.fieldChanged("value");break;default:break;}},uniforms:function(){var unis=[];if(this._cf.surfaceNormals.node){this.uniformSampler2DSurfaceNormals._vf.name='uSurfaceNormals';this.uniformSampler2DSurfaceNormals._vf.type='SFInt32';this.uniformSampler2DSurfaceNormals._vf.value=this._volumeDataParent._textureID++;unis.push(this.uniformSampler2DSurfaceNormals);}
this.uniformBoolLigthning._vf.name='uLightning'+this._styleID;this.uniformBoolLigthning._vf.type='SFBool';this.uniformBoolLigthning._vf.value=this._vf.lighting;unis.push(this.uniformBoolLigthning);this.uniformBoolShadows._vf.name='uShadows'+this._styleID;this.uniformBoolShadows._vf.type='SFBool';this.uniformBoolShadows._vf.value=this._vf.shadows;unis.push(this.uniformBoolShadows);if(this._cf.material.node!=null){this.uniformColorSpecular._vf.name='specularColor'+this._styleID;this.uniformColorSpecular._vf.type='SFColor';this.uniformColorSpecular._vf.value=this._cf.material.node._vf.specularColor;unis.push(this.uniformColorSpecular);this.uniformColorDiffuse._vf.name='diffuseColor'+this._styleID;this.uniformColorDiffuse._vf.type='SFColor';this.uniformColorDiffuse._vf.value=this._cf.material.node._vf.diffuseColor;unis.push(this.uniformColorDiffuse);this.uniformColorEmissive._vf.name='emissiveColor'+this._styleID;this.uniformColorEmissive._vf.type='SFColor';this.uniformColorEmissive._vf.value=this._cf.material.node._vf.emissiveColor;unis.push(this.uniformColorEmissive);this.uniformFloatAmbientIntensity._vf.name='ambientIntensity'+this._styleID;this.uniformFloatAmbientIntensity._vf.type='SFFloat';this.uniformFloatAmbientIntensity._vf.value=this._cf.material.node._vf.ambientIntensity;unis.push(this.uniformFloatAmbientIntensity);this.uniformFloatShininess._vf.name='shininess'+this._styleID;this.uniformFloatShininess._vf.type='SFFloat';this.uniformFloatShininess._vf.value=this._cf.material.node._vf.shininess;unis.push(this.uniformFloatShininess);this.uniformFloatTransparency._vf.name='transparency'+this._styleID;this.uniformFloatTransparency._vf.type='SFFloat';this.uniformFloatTransparency._vf.value=this._cf.material.node._vf.transperency;unis.push(this.uniformFloatTransparency);}
this.uniformBoolEnableShaded._vf.name='uEnableShaded'+this._styleID;this.uniformBoolEnableShaded._vf.type='SFBool';this.uniformBoolEnableShaded._vf.value=this._vf.enabled;unis.push(this.uniformBoolEnableShaded);return unis;},textures:function(){var texs=[];if(this._cf.surfaceNormals.node){var tex=this._cf.surfaceNormals.node;tex._vf.repeatS=false;tex._vf.repeatT=false;texs.push(tex)}
return texs;},styleUniformsShaderText:function(){var uniformText="uniform bool uLightning"+this._styleID+";\n"+"uniform bool uShadows"+this._styleID+";\n"+"uniform float fogRange;\n"+"uniform vec3 fogColor;\n"+"uniform float fogType;\n"+"uniform bool uEnableShaded"+this._styleID+";\n";if(this._cf.material.node){uniformText+="uniform vec3  diffuseColor"+this._styleID+";\n"+"uniform vec3  specularColor"+this._styleID+";\n"+"uniform vec3  emissiveColor"+this._styleID+";\n"+"uniform float shininess"+this._styleID+";\n"+"uniform float transparency"+this._styleID+";\n"+"uniform float ambientIntensity"+this._styleID+";\n";}
return uniformText;},styleShaderText:function(){if(this._first){return"float computeFogInterpolant(float distanceFromPoint)\n"+"{\n"+"  if (distanceFromPoint > fogRange){\n"+"    return 0.0;\n"+"  }else if (fogType == 0.0){\n"+"    return clamp((fogRange-distanceFromPoint) / fogRange, 0.0, 1.0);\n"+"  }else{\n"+"    return clamp(exp(-distanceFromPoint / (fogRange-distanceFromPoint)), 0.0, 1.0);\n"+"  }\n"+"}\n";}else{return"";}},lightEquationShaderText:function(){if(this._first){return"void lighting(in float lType, in vec3 lLocation, in vec3 lDirection, in vec3 lColor, in vec3 lAttenuation, "+"in float lRadius, in float lIntensity, in float lAmbientIntensity, in float lBeamWidth, "+"in float lCutOffAngle, in float ambientIntensity, in float shininess, in vec3 N, in vec3 V, inout vec3 ambient, inout vec3 diffuse, "+"inout vec3 specular)\n"+"{\n"+"   vec3 L;\n"+"   float spot = 1.0, attentuation = 0.0;\n"+"   if(lType == 0.0) {\n"+"       L = -normalize(lDirection);\n"+"       V = normalize(V);\n"+"       attentuation = 1.0;\n"+"   } else{\n"+"       L = (lLocation - (-V));\n"+"       float d = length(L);\n"+"       L = normalize(L);\n"+"       V = normalize(V);\n"+"       if(lRadius == 0.0 || d <= lRadius) {\n"+"           attentuation = 1.0 / max(lAttenuation.x + lAttenuation.y * d + lAttenuation.z * (d * d), 1.0);\n"+"       }\n"+"       if(lType == 2.0) {\n"+"           float spotAngle = acos(max(0.0, dot(-L, normalize(lDirection))));\n"+"           if(spotAngle >= lCutOffAngle) spot = 0.0;\n"+"           else if(spotAngle <= lBeamWidth) spot = 1.0;\n"+"           else spot = (spotAngle - lCutOffAngle ) / (lBeamWidth - lCutOffAngle);\n"+"       }\n"+"   }\n"+"   vec3 H = normalize( L + V );\n"+"   float NdotL = max(0.0, dot(L, N));\n"+"   float NdotH = max(0.0, dot(H, N));\n"+"   float ambientFactor = lAmbientIntensity * ambientIntensity;\n"+"   float diffuseFactor = lIntensity * NdotL;\n"+"   float specularFactor = lIntensity * pow(NdotH, shininess*128.0);\n"+"   ambient += lColor * ambientFactor * attentuation * spot;\n"+"   diffuse += lColor * diffuseFactor * attentuation * spot;\n"+"   specular += lColor * specularFactor * attentuation * spot;\n"+"}\n";}else{return"";}},inlineStyleShaderText:function(){if(this._first){return"    float fogFactor = computeFogInterpolant(length(cam_pos-ray_pos));\n";}else{return"";}},lightAssigment:function(){var shaderText="    if(uEnableShaded"+this._styleID+"){\n";for(var l=0;l<x3dom.nodeTypes.X3DLightNode.lightID;l++){shaderText+="    lighting(light"+l+"_Type, "+"light"+l+"_Location, "+"light"+l+"_Direction, "+"light"+l+"_Color, "+"light"+l+"_Attenuation, "+"light"+l+"_Radius, "+"light"+l+"_Intensity, "+"light"+l+"_AmbientIntensity, "+"light"+l+"_BeamWidth, "+"light"+l+"_CutOffAngle, "+"ambientIntensity"+this._styleID+", "+"shininess"+this._styleID+", "+"grad.xyz, positionE.xyz, ambient, diffuse, specular);\n";}
if(this._vf.lighting==true){if(this._cf.material.node){shaderText+="      value.rgb = (fogColor*(1.0-fogFactor))+fogFactor*(emissiveColor"+this._styleID+" + ambient*value.rgb + diffuse*diffuseColor"+this._styleID+"*value.rgb + specular*specularColor"+this._styleID+");\n"+"      value.a = value.a*(1.0-transparency"+this._styleID+");\n";}else{shaderText+="      value.rgb = (fogColor*(1.0-fogFactor))+fogFactor*(ambient*value.rgb + diffuse*value.rgb + specular);\n";}}
shaderText+="    }\n";return shaderText;}}));x3dom.registerNodeType("SilhouetteEnhancementVolumeStyle","VolumeRendering",defineClass(x3dom.nodeTypes.X3DComposableVolumeRenderStyleNode,function(ctx){x3dom.nodeTypes.SilhouetteEnhancementVolumeStyle.superClass.call(this,ctx);this.addField_SFFloat(ctx,'silhouetteBoundaryOpacity',0);this.addField_SFFloat(ctx,'silhouetteRetainedOpacity',1);this.addField_SFFloat(ctx,'silhouetteSharpness',0.5);this.uniformFloatBoundaryOpacity=new x3dom.nodeTypes.Uniform(ctx);this.uniformFloatRetainedOpacity=new x3dom.nodeTypes.Uniform(ctx);this.uniformFloatSilhouetteSharpness=new x3dom.nodeTypes.Uniform(ctx);this.uniformSampler2DSurfaceNormals=new x3dom.nodeTypes.Uniform(ctx);this.uniformBoolEnableSilhouette=new x3dom.nodeTypes.Uniform(ctx);},{fieldChanged:function(fieldName){switch(fieldName){case'silhouetteBoundaryOpacity':this.uniformFloatBoundaryOpacity._vf.value=this._vf.silhouetteBoundaryOpacity;this.uniformFloatBoundaryOpacity.fieldChanged("value");break;case'silhouetteRetainedOpacity':this.uniformFloatRetainedOpacity._vf.value=this._vf.silhouetteRetainedOpacity;this.uniformFloatRetainedOpacity.fieldChanged("value");break;case'silhouetteSharpness':this.uniformFloatSilhouetteSharpness._vf.value=this._vf.silhouetteSharpness;this.uniformFloatSilhouetteSharpness.fieldChanged("value");break;}},uniforms:function(){var unis=[];if(this._cf.surfaceNormals.node){this.uniformSampler2DSurfaceNormals._vf.name='uSurfaceNormals';this.uniformSampler2DSurfaceNormals._vf.type='SFInt32';this.uniformSampler2DSurfaceNormals._vf.value=this._volumeDataParent._textureID++;unis.push(this.uniformSampler2DSurfaceNormals);}
this.uniformFloatBoundaryOpacity._vf.name='uSilhouetteBoundaryOpacity'+this._styleID;this.uniformFloatBoundaryOpacity._vf.type='SFFloat';this.uniformFloatBoundaryOpacity._vf.value=this._vf.silhouetteBoundaryOpacity;unis.push(this.uniformFloatBoundaryOpacity);this.uniformFloatRetainedOpacity._vf.name='uSilhouetteRetainedOpacity'+this._styleID;this.uniformFloatRetainedOpacity._vf.type='SFFloat';this.uniformFloatRetainedOpacity._vf.value=this._vf.silhouetteRetainedOpacity;unis.push(this.uniformFloatRetainedOpacity);this.uniformFloatSilhouetteSharpness._vf.name='uSilhouetteSharpness'+this._styleID;this.uniformFloatSilhouetteSharpness._vf.type='SFFloat';this.uniformFloatSilhouetteSharpness._vf.value=this._vf.silhouetteSharpness;unis.push(this.uniformFloatSilhouetteSharpness);this.uniformBoolEnableSilhouette._vf.name='uEnableSilhouette'+this._styleID;this.uniformBoolEnableSilhouette._vf.type='SFBool';this.uniformBoolEnableSilhouette._vf.value=this._vf.enabled;unis.push(this.uniformBoolEnableSilhouette);return unis;},textures:function(){var texs=[];if(!(this._cf.surfaceNormals.node==null)){var tex=this._cf.surfaceNormals.node;tex._vf.repeatS=false;tex._vf.repeatT=false;texs.push(tex)}
return texs;},styleUniformsShaderText:function(){return"uniform float uSilhouetteBoundaryOpacity"+this._styleID+";\n"+"uniform float uSilhouetteRetainedOpacity"+this._styleID+";\n"+"uniform float uSilhouetteSharpness"+this._styleID+";\n"+"uniform bool uEnableSilhouette"+this._styleID+";\n";},styleShaderText:function(){if(this._first){return"void silhouetteEnhancement(inout vec4 orig_color, in vec4 normal, in vec3 V, in float sBoundary, in float sRetained, in float sSharpness)\n"+"{\n"+"   if(normal.w > 0.02){\n"+"       orig_color.a = orig_color.a * (sRetained + sBoundary * pow((1.0-abs(dot(normal.xyz, V))), sSharpness));\n"+"   }\n"+"}\n"+"\n";}else{return"";}},inlineStyleShaderText:function(){var inlineText="  if(uEnableSilhouette"+this._styleID+"){\n"+"       silhouetteEnhancement(value, gradEye, dir, uSilhouetteBoundaryOpacity"+this._styleID+", uSilhouetteRetainedOpacity"+this._styleID+", uSilhouetteSharpness"+this._styleID+");\n"+"   }\n";return inlineText;}}));x3dom.registerNodeType("StippleVolumeStyle","VolumeRendering",defineClass(x3dom.nodeTypes.X3DVolumeRenderStyleNode,function(ctx){x3dom.nodeTypes.StippleVolumeStyle.superClass.call(this,ctx);this.addField_SFFloat(ctx,'distanceFactor',1);this.addField_SFFloat(ctx,'interiorFactor',1);this.addField_SFFloat(ctx,'lightingFactor',1);this.addField_SFFloat(ctx,'gradientThreshold',0.4);this.addField_SFFloat(ctx,'gradientRetainedOpacity',1);this.addField_SFFloat(ctx,'gradientBoundaryOpacity',0);this.addField_SFFloat(ctx,'gradientOpacityFactor',1);this.addField_SFFloat(ctx,'silhouetteRetainedOpacity',1);this.addField_SFFloat(ctx,'silhouetteBoundaryOpacity',0);this.addField_SFFloat(ctx,'silhouetteOpacityFactor',1);this.addField_SFFloat(ctx,'resolutionFactor',1);}));x3dom.registerNodeType("ToneMappedVolumeStyle","VolumeRendering",defineClass(x3dom.nodeTypes.X3DComposableVolumeRenderStyleNode,function(ctx){x3dom.nodeTypes.ToneMappedVolumeStyle.superClass.call(this,ctx);this.addField_SFColor(ctx,'coolColor',0,0,1);this.addField_SFColor(ctx,'warmColor',1,1,0);this.uniformCoolColor=new x3dom.nodeTypes.Uniform(ctx);this.uniformWarmColor=new x3dom.nodeTypes.Uniform(ctx);this.uniformSampler2DSurfaceNormals=new x3dom.nodeTypes.Uniform(ctx);this.uniformBoolEnableToneMapped=new x3dom.nodeTypes.Uniform(ctx);},{fieldChanged:function(fieldName){switch(fieldName){case'coolColor':this.uniformCoolColor._vf.value=this._vf.coolColor;this.uniformCoolColor.fieldChanged("value");break;case'warmColor':this.uniformWarmColor._vf.value=this._vf.warmColor;this.uniformWarmColor.fieldChanged("value");break;}},uniforms:function(){var unis=[];if(this._cf.surfaceNormals.node){this.uniformSampler2DSurfaceNormals._vf.name='uSurfaceNormals';this.uniformSampler2DSurfaceNormals._vf.type='SFInt32';this.uniformSampler2DSurfaceNormals._vf.value=this._volumeDataParent._textureID++;unis.push(this.uniformSampler2DSurfaceNormals);}
this.uniformCoolColor._vf.name='uCoolColor'+this._styleID;this.uniformCoolColor._vf.type='SFColor';this.uniformCoolColor._vf.value=this._vf.coolColor;unis.push(this.uniformCoolColor);this.uniformWarmColor._vf.name='uWarmColor'+this._styleID;this.uniformWarmColor._vf.type='SFColor';this.uniformWarmColor._vf.value=this._vf.warmColor;unis.push(this.uniformWarmColor);this.uniformBoolEnableToneMapped._vf.name='uEnableToneMapped'+this._styleID;this.uniformBoolEnableToneMapped._vf.type='SFBool';this.uniformBoolEnableToneMapped._vf.value=this._vf.enabled;unis.push(this.uniformBoolEnableToneMapped);return unis;},textures:function(){var texs=[];if(this._cf.surfaceNormals.node){var tex=this._cf.surfaceNormals.node;tex._vf.repeatS=false;tex._vf.repeatT=false;texs.push(tex)}
return texs;},styleUniformsShaderText:function(){return"uniform vec3 uCoolColor"+this._styleID+";\n"+"uniform vec3 uWarmColor"+this._styleID+";\n"+"uniform bool uEnableToneMapped"+this._styleID+";\n";},styleShaderText:function(){if(this._first){return"void toneMapped(inout vec4 original_color, inout vec3 accum_color, in vec4 surfNormal, in vec3 lightDir, in vec3 cColor, in vec3 wColor)\n"+"{\n"+"   if(surfNormal.a > 0.02){\n"+"       float color_factor = (1.0 + dot(lightDir, surfNormal.xyz))*0.5;\n"+"       accum_color += mix(wColor, cColor, color_factor);\n"+"       original_color.rgb = accum_color;\n"+"   }else{\n"+"       accum_color += mix(wColor, cColor, 0.5);\n"+"       original_color.rgb = accum_color;\n"+"   }\n"+"}\n";}else{return"";}},inlineStyleShaderText:function(){var shaderText="    if(uEnableToneMapped"+this._styleID+"){\n"+"       vec3 toneColor = vec3(0.0, 0.0, 0.0);\n"+"       vec3 L = vec3(0.0, 0.0, 0.0);\n";for(var l=0;l<x3dom.nodeTypes.X3DLightNode.lightID;l++){shaderText+="       L = (light"+l+"_Type == 1.0) ? normalize(light"+l+"_Location - positionE.xyz) : -light"+l+"_Direction;\n"+"       toneMapped(value, toneColor, grad, L, uCoolColor"+this._styleID+", uWarmColor"+this._styleID+");\n";}
shaderText+="    }\n";return shaderText;},lightAssigment:function(){return"";}}));x3dom.registerNodeType("VolumeData","VolumeRendering",defineClass(x3dom.nodeTypes.X3DVolumeDataNode,function(ctx){x3dom.nodeTypes.VolumeData.superClass.call(this,ctx);this.addField_SFNode('renderStyle',x3dom.nodeTypes.X3DVolumeRenderStyleNode);this.vrcMultiTexture=new x3dom.nodeTypes.MultiTexture(ctx);this.vrcVolumeTexture=null;this.vrcSinglePassShader=new x3dom.nodeTypes.ComposedShader(ctx);this.vrcSinglePassShaderVertex=new x3dom.nodeTypes.ShaderPart(ctx);this.vrcSinglePassShaderFragment=new x3dom.nodeTypes.ShaderPart(ctx);this.vrcSinglePassShaderFieldBackCoord=new x3dom.nodeTypes.Field(ctx);this.vrcSinglePassShaderFieldVolData=new x3dom.nodeTypes.Field(ctx);this.vrcSinglePassShaderFieldOffset=new x3dom.nodeTypes.Field(ctx);this.vrcSinglePassShaderFieldDimensions=new x3dom.nodeTypes.Field(ctx);},{initializeValues:function(){var initialValues="";if(this._cf.renderStyle.node.initializeValues!=undefined){initialValues+=this._cf.renderStyle.node.initializeValues();}
return initialValues;},styleUniformsShaderText:function(){var styleUniformsText=this._cf.renderStyle.node.styleUniformsShaderText();this.surfaceNormalsNeeded=true;if(this._cf.renderStyle.node._cf.surfaceNormals&&this._cf.renderStyle.node._cf.surfaceNormals.node!=null){styleUniformsText+="uniform sampler2D uSurfaceNormals;\n";this.normalTextureProvided=true;this.surfaceNormals=this._cf.renderStyle.node._cf.surfaceNormals.node;}else if(x3dom.isa(this._cf.renderStyle.node,x3dom.nodeTypes.OpacityMapVolumeStyle)){this.surfaceNormalsNeeded=false;this.normalTextureProvided=false;}
return styleUniformsText;},styleShaderText:function(){var styleText="";if(this._cf.renderStyle.node.styleShaderText!=undefined){styleText+=this._cf.renderStyle.node.styleShaderText();}
return styleText;},inlineStyleShaderText:function(){return this._cf.renderStyle.node.inlineStyleShaderText();},lightAssigment:function(){return this._cf.renderStyle.node.lightAssigment();},lightEquationShaderText:function(){return this._cf.renderStyle.node.lightEquationShaderText();},nodeChanged:function()
{if(!this._cf.appearance.node)
{var i;this.addChild(new x3dom.nodeTypes.Appearance());this.vrcVolumeTexture=this._cf.voxels.node;this.vrcVolumeTexture._vf.repeatS=false;this.vrcVolumeTexture._vf.repeatT=false;this.vrcMultiTexture._nameSpace=this._nameSpace;this.vrcMultiTexture.addChild(this.vrcVolumeTexture,'texture');this.vrcVolumeTexture.nodeChanged();if(this._cf.renderStyle.node.textures){var styleTextures=this._cf.renderStyle.node.textures();for(i=0;i<styleTextures.length;i++)
{this.vrcMultiTexture.addChild(styleTextures[i],'texture');this.vrcVolumeTexture.nodeChanged();}}
this._cf.appearance.node.addChild(this.vrcMultiTexture);this.vrcMultiTexture.nodeChanged();this._cf.renderStyle.node.updateProperties(this);this.vrcSinglePassShaderVertex._vf.type='vertex';this.vrcSinglePassShaderVertex._vf.url[0]=this.vertexShaderText();this.vrcSinglePassShaderFragment._vf.type='fragment';var shaderText="";if(x3dom.isa(this._cf.renderStyle.node,x3dom.nodeTypes.X3DComposableVolumeRenderStyleNode)){shaderText+=this.fragmentPreamble+
this.defaultUniformsShaderText(this.vrcVolumeTexture._vf.numberOfSlices,this.vrcVolumeTexture._vf.slicesOverX,this.vrcVolumeTexture._vf.slicesOverY)+
this.styleUniformsShaderText()+
this.styleShaderText()+
this.texture3DFunctionShaderText+
this.normalFunctionShaderText()+
this.lightEquationShaderText()+
this.defaultLoopFragmentShaderText(this.inlineStyleShaderText(),this.lightAssigment(),this.initializeValues());}else{shaderText+=this._cf.renderStyle.node.fragmentShaderText(this.vrcVolumeTexture._vf.numberOfSlices,this.vrcVolumeTexture._vf.slicesOverX,this.vrcVolumeTexture._vf.slicesOverY);}
this.vrcSinglePassShaderFragment._vf.url[0]=shaderText;this.vrcSinglePassShader.addChild(this.vrcSinglePassShaderVertex,'parts');this.vrcSinglePassShaderVertex.nodeChanged();this.vrcSinglePassShader.addChild(this.vrcSinglePassShaderFragment,'parts');this.vrcSinglePassShaderFragment.nodeChanged();this.vrcSinglePassShaderFieldVolData._vf.name='uVolData';this.vrcSinglePassShaderFieldVolData._vf.type='SFInt32';this.vrcSinglePassShaderFieldVolData._vf.value=this._textureID++;this.vrcSinglePassShaderFieldDimensions._vf.name='dimensions';this.vrcSinglePassShaderFieldDimensions._vf.type='SFVec3f';this.vrcSinglePassShaderFieldDimensions._vf.value=this._vf.dimensions;this.vrcSinglePassShaderFieldOffset._vf.name='offset';this.vrcSinglePassShaderFieldOffset._vf.type='SFVec3f';this.vrcSinglePassShaderFieldOffset._vf.value="0.01 0.01 0.01";this.vrcSinglePassShader.addChild(this.vrcSinglePassShaderFieldVolData,'fields');this.vrcSinglePassShaderFieldVolData.nodeChanged();this.vrcSinglePassShader.addChild(this.vrcSinglePassShaderFieldDimensions,'fields');this.vrcSinglePassShaderFieldDimensions.nodeChanged();this.vrcSinglePassShader.addChild(this.vrcSinglePassShaderFieldOffset,'fields');this.offsetInterval=window.setInterval((function(aTex,obj){return function(){x3dom.debug.logInfo('[VolumeRendering][VolumeData] Looking for Volume Texture size...');var s=obj.getTextureSize(aTex);if(s.valid){clearInterval(obj.offsetInterval);obj.vrcSinglePassShaderFieldOffset._vf.value=new x3dom.fields.SFVec3f(1.0/(s.w/aTex._vf.slicesOverX),1.0/(s.h/aTex._vf.slicesOverY),1.0/aTex._vf.numberOfSlices);obj.vrcSinglePassShader.nodeChanged();x3dom.debug.logInfo('[VolumeRendering][VolumeData] Volume Texture size obtained');}}})(this.vrcVolumeTexture,this),1000);var ShaderUniforms=this._cf.renderStyle.node.uniforms();for(i=0;i<ShaderUniforms.length;i++)
{this.vrcSinglePassShader.addChild(ShaderUniforms[i],'fields');}
this._cf.appearance.node.addChild(this.vrcSinglePassShader);this.vrcSinglePassShader.nodeChanged();this._cf.appearance.node.nodeChanged();}
if(!this._cf.geometry.node){this.addChild(new x3dom.nodeTypes.Box());this._cf.geometry.node._vf.hasHelperColors=false;this._cf.geometry.node._vf.size=new x3dom.fields.SFVec3f(this._vf.dimensions.x,this._vf.dimensions.y,this._vf.dimensions.z);this._cf.geometry.node.fieldChanged("size");}}}));x3dom.registerNodeType("IndexedQuadSet","CADGeometry",defineClass(x3dom.nodeTypes.X3DComposedGeometryNode,function(ctx){x3dom.nodeTypes.IndexedQuadSet.superClass.call(this,ctx);this.addField_MFInt32(ctx,'index',[]);},{nodeChanged:function()
{var time0=new Date().getTime();this.handleAttribs();var colPerVert=this._vf.colorPerVertex;var normPerVert=this._vf.normalPerVertex;var indexes=this._vf.index;var hasNormal=false,hasTexCoord=false,hasColor=false;var positions,normals,texCoords,colors;var coordNode=this._cf.coord.node;x3dom.debug.assert(coordNode);positions=coordNode._vf.point;var normalNode=this._cf.normal.node;if(normalNode){hasNormal=true;normals=normalNode._vf.vector;}
else{hasNormal=false;}
var texMode="",numTexComponents=2;var texCoordNode=this._cf.texCoord.node;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.MultiTextureCoordinate)){if(texCoordNode._cf.texCoord.nodes.length)
texCoordNode=texCoordNode._cf.texCoord.nodes[0];}
if(texCoordNode){if(texCoordNode._vf.point){hasTexCoord=true;texCoords=texCoordNode._vf.point;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.TextureCoordinate3D)){numTexComponents=3;}}
else if(texCoordNode._vf.mode){texMode=texCoordNode._vf.mode;}}
else{hasTexCoord=false;}
var numColComponents=3;var colorNode=this._cf.color.node;if(colorNode){hasColor=true;colors=colorNode._vf.color;if(x3dom.isa(colorNode,x3dom.nodeTypes.ColorRGBA)){numColComponents=4;}}
else{hasColor=false;}
this._mesh._indices[0]=[];this._mesh._positions[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];this._mesh._colors[0]=[];var i,t,cnt,faceCnt,posMax;var p0,p1,p2,n0,n1,n2,t0,t1,t2,c0,c1,c2;while(positions.length%4>0){positions.push(positions.length-1);}
posMax=positions.length;{faceCnt=0;for(i=0;i<indexes.length;i++)
{if((i>0)&&(i%4===3)){faceCnt++;this._mesh._indices[0].push(indexes[i-3]);this._mesh._indices[0].push(indexes[i-1]);this._mesh._indices[0].push(indexes[i]);}
else{this._mesh._indices[0].push(indexes[i]);}
if(!normPerVert&&hasNormal){this._mesh._normals[0].push(normals[faceCnt].x);this._mesh._normals[0].push(normals[faceCnt].y);this._mesh._normals[0].push(normals[faceCnt].z);}
if(!colPerVert&&hasColor){this._mesh._colors[0].push(colors[faceCnt].r);this._mesh._colors[0].push(colors[faceCnt].g);this._mesh._colors[0].push(colors[faceCnt].b);if(numColComponents===4){this._mesh._colors[0].push(colors[faceCnt].a);}}}
this._mesh._positions[0]=positions.toGL();if(hasNormal){this._mesh._normals[0]=normals.toGL();}
else{this._mesh.calcNormals(normPerVert?Math.PI:0);}
if(hasTexCoord){this._mesh._texCoords[0]=texCoords.toGL();this._mesh._numTexComponents=numTexComponents;}
else{this._mesh.calcTexCoords(texMode);}
if(hasColor&&colPerVert){this._mesh._colors[0]=colors.toGL();this._mesh._numColComponents=numColComponents;}}
this.invalidateVolume();this._mesh._numFaces=0;this._mesh._numCoords=0;for(i=0;i<this._mesh._indices.length;i++){this._mesh._numFaces+=this._mesh._indices[i].length/3;this._mesh._numCoords+=this._mesh._positions[i].length/3;}
var time1=new Date().getTime()-time0;},fieldChanged:function(fieldName)
{var pnts=this._cf.coord.node._vf.point;if(pnts.length>x3dom.Utils.maxIndexableCoords)
{x3dom.debug.logWarning("IndexedQuadSet: fieldChanged with "+"too many coordinates not yet implemented!");return;}
if(fieldName=="coord")
{this._mesh._positions[0]=pnts.toGL();this.invalidateVolume();Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;node.invalidateVolume();});}
else if(fieldName=="color")
{pnts=this._cf.color.node._vf.color;if(this._vf.colorPerVertex){this._mesh._colors[0]=pnts.toGL();}else if(!this._vf.colorPerVertex){var faceCnt=0;var numColComponents=3;if(x3dom.isa(this._cf.color.node,x3dom.nodeTypes.ColorRGBA)){numColComponents=4;}
this._mesh._colors[0]=[];var indexes=this._vf.index;for(i=0;i<indexes.length;++i)
{if((i>0)&&(i%3===0)){faceCnt++;}
this._mesh._colors[0].push(pnts[faceCnt].r);this._mesh._colors[0].push(pnts[faceCnt].g);this._mesh._colors[0].push(pnts[faceCnt].b);if(numColComponents===4){this._mesh._colors[0].push(pnts[faceCnt].a);}}}
Array.forEach(this._parentNodes,function(node){node._dirty.colors=true;});}
else if(fieldName=="normal")
{pnts=this._cf.normal.node._vf.vector;if(this._vf.normalPerVertex){this._mesh._normals[0]=pnts.toGL();}else if(!this._vf.normalPerVertex){var indexes=this._vf.index;this._mesh._normals[0]=[];var faceCnt=0;for(i=0;i<indexes.length;++i)
{if((i>0)&&(i%3===0)){faceCnt++;}
this._mesh._normals[0].push(pnts[faceCnt].x);this._mesh._normals[0].push(pnts[faceCnt].y);this._mesh._normals[0].push(pnts[faceCnt].z);}}
Array.forEach(this._parentNodes,function(node){node._dirty.normals=true;});}
else if(fieldName=="texCoord")
{var texCoordNode=this._cf.texCoord.node;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.MultiTextureCoordinate)){if(texCoordNode._cf.texCoord.nodes.length)
texCoordNode=texCoordNode._cf.texCoord.nodes[0];}
pnts=texCoordNode._vf.point;this._mesh._texCoords[0]=pnts.toGL();Array.forEach(this._parentNodes,function(node){node._dirty.texcoords=true;});}}}));x3dom.registerNodeType("QuadSet","CADGeometry",defineClass(x3dom.nodeTypes.X3DComposedGeometryNode,function(ctx){x3dom.nodeTypes.QuadSet.superClass.call(this,ctx);},{nodeChanged:function()
{var time0=new Date().getTime();this.handleAttribs();var colPerVert=this._vf.colorPerVertex;var normPerVert=this._vf.normalPerVertex;var hasNormal=false,hasTexCoord=false,hasColor=false;var positions,normals,texCoords,colors;var coordNode=this._cf.coord.node;x3dom.debug.assert(coordNode);positions=coordNode._vf.point;var normalNode=this._cf.normal.node;if(normalNode){hasNormal=true;normals=normalNode._vf.vector;}
else{hasNormal=false;}
var texMode="",numTexComponents=2;var texCoordNode=this._cf.texCoord.node;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.MultiTextureCoordinate)){if(texCoordNode._cf.texCoord.nodes.length)
texCoordNode=texCoordNode._cf.texCoord.nodes[0];}
if(texCoordNode){if(texCoordNode._vf.point){hasTexCoord=true;texCoords=texCoordNode._vf.point;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.TextureCoordinate3D)){numTexComponents=3;}}
else if(texCoordNode._vf.mode){texMode=texCoordNode._vf.mode;}}
else{hasTexCoord=false;}
var numColComponents=3;var colorNode=this._cf.color.node;if(colorNode){hasColor=true;colors=colorNode._vf.color;if(x3dom.isa(colorNode,x3dom.nodeTypes.ColorRGBA)){numColComponents=4;}}
else{hasColor=false;}
this._mesh._indices[0]=[];this._mesh._positions[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];this._mesh._colors[0]=[];var i,t,cnt,faceCnt,posMax;var p0,p1,p2,n0,n1,n2,t0,t1,t2,c0,c1,c2;while(positions.length%4>0){positions.push(positions.length-1);}
posMax=positions.length;if(1)
{faceCnt=0;for(i=0;i<positions.length;i++)
{if((i>0)&&(i%4===3)){faceCnt++;this._mesh._indices[0].push(i-3);this._mesh._indices[0].push(i-1);this._mesh._indices[0].push(i);}
else{this._mesh._indices[0].push(i);}
if(!normPerVert&&hasNormal){this._mesh._normals[0].push(normals[faceCnt].x);this._mesh._normals[0].push(normals[faceCnt].y);this._mesh._normals[0].push(normals[faceCnt].z);}
if(!colPerVert&&hasColor){this._mesh._colors[0].push(colors[faceCnt].r);this._mesh._colors[0].push(colors[faceCnt].g);this._mesh._colors[0].push(colors[faceCnt].b);if(numColComponents===4){this._mesh._colors[0].push(colors[faceCnt].a);}}}
this._mesh._positions[0]=positions.toGL();if(hasNormal){this._mesh._normals[0]=normals.toGL();}
else{this._mesh.calcNormals(normPerVert?Math.PI:0);}
if(hasTexCoord){this._mesh._texCoords[0]=texCoords.toGL();this._mesh._numTexComponents=numTexComponents;}
else{this._mesh.calcTexCoords(texMode);}
if(hasColor&&colPerVert){this._mesh._colors[0]=colors.toGL();this._mesh._numColComponents=numColComponents;}}
this.invalidateVolume();this._mesh._numFaces=0;this._mesh._numCoords=0;for(i=0;i<this._mesh._indices.length;i++){this._mesh._numFaces+=this._mesh._indices[i].length/3;this._mesh._numCoords+=this._mesh._positions[i].length/3;}
var time1=new Date().getTime()-time0;},fieldChanged:function(fieldName)
{var pnts=this._cf.coord.node._vf.point;if(pnts.length>x3dom.Utils.maxIndexableCoords)
{x3dom.debug.logWarning("QuadSet: fieldChanged with "+"too many coordinates not yet implemented!");return;}
if(fieldName=="coord")
{this._mesh._positions[0]=pnts.toGL();this.invalidateVolume();Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;node.invalidateVolume();});}
else if(fieldName=="color")
{pnts=this._cf.color.node._vf.color;if(this._vf.colorPerVertex){this._mesh._colors[0]=pnts.toGL();}else if(!this._vf.colorPerVertex){var faceCnt=0;var numColComponents=3;if(x3dom.isa(this._cf.color.node,x3dom.nodeTypes.ColorRGBA)){numColComponents=4;}
this._mesh._colors[0]=[];var indexes=this._vf.index;for(i=0;i<indexes.length;++i)
{if((i>0)&&(i%3===0)){faceCnt++;}
this._mesh._colors[0].push(pnts[faceCnt].r);this._mesh._colors[0].push(pnts[faceCnt].g);this._mesh._colors[0].push(pnts[faceCnt].b);if(numColComponents===4){this._mesh._colors[0].push(pnts[faceCnt].a);}}}
Array.forEach(this._parentNodes,function(node){node._dirty.colors=true;});}
else if(fieldName=="normal")
{pnts=this._cf.normal.node._vf.vector;if(this._vf.normalPerVertex){this._mesh._normals[0]=pnts.toGL();}else if(!this._vf.normalPerVertex){var indexes=this._vf.index;this._mesh._normals[0]=[];var faceCnt=0;for(i=0;i<indexes.length;++i)
{if((i>0)&&(i%3===0)){faceCnt++;}
this._mesh._normals[0].push(pnts[faceCnt].x);this._mesh._normals[0].push(pnts[faceCnt].y);this._mesh._normals[0].push(pnts[faceCnt].z);}}
Array.forEach(this._parentNodes,function(node){node._dirty.normals=true;});}
else if(fieldName=="texCoord")
{var texCoordNode=this._cf.texCoord.node;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.MultiTextureCoordinate)){if(texCoordNode._cf.texCoord.nodes.length)
texCoordNode=texCoordNode._cf.texCoord.nodes[0];}
pnts=texCoordNode._vf.point;this._mesh._texCoords[0]=pnts.toGL();Array.forEach(this._parentNodes,function(node){node._dirty.texcoords=true;});}}}));x3dom.registerNodeType("CADLayer","CADGeometry",defineClass(x3dom.nodeTypes.X3DGroupingNode,function(ctx){x3dom.nodeTypes.CADLayer.superClass.call(this,ctx);this.addField_SFString(ctx,'name',"");}));x3dom.registerNodeType("CADAssembly","CADGeometry",defineClass(x3dom.nodeTypes.X3DGroupingNode,function(ctx){x3dom.nodeTypes.CADAssembly.superClass.call(this,ctx);this.addField_SFString(ctx,'name',"");}));x3dom.registerNodeType("CADPart","CADGeometry",defineClass(x3dom.nodeTypes.Transform,function(ctx){x3dom.nodeTypes.CADPart.superClass.call(this,ctx);this.addField_SFString(ctx,'name',"");}));x3dom.registerNodeType("CADFace","CADGeometry",defineClass(x3dom.nodeTypes.X3DGroupingNode,function(ctx){x3dom.nodeTypes.CADFace.superClass.call(this,ctx);this.addField_SFString(ctx,'name',"");this.addField_SFNode('shape',x3dom.nodeTypes.X3DShapeNode);},{getVolume:function()
{var vol=this._graph.volume;if(!this.volumeValid()&&this._vf.render)
{var child=this._cf.shape.node;var childVol=(child&&child._vf.render===true)?child.getVolume():null;if(childVol&&childVol.isValid())
vol.extendBounds(childVol.min,childVol.max);}
return vol;},collectDrawableObjects:function(transform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes)
{if(singlePath&&(this._parentNodes.length>1))
singlePath=false;if(singlePath&&(invalidateCache=invalidateCache||this.cacheInvalid()))
this.invalidateCache();if(!this._cf.shape.node||(planeMask=drawableCollection.cull(transform,this.graphState(),singlePath,planeMask))<=0){return;}
var cnode,childTransform;if(singlePath){if(!this._graph.globalMatrix){this._graph.globalMatrix=this.transformMatrix(transform);}
childTransform=this._graph.globalMatrix;}
else{childTransform=this.transformMatrix(transform);}
if((cnode=this._cf.shape.node)){cnode.collectDrawableObjects(childTransform,drawableCollection,singlePath,invalidateCache,planeMask,clipPlanes);}}}));x3dom.registerNodeType("Patch","BVHRefiner",defineClass(x3dom.nodeTypes.X3DSpatialGeometryNode,function(ctx){x3dom.nodeTypes.Patch.superClass.call(this,ctx);this.addField_SFVec2f(ctx,'size',2,2);this.addField_SFVec2f(ctx,'subdivision',1,1);this.addField_SFVec3f(ctx,'center',0,0,0);this.addField_MFString(ctx,'primType',['TRIANGLES']);var sx=this._vf.size.x,sy=this._vf.size.y;var subx=this._vf.subdivision.x,suby=this._vf.subdivision.y;this._indexBufferTriangulationParts=[];var x=0,y=0;var xstep=sx/subx/2;var ystep=sy/suby/2;sx/=2;sy/=2;var countX=subx*2+1;var countY=suby*2+1;for(y=0;y<=suby*2;y++){for(x=0;x<=subx*2;x++){this._mesh._positions[0].push(this._vf.center.x+x*xstep-sx);this._mesh._positions[0].push(this._vf.center.y+y*ystep-sy);this._mesh._positions[0].push(this._vf.center.z);this._mesh._normals[0].push(0);this._mesh._normals[0].push(0);this._mesh._normals[0].push(1);this._mesh._texCoords[0].push(x/(subx*2));this._mesh._texCoords[0].push(y/(suby*2));}}
for(y=0;y<countY-2;y+=2){for(x=0;x<countX-2;x+=2){this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);}}
this._indexBufferTriangulationParts.push({offset:0,count:subx*suby*6});for(y=0;y<countY-2;y+=2){for(x=0;x<2;x+=2){this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+1)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+y*countX);}}
for(y=0;y<countY-2;y+=2){for(x=2;x<countX-2;x+=2){this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);}}
this._indexBufferTriangulationParts.push({offset:this._indexBufferTriangulationParts[this._indexBufferTriangulationParts.length-1].offset+
this._indexBufferTriangulationParts[this._indexBufferTriangulationParts.length-1].count*2,count:subx*suby*6+suby*9});for(y=0;y<countY-2;y+=2){for(x=countX-3;x<countX-2;x+=2){this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+1)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+y*countX);}}
for(y=0;y<countY-2;y+=2){for(x=0;x<countX-4;x+=2){this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);}}
this._indexBufferTriangulationParts.push({offset:this._indexBufferTriangulationParts[this._indexBufferTriangulationParts.length-1].offset+
this._indexBufferTriangulationParts[this._indexBufferTriangulationParts.length-1].count*2,count:subx*suby*6+suby*9});for(y=2;y<countY-2;y+=2){for(x=0;x<countX-2;x+=2){this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);}}
for(y=0;y<2;y+=2){for(x=0;x<countX-2;x+=2){this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+1)+y*countX);this._mesh._indices[0].push((x+1)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+y*countX);}}
this._indexBufferTriangulationParts.push({offset:this._indexBufferTriangulationParts[this._indexBufferTriangulationParts.length-1].offset+
this._indexBufferTriangulationParts[this._indexBufferTriangulationParts.length-1].count*2,count:subx*suby*6+subx*9});for(y=countY-3;y<countY-2;y+=2){for(x=0;x<countX-2;x+=2){this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+1)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+y*countX);}}
for(y=0;y<countY-4;y+=2){for(x=0;x<countX-2;x+=2){this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);}}
this._indexBufferTriangulationParts.push({offset:this._indexBufferTriangulationParts[this._indexBufferTriangulationParts.length-1].offset+
this._indexBufferTriangulationParts[this._indexBufferTriangulationParts.length-1].count*2,count:subx*suby*6+subx*9});for(y=countY-3;y<countY-2;y+=2){for(x=countX-3;x<countX-2;x+=2){this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+1)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+1)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+y*countX);}}
for(y=0;y<countY-4;y+=2){for(x=0;x<countX-4;x+=2){this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);}}
for(y=0;y<countY-4;y+=2){for(x=countX-3;x<countX-2;x+=2){this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+1)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+y*countX);}}
for(y=countY-3;y<countY-2;y+=2){for(x=0;x<countX-4;x+=2){this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+1)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+y*countX);}}
this._indexBufferTriangulationParts.push({offset:this._indexBufferTriangulationParts[this._indexBufferTriangulationParts.length-1].offset+
this._indexBufferTriangulationParts[this._indexBufferTriangulationParts.length-1].count*2,count:subx*suby*6+subx*9+(suby-1)*9+3});for(y=countY-3;y<countY-2;y+=2){for(x=0;x<2;x+=2){this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+1)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+1)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+y*countX);}}
for(y=0;y<countY-4;y+=2){for(x=2;x<countX-2;x+=2){this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);}}
for(y=countY-3;y<countY-2;y+=2){for(x=2;x<countX-2;x+=2){this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+1)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+y*countX);}}
for(y=0;y<countY-4;y+=2){for(x=0;x<2;x+=2){this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+1)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+y*countX);}}
this._indexBufferTriangulationParts.push({offset:this._indexBufferTriangulationParts[this._indexBufferTriangulationParts.length-1].offset+
this._indexBufferTriangulationParts[this._indexBufferTriangulationParts.length-1].count*2,count:subx*suby*6+subx*9+(suby-1)*9+3});for(y=0;y<2;y+=2){for(x=0;x<2;x+=2){this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+1)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+1)+y*countX);this._mesh._indices[0].push((x+1)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+y*countX);}}
for(y=2;y<countY-2;y+=2){for(x=2;x<countX-2;x+=2){this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);}}
for(y=2;y<countY-2;y+=2){for(x=0;x<2;x+=2){this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+1)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+y*countX);}}
for(y=0;y<2;y+=2){for(x=2;x<countX-2;x+=2){this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+1)+y*countX);this._mesh._indices[0].push((x+1)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+y*countX);}}
this._indexBufferTriangulationParts.push({offset:this._indexBufferTriangulationParts[this._indexBufferTriangulationParts.length-1].offset+
this._indexBufferTriangulationParts[this._indexBufferTriangulationParts.length-1].count*2,count:subx*suby*6+subx*9+(suby-1)*9+3});for(y=0;y<2;y+=2){for(x=countX-3;x<countX-2;x+=2){this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+1)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+1)+y*countX);this._mesh._indices[0].push((x+1)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+y*countX);}}
for(y=2;y<countY-2;y+=2){for(x=0;x<countX-4;x+=2){this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);}}
for(y=2;y<countY-2;y+=2){for(x=countX-3;x<countX-2;x+=2){this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+1)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+y*countX);}}
for(y=0;y<2;y+=2){for(x=0;x<countX-4;x+=2){this._mesh._indices[0].push((x)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+2)+(y+2)*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+2)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x+1)+y*countX);this._mesh._indices[0].push((x+1)+y*countX);this._mesh._indices[0].push((x+1)+(y+1)*countX);this._mesh._indices[0].push((x)+y*countX);}}
this._indexBufferTriangulationParts.push({offset:this._indexBufferTriangulationParts[this._indexBufferTriangulationParts.length-1].offset+
this._indexBufferTriangulationParts[this._indexBufferTriangulationParts.length-1].count*2,count:subx*suby*6+subx*9+(suby-1)*9+3});this._mesh._invalidate=true;this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;},{hasIndexOffset:function(){return true;},getTriangulationAttributes:function(triangulationIndex){return this._indexBufferTriangulationParts[triangulationIndex];}}));x3dom.registerNodeType("BVHRefiner","BVHRefiner",defineClass(x3dom.nodeTypes.X3DLODNode,function(ctx){x3dom.nodeTypes.BVHRefiner.superClass.call(this,ctx);this.addField_SFFloat(ctx,'factor',1.0);this.addField_SFInt32(ctx,'maxDepth',3);this.addField_SFInt32(ctx,'minDepth',0);this.addField_SFInt32(ctx,'smoothLoading',1);this.addField_SFInt32(ctx,'interactionDepth',this._vf.maxDepth);this.addField_SFVec2f(ctx,'size',1,1);this.addField_SFVec3f(ctx,'octSize',1,1,1);this.addField_SFVec2f(ctx,'subdivision',1,1);this.addField_SFString(ctx,'url',"");this.addField_SFString(ctx,'elevationUrl',"");this.addField_SFString(ctx,'textureUrl',"");this.addField_SFString(ctx,'normalUrl',"");this.addField_SFString(ctx,'mode',"3d");this.addField_SFString(ctx,'subMode',"wmts");this.addField_SFString(ctx,'elevationFormat',"png");this.addField_SFString(ctx,'textureFormat',"png");this.addField_SFString(ctx,'normalFormat',"png");this.addField_SFFloat(ctx,'maxElevation',1.0);this.addField_SFBool(ctx,'useNormals',true);this.addField_SFBool(ctx,'lit',true);this.addField_SFInt32(ctx,'bvhCount',8);this.creationSmooth=0;this.togglePoints=true;this.nodeProducer=new NodeProducer();var nodeListSize=0;for(var x=0;x<=this._vf.maxDepth;x++){nodeListSize+=Math.pow(4,x);}
this.nodeList=new Array(nodeListSize);if(this._vf.mode==="bin"){this.rootNode=new QuadtreeNodeBin(ctx,this,0,0,0,null);}
else if(this._vf.mode==="3d"||this._vf.mode==="2d"){var geometry=new x3dom.nodeTypes.Plane(ctx);geometry._vf.subdivision.setValues(this._vf.subdivision);geometry.fieldChanged("subdivision");geometry._vf.size.setValues(this._vf.size);if(this._vf.mode==="2d"){if(this._vf.subMode==="wmts"){this.rootNode=new QuadtreeNode2dWMTS(ctx,this,0,0,x3dom.fields.SFMatrix4f.identity(),0,0,geometry);}
else{this.rootNode=new QuadtreeNode2D(ctx,this,0,0,x3dom.fields.SFMatrix4f.identity(),0,0,geometry,"/",1);}}
else{if(this._vf.subMode==="32bit"){this.rootNode=new QuadtreeNode3D_32bit(ctx,this,0,0,x3dom.fields.SFMatrix4f.identity(),0,0,geometry);}
else{geometry=new x3dom.nodeTypes.Patch(ctx);this.rootNode=new QuadtreeNode3D(ctx,this,0,0,x3dom.fields.SFMatrix4f.identity(),0,0,geometry);}}}
else if(this._vf.mode==="bvh"){this.rootNode=new BVHNode(ctx,this,0,"/",1,this._vf.bvhCount);}
else{x3dom.debug.logError("Error attribute mode. Value: '"+this._vf.mode+"' isn't conform. Please use type 'bin', '2d' or '3d'");}},{visitChildren:function(transform,drawableCollection,singlePath,invalidateCache,planeMask){var x3dElement=this._nameSpace.doc._x3dElem;if(this._vf.mode==="oct"){if(x3dElement.runtime.isReady&&this.togglePoints){x3dElement.runtime.togglePoints();this.togglePoints=false;this.view=drawableCollection.viewarea;}
this.creationSmooth++;singlePath=false;invalidateCache=true;this.rootNode.collectDrawables(transform,drawableCollection,singlePath,invalidateCache,planeMask);if(!this.view.isMovingOrAnimating()&&((this.creationSmooth%this._vf.smoothLoading)===0)){this.nodeProducer.CreateNewNode();}}
else{if(x3dElement.runtime.isReady&&this.togglePoints){this.view=x3dElement.runtime.canvas.doc._viewarea;this.togglePoints=false;}
this.createChildren=0;this.creationSmooth++;singlePath=false;invalidateCache=true;this.rootNode.collectDrawables(transform,drawableCollection,singlePath,invalidateCache,planeMask);if(!this.view.isMovingOrAnimating()&&((this.creationSmooth%this._vf.smoothLoading)===0)){this.nodeProducer.CreateNewNode();}}},getVolume:function()
{var vol=this._graph.volume;if(!this.volumeValid()&&this._vf.render)
{var childVol=this.rootNode.getVolume();if(childVol&&childVol.isValid())
vol.extendBounds(childVol.min,childVol.max);}
return vol;}}));function NodeProducer()
{var nextNode=null;var nearestDistance=1000000;var smallestDepth=1000000;this.AddNewNode=function(node,distance){if(node.Level()<smallestDepth){smallestDepth=node.Level();nextNode=node;}
if(node.Level()===smallestDepth){if(distance<nearestDistance){distance=nearestDistance;nextNode=node;}}};this.CreateNewNode=function(){if(nextNode!==null){nextNode.CreateChildren();}
nextNode=null;smallestDepth=1000;};}
function QuadtreeNode2dWMTS(ctx,bvhRefiner,level,nodeNumber,nodeTransformation,columnNr,rowNr,geometry)
{var children=[];var shape=new x3dom.nodeTypes.Shape();var position=null;var readyState=false;var childrenReadyState=false;var url=bvhRefiner._vf.textureUrl+"/"+level+"/"+columnNr+"/"+rowNr+"."+(bvhRefiner._vf.textureFormat).toLowerCase();var resizeFac=(bvhRefiner._vf.size.x+bvhRefiner._vf.size.y)/2.0;var cullObject={};function initialize(){var appearance=new x3dom.nodeTypes.Appearance(ctx);var texture=new x3dom.nodeTypes.ImageTexture(ctx);shape._nameSpace=bvhRefiner._nameSpace;var texProp=new x3dom.nodeTypes.TextureProperties(ctx);texProp._vf.boundaryModeS="CLAMP_TO_EDGE";texProp._vf.boundaryModeT="CLAMP_TO_EDGE";texProp._vf.boundaryModeR="CLAMP_TO_EDGE";texProp._vf.minificationFilter="LINEAR";texProp._vf.magnificationFilter="LINEAR";texture.addChild(texProp,"textureProperties");texture.nodeChanged();texture._nameSpace=bvhRefiner._nameSpace;texture._vf.url[0]=url;position=nodeTransformation.e3();appearance.addChild(texture);texture.nodeChanged();shape.addChild(appearance);appearance.nodeChanged();shape.addChild(geometry);geometry.nodeChanged();bvhRefiner.addChild(shape);shape.nodeChanged();cullObject.boundedNode=shape;cullObject.volume=shape.getVolume();}
this.CreateChildren=function(){create();};function create(){var deltaR=Math.sqrt(Math.pow(4,level));var deltaR1=Math.sqrt(Math.pow(4,level+1));var lt=Math.floor(nodeNumber/deltaR)*4*deltaR+
(nodeNumber%deltaR)*2;var rt=lt+1;var lb=lt+deltaR1;var rb=lb+1;var s=(bvhRefiner._vf.size).multiply(0.25);children.push(new QuadtreeNode2dWMTS(ctx,bvhRefiner,(level+1),lt,nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(-s.x,s.y,0.0))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,1.0))),(columnNr*2),(rowNr*2),geometry));children.push(new QuadtreeNode2dWMTS(ctx,bvhRefiner,(level+1),rt,nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(s.x,s.y,0.0))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,1.0))),(columnNr*2+1),(rowNr*2),geometry));children.push(new QuadtreeNode2dWMTS(ctx,bvhRefiner,(level+1),lb,nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(-s.x,-s.y,0.0))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,1.0))),(columnNr*2),(rowNr*2+1),geometry));children.push(new QuadtreeNode2dWMTS(ctx,bvhRefiner,(level+1),rb,nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(s.x,-s.y,0.0))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,1.0))),(columnNr*2+1),(rowNr*2+1),geometry));}
this.Shape=function(){return shape;};this.Ready=function(){if(shape._webgl!==undefined&&shape._webgl.texture!==undefined){return ready();}
return false;};function ready(){readyState=true;for(var i=0;i<shape._webgl.texture.length;i++){if(!shape._webgl.texture[i].texture.ready){readyState=false;}}
return readyState;}
function updateLoadingState(drawableCollection,transform){childrenReadyState=true;for(var i=0;i<children.length;i++){if(!children[i].Ready()){childrenReadyState=false;}}
if(children.length<4){childrenReadyState=false;}
else if(childrenReadyState){for(var i=0;i<children.length;i++){children[i].Shape()._vf.render=true;}}
if(shape._webgl===undefined||shape._webgl.texture===undefined){drawableCollection.context.setupShape(drawableCollection.gl,{shape:shape,transform:transform},drawableCollection.viewarea);}
else{ready();}}
this.collectDrawables=function(transform,drawableCollection,singlePath,invalidateCache,planeMask){cullObject.localMatrix=nodeTransformation;planeMask=drawableCollection.cull(nodeTransformation,cullObject,singlePath,planeMask);if(!readyState||!childrenReadyState)
updateLoadingState(drawableCollection,nodeTransformation);if(readyState&&planeMask>0){var mat_view=drawableCollection.viewMatrix;var vPos=mat_view.multMatrixPnt(nodeTransformation.multMatrixPnt(position));var distanceToCamera=Math.sqrt(Math.pow(vPos.x,2)+Math.pow(vPos.y,2)+Math.pow(vPos.z,2));if((distanceToCamera<Math.pow((bvhRefiner._vf.maxDepth-level),2)*resizeFac/bvhRefiner._vf.factor)||level<bvhRefiner._vf.minDepth){if(bvhRefiner.view.isMovingOrAnimating()&&children.length===0||bvhRefiner.view.isMovingOrAnimating()&&level>=bvhRefiner._vf.interactionDepth){shape.collectDrawableObjects(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask,[]);}
else{if(children.length===0){bvhRefiner.nodeProducer.AddNewNode(that,distanceToCamera);shape.collectDrawableObjects(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask,[]);}
else{if(childrenReadyState){for(var i=0;i<children.length;i++){children[i].collectDrawables(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask);}}
else{shape.collectDrawableObjects(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask,[]);for(var i=0;i<children.length;i++){children[i].collectDrawables(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask);children[i].Shape()._vf.render=false;}}}}}
else{shape.collectDrawableObjects(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask,[]);}}};this.getVolume=function(){return shape.getVolume();};this.Level=function(){return level;};var that=this;initialize();}
function QuadtreeNode2D(ctx,bvhRefiner,level,nodeNumber,nodeTransformation,columnNr,rowNr,geometry,path,imgNumber)
{var children=[];var shape=new x3dom.nodeTypes.Shape();var position=null;var readyState=false;var childrenReadyState=false;var exists=true;var url=bvhRefiner._vf.textureUrl+path+imgNumber+"."+bvhRefiner._vf.textureFormat;var resizeFac=(bvhRefiner._vf.size.x+bvhRefiner._vf.size.y)/2.0;var cullObject={};function initialize(){var appearance=new x3dom.nodeTypes.Appearance(ctx);var texture=new x3dom.nodeTypes.ImageTexture(ctx);shape._nameSpace=bvhRefiner._nameSpace;var texProp=new x3dom.nodeTypes.TextureProperties(ctx);texProp._vf.boundaryModeS="CLAMP_TO_EDGE";texProp._vf.boundaryModeT="CLAMP_TO_EDGE";texProp._vf.boundaryModeR="CLAMP_TO_EDGE";texProp._vf.minificationFilter="LINEAR";texProp._vf.magnificationFilter="LINEAR";texture.addChild(texProp,"textureProperties");texture.nodeChanged();texture._nameSpace=bvhRefiner._nameSpace;texture._vf.url[0]=url;position=nodeTransformation.e3();appearance.addChild(texture);texture.nodeChanged();shape.addChild(appearance);appearance.nodeChanged();shape.addChild(geometry);geometry.nodeChanged();bvhRefiner.addChild(shape);shape.nodeChanged();cullObject.boundedNode=shape;cullObject.volume=shape.getVolume();}
this.CreateChildren=function(){create();};function create(){var deltaR=Math.sqrt(Math.pow(4,level));var deltaR1=Math.sqrt(Math.pow(4,level+1));var lt=Math.floor(nodeNumber/deltaR)*4*deltaR+
(nodeNumber%deltaR)*2;var rt=lt+1;var lb=lt+deltaR1;var rb=lb+1;var s=(bvhRefiner._vf.size).multiply(0.25);children.push(new QuadtreeNode2D(ctx,bvhRefiner,(level+1),lt,nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(-s.x,s.y,0.0))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,1.0))),(columnNr*2),(rowNr*2),geometry,path+imgNumber+"/",1));children.push(new QuadtreeNode2D(ctx,bvhRefiner,(level+1),rt,nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(s.x,s.y,0.0))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,1.0))),(columnNr*2+1),(rowNr*2),geometry,path+imgNumber+"/",3));children.push(new QuadtreeNode2D(ctx,bvhRefiner,(level+1),lb,nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(-s.x,-s.y,0.0))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,1.0))),(columnNr*2),(rowNr*2+1),geometry,path+imgNumber+"/",2));children.push(new QuadtreeNode2D(ctx,bvhRefiner,(level+1),rb,nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(s.x,-s.y,0.0))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,1.0))),(columnNr*2+1),(rowNr*2+1),geometry,path+imgNumber+"/",4));}
this.Shape=function(){return shape;};this.Ready=function(){if(shape._webgl!==undefined&&shape._webgl.texture!==undefined){return ready();}
return false;};function ready(){readyState=true;for(var i=0;i<shape._webgl.texture.length;i++){if(!shape._webgl.texture[i].texture.ready){readyState=false;}}
return readyState;}
function updateLoadingState(drawableCollection,transform){childrenReadyState=true;for(var i=0;i<children.length;i++){if(!children[i].Ready()){childrenReadyState=false;}}
if(children.length<4){childrenReadyState=false;}
else if(childrenReadyState){for(var i=0;i<children.length;i++){children[i].Shape()._vf.render=true;}}
if(shape._webgl===undefined||shape._webgl.texture===undefined){drawableCollection.context.setupShape(drawableCollection.gl,{shape:shape,transform:transform},drawableCollection.viewarea);}
else{ready();}}
this.collectDrawables=function(transform,drawableCollection,singlePath,invalidateCache,planeMask){cullObject.localMatrix=nodeTransformation;if(!readyState||!childrenReadyState){updateLoadingState(drawableCollection,nodeTransformation);}
if(readyState&&(planeMask=drawableCollection.cull(nodeTransformation,cullObject,singlePath,planeMask))>0){var mat_view=drawableCollection.viewMatrix;var vPos=mat_view.multMatrixPnt(nodeTransformation.multMatrixPnt(position));var distanceToCamera=Math.sqrt(Math.pow(vPos.x,2)+Math.pow(vPos.y,2)+Math.pow(vPos.z,2));if((distanceToCamera<Math.pow((bvhRefiner._vf.maxDepth-level),2)*resizeFac/bvhRefiner._vf.factor)||level<bvhRefiner._vf.minDepth){if(bvhRefiner.view.isMovingOrAnimating()&&children.length===0||bvhRefiner.view.isMovingOrAnimating()&&level>=bvhRefiner._vf.interactionDepth){shape.collectDrawableObjects(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask,[]);}
else{if(children.length===0){bvhRefiner.nodeProducer.AddNewNode(that,distanceToCamera);shape.collectDrawableObjects(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask,[]);}
else{if(childrenReadyState){for(var i=0;i<children.length;i++){children[i].collectDrawables(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask);}}
else{shape.collectDrawableObjects(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask,[]);for(var i=0;i<children.length;i++){children[i].collectDrawables(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask);children[i].Shape()._vf.render=false;}}}}}
else{shape.collectDrawableObjects(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask,[]);}}};this.getVolume=function(){return shape.getVolume();};this.Level=function(){return level;};var that=this;initialize();}
function QuadtreeNode3D(ctx,bvhRefiner,level,nodeNumber,nodeTransformation,columnNr,rowNr,geometry)
{var children=[];var neighbors=[];var shape=new x3dom.nodeTypes.Shape();var position=null;var imageAddressColor=bvhRefiner._vf.textureUrl+"/"+level+"/"+
columnNr+"/"+rowNr+"."+
(bvhRefiner._vf.textureFormat).toLowerCase();var imageAddressHeight=bvhRefiner._vf.elevationUrl+"/"+level+"/"+
columnNr+"/"+rowNr+"."+
(bvhRefiner._vf.elevationFormat).toLowerCase();if(bvhRefiner._vf.normalUrl!=="")
var imageAddressNormal=bvhRefiner._vf.normalUrl+"/"+level+"/"+
columnNr+"/"+rowNr+"."+
(bvhRefiner._vf.normalFormat).toLowerCase();var readyState=false;var childrenReadyState=false;var resizeFac=(bvhRefiner._vf.size.x+bvhRefiner._vf.size.y)/2.0;var cullObject={};var lastIndice=0;var triangulationAttributes=null;function initialize(){var appearance=new x3dom.nodeTypes.Appearance(ctx);var textures=new x3dom.nodeTypes.MultiTexture(ctx);var colorTexture=new x3dom.nodeTypes.ImageTexture(ctx);var heightTexture=new x3dom.nodeTypes.ImageTexture(ctx);var normalTexture=new x3dom.nodeTypes.ImageTexture(ctx);var composedShader=new x3dom.nodeTypes.ComposedShader(ctx);shape._nameSpace=bvhRefiner._nameSpace;position=nodeTransformation.e3();position.z=bvhRefiner._vf.maxElevation/2;var vertexShader=new x3dom.nodeTypes.ShaderPart(ctx);vertexShader._vf.type='vertex';vertexShader._vf.url[0]=createVertexShader();var fragmentShader=new x3dom.nodeTypes.ShaderPart(ctx);fragmentShader._vf.type='fragment';fragmentShader._vf.url[0]=createFragmentShader();composedShader.addChild(vertexShader,'parts');composedShader.addChild(fragmentShader,'parts');var colorTexProp=new x3dom.nodeTypes.TextureProperties(ctx);colorTexProp._vf.boundaryModeS="CLAMP_TO_EDGE";colorTexProp._vf.boundaryModeT="CLAMP_TO_EDGE";colorTexProp._vf.boundaryModeR="CLAMP_TO_EDGE";colorTexProp._vf.minificationFilter="LINEAR";colorTexProp._vf.magnificationFilter="LINEAR";colorTexture.addChild(colorTexProp,"textureProperties");colorTexture.nodeChanged();colorTexture._nameSpace=bvhRefiner._nameSpace;colorTexture._vf.url[0]=imageAddressColor;colorTexture._vf.repeatT=false;colorTexture._vf.repeatS=false;textures.addChild(colorTexture,'texture');colorTexture.nodeChanged();var colorTextureField=new x3dom.nodeTypes.Field(ctx);colorTextureField._vf.name='texColor';colorTextureField._vf.type='SFInt32';colorTextureField._vf.value=0;composedShader.addChild(colorTextureField,'fields');colorTextureField.nodeChanged();var heightTexProp=new x3dom.nodeTypes.TextureProperties(ctx);heightTexProp._vf.boundaryModeS="CLAMP_TO_EDGE";heightTexProp._vf.boundaryModeT="CLAMP_TO_EDGE";heightTexProp._vf.boundaryModeR="CLAMP_TO_EDGE";heightTexProp._vf.minificationFilter="NEAREST";heightTexProp._vf.magnificationFilter="NEAREST";heightTexture.addChild(heightTexProp,"textureProperties");heightTexture.nodeChanged();heightTexture._nameSpace=bvhRefiner._nameSpace;heightTexture._vf.url[0]=imageAddressHeight;heightTexture._vf.repeatT=false;heightTexture._vf.repeatS=false;heightTexture._vf.scale=false;textures.addChild(heightTexture,'texture');heightTexture.nodeChanged();var heightTextureField=new x3dom.nodeTypes.Field(ctx);heightTextureField._vf.name='texHeight';heightTextureField._vf.type='SFInt32';heightTextureField._vf.value=1;composedShader.addChild(heightTextureField,'fields');heightTextureField.nodeChanged();if(bvhRefiner._vf.normalUrl!==""){var normalTexProp=new x3dom.nodeTypes.TextureProperties(ctx);normalTexProp._vf.boundaryModeS="CLAMP_TO_EDGE";normalTexProp._vf.boundaryModeT="CLAMP_TO_EDGE";normalTexProp._vf.boundaryModeR="CLAMP_TO_EDGE";normalTexProp._vf.minificationFilter="LINEAR";normalTexProp._vf.magnificationFilter="LINEAR";normalTexture.addChild(normalTexProp,"textureProperties");normalTexture.nodeChanged();normalTexture._nameSpace=bvhRefiner._nameSpace;normalTexture._vf.url[0]=imageAddressNormal;normalTexture._vf.repeatT=false;normalTexture._vf.repeatS=false;textures.addChild(normalTexture,'texture');normalTexture.nodeChanged();var normalTextureField=new x3dom.nodeTypes.Field(ctx);normalTextureField._vf.name='texNormal';normalTextureField._vf.type='SFInt32';normalTextureField._vf.value=2;composedShader.addChild(normalTextureField,'fields');normalTextureField.nodeChanged();}
var maxHeight=new x3dom.nodeTypes.Field(ctx);maxHeight._vf.name='maxElevation';maxHeight._vf.type='SFFloat';maxHeight._vf.value=bvhRefiner._vf.maxElevation;composedShader.addChild(maxHeight,'fields');maxHeight.nodeChanged();appearance.addChild(textures);textures.nodeChanged();appearance.addChild(composedShader);composedShader.nodeChanged();shape.addChild(appearance);appearance.nodeChanged();shape.addChild(geometry);bvhRefiner.addChild(shape);shape.nodeChanged();cullObject.boundedNode=shape;cullObject.volume=shape.getVolume();cullObject.volume.max.z=bvhRefiner._vf.maxElevation;cullObject.volume.min.z=0;cullObject.volume.center=cullObject.volume.min.add(cullObject.volume.max).multiply(0.5);cullObject.volume.transform(nodeTransformation);calculateNeighborhood();}
function calculateNeighborhood(){var levelStartID=0;for(var i=0;i<level;i++){levelStartID+=Math.pow(4,i);}
var sid=levelStartID+nodeNumber;bvhRefiner.nodeList[sid]=that;var c=Math.sqrt(Math.pow(4,level));neighbors[0]=levelStartID+(Math.ceil(((nodeNumber+1)/c)-1)*c+((nodeNumber+(c-1))%c));neighbors[1]=levelStartID+(Math.ceil(((nodeNumber+1)/c)-1)*c+((nodeNumber+1)%c));neighbors[3]=levelStartID+(nodeNumber+(c*(c-1)))%(Math.pow(4,level));neighbors[2]=levelStartID+(nodeNumber+c)%(Math.pow(4,level));if(columnNr===0){neighbors[0]=-1;}
if(rowNr===0){neighbors[3]=-1;}
if(columnNr===c-1){neighbors[1]=-1;}
if(rowNr===c-1){neighbors[2]=-1;}}
function createVertexShader(){if(bvhRefiner._vf.normalUrl!=="")
return"attribute vec3 position;\n"+"attribute vec3 texcoord;\n"+"uniform mat4 modelViewMatrix;\n"+"uniform mat4 modelViewProjectionMatrix;\n"+"uniform sampler2D texColor;\n"+"uniform sampler2D texHeight;\n"+"uniform float maxElevation;\n"+"uniform sampler2D texNormal;\n"+"varying vec2 texC;\n"+"varying vec3 vLight;\n"+"const float shininess = 32.0;\n"+"\n"+"void main(void) {\n"+"    vec3 uLightPosition = vec3(160.0, -9346.0, 4806.0);\n"+"    vec4 colr = texture2D(texColor, vec2(texcoord[0], 1.0-texcoord[1]));\n"+"    vec3 uAmbientMaterial = vec3(1.0, 1.0, 0.9);"+"    vec3 uAmbientLight = vec3(0.5, 0.5, 0.5);"+"    vec3 uDiffuseMaterial = vec3(0.7, 0.7, 0.7);"+"    vec3 uDiffuseLight = vec3(1.0, 1.0, 1.0);"+"    vec4 vertexPositionEye4 = modelViewMatrix * vec4(position, 1.0);"+"    vec3 vertexPositionEye3 = vec3((modelViewMatrix * vec4(vertexPositionEye4.xyz, 1.0)).xyz);"+"    vec3 vectorToLightSource = normalize(uLightPosition - vertexPositionEye3);"+"    vec4 height = texture2D(texHeight, vec2(texcoord[0], 1.0 - texcoord[1]));\n"+"    vec4 normalEye = 2.0 * texture2D(texNormal, vec2(texcoord[0], 1.0-texcoord[1])) - 1.0;\n"+"    float diffuseLightWeighting = max(dot(normalEye.xyz, vectorToLightSource), 0.0);"+"    texC = vec2(texcoord[0], 1.0-texcoord[1]);\n"+"    vec3 diffuseReflectance = uDiffuseMaterial * uDiffuseLight * diffuseLightWeighting;"+"    vec3 uSpecularMaterial = vec3(0.0, 0.0, 0.0);"+"    vec3 uSpecularLight = vec3(1.0, 1.0, 1.0);"+"    vec3 reflectionVector = normalize(reflect(-vectorToLightSource, normalEye.xyz));"+"    vec3 viewVectorEye = -normalize(vertexPositionEye3);"+"    float rdotv = max(dot(reflectionVector, viewVectorEye), 0.0);"+"    float specularLightWeight = pow(rdotv, shininess);"+"    vec3 specularReflection = uSpecularMaterial * uSpecularLight * specularLightWeight;"+"    vLight = vec4(uAmbientMaterial * uAmbientLight + diffuseReflectance + specularReflection, 1.0).xyz;"+"    gl_Position = modelViewProjectionMatrix * vec4(position.xy, height.x * maxElevation, 1.0);\n"+"}\n";else
return"attribute vec3 position;\n"+"attribute vec3 texcoord;\n"+"uniform mat4 modelViewProjectionMatrix;\n"+"uniform sampler2D texHeight;\n"+"uniform float maxElevation;\n"+"varying vec2 texC;\n"+"\n"+"void main(void) {\n"+"    vec4 height = texture2D(texHeight, vec2(texcoord[0], 1.0 - texcoord[1]));\n"+"    texC = vec2(texcoord[0], 1.0-texcoord[1]);\n"+"    gl_Position = modelViewProjectionMatrix * vec4(position.xy, height.x * maxElevation, 1.0);\n"+"}\n";}
function createFragmentShader(){if(bvhRefiner._vf.normalUrl!=="")
return"#ifdef GL_ES\n"+"precision highp float;\n"+"#endif\n"+"uniform sampler2D texColor;\n"+"uniform sampler2D texNormal;\n"+"varying vec2 texC;\n"+"varying vec3 vLight;\n"+"\n"+"\n"+"void main(void) {\n"+"    vec4 normal = 2.0 * texture2D(texNormal, texC) - 1.0;\n"+"    vec4 colr = texture2D(texColor, texC);\n"+"    gl_FragColor = vec4(colr.xyz * vLight, colr.w);\n"+"}\n";else
return"#ifdef GL_ES\n"+"precision highp float;\n"+"#endif\n"+"uniform sampler2D texColor;\n"+"varying vec2 texC;\n"+"\n"+"\n"+"void main(void) {\n"+"    gl_FragColor = texture2D(texColor, texC);\n"+"}\n";}
this.CreateChildren=function(){create();};function create(){var deltaR=Math.sqrt(Math.pow(4,level));var deltaR1=Math.sqrt(Math.pow(4,level+1));var lt=Math.floor(nodeNumber/deltaR)*4*deltaR+
(nodeNumber%deltaR)*2;var rt=lt+1;var lb=lt+deltaR1;var rb=lb+1;var s=(bvhRefiner._vf.size).multiply(0.25);children.push(new QuadtreeNode3D(ctx,bvhRefiner,(level+1),lt,nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(-s.x,s.y,0.0))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,1.0))),(columnNr*2),(rowNr*2),geometry));children.push(new QuadtreeNode3D(ctx,bvhRefiner,(level+1),rt,nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(s.x,s.y,0.0))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,1.0))),(columnNr*2+1),(rowNr*2),geometry));children.push(new QuadtreeNode3D(ctx,bvhRefiner,(level+1),lb,nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(-s.x,-s.y,0.0))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,1.0))),(columnNr*2),(rowNr*2+1),geometry));children.push(new QuadtreeNode3D(ctx,bvhRefiner,(level+1),rb,nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(s.x,-s.y,0.0))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,1.0))),(columnNr*2+1),(rowNr*2+1),geometry));}
this.Shape=function(){return shape;};this.ChildrenReady=function(){return childrenReadyState;};this.Ready=function(){if(shape._webgl!==undefined&&shape._webgl.texture!==undefined){return ready();}
return false;};function ready(){readyState=true;for(var i=0;i<shape._webgl.texture.length;i++){if(!shape._webgl.texture[i].texture.ready){readyState=false;}}
return readyState;}
function updateLoadingState(drawableCollection,transform){childrenReadyState=true;for(var i=0;i<children.length;i++){if(!children[i].Ready()){childrenReadyState=false;}}
if(children.length<4){childrenReadyState=false;}
else if(childrenReadyState){for(var i=0;i<children.length;i++){children[i].Shape()._vf.render=true;}}
if(shape._webgl===undefined||shape._webgl.texture===undefined){drawableCollection.context.setupShape(drawableCollection.gl,{shape:shape,transform:transform},drawableCollection.viewarea);}
else{ready();}}
this.collectDrawables=function(transform,drawableCollection,singlePath,invalidateCache,planeMask){drawableCollection.frustumCulling=false;cullObject.localMatrix=nodeTransformation;if(!readyState||!childrenReadyState){updateLoadingState(drawableCollection,nodeTransformation);}
var mat_view=drawableCollection.viewMatrix;var vPos=mat_view.multMatrixPnt(nodeTransformation.multMatrixPnt(position));var distanceToCamera=Math.sqrt(Math.pow(vPos.x,2)+Math.pow(vPos.y,2)+Math.pow(vPos.z,2));if(readyState&&vPos.z-(cullObject.volume.diameter/2)<0){if((distanceToCamera<Math.pow((bvhRefiner._vf.maxDepth-level),2)*resizeFac/bvhRefiner._vf.factor)||level<bvhRefiner._vf.minDepth){if(bvhRefiner.view.isMovingOrAnimating()&&(children.length==0||level>=bvhRefiner._vf.interactionDepth)){render(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask);}
else{if(children.length===0){bvhRefiner.nodeProducer.AddNewNode(that,distanceToCamera);render(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask);}
else{if(childrenReadyState){for(var i=0;i<children.length;i++){children[i].collectDrawables(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask);}}
else{render(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask);for(var i=0;i<children.length;i++){children[i].collectDrawables(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask);children[i].Shape()._vf.render=false;}}}}}
else{render(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask);}}};this.hasHigherRenderLevel=function(drawableCollection){var mat_view=drawableCollection.viewMatrix;var vPos=mat_view.multMatrixPnt(nodeTransformation.multMatrixPnt(position));var distanceToCamera=Math.sqrt(Math.pow(vPos.x,2)+Math.pow(vPos.y,2)+Math.pow(vPos.z,2));if(distanceToCamera<Math.pow((bvhRefiner._vf.maxDepth-level),2)*resizeFac/bvhRefiner._vf.factor){return true;}
return false;};function render(transform,drawableCollection,singlePath,invalidateCache,planeMask){var hasNeighborHigherResolution=[];for(var i=0;i<neighbors.length;i++){if(bvhRefiner.nodeList[neighbors[i]]!==undefined){if(bvhRefiner.nodeList[neighbors[i]].ChildrenReady()&&bvhRefiner.nodeList[neighbors[i]].hasHigherRenderLevel(drawableCollection))
hasNeighborHigherResolution.push(true);else
hasNeighborHigherResolution.push(false);}
else{hasNeighborHigherResolution.push(false);}}
var indiceNumber=0;if(hasNeighborHigherResolution[3]){if(hasNeighborHigherResolution[1]){indiceNumber=5;}
else if(hasNeighborHigherResolution[0]){indiceNumber=6;}
else{indiceNumber=4;}}
else if(hasNeighborHigherResolution[2]){if(hasNeighborHigherResolution[1]){indiceNumber=8;}
else if(hasNeighborHigherResolution[0]){indiceNumber=7;}
else{indiceNumber=3;}}
else if(hasNeighborHigherResolution[0]){indiceNumber=1;}
else if(hasNeighborHigherResolution[1]){indiceNumber=2;}
if(lastIndice!==indiceNumber||triangulationAttributes===null){triangulationAttributes=shape._cf.geometry.node.getTriangulationAttributes(indiceNumber);lastIndice=indiceNumber;}
shape._tessellationProperties=[triangulationAttributes];shape.collectDrawableObjects(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask,[]);}
this.getVolume=function(){return shape.getVolume();};this.Level=function(){return level;};var that=this;initialize();}
function QuadtreeNodeBin(ctx,bvhRefiner,level,columnNr,rowNr,resizeFac)
{var cullObject={};var mat_view;var vPos;var distanceToCamera;var fac=((1/4*Math.pow(level,2)+1.5)*0.1)*bvhRefiner._vf.factor;var children=[];var childrenExist=false;var readyState=false;var childrenReadyState=false;var path=bvhRefiner._vf.url+"/"+level+"/"+columnNr+"/";var file=path+rowNr+".x3d";var position=new x3dom.fields.SFVec3f(0.0,0.0,0.0);var exists=false;var shape=new x3dom.nodeTypes.Shape(ctx);var xhr=new XMLHttpRequest();xhr.open("GET",file,false);try{xhr.send();var xmlDoc=xhr.responseXML;if(xmlDoc!==null){var replacer=new RegExp("\"","g");createGeometry(shape);initialize();exists=true;}}
catch(exp){x3dom.debug.logException("Error loading file '"+file+"': "+exp);}
this.Exists=function(){return exists;};this.Shape=function(){return shape;};function createGeometry(parent){this._nameSpace=new x3dom.NodeNameSpace("",bvhRefiner._nameSpace.doc);this._nameSpace.setBaseURL(bvhRefiner._nameSpace.baseURL+path);var tempShape=xmlDoc.getElementsByTagName("Shape")[0];shape=this._nameSpace.setupTree(tempShape);if(!bvhRefiner._vf.useNormals){var appearance=new x3dom.nodeTypes.Appearance(ctx);var material=new x3dom.nodeTypes.Material(ctx);appearance.addChild(material);shape._cf.appearance=appearance;}
position=x3dom.fields.SFVec3f.copy(shape._cf.geometry.node._vf.position);}
function initialize(){cullObject.boundedNode=shape;cullObject.volume=shape.getVolume();}
this.CreateChildren=function(){create();};function create(){children.push(new QuadtreeNodeBin(ctx,bvhRefiner,(level+1),(columnNr*2),(rowNr*2),resizeFac));children.push(new QuadtreeNodeBin(ctx,bvhRefiner,(level+1),(columnNr*2+1),(rowNr*2),resizeFac));children.push(new QuadtreeNodeBin(ctx,bvhRefiner,(level+1),(columnNr*2),(rowNr*2+1),resizeFac));children.push(new QuadtreeNodeBin(ctx,bvhRefiner,(level+1),(columnNr*2+1),(rowNr*2+1),resizeFac));}
this.Ready=function(){if(shape._webgl!==undefined&&shape._webgl.internalDownloadCount!==undefined){return ready();}
return false;};function ready(){readyState=true;if(shape._webgl.internalDownloadCount>0){readyState=false;}
return readyState;}
function updateLoadingState(drawableCollection,transform){childrenReadyState=true;for(var i=0;i<children.length;i++){if(!children[i].Ready()){childrenReadyState=false;}}
if(childrenReadyState){for(var i=0;i<children.length;i++){children[i].Shape()._vf.render=true;}}
if(shape._cf.geometry.node!==null){if(shape._webgl===undefined||shape._webgl.internalDownloadCount===undefined){drawableCollection.context.setupShape(drawableCollection.gl,{shape:shape,transform:transform},drawableCollection.viewarea);}
else{ready();}}}
this.collectDrawables=function(transform,drawableCollection,singlePath,invalidateCache,planeMask){fac=((1/4*Math.pow(level,2)+1.5)*0.1)*bvhRefiner._vf.factor;cullObject.localMatrix=transform;if(!readyState||!childrenReadyState){updateLoadingState(drawableCollection,transform);}
if(readyState&&exists&&(planeMask=drawableCollection.cull(transform,cullObject,singlePath,planeMask))>0){mat_view=drawableCollection.viewMatrix;vPos=mat_view.multMatrixPnt(transform.multMatrixPnt(position));distanceToCamera=Math.sqrt(Math.pow(vPos.x,2)+Math.pow(vPos.y,2)+Math.pow(vPos.z,2));if((distanceToCamera<Math.pow((bvhRefiner._vf.maxDepth-level),2)/fac*1000)||level<bvhRefiner._vf.minDepth){if(bvhRefiner.view.isMovingOrAnimating()&&level>=bvhRefiner._vf.interactionDepth){shape.collectDrawableObjects(transform,drawableCollection,singlePath,invalidateCache,planeMask,[]);}
else{if(children.length===0){bvhRefiner.nodeProducer.AddNewNode(that,distanceToCamera);shape.collectDrawableObjects(transform,drawableCollection,singlePath,invalidateCache,planeMask,[]);}
else if(children.length===0&&bvhRefiner.createChildren>0){shape.collectDrawableObjects(transform,drawableCollection,singlePath,invalidateCache,planeMask,[]);}
else{if(!childrenExist){for(var i=0;i<children.length;i++){if(children[i].Exists()){childrenExist=true;break;}}}
if(childrenExist&&childrenReadyState){for(var i=0;i<children.length;i++){children[i].collectDrawables(transform,drawableCollection,singlePath,invalidateCache,planeMask);}}
else{for(var i=0;i<children.length;i++){children[i].collectDrawables(transform,drawableCollection,singlePath,invalidateCache,planeMask);children[i].Shape()._vf.render=false;}
shape.collectDrawableObjects(transform,drawableCollection,singlePath,invalidateCache,planeMask,[]);}}}}
else{shape.collectDrawableObjects(transform,drawableCollection,singlePath,invalidateCache,planeMask,[]);}}};this.getVolume=function(){return shape.getVolume();};this.Level=function(){return level;};var that=this;initialize();}
function BVHNode(ctx,bvhRefiner,level,path,imgNumber,count)
{var cullObject={};var mat_view;var vPos;var distanceToCamera;var fac=((1/4*Math.pow(level,2)+1.5)*0.1)*bvhRefiner._vf.factor;var children=[];var childrenExist=false;var readyState=false;var childrenReadyState=false;var file=bvhRefiner._vf.url+path+imgNumber+".x3d";var position=new x3dom.fields.SFVec3f(0.0,0.0,0.0);var exists=false;var shape=new x3dom.nodeTypes.Shape(ctx);this.RecalcFactor=function(){fac=((1/4*Math.pow(level,2)+1.5)*0.1)*bvhRefiner._vf.factor;for(var i=0;i<children.length;i++){children[i].RecalcFactor();}};var xhr=new XMLHttpRequest();xhr.open("GET",file,false);try{xhr.send();var xmlDoc=xhr.responseXML;if(xmlDoc!==null){var replacer=new RegExp("\"","g");createGeometry(shape);initialize();exists=true;}}
catch(exp){x3dom.debug.logException("Error loading file '"+file+"': "+exp);}
this.Exists=function()
{return exists;};this.Shape=function(){return shape;};function createGeometry(parent){this._nameSpace=new x3dom.NodeNameSpace("",bvhRefiner._nameSpace.doc);this._nameSpace.setBaseURL(bvhRefiner._nameSpace.baseURL+bvhRefiner._vf.url+path);var tempShape=xmlDoc.getElementsByTagName("Shape")[0];shape=this._nameSpace.setupTree(tempShape);if(!bvhRefiner._vf.useNormals){var appearance=new x3dom.nodeTypes.Appearance(ctx);var material=new x3dom.nodeTypes.Material(ctx);appearance.addChild(material);shape._cf.appearance=appearance;}
position=x3dom.fields.SFVec3f.copy(shape._cf.geometry.node._vf.position);}
function initialize(){cullObject.boundedNode=shape;cullObject.volume=shape.getVolume();}
this.CreateChildren=function(){create();};function create(){for(var i=0;i<count;i++){children.push(new BVHNode(ctx,bvhRefiner,(level+1),path+imgNumber+"/",i+1,count));}}
this.Ready=function(){if(shape._webgl!==undefined&&shape._webgl.internalDownloadCount!==undefined){return ready();}
return false;};function ready(){return(shape._webgl.internalDownloadCount<=0);}
function updateLoadingState(drawableCollection,transform){for(var i=0;i<children.length;i++){childrenReadyState=true;if(!children[i].Ready()){childrenReadyState=false;}
else{children[i].Shape()._vf.render=true;}}
if(shape._cf.geometry.node!==null){if(shape._webgl===undefined||shape._webgl.internalDownloadCount===undefined){drawableCollection.context.setupShape(drawableCollection.gl,{shape:shape,transform:transform},drawableCollection.viewarea);}
else{ready();}}}
this.collectDrawables=function(transform,drawableCollection,singlePath,invalidateCache,planeMask){fac=((1/4*Math.pow(level,2)+1.5)*0.1)*bvhRefiner._vf.factor;cullObject.localMatrix=transform;if(!readyState||!childrenReadyState){updateLoadingState(drawableCollection,transform);}
if(readyState&&exists&&(planeMask=drawableCollection.cull(transform,cullObject,singlePath,planeMask))>0){mat_view=drawableCollection.viewMatrix;vPos=mat_view.multMatrixPnt(transform.multMatrixPnt(position));distanceToCamera=Math.sqrt(Math.pow(vPos.x,2)+Math.pow(vPos.y,2)+Math.pow(vPos.z,2));if((distanceToCamera<Math.pow((bvhRefiner._vf.maxDepth-level),2)/fac)||level<bvhRefiner._vf.minDepth){if(bvhRefiner.view.isMovingOrAnimating()&&level>=bvhRefiner._vf.interactionDepth){shape.collectDrawableObjects(transform,drawableCollection,singlePath,invalidateCache,planeMask,[]);}
else{if(children.length===0){bvhRefiner.nodeProducer.AddNewNode(that,distanceToCamera);shape.collectDrawableObjects(transform,drawableCollection,singlePath,invalidateCache,planeMask,[]);}
else if(children.length===0&&bvhRefiner.createChildren>0){shape.collectDrawableObjects(transform,drawableCollection,singlePath,invalidateCache,planeMask,[]);}
else{if(!childrenExist){for(var i=0;i<children.length;i++){if(children[i].Exists()){childrenExist=true;break;}}}
if(childrenExist&&childrenReadyState){for(var i=0;i<children.length;i++){children[i].collectDrawables(transform,drawableCollection,singlePath,invalidateCache,planeMask);}}
else{for(var i=0;i<children.length;i++){children[i].collectDrawables(transform,drawableCollection,singlePath,invalidateCache,planeMask);children[i].Shape()._vf.render=false;}
shape.collectDrawableObjects(transform,drawableCollection,singlePath,invalidateCache,planeMask,[]);}}}}
else{shape.collectDrawableObjects(transform,drawableCollection,singlePath,invalidateCache,planeMask,[]);}}};this.getVolume=function(){return shape.getVolume();};this.Level=function(){return level;};var that=this;initialize();}
function QuadtreeNode3D_NEW(ctx,bvhRefiner,level,nodeNumber,nodeTransformation,columnNr,rowNr,geometry)
{var children=[];var shape=new x3dom.nodeTypes.Shape();var position=null;var imageAddressColor=bvhRefiner._vf.textureUrl+"/"+level+"/"+
columnNr+"/"+rowNr+"."+
(bvhRefiner._vf.textureFormat).toLowerCase();var imageAddressHeight=bvhRefiner._vf.elevationUrl+"/"+level+"/"+
columnNr+"/"+rowNr+"."+
(bvhRefiner._vf.elevationFormat).toLowerCase();var imageAddressNormal=bvhRefiner._vf.normalUrl+"/"+level+"/"+
columnNr+"/"+rowNr+"."+
(bvhRefiner._vf.normalFormat).toLowerCase();var exists=true;var resizeFac=(bvhRefiner._vf.size.x+bvhRefiner._vf.size.y)/2.0;var cullObject={};function initialize(){var appearance=new x3dom.nodeTypes.Appearance(ctx);var shader=new x3dom.nodeTypes.CommonSurfaceShader(ctx);var ssTexColor=new x3dom.nodeTypes.SurfaceShaderTexture(ctx);var colorTexture=new x3dom.nodeTypes.ImageTexture(ctx);var ssTexDisplace=new x3dom.nodeTypes.SurfaceShaderTexture(ctx);var heightTexture=new x3dom.nodeTypes.ImageTexture(ctx);shape._nameSpace=bvhRefiner._nameSpace;position=nodeTransformation.e3();shader._vf.displacementFactor=bvhRefiner._vf.maxElevation;colorTexture._nameSpace=bvhRefiner._nameSpace;colorTexture._vf.url[0]=imageAddressColor;colorTexture._vf.repeatT=false;colorTexture._vf.repeatS=false;ssTexColor.addChild(colorTexture,'texture');colorTexture.nodeChanged();shader.addChild(ssTexColor,'diffuseTexture');ssTexColor.nodeChanged();heightTexture._nameSpace=bvhRefiner._nameSpace;heightTexture._vf.url[0]=imageAddressHeight;heightTexture._vf.repeatT=false;heightTexture._vf.repeatS=false;ssTexDisplace.addChild(heightTexture,'texture');heightTexture.nodeChanged();shader.addChild(ssTexDisplace,'displacementTexture');heightTexture.nodeChanged();appearance.addChild(shader,'shaders');shader.nodeChanged();shape.addChild(appearance);appearance.nodeChanged();shape.addChild(geometry);geometry.nodeChanged();bvhRefiner.addChild(shape);shape.nodeChanged();cullObject.boundedNode=shape;cullObject.volume=shape.getVolume();cullObject.volume.max.z=Math.round(bvhRefiner._vf.maxElevation/2);cullObject.volume.min.z=-cullObject.volume.max.z;}
function createVertexShader(){return"attribute vec3 position;\n"+"attribute vec3 texcoord;\n"+"uniform mat4 modelViewMatrix;\n"+"uniform mat4 modelViewProjectionMatrix;\n"+"uniform sampler2D texColor;\n"+"uniform sampler2D texHeight;\n"+"uniform float maxElevation;\n"+"uniform sampler2D texNormal;\n"+"varying vec2 texC;\n"+"varying vec3 vLight;\n"+"const float shininess = 32.0;\n"+"\n"+"void main(void) {\n"+"    vec3 uLightPosition = vec3(160.0, -9346.0, 4806.0);\n"+"    vec4 colr = texture2D(texColor, vec2(texcoord[0], 1.0-texcoord[1]));\n"+"    vec3 uAmbientMaterial = vec3(1.0, 1.0, 0.9);"+"    vec3 uAmbientLight = vec3(0.5, 0.5, 0.5);"+"    vec3 uDiffuseMaterial = vec3(0.7, 0.7, 0.7);"+"    vec3 uDiffuseLight = vec3(1.0, 1.0, 1.0);"+"    vec4 vertexPositionEye4 = modelViewMatrix * vec4(position, 1.0);"+"    vec3 vertexPositionEye3 = vec3((modelViewMatrix * vec4(vertexPositionEye4.xyz, 1.0)).xyz);"+"    vec3 vectorToLightSource = normalize(uLightPosition - vertexPositionEye3);"+"    vec4 height = texture2D(texHeight, vec2(texcoord[0], 1.0 - texcoord[1]));\n"+"    vec4 normalEye = 2.0 * texture2D(texNormal, vec2(texcoord[0], 1.0-texcoord[1])) - 1.0;\n"+"    float diffuseLightWeighting = max(dot(normalEye.xyz, vectorToLightSource), 0.0);"+"    texC = vec2(texcoord[0], 1.0-texcoord[1]);\n"+"    vec3 diffuseReflectance = uDiffuseMaterial * uDiffuseLight * diffuseLightWeighting;"+"    vec3 uSpecularMaterial = vec3(0.0, 0.0, 0.0);"+"    vec3 uSpecularLight = vec3(1.0, 1.0, 1.0);"+"    vec3 reflectionVector = normalize(reflect(-vectorToLightSource, normalEye.xyz));"+"    vec3 viewVectorEye = -normalize(vertexPositionEye3);"+"    float rdotv = max(dot(reflectionVector, viewVectorEye), 0.0);"+"    float specularLightWeight = pow(rdotv, shininess);"+"    vec3 specularReflection = uSpecularMaterial * uSpecularLight * specularLightWeight;"+"    vLight = vec4(uAmbientMaterial * uAmbientLight + diffuseReflectance + specularReflection, 1.0).xyz;"+"    gl_Position = modelViewProjectionMatrix * vec4(position.xy, height.x * maxElevation, 1.0);\n"+"}\n";}
function createFragmentShader(){return"#ifdef GL_ES\n"+"precision highp float;\n"+"#endif\n"+"uniform sampler2D texColor;\n"+"uniform sampler2D texNormal;\n"+"varying vec2 texC;\n"+"varying vec3 vLight;\n"+"\n"+"\n"+"void main(void) {\n"+"    vec4 normal = 2.0 * texture2D(texNormal, texC) - 1.0;\n"+"    vec4 colr = texture2D(texColor, texC);\n"+"    gl_FragColor = vec4(colr.xyz * vLight, colr.w);\n"+"}\n";}
function create(){var deltaR=Math.sqrt(Math.pow(4,level));var deltaR1=Math.sqrt(Math.pow(4,level+1));var lt=Math.floor(nodeNumber/deltaR)*4*deltaR+
(nodeNumber%deltaR)*2;var rt=lt+1;var lb=lt+deltaR1;var rb=lb+1;var s=(bvhRefiner._vf.size).multiply(0.25);children.push(new QuadtreeNode3D_NEW(ctx,bvhRefiner,(level+1),lt,nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(-s.x,s.y,0.0))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,1.0))),(columnNr*2),(rowNr*2),geometry));children.push(new QuadtreeNode3D_NEW(ctx,bvhRefiner,(level+1),rt,nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(s.x,s.y,0.0))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,1.0))),(columnNr*2+1),(rowNr*2),geometry));children.push(new QuadtreeNode3D_NEW(ctx,bvhRefiner,(level+1),lb,nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(-s.x,-s.y,0.0))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,1.0))),(columnNr*2),(rowNr*2+1),geometry));children.push(new QuadtreeNode3D_NEW(ctx,bvhRefiner,(level+1),rb,nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(s.x,-s.y,0.0))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,1.0))),(columnNr*2+1),(rowNr*2+1),geometry));}
this.collectDrawables=function(transform,drawableCollection,singlePath,invalidateCache,planeMask){cullObject.localMatrix=nodeTransformation;if(exists&&(planeMask=drawableCollection.cull(transform,cullObject,singlePath,planeMask))>0){var mat_view=drawableCollection.viewMatrix;var vPos=mat_view.multMatrixPnt(transform.multMatrixPnt(position));var distanceToCamera=Math.sqrt(Math.pow(vPos.x,2)+Math.pow(vPos.y,2)+Math.pow(vPos.z,2));if((distanceToCamera<Math.pow((bvhRefiner._vf.maxDepth-level),2)*resizeFac/bvhRefiner._vf.factor)){if(children.length===0&&bvhRefiner.createChildren===0){bvhRefiner.createChildren++;create();shape.collectDrawableObjects(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask,[]);}
else if(children.length===0&&bvhRefiner.createChildren>0){shape.collectDrawableObjects(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask,[]);}
else{for(var i=0;i<children.length;i++){children[i].collectDrawables(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask);}}}
else{shape.collectDrawableObjects(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask,[]);}}};this.getVolume=function(){return shape.getVolume();};initialize();}
function OctreeNode(ctx,bvhRefiner,level,nodeTransformation)
{var children=[];var position=nodeTransformation.e3();var shape=new x3dom.nodeTypes.Shape(ctx);var cullObject={};var resizeFac=(bvhRefiner._vf.octSize.x+bvhRefiner._vf.octSize.y+bvhRefiner._vf.octSize.z)/3.0;function initialize(){var appearance=new x3dom.nodeTypes.Appearance(ctx);var geometry=new x3dom.nodeTypes.Box(ctx);geometry._vf.size=bvhRefiner._vf.octSize;geometry.fieldChanged('size');shape._nameSpace=new x3dom.NodeNameSpace("",bvhRefiner._nameSpace.doc);shape._nameSpace.setBaseURL(bvhRefiner._nameSpace.baseURL);shape.addChild(appearance);appearance.nodeChanged();shape.addChild(geometry);geometry.nodeChanged();shape.nodeChanged();cullObject.boundedNode=shape;cullObject.volume=shape.getVolume();}
function create(){var s=bvhRefiner._vf.octSize.multiply(0.25);children.push(new OctreeNode(ctx,bvhRefiner,(level+1),nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(-s.x,s.y,s.z))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,0.5)))));children.push(new OctreeNode(ctx,bvhRefiner,(level+1),nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(s.x,s.y,s.z))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,0.5)))));children.push(new OctreeNode(ctx,bvhRefiner,(level+1),nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(-s.x,-s.y,s.z))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,0.5)))));children.push(new OctreeNode(ctx,bvhRefiner,(level+1),nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(s.x,-s.y,s.z))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,0.5)))));children.push(new OctreeNode(ctx,bvhRefiner,(level+1),nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(-s.x,s.y,-s.z))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,0.5)))));children.push(new OctreeNode(ctx,bvhRefiner,(level+1),nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(s.x,s.y,-s.z))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,0.5)))));children.push(new OctreeNode(ctx,bvhRefiner,(level+1),nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(-s.x,-s.y,-s.z))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,0.5)))));children.push(new OctreeNode(ctx,bvhRefiner,(level+1),nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(s.x,-s.y,-s.z))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,0.5)))));}
this.collectDrawables=function(transform,drawableCollection,singlePath,invalidateCache,planeMask){cullObject.localMatrix=nodeTransformation;if((planeMask=drawableCollection.cull(transform,cullObject,singlePath,planeMask))>0){var mat_view=drawableCollection.viewMatrix;var vPos=mat_view.multMatrixPnt(transform.multMatrixPnt(position));var distanceToCamera=Math.sqrt(Math.pow(vPos.x,2)+Math.pow(vPos.y,2)+Math.pow(vPos.z,2));if((distanceToCamera<Math.pow((bvhRefiner._vf.maxDepth-level),2)*resizeFac/bvhRefiner._vf.factor)){if(children.length===0){create();}
else{for(var i=0;i<children.length;i++){children[i].collectDrawables(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask);}}}
else{shape.collectDrawableObjects(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask,[]);}}};this.getVolume=function(){return shape.getVolume();};initialize();}
function QuadtreeNode3D_32bit(ctx,bvhRefiner,level,nodeNumber,nodeTransformation,columnNr,rowNr,geometry)
{var children=[];var shape=new x3dom.nodeTypes.Shape();var position=null;var imageAddressColor=bvhRefiner._vf.textureUrl+"/"+level+"/"+
columnNr+"/"+rowNr+"."+
(bvhRefiner._vf.textureFormat).toLowerCase();var imageAddressHeight=bvhRefiner._vf.elevationUrl+"/"+level+"/"+
columnNr+"/"+rowNr+"."+
(bvhRefiner._vf.elevationFormat).toLowerCase();var imageAddressNormal=bvhRefiner._vf.normalUrl+"/"+level+"/"+
columnNr+"/"+rowNr+"."+
(bvhRefiner._vf.normalFormat).toLowerCase();var exists=true;var resizeFac=(bvhRefiner._vf.size.x+bvhRefiner._vf.size.y)/2.0;var cullObject={};function initialize(){var appearance=new x3dom.nodeTypes.Appearance(ctx);var textures=new x3dom.nodeTypes.MultiTexture(ctx);var colorTexture=new x3dom.nodeTypes.ImageTexture(ctx);var heightTexture=new x3dom.nodeTypes.ImageTexture(ctx);var normalTexture=new x3dom.nodeTypes.ImageTexture(ctx);var composedShader=new x3dom.nodeTypes.ComposedShader(ctx);shape._nameSpace=bvhRefiner._nameSpace;position=nodeTransformation.e3();var vertexShader=new x3dom.nodeTypes.ShaderPart(ctx);vertexShader._vf.type='vertex';vertexShader._vf.url[0]=createVertexShader();var fragmentShader=new x3dom.nodeTypes.ShaderPart(ctx);fragmentShader._vf.type='fragment';fragmentShader._vf.url[0]=createFragmentShader();composedShader.addChild(vertexShader,'parts');composedShader.addChild(fragmentShader,'parts');colorTexture._nameSpace=bvhRefiner._nameSpace;colorTexture._vf.url[0]=imageAddressColor;colorTexture._vf.repeatT=false;colorTexture._vf.repeatS=false;colorTexture._vf.generateMipMaps=false;textures.addChild(colorTexture,'texture');colorTexture.nodeChanged();var colorTextureField=new x3dom.nodeTypes.Field(ctx);colorTextureField._vf.name='texColor';colorTextureField._vf.type='SFInt32';colorTextureField._vf.value=0;composedShader.addChild(colorTextureField,'fields');colorTextureField.nodeChanged();heightTexture._nameSpace=bvhRefiner._nameSpace;heightTexture._vf.url[0]=imageAddressHeight;heightTexture._vf.repeatT=false;heightTexture._vf.repeatS=false;textures.addChild(heightTexture,'texture');heightTexture.nodeChanged();var heightTextureField=new x3dom.nodeTypes.Field(ctx);heightTextureField._vf.name='texHeight';heightTextureField._vf.type='SFInt32';heightTextureField._vf.value=1;composedShader.addChild(heightTextureField,'fields');heightTextureField.nodeChanged();normalTexture._nameSpace=bvhRefiner._nameSpace;normalTexture._vf.url[0]=imageAddressNormal;normalTexture._vf.repeatT=false;normalTexture._vf.repeatS=false;textures.addChild(normalTexture,'texture');normalTexture.nodeChanged();var normalTextureField=new x3dom.nodeTypes.Field(ctx);normalTextureField._vf.name='texNormal';normalTextureField._vf.type='SFInt32';normalTextureField._vf.value=2;composedShader.addChild(normalTextureField,'fields');normalTextureField.nodeChanged();var maxHeight=new x3dom.nodeTypes.Field(ctx);maxHeight._vf.name='maxElevation';maxHeight._vf.type='SFFloat';maxHeight._vf.value=bvhRefiner._vf.maxElevation;composedShader.addChild(maxHeight,'fields');maxHeight.nodeChanged();appearance.addChild(textures);textures.nodeChanged();appearance.addChild(composedShader);composedShader.nodeChanged();shape.addChild(appearance);appearance.nodeChanged();shape.addChild(geometry);geometry.nodeChanged();bvhRefiner.addChild(shape);shape.nodeChanged();cullObject.boundedNode=shape;cullObject.volume=shape.getVolume();cullObject.volume.max.z=Math.round(bvhRefiner._vf.maxElevation);cullObject.volume.min.z=-cullObject.volume.max.z;}
function createVertexShader(){return"attribute vec3 position;\n"+"attribute vec3 texcoord;\n"+"uniform mat4 modelViewMatrix;\n"+"uniform mat4 modelViewProjectionMatrix;\n"+"uniform sampler2D texColor;\n"+"uniform sampler2D texHeight;\n"+"uniform float maxElevation;\n"+"uniform sampler2D texNormal;\n"+"varying vec2 texC;\n"+"varying vec3 vLight;\n"+"const float shininess = 32.0;\n"+"\n"+"void main(void) {\n"+"    vec3 uLightPosition = vec3(160.0, -9346.0, 4806.0);\n"+"    vec4 colr = texture2D(texColor, vec2(texcoord[0], 1.0-texcoord[1]));\n"+"    vec3 uAmbientMaterial = vec3(1.0, 1.0, 0.9);"+"    vec3 uAmbientLight = vec3(0.5, 0.5, 0.5);"+"    vec3 uDiffuseMaterial = vec3(0.7, 0.7, 0.7);"+"    vec3 uDiffuseLight = vec3(1.0, 1.0, 1.0);"+"    vec4 vertexPositionEye4 = modelViewMatrix * vec4(position, 1.0);"+"    vec3 vertexPositionEye3 = vec3((modelViewMatrix * vec4(vertexPositionEye4.xyz, 1.0)).xyz);"+"    vec3 vectorToLightSource = normalize(uLightPosition - vertexPositionEye3);"+"    vec4 height = texture2D(texHeight, vec2(texcoord[0], 1.0 - texcoord[1]));\n"+"    vec4 normalEye = 2.0 * texture2D(texNormal, vec2(texcoord[0], 1.0-texcoord[1])) - 1.0;\n"+"    float diffuseLightWeighting = max(dot(normalEye.xyz, vectorToLightSource), 0.0);"+"    texC = vec2(texcoord[0], 1.0-texcoord[1]);\n"+"    vec3 diffuseReflectance = uDiffuseMaterial * uDiffuseLight * diffuseLightWeighting;"+"    vec3 uSpecularMaterial = vec3(0.0, 0.0, 0.0);"+"    vec3 uSpecularLight = vec3(1.0, 1.0, 1.0);"+"    vec3 reflectionVector = normalize(reflect(-vectorToLightSource, normalEye.xyz));"+"    vec3 viewVectorEye = -normalize(vertexPositionEye3);"+"    float rdotv = max(dot(reflectionVector, viewVectorEye), 0.0);"+"    float specularLightWeight = pow(rdotv, shininess);"+"    vec3 specularReflection = uSpecularMaterial * uSpecularLight * specularLightWeight;"+"    vLight = vec4(uAmbientMaterial * uAmbientLight + diffuseReflectance + specularReflection, 1.0).xyz;"+"    gl_Position = modelViewProjectionMatrix * vec4(position.xy, ((height.g * 256.0)+height.b) * maxElevation, 1.0);\n"+"}\n";}
function createFragmentShader(){return"#ifdef GL_ES\n"+"precision highp float;\n"+"#endif\n"+"uniform sampler2D texColor;\n"+"uniform sampler2D texNormal;\n"+"varying vec2 texC;\n"+"varying vec3 vLight;\n"+"\n"+"\n"+"void main(void) {\n"+"    vec4 normal = 2.0 * texture2D(texNormal, texC) - 1.0;\n"+"    vec4 colr = texture2D(texColor, texC);\n"+"    float coler = ((colr.g * 256.0)+colr.b);"+"    gl_FragColor = vec4(vLight * coler, 1.0);\n"+"}\n";}
function create(){var deltaR=Math.sqrt(Math.pow(4,level));var deltaR1=Math.sqrt(Math.pow(4,level+1));var lt=Math.floor(nodeNumber/deltaR)*4*deltaR+
(nodeNumber%deltaR)*2;var rt=lt+1;var lb=lt+deltaR1;var rb=lb+1;var s=(bvhRefiner._vf.size).multiply(0.25);children.push(new QuadtreeNode3D_32bit(ctx,bvhRefiner,(level+1),lt,nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(-s.x,s.y,0.0))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,1.0))),(columnNr*2),(rowNr*2),geometry));children.push(new QuadtreeNode3D_32bit(ctx,bvhRefiner,(level+1),rt,nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(s.x,s.y,0.0))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,1.0))),(columnNr*2+1),(rowNr*2),geometry));children.push(new QuadtreeNode3D_32bit(ctx,bvhRefiner,(level+1),lb,nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(-s.x,-s.y,0.0))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,1.0))),(columnNr*2),(rowNr*2+1),geometry));children.push(new QuadtreeNode3D_32bit(ctx,bvhRefiner,(level+1),rb,nodeTransformation.mult(x3dom.fields.SFMatrix4f.translation(new x3dom.fields.SFVec3f(s.x,-s.y,0.0))).mult(x3dom.fields.SFMatrix4f.scale(new x3dom.fields.SFVec3f(0.5,0.5,1.0))),(columnNr*2+1),(rowNr*2+1),geometry));}
this.collectDrawables=function(transform,drawableCollection,singlePath,invalidateCache,planeMask){cullObject.localMatrix=nodeTransformation;if(exists&&(planeMask=drawableCollection.cull(transform,cullObject,singlePath,planeMask))>0){var mat_view=drawableCollection.viewMatrix;var vPos=mat_view.multMatrixPnt(transform.multMatrixPnt(position));var distanceToCamera=Math.sqrt(Math.pow(vPos.x,2)+Math.pow(vPos.y,2)+Math.pow(vPos.z,2));if((distanceToCamera<Math.pow((bvhRefiner._vf.maxDepth-level),2)*resizeFac/bvhRefiner._vf.factor)){if(children.length===0&&bvhRefiner.createChildren===0){bvhRefiner.createChildren++;create();shape.collectDrawableObjects(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask,[]);}
else if(children.length===0&&bvhRefiner.createChildren>0){shape.collectDrawableObjects(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask,[]);}
else{for(var i=0;i<children.length;i++){children[i].collectDrawables(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask);}}}
else{shape.collectDrawableObjects(nodeTransformation,drawableCollection,singlePath,invalidateCache,planeMask,[]);}}};this.getVolume=function(){return shape.getVolume();};initialize();}
x3dom.registerNodeType("Snout","Geometry3DExt",defineClass(x3dom.nodeTypes.X3DSpatialGeometryNode,function(ctx){x3dom.nodeTypes.Snout.superClass.call(this,ctx);this.addField_SFFloat(ctx,'dbottom',1.0);this.addField_SFFloat(ctx,'dtop',0.5);this.addField_SFFloat(ctx,'height',1.0);this.addField_SFFloat(ctx,'xoff',0.25);this.addField_SFFloat(ctx,'yoff',0.25);this.addField_SFBool(ctx,'bottom',true);this.addField_SFBool(ctx,'top',true);this.addField_SFFloat(ctx,'subdivision',32);this.rebuildGeometry();},{rebuildGeometry:function()
{this._mesh._positions[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];this._mesh._indices[0]=[];var bottomRadius=this._vf.dbottom/2,height=this._vf.height;var topRadius=this._vf.dtop/2,sides=this._vf.subdivision;var beta,x,z;var delta=2.0*Math.PI/sides;var incl=(bottomRadius-topRadius)/height;var nlen=1.0/Math.sqrt(1.0+incl*incl);var j=0,k=0;var h,base;if(height>0){var px=0,pz=0;for(j=0,k=0;j<=sides;j++){beta=j*delta;x=Math.sin(beta);z=-Math.cos(beta);px=x*topRadius+this._vf.xoff;pz=z*topRadius+this._vf.yoff;this._mesh._positions[0].push(px,height/2,pz);this._mesh._normals[0].push(x/nlen,incl/nlen,z/nlen);this._mesh._texCoords[0].push(1.0-j/sides,1);this._mesh._positions[0].push(x*bottomRadius,-height/2,z*bottomRadius);this._mesh._normals[0].push(x/nlen,incl/nlen,z/nlen);this._mesh._texCoords[0].push(1.0-j/sides,0);if(j>0){this._mesh._indices[0].push(k);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+3);k+=2;}}}
if(bottomRadius>0&&this._vf.bottom){base=this._mesh._positions[0].length/3;for(j=sides-1;j>=0;j--){beta=j*delta;x=bottomRadius*Math.sin(beta);z=-bottomRadius*Math.cos(beta);this._mesh._positions[0].push(x,-height/2,z);this._mesh._normals[0].push(0,-1,0);this._mesh._texCoords[0].push(x/bottomRadius/2+0.5,z/bottomRadius/2+0.5);}
h=base+1;for(j=2;j<sides;j++){this._mesh._indices[0].push(h);this._mesh._indices[0].push(base);h=base+j;this._mesh._indices[0].push(h);}}
if(topRadius>x3dom.fields.Eps&&this._vf.top){base=this._mesh._positions[0].length/3;for(j=sides-1;j>=0;j--){beta=j*delta;x=topRadius*Math.sin(beta);z=-topRadius*Math.cos(beta);this._mesh._positions[0].push(x+this._vf.xoff,height/2,z+this._vf.yoff);this._mesh._normals[0].push(0,1,0);this._mesh._texCoords[0].push(x/topRadius/2+0.5,1.0-z/topRadius/2+0.5);}
h=base+1;for(j=2;j<sides;j++){this._mesh._indices[0].push(base);this._mesh._indices[0].push(h);h=base+j;this._mesh._indices[0].push(h);}}
this.invalidateVolume();this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;},fieldChanged:function(fieldName)
{if(fieldName=="dtop"||fieldName=="dbottom"||fieldName=="height"||fieldName=="subdivision"||fieldName=="xoff"||fieldName=="yoff"||fieldName=="bottom"||fieldName=="top")
{this.rebuildGeometry();Array.forEach(this._parentNodes,function(node){node.setAllDirty();node.invalidateVolume();});}}}));x3dom.registerNodeType("Dish","Geometry3DExt",defineClass(x3dom.nodeTypes.X3DSpatialGeometryNode,function(ctx){x3dom.nodeTypes.Dish.superClass.call(this,ctx);this.addField_SFFloat(ctx,'diameter',2);this.addField_SFFloat(ctx,'height',1);this.addField_SFFloat(ctx,'radius',this._vf.diameter/2);this.addField_SFBool(ctx,'bottom',true);this.addField_SFVec2f(ctx,'subdivision',24,24);this.rebuildGeometry();},{rebuildGeometry:function()
{this._mesh._positions[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];this._mesh._indices[0]=[];var twoPi=Math.PI*2,halfPi=Math.PI/2;var halfDia=this._vf.diameter/2;var r=this._vf.radius;r=(r==0||Math.abs(halfDia-r)<=x3dom.fields.Eps)?halfDia:r;var h=Math.min(this._vf.height,r);var offset=r-h;var a=halfDia;var b=r;var c=halfDia;var latitudeBands=this._vf.subdivision.x,longitudeBands=this._vf.subdivision.y;var latNumber,longNumber;var segTheta=halfPi-Math.asin(1-h/r);var segL=Math.ceil(latitudeBands/halfPi*segTheta);var theta,sinTheta,cosTheta;var phi,sinPhi,cosPhi;var x,y,z,u,v;var tmpPosArr=[],tmpTcArr=[];for(latNumber=0;latNumber<=latitudeBands;latNumber++){if(segL==latNumber){theta=segTheta;}
else{theta=(latNumber*halfPi)/latitudeBands;}
sinTheta=Math.sin(theta);cosTheta=Math.cos(theta);for(longNumber=0;longNumber<=longitudeBands;longNumber++){phi=(longNumber*twoPi)/longitudeBands;sinPhi=Math.sin(phi);cosPhi=Math.cos(phi);x=a*(-cosPhi*sinTheta);y=b*cosTheta;z=c*(-sinPhi*sinTheta);u=0.25-(longNumber/longitudeBands);v=latNumber/latitudeBands;this._mesh._positions[0].push(x,y-offset,z);this._mesh._texCoords[0].push(u,v);this._mesh._normals[0].push(x/(a*a),y/(b*b),z/(c*c));if((latNumber==latitudeBands)||(segL==latNumber)){tmpPosArr.push(x,y-offset,z);tmpTcArr.push(u,v);}}
if(segL==latNumber)
break;}
for(latNumber=0;latNumber<latitudeBands;latNumber++){if(segL==latNumber)
break;for(longNumber=0;longNumber<longitudeBands;longNumber++){var first=(latNumber*(longitudeBands+1))+longNumber;var second=first+longitudeBands+1;this._mesh._indices[0].push(first+1);this._mesh._indices[0].push(second);this._mesh._indices[0].push(first);this._mesh._indices[0].push(first+1);this._mesh._indices[0].push(second+1);this._mesh._indices[0].push(second);}}
if(this._vf.bottom)
{var origPos=this._mesh._positions[0].length/3;var t=origPos+1;for(var i=0,m=tmpPosArr.length/3;i<m;i++){var j=3*i;this._mesh._positions[0].push(tmpPosArr[j]);this._mesh._positions[0].push(tmpPosArr[j+1]);this._mesh._positions[0].push(tmpPosArr[j+2]);j=2*i;this._mesh._texCoords[0].push(tmpTcArr[j]);this._mesh._texCoords[0].push(tmpTcArr[j+1]);this._mesh._normals[0].push(0,-1,0);if(i>=2){this._mesh._indices[0].push(origPos);this._mesh._indices[0].push(t);t=origPos+i;this._mesh._indices[0].push(t);}}}
this.invalidateVolume();this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;},fieldChanged:function(fieldName)
{if(fieldName=="radius"||fieldName=="height"||fieldName=="diameter"||fieldName=="subdivision"||fieldName=="bottom")
{this.rebuildGeometry();Array.forEach(this._parentNodes,function(node){node.setAllDirty();node.invalidateVolume();});}}}));x3dom.registerNodeType("Pyramid","Geometry3DExt",defineClass(x3dom.nodeTypes.X3DSpatialGeometryNode,function(ctx){x3dom.nodeTypes.Pyramid.superClass.call(this,ctx);this.addField_SFFloat(ctx,'xbottom',1);this.addField_SFFloat(ctx,'ybottom',1);this.addField_SFFloat(ctx,'xtop',0.5);this.addField_SFFloat(ctx,'ytop',0.5);this.addField_SFFloat(ctx,'height',1);this.addField_SFFloat(ctx,'xoff',0.25);this.addField_SFFloat(ctx,'yoff',0.25);var xTop=this._vf.xtop/2;var yTop=this._vf.ytop/2;var xBot=this._vf.xbottom/2;var yBot=this._vf.ybottom/2;var xOff=this._vf.xoff;var yOff=this._vf.yoff;var sy=this._vf.height/2;this._mesh._positions[0]=[-xBot,-sy,-yBot,-xTop+xOff,sy,-yTop+yOff,xTop+xOff,sy,-yTop+yOff,xBot,-sy,-yBot,-xBot,-sy,yBot,-xTop+xOff,sy,yTop+yOff,xTop+xOff,sy,yTop+yOff,xBot,-sy,yBot,-xBot,-sy,-yBot,-xBot,-sy,yBot,-xTop+xOff,sy,yTop+yOff,-xTop+xOff,sy,-yTop+yOff,xBot,-sy,-yBot,xBot,-sy,yBot,xTop+xOff,sy,yTop+yOff,xTop+xOff,sy,-yTop+yOff,-xTop+xOff,sy,-yTop+yOff,-xTop+xOff,sy,yTop+yOff,xTop+xOff,sy,yTop+yOff,xTop+xOff,sy,-yTop+yOff,-xBot,-sy,-yBot,-xBot,-sy,yBot,xBot,-sy,yBot,xBot,-sy,-yBot];this._mesh._texCoords[0]=[1,0,1,1,0,1,0,0,0,0,0,1,1,1,1,0,0,0,1,0,1,1,0,1,1,0,0,0,0,1,1,1,0,1,0,0,1,0,1,1,0,0,0,1,1,1,1,0];this._mesh._indices[0]=[0,1,2,2,3,0,6,5,4,4,7,6,8,9,10,10,11,8,12,15,14,14,13,12,16,17,18,18,19,16,20,23,22,22,21,20];this._mesh.calcNormals(Math.PI,this._vf.ccw);this._mesh._invalidate=true;this._mesh._numFaces=12;this._mesh._numCoords=24;},{fieldChanged:function(fieldName)
{if(fieldName=="xbottom"||fieldName=="ybottom"||fieldName=="xtop"||fieldName=="ytop"||fieldName=="xoff"||fieldName=="yoff"||fieldName=="height")
{var xTop=this._vf.xtop/2;var yTop=this._vf.ytop/2;var xBot=this._vf.xbottom/2;var yBot=this._vf.ybottom/2;var xOff=this._vf.xoff;var yOff=this._vf.yoff;var sy=this._vf.height/2;this._mesh._positions[0]=[-xBot,-sy,-yBot,-xTop+xOff,sy,-yTop+yOff,xTop+xOff,sy,-yTop+yOff,xBot,-sy,-yBot,-xBot,-sy,yBot,-xTop+xOff,sy,yTop+yOff,xTop+xOff,sy,yTop+yOff,xBot,-sy,yBot,-xBot,-sy,-yBot,-xBot,-sy,yBot,-xTop+xOff,sy,yTop+yOff,-xTop+xOff,sy,-yTop+yOff,xBot,-sy,-yBot,xBot,-sy,yBot,xTop+xOff,sy,yTop+yOff,xTop+xOff,sy,-yTop+yOff,-xTop+xOff,sy,-yTop+yOff,-xTop+xOff,sy,yTop+yOff,xTop+xOff,sy,yTop+yOff,xTop+xOff,sy,-yTop+yOff,-xBot,-sy,-yBot,-xBot,-sy,yBot,xBot,-sy,yBot,xBot,-sy,-yBot];this._mesh._normals[0]=[];this._mesh.calcNormals(Math.PI,this._vf.ccw);this.invalidateVolume();Array.forEach(this._parentNodes,function(node){node.setAllDirty();node.invalidateVolume();});}}}));x3dom.registerNodeType("RectangularTorus","Geometry3DExt",defineClass(x3dom.nodeTypes.X3DSpatialGeometryNode,function(ctx){x3dom.nodeTypes.RectangularTorus.superClass.call(this,ctx);this.addField_SFFloat(ctx,'innerRadius',0.5);this.addField_SFFloat(ctx,'outerRadius',1);this.addField_SFFloat(ctx,'height',1);this.addField_SFFloat(ctx,'angle',2*Math.PI);this.addField_SFBool(ctx,'caps',true);this.addField_SFFloat(ctx,'subdivision',32);this._origCCW=this._vf.ccw;this.rebuildGeometry();},{rebuildGeometry:function()
{this._mesh._positions[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];this._mesh._indices[0]=[];var twoPi=2.0*Math.PI;this._vf.ccw=!this._origCCW;if(this._vf.angle<0)
this._vf.angle=0;else if(this._vf.angle>twoPi)
this._vf.angle=twoPi;if(this._vf.innerRadius>this._vf.outerRadius)
{var tmp=this._vf.innerRadius;this._vf.innerRadius=this._vf.outerRadius;this._vf.outerRadius=tmp;}
var innerRadius=this._vf.innerRadius;var outerRadius=this._vf.outerRadius;var height=this._vf.height/2;var angle=this._vf.angle;var sides=this._vf.subdivision;var beta,x,z,k,j,nx,nz;var delta=angle/sides;for(j=0,k=0;j<=sides;j++)
{beta=j*delta;nx=Math.cos(beta);nz=-Math.sin(beta);x=outerRadius*nx;z=outerRadius*nz;this._mesh._positions[0].push(x,-height,z);this._mesh._normals[0].push(nx,0,nz);this._mesh._positions[0].push(x,height,z);this._mesh._normals[0].push(nx,0,nz);if(j>0)
{this._mesh._indices[0].push(k);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+3);k+=2;}}
for(j=0,k=k+2;j<=sides;j++)
{beta=j*delta;nx=Math.cos(beta);nz=-Math.sin(beta);x=innerRadius*nx;z=innerRadius*nz;this._mesh._positions[0].push(x,-height,z);this._mesh._normals[0].push(-nx,0,-nz);this._mesh._positions[0].push(x,height,z);this._mesh._normals[0].push(-nx,0,-nz);if(j>0)
{this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k);this._mesh._indices[0].push(k+3);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+2);k+=2;}}
for(j=0,k=k+2;j<=sides;j++)
{beta=j*delta;nx=Math.cos(beta);nz=-Math.sin(beta);x=outerRadius*nx;z=outerRadius*nz;this._mesh._positions[0].push(x,height,z);this._mesh._normals[0].push(0,1,0);x=innerRadius*nx;z=innerRadius*nz;this._mesh._positions[0].push(x,height,z);this._mesh._normals[0].push(0,1,0);if(j>0)
{this._mesh._indices[0].push(k);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+3);k+=2;}}
for(j=0,k=k+2;j<=sides;j++)
{beta=j*delta;nx=Math.cos(beta);nz=-Math.sin(beta);x=outerRadius*nx;z=outerRadius*nz;this._mesh._positions[0].push(x,-height,z);this._mesh._normals[0].push(0,-1,0);x=innerRadius*nx;z=innerRadius*nz;this._mesh._positions[0].push(x,-height,z);this._mesh._normals[0].push(0,-1,0);if(j>0)
{this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k);this._mesh._indices[0].push(k+3);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+2);k+=2;}}
if(angle<twoPi&&this._vf.caps==true)
{k+=2;x=outerRadius;z=0;this._mesh._positions[0].push(x,height,z);this._mesh._normals[0].push(0,0,1);this._mesh._positions[0].push(x,-height,z);this._mesh._normals[0].push(0,0,1);x=innerRadius;z=0;this._mesh._positions[0].push(x,height,z);this._mesh._normals[0].push(0,0,1);this._mesh._positions[0].push(x,-height,z);this._mesh._normals[0].push(0,0,1);this._mesh._indices[0].push(k);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+3);k+=4;nx=Math.cos(angle);nz=-Math.sin(angle);x=outerRadius*nx;z=outerRadius*nz;this._mesh._positions[0].push(x,height,z);this._mesh._normals[0].push(nz,0,-nx);this._mesh._positions[0].push(x,-height,z);this._mesh._normals[0].push(nz,0,-nx);x=innerRadius*nx;z=innerRadius*nz;this._mesh._positions[0].push(x,height,z);this._mesh._normals[0].push(nz,0,-nx);this._mesh._positions[0].push(x,-height,z);this._mesh._normals[0].push(nz,0,-nx);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k);this._mesh._indices[0].push(k+3);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+2);}
this.invalidateVolume();this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;},fieldChanged:function(fieldName)
{if(fieldName=="innerRadius"||fieldName=="outerRadius"||fieldName=="height"||fieldName=="angle"||fieldName=="subdivision"||fieldName=="caps")
{this.rebuildGeometry();Array.forEach(this._parentNodes,function(node){node.setAllDirty();node.invalidateVolume();});}}}));x3dom.registerNodeType("SlopedCylinder","Geometry3DExt",defineClass(x3dom.nodeTypes.X3DSpatialGeometryNode,function(ctx){x3dom.nodeTypes.SlopedCylinder.superClass.call(this,ctx);this.addField_SFFloat(ctx,'radius',1.0);this.addField_SFFloat(ctx,'height',2.0);this.addField_SFBool(ctx,'bottom',true);this.addField_SFBool(ctx,'top',true);this.addField_SFFloat(ctx,'xtshear',0.26179);this.addField_SFFloat(ctx,'ytshear',0.0);this.addField_SFFloat(ctx,'xbshear',0.26179);this.addField_SFFloat(ctx,'ybshear',0.0);this.addField_SFFloat(ctx,'subdivision',32);this.rebuildGeometry();},{rebuildGeometry:function()
{this._mesh._positions[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];this._mesh._indices[0]=[];var topSlopeX=this._vf.xtshear;var topSlopeY=this._vf.ytshear;var botSlopeX=this._vf.xbshear;var botSlopeY=this._vf.ybshear;var sides=this._vf.subdivision;var radius=this._vf.radius;var height=this._vf.height/2;var delta=2.0*Math.PI/sides;var beta,x,y,z;var j,k;for(j=0,k=0;j<=sides;j++)
{beta=j*delta;x=Math.sin(beta);z=-Math.cos(beta);this._mesh._positions[0].push(x*radius,-height+x*botSlopeX+z*botSlopeY,z*radius);this._mesh._texCoords[0].push(1.0-j/sides,0);this._mesh._positions[0].push(x*radius,height+x*topSlopeX+z*topSlopeY,z*radius);this._mesh._texCoords[0].push(1.0-j/sides,1);if(j>0)
{this._mesh._indices[0].push(k);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+3);k+=2;}}
var h,base;if(this._vf.top&&radius>0)
{base=this._mesh._positions[0].length/3;for(j=sides-1;j>=0;j--)
{k=6*j;x=this._mesh._positions[0][k+3];y=this._mesh._positions[0][k+4];z=this._mesh._positions[0][k+5];this._mesh._positions[0].push(x,y,z);this._mesh._texCoords[0].push(x/2+0.5,-z/2+0.5);}
h=base+1;for(j=2;j<sides;j++)
{this._mesh._indices[0].push(base);this._mesh._indices[0].push(h);h=base+j;this._mesh._indices[0].push(h);}}
if(this._vf.bottom&&radius>0)
{base=this._mesh._positions[0].length/3;for(j=sides-1;j>=0;j--)
{k=6*j;x=this._mesh._positions[0][k];y=this._mesh._positions[0][k+1];z=this._mesh._positions[0][k+2];this._mesh._positions[0].push(x,y,z);this._mesh._texCoords[0].push(x/2+0.5,z/2+0.5);}
h=base+1;for(j=2;j<sides;j++)
{this._mesh._indices[0].push(h);this._mesh._indices[0].push(base);h=base+j;this._mesh._indices[0].push(h);}}
this._mesh.calcNormals(Math.PI,this._vf.ccw);var n0b=new x3dom.fields.SFVec3f(this._mesh._normals[0][0],this._mesh._normals[0][1],this._mesh._normals[0][2]);var n0t=new x3dom.fields.SFVec3f(this._mesh._normals[0][3],this._mesh._normals[0][4],this._mesh._normals[0][5]);k=6*sides;var n1b=new x3dom.fields.SFVec3f(this._mesh._normals[0][k],this._mesh._normals[0][k+1],this._mesh._normals[0][k+2]);var n1t=new x3dom.fields.SFVec3f(this._mesh._normals[0][k+3],this._mesh._normals[0][k+4],this._mesh._normals[0][k+5]);var nb=n0b.add(n1b).normalize();var nt=n0t.add(n1t).normalize();this._mesh._normals[0][0]=nb.x;this._mesh._normals[0][1]=nb.y;this._mesh._normals[0][2]=nb.z;this._mesh._normals[0][3]=nt.x;this._mesh._normals[0][4]=nt.y;this._mesh._normals[0][5]=nt.z;this._mesh._normals[0][k]=nb.x;this._mesh._normals[0][k+1]=nb.y;this._mesh._normals[0][k+2]=nb.z;this._mesh._normals[0][k+3]=nt.x;this._mesh._normals[0][k+4]=nt.y;this._mesh._normals[0][k+5]=nt.z;this.invalidateVolume();this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;},fieldChanged:function(fieldName)
{if(fieldName=="xtshear"||fieldName=="ytshear"||fieldName=="xbshear"||fieldName=="ybshear"||fieldName=="radius"||fieldName=="height"||fieldName=="bottom"||fieldName=="top"||fieldName=="subdivision")
{this.rebuildGeometry();Array.forEach(this._parentNodes,function(node){node.setAllDirty();node.invalidateVolume();});}}}));x3dom.registerNodeType("Nozzle","Geometry3DExt",defineClass(x3dom.nodeTypes.X3DSpatialGeometryNode,function(ctx){x3dom.nodeTypes.Nozzle.superClass.call(this,ctx);this.addField_SFFloat(ctx,'nozzleHeight',0.1);this.addField_SFFloat(ctx,'nozzleRadius',0.6);this.addField_SFFloat(ctx,'height',1.0);this.addField_SFFloat(ctx,'outerRadius',0.5);this.addField_SFFloat(ctx,'innerRadius',0.4);this.addField_SFFloat(ctx,'subdivision',32);this.rebuildGeometry();},{rebuildGeometry:function()
{this._mesh._positions[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];this._mesh._indices[0]=[];var twoPi=2.0*Math.PI;var sides=this._vf.subdivision;var height=this._vf.height;var center=height/2;if(this._vf.innerRadius>this._vf.outerRadius)
{var tmp=this._vf.innerRadius;this._vf.innerRadius=this._vf.outerRadius;this._vf.outerRadius=tmp;}
var innerRadius=this._vf.innerRadius;var outerRadius=this._vf.outerRadius;if(this._vf.nozzleRadius<outerRadius)
{this._vf.nozzleRadius=outerRadius;}
var nozzleRadius=this._vf.nozzleRadius;if(this._vf.nozzleHeight>height)
{this._vf.nozzleHeight=height;}
var nozzleHeight=this._vf.nozzleHeight;var beta,delta,x,z,k,j,nx,nz;delta=twoPi/sides;for(j=0,k=0;j<=sides;j++)
{beta=j*delta;nx=Math.sin(beta);nz=-Math.cos(beta);x=outerRadius*nx;z=outerRadius*nz;this._mesh._positions[0].push(x,-center,z);this._mesh._normals[0].push(nx,0,nz);this._mesh._positions[0].push(x,(height-nozzleHeight)-center,z);this._mesh._normals[0].push(nx,0,nz);if(j>0)
{this._mesh._indices[0].push(k);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+3);k+=2;}}
for(j=0,k=k+2;j<=sides;j++)
{beta=j*delta;nx=Math.sin(beta);nz=-Math.cos(beta);x=innerRadius*nx;z=innerRadius*nz;this._mesh._positions[0].push(x,-center,z);this._mesh._normals[0].push(-nx,0,-nz);this._mesh._positions[0].push(x,(height-nozzleHeight)-center,z);this._mesh._normals[0].push(-nx,0,-nz);if(j>0)
{this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k);this._mesh._indices[0].push(k+3);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+2);k+=2;}}
for(j=0,k=k+2;j<=sides;j++)
{beta=j*delta;nx=Math.sin(beta);nz=-Math.cos(beta);x=outerRadius*nx;z=outerRadius*nz;this._mesh._positions[0].push(x,-center,z);this._mesh._normals[0].push(0,-1,0);x=innerRadius*nx;z=innerRadius*nz;this._mesh._positions[0].push(x,-center,z);this._mesh._normals[0].push(0,-1,0);if(j>0)
{this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k);this._mesh._indices[0].push(k+3);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+2);k+=2;}}
for(j=0,k=k+2;j<=sides;j++)
{beta=j*delta;nx=Math.sin(beta);nz=-Math.cos(beta);x=nozzleRadius*nx;z=nozzleRadius*nz;this._mesh._positions[0].push(x,(height-nozzleHeight)-center,z);this._mesh._normals[0].push(nx,0,nz);this._mesh._positions[0].push(x,center,z);this._mesh._normals[0].push(nx,0,nz);if(j>0)
{this._mesh._indices[0].push(k);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+3);k+=2;}}
for(j=0,k=k+2;j<=sides;j++)
{beta=j*delta;nx=Math.sin(beta);nz=-Math.cos(beta);x=innerRadius*nx;z=innerRadius*nz;this._mesh._positions[0].push(x,(height-nozzleHeight)-center,z);this._mesh._normals[0].push(-nx,0,-nz);this._mesh._positions[0].push(x,center,z);this._mesh._normals[0].push(-nx,0,-nz);if(j>0)
{this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k);this._mesh._indices[0].push(k+3);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+2);k+=2;}}
for(j=0,k=k+2;j<=sides;j++)
{beta=j*delta;nx=Math.sin(beta);nz=-Math.cos(beta);x=nozzleRadius*nx;z=nozzleRadius*nz;this._mesh._positions[0].push(x,(height-nozzleHeight)-center,z);this._mesh._normals[0].push(0,-1,0);x=outerRadius*nx;z=outerRadius*nz;this._mesh._positions[0].push(x,(height-nozzleHeight)-center,z);this._mesh._normals[0].push(0,-1,0);if(j>0)
{this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k);this._mesh._indices[0].push(k+3);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+2);k+=2;}}
for(j=0,k=k+2;j<=sides;j++)
{beta=j*delta;nx=Math.sin(beta);nz=-Math.cos(beta);x=nozzleRadius*nx;z=nozzleRadius*nz;this._mesh._positions[0].push(x,center,z);this._mesh._normals[0].push(0,1,0);x=innerRadius*nx;z=innerRadius*nz;this._mesh._positions[0].push(x,center,z);this._mesh._normals[0].push(0,1,0);if(j>0)
{this._mesh._indices[0].push(k);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+2);this._mesh._indices[0].push(k+1);this._mesh._indices[0].push(k+3);k+=2;}}
this.invalidateVolume();this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;},fieldChanged:function(fieldName)
{if(fieldName=="nozzleHeight"||fieldName=="nozzleRadius"||fieldName=="height"||fieldName=="outerRadius"||fieldName=="innerRadius"||fieldName=="subdivision")
{this.rebuildGeometry();Array.forEach(this._parentNodes,function(node){node.setAllDirty();node.invalidateVolume();});}}}));x3dom.registerNodeType("SolidOfRevolution","Geometry3DExt",defineClass(x3dom.nodeTypes.X3DGeometryNode,function(ctx){x3dom.nodeTypes.SolidOfRevolution.superClass.call(this,ctx);this.addField_SFFloat(ctx,'creaseAngle',0);this.addField_MFVec2f(ctx,'crossSection',[]);this.addField_SFFloat(ctx,'angle',2*Math.PI);this.addField_SFBool(ctx,'caps',true);this.addField_SFFloat(ctx,'subdivision',32);this._origCCW=this._vf.ccw;this.rebuildGeometry();},{rebuildGeometry:function()
{this._mesh._positions[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];this._mesh._indices[0]=[];var twoPi=2.0*Math.PI;if(this._vf.angle<-twoPi)
this._vf.angle=-twoPi;else if(this._vf.angle>twoPi)
this._vf.angle=twoPi;var crossSection=this._vf.crossSection,angle=this._vf.angle,steps=this._vf.subdivision;var i,j,k,l,m,n=crossSection.length;if(n<1){x3dom.debug.logWarning("SolidOfRevolution requires crossSection curve.");return;}
var loop=(n>2)?crossSection[0].equals(crossSection[n-1],x3dom.fields.Eps):false;var fullRevolution=(twoPi-Math.abs(angle)<=x3dom.fields.Eps);var alpha,delta=angle/steps;var positions=[],baseCurve=[];this._vf.ccw=(angle<0)?this._origCCW:!this._origCCW;if(!loop)
{if(Math.abs(crossSection[n-1].y)>x3dom.fields.Eps){crossSection.push(new x3dom.fields.SFVec2f(crossSection[n-1].x,0));}
if(Math.abs(crossSection[0].y)>x3dom.fields.Eps){crossSection.unshift(new x3dom.fields.SFVec2f(crossSection[0].x,0));}
n=crossSection.length;}
var pos=null,lastPos=null,penultimatePos=null;var duplicate=[];for(j=0;j<n;j++)
{if(pos){if(lastPos){penultimatePos=lastPos;}
lastPos=pos;}
pos=new x3dom.fields.SFVec3f(crossSection[j].x,0,crossSection[j].y);if(j>=2)
{alpha=pos.subtract(lastPos).normalize();alpha=alpha.dot(lastPos.subtract(penultimatePos).normalize());alpha=Math.abs(Math.cos(alpha));if(alpha>this._vf.creaseAngle)
{baseCurve.push(x3dom.fields.SFVec3f.copy(lastPos));duplicate.push(true);}}
baseCurve.push(pos);duplicate.push(false);}
n=baseCurve.length;for(i=0,alpha=0;i<=steps;i++,alpha+=delta)
{var mat=x3dom.fields.SFMatrix4f.rotationX(alpha);for(j=0;j<n;j++)
{pos=mat.multMatrixPnt(baseCurve[j]);positions.push(pos);this._mesh._positions[0].push(pos.x,pos.y,pos.z);if(i>0&&j>0)
{this._mesh._indices[0].push((i-1)*n+(j-1),(i-1)*n+j,i*n+j);this._mesh._indices[0].push(i*n+j,i*n+(j-1),(i-1)*n+(j-1));}}}
if(!fullRevolution&&this._vf.caps==true)
{var linklist=new x3dom.DoublyLinkedList();m=this._mesh._positions[0].length/3;for(j=0,i=0;j<n;j++)
{if(!duplicate[j])
{linklist.appendNode(new x3dom.DoublyLinkedList.ListNode(positions[j],i++));pos=positions[j];this._mesh._positions[0].push(pos.x,pos.y,pos.z);}}
var linklist_indices=x3dom.EarClipping.getIndexes(linklist);for(j=linklist_indices.length-1;j>=0;j--)
{this._mesh._indices[0].push(m+linklist_indices[j]);}
m=this._mesh._positions[0].length/3;for(j=0;j<n;j++)
{if(!duplicate[j])
{pos=positions[n*steps+j];this._mesh._positions[0].push(pos.x,pos.y,pos.z);}}
for(j=0;j<linklist_indices.length;j++)
{this._mesh._indices[0].push(m+linklist_indices[j]);}}
this._mesh.calcNormals(Math.PI,this._vf.ccw);if(fullRevolution)
{m=3*n*steps;for(j=0;j<n;j++)
{k=3*j;this._mesh._normals[0][m+k]=this._mesh._normals[0][k];this._mesh._normals[0][m+k+1]=this._mesh._normals[0][k+1];this._mesh._normals[0][m+k+2]=this._mesh._normals[0][k+2];}}
this._mesh.calcTexCoords("");this.invalidateVolume();this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;},fieldChanged:function(fieldName)
{if(fieldName=="crossSection"||fieldName=="angle"||fieldName=="caps"||fieldName=="subdivision"||fieldName=="creaseAngle")
{this.rebuildGeometry();Array.forEach(this._parentNodes,function(node){node.setAllDirty();node.invalidateVolume();});}}}));x3dom.registerNodeType("SphereSegment","Geometry3DExt",defineClass(x3dom.nodeTypes.X3DSpatialGeometryNode,function(ctx){x3dom.nodeTypes.SphereSegment.superClass.call(this,ctx);this.addField_SFFloat(ctx,'radius',1);this.addField_MFFloat(ctx,'longitude',[]);this.addField_MFFloat(ctx,'latitude',[]);this.addField_SFVec2f(ctx,'stepSize',1,1);var r=this._vf.radius;var longs=this._vf.longitude;var lats=this._vf.latitude;var subx=longs.length,suby=lats.length;var first,second;var latNumber,longNumber;var latitudeBands=suby;var longitudeBands=subx;var theta,sinTheta,cosTheta;var phi,sinPhi,cosPhi;var x,y,z,u,v;for(latNumber=0;latNumber<=latitudeBands;latNumber++){theta=((lats[latNumber]+90)*Math.PI)/180;sinTheta=Math.sin(theta);cosTheta=Math.cos(theta);for(longNumber=0;longNumber<=longitudeBands;longNumber++){phi=((longs[longNumber])*Math.PI)/180;sinPhi=Math.sin(phi);cosPhi=Math.cos(phi);x=-cosPhi*sinTheta;y=-cosTheta;z=-sinPhi*sinTheta;u=longNumber/(longitudeBands-1);v=latNumber/(latitudeBands-1);this._mesh._positions[0].push(r*x,r*y,r*z);this._mesh._normals[0].push(x,y,z);this._mesh._texCoords[0].push(u,v);}}
for(latNumber=0;latNumber<latitudeBands;latNumber++){for(longNumber=0;longNumber<longitudeBands;longNumber++){first=(latNumber*(longitudeBands+1))+longNumber;second=first+longitudeBands+1;this._mesh._indices[0].push(first);this._mesh._indices[0].push(second);this._mesh._indices[0].push(first+1);this._mesh._indices[0].push(second);this._mesh._indices[0].push(second+1);this._mesh._indices[0].push(first+1);}}
this._mesh._invalidate=true;this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;}));x3dom.registerNodeType("ElevationGrid","Geometry3DExt",defineClass(x3dom.nodeTypes.X3DGeometryNode,function(ctx){x3dom.nodeTypes.ElevationGrid.superClass.call(this,ctx);this.addField_SFBool(ctx,'colorPerVertex',true);this.addField_SFBool(ctx,'normalPerVertex',true);this.addField_SFFloat(ctx,'creaseAngle',0);this.addField_MFNode('attrib',x3dom.nodeTypes.X3DVertexAttributeNode);this.addField_SFNode('normal',x3dom.nodeTypes.Normal);this.addField_SFNode('color',x3dom.nodeTypes.X3DColorNode);this.addField_SFNode('texCoord',x3dom.nodeTypes.X3DTextureCoordinateNode);this.addField_MFFloat(ctx,'height',[]);this.addField_SFInt32(ctx,'xDimension',0);this.addField_SFFloat(ctx,'xSpacing',1.0);this.addField_SFInt32(ctx,'zDimension',0);this.addField_SFFloat(ctx,'zSpacing',1.0);},{nodeChanged:function()
{this._mesh._indices[0]=[];this._mesh._positions[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];this._mesh._colors[0]=[];var x=0,y=0;var subx=this._vf.xDimension-1;var suby=this._vf.zDimension-1;var h=this._vf.height;x3dom.debug.assert((h.length>=this._vf.xDimension*this._vf.zDimension),"Too few height values for given x/zDimension!");var normals=null,texCoords=null,colors=null;if(this._cf.normal.node){normals=this._cf.normal.node._vf.vector;}
var numTexComponents=2;var texCoordNode=this._cf.texCoord.node;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.MultiTextureCoordinate)){if(texCoordNode._cf.texCoord.nodes.length)
texCoordNode=texCoordNode._cf.texCoord.nodes[0];}
if(texCoordNode){if(texCoordNode._vf.point){texCoords=texCoordNode._vf.point;if(x3dom.isa(texCoordNode,x3dom.nodeTypes.TextureCoordinate3D)){numTexComponents=3;}}}
var numColComponents=3;if(this._cf.color.node){colors=this._cf.color.node._vf.color;if(x3dom.isa(this._cf.color.node,x3dom.nodeTypes.ColorRGBA)){numColComponents=4;}}
var c=0;var faceCnt=0;for(y=0;y<=suby;y++)
{for(x=0;x<=subx;x++)
{this._mesh._positions[0].push(x*this._vf.xSpacing);this._mesh._positions[0].push(h[c]);this._mesh._positions[0].push(y*this._vf.zSpacing);if(normals){if(this._vf.normalPerVertex){this._mesh._normals[0].push(normals[c].x);this._mesh._normals[0].push(normals[c].y);this._mesh._normals[0].push(normals[c].z);}}
if(texCoords){this._mesh._texCoords[0].push(texCoords[c].x);this._mesh._texCoords[0].push(texCoords[c].y);if(numTexComponents===3){this._mesh._texCoords[0].push(texCoords[c].z);}}
else{this._mesh._texCoords[0].push(x/subx);this._mesh._texCoords[0].push(y/suby);}
if(colors){if(this._vf.colorPerVertex){this._mesh._colors[0].push(colors[c].r);this._mesh._colors[0].push(colors[c].g);this._mesh._colors[0].push(colors[c].b);if(numColComponents===4){this._mesh._colors[0].push(colors[c].a);}}}
c++;}}
for(y=1;y<=suby;y++){for(x=0;x<subx;x++){this._mesh._indices[0].push((y-1)*(subx+1)+x);this._mesh._indices[0].push(y*(subx+1)+x);this._mesh._indices[0].push((y-1)*(subx+1)+x+1);this._mesh._indices[0].push(y*(subx+1)+x);this._mesh._indices[0].push(y*(subx+1)+x+1);this._mesh._indices[0].push((y-1)*(subx+1)+x+1);}}
if(!normals)
this._mesh.calcNormals(Math.PI,this._vf.ccw);this.invalidateVolume();this._mesh._numTexComponents=numTexComponents;this._mesh._numColComponents=numColComponents;this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;},fieldChanged:function(fieldName)
{var i,n;var normals=null;if(this._cf.normal.node){normals=this._cf.normal.node._vf.vector;}
if(fieldName=="height")
{n=this._mesh._positions[0].length/3;var h=this._vf.height;for(i=0;i<n;i++){this._mesh._positions[0][3*i+1]=h[i];}
if(!normals){this._mesh._normals[0]=[];this._mesh.calcNormals(Math.PI,this._vf.ccw);}
this.invalidateVolume();Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;if(!normals)
node._dirty.normals=true;node.invalidateVolume();});}
else if(fieldName=="xSpacing"||fieldName=="zSpacing")
{for(var y=0;y<this._vf.zDimension;y++){for(var x=0;x<this._vf.xDimension;x++){var j=3*(y*this._vf.xDimension+x);this._mesh._positions[0][j]=x*this._vf.xSpacing;this._mesh._positions[0][j+2]=y*this._vf.zSpacing;}}
if(!normals){this._mesh._normals[0]=[];this._mesh.calcNormals(Math.PI,this._vf.ccw);}
this.invalidateVolume();Array.forEach(this._parentNodes,function(node){node._dirty.positions=true;if(!normals)
node._dirty.normals=true;node.invalidateVolume();});}
else if(fieldName=="xDimension"||fieldName=="zDimension")
{this.nodeChanged();Array.forEach(this._parentNodes,function(node){node.setGeoDirty();node.invalidateVolume();});}
else if(fieldName=="color")
{n=this._mesh._colors[0].length/3;var c=this._cf.color.node._vf.color;for(i=0;i<n;i++){this._mesh._colors[0][i*3]=c[i].r;this._mesh._colors[0][i*3+1]=c[i].g;this._mesh._colors[0][i*3+2]=c[i].b;}
Array.forEach(this._parentNodes,function(node){node._dirty.colors=true;});}}}));x3dom.registerNodeType("Extrusion","Geometry3DExt",defineClass(x3dom.nodeTypes.X3DGeometryNode,function(ctx){x3dom.nodeTypes.Extrusion.superClass.call(this,ctx);this.addField_SFBool(ctx,'beginCap',true);this.addField_SFBool(ctx,'endCap',true);this.addField_SFBool(ctx,'convex',true);this.addField_SFFloat(ctx,'creaseAngle',0);this.addField_MFVec2f(ctx,'crossSection',[new x3dom.fields.SFVec2f(1,1),new x3dom.fields.SFVec2f(1,-1),new x3dom.fields.SFVec2f(-1,-1),new x3dom.fields.SFVec2f(-1,1),new x3dom.fields.SFVec2f(1,1)]);this.addField_MFRotation(ctx,'orientation',[new x3dom.fields.Quaternion(0,0,0,1)]);this.addField_MFVec2f(ctx,'scale',[new x3dom.fields.SFVec2f(1,1)]);this.addField_MFVec3f(ctx,'spine',[new x3dom.fields.SFVec3f(0,0,0),new x3dom.fields.SFVec3f(0,1,0)]);this.addField_SFFloat(ctx,'height',0);this.rebuildGeometry();},{rebuildGeometry:function()
{this._mesh._positions[0]=[];this._mesh._normals[0]=[];this._mesh._texCoords[0]=[];this._mesh._indices[0]=[];var i,j,n,m,len,sx=1,sy=1;var spine=this._vf.spine,scale=this._vf.scale,orientation=this._vf.orientation,crossSection=this._vf.crossSection;var positions=[],index=0;m=spine.length;n=crossSection.length;if(this._vf.height>0){spine[0]=new x3dom.fields.SFVec3f(0,0,0);spine[1]=new x3dom.fields.SFVec3f(0,this._vf.height,0);m=2;}
var x,y,z;var last_z=new x3dom.fields.SFVec3f(0,0,1);if(m>2){for(i=1;i<m-1;i++){var last_z_candidate=spine[i+1].subtract(spine[i]).cross(spine[i-1].subtract(spine[i]));if(last_z_candidate.length()>x3dom.fields.Eps){last_z=x3dom.fields.SFVec3f.copy(last_z_candidate.normalize());break;}}}
var texCoordV=0;var texCoordsV=[0];for(i=1;i<m;i++){var v=spine[i].subtract(spine[i-1]).length();texCoordV=texCoordV+v;texCoordsV[i]=texCoordV;}
var texCoordU=0;var texCoordsU=[0];var maxTexU_x=0,minTexU_x=0;var maxTexU_z=0,minTexU_z=0;for(j=1;j<n;j++){var u=crossSection[j].subtract(crossSection[j-1]).length();texCoordU=texCoordU+u;texCoordsU[j]=texCoordU;if(j==1){maxTexU_x=minTexU_x=crossSection[j-1].x;maxTexU_z=minTexU_z=crossSection[j-1].y;}
if(maxTexU_x<crossSection[j].x){maxTexU_x=crossSection[j].x;}
if(minTexU_x>crossSection[j].x){minTexU_x=crossSection[j].x;}
if(maxTexU_z<crossSection[j].y){maxTexU_z=crossSection[j].y;}
if(minTexU_z>crossSection[j].y){minTexU_z=crossSection[j].y;}}
if(Math.abs(maxTexU_x-minTexU_x)<Math.abs(maxTexU_z-minTexU_z)){var helpMax=maxTexU_x;var helpMin=minTexU_x;maxTexU_x=maxTexU_z;minTexU_x=minTexU_z;maxTexU_z=helpMax;minTexU_z=helpMin;}
var diffTexU_x=Math.abs(maxTexU_x-minTexU_x);var diffTexU_z=Math.abs(maxTexU_z-minTexU_z);var spineClosed=(m>2)?spine[0].equals(spine[spine.length-1],x3dom.fields.Eps):false;for(i=0;i<m;i++){if((len=scale.length)>0){if(i<len){sx=scale[i].x;sy=scale[i].y;}
else{sx=scale[len-1].x;sy=scale[len-1].y;}}
for(j=0;j<n;j++){var pos=new x3dom.fields.SFVec3f(crossSection[j].x*sx+spine[i].x,spine[i].y,crossSection[j].y*sy+spine[i].z);if(m>2){if(i==0){if(spineClosed){y=spine[1].subtract(spine[m-2]);z=spine[1].subtract(spine[0]).cross(spine[m-2].subtract(spine[0]));}
else{y=spine[1].subtract(spine[0]);z=spine[2].subtract(spine[1]).cross(spine[0].subtract(spine[1]));}
if(z.length()>x3dom.fields.Eps){last_z=x3dom.fields.SFVec3f.copy(z);}}
else if(i==m-1){if(spineClosed){y=spine[1].subtract(spine[m-2]);z=spine[1].subtract(spine[0]).cross(spine[m-2].subtract(spine[0]));}
else{y=spine[m-1].subtract(spine[m-2]);z=x3dom.fields.SFVec3f.copy(last_z);}}
else{y=spine[i+1].subtract(spine[i-1]);z=y.cross(spine[i-1].subtract(spine[i]));}
if(z.dot(last_z)<0){z=z.negate();}
y=y.normalize();z=z.normalize();if(z.length()<=x3dom.fields.Eps){z=x3dom.fields.SFVec3f.copy(last_z);}
if(i!=0){last_z=x3dom.fields.SFVec3f.copy(z);}
x=y.cross(z).normalize();var baseMat=x3dom.fields.SFMatrix4f.identity();baseMat.setValue(x,y,z);var rotMat=(i<orientation.length)?orientation[i].toMatrix():((orientation.length>0)?orientation[orientation.length-1].toMatrix():x3dom.fields.SFMatrix4f.identity());pos=pos.subtract(spine[i]);pos=baseMat.multMatrixPnt(rotMat.multMatrixPnt(pos));pos=pos.add(spine[i]);}
pos.crossSection=crossSection[j];positions.push(pos);if(this._vf.creaseAngle<=x3dom.fields.Eps){if(i>0&&j>0){var iPos=(i-1)*n+(j-1);this._mesh._positions[0].push(positions[iPos].x,positions[iPos].y,positions[iPos].z);this._mesh._texCoords[0].push(texCoordsU[j-1]/texCoordU,texCoordsV[i-1]/texCoordV);iPos=(i-1)*n+j;this._mesh._positions[0].push(positions[iPos].x,positions[iPos].y,positions[iPos].z);this._mesh._texCoords[0].push(texCoordsU[j]/texCoordU,texCoordsV[i-1]/texCoordV);iPos=i*n+j;this._mesh._positions[0].push(positions[iPos].x,positions[iPos].y,positions[iPos].z);this._mesh._texCoords[0].push(texCoordsU[j]/texCoordU,texCoordsV[i]/texCoordV);this._mesh._indices[0].push(index++,index++,index++);this._mesh._positions[0].push(positions[iPos].x,positions[iPos].y,positions[iPos].z);this._mesh._texCoords[0].push(texCoordsU[j]/texCoordU,texCoordsV[i]/texCoordV);iPos=i*n+(j-1);this._mesh._positions[0].push(positions[iPos].x,positions[iPos].y,positions[iPos].z);this._mesh._texCoords[0].push(texCoordsU[j-1]/texCoordU,texCoordsV[i]/texCoordV);iPos=(i-1)*n+(j-1);this._mesh._positions[0].push(positions[iPos].x,positions[iPos].y,positions[iPos].z);this._mesh._texCoords[0].push(texCoordsU[j-1]/texCoordU,texCoordsV[i-1]/texCoordV);this._mesh._indices[0].push(index++,index++,index++);}}
else{this._mesh._positions[0].push(pos.x,pos.y,pos.z);this._mesh._texCoords[0].push(texCoordsU[j]/texCoordU,texCoordsV[i]/texCoordV);if(i>0&&j>0){this._mesh._indices[0].push((i-1)*n+(j-1),(i-1)*n+j,i*n+j);this._mesh._indices[0].push(i*n+j,i*n+(j-1),(i-1)*n+(j-1));}}}
if(i==m-1){var p0,l,startPos;var linklist,linklist_indices;if(this._vf.beginCap){linklist=new x3dom.DoublyLinkedList();l=this._mesh._positions[0].length/3;for(j=0;j<n;j++){linklist.appendNode(new x3dom.DoublyLinkedList.ListNode(positions[j],j));if(this._vf.creaseAngle>x3dom.fields.Eps){p0=positions[j];this._mesh._positions[0].push(p0.x,p0.y,p0.z);this._mesh._texCoords[0].push((p0.crossSection.x-minTexU_x)/diffTexU_x,(p0.crossSection.y-minTexU_z)/diffTexU_z);}}
if(this._vf.ccw==false)
linklist.invert();linklist_indices=x3dom.EarClipping.getIndexes(linklist);for(j=linklist_indices.length-1;j>=0;j--){if(this._vf.creaseAngle>x3dom.fields.Eps){this._mesh._indices[0].push(l+linklist_indices[j]);}
else{p0=positions[linklist_indices[j]];this._mesh._positions[0].push(p0.x,p0.y,p0.z);this._mesh._texCoords[0].push((p0.crossSection.x-minTexU_x)/diffTexU_x,(p0.crossSection.y-minTexU_z)/diffTexU_z);this._mesh._indices[0].push(index++);}}}
if(this._vf.endCap){linklist=new x3dom.DoublyLinkedList();startPos=(m-1)*n;l=this._mesh._positions[0].length/3;for(j=0;j<n;j++){linklist.appendNode(new x3dom.DoublyLinkedList.ListNode(positions[startPos+j],startPos+j));if(this._vf.creaseAngle>x3dom.fields.Eps){p0=positions[startPos+j];this._mesh._positions[0].push(p0.x,p0.y,p0.z);this._mesh._texCoords[0].push((p0.crossSection.x-minTexU_x)/diffTexU_x,(p0.crossSection.y-minTexU_z)/diffTexU_z);}}
if(this._vf.ccw==false)
linklist.invert();linklist_indices=x3dom.EarClipping.getIndexes(linklist);for(j=0;j<linklist_indices.length;j++){if(this._vf.creaseAngle>x3dom.fields.Eps){this._mesh._indices[0].push(l+(linklist_indices[j]-startPos));}
else{p0=positions[linklist_indices[j]];this._mesh._positions[0].push(p0.x,p0.y,p0.z);this._mesh._texCoords[0].push((p0.crossSection.x-minTexU_x)/diffTexU_x,(p0.crossSection.y-minTexU_z)/diffTexU_z);this._mesh._indices[0].push(index++);}}}}}
this._mesh.calcNormals(this._vf.creaseAngle,this._vf.ccw);this.invalidateVolume();this._mesh._numFaces=this._mesh._indices[0].length/3;this._mesh._numCoords=this._mesh._positions[0].length/3;},fieldChanged:function(fieldName)
{if(fieldName=="beginCap"||fieldName=="endCap"||fieldName=="crossSection"||fieldName=="orientation"||fieldName=="scale"||fieldName=="spine"||fieldName=="height"||fieldName=="creaseAngle")
{this.rebuildGeometry();Array.forEach(this._parentNodes,function(node){node.setAllDirty();node.invalidateVolume();});}}}));x3dom.registerNodeType("HAnimDisplacer","H-Anim",defineClass(x3dom.nodeTypes.X3DGeometricPropertyNode,function(ctx){x3dom.nodeTypes.HAnimDisplacer.superClass.call(this,ctx);this.addField_SFString(ctx,'name',"");this.addField_SFFloat(ctx,'weight',0);this.addField_MFInt32(ctx,'coordIndex',[]);this.addField_MFVec3f(ctx,'displacements',[]);x3dom.debug.logWarning("HAnimDisplacer NYI!");}));x3dom.registerNodeType("HAnimJoint","H-Anim",defineClass(x3dom.nodeTypes.Transform,function(ctx){x3dom.nodeTypes.HAnimJoint.superClass.call(this,ctx);this.addField_SFString(ctx,'name',"");this.addField_MFNode('displacers',x3dom.nodeTypes.HAnimDisplacer);this.addField_SFRotation(ctx,'limitOrientation',0,0,1,0);this.addField_MFFloat(ctx,'llimit',[]);this.addField_MFFloat(ctx,'ulimit',[]);this.addField_MFInt32(ctx,'skinCoordIndex',[]);this.addField_MFFloat(ctx,'skinCoordWeight',[]);}));x3dom.registerNodeType("HAnimSegment","H-Anim",defineClass(x3dom.nodeTypes.X3DGroupingNode,function(ctx){x3dom.nodeTypes.HAnimSegment.superClass.call(this,ctx);this.addField_SFString(ctx,'name',"");this.addField_SFVec3f(ctx,'centerOfMass',0,0,0);this.addField_SFFloat(ctx,'mass',0);this.addField_MFFloat(ctx,'momentsOfInertia',[0,0,0,0,0,0,0,0,0]);this.addField_SFNode('coord',x3dom.nodeTypes.X3DCoordinateNode);this.addField_MFNode('displacers',x3dom.nodeTypes.HAnimDisplacer);},{}));x3dom.registerNodeType("HAnimSite","H-Anim",defineClass(x3dom.nodeTypes.Transform,function(ctx){x3dom.nodeTypes.HAnimSite.superClass.call(this,ctx);this.addField_SFString(ctx,'name',"");}));x3dom.registerNodeType("HAnimHumanoid","H-Anim",defineClass(x3dom.nodeTypes.Transform,function(ctx){x3dom.nodeTypes.HAnimHumanoid.superClass.call(this,ctx);this.addField_SFString(ctx,'name',"");this.addField_SFString(ctx,'version',"");this.addField_MFString(ctx,'info',[]);this.addField_MFNode('joints',x3dom.nodeTypes.HAnimJoint);this.addField_MFNode('segments',x3dom.nodeTypes.HAnimSegment);this.addField_MFNode('sites',x3dom.nodeTypes.HAnimSite);this.addField_MFNode('skeleton',x3dom.nodeTypes.HAnimJoint);this.addField_MFNode('skin',x3dom.nodeTypes.X3DChildNode);this.addField_MFNode('skinCoord',x3dom.nodeTypes.X3DCoordinateNode);this.addField_MFNode('skinNormal',x3dom.nodeTypes.X3DNormalNode);this.addField_MFNode('viewpoints',x3dom.nodeTypes.HAnimSite);},{}));function X3DCollidableShape(){var CollidableShape=new x3dom.fields.SFNode();var RigidBody=new x3dom.fields.SFNode();var RigidBodyCollection=new x3dom.fields.SFNode();var CollisionCollection=new x3dom.fields.SFNode();var Transform=new x3dom.fields.SFNode();var RB_setup=new x3dom.fields.MFBoolean();var T_setup=new x3dom.fields.MFBoolean();var CC_setup=new x3dom.fields.MFBoolean();var createRigid=new x3dom.fields.MFBoolean();var isMotor=new x3dom.fields.MFBoolean();var torque=new x3dom.fields.SFVec3f();var isInline=new x3dom.fields.MFBoolean();var inlineExternalTransform=new x3dom.fields.SFNode();var inlineInternalTransform=new x3dom.fields.SFNode();}
function X3DJoint(){var createJoint=new x3dom.fields.MFBoolean();var Joint=[];}
(function(){var CollidableShapes=[],JointShapes=[],bulletWorld,x3dWorld=null,initScene,main,updateRigidbodies,MakeUpdateList,X3DRigidBodyComponents,CreateX3DCollidableShape,UpdateTransforms,CreateRigidbodies,rigidbodies=[],mousePickObject,mousePos=new x3dom.fields.SFVec3f(),drag=false,interactiveTransforms=[],UpdateRigidbody,intervalVar,building_constraints=true,ParseX3DElement,InlineObjectList,inline_x3dList=[],inlineLoad=false,completeJointSetup=false;function ParseX3DElement(){for(var cv in x3dom.canvases){for(var sc in x3dom.canvases[cv].x3dElem.children){if(x3dom.isa(x3dom.canvases[cv].x3dElem.children[sc]._x3domNode,x3dom.nodeTypes.Scene)){x3dWorld=x3dom.canvases[cv].x3dElem.children[sc];}}}
if(x3dWorld){for(var i in x3dWorld.children){if(x3dom.isa(x3dWorld.children[i]._x3domNode,x3dom.nodeTypes.Transform)){if(x3dom.isa(x3dWorld.children[i]._x3domNode._cf.children.nodes[0]._xmlNode._x3domNode,x3dom.nodeTypes.Inline)){if(inline_x3dList.length==0){inline_x3dList.push(x3dWorld.children[i]);}
else{for(var n in inline_x3dList){if(inline_x3dList[n]._x3domNode._DEF.toString()==x3dWorld.children[i]._x3domNode._DEF.toString()){break;}
else{if(n==inline_x3dList.length-1){inline_x3dList.push(x3dWorld.children[i]);}}}}}}
if(x3dom.isa(x3dWorld.children[i]._x3domNode,x3dom.nodeTypes.Group)){for(var all in x3dWorld.children[i].childNodes){CreateX3DCollidableShape(x3dWorld.children[i].childNodes[all],null);}}
else{CreateX3DCollidableShape(x3dWorld.children[i],null);}}}}
function CreateX3DCollidableShape(a,b){if(x3dom.isa(a._x3domNode,x3dom.nodeTypes.CollidableShape)){var X3D_CS=new X3DCollidableShape;CollidableShapes.push(X3D_CS);X3D_CS.CollidableShape=a;X3D_CS.createRigid=true;X3D_CS.RB_setup=false;X3D_CS.T_setup=false;X3D_CS.CC_setup=false;X3D_CS.isMotor=false;X3D_CS.torque=new x3dom.fields.SFVec3f(0,0,0);X3D_CS.isInline=false;X3D_CS.inlineExternalTransform=null;X3D_CS.Transform=a._x3domNode._cf.transform;if(b){X3D_CS.isInline=true;X3D_CS.inlineExternalTransform=b;}}
if(x3dom.isa(a._x3domNode,x3dom.nodeTypes.RigidBodyCollection)){for(var ea in a._x3domNode._cf.joints.nodes){if(x3dom.isa(a._x3domNode._cf.joints.nodes[ea],x3dom.nodeTypes.BallJoint)||x3dom.isa(a._x3domNode._cf.joints.nodes[ea],x3dom.nodeTypes.UniversalJoint)||x3dom.isa(a._x3domNode._cf.joints.nodes[ea],x3dom.nodeTypes.SliderJoint)||x3dom.isa(a._x3domNode._cf.joints.nodes[ea],x3dom.nodeTypes.MotorJoint)||x3dom.isa(a._x3domNode._cf.joints.nodes[ea],x3dom.nodeTypes.SingleAxisHingeJoint)||x3dom.isa(a._x3domNode._cf.joints.nodes[ea],x3dom.nodeTypes.DoubleAxisHingeJoint)){var X3D_J=new X3DJoint;X3D_J.createJoint=true;X3D_J.Joint=a._x3domNode._cf.joints.nodes[ea];JointShapes.push(X3D_J);}}
completeJointSetup=true;}
if(inlineLoad){X3DRigidBodyComponents(a);}
if(a.parentNode){for(var ea in a.parentNode.children){if(a.parentNode&&a.parentNode.children.hasOwnProperty(ea)&&a.parentNode.children[ea]){if(x3dom.isa(a.parentNode.children[ea]._x3domNode,x3dom.nodeTypes.Group)){for(var all in a.parentNode.children[ea].childNodes){if(a.parentNode.children[ea].childNodes.hasOwnProperty(all)&&a.parentNode.children[ea].childNodes[all]){X3DRigidBodyComponents(a.parentNode.children[ea].childNodes[all]);}}}
else{X3DRigidBodyComponents(a.parentNode.children[ea]);}}}}}
function X3DRigidBodyComponents(a){if(x3dom.isa(a._x3domNode,x3dom.nodeTypes.CollisionSensor)){for(var ea in a._x3domNode._cf.collider._x3domNode._cf.collidables.nodes){for(var cs in CollidableShapes){if(!CollidableShapes[cs].CC_setup&&CollidableShapes[cs].CollidableShape._x3domNode._DEF==a._x3domNode._cf.collider._x3domNode._cf.collidables.nodes[ea]._DEF){CollidableShapes[cs].CC_setup=true;CollidableShapes[cs].CollisionCollection=a._x3domNode._cf.collider;}}}}
if(x3dom.isa(a._x3domNode,x3dom.nodeTypes.CollisionCollection)){for(var ea in a._x3domNode._cf.collidables.nodes){for(var cs in CollidableShapes){if(!CollidableShapes[cs].CC_setup&&CollidableShapes[cs].CollidableShape._x3domNode._DEF==a._x3domNode._cf.collidables.nodes[ea]._DEF){CollidableShapes[cs].CC_setup=true;CollidableShapes[cs].CollisionCollection=a._x3domNode._cf.collider;}}}}
if(x3dom.isa(a._x3domNode,x3dom.nodeTypes.Transform)){for(var cs in CollidableShapes){if(!CollidableShapes[cs].T_setup&&CollidableShapes[cs].Transform._x3domNode._DEF==a._x3domNode._DEF){CollidableShapes[cs].T_setup=true;CollidableShapes[cs].inlineInternalTransform=null;interactiveTransforms.push(a);if(!CollidableShapes[cs].inlineInternalTransform&&CollidableShapes[cs].isInline){CollidableShapes[cs].inlineInternalTransform=a;}}}}
if(x3dom.isa(a._x3domNode,x3dom.nodeTypes.RigidBodyCollection)){for(var ea in a._x3domNode._cf.bodies.nodes){for(var eac in a._x3domNode._cf.bodies.nodes[ea]._cf.geometry.nodes){for(var cs in CollidableShapes){if(!CollidableShapes[cs].RB_setup&&CollidableShapes[cs].CollidableShape._x3domNode._DEF==a._x3domNode._cf.bodies.nodes[ea]._cf.geometry.nodes[eac]._DEF){CollidableShapes[cs].RB_setup=true;CollidableShapes[cs].RigidBody=a._x3domNode._cf.bodies.nodes[ea];CollidableShapes[cs].RigidBodyCollection=a;}}}}}}
initScene=function(){var collisionConfiguration,dispatcher,overlappingPairCache,solver,WorldGravity=new x3dom.fields.SFVec3f();collisionConfiguration=new Ammo.btDefaultCollisionConfiguration();dispatcher=new Ammo.btCollisionDispatcher(collisionConfiguration);overlappingPairCache=new Ammo.btDbvtBroadphase();solver=new Ammo.btSequentialImpulseConstraintSolver();bulletWorld=new Ammo.btDiscreteDynamicsWorld(dispatcher,overlappingPairCache,solver,collisionConfiguration);bulletWorld.setGravity(new Ammo.btVector3(0,-9.81,0));};CreateRigidbodies=function(){var mass,startTransform,localInertia,sphereShape,boxShape,cylinderShape,coneShape,indexedfacesetShape,centerOfMass,motionState,rbInfo,sphereAmmo,boxAmmo,cylinderAmmo,coneAmmo,indexedfacesetAmmo;building_constraints=true;for(var cs in CollidableShapes){if(CollidableShapes[cs].CC_setup&&CollidableShapes[cs].T_setup&&CollidableShapes[cs].RB_setup&&CollidableShapes[cs].CollidableShape._x3domNode._cf.shape._x3domNode._cf.geometry.node._xmlNode.nodeName&&CollidableShapes[cs].createRigid==true){switch(CollidableShapes[cs].CollidableShape._x3domNode._cf.shape._x3domNode._cf.geometry.node._xmlNode.nodeName.toLowerCase())
{case"sphere":{var sphere=CollidableShapes[cs];if(!CollidableShapes[cs].RigidBody._vf.enabled||CollidableShapes[cs].RigidBody._vf.fixed){mass=0;}
else{mass=CollidableShapes[cs].RigidBody._vf.mass;}
startTransform=new Ammo.btTransform();startTransform.setIdentity();startTransform.setOrigin(new Ammo.btVector3(CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.x,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.y,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.z));if(CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.x==0&&CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.y==0&&CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.z==0&&CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.w==1){startTransform.setRotation(new Ammo.btQuaternion(0,0,1,0));}
else{CollidableShapes[cs].Transform._x3domNode._vf.rotation=CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation;startTransform.setRotation(new Ammo.btQuaternion(CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.x,CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.y,CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.z,CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.w));}
if(CollidableShapes[cs].RigidBody._vf.centerOfMass!=null){centerOfMass=new Ammo.btTransform(startTransform.getRotation(),new Ammo.btVector3(CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.x+CollidableShapes[cs].RigidBody._vf.centerOfMass.x,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.y+CollidableShapes[cs].RigidBody._vf.centerOfMass.y,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.z+CollidableShapes[cs].RigidBody._vf.centerOfMass.z));}
else{centerOfMass=startTransform;}
if(CollidableShapes[cs].RigidBody._vf.inertia){if(CollidableShapes[cs].RigidBody._vf.inertia[0]+CollidableShapes[cs].RigidBody._vf.inertia[1]+CollidableShapes[cs].RigidBody._vf.inertia[2]==CollidableShapes[cs].RigidBody._vf.inertia[3]+CollidableShapes[cs].RigidBody._vf.inertia[4]+CollidableShapes[cs].RigidBody._vf.inertia[5]==CollidableShapes[cs].RigidBody._vf.inertia[6]+CollidableShapes[cs].RigidBody._vf.inertia[7]+CollidableShapes[cs].RigidBody._vf.inertia[8]==1){localInertia=new Ammo.btVector3(0,0,0);}
else{localInertia=new Ammo.btVector3(CollidableShapes[cs].RigidBody._vf.inertia[0]+CollidableShapes[cs].RigidBody._vf.inertia[1]+CollidableShapes[cs].RigidBody._vf.inertia[2],CollidableShapes[cs].RigidBody._vf.inertia[3]+CollidableShapes[cs].RigidBody._vf.inertia[4]+CollidableShapes[cs].RigidBody._vf.inertia[5],CollidableShapes[cs].RigidBody._vf.inertia[6]+CollidableShapes[cs].RigidBody._vf.inertia[7]+CollidableShapes[cs].RigidBody._vf.inertia[8]);}}
else{localInertia=new Ammo.btVector3(0,0,0);}
sphereShape=new Ammo.btSphereShape(CollidableShapes[cs].CollidableShape._x3domNode._cf.shape._x3domNode._cf.geometry.node._vf.radius);sphereShape.calculateLocalInertia(mass,localInertia);sphereShape.setMargin(CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.contactSurfaceThickness);motionState=new Ammo.btDefaultMotionState(startTransform);rbInfo=new Ammo.btRigidBodyConstructionInfo(mass,motionState,sphereShape,localInertia);rbInfo.m_friction=CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients.x;rbInfo.m_rollingFriction=CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients.y;sphereAmmo=new Ammo.btRigidBody(rbInfo);if(CollidableShapes[cs].RigidBody._vf.autoDamp){sphereAmmo.setDamping(CollidableShapes[cs].RigidBody._vf.linearDampingFactor,CollidableShapes[cs].RigidBody._vf.angularDampingFactor);}
else{sphereAmmo.setDamping(0,0);}
sphereAmmo.setAngularVelocity(new Ammo.btVector3(CollidableShapes[cs].RigidBody._vf.angularVelocity.x,CollidableShapes[cs].RigidBody._vf.angularVelocity.y,CollidableShapes[cs].RigidBody._vf.angularVelocity.z));sphereAmmo.setLinearVelocity(new Ammo.btVector3(CollidableShapes[cs].RigidBody._vf.linearVelocity.x,CollidableShapes[cs].RigidBody._vf.linearVelocity.y,CollidableShapes[cs].RigidBody._vf.linearVelocity.z));if(CollidableShapes[cs].CollisionCollection._x3domNode._vf.bounce!=null){sphereAmmo.setRestitution(CollidableShapes[cs].CollisionCollection._x3domNode._vf.bounce);}
else{sphereAmmo.setRestitution(1.0);}
if(CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients!=null){sphereAmmo.setFriction(CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients.y);}
else{sphereAmmo.setFriction(0);}
if(CollidableShapes[cs].RigidBody._vf.disableLinearSpeed&&CollidableShapes[cs].RigidBody._vf.disableAngularSpeed){sphereAmmo.setSleepingThresholds(CollidableShapes[cs].RigidBody._vf.disableLinearSpeed,CollidableShapes[cs].RigidBody._vf.disableAngularSpeed);}
if(CollidableShapes[cs].RigidBody._vf.useGlobalGravity){sphereAmmo.setGravity(new Ammo.btVector3(CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.gravity.x,CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.gravity.y,CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.gravity.z));sphereAmmo.setFlags(0);}
else{sphereAmmo.setFlags(1);}
sphereAmmo.setCenterOfMassTransform(centerOfMass);if(UpdateRigidbody!=null){bulletWorld.removeRigidBody(rigidbodies[UpdateRigidbody]);bulletWorld.addRigidBody(sphereAmmo);sphereAmmo.geometry=sphere;rigidbodies.splice(UpdateRigidbody,1,sphereAmmo);}
else{bulletWorld.addRigidBody(sphereAmmo);sphereAmmo.geometry=sphere;rigidbodies.push(sphereAmmo);}}
break;case"box":{var box=CollidableShapes[cs];if(!CollidableShapes[cs].RigidBody._vf.enabled||CollidableShapes[cs].RigidBody._vf.fixed){mass=0;}
else{mass=CollidableShapes[cs].RigidBody._vf.mass;}
startTransform=new Ammo.btTransform();startTransform.setIdentity();startTransform.setBasis(CollidableShapes[cs].RigidBody._vf.inertia);startTransform.setOrigin(new Ammo.btVector3(CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.x,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.y,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.z));var zeroRot=new x3dom.fields.Quaternion(0,0,0,1);if(CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.x==0&&CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.y==0&&CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.z==0&&CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.w==1){startTransform.setRotation(new Ammo.btQuaternion(0,0,1,0));}
else{startTransform.setRotation(new Ammo.btQuaternion(CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.x,CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.y,CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.z,CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.w));}
if(CollidableShapes[cs].RigidBody._vf.centerOfMass!=null){centerOfMass=new Ammo.btTransform(startTransform.getRotation(),new Ammo.btVector3(CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.x+CollidableShapes[cs].RigidBody._vf.centerOfMass.x,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.y+CollidableShapes[cs].RigidBody._vf.centerOfMass.y,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.z+CollidableShapes[cs].RigidBody._vf.centerOfMass.z));}
else{centerOfMass=startTransform;}
if(CollidableShapes[cs].RigidBody._vf.inertia){if(CollidableShapes[cs].RigidBody._vf.inertia[0]+CollidableShapes[cs].RigidBody._vf.inertia[1]+CollidableShapes[cs].RigidBody._vf.inertia[2]==CollidableShapes[cs].RigidBody._vf.inertia[3]+CollidableShapes[cs].RigidBody._vf.inertia[4]+CollidableShapes[cs].RigidBody._vf.inertia[5]==CollidableShapes[cs].RigidBody._vf.inertia[6]+CollidableShapes[cs].RigidBody._vf.inertia[7]+CollidableShapes[cs].RigidBody._vf.inertia[8]==1){localInertia=new Ammo.btVector3(0,0,0);}
else{localInertia=new Ammo.btVector3(CollidableShapes[cs].RigidBody._vf.inertia[0]+CollidableShapes[cs].RigidBody._vf.inertia[1]+CollidableShapes[cs].RigidBody._vf.inertia[2],CollidableShapes[cs].RigidBody._vf.inertia[3]+CollidableShapes[cs].RigidBody._vf.inertia[4]+CollidableShapes[cs].RigidBody._vf.inertia[5],CollidableShapes[cs].RigidBody._vf.inertia[6]+CollidableShapes[cs].RigidBody._vf.inertia[7]+CollidableShapes[cs].RigidBody._vf.inertia[8]);}}
else{localInertia=new Ammo.btVector3(0,0,0);}
boxShape=new Ammo.btBoxShape(new Ammo.btVector3(CollidableShapes[cs].CollidableShape._x3domNode._cf.shape._x3domNode._cf.geometry.node._vf.size.x/2,CollidableShapes[cs].CollidableShape._x3domNode._cf.shape._x3domNode._cf.geometry.node._vf.size.y/2,CollidableShapes[cs].CollidableShape._x3domNode._cf.shape._x3domNode._cf.geometry.node._vf.size.z/2));localInertia=new Ammo.btVector3(0,0,0);boxShape.calculateLocalInertia(mass,localInertia);boxShape.setMargin(CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.contactSurfaceThickness);motionState=new Ammo.btDefaultMotionState(startTransform);rbInfo=new Ammo.btRigidBodyConstructionInfo(mass,motionState,boxShape,localInertia);rbInfo.m_friction=CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients.x;rbInfo.m_rollingFriction=CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients.y;boxAmmo=new Ammo.btRigidBody(rbInfo);if(CollidableShapes[cs].RigidBody._vf.autoDamp){boxAmmo.setDamping(CollidableShapes[cs].RigidBody._vf.linearDampingFactor,CollidableShapes[cs].RigidBody._vf.angularDampingFactor);}
else{boxAmmo.setDamping(0,0);}
boxAmmo.setAngularVelocity(new Ammo.btVector3(CollidableShapes[cs].RigidBody._vf.angularVelocity.x,CollidableShapes[cs].RigidBody._vf.angularVelocity.y,CollidableShapes[cs].RigidBody._vf.angularVelocity.z));boxAmmo.setLinearVelocity(new Ammo.btVector3(CollidableShapes[cs].RigidBody._vf.linearVelocity.x,CollidableShapes[cs].RigidBody._vf.linearVelocity.y,CollidableShapes[cs].RigidBody._vf.linearVelocity.z));if(CollidableShapes[cs].CollisionCollection._x3domNode._vf.bounce!=null){boxAmmo.setRestitution(CollidableShapes[cs].CollisionCollection._x3domNode._vf.bounce);}
else{boxAmmo.setRestitution(1.0);}
if(CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients!=null){boxAmmo.setFriction(CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients.y);}
else{boxAmmo.setFriction(1);}
if(CollidableShapes[cs].RigidBody._vf.disableLinearSpeed&&CollidableShapes[cs].RigidBody._vf.disableAngularSpeed){boxAmmo.setSleepingThresholds(CollidableShapes[cs].RigidBody._vf.disableLinearSpeed,CollidableShapes[cs].RigidBody._vf.disableAngularSpeed);}
if(CollidableShapes[cs].RigidBody._vf.useGlobalGravity){boxAmmo.setGravity(new Ammo.btVector3(CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.gravity.x,CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.gravity.y,CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.gravity.z));boxAmmo.setFlags(0);}
else{boxAmmo.setFlags(1);}
boxAmmo.setCenterOfMassTransform(centerOfMass);if(UpdateRigidbody!=null){bulletWorld.removeRigidBody(rigidbodies[UpdateRigidbody]);bulletWorld.addRigidBody(boxAmmo);boxAmmo.geometry=box;rigidbodies.splice(UpdateRigidbody,1,boxAmmo);}
else{bulletWorld.addRigidBody(boxAmmo);boxAmmo.geometry=box;rigidbodies.push(boxAmmo);}}
break;case"cylinder":{var cylinder=CollidableShapes[cs];if(!CollidableShapes[cs].RigidBody._vf.enabled||CollidableShapes[cs].RigidBody._vf.fixed){mass=0;}
else{mass=CollidableShapes[cs].RigidBody._vf.mass;}
startTransform=new Ammo.btTransform();startTransform.setIdentity();startTransform.setBasis(CollidableShapes[cs].RigidBody._vf.inertia);startTransform.setOrigin(new Ammo.btVector3(CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.x,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.y,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.z));if(CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.x==0&&CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.y==0&&CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.z==0&&CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.w==1){startTransform.setRotation(new Ammo.btQuaternion(0,0,1,0));}
else{CollidableShapes[cs].Transform._x3domNode._vf.rotation=CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation;startTransform.setRotation(new Ammo.btQuaternion(CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.x,CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.y,CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.z,CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.w));}
if(CollidableShapes[cs].RigidBody._vf.centerOfMass!=null){centerOfMass=new Ammo.btTransform(startTransform.getRotation(),new Ammo.btVector3(CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.x+CollidableShapes[cs].RigidBody._vf.centerOfMass.x,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.y+CollidableShapes[cs].RigidBody._vf.centerOfMass.y,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.z+CollidableShapes[cs].RigidBody._vf.centerOfMass.z));}
else{centerOfMass=startTransform;}
if(CollidableShapes[cs].RigidBody._vf.inertia){if(CollidableShapes[cs].RigidBody._vf.inertia[0]+CollidableShapes[cs].RigidBody._vf.inertia[1]+CollidableShapes[cs].RigidBody._vf.inertia[2]==CollidableShapes[cs].RigidBody._vf.inertia[3]+CollidableShapes[cs].RigidBody._vf.inertia[4]+CollidableShapes[cs].RigidBody._vf.inertia[5]==CollidableShapes[cs].RigidBody._vf.inertia[6]+CollidableShapes[cs].RigidBody._vf.inertia[7]+CollidableShapes[cs].RigidBody._vf.inertia[8]==1){localInertia=new Ammo.btVector3(0,0,0);}
else{localInertia=new Ammo.btVector3(CollidableShapes[cs].RigidBody._vf.inertia[0]+CollidableShapes[cs].RigidBody._vf.inertia[1]+CollidableShapes[cs].RigidBody._vf.inertia[2],CollidableShapes[cs].RigidBody._vf.inertia[3]+CollidableShapes[cs].RigidBody._vf.inertia[4]+CollidableShapes[cs].RigidBody._vf.inertia[5],CollidableShapes[cs].RigidBody._vf.inertia[6]+CollidableShapes[cs].RigidBody._vf.inertia[7]+CollidableShapes[cs].RigidBody._vf.inertia[8]);}}
else{localInertia=new Ammo.btVector3(0,0,0);}
cylinderShape=new Ammo.btCylinderShape(new Ammo.btVector3(CollidableShapes[cs].CollidableShape._x3domNode._cf.shape._x3domNode._cf.geometry.node._vf.radius,CollidableShapes[cs].CollidableShape._x3domNode._cf.shape._x3domNode._cf.geometry.node._vf.height/2,CollidableShapes[cs].CollidableShape._x3domNode._cf.shape._x3domNode._cf.geometry.node._vf.radius));cylinderShape.calculateLocalInertia(mass,localInertia);cylinderShape.setMargin(CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.contactSurfaceThickness);motionState=new Ammo.btDefaultMotionState(startTransform);rbInfo=new Ammo.btRigidBodyConstructionInfo(mass,motionState,cylinderShape,localInertia);rbInfo.m_friction=CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients.x;rbInfo.m_rollingFriction=CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients.y;cylinderAmmo=new Ammo.btRigidBody(rbInfo);if(CollidableShapes[cs].RigidBody._vf.autoDamp){cylinderAmmo.setDamping(CollidableShapes[cs].RigidBody._vf.linearDampingFactor,CollidableShapes[cs].RigidBody._vf.angularDampingFactor);}
else{cylinderAmmo.setDamping(0,0);}
cylinderAmmo.setAngularVelocity(new Ammo.btVector3(CollidableShapes[cs].RigidBody._vf.angularVelocity.x,CollidableShapes[cs].RigidBody._vf.angularVelocity.y,CollidableShapes[cs].RigidBody._vf.angularVelocity.z));cylinderAmmo.setLinearVelocity(new Ammo.btVector3(CollidableShapes[cs].RigidBody._vf.linearVelocity.x,CollidableShapes[cs].RigidBody._vf.linearVelocity.y,CollidableShapes[cs].RigidBody._vf.linearVelocity.z));if(CollidableShapes[cs].CollisionCollection._x3domNode._vf.bounce!=null){cylinderAmmo.setRestitution(CollidableShapes[cs].CollisionCollection._x3domNode._vf.bounce);}
else{cylinderAmmo.setRestitution(1.0);}
if(CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients!=null){cylinderAmmo.setFriction(CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients.y);}
else{cylinderAmmo.setFriction(1);}
if(CollidableShapes[cs].RigidBody._vf.disableLinearSpeed&&CollidableShapes[cs].RigidBody._vf.disableAngularSpeed){cylinderAmmo.setSleepingThresholds(CollidableShapes[cs].RigidBody._vf.disableLinearSpeed,CollidableShapes[cs].RigidBody._vf.disableAngularSpeed);}
if(CollidableShapes[cs].RigidBody._vf.useGlobalGravity){cylinderAmmo.setGravity(new Ammo.btVector3(CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.gravity.x,CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.gravity.y,CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.gravity.z));cylinderAmmo.setFlags(0);}
else{cylinderAmmo.setFlags(1);}
cylinderAmmo.setCenterOfMassTransform(centerOfMass);if(UpdateRigidbody!=null){bulletWorld.removeRigidBody(rigidbodies[UpdateRigidbody]);bulletWorld.addRigidBody(cylinderAmmo);cylinderAmmo.geometry=cylinder;rigidbodies.splice(UpdateRigidbody,1,cylinderAmmo);}
else{bulletWorld.addRigidBody(cylinderAmmo);cylinderAmmo.geometry=cylinder;rigidbodies.push(cylinderAmmo);}}
break;case"cone":{var cone=CollidableShapes[cs];if(!CollidableShapes[cs].RigidBody._vf.enabled||CollidableShapes[cs].RigidBody._vf.fixed){mass=0;}
else{mass=CollidableShapes[cs].RigidBody._vf.mass;}
startTransform=new Ammo.btTransform();startTransform.setIdentity();startTransform.setBasis(CollidableShapes[cs].RigidBody._vf.inertia);startTransform.setOrigin(new Ammo.btVector3(CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.x,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.y,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.z));if(CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.x==0&&CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.y==0&&CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.z==0&&CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.w==1){startTransform.setRotation(new Ammo.btQuaternion(0,0,1,0));}
else{CollidableShapes[cs].Transform._x3domNode._vf.rotation=CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation;startTransform.setRotation(new Ammo.btQuaternion(CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.x,CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.y,CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.z,CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.w));}
if(CollidableShapes[cs].RigidBody._vf.centerOfMass!=null){centerOfMass=new Ammo.btTransform(startTransform.getRotation(),new Ammo.btVector3(CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.x+CollidableShapes[cs].RigidBody._vf.centerOfMass.x,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.y+CollidableShapes[cs].RigidBody._vf.centerOfMass.y,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.z+CollidableShapes[cs].RigidBody._vf.centerOfMass.z));}
else{centerOfMass=startTransform;}
if(CollidableShapes[cs].RigidBody._vf.inertia){if(CollidableShapes[cs].RigidBody._vf.inertia[0]+CollidableShapes[cs].RigidBody._vf.inertia[1]+CollidableShapes[cs].RigidBody._vf.inertia[2]==CollidableShapes[cs].RigidBody._vf.inertia[3]+CollidableShapes[cs].RigidBody._vf.inertia[4]+CollidableShapes[cs].RigidBody._vf.inertia[5]==CollidableShapes[cs].RigidBody._vf.inertia[6]+CollidableShapes[cs].RigidBody._vf.inertia[7]+CollidableShapes[cs].RigidBody._vf.inertia[8]==1){localInertia=new Ammo.btVector3(0,0,0);}
else{localInertia=new Ammo.btVector3(CollidableShapes[cs].RigidBody._vf.inertia[0]+CollidableShapes[cs].RigidBody._vf.inertia[1]+CollidableShapes[cs].RigidBody._vf.inertia[2],CollidableShapes[cs].RigidBody._vf.inertia[3]+CollidableShapes[cs].RigidBody._vf.inertia[4]+CollidableShapes[cs].RigidBody._vf.inertia[5],CollidableShapes[cs].RigidBody._vf.inertia[6]+CollidableShapes[cs].RigidBody._vf.inertia[7]+CollidableShapes[cs].RigidBody._vf.inertia[8]);}}
else{localInertia=new Ammo.btVector3(0,0,0);}
coneShape=new Ammo.btConeShape(CollidableShapes[cs].CollidableShape._x3domNode._cf.shape._x3domNode._cf.geometry.node._vf.radius,CollidableShapes[cs].CollidableShape._x3domNode._cf.shape._x3domNode._cf.geometry.node._vf.height);coneShape.setConeUpIndex(1);coneShape.setMargin(CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.contactSurfaceThickness);coneShape.calculateLocalInertia(mass,localInertia);motionState=new Ammo.btDefaultMotionState(startTransform);rbInfo=new Ammo.btRigidBodyConstructionInfo(mass,motionState,coneShape,localInertia);rbInfo.m_friction=CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients.x;rbInfo.m_rollingFriction=CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients.y;coneAmmo=new Ammo.btRigidBody(rbInfo);if(CollidableShapes[cs].RigidBody._vf.autoDamp){coneAmmo.setDamping(CollidableShapes[cs].RigidBody._vf.linearDampingFactor,CollidableShapes[cs].RigidBody._vf.angularDampingFactor);}
else{coneAmmo.setDamping(0,0);}
coneAmmo.setAngularVelocity(new Ammo.btVector3(CollidableShapes[cs].RigidBody._vf.angularVelocity.x,CollidableShapes[cs].RigidBody._vf.angularVelocity.y,CollidableShapes[cs].RigidBody._vf.angularVelocity.z));coneAmmo.setLinearVelocity(new Ammo.btVector3(CollidableShapes[cs].RigidBody._vf.linearVelocity.x,CollidableShapes[cs].RigidBody._vf.linearVelocity.y,CollidableShapes[cs].RigidBody._vf.linearVelocity.z));if(CollidableShapes[cs].CollisionCollection._x3domNode._vf.bounce!=null){coneAmmo.setRestitution(CollidableShapes[cs].CollisionCollection._x3domNode._vf.bounce);}
else{coneAmmo.setRestitution(1.0);}
if(CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients!=null){coneAmmo.setFriction(CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients.y);}
else{coneAmmo.setFriction(1);}
if(CollidableShapes[cs].RigidBody._vf.disableLinearSpeed&&CollidableShapes[cs].RigidBody._vf.disableAngularSpeed){coneAmmo.setSleepingThresholds(CollidableShapes[cs].RigidBody._vf.disableLinearSpeed,CollidableShapes[cs].RigidBody._vf.disableAngularSpeed);}
if(CollidableShapes[cs].RigidBody._vf.useGlobalGravity){coneAmmo.setGravity(new Ammo.btVector3(CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.gravity.x,CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.gravity.y,CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.gravity.z));coneAmmo.setFlags(0);}
else{coneAmmo.setFlags(1);}
coneAmmo.setCenterOfMassTransform(centerOfMass);if(UpdateRigidbody!=null){bulletWorld.removeRigidBody(rigidbodies[UpdateRigidbody]);bulletWorld.addRigidBody(coneAmmo);coneAmmo.geometry=cone;rigidbodies.splice(UpdateRigidbody,1,coneAmmo);}
else{bulletWorld.addRigidBody(coneAmmo);coneAmmo.geometry=cone;rigidbodies.push(coneAmmo);}}
break;case"indexedfaceset":{var indexedfaceset=CollidableShapes[cs];if(!CollidableShapes[cs].RigidBody._vf.enabled||CollidableShapes[cs].RigidBody._vf.fixed){mass=0;}
else{mass=CollidableShapes[cs].RigidBody._vf.mass;}
startTransform=new Ammo.btTransform();startTransform.setIdentity();startTransform.setBasis(CollidableShapes[cs].RigidBody._vf.inertia);startTransform.setOrigin(new Ammo.btVector3(CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.x,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.y,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.z));if(CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.x==0&&CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.y==0&&CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.z==0&&CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.w==1){startTransform.setRotation(new Ammo.btQuaternion(0,0,1,0));}
else{CollidableShapes[cs].Transform._x3domNode._vf.rotation=CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation;startTransform.setRotation(new Ammo.btQuaternion(CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.x,CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.y,CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.z,CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.w));}
if(CollidableShapes[cs].RigidBody._vf.centerOfMass!=null){centerOfMass=new Ammo.btTransform(startTransform.getRotation(),new Ammo.btVector3(CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.x+CollidableShapes[cs].RigidBody._vf.centerOfMass.x,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.y+CollidableShapes[cs].RigidBody._vf.centerOfMass.y,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.z+CollidableShapes[cs].RigidBody._vf.centerOfMass.z));}
else{centerOfMass=startTransform;}
if(CollidableShapes[cs].RigidBody._vf.inertia){if(CollidableShapes[cs].RigidBody._vf.inertia[0]+CollidableShapes[cs].RigidBody._vf.inertia[1]+CollidableShapes[cs].RigidBody._vf.inertia[2]==CollidableShapes[cs].RigidBody._vf.inertia[3]+CollidableShapes[cs].RigidBody._vf.inertia[4]+CollidableShapes[cs].RigidBody._vf.inertia[5]==CollidableShapes[cs].RigidBody._vf.inertia[6]+CollidableShapes[cs].RigidBody._vf.inertia[7]+CollidableShapes[cs].RigidBody._vf.inertia[8]==1){localInertia=new Ammo.btVector3(0,0,0);}
else{localInertia=new Ammo.btVector3(CollidableShapes[cs].RigidBody._vf.inertia[0]+CollidableShapes[cs].RigidBody._vf.inertia[1]+CollidableShapes[cs].RigidBody._vf.inertia[2],CollidableShapes[cs].RigidBody._vf.inertia[3]+CollidableShapes[cs].RigidBody._vf.inertia[4]+CollidableShapes[cs].RigidBody._vf.inertia[5],CollidableShapes[cs].RigidBody._vf.inertia[6]+CollidableShapes[cs].RigidBody._vf.inertia[7]+CollidableShapes[cs].RigidBody._vf.inertia[8]);}}
else{localInertia=new Ammo.btVector3(0,0,0);}
var convexHullShape=new Ammo.btConvexHullShape();for(var p in CollidableShapes[cs].CollidableShape._x3domNode._cf.shape._x3domNode._cf.geometry.node._cf.coord.node._vf.point){convexHullShape.addPoint(new Ammo.btVector3(CollidableShapes[cs].CollidableShape._x3domNode._cf.shape._x3domNode._cf.geometry.node._cf.coord.node._vf.point[p].x,CollidableShapes[cs].CollidableShape._x3domNode._cf.shape._x3domNode._cf.geometry.node._cf.coord.node._vf.point[p].y,CollidableShapes[cs].CollidableShape._x3domNode._cf.shape._x3domNode._cf.geometry.node._cf.coord.node._vf.point[p].z),true);}
var compoundShape=new Ammo.btCompoundShape();compoundShape.addChildShape(startTransform,convexHullShape);compoundShape.setMargin(CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.contactSurfaceThickness);compoundShape.createAabbTreeFromChildren();compoundShape.updateChildTransform(0,new Ammo.btTransform(new Ammo.btQuaternion(0,0,0,1),new Ammo.btVector3(0,0,0)),true);compoundShape.calculateLocalInertia(mass,localInertia);motionState=new Ammo.btDefaultMotionState(startTransform);rbInfo=new Ammo.btRigidBodyConstructionInfo(mass,motionState,compoundShape,localInertia);rbInfo.m_friction=CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients.x;rbInfo.m_rollingFriction=CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients.y;indexedfacesetAmmo=new Ammo.btRigidBody(rbInfo);if(CollidableShapes[cs].RigidBody._vf.autoDamp){indexedfacesetAmmo.setDamping(CollidableShapes[cs].RigidBody._vf.linearDampingFactor,CollidableShapes[cs].RigidBody._vf.angularDampingFactor);}
else{indexedfacesetAmmo.setDamping(0,0);}
indexedfacesetAmmo.setAngularVelocity(new Ammo.btVector3(CollidableShapes[cs].RigidBody._vf.angularVelocity.x,CollidableShapes[cs].RigidBody._vf.angularVelocity.y,CollidableShapes[cs].RigidBody._vf.angularVelocity.z));indexedfacesetAmmo.setLinearVelocity(new Ammo.btVector3(CollidableShapes[cs].RigidBody._vf.linearVelocity.x,CollidableShapes[cs].RigidBody._vf.linearVelocity.y,CollidableShapes[cs].RigidBody._vf.linearVelocity.z));if(CollidableShapes[cs].CollisionCollection._x3domNode._vf.bounce!=null){indexedfacesetAmmo.setRestitution(CollidableShapes[cs].CollisionCollection._x3domNode._vf.bounce);}
else{indexedfacesetAmmo.setRestitution(1.0);}
if(CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients!=null){indexedfacesetAmmo.setFriction(CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients.y);}
else{indexedfacesetAmmo.setFriction(1);}
if(CollidableShapes[cs].RigidBody._vf.disableLinearSpeed&&CollidableShapes[cs].RigidBody._vf.disableAngularSpeed){indexedfacesetAmmo.setSleepingThresholds(CollidableShapes[cs].RigidBody._vf.disableLinearSpeed,CollidableShapes[cs].RigidBody._vf.disableAngularSpeed);}
if(CollidableShapes[cs].RigidBody._vf.useGlobalGravity){indexedfacesetAmmo.setGravity(new Ammo.btVector3(CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.gravity.x,CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.gravity.y,CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.gravity.z));indexedfacesetAmmo.setFlags(0);}
else{indexedfacesetAmmo.setFlags(1);}
indexedfacesetAmmo.setCenterOfMassTransform(centerOfMass);if(UpdateRigidbody!=null){bulletWorld.removeRigidBody(rigidbodies[UpdateRigidbody]);bulletWorld.addRigidBody(indexedfacesetAmmo);indexedfacesetAmmo.geometry=indexedfaceset;rigidbodies.splice(UpdateRigidbody,1,indexedfacesetAmmo);}
else{bulletWorld.addRigidBody(indexedfacesetAmmo);indexedfacesetAmmo.geometry=indexedfaceset;rigidbodies.push(indexedfacesetAmmo);}}
break;case"indexedtriangleset":{var triangleset=CollidableShapes[cs];if(!CollidableShapes[cs].RigidBody._vf.enabled||CollidableShapes[cs].RigidBody._vf.fixed){mass=0;}
else{mass=CollidableShapes[cs].RigidBody._vf.mass;}
startTransform=new Ammo.btTransform();startTransform.setIdentity();startTransform.setBasis(CollidableShapes[cs].RigidBody._vf.inertia);startTransform.setOrigin(new Ammo.btVector3(CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.x,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.y,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.z));if(CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.x==0&&CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.y==0&&CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.z==0&&CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.w==1){startTransform.setRotation(new Ammo.btQuaternion(0,0,1,0));}
else{CollidableShapes[cs].Transform._x3domNode._vf.rotation=CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation;startTransform.setRotation(new Ammo.btQuaternion(CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.x,CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.y,CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.z,CollidableShapes[cs].CollidableShape._x3domNode._vf.rotation.w));}
if(CollidableShapes[cs].RigidBody._vf.centerOfMass!=null){centerOfMass=new Ammo.btTransform(startTransform.getRotation(),new Ammo.btVector3(CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.x+CollidableShapes[cs].RigidBody._vf.centerOfMass.x,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.y+CollidableShapes[cs].RigidBody._vf.centerOfMass.y,CollidableShapes[cs].CollidableShape._x3domNode._vf.translation.z+CollidableShapes[cs].RigidBody._vf.centerOfMass.z));}
else{centerOfMass=startTransform;}
if(CollidableShapes[cs].RigidBody._vf.inertia){if(CollidableShapes[cs].RigidBody._vf.inertia[0]+CollidableShapes[cs].RigidBody._vf.inertia[1]+CollidableShapes[cs].RigidBody._vf.inertia[2]==CollidableShapes[cs].RigidBody._vf.inertia[3]+CollidableShapes[cs].RigidBody._vf.inertia[4]+CollidableShapes[cs].RigidBody._vf.inertia[5]==CollidableShapes[cs].RigidBody._vf.inertia[6]+CollidableShapes[cs].RigidBody._vf.inertia[7]+CollidableShapes[cs].RigidBody._vf.inertia[8]==1){localInertia=new Ammo.btVector3(0,0,0);}
else{localInertia=new Ammo.btVector3(CollidableShapes[cs].RigidBody._vf.inertia[0]+CollidableShapes[cs].RigidBody._vf.inertia[1]+CollidableShapes[cs].RigidBody._vf.inertia[2],CollidableShapes[cs].RigidBody._vf.inertia[3]+CollidableShapes[cs].RigidBody._vf.inertia[4]+CollidableShapes[cs].RigidBody._vf.inertia[5],CollidableShapes[cs].RigidBody._vf.inertia[6]+CollidableShapes[cs].RigidBody._vf.inertia[7]+CollidableShapes[cs].RigidBody._vf.inertia[8]);}}
else{localInertia=new Ammo.btVector3(0,0,0);}
var convexHullShape=new Ammo.btConvexHullShape();for(var p in CollidableShapes[cs].CollidableShape._x3domNode._cf.shape._x3domNode._cf.geometry.node._cf.coord.node._vf.point){convexHullShape.addPoint(new Ammo.btVector3(CollidableShapes[cs].CollidableShape._x3domNode._cf.shape._x3domNode._cf.geometry.node._cf.coord.node._vf.point[p].x,CollidableShapes[cs].CollidableShape._x3domNode._cf.shape._x3domNode._cf.geometry.node._cf.coord.node._vf.point[p].y,CollidableShapes[cs].CollidableShape._x3domNode._cf.shape._x3domNode._cf.geometry.node._cf.coord.node._vf.point[p].z),true);}
var compoundShape=new Ammo.btCompoundShape();compoundShape.addChildShape(startTransform,convexHullShape);compoundShape.setMargin(CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.contactSurfaceThickness);compoundShape.createAabbTreeFromChildren();compoundShape.updateChildTransform(0,new Ammo.btTransform(new Ammo.btQuaternion(0,0,0,1),new Ammo.btVector3(0,0,0)),true);compoundShape.calculateLocalInertia(mass,localInertia);motionState=new Ammo.btDefaultMotionState(startTransform);rbInfo=new Ammo.btRigidBodyConstructionInfo(mass,motionState,compoundShape,localInertia);rbInfo.m_friction=CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients.x;rbInfo.m_rollingFriction=CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients.y;trianglesetAmmo=new Ammo.btRigidBody(rbInfo);if(CollidableShapes[cs].RigidBody._vf.autoDamp){trianglesetAmmo.setDamping(CollidableShapes[cs].RigidBody._vf.linearDampingFactor,CollidableShapes[cs].RigidBody._vf.angularDampingFactor);}
else{trianglesetAmmo.setDamping(0,0);}
trianglesetAmmo.setAngularVelocity(new Ammo.btVector3(CollidableShapes[cs].RigidBody._vf.angularVelocity.x,CollidableShapes[cs].RigidBody._vf.angularVelocity.y,CollidableShapes[cs].RigidBody._vf.angularVelocity.z));trianglesetAmmo.setLinearVelocity(new Ammo.btVector3(CollidableShapes[cs].RigidBody._vf.linearVelocity.x,CollidableShapes[cs].RigidBody._vf.linearVelocity.y,CollidableShapes[cs].RigidBody._vf.linearVelocity.z));if(CollidableShapes[cs].CollisionCollection._x3domNode._vf.bounce!=null){trianglesetAmmo.setRestitution(CollidableShapes[cs].CollisionCollection._x3domNode._vf.bounce);}
else{trianglesetAmmo.setRestitution(1.0);}
if(CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients!=null){trianglesetAmmo.setFriction(CollidableShapes[cs].CollisionCollection._x3domNode._vf.frictionCoefficients.y);}
else{trianglesetAmmo.setFriction(1);}
if(CollidableShapes[cs].RigidBody._vf.disableLinearSpeed&&CollidableShapes[cs].RigidBody._vf.disableAngularSpeed){trianglesetAmmo.setSleepingThresholds(CollidableShapes[cs].RigidBody._vf.disableLinearSpeed,CollidableShapes[cs].RigidBody._vf.disableAngularSpeed);}
if(CollidableShapes[cs].RigidBody._vf.useGlobalGravity){trianglesetAmmo.setGravity(new Ammo.btVector3(CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.gravity.x,CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.gravity.y,CollidableShapes[cs].RigidBodyCollection._x3domNode._vf.gravity.z));trianglesetAmmo.setFlags(0);}
else{trianglesetAmmo.setFlags(1);}
trianglesetAmmo.setCenterOfMassTransform(centerOfMass);if(UpdateRigidbody!=null){bulletWorld.removeRigidBody(rigidbodies[UpdateRigidbody]);bulletWorld.addRigidBody(trianglesetAmmo);trianglesetAmmo.geometry=triangleset;rigidbodies.splice(UpdateRigidbody,1,trianglesetAmmo);}
else{bulletWorld.addRigidBody(trianglesetAmmo);trianglesetAmmo.geometry=triangleset;rigidbodies.push(trianglesetAmmo);}}
break;}}}
CreateJoints();MakeUpdateList();};CreateJoints=function(){if(UpdateRigidbody!=null){var constraintNum=bulletWorld.getNumConstraints();for(cn=constraintNum;cn>=0;cn--){var constr=bulletWorld.getConstraint(cn);bulletWorld.removeConstraint(constr);}}
for(var js in JointShapes){if(JointShapes[js].Joint._xmlNode.nodeName){switch(JointShapes[js].Joint._xmlNode.nodeName.toLowerCase()){case"balljoint":{for(var j in rigidbodies){if(rigidbodies[j].geometry.RigidBody._DEF&&rigidbodies[j].geometry.RigidBody._DEF==JointShapes[js].Joint._cf.body1.node._DEF){var object1=rigidbodies[j];}
if(rigidbodies[j].geometry.RigidBody._DEF&&rigidbodies[j].geometry.RigidBody._DEF==JointShapes[js].Joint._cf.body2.node._DEF){var object2=rigidbodies[j];}}
if(object1&&object2){var newBallJoint=new Ammo.btPoint2PointConstraint(object1,object2,new Ammo.btVector3(JointShapes[js].Joint._vf.anchorPoint.x,JointShapes[js].Joint._vf.anchorPoint.y,JointShapes[js].Joint._vf.anchorPoint.z),new Ammo.btVector3(-JointShapes[js].Joint._vf.anchorPoint.x,-JointShapes[js].Joint._vf.anchorPoint.y,-JointShapes[js].Joint._vf.anchorPoint.z));bulletWorld.addConstraint(newBallJoint);}}
break;case"sliderjoint":{for(j=0;j<rigidbodies.length;j++){if(rigidbodies[j].geometry.RigidBody._DEF&&rigidbodies[j].geometry.RigidBody._DEF==JointShapes[js].Joint._cf.body1.node._DEF){var object1=rigidbodies[j];}
if(rigidbodies[j].geometry.RigidBody._DEF&&rigidbodies[j].geometry.RigidBody._DEF==JointShapes[js].Joint._cf.body2.node._DEF){var object2=rigidbodies[j];}}
if(object1&&object2){var newSliderJoint=new Ammo.btSliderConstraint(object1,object2,object1.getWorldTransform(),object2.getWorldTransform(),true);newSliderJoint.setFrames(object1.getWorldTransform(),object2.getWorldTransform());bulletWorld.addConstraint(newSliderJoint);}}
break;case"universaljoint":{for(j=0;j<rigidbodies.length;j++){if(rigidbodies[j].geometry.RigidBody._DEF&&rigidbodies[j].geometry.RigidBody._DEF==JointShapes[js].Joint._cf.body1.node._DEF){var object1=rigidbodies[j];}
if(rigidbodies[j].geometry.RigidBody._DEF&&rigidbodies[j].geometry.RigidBody._DEF==JointShapes[js].Joint._cf.body2.node._DEF){var object2=rigidbodies[j];}}
if(object1&&object2){var newUniversalJoint=new btUniversalConstraint(object1,object2,new Ammo.btVector3(JointShapes[js].Joint._vf.anchorPoint.x,JointShapes[js].Joint._vf.anchorPoint.y,JointShapes[js].Joint._vf.anchorPoint.z),new Ammo.btVector3(JointShapes[js].Joint._vf.axis1.x,JointShapes[js].Joint._vf.axis1.y,JointShapes[js].Joint._vf.axis1.z),new Ammo.btVector3(JointShapes[js].Joint._vf.axis2.x,JointShapes[js].Joint._vf.axis2.y,JointShapes[js].Joint._vf.axis2.z));bulletWorld.addConstraint(newUniversalJoint);}}
break;case"motorjoint":{for(j=0;j<rigidbodies.length;j++){if(rigidbodies[j].geometry.RigidBody._DEF&&rigidbodies[j].geometry.RigidBody._DEF==JointShapes[js].Joint._cf.body1.node._DEF){var object1=rigidbodies[j];rigidbodies[j].geometry.isMotor=true;rigidbodies[j].geometry.torque=new x3dom.fields.SFVec3f(JointShapes[js].Joint._vf.axis2Torque*JointShapes[js].Joint._vf.motor2Axis.x,JointShapes[js].Joint._vf.axis2Torque*JointShapes[js].Joint._vf.motor2Axis.y,JointShapes[js].Joint._vf.axis2Torque*JointShapes[js].Joint._vf.motor2Axis.z);}
if(rigidbodies[j].geometry.RigidBody._DEF&&rigidbodies[j].geometry.RigidBody._DEF==JointShapes[js].Joint._cf.body2.node._DEF){var object2=rigidbodies[j];rigidbodies[j].geometry.isMotor=true;rigidbodies[j].geometry.torque=new x3dom.fields.SFVec3f(JointShapes[js].Joint._vf.axis3Torque*JointShapes[js].Joint._vf.motor3Axis.x,JointShapes[js].Joint._vf.axis3Torque*JointShapes[js].Joint._vf.motor3Axis.y,JointShapes[js].Joint._vf.axis3Torque*JointShapes[js].Joint._vf.motor3Axis.z);}}
if(object1&&object2){var newGearJoint=new btGeneric6DofConstraint(object1,object2,object1.getWorldTransform(),object2.getWorldTransform(),true);if(JointShapes[js].Joint._vf.motor3Axis.x!=0){newGearJoint.getRotationalLimitMotor(0).m_enableMotor=true;newGearJoint.getRotationalLimitMotor(0).m_targetVelocity=JointShapes[js].Joint._vf.axis1Torque;newGearJoint.getRotationalLimitMotor(0).m_maxMotorForce=100.0;newGearJoint.getRotationalLimitMotor(0).m_loLimit=0.0;newGearJoint.getRotationalLimitMotor(0).m_hiLimit=10.0;}
else{newGearJoint.getRotationalLimitMotor(0).m_enableMotor=false;newGearJoint.getRotationalLimitMotor(0).m_targetVelocity=0;newGearJoint.getRotationalLimitMotor(0).m_maxMotorForce=0.0;newGearJoint.getRotationalLimitMotor(0).m_loLimit=0.0;newGearJoint.getRotationalLimitMotor(0).m_hiLimit=0.0;}
if(JointShapes[js].Joint._vf.motor3Axis.y!=0){newGearJoint.getRotationalLimitMotor(1).m_enableMotor=true;newGearJoint.getRotationalLimitMotor(1).m_targetVelocity=JointShapes[js].Joint._vf.axis2Torque;newGearJoint.getRotationalLimitMotor(1).m_maxMotorForce=100.0;newGearJoint.getRotationalLimitMotor(1).m_loLimit=0.0;newGearJoint.getRotationalLimitMotor(1).m_hiLimit=10.0;}
else{newGearJoint.getRotationalLimitMotor(1).m_enableMotor=false;newGearJoint.getRotationalLimitMotor(1).m_targetVelocity=0;newGearJoint.getRotationalLimitMotor(1).m_maxMotorForce=0.0;newGearJoint.getRotationalLimitMotor(1).m_loLimit=0.0;newGearJoint.getRotationalLimitMotor(1).m_hiLimit=0.0;}
if(JointShapes[js].Joint._vf.motor3Axis.z!=0){newGearJoint.getRotationalLimitMotor(2).m_enableMotor=true;newGearJoint.getRotationalLimitMotor(2).m_targetVelocity=JointShapes[js].Joint._vf.axis3Torque;newGearJoint.getRotationalLimitMotor(2).m_maxMotorForce=100.0;newGearJoint.getRotationalLimitMotor(2).m_loLimit=0.0;newGearJoint.getRotationalLimitMotor(2).m_hiLimit=10.0;}
else{newGearJoint.getRotationalLimitMotor(2).m_enableMotor=false;newGearJoint.getRotationalLimitMotor(2).m_targetVelocity=0;newGearJoint.getRotationalLimitMotor(2).m_maxMotorForce=0.0;newGearJoint.getRotationalLimitMotor(2).m_loLimit=0.0;newGearJoint.getRotationalLimitMotor(2).m_hiLimit=0.0;}
newGearJoint.enableFeedback(true);bulletWorld.addConstraint(newGearJoint,true);}}
break;case"singleaxishingejoint":{for(j=0;j<rigidbodies.length;j++){if(rigidbodies[j].geometry.RigidBody._DEF&&rigidbodies[j].geometry.RigidBody._DEF==JointShapes[js].Joint._cf.body1.node._DEF){var object1=rigidbodies[j];}
if(rigidbodies[j].geometry.RigidBody._DEF&&rigidbodies[j].geometry.RigidBody._DEF==JointShapes[js].Joint._cf.body2.node._DEF){var object2=rigidbodies[j];}}
if(object1&&object2){var newSingleHingeJoint=new btHingeConstraint(object1,object2,new Ammo.btVector3(JointShapes[js].Joint._vf.anchorPoint.x,JointShapes[js].Joint._vf.anchorPoint.y,JointShapes[js].Joint._vf.anchorPoint.z),new Ammo.btVector3(-JointShapes[js].Joint._vf.anchorPoint.x,-JointShapes[js].Joint._vf.anchorPoint.y,-JointShapes[js].Joint._vf.anchorPoint.z),new Ammo.btVector3(JointShapes[js].Joint._vf.axis.x,JointShapes[js].Joint._vf.axis.y,JointShapes[js].Joint._vf.axis.z),new Ammo.btVector3(JointShapes[js].Joint._vf.axis.x,JointShapes[js].Joint._vf.axis.y,JointShapes[js].Joint._vf.axis.z),false);newSingleHingeJoint.setLimit(JointShapes[js].Joint._vf.minAngle,JointShapes[js].Joint._vf.maxAngle,0.9,0.3,1.0);bulletWorld.addConstraint(newSingleHingeJoint);}}
break;case"doubleaxishingejoint":{for(j=0;j<rigidbodies.length;j++){if(rigidbodies[j].geometry.RigidBody._DEF&&rigidbodies[j].geometry.RigidBody._DEF==JointShapes[js].Joint._cf.body1.node._DEF){var object1=rigidbodies[j];}
if(rigidbodies[j].geometry.RigidBody._DEF&&rigidbodies[j].geometry.RigidBody._DEF==JointShapes[js].Joint._cf.body2.node._DEF){var object2=rigidbodies[j];}}
if(object1&&object2){var newDoubleHingeJoint=new btHingeConstraint(object1,object2,new Ammo.btVector3(JointShapes[js].Joint._vf.anchorPoint.x,JointShapes[js].Joint._vf.anchorPoint.y,JointShapes[js].Joint._vf.anchorPoint.z),new Ammo.btVector3(-JointShapes[js].Joint._vf.anchorPoint.x,-JointShapes[js].Joint._vf.anchorPoint.y,-JointShapes[js].Joint._vf.anchorPoint.z),new Ammo.btVector3(JointShapes[js].Joint._vf.axis1.x,JointShapes[js].Joint._vf.axis1.y,JointShapes[js].Joint._vf.axis1.z),new Ammo.btVector3(JointShapes[js].Joint._vf.axis2.x,JointShapes[js].Joint._vf.axis2.y,JointShapes[js].Joint._vf.axis2.z),false);newDoubleHingeJoint.setLimit(JointShapes[js].Joint._vf.minAngle1,JointShapes[js].Joint._vf.maxAngle1,0.9,0.3,1.0);bulletWorld.addConstraint(newDoubleHingeJoint,true);}}
break;}}}};MakeUpdateList=function(){for(var r=0;r<rigidbodies.length;r++){if(!drag&&rigidbodies[r].geometry.createRigid){rigidbodies[r].geometry.createRigid=false;}}
for(var r=0;r<JointShapes.length;r++){if(!drag&&JointShapes[r].createJoint){JointShapes[r].createJoint=false;}}
building_constraints=false;};CreateInteractiveObjects=function(){if(x3dWorld){x3dWorld.parentElement.addEventListener('mouseup',MouseControlStop,false);x3dWorld.parentElement.addEventListener('mousedown',MouseControlStart,false);x3dWorld.parentElement.addEventListener('mousemove',MouseControlMove,false);for(var t in interactiveTransforms){for(var cs in CollidableShapes){if(CollidableShapes[cs].Transform._x3domNode._DEF==interactiveTransforms[t]._x3domNode._DEF){if(!CollidableShapes[cs].RigidBody._vf.fixed){interactiveTransforms[t].addEventListener('mousedown',MouseControlStart,false);interactiveTransforms[t].addEventListener('mousemove',MouseControlMove,false);new x3dom.Moveable(x3dWorld.parentElement,interactiveTransforms[t],null,0);}}}}}};UpdateConstraints=function(){if(drag&&building_constraints==false){for(var r=0;r<rigidbodies.length;r++){if(rigidbodies[r].geometry.Transform){if(rigidbodies[r].geometry.Transform._x3domNode._DEF==mousePickObject._DEF){UpdateRigidbody=r;}}}
CreateRigidbodies();}
else{clearInterval(intervalVar);CreateRigidbodies();UpdateRigidbody=null;mousePickObject=null;}};MouseControlMove=function(e){if(e.hitPnt){mousePos=new x3dom.fields.SFVec3f.parse(e.hitPnt);}};MouseControlStart=function(e){if(!drag){drag=true;if(e.hitObject){for(var pn in e.hitObject._x3domNode._parentNodes){if(x3dom.isa(e.hitObject._x3domNode._parentNodes[pn],x3dom.nodeTypes.Transform)){mousePickObject=e.hitObject._x3domNode._parentNodes[pn];}}}
if(mousePickObject){for(var r in rigidbodies){if(rigidbodies[r]&&rigidbodies[r].geometry.Transform._x3domNode._DEF==mousePickObject._DEF){rigidbodies[r].activate(false);rigidbodies[r].geometry.createRigid=true;intervalVar=setInterval(UpdateConstraints,1);}}}
else{drag=false;mousePickObject=null;}}};MouseControlStop=function(e){if(drag){drag=false;}};updateRigidbodies=function(){bulletWorld.stepSimulation(1/60,100);var r,transform=new Ammo.btTransform(),origin=new Ammo.btVector3(),rotation=new Ammo.btQuaternion();for(r=0;r<rigidbodies.length;r++){if(!rigidbodies[r].geometry.createRigid){rigidbodies[r].getMotionState().getWorldTransform(transform);origin=transform.getOrigin();rigidbodies[r].geometry.CollidableShape._x3domNode._vf.translation.x=origin.x();rigidbodies[r].geometry.CollidableShape._x3domNode._vf.translation.y=origin.y();rigidbodies[r].geometry.CollidableShape._x3domNode._vf.translation.z=origin.z();rotation=transform.getRotation();rigidbodies[r].geometry.CollidableShape._x3domNode._vf.rotation.x=rotation.x();rigidbodies[r].geometry.CollidableShape._x3domNode._vf.rotation.y=rotation.y();rigidbodies[r].geometry.CollidableShape._x3domNode._vf.rotation.z=rotation.z();rigidbodies[r].geometry.CollidableShape._x3domNode._vf.rotation.w=rotation.w();}
else{if(mousePos){rigidbodies[r].getMotionState().getWorldTransform(transform);transform.setOrigin(new Ammo.btVector3(mousePos.x,mousePos.y,mousePos.z));origin=transform.getOrigin();rigidbodies[r].geometry.CollidableShape._x3domNode._vf.translation.x=origin.x();rigidbodies[r].geometry.CollidableShape._x3domNode._vf.translation.y=origin.y();rigidbodies[r].geometry.CollidableShape._x3domNode._vf.translation.z=origin.z();}}
for(var x in x3dWorld.children){if(x3dWorld.children[x].nodeName&&x3dWorld.children[x].nodeName.toLowerCase()=="group"){for(var c in x3dWorld.children[x].childNodes){if(x3dWorld.children[x].childNodes.hasOwnProperty(c)&&x3dWorld.children[x].childNodes[c]!=null){UpdateTransforms(x3dWorld.children[x].childNodes[c],rigidbodies[r]);}}}
else{UpdateTransforms(x3dWorld.children[x],rigidbodies[r]);}}
if(rigidbodies[r].geometry.isMotor==true){rigidbodies[r].applyTorque(new Ammo.btVector3(rigidbodies[r].geometry.torque.x,rigidbodies[r].geometry.torque.y,rigidbodies[r].geometry.torque.z));}
if(rigidbodies[r].geometry.RigidBody._vf.torques.length>0){for(var num in rigidbodies[r].geometry.RigidBody._vf.torques){rigidbodies[r].applyTorque(new Ammo.btVector3(rigidbodies[r].geometry.RigidBody._vf.torques[num].x,rigidbodies[r].geometry.RigidBody._vf.torques[num].y,rigidbodies[r].geometry.RigidBody._vf.torques[num].z));}}}};function UpdateTransforms(a,b){if(x3dom.isa(a._x3domNode,x3dom.nodeTypes.Transform)){if(b.geometry.isInline){if(a==b.geometry.inlineExternalTransform){if(b.geometry.inlineInternalTransform){b.geometry.inlineInternalTransform.translation=b.geometry.CollidableShape._x3domNode._vf.translation;b.geometry.inlineInternalTransform.rotation=b.geometry.CollidableShape._x3domNode._vf.rotation;}}}
else{if(b.geometry.Transform){if(b.geometry.Transform._x3domNode._DEF==a._x3domNode._DEF){a.translation=b.geometry.CollidableShape._x3domNode._vf.translation;a.rotation=b.geometry.CollidableShape._x3domNode._vf.rotation;}}}}}
function InlineObjectList(a,b){for(var x in a.children){CreateX3DCollidableShape(a.children[x],b);}
b.translation=new x3dom.fields.SFVec3f(0,0,0);}
main=function main(){updateRigidbodies();window.requestAnimFrame(main);if(document.readyState==="complete"&&!inlineLoad&&inline_x3dList.length){for(var x in inline_x3dList){if(inline_x3dList[x]._x3domNode._cf.children.nodes[0]._xmlNode._x3domNode._childNodes[0]){inlineLoad=true;InlineObjectList(inline_x3dList[x]._x3domNode._cf.children.nodes[0]._xmlNode._x3domNode._childNodes[0]._xmlNode,inline_x3dList[x]);CreateRigidbodies();}}}};window.onload=function(){ParseX3DElement();initScene();requestAnimFrame(main);if(!inline_x3dList.length){CreateRigidbodies();}
CreateInteractiveObjects();}})();window['requestAnimFrame']=(function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(callback,element){window.setTimeout(callback,1000/60);};})();x3dom.registerNodeType("RigidBodyCollection","RigidBodyPhysics",defineClass(x3dom.nodeTypes.X3DChildNode,function(ctx){x3dom.nodeTypes.RigidBodyCollection.superClass.call(this,ctx);this.addField_SFBool(ctx,'autoDisable',false);this.addField_SFFloat(ctx,'constantForceMix',0.0001);this.addField_SFFloat(ctx,'contactSurfaceThickness',0);this.addField_SFFloat(ctx,'disableAngularSpeed',0);this.addField_SFFloat(ctx,'disableLinearSpeed',0);this.addField_SFFloat(ctx,'disableTime',0);this.addField_SFBool(ctx,'enabled',true);this.addField_SFFloat(ctx,'errorCorrection',0.8);this.addField_SFVec3f(ctx,'gravity',0,-9.8,0);this.addField_SFInt32(ctx,'iterations',1);this.addField_SFFloat(ctx,'maxCorrectionSpeed',-1);this.addField_SFBool(ctx,'preferAccuracy',false);this.addField_MFNode('bodies',x3dom.nodeTypes.RigidBody);this.addField_MFNode('joints',x3dom.nodeTypes.X3DRigidJointNode);},{nodeChanged:function(){if(!this._cf.joints.nodes){for(var x in this._xmlNode.children){if(x3dom.isa(this._xmlNode.children[x]._x3domNode,x3dom.nodeTypes.X3DRigidJointNode)){this._cf.joints=this._xmlNode.children[x];}}}
if(!this._cf.bodies.nodes){for(var x in this._xmlNode.children){if(x3dom.isa(this._xmlNode.children[x]._x3domNode,x3dom.nodeTypes.RigidBody)){this._cf.bodies=this._xmlNode.children[x];}}}}}));x3dom.registerNodeType("RigidBody","RigidBodyPhysics",defineClass(x3dom.nodeTypes.X3DNode,function(ctx){x3dom.nodeTypes.RigidBody.superClass.call(this,ctx);this.addField_SFFloat(ctx,'angularDampingFactor',0.001);this.addField_SFVec3f(ctx,'angularVelocity',0,0,0);this.addField_SFBool(ctx,'autoDamp',false);this.addField_SFBool(ctx,'autoDisable',false);this.addField_SFVec3f(ctx,'centerOfMass',0,0,0);this.addField_SFFloat(ctx,'disableAngularSpeed',0);this.addField_SFFloat(ctx,'disableLinearSpeed',0);this.addField_SFFloat(ctx,'disableTime',0);this.addField_SFBool(ctx,'enabled',true);this.addField_SFVec3f(ctx,'finiteRotationAxis',0,0,0);this.addField_SFBool(ctx,'fixed',false);this.addField_MFVec3f(ctx,'forces',[]);this.addField_MFFloat(ctx,'inertia',[1,0,0,0,1,0,0,0,1]);this.addField_SFFloat(ctx,'linearDampingFactor',0.001);this.addField_SFVec3f(ctx,'linearVelocity',0,0,0);this.addField_SFFloat(ctx,'mass',1);this.addField_SFRotation(ctx,'orientation',0,0,1,0);this.addField_SFVec3f(ctx,'position',0,0,0);this.addField_MFVec3f(ctx,'torques',[]);this.addField_SFBool(ctx,'useFiniteRotation',false);this.addField_SFBool(ctx,'useGlobalGravity',true);this.addField_MFNode('massDensityModel',x3dom.nodeTypes.Shape);this.addField_MFNode('geometry',x3dom.nodeTypes.X3DNBodyCollidableNode);},{nodeChanged:function(){if(!this._cf.geometry.nodes){for(var x in this._xmlNode.children){if(x3dom.isa(this._xmlNode.children[x]._x3domNode,x3dom.nodeTypes.X3DNBodyCollidableNode)){this._cf.geometry=this._xmlNode.children[x];}}}
if(!this._cf.massDensityModel.nodes){for(var x in this._xmlNode.children){if(x3dom.isa(this._xmlNode.children[x]._x3domNode,x3dom.nodeTypes.Shape)){this._cf.massDensityModel=this._xmlNode.children[x];}}}}}));x3dom.registerNodeType("X3DNBodyCollidableNode","RigidBodyPhysics",defineClass(x3dom.nodeTypes.X3DBoundedObject,function(ctx){x3dom.nodeTypes.X3DNBodyCollidableNode.superClass.call(this,ctx);this.addField_SFBool(ctx,'enabled',true);this.addField_SFRotation(ctx,'rotation',0,0,1,0);this.addField_SFVec3f(ctx,'translation',0,0,0);},{nodeChanged:function()
{}}));x3dom.registerNodeType("CollidableShape","RigidBodyPhysics",defineClass(x3dom.nodeTypes.X3DNBodyCollidableNode,function(ctx){x3dom.nodeTypes.CollidableShape.superClass.call(this,ctx);this.addField_SFNode('transform',x3dom.nodeTypes.Transform);this.addField_SFNode('shape',x3dom.nodeTypes.Shape);},{nodeChanged:function(){if(!this._cf.transform.node){for(var x in this._xmlNode.children){if(x3dom.isa(this._xmlNode.children[x]._x3domNode,x3dom.nodeTypes.Transform)){this._cf.transform=this._xmlNode.children[x];}}}
if(!this._cf.shape.node){for(var x in this._xmlNode.children){if(x3dom.isa(this._xmlNode.children[x]._x3domNode,x3dom.nodeTypes.Shape)){this._cf.shape=this._xmlNode.children[x];}}}}}));x3dom.registerNodeType("CollisionCollection","RigidBodyPhysics",defineClass(x3dom.nodeTypes.X3DChildNode,function(ctx){x3dom.nodeTypes.CollisionCollection.superClass.call(this,ctx);this.addField_SFFloat(ctx,'bounce',0);this.addField_SFBool(ctx,'enabled',true);this.addField_SFVec2f(ctx,'frictionCoefficients',0,0);this.addField_SFFloat(ctx,'minBounceSpeed',0.1);this.addField_SFVec2f(ctx,'slipFactors',0,0);this.addField_SFFloat(ctx,'softnessConstantForceMix',0.0001);this.addField_SFFloat(ctx,'softnessErrorCorrection',0.8);this.addField_SFVec2f(ctx,'surfaceSpeed',0,0);this.addField_MFNode('collidables',x3dom.nodeTypes.X3DNBodyCollidableNode);},{nodeChanged:function(){if(!this._cf.collidables.nodes){for(var x in this._xmlNode.children){if(x3dom.isa(this._xmlNode.children[x]._x3domNode,x3dom.nodeTypes.X3DNBodyCollidableNode)){this._cf.collidables=this._xmlNode.children[x];}}}}}));x3dom.registerNodeType("CollisionSensor","RigidBodyPhysics",defineClass(x3dom.nodeTypes.X3DSensorNode,function(ctx){x3dom.nodeTypes.CollisionSensor.superClass.call(this,ctx);this.addField_SFNode('collider',x3dom.nodeTypes.CollisionCollection);},{nodeChanged:function(){if(!this._cf.collider.node){for(var x in this._xmlNode.children){if(x3dom.isa(this._xmlNode.children[x]._x3domNode,x3dom.nodeTypes.CollisionCollection)){this._cf.collider=this._xmlNode.children[x];}}}}}));x3dom.registerNodeType("X3DRigidJointNode","RigidBodyPhysics",defineClass(x3dom.nodeTypes.X3DNode,function(ctx){x3dom.nodeTypes.X3DRigidJointNode.superClass.call(this,ctx);this.addField_SFString(ctx,'forceOutput',"");this.addField_SFNode('body1',x3dom.nodeTypes.RigidBody);this.addField_SFNode('body2',x3dom.nodeTypes.RigidBody);},{nodeChanged:function(){if(!this._cf.body1.node){for(var x in this._xmlNode.children){if(x3dom.isa(this._xmlNode.children[x]._x3domNode,x3dom.nodeTypes.RigidBody)){this._cf.body1=this._xmlNode.children[x];}}}
if(!this._cf.body2.node){for(var x in this._xmlNode.children){if(x3dom.isa(this._xmlNode.children[x]._x3domNode,x3dom.nodeTypes.RigidBody)){this._cf.body2=this._xmlNode.children[x];}}}}}));x3dom.registerNodeType("BallJoint","RigidBodyPhysics",defineClass(x3dom.nodeTypes.X3DRigidJointNode,function(ctx){x3dom.nodeTypes.BallJoint.superClass.call(this,ctx);this.addField_SFVec3f(ctx,'anchorPoint',0,0,0);},{nodeChanged:function(){}}));x3dom.registerNodeType("MotorJoint","RigidBodyPhysics",defineClass(x3dom.nodeTypes.X3DRigidJointNode,function(ctx){x3dom.nodeTypes.MotorJoint.superClass.call(this,ctx);this.addField_SFFloat(ctx,'axis1Angle',0);this.addField_SFFloat(ctx,'axis1Torque',0);this.addField_SFFloat(ctx,'axis2Angle',0);this.addField_SFFloat(ctx,'axis2Torque',0);this.addField_SFFloat(ctx,'axis3Angle',0);this.addField_SFFloat(ctx,'axis3Torque',0);this.addField_SFInt32(ctx,'enabledAxes',1);this.addField_SFVec3f(ctx,'motor1Axis',0,0,0);this.addField_SFVec3f(ctx,'motor2Axis',0,0,0);this.addField_SFVec3f(ctx,'motor3Axis',0,0,0);this.addField_SFFloat(ctx,'stop1Bounce',0);this.addField_SFFloat(ctx,'stop1ErrorCorrection',0.8);this.addField_SFFloat(ctx,'stop2Bounce',0);this.addField_SFFloat(ctx,'stop2ErrorCorrection',0.8);this.addField_SFFloat(ctx,'stop3Bounce',0);this.addField_SFFloat(ctx,'stop3ErrorCorrection',0.8);},{nodeChanged:function(){}}));x3dom.registerNodeType("SliderJoint","RigidBodyPhysics",defineClass(x3dom.nodeTypes.X3DRigidJointNode,function(ctx){x3dom.nodeTypes.SliderJoint.superClass.call(this,ctx);this.addField_SFVec3f(ctx,'axis',0,1,0);this.addField_SFFloat(ctx,'maxSeparation',1);this.addField_SFFloat(ctx,'minSeparation',0);this.addField_SFFloat(ctx,'stopBounce',0);this.addField_SFFloat(ctx,'stopErrorCorrection',1);},{nodeChanged:function(){}}));x3dom.registerNodeType("UniversalJoint","RigidBodyPhysics",defineClass(x3dom.nodeTypes.X3DRigidJointNode,function(ctx){x3dom.nodeTypes.UniversalJoint.superClass.call(this,ctx);this.addField_SFVec3f(ctx,'anchorPoint',0,0,0);this.addField_SFVec3f(ctx,'axis1',0,0,0);this.addField_SFVec3f(ctx,'axis2',0,0,0);this.addField_SFFloat(ctx,'stop1Bounce',0);this.addField_SFFloat(ctx,'stop1ErrorCorrection',0.8);this.addField_SFFloat(ctx,'stop2Bounce',0);this.addField_SFFloat(ctx,'stop2ErrorCorrection',0.8);},{nodeChanged:function(){}}));x3dom.registerNodeType("SingleAxisHingeJoint","RigidBodyPhysics",defineClass(x3dom.nodeTypes.X3DRigidJointNode,function(ctx){x3dom.nodeTypes.SingleAxisHingeJoint.superClass.call(this,ctx);this.addField_SFVec3f(ctx,'anchorPoint',0,0,0);this.addField_SFVec3f(ctx,'axis',0,0,0);this.addField_SFFloat(ctx,'maxAngle',90);this.addField_SFFloat(ctx,'minAngle',-90);this.addField_SFFloat(ctx,'stopBounce',0);this.addField_SFFloat(ctx,'stopErrorCorrection',0.8);},{nodeChanged:function(){}}));x3dom.registerNodeType("DoubleAxisHingeJoint","RigidBodyPhysics",defineClass(x3dom.nodeTypes.X3DRigidJointNode,function(ctx){x3dom.nodeTypes.DoubleAxisHingeJoint.superClass.call(this,ctx);this.addField_SFVec3f(ctx,'anchorPoint',0,0,0);this.addField_SFVec3f(ctx,'axis1',0,0,0);this.addField_SFVec3f(ctx,'axis2',0,0,0);this.addField_SFFloat(ctx,'desiredAngularVelocity1',0);this.addField_SFFloat(ctx,'desiredAngularVelocity2',0);this.addField_SFFloat(ctx,'maxAngle1',90);this.addField_SFFloat(ctx,'minAngle1',-90);this.addField_SFFloat(ctx,'maxTorque1',0);this.addField_SFFloat(ctx,'maxTorque2',0);this.addField_SFFloat(ctx,'stopBounce1',0);this.addField_SFFloat(ctx,'stopConstantForceMix1',0.001);this.addField_SFFloat(ctx,'stopErrorCorrection1',0.8);this.addField_SFFloat(ctx,'suspensionErrorCorrection',0.8);this.addField_SFFloat(ctx,'suspensionForce',0);},{nodeChanged:function(){}}));x3dom.versionInfo={version:'1.7.0',revision:'f33e92d248a2f25d52fa63ede8ffee570c8a6304',date:'Wed Jun 17 09:49:25 2015 +0200'};

x3dom.versionInfo = {
    version:  '1.7.0',
    revision: 'f33e92d248a2f25d52fa63ede8ffee570c8a6304',
    date:     'Wed Jun 17 09:49:25 2015 +0200'
};

