/**
 * Skipped minification because the original files appears to be already minified.
 * Original file: /npm/liquidfun-emscripten@1.1.4/liquidfun.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
(function(){var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module)if(Module.hasOwnProperty(key))moduleOverrides[key]=Module[key];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){if(!Module["print"])Module["print"]=function print(x){process["stdout"].write(x+"\n")};if(!Module["printErr"])Module["printErr"]=function printErr(x){process["stderr"].write(x+"\n")};var nodeFS=require("fs");var nodePath=require("path");Module["read"]=function read(filename,binary){filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);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 readBinary(filename){return Module["read"](filename,true)};Module["load"]=function load(f){globalEval(read(f))};Module["arguments"]=process["argv"].slice(2);module["exports"]=Module}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined")Module["read"]=read;else Module["read"]=function read(){throw"no read() available (jsc?)";
};Module["readBinary"]=function readBinary(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 read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(typeof arguments!="undefined")Module["arguments"]=arguments;if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=
function print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function printErr(x){console.log(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?function(x){dump(x)}:function(x){}}if(ENVIRONMENT_IS_WEB)window["liquidfun"]=Module;else Module["load"]=importScripts}else throw"Unknown runtime environment. Where are we?";function globalEval(x){eval.call(null,x)}if(!Module["load"]=="undefined"&&Module["read"])Module["load"]=function load(f){globalEval(Module["read"](f))};
if(!Module["print"])Module["print"]=function(){};if(!Module["printErr"])Module["printErr"]=Module["print"];if(!Module["arguments"])Module["arguments"]=[];Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides)if(moduleOverrides.hasOwnProperty(key))Module[key]=moduleOverrides[key];
var Runtime={setTempRet0:function(value){tempRet0=value},getTempRet0:function(){return tempRet0},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))return"((("+target+")+"+(quantum-1)+")&"+-quantum+")";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;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){switch(type){case "i1":case "i8":return 1;case "i16":return 2;case "i32":return 4;case "i64":return 8;case "float":return 4;case "double":return 8;default:if(type[type.length-1]==="*")return Runtime.QUANTUM_SIZE;
else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else return 0}},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){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);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);alignSize=Runtime.getAlignSize(field,size)}else if(Runtime.isStructType(field))if(field[1]==="0"){size=0;if(Types.types[field])alignSize=Runtime.getAlignSize(null,Types.types[field].alignSize);else alignSize=type.alignSize||QUANTUM_SIZE}else{size=Types.types[field].flatSize;alignSize=Runtime.getAlignSize(null,Types.types[field].alignSize)}else if(field[0]=="b"){size=field.substr(1)|
0;alignSize=1}else if(field[0]==="<")size=alignSize=Types.types[field].flatSize;else if(field[0]==="i"){size=alignSize=parseInt(field.substr(1))/8;assert(size%1===0,"cannot handle non-byte-size field "+field)}else assert(false,"invalid type for calculateStructAlignment");if(type.packed)alignSize=1;type.alignSize=Math.max(type.alignSize,alignSize);var curr=Runtime.alignMemory(type.flatSize,alignSize);type.flatSize=curr+size;if(prev>=0)diffs.push(curr-prev);prev=curr;return curr});if(type.name_&&type.name_[0]===
"[")type.flatSize=parseInt(type.name_.substr(1))*type.flatSize/2;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{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:[],addFunction:function(func){for(var i=0;i<Runtime.functionPointers.length;i++)if(!Runtime.functionPointers[i]){Runtime.functionPointers[i]=
func;return 2*(1+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},getAsmConst:function(code,numArgs){if(!Runtime.asmConstCache)Runtime.asmConstCache={};var func=Runtime.asmConstCache[code];if(func)return func;var args=[];for(var i=0;i<numArgs;i++)args.push(String.fromCharCode(36)+i);var source=Pointer_stringify(code);if(source[0]==='"')if(source.indexOf('"',1)===source.length-
1)source=source.substr(1,source.length-2);else abort("invalid EM_ASM input |"+source+"|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)");try{var evalled=eval("(function("+args.join(",")+"){ "+source+" })")}catch(e){Module.printErr("error in executing inline EM_ASM code: "+e+" on: \n\n"+source+"\n\nwith args |"+args+"| (make sure to use the right one out of EM_ASM, EM_ASM_ARGS, etc.)");throw e;}return Runtime.asmConstCache[code]=evalled},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 dynCall_wrapper(){return Runtime.dynCall(sig,func,arguments)};return Runtime.funcWrappers[func]},UTF8Processor:function(){var buffer=[];var needed=0;this.processCChar=function(code){code=code&255;if(buffer.length==0){if((code&128)==0)return String.fromCharCode(code);buffer.push(code);
if((code&224)==192)needed=1;else if((code&240)==224)needed=2;else 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&31)<<6|c2&63);else if(buffer.length==3)ret=String.fromCharCode((c1&15)<<12|(c2&63)<<6|c3&63);else{var codePoint=(c1&7)<<18|(c2&63)<<12|(c3&63)<<6|c4&63;ret=String.fromCharCode(Math.floor((codePoint-65536)/1024)+55296,(codePoint-65536)%
1024+56320)}buffer.length=0;return ret};this.processJSString=function processJSString(string){string=unescape(encodeURIComponent(string));var ret=[];for(var i=0;i<string.length;i++)ret.push(string.charCodeAt(i));return ret}},getCompilerSetting:function(name){throw"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work";},stackAlloc:function(size){var ret=STACKTOP;STACKTOP=STACKTOP+size|0;STACKTOP=STACKTOP+7&-8;return ret},staticAlloc:function(size){var ret=
STATICTOP;STATICTOP=STATICTOP+size|0;STATICTOP=STATICTOP+7&-8;return ret},dynamicAlloc:function(size){var ret=DYNAMICTOP;DYNAMICTOP=DYNAMICTOP+size|0;DYNAMICTOP=DYNAMICTOP+7&-8;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};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;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;
function getCFunc(ident){var func=Module["_"+ident];if(!func)try{func=eval("_"+ident)}catch(e){}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;
(function(){var stack=0;var JSfuncs={"stackSave":function(){stack=Runtime.stackSave()},"stackRestore":function(){Runtime.stackRestore(stack)},"arrayToC":function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret},"stringToC":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc(str.length+1);writeStringToMemory(str,ret)}return ret}};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,
returnType,argTypes,args){var func=getCFunc(ident);var cArgs=[];if(args)for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=Runtime.stackSave();cArgs[i]=converter(args[i])}else cArgs[i]=args[i]}var ret=func.apply(null,cArgs);if(returnType==="string")ret=Pointer_stringify(ret);if(stack!==0)JSfuncs["stackRestore"]();return ret};var sourceRegex=/^function\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;function parseJSFunc(jsfunc){var parsed=
jsfunc.toString().match(sourceRegex).slice(1);return{arguments:parsed[0],body:parsed[1],returnValue:parsed[2]}}var JSsource={};for(var fun in JSfuncs)if(JSfuncs.hasOwnProperty(fun))JSsource[fun]=parseJSFunc(JSfuncs[fun]);cwrap=function cwrap(ident,returnType,argTypes){var cfunc=getCFunc(ident);var numericArgs=argTypes.every(function(type){return type==="number"});var numericRet=returnType!=="string";if(numericRet&&numericArgs)return cfunc;var argNames=argTypes.map(function(x,i){return"$"+i});var funcstr=
"(function("+argNames.join(",")+") {";var nargs=argTypes.length;if(!numericArgs){funcstr+=JSsource["stackSave"].body+";";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if(type==="number")continue;var convertCode=JSsource[type+"ToC"];funcstr+="var "+convertCode.arguments+" = "+arg+";";funcstr+=convertCode.body+";";funcstr+=arg+"="+convertCode.returnValue+";"}}var cfuncname=parseJSFunc(function(){return cfunc}).returnValue;funcstr+="var ret = "+cfuncname+"("+argNames.join(",")+");";if(!numericRet){var strgfy=
parseJSFunc(function(){return Pointer_stringify}).returnValue;funcstr+="ret = "+strgfy+"(ret);"}if(!numericArgs)funcstr+=JSsource["stackRestore"].body+";";funcstr+="return ret})";return eval(funcstr)}})();Module["cwrap"]=cwrap;Module["ccall"]=ccall;
function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case "i1":HEAP8[ptr>>0]=value;break;case "i8":HEAP8[ptr>>0]=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;
function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case "i1":return HEAP8[ptr>>0];case "i8":return HEAP8[ptr>>0];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;var ALLOC_STACK=1;var ALLOC_STATIC=2;
var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;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;
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";setValue(ret+i,curr,type);if(previousType!==type){typeSize=Runtime.getNativeTypeSize(type);previousType=type}i+=
typeSize}return ret}Module["allocate"]=allocate;
function Pointer_stringify(ptr,length){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;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;function UTF16ToString(ptr){var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)return str;++i;str+=String.fromCharCode(codeUnit)}}Module["UTF16ToString"]=UTF16ToString;function stringToUTF16(str,outPtr){for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);HEAP16[outPtr+i*2>>1]=codeUnit}HEAP16[outPtr+str.length*2>>1]=0}Module["stringToUTF16"]=stringToUTF16;
function UTF32ToString(ptr){var i=0;var str="";while(1){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)return str;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else str+=String.fromCharCode(utf32)}}Module["UTF32ToString"]=UTF32ToString;
function stringToUTF32(str,outPtr){var iChar=0;for(var iCodeUnit=0;iCodeUnit<str.length;++iCodeUnit){var codeUnit=str.charCodeAt(iCodeUnit);if(codeUnit>=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++iCodeUnit);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr+iChar*4>>2]=codeUnit;++iChar}HEAP32[outPtr+iChar*4>>2]=0}Module["stringToUTF32"]=stringToUTF32;
function demangle(func){var i=3;var basicTypes={"v":"void","b":"bool","c":"char","s":"short","i":"int","l":"long","f":"float","d":"double","w":"wchar_t","a":"signed char","h":"unsigned char","t":"unsigned short","j":"unsigned int","m":"unsigned long","x":"long long","y":"unsigned long long","z":"..."};var subs=[];var first=true;function dump(x){if(x)Module.print(x);Module.print(func);var pre="";for(var a=0;a<i;a++)pre+=" ";Module.print(pre+"^")}function parseNested(){i++;if(func[i]==="K")i++;var parts=
[];while(func[i]!=="E"){if(func[i]==="S"){i++;var next=func.indexOf("_",i);var num=func.substring(i,next)||0;parts.push(subs[num]||"?");i=next+1;continue}if(func[i]==="C"){parts.push(parts[parts.length-1]);i+=2;continue}var size=parseInt(func.substr(i));var pre=size.toString().length;if(!size||!pre){i--;break}var curr=func.substr(i+pre,size);parts.push(curr);subs.push(curr);i+=pre+size}i++;return parts}function parse(rawList,limit,allowVoid){limit=limit||Infinity;var ret="",list=[];function flushList(){return"("+
list.join(", ")+")"}var name;if(func[i]==="N"){name=parseNested().join("::");limit--;if(limit===0)return rawList?[name]:name}else{if(func[i]==="K"||first&&func[i]==="L")i++;var size=parseInt(func.substr(i));if(size){var pre=size.toString().length;name=func.substr(i+pre,size);i+=pre+size}}first=false;if(func[i]==="I"){i++;var iList=parse(true);var iRet=parse(true,1,true);ret+=iRet[0]+" "+name+"<"+iList.join(", ")+">"}else ret=name;paramLoop:while(i<func.length&&limit-- >0){var c=func[i++];if(c in basicTypes)list.push(basicTypes[c]);
else switch(c){case "P":list.push(parse(true,1,true)[0]+"*");break;case "R":list.push(parse(true,1,true)[0]+"&");break;case "L":i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break;case "A":var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break;case "E":break paramLoop;default:ret+="?"+c;break paramLoop}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret)list.push(ret+
"?");return list}else return ret+flushList()}try{if(func=="Object._main"||func=="_main")return"main()";if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case "n":return"operator new()";case "d":return"operator delete()"}return parse()}catch(e){return func}}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"})}
function stackTrace(){var stack=(new Error).stack;return stack?demangleAll(stack):"(no stack trace available)"}var PAGE_SIZE=4096;function alignMemoryPage(x){return x+4095&-4096}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;
function enlargeMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.")}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||33554432;var FAST_MEMORY=Module["FAST_MEMORY"]||2097152;var totalMemory=4096;
while(totalMemory<TOTAL_MEMORY||totalMemory<2*TOTAL_STACK)if(totalMemory<16*1024*1024)totalMemory*=2;else totalMemory+=16*1024*1024;if(totalMemory!==TOTAL_MEMORY){Module.printErr("increasing TOTAL_MEMORY to "+totalMemory+" to be more reasonable");TOTAL_MEMORY=totalMemory}assert(typeof Int32Array!=="undefined"&&typeof Float64Array!=="undefined"&&!!(new Int32Array(1))["subarray"]&&!!(new Int32Array(1))["set"],"JS engine does not provide full typed array support");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);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__=[];var __ATINIT__=[];var __ATMAIN__=[];
var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){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(){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;function intArrayFromString(stringy,dontAddNull,length){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>255)chr&=255;ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;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 writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;i++)HEAP8[buffer+i>>0]=str.charCodeAt(i);if(!dontAddNull)HEAP8[buffer+str.length>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0)return value;return bits<=32?2*Math.abs(1<<bits-1)+value:Math.pow(2,bits)+value}
function reSign(value,bits,ignore){if(value<=0)return value;var half=bits<=32?Math.abs(1<<bits-1):Math.pow(2,bits-1);if(value>=half&&(bits<=32||value>half))value=-2*half+value;return value}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;
var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;
function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"])Module["monitorRunDependencies"](runDependencies)}Module["addRunDependency"]=addRunDependency;
function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"])Module["monitorRunDependencies"](runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;
var __ZTVN10__cxxabiv117__class_type_infoE=9E3;var __ZTVN10__cxxabiv120__si_class_type_infoE=9040;STATIC_BASE=8;STATICTOP=STATIC_BASE+Runtime.alignMemory(9715);__ATINIT__.push({func:function(){__GLOBAL__I_a()}});
allocate([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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,49,53,82,97,121,67,97,115,116,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,49,55,98,50,82,97,121,67,97,115,116,67,97,108,108,98,97,99,107,0,0,0,0,0,48,35,0,0,120,0,0,0,88,35,0,0,96,0,0,0,144,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,3,0,0,0,4,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,49,55,81,117,101,114,121,65,65,66,66,67,97,108,108,
98,97,99,107,0,0,0,0,0,49,53,98,50,81,117,101,114,121,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,48,35,0,0,224,0,0,0,88,35,0,0,200,0,0,0,248,0,0,0,0,0,0,0,0,0,0,0,128,1,0,0,5,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,50,50,98,50,87,111,114,108,100,67,111,110,116,97,99,116,76,105,115,116,101,110,101,114,0,0,0,0,0,0,0,0,49,55,98,50,67,111,110,116,97,99,116,76,105,115,116,101,110,101,114,0,0,0,0,0,48,35,0,0,96,1,0,0,88,35,0,0,64,1,0,0,120,1,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,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,0,0,0,0,0,0,56,2,0,0,7,0,0,0,8,0,0,0,4,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,49,49,98,50,69,100,103,101,83,104,97,112,101,0,0,0,55,98,50,83,104,97,112,101,0,0,0,0,0,0,0,0,48,35,0,0,32,2,0,0,88,35,0,0,16,2,0,0,48,2,0,0,0,0,0,0,0,0,0,0,144,2,0,0,9,0,0,0,10,0,0,0,5,0,0,0,2,0,0,0,3,0,0,0,2,0,0,0,2,0,0,0,4,0,0,0,2,0,0,0,0,0,0,0,49,52,98,50,
80,111,108,121,103,111,110,83,104,97,112,101,0,0,0,0,0,0,0,0,88,35,0,0,120,2,0,0,48,2,0,0,0,0,0,0,0,0,0,0,224,2,0,0,11,0,0,0,12,0,0,0,6,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,3,0,0,0,0,0,0,0,49,51,98,50,67,105,114,99,108,101,83,104,97,112,101,0,88,35,0,0,208,2,0,0,48,2,0,0,0,0,0,0,0,0,0,0,48,3,0,0,13,0,0,0,14,0,0,0,7,0,0,0,4,0,0,0,5,0,0,0,4,0,0,0,4,0,0,0,6,0,0,0,4,0,0,0,0,0,0,0,49,50,98,50,67,104,97,105,110,83,104,97,112,101,0,0,88,35,0,0,32,3,0,0,48,2,0,0,0,0,0,0,0,0,0,0,120,3,0,0,15,0,0,
0,16,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,49,53,98,50,67,111,110,116,97,99,116,70,105,108,116,101,114,0,0,0,0,0,0,0,48,35,0,0,96,3,0,0,0,0,0,0,224,3,0,0,3,0,0,0,4,0,0,0,5,0,0,0,1,0,0,0,17,0,0,0,5,0,0,0,18,0,0,0,19,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,0,0,0,0,49,50,98,50,77,111,117,115,101,74,111,105,110,116,0,0,55,98,50,74,111,105,110,116,0,0,0,0,0,0,0,0,48,35,0,0,200,3,0,0,88,35,0,0,184,3,0,0,216,3,0,0,0,0,0,0,77,111,117,115,101,32,106,111,105,110,116,32,100,117,109,112,105,110,103,32,105,115,32,110,111,
116,32,115,117,112,112,111,114,116,101,100,46,10,0,0,0,0,0,0,200,5,0,0,8,0,0,0,9,0,0,0,6,0,0,0,2,0,0,0,20,0,0,0,10,0,0,0,21,0,0,0,22,0,0,0,11,0,0,0,12,0,0,0,9,0,0,0,0,0,0,0,32,32,98,50,77,111,116,111,114,74,111,105,110,116,68,101,102,32,106,100,59,10,0,0,32,32,106,100,46,98,111,100,121,65,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,66,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,99,111,108,108,105,100,101,67,
111,110,110,101,99,116,101,100,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,0,0,0,32,32,106,100,46,108,105,110,101,97,114,79,102,102,115,101,116,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,97,110,103,117,108,97,114,79,102,102,115,101,116,32,61,32,37,46,49,53,108,101,102,59,10,0,0,32,32,106,100,46,109,97,120,70,111,114,99,101,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,0,0,32,32,106,100,46,109,97,120,84,111,114,113,117,101,
32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,0,32,32,106,100,46,99,111,114,114,101,99,116,105,111,110,70,97,99,116,111,114,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,0,0,32,32,106,111,105,110,116,115,91,37,100,93,32,61,32,109,95,119,111,114,108,100,45,62,67,114,101,97,116,101,74,111,105,110,116,40,38,106,100,41,59,10,0,0,0,0,0,0,49,50,98,50,77,111,116,111,114,74,111,105,110,116,0,0,88,35,0,0,184,5,0,0,216,3,0,0,0,0,0,0,0,0,0,0,152,7,0,0,13,0,0,0,14,0,0,0,7,0,0,0,3,0,0,0,23,0,0,0,10,0,0,
0,24,0,0,0,25,0,0,0,15,0,0,0,16,0,0,0,10,0,0,0,0,0,0,0,32,32,98,50,68,105,115,116,97,110,99,101,74,111,105,110,116,68,101,102,32,106,100,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,65,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,66,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,99,111,108,108,105,100,101,67,111,110,110,101,99,116,101,100,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,0,0,0,32,32,106,100,
46,108,111,99,97,108,65,110,99,104,111,114,65,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,66,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,101,110,103,116,104,32,61,32,37,46,49,53,108,101,102,59,10,0,32,32,106,100,46,102,114,101,113,117,101,110,99,121,72,122,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,32,32,106,100,46,100,
97,109,112,105,110,103,82,97,116,105,111,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,32,32,106,111,105,110,116,115,91,37,100,93,32,61,32,109,95,119,111,114,108,100,45,62,67,114,101,97,116,101,74,111,105,110,116,40,38,106,100,41,59,10,0,0,0,0,0,0,49,53,98,50,68,105,115,116,97,110,99,101,74,111,105,110,116,0,0,0,0,0,0,0,88,35,0,0,128,7,0,0,216,3,0,0,0,0,0,0,0,0,0,0,80,9,0,0,17,0,0,0,18,0,0,0,8,0,0,0,4,0,0,0,26,0,0,0,10,0,0,0,27,0,0,0,28,0,0,0,19,0,0,0,20,0,0,0,11,0,0,0,0,0,0,0,32,32,98,50,70,114,105,
99,116,105,111,110,74,111,105,110,116,68,101,102,32,106,100,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,65,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,66,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,99,111,108,108,105,100,101,67,111,110,110,101,99,116,101,100,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,65,46,83,101,116,40,37,46,49,53,
108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,66,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,109,97,120,70,111,114,99,101,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,0,0,32,32,106,100,46,109,97,120,84,111,114,113,117,101,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,0,32,32,106,111,105,110,116,115,91,37,100,93,32,61,32,109,95,119,111,114,108,100,45,
62,67,114,101,97,116,101,74,111,105,110,116,40,38,106,100,41,59,10,0,0,0,0,0,0,49,53,98,50,70,114,105,99,116,105,111,110,74,111,105,110,116,0,0,0,0,0,0,0,88,35,0,0,56,9,0,0,216,3,0,0,0,0,0,0,0,0,0,0,24,11,0,0,21,0,0,0,22,0,0,0,9,0,0,0,5,0,0,0,29,0,0,0,10,0,0,0,30,0,0,0,31,0,0,0,23,0,0,0,24,0,0,0,12,0,0,0,0,0,0,0,32,32,98,50,87,101,108,100,74,111,105,110,116,68,101,102,32,106,100,59,10,0,0,0,32,32,106,100,46,98,111,100,121,65,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,
100,46,98,111,100,121,66,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,99,111,108,108,105,100,101,67,111,110,110,101,99,116,101,100,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,65,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,66,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,
102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,114,101,102,101,114,101,110,99,101,65,110,103,108,101,32,61,32,37,46,49,53,108,101,102,59,10,0,32,32,106,100,46,102,114,101,113,117,101,110,99,121,72,122,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,32,32,106,100,46,100,97,109,112,105,110,103,82,97,116,105,111,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,32,32,106,111,105,110,116,115,91,37,100,93,32,61,32,109,95,119,111,114,108,100,45,62,67,114,101,97,116,101,74,111,105,110,116,40,38,106,100,41,59,10,
0,0,0,0,0,0,49,49,98,50,87,101,108,100,74,111,105,110,116,0,0,0,88,35,0,0,8,11,0,0,216,3,0,0,0,0,0,0,0,0,0,0,120,12,0,0,25,0,0,0,26,0,0,0,10,0,0,0,6,0,0,0,32,0,0,0,10,0,0,0,33,0,0,0,34,0,0,0,27,0,0,0,28,0,0,0,13,0,0,0,0,0,0,0,32,32,98,50,71,101,97,114,74,111,105,110,116,68,101,102,32,106,100,59,10,0,0,0,32,32,106,100,46,98,111,100,121,65,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,66,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,
0,0,32,32,106,100,46,99,111,108,108,105,100,101,67,111,110,110,101,99,116,101,100,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,0,0,0,32,32,106,100,46,106,111,105,110,116,49,32,61,32,106,111,105,110,116,115,91,37,100,93,59,10,0,0,0,0,0,0,32,32,106,100,46,106,111,105,110,116,50,32,61,32,106,111,105,110,116,115,91,37,100,93,59,10,0,0,0,0,0,0,32,32,106,100,46,114,97,116,105,111,32,61,32,37,46,49,53,108,101,102,59,10,0,0,32,32,106,111,105,110,116,115,91,37,100,93,32,61,32,109,95,119,111,114,108,100,
45,62,67,114,101,97,116,101,74,111,105,110,116,40,38,106,100,41,59,10,0,0,0,0,0,0,49,49,98,50,71,101,97,114,74,111,105,110,116,0,0,0,88,35,0,0,104,12,0,0,216,3,0,0,0,0,0,0,0,0,0,0,8,15,0,0,29,0,0,0,30,0,0,0,11,0,0,0,7,0,0,0,35,0,0,0,10,0,0,0,36,0,0,0,37,0,0,0,31,0,0,0,32,0,0,0,14,0,0,0,0,0,0,0,32,32,98,50,80,114,105,115,109,97,116,105,99,74,111,105,110,116,68,101,102,32,106,100,59,10,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,65,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,
32,106,100,46,98,111,100,121,66,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,99,111,108,108,105,100,101,67,111,110,110,101,99,116,101,100,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,65,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,66,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,
108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,120,105,115,65,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,32,32,106,100,46,114,101,102,101,114,101,110,99,101,65,110,103,108,101,32,61,32,37,46,49,53,108,101,102,59,10,0,32,32,106,100,46,101,110,97,98,108,101,76,105,109,105,116,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,32,32,106,100,46,108,111,119,101,114,84,114,97,110,115,108,97,116,105,111,110,32,61,32,37,46,49,53,108,101,102,59,
10,0,0,0,0,0,0,0,32,32,106,100,46,117,112,112,101,114,84,114,97,110,115,108,97,116,105,111,110,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,0,0,32,32,106,100,46,101,110,97,98,108,101,77,111,116,111,114,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,32,32,106,100,46,109,111,116,111,114,83,112,101,101,100,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,32,32,106,100,46,109,97,120,77,111,116,111,114,70,111,114,99,101,32,61,32,37,46,49,53,108,101,102,59,10,0,0,32,32,106,111,105,110,116,115,91,
37,100,93,32,61,32,109,95,119,111,114,108,100,45,62,67,114,101,97,116,101,74,111,105,110,116,40,38,106,100,41,59,10,0,0,0,0,0,0,49,54,98,50,80,114,105,115,109,97,116,105,99,74,111,105,110,116,0,0,0,0,0,0,88,35,0,0,240,14,0,0,216,3,0,0,0,0,0,0,0,0,0,0,144,16,0,0,33,0,0,0,34,0,0,0,12,0,0,0,8,0,0,0,38,0,0,0,10,0,0,0,39,0,0,0,40,0,0,0,35,0,0,0,36,0,0,0,15,0,0,0,0,0,0,0,32,32,98,50,82,111,112,101,74,111,105,110,116,68,101,102,32,106,100,59,10,0,0,0,32,32,106,100,46,98,111,100,121,65,32,61,32,98,111,100,
105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,66,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,99,111,108,108,105,100,101,67,111,110,110,101,99,116,101,100,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,65,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,66,46,83,101,
116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,109,97,120,76,101,110,103,116,104,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,0,32,32,106,111,105,110,116,115,91,37,100,93,32,61,32,109,95,119,111,114,108,100,45,62,67,114,101,97,116,101,74,111,105,110,116,40,38,106,100,41,59,10,0,0,0,0,0,0,49,49,98,50,82,111,112,101,74,111,105,110,116,0,0,0,88,35,0,0,128,16,0,0,216,3,0,0,0,0,0,0,0,0,0,0,216,3,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,41,0,0,0,10,0,
0,0,42,0,0,0,43,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,47,47,32,68,117,109,112,32,105,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,116,104,105,115,32,106,111,105,110,116,32,116,121,112,101,46,10,0,0,0,0,0,0,80,19,0,0,37,0,0,0,38,0,0,0,13,0,0,0,9,0,0,0,44,0,0,0,10,0,0,0,45,0,0,0,46,0,0,0,39,0,0,0,40,0,0,0,16,0,0,0,0,0,0,0,32,32,98,50,82,101,118,111,108,117,116,101,74,111,105,110,116,68,101,102,32,106,100,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,65,32,61,32,
98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,66,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,99,111,108,108,105,100,101,67,111,110,110,101,99,116,101,100,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,65,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,66,
46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,114,101,102,101,114,101,110,99,101,65,110,103,108,101,32,61,32,37,46,49,53,108,101,102,59,10,0,32,32,106,100,46,101,110,97,98,108,101,76,105,109,105,116,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,32,32,106,100,46,108,111,119,101,114,65,110,103,108,101,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,32,32,106,100,46,117,112,112,101,114,65,110,103,108,101,32,61,32,37,46,49,53,108,101,
102,59,10,0,0,0,0,0,32,32,106,100,46,101,110,97,98,108,101,77,111,116,111,114,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,32,32,106,100,46,109,111,116,111,114,83,112,101,101,100,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,32,32,106,100,46,109,97,120,77,111,116,111,114,84,111,114,113,117,101,32,61,32,37,46,49,53,108,101,102,59,10,0,32,32,106,111,105,110,116,115,91,37,100,93,32,61,32,109,95,119,111,114,108,100,45,62,67,114,101,97,116,101,74,111,105,110,116,40,38,106,100,41,59,10,0,0,0,0,0,
0,49,53,98,50,82,101,118,111,108,117,116,101,74,111,105,110,116,0,0,0,0,0,0,0,88,35,0,0,56,19,0,0,216,3,0,0,0,0,0,0,0,0,0,0,128,21,0,0,41,0,0,0,42,0,0,0,14,0,0,0,10,0,0,0,47,0,0,0,10,0,0,0,48,0,0,0,49,0,0,0,43,0,0,0,44,0,0,0,17,0,0,0,0,0,0,0,32,32,98,50,87,104,101,101,108,74,111,105,110,116,68,101,102,32,106,100,59,10,0,0,32,32,106,100,46,98,111,100,121,65,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,66,32,61,32,98,111,100,105,101,115,91,37,100,
93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,99,111,108,108,105,100,101,67,111,110,110,101,99,116,101,100,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,65,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,66,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,
120,105,115,65,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,32,32,106,100,46,101,110,97,98,108,101,77,111,116,111,114,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,32,32,106,100,46,109,111,116,111,114,83,112,101,101,100,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,32,32,106,100,46,109,97,120,77,111,116,111,114,84,111,114,113,117,101,32,61,32,37,46,49,53,108,101,102,59,10,0,32,32,106,100,46,102,114,101,113,117,101,110,99,121,72,122,32,61,32,37,46,49,53,108,
101,102,59,10,0,0,0,0,32,32,106,100,46,100,97,109,112,105,110,103,82,97,116,105,111,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,32,32,106,111,105,110,116,115,91,37,100,93,32,61,32,109,95,119,111,114,108,100,45,62,67,114,101,97,116,101,74,111,105,110,116,40,38,106,100,41,59,10,0,0,0,0,0,0,49,50,98,50,87,104,101,101,108,74,111,105,110,116,0,0,88,35,0,0,112,21,0,0,216,3,0,0,0,0,0,0,0,0,0,0,160,23,0,0,45,0,0,0,46,0,0,0,15,0,0,0,11,0,0,0,50,0,0,0,47,0,0,0,51,0,0,0,52,0,0,0,48,0,0,0,49,0,0,0,18,0,0,0,
0,0,0,0,32,32,98,50,80,117,108,108,101,121,74,111,105,110,116,68,101,102,32,106,100,59,10,0,32,32,106,100,46,98,111,100,121,65,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,66,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,99,111,108,108,105,100,101,67,111,110,110,101,99,116,101,100,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,0,0,0,32,32,106,100,46,103,114,111,117,110,100,65,110,99,104,111,114,65,46,83,101,
116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,32,32,106,100,46,103,114,111,117,110,100,65,110,99,104,111,114,66,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,65,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,66,46,83,101,116,40,37,46,49,53,108,101,102,44,32,
37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,101,110,103,116,104,65,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,0,0,0,32,32,106,100,46,108,101,110,103,116,104,66,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,0,0,0,32,32,106,100,46,114,97,116,105,111,32,61,32,37,46,49,53,108,101,102,59,10,0,0,32,32,106,111,105,110,116,115,91,37,100,93,32,61,32,109,95,119,111,114,108,100,45,62,67,114,101,97,116,101,74,111,105,110,116,40,38,106,100,41,59,10,0,0,0,0,0,0,49,51,98,50,80,117,
108,108,101,121,74,111,105,110,116,0,88,35,0,0,144,23,0,0,216,3,0,0,0,0,0,0,0,0,0,0,0,24,0,0,7,0,0,0,53,0,0,0,54,0,0,0,0,0,0,0,50,52,98,50,67,104,97,105,110,65,110,100,80,111,108,121,103,111,110,67,111,110,116,97,99,116,0,0,0,0,0,0,57,98,50,67,111,110,116,97,99,116,0,0,0,0,0,0,48,35,0,0,232,23,0,0,88,35,0,0,200,23,0,0,248,23,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,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,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,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,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,248,23,0,0,1,0,0,0,55,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,40,25,0,0,8,0,0,0,57,0,0,0,58,0,0,0,0,0,0,0,50,53,98,50,80,111,108,121,103,111,110,65,110,100,67,105,114,99,108,101,67,111,110,116,97,99,116,0,0,0,0,0,88,35,0,0,8,25,0,0,248,23,0,0,0,0,0,0,0,0,0,0,104,25,
0,0,9,0,0,0,59,0,0,0,60,0,0,0,0,0,0,0,49,53,98,50,67,105,114,99,108,101,67,111,110,116,97,99,116,0,0,0,0,0,0,0,88,35,0,0,80,25,0,0,248,23,0,0,0,0,0,0,0,0,0,0,176,25,0,0,10,0,0,0,61,0,0,0,62,0,0,0,0,0,0,0,50,50,98,50,69,100,103,101,65,110,100,67,105,114,99,108,101,67,111,110,116,97,99,116,0,0,0,0,0,0,0,0,88,35,0,0,144,25,0,0,248,23,0,0,0,0,0,0,0,0,0,0,248,25,0,0,11,0,0,0,63,0,0,0,64,0,0,0,0,0,0,0,50,51,98,50,67,104,97,105,110,65,110,100,67,105,114,99,108,101,67,111,110,116,97,99,116,0,0,0,0,0,0,0,
88,35,0,0,216,25,0,0,248,23,0,0,0,0,0,0,0,0,0,0,64,26,0,0,12,0,0,0,65,0,0,0,66,0,0,0,0,0,0,0,50,51,98,50,69,100,103,101,65,110,100,80,111,108,121,103,111,110,67,111,110,116,97,99,116,0,0,0,0,0,0,0,88,35,0,0,32,26,0,0,248,23,0,0,0,0,0,0,0,0,0,0,128,26,0,0,13,0,0,0,67,0,0,0,68,0,0,0,0,0,0,0,49,54,98,50,80,111,108,121,103,111,110,67,111,110,116,97,99,116,0,0,0,0,0,0,88,35,0,0,104,26,0,0,248,23,0,0,0,0,0,0,72,3,0,0,0,0,0,0,168,26,0,0,0,0,0,0,0,0,0,0,120,1,0,0,69,0,0,0,70,0,0,0,50,0,0,0,51,0,0,0,1,0,0,
0,1,0,0,0,2,0,0,0,2,0,0,0,5,0,0,0,6,0,0,0,0,0,0,0,120,27,0,0,71,0,0,0,72,0,0,0,19,0,0,0,1,0,0,0,20,0,0,0,14,0,0,0,90,78,49,54,98,50,80,97,114,116,105,99,108,101,83,121,115,116,101,109,49,52,83,111,108,118,101,67,111,108,108,105,115,105,111,110,69,82,75,49,48,98,50,84,105,109,101,83,116,101,112,69,50,50,83,111,108,118,101,67,111,108,108,105,115,105,111,110,67,97,108,108,98,97,99,107,0,0,0,0,51,48,98,50,70,105,120,116,117,114,101,80,97,114,116,105,99,108,101,81,117,101,114,121,67,97,108,108,98,97,99,
107,0,0,0,0,0,0,0,0,88,35,0,0,64,27,0,0,248,0,0,0,0,0,0,0,88,35,0,0,240,26,0,0,104,27,0,0,0,0,0,0,0,0,0,0,240,27,0,0,73,0,0,0,74,0,0,0,19,0,0,0,1,0,0,0,20,0,0,0,15,0,0,0,90,78,49,54,98,50,80,97,114,116,105,99,108,101,83,121,115,116,101,109,49,56,85,112,100,97,116,101,66,111,100,121,67,111,110,116,97,99,116,115,69,118,69,50,54,85,112,100,97,116,101,66,111,100,121,67,111,110,116,97,99,116,115,67,97,108,108,98,97,99,107,0,88,35,0,0,168,27,0,0,104,27,0,0,0,0,0,0,0,0,0,0,168,28,0,0,75,0,0,0,76,0,0,0,16,
0,0,0,0,0,0,0,90,78,49,54,98,50,80,97,114,116,105,99,108,101,83,121,115,116,101,109,50,48,85,112,100,97,116,101,80,97,105,114,115,65,110,100,84,114,105,97,100,115,69,105,105,82,75,78,83,95,49,54,67,111,110,110,101,99,116,105,111,110,70,105,108,116,101,114,69,69,50,48,85,112,100,97,116,101,84,114,105,97,100,115,67,97,108,108,98,97,99,107,0,0,0,0,78,49,54,98,50,86,111,114,111,110,111,105,68,105,97,103,114,97,109,49,50,78,111,100,101,67,97,108,108,98,97,99,107,69,0,0,0,0,0,0,48,35,0,0,120,28,0,0,88,
35,0,0,24,28,0,0,160,28,0,0,0,0,0,0,0,0,0,0,96,29,0,0,77,0,0,0,78,0,0,0,21,0,0,0,7,0,0,0,3,0,0,0,0,0,0,0,90,78,49,54,98,50,80,97,114,116,105,99,108,101,83,121,115,116,101,109,52,49,85,112,100,97,116,101,80,97,105,114,115,65,110,100,84,114,105,97,100,115,87,105,116,104,82,101,97,99,116,105,118,101,80,97,114,116,105,99,108,101,115,69,118,69,49,52,82,101,97,99,116,105,118,101,70,105,108,116,101,114,0,0,0,0,0,0,78,49,54,98,50,80,97,114,116,105,99,108,101,83,121,115,116,101,109,49,54,67,111,110,110,101,
99,116,105,111,110,70,105,108,116,101,114,69,0,0,48,35,0,0,48,29,0,0,88,35,0,0,216,28,0,0,88,29,0,0,0,0,0,0,0,0,0,0,88,29,0,0,79,0,0,0,80,0,0,0,22,0,0,0,7,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,16,30,0,0,81,0,0,0,82,0,0,0,22,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,90,78,49,54,98,50,80,97,114,116,105,99,108,101,83,121,115,116,101,109,49,56,74,111,105,110,80,97,114,116,105,99,108,101,71,114,111,117,112,115,69,80,49,53,98,50,80,97,114,116,105,99,108,101,71,114,111,117,112,83,49,95,69,50,52,74,111,105,110,80,97,114,116,
105,99,108,101,71,114,111,117,112,115,70,105,108,116,101,114,0,0,0,0,0,0,0,88,35,0,0,176,29,0,0,88,29,0,0,0,0,0,0,0,0,0,0,208,30,0,0,83,0,0,0,84,0,0,0,23,0,0,0,5,0,0,0,9,0,0,0,5,0,0,0,5,0,0,0,17,0,0,0,16,0,0,0,0,0,0,0,90,78,49,54,98,50,80,97,114,116,105,99,108,101,83,121,115,116,101,109,51,51,67,114,101,97,116,101,80,97,114,116,105,99,108,101,115,87,105,116,104,83,104,97,112,101,115,70,111,114,71,114,111,117,112,69,80,75,80,75,55,98,50,83,104,97,112,101,105,82,75,49,56,98,50,80,97,114,116,105,99,
108,101,71,114,111,117,112,68,101,102,82,75,49,49,98,50,84,114,97,110,115,102,111,114,109,69,49,52,67,111,109,112,111,115,105,116,101,83,104,97,112,101,0,0,0,0,0,88,35,0,0,80,30,0,0,48,2,0,0,0,0,0,0,0,0,0,0,112,31,0,0,85,0,0,0,86,0,0,0,24,0,0,0,10,0,0,0,3,0,0,0,0,0,0,0,90,78,49,54,98,50,80,97,114,116,105,99,108,101,83,121,115,116,101,109,50,51,68,101,115,116,114,111,121,80,97,114,116,105,99,108,101,115,73,110,83,104,97,112,101,69,82,75,55,98,50,83,104,97,112,101,82,75,49,49,98,50,84,114,97,110,115,
102,111,114,109,98,69,51,49,68,101,115,116,114,111,121,80,97,114,116,105,99,108,101,115,73,110,83,104,97,112,101,67,97,108,108,98,97,99,107,0,0,0,0,0,0,88,35,0,0,0,31,0,0,248,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,16,0,0,0,32,0,0,0,64,0,0,0,96,0,0,0,128,0,0,0,160,0,0,0,192,0,0,0,224,0,0,0,0,1,0,0,64,1,0,0,128,1,0,0,192,1,0,0,0,2,0,0,128,2,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,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,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,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,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,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,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,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,
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,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,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,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,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,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,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,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,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,76,105,113,117,105,100,70,117,110,32,49,46,49,46,48,0,104,34,0,0,0,0,0,0,25,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,116,57,116,121,112,101,95,105,110,102,111,0,0,0,0,48,35,0,0,160,34,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,88,35,0,0,184,34,0,0,176,34,0,0,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,88,35,0,0,240,34,0,0,224,34,0,0,0,0,0,0,0,0,0,0,24,35,0,0,87,0,0,0,88,0,0,0,89,0,0,0,90,0,0,0,11,0,0,0,6,0,0,0,1,0,0,0,18,0,0,0,0,0,0,0,160,35,0,0,87,0,0,0,91,0,0,0,89,0,0,0,90,0,0,0,11,0,0,0,7,0,0,0,2,0,0,0,19,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,88,35,0,0,120,35,0,0,24,35,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,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,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,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,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,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,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,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,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,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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,37,0,0,92,0,0,0,93,0,0,0,6,0,0,0,0,0,0,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,0,83,116,57,98,97,100,95,97,108,108,111,99,0,0,0,0,88,35,0,0,216,37,0,0,0,0,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){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 _cosf(){return Math_cos.apply(null,arguments)}function ___cxa_pure_virtual(){ABORT=true;throw"Pure virtual function called!";}function _b2WorldEndContactBody(contactPtr){b2World.EndContactBody(contactPtr)}function _floorf(){return Math_floor.apply(null,arguments)}function __ZSt18uncaught_exceptionv(){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:var definite_type_infoAddr=HEAP32[definiteType>>2]-8;var definite_type_info=
HEAP32[definite_type_infoAddr>>2];if(definite_type_info==0){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;case 1:return false;case 2:var parentTypeAddr=possibilityType+8;var parentType=HEAP32[parentTypeAddr>>2];return ___cxa_does_inherit(definiteType,parentType,
possibility);default:return false}}var ___cxa_last_thrown_exception=0;function ___resumeException(ptr){if(!___cxa_last_thrown_exception)___cxa_last_thrown_exception=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.";}var ___cxa_exception_header_size=8;
function ___cxa_find_matching_catch(thrown,throwntype){if(thrown==-1)thrown=___cxa_last_thrown_exception;header=thrown-___cxa_exception_header_size;if(throwntype==-1)throwntype=HEAP32[header>>2];var typeArray=Array.prototype.slice.call(arguments,2);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]}for(var i=0;i<typeArray.length;i++)if(___cxa_does_inherit(typeArray[i],
throwntype,thrown))return(asm["setTempRet0"](typeArray[i]),thrown)|0;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}catch(e){}try{HEAP32[__ZTVN10__cxxabiv117__class_type_infoE>>2]=1}catch(e){}try{HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE>>2]=2}catch(e){}___cxa_throw.initialized=true}var header=ptr-___cxa_exception_header_size;HEAP32[header>>2]=type;HEAP32[header+4>>2]=destructor;___cxa_last_thrown_exception=ptr;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.";}Module["_memset"]=_memset;function _b2WorldRayCastCallback(fixturePtr,pointX,pointY,normalX,normalY,fraction){return b2World.RayCast(fixturePtr,pointX,pointY,normalX,normalY,fraction)}var _FtoIHigh=true;function __exit(status){Module["exit"](status)}
function _exit(status){__exit(status)}function __ZSt9terminatev(){_exit(-1234)}function _abort(){Module["abort"]()}function _b2WorldBeginContactBody(contactPtr){b2World.BeginContactBody(contactPtr)}var ___cxa_caught_exceptions=[];function ___cxa_begin_catch(ptr){__ZSt18uncaught_exceptionv.uncaught_exception--;___cxa_caught_exceptions.push(___cxa_last_thrown_exception);return ptr}function _sinf(){return Math_sin.apply(null,arguments)}
function _b2WorldPostSolve(contactPtr,impulsePtr){b2World.PostSolve(contactPtr,impulsePtr)}Module["_strlen"]=_strlen;function _sqrtf(){return Math_sqrt.apply(null,arguments)}function _b2WorldQueryAABB(fixturePtr){return b2World.QueryAABB(fixturePtr)}Module["_i64Add"]=_i64Add;
function _sbrk(bytes){var self=_sbrk;if(!self.called){DYNAMICTOP=alignMemoryPage(DYNAMICTOP);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}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;Module["_memmove"]=_memmove;var ___errno_state=0;
function ___setErrNo(value){HEAP32[___errno_state>>2]=value;return value}function ___errno_location(){return ___errno_state}var _FtoILow=true;function __ZNSt9exceptionD2Ev(){}function _b2WorldPreSolve(contactPtr,oldManifoldPtr){b2World.PreSolve(contactPtr,oldManifoldPtr)}
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:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,
ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,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:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,
ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};
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:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",
43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"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",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can   access a needed shared lib",80:"Accessing a corrupted shared lib",
81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",
98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",
115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};
var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){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){if(stream.tty.output.length)stream.tty.ops.put_char(stream.tty,10)},read:function(stream,buffer,offset,length,pos){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){result=process["stdin"]["read"]();if(!result){if(process["stdin"]["_readableState"]&&process["stdin"]["_readableState"]["ended"])return null;return undefined}}else if(typeof window!="undefined"&&typeof window.prompt==
"function"){result=window.prompt("Input: ");if(result!==null)result+="\n"}else if(typeof readline=="function"){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={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode))throw new FS.ErrnoError(ERRNO_CODES.EPERM);if(!MEMFS.ops_table)MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,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},
stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{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}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};
var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;
node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent)parent.contents[name]=node;return node},getFileDataAsRegularArray:function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i<node.usedBytes;++i)arr.push(node.contents[i]);return arr}return node.contents},getFileDataAsTypedArray:function(node){if(node.contents&&node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,
newCapacity){if(node.contents&&node.contents.subarray&&newCapacity>node.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.buffer.byteLength:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)|0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,
256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.length<newCapacity)node.contents.push(0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(new ArrayBuffer(newSize));
node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)));node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length<newSize)node.contents.push(0);node.usedBytes=newSize},node_ops:{getattr:function(node){var attr={};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.usedBytes;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);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.resizeFileStorage(node,attr.size)},
lookup:function(parent,name){throw FS.genericErrors[ERRNO_CODES.ENOENT];},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){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);}delete old_node.parent.contents[old_node.name];old_node.name=new_name;new_dir.contents[new_name]=old_node;old_node.parent=
new_dir},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.createNode(parent,newname,511|40960,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;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray)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){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray))if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=new Uint8Array(buffer.subarray(offset,offset+length));node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,
offset+length),position);return length}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray)node.contents.set(buffer.subarray(offset,offset+length),position);else for(var i=0;i<length;i++)node.contents[position+i]=buffer[offset+i];node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1)position+=stream.position;else if(whence===2)if(FS.isFile(stream.node.mode))position+=stream.node.usedBytes;
if(position<0)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);stream.ungotten=[];stream.position=position;return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},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;if(!(flags&2)&&(contents.buffer===
buffer||contents.buffer===buffer.buffer)){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<stream.node.usedBytes)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 IDBFS={dbs:{},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function(mount){return MEMFS.mount.apply(null,arguments)},syncfs:function(mount,populate,callback){IDBFS.getLocalSet(mount,function(err,local){if(err)return callback(err);IDBFS.getRemoteSet(mount,function(err,remote){if(err)return callback(err);var src=populate?remote:local;var dst=populate?local:remote;IDBFS.reconcile(src,dst,
callback)})})},getDB:function(name,callback){var db=IDBFS.dbs[name];if(db)return callback(null,db);var req;try{req=IDBFS.indexedDB().open(name,IDBFS.DB_VERSION)}catch(e){return callback(e)}req.onupgradeneeded=function(e){var db=e.target.result;var transaction=e.target.transaction;var fileStore;if(db.objectStoreNames.contains(IDBFS.DB_STORE_NAME))fileStore=transaction.objectStore(IDBFS.DB_STORE_NAME);else fileStore=db.createObjectStore(IDBFS.DB_STORE_NAME);fileStore.createIndex("timestamp","timestamp",
{unique:false})};req.onsuccess=function(){db=req.result;IDBFS.dbs[name]=db;callback(null,db)};req.onerror=function(){callback(this.error)}},getLocalSet:function(mount,callback){var entries={};function isRealDir(p){return p!=="."&&p!==".."}function toAbsolute(root){return function(p){return PATH.join2(root,p)}}var check=FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));while(check.length){var path=check.pop();var stat;try{stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode))check.push.apply(check,
FS.readdir(path).filter(isRealDir).map(toAbsolute(path)));entries[path]={timestamp:stat.mtime}}return callback(null,{type:"local",entries:entries})},getRemoteSet:function(mount,callback){var entries={};IDBFS.getDB(mount.mountpoint,function(err,db){if(err)return callback(err);var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readonly");transaction.onerror=function(){callback(this.error)};var store=transaction.objectStore(IDBFS.DB_STORE_NAME);var index=store.index("timestamp");index.openKeyCursor().onsuccess=
function(event){var cursor=event.target.result;if(!cursor)return callback(null,{type:"remote",db:db,entries:entries});entries[cursor.primaryKey]={timestamp:cursor.key};cursor.continue()}})},loadLocalEntry:function(path,callback){var stat,node;try{var lookup=FS.lookupPath(path);node=lookup.node;stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode))return callback(null,{timestamp:stat.mtime,mode:stat.mode});else if(FS.isFile(stat.mode)){node.contents=MEMFS.getFileDataAsTypedArray(node);
return callback(null,{timestamp:stat.mtime,mode:stat.mode,contents:node.contents})}else return callback(new Error("node type not supported"))},storeLocalEntry:function(path,entry,callback){try{if(FS.isDir(entry.mode))FS.mkdir(path,entry.mode);else if(FS.isFile(entry.mode))FS.writeFile(path,entry.contents,{encoding:"binary",canOwn:true});else return callback(new Error("node type not supported"));FS.utime(path,entry.timestamp,entry.timestamp)}catch(e){return callback(e)}callback(null)},removeLocalEntry:function(path,
callback){try{var lookup=FS.lookupPath(path);var stat=FS.stat(path);if(FS.isDir(stat.mode))FS.rmdir(path);else if(FS.isFile(stat.mode))FS.unlink(path)}catch(e){return callback(e)}callback(null)},loadRemoteEntry:function(store,path,callback){var req=store.get(path);req.onsuccess=function(event){callback(null,event.target.result)};req.onerror=function(){callback(this.error)}},storeRemoteEntry:function(store,path,entry,callback){var req=store.put(entry,path);req.onsuccess=function(){callback(null)};
req.onerror=function(){callback(this.error)}},removeRemoteEntry:function(store,path,callback){var req=store.delete(path);req.onsuccess=function(){callback(null)};req.onerror=function(){callback(this.error)}},reconcile:function(src,dst,callback){var total=0;var create=[];Object.keys(src.entries).forEach(function(key){var e=src.entries[key];var e2=dst.entries[key];if(!e2||e.timestamp>e2.timestamp){create.push(key);total++}});var remove=[];Object.keys(dst.entries).forEach(function(key){var e=dst.entries[key];
var e2=src.entries[key];if(!e2){remove.push(key);total++}});if(!total)return callback(null);var errored=false;var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total)return callback(null)}transaction.onerror=function(){done(this.error)};create.sort().forEach(function(path){if(dst.type===
"local")IDBFS.loadRemoteEntry(store,path,function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)});else IDBFS.loadLocalEntry(path,function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)})});remove.sort().reverse().forEach(function(path){if(dst.type==="local")IDBFS.removeLocalEntry(path,done);else IDBFS.removeRemoteEntry(store,path,done)})}};
var NODEFS={isWindows:false,staticInit:function(){NODEFS.isWindows=!!process.platform.match(/^win/)},mount:function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)},createNode:function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode))throw new FS.ErrnoError(ERRNO_CODES.EINVAL);var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node},getMode:function(path){var stat;
try{stat=fs.lstatSync(path);if(NODEFS.isWindows)stat.mode=stat.mode|(stat.mode&146)>>1}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}return stat.mode},realPath:function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)},flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",
1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function(flags){if(flags in NODEFS.flagsToPermissionStringMap)return NODEFS.flagsToPermissionStringMap[flags];else return flags},node_ops:{getattr:function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}if(NODEFS.isWindows&&!stat.blksize)stat.blksize=4096;if(NODEFS.isWindows&&
!stat.blocks)stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0;return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}},setattr:function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,
date,date)}if(attr.size!==undefined)fs.truncateSync(path,attr.size)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},lookup:function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)},mknod:function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode))fs.mkdirSync(path,node.mode);else fs.writeFileSync(path,"",{mode:node.mode})}catch(e){if(!e.code)throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);}return node},rename:function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},unlink:function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},rmdir:function(parent,
name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},readdir:function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},symlink:function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}},readlink:function(node){var path=NODEFS.realPath(node);try{return fs.readlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}}},stream_ops:{open:function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode))stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},close:function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd)fs.closeSync(stream.nfd)}catch(e){if(!e.code)throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},read:function(stream,buffer,offset,length,position){var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code]);}if(res>0)for(var i=0;i<res;i++)buffer[offset+i]=nbuffer[i];return res},write:function(stream,buffer,offset,length,position){var nbuffer=new Buffer(buffer.subarray(offset,offset+length));var res;try{res=fs.writeSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}return res},llseek:function(stream,offset,whence){var position=offset;if(whence===1)position+=stream.position;else if(whence===2)if(FS.isFile(stream.node.mode))try{var stat=fs.fstatSync(stream.nfd);position+=stat.size}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code]);}if(position<0)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);stream.position=position;return position}}};var _stdin=allocate(1,"i32*",ALLOC_STATIC);var _stdout=allocate(1,"i32*",ALLOC_STATIC);var _stderr=allocate(1,"i32*",ALLOC_STATIC);
function _fflush(stream){}
var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},handleFSError:function(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno)},lookupPath:function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults)if(opts[key]===undefined)opts[key]=
defaults[key];if(opts.recurse_count>8)throw new FS.ErrnoError(ERRNO_CODES.ELOOP);var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);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)break;current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current))if(!islast||islast&&opts.follow_mount)current=current.mounted.root;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)throw new FS.ErrnoError(ERRNO_CODES.ELOOP);}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=
path?node.name+"/"+path:node.name;node=node.parent}},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.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node)FS.nameTable[hash]=node.name_next;else{var current=
FS.nameTable[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.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name)return node}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=
function(parent,name,mode,rdev){if(!parent)parent=this;this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===
writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}})}var node=new FS.FSNode(parent,name,mode,rdev);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&61440)===32768},isDir:function(mode){return(mode&
61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},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&2097155;var perms=["r","w","rw"][accmode];if(flag&512)perms+="w";return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions)return 0;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")},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.cwd())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&2097155)!==0||flags&512)return ERRNO_CODES.EISDIR;return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;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){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}})}var newStream=new FS.FSStream;for(var p in stream)newStream[p]=stream[p];stream=newStream;var fd=FS.nextfd(fd_start,
fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},getStreamFromPtr:function(ptr){return FS.streams[ptr-1]},getPtrForStream:function(stream){return stream?stream.fd+1:0},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;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&
255},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]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}var mounts=FS.getMounts(FS.root.mount);var completed=0;function done(err){if(err){if(!done.errored){done.errored=
true;return callback(err)}return}if(++completed>=mounts.length)callback(null)}mounts.forEach(function(mount){if(!mount.type.syncfs)return done(null);mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root)throw new FS.ErrnoError(ERRNO_CODES.EBUSY);else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node))throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
if(!FS.isDir(node.mode))throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root)FS.root=mountRoot;else if(node){node.mounted=mount;if(node.mount)node.mount.mounts.push(mount)}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node))throw new FS.ErrnoError(ERRNO_CODES.EINVAL);var node=
lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1)FS.destroyNode(current);current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)},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=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdev:function(path,
mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;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);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);}if(old_dir.mount!==new_dir.mount)throw new FS.ErrnoError(ERRNO_CODES.EXDEV);var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!==
".")throw new FS.ErrnoError(ERRNO_CODES.EINVAL);relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!==".")throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node)return;var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err)throw new FS.ErrnoError(err);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(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err)throw new FS.ErrnoError(err);}try{if(FS.trackingDelegate["willMovePath"])FS.trackingDelegate["willMovePath"](old_path,new_path)}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e;
}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},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);try{if(FS.trackingDelegate["willDeletePath"])FS.trackingDelegate["willDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},
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){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);try{if(FS.trackingDelegate["willDeletePath"])FS.trackingDelegate["willDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},
readlink:function(path){var lookup=FS.lookupPath(path);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()})},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&2097155)===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){flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64)mode=mode&4095|32768;else mode=0;var node;if(typeof path==="object")node=
path;else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}if(flags&64)if(node){if(flags&128)throw new FS.ErrnoError(ERRNO_CODES.EEXIST);}else node=FS.mknod(path,mode,0);if(!node)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(FS.isChrdev(node.mode))flags&=~512;var err=FS.mayOpen(node,flags);if(err)throw new FS.ErrnoError(err);if(flags&512)FS.truncate(node,0);flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),
flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open)stream.stream_ops.open(stream);if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module["printErr"]("read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1)trackingFlags|=FS.tracking.openFlags.READ;if((flags&2097155)!==0)trackingFlags|=FS.tracking.openFlags.WRITE;
FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}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&2097155)===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&2097155)===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);if(stream.flags&1024)FS.llseek(stream,
0,2);var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable)throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message)}return bytesWritten},
allocate:function(stream,offset,length){if(offset<0||length<=0)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);if((stream.flags&2097155)===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){if((stream.flags&2097155)===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)},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl)throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||"r";opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary")throw new Error('Invalid encoding type "'+
opts.encoding+'"');var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret="";var utf8=new Runtime.UTF8Processor;for(var i=0;i<length;i++)ret+=utf8.processCChar(buf[i])}else if(opts.encoding==="binary")ret=buf;FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";opts.encoding=opts.encoding||"utf8";if(opts.encoding!=="utf8"&&
opts.encoding!=="binary")throw new Error('Invalid encoding type "'+opts.encoding+'"');var stream=FS.open(path,opts.flags,opts.mode);if(opts.encoding==="utf8"){var utf8=new Runtime.UTF8Processor;var buf=new Uint8Array(utf8.processJSString(data));FS.write(stream,buf,0,buf.length,0,opts.canOwn)}else if(opts.encoding==="binary")FS.write(stream,data,0,data.length,0,opts.canOwn);FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(!FS.isDir(lookup.node.mode))throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
var err=FS.nodePermissions(lookup.node,"x");if(err)throw new FS.ErrnoError(err);FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(){return 0}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,
0));FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createStandardStreams:function(){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");var stdin=FS.open("/dev/stdin","r");HEAP32[_stdin>>2]=FS.getPtrForStream(stdin);
assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");HEAP32[_stdout>>2]=FS.getPtrForStream(stdout);assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");HEAP32[_stderr>>2]=FS.getPtrForStream(stderr);assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")")},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.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]};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);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;FS.ensureErrnoError();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)}},
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){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.join2(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.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(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=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;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}FS.chmod(node,mode|146);var stream=FS.open(node,"w");FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=
64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length)output(10)},read:function(stream,buffer,offset,length,pos){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.join2(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"])try{obj.contents=intArrayFromString(Module["read"](obj.url),true);obj.usedBytes=obj.contents.length}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){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(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 LazyUint8Array_setDataGetter(getter){this.getter=
getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){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;if(!hasByteServing)chunkSize=datalength;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!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);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;end=Math.min(end,datalength-1);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};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";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);if(properties.contents)node.contents=properties.contents;else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperty(node,"usedBytes",{get:function(){return this.contents.length}});var stream_ops={};var keys=Object.keys(node.stream_ops);
keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node))throw new FS.ErrnoError(ERRNO_CODES.EIO);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node))throw new FS.ErrnoError(ERRNO_CODES.EIO);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice)for(var i=
0;i<size;i++)buffer[offset+i]=contents[position+i];else for(var i=0;i<size;i++)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();var fullname=name?PATH.resolve(PATH.join2(parent,name)):parent;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)},indexedDB:function(){return window.indexedDB||
window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){console.log("creating db");var db=openRequest.result;
db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};
putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=
db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists)FS.unlink(path);FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=
function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};
var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){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(allowAboveRoot)for(;up--;up)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)===
"/",trailingSlash=path.substr(-1)==="/";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)return".";if(dir)dir=dir.substr(0,dir.length-1);return root+dir},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;
return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)},resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();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)==="/"}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 Browser={mainLoop:{scheduler:null,method:"",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"]=[];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}var imagePlugin=
{};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor)try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length)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);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){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 img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(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;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);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(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&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);
finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1E4)}else return fail()};Module["preloadPlugins"].push(audioPlugin);var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||
function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===canvas||document["mozPointerLockElement"]===canvas||document["webkitPointerLockElement"]===canvas||document["msPointerLockElement"]===canvas}document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,
false);document.addEventListener("mspointerlockchange",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,webGLContextAttributes){var ctx;var errorInfo="?";function onContextCreationError(event){errorInfo=event.statusMessage||errorInfo}try{if(useWebGL){var contextAttributes={antialias:false,
alpha:false};if(webGLContextAttributes)for(var attribute in webGLContextAttributes)contextAttributes[attribute]=webGLContextAttributes[attribute];canvas.addEventListener("webglcontextcreationerror",onContextCreationError,false);try{["experimental-webgl","webgl"].some(function(webglId){return ctx=canvas.getContext(webglId,contextAttributes)})}finally{canvas.removeEventListener("webglcontextcreationerror",onContextCreationError,false)}}else ctx=canvas.getContext("2d");if(!ctx)throw":(";}catch(e){Module.print("Could not create canvas: "+
[errorInfo,e]);return null}if(useWebGL)canvas.style.backgroundColor="black";if(setInModule){GLctx=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;var canvasContainer=canvas.parentNode;if((document["webkitFullScreenElement"]||document["webkitFullscreenElement"]||document["mozFullScreenElement"]||document["mozFullscreenElement"]||document["fullScreenElement"]||document["fullscreenElement"]||document["msFullScreenElement"]||document["msFullscreenElement"]||
document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.cancelFullScreen=document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["webkitCancelFullScreen"]||document["msExitFullscreen"]||document["exitFullscreen"]||function(){};canvas.cancelFullScreen=canvas.cancelFullScreen.bind(document);if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullScreen=true;if(Browser.resizeCanvas)Browser.setFullScreenCanvasSize()}else{canvasContainer.parentNode.insertBefore(canvas,
canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas)Browser.setWindowedCanvasSize()}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullScreen);Browser.updateCanvasDimensions(canvas)}if(!Browser.fullScreenHandlersInstalled){Browser.fullScreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullScreenChange,false);document.addEventListener("mozfullscreenchange",fullScreenChange,false);document.addEventListener("webkitfullscreenchange",
fullScreenChange,false);document.addEventListener("MSFullscreenChange",fullScreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullScreen=canvasContainer["requestFullScreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:
null);canvasContainer.requestFullScreen()},requestAnimationFrame:function requestAnimationFrame(func){if(typeof window==="undefined")setTimeout(func,1E3/60);else{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){Module["noExitRuntime"]=true;return setTimeout(function(){if(!ABORT)func()},timeout)},safeSetInterval:function(func,timeout){Module["noExitRuntime"]=true;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},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case "DOMMouseScroll":delta=
event.detail;break;case "mousewheel":delta=-event.wheelDelta;break;case "wheel":delta=event.deltaY;break;default:throw"unrecognized mouse wheel event: "+event.type;}return Math.max(-1,Math.min(1,delta))},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event)Browser.mouseMovementX=Browser.mouseMovementY=0;else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=
Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;
if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined)return;var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){Browser.lastTouches[touch.identifier]=
Browser.touches[touch.identifier];Browser.touches[touch.identifier]={x:adjustedX,y:adjustedY}}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);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 xhr_onload(){if(xhr.status==
200||xhr.status==0&&xhr.response)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"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags|8388608;HEAP32[SDL.screen+
Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags&~8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;
if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0)if(w/h<Module["forcedAspectRatio"])w=Math.round(h*Module["forcedAspectRatio"]);else h=Math.round(w/Module["forcedAspectRatio"]);if((document["webkitFullScreenElement"]||document["webkitFullscreenElement"]||document["mozFullScreenElement"]||document["mozFullscreenElement"]||document["fullScreenElement"]||document["fullscreenElement"]||document["msFullScreenElement"]||document["msFullscreenElement"]||document["webkitCurrentFullScreenElement"])===
canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined")if(w!=wNative||
h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}};function _time(ptr){var ret=Math.floor(Date.now()/1E3);if(ptr)HEAP32[ptr>>2]=ret;return ret}
function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 79:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;
case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;
case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return 1}___setErrNo(ERRNO_CODES.EINVAL);return-1}function _malloc(bytes){var ptr=Runtime.dynamicAlloc(bytes+8);return ptr+8&4294967288}Module["_malloc"]=_malloc;function ___cxa_allocate_exception(size){var ptr=_malloc(size+___cxa_exception_header_size);return ptr+___cxa_exception_header_size}
var __ZTISt9exception=allocate([allocate([1,0,0,0,0,0,0],"i8",ALLOC_STATIC)+8,0],"i32",ALLOC_STATIC);___errno_state=Runtime.staticAlloc(4);HEAP32[___errno_state>>2]=0;Module["requestFullScreen"]=function Module_requestFullScreen(lockPointer,resizeCanvas){Browser.requestFullScreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};
Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};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;__ATINIT__.unshift({func:function(){TTY.init()}});__ATEXIT__.push({func:function(){TTY.shutdown()}});
TTY.utf8=new Runtime.UTF8Processor;if(ENVIRONMENT_IS_NODE){var fs=require("fs");NODEFS.staticInit()}STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);staticSealed=true;STACK_MAX=STACK_BASE+5242880;DYNAMIC_BASE=DYNAMICTOP=Runtime.alignMemory(STACK_MAX);assert(DYNAMIC_BASE<TOTAL_MEMORY,"TOTAL_MEMORY not big enough for stack");
var ctlz_i8=allocate([8,7,6,6,5,5,5,5,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,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,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,0,0],"i8",ALLOC_DYNAMIC);
var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",ALLOC_DYNAMIC);var Math_min=Math.min;function invoke_diiiiid(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_diiiiid"](index,a1,a2,a3,a4,a5,a6)}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_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_did(index,a1,a2){try{return Module["dynCall_did"](index,a1,a2)}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_diiiid(index,a1,a2,a3,a4,a5){try{return Module["dynCall_diiiid"](index,a1,a2,a3,a4,a5)}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_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_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_v(index){try{Module["dynCall_v"](index)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viid(index,a1,a2,a3){try{Module["dynCall_viid"](index,a1,a2,a3)}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_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_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_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)}function asmPrintFloat(x,y){Module.print("float "+x+","+y)}
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.cttz_i8|0;var n=env.ctlz_i8|0;var o=env.__ZTISt9exception|0;var p=
0;var q=0;var r=0;var s=0;var t=+env.NaN,u=+env.Infinity;var v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=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 ba=env.abort;var ca=env.assert;var da=env.asmPrintInt;var ea=env.asmPrintFloat;var fa=env.min;var ga=env.invoke_diiiiid;var ha=env.invoke_ii;var ia=env.invoke_viiiii;var ja=env.invoke_did;var ka=env.invoke_vi;var la=env.invoke_diiiid;var ma=env.invoke_vii;var na=env.invoke_iiii;var oa=env.invoke_viii;var pa=env.invoke_v;var qa=env.invoke_viid;var ra=env.invoke_iiiii;var sa=env.invoke_viiiiii;var ta=env.invoke_iii;var ua=env.invoke_iiiiii;var va=env.invoke_viiii;var wa=env._cosf;
var xa=env.__ZSt9terminatev;var ya=env._b2WorldPreSolve;var za=env.___cxa_is_number_type;var Aa=env.___cxa_allocate_exception;var Ba=env.___cxa_find_matching_catch;var Ca=env._fflush;var Da=env._time;var Ea=env.__exit;var Fa=env.___setErrNo;var Ga=env._sbrk;var Ha=env.___cxa_begin_catch;var Ia=env._sinf;var Ja=env.___resumeException;var Ka=env.__ZSt18uncaught_exceptionv;var La=env._b2WorldRayCastCallback;var Ma=env._emscripten_memcpy_big;var Na=env._floorf;var Oa=env._sqrtf;var Pa=env._b2WorldBeginContactBody;
var Qa=env.___errno_location;var Ra=env.__ZNSt9exceptionD2Ev;var Sa=env.___cxa_throw;var Ta=env._sysconf;var Ua=env._abort;var Va=env.___cxa_does_inherit;var Wa=env._b2WorldEndContactBody;var Xa=env._b2WorldQueryAABB;var Ya=env._b2WorldPostSolve;var Za=env._exit;var _a=env.___cxa_pure_virtual;var $a=0;function $k(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;d=i;i=i+64|0;e=d;f=d+16|0;g[e>>2]=3.4028234663852886E38;g[e+4>>2]=3.4028234663852886E38;
h=e+8|0;g[h>>2]=-3.4028234663852886E38;g[e+12>>2]=-3.4028234663852886E38;j=c[a+44>>2]|0;if((j|0)>0){k=c[a+104>>2]|0;l=c[a+96>>2]|0;m=+g[b>>2];n=3.4028234663852886E38;o=3.4028234663852886E38;p=-3.4028234663852886E38;q=-3.4028234663852886E38;r=0;do{s=k+(r<<3)|0;t=+g[s>>2];u=+g[s+4>>2];s=l+(r<<3)|0;v=+g[s>>2];w=+g[s+4>>2];x=v+t*m;t=u*m+w;u=v<x?v:x;y=w<t?w:t;n=n<u?n:u;o=o<y?o:y;y=+n;u=+o;s=e;g[s>>2]=y;g[s+4>>2]=u;u=v>x?v:x;x=w>t?w:t;p=p>u?p:u;q=q>x?q:x;x=+p;u=+q;s=h;g[s>>2]=x;g[s+4>>2]=u;r=r+1|0}while((r|
0)<(j|0))}c[f+4>>2]=a;c[f>>2]=6872;j=f+8|0;c[j+0>>2]=c[b+0>>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];c[j+16>>2]=c[b+16>>2];c[j+20>>2]=c[b+20>>2];c[j+24>>2]=c[b+24>>2];Dj(c[a+400>>2]|0,f,e);i=d;return}function al(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,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=
0;e=i;i=i+48|0;f=e;h=e+16|0;j=b+44|0;k=c[j>>2]|0;if((k|0)>0){l=c[b+88>>2]|0;m=b+104|0;n=0;do{if((c[l+(n<<2)>>2]&1028|0)==1028){o=c[m>>2]|0;g[o+(n<<3)>>2]=0;g[o+(n<<3)+4>>2]=0}n=n+1|0}while((n|0)<(k|0))}p=+g[d>>2]*2.5;k=b+252|0;if((c[k>>2]|0)<=0){i=e;return}n=b+248|0;m=b+96|0;l=f+8|0;o=b+144|0;q=b+104|0;r=h+16|0;s=h+20|0;t=h+4|0;u=b+32|0;v=b+320|0;w=d+4|0;d=b+88|0;x=b+21|0;y=b+112|0;z=0;do{A=c[n>>2]|0;a:do if((c[A+(z*20|0)+8>>2]&1024|0)!=0){B=c[A+(z*20|0)>>2]|0;C=c[A+(z*20|0)+4>>2]|0;D=c[m>>2]|0;E=
D+(B<<3)|0;F=+g[E>>2];G=+g[E+4>>2];E=D+(C<<3)|0;H=+g[E>>2];I=+g[E+4>>2];J=+(F<H?F:H);K=+(G<I?G:I);E=f;g[E>>2]=J;g[E+4>>2]=K;K=+(F>H?F:H);J=+(G>I?G:I);E=l;g[E>>2]=K;g[E+4>>2]=J;E=c[o>>2]|0;D=c[E+(B<<2)>>2]|0;L=c[E+(C<<2)>>2]|0;if((D|0)!=0?(c[D+12>>2]&2|0)!=0:0){nk(D);J=+g[D+56>>2];M=+g[D+48>>2]-J*(G-+g[D+44>>2]);N=J*(F-+g[D+40>>2])+ +g[D+52>>2]}else{E=(c[q>>2]|0)+(B<<3)|0;J=+g[E>>2];M=J;N=+g[E+4>>2]}if((L|0)!=0?(c[L+12>>2]&2|0)!=0:0){nk(L);J=+g[L+56>>2];O=+g[L+48>>2]-J*(I-+g[L+44>>2]);P=J*(H-+g[L+
40>>2])+ +g[L+52>>2]}else{E=(c[q>>2]|0)+(C<<3)|0;J=+g[E>>2];O=J;P=+g[E+4>>2]}J=H-F;H=I-G;I=O-M;K=P-N;Nk(h,b,f);E=c[r>>2]|0;C=c[s>>2]|0;if(E>>>0<C>>>0){B=c[h>>2]|0;R=c[t>>2]|0;S=E;while(1){E=c[S+4>>2]&1048575;T=S;S=S+8|0;c[r>>2]=S;if(E>>>0<B>>>0|E>>>0>R>>>0)if(S>>>0<C>>>0){S=S;continue}else break;E=c[T>>2]|0;if(!((E|0)>-1))break a;T=(c[m>>2]|0)+(E<<3)|0;U=+g[T>>2];V=+g[T+4>>2];T=c[(c[o>>2]|0)+(E<<2)>>2]|0;b:do if(!((D|0)==(T|0)|(L|0)==(T|0))){W=(T|0)==0;if(!W?(c[T+12>>2]&2|0)!=0:0){nk(T);X=+g[T+56>>
2];Y=+g[T+48>>2]-X*(V-+g[T+44>>2]);Z=X*(U-+g[T+40>>2])+ +g[T+52>>2]}else{_=(c[q>>2]|0)+(E<<3)|0;X=+g[_>>2];Y=X;Z=+g[_+4>>2]}X=U-F;$=V-G;aa=Y-M;ba=Z-N;ca=I*ba-K*aa;da=J*ba-H*aa-(K*X-I*$);ea=J*$-H*X;do if(ca==0){if(da==0)break b;fa=-ea/da;if(!(fa>=0&fa<p))break b;ga=J+I*fa;ha=H+K*fa;ia=(ga*(X+aa*fa)+ha*($+ba*fa))/(ga*ga+ha*ha);if(ia>=0&ia<=1)ja=ia;else break b}else{ia=da*da-ea*4*ca;if(ia<0)break b;ha=+Q(+ia);ia=ca*2;ga=(-da-ha)/ia;fa=(ha-da)/ia;_=ga>fa;ia=_?fa:ga;ha=_?ga:fa;fa=J+I*ia;ga=H+K*ia;ka=(fa*
(X+aa*ia)+ga*($+ba*ia))/(fa*fa+ga*ga);if(ia>=0&ia<p?ka>=0&ka<=1:0){ja=ka;break}if(!(ha>=0&ha<p))break b;ka=J+I*ha;ia=H+K*ha;ga=(ka*(X+aa*ha)+ia*($+ba*ha))/(ka*ka+ia*ia);if(ga>=0&ga<=1)ja=ga;else break b}while(0);ba=M+I*ja-Y;$=N+K*ja-Z;aa=+g[u>>2]*.75;X=aa*+g[v>>2]*aa;aa=ba*X;da=$*X;if(!W?(c[T+12>>2]&2|0)!=0:0){nk(T);X=+g[T+32>>2];nk(T);ca=+g[T+36>>2];if(X>0){ea=1/X;_=T+48|0;g[_>>2]=aa*ea+ +g[_>>2];_=T+52|0;g[_>>2]=da*ea+ +g[_>>2]}if(ca>0){nk(T);_=T+40|0;ea=+g[_>>2];la=T+56|0;g[la>>2]=(da*(U-ea)-aa*
(V-+g[_+4>>2]))/ca+ +g[la>>2]}}else{la=c[q>>2]|0;_=la+(E<<3)|0;g[_>>2]=ba+ +g[_>>2];_=la+(E<<3)+4|0;g[_>>2]=$+ +g[_>>2]}$=-+g[w>>2];ba=aa*$;aa=da*$;if(ba!=0|aa!=0?(c[(c[d>>2]|0)+(E<<2)>>2]&4|0)==0:0){if((a[x>>0]|0)==0){xn(c[y>>2]|0,0,c[j>>2]<<3|0)|0;a[x>>0]=1}_=c[y>>2]|0;la=_+(E<<3)|0;g[la>>2]=ba+ +g[la>>2];la=_+(E<<3)+4|0;g[la>>2]=aa+ +g[la>>2]}}while(0);if(!(S>>>0<C>>>0))break}}}while(0);z=z+1|0}while((z|0)<(c[k>>2]|0));i=e;return}function bl(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,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,ga=0;e=i;i=i+48|0;f=e+32|0;h=e+28|0;j=e;k=b+44|0;l=c[k>>2]|0;if((l|0)==0){i=e;return}m=c[b+280>>2]|0;a:do if((m|0)!=0){n=b+296|0;o=n;p=+g[d>>2]/+g[b+396>>2]*4294967296;q=zn(~~p>>>0|0,(+P(p)>=1?p>0?(fa(+O(p/4294967296),4294967295)|0)>>>0:~~+$((p-+(~~p>>>0))/4294967296)>>>0:0)|0,c[o>>2]|0,c[o+4>>2]|0)|0;o=E;r=n;c[r>>2]=q;c[r+4>>2]=o;r=c[b+
288>>2]|0;q=b+304|0;if((a[q>>0]|0)!=0){c[h>>2]=m;sl(r,r+(l<<2)|0,h);a[q>>0]=0}if((l|0)>0){q=b+88|0;n=l;do{n=n+-1|0;s=c[r+(n<<2)>>2]|0;t=c[m+(s<<2)>>2]|0;if((o|0)<(t|0)|(t|0)<1)break a;Ak(b,s,c[(c[q>>2]|0)+(s<<2)>>2]|2)}while((n|0)>0)}}while(0);m=b+8|0;if((c[m>>2]&2|0)!=0)xk(b);l=b+12|0;if((a[l>>0]|0)!=0){c[m>>2]=0;h=c[k>>2]|0;if((h|0)>0){n=c[b+88>>2]|0;q=0;o=0;do{q=c[n+(o<<2)>>2]|q;c[m>>2]=q;o=o+1|0}while((o|0)!=(h|0))}a[l>>0]=0}l=b+20|0;if((a[l>>0]|0)!=0){h=b+16|0;c[h>>2]=0;o=c[b+312>>2]|0;if((o|
0)!=0){q=0;n=o;do{q=c[n+12>>2]|q;c[h>>2]=q;n=c[n+24>>2]|0}while((n|0)!=0)}a[l>>0]=0}if((a[b>>0]|0)!=0){i=e;return}l=b+24|0;c[l>>2]=0;n=d+20|0;if((c[n>>2]|0)<=0){i=e;return}q=b+4|0;h=j+4|0;o=b+116|0;r=b+236|0;s=b+232|0;t=b+220|0;u=b+216|0;v=b+16|0;w=b+21|0;x=b+324|0;y=b+400|0;z=b+104|0;A=b+32|0;B=b+88|0;C=b+96|0;D=b+372|0;F=b+144|0;G=b+132|0;H=b+368|0;I=b+364|0;J=b+36|0;K=b+28|0;L=b+112|0;M=f+4|0;do{c[q>>2]=(c[q>>2]|0)+1;c[j+0>>2]=c[d+0>>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];c[j+16>>2]=c[d+16>>2];c[j+20>>2]=c[d+20>>2];c[j+24>>2]=c[d+24>>2];p=+(c[n>>2]|0);N=+g[j>>2]/p;g[j>>2]=N;R=+g[h>>2]*p;g[h>>2]=R;Gk(b,0);Yk(b);xn(c[o>>2]|0,0,c[k>>2]<<2|0)|0;S=c[r>>2]|0;if((S|0)>0){T=c[s>>2]|0;U=c[o>>2]|0;V=0;do{W=U+(c[T+(V*28|0)>>2]<<2)|0;g[W>>2]=+g[T+(V*28|0)+12>>2]+ +g[W>>2];V=V+1|0}while((V|0)!=(S|0))}S=c[t>>2]|0;if((S|0)>0){V=c[u>>2]|0;T=c[o>>2]|0;U=0;do{W=c[V+(U*24|0)+4>>2]|0;p=+g[V+(U*24|0)+8>>2];X=T+(c[V+(U*24|0)>>2]<<2)|0;g[X>>2]=p+ +g[X>>2];X=T+(W<<2)|0;g[X>>2]=p+ +g[X>>
2];U=U+1|0}while((U|0)!=(S|0))}if((c[v>>2]&16|0)!=0)Mk(b);S=c[m>>2]|0;if((S&4096|0)==0)Y=S;else{S=c[B>>2]|0;c[f>>2]=7360;c[M>>2]=S;Hk(b,0,c[k>>2]|0,f);if((c[k>>2]|0)>0){S=c[B>>2]|0;U=0;do{T=S+(U<<2)|0;c[T>>2]=c[T>>2]&-4097;U=U+1|0}while((U|0)<(c[k>>2]|0))}U=c[m>>2]&-4097;c[m>>2]=U;Y=U}if((a[w>>0]|0)!=0){p=+g[J>>2]*1.3333333730697632;Z=N*p*+g[K>>2]*p;U=c[k>>2]|0;if((U|0)>0){S=c[z>>2]|0;T=c[L>>2]|0;V=0;do{p=Z*+g[T+(V<<3)+4>>2];X=S+(V<<3)|0;g[X>>2]=Z*+g[T+(V<<3)>>2]+ +g[X>>2];X=S+(V<<3)+4|0;g[X>>2]=
p+ +g[X>>2];V=V+1|0}while((V|0)!=(U|0))}a[w>>0]=0}if((Y&32|0)==0)_=Y;else{cl(b);_=c[m>>2]|0}if((_&8192|0)!=0?(Z=+g[I>>2]*+g[A>>2]*R,U=c[t>>2]|0,(U|0)>0):0){V=c[u>>2]|0;S=0;do{do if((c[V+(S*24|0)+20>>2]&8192|0)!=0){T=c[V+(S*24|0)>>2]|0;X=c[V+(S*24|0)+4>>2]|0;W=c[F>>2]|0;if((c[W+(T<<2)>>2]|0)==(c[W+(X<<2)>>2]|0))break;W=V+(S*24|0)+12|0;N=+g[W>>2];p=Z*+g[V+(S*24|0)+8>>2];aa=p*N;N=p*+g[W+4>>2];W=c[z>>2]|0;ba=W+(T<<3)|0;g[ba>>2]=+g[ba>>2]-aa;ba=W+(T<<3)+4|0;g[ba>>2]=+g[ba>>2]-N;ba=W+(X<<3)|0;g[ba>>2]=
aa+ +g[ba>>2];ba=W+(X<<3)+4|0;g[ba>>2]=N+ +g[ba>>2]}while(0);S=S+1|0}while((S|0)!=(U|0))}if((_&64|0)!=0?(Z=+g[H>>2]*+g[A>>2]*R,U=c[t>>2]|0,(U|0)>0):0){S=c[u>>2]|0;V=0;do{do if((c[S+(V*24|0)+20>>2]&64|0)!=0){N=+g[S+(V*24|0)+8>>2];if(!(N>.25))break;ba=c[S+(V*24|0)>>2]|0;X=c[S+(V*24|0)+4>>2]|0;W=S+(V*24|0)+12|0;aa=+g[W>>2];p=Z*(N+-.25);N=p*aa;aa=p*+g[W+4>>2];W=c[z>>2]|0;T=W+(ba<<3)|0;g[T>>2]=+g[T>>2]-N;T=W+(ba<<3)+4|0;g[T>>2]=+g[T>>2]-aa;T=W+(X<<3)|0;g[T>>2]=N+ +g[T>>2];T=W+(X<<3)+4|0;g[T>>2]=aa+ +g[T>>
2]}while(0);V=V+1|0}while((V|0)!=(U|0))}if((_&128|0)!=0)dl(b,j);if((c[v>>2]&1|0)!=0?(Z=+g[h>>2]*+g[D>>2],U=c[t>>2]|0,(U|0)>0):0){V=c[u>>2]|0;S=c[F>>2]|0;T=0;do{X=c[V+(T*24|0)>>2]|0;W=c[V+(T*24|0)+4>>2]|0;if((c[S+(X<<2)>>2]|0)!=(c[S+(W<<2)>>2]|0)){ba=V+(T*24|0)+12|0;R=+g[ba>>2];ca=c[G>>2]|0;aa=+g[V+(T*24|0)+8>>2]*Z*(+g[ca+(X<<2)>>2]+ +g[ca+(W<<2)>>2]);N=R*aa;R=+g[ba+4>>2]*aa;ba=c[z>>2]|0;ca=ba+(X<<3)|0;g[ca>>2]=+g[ca>>2]-N;ca=ba+(X<<3)+4|0;g[ca>>2]=+g[ca>>2]-R;ca=ba+(W<<3)|0;g[ca>>2]=N+ +g[ca>>2];
ca=ba+(W<<3)+4|0;g[ca>>2]=R+ +g[ca>>2]}T=T+1|0}while((T|0)!=(U|0))}if((c[m>>2]&256|0)!=0)el(b);Z=+g[j>>2]*+g[x>>2];U=(c[y>>2]|0)+102980|0;R=+g[U>>2];N=Z*R;R=Z*+g[U+4>>2];U=c[k>>2]|0;if((U|0)>0){T=c[z>>2]|0;V=0;do{S=T+(V<<3)|0;g[S>>2]=N+ +g[S>>2];S=T+(V<<3)+4|0;g[S>>2]=R+ +g[S>>2];V=V+1|0}while((V|0)!=(U|0))}if((c[m>>2]&2048|0)!=0)fl(b,j);gl(b,j);hl(b,j);U=c[m>>2]|0;if((U&2048|0)==0)da=U;else{il(b);da=c[m>>2]|0}if((da&16|0)==0)ea=da;else{jl(b,j);ea=c[m>>2]|0}if((ea&8|0)!=0)kl(b,j);R=+g[A>>2]*+g[h>>
2];N=R*R;U=c[k>>2]|0;if((U|0)>0){V=c[z>>2]|0;T=0;do{S=V+(T<<3)|0;R=+g[S>>2];ca=V+(T<<3)+4|0;Z=+g[ca>>2];aa=R*R+Z*Z;if(aa>N){p=+Q(+(N/aa));g[S>>2]=R*p;g[ca>>2]=Z*p}T=T+1|0}while((T|0)!=(U|0))}if((c[v>>2]&2|0)!=0)ll(b);if((c[m>>2]&1024|0)!=0)al(b,j);$k(b,j);if((c[v>>2]&2|0)!=0)ml(b,j);U=c[k>>2]|0;do if((c[m>>2]&4|0)==0)ga=95;else{if((U|0)<=0)break;T=c[B>>2]|0;V=0;do{if((c[T+(V<<2)>>2]&4|0)!=0){ca=c[z>>2]|0;g[ca+(V<<3)>>2]=0;g[ca+(V<<3)+4>>2]=0}V=V+1|0}while((V|0)!=(U|0));ga=95}while(0);do if((ga|0)==
95){ga=0;if((U|0)<=0)break;V=c[C>>2]|0;N=+g[j>>2];T=c[z>>2]|0;ca=0;do{p=N*+g[T+(ca<<3)+4>>2];S=V+(ca<<3)|0;g[S>>2]=N*+g[T+(ca<<3)>>2]+ +g[S>>2];S=V+(ca<<3)+4|0;g[S>>2]=p+ +g[S>>2];ca=ca+1|0}while((ca|0)<(U|0))}while(0);U=(c[l>>2]|0)+1|0;c[l>>2]=U}while((U|0)<(c[n>>2]|0));i=e;return}function cl(a){a=a|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;d=i;e=+g[a+352>>2];f=c[a+236>>2]|0;if((f|0)>0){h=a+96|0;j=a+104|0;k=a+36|0;l=
a+28|0;m=c[a+232>>2]|0;n=c[a+88>>2]|0;o=0;do{p=c[m+(o*28|0)>>2]|0;if((c[n+(p<<2)>>2]&32|0)!=0?(q=c[m+(o*28|0)+4>>2]|0,r=(c[h>>2]|0)+(p<<3)|0,s=+g[r>>2],t=+g[r+4>>2],r=q+88|0,u=+g[r>>2],v=q+60|0,w=q+64|0,x=q+80|0,y=q+84|0,z=c[j>>2]|0,A=z+(p<<3)|0,B=+g[A>>2],C=z+(p<<3)+4|0,D=+g[C>>2],E=+g[m+(o*28|0)+12>>2]*e*+g[m+(o*28|0)+24>>2],F=E*(+g[x>>2]-u*(t-+g[w>>2])-B),G=E*(u*(s-+g[v>>2])+ +g[y>>2]-D),u=+g[k>>2]*1.3333333730697632,E=u*+g[l>>2]*u,g[A>>2]=B+F*E,g[C>>2]=D+G*E,E=-F,F=-G,(c[q>>2]|0)==2):0){C=q+4|
0;A=b[C>>1]|0;if((A&2)==0?(p=A&65535,(p&2|0)==0):0){z=(p|2)&65535;b[C>>1]=z;g[q+160>>2]=0;H=z}else H=A;if(!((H&2)==0)){G=+g[q+136>>2];g[x>>2]=G*E+ +g[x>>2];g[y>>2]=G*F+ +g[y>>2];g[r>>2]=+g[r>>2]+ +g[q+144>>2]*((s-+g[v>>2])*F-(t-+g[w>>2])*E)}}o=o+1|0}while((o|0)<(f|0))}f=c[a+220>>2]|0;if((f|0)<=0){i=d;return}o=c[a+216>>2]|0;H=a+104|0;a=0;do{if((c[o+(a*24|0)+20>>2]&32|0)!=0){l=c[o+(a*24|0)>>2]|0;k=c[o+(a*24|0)+4>>2]|0;m=c[H>>2]|0;j=m+(k<<3)|0;h=m+(l<<3)|0;E=+g[h>>2];n=m+(k<<3)+4|0;k=m+(l<<3)+4|0;t=
+g[k>>2];F=e*+g[o+(a*24|0)+8>>2];s=F*(+g[j>>2]-E);G=F*(+g[n>>2]-t);g[h>>2]=E+s;g[k>>2]=t+G;g[j>>2]=+g[j>>2]-s;g[n>>2]=+g[n>>2]-G}a=a+1|0}while((a|0)<(f|0));i=d;return}function dl(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;d=i;e=a+44|0;if((c[e>>2]|0)>0){f=a+128|0;h=0;do{j=8784;k=c[j+4>>2]|0;l=(c[f>>2]|0)+(h<<3)|0;c[l>>2]=c[j>>2];c[l+4>>2]=k;h=h+1|0}while((h|0)<(c[e>>2]|0))}e=a+216|0;h=c[a+220>>2]|0;f=(h|0)>0;if(f){k=a+128|0;l=c[e>>2]|0;j=0;do{if((c[l+
(j*24|0)+20>>2]&128|0)!=0){m=c[l+(j*24|0)>>2]|0;n=c[l+(j*24|0)+4>>2]|0;o=+g[l+(j*24|0)+8>>2];p=l+(j*24|0)+12|0;q=+g[p>>2];r=o*(1-o);o=r*q;q=r*+g[p+4>>2];p=c[k>>2]|0;s=p+(m<<3)|0;g[s>>2]=+g[s>>2]-o;s=p+(m<<3)+4|0;g[s>>2]=+g[s>>2]-q;s=p+(n<<3)|0;g[s>>2]=o+ +g[s>>2];s=p+(n<<3)+4|0;g[s>>2]=q+ +g[s>>2]}j=j+1|0}while((j|0)<(h|0))}q=+g[a+32>>2]*+g[b+4>>2];o=+g[a+356>>2]*q;r=q*+g[a+360>>2];t=q*.5;if(!f){i=d;return}f=a+116|0;b=a+128|0;j=a+104|0;a=c[e>>2]|0;e=0;do{if((c[a+(e*24|0)+20>>2]&128|0)!=0){k=c[a+(e*
24|0)>>2]|0;l=c[a+(e*24|0)+4>>2]|0;s=a+(e*24|0)+12|0;q=+g[s>>2];u=+g[s+4>>2];s=c[f>>2]|0;n=c[b>>2]|0;v=o*(+g[s+(k<<2)>>2]+ +g[s+(l<<2)>>2]+-2)+r*(q*(+g[n+(l<<3)>>2]-+g[n+(k<<3)>>2])+u*(+g[n+(l<<3)+4>>2]-+g[n+(k<<3)+4>>2]));w=+g[a+(e*24|0)+8>>2]*(v<t?v:t);v=q*w;q=u*w;n=c[j>>2]|0;s=n+(k<<3)|0;g[s>>2]=+g[s>>2]-v;s=n+(k<<3)+4|0;g[s>>2]=+g[s>>2]-q;s=n+(l<<3)|0;g[s>>2]=+g[s>>2]+v;s=n+(l<<3)+4|0;g[s>>2]=+g[s>>2]+q}e=e+1|0}while((e|0)<(h|0));i=d;return}function el(b){b=b|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;e=i;f=~~(+g[b+388>>2]*128);if((f|0)==0){i=e;return}h=b+220|0;j=c[h>>2]|0;if((j|0)<=0){i=e;return}k=b+216|0;l=b+88|0;m=b+136|0;b=d[8064]|0;n=j;j=0;while(1){o=c[k>>2]|0;p=c[o+(j*24|0)>>2]|0;q=c[o+(j*24|0)+4>>2]|0;o=c[l>>2]|0;if((c[o+(p<<2)>>2]&256&c[o+(q<<2)>>2]|0)==0)r=n;else{o=c[m>>2]|0;s=o+(q<<2)|0;t=o+(p<<2)|0;u=d[t>>0]|0;v=(aa((d[s>>0]|0)-u|0,f)|0)>>b;w=o+(q<<2)+1|0;x=o+(p<<2)+1|0;y=d[x>>0]|0;z=(aa((d[w>>0]|0)-y|0,f)|0)>>b;
A=o+(q<<2)+2|0;B=o+(p<<2)+2|0;C=d[B>>0]|0;D=(aa((d[A>>0]|0)-C|0,f)|0)>>b;E=o+(q<<2)+3|0;q=o+(p<<2)+3|0;p=d[q>>0]|0;o=(aa((d[E>>0]|0)-p|0,f)|0)>>b;a[t>>0]=v+u;a[x>>0]=z+y;a[B>>0]=D+C;a[q>>0]=o+p;a[s>>0]=(d[s>>0]|0)-v;a[w>>0]=(d[w>>0]|0)-z;a[A>>0]=(d[A>>0]|0)-D;a[E>>0]=(d[E>>0]|0)-o;r=c[h>>2]|0}j=j+1|0;if((j|0)>=(r|0))break;else n=r}i=e;return}function fl(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;d=i;e=a+120|0;f=c[e>>2]|0;if((f|0)==
0){h=a+48|0;j=c[h>>2]|0;if((j|0)==0){vk(a,256);k=c[h>>2]|0}else k=j;j=Em(c[a+400>>2]|0,k<<2)|0;xn(j|0,0,c[h>>2]<<2|0)|0;l=j}else l=f;c[e>>2]=l;m=+g[a+32>>2]*+g[b+4>>2];n=+g[a+320>>2]*m*m;m=+g[a+376>>2]*n;o=n*.25;n=+g[a+380>>2];b=a+384|0;if((c[b>>2]|0)<=0){i=d;return}l=a+124|0;f=a+44|0;j=a+220|0;h=a+116|0;k=a+88|0;p=a+216|0;a=c[f>>2]|0;q=1;while(1){xn(c[l>>2]|0,0,a<<2|0)|0;r=c[j>>2]|0;if((r|0)>0){s=c[p>>2]|0;t=0;do{if((c[s+(t*24|0)+20>>2]&2048|0)!=0){u=c[s+(t*24|0)>>2]|0;v=c[s+(t*24|0)+4>>2]|0;w=+g[s+
(t*24|0)+8>>2];x=c[e>>2]|0;y=c[l>>2]|0;z=y+(u<<2)|0;g[z>>2]=w*+g[x+(v<<2)>>2]+ +g[z>>2];z=y+(v<<2)|0;g[z>>2]=w*+g[x+(u<<2)>>2]+ +g[z>>2]}t=t+1|0}while((t|0)<(r|0))}r=c[f>>2]|0;if((r|0)>0){t=c[h>>2]|0;s=c[k>>2]|0;z=0;do{w=+g[t+(z<<2)>>2];if((c[s+(z<<2)>>2]&2048|0)==0)g[(c[e>>2]|0)+(z<<2)>>2]=0;else{A=(m*(w+-1)+ +g[(c[l>>2]|0)+(z<<2)>>2])/(n+w);w=A<o?A:o;g[(c[e>>2]|0)+(z<<2)>>2]=w<0?0:w}z=z+1|0}while((z|0)<(r|0))}if((q|0)>=(c[b>>2]|0))break;a=r;q=q+1|0}i=d;return}function gl(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,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;f=a+320|0;h=a+32|0;j=+g[h>>2]*+g[d+4>>2];k=+g[f>>2]*j*j;j=+g[a+336>>2]*k;l=k*.25;m=c[a+44>>2]|0;n=(m|0)>0;if(n){o=c[a+116>>2]|0;p=c[a+124>>2]|0;q=0;do{k=+g[o+(q<<2)>>2]+-1;r=j*(k<0?0:k);g[p+(q<<2)>>2]=r<l?r:l;q=q+1|0}while((q|0)<(m|0))}q=c[a+8>>2]|0;if(!((q&192|0)==0|n^1)){p=c[a+88>>2]|0;o=a+124|0;s=0;do{if((c[p+(s<<2)>>2]&192|0)!=0)g[(c[o>>2]|0)+(s<<2)>>2]=0;s=s+1|0}while((s|0)<(m|0))}if(!((q&2048|0)==0|n^1)){n=
c[a+88>>2]|0;q=a+120|0;s=a+124|0;o=0;do{if((c[n+(o<<2)>>2]&2048|0)!=0){p=(c[s>>2]|0)+(o<<2)|0;g[p>>2]=+g[(c[q>>2]|0)+(o<<2)>>2]+ +g[p>>2]}o=o+1|0}while((o|0)<(m|0))}l=+g[d>>2]/(+g[f>>2]*+g[h>>2]);h=c[a+236>>2]|0;if((h|0)>0){f=a+36|0;d=a+28|0;m=c[a+232>>2]|0;o=c[a+96>>2]|0;q=c[a+124>>2]|0;s=c[a+104>>2]|0;n=0;do{p=c[m+(n*28|0)>>2]|0;t=c[m+(n*28|0)+4>>2]|0;r=+g[m+(n*28|0)+12>>2];u=m+(n*28|0)+16|0;k=+g[u>>2];v=+g[u+4>>2];u=o+(p<<3)|0;w=+g[u>>2];x=+g[u+4>>2];y=l*r*+g[m+(n*28|0)+24>>2]*(j*r+ +g[q+(p<<2)>>
2]);r=k*y;k=v*y;y=+g[f>>2]*1.3333333730697632;v=y*+g[d>>2]*y;u=s+(p<<3)|0;g[u>>2]=+g[u>>2]-r*v;u=s+(p<<3)+4|0;g[u>>2]=+g[u>>2]-k*v;if((c[t>>2]|0)==2){u=t+4|0;p=b[u>>1]|0;if((p&2)==0?(z=p&65535,(z&2|0)==0):0){A=(z|2)&65535;b[u>>1]=A;g[t+160>>2]=0;B=A}else B=p;if(!((B&2)==0)){v=+g[t+136>>2];p=t+80|0;g[p>>2]=r*v+ +g[p>>2];p=t+84|0;g[p>>2]=k*v+ +g[p>>2];p=t+88|0;g[p>>2]=+g[p>>2]+ +g[t+144>>2]*(k*(w-+g[t+60>>2])-r*(x-+g[t+64>>2]))}}n=n+1|0}while((n|0)<(h|0))}h=c[a+220>>2]|0;if((h|0)<=0){i=e;return}n=c[a+
216>>2]|0;B=c[a+124>>2]|0;s=c[a+104>>2]|0;a=0;do{d=c[n+(a*24|0)>>2]|0;f=c[n+(a*24|0)+4>>2]|0;q=n+(a*24|0)+12|0;j=+g[q>>2];x=l*+g[n+(a*24|0)+8>>2]*(+g[B+(d<<2)>>2]+ +g[B+(f<<2)>>2]);r=j*x;j=+g[q+4>>2]*x;q=s+(d<<3)|0;g[q>>2]=+g[q>>2]-r;q=s+(d<<3)+4|0;g[q>>2]=+g[q>>2]-j;q=s+(f<<3)|0;g[q>>2]=r+ +g[q>>2];q=s+(f<<3)+4|0;g[q>>2]=j+ +g[q>>2];a=a+1|0}while((a|0)<(h|0));i=e;return}function hl(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,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;e=i;f=+g[a+340>>2];h=1/(+g[a+32>>2]*+g[d+4>>2]);d=c[a+236>>2]|0;if((d|0)>0){j=a+36|0;k=a+28|0;l=c[a+232>>2]|0;m=c[a+96>>2]|0;n=c[a+104>>2]|0;o=0;do{p=c[l+(o*28|0)>>2]|0;q=c[l+(o*28|0)+4>>2]|0;r=l+(o*28|0)+16|0;s=+g[r>>2];t=+g[r+4>>2];r=m+(p<<3)|0;u=+g[r>>2];v=+g[r+4>>2];r=q+88|0;w=+g[r>>2];x=q+60|0;y=q+64|0;z=q+80|0;A=q+84|0;B=n+(p<<3)|0;C=+g[B>>2];D=n+(p<<3)+4|0;E=+g[D>>2];F=s*(+g[z>>2]-w*(v-+g[y>>2])-C)+t*(w*(u-+g[x>>2])+ +g[A>>2]-E);if(F<0?(w=f*+g[l+(o*28|0)+12>>2],G=
h*F,H=G>-.5?-G:.5,G=F*+g[l+(o*28|0)+24>>2]*(w>H?w:H),H=s*G,s=t*G,G=+g[j>>2]*1.3333333730697632,t=G*+g[k>>2]*G,g[B>>2]=C+t*H,g[D>>2]=E+t*s,t=-H,H=-s,(c[q>>2]|0)==2):0){D=q+4|0;B=b[D>>1]|0;if((B&2)==0?(p=B&65535,(p&2|0)==0):0){I=(p|2)&65535;b[D>>1]=I;g[q+160>>2]=0;J=I}else J=B;if(!((J&2)==0)){s=+g[q+136>>2];g[z>>2]=s*t+ +g[z>>2];g[A>>2]=s*H+ +g[A>>2];g[r>>2]=+g[r>>2]+ +g[q+144>>2]*((u-+g[x>>2])*H-(v-+g[y>>2])*t)}}o=o+1|0}while((o|0)<(d|0))}d=c[a+220>>2]|0;if((d|0)<=0){i=e;return}o=c[a+216>>2]|0;J=c[a+
104>>2]|0;a=0;do{k=c[o+(a*24|0)>>2]|0;j=c[o+(a*24|0)+4>>2]|0;l=o+(a*24|0)+12|0;t=+g[l>>2];v=+g[l+4>>2];l=J+(j<<3)|0;n=J+(k<<3)|0;H=+g[n>>2];m=J+(j<<3)+4|0;j=J+(k<<3)+4|0;u=+g[j>>2];s=t*(+g[l>>2]-H)+v*(+g[m>>2]-u);if(s<0){E=f*+g[o+(a*24|0)+8>>2];C=h*s;G=C>-.5?-C:.5;C=s*(E>G?E:G);G=t*C;t=v*C;g[n>>2]=H+G;g[j>>2]=u+t;g[l>>2]=+g[l>>2]-G;g[m>>2]=+g[m>>2]-t}a=a+1|0}while((a|0)<(d|0));i=e;return}function il(a){a=a|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;d=i;e=c[a+236>>2]|0;if((e|0)<=0){i=d;return}f=a+96|0;h=a+104|0;j=a+36|0;k=a+28|0;l=c[a+232>>2]|0;m=c[a+88>>2]|0;a=0;do{n=c[l+(a*28|0)>>2]|0;if(((c[m+(n<<2)>>2]&2048|0)!=0?(o=c[l+(a*28|0)+4>>2]|0,p=l+(a*28|0)+16|0,q=+g[p>>2],r=+g[p+4>>2],p=(c[f>>2]|0)+(n<<3)|0,s=+g[p>>2],t=+g[p+4>>2],p=o+88|0,u=+g[p>>2],v=o+60|0,w=o+64|0,x=o+80|0,y=o+84|0,z=c[h>>2]|0,A=z+(n<<3)|0,B=+g[A>>2],C=z+(n<<3)+4|0,D=+g[C>>2],E=q*(+g[x>>2]-u*(t-+g[w>>2])-B)+r*(u*(s-+g[v>>2])+ +g[y>>2]-D),E<0):0)?(u=E*+g[l+
(a*28|0)+24>>2]*.5,E=q*u,q=r*u,u=+g[j>>2]*1.3333333730697632,r=u*+g[k>>2]*u,g[A>>2]=B+E*r,g[C>>2]=D+q*r,r=-E,E=-q,(c[o>>2]|0)==2):0){C=o+4|0;A=b[C>>1]|0;if((A&2)==0?(n=A&65535,(n&2|0)==0):0){z=(n|2)&65535;b[C>>1]=z;g[o+160>>2]=0;F=z}else F=A;if(!((F&2)==0)){q=+g[o+136>>2];g[x>>2]=q*r+ +g[x>>2];g[y>>2]=q*E+ +g[y>>2];g[p>>2]=+g[p>>2]+ +g[o+144>>2]*((s-+g[v>>2])*E-(t-+g[w>>2])*r)}}a=a+1|0}while((a|0)<(e|0));i=d;return}function jl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=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;d=i;e=+g[b+4>>2]*+g[a+344>>2];f=a+268|0;h=c[f>>2]|0;if((h|0)<=0){i=d;return}j=a+264|0;l=a+96|0;m=a+104|0;a=h;h=0;while(1){n=c[j>>2]|0;if((c[n+(h*60|0)+12>>2]&16|0)==0)o=a;else{p=c[n+(h*60|0)>>2]|0;q=c[n+(h*60|0)+4>>2]|0;r=c[n+(h*60|0)+8>>2]|0;s=c[l>>2]|0;t=s+(p<<3)|0;u=+g[t>>2];v=+g[t+4>>2];t=s+(q<<3)|0;w=+g[t>>2];x=+g[t+4>>2];t=s+(r<<3)|0;y=+g[t>>2];s=c[m>>2]|0;z=+g[b>>2];A=s+(p<<3)|0;B=+g[A>>2];C=s+(p<<3)+
4|0;D=+g[C>>2];E=u+z*B;u=v+z*D;p=s+(q<<3)|0;F=s+(q<<3)+4|0;v=w+z*+g[p>>2];w=x+z*+g[F>>2];q=s+(r<<3)|0;G=s+(r<<3)+4|0;x=y+z*+g[q>>2];y=+g[t+4>>2]+z*+g[G>>2];z=(E+v+x)*.3333333432674408;H=(u+w+y)*.3333333432674408;I=E-z;E=u-H;u=v-z;v=w-H;w=x-z;z=y-H;H=+g[n+(h*60|0)+20>>2];y=+g[n+(h*60|0)+24>>2];t=n+(h*60|0)+28|0;x=+g[t>>2];r=n+(h*60|0)+32|0;J=+g[r>>2];s=n+(h*60|0)+36|0;K=+g[s>>2];L=n+(h*60|0)+40|0;M=+g[L>>2];N=H*E-y*I+(x*v-J*u)+(K*z-w*M);O=H*I+y*E+(x*u+J*v)+(w*K+z*M);M=N*N+O*O;K=(c[k>>2]=1597463007-
((g[k>>2]=M,c[k>>2]|0)>>1),+g[k>>2]);J=K*(1.5-K*M*.5*K);K=N*J;N=O*J;J=e*+g[n+(h*60|0)+16>>2];g[A>>2]=B+J*(H*N-y*K-I);g[C>>2]=D+J*(H*K+y*N-E);E=+g[t>>2];y=+g[r>>2];g[p>>2]=+g[p>>2]+J*(E*N-y*K-u);g[F>>2]=+g[F>>2]+J*(E*K+y*N-v);v=+g[s>>2];y=+g[L>>2];g[q>>2]=+g[q>>2]+J*(v*N-y*K-w);g[G>>2]=+g[G>>2]+J*(v*K+y*N-z);o=c[f>>2]|0}h=h+1|0;if((h|0)>=(o|0))break;else a=o}i=d;return}function kl(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;d=i;e=+g[b+4>>2]*
+g[a+348>>2];f=c[a+252>>2]|0;if((f|0)<=0){i=d;return}h=a+96|0;j=a+104|0;k=c[a+248>>2]|0;a=0;do{if((c[k+(a*20|0)+8>>2]&8|0)!=0){l=c[k+(a*20|0)>>2]|0;m=c[k+(a*20|0)+4>>2]|0;n=c[h>>2]|0;o=n+(l<<3)|0;p=+g[o>>2];q=+g[o+4>>2];o=n+(m<<3)|0;r=+g[o>>2];n=c[j>>2]|0;s=+g[b>>2];t=n+(l<<3)|0;u=+g[t>>2];v=n+(l<<3)+4|0;w=+g[v>>2];l=n+(m<<3)|0;x=n+(m<<3)+4|0;y=r+s*+g[l>>2]-(p+s*u);p=+g[o+4>>2]+s*+g[x>>2]-(q+s*w);s=+Q(+(y*y+p*p));q=(+g[k+(a*20|0)+16>>2]-s)*e*+g[k+(a*20|0)+12>>2]/s;s=y*q;y=p*q;g[t>>2]=u-s;g[v>>2]=
w-y;g[l>>2]=s+ +g[l>>2];g[x>>2]=y+ +g[x>>2]}a=a+1|0}while((a|0)<(f|0));i=d;return}function ll(a){a=a|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,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;d=i;e=+g[a+340>>2];f=a+236|0;if((c[f>>2]|0)>0){h=a+232|0;j=a+144|0;k=a+96|0;l=0;do{m=c[h>>2]|0;n=c[m+(l*28|0)>>2]|0;o=c[(c[j>>2]|0)+(n<<2)>>2]|0;if(((o|0)!=0?(c[o+12>>2]&2|0)!=
0:0)?(p=c[m+(l*28|0)+4>>2]|0,q=m+(l*28|0)+16|0,r=+g[q>>2],s=+g[q+4>>2],t=+g[m+(l*28|0)+12>>2],m=(c[k>>2]|0)+(n<<3)|0,u=+g[m>>2],v=+g[m+4>>2],m=p+88|0,w=+g[m>>2],n=p+60|0,q=p+64|0,x=p+80|0,y=+g[x>>2]-w*(v-+g[q>>2]),z=p+84|0,A=w*(u-+g[n>>2])+ +g[z>>2],nk(o),B=o+56|0,w=+g[B>>2],C=o+48|0,D=o+52|0,E=r*(y-(+g[C>>2]-w*(v-+g[o+44>>2])))+s*(A-(w*(u-+g[o+40>>2])+ +g[D>>2])),E<0):0){nk(o);w=+g[o+32>>2];nk(o);A=+g[o+36>>2];nk(o);F=o+40|0;y=+g[F>>2];if(w>0)G=1/w;else G=0;if(A>0)H=1/A;else H=0;A=s*(u-y)-r*(v-+g[F+
4>>2]);y=+g[p+132>>2];w=+g[p+44>>2];I=+g[p+48>>2];J=y*(w*w+I*I);I=+g[p+140>>2]+J-J;if(y>0)K=1/y;else K=0;if(I>0)L=1/I;else L=0;I=s*(u-+g[n>>2])-r*(v-+g[q>>2]);y=G+A*A*H+K+I*L*I;if(y>0)M=E/y;else M=0;y=e*(t<1?t:1)*M;t=G*y;g[C>>2]=+g[C>>2]+r*t;g[D>>2]=+g[D>>2]+s*t;g[B>>2]=H*A*y+ +g[B>>2];A=-y;y=r*A;r=s*A;if((c[p>>2]|0)==2){B=p+4|0;D=b[B>>1]|0;if((D&2)==0?(C=D&65535,(C&2|0)==0):0){F=(C|2)&65535;b[B>>1]=F;g[p+160>>2]=0;N=F}else N=D;if(!((N&2)==0)){A=+g[p+136>>2];g[x>>2]=y*A+ +g[x>>2];g[z>>2]=r*A+ +g[z>>
2];g[m>>2]=+g[m>>2]+ +g[p+144>>2]*(r*(u-+g[n>>2])-y*(v-+g[q>>2]))}}}l=l+1|0}while((l|0)<(c[f>>2]|0))}f=a+220|0;if((c[f>>2]|0)<=0){i=d;return}l=a+216|0;N=a+144|0;k=a+96|0;j=a+104|0;h=a+88|0;q=a+32|0;n=a+320|0;a=0;do{p=c[l>>2]|0;m=c[p+(a*24|0)>>2]|0;z=c[p+(a*24|0)+4>>2]|0;x=p+(a*24|0)+12|0;H=+g[x>>2];G=+g[x+4>>2];M=+g[p+(a*24|0)+8>>2];p=c[N>>2]|0;x=c[p+(m<<2)>>2]|0;D=c[p+(z<<2)>>2]|0;p=(x|0)==0;if(p)O=0;else O=(c[x+12>>2]&2|0)!=0;F=(D|0)==0;if(F)P=0;else P=(c[D+12>>2]&2|0)!=0;do if((x|0)!=(D|0)&(O|
P)){B=c[k>>2]|0;L=(+g[B+(m<<3)>>2]+ +g[B+(z<<3)>>2])*.5;K=(+g[B+(m<<3)+4>>2]+ +g[B+(z<<3)+4>>2])*.5;if(!F?(c[D+12>>2]&2|0)!=0:0){nk(D);v=+g[D+56>>2];Q=+g[D+48>>2]-v*(K-+g[D+44>>2]);R=v*(L-+g[D+40>>2])+ +g[D+52>>2]}else{B=(c[j>>2]|0)+(z<<3)|0;v=+g[B>>2];Q=v;R=+g[B+4>>2]}if(!p?(c[x+12>>2]&2|0)!=0:0){nk(x);v=+g[x+56>>2];S=+g[x+48>>2]-v*(K-+g[x+44>>2]);T=v*(L-+g[x+40>>2])+ +g[x+52>>2]}else{B=(c[j>>2]|0)+(m<<3)|0;v=+g[B>>2];S=v;T=+g[B+4>>2]}v=G*(R-T)+H*(Q-S);if(v<0){if(O){nk(x);y=+g[x+32>>2];nk(x);u=+g[x+
36>>2];nk(x);B=x+40|0;r=+g[B>>2];if(y>0)U=1/y;else U=0;if(u>0)V=1/u;else V=0;W=V;X=U;Y=G*(L-r)-H*(K-+g[B+4>>2])}else{if((c[(c[h>>2]|0)+(m<<2)>>2]&4|0)==0?(r=+g[q>>2]*.75,u=r*+g[n>>2]*r,u>0):0)Z=1/u;else Z=0;W=0;X=Z;Y=G*(L-L)-H*(K-K)}if(P){nk(D);u=+g[D+32>>2];nk(D);r=+g[D+36>>2];nk(D);B=D+40|0;y=+g[B>>2];if(u>0)_=1/u;else _=0;if(r>0)$=1/r;else $=0;aa=_;ba=$;ca=G*(L-y)-H*(K-+g[B+4>>2])}else{if((c[(c[h>>2]|0)+(z<<2)>>2]&4|0)==0?(y=+g[q>>2]*.75,r=y*+g[n>>2]*y,r>0):0)da=1/r;else da=0;aa=da;ba=0;ca=G*(L-
L)-H*(K-K)}K=X+Y*W*Y+aa+ca*ba*ca;if(K>0)ea=v/K;else ea=0;K=e*M*ea;if(O){v=X*K;B=x+48|0;g[B>>2]=H*v+ +g[B>>2];B=x+52|0;g[B>>2]=G*v+ +g[B>>2];B=x+56|0;g[B>>2]=W*Y*K+ +g[B>>2]}else{B=c[j>>2]|0;v=X*K;C=B+(m<<3)|0;g[C>>2]=H*v+ +g[C>>2];C=B+(m<<3)+4|0;g[C>>2]=G*v+ +g[C>>2]}v=-K;if(P){K=aa*v;C=D+48|0;g[C>>2]=H*K+ +g[C>>2];C=D+52|0;g[C>>2]=G*K+ +g[C>>2];C=D+56|0;g[C>>2]=ba*ca*v+ +g[C>>2];break}else{C=c[j>>2]|0;K=aa*v;B=C+(z<<3)|0;g[B>>2]=H*K+ +g[B>>2];B=C+(z<<3)+4|0;g[B>>2]=G*K+ +g[B>>2];break}}}while(0);
a=a+1|0}while((a|0)<(c[f>>2]|0));i=d;return}function ml(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;d=i;e=c[a+312>>2]|0;if((e|0)==0){i=d;return}f=b+4|0;h=a+104|0;j=a+96|0;a=e;do{if((c[a+12>>2]&2|0)!=0?(nk(a),k=+g[b>>2],l=k*+g[a+56>>2],m=+T(+l),n=+S(+l),l=+g[a+40>>2],o=+g[a+44>>2],p=k*+g[a+48>>2]+l-(n*l-m*o),q=k*+g[a+52>>2]+o-(m*l+n*o),e=a+60|0,o=+g[a+72>>2],l=+g[a+68>>2],k=+(m*o+n*l),r=+(n*o-m*l),l=+g[e>>2],o=+g[a+64>>2],s=+(p+(n*l-m*o)),t=+(q+(m*l+n*o)),
u=e,g[u>>2]=s,g[u+4>>2]=t,u=a+68|0,g[u>>2]=k,g[u+4>>2]=r,r=+g[f>>2],k=p*r,p=q*r,q=m*r,m=(n+-1)*r,u=c[a+4>>2]|0,e=a+8|0,(u|0)<(c[e>>2]|0)):0){v=u;do{u=c[j>>2]|0;r=+g[u+(v<<3)>>2];n=+g[u+(v<<3)+4>>2];t=+(k+(m*r-q*n));s=+(p+(q*r+m*n));u=(c[h>>2]|0)+(v<<3)|0;g[u>>2]=t;g[u+4>>2]=s;v=v+1|0}while((v|0)<(c[e>>2]|0))}a=c[a+24>>2]|0}while((a|0)!=0);i=d;return}function nl(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;j=+(e-d|0);k=+g[f>>2]/j;l=+g[f+4>>2]/j;if(!(k!=0|l!=0)){i=h;return}f=b+21|0;if((a[f>>
0]|0)==0){xn(c[b+112>>2]|0,0,c[b+44>>2]<<3|0)|0;a[f>>0]=1}if((d|0)>=(e|0)){i=h;return}f=c[b+112>>2]|0;b=d;do{d=f+(b<<3)|0;g[d>>2]=k+ +g[d>>2];d=f+(b<<3)+4|0;g[d>>2]=l+ +g[d>>2];b=b+1|0}while((b|0)!=(e|0));i=h;return}function ol(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;f=i;h=+g[a+32>>2]*.75;j=+(d-b|0)*h*+g[a+320>>2]*h;h=+g[e>>2]/j;k=+g[e+4>>2]/j;if((b|0)>=(d|0)){i=f;return}e=c[a+104>>2]|0;a=b;do{b=e+(a<<3)|0;g[b>>2]=h+ +g[b>>2];b=e+(a<<3)+4|0;g[b>>2]=k+ +g[b>>2];a=a+1|0}while((a|0)!=(d|
0));i=f;return}function pl(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;e=i;f=c[a+204>>2]|0;if((f|0)==0){i=e;return}h=c[a+200>>2]|0;j=+g[a+36>>2];k=+g[d>>2];l=d+4|0;m=(~~(j*+g[l>>2]+2048)>>>0<<20)+(~~(j*k*256+524288)>>>0)|0;n=h;o=f<<3>>3;a:while(1){p=o;while(1){if((p|0)==0)break a;q=(p|0)/2|0;if((c[n+(q<<3)+4>>2]|0)>>>0<m>>>0)break;else p=q}n=n+(q+1<<3)|0;o=p+-1-q|0}q=d+8|0;o=d+12|0;m=(~~(j*+g[o>>2]+2048)>>>0<<20)+(~~(j*+g[q>>2]*256+524288)>>>0)|0;r=n;s=
h+(f<<3)-n>>3;b:while(1){f=s;while(1){if((f|0)==0)break b;t=(f|0)/2|0;if((c[r+(t<<3)+4>>2]|0)>>>0>m>>>0)f=t;else break}r=r+(t+1<<3)|0;s=f+-1-t|0}if(!(n>>>0<r>>>0)){i=e;return}t=a+96|0;j=k;s=n;while(1){n=c[s>>2]|0;m=c[t>>2]|0;k=+g[m+(n<<3)>>2];if((((j<k?k<+g[q>>2]:0)?(k=+g[m+(n<<3)+4>>2],+g[l>>2]<k):0)?k<+g[o>>2]:0)?!(hb[c[(c[b>>2]|0)+12>>2]&15](b,a,n)|0):0){u=21;break}n=s+8|0;if(!(n>>>0<r>>>0)){u=21;break}j=+g[d>>2];s=n}if((u|0)==21){i=e;return}}function ql(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,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;f=i;i=i+64|0;h=f;j=f+32|0;k=f+24|0;l=f+16|0;if((c[a+204>>2]|0)==0){i=f;return}m=+g[d>>2];n=+g[e>>2];o=d+4|0;p=+g[o>>2];q=+g[e+4>>2];r=+(m<n?m:n);s=+(p<q?p:q);e=h;g[e>>2]=r;g[e+4>>2]=s;s=+(m>n?m:n);r=+(p>q?p:q);e=h+8|0;g[e>>2]=s;g[e+4>>2]=r;r=n-m;m=q-p;p=r*r+m*m;Nk(j,a,h);h=j+16|0;e=c[j+20>>2]|0;t=j+4|0;u=a+96|0;v=a+40|0;w=k+4|0;x=l+4|0;y=c[h>>2]|0;q=1;a:while(1){if(!(y>>>
0<e>>>0)){z=16;break}A=c[j>>2]|0;B=c[t>>2]|0;C=y;while(1){D=c[C+4>>2]&1048575;E=C;C=C+8|0;c[h>>2]=C;if(D>>>0<A>>>0|D>>>0>B>>>0)if(C>>>0<e>>>0){C=C;continue}else{z=16;break a}F=c[E>>2]|0;if(!((F|0)>-1)){z=16;break a}E=c[u>>2]|0;G=+g[d>>2];H=G-+g[E+(F<<3)>>2];I=+g[o>>2];J=I-+g[E+(F<<3)+4>>2];n=r*H+m*J;s=n*n-p*(H*H+J*J-+g[v>>2]);if(s>=0?(K=+Q(+s),s=(-n-K)/p,!(s>q)):0){if(!(s<0)){L=s;break}s=(K-n)/p;if(!(s<0|s>q)){L=s;break}}if(!(C>>>0<e>>>0)){z=16;break a}}s=r*L;n=m*L;K=H+s;M=J+n;g[k>>2]=K;g[w>>2]=M;
N=+Q(+(K*K+M*M));if(!(N<1.1920928955078125E-7)){O=1/N;g[k>>2]=K*O;g[w>>2]=M*O}B=c[(c[b>>2]|0)+12>>2]|0;g[l>>2]=s+G;g[x>>2]=n+I;n=+ab[B&1](b,a,F,l,k,L);q=q<n?q:n;if(q<=0){z=16;break}else y=C}if((z|0)==16){i=f;return}}function rl(b,c,e){b=b|0;c=c|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;f=i;g=((e+-4+(0-c)|0)>>>2)+1|0;h=b;j=c;k=c;while(1){c=d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24;l=k+1|0;m=a[l>>0]|0;n=k+2|0;o=a[n>>0]|0;p=k+3|0;q=a[p>>0]|0;a[h>>0]=a[k>>
0]|0;a[h+1>>0]=m;a[h+2>>0]=o;a[h+3>>0]=q;a[k>>0]=c;a[l>>0]=c>>>8;a[n>>0]=c>>>16;a[p>>0]=c>>>24;c=h+4|0;p=k+4|0;r=(c|0)==(j|0);if((p|0)==(e|0))break;h=c;j=r?p:j;k=p}k=b+(g<<2)|0;if(r){i=f;return k|0}else{s=k;t=j;u=j}a:while(1){j=s;r=u;while(1){g=d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24;b=r+1|0;h=a[b>>0]|0;p=r+2|0;c=a[p>>0]|0;n=r+3|0;l=a[n>>0]|0;a[j>>0]=a[r>>0]|0;a[j+1>>0]=h;a[j+2>>0]=c;a[j+3>>0]=l;a[r>>0]=g;a[b>>0]=g>>>8;a[p>>0]=g>>>16;a[n>>0]=g>>>24;j=j+4|0;v=r+4|0;w=(j|0)==(t|0);if((v|0)!=
(e|0))break;if(w)break a;else r=t}s=j;t=w?v:t;u=v}i=f;return k|0}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,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;e=i;f=a;a=b;a:while(1){b=a;g=a+-4|0;h=f;b:while(1){j=h;k=b-j|0;l=k>>2;switch(l|0){case 2:m=4;break a;break;case 3:m=6;break a;break;case 5:m=8;break a;break;case 4:m=7;break a;break;case 1:case 0:m=51;break a;break;default:}if((k|
0)<124){m=10;break a}n=(l|0)/2|0;o=h+(n<<2)|0;if((k|0)>3996){k=(l|0)/4|0;p=vl(h,h+(k<<2)|0,o,h+(k+n<<2)|0,g,d)|0}else p=tl(h,o,g,c[d>>2]|0)|0;n=c[h>>2]|0;k=c[d>>2]|0;l=c[k+(n<<2)>>2]|0;q=c[k+(c[o>>2]<<2)>>2]|0;r=+(l|0)<=0;s=+(q|0)<=0;do if(r^s?r:(l|0)>(q|0)){t=g;u=p}else{v=g;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=c[v>>2]|0;x=c[k+(w<<2)>>2]|0;y=+(x|0)<=0;if(y^s?y:(x|0)>(q|0)){m=34;break}}if((m|0)==34){m=0;c[h>>2]=w;c[v>>2]=n;t=v;u=p+1|0;break}x=h+4|0;y=c[g>>2]|0;z=c[k+(y<<2)>>2]|0;if(r^+(z|0)<=
0?r:(l|0)>(z|0))A=x;else{if((x|0)==(g|0)){m=51;break a}else B=x;while(1){C=c[B>>2]|0;x=c[k+(C<<2)>>2]|0;D=B+4|0;if(r^+(x|0)<=0?r:(l|0)>(x|0))break;if((D|0)==(g|0)){m=51;break a}else B=D}c[B>>2]=y;c[g>>2]=C;A=D}if((A|0)==(g|0)){m=51;break a}else{E=A;F=g}while(1){v=c[k+(c[h>>2]<<2)>>2]|0;x=+(v|0)<=0;z=E;while(1){G=c[z>>2]|0;H=c[k+(G<<2)>>2]|0;I=z+4|0;if(x^+(H|0)<=0?x:(v|0)>(H|0)){J=F;break}else z=I}do{J=J+-4|0;K=c[J>>2]|0;H=c[k+(K<<2)>>2]|0}while(x^+(H|0)<=0?x:(v|0)>(H|0));if(!(z>>>0<J>>>0)){h=z;continue b}c[z>>
2]=K;c[J>>2]=G;E=I;F=J}}while(0);l=h+4|0;c:do if(l>>>0<t>>>0){r=l;n=t;q=o;s=u;while(1){y=c[k+(c[q>>2]<<2)>>2]|0;v=+(y|0)<=0;x=r;while(1){L=c[x>>2]|0;H=c[k+(L<<2)>>2]|0;M=+(H|0)<=0;N=x+4|0;if(M^v?M:(H|0)>(y|0))x=N;else{O=n;break}}do{O=O+-4|0;P=c[O>>2]|0;z=c[k+(P<<2)>>2]|0;H=+(z|0)<=0}while(!(H^v?H:(z|0)>(y|0)));if(x>>>0>O>>>0){Q=x;R=q;S=s;break c}c[x>>2]=P;c[O>>2]=L;r=N;n=O;q=(q|0)==(x|0)?O:q;s=s+1|0}}else{Q=l;R=o;S=u}while(0);if((Q|0)!=(R|0)?(o=c[R>>2]|0,l=c[Q>>2]|0,s=c[k+(o<<2)>>2]|0,q=c[k+(l<<2)>>
2]|0,n=+(s|0)<=0,n^+(q|0)<=0?n:(s|0)>(q|0)):0){c[Q>>2]=o;c[R>>2]=l;T=S+1|0}else T=S;if((T|0)==0){U=wl(h,Q,d)|0;l=Q+4|0;if(wl(l,a,d)|0){m=46;break}if(U){h=l;continue}}l=Q;if((l-j|0)>=(b-l|0)){m=50;break}sl(h,Q,d);h=Q+4|0}if((m|0)==46){m=0;if(U){m=51;break}else{f=h;a=Q;continue}}else if((m|0)==50){m=0;sl(Q+4|0,a,d);f=h;a=Q;continue}}if((m|0)==4){Q=c[g>>2]|0;f=c[h>>2]|0;U=c[d>>2]|0;T=c[U+(Q<<2)>>2]|0;S=c[U+(f<<2)>>2]|0;U=+(T|0)<=0;if(!(U^+(S|0)<=0?U:(T|0)>(S|0))){i=e;return}c[h>>2]=Q;c[g>>2]=f;i=e;return}else if((m|
0)==6){tl(h,h+4|0,g,c[d>>2]|0)|0;i=e;return}else if((m|0)==7){ul(h,h+4|0,h+8|0,g,d)|0;i=e;return}else if((m|0)==8){vl(h,h+4|0,h+8|0,h+12|0,g,d)|0;i=e;return}else if((m|0)==10){g=h+8|0;tl(h,h+4|0,g,c[d>>2]|0)|0;f=h+12|0;if((f|0)==(a|0)){i=e;return}Q=c[d>>2]|0;d=f;f=g;while(1){g=c[d>>2]|0;S=c[f>>2]|0;T=Q+(g<<2)|0;U=c[T>>2]|0;R=c[Q+(S<<2)>>2]|0;u=+(U|0)<=0;if(u^+(R|0)<=0?u:(U|0)>(R|0)){R=S;S=d;U=f;while(1){c[S>>2]=R;if((U|0)==(h|0)){V=h;break}u=U+-4|0;R=c[u>>2]|0;O=c[T>>2]|0;N=c[Q+(R<<2)>>2]|0;L=+(O|
0)<=0;if(!(L^+(N|0)<=0?L:(O|0)>(N|0))){V=U;break}else{N=U;U=u;S=N}}c[V>>2]=g}S=d+4|0;if((S|0)==(a|0))break;else{U=d;d=S;f=U}}i=e;return}else if((m|0)==51){i=e;return}}function tl(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;g=c[b>>2]|0;h=c[a>>2]|0;j=c[e+(g<<2)>>2]|0;k=e+(h<<2)|0;l=c[k>>2]|0;m=+(j|0)<=0;n=c[d>>2]|0;o=c[e+(n<<2)>>2]|0;p=+(o|0)<=0;q=p^m?p:(o|0)>(j|0);if(!(m^+(l|0)<=0?m:(j|0)>(l|0))){if(!q){r=0;i=f;return r|0}c[b>>2]=n;c[d>>2]=g;l=c[b>>2]|0;
j=c[a>>2]|0;m=c[e+(l<<2)>>2]|0;o=c[e+(j<<2)>>2]|0;p=+(m|0)<=0;if(!(p^+(o|0)<=0?p:(m|0)>(o|0))){r=1;i=f;return r|0}c[a>>2]=l;c[b>>2]=j;r=2;i=f;return r|0}if(q){c[a>>2]=n;c[d>>2]=h;r=1;i=f;return r|0}c[a>>2]=g;c[b>>2]=h;g=c[d>>2]|0;a=c[e+(g<<2)>>2]|0;e=c[k>>2]|0;k=+(a|0)<=0;if(!(k^+(e|0)<=0?k:(a|0)>(e|0))){r=1;i=f;return r|0}c[b>>2]=g;c[d>>2]=h;r=2;i=f;return r|0}function ul(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;g=i;h=tl(a,b,d,c[f>>2]|0)|0;j=c[e>>2]|0;k=c[d>>2]|
0;l=c[f>>2]|0;f=c[l+(j<<2)>>2]|0;m=c[l+(k<<2)>>2]|0;n=+(f|0)<=0;if(!(n^+(m|0)<=0?n:(f|0)>(m|0))){o=h;i=g;return o|0}c[d>>2]=j;c[e>>2]=k;k=c[d>>2]|0;e=c[b>>2]|0;j=c[l+(k<<2)>>2]|0;m=c[l+(e<<2)>>2]|0;f=+(j|0)<=0;if(!(f^+(m|0)<=0?f:(j|0)>(m|0))){o=h+1|0;i=g;return o|0}c[b>>2]=k;c[d>>2]=e;e=c[b>>2]|0;d=c[a>>2]|0;k=c[l+(e<<2)>>2]|0;m=c[l+(d<<2)>>2]|0;l=+(k|0)<=0;if(!(l^+(m|0)<=0?l:(k|0)>(m|0))){o=h+2|0;i=g;return o|0}c[a>>2]=e;c[b>>2]=d;o=h+3|0;i=g;return o|0}function vl(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=i;j=ul(a,b,d,e,g)|0;k=c[f>>2]|0;l=c[e>>2]|0;m=c[g>>2]|0;g=c[m+(k<<2)>>2]|0;n=c[m+(l<<2)>>2]|0;o=+(g|0)<=0;if(!(o^+(n|0)<=0?o:(g|0)>(n|0))){p=j;i=h;return p|0}c[e>>2]=k;c[f>>2]=l;l=c[e>>2]|0;f=c[d>>2]|0;k=c[m+(l<<2)>>2]|0;n=c[m+(f<<2)>>2]|0;g=+(k|0)<=0;if(!(g^+(n|0)<=0?g:(k|0)>(n|0))){p=j+1|0;i=h;return p|0}c[d>>2]=l;c[e>>2]=f;f=c[d>>2]|0;e=c[b>>2]|0;l=c[m+(f<<2)>>2]|0;n=c[m+(e<<2)>>2]|0;k=+(l|0)<=0;if(!(k^+(n|0)<=0?k:(l|0)>(n|0))){p=j+2|0;i=
h;return p|0}c[b>>2]=f;c[d>>2]=e;e=c[b>>2]|0;d=c[a>>2]|0;f=c[m+(e<<2)>>2]|0;n=c[m+(d<<2)>>2]|0;m=+(f|0)<=0;if(!(m^+(n|0)<=0?m:(f|0)>(n|0))){p=j+3|0;i=h;return p|0}c[a>>2]=e;c[b>>2]=d;p=j+4|0;i=h;return p|0}function wl(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;e=i;switch(b-a>>2|0){case 3:tl(a,a+4|0,b+-4|0,c[d>>2]|0)|0;f=1;i=e;return f|0;case 2:g=b+-4|0;h=c[g>>2]|0;j=c[a>>2]|0;k=c[d>>2]|0;l=c[k+(h<<2)>>2]|0;m=c[k+(j<<2)>>2]|0;k=+(l|0)<=0;if(!(k^
+(m|0)<=0?k:(l|0)>(m|0))){f=1;i=e;return f|0}c[a>>2]=h;c[g>>2]=j;f=1;i=e;return f|0;case 4:ul(a,a+4|0,a+8|0,b+-4|0,d)|0;f=1;i=e;return f|0;case 1:case 0:f=1;i=e;return f|0;case 5:vl(a,a+4|0,a+8|0,a+12|0,b+-4|0,d)|0;f=1;i=e;return f|0;default:j=a+8|0;tl(a,a+4|0,j,c[d>>2]|0)|0;g=a+12|0;if((g|0)==(b|0)){f=1;i=e;return f|0}h=c[d>>2]|0;d=0;m=g;g=j;while(1){j=c[m>>2]|0;l=c[g>>2]|0;k=h+(j<<2)|0;n=c[k>>2]|0;o=c[h+(l<<2)>>2]|0;p=+(n|0)<=0;if(p^+(o|0)<=0?p:(n|0)>(o|0)){o=l;l=m;n=g;while(1){c[l>>2]=o;if((n|
0)==(a|0)){q=a;break}p=n+-4|0;o=c[p>>2]|0;r=c[k>>2]|0;s=c[h+(o<<2)>>2]|0;t=+(r|0)<=0;if(!(t^+(s|0)<=0?t:(r|0)>(s|0))){q=n;break}else{s=n;n=p;l=s}}c[q>>2]=j;l=d+1|0;if((l|0)==8)break;else u=l}else u=d;l=m+4|0;if((l|0)==(b|0)){f=1;v=15;break}else{n=m;d=u;m=l;g=n}}if((v|0)==15){i=e;return f|0}f=(m+4|0)==(b|0);i=e;return f|0}return 0}function xl(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+32|0;e=d+16|0;f=d+8|0;h=d;j=a+4|0;k=a+8|0;if((c[b>>2]|0)==(c[j>>2]|0)){l=c[k>>2]|
0;c[a+8>>2]=l+1;if((l|0)>3){l=c[a+12>>2]|0;c[l>>2]=(c[l>>2]|0)+1;m=1;i=d;return m|0}}else{c[k>>2]=0;c[j>>2]=c[b>>2];c[a+8>>2]=1}j=b+16|0;n=+g[j>>2];k=c[a>>2]|0;o=+g[k+32>>2]*(1-+g[b+12>>2]);l=c[b>>2]|0;p=c[k+96>>2]|0;q=+g[j+4>>2]*o+ +g[p+(l<<3)+4>>2];g[e>>2]=+g[p+(l<<3)>>2]+n*o;g[e+4>>2]=q;l=b+8|0;b=c[l>>2]|0;p=c[b+12>>2]|0;if(hb[c[(c[p>>2]|0)+16>>2]&15](p,(c[b+8>>2]|0)+12|0,e)|0){m=0;i=d;return m|0}b=c[(c[l>>2]|0)+12>>2]|0;p=bb[c[(c[b>>2]|0)+12>>2]&7](b)|0;a:do if((p|0)>0){b=0;while(1){j=c[l>>2]|
0;k=c[j+12>>2]|0;mb[c[(c[k>>2]|0)+20>>2]&7](k,(c[j+8>>2]|0)+12|0,e,f,h,b);b=b+1|0;if(+g[f>>2]<.004999999888241291){m=0;break}if((b|0)>=(p|0))break a}i=d;return m|0}while(0);p=c[a+12>>2]|0;c[p>>2]=(c[p>>2]|0)+1;m=1;i=d;return m|0}function yl(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,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=i;i=i+32|0;f=e;g=a;a=b;a:while(1){b=a;h=a+-28|0;j=g;b:while(1){k=j;l=b-k|0;switch((l|0)/28|0|0){case 4:m=
14;break a;break;case 3:m=6;break a;break;case 5:m=15;break a;break;case 1:case 0:m=67;break a;break;case 2:m=4;break a;break;default:}if((l|0)<868){m=21;break a}n=(l|0)/56|0;o=j+(n*28|0)|0;do if((l|0)>27972){p=(l|0)/112|0;q=j+(p*28|0)|0;r=j+((p+n|0)*28|0)|0;p=zl(j,q,o,r,d)|0;if(nb[c[d>>2]&31](h,r)|0){c[f+0>>2]=c[r+0>>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];c[f+16>>2]=c[r+16>>2];c[f+20>>2]=c[r+20>>2];c[f+24>>2]=c[r+24>>2];c[r+0>>2]=c[h+0>>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];c[r+16>>2]=c[h+16>>2];c[r+20>>2]=c[h+20>>2];c[r+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>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[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];s=p+1|0;if(nb[c[d>>2]&31](r,o)|0){c[f+0>>2]=c[o+0>>2];c[f+4>>2]=c[o+4>>2];c[f+8>>2]=c[o+8>>2];c[f+12>>2]=c[o+12>>2];c[f+16>>2]=c[o+16>>2];c[f+20>>2]=c[o+20>>2];c[f+24>>2]=c[o+24>>2];c[o+0>>2]=c[r+0>>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];c[o+16>>2]=c[r+16>>2];c[o+20>>2]=c[r+20>>2];c[o+24>>2]=c[r+24>>2];c[r+0>>2]=c[f+0>>2];c[r+4>>2]=c[f+4>>2];c[r+8>>2]=c[f+8>>2];c[r+12>>2]=c[f+12>>2];c[r+16>>2]=c[f+16>>2];c[r+20>>2]=c[f+20>>2];c[r+24>>2]=c[f+24>>2];r=p+2|0;if(nb[c[d>>2]&31](o,q)|0){c[f+0>>2]=c[q+0>>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];c[f+16>>2]=c[q+16>>2];c[f+20>>2]=c[q+20>>2];c[f+24>>2]=c[q+24>>2];c[q+0>>2]=c[o+0>>2];c[q+4>>2]=c[o+4>>2];c[q+8>>2]=c[o+8>>2];c[q+12>>2]=c[o+12>>2];c[q+16>>2]=c[o+16>>
2];c[q+20>>2]=c[o+20>>2];c[q+24>>2]=c[o+24>>2];c[o+0>>2]=c[f+0>>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];c[o+16>>2]=c[f+16>>2];c[o+20>>2]=c[f+20>>2];c[o+24>>2]=c[f+24>>2];if(nb[c[d>>2]&31](q,j)|0){c[f+0>>2]=c[j+0>>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];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[q+0>>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];c[j+16>>2]=c[q+16>>2];c[j+20>>2]=c[q+20>>2];c[j+24>>
2]=c[q+24>>2];c[q+0>>2]=c[f+0>>2];c[q+4>>2]=c[f+4>>2];c[q+8>>2]=c[f+8>>2];c[q+12>>2]=c[f+12>>2];c[q+16>>2]=c[f+16>>2];c[q+20>>2]=c[f+20>>2];c[q+24>>2]=c[f+24>>2];t=p+4|0}else t=p+3|0}else t=r}else t=s}else t=p}else{p=nb[c[d>>2]&31](o,j)|0;s=nb[c[d>>2]&31](h,o)|0;if(!p){if(!s){t=0;break}c[f+0>>2]=c[o+0>>2];c[f+4>>2]=c[o+4>>2];c[f+8>>2]=c[o+8>>2];c[f+12>>2]=c[o+12>>2];c[f+16>>2]=c[o+16>>2];c[f+20>>2]=c[o+20>>2];c[f+24>>2]=c[o+24>>2];c[o+0>>2]=c[h+0>>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];c[o+16>>2]=c[h+16>>2];c[o+20>>2]=c[h+20>>2];c[o+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>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[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];if(!(nb[c[d>>2]&31](o,j)|0)){t=1;break}c[f+0>>2]=c[j+0>>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];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[o+0>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];c[j+12>>2]=c[o+12>>2];c[j+
16>>2]=c[o+16>>2];c[j+20>>2]=c[o+20>>2];c[j+24>>2]=c[o+24>>2];c[o+0>>2]=c[f+0>>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];c[o+16>>2]=c[f+16>>2];c[o+20>>2]=c[f+20>>2];c[o+24>>2]=c[f+24>>2];t=2;break}if(s){c[f+0>>2]=c[j+0>>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];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[h+0>>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];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+
24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>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[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];t=1;break}c[f+0>>2]=c[j+0>>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];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[o+0>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];c[j+12>>2]=c[o+12>>2];c[j+16>>2]=c[o+16>>2];c[j+20>>2]=c[o+20>>2];c[j+24>>2]=c[o+24>>2];c[o+0>>2]=c[f+0>>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];c[o+16>>2]=c[f+16>>2];c[o+20>>2]=c[f+20>>2];c[o+24>>2]=c[f+24>>2];if(nb[c[d>>2]&31](h,o)|0){c[f+0>>2]=c[o+0>>2];c[f+4>>2]=c[o+4>>2];c[f+8>>2]=c[o+8>>2];c[f+12>>2]=c[o+12>>2];c[f+16>>2]=c[o+16>>2];c[f+20>>2]=c[o+20>>2];c[f+24>>2]=c[o+24>>2];c[o+0>>2]=c[h+0>>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];c[o+16>>2]=c[h+16>>2];c[o+20>>2]=c[h+20>>2];c[o+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>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[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];t=2}else t=1}while(0);do if(nb[c[d>>2]&31](j,o)|0){u=h;v=t}else{n=h;while(1){n=n+-28|0;if((j|0)==(n|0))break;if(nb[c[d>>2]&31](n,o)|0){m=50;break}}if((m|0)==50){m=0;c[f+0>>2]=c[j+0>>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];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[n+0>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2];c[j+16>>2]=c[n+16>>2];
c[j+20>>2]=c[n+20>>2];c[j+24>>2]=c[n+24>>2];c[n+0>>2]=c[f+0>>2];c[n+4>>2]=c[f+4>>2];c[n+8>>2]=c[f+8>>2];c[n+12>>2]=c[f+12>>2];c[n+16>>2]=c[f+16>>2];c[n+20>>2]=c[f+20>>2];c[n+24>>2]=c[f+24>>2];u=n;v=t+1|0;break}l=j+28|0;if(nb[c[d>>2]&31](j,h)|0)w=l;else{if((l|0)==(h|0)){m=67;break a}else x=l;while(1){y=x+28|0;if(nb[c[d>>2]&31](j,x)|0)break;if((y|0)==(h|0)){m=67;break a}else x=y}c[f+0>>2]=c[x+0>>2];c[f+4>>2]=c[x+4>>2];c[f+8>>2]=c[x+8>>2];c[f+12>>2]=c[x+12>>2];c[f+16>>2]=c[x+16>>2];c[f+20>>2]=c[x+20>>
2];c[f+24>>2]=c[x+24>>2];c[x+0>>2]=c[h+0>>2];c[x+4>>2]=c[h+4>>2];c[x+8>>2]=c[h+8>>2];c[x+12>>2]=c[h+12>>2];c[x+16>>2]=c[h+16>>2];c[x+20>>2]=c[h+20>>2];c[x+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>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[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];w=y}if((w|0)==(h|0)){m=67;break a}else{z=w;A=h}while(1){n=z;while(1){B=n+28|0;if(nb[c[d>>2]&31](j,n)|0){C=A;break}else n=B}do C=C+-28|0;while(nb[c[d>>2]&31](j,C)|0);if(!(n>>>0<C>>>
0)){j=n;continue b}c[f+0>>2]=c[n+0>>2];c[f+4>>2]=c[n+4>>2];c[f+8>>2]=c[n+8>>2];c[f+12>>2]=c[n+12>>2];c[f+16>>2]=c[n+16>>2];c[f+20>>2]=c[n+20>>2];c[f+24>>2]=c[n+24>>2];c[n+0>>2]=c[C+0>>2];c[n+4>>2]=c[C+4>>2];c[n+8>>2]=c[C+8>>2];c[n+12>>2]=c[C+12>>2];c[n+16>>2]=c[C+16>>2];c[n+20>>2]=c[C+20>>2];c[n+24>>2]=c[C+24>>2];c[C+0>>2]=c[f+0>>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[C+16>>2]=c[f+16>>2];c[C+20>>2]=c[f+20>>2];c[C+24>>2]=c[f+24>>2];z=B;A=C}}while(0);l=j+28|0;c:do if(l>>>
0<u>>>0){s=l;p=u;r=o;q=v;while(1){D=s;while(1){E=D+28|0;if(nb[c[d>>2]&31](D,r)|0)D=E;else{F=p;break}}do F=F+-28|0;while(!(nb[c[d>>2]&31](F,r)|0));if(D>>>0>F>>>0){G=D;H=r;I=q;break c}c[f+0>>2]=c[D+0>>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];c[f+16>>2]=c[D+16>>2];c[f+20>>2]=c[D+20>>2];c[f+24>>2]=c[D+24>>2];c[D+0>>2]=c[F+0>>2];c[D+4>>2]=c[F+4>>2];c[D+8>>2]=c[F+8>>2];c[D+12>>2]=c[F+12>>2];c[D+16>>2]=c[F+16>>2];c[D+20>>2]=c[F+20>>2];c[D+24>>2]=c[F+24>>2];c[F+0>>2]=c[f+0>>2];c[F+
4>>2]=c[f+4>>2];c[F+8>>2]=c[f+8>>2];c[F+12>>2]=c[f+12>>2];c[F+16>>2]=c[f+16>>2];c[F+20>>2]=c[f+20>>2];c[F+24>>2]=c[f+24>>2];s=E;p=F;r=(r|0)==(D|0)?F:r;q=q+1|0}}else{G=l;H=o;I=v}while(0);if((G|0)!=(H|0)?nb[c[d>>2]&31](H,G)|0:0){c[f+0>>2]=c[G+0>>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[f+16>>2]=c[G+16>>2];c[f+20>>2]=c[G+20>>2];c[f+24>>2]=c[G+24>>2];c[G+0>>2]=c[H+0>>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[G+16>>2]=c[H+16>>2];c[G+20>>2]=c[H+20>>2];
c[G+24>>2]=c[H+24>>2];c[H+0>>2]=c[f+0>>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[H+16>>2]=c[f+16>>2];c[H+20>>2]=c[f+20>>2];c[H+24>>2]=c[f+24>>2];J=I+1|0}else J=I;if((J|0)==0){K=Bl(j,G,d)|0;o=G+28|0;if(Bl(o,a,d)|0){m=62;break}if(K){j=o;continue}}o=G;if((o-k|0)>=(b-o|0)){m=66;break}yl(j,G,d);j=G+28|0}if((m|0)==62){m=0;if(K){m=67;break}else{g=j;a=G;continue}}else if((m|0)==66){m=0;yl(G+28|0,a,d);g=j;a=G;continue}}if((m|0)==4){if(!(nb[c[d>>2]&31](h,j)|0)){i=e;return}c[f+0>>2]=
c[j+0>>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];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[h+0>>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];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>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[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];i=e;return}else if((m|0)==6){G=j+28|0;g=nb[c[d>>2]&31](G,j)|0;K=nb[c[d>>
2]&31](h,G)|0;if(!g){if(!K){i=e;return}c[f+0>>2]=c[G+0>>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[f+16>>2]=c[G+16>>2];c[f+20>>2]=c[G+20>>2];c[f+24>>2]=c[G+24>>2];c[G+0>>2]=c[h+0>>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[G+16>>2]=c[h+16>>2];c[G+20>>2]=c[h+20>>2];c[G+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>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[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];if(!(nb[c[d>>2]&31](G,
j)|0)){i=e;return}c[f+0>>2]=c[j+0>>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];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[G+0>>2];c[j+4>>2]=c[G+4>>2];c[j+8>>2]=c[G+8>>2];c[j+12>>2]=c[G+12>>2];c[j+16>>2]=c[G+16>>2];c[j+20>>2]=c[G+20>>2];c[j+24>>2]=c[G+24>>2];c[G+0>>2]=c[f+0>>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];c[G+16>>2]=c[f+16>>2];c[G+20>>2]=c[f+20>>2];c[G+24>>2]=c[f+24>>2];i=e;return}if(K){c[f+0>>2]=c[j+0>>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];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[h+0>>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];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>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[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];i=e;return}c[f+0>>2]=c[j+0>>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];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[G+0>>2];c[j+4>>2]=c[G+4>>2];c[j+8>>2]=c[G+8>>2];c[j+12>>2]=c[G+12>>2];c[j+16>>2]=c[G+16>>2];c[j+20>>2]=c[G+20>>2];c[j+24>>2]=c[G+24>>2];c[G+0>>2]=c[f+0>>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];c[G+16>>2]=c[f+16>>2];c[G+20>>2]=c[f+20>>2];c[G+24>>2]=c[f+24>>2];if(!(nb[c[d>>2]&31](h,G)|0)){i=e;return}c[f+0>>2]=c[G+0>>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[f+16>>
2]=c[G+16>>2];c[f+20>>2]=c[G+20>>2];c[f+24>>2]=c[G+24>>2];c[G+0>>2]=c[h+0>>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[G+16>>2]=c[h+16>>2];c[G+20>>2]=c[h+20>>2];c[G+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>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[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];i=e;return}else if((m|0)==14){zl(j,j+28|0,j+56|0,h,d)|0;i=e;return}else if((m|0)==15){G=j+28|0;K=j+56|0;g=j+84|0;zl(j,G,K,g,d)|0;if(!(nb[c[d>>2]&31](h,
g)|0)){i=e;return}c[f+0>>2]=c[g+0>>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[f+16>>2]=c[g+16>>2];c[f+20>>2]=c[g+20>>2];c[f+24>>2]=c[g+24>>2];c[g+0>>2]=c[h+0>>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[g+16>>2]=c[h+16>>2];c[g+20>>2]=c[h+20>>2];c[g+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>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[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];if(!(nb[c[d>>2]&31](g,K)|0)){i=e;return}c[f+
0>>2]=c[K+0>>2];c[f+4>>2]=c[K+4>>2];c[f+8>>2]=c[K+8>>2];c[f+12>>2]=c[K+12>>2];c[f+16>>2]=c[K+16>>2];c[f+20>>2]=c[K+20>>2];c[f+24>>2]=c[K+24>>2];c[K+0>>2]=c[g+0>>2];c[K+4>>2]=c[g+4>>2];c[K+8>>2]=c[g+8>>2];c[K+12>>2]=c[g+12>>2];c[K+16>>2]=c[g+16>>2];c[K+20>>2]=c[g+20>>2];c[K+24>>2]=c[g+24>>2];c[g+0>>2]=c[f+0>>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];c[g+16>>2]=c[f+16>>2];c[g+20>>2]=c[f+20>>2];c[g+24>>2]=c[f+24>>2];if(!(nb[c[d>>2]&31](K,G)|0)){i=e;return}c[f+0>>2]=c[G+0>>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[f+16>>2]=c[G+16>>2];c[f+20>>2]=c[G+20>>2];c[f+24>>2]=c[G+24>>2];c[G+0>>2]=c[K+0>>2];c[G+4>>2]=c[K+4>>2];c[G+8>>2]=c[K+8>>2];c[G+12>>2]=c[K+12>>2];c[G+16>>2]=c[K+16>>2];c[G+20>>2]=c[K+20>>2];c[G+24>>2]=c[K+24>>2];c[K+0>>2]=c[f+0>>2];c[K+4>>2]=c[f+4>>2];c[K+8>>2]=c[f+8>>2];c[K+12>>2]=c[f+12>>2];c[K+16>>2]=c[f+16>>2];c[K+20>>2]=c[f+20>>2];c[K+24>>2]=c[f+24>>2];if(!(nb[c[d>>2]&31](G,j)|0)){i=e;return}c[f+0>>2]=c[j+0>>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];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[G+0>>2];c[j+4>>2]=c[G+4>>2];c[j+8>>2]=c[G+8>>2];c[j+12>>2]=c[G+12>>2];c[j+16>>2]=c[G+16>>2];c[j+20>>2]=c[G+20>>2];c[j+24>>2]=c[G+24>>2];c[G+0>>2]=c[f+0>>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];c[G+16>>2]=c[f+16>>2];c[G+20>>2]=c[f+20>>2];c[G+24>>2]=c[f+24>>2];i=e;return}else if((m|0)==21){Al(j,a,d);i=e;return}else if((m|0)==67){i=e;return}}function zl(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;g=i;i=i+32|0;h=g;j=nb[c[f>>2]&31](b,a)|0;k=nb[c[f>>2]&31](d,b)|0;do if(j){if(k){c[h+0>>2]=c[a+0>>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];c[h+16>>2]=c[a+16>>2];c[h+20>>2]=c[a+20>>2];c[h+24>>2]=c[a+24>>2];c[a+0>>2]=c[d+0>>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];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];c[a+24>>2]=c[d+24>>2];c[d+0>>2]=c[h+0>>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];c[d+16>>2]=c[h+16>>2];c[d+20>>2]=c[h+20>>2];c[d+24>>2]=c[h+24>>2];l=1;break}c[h+0>>2]=c[a+0>>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];c[h+16>>2]=c[a+16>>2];c[h+20>>2]=c[a+20>>2];c[h+24>>2]=c[a+24>>2];c[a+0>>2]=c[b+0>>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];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[b+0>>2]=c[h+0>>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];c[b+16>>2]=c[h+16>>2];c[b+20>>
2]=c[h+20>>2];c[b+24>>2]=c[h+24>>2];if(nb[c[f>>2]&31](d,b)|0){c[h+0>>2]=c[b+0>>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];c[h+16>>2]=c[b+16>>2];c[h+20>>2]=c[b+20>>2];c[h+24>>2]=c[b+24>>2];c[b+0>>2]=c[d+0>>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[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[d+0>>2]=c[h+0>>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];c[d+16>>2]=c[h+16>>2];c[d+20>>2]=c[h+20>>2];c[d+24>>2]=c[h+24>>
2];l=2}else l=1}else if(k){c[h+0>>2]=c[b+0>>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];c[h+16>>2]=c[b+16>>2];c[h+20>>2]=c[b+20>>2];c[h+24>>2]=c[b+24>>2];c[b+0>>2]=c[d+0>>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[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[d+0>>2]=c[h+0>>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];c[d+16>>2]=c[h+16>>2];c[d+20>>2]=c[h+20>>2];c[d+24>>2]=c[h+24>>2];if(nb[c[f>>2]&31](b,a)|0){c[h+
0>>2]=c[a+0>>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];c[h+16>>2]=c[a+16>>2];c[h+20>>2]=c[a+20>>2];c[h+24>>2]=c[a+24>>2];c[a+0>>2]=c[b+0>>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];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[b+0>>2]=c[h+0>>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];c[b+16>>2]=c[h+16>>2];c[b+20>>2]=c[h+20>>2];c[b+24>>2]=c[h+24>>2];l=2}else l=1}else l=0;while(0);if(!(nb[c[f>>2]&31](e,d)|0)){m=
l;i=g;return m|0}c[h+0>>2]=c[d+0>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];c[h+16>>2]=c[d+16>>2];c[h+20>>2]=c[d+20>>2];c[h+24>>2]=c[d+24>>2];c[d+0>>2]=c[e+0>>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];c[d+16>>2]=c[e+16>>2];c[d+20>>2]=c[e+20>>2];c[d+24>>2]=c[e+24>>2];c[e+0>>2]=c[h+0>>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];c[e+16>>2]=c[h+16>>2];c[e+20>>2]=c[h+20>>2];c[e+24>>2]=c[h+24>>2];if(!(nb[c[f>>2]&31](d,b)|0)){m=l+1|0;i=g;
return m|0}c[h+0>>2]=c[b+0>>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];c[h+16>>2]=c[b+16>>2];c[h+20>>2]=c[b+20>>2];c[h+24>>2]=c[b+24>>2];c[b+0>>2]=c[d+0>>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[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[d+0>>2]=c[h+0>>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];c[d+16>>2]=c[h+16>>2];c[d+20>>2]=c[h+20>>2];c[d+24>>2]=c[h+24>>2];if(!(nb[c[f>>2]&31](b,a)|0)){m=l+2|0;i=g;return m|
0}c[h+0>>2]=c[a+0>>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];c[h+16>>2]=c[a+16>>2];c[h+20>>2]=c[a+20>>2];c[h+24>>2]=c[a+24>>2];c[a+0>>2]=c[b+0>>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];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[b+0>>2]=c[h+0>>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];c[b+16>>2]=c[h+16>>2];c[b+20>>2]=c[h+20>>2];c[b+24>>2]=c[h+24>>2];m=l+3|0;i=g;return m|0}function Al(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;e=i;i=i+64|0;f=e+28|0;g=e;h=a+56|0;j=a+28|0;k=nb[c[d>>2]&31](j,a)|0;l=nb[c[d>>2]&31](h,j)|0;do if(k){if(l){c[f+0>>2]=c[a+0>>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[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[a+0>>2]=c[h+0>>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];c[a+16>>2]=c[h+16>>2];c[a+20>>2]=c[h+20>>2];c[a+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>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[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];break}c[f+0>>2]=c[a+0>>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[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[a+0>>2]=c[j+0>>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];c[a+16>>2]=c[j+16>>2];c[a+20>>2]=c[j+20>>2];c[a+24>>2]=c[j+24>>2];c[j+0>>2]=c[f+0>>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];c[j+16>>2]=c[f+16>>2];c[j+20>>
2]=c[f+20>>2];c[j+24>>2]=c[f+24>>2];if(nb[c[d>>2]&31](h,j)|0){c[f+0>>2]=c[j+0>>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];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[h+0>>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];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>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[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>
2]}}else if(l){c[f+0>>2]=c[j+0>>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];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[h+0>>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];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>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[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];if(nb[c[d>>2]&31](j,a)|0){c[f+0>>2]=c[a+0>>
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[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[a+0>>2]=c[j+0>>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];c[a+16>>2]=c[j+16>>2];c[a+20>>2]=c[j+20>>2];c[a+24>>2]=c[j+24>>2];c[j+0>>2]=c[f+0>>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];c[j+16>>2]=c[f+16>>2];c[j+20>>2]=c[f+20>>2];c[j+24>>2]=c[f+24>>2]}}while(0);f=a+84|0;if((f|0)==(b|0)){i=e;return}j=f;f=h;while(1){if(nb[c[d>>
2]&31](j,f)|0){c[g+0>>2]=c[j+0>>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];c[g+16>>2]=c[j+16>>2];c[g+20>>2]=c[j+20>>2];c[g+24>>2]=c[j+24>>2];h=j;l=f;while(1){c[h+0>>2]=c[l+0>>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];c[h+16>>2]=c[l+16>>2];c[h+20>>2]=c[l+20>>2];c[h+24>>2]=c[l+24>>2];if((l|0)==(a|0))break;k=l+-28|0;if(nb[c[d>>2]&31](g,k)|0){m=l;l=k;h=m}else break}c[l+0>>2]=c[g+0>>2];c[l+4>>2]=c[g+4>>2];c[l+8>>2]=c[g+8>>2];c[l+12>>2]=c[g+12>>2];c[l+16>>2]=
c[g+16>>2];c[l+20>>2]=c[g+20>>2];c[l+24>>2]=c[g+24>>2]}h=j+28|0;if((h|0)==(b|0))break;else{m=j;j=h;f=m}}i=e;return}function Bl(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;e=i;i=i+64|0;f=e+28|0;g=e;switch((b-a|0)/28|0|0){case 5:h=a+28|0;j=a+56|0;k=a+84|0;l=b+-28|0;zl(a,h,j,k,d)|0;if(!(nb[c[d>>2]&31](l,k)|0)){m=1;i=e;return m|0}c[f+0>>2]=c[k+0>>2];c[f+4>>2]=c[k+4>>2];c[f+8>>2]=c[k+8>>2];c[f+12>>2]=c[k+12>>2];c[f+16>>2]=c[k+16>>2];c[f+20>>2]=c[k+20>>2];c[f+24>>2]=c[k+
24>>2];c[k+0>>2]=c[l+0>>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[k+16>>2]=c[l+16>>2];c[k+20>>2]=c[l+20>>2];c[k+24>>2]=c[l+24>>2];c[l+0>>2]=c[f+0>>2];c[l+4>>2]=c[f+4>>2];c[l+8>>2]=c[f+8>>2];c[l+12>>2]=c[f+12>>2];c[l+16>>2]=c[f+16>>2];c[l+20>>2]=c[f+20>>2];c[l+24>>2]=c[f+24>>2];if(!(nb[c[d>>2]&31](k,j)|0)){m=1;i=e;return m|0}c[f+0>>2]=c[j+0>>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];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+
0>>2]=c[k+0>>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];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[k+0>>2]=c[f+0>>2];c[k+4>>2]=c[f+4>>2];c[k+8>>2]=c[f+8>>2];c[k+12>>2]=c[f+12>>2];c[k+16>>2]=c[f+16>>2];c[k+20>>2]=c[f+20>>2];c[k+24>>2]=c[f+24>>2];if(!(nb[c[d>>2]&31](j,h)|0)){m=1;i=e;return m|0}c[f+0>>2]=c[h+0>>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[f+16>>2]=c[h+16>>2];c[f+20>>2]=c[h+20>>2];c[f+24>>2]=c[h+24>>2];c[h+0>>2]=c[j+
0>>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];c[h+16>>2]=c[j+16>>2];c[h+20>>2]=c[j+20>>2];c[h+24>>2]=c[j+24>>2];c[j+0>>2]=c[f+0>>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];c[j+16>>2]=c[f+16>>2];c[j+20>>2]=c[f+20>>2];c[j+24>>2]=c[f+24>>2];if(!(nb[c[d>>2]&31](h,a)|0)){m=1;i=e;return m|0}c[f+0>>2]=c[a+0>>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[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[a+0>>2]=c[h+0>>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];c[a+16>>2]=c[h+16>>2];c[a+20>>2]=c[h+20>>2];c[a+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>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[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];m=1;i=e;return m|0;case 3:h=a+28|0;j=b+-28|0;k=nb[c[d>>2]&31](h,a)|0;l=nb[c[d>>2]&31](j,h)|0;if(!k){if(!l){m=1;i=e;return m|0}c[f+0>>2]=c[h+0>>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[f+16>>2]=c[h+16>>2];
c[f+20>>2]=c[h+20>>2];c[f+24>>2]=c[h+24>>2];c[h+0>>2]=c[j+0>>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];c[h+16>>2]=c[j+16>>2];c[h+20>>2]=c[j+20>>2];c[h+24>>2]=c[j+24>>2];c[j+0>>2]=c[f+0>>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];c[j+16>>2]=c[f+16>>2];c[j+20>>2]=c[f+20>>2];c[j+24>>2]=c[f+24>>2];if(!(nb[c[d>>2]&31](h,a)|0)){m=1;i=e;return m|0}c[f+0>>2]=c[a+0>>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[f+20>>2]=
c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[a+0>>2]=c[h+0>>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];c[a+16>>2]=c[h+16>>2];c[a+20>>2]=c[h+20>>2];c[a+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>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[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];m=1;i=e;return m|0}if(l){c[f+0>>2]=c[a+0>>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[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];
c[a+0>>2]=c[j+0>>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];c[a+16>>2]=c[j+16>>2];c[a+20>>2]=c[j+20>>2];c[a+24>>2]=c[j+24>>2];c[j+0>>2]=c[f+0>>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];c[j+16>>2]=c[f+16>>2];c[j+20>>2]=c[f+20>>2];c[j+24>>2]=c[f+24>>2];m=1;i=e;return m|0}c[f+0>>2]=c[a+0>>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[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[a+0>>2]=c[h+0>>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];c[a+16>>2]=c[h+16>>2];c[a+20>>2]=c[h+20>>2];c[a+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>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[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];if(!(nb[c[d>>2]&31](j,h)|0)){m=1;i=e;return m|0}c[f+0>>2]=c[h+0>>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[f+16>>2]=c[h+16>>2];c[f+20>>2]=c[h+20>>2];c[f+24>>2]=c[h+24>>2];c[h+0>>2]=c[j+0>>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];c[h+16>>2]=c[j+16>>2];c[h+20>>2]=c[j+20>>2];c[h+24>>2]=c[j+24>>2];c[j+0>>2]=c[f+0>>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];c[j+16>>2]=c[f+16>>2];c[j+20>>2]=c[f+20>>2];c[j+24>>2]=c[f+24>>2];m=1;i=e;return m|0;case 1:case 0:m=1;i=e;return m|0;case 4:zl(a,a+28|0,a+56|0,b+-28|0,d)|0;m=1;i=e;return m|0;case 2:j=b+-28|0;if(!(nb[c[d>>2]&31](j,a)|0)){m=1;i=e;return m|0}c[f+0>>2]=c[a+0>>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[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[a+0>>2]=c[j+0>>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];c[a+16>>2]=c[j+16>>2];c[a+20>>2]=c[j+20>>2];c[a+24>>2]=c[j+24>>2];c[j+0>>2]=c[f+0>>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];c[j+16>>2]=c[f+16>>2];c[j+20>>2]=c[f+20>>2];c[j+24>>2]=c[f+24>>2];m=1;i=e;return m|0;default:j=a+56|0;h=a+28|0;l=nb[c[d>>2]&31](h,a)|0;k=nb[c[d>>2]&31](j,h)|0;do if(l){if(k){c[f+0>>2]=c[a+0>>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[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[a+0>>2]=c[j+0>>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];c[a+16>>2]=c[j+16>>2];c[a+20>>2]=c[j+20>>2];c[a+24>>2]=c[j+24>>2];c[j+0>>2]=c[f+0>>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];c[j+16>>2]=c[f+16>>2];c[j+20>>2]=c[f+20>>2];c[j+24>>2]=c[f+24>>2];break}c[f+0>>2]=c[a+0>>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[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[a+0>>2]=c[h+0>>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];c[a+16>>2]=c[h+16>>2];c[a+20>>2]=c[h+20>>2];c[a+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>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[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];if(nb[c[d>>2]&31](j,h)|0){c[f+0>>2]=c[h+0>>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[f+16>>2]=c[h+16>>2];c[f+20>>2]=c[h+
20>>2];c[f+24>>2]=c[h+24>>2];c[h+0>>2]=c[j+0>>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];c[h+16>>2]=c[j+16>>2];c[h+20>>2]=c[j+20>>2];c[h+24>>2]=c[j+24>>2];c[j+0>>2]=c[f+0>>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];c[j+16>>2]=c[f+16>>2];c[j+20>>2]=c[f+20>>2];c[j+24>>2]=c[f+24>>2]}}else if(k){c[f+0>>2]=c[h+0>>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[f+16>>2]=c[h+16>>2];c[f+20>>2]=c[h+20>>2];c[f+24>>2]=c[h+24>>2];c[h+0>>2]=c[j+0>>
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];c[h+16>>2]=c[j+16>>2];c[h+20>>2]=c[j+20>>2];c[h+24>>2]=c[j+24>>2];c[j+0>>2]=c[f+0>>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];c[j+16>>2]=c[f+16>>2];c[j+20>>2]=c[f+20>>2];c[j+24>>2]=c[f+24>>2];if(nb[c[d>>2]&31](h,a)|0){c[f+0>>2]=c[a+0>>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[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[a+0>>2]=c[h+0>>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];c[a+16>>2]=c[h+16>>2];c[a+20>>2]=c[h+20>>2];c[a+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>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[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2]}}while(0);f=a+84|0;if((f|0)==(b|0)){m=1;i=e;return m|0}h=0;k=f;f=j;while(1){if(nb[c[d>>2]&31](k,f)|0){c[g+0>>2]=c[k+0>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];c[g+16>>2]=c[k+16>>2];c[g+20>>2]=c[k+20>>2];c[g+24>>2]=c[k+24>>2];j=k;l=
f;while(1){c[j+0>>2]=c[l+0>>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];c[j+16>>2]=c[l+16>>2];c[j+20>>2]=c[l+20>>2];c[j+24>>2]=c[l+24>>2];if((l|0)==(a|0))break;n=l+-28|0;if(nb[c[d>>2]&31](g,n)|0){o=l;l=n;j=o}else break}c[l+0>>2]=c[g+0>>2];c[l+4>>2]=c[g+4>>2];c[l+8>>2]=c[g+8>>2];c[l+12>>2]=c[g+12>>2];c[l+16>>2]=c[g+16>>2];c[l+20>>2]=c[g+20>>2];c[l+24>>2]=c[g+24>>2];j=h+1|0;if((j|0)==8)break;else p=j}else p=h;j=k+28|0;if((j|0)==(b|0)){m=1;q=35;break}else{o=k;h=p;k=j;f=o}}if((q|
0)==35){i=e;return m|0}m=(k+28|0)==(b|0);i=e;return m|0}return 0}function Cl(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,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;e=i;i=i+16|0;f=e;g=a;a=b;a:while(1){b=a;h=a+-8|0;j=g;b:while(1){k=j;l=b-k|0;m=l>>3;switch(m|0){case 2:n=4;break a;break;case 3:n=6;break a;break;case 4:n=14;break a;break;case 5:n=26;break a;break;case 1:case 0:n=84;break a;break;default:}if((l|
0)<248){n=28;break a}o=(m|0)/2|0;p=j+(o<<3)|0;do if((l|0)<=7992){q=nb[c[d>>2]&31](p,j)|0;r=nb[c[d>>2]&31](h,p)|0;if(!q){if(!r){s=0;break}q=p;t=c[q>>2]|0;u=c[q+4>>2]|0;q=h;v=c[q+4>>2]|0;w=p;c[w>>2]=c[q>>2];c[w+4>>2]=v;v=h;c[v>>2]=t;c[v+4>>2]=u;if(!(nb[c[d>>2]&31](p,j)|0)){s=1;break}u=j;v=c[u>>2]|0;t=c[u+4>>2]|0;u=p;w=c[u+4>>2]|0;q=j;c[q>>2]=c[u>>2];c[q+4>>2]=w;w=p;c[w>>2]=v;c[w+4>>2]=t;s=2;break}t=j;w=c[t>>2]|0;v=c[t+4>>2]|0;if(r){r=h;t=c[r+4>>2]|0;q=j;c[q>>2]=c[r>>2];c[q+4>>2]=t;t=h;c[t>>2]=w;c[t+
4>>2]=v;s=1;break}t=p;q=c[t+4>>2]|0;r=j;c[r>>2]=c[t>>2];c[r+4>>2]=q;q=p;c[q>>2]=w;c[q+4>>2]=v;if(nb[c[d>>2]&31](h,p)|0){v=p;q=c[v>>2]|0;w=c[v+4>>2]|0;v=h;r=c[v+4>>2]|0;t=p;c[t>>2]=c[v>>2];c[t+4>>2]=r;r=h;c[r>>2]=q;c[r+4>>2]=w;s=2}else s=1}else{w=(m|0)/4|0;s=Dl(j,j+(w<<3)|0,p,j+(w+o<<3)|0,h,d)|0}while(0);do if(nb[c[d>>2]&31](j,p)|0){x=h;y=s}else{o=h;while(1){o=o+-8|0;if((j|0)==(o|0))break;if(nb[c[d>>2]&31](o,p)|0){n=67;break}}if((n|0)==67){n=0;m=j;l=c[m>>2]|0;w=c[m+4>>2]|0;m=o;r=c[m+4>>2]|0;q=j;c[q>>
2]=c[m>>2];c[q+4>>2]=r;r=o;c[r>>2]=l;c[r+4>>2]=w;x=o;y=s+1|0;break}w=j+8|0;if(nb[c[d>>2]&31](j,h)|0)z=w;else{if((w|0)==(h|0)){n=84;break a}else A=w;while(1){B=A+8|0;if(nb[c[d>>2]&31](j,A)|0)break;if((B|0)==(h|0)){n=84;break a}else A=B}o=A;w=c[o>>2]|0;r=c[o+4>>2]|0;o=h;l=c[o+4>>2]|0;q=A;c[q>>2]=c[o>>2];c[q+4>>2]=l;l=h;c[l>>2]=w;c[l+4>>2]=r;z=B}if((z|0)==(h|0)){n=84;break a}else{C=z;D=h}while(1){r=C;while(1){E=r+8|0;if(nb[c[d>>2]&31](j,r)|0){F=D;break}else r=E}do F=F+-8|0;while(nb[c[d>>2]&31](j,F)|
0);if(!(r>>>0<F>>>0)){j=r;continue b}l=r;w=c[l>>2]|0;q=c[l+4>>2]|0;l=F;o=c[l+4>>2]|0;m=r;c[m>>2]=c[l>>2];c[m+4>>2]=o;o=F;c[o>>2]=w;c[o+4>>2]=q;C=E;D=F}}while(0);q=j+8|0;c:do if(q>>>0<x>>>0){o=q;w=x;m=p;l=y;while(1){t=o;while(1){G=t+8|0;if(nb[c[d>>2]&31](t,m)|0)t=G;else{H=w;break}}do H=H+-8|0;while(!(nb[c[d>>2]&31](H,m)|0));if(t>>>0>H>>>0){I=t;J=m;K=l;break c}r=t;v=c[r>>2]|0;u=c[r+4>>2]|0;r=H;L=c[r+4>>2]|0;M=t;c[M>>2]=c[r>>2];c[M+4>>2]=L;L=H;c[L>>2]=v;c[L+4>>2]=u;o=G;w=H;m=(m|0)==(t|0)?H:m;l=l+1|0}}else{I=
q;J=p;K=y}while(0);if((I|0)!=(J|0)?nb[c[d>>2]&31](J,I)|0:0){p=I;q=c[p>>2]|0;l=c[p+4>>2]|0;p=J;m=c[p+4>>2]|0;w=I;c[w>>2]=c[p>>2];c[w+4>>2]=m;m=J;c[m>>2]=q;c[m+4>>2]=l;N=K+1|0}else N=K;if((N|0)==0){O=El(j,I,d)|0;l=I+8|0;if(El(l,a,d)|0){n=79;break}if(O){j=l;continue}}l=I;if((l-k|0)>=(b-l|0)){n=83;break}Cl(j,I,d);j=I+8|0}if((n|0)==79){n=0;if(O){n=84;break}else{g=j;a=I;continue}}else if((n|0)==83){n=0;Cl(I+8|0,a,d);g=j;a=I;continue}}if((n|0)==4){if(!(nb[c[d>>2]&31](h,j)|0)){i=e;return}I=j;g=c[I>>2]|0;
O=c[I+4>>2]|0;I=h;N=c[I+4>>2]|0;K=j;c[K>>2]=c[I>>2];c[K+4>>2]=N;N=h;c[N>>2]=g;c[N+4>>2]=O;i=e;return}else if((n|0)==6){O=j+8|0;N=nb[c[d>>2]&31](O,j)|0;g=nb[c[d>>2]&31](h,O)|0;if(!N){if(!g){i=e;return}N=O;K=c[N>>2]|0;I=c[N+4>>2]|0;N=h;J=c[N+4>>2]|0;y=O;c[y>>2]=c[N>>2];c[y+4>>2]=J;J=h;c[J>>2]=K;c[J+4>>2]=I;if(!(nb[c[d>>2]&31](O,j)|0)){i=e;return}I=j;J=c[I>>2]|0;K=c[I+4>>2]|0;I=O;y=c[I+4>>2]|0;N=j;c[N>>2]=c[I>>2];c[N+4>>2]=y;y=O;c[y>>2]=J;c[y+4>>2]=K;i=e;return}K=j;y=c[K>>2]|0;J=c[K+4>>2]|0;if(g){g=
h;K=c[g+4>>2]|0;N=j;c[N>>2]=c[g>>2];c[N+4>>2]=K;K=h;c[K>>2]=y;c[K+4>>2]=J;i=e;return}K=O;N=c[K+4>>2]|0;g=j;c[g>>2]=c[K>>2];c[g+4>>2]=N;N=O;c[N>>2]=y;c[N+4>>2]=J;if(!(nb[c[d>>2]&31](h,O)|0)){i=e;return}J=O;N=c[J>>2]|0;y=c[J+4>>2]|0;J=h;g=c[J+4>>2]|0;K=O;c[K>>2]=c[J>>2];c[K+4>>2]=g;g=h;c[g>>2]=N;c[g+4>>2]=y;i=e;return}else if((n|0)==14){y=j+8|0;g=j+16|0;N=nb[c[d>>2]&31](y,j)|0;K=nb[c[d>>2]&31](g,y)|0;do if(N){J=j;O=c[J>>2]|0;I=c[J+4>>2]|0;if(K){J=g;H=c[J+4>>2]|0;G=j;c[G>>2]=c[J>>2];c[G+4>>2]=H;H=g;
c[H>>2]=O;c[H+4>>2]=I;break}H=y;G=c[H+4>>2]|0;J=j;c[J>>2]=c[H>>2];c[J+4>>2]=G;G=y;c[G>>2]=O;c[G+4>>2]=I;if(nb[c[d>>2]&31](g,y)|0){I=y;G=c[I>>2]|0;O=c[I+4>>2]|0;I=g;J=c[I+4>>2]|0;H=y;c[H>>2]=c[I>>2];c[H+4>>2]=J;J=g;c[J>>2]=G;c[J+4>>2]=O}}else if(K?(O=y,J=c[O>>2]|0,G=c[O+4>>2]|0,O=g,H=c[O+4>>2]|0,I=y,c[I>>2]=c[O>>2],c[I+4>>2]=H,H=g,c[H>>2]=J,c[H+4>>2]=G,nb[c[d>>2]&31](y,j)|0):0){G=j;H=c[G>>2]|0;J=c[G+4>>2]|0;G=y;I=c[G+4>>2]|0;O=j;c[O>>2]=c[G>>2];c[O+4>>2]=I;I=y;c[I>>2]=H;c[I+4>>2]=J}while(0);if(!(nb[c[d>>
2]&31](h,g)|0)){i=e;return}K=g;N=c[K>>2]|0;J=c[K+4>>2]|0;K=h;I=c[K+4>>2]|0;H=g;c[H>>2]=c[K>>2];c[H+4>>2]=I;I=h;c[I>>2]=N;c[I+4>>2]=J;if(!(nb[c[d>>2]&31](g,y)|0)){i=e;return}J=y;I=c[J>>2]|0;N=c[J+4>>2]|0;J=g;H=c[J+4>>2]|0;K=y;c[K>>2]=c[J>>2];c[K+4>>2]=H;H=g;c[H>>2]=I;c[H+4>>2]=N;if(!(nb[c[d>>2]&31](y,j)|0)){i=e;return}N=j;H=c[N>>2]|0;I=c[N+4>>2]|0;N=y;g=c[N+4>>2]|0;K=j;c[K>>2]=c[N>>2];c[K+4>>2]=g;g=y;c[g>>2]=H;c[g+4>>2]=I;i=e;return}else if((n|0)==26){Dl(j,j+8|0,j+16|0,j+24|0,h,d)|0;i=e;return}else if((n|
0)==28){h=j+16|0;I=j+8|0;g=nb[c[d>>2]&31](I,j)|0;H=nb[c[d>>2]&31](h,I)|0;do if(g){y=j;K=c[y>>2]|0;N=c[y+4>>2]|0;if(H){y=h;J=c[y+4>>2]|0;O=j;c[O>>2]=c[y>>2];c[O+4>>2]=J;J=h;c[J>>2]=K;c[J+4>>2]=N;break}J=I;O=c[J+4>>2]|0;y=j;c[y>>2]=c[J>>2];c[y+4>>2]=O;O=I;c[O>>2]=K;c[O+4>>2]=N;if(nb[c[d>>2]&31](h,I)|0){N=I;O=c[N>>2]|0;K=c[N+4>>2]|0;N=h;y=c[N+4>>2]|0;J=I;c[J>>2]=c[N>>2];c[J+4>>2]=y;y=h;c[y>>2]=O;c[y+4>>2]=K}}else if(H?(K=I,y=c[K>>2]|0,O=c[K+4>>2]|0,K=h,J=c[K+4>>2]|0,N=I,c[N>>2]=c[K>>2],c[N+4>>2]=J,J=
h,c[J>>2]=y,c[J+4>>2]=O,nb[c[d>>2]&31](I,j)|0):0){O=j;J=c[O>>2]|0;y=c[O+4>>2]|0;O=I;N=c[O+4>>2]|0;K=j;c[K>>2]=c[O>>2];c[K+4>>2]=N;N=I;c[N>>2]=J;c[N+4>>2]=y}while(0);I=j+24|0;if((I|0)==(a|0)){i=e;return}else{P=I;Q=h}while(1){if(nb[c[d>>2]&31](P,Q)|0){h=P;I=c[h+4>>2]|0;H=f;c[H>>2]=c[h>>2];c[H+4>>2]=I;I=P;H=Q;while(1){h=H;g=c[h+4>>2]|0;y=I;c[y>>2]=c[h>>2];c[y+4>>2]=g;if((H|0)==(j|0))break;g=H+-8|0;if(nb[c[d>>2]&31](f,g)|0){y=H;H=g;I=y}else break}I=f;y=c[I+4>>2]|0;g=H;c[g>>2]=c[I>>2];c[g+4>>2]=y}y=P+
8|0;if((y|0)==(a|0))break;else{g=P;P=y;Q=g}}i=e;return}else if((n|0)==84){i=e;return}}function Dl(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=i;j=nb[c[g>>2]&31](b,a)|0;k=nb[c[g>>2]&31](d,b)|0;do if(j){l=a;m=c[l>>2]|0;n=c[l+4>>2]|0;if(k){l=d;o=c[l+4>>2]|0;p=a;c[p>>2]=c[l>>2];c[p+4>>2]=o;o=d;c[o>>2]=m;c[o+4>>2]=n;q=1;break}o=b;p=c[o+4>>2]|0;l=a;c[l>>2]=c[o>>2];c[l+4>>2]=p;p=b;c[p>>2]=m;c[p+4>>2]=n;if(nb[c[g>>2]&31](d,b)|0){n=b;p=c[n>>2]|0;m=c[n+
4>>2]|0;n=d;l=c[n+4>>2]|0;o=b;c[o>>2]=c[n>>2];c[o+4>>2]=l;l=d;c[l>>2]=p;c[l+4>>2]=m;q=2}else q=1}else if(k){m=b;l=c[m>>2]|0;p=c[m+4>>2]|0;m=d;o=c[m+4>>2]|0;n=b;c[n>>2]=c[m>>2];c[n+4>>2]=o;o=d;c[o>>2]=l;c[o+4>>2]=p;if(nb[c[g>>2]&31](b,a)|0){p=a;o=c[p>>2]|0;l=c[p+4>>2]|0;p=b;n=c[p+4>>2]|0;m=a;c[m>>2]=c[p>>2];c[m+4>>2]=n;n=b;c[n>>2]=o;c[n+4>>2]=l;q=2}else q=1}else q=0;while(0);if(nb[c[g>>2]&31](e,d)|0){k=d;j=c[k>>2]|0;l=c[k+4>>2]|0;k=e;n=c[k+4>>2]|0;o=d;c[o>>2]=c[k>>2];c[o+4>>2]=n;n=e;c[n>>2]=j;c[n+
4>>2]=l;l=q+1|0;if(nb[c[g>>2]&31](d,b)|0){n=b;j=c[n>>2]|0;o=c[n+4>>2]|0;n=d;k=c[n+4>>2]|0;m=b;c[m>>2]=c[n>>2];c[m+4>>2]=k;k=d;c[k>>2]=j;c[k+4>>2]=o;if(nb[c[g>>2]&31](b,a)|0){o=a;k=c[o>>2]|0;j=c[o+4>>2]|0;o=b;m=c[o+4>>2]|0;n=a;c[n>>2]=c[o>>2];c[n+4>>2]=m;m=b;c[m>>2]=k;c[m+4>>2]=j;r=q+3|0}else r=q+2|0}else r=l}else r=q;if(!(nb[c[g>>2]&31](f,e)|0)){s=r;i=h;return s|0}q=e;l=c[q>>2]|0;j=c[q+4>>2]|0;q=f;m=c[q+4>>2]|0;k=e;c[k>>2]=c[q>>2];c[k+4>>2]=m;m=f;c[m>>2]=l;c[m+4>>2]=j;if(!(nb[c[g>>2]&31](e,d)|0)){s=
r+1|0;i=h;return s|0}j=d;m=c[j>>2]|0;l=c[j+4>>2]|0;j=e;f=c[j+4>>2]|0;k=d;c[k>>2]=c[j>>2];c[k+4>>2]=f;f=e;c[f>>2]=m;c[f+4>>2]=l;if(!(nb[c[g>>2]&31](d,b)|0)){s=r+2|0;i=h;return s|0}l=b;f=c[l>>2]|0;m=c[l+4>>2]|0;l=d;e=c[l+4>>2]|0;k=b;c[k>>2]=c[l>>2];c[k+4>>2]=e;e=d;c[e>>2]=f;c[e+4>>2]=m;if(!(nb[c[g>>2]&31](b,a)|0)){s=r+3|0;i=h;return s|0}g=a;m=c[g>>2]|0;e=c[g+4>>2]|0;g=b;f=c[g+4>>2]|0;d=a;c[d>>2]=c[g>>2];c[d+4>>2]=f;f=b;c[f>>2]=m;c[f+4>>2]=e;s=r+4|0;i=h;return s|0}function El(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=e;switch(b-a>>3|0){case 2:g=b+-8|0;if(!(nb[c[d>>2]&31](g,a)|0)){h=1;i=e;return h|0}j=a;k=c[j>>2]|0;l=c[j+4>>2]|0;j=g;m=c[j+4>>2]|0;n=a;c[n>>2]=c[j>>2];c[n+4>>2]=m;m=g;c[m>>2]=k;c[m+4>>2]=l;h=1;i=e;return h|0;case 5:Dl(a,a+8|0,a+16|0,a+24|0,b+-8|0,d)|0;h=1;i=e;return h|0;case 1:case 0:h=1;i=e;return h|0;case 4:l=a+8|0;m=a+16|0;k=b+-8|0;g=nb[c[d>>2]&31](l,a)|0;n=nb[c[d>>2]&31](m,l)|0;do if(g){j=a;o=c[j>>2]|
0;p=c[j+4>>2]|0;if(n){j=m;q=c[j+4>>2]|0;r=a;c[r>>2]=c[j>>2];c[r+4>>2]=q;q=m;c[q>>2]=o;c[q+4>>2]=p;break}q=l;r=c[q+4>>2]|0;j=a;c[j>>2]=c[q>>2];c[j+4>>2]=r;r=l;c[r>>2]=o;c[r+4>>2]=p;if(nb[c[d>>2]&31](m,l)|0){p=l;r=c[p>>2]|0;o=c[p+4>>2]|0;p=m;j=c[p+4>>2]|0;q=l;c[q>>2]=c[p>>2];c[q+4>>2]=j;j=m;c[j>>2]=r;c[j+4>>2]=o}}else if(n?(o=l,j=c[o>>2]|0,r=c[o+4>>2]|0,o=m,q=c[o+4>>2]|0,p=l,c[p>>2]=c[o>>2],c[p+4>>2]=q,q=m,c[q>>2]=j,c[q+4>>2]=r,nb[c[d>>2]&31](l,a)|0):0){r=a;q=c[r>>2]|0;j=c[r+4>>2]|0;r=l;p=c[r+4>>2]|
0;o=a;c[o>>2]=c[r>>2];c[o+4>>2]=p;p=l;c[p>>2]=q;c[p+4>>2]=j}while(0);if(!(nb[c[d>>2]&31](k,m)|0)){h=1;i=e;return h|0}n=m;g=c[n>>2]|0;j=c[n+4>>2]|0;n=k;p=c[n+4>>2]|0;q=m;c[q>>2]=c[n>>2];c[q+4>>2]=p;p=k;c[p>>2]=g;c[p+4>>2]=j;if(!(nb[c[d>>2]&31](m,l)|0)){h=1;i=e;return h|0}j=l;p=c[j>>2]|0;g=c[j+4>>2]|0;j=m;k=c[j+4>>2]|0;q=l;c[q>>2]=c[j>>2];c[q+4>>2]=k;k=m;c[k>>2]=p;c[k+4>>2]=g;if(!(nb[c[d>>2]&31](l,a)|0)){h=1;i=e;return h|0}g=a;k=c[g>>2]|0;p=c[g+4>>2]|0;g=l;m=c[g+4>>2]|0;q=a;c[q>>2]=c[g>>2];c[q+4>>2]=
m;m=l;c[m>>2]=k;c[m+4>>2]=p;h=1;i=e;return h|0;case 3:p=a+8|0;m=b+-8|0;k=nb[c[d>>2]&31](p,a)|0;l=nb[c[d>>2]&31](m,p)|0;if(!k){if(!l){h=1;i=e;return h|0}k=p;q=c[k>>2]|0;g=c[k+4>>2]|0;k=m;j=c[k+4>>2]|0;n=p;c[n>>2]=c[k>>2];c[n+4>>2]=j;j=m;c[j>>2]=q;c[j+4>>2]=g;if(!(nb[c[d>>2]&31](p,a)|0)){h=1;i=e;return h|0}g=a;j=c[g>>2]|0;q=c[g+4>>2]|0;g=p;n=c[g+4>>2]|0;k=a;c[k>>2]=c[g>>2];c[k+4>>2]=n;n=p;c[n>>2]=j;c[n+4>>2]=q;h=1;i=e;return h|0}q=a;n=c[q>>2]|0;j=c[q+4>>2]|0;if(l){l=m;q=c[l+4>>2]|0;k=a;c[k>>2]=c[l>>
2];c[k+4>>2]=q;q=m;c[q>>2]=n;c[q+4>>2]=j;h=1;i=e;return h|0}q=p;k=c[q+4>>2]|0;l=a;c[l>>2]=c[q>>2];c[l+4>>2]=k;k=p;c[k>>2]=n;c[k+4>>2]=j;if(!(nb[c[d>>2]&31](m,p)|0)){h=1;i=e;return h|0}j=p;k=c[j>>2]|0;n=c[j+4>>2]|0;j=m;l=c[j+4>>2]|0;q=p;c[q>>2]=c[j>>2];c[q+4>>2]=l;l=m;c[l>>2]=k;c[l+4>>2]=n;h=1;i=e;return h|0;default:n=a+16|0;l=a+8|0;k=nb[c[d>>2]&31](l,a)|0;m=nb[c[d>>2]&31](n,l)|0;do if(k){q=a;j=c[q>>2]|0;p=c[q+4>>2]|0;if(m){q=n;g=c[q+4>>2]|0;o=a;c[o>>2]=c[q>>2];c[o+4>>2]=g;g=n;c[g>>2]=j;c[g+4>>2]=
p;break}g=l;o=c[g+4>>2]|0;q=a;c[q>>2]=c[g>>2];c[q+4>>2]=o;o=l;c[o>>2]=j;c[o+4>>2]=p;if(nb[c[d>>2]&31](n,l)|0){p=l;o=c[p>>2]|0;j=c[p+4>>2]|0;p=n;q=c[p+4>>2]|0;g=l;c[g>>2]=c[p>>2];c[g+4>>2]=q;q=n;c[q>>2]=o;c[q+4>>2]=j}}else if(m?(j=l,q=c[j>>2]|0,o=c[j+4>>2]|0,j=n,g=c[j+4>>2]|0,p=l,c[p>>2]=c[j>>2],c[p+4>>2]=g,g=n,c[g>>2]=q,c[g+4>>2]=o,nb[c[d>>2]&31](l,a)|0):0){o=a;g=c[o>>2]|0;q=c[o+4>>2]|0;o=l;p=c[o+4>>2]|0;j=a;c[j>>2]=c[o>>2];c[j+4>>2]=p;p=l;c[p>>2]=g;c[p+4>>2]=q}while(0);l=a+24|0;if((l|0)==(b|0)){h=
1;i=e;return h|0}else{s=0;t=l;u=n}while(1){if(nb[c[d>>2]&31](t,u)|0){n=t;l=c[n+4>>2]|0;m=f;c[m>>2]=c[n>>2];c[m+4>>2]=l;l=t;m=u;while(1){n=m;k=c[n+4>>2]|0;q=l;c[q>>2]=c[n>>2];c[q+4>>2]=k;if((m|0)==(a|0))break;k=m+-8|0;if(nb[c[d>>2]&31](f,k)|0){q=m;m=k;l=q}else break}l=f;q=c[l+4>>2]|0;k=m;c[k>>2]=c[l>>2];c[k+4>>2]=q;q=s+1|0;if((q|0)==8)break;else v=q}else v=s;q=t+8|0;if((q|0)==(b|0)){h=1;w=41;break}else{k=t;s=v;t=q;u=k}}if((w|0)==41){i=e;return h|0}h=(t+8|0)==(b|0);i=e;return h|0}return 0}function Fl(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,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;e=i;i=i+16|0;f=e;g=a;a=b;a:while(1){b=a;h=a+-8|0;j=g;b:while(1){k=j;l=b-k|0;m=l>>3;switch(m|0){case 2:n=4;break a;break;case 4:n=14;break a;break;case 5:n=26;break a;break;case 3:n=6;break a;break;case 1:case 0:n=84;break a;break;default:}if((l|0)<248){n=28;break a}o=(m|0)/2|0;p=j+(o<<3)|0;do if((l|0)<=7992){q=nb[c[d>>2]&
31](p,j)|0;r=nb[c[d>>2]&31](h,p)|0;if(!q){if(!r){s=0;break}q=p;t=c[q>>2]|0;u=c[q+4>>2]|0;q=h;v=c[q+4>>2]|0;w=p;c[w>>2]=c[q>>2];c[w+4>>2]=v;v=h;c[v>>2]=t;c[v+4>>2]=u;if(!(nb[c[d>>2]&31](p,j)|0)){s=1;break}u=j;v=c[u>>2]|0;t=c[u+4>>2]|0;u=p;w=c[u+4>>2]|0;q=j;c[q>>2]=c[u>>2];c[q+4>>2]=w;w=p;c[w>>2]=v;c[w+4>>2]=t;s=2;break}t=j;w=c[t>>2]|0;v=c[t+4>>2]|0;if(r){r=h;t=c[r+4>>2]|0;q=j;c[q>>2]=c[r>>2];c[q+4>>2]=t;t=h;c[t>>2]=w;c[t+4>>2]=v;s=1;break}t=p;q=c[t+4>>2]|0;r=j;c[r>>2]=c[t>>2];c[r+4>>2]=q;q=p;c[q>>
2]=w;c[q+4>>2]=v;if(nb[c[d>>2]&31](h,p)|0){v=p;q=c[v>>2]|0;w=c[v+4>>2]|0;v=h;r=c[v+4>>2]|0;t=p;c[t>>2]=c[v>>2];c[t+4>>2]=r;r=h;c[r>>2]=q;c[r+4>>2]=w;s=2}else s=1}else{w=(m|0)/4|0;s=Gl(j,j+(w<<3)|0,p,j+(w+o<<3)|0,h,d)|0}while(0);do if(nb[c[d>>2]&31](j,p)|0){x=h;y=s}else{o=h;while(1){o=o+-8|0;if((j|0)==(o|0))break;if(nb[c[d>>2]&31](o,p)|0){n=67;break}}if((n|0)==67){n=0;m=j;l=c[m>>2]|0;w=c[m+4>>2]|0;m=o;r=c[m+4>>2]|0;q=j;c[q>>2]=c[m>>2];c[q+4>>2]=r;r=o;c[r>>2]=l;c[r+4>>2]=w;x=o;y=s+1|0;break}w=j+8|0;
if(nb[c[d>>2]&31](j,h)|0)z=w;else{if((w|0)==(h|0)){n=84;break a}else A=w;while(1){B=A+8|0;if(nb[c[d>>2]&31](j,A)|0)break;if((B|0)==(h|0)){n=84;break a}else A=B}o=A;w=c[o>>2]|0;r=c[o+4>>2]|0;o=h;l=c[o+4>>2]|0;q=A;c[q>>2]=c[o>>2];c[q+4>>2]=l;l=h;c[l>>2]=w;c[l+4>>2]=r;z=B}if((z|0)==(h|0)){n=84;break a}else{C=z;D=h}while(1){r=C;while(1){E=r+8|0;if(nb[c[d>>2]&31](j,r)|0){F=D;break}else r=E}do F=F+-8|0;while(nb[c[d>>2]&31](j,F)|0);if(!(r>>>0<F>>>0)){j=r;continue b}l=r;w=c[l>>2]|0;q=c[l+4>>2]|0;l=F;o=c[l+
4>>2]|0;m=r;c[m>>2]=c[l>>2];c[m+4>>2]=o;o=F;c[o>>2]=w;c[o+4>>2]=q;C=E;D=F}}while(0);q=j+8|0;c:do if(q>>>0<x>>>0){o=q;w=x;m=p;l=y;while(1){t=o;while(1){G=t+8|0;if(nb[c[d>>2]&31](t,m)|0)t=G;else{H=w;break}}do H=H+-8|0;while(!(nb[c[d>>2]&31](H,m)|0));if(t>>>0>H>>>0){I=t;J=m;K=l;break c}r=t;v=c[r>>2]|0;u=c[r+4>>2]|0;r=H;L=c[r+4>>2]|0;M=t;c[M>>2]=c[r>>2];c[M+4>>2]=L;L=H;c[L>>2]=v;c[L+4>>2]=u;o=G;w=H;m=(m|0)==(t|0)?H:m;l=l+1|0}}else{I=q;J=p;K=y}while(0);if((I|0)!=(J|0)?nb[c[d>>2]&31](J,I)|0:0){p=I;q=c[p>>
2]|0;l=c[p+4>>2]|0;p=J;m=c[p+4>>2]|0;w=I;c[w>>2]=c[p>>2];c[w+4>>2]=m;m=J;c[m>>2]=q;c[m+4>>2]=l;N=K+1|0}else N=K;if((N|0)==0){O=Hl(j,I,d)|0;l=I+8|0;if(Hl(l,a,d)|0){n=79;break}if(O){j=l;continue}}l=I;if((l-k|0)>=(b-l|0)){n=83;break}Fl(j,I,d);j=I+8|0}if((n|0)==79){n=0;if(O){n=84;break}else{g=j;a=I;continue}}else if((n|0)==83){n=0;Fl(I+8|0,a,d);g=j;a=I;continue}}if((n|0)==4){if(!(nb[c[d>>2]&31](h,j)|0)){i=e;return}I=j;g=c[I>>2]|0;O=c[I+4>>2]|0;I=h;N=c[I+4>>2]|0;K=j;c[K>>2]=c[I>>2];c[K+4>>2]=N;N=h;c[N>>
2]=g;c[N+4>>2]=O;i=e;return}else if((n|0)==6){O=j+8|0;N=nb[c[d>>2]&31](O,j)|0;g=nb[c[d>>2]&31](h,O)|0;if(!N){if(!g){i=e;return}N=O;K=c[N>>2]|0;I=c[N+4>>2]|0;N=h;J=c[N+4>>2]|0;y=O;c[y>>2]=c[N>>2];c[y+4>>2]=J;J=h;c[J>>2]=K;c[J+4>>2]=I;if(!(nb[c[d>>2]&31](O,j)|0)){i=e;return}I=j;J=c[I>>2]|0;K=c[I+4>>2]|0;I=O;y=c[I+4>>2]|0;N=j;c[N>>2]=c[I>>2];c[N+4>>2]=y;y=O;c[y>>2]=J;c[y+4>>2]=K;i=e;return}K=j;y=c[K>>2]|0;J=c[K+4>>2]|0;if(g){g=h;K=c[g+4>>2]|0;N=j;c[N>>2]=c[g>>2];c[N+4>>2]=K;K=h;c[K>>2]=y;c[K+4>>2]=J;
i=e;return}K=O;N=c[K+4>>2]|0;g=j;c[g>>2]=c[K>>2];c[g+4>>2]=N;N=O;c[N>>2]=y;c[N+4>>2]=J;if(!(nb[c[d>>2]&31](h,O)|0)){i=e;return}J=O;N=c[J>>2]|0;y=c[J+4>>2]|0;J=h;g=c[J+4>>2]|0;K=O;c[K>>2]=c[J>>2];c[K+4>>2]=g;g=h;c[g>>2]=N;c[g+4>>2]=y;i=e;return}else if((n|0)==14){y=j+8|0;g=j+16|0;N=nb[c[d>>2]&31](y,j)|0;K=nb[c[d>>2]&31](g,y)|0;do if(N){J=j;O=c[J>>2]|0;I=c[J+4>>2]|0;if(K){J=g;H=c[J+4>>2]|0;G=j;c[G>>2]=c[J>>2];c[G+4>>2]=H;H=g;c[H>>2]=O;c[H+4>>2]=I;break}H=y;G=c[H+4>>2]|0;J=j;c[J>>2]=c[H>>2];c[J+4>>2]=
G;G=y;c[G>>2]=O;c[G+4>>2]=I;if(nb[c[d>>2]&31](g,y)|0){I=y;G=c[I>>2]|0;O=c[I+4>>2]|0;I=g;J=c[I+4>>2]|0;H=y;c[H>>2]=c[I>>2];c[H+4>>2]=J;J=g;c[J>>2]=G;c[J+4>>2]=O}}else if(K?(O=y,J=c[O>>2]|0,G=c[O+4>>2]|0,O=g,H=c[O+4>>2]|0,I=y,c[I>>2]=c[O>>2],c[I+4>>2]=H,H=g,c[H>>2]=J,c[H+4>>2]=G,nb[c[d>>2]&31](y,j)|0):0){G=j;H=c[G>>2]|0;J=c[G+4>>2]|0;G=y;I=c[G+4>>2]|0;O=j;c[O>>2]=c[G>>2];c[O+4>>2]=I;I=y;c[I>>2]=H;c[I+4>>2]=J}while(0);if(!(nb[c[d>>2]&31](h,g)|0)){i=e;return}K=g;N=c[K>>2]|0;J=c[K+4>>2]|0;K=h;I=c[K+4>>
2]|0;H=g;c[H>>2]=c[K>>2];c[H+4>>2]=I;I=h;c[I>>2]=N;c[I+4>>2]=J;if(!(nb[c[d>>2]&31](g,y)|0)){i=e;return}J=y;I=c[J>>2]|0;N=c[J+4>>2]|0;J=g;H=c[J+4>>2]|0;K=y;c[K>>2]=c[J>>2];c[K+4>>2]=H;H=g;c[H>>2]=I;c[H+4>>2]=N;if(!(nb[c[d>>2]&31](y,j)|0)){i=e;return}N=j;H=c[N>>2]|0;I=c[N+4>>2]|0;N=y;g=c[N+4>>2]|0;K=j;c[K>>2]=c[N>>2];c[K+4>>2]=g;g=y;c[g>>2]=H;c[g+4>>2]=I;i=e;return}else if((n|0)==26){Gl(j,j+8|0,j+16|0,j+24|0,h,d)|0;i=e;return}else if((n|0)==28){h=j+16|0;I=j+8|0;g=nb[c[d>>2]&31](I,j)|0;H=nb[c[d>>2]&
31](h,I)|0;do if(g){y=j;K=c[y>>2]|0;N=c[y+4>>2]|0;if(H){y=h;J=c[y+4>>2]|0;O=j;c[O>>2]=c[y>>2];c[O+4>>2]=J;J=h;c[J>>2]=K;c[J+4>>2]=N;break}J=I;O=c[J+4>>2]|0;y=j;c[y>>2]=c[J>>2];c[y+4>>2]=O;O=I;c[O>>2]=K;c[O+4>>2]=N;if(nb[c[d>>2]&31](h,I)|0){N=I;O=c[N>>2]|0;K=c[N+4>>2]|0;N=h;y=c[N+4>>2]|0;J=I;c[J>>2]=c[N>>2];c[J+4>>2]=y;y=h;c[y>>2]=O;c[y+4>>2]=K}}else if(H?(K=I,y=c[K>>2]|0,O=c[K+4>>2]|0,K=h,J=c[K+4>>2]|0,N=I,c[N>>2]=c[K>>2],c[N+4>>2]=J,J=h,c[J>>2]=y,c[J+4>>2]=O,nb[c[d>>2]&31](I,j)|0):0){O=j;J=c[O>>
2]|0;y=c[O+4>>2]|0;O=I;N=c[O+4>>2]|0;K=j;c[K>>2]=c[O>>2];c[K+4>>2]=N;N=I;c[N>>2]=J;c[N+4>>2]=y}while(0);I=j+24|0;if((I|0)==(a|0)){i=e;return}else{P=I;Q=h}while(1){if(nb[c[d>>2]&31](P,Q)|0){h=P;I=c[h+4>>2]|0;H=f;c[H>>2]=c[h>>2];c[H+4>>2]=I;I=P;H=Q;while(1){h=H;g=c[h+4>>2]|0;y=I;c[y>>2]=c[h>>2];c[y+4>>2]=g;if((H|0)==(j|0))break;g=H+-8|0;if(nb[c[d>>2]&31](f,g)|0){y=H;H=g;I=y}else break}I=f;y=c[I+4>>2]|0;g=H;c[g>>2]=c[I>>2];c[g+4>>2]=y}y=P+8|0;if((y|0)==(a|0))break;else{g=P;P=y;Q=g}}i=e;return}else if((n|
0)==84){i=e;return}}function Gl(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=i;j=nb[c[g>>2]&31](b,a)|0;k=nb[c[g>>2]&31](d,b)|0;do if(j){l=a;m=c[l>>2]|0;n=c[l+4>>2]|0;if(k){l=d;o=c[l+4>>2]|0;p=a;c[p>>2]=c[l>>2];c[p+4>>2]=o;o=d;c[o>>2]=m;c[o+4>>2]=n;q=1;break}o=b;p=c[o+4>>2]|0;l=a;c[l>>2]=c[o>>2];c[l+4>>2]=p;p=b;c[p>>2]=m;c[p+4>>2]=n;if(nb[c[g>>2]&31](d,b)|0){n=b;p=c[n>>2]|0;m=c[n+4>>2]|0;n=d;l=c[n+4>>2]|0;o=b;c[o>>2]=c[n>>2];c[o+4>>2]=l;l=d;c[l>>
2]=p;c[l+4>>2]=m;q=2}else q=1}else if(k){m=b;l=c[m>>2]|0;p=c[m+4>>2]|0;m=d;o=c[m+4>>2]|0;n=b;c[n>>2]=c[m>>2];c[n+4>>2]=o;o=d;c[o>>2]=l;c[o+4>>2]=p;if(nb[c[g>>2]&31](b,a)|0){p=a;o=c[p>>2]|0;l=c[p+4>>2]|0;p=b;n=c[p+4>>2]|0;m=a;c[m>>2]=c[p>>2];c[m+4>>2]=n;n=b;c[n>>2]=o;c[n+4>>2]=l;q=2}else q=1}else q=0;while(0);if(nb[c[g>>2]&31](e,d)|0){k=d;j=c[k>>2]|0;l=c[k+4>>2]|0;k=e;n=c[k+4>>2]|0;o=d;c[o>>2]=c[k>>2];c[o+4>>2]=n;n=e;c[n>>2]=j;c[n+4>>2]=l;l=q+1|0;if(nb[c[g>>2]&31](d,b)|0){n=b;j=c[n>>2]|0;o=c[n+4>>
2]|0;n=d;k=c[n+4>>2]|0;m=b;c[m>>2]=c[n>>2];c[m+4>>2]=k;k=d;c[k>>2]=j;c[k+4>>2]=o;if(nb[c[g>>2]&31](b,a)|0){o=a;k=c[o>>2]|0;j=c[o+4>>2]|0;o=b;m=c[o+4>>2]|0;n=a;c[n>>2]=c[o>>2];c[n+4>>2]=m;m=b;c[m>>2]=k;c[m+4>>2]=j;r=q+3|0}else r=q+2|0}else r=l}else r=q;if(!(nb[c[g>>2]&31](f,e)|0)){s=r;i=h;return s|0}q=e;l=c[q>>2]|0;j=c[q+4>>2]|0;q=f;m=c[q+4>>2]|0;k=e;c[k>>2]=c[q>>2];c[k+4>>2]=m;m=f;c[m>>2]=l;c[m+4>>2]=j;if(!(nb[c[g>>2]&31](e,d)|0)){s=r+1|0;i=h;return s|0}j=d;m=c[j>>2]|0;l=c[j+4>>2]|0;j=e;f=c[j+4>>
2]|0;k=d;c[k>>2]=c[j>>2];c[k+4>>2]=f;f=e;c[f>>2]=m;c[f+4>>2]=l;if(!(nb[c[g>>2]&31](d,b)|0)){s=r+2|0;i=h;return s|0}l=b;f=c[l>>2]|0;m=c[l+4>>2]|0;l=d;e=c[l+4>>2]|0;k=b;c[k>>2]=c[l>>2];c[k+4>>2]=e;e=d;c[e>>2]=f;c[e+4>>2]=m;if(!(nb[c[g>>2]&31](b,a)|0)){s=r+3|0;i=h;return s|0}g=a;m=c[g>>2]|0;e=c[g+4>>2]|0;g=b;f=c[g+4>>2]|0;d=a;c[d>>2]=c[g>>2];c[d+4>>2]=f;f=b;c[f>>2]=m;c[f+4>>2]=e;s=r+4|0;i=h;return s|0}function Hl(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=e;switch(b-a>>3|0){case 3:g=a+8|0;h=b+-8|0;j=nb[c[d>>2]&31](g,a)|0;k=nb[c[d>>2]&31](h,g)|0;if(!j){if(!k){l=1;i=e;return l|0}j=g;m=c[j>>2]|0;n=c[j+4>>2]|0;j=h;o=c[j+4>>2]|0;p=g;c[p>>2]=c[j>>2];c[p+4>>2]=o;o=h;c[o>>2]=m;c[o+4>>2]=n;if(!(nb[c[d>>2]&31](g,a)|0)){l=1;i=e;return l|0}n=a;o=c[n>>2]|0;m=c[n+4>>2]|0;n=g;p=c[n+4>>2]|0;j=a;c[j>>2]=c[n>>2];c[j+4>>2]=p;p=g;c[p>>2]=o;c[p+4>>2]=m;l=1;i=e;return l|0}m=a;p=c[m>>2]|0;o=c[m+4>>2]|0;if(k){k=h;m=c[k+4>>2]|0;j=a;c[j>>2]=c[k>>
2];c[j+4>>2]=m;m=h;c[m>>2]=p;c[m+4>>2]=o;l=1;i=e;return l|0}m=g;j=c[m+4>>2]|0;k=a;c[k>>2]=c[m>>2];c[k+4>>2]=j;j=g;c[j>>2]=p;c[j+4>>2]=o;if(!(nb[c[d>>2]&31](h,g)|0)){l=1;i=e;return l|0}o=g;j=c[o>>2]|0;p=c[o+4>>2]|0;o=h;k=c[o+4>>2]|0;m=g;c[m>>2]=c[o>>2];c[m+4>>2]=k;k=h;c[k>>2]=j;c[k+4>>2]=p;l=1;i=e;return l|0;case 4:p=a+8|0;k=a+16|0;j=b+-8|0;h=nb[c[d>>2]&31](p,a)|0;m=nb[c[d>>2]&31](k,p)|0;do if(h){o=a;g=c[o>>2]|0;n=c[o+4>>2]|0;if(m){o=k;q=c[o+4>>2]|0;r=a;c[r>>2]=c[o>>2];c[r+4>>2]=q;q=k;c[q>>2]=g;c[q+
4>>2]=n;break}q=p;r=c[q+4>>2]|0;o=a;c[o>>2]=c[q>>2];c[o+4>>2]=r;r=p;c[r>>2]=g;c[r+4>>2]=n;if(nb[c[d>>2]&31](k,p)|0){n=p;r=c[n>>2]|0;g=c[n+4>>2]|0;n=k;o=c[n+4>>2]|0;q=p;c[q>>2]=c[n>>2];c[q+4>>2]=o;o=k;c[o>>2]=r;c[o+4>>2]=g}}else if(m?(g=p,o=c[g>>2]|0,r=c[g+4>>2]|0,g=k,q=c[g+4>>2]|0,n=p,c[n>>2]=c[g>>2],c[n+4>>2]=q,q=k,c[q>>2]=o,c[q+4>>2]=r,nb[c[d>>2]&31](p,a)|0):0){r=a;q=c[r>>2]|0;o=c[r+4>>2]|0;r=p;n=c[r+4>>2]|0;g=a;c[g>>2]=c[r>>2];c[g+4>>2]=n;n=p;c[n>>2]=q;c[n+4>>2]=o}while(0);if(!(nb[c[d>>2]&31](j,
k)|0)){l=1;i=e;return l|0}m=k;h=c[m>>2]|0;o=c[m+4>>2]|0;m=j;n=c[m+4>>2]|0;q=k;c[q>>2]=c[m>>2];c[q+4>>2]=n;n=j;c[n>>2]=h;c[n+4>>2]=o;if(!(nb[c[d>>2]&31](k,p)|0)){l=1;i=e;return l|0}o=p;n=c[o>>2]|0;h=c[o+4>>2]|0;o=k;j=c[o+4>>2]|0;q=p;c[q>>2]=c[o>>2];c[q+4>>2]=j;j=k;c[j>>2]=n;c[j+4>>2]=h;if(!(nb[c[d>>2]&31](p,a)|0)){l=1;i=e;return l|0}h=a;j=c[h>>2]|0;n=c[h+4>>2]|0;h=p;k=c[h+4>>2]|0;q=a;c[q>>2]=c[h>>2];c[q+4>>2]=k;k=p;c[k>>2]=j;c[k+4>>2]=n;l=1;i=e;return l|0;case 1:case 0:l=1;i=e;return l|0;case 5:Gl(a,
a+8|0,a+16|0,a+24|0,b+-8|0,d)|0;l=1;i=e;return l|0;case 2:n=b+-8|0;if(!(nb[c[d>>2]&31](n,a)|0)){l=1;i=e;return l|0}k=a;j=c[k>>2]|0;p=c[k+4>>2]|0;k=n;q=c[k+4>>2]|0;h=a;c[h>>2]=c[k>>2];c[h+4>>2]=q;q=n;c[q>>2]=j;c[q+4>>2]=p;l=1;i=e;return l|0;default:p=a+16|0;q=a+8|0;j=nb[c[d>>2]&31](q,a)|0;n=nb[c[d>>2]&31](p,q)|0;do if(j){h=a;k=c[h>>2]|0;o=c[h+4>>2]|0;if(n){h=p;m=c[h+4>>2]|0;g=a;c[g>>2]=c[h>>2];c[g+4>>2]=m;m=p;c[m>>2]=k;c[m+4>>2]=o;break}m=q;g=c[m+4>>2]|0;h=a;c[h>>2]=c[m>>2];c[h+4>>2]=g;g=q;c[g>>2]=
k;c[g+4>>2]=o;if(nb[c[d>>2]&31](p,q)|0){o=q;g=c[o>>2]|0;k=c[o+4>>2]|0;o=p;h=c[o+4>>2]|0;m=q;c[m>>2]=c[o>>2];c[m+4>>2]=h;h=p;c[h>>2]=g;c[h+4>>2]=k}}else if(n?(k=q,h=c[k>>2]|0,g=c[k+4>>2]|0,k=p,m=c[k+4>>2]|0,o=q,c[o>>2]=c[k>>2],c[o+4>>2]=m,m=p,c[m>>2]=h,c[m+4>>2]=g,nb[c[d>>2]&31](q,a)|0):0){g=a;m=c[g>>2]|0;h=c[g+4>>2]|0;g=q;o=c[g+4>>2]|0;k=a;c[k>>2]=c[g>>2];c[k+4>>2]=o;o=q;c[o>>2]=m;c[o+4>>2]=h}while(0);q=a+24|0;if((q|0)==(b|0)){l=1;i=e;return l|0}else{s=0;t=q;u=p}while(1){if(nb[c[d>>2]&31](t,u)|0){p=
t;q=c[p+4>>2]|0;n=f;c[n>>2]=c[p>>2];c[n+4>>2]=q;q=t;n=u;while(1){p=n;j=c[p+4>>2]|0;h=q;c[h>>2]=c[p>>2];c[h+4>>2]=j;if((n|0)==(a|0))break;j=n+-8|0;if(nb[c[d>>2]&31](f,j)|0){h=n;n=j;q=h}else break}q=f;h=c[q+4>>2]|0;j=n;c[j>>2]=c[q>>2];c[j+4>>2]=h;h=s+1|0;if((h|0)==8)break;else v=h}else v=s;h=t+8|0;if((h|0)==(b|0)){l=1;w=41;break}else{j=t;s=v;t=h;u=j}}if((w|0)==41){i=e;return l|0}l=(t+8|0)==(b|0);i=e;return l|0}return 0}function Il(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,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;e=i;f=a;a=b;a:while(1){b=a;g=a+-8|0;h=a+-4|0;j=f;b:while(1){k=j;l=b-k|0;m=l>>3;switch(m|0){case 2:n=4;break a;break;case 4:n=14;break a;break;case 3:n=6;break a;break;case 5:n=15;break a;break;case 1:case 0:n=85;break a;break;default:}if((l|0)<248){n=21;break a}o=(m|0)/2|0;p=j+(o<<3)|0;do if((l|0)>7992){q=(m|0)/4|0;r=j+(q<<3)|0;s=q+o|0;t=j+(s<<3)|0;u=Jl(j,r,p,t,0)|0;v=j+(s<<
3)+4|0;if(!((c[h>>2]|0)>>>0<(c[v>>2]|0)>>>0)){w=j+(o<<3)+4|0;x=u;break}s=t;y=c[s>>2]|0;z=c[s+4>>2]|0;s=g;A=c[s+4>>2]|0;B=t;c[B>>2]=c[s>>2];c[B+4>>2]=A;A=g;c[A>>2]=y;c[A+4>>2]=z;z=j+(o<<3)+4|0;if(!((c[v>>2]|0)>>>0<(c[z>>2]|0)>>>0)){w=z;x=u+1|0;break}v=p;A=c[v>>2]|0;y=c[v+4>>2]|0;v=t;B=c[v+4>>2]|0;s=p;c[s>>2]=c[v>>2];c[s+4>>2]=B;B=t;c[B>>2]=A;c[B+4>>2]=y;y=j+(q<<3)+4|0;if(!((c[z>>2]|0)>>>0<(c[y>>2]|0)>>>0)){w=z;x=u+2|0;break}q=r;B=c[q>>2]|0;A=c[q+4>>2]|0;q=p;t=c[q+4>>2]|0;s=r;c[s>>2]=c[q>>2];c[s+4>>
2]=t;t=p;c[t>>2]=B;c[t+4>>2]=A;if((c[y>>2]|0)>>>0<(c[j+4>>2]|0)>>>0){y=j;A=c[y>>2]|0;t=c[y+4>>2]|0;y=r;B=c[y+4>>2]|0;s=j;c[s>>2]=c[y>>2];c[s+4>>2]=B;B=r;c[B>>2]=A;c[B+4>>2]=t;w=z;x=u+4|0;break}else{w=z;x=u+3|0;break}}else{u=j+(o<<3)+4|0;z=c[u>>2]|0;t=j+4|0;B=(c[h>>2]|0)>>>0<z>>>0;if(!(z>>>0<(c[t>>2]|0)>>>0)){if(!B){w=u;x=0;break}z=p;A=c[z>>2]|0;r=c[z+4>>2]|0;z=g;s=c[z+4>>2]|0;y=p;c[y>>2]=c[z>>2];c[y+4>>2]=s;s=g;c[s>>2]=A;c[s+4>>2]=r;if(!((c[u>>2]|0)>>>0<(c[t>>2]|0)>>>0)){w=u;x=1;break}t=j;r=c[t>>
2]|0;s=c[t+4>>2]|0;t=p;A=c[t+4>>2]|0;y=j;c[y>>2]=c[t>>2];c[y+4>>2]=A;A=p;c[A>>2]=r;c[A+4>>2]=s;w=u;x=2;break}s=j;A=c[s>>2]|0;r=c[s+4>>2]|0;if(B){B=g;s=c[B+4>>2]|0;y=j;c[y>>2]=c[B>>2];c[y+4>>2]=s;s=g;c[s>>2]=A;c[s+4>>2]=r;w=u;x=1;break}s=p;y=c[s+4>>2]|0;B=j;c[B>>2]=c[s>>2];c[B+4>>2]=y;y=p;c[y>>2]=A;c[y+4>>2]=r;if((c[h>>2]|0)>>>0<r>>>0){y=g;B=c[y+4>>2]|0;s=p;c[s>>2]=c[y>>2];c[s+4>>2]=B;B=g;c[B>>2]=A;c[B+4>>2]=r;w=u;x=2}else{w=u;x=1}}while(0);o=j+4|0;m=c[o>>2]|0;l=c[w>>2]|0;do if(m>>>0<l>>>0){C=g;D=
x}else{u=g;while(1){r=u;u=u+-8|0;if((j|0)==(u|0))break;if((c[r+-4>>2]|0)>>>0<l>>>0){n=68;break}}if((n|0)==68){n=0;r=j;B=c[r>>2]|0;A=c[r+4>>2]|0;r=u;s=c[r+4>>2]|0;y=j;c[y>>2]=c[r>>2];c[y+4>>2]=s;s=u;c[s>>2]=B;c[s+4>>2]=A;C=u;D=x+1|0;break}A=j+8|0;if(m>>>0<(c[h>>2]|0)>>>0)E=A;else{if((A|0)==(g|0)){n=85;break a}else F=A;while(1){G=F+8|0;if(m>>>0<(c[F+4>>2]|0)>>>0)break;if((G|0)==(g|0)){n=85;break a}else F=G}u=F;A=c[u>>2]|0;s=c[u+4>>2]|0;u=g;B=c[u+4>>2]|0;y=F;c[y>>2]=c[u>>2];c[y+4>>2]=B;B=g;c[B>>2]=A;
c[B+4>>2]=s;E=G}if((E|0)==(g|0)){n=85;break a}else{H=E;I=g}while(1){s=c[o>>2]|0;B=H;while(1){J=B+8|0;if(s>>>0<(c[B+4>>2]|0)>>>0){K=I;break}else B=J}do{A=K;K=K+-8|0}while(s>>>0<(c[A+-4>>2]|0)>>>0);if(!(B>>>0<K>>>0)){j=B;continue b}s=B;A=c[s>>2]|0;y=c[s+4>>2]|0;s=K;u=c[s+4>>2]|0;r=B;c[r>>2]=c[s>>2];c[r+4>>2]=u;u=K;c[u>>2]=A;c[u+4>>2]=y;H=J;I=K}}while(0);o=j+8|0;c:do if(o>>>0<C>>>0){m=o;l=C;y=p;u=D;while(1){A=c[y+4>>2]|0;r=m;while(1){L=r+8|0;if((c[r+4>>2]|0)>>>0<A>>>0)r=L;else{M=l;break}}do{B=M;M=M+
-8|0}while(!((c[B+-4>>2]|0)>>>0<A>>>0));if(r>>>0>M>>>0){N=r;O=y;P=u;break c}A=r;B=c[A>>2]|0;s=c[A+4>>2]|0;A=M;t=c[A+4>>2]|0;z=r;c[z>>2]=c[A>>2];c[z+4>>2]=t;t=M;c[t>>2]=B;c[t+4>>2]=s;m=L;l=M;y=(y|0)==(r|0)?M:y;u=u+1|0}}else{N=o;O=p;P=D}while(0);if((N|0)!=(O|0)?(c[O+4>>2]|0)>>>0<(c[N+4>>2]|0)>>>0:0){p=N;o=c[p>>2]|0;u=c[p+4>>2]|0;p=O;y=c[p+4>>2]|0;l=N;c[l>>2]=c[p>>2];c[l+4>>2]=y;y=O;c[y>>2]=o;c[y+4>>2]=u;Q=P+1|0}else Q=P;if((Q|0)==0){R=Kl(j,N,0)|0;u=N+8|0;if(Kl(u,a,0)|0){n=80;break}if(R){j=u;continue}}u=
N;if((u-k|0)>=(b-u|0)){n=84;break}Il(j,N,d);j=N+8|0}if((n|0)==80){n=0;if(R){n=85;break}else{f=j;a=N;continue}}else if((n|0)==84){n=0;Il(N+8|0,a,d);f=j;a=N;continue}}if((n|0)==4){if(!((c[h>>2]|0)>>>0<(c[j+4>>2]|0)>>>0)){i=e;return}N=j;f=c[N>>2]|0;d=c[N+4>>2]|0;N=g;R=c[N+4>>2]|0;Q=j;c[Q>>2]=c[N>>2];c[Q+4>>2]=R;R=g;c[R>>2]=f;c[R+4>>2]=d;i=e;return}else if((n|0)==6){d=j+8|0;R=j+12|0;f=c[R>>2]|0;Q=j+4|0;N=(c[h>>2]|0)>>>0<f>>>0;if(!(f>>>0<(c[Q>>2]|0)>>>0)){if(!N){i=e;return}f=d;P=c[f>>2]|0;O=c[f+4>>2]|
0;f=g;D=c[f+4>>2]|0;M=d;c[M>>2]=c[f>>2];c[M+4>>2]=D;D=g;c[D>>2]=P;c[D+4>>2]=O;if(!((c[R>>2]|0)>>>0<(c[Q>>2]|0)>>>0)){i=e;return}Q=j;R=c[Q>>2]|0;O=c[Q+4>>2]|0;Q=d;D=c[Q+4>>2]|0;P=j;c[P>>2]=c[Q>>2];c[P+4>>2]=D;D=d;c[D>>2]=R;c[D+4>>2]=O;i=e;return}O=j;D=c[O>>2]|0;R=c[O+4>>2]|0;if(N){N=g;O=c[N+4>>2]|0;P=j;c[P>>2]=c[N>>2];c[P+4>>2]=O;O=g;c[O>>2]=D;c[O+4>>2]=R;i=e;return}O=d;P=c[O+4>>2]|0;N=j;c[N>>2]=c[O>>2];c[N+4>>2]=P;P=d;c[P>>2]=D;c[P+4>>2]=R;if(!((c[h>>2]|0)>>>0<R>>>0)){i=e;return}P=g;N=c[P+4>>2]|0;
O=d;c[O>>2]=c[P>>2];c[O+4>>2]=N;N=g;c[N>>2]=D;c[N+4>>2]=R;i=e;return}else if((n|0)==14){Jl(j,j+8|0,j+16|0,g,0)|0;i=e;return}else if((n|0)==15){R=j+8|0;N=j+16|0;D=j+24|0;Jl(j,R,N,D,0)|0;O=j+28|0;if(!((c[h>>2]|0)>>>0<(c[O>>2]|0)>>>0)){i=e;return}h=D;P=c[h>>2]|0;d=c[h+4>>2]|0;h=g;Q=c[h+4>>2]|0;M=D;c[M>>2]=c[h>>2];c[M+4>>2]=Q;Q=g;c[Q>>2]=P;c[Q+4>>2]=d;if(!((c[O>>2]|0)>>>0<(c[j+20>>2]|0)>>>0)){i=e;return}O=N;d=c[O>>2]|0;Q=c[O+4>>2]|0;O=D;P=c[O>>2]|0;g=c[O+4>>2]|0;O=N;c[O>>2]=P;c[O+4>>2]=g;O=D;c[O>>2]=
d;c[O+4>>2]=Q;if(!(g>>>0<(c[j+12>>2]|0)>>>0)){i=e;return}Q=R;O=c[Q>>2]|0;d=c[Q+4>>2]|0;Q=R;c[Q>>2]=P;c[Q+4>>2]=g;Q=N;c[Q>>2]=O;c[Q+4>>2]=d;if(!(g>>>0<(c[j+4>>2]|0)>>>0)){i=e;return}d=j;Q=c[d>>2]|0;O=c[d+4>>2]|0;d=j;c[d>>2]=P;c[d+4>>2]=g;g=R;c[g>>2]=Q;c[g+4>>2]=O;i=e;return}else if((n|0)==21){O=j+16|0;g=j+8|0;Q=c[j+12>>2]|0;R=c[j+4>>2]|0;d=c[j+20>>2]|0;P=d>>>0<Q>>>0;do if(Q>>>0<R>>>0){N=j;D=c[N>>2]|0;M=c[N+4>>2]|0;if(P){N=O;h=c[N+4>>2]|0;f=j;c[f>>2]=c[N>>2];c[f+4>>2]=h;h=O;c[h>>2]=D;c[h+4>>2]=M;break}h=
g;f=c[h+4>>2]|0;N=j;c[N>>2]=c[h>>2];c[N+4>>2]=f;f=g;c[f>>2]=D;c[f+4>>2]=M;if(d>>>0<M>>>0){f=O;N=c[f+4>>2]|0;h=g;c[h>>2]=c[f>>2];c[h+4>>2]=N;N=O;c[N>>2]=D;c[N+4>>2]=M}}else if(P?(M=g,N=c[M>>2]|0,D=c[M+4>>2]|0,M=O,h=c[M>>2]|0,f=c[M+4>>2]|0,M=g,c[M>>2]=h,c[M+4>>2]=f,M=O,c[M>>2]=N,c[M+4>>2]=D,f>>>0<R>>>0):0){D=j;M=c[D>>2]|0;N=c[D+4>>2]|0;D=j;c[D>>2]=h;c[D+4>>2]=f;f=g;c[f>>2]=M;c[f+4>>2]=N}while(0);g=j+24|0;if((g|0)==(a|0)){i=e;return}else{S=g;T=O}while(1){if((c[S+4>>2]|0)>>>0<(c[T+4>>2]|0)>>>0){O=S;g=
c[O>>2]|0;R=c[O+4>>2]|0;O=S;P=T;while(1){d=P;Q=c[d+4>>2]|0;N=O;c[N>>2]=c[d>>2];c[N+4>>2]=Q;if((P|0)==(j|0))break;if(R>>>0<(c[P+-4>>2]|0)>>>0){Q=P;P=P+-8|0;O=Q}else break}O=P;c[O>>2]=g;c[O+4>>2]=R}O=S+8|0;if((O|0)==(a|0))break;else{Q=S;S=O;T=Q}}i=e;return}else if((n|0)==85){i=e;return}}function Jl(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;f=i;g=b+4|0;h=c[g>>2]|0;j=a+4|0;k=d+4|0;l=c[k>>2]|0;m=l>>>0<h>>>0;do if(h>>>0<(c[j>>2]|0)>>>0){n=a;
o=c[n>>2]|0;p=c[n+4>>2]|0;if(m){n=d;q=c[n+4>>2]|0;r=a;c[r>>2]=c[n>>2];c[r+4>>2]=q;q=d;c[q>>2]=o;c[q+4>>2]=p;s=1;t=p;break}q=b;r=c[q+4>>2]|0;n=a;c[n>>2]=c[q>>2];c[n+4>>2]=r;r=b;c[r>>2]=o;c[r+4>>2]=p;r=c[k>>2]|0;if(r>>>0<p>>>0){n=d;q=c[n+4>>2]|0;u=b;c[u>>2]=c[n>>2];c[u+4>>2]=q;q=d;c[q>>2]=o;c[q+4>>2]=p;s=2;t=p}else{s=1;t=r}}else if(m){r=b;p=c[r>>2]|0;q=c[r+4>>2]|0;r=d;o=c[r+4>>2]|0;u=b;c[u>>2]=c[r>>2];c[u+4>>2]=o;o=d;c[o>>2]=p;c[o+4>>2]=q;if((c[g>>2]|0)>>>0<(c[j>>2]|0)>>>0){o=a;p=c[o>>2]|0;u=c[o+4>>
2]|0;o=b;r=c[o+4>>2]|0;n=a;c[n>>2]=c[o>>2];c[n+4>>2]=r;r=b;c[r>>2]=p;c[r+4>>2]=u;s=2;t=c[k>>2]|0}else{s=1;t=q}}else{s=0;t=l}while(0);if(!((c[e+4>>2]|0)>>>0<t>>>0)){v=s;i=f;return v|0}t=d;l=c[t>>2]|0;m=c[t+4>>2]|0;t=e;h=c[t+4>>2]|0;q=d;c[q>>2]=c[t>>2];c[q+4>>2]=h;h=e;c[h>>2]=l;c[h+4>>2]=m;if(!((c[k>>2]|0)>>>0<(c[g>>2]|0)>>>0)){v=s+1|0;i=f;return v|0}k=b;m=c[k>>2]|0;h=c[k+4>>2]|0;k=d;l=c[k+4>>2]|0;e=b;c[e>>2]=c[k>>2];c[e+4>>2]=l;l=d;c[l>>2]=m;c[l+4>>2]=h;if(!((c[g>>2]|0)>>>0<(c[j>>2]|0)>>>0)){v=s+2|
0;i=f;return v|0}j=a;g=c[j>>2]|0;h=c[j+4>>2]|0;j=b;l=c[j+4>>2]|0;m=a;c[m>>2]=c[j>>2];c[m+4>>2]=l;l=b;c[l>>2]=g;c[l+4>>2]=h;v=s+3|0;i=f;return v|0}function Kl(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;d=i;switch(b-a>>3|0){case 5:e=a+8|0;f=a+16|0;g=a+24|0;Jl(a,e,f,g,0)|0;h=a+28|0;if(!((c[b+-4>>2]|0)>>>0<(c[h>>2]|0)>>>0)){j=1;i=d;return j|0}k=b+-8|0;l=g;m=c[l>>2]|0;n=c[l+4>>2]|0;l=k;o=c[l+4>>2]|0;p=g;c[p>>2]=c[l>>2];c[p+4>>2]=o;o=k;c[o>>2]=m;c[o+
4>>2]=n;if(!((c[h>>2]|0)>>>0<(c[a+20>>2]|0)>>>0)){j=1;i=d;return j|0}h=f;n=c[h>>2]|0;o=c[h+4>>2]|0;h=g;m=c[h>>2]|0;k=c[h+4>>2]|0;h=f;c[h>>2]=m;c[h+4>>2]=k;h=g;c[h>>2]=n;c[h+4>>2]=o;if(!(k>>>0<(c[a+12>>2]|0)>>>0)){j=1;i=d;return j|0}o=e;h=c[o>>2]|0;n=c[o+4>>2]|0;o=e;c[o>>2]=m;c[o+4>>2]=k;o=f;c[o>>2]=h;c[o+4>>2]=n;if(!(k>>>0<(c[a+4>>2]|0)>>>0)){j=1;i=d;return j|0}n=a;o=c[n>>2]|0;h=c[n+4>>2]|0;n=a;c[n>>2]=m;c[n+4>>2]=k;k=e;c[k>>2]=o;c[k+4>>2]=h;j=1;i=d;return j|0;case 4:Jl(a,a+8|0,a+16|0,b+-8|0,0)|0;
j=1;i=d;return j|0;case 1:case 0:j=1;i=d;return j|0;case 3:h=a+8|0;k=b+-8|0;o=a+12|0;e=c[o>>2]|0;n=a+4|0;m=b+-4|0;f=(c[m>>2]|0)>>>0<e>>>0;if(!(e>>>0<(c[n>>2]|0)>>>0)){if(!f){j=1;i=d;return j|0}e=h;g=c[e>>2]|0;p=c[e+4>>2]|0;e=k;l=c[e+4>>2]|0;q=h;c[q>>2]=c[e>>2];c[q+4>>2]=l;l=k;c[l>>2]=g;c[l+4>>2]=p;if(!((c[o>>2]|0)>>>0<(c[n>>2]|0)>>>0)){j=1;i=d;return j|0}n=a;o=c[n>>2]|0;p=c[n+4>>2]|0;n=h;l=c[n+4>>2]|0;g=a;c[g>>2]=c[n>>2];c[g+4>>2]=l;l=h;c[l>>2]=o;c[l+4>>2]=p;j=1;i=d;return j|0}p=a;l=c[p>>2]|0;o=c[p+
4>>2]|0;if(f){f=k;p=c[f+4>>2]|0;g=a;c[g>>2]=c[f>>2];c[g+4>>2]=p;p=k;c[p>>2]=l;c[p+4>>2]=o;j=1;i=d;return j|0}p=h;g=c[p+4>>2]|0;f=a;c[f>>2]=c[p>>2];c[f+4>>2]=g;g=h;c[g>>2]=l;c[g+4>>2]=o;if(!((c[m>>2]|0)>>>0<o>>>0)){j=1;i=d;return j|0}m=k;g=c[m+4>>2]|0;f=h;c[f>>2]=c[m>>2];c[f+4>>2]=g;g=k;c[g>>2]=l;c[g+4>>2]=o;j=1;i=d;return j|0;case 2:if(!((c[b+-4>>2]|0)>>>0<(c[a+4>>2]|0)>>>0)){j=1;i=d;return j|0}o=b+-8|0;g=a;l=c[g>>2]|0;k=c[g+4>>2]|0;g=o;f=c[g+4>>2]|0;m=a;c[m>>2]=c[g>>2];c[m+4>>2]=f;f=o;c[f>>2]=l;
c[f+4>>2]=k;j=1;i=d;return j|0;default:k=a+16|0;f=a+8|0;l=c[a+12>>2]|0;o=c[a+4>>2]|0;m=c[a+20>>2]|0;g=m>>>0<l>>>0;do if(l>>>0<o>>>0){h=a;p=c[h>>2]|0;n=c[h+4>>2]|0;if(g){h=k;q=c[h+4>>2]|0;e=a;c[e>>2]=c[h>>2];c[e+4>>2]=q;q=k;c[q>>2]=p;c[q+4>>2]=n;break}q=f;e=c[q+4>>2]|0;h=a;c[h>>2]=c[q>>2];c[h+4>>2]=e;e=f;c[e>>2]=p;c[e+4>>2]=n;if(m>>>0<n>>>0){e=k;h=c[e+4>>2]|0;q=f;c[q>>2]=c[e>>2];c[q+4>>2]=h;h=k;c[h>>2]=p;c[h+4>>2]=n}}else if(g?(n=f,h=c[n>>2]|0,p=c[n+4>>2]|0,n=k,q=c[n>>2]|0,e=c[n+4>>2]|0,n=f,c[n>>2]=
q,c[n+4>>2]=e,n=k,c[n>>2]=h,c[n+4>>2]=p,e>>>0<o>>>0):0){p=a;n=c[p>>2]|0;h=c[p+4>>2]|0;p=a;c[p>>2]=q;c[p+4>>2]=e;e=f;c[e>>2]=n;c[e+4>>2]=h}while(0);f=a+24|0;if((f|0)==(b|0)){j=1;i=d;return j|0}else{r=0;s=f;t=k}while(1){if((c[s+4>>2]|0)>>>0<(c[t+4>>2]|0)>>>0){k=s;f=c[k>>2]|0;o=c[k+4>>2]|0;k=s;g=t;while(1){m=g;l=c[m+4>>2]|0;h=k;c[h>>2]=c[m>>2];c[h+4>>2]=l;if((g|0)==(a|0))break;if(o>>>0<(c[g+-4>>2]|0)>>>0){l=g;g=g+-8|0;k=l}else break}k=g;c[k>>2]=f;c[k+4>>2]=o;k=r+1|0;if((k|0)==8)break;else u=k}else u=
r;k=s+8|0;if((k|0)==(b|0)){j=1;v=34;break}else{l=s;r=u;s=k;t=l}}if((v|0)==34){i=d;return j|0}j=(s+8|0)==(b|0);i=d;return j|0}return 0}function Ll(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,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=i;i=i+64|0;j=h;if((e|0)==2){k=b+-60|0;if(!(nb[c[d>>2]&31](k,a)|0)){i=h;return}l=j+0|0;m=a+0|0;n=l+60|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));l=a+0|0;m=k+0|0;n=l+60|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|
0));l=k+0|0;m=j+0|0;n=l+60|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));i=h;return}else if((e|0)==1|(e|0)==0){i=h;return}else{if((e|0)<129){if((a|0)==(b|0)){i=h;return}k=a+60|0;if((k|0)==(b|0)){i=h;return}o=k;do{l=j+0|0;m=o+0|0;n=l+60|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));a:do if((o|0)==(a|0))p=a;else{k=o;while(1){q=k;k=k+-60|0;if(!(nb[c[d>>2]&31](j,k)|0)){p=q;break a}l=q+0|0;m=k+0|0;n=l+60|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));if((k|0)==(a|0)){p=a;break}}}while(0);
l=p+0|0;m=j+0|0;n=l+60|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));o=o+60|0}while((o|0)!=(b|0));i=h;return}o=(e|0)/2|0;j=a+(o*60|0)|0;if((e|0)>(g|0)){Ll(a,j,d,o,f,g);p=e-o|0;Ll(j,b,d,p,f,g);Nl(a,j,b,d,o,p,f,g);i=h;return}Ml(a,j,d,o,f);g=f+(o*60|0)|0;Ml(j,b,d,e-o|0,g);o=f+(e*60|0)|0;b:do if((e+1|0)>>>0<3){r=a;s=g}else{b=a;j=f;p=g;while(1){if((p|0)==(o|0))break;if(nb[c[d>>2]&31](p,j)|0){l=b+0|0;m=p+0|0;n=l+60|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));t=p+60|0;u=j}else{l=b+
0|0;m=j+0|0;n=l+60|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));t=p;u=j+60|0}k=b+60|0;if((u|0)==(g|0)){r=k;s=t;break b}else{b=k;j=u;p=t}}if((j|0)==(g|0)){i=h;return}else{v=j;w=b}while(1){l=w+0|0;m=v+0|0;n=l+60|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));v=v+60|0;if((v|0)==(g|0))break;else w=w+60|0}i=h;return}while(0);if((s|0)==(o|0)){i=h;return}else{x=r;y=s}while(1){l=x+0|0;m=y+0|0;n=l+60|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));y=y+60|0;if((y|0)==(o|0))break;
else x=x+60|0}i=h;return}}function Ml(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;g=i;if((e|0)==1){if((f|0)==0){i=g;return}h=f+0|0;j=a+0|0;k=h+60|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0));i=g;return}else if((e|0)==2){l=b+-60|0;m=(f|0)==0;if(nb[c[d>>2]&31](l,a)|0){if(!m){h=f+0|0;j=l+0|0;k=h+60|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0))}h=f+60|0;j=a+0|0;k=h+60|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|
0)<(k|0));i=g;return}else{if(!m){h=f+0|0;j=a+0|0;k=h+60|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0))}h=f+60|0;j=l+0|0;k=h+60|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0));i=g;return}}else if((e|0)==0){i=g;return}else{if((e|0)<9){if((a|0)==(b|0)){i=g;return}if((f|0)==0)n=0;else{h=f+0|0;j=a+0|0;k=h+60|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0));n=f}l=a+60|0;if((l|0)==(b|0)){i=g;return}else{o=l;p=n}do{n=p;p=p+60|0;if(nb[c[d>>2]&31](o,n)|0){h=p+0|0;j=n+0|0;k=h+60|0;do{c[h>>
2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0));a:do if((n|0)==(f|0))q=f;else{l=n;while(1){m=l;l=l+-60|0;if(!(nb[c[d>>2]&31](o,l)|0)){q=m;break a}h=m+0|0;j=l+0|0;k=h+60|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0));if((l|0)==(f|0)){q=f;break}}}while(0);h=q+0|0;j=o+0|0;k=h+60|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0))}else{h=p+0|0;j=o+0|0;k=h+60|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0))}o=o+60|0}while((o|0)!=(b|0));i=g;return}o=(e|0)/2|0;p=a+(o*60|0)|0;Ll(a,p,d,o,
f,o);q=e-o|0;Ll(p,b,d,q,f+(o*60|0)|0,q);b:do if((e+1|0)>>>0<3){r=p;s=f}else{q=p;o=a;n=f;while(1){if((q|0)==(b|0))break;l=(n|0)==0;if(nb[c[d>>2]&31](q,o)|0){if(!l){h=n+0|0;j=q+0|0;k=h+60|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0))}t=o;u=q+60|0}else{if(!l){h=n+0|0;j=o+0|0;k=h+60|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0))}t=o+60|0;u=q}l=n+60|0;if((t|0)==(p|0)){r=u;s=l;break b}else{q=u;o=t;n=l}}if((o|0)==(p|0)){i=g;return}else{v=o;w=n}while(1){if((w|0)!=0){h=w+0|0;j=v+0|0;k=h+
60|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0))}v=v+60|0;if((v|0)==(p|0))break;else w=w+60|0}i=g;return}while(0);if((r|0)==(b|0)){i=g;return}else{x=r;y=s}while(1){if((y|0)!=0){h=y+0|0;j=x+0|0;k=h+60|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0))}x=x+60|0;if((x|0)==(b|0))break;else y=y+60|0}i=g;return}}function Nl(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|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,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;k=i;i=i+64|0;l=k;if((g|0)==0){i=k;return}m=a;a=b;b=d;d=f;f=g;a:while(1){g=b;n=a;o=d;p=m;q=f;while(1){if((o|0)==0){r=45;break a}else{s=p;t=o}while(1){if(nb[c[e>>2]&31](n,s)|0)break;u=t+-1|0;if((u|0)==0){r=45;break a}else{s=s+60|0;t=u}}if(!((t|0)>(j|0)&(q|0)>(j|0))){r=8;break a}if((t|0)<(q|0)){u=(q|0)/2|0;v=n+(u*60|0)|0;w=s;x=s;y=(n-w|0)/60|0;b:while(1){z=y;while(1){if((z|0)==0)break b;A=(z|0)/2|0;if(nb[c[e>>2]&31](v,x+(A*60|0)|0)|0)z=A;else break}x=
x+((A+1|0)*60|0)|0;y=z+-1-A|0}B=x;C=v;D=(x-w|0)/60|0;E=u}else{if((t|0)==1){r=17;break a}y=(t|0)/2|0;F=s+(y*60|0)|0;G=n;H=n;I=(g-G|0)/60|0;c:while(1){J=I;while(1){if((J|0)==0)break c;K=(J|0)/2|0;if(nb[c[e>>2]&31](H+(K*60|0)|0,F)|0)break;else J=K}H=H+((K+1|0)*60|0)|0;I=J+-1-K|0}B=F;C=H;D=y;E=(H-G|0)/60|0}o=t-D|0;L=q-E|0;d:do if((B|0)!=(n|0))if((n|0)==(C|0))M=B;else{if((B+60|0)==(n|0)){N=l+0|0;O=B+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));J=C-n|0;Bn(B|0,n|0,J|0)|0;I=B+(((J|0)/
60|0)*60|0)|0;N=I+0|0;O=l+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));M=I;break}if((n+60|0)==(C|0)){J=C+-60|0;N=l+0|0;O=J+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));I=J-B|0;u=C+(((I|0)/-60|0)*60|0)|0;Bn(u|0,B|0,I|0)|0;N=B+0|0;O=l+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));M=u;break}J=n;I=(J-B|0)/60|0;w=C;x=(w-J|0)/60|0;if((I|0)==(x|0)){J=B;v=n;while(1){N=l+0|0;O=J+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|
0));N=J+0|0;O=v+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));N=v+0|0;O=l+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));J=J+60|0;if((J|0)==(n|0)){M=n;break d}else v=v+60|0}}else{Q=I;R=x}while(1){v=(Q|0)%(R|0)|0;if((v|0)==0)break;else{J=R;R=v;Q=J}}if((R|0)!=0){J=I+-1|0;v=B+(R*60|0)|0;do{u=v;v=v+-60|0;N=l+0|0;O=v+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));z=v;S=u+(J*60|0)|0;while(1){N=z+0|0;O=S+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;
O=O+4|0}while((N|0)<(P|0));T=(w-S|0)/60|0;if((I|0)<(T|0))U=S+(I*60|0)|0;else U=B+((I-T|0)*60|0)|0;if((U|0)==(v|0))break;else{T=S;S=U;z=T}}N=S+0|0;O=l+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0))}while((v|0)!=(B|0))}M=B+(x*60|0)|0}else M=C;while(0);if((E+D|0)>=(L+o|0))break;Nl(s,B,M,e,D,E,h,j);if((q|0)==(E|0)){r=45;break a}else{n=C;p=M;q=L}}Nl(M,C,b,e,o,L,h,j);if((E|0)==0){r=45;break}else{m=s;a=B;b=M;d=D;f=E}}if((r|0)==8){Ol(s,n,b,e,t,q,h);i=k;return}else if((r|0)==17){N=l+0|
0;O=s+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));N=s+0|0;O=n+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));N=n+0|0;O=l+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));i=k;return}else if((r|0)==45){i=k;return}}function Ol(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 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;j=i;k=a;l=b;if((f|0)<=(g|0)){a:do if((a|0)!=(b|0)){g=(((b+-60+(0-
k)|0)>>>0)/60|0)+1|0;f=a;m=h;while(1){if((m|0)!=0){n=m+0|0;o=f+0|0;p=n+60|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0))}f=f+60|0;if((f|0)==(b|0))break;else m=m+60|0}m=h+(g*60|0)|0;if((m|0)!=(h|0)){f=a;q=b;r=h;while(1){if((q|0)==(d|0))break;if(nb[c[e>>2]&31](q,r)|0){n=f+0|0;o=q+0|0;p=n+60|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));s=r;t=q+60|0}else{n=f+0|0;o=r+0|0;p=n+60|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));s=r+60|0;t=q}u=f+60|0;if((s|0)==(m|0)){v=u;w=t;break a}else{f=
u;q=t;r=s}}Bn(f|0,r|0,m-r|0)|0;i=j;return}else{v=a;w=b}}else{v=a;w=b}while(0);Bn(v|0,w|0,d-w|0)|0;i=j;return}if((b|0)==(d|0))x=h;else{w=(((d+-60+(0-l)|0)>>>0)/60|0)+1|0;l=b;v=h;while(1){if((v|0)!=0){n=v+0|0;o=l+0|0;p=n+60|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0))}l=l+60|0;if((l|0)==(d|0))break;else v=v+60|0}x=h+(w*60|0)|0}w=x;b:do if((b|0)==(a|0)){y=w;z=d}else{v=w;l=b;r=x;m=d;while(1){if((v|0)==(h|0))break;f=r+-60|0;s=l+-60|0;t=m+-60|0;if(nb[c[e>>2]&31](f,s)|0){n=t+0|0;o=s+0|0;p=n+60|
0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));A=s;B=r}else{n=t+0|0;o=f+0|0;p=n+60|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));A=l;B=f}s=B;if((A|0)==(a|0)){y=s;z=t;break b}else{v=s;l=A;r=B;m=t}}if((l|0)==(a|0)){i=j;return}else{C=m;D=l}do{C=C+-60|0;D=D+-60|0;n=C+0|0;o=D+0|0;p=n+60|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0))}while((D|0)!=(a|0));i=j;return}while(0);a=y;if((a|0)==(h|0)){i=j;return}else{E=z;F=a}do{E=E+-60|0;F=F+-60|0;n=E+0|0;o=F+0|0;p=n+60|0;do{c[n>>2]=
c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0))}while((F|0)!=(h|0));i=j;return}function Pl(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,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;h=i;i=i+32|0;j=h;if((e|0)==2){k=b+-20|0;if(!(nb[c[d>>2]&31](k,a)|0)){i=h;return}c[j+0>>2]=c[a+0>>2];c[j+4>>2]=c[a+4>>2];c[j+8>>2]=c[a+8>>2];c[j+12>>2]=c[a+12>>2];c[j+16>>2]=c[a+16>>2];c[a+0>>2]=c[k+0>>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];c[a+16>>2]=c[k+16>>2];c[k+0>>2]=c[j+0>>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];c[k+16>>2]=c[j+16>>2];i=h;return}else if((e|0)==1|(e|0)==0){i=h;return}else{if((e|0)<129){if((a|0)==(b|0)){i=h;return}k=a+20|0;if((k|0)==(b|0)){i=h;return}else l=k;do{c[j+0>>2]=c[l+0>>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];c[j+16>>2]=c[l+16>>2];a:do if((l|0)==(a|0))m=a;else{k=l;while(1){n=k;k=k+-20|0;if(!(nb[c[d>>2]&31](j,k)|0)){m=n;break a}c[n+0>>2]=c[k+0>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=
c[k+12>>2];c[n+16>>2]=c[k+16>>2];if((k|0)==(a|0)){m=a;break}}}while(0);c[m+0>>2]=c[j+0>>2];c[m+4>>2]=c[j+4>>2];c[m+8>>2]=c[j+8>>2];c[m+12>>2]=c[j+12>>2];c[m+16>>2]=c[j+16>>2];l=l+20|0}while((l|0)!=(b|0));i=h;return}l=(e|0)/2|0;j=a+(l*20|0)|0;if((e|0)>(g|0)){Pl(a,j,d,l,f,g);m=e-l|0;Pl(j,b,d,m,f,g);Rl(a,j,b,d,l,m,f,g);i=h;return}Ql(a,j,d,l,f);g=f+(l*20|0)|0;Ql(j,b,d,e-l|0,g);l=f+(e*20|0)|0;b:do if((e+1|0)>>>0<3){o=a;p=g}else{b=a;j=f;m=g;while(1){if((m|0)==(l|0))break;if(nb[c[d>>2]&31](m,j)|0){c[b+0>>
2]=c[m+0>>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];c[b+16>>2]=c[m+16>>2];q=m+20|0;r=j}else{c[b+0>>2]=c[j+0>>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];c[b+16>>2]=c[j+16>>2];q=m;r=j+20|0}k=b+20|0;if((r|0)==(g|0)){o=k;p=q;break b}else{b=k;j=r;m=q}}if((j|0)==(g|0)){i=h;return}else{s=j;t=b}while(1){c[t+0>>2]=c[s+0>>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];c[t+16>>2]=c[s+16>>2];s=s+20|0;if((s|0)==(g|0))break;else t=t+20|0}i=h;return}while(0);
if((p|0)==(l|0)){i=h;return}else{u=o;v=p}while(1){c[u+0>>2]=c[v+0>>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];c[u+16>>2]=c[v+16>>2];v=v+20|0;if((v|0)==(l|0))break;else u=u+20|0}i=h;return}}function Ql(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;g=i;if((e|0)==1){if((f|0)==0){i=g;return}c[f+0>>2]=c[a+0>>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];i=g;return}else if((e|0)==
0){i=g;return}else if((e|0)==2){h=b+-20|0;j=(f|0)==0;if(nb[c[d>>2]&31](h,a)|0){if(!j){c[f+0>>2]=c[h+0>>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[f+16>>2]=c[h+16>>2]}k=f+20|0;c[k+0>>2]=c[a+0>>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[k+16>>2]=c[a+16>>2];i=g;return}else{if(!j){c[f+0>>2]=c[a+0>>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]}j=f+20|0;c[j+0>>2]=c[h+0>>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];c[j+16>>2]=c[h+16>>2];i=g;return}}else{if((e|0)<9){if((a|0)==(b|0)){i=g;return}if((f|0)==0)l=0;else{c[f+0>>2]=c[a+0>>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];l=f}h=a+20|0;if((h|0)==(b|0)){i=g;return}else{m=h;n=l}do{l=n;n=n+20|0;if(nb[c[d>>2]&31](m,l)|0){c[n+0>>2]=c[l+0>>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];c[n+16>>2]=c[l+16>>2];a:do if((l|0)==(f|0))o=f;else{h=l;while(1){j=h;h=h+-20|0;if(!(nb[c[d>>2]&31](m,
h)|0)){o=j;break a}c[j+0>>2]=c[h+0>>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];c[j+16>>2]=c[h+16>>2];if((h|0)==(f|0)){o=f;break}}}while(0);c[o+0>>2]=c[m+0>>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];c[o+16>>2]=c[m+16>>2]}else{c[n+0>>2]=c[m+0>>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];c[n+16>>2]=c[m+16>>2]}m=m+20|0}while((m|0)!=(b|0));i=g;return}m=(e|0)/2|0;n=a+(m*20|0)|0;Pl(a,n,d,m,f,m);o=e-m|0;Pl(n,b,d,o,f+(m*20|0)|0,o);b:do if((e+
1|0)>>>0<3){p=n;q=f}else{o=n;m=a;l=f;while(1){if((o|0)==(b|0))break;h=(l|0)==0;if(nb[c[d>>2]&31](o,m)|0){if(!h){c[l+0>>2]=c[o+0>>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];c[l+16>>2]=c[o+16>>2]}r=m;s=o+20|0}else{if(!h){c[l+0>>2]=c[m+0>>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];c[l+16>>2]=c[m+16>>2]}r=m+20|0;s=o}h=l+20|0;if((r|0)==(n|0)){p=s;q=h;break b}else{o=s;m=r;l=h}}if((m|0)==(n|0)){i=g;return}else{t=m;u=l}while(1){if((u|0)!=0){c[u+0>>2]=c[t+0>>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[u+16>>2]=c[t+16>>2]}t=t+20|0;if((t|0)==(n|0))break;else u=u+20|0}i=g;return}while(0);if((p|0)==(b|0)){i=g;return}else{v=p;w=q}while(1){if((w|0)!=0){c[w+0>>2]=c[v+0>>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];c[w+16>>2]=c[v+16>>2]}v=v+20|0;if((v|0)==(b|0))break;else w=w+20|0}i=g;return}}function Rl(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|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,O=0,P=0,Q=0,R=0;k=i;i=i+48|0;l=k+20|0;m=k;if((g|0)==0){i=k;return}n=a;a=b;b=d;d=f;f=g;a:while(1){g=b;o=a;p=d;q=n;r=f;while(1){if((p|0)==0){s=45;break a}else{t=q;u=p}while(1){if(nb[c[e>>2]&31](o,t)|0)break;v=u+-1|0;if((v|0)==0){s=45;break a}else{t=t+20|0;u=v}}if(!((u|0)>(j|0)&(r|0)>(j|0))){s=8;break a}if((u|0)<(r|0)){v=(r|0)/2|0;w=o+(v*20|0)|0;x=t;y=t;z=(o-x|0)/20|0;b:while(1){A=z;while(1){if((A|0)==0)break b;B=(A|0)/2|0;if(nb[c[e>>
2]&31](w,y+(B*20|0)|0)|0)A=B;else break}y=y+((B+1|0)*20|0)|0;z=A+-1-B|0}C=y;D=w;E=(y-x|0)/20|0;F=v}else{if((u|0)==1){s=17;break a}z=(u|0)/2|0;G=t+(z*20|0)|0;H=o;I=o;J=(g-H|0)/20|0;c:while(1){K=J;while(1){if((K|0)==0)break c;L=(K|0)/2|0;if(nb[c[e>>2]&31](I+(L*20|0)|0,G)|0)break;else K=L}I=I+((L+1|0)*20|0)|0;J=K+-1-L|0}C=G;D=I;E=z;F=(I-H|0)/20|0}p=u-E|0;M=r-F|0;d:do if((C|0)!=(o|0))if((o|0)==(D|0))N=C;else{if((C+20|0)==(o|0)){c[l+0>>2]=c[C+0>>2];c[l+4>>2]=c[C+4>>2];c[l+8>>2]=c[C+8>>2];c[l+12>>2]=c[C+
12>>2];c[l+16>>2]=c[C+16>>2];J=D-o|0;Bn(C|0,o|0,J|0)|0;v=C+(((J|0)/20|0)*20|0)|0;c[v+0>>2]=c[l+0>>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];c[v+16>>2]=c[l+16>>2];N=v;break}if((o+20|0)==(D|0)){v=D+-20|0;c[l+0>>2]=c[v+0>>2];c[l+4>>2]=c[v+4>>2];c[l+8>>2]=c[v+8>>2];c[l+12>>2]=c[v+12>>2];c[l+16>>2]=c[v+16>>2];J=v-C|0;v=D+(((J|0)/-20|0)*20|0)|0;Bn(v|0,C|0,J|0)|0;c[C+0>>2]=c[l+0>>2];c[C+4>>2]=c[l+4>>2];c[C+8>>2]=c[l+8>>2];c[C+12>>2]=c[l+12>>2];c[C+16>>2]=c[l+16>>2];N=v;break}v=o;J=
(v-C|0)/20|0;x=D;y=(x-v|0)/20|0;if((J|0)==(y|0)){v=C;w=o;while(1){c[l+0>>2]=c[v+0>>2];c[l+4>>2]=c[v+4>>2];c[l+8>>2]=c[v+8>>2];c[l+12>>2]=c[v+12>>2];c[l+16>>2]=c[v+16>>2];c[v+0>>2]=c[w+0>>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];c[v+16>>2]=c[w+16>>2];c[w+0>>2]=c[l+0>>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];c[w+16>>2]=c[l+16>>2];v=v+20|0;if((v|0)==(o|0)){N=o;break d}else w=w+20|0}}else{O=J;P=y}while(1){w=(O|0)%(P|0)|0;if((w|0)==0)break;else{v=P;P=w;O=
v}}if((P|0)!=0){v=J+-1|0;w=C+(P*20|0)|0;do{K=w;w=w+-20|0;c[m+0>>2]=c[w+0>>2];c[m+4>>2]=c[w+4>>2];c[m+8>>2]=c[w+8>>2];c[m+12>>2]=c[w+12>>2];c[m+16>>2]=c[w+16>>2];A=w;Q=K+(v*20|0)|0;while(1){c[A+0>>2]=c[Q+0>>2];c[A+4>>2]=c[Q+4>>2];c[A+8>>2]=c[Q+8>>2];c[A+12>>2]=c[Q+12>>2];c[A+16>>2]=c[Q+16>>2];K=(x-Q|0)/20|0;if((J|0)<(K|0))R=Q+(J*20|0)|0;else R=C+((J-K|0)*20|0)|0;if((R|0)==(w|0))break;else{K=Q;Q=R;A=K}}c[Q+0>>2]=c[m+0>>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[Q+16>>2]=c[m+
16>>2]}while((w|0)!=(C|0))}N=C+(y*20|0)|0}else N=D;while(0);if((F+E|0)>=(M+p|0))break;Rl(t,C,N,e,E,F,h,j);if((r|0)==(F|0)){s=45;break a}else{o=D;q=N;r=M}}Rl(N,D,b,e,p,M,h,j);if((F|0)==0){s=45;break}else{n=t;a=C;b=N;d=E;f=F}}if((s|0)==8){Sl(t,o,b,e,u,r,h);i=k;return}else if((s|0)==17){c[l+0>>2]=c[t+0>>2];c[l+4>>2]=c[t+4>>2];c[l+8>>2]=c[t+8>>2];c[l+12>>2]=c[t+12>>2];c[l+16>>2]=c[t+16>>2];c[t+0>>2]=c[o+0>>2];c[t+4>>2]=c[o+4>>2];c[t+8>>2]=c[o+8>>2];c[t+12>>2]=c[o+12>>2];c[t+16>>2]=c[o+16>>2];c[o+0>>2]=
c[l+0>>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];c[o+16>>2]=c[l+16>>2];i=k;return}else if((s|0)==45){i=k;return}}function Sl(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 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;j=i;k=a;l=b;if((f|0)<=(g|0)){a:do if((a|0)!=(b|0)){g=(((b+-20+(0-k)|0)>>>0)/20|0)+1|0;f=a;m=h;while(1){if((m|0)!=0){c[m+0>>2]=c[f+0>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[m+12>>2]=c[f+12>>2];c[m+16>>2]=c[f+
16>>2]}f=f+20|0;if((f|0)==(b|0))break;else m=m+20|0}m=h+(g*20|0)|0;if((m|0)!=(h|0)){f=a;n=b;o=h;while(1){if((n|0)==(d|0))break;if(nb[c[e>>2]&31](n,o)|0){c[f+0>>2]=c[n+0>>2];c[f+4>>2]=c[n+4>>2];c[f+8>>2]=c[n+8>>2];c[f+12>>2]=c[n+12>>2];c[f+16>>2]=c[n+16>>2];p=o;q=n+20|0}else{c[f+0>>2]=c[o+0>>2];c[f+4>>2]=c[o+4>>2];c[f+8>>2]=c[o+8>>2];c[f+12>>2]=c[o+12>>2];c[f+16>>2]=c[o+16>>2];p=o+20|0;q=n}r=f+20|0;if((p|0)==(m|0)){s=r;t=q;break a}else{f=r;n=q;o=p}}Bn(f|0,o|0,m-o|0)|0;i=j;return}else{s=a;t=b}}else{s=
a;t=b}while(0);Bn(s|0,t|0,d-t|0)|0;i=j;return}if((b|0)==(d|0))u=h;else{t=(((d+-20+(0-l)|0)>>>0)/20|0)+1|0;l=b;s=h;while(1){if((s|0)!=0){c[s+0>>2]=c[l+0>>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];c[s+16>>2]=c[l+16>>2]}l=l+20|0;if((l|0)==(d|0))break;else s=s+20|0}u=h+(t*20|0)|0}t=u;b:do if((b|0)==(a|0)){v=t;w=d}else{s=t;l=b;p=u;q=d;while(1){if((s|0)==(h|0))break;k=p+-20|0;n=l+-20|0;g=q+-20|0;if(nb[c[e>>2]&31](k,n)|0){c[g+0>>2]=c[n+0>>2];c[g+4>>2]=c[n+4>>2];c[g+8>>2]=c[n+8>>2];
c[g+12>>2]=c[n+12>>2];c[g+16>>2]=c[n+16>>2];x=n;y=p}else{c[g+0>>2]=c[k+0>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];c[g+16>>2]=c[k+16>>2];x=l;y=k}k=y;if((x|0)==(a|0)){v=k;w=g;break b}else{s=k;l=x;p=y;q=g}}if((l|0)==(a|0)){i=j;return}else{z=q;A=l}do{z=z+-20|0;A=A+-20|0;c[z+0>>2]=c[A+0>>2];c[z+4>>2]=c[A+4>>2];c[z+8>>2]=c[A+8>>2];c[z+12>>2]=c[A+12>>2];c[z+16>>2]=c[A+16>>2]}while((A|0)!=(a|0));i=j;return}while(0);a=v;if((a|0)==(h|0)){i=j;return}else{B=w;C=a}do{B=B+-20|0;C=C+-20|
0;c[B+0>>2]=c[C+0>>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+16>>2]=c[C+16>>2]}while((C|0)!=(h|0));i=j;return}function Tl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;d=a+4|0;e=c[d>>2]|0;if((e|0)!=(a|0)){f=e;do{e=Sm(f)|0;g=c[e>>2]|0;if((g|0)!=0){h=0;j=e+32|0;while(1){k=j+4|0;c[(c[j>>2]|0)+4>>2]=c[k>>2];c[c[k>>2]>>2]=c[j>>2];c[k>>2]=j;c[j>>2]=j;h=h+1|0;if((h|0)==(g|0))break;else j=j+12|0}}Um(a,e);f=c[d>>2]|0}while((f|0)!=(a|0))}f=a+12|0;j=a+20|0;g=a+24|0;c[(c[j>>2]|0)+
4>>2]=c[g>>2];c[c[g>>2]>>2]=c[j>>2];c[g>>2]=j;c[j>>2]=j;j=a+16|0;c[(c[f>>2]|0)+4>>2]=c[j>>2];c[c[j>>2]>>2]=c[f>>2];c[j>>2]=f;c[f>>2]=f;Vm(a);c[(c[a>>2]|0)+4>>2]=c[d>>2];c[c[d>>2]>>2]=c[a>>2];c[d>>2]=a;c[a>>2]=a;i=b;return}function Ul(a){a=a|0;return}function Vl(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function Wl(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;e=i;i=i+48|0;f=e+24|0;g=e;if((a[d+38>>0]|0)!=0){i=e;return 1}h=c[d+12>>2]|0;j=bb[c[(c[h>>2]|0)+12>>2]&
7](h)|0;if((j|0)<=0){i=e;return 1}h=d+24|0;k=b+4|0;l=g+16|0;m=g+20|0;n=g+4|0;o=0;do{p=(c[h>>2]|0)+(o*28|0)|0;c[f+0>>2]=c[p+0>>2];c[f+4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];c[f+12>>2]=c[p+12>>2];Nk(g,c[k>>2]|0,f);p=c[l>>2]|0;q=c[m>>2]|0;a:do if(p>>>0<q>>>0){r=c[g>>2]|0;s=c[n>>2]|0;t=p;while(1){u=c[t+4>>2]&1048575;v=t;t=t+8|0;c[l>>2]=t;if(u>>>0<r>>>0|u>>>0>s>>>0)if(t>>>0<q>>>0){t=t;continue}else break;u=c[v>>2]|0;if(!((u|0)>-1))break a;pb[c[(c[b>>2]|0)+20>>2]&31](b,d,o,u);if(!(t>>>0<q>>>0))break}}while(0);
o=o+1|0}while((o|0)!=(j|0));i=e;return 1}function Xl(a,b){a=a|0;b=b|0;return 0}function Yl(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=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;h=i;i=i+48|0;j=h+24|0;l=h;m=c[d+8>>2]|0;n=b+4|0;o=c[n>>2]|0;p=(c[o+96>>2]|0)+(f<<3)|0;q=c[p>>2]|0;r=c[p+4>>2]|0;s=(c[k>>2]=q,+g[k>>2]);t=(c[k>>2]=r,+g[k>>2]);p=(c[o+104>>2]|0)+(f<<3)|0;u=+g[p>>2];v=+g[p+4>>2];if((c[o+24>>2]|0)==0){w=s-+g[m+28>>2];x=t-+g[m+32>>2];
y=+g[m+40>>2];z=+g[m+36>>2];A=w*y+x*z;B=y*x-w*z;o=c[d+12>>2]|0;if((c[o+4>>2]|0)==0){w=+g[m+44>>2];x=A-w;C=+g[m+48>>2];D=B-C;E=x*y-D*z;F=y*D+x*z;z=+g[m+24>>2];x=+g[m+20>>2];G=z;H=w+(z*E+x*F);I=x;J=C+(z*F-E*x)}else{G=+g[m+24>>2];H=A;I=+g[m+20>>2];J=B}B=+(+g[m+12>>2]+(H*G-J*I));A=+(J*G+H*I+ +g[m+16>>2]);p=l;g[p>>2]=B;g[p+4>>2]=A;K=o}else{o=l;c[o>>2]=q;c[o+4>>2]=r;K=c[d+12>>2]|0}d=l+8|0;A=+g[b+8>>2];B=+(s+u*A);I=+(t+v*A);r=d;g[r>>2]=B;g[r+4>>2]=I;g[l+16>>2]=1;if(!(ob[c[(c[K>>2]|0)+24>>2]&15](K,j,l,m+
12|0,e)|0)){i=h;return}e=j;I=+g[e>>2];B=+g[j+8>>2];A=1-B;j=b+12|0;H=+g[j>>2];G=H*(I*.004999999888241291+(+g[l>>2]*A+B*+g[d>>2])-s);s=H*(+g[e+4>>2]*.004999999888241291+(A*+g[l+4>>2]+B*+g[l+12>>2])-t);t=+G;B=+s;l=(c[(c[n>>2]|0)+104>>2]|0)+(f<<3)|0;g[l>>2]=t;g[l+4>>2]=B;l=c[n>>2]|0;B=+g[l+32>>2]*.75;t=+g[j>>2]*B*+g[l+320>>2]*B;B=(u-G)*t;G=(v-s)*t;if(!(B!=0|G!=0)){i=h;return}if((c[(c[l+88>>2]|0)+(f<<2)>>2]&4|0)!=0){i=h;return}j=l+21|0;n=l+112|0;if((a[j>>0]|0)==0){xn(c[n>>2]|0,0,c[l+44>>2]<<3|0)|0;a[j>>
0]=1}j=c[n>>2]|0;n=j+(f<<3)|0;g[n>>2]=B+ +g[n>>2];n=j+(f<<3)+4|0;g[n>>2]=G+ +g[n>>2];i=h;return}function Zl(a){a=a|0;return}function _l(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function $l(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;f=i;i=i+32|0;h=f;j=f+16|0;k=f+8|0;l=a+4|0;m=(c[(c[l>>2]|0)+96>>2]|0)+(e<<3)|0;n=c[m+4>>2]|0;o=h;c[o>>2]=c[m>>2];c[o+4>>2]=n;n=c[b+12>>2]|0;o=b+8|0;mb[c[(c[n>>2]|0)+20>>2]&7](n,(c[o>>2]|0)+12|
0,h,j,k,d);d=c[l>>2]|0;if(!(+g[j>>2]<+g[d+32>>2])){i=f;return}n=c[a+8>>2]|0;if(((n|0)!=0?(c[(c[d+88>>2]|0)+(e<<2)>>2]&65536|0)!=0:0)?!(lb[c[(c[n>>2]|0)+12>>2]&7](n,b,d,e)|0):0){i=f;return}d=c[o>>2]|0;o=d+60|0;p=+g[o>>2];q=+g[d+132>>2];r=+g[d+44>>2];s=+g[d+48>>2];t=q*(r*r+s*s);s=+g[d+140>>2]+t-t;if(q>0)u=1/q;else u=0;if(s>0)v=1/s;else v=0;n=c[l>>2]|0;if((c[(c[n+88>>2]|0)+(e<<2)>>2]&4|0)==0){s=+g[n+36>>2]*1.3333333730697632;w=s*+g[n+28>>2]*s}else w=0;a=k+4|0;s=(+g[h>>2]-p)*+g[a>>2]-(+g[h+4>>2]-+g[o+
4>>2])*+g[k>>2];p=u+w+s*v*s;o=n+232|0;h=n+236|0;m=c[h>>2]|0;x=n+240|0;y=c[x>>2]|0;if((m|0)>=(y|0)?(z=(y|0)==0?256:y<<1,(y|0)<(z|0)):0){y=n+244|0;n=Em(c[y>>2]|0,z*28|0)|0;A=c[o>>2]|0;if((A|0)!=0){An(n|0,A|0,(c[h>>2]|0)*28|0)|0;Fm(c[y>>2]|0,c[o>>2]|0,(c[x>>2]|0)*28|0)}c[x>>2]=z;c[o>>2]=n;B=c[h>>2]|0}else B=m;c[h>>2]=B+1;h=c[o>>2]|0;c[h+(B*28|0)>>2]=e;c[h+(B*28|0)+4>>2]=d;c[h+(B*28|0)+8>>2]=b;g[h+(B*28|0)+12>>2]=1-+g[j>>2]*+g[(c[l>>2]|0)+36>>2];s=+-+g[k>>2];v=+-+g[a>>2];a=h+(B*28|0)+16|0;g[a>>2]=s;g[a+
4>>2]=v;if(p>0)C=1/p;else C=0;g[h+(B*28|0)+24>>2]=C;Tk(c[l>>2]|0,e);i=f;return}function am(a){a=a|0;return}function bm(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function sj(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;d=c[a+102960>>2]|0;if((d|0)!=0){e=d;do{d=e;e=c[e+112>>2]|0;f=c[d+116>>2]|0;while(1){if((f|0)==0)break;d=c[f+4>>2]|0;c[f+28>>2]=0;nj(f,a);f=d}}while((e|0)!=0)}e=a+102968|0;f=c[e>>2]|0;if((f|0)==0){g=a+102880|0;Ne(g);h=a+76|0;Xm(h);Dm(a);i=b;return}d=a+102876|0;j=f;while(1){if((c[d>>
2]&2|0)==0){f=j+404|0;k=c[f>>2]|0;l=j+408|0;if((k|0)!=0)c[k+408>>2]=c[l>>2];k=c[l>>2]|0;if((k|0)!=0)c[k+404>>2]=c[f>>2];if((c[e>>2]|0)==(j|0))c[e>>2]=c[l>>2];sk(j);Fm(a,j,416);m=c[e>>2]|0}else m=j;if((m|0)==0)break;else j=m}g=a+102880|0;Ne(g);h=a+76|0;Xm(h);Dm(a);i=b;return}function tj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;if((c[a+102876>>2]&2|0)!=0){i=d;return}e=b+404|0;f=c[e>>2]|0;g=b+408|0;if((f|0)!=0)c[f+408>>2]=c[g>>2];f=c[g>>2]|0;if((f|0)!=0)c[f+404>>2]=c[e>>2];e=a+102968|0;if((c[e>>2]|0)==
(b|0))c[e>>2]=c[g>>2];sk(b);Fm(a,b,416);i=d;return}function uj(a,b){a=a|0;b=b|0;c[a+102952>>2]=b;return}function vj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;if((c[a+102876>>2]&2|0)!=0){e=0;i=d;return e|0}f=Em(a,168)|0;if((f|0)==0)g=0;else{Hj(f,b,a);g=f}c[g+108>>2]=0;f=a+102960|0;c[g+112>>2]=c[f>>2];b=c[f>>2]|0;if((b|0)!=0)c[b+108>>2]=g;c[f>>2]=g;f=a+102972|0;c[f>>2]=(c[f>>2]|0)+1;e=g;i=d;return e|0}function wj(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;if((c[a+102876>>2]&2|0)!=0){i=
d;return}e=b+124|0;f=c[e>>2]|0;if((f|0)!=0){g=a+102992|0;h=f;do{f=h;h=c[h+12>>2]|0;j=c[g>>2]|0;if((j|0)==0)k=f+4|0;else{l=f+4|0;gb[c[(c[j>>2]|0)+8>>2]&63](j,c[l>>2]|0);k=l}xj(a,c[k>>2]|0);c[e>>2]=h}while((h|0)!=0)}c[e>>2]=0;e=b+128|0;h=c[e>>2]|0;if((h|0)!=0){k=a+102880|0;g=h;do{h=g;g=c[g+12>>2]|0;Tj(k,c[h+4>>2]|0)}while((g|0)!=0)}c[e>>2]=0;e=b+116|0;g=c[e>>2]|0;if((g|0)==0)m=b+120|0;else{k=a+102992|0;h=a+102880|0;l=b+120|0;j=g;do{g=j;j=c[j+4>>2]|0;f=c[k>>2]|0;if((f|0)!=0)gb[c[(c[f>>2]|0)+12>>2]&63](f,
g);pj(g,h);nj(g,a);Fm(a,g,44);c[e>>2]=j;c[l>>2]=(c[l>>2]|0)+-1}while((j|0)!=0);m=l}c[e>>2]=0;c[m>>2]=0;m=b+108|0;e=c[m>>2]|0;l=b+112|0;if((e|0)!=0)c[e+112>>2]=c[l>>2];e=c[l>>2]|0;if((e|0)!=0)c[e+108>>2]=c[m>>2];m=a+102960|0;if((c[m>>2]|0)==(b|0))c[m>>2]=c[l>>2];l=a+102972|0;c[l>>2]=(c[l>>2]|0)+-1;Ij(b);Fm(a,b,168);i=d;return}function xj(d,f){d=d|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=i;if((c[d+102876>>2]&2|0)!=0){i=h;return}j=a[f+61>>0]|0;k=f+8|0;l=c[k>>2]|0;m=f+12|0;if((l|0)!=0)c[l+12>>2]=
c[m>>2];l=c[m>>2]|0;if((l|0)!=0)c[l+8>>2]=c[k>>2];k=d+102964|0;if((c[k>>2]|0)==(f|0))c[k>>2]=c[m>>2];m=c[f+48>>2]|0;k=c[f+52>>2]|0;l=m+4|0;n=e[l>>1]|0;if((n&2|0)==0){b[l>>1]=n|2;g[m+160>>2]=0}n=k+4|0;l=e[n>>1]|0;if((l&2|0)==0){b[n>>1]=l|2;g[k+160>>2]=0}l=f+24|0;n=c[l>>2]|0;o=f+28|0;if((n|0)!=0)c[n+12>>2]=c[o>>2];n=c[o>>2]|0;if((n|0)!=0)c[n+8>>2]=c[l>>2];n=m+124|0;if((f+16|0)==(c[n>>2]|0))c[n>>2]=c[o>>2];c[l>>2]=0;c[o>>2]=0;o=f+40|0;l=c[o>>2]|0;n=f+44|0;if((l|0)!=0)c[l+12>>2]=c[n>>2];l=c[n>>2]|0;if((l|
0)!=0)c[l+8>>2]=c[o>>2];l=k+124|0;if((f+32|0)==(c[l>>2]|0))c[l>>2]=c[n>>2];c[o>>2]=0;c[n>>2]=0;uh(f,d);f=d+102976|0;c[f>>2]=(c[f>>2]|0)+-1;if(!(j<<24>>24==0)){i=h;return}j=c[k+128>>2]|0;if((j|0)==0){i=h;return}else p=j;do{if((c[p>>2]|0)==(m|0)){j=(c[p+4>>2]|0)+4|0;c[j>>2]=c[j>>2]|8}p=c[p+12>>2]|0}while((p|0)!=0);i=h;return}function yj(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;e=i;if((c[b+102876>>2]&2|0)!=0){f=0;i=e;return f|0}g=th(d,b)|0;c[g+8>>2]=0;h=b+102964|0;c[g+12>>2]=
c[h>>2];j=c[h>>2]|0;if((j|0)!=0)c[j+8>>2]=g;c[h>>2]=g;h=b+102976|0;c[h>>2]=(c[h>>2]|0)+1;h=g+16|0;c[g+20>>2]=g;b=g+52|0;c[h>>2]=c[b>>2];c[g+24>>2]=0;j=g+48|0;k=c[j>>2]|0;l=k+124|0;c[g+28>>2]=c[l>>2];m=c[l>>2]|0;if((m|0)==0)n=k;else{c[m+8>>2]=h;n=c[j>>2]|0}c[n+124>>2]=h;h=g+32|0;c[g+36>>2]=g;c[h>>2]=c[j>>2];c[g+40>>2]=0;j=c[b>>2]|0;n=j+124|0;c[g+44>>2]=c[n>>2];m=c[n>>2]|0;if((m|0)==0)o=j;else{c[m+8>>2]=h;o=c[b>>2]|0}c[o+124>>2]=h;h=c[d+8>>2]|0;if((a[d+16>>0]|0)!=0){f=g;i=e;return f|0}o=c[(c[d+12>>
2]|0)+128>>2]|0;if((o|0)==0){f=g;i=e;return f|0}else p=o;do{if((c[p>>2]|0)==(h|0)){o=(c[p+4>>2]|0)+4|0;c[o>>2]=c[o>>2]|8}p=c[p+12>>2]|0}while((p|0)!=0);f=g;i=e;return f|0}function zj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;if((c[a+102876>>2]&2|0)!=0){e=0;i=d;return e|0}f=Em(a,416)|0;if((f|0)==0)g=0;else{rk(f,b,a);g=f}c[g+404>>2]=0;f=a+102968|0;c[g+408>>2]=c[f>>2];a=c[f>>2]|0;if((a|0)!=0)c[a+404>>2]=g;c[f>>2]=g;e=g;i=d;return e|0}function Aj(d,f){d=d|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,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;h=i;i=i+96|0;j=h+40|0;k=h+8|0;l=h;m=d+102960|0;n=c[m>>2]|0;if((n|0)!=0){o=n;do{n=o+28|0;p=o+12|0;c[n+0>>2]=c[p+0>>2];c[n+4>>2]=c[p+4>>2];c[n+8>>2]=c[p+8>>2];c[n+12>>2]=c[p+12>>2];o=c[o+112>>2]|0}while((o|0)!=0)}o=d+103020|0;g[o>>2]=0;p=d+103024|0;g[p>>2]=0;n=d+103028|0;g[n>>2]=0;q=d+102972|0;r=d+102880|0;s=d+76|0;mf(j,c[q>>2]|0,c[d+102944>>2]|0,c[d+102976>>2]|0,s,c[d+
102952>>2]|0);t=c[m>>2]|0;if((t|0)!=0){u=t;do{t=u+4|0;b[t>>1]=b[t>>1]&65534;u=c[u+112>>2]|0}while((u|0)!=0)}u=c[d+102940>>2]|0;if((u|0)!=0){t=u;do{u=t+4|0;c[u>>2]=c[u>>2]&-2;t=c[t+12>>2]|0}while((t|0)!=0)}t=c[d+102964>>2]|0;if((t|0)!=0){u=t;do{a[u+60>>0]=0;u=c[u+12>>2]|0}while((u|0)!=0)}u=Ym(s,c[q>>2]<<2)|0;q=c[m>>2]|0;if((q|0)!=0){t=j+28|0;v=j+36|0;w=j+32|0;x=j+8|0;y=j+16|0;z=j+12|0;A=d+102980|0;B=d+102988|0;C=k+12|0;D=k+16|0;E=k+20|0;F=q;do{q=F+4|0;G=b[q>>1]|0;if((G&35)==34?(c[F>>2]|0)!=0:0){c[t>>
2]=0;c[v>>2]=0;c[w>>2]=0;c[u>>2]=F;b[q>>1]=G&65535|1;G=0;q=1;while(1){H=q+-1|0;I=c[u+(H<<2)>>2]|0;c[I+8>>2]=G;J=c[t>>2]|0;c[(c[x>>2]|0)+(J<<2)>>2]=I;c[t>>2]=J+1;J=I+4|0;K=e[J>>1]|0;if((K&2|0)==0){b[J>>1]=K|2;g[I+160>>2]=0}if((c[I>>2]|0)!=0){K=c[I+128>>2]|0;if((K|0)==0)L=H;else{J=K;K=H;while(1){M=c[J+4>>2]|0;N=M+4|0;do if((c[N>>2]&7|0)==6?(a[(c[M+48>>2]|0)+38>>0]|0)==0:0){if((a[(c[M+52>>2]|0)+38>>0]|0)!=0){O=K;break}P=c[v>>2]|0;c[v>>2]=P+1;c[(c[z>>2]|0)+(P<<2)>>2]=M;c[N>>2]=c[N>>2]|1;P=c[J>>2]|0;Q=
P+4|0;R=b[Q>>1]|0;if(!((R&1)==0)){O=K;break}c[u+(K<<2)>>2]=P;b[Q>>1]=R&65535|1;O=K+1|0}else O=K;while(0);J=c[J+12>>2]|0;if((J|0)==0){L=O;break}else K=O}}K=c[I+124>>2]|0;if((K|0)==0)S=L;else{J=K;K=L;while(1){N=J+4|0;M=c[N>>2]|0;do if((a[M+60>>0]|0)==0?(R=c[J>>2]|0,Q=R+4|0,P=b[Q>>1]|0,!((P&32)==0)):0){T=c[w>>2]|0;c[w>>2]=T+1;c[(c[y>>2]|0)+(T<<2)>>2]=M;a[(c[N>>2]|0)+60>>0]=1;if(!((P&1)==0)){U=K;break}c[u+(K<<2)>>2]=R;b[Q>>1]=P&65535|1;U=K+1|0}else U=K;while(0);J=c[J+12>>2]|0;if((J|0)==0){S=U;break}else K=
U}}}else S=H;if((S|0)<=0)break;G=c[t>>2]|0;q=S}of(j,k,f,A,(a[B>>0]|0)!=0);g[o>>2]=+g[C>>2]+ +g[o>>2];g[p>>2]=+g[D>>2]+ +g[p>>2];g[n>>2]=+g[E>>2]+ +g[n>>2];q=c[t>>2]|0;if((q|0)>0){G=c[x>>2]|0;K=0;do{J=c[G+(K<<2)>>2]|0;if((c[J>>2]|0)==0){I=J+4|0;b[I>>1]=b[I>>1]&65534}K=K+1|0}while((K|0)<(q|0))}}F=c[F+112>>2]|0}while((F|0)!=0)}_m(s,u);Km(l);u=c[m>>2]|0;if((u|0)==0){Vj(r);V=+Mm(l);W=d+103032|0;g[W>>2]=V;nf(j);i=h;return}else X=u;do{if(!((b[X+4>>1]&1)==0)?(c[X>>2]|0)!=0:0)Lj(X);X=c[X+112>>2]|0}while((X|
0)!=0);Vj(r);V=+Mm(l);W=d+103032|0;g[W>>2]=V;nf(j);i=h;return}function Bj(d,f){d=d|0;f=f|0;var h=0,j=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,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,
Va=0,Wa=0,Xa=0,Ya=0,Za=0;h=i;i=i+336|0;j=h+284|0;l=h+152|0;m=h+144|0;n=h+108|0;o=h+72|0;p=h+64|0;q=h+28|0;r=h;s=d+102880|0;t=d+102952|0;mf(j,64,32,0,d+76|0,c[t>>2]|0);u=d+103007|0;if((a[u>>0]|0)!=0){v=c[d+102960>>2]|0;if((v|0)!=0){w=v;do{v=w+4|0;b[v>>1]=b[v>>1]&65534;g[w+76>>2]=0;w=c[w+112>>2]|0}while((w|0)!=0)}w=d+102940|0;v=c[w>>2]|0;if((v|0)==0)x=w;else{y=v;do{v=y+4|0;c[v>>2]=c[v>>2]&-34;c[y+128>>2]=0;g[y+132>>2]=1;y=c[y+12>>2]|0}while((y|0)!=0);x=w}}else x=d+102940|0;w=j+28|0;y=j+36|0;v=j+32|
0;z=j+8|0;A=j+12|0;B=p+4|0;C=j+40|0;D=j+44|0;E=r+4|0;F=r+8|0;G=r+16|0;H=f+12|0;I=r+12|0;J=f+20|0;K=r+20|0;L=r+24|0;M=d+103006|0;d=l+16|0;N=l+20|0;O=l+24|0;P=l+44|0;Q=l+48|0;R=l+52|0;U=l+28|0;V=l+56|0;W=l+92|0;X=l+128|0;Y=m+4|0;while(1){Z=c[x>>2]|0;if((Z|0)==0){_=28;break}else{$=Z;aa=1;ba=0}while(1){Z=$+4|0;ca=c[Z>>2]|0;do if((ca&4|0)!=0?(c[$+128>>2]|0)<=8:0){if((ca&32|0)==0){da=c[$+48>>2]|0;ea=c[$+52>>2]|0;if((a[da+38>>0]|0)!=0){fa=aa;ga=ba;break}if((a[ea+38>>0]|0)!=0){fa=aa;ga=ba;break}ha=c[da+8>>
2]|0;ia=c[ea+8>>2]|0;ja=c[ha>>2]|0;ka=c[ia>>2]|0;la=b[ha+4>>1]|0;ma=b[ia+4>>1]|0;if(!((la&2)!=0&(ja|0)!=0|(ma&2)!=0&(ka|0)!=0)){fa=aa;ga=ba;break}if(!((la&8)!=0|(ja|0)!=2|((ma&8)!=0|(ka|0)!=2))){fa=aa;ga=ba;break}ka=ha+44|0;ma=ha+76|0;na=+g[ma>>2];ja=ia+44|0;la=ia+76|0;oa=+g[la>>2];if(!(na<oa))if(oa<na){pa=(na-oa)/(1-oa);qa=ia+52|0;ra=+g[qa>>2];sa=ia+56|0;ta=+g[sa>>2];ua=pa*(+g[ia+64>>2]-ta);g[qa>>2]=ra+pa*(+g[ia+60>>2]-ra);g[sa>>2]=ta+ua;sa=ia+68|0;ua=+g[sa>>2];g[sa>>2]=ua+pa*(+g[ia+72>>2]-ua);g[la>>
2]=na;va=na}else va=na;else{ua=(oa-na)/(1-na);la=ha+52|0;na=+g[la>>2];ia=ha+56|0;pa=+g[ia>>2];ta=ua*(+g[ha+64>>2]-pa);g[la>>2]=na+ua*(+g[ha+60>>2]-na);g[ia>>2]=pa+ta;ia=ha+68|0;ta=+g[ia>>2];g[ia>>2]=ta+ua*(+g[ha+72>>2]-ta);g[ma>>2]=oa;va=oa}ma=c[$+56>>2]|0;ha=c[$+60>>2]|0;c[d>>2]=0;c[N>>2]=0;g[O>>2]=0;c[P>>2]=0;c[Q>>2]=0;g[R>>2]=0;be(l,c[da+12>>2]|0,ma);be(U,c[ea+12>>2]|0,ha);wa=V+0|0;xa=ka+0|0;ya=wa+36|0;do{c[wa>>2]=c[xa>>2];wa=wa+4|0;xa=xa+4|0}while((wa|0)<(ya|0));wa=W+0|0;xa=ja+0|0;ya=wa+36|0;
do{c[wa>>2]=c[xa>>2];wa=wa+4|0;xa=xa+4|0}while((wa|0)<(ya|0));g[X>>2]=1;Zd(m,l);if((c[m>>2]|0)==3){oa=va+(1-va)*+g[Y>>2];za=oa<1?oa:1}else za=1;g[$+132>>2]=za;c[Z>>2]=c[Z>>2]|32;Aa=za}else Aa=+g[$+132>>2];if(Aa<aa){fa=Aa;ga=$}else{fa=aa;ga=ba}}else{fa=aa;ga=ba}while(0);$=c[$+12>>2]|0;if(($|0)==0)break;else{aa=fa;ba=ga}}if((ga|0)==0|fa>.9999988079071045){_=28;break}Z=c[(c[ga+48>>2]|0)+8>>2]|0;ca=c[(c[ga+52>>2]|0)+8>>2]|0;ja=Z+44|0;wa=n+0|0;xa=ja+0|0;ya=wa+36|0;do{c[wa>>2]=c[xa>>2];wa=wa+4|0;xa=xa+
4|0}while((wa|0)<(ya|0));ka=ca+44|0;wa=o+0|0;xa=ka+0|0;ya=wa+36|0;do{c[wa>>2]=c[xa>>2];wa=wa+4|0;xa=xa+4|0}while((wa|0)<(ya|0));ha=Z+76|0;oa=+g[ha>>2];ta=(fa-oa)/(1-oa);ea=Z+60|0;ma=Z+52|0;oa=+g[ma>>2];da=Z+64|0;ia=Z+56|0;ua=+g[ia>>2];pa=ta*(+g[da>>2]-ua);g[ma>>2]=oa+ta*(+g[ea>>2]-oa);g[ia>>2]=ua+pa;ia=Z+72|0;ma=Z+68|0;pa=+g[ma>>2];ua=pa+ta*(+g[ia>>2]-pa);g[ma>>2]=ua;g[ha>>2]=fa;ha=Z+52|0;ma=c[ha>>2]|0;la=c[ha+4>>2]|0;ha=Z+60|0;c[ha>>2]=ma;c[ha+4>>2]=la;g[ia>>2]=ua;pa=+T(+ua);ha=Z+20|0;g[ha>>2]=pa;
ta=+S(+ua);sa=Z+24|0;g[sa>>2]=ta;qa=Z+12|0;Ba=Z+44|0;ua=+g[Ba>>2];Ca=Z+48|0;oa=+g[Ca>>2];na=(c[k>>2]=ma,+g[k>>2])-(ta*ua-pa*oa);ra=(c[k>>2]=la,+g[k>>2])-(pa*ua+ta*oa);oa=+na;na=+ra;la=qa;g[la>>2]=oa;g[la+4>>2]=na;la=ca+76|0;na=+g[la>>2];oa=(fa-na)/(1-na);ma=ca+60|0;Da=ca+52|0;na=+g[Da>>2];Ea=ca+64|0;Fa=ca+56|0;ra=+g[Fa>>2];ta=oa*(+g[Ea>>2]-ra);g[Da>>2]=na+oa*(+g[ma>>2]-na);g[Fa>>2]=ra+ta;Fa=ca+72|0;Da=ca+68|0;ta=+g[Da>>2];ra=ta+oa*(+g[Fa>>2]-ta);g[Da>>2]=ra;g[la>>2]=fa;la=ca+52|0;Da=c[la>>2]|0;Ga=
c[la+4>>2]|0;la=ca+60|0;c[la>>2]=Da;c[la+4>>2]=Ga;g[Fa>>2]=ra;ta=+T(+ra);la=ca+20|0;g[la>>2]=ta;oa=+S(+ra);Ha=ca+24|0;g[Ha>>2]=oa;Ia=ca+12|0;Ja=ca+44|0;ra=+g[Ja>>2];Ka=ca+48|0;na=+g[Ka>>2];ua=(c[k>>2]=Da,+g[k>>2])-(oa*ra-ta*na);pa=(c[k>>2]=Ga,+g[k>>2])-(ta*ra+oa*na);na=+ua;ua=+pa;Ga=Ia;g[Ga>>2]=na;g[Ga+4>>2]=ua;xi(ga,c[t>>2]|0);Ga=ga+4|0;Da=c[Ga>>2]|0;c[Ga>>2]=Da&-33;La=ga+128|0;c[La>>2]=(c[La>>2]|0)+1;if((Da&6|0)!=6){c[Ga>>2]=Da&-37;wa=ja+0|0;xa=n+0|0;ya=wa+36|0;do{c[wa>>2]=c[xa>>2];wa=wa+4|0;xa=
xa+4|0}while((wa|0)<(ya|0));wa=ka+0|0;xa=o+0|0;ya=wa+36|0;do{c[wa>>2]=c[xa>>2];wa=wa+4|0;xa=xa+4|0}while((wa|0)<(ya|0));ua=+g[ia>>2];na=+T(+ua);g[ha>>2]=na;pa=+S(+ua);g[sa>>2]=pa;ua=+g[Ba>>2];oa=+g[Ca>>2];ra=+(+g[ea>>2]-(pa*ua-na*oa));ta=+(+g[da>>2]-(na*ua+pa*oa));ka=qa;g[ka>>2]=ra;g[ka+4>>2]=ta;ta=+g[Fa>>2];ra=+T(+ta);g[la>>2]=ra;oa=+S(+ta);g[Ha>>2]=oa;ta=+g[Ja>>2];pa=+g[Ka>>2];ua=+(+g[ma>>2]-(oa*ta-ra*pa));na=+(+g[Ea>>2]-(ra*ta+oa*pa));ka=Ia;g[ka>>2]=ua;g[ka+4>>2]=na;continue}ka=Z+4|0;ja=b[ka>>
1]|0;Da=ja&65535;if((Da&2|0)==0){La=(Da|2)&65535;b[ka>>1]=La;g[Z+160>>2]=0;Ma=La}else Ma=ja;ja=ca+4|0;La=e[ja>>1]|0;if((La&2|0)==0){b[ja>>1]=La|2;g[ca+160>>2]=0;Na=b[ka>>1]|0}else Na=Ma;c[w>>2]=0;c[y>>2]=0;c[v>>2]=0;La=Z+8|0;c[La>>2]=0;Da=c[w>>2]|0;c[(c[z>>2]|0)+(Da<<2)>>2]=Z;Oa=Da+1|0;c[w>>2]=Oa;Da=ca+8|0;c[Da>>2]=Oa;Oa=c[w>>2]|0;c[(c[z>>2]|0)+(Oa<<2)>>2]=ca;c[w>>2]=Oa+1;Oa=c[y>>2]|0;c[y>>2]=Oa+1;c[(c[A>>2]|0)+(Oa<<2)>>2]=ga;b[ka>>1]=Na&65535|1;b[ja>>1]=e[ja>>1]|1;c[Ga>>2]=c[Ga>>2]|1;c[p>>2]=Z;c[B>>
2]=ca;ja=Z;ka=1;while(1){a:do if((c[ja>>2]|0)==2?(Oa=c[ja+128>>2]|0,(Oa|0)!=0):0){Pa=ja+4|0;Qa=Oa;do{if((c[w>>2]|0)==(c[C>>2]|0))break a;if((c[y>>2]|0)==(c[D>>2]|0))break a;Oa=c[Qa+4>>2]|0;Ra=Oa+4|0;do if((c[Ra>>2]&1|0)==0){Sa=c[Qa>>2]|0;if(((c[Sa>>2]|0)==2?(b[Pa>>1]&8)==0:0)?(b[Sa+4>>1]&8)==0:0)break;if((a[(c[Oa+48>>2]|0)+38>>0]|0)==0?(a[(c[Oa+52>>2]|0)+38>>0]|0)==0:0){Ta=Sa+44|0;wa=q+0|0;xa=Ta+0|0;ya=wa+36|0;do{c[wa>>2]=c[xa>>2];wa=wa+4|0;xa=xa+4|0}while((wa|0)<(ya|0));Ua=Sa+4|0;if((b[Ua>>1]&1)==
0){Va=Sa+76|0;na=+g[Va>>2];ua=(fa-na)/(1-na);Wa=Sa+52|0;na=+g[Wa>>2];Xa=Sa+56|0;pa=+g[Xa>>2];oa=ua*(+g[Sa+64>>2]-pa);g[Wa>>2]=na+ua*(+g[Sa+60>>2]-na);g[Xa>>2]=pa+oa;Xa=Sa+72|0;Wa=Sa+68|0;oa=+g[Wa>>2];pa=oa+ua*(+g[Xa>>2]-oa);g[Wa>>2]=pa;g[Va>>2]=fa;Va=Sa+52|0;Wa=c[Va>>2]|0;Ya=c[Va+4>>2]|0;Va=Sa+60|0;c[Va>>2]=Wa;c[Va+4>>2]=Ya;g[Xa>>2]=pa;oa=+T(+pa);g[Sa+20>>2]=oa;ua=+S(+pa);g[Sa+24>>2]=ua;pa=+g[Sa+44>>2];na=+g[Sa+48>>2];ta=(c[k>>2]=Wa,+g[k>>2])-(ua*pa-oa*na);ra=(c[k>>2]=Ya,+g[k>>2])-(oa*pa+ua*na);na=
+ta;ta=+ra;Ya=Sa+12|0;g[Ya>>2]=na;g[Ya+4>>2]=ta}xi(Oa,c[t>>2]|0);Ya=c[Ra>>2]|0;if((Ya&4|0)==0){wa=Ta+0|0;xa=q+0|0;ya=wa+36|0;do{c[wa>>2]=c[xa>>2];wa=wa+4|0;xa=xa+4|0}while((wa|0)<(ya|0));ta=+g[Sa+72>>2];na=+T(+ta);g[Sa+20>>2]=na;ra=+S(+ta);g[Sa+24>>2]=ra;ta=+g[Sa+44>>2];ua=+g[Sa+48>>2];pa=+(+g[Sa+60>>2]-(ra*ta-na*ua));oa=+(+g[Sa+64>>2]-(na*ta+ra*ua));Wa=Sa+12|0;g[Wa>>2]=pa;g[Wa+4>>2]=oa;break}if((Ya&2|0)==0){wa=Ta+0|0;xa=q+0|0;ya=wa+36|0;do{c[wa>>2]=c[xa>>2];wa=wa+4|0;xa=xa+4|0}while((wa|0)<(ya|0));
oa=+g[Sa+72>>2];pa=+T(+oa);g[Sa+20>>2]=pa;ua=+S(+oa);g[Sa+24>>2]=ua;oa=+g[Sa+44>>2];ra=+g[Sa+48>>2];ta=+(+g[Sa+60>>2]-(ua*oa-pa*ra));na=+(+g[Sa+64>>2]-(pa*oa+ua*ra));Ta=Sa+12|0;g[Ta>>2]=ta;g[Ta+4>>2]=na;break}c[Ra>>2]=Ya|1;Ta=c[y>>2]|0;c[y>>2]=Ta+1;c[(c[A>>2]|0)+(Ta<<2)>>2]=Oa;Ta=e[Ua>>1]|0;if((Ta&1|0)!=0)break;b[Ua>>1]=Ta|1;do if((c[Sa>>2]|0)!=0){if((Ta&2|0)!=0)break;b[Ua>>1]=Ta|3;g[Sa+160>>2]=0}while(0);c[Sa+8>>2]=c[w>>2];Ta=c[w>>2]|0;c[(c[z>>2]|0)+(Ta<<2)>>2]=Sa;c[w>>2]=Ta+1}}while(0);Qa=c[Qa+
12>>2]|0}while((Qa|0)!=0)}while(0);if((ka|0)>=2)break;ja=c[p+(ka<<2)>>2]|0;ka=ka+1|0}na=(1-fa)*+g[f>>2];g[r>>2]=na;g[E>>2]=1/na;g[F>>2]=1;c[G>>2]=20;c[I>>2]=c[H>>2];c[K>>2]=c[J>>2];a[L>>0]=0;pf(j,r,c[La>>2]|0,c[Da>>2]|0);ka=c[w>>2]|0;if((ka|0)>0){ja=ka;ka=0;while(1){Z=c[(c[z>>2]|0)+(ka<<2)>>2]|0;ca=Z+4|0;b[ca>>1]=b[ca>>1]&65534;if((c[Z>>2]|0)==2){Lj(Z);ca=c[Z+128>>2]|0;if((ca|0)!=0){Z=ca;do{ca=(c[Z+4>>2]|0)+4|0;c[ca>>2]=c[ca>>2]&-34;Z=c[Z+12>>2]|0}while((Z|0)!=0)}Za=c[w>>2]|0}else Za=ja;ka=ka+1|0;
if((ka|0)>=(Za|0))break;else ja=Za}}Vj(s);if((a[M>>0]|0)!=0){_=68;break}}if((_|0)==28){a[u>>0]=1;nf(j);i=h;return}else if((_|0)==68){a[u>>0]=0;nf(j);i=h;return}}function Cj(b,d,e,f,h){b=b|0;d=+d;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;j=i;i=i+64|0;k=j+24|0;l=j+32|0;m=j+16|0;n=j+8|0;o=j;Km(k);p=b+102876|0;q=c[p>>2]|0;if((q&1|0)==0)r=q;else{Vj(b+102880|0);q=c[p>>2]&-2;c[p>>2]=q;r=q}c[p>>2]=r|2;g[l>>2]=d;c[l+12>>2]=e;c[l+16>>2]=f;c[l+20>>2]=h;if(d>0)g[l+4>>2]=
1/d;else g[l+4>>2]=0;h=b+103E3|0;g[l+8>>2]=+g[h>>2]*d;a[l+24>>0]=a[b+103004>>0]|0;Km(m);Uj(b+102880|0);g[b+103012>>2]=+Mm(m);if((a[b+103007>>0]|0)!=0?+g[l>>2]>0:0){Km(n);m=c[b+102968>>2]|0;if((m|0)!=0){f=m;do{bl(f,l);f=c[f+408>>2]|0}while((f|0)!=0)}Aj(b,l);g[b+103016>>2]=+Mm(n)}if((a[b+103005>>0]|0)!=0){d=+g[l>>2];if(d>0){Km(o);Bj(b,l);g[b+103036>>2]=+Mm(o);s=14}else t=d}else s=14;if((s|0)==14)t=+g[l>>2];if(t>0)g[h>>2]=+g[l+4>>2];l=c[p>>2]|0;if((l&4|0)==0){u=l&-3;c[p>>2]=u;v=+Mm(k);w=b+103008|0;g[w>>
2]=v;i=j;return}h=c[b+102960>>2]|0;if((h|0)==0){u=l&-3;c[p>>2]=u;v=+Mm(k);w=b+103008|0;g[w>>2]=v;i=j;return}else x=h;do{g[x+92>>2]=0;g[x+96>>2]=0;g[x+100>>2]=0;x=c[x+112>>2]|0}while((x|0)!=0);u=l&-3;c[p>>2]=u;v=+Mm(k);w=b+103008|0;g[w>>2]=v;i=j;return}function Dj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e;g=a+102880|0;c[f>>2]=g;c[f+4>>2]=b;Gj(g,f,d);f=c[a+102968>>2]|0;if((f|0)==0){i=e;return}a=f;do{if(nb[c[(c[b>>2]|0)+16>>2]&31](b,a)|0)pl(a,b,d);a=c[a+408>>2]|0}while((a|0)!=0);i=e;
return}function Ej(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;f=i;i=i+32|0;h=f+24|0;j=f;k=a+102880|0;c[h>>2]=k;c[h+4>>2]=b;g[j+16>>2]=1;l=d;m=c[l+4>>2]|0;n=j;c[n>>2]=c[l>>2];c[n+4>>2]=m;m=e;n=c[m+4>>2]|0;l=j+8|0;c[l>>2]=c[m>>2];c[l+4>>2]=n;Fj(k,h,j);j=c[a+102968>>2]|0;if((j|0)==0){i=f;return}a=j;do{if(nb[c[(c[b>>2]|0)+16>>2]&31](b,a)|0)ql(a,b,d,e);a=c[a+408>>2]|0}while((a|0)!=0);i=f;return}function Fj(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,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,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;e=i;i=i+1088|0;f=e+1064|0;h=e+1056|0;j=e+20|0;k=e;l=d;m=+g[l>>2];n=+g[l+4>>2];l=d+8|0;o=l;p=+g[o>>2];q=p-m;p=+g[o+4>>2]-n;r=+Q(+(q*q+p*p));if(r<1.1920928955078125E-7){s=p;t=q}else{u=1/r;s=p*u;t=q*u}u=-s;r=s<-0?u:s;if(t>0)v=t;else v=-t;s=+g[d+16>>2];w=m+q*s;x=n+p*s;o=j+4|0;c[j>>2]=o;y=j+1028|
0;c[y>>2]=0;z=j+1032|0;c[z>>2]=256;A=c[j>>2]|0;c[A+(c[y>>2]<<2)>>2]=c[a>>2];B=c[y>>2]|0;C=B+1|0;c[y>>2]=C;a:do if((B|0)>-1){D=a+4|0;E=k+8|0;F=k+16|0;G=f+8|0;H=k+4|0;I=k+8|0;J=k+12|0;K=h+4|0;L=b+4|0;M=C;N=n<x?n:x;O=m<w?m:w;P=n>x?n:x;R=m>w?m:w;S=A;T=s;while(1){U=M;V=S;while(1){W=U+-1|0;c[y>>2]=W;X=c[V+(W<<2)>>2]|0;if((X|0)==-1){Y=W;Z=V}else{_=c[D>>2]|0;$=+g[_+(X*36|0)+8>>2];aa=+g[_+(X*36|0)+12>>2];ba=+g[_+(X*36|0)>>2];ca=+g[_+(X*36|0)+4>>2];if(O-$>0|N-aa>0|ba-R>0|ca-P>0){da=N;ea=O;fa=P;ga=R;ha=T;break}ia=
(m-($+ba)*.5)*u+t*(n-(aa+ca)*.5);if(ia>0)ja=ia;else ja=-ia;if(ja-(r*($-ba)*.5+v*(aa-ca)*.5)>0){da=N;ea=O;fa=P;ga=R;ha=T;break}ka=_+(X*36|0)+24|0;if((c[ka>>2]|0)==-1){la=17;break}if((W|0)==(c[z>>2]|0)?(c[z>>2]=W<<1,ma=Pm(W<<3)|0,c[j>>2]=ma,An(ma|0,V|0,c[y>>2]<<2|0)|0,(V|0)!=(o|0)):0)Qm(V);ma=c[j>>2]|0;c[ma+(c[y>>2]<<2)>>2]=c[ka>>2];ka=(c[y>>2]|0)+1|0;c[y>>2]=ka;W=_+(X*36|0)+28|0;if((ka|0)==(c[z>>2]|0)?(c[z>>2]=ka<<1,_=Pm(ka<<3)|0,c[j>>2]=_,An(_|0,ma|0,c[y>>2]<<2|0)|0,(ma|0)!=(o|0)):0)Qm(ma);ma=c[j>>
2]|0;c[ma+(c[y>>2]<<2)>>2]=c[W>>2];W=(c[y>>2]|0)+1|0;c[y>>2]=W;Y=W;Z=ma}if((Y|0)>0){U=Y;V=Z}else break a}if((la|0)==17){la=0;c[k+0>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;V=d;U=c[V+4>>2]|0;ma=k;c[ma>>2]=c[V>>2];c[ma+4>>2]=U;U=l;ma=c[U+4>>2]|0;V=E;c[V>>2]=c[U>>2];c[V+4>>2]=ma;g[F>>2]=T;ma=c[(c[(c[b>>2]|0)+4>>2]|0)+(X*36|0)+16>>2]|0;V=c[ma+16>>2]|0;U=c[V+12>>2]|0;if(ob[c[(c[U>>2]|0)+24>>2]&15](U,f,k,(c[V+8>>2]|0)+12|0,c[ma+20>>2]|0)|0){ca=+g[G>>2];aa=1-ca;ba=aa*+g[H>>2]+ca*+g[J>>2];g[h>>2]=+g[k>>
2]*aa+ca*+g[I>>2];g[K>>2]=ba;ma=c[L>>2]|0;na=+fb[c[(c[ma>>2]|0)+8>>2]&1](ma,V,h,f,ca)}else na=+g[F>>2];if(na==0)break a;if(na>0){ca=m+q*na;ba=n+p*na;da=n<ba?n:ba;ea=m<ca?m:ca;fa=n>ba?n:ba;ga=m>ca?m:ca;ha=na}else{da=N;ea=O;fa=P;ga=R;ha=T}}V=c[y>>2]|0;if((V|0)<=0)break a;M=V;N=da;O=ea;P=fa;R=ga;S=c[j>>2]|0;T=ha}}while(0);y=c[j>>2]|0;if((y|0)==(o|0)){i=e;return}Qm(y);c[j>>2]=0;i=e;return}function Gj(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,x=0,
y=0,z=0,A=0,B=0;e=i;i=i+1040|0;f=e;h=f+4|0;c[f>>2]=h;j=f+1028|0;c[j>>2]=0;k=f+1032|0;c[k>>2]=256;l=c[f>>2]|0;c[l+(c[j>>2]<<2)>>2]=c[a>>2];m=c[j>>2]|0;n=m+1|0;c[j>>2]=n;a:do if((m|0)>-1){o=a+4|0;p=d+4|0;q=d+8|0;r=d+12|0;s=b+4|0;t=n;u=l;while(1){v=t+-1|0;c[j>>2]=v;w=c[u+(v<<2)>>2]|0;do if(!((w|0)==-1)?(x=c[o>>2]|0,!((+g[d>>2]-+g[x+(w*36|0)+8>>2]>0?1:+g[p>>2]-+g[x+(w*36|0)+12>>2]>0)|+g[x+(w*36|0)>>2]-+g[q>>2]>0|+g[x+(w*36|0)+4>>2]-+g[r>>2]>0)):0){y=x+(w*36|0)+24|0;if((c[y>>2]|0)==-1){z=c[s>>2]|0;if(!(nb[c[(c[z>>
2]|0)+8>>2]&31](z,c[(c[(c[(c[b>>2]|0)+4>>2]|0)+(w*36|0)+16>>2]|0)+16>>2]|0)|0))break a;A=c[j>>2]|0;break}if((v|0)==(c[k>>2]|0)?(c[k>>2]=v<<1,z=Pm(v<<3)|0,c[f>>2]=z,An(z|0,u|0,c[j>>2]<<2|0)|0,(u|0)!=(h|0)):0)Qm(u);z=c[f>>2]|0;c[z+(c[j>>2]<<2)>>2]=c[y>>2];y=(c[j>>2]|0)+1|0;c[j>>2]=y;B=x+(w*36|0)+28|0;if((y|0)==(c[k>>2]|0)?(c[k>>2]=y<<1,x=Pm(y<<3)|0,c[f>>2]=x,An(x|0,z|0,c[j>>2]<<2|0)|0,(z|0)!=(h|0)):0)Qm(z);c[(c[f>>2]|0)+(c[j>>2]<<2)>>2]=c[B>>2];B=(c[j>>2]|0)+1|0;c[j>>2]=B;A=B}else A=v;while(0);if((A|
0)<=0)break a;t=A;u=c[f>>2]|0}}while(0);A=c[f>>2]|0;if((A|0)==(h|0)){i=e;return}Qm(A);c[f>>2]=0;i=e;return}function Hj(d,e,f){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;h=i;j=d+12|0;k=d+28|0;l=d+80|0;m=d+4|0;n=(a[e+39>>0]|0)==0?0:8;b[m>>1]=n;if((a[e+38>>0]|0)==0)o=n;else{p=(n&65535|16)&65535;b[m>>1]=p;o=p}if((a[e+36>>0]|0)==0)q=o;else{p=(o&65535|4)&65535;b[m>>1]=p;q=p}if((a[e+37>>0]|0)==0)r=q;else{p=(q&65535|2)&65535;b[m>>1]=p;r=p}if((a[e+40>>0]|
0)!=0)b[m>>1]=r&65535|32;c[d+104>>2]=f;f=e+4|0;r=c[f>>2]|0;m=c[f+4>>2]|0;f=j;c[f>>2]=r;c[f+4>>2]=m;f=e+12|0;s=+g[f>>2];g[d+20>>2]=+T(+s);g[d+24>>2]=+S(+s);c[k+0>>2]=c[j+0>>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];g[d+44>>2]=0;g[d+48>>2]=0;j=d+52|0;c[j>>2]=r;c[j+4>>2]=m;j=d+60|0;c[j>>2]=r;c[j+4>>2]=m;g[d+68>>2]=+g[f>>2];g[d+72>>2]=+g[f>>2];g[d+76>>2]=0;c[d+124>>2]=0;c[d+128>>2]=0;c[d+108>>2]=0;c[d+112>>2]=0;f=e+16|0;m=c[f+4>>2]|0;j=l;c[j>>2]=c[f>>2];c[j+4>>2]=m;g[d+88>>2]=+g[e+
24>>2];g[d+148>>2]=+g[e+28>>2];g[d+152>>2]=+g[e+32>>2];g[d+156>>2]=+g[e+48>>2];g[d+92>>2]=0;g[d+96>>2]=0;g[d+100>>2]=0;g[d+160>>2]=0;m=c[e>>2]|0;c[d>>2]=m;j=d+132|0;if((m|0)==2){g[j>>2]=1;g[d+136>>2]=1;t=d+140|0;g[t>>2]=0;u=d+144|0;g[u>>2]=0;v=e+44|0;w=c[v>>2]|0;x=d+164|0;c[x>>2]=w;y=d+116|0;c[y>>2]=0;z=d+120|0;c[z>>2]=0;i=h;return}else{g[j>>2]=0;g[d+136>>2]=0;t=d+140|0;g[t>>2]=0;u=d+144|0;g[u>>2]=0;v=e+44|0;w=c[v>>2]|0;x=d+164|0;c[x>>2]=w;y=d+116|0;c[y>>2]=0;z=d+120|0;c[z>>2]=0;i=h;return}}function Ij(a){a=
a|0;return}function Jj(a,d){a=a|0;d=d|0;var f=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=i;i=i+16|0;h=f;j=a+104|0;if((c[(c[j>>2]|0)+102876>>2]&2|0)!=0){i=f;return}if((c[a>>2]|0)==(d|0)){i=f;return}c[a>>2]=d;Kj(a);if((c[a>>2]|0)==0?(g[a+80>>2]=0,g[a+84>>2]=0,g[a+88>>2]=0,l=+g[a+72>>2],g[a+68>>2]=l,d=a+60|0,m=c[d>>2]|0,n=c[d+4>>2]|0,d=a+52|0,c[d>>2]=m,c[d+4>>2]=n,o=+T(+l),g[h+8>>2]=o,p=+S(+l),g[h+12>>2]=p,l=+g[a+44>>2],q=+g[a+48>>2],r=(c[k>>2]=m,+g[k>>2])-(p*l-o*q),s=(c[k>>2]=n,+g[k>>2])-(o*
l+p*q),q=+r,r=+s,n=h,g[n>>2]=q,g[n+4>>2]=r,n=(c[j>>2]|0)+102880|0,m=c[a+116>>2]|0,(m|0)!=0):0){d=a+12|0;t=m;do{qj(t,n,h,d);t=c[t+4>>2]|0}while((t|0)!=0)}t=a+4|0;d=e[t>>1]|0;if((d&2|0)==0){b[t>>1]=d|2;g[a+160>>2]=0}g[a+92>>2]=0;g[a+96>>2]=0;g[a+100>>2]=0;d=a+128|0;t=c[d>>2]|0;if((t|0)!=0){h=t;do{t=h;h=c[h+12>>2]|0;Tj((c[j>>2]|0)+102880|0,c[t+4>>2]|0)}while((h|0)!=0)}c[d>>2]=0;d=(c[j>>2]|0)+102880|0;j=c[a+116>>2]|0;if((j|0)==0){i=f;return}else u=j;do{j=c[u+28>>2]|0;if((j|0)>0){a=u+24|0;h=0;do{Re(d,
c[(c[a>>2]|0)+(h*28|0)+24>>2]|0);h=h+1|0}while((h|0)!=(j|0))}u=c[u+4>>2]|0}while((u|0)!=0);i=f;return}function Kj(a){a=a|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;d=i;i=i+16|0;e=d;f=a+132|0;h=a+136|0;j=a+140|0;k=a+144|0;l=a+44|0;g[l>>2]=0;g[a+48>>2]=0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;if((c[a>>2]|0)>>>0<2){m=a+12|0;n=c[m>>2]|0;o=c[m+4>>2]|0;m=a+52|0;c[m>>2]=n;c[m+4>>2]=o;m=a+60|0;
c[m>>2]=n;c[m+4>>2]=o;g[a+68>>2]=+g[a+72>>2];i=d;return}o=8784;p=+g[o>>2];q=+g[o+4>>2];o=c[a+116>>2]|0;if((o|0)!=0){m=e+4|0;n=e+8|0;r=e+12|0;s=0;t=0;u=p;v=q;w=o;while(1){x=+g[w>>2];if(x==0){y=s;z=t;A=u;B=v}else{o=c[w+12>>2]|0;kb[c[(c[o>>2]|0)+32>>2]&31](o,e,x);x=+g[e>>2];C=x+ +g[f>>2];g[f>>2]=C;D=u+x*+g[m>>2];E=v+x*+g[n>>2];x=+g[r>>2]+ +g[j>>2];g[j>>2]=x;y=x;z=C;A=D;B=E}w=c[w+4>>2]|0;if((w|0)==0)break;else{s=y;t=z;u=A;v=B}}if(z>0){v=1/z;g[h>>2]=v;F=y;G=A*v;H=B*v;I=z}else{J=B;K=A;L=y;M=10}}else{J=
q;K=p;L=0;M=10}if((M|0)==10){g[f>>2]=1;g[h>>2]=1;F=L;G=K;H=J;I=1}if(F>0?(b[a+4>>1]&16)==0:0){J=F-(H*H+G*G)*I;g[j>>2]=J;N=1/J}else{g[j>>2]=0;N=0}g[k>>2]=N;k=a+60|0;j=k;N=+g[j>>2];J=+g[j+4>>2];I=+G;F=+H;j=l;g[j>>2]=I;g[j+4>>2]=F;F=+g[a+24>>2];I=+g[a+20>>2];K=+g[a+12>>2]+(F*G-I*H);L=G*I+F*H+ +g[a+16>>2];H=+K;F=+L;j=k;g[j>>2]=H;g[j+4>>2]=F;j=a+52|0;g[j>>2]=H;g[j+4>>2]=F;F=+g[a+88>>2];j=a+80|0;g[j>>2]=+g[j>>2]-F*(L-J);j=a+84|0;g[j>>2]=F*(K-N)+ +g[j>>2];i=d;return}function Lj(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;b=i;i=i+16|0;d=b;e=+g[a+68>>2];f=+T(+e);g[d+8>>2]=f;h=+S(+e);g[d+12>>2]=h;e=+g[a+44>>2];j=+g[a+48>>2];k=+(+g[a+52>>2]-(h*e-f*j));l=+(+g[a+56>>2]-(e*f+h*j));m=d;g[m>>2]=k;g[m+4>>2]=l;m=(c[a+104>>2]|0)+102880|0;n=c[a+116>>2]|0;if((n|0)==0){i=b;return}o=a+12|0;a=n;do{qj(a,m,d,o);a=c[a+4>>2]|0}while((a|0)!=0);i=b;return}function Mj(a,d){a=a|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0;e=i;f=a+104|0;h=c[f>>2]|0;if((c[h+102876>>2]&2|0)!=0){j=0;i=e;return j|0}k=Em(h,44)|0;if((k|0)==
0)l=0;else{lj(k);l=k}mj(l,h,a,d);if(!((b[a+4>>1]&32)==0))oj(l,(c[f>>2]|0)+102880|0,a+12|0);d=a+116|0;c[l+4>>2]=c[d>>2];c[d>>2]=l;d=a+120|0;c[d>>2]=(c[d>>2]|0)+1;c[l+8>>2]=a;if(+g[l>>2]>0)Kj(a);a=(c[f>>2]|0)+102876|0;c[a>>2]=c[a>>2]|1;j=l;i=e;return j|0}function Nj(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;f=a+104|0;if((c[(c[f>>2]|0)+102876>>2]&2|0)!=0){i=e;return}g=a+116|0;h=c[g>>2]|0;a:do if((h|0)!=0){j=h;k=g;while(1){l=j+4|0;if((j|0)==(d|0))break;j=c[l>>2]|0;if((j|0)==0)break a;else k=
l}c[k>>2]=c[d+4>>2]}while(0);g=c[a+128>>2]|0;if((g|0)!=0){h=g;do{g=c[h+4>>2]|0;h=c[h+12>>2]|0;if((c[g+48>>2]|0)==(d|0)?1:(c[g+52>>2]|0)==(d|0))Tj((c[f>>2]|0)+102880|0,g)}while((h|0)!=0)}h=c[f>>2]|0;if(!((b[a+4>>1]&32)==0))pj(d,h+102880|0);nj(d,h);c[d+8>>2]=0;c[d+4>>2]=0;Fm(h,d,44);d=a+120|0;c[d>>2]=(c[d>>2]|0)+-1;Kj(a);i=e;return}function Oj(a,d){a=a|0;d=d|0;var e=0,f=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=i;if((c[(c[a+104>>2]|0)+102876>>2]&2|0)!=0){i=e;return}if((c[a>>2]|0)!=2){i=e;return}f=
a+136|0;g[f>>2]=0;h=a+140|0;g[h>>2]=0;j=a+144|0;g[j>>2]=0;l=+g[d>>2];m=!(l<=0)?l:1;g[a+132>>2]=m;g[f>>2]=1/m;l=+g[d+12>>2];if(l>0?(b[a+4>>1]&16)==0:0){n=+g[d+4>>2];o=+g[d+8>>2];p=l-m*(n*n+o*o);g[h>>2]=p;g[j>>2]=1/p}j=a+60|0;h=j;p=+g[h>>2];o=+g[h+4>>2];h=d+4|0;d=c[h>>2]|0;f=c[h+4>>2]|0;h=a+44|0;c[h>>2]=d;c[h+4>>2]=f;n=+g[a+24>>2];m=(c[k>>2]=d,+g[k>>2]);l=+g[a+20>>2];q=(c[k>>2]=f,+g[k>>2]);r=+g[a+12>>2]+(n*m-l*q);s=m*l+n*q+ +g[a+16>>2];q=+r;n=+s;f=j;g[f>>2]=q;g[f+4>>2]=n;f=a+52|0;g[f>>2]=q;g[f+4>>2]=
n;n=+g[a+88>>2];f=a+80|0;g[f>>2]=+g[f>>2]-n*(s-o);f=a+84|0;g[f>>2]=n*(r-p)+ +g[f>>2];i=e;return}function Pj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;if((c[b>>2]|0)!=2?(c[d>>2]|0)!=2:0)f=0;else g=3;a:do if((g|0)==3){h=c[b+124>>2]|0;if((h|0)==0)f=1;else{j=h;while(1){if((c[j>>2]|0)==(d|0)?(a[(c[j+4>>2]|0)+61>>0]|0)==0:0){f=0;break a}j=c[j+12>>2]|0;if((j|0)==0){f=1;break}}}}while(0);i=e;return f|0}function Qj(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=i;f=c[a+104>>
2]|0;if((c[f+102876>>2]&2|0)!=0){i=e;return}h=a+12|0;j=+T(+d);g[a+20>>2]=j;l=+S(+d);g[a+24>>2]=l;m=b;b=c[m>>2]|0;n=c[m+4>>2]|0;m=h;c[m>>2]=b;c[m+4>>2]=n;m=a+28|0;c[m+0>>2]=c[h+0>>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];o=+g[a+44>>2];p=+g[a+48>>2];q=(c[k>>2]=b,+g[k>>2])+(l*o-j*p);r=o*j+l*p+(c[k>>2]=n,+g[k>>2]);p=+q;q=+r;n=a+60|0;g[n>>2]=p;g[n+4>>2]=q;g[a+72>>2]=d;n=a+52|0;g[n>>2]=p;g[n+4>>2]=q;g[a+68>>2]=d;n=f+102880|0;f=c[a+116>>2]|0;if((f|0)==0){i=e;return}else s=f;do{qj(s,
n,h,h);s=c[s+4>>2]|0}while((s|0)!=0);i=e;return}function Rj(a){a=a|0;return}function Sj(a){a=a|0;var b=0;b=i;Me(a);c[a+60>>2]=0;c[a+64>>2]=0;c[a+68>>2]=6800;c[a+72>>2]=6808;c[a+76>>2]=0;i=b;return}function Tj(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;d=i;e=c[(c[b+48>>2]|0)+8>>2]|0;f=c[(c[b+52>>2]|0)+8>>2]|0;g=c[a+72>>2]|0;if((g|0)!=0?(c[b+4>>2]&2|0)!=0:0)gb[c[(c[g>>2]|0)+12>>2]&63](g,b);g=b+8|0;h=c[g>>2]|0;j=b+12|0;if((h|0)!=0)c[h+12>>2]=c[j>>2];h=c[j>>2]|0;if((h|0)!=0)c[h+
8>>2]=c[g>>2];g=a+60|0;if((c[g>>2]|0)==(b|0))c[g>>2]=c[j>>2];j=b+24|0;g=c[j>>2]|0;h=b+28|0;if((g|0)!=0)c[g+12>>2]=c[h>>2];g=c[h>>2]|0;if((g|0)!=0)c[g+8>>2]=c[j>>2];j=e+128|0;if((b+16|0)==(c[j>>2]|0))c[j>>2]=c[h>>2];h=b+40|0;j=c[h>>2]|0;e=b+44|0;if((j|0)!=0)c[j+12>>2]=c[e>>2];j=c[e>>2]|0;if((j|0)!=0)c[j+8>>2]=c[h>>2];h=f+128|0;if((b+32|0)!=(c[h>>2]|0)){k=a+76|0;l=c[k>>2]|0;vi(b,l);m=a+64|0;n=c[m>>2]|0;o=n+-1|0;c[m>>2]=o;i=d;return}c[h>>2]=c[e>>2];k=a+76|0;l=c[k>>2]|0;vi(b,l);m=a+64|0;n=c[m>>2]|0;o=
n+-1|0;c[m>>2]=o;i=d;return}function Uj(a){a=a|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;d=i;e=c[a+60>>2]|0;if((e|0)==0){i=d;return}f=a+4|0;h=a+72|0;j=a+68|0;k=e;while(1){e=c[k+48>>2]|0;l=c[k+52>>2]|0;m=c[k+56>>2]|0;n=c[k+60>>2]|0;o=c[e+8>>2]|0;p=c[l+8>>2]|0;q=k+4|0;do if((c[q>>2]&8|0)==0)r=11;else{if(!(Pj(p,o)|0)){s=c[k+12>>2]|0;Tj(a,k);t=s;break}s=c[j>>2]|0;if((s|0)!=0?!(hb[c[(c[s>>2]|0)+8>>2]&15](s,e,l)|0):0){s=c[k+12>>2]|0;Tj(a,k);t=s;break}c[q>>2]=c[q>>2]&
-9;r=11}while(0);do if((r|0)==11){r=0;if((b[o+4>>1]&2)==0)u=0;else u=(c[o>>2]|0)!=0;if((b[p+4>>1]&2)==0)v=0;else v=(c[p>>2]|0)!=0;if(!(u|v)){t=c[k+12>>2]|0;break}q=c[(c[e+24>>2]|0)+(m*28|0)+24>>2]|0;s=c[(c[l+24>>2]|0)+(n*28|0)+24>>2]|0;w=c[f>>2]|0;if((+g[w+(s*36|0)>>2]-+g[w+(q*36|0)+8>>2]>0?1:+g[w+(s*36|0)+4>>2]-+g[w+(q*36|0)+12>>2]>0)|+g[w+(q*36|0)>>2]-+g[w+(s*36|0)+8>>2]>0|+g[w+(q*36|0)+4>>2]-+g[w+(s*36|0)+12>>2]>0){s=c[k+12>>2]|0;Tj(a,k);t=s;break}else{xi(k,c[h>>2]|0);t=c[k+12>>2]|0;break}}while(0);
if((t|0)==0)break;else k=t}i=d;return}function Vj(a){a=a|0;var b=0;b=i;Wj(a,a);i=b;return}function Wj(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;d=i;i=i+16|0;e=d;f=a+52|0;c[f>>2]=0;g=a+40|0;h=c[g>>2]|0;if((h|0)>0){j=a+32|0;k=a+56|0;l=a+4|0;m=h;h=0;while(1){n=c[(c[j>>2]|0)+(h<<2)>>2]|0;c[k>>2]=n;if((n|0)==-1)o=m;else{Yj(a,a,(c[l>>2]|0)+(n*36|0)|0);o=c[g>>2]|0}h=h+1|0;if((h|0)>=(o|0))break;else m=o}p=c[f>>2]|0}else p=0;c[g>>2]=0;g=a+44|0;o=c[g>>2]|0;c[e>>2]=26;_j(o,o+(p<<3)|
0,e);if((c[f>>2]|0)<=0){i=d;return}e=a+4|0;a=0;a:while(1){p=c[g>>2]|0;o=p+(a<<3)|0;m=c[e>>2]|0;h=p+(a<<3)+4|0;Xj(b,c[m+((c[o>>2]|0)*36|0)+16>>2]|0,c[m+((c[h>>2]|0)*36|0)+16>>2]|0);m=c[f>>2]|0;p=a;while(1){l=p+1|0;if((l|0)>=(m|0))break a;k=c[g>>2]|0;if((c[k+(l<<3)>>2]|0)!=(c[o>>2]|0)){a=l;continue a}if((c[k+(l<<3)+4>>2]|0)==(c[h>>2]|0))p=l;else{a=l;continue a}}}i=d;return}function Xj(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;j=i;k=c[f+16>>2]|0;l=c[h+16>>2]|0;
m=c[f+20>>2]|0;f=c[h+20>>2]|0;h=c[k+8>>2]|0;n=c[l+8>>2]|0;if((h|0)==(n|0)){i=j;return}o=c[n+128>>2]|0;a:do if((o|0)!=0){p=o;while(1){if((c[p>>2]|0)==(h|0)){q=c[p+4>>2]|0;r=c[q+48>>2]|0;s=c[q+52>>2]|0;t=c[q+56>>2]|0;u=c[q+60>>2]|0;if((r|0)==(k|0)&(s|0)==(l|0)&(t|0)==(m|0)&(u|0)==(f|0)){v=24;break}if((r|0)==(l|0)&(s|0)==(k|0)&(t|0)==(f|0)&(u|0)==(m|0)){v=24;break}}p=c[p+12>>2]|0;if((p|0)==0)break a}if((v|0)==24){i=j;return}}while(0);if(!(Pj(n,h)|0)){i=j;return}h=c[d+68>>2]|0;if((h|0)!=0?!(hb[c[(c[h>>
2]|0)+8>>2]&15](h,k,l)|0):0){i=j;return}h=ui(k,m,l,f,c[d+76>>2]|0)|0;if((h|0)==0){i=j;return}f=c[h+48>>2]|0;l=c[h+52>>2]|0;m=c[f+8>>2]|0;k=c[l+8>>2]|0;c[h+8>>2]=0;n=d+60|0;c[h+12>>2]=c[n>>2];v=c[n>>2]|0;if((v|0)!=0)c[v+8>>2]=h;c[n>>2]=h;n=h+16|0;c[h+20>>2]=h;c[n>>2]=k;c[h+24>>2]=0;v=m+128|0;c[h+28>>2]=c[v>>2];o=c[v>>2]|0;if((o|0)!=0)c[o+8>>2]=n;c[v>>2]=n;n=h+32|0;c[h+36>>2]=h;c[n>>2]=m;c[h+40>>2]=0;v=k+128|0;c[h+44>>2]=c[v>>2];h=c[v>>2]|0;if((h|0)!=0)c[h+8>>2]=n;c[v>>2]=n;if((a[f+38>>0]|0)==0?(a[l+
38>>0]|0)==0:0){l=m+4|0;f=e[l>>1]|0;if((f&2|0)==0){b[l>>1]=f|2;g[m+160>>2]=0}m=k+4|0;f=e[m>>1]|0;if((f&2|0)==0){b[m>>1]=f|2;g[k+160>>2]=0}}k=d+64|0;c[k>>2]=(c[k>>2]|0)+1;i=j;return}function Yj(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,x=0,y=0,z=0,A=0;e=i;i=i+1040|0;f=e;h=f+4|0;c[f>>2]=h;j=f+1028|0;c[j>>2]=0;k=f+1032|0;c[k>>2]=256;l=c[f>>2]|0;c[l+(c[j>>2]<<2)>>2]=c[a>>2];m=c[j>>2]|0;n=m+1|0;c[j>>2]=n;a:do if((m|0)>-1){o=a+4|0;p=d+4|0;q=d+8|0;r=
d+12|0;s=n;t=l;while(1){u=s+-1|0;c[j>>2]=u;v=c[t+(u<<2)>>2]|0;do if(!((v|0)==-1)?(w=c[o>>2]|0,!((+g[d>>2]-+g[w+(v*36|0)+8>>2]>0?1:+g[p>>2]-+g[w+(v*36|0)+12>>2]>0)|+g[w+(v*36|0)>>2]-+g[q>>2]>0|+g[w+(v*36|0)+4>>2]-+g[r>>2]>0)):0){x=w+(v*36|0)+24|0;if((c[x>>2]|0)==-1){if(!(Se(b,v)|0))break a;y=c[j>>2]|0;break}if((u|0)==(c[k>>2]|0)?(c[k>>2]=u<<1,z=Pm(u<<3)|0,c[f>>2]=z,An(z|0,t|0,c[j>>2]<<2|0)|0,(t|0)!=(h|0)):0)Qm(t);z=c[f>>2]|0;c[z+(c[j>>2]<<2)>>2]=c[x>>2];x=(c[j>>2]|0)+1|0;c[j>>2]=x;A=w+(v*36|0)+28|
0;if((x|0)==(c[k>>2]|0)?(c[k>>2]=x<<1,w=Pm(x<<3)|0,c[f>>2]=w,An(w|0,z|0,c[j>>2]<<2|0)|0,(z|0)!=(h|0)):0)Qm(z);c[(c[f>>2]|0)+(c[j>>2]<<2)>>2]=c[A>>2];A=(c[j>>2]|0)+1|0;c[j>>2]=A;y=A}else y=u;while(0);if((y|0)<=0)break a;s=y;t=c[f>>2]|0}}while(0);y=c[f>>2]|0;if((y|0)==(h|0)){i=e;return}Qm(y);c[f>>2]=0;i=e;return}function Zj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=c[a>>2]|0;f=c[b>>2]|0;if((e|0)>=(f|0))if((e|0)==(f|0))g=(c[a+4>>2]|0)<(c[b+4>>2]|0);else g=0;else g=1;i=d;return g|0}function _j(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,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;e=i;f=a;a=b;a:while(1){b=a;g=a+-8|0;h=f;b:while(1){j=h;k=b-j|0;l=k>>3;switch(l|0){case 5:m=15;break a;break;case 2:m=4;break a;break;case 4:m=14;break a;break;case 1:case 0:m=67;break a;break;case 3:m=6;break a;break;default:}if((k|0)<248){m=21;break a}n=(l|0)/2|0;o=h+(n<<3)|0;do if((k|0)>7992){p=(l|0)/4|0;q=h+(p<<3)|0;r=h+(p+n<<3)|0;p=
$j(h,q,o,r,d)|0;if(nb[c[d>>2]&31](g,r)|0){s=r;t=c[s>>2]|0;u=c[s+4>>2]|0;s=g;v=c[s+4>>2]|0;w=r;c[w>>2]=c[s>>2];c[w+4>>2]=v;v=g;c[v>>2]=t;c[v+4>>2]=u;u=p+1|0;if(nb[c[d>>2]&31](r,o)|0){v=o;t=c[v>>2]|0;w=c[v+4>>2]|0;v=r;s=c[v+4>>2]|0;x=o;c[x>>2]=c[v>>2];c[x+4>>2]=s;s=r;c[s>>2]=t;c[s+4>>2]=w;w=p+2|0;if(nb[c[d>>2]&31](o,q)|0){s=q;t=c[s>>2]|0;r=c[s+4>>2]|0;s=o;x=c[s+4>>2]|0;v=q;c[v>>2]=c[s>>2];c[v+4>>2]=x;x=o;c[x>>2]=t;c[x+4>>2]=r;if(nb[c[d>>2]&31](q,h)|0){r=h;x=c[r>>2]|0;t=c[r+4>>2]|0;r=q;v=c[r+4>>2]|0;
s=h;c[s>>2]=c[r>>2];c[s+4>>2]=v;v=q;c[v>>2]=x;c[v+4>>2]=t;y=p+4|0}else y=p+3|0}else y=w}else y=u}else y=p}else{p=nb[c[d>>2]&31](o,h)|0;u=nb[c[d>>2]&31](g,o)|0;if(!p){if(!u){y=0;break}p=o;w=c[p>>2]|0;t=c[p+4>>2]|0;p=g;v=c[p+4>>2]|0;x=o;c[x>>2]=c[p>>2];c[x+4>>2]=v;v=g;c[v>>2]=w;c[v+4>>2]=t;if(!(nb[c[d>>2]&31](o,h)|0)){y=1;break}t=h;v=c[t>>2]|0;w=c[t+4>>2]|0;t=o;x=c[t+4>>2]|0;p=h;c[p>>2]=c[t>>2];c[p+4>>2]=x;x=o;c[x>>2]=v;c[x+4>>2]=w;y=2;break}w=h;x=c[w>>2]|0;v=c[w+4>>2]|0;if(u){u=g;w=c[u+4>>2]|0;p=h;
c[p>>2]=c[u>>2];c[p+4>>2]=w;w=g;c[w>>2]=x;c[w+4>>2]=v;y=1;break}w=o;p=c[w+4>>2]|0;u=h;c[u>>2]=c[w>>2];c[u+4>>2]=p;p=o;c[p>>2]=x;c[p+4>>2]=v;if(nb[c[d>>2]&31](g,o)|0){v=o;p=c[v>>2]|0;x=c[v+4>>2]|0;v=g;u=c[v+4>>2]|0;w=o;c[w>>2]=c[v>>2];c[w+4>>2]=u;u=g;c[u>>2]=p;c[u+4>>2]=x;y=2}else y=1}while(0);do if(nb[c[d>>2]&31](h,o)|0){z=g;A=y}else{n=g;while(1){n=n+-8|0;if((h|0)==(n|0))break;if(nb[c[d>>2]&31](n,o)|0){m=50;break}}if((m|0)==50){m=0;l=h;k=c[l>>2]|0;x=c[l+4>>2]|0;l=n;u=c[l+4>>2]|0;p=h;c[p>>2]=c[l>>
2];c[p+4>>2]=u;u=n;c[u>>2]=k;c[u+4>>2]=x;z=n;A=y+1|0;break}x=h+8|0;if(nb[c[d>>2]&31](h,g)|0)B=x;else{if((x|0)==(g|0)){m=67;break a}else C=x;while(1){D=C+8|0;if(nb[c[d>>2]&31](h,C)|0)break;if((D|0)==(g|0)){m=67;break a}else C=D}n=C;x=c[n>>2]|0;u=c[n+4>>2]|0;n=g;k=c[n+4>>2]|0;p=C;c[p>>2]=c[n>>2];c[p+4>>2]=k;k=g;c[k>>2]=x;c[k+4>>2]=u;B=D}if((B|0)==(g|0)){m=67;break a}else{E=B;F=g}while(1){u=E;while(1){G=u+8|0;if(nb[c[d>>2]&31](h,u)|0){H=F;break}else u=G}do H=H+-8|0;while(nb[c[d>>2]&31](h,H)|0);if(!(u>>>
0<H>>>0)){h=u;continue b}k=u;x=c[k>>2]|0;p=c[k+4>>2]|0;k=H;n=c[k+4>>2]|0;l=u;c[l>>2]=c[k>>2];c[l+4>>2]=n;n=H;c[n>>2]=x;c[n+4>>2]=p;E=G;F=H}}while(0);p=h+8|0;c:do if(p>>>0<z>>>0){n=p;x=z;l=o;k=A;while(1){w=n;while(1){I=w+8|0;if(nb[c[d>>2]&31](w,l)|0)w=I;else{J=x;break}}do J=J+-8|0;while(!(nb[c[d>>2]&31](J,l)|0));if(w>>>0>J>>>0){K=w;L=l;M=k;break c}u=w;v=c[u>>2]|0;t=c[u+4>>2]|0;u=J;q=c[u+4>>2]|0;s=w;c[s>>2]=c[u>>2];c[s+4>>2]=q;q=J;c[q>>2]=v;c[q+4>>2]=t;n=I;x=J;l=(l|0)==(w|0)?J:l;k=k+1|0}}else{K=p;L=
o;M=A}while(0);if((K|0)!=(L|0)?nb[c[d>>2]&31](L,K)|0:0){o=K;p=c[o>>2]|0;k=c[o+4>>2]|0;o=L;l=c[o+4>>2]|0;x=K;c[x>>2]=c[o>>2];c[x+4>>2]=l;l=L;c[l>>2]=p;c[l+4>>2]=k;N=M+1|0}else N=M;if((N|0)==0){O=bk(h,K,d)|0;k=K+8|0;if(bk(k,a,d)|0){m=62;break}if(O){h=k;continue}}k=K;if((k-j|0)>=(b-k|0)){m=66;break}_j(h,K,d);h=K+8|0}if((m|0)==62){m=0;if(O){m=67;break}else{f=h;a=K;continue}}else if((m|0)==66){m=0;_j(K+8|0,a,d);f=h;a=K;continue}}if((m|0)==4){if(!(nb[c[d>>2]&31](g,h)|0)){i=e;return}K=h;f=c[K>>2]|0;O=c[K+
4>>2]|0;K=g;N=c[K+4>>2]|0;M=h;c[M>>2]=c[K>>2];c[M+4>>2]=N;N=g;c[N>>2]=f;c[N+4>>2]=O;i=e;return}else if((m|0)==6){O=h+8|0;N=nb[c[d>>2]&31](O,h)|0;f=nb[c[d>>2]&31](g,O)|0;if(!N){if(!f){i=e;return}N=O;M=c[N>>2]|0;K=c[N+4>>2]|0;N=g;L=c[N+4>>2]|0;A=O;c[A>>2]=c[N>>2];c[A+4>>2]=L;L=g;c[L>>2]=M;c[L+4>>2]=K;if(!(nb[c[d>>2]&31](O,h)|0)){i=e;return}K=h;L=c[K>>2]|0;M=c[K+4>>2]|0;K=O;A=c[K+4>>2]|0;N=h;c[N>>2]=c[K>>2];c[N+4>>2]=A;A=O;c[A>>2]=L;c[A+4>>2]=M;i=e;return}M=h;A=c[M>>2]|0;L=c[M+4>>2]|0;if(f){f=g;M=c[f+
4>>2]|0;N=h;c[N>>2]=c[f>>2];c[N+4>>2]=M;M=g;c[M>>2]=A;c[M+4>>2]=L;i=e;return}M=O;N=c[M+4>>2]|0;f=h;c[f>>2]=c[M>>2];c[f+4>>2]=N;N=O;c[N>>2]=A;c[N+4>>2]=L;if(!(nb[c[d>>2]&31](g,O)|0)){i=e;return}L=O;N=c[L>>2]|0;A=c[L+4>>2]|0;L=g;f=c[L+4>>2]|0;M=O;c[M>>2]=c[L>>2];c[M+4>>2]=f;f=g;c[f>>2]=N;c[f+4>>2]=A;i=e;return}else if((m|0)==14){$j(h,h+8|0,h+16|0,g,d)|0;i=e;return}else if((m|0)==15){A=h+8|0;f=h+16|0;N=h+24|0;$j(h,A,f,N,d)|0;if(!(nb[c[d>>2]&31](g,N)|0)){i=e;return}M=N;L=c[M>>2]|0;O=c[M+4>>2]|0;M=g;K=
c[M+4>>2]|0;J=N;c[J>>2]=c[M>>2];c[J+4>>2]=K;K=g;c[K>>2]=L;c[K+4>>2]=O;if(!(nb[c[d>>2]&31](N,f)|0)){i=e;return}O=f;K=c[O>>2]|0;L=c[O+4>>2]|0;O=N;g=c[O+4>>2]|0;J=f;c[J>>2]=c[O>>2];c[J+4>>2]=g;g=N;c[g>>2]=K;c[g+4>>2]=L;if(!(nb[c[d>>2]&31](f,A)|0)){i=e;return}L=A;g=c[L>>2]|0;K=c[L+4>>2]|0;L=f;N=c[L+4>>2]|0;J=A;c[J>>2]=c[L>>2];c[J+4>>2]=N;N=f;c[N>>2]=g;c[N+4>>2]=K;if(!(nb[c[d>>2]&31](A,h)|0)){i=e;return}K=h;N=c[K>>2]|0;g=c[K+4>>2]|0;K=A;f=c[K+4>>2]|0;J=h;c[J>>2]=c[K>>2];c[J+4>>2]=f;f=A;c[f>>2]=N;c[f+4>>
2]=g;i=e;return}else if((m|0)==21){ak(h,a,d);i=e;return}else if((m|0)==67){i=e;return}}function $j(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;g=i;h=nb[c[f>>2]&31](b,a)|0;j=nb[c[f>>2]&31](d,b)|0;do if(h){k=a;l=c[k>>2]|0;m=c[k+4>>2]|0;if(j){k=d;n=c[k+4>>2]|0;o=a;c[o>>2]=c[k>>2];c[o+4>>2]=n;n=d;c[n>>2]=l;c[n+4>>2]=m;p=1;break}n=b;o=c[n+4>>2]|0;k=a;c[k>>2]=c[n>>2];c[k+4>>2]=o;o=b;c[o>>2]=l;c[o+4>>2]=m;if(nb[c[f>>2]&31](d,b)|0){m=b;o=c[m>>2]|0;l=c[m+4>>2]|0;m=
d;k=c[m+4>>2]|0;n=b;c[n>>2]=c[m>>2];c[n+4>>2]=k;k=d;c[k>>2]=o;c[k+4>>2]=l;p=2}else p=1}else if(j){l=b;k=c[l>>2]|0;o=c[l+4>>2]|0;l=d;n=c[l+4>>2]|0;m=b;c[m>>2]=c[l>>2];c[m+4>>2]=n;n=d;c[n>>2]=k;c[n+4>>2]=o;if(nb[c[f>>2]&31](b,a)|0){o=a;n=c[o>>2]|0;k=c[o+4>>2]|0;o=b;m=c[o+4>>2]|0;l=a;c[l>>2]=c[o>>2];c[l+4>>2]=m;m=b;c[m>>2]=n;c[m+4>>2]=k;p=2}else p=1}else p=0;while(0);if(!(nb[c[f>>2]&31](e,d)|0)){q=p;i=g;return q|0}j=d;h=c[j>>2]|0;k=c[j+4>>2]|0;j=e;m=c[j+4>>2]|0;n=d;c[n>>2]=c[j>>2];c[n+4>>2]=m;m=e;c[m>>
2]=h;c[m+4>>2]=k;if(!(nb[c[f>>2]&31](d,b)|0)){q=p+1|0;i=g;return q|0}k=b;m=c[k>>2]|0;h=c[k+4>>2]|0;k=d;e=c[k+4>>2]|0;n=b;c[n>>2]=c[k>>2];c[n+4>>2]=e;e=d;c[e>>2]=m;c[e+4>>2]=h;if(!(nb[c[f>>2]&31](b,a)|0)){q=p+2|0;i=g;return q|0}f=a;h=c[f>>2]|0;e=c[f+4>>2]|0;f=b;m=c[f+4>>2]|0;d=a;c[d>>2]=c[f>>2];c[d+4>>2]=m;m=b;c[m>>2]=h;c[m+4>>2]=e;q=p+3|0;i=g;return q|0}function ak(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;e=i;i=i+16|0;f=e;g=a+16|0;h=a+8|0;j=nb[c[d>>2]&31](h,
a)|0;k=nb[c[d>>2]&31](g,h)|0;do if(j){l=a;m=c[l>>2]|0;n=c[l+4>>2]|0;if(k){l=g;o=c[l+4>>2]|0;p=a;c[p>>2]=c[l>>2];c[p+4>>2]=o;o=g;c[o>>2]=m;c[o+4>>2]=n;break}o=h;p=c[o+4>>2]|0;l=a;c[l>>2]=c[o>>2];c[l+4>>2]=p;p=h;c[p>>2]=m;c[p+4>>2]=n;if(nb[c[d>>2]&31](g,h)|0){n=h;p=c[n>>2]|0;m=c[n+4>>2]|0;n=g;l=c[n+4>>2]|0;o=h;c[o>>2]=c[n>>2];c[o+4>>2]=l;l=g;c[l>>2]=p;c[l+4>>2]=m}}else if(k?(m=h,l=c[m>>2]|0,p=c[m+4>>2]|0,m=g,o=c[m+4>>2]|0,n=h,c[n>>2]=c[m>>2],c[n+4>>2]=o,o=g,c[o>>2]=l,c[o+4>>2]=p,nb[c[d>>2]&31](h,a)|
0):0){p=a;o=c[p>>2]|0;l=c[p+4>>2]|0;p=h;n=c[p+4>>2]|0;m=a;c[m>>2]=c[p>>2];c[m+4>>2]=n;n=h;c[n>>2]=o;c[n+4>>2]=l}while(0);h=a+24|0;if((h|0)==(b|0)){i=e;return}else{q=h;r=g}while(1){if(nb[c[d>>2]&31](q,r)|0){g=q;h=c[g+4>>2]|0;k=f;c[k>>2]=c[g>>2];c[k+4>>2]=h;h=q;k=r;while(1){g=k;j=c[g+4>>2]|0;l=h;c[l>>2]=c[g>>2];c[l+4>>2]=j;if((k|0)==(a|0))break;j=k+-8|0;if(nb[c[d>>2]&31](f,j)|0){l=k;k=j;h=l}else break}h=f;l=c[h+4>>2]|0;j=k;c[j>>2]=c[h>>2];c[j+4>>2]=l}l=q+8|0;if((l|0)==(b|0))break;else{j=q;q=l;r=j}}i=
e;return}function bk(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;e=i;i=i+16|0;f=e;switch(b-a>>3|0){case 2:g=b+-8|0;if(!(nb[c[d>>2]&31](g,a)|0)){h=1;i=e;return h|0}j=a;k=c[j>>2]|0;l=c[j+4>>2]|0;j=g;m=c[j+4>>2]|0;n=a;c[n>>2]=c[j>>2];c[n+4>>2]=m;m=g;c[m>>2]=k;c[m+4>>2]=l;h=1;i=e;return h|0;case 4:$j(a,a+8|0,a+16|0,b+-8|0,d)|0;h=1;i=e;return h|0;case 5:l=a+8|0;m=a+16|0;k=a+24|0;g=b+-8|0;$j(a,l,m,k,d)|0;if(!(nb[c[d>>2]&31](g,k)|0)){h=1;i=e;return h|
0}n=k;j=c[n>>2]|0;o=c[n+4>>2]|0;n=g;p=c[n+4>>2]|0;q=k;c[q>>2]=c[n>>2];c[q+4>>2]=p;p=g;c[p>>2]=j;c[p+4>>2]=o;if(!(nb[c[d>>2]&31](k,m)|0)){h=1;i=e;return h|0}o=m;p=c[o>>2]|0;j=c[o+4>>2]|0;o=k;g=c[o+4>>2]|0;q=m;c[q>>2]=c[o>>2];c[q+4>>2]=g;g=k;c[g>>2]=p;c[g+4>>2]=j;if(!(nb[c[d>>2]&31](m,l)|0)){h=1;i=e;return h|0}j=l;g=c[j>>2]|0;p=c[j+4>>2]|0;j=m;k=c[j+4>>2]|0;q=l;c[q>>2]=c[j>>2];c[q+4>>2]=k;k=m;c[k>>2]=g;c[k+4>>2]=p;if(!(nb[c[d>>2]&31](l,a)|0)){h=1;i=e;return h|0}p=a;k=c[p>>2]|0;g=c[p+4>>2]|0;p=l;m=c[p+
4>>2]|0;q=a;c[q>>2]=c[p>>2];c[q+4>>2]=m;m=l;c[m>>2]=k;c[m+4>>2]=g;h=1;i=e;return h|0;case 3:g=a+8|0;m=b+-8|0;k=nb[c[d>>2]&31](g,a)|0;l=nb[c[d>>2]&31](m,g)|0;if(!k){if(!l){h=1;i=e;return h|0}k=g;q=c[k>>2]|0;p=c[k+4>>2]|0;k=m;j=c[k+4>>2]|0;o=g;c[o>>2]=c[k>>2];c[o+4>>2]=j;j=m;c[j>>2]=q;c[j+4>>2]=p;if(!(nb[c[d>>2]&31](g,a)|0)){h=1;i=e;return h|0}p=a;j=c[p>>2]|0;q=c[p+4>>2]|0;p=g;o=c[p+4>>2]|0;k=a;c[k>>2]=c[p>>2];c[k+4>>2]=o;o=g;c[o>>2]=j;c[o+4>>2]=q;h=1;i=e;return h|0}q=a;o=c[q>>2]|0;j=c[q+4>>2]|0;if(l){l=
m;q=c[l+4>>2]|0;k=a;c[k>>2]=c[l>>2];c[k+4>>2]=q;q=m;c[q>>2]=o;c[q+4>>2]=j;h=1;i=e;return h|0}q=g;k=c[q+4>>2]|0;l=a;c[l>>2]=c[q>>2];c[l+4>>2]=k;k=g;c[k>>2]=o;c[k+4>>2]=j;if(!(nb[c[d>>2]&31](m,g)|0)){h=1;i=e;return h|0}j=g;k=c[j>>2]|0;o=c[j+4>>2]|0;j=m;l=c[j+4>>2]|0;q=g;c[q>>2]=c[j>>2];c[q+4>>2]=l;l=m;c[l>>2]=k;c[l+4>>2]=o;h=1;i=e;return h|0;case 1:case 0:h=1;i=e;return h|0;default:o=a+16|0;l=a+8|0;k=nb[c[d>>2]&31](l,a)|0;m=nb[c[d>>2]&31](o,l)|0;do if(k){q=a;j=c[q>>2]|0;g=c[q+4>>2]|0;if(m){q=o;p=c[q+
4>>2]|0;n=a;c[n>>2]=c[q>>2];c[n+4>>2]=p;p=o;c[p>>2]=j;c[p+4>>2]=g;break}p=l;n=c[p+4>>2]|0;q=a;c[q>>2]=c[p>>2];c[q+4>>2]=n;n=l;c[n>>2]=j;c[n+4>>2]=g;if(nb[c[d>>2]&31](o,l)|0){g=l;n=c[g>>2]|0;j=c[g+4>>2]|0;g=o;q=c[g+4>>2]|0;p=l;c[p>>2]=c[g>>2];c[p+4>>2]=q;q=o;c[q>>2]=n;c[q+4>>2]=j}}else if(m?(j=l,q=c[j>>2]|0,n=c[j+4>>2]|0,j=o,p=c[j+4>>2]|0,g=l,c[g>>2]=c[j>>2],c[g+4>>2]=p,p=o,c[p>>2]=q,c[p+4>>2]=n,nb[c[d>>2]&31](l,a)|0):0){n=a;p=c[n>>2]|0;q=c[n+4>>2]|0;n=l;g=c[n+4>>2]|0;j=a;c[j>>2]=c[n>>2];c[j+4>>2]=
g;g=l;c[g>>2]=p;c[g+4>>2]=q}while(0);l=a+24|0;if((l|0)==(b|0)){h=1;i=e;return h|0}else{r=0;s=l;t=o}while(1){if(nb[c[d>>2]&31](s,t)|0){o=s;l=c[o+4>>2]|0;m=f;c[m>>2]=c[o>>2];c[m+4>>2]=l;l=s;m=t;while(1){o=m;k=c[o+4>>2]|0;q=l;c[q>>2]=c[o>>2];c[q+4>>2]=k;if((m|0)==(a|0))break;k=m+-8|0;if(nb[c[d>>2]&31](f,k)|0){q=m;m=k;l=q}else break}l=f;q=c[l+4>>2]|0;k=m;c[k>>2]=c[l>>2];c[k+4>>2]=q;q=r+1|0;if((q|0)==8)break;else u=q}else u=r;q=s+8|0;if((q|0)==(b|0)){h=1;v=34;break}else{k=s;r=u;s=q;t=k}}if((v|0)==34){i=
e;return h|0}h=(s+8|0)==(b|0);i=e;return h|0}return 0}function ck(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function dk(a,b){a=a|0;b=b|0;return}function ek(a,b){a=a|0;b=b|0;return}function fk(a,b,c){a=a|0;b=b|0;c=c|0;return}function gk(a,b,c){a=a|0;b=b|0;c=c|0;return}function hk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;c[a>>2]=b;c[a+4>>2]=Ym(b,d<<4)|0;c[a+8>>2]=d;d=a+12|0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;i=e;return}function ik(a){a=a|0;var b=0,d=0;b=i;d=c[a+24>>2]|0;if((d|0)!=0)_m(c[a>>2]|
0,d);_m(c[a>>2]|0,c[a+4>>2]|0);i=b;return}function jk(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=b+12|0;h=c[g>>2]|0;c[g>>2]=h+1;g=c[b+4>>2]|0;b=d;d=c[b+4>>2]|0;i=g+(h<<4)|0;c[i>>2]=c[b>>2];c[i+4>>2]=d;c[g+(h<<4)+8>>2]=e;a[g+(h<<4)+12>>0]=f&1;return}function kk(b,d,e){b=b|0;d=+d;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,ba=0,ca=0,da=0,ea=
0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,
Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0;f=i;h=1/d;j=b+12|0;k=c[j>>2]|0;if((k|0)>0){l=c[b+4>>2]|0;d=3.4028234663852886E38;m=3.4028234663852886E38;n=-3.4028234663852886E38;o=-3.4028234663852886E38;p=0;while(1){if((a[l+(p<<4)+12>>0]|0)==0){q=m;r=d;s=o;t=n}else{u=+g[l+(p<<4)>>2];v=+g[l+(p<<4)+4>>2];q=m<v?m:v;r=d<u?d:u;s=o>v?o:v;t=n>u?n:u}p=p+1|0;if((p|0)>=(k|0)){w=q;x=r;y=s;z=t;break}else{d=r;m=q;n=t;o=s}}}else{w=3.4028234663852886E38;x=3.4028234663852886E38;y=-3.4028234663852886E38;
z=-3.4028234663852886E38}s=x-e;x=w-e;k=~~(h*(z+e-s))+1|0;p=b+16|0;c[p>>2]=k;l=~~(h*(y+e-x))+1|0;A=b+20|0;c[A>>2]=l;B=Ym(c[b>>2]|0,aa(l<<2,k)|0)|0;k=b+24|0;c[k>>2]=B;l=c[p>>2]|0;C=c[A>>2]|0;D=aa(C,l)|0;a:do if((D|0)>0){E=B;F=0;while(1){c[E+(F<<2)>>2]=0;G=F+1|0;if((G|0)>=(D|0))break a;E=c[k>>2]|0;F=G}}while(0);D=c[b>>2]|0;B=aa(l<<2,C)|0;C=Ym(D,B<<4)|0;if((c[j>>2]|0)>0){l=b+4|0;b=0;F=B;E=C;G=0;while(1){H=c[l>>2]|0;I=H+(G<<4)|0;J=H+(G<<4)+4|0;e=h*(+g[I>>2]-s);y=+e;z=+(h*(+g[J>>2]-x));H=I;g[H>>2]=y;g[H+
4>>2]=z;H=~~e;K=~~+g[J>>2];if(((K|H|0)>-1?(J=c[p>>2]|0,(H|0)<(J|0)):0)?(K|0)<(c[A>>2]|0):0){L=(aa(J,K)|0)+H|0;if((b|0)<(F|0)){M=F;N=E}else{if((b|0)>0){J=0;do J=J+1|0;while((J|0)!=(b|0))}J=(F|0)>0?F<<1:1;M=J;N=Zm(D,E,J<<4)|0}c[N+(b<<4)>>2]=H;c[N+(b<<4)+4>>2]=K;c[N+(b<<4)+8>>2]=L;c[N+(b<<4)+12>>2]=I;O=M;P=b+1|0;Q=N}else{O=F;P=b;Q=E}G=G+1|0;if((G|0)>=(c[j>>2]|0)){R=O;S=P;T=0;U=Q;break}else{b=P;F=O;E=Q}}}else{R=B;S=0;T=0;U=C}b:while(1){C=T;do{if((C|0)==(S|0))break b;V=c[U+(C<<4)>>2]|0;W=c[U+(C<<4)+4>>
2]|0;X=c[U+(C<<4)+8>>2]|0;Y=c[U+(C<<4)+12>>2]|0;C=C+1|0;Z=(c[k>>2]|0)+(X<<2)|0}while((c[Z>>2]|0)!=0);c[Z>>2]=Y;if((V|0)>0){I=V+-1|0;L=X+-1|0;if((S|0)>=(R|0)){if((C|0)<(S|0)){K=C;do{H=U+(K-C<<4)|0;B=U+(K<<4)|0;c[H+0>>2]=c[B+0>>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];K=K+1|0}while((K|0)!=(S|0))}K=S-C|0;if((K|0)<(R|0)){_=U;$=K;ba=R;ca=0}else{B=(R|0)>0?R<<1:1;_=Zm(D,U,B<<4)|0;$=K;ba=B;ca=0}}else{_=U;$=S;ba=R;ca=C}c[_+($<<4)>>2]=I;c[_+($<<4)+4>>2]=W;c[_+($<<4)+8>>2]=L;c[_+($<<
4)+12>>2]=Y;da=$+1|0;ea=ba;fa=ca;ga=_}else{da=S;ea=R;fa=C;ga=U}if((W|0)>0){B=W+-1|0;K=X-(c[p>>2]|0)|0;if((da|0)>=(ea|0)){if((fa|0)<(da|0)){H=fa;do{Q=ga+(H-fa<<4)|0;E=ga+(H<<4)|0;c[Q+0>>2]=c[E+0>>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];H=H+1|0}while((H|0)!=(da|0))}H=da-fa|0;if((H|0)<(ea|0)){ha=ga;ia=H;ja=ea;ka=0}else{C=(ea|0)>0?ea<<1:1;ha=Zm(D,ga,C<<4)|0;ia=H;ja=C;ka=0}}else{ha=ga;ia=da;ja=ea;ka=fa}c[ha+(ia<<4)>>2]=V;c[ha+(ia<<4)+4>>2]=B;c[ha+(ia<<4)+8>>2]=K;c[ha+(ia<<4)+12>>
2]=Y;la=ia+1|0;ma=ja;na=ka;oa=ha}else{la=da;ma=ea;na=fa;oa=ga}if((V|0)<((c[p>>2]|0)+-1|0)){C=V+1|0;H=X+1|0;if((la|0)>=(ma|0)){if((na|0)<(la|0)){L=na;do{I=oa+(L-na<<4)|0;E=oa+(L<<4)|0;c[I+0>>2]=c[E+0>>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];L=L+1|0}while((L|0)!=(la|0))}L=la-na|0;if((L|0)<(ma|0)){pa=oa;qa=L;ra=ma;sa=0}else{K=(ma|0)>0?ma<<1:1;pa=Zm(D,oa,K<<4)|0;qa=L;ra=K;sa=0}}else{pa=oa;qa=la;ra=ma;sa=na}c[pa+(qa<<4)>>2]=C;c[pa+(qa<<4)+4>>2]=W;c[pa+(qa<<4)+8>>2]=H;c[pa+(qa<<
4)+12>>2]=Y;ta=qa+1|0;ua=ra;va=sa;wa=pa}else{ta=la;ua=ma;va=na;wa=oa}if((W|0)>=((c[A>>2]|0)+-1|0)){R=ua;S=ta;T=va;U=wa;continue}K=W+1|0;L=(c[p>>2]|0)+X|0;if((ta|0)>=(ua|0)){if((va|0)<(ta|0)){B=va;do{E=wa+(B-va<<4)|0;I=wa+(B<<4)|0;c[E+0>>2]=c[I+0>>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];B=B+1|0}while((B|0)!=(ta|0))}B=ta-va|0;if((B|0)<(ua|0)){xa=wa;ya=B;za=ua;Aa=0}else{H=(ua|0)>0?ua<<1:1;xa=Zm(D,wa,H<<4)|0;ya=B;za=H;Aa=0}}else{xa=wa;ya=ta;za=ua;Aa=va}c[xa+(ya<<4)>>2]=V;c[xa+
(ya<<4)+4>>2]=K;c[xa+(ya<<4)+8>>2]=L;c[xa+(ya<<4)+12>>2]=Y;R=za;S=ya+1|0;T=Aa;U=xa}xa=c[A>>2]|0;if((xa|0)>0){Aa=c[p>>2]|0;T=xa;ya=U;za=S;Y=S;V=R;va=0;while(1){if((Aa+-1|0)>0){ua=Aa;ta=Y;wa=V;X=za;W=ya;oa=0;while(1){na=(aa(ua,va)|0)+oa|0;ma=c[k>>2]|0;la=c[ma+(na<<2)>>2]|0;pa=na+1|0;sa=c[ma+(pa<<2)>>2]|0;if((la|0)==(sa|0)){Ba=oa+1|0;Ca=ua;Da=wa;Ea=ta;Fa=X;Ga=W}else{if((ta|0)>=(wa|0)){if((X|0)<(ta|0)){ma=X;do{ra=W+(ma-X<<4)|0;qa=W+(ma<<4)|0;c[ra+0>>2]=c[qa+0>>2];c[ra+4>>2]=c[qa+4>>2];c[ra+8>>2]=c[qa+
8>>2];c[ra+12>>2]=c[qa+12>>2];ma=ma+1|0}while((ma|0)!=(ta|0))}ma=ta-X|0;if((ma|0)<(wa|0)){Ha=W;Ia=ma;Ja=wa;Ka=0}else{qa=(wa|0)>0?wa<<1:1;Ha=Zm(D,W,qa<<4)|0;Ia=ma;Ja=qa;Ka=0}}else{Ha=W;Ia=ta;Ja=wa;Ka=X}c[Ha+(Ia<<4)>>2]=oa;c[Ha+(Ia<<4)+4>>2]=va;c[Ha+(Ia<<4)+8>>2]=na;c[Ha+(Ia<<4)+12>>2]=sa;qa=Ia+1|0;ma=oa+1|0;if((qa|0)>=(Ja|0)){if((Ka|0)<(qa|0)){ra=Ka;do{ga=Ha+(ra-Ka<<4)|0;fa=Ha+(ra<<4)|0;c[ga+0>>2]=c[fa+0>>2];c[ga+4>>2]=c[fa+4>>2];c[ga+8>>2]=c[fa+8>>2];c[ga+12>>2]=c[fa+12>>2];ra=ra+1|0}while((ra|0)!=
(qa|0))}ra=qa-Ka|0;if((ra|0)<(Ja|0)){La=Ha;Ma=ra;Na=Ja;Oa=0}else{sa=(Ja|0)>0?Ja<<1:1;La=Zm(D,Ha,sa<<4)|0;Ma=ra;Na=sa;Oa=0}}else{La=Ha;Ma=qa;Na=Ja;Oa=Ka}c[La+(Ma<<4)>>2]=ma;c[La+(Ma<<4)+4>>2]=va;c[La+(Ma<<4)+8>>2]=pa;c[La+(Ma<<4)+12>>2]=la;Ba=ma;Ca=c[p>>2]|0;Da=Na;Ea=Ma+1|0;Fa=Oa;Ga=La}if((Ba|0)<(Ca+-1|0)){ua=Ca;ta=Ea;wa=Da;X=Fa;W=Ga;oa=Ba}else break}Pa=Da;Qa=Ea;Ra=Fa;Sa=Ga;Ta=c[A>>2]|0;Ua=Ca}else{Pa=V;Qa=Y;Ra=za;Sa=ya;Ta=T;Ua=Aa}va=va+1|0;if((va|0)>=(Ta|0)){Va=Pa;Wa=Qa;Xa=Ra;Ya=Sa;Za=Ta;break}else{Aa=
Ua;T=Ta;ya=Sa;za=Ra;Y=Qa;V=Pa}}}else{Va=R;Wa=S;Xa=S;Ya=U;Za=xa}if((Za+-1|0)>0){xa=c[p>>2]|0;U=Za;Za=Ya;S=Xa;R=Wa;Pa=Va;V=0;while(1){Qa=V;V=V+1|0;if((xa|0)>0){Y=xa;Ra=R;za=Pa;Sa=S;ya=Za;Ta=0;while(1){T=(aa(Y,Qa)|0)+Ta|0;Ua=c[k>>2]|0;Aa=c[Ua+(T<<2)>>2]|0;va=c[Ua+(T+Y<<2)>>2]|0;if((Aa|0)==(va|0)){_a=Y;$a=za;ab=Ra;bb=Sa;cb=ya}else{if((Ra|0)>=(za|0)){if((Sa|0)<(Ra|0)){Ua=Sa;do{Ca=ya+(Ua-Sa<<4)|0;Ga=ya+(Ua<<4)|0;c[Ca+0>>2]=c[Ga+0>>2];c[Ca+4>>2]=c[Ga+4>>2];c[Ca+8>>2]=c[Ga+8>>2];c[Ca+12>>2]=c[Ga+12>>2];Ua=
Ua+1|0}while((Ua|0)!=(Ra|0))}Ua=Ra-Sa|0;if((Ua|0)<(za|0)){db=ya;eb=Ua;fb=za;gb=0}else{ma=(za|0)>0?za<<1:1;db=Zm(D,ya,ma<<4)|0;eb=Ua;fb=ma;gb=0}}else{db=ya;eb=Ra;fb=za;gb=Sa}c[db+(eb<<4)>>2]=Ta;c[db+(eb<<4)+4>>2]=Qa;c[db+(eb<<4)+8>>2]=T;c[db+(eb<<4)+12>>2]=va;ma=eb+1|0;Ua=(c[p>>2]|0)+T|0;if((ma|0)>=(fb|0)){if((gb|0)<(ma|0)){la=gb;do{pa=db+(la-gb<<4)|0;qa=db+(la<<4)|0;c[pa+0>>2]=c[qa+0>>2];c[pa+4>>2]=c[qa+4>>2];c[pa+8>>2]=c[qa+8>>2];c[pa+12>>2]=c[qa+12>>2];la=la+1|0}while((la|0)!=(ma|0))}la=ma-gb|0;
if((la|0)<(fb|0)){hb=db;ib=la;jb=fb;kb=0}else{T=(fb|0)>0?fb<<1:1;hb=Zm(D,db,T<<4)|0;ib=la;jb=T;kb=0}}else{hb=db;ib=ma;jb=fb;kb=gb}c[hb+(ib<<4)>>2]=Ta;c[hb+(ib<<4)+4>>2]=V;c[hb+(ib<<4)+8>>2]=Ua;c[hb+(ib<<4)+12>>2]=Aa;_a=c[p>>2]|0;$a=jb;ab=ib+1|0;bb=kb;cb=hb}Ta=Ta+1|0;if((Ta|0)>=(_a|0))break;else{Y=_a;Ra=ab;za=$a;Sa=bb;ya=cb}}lb=$a;mb=ab;nb=bb;ob=cb;pb=c[A>>2]|0;qb=_a}else{lb=Pa;mb=R;nb=S;ob=Za;pb=U;qb=xa}if((V|0)>=(pb+-1|0)){rb=lb;sb=mb;tb=nb;ub=ob;break}else{xa=qb;U=pb;Za=ob;S=nb;R=mb;Pa=lb}}}else{rb=
Va;sb=Wa;tb=Xa;ub=Ya}if((tb|0)==(sb|0)){vb=ub;_m(D,vb);i=f;return}else{wb=rb;xb=sb;yb=tb;zb=ub}c:while(1){ub=c[k>>2]|0;tb=yb;while(1){Ab=c[zb+(tb<<4)>>2]|0;Bb=c[zb+(tb<<4)+4>>2]|0;Cb=c[zb+(tb<<4)+8>>2]|0;Db=c[zb+(tb<<4)+12>>2]|0;tb=tb+1|0;Eb=ub+(Cb<<2)|0;sb=c[Eb>>2]|0;if((sb|0)!=(Db|0)?(x=+(Ab|0),h=+g[sb>>2]-x,s=+(Bb|0),e=+g[sb+4>>2]-s,z=+g[Db>>2]-x,x=+g[Db+4>>2]-s,h*h+e*e>z*z+x*x):0)break;if((tb|0)==(xb|0)){vb=zb;Fb=122;break c}}c[Eb>>2]=Db;if((Ab|0)>0){ub=Ab+-1|0;sb=Cb+-1|0;if((xb|0)>=(wb|0)){if((tb|
0)<(xb|0)){rb=tb;do{Ya=zb+(rb-tb<<4)|0;Xa=zb+(rb<<4)|0;c[Ya+0>>2]=c[Xa+0>>2];c[Ya+4>>2]=c[Xa+4>>2];c[Ya+8>>2]=c[Xa+8>>2];c[Ya+12>>2]=c[Xa+12>>2];rb=rb+1|0}while((rb|0)!=(xb|0))}rb=xb-tb|0;if((rb|0)<(wb|0)){Gb=zb;Hb=rb;Ib=wb;Jb=0}else{Xa=(wb|0)>0?wb<<1:1;Gb=Zm(D,zb,Xa<<4)|0;Hb=rb;Ib=Xa;Jb=0}}else{Gb=zb;Hb=xb;Ib=wb;Jb=tb}c[Gb+(Hb<<4)>>2]=ub;c[Gb+(Hb<<4)+4>>2]=Bb;c[Gb+(Hb<<4)+8>>2]=sb;c[Gb+(Hb<<4)+12>>2]=Db;Kb=Hb+1|0;Lb=Ib;Mb=Jb;Nb=Gb}else{Kb=xb;Lb=wb;Mb=tb;Nb=zb}if((Bb|0)>0){Xa=Bb+-1|0;rb=Cb-(c[p>>
2]|0)|0;if((Kb|0)>=(Lb|0)){if((Mb|0)<(Kb|0)){Ya=Mb;do{Wa=Nb+(Ya-Mb<<4)|0;Va=Nb+(Ya<<4)|0;c[Wa+0>>2]=c[Va+0>>2];c[Wa+4>>2]=c[Va+4>>2];c[Wa+8>>2]=c[Va+8>>2];c[Wa+12>>2]=c[Va+12>>2];Ya=Ya+1|0}while((Ya|0)!=(Kb|0))}Ya=Kb-Mb|0;if((Ya|0)<(Lb|0)){Ob=Nb;Pb=Ya;Qb=Lb;Rb=0}else{tb=(Lb|0)>0?Lb<<1:1;Ob=Zm(D,Nb,tb<<4)|0;Pb=Ya;Qb=tb;Rb=0}}else{Ob=Nb;Pb=Kb;Qb=Lb;Rb=Mb}c[Ob+(Pb<<4)>>2]=Ab;c[Ob+(Pb<<4)+4>>2]=Xa;c[Ob+(Pb<<4)+8>>2]=rb;c[Ob+(Pb<<4)+12>>2]=Db;Sb=Pb+1|0;Tb=Qb;Ub=Rb;Vb=Ob}else{Sb=Kb;Tb=Lb;Ub=Mb;Vb=Nb}if((Ab|
0)<((c[p>>2]|0)+-1|0)){tb=Ab+1|0;Ya=Cb+1|0;if((Sb|0)>=(Tb|0)){if((Ub|0)<(Sb|0)){sb=Ub;do{ub=Vb+(sb-Ub<<4)|0;Va=Vb+(sb<<4)|0;c[ub+0>>2]=c[Va+0>>2];c[ub+4>>2]=c[Va+4>>2];c[ub+8>>2]=c[Va+8>>2];c[ub+12>>2]=c[Va+12>>2];sb=sb+1|0}while((sb|0)!=(Sb|0))}sb=Sb-Ub|0;if((sb|0)<(Tb|0)){Wb=Vb;Xb=sb;Yb=Tb;Zb=0}else{rb=(Tb|0)>0?Tb<<1:1;Wb=Zm(D,Vb,rb<<4)|0;Xb=sb;Yb=rb;Zb=0}}else{Wb=Vb;Xb=Sb;Yb=Tb;Zb=Ub}c[Wb+(Xb<<4)>>2]=tb;c[Wb+(Xb<<4)+4>>2]=Bb;c[Wb+(Xb<<4)+8>>2]=Ya;c[Wb+(Xb<<4)+12>>2]=Db;_b=Xb+1|0;$b=Yb;ac=Zb;bc=
Wb}else{_b=Sb;$b=Tb;ac=Ub;bc=Vb}if((Bb|0)<((c[A>>2]|0)+-1|0)){rb=Bb+1|0;sb=(c[p>>2]|0)+Cb|0;if((_b|0)>=($b|0)){if((ac|0)<(_b|0)){Xa=ac;do{Va=bc+(Xa-ac<<4)|0;ub=bc+(Xa<<4)|0;c[Va+0>>2]=c[ub+0>>2];c[Va+4>>2]=c[ub+4>>2];c[Va+8>>2]=c[ub+8>>2];c[Va+12>>2]=c[ub+12>>2];Xa=Xa+1|0}while((Xa|0)!=(_b|0))}Xa=_b-ac|0;if((Xa|0)<($b|0)){cc=bc;dc=Xa;ec=$b;fc=0}else{Ya=($b|0)>0?$b<<1:1;cc=Zm(D,bc,Ya<<4)|0;dc=Xa;ec=Ya;fc=0}}else{cc=bc;dc=_b;ec=$b;fc=ac}c[cc+(dc<<4)>>2]=Ab;c[cc+(dc<<4)+4>>2]=rb;c[cc+(dc<<4)+8>>2]=sb;
c[cc+(dc<<4)+12>>2]=Db;gc=ec;hc=dc+1|0;ic=fc;jc=cc}else{gc=$b;hc=_b;ic=ac;jc=bc}if((ic|0)==(hc|0)){vb=jc;Fb=122;break}else{wb=gc;xb=hc;yb=ic;zb=jc}}if((Fb|0)==122){_m(D,vb);i=f;return}}function lk(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;e=i;f=b+20|0;g=c[f>>2]|0;if((g+-1|0)<=0){i=e;return}h=b+16|0;j=b+24|0;b=c[h>>2]|0;k=g;g=0;while(1){if((b+-1|0)>0){l=b;m=0;do{n=(aa(l,g)|0)+m|0;o=c[j>>2]|0;p=c[o+(n<<2)>>2]|0;q=n+1|0;r=c[o+(q<<2)>>2]|0;s=c[o+(n+l<<2)>>2]|
0;n=c[o+(q+l<<2)>>2]|0;do if((r|0)!=(s|0)){do if(!((p|0)==(r|0)|(p|0)==(s|0))){if(((a[p+12>>0]|0)==0?(a[r+12>>0]|0)==0:0)?(a[s+12>>0]|0)==0:0)break;pb[c[(c[d>>2]|0)+8>>2]&31](d,c[p+8>>2]|0,c[r+8>>2]|0,c[s+8>>2]|0)}while(0);if(!((n|0)==(r|0)|(n|0)==(s|0))){if(((a[r+12>>0]|0)==0?(a[n+12>>0]|0)==0:0)?(a[s+12>>0]|0)==0:0)break;pb[c[(c[d>>2]|0)+8>>2]&31](d,c[r+8>>2]|0,c[n+8>>2]|0,c[s+8>>2]|0)}}while(0);m=m+1|0;l=c[h>>2]|0}while((m|0)<(l+-1|0));t=c[f>>2]|0;u=l}else{t=k;u=b}g=g+1|0;if((g|0)>=(t+-1|0))break;
else{b=u;k=t}}i=e;return}function mk(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0;b=i;d=a+40|0;e=a+48|0;f=a+16|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;g[f>>2]=1;c[a+20>>2]=0;c[a+24>>2]=0;c[a+28>>2]=-1;g[a+32>>2]=0;g[a+36>>2]=0;f=8784;h=c[f+4>>2]|0;j=d;c[j>>2]=c[f>>2];c[j+4>>2]=h;h=8784;j=c[h+4>>2]|0;f=e;c[f>>2]=c[h>>2];c[f+4>>2]=j;j=a+56|0;f=a+72|0;c[j+0>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;g[f>>2]=1;c[a+76>>2]=0;i=b;return}function nk(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;b=i;d=a+28|0;e=c[a>>2]|0;f=c[e+4>>2]|0;if((c[d>>2]|0)==(f|0)){i=b;return}h=+g[e+32>>2]*.75;j=h*+g[e+320>>2]*h;k=a+32|0;g[k>>2]=0;l=a+40|0;m=a+44|0;n=a+48|0;o=a+52|0;p=a+4|0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;q=c[p>>2]|0;p=c[a+8>>2]|0;r=(q|0)<(p|0);if(r){s=c[e+96>>2]|0;t=c[e+104>>2]|0;h=0;u=0;v=0;w=0;x=0;y=q;do{h=j+h;g[k>>2]=h;z=j*+g[s+(y<<3)+4>>2];u=j*+g[s+(y<<3)>>2]+u;g[l>>2]=u;v=z+v;g[m>>2]=v;z=j*+g[t+(y<<
3)+4>>2];w=j*+g[t+(y<<3)>>2]+w;g[n>>2]=w;x=z+x;g[o>>2]=x;y=y+1|0}while((y|0)<(p|0));if(h>0){z=1/h;A=z*u;g[l>>2]=A;B=z*v;g[m>>2]=B;z=1/h;h=z*w;g[n>>2]=h;C=z*x;g[o>>2]=C;D=A;E=B;F=h;G=C}else{D=u;E=v;F=w;G=x}o=a+36|0;g[o>>2]=0;n=a+56|0;g[n>>2]=0;if(r){r=c[e+96>>2]|0;m=c[e+104>>2]|0;x=0;w=0;e=q;do{v=+g[r+(e<<3)>>2]-D;u=+g[r+(e<<3)+4>>2]-E;C=+g[m+(e<<3)>>2]-F;h=+g[m+(e<<3)+4>>2]-G;x=j*(v*v+u*u)+x;g[o>>2]=x;w=w+j*(v*h-u*C);g[n>>2]=w;e=e+1|0}while((e|0)<(p|0));if(x>0)g[n>>2]=1/x*w}}else{g[a+36>>2]=0;g[a+
56>>2]=0}c[d>>2]=f;i=b;return}function ok(a,b){a=a|0;b=b|0;var d=0;d=i;nl(c[a>>2]|0,c[a+4>>2]|0,c[a+8>>2]|0,b);i=d;return}function pk(a,b){a=a|0;b=b|0;var d=0;d=i;ol(c[a>>2]|0,c[a+4>>2]|0,c[a+8>>2]|0,b);i=d;return}function qk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;e=c[a>>2]|0;if((c[(c[e+400>>2]|0)+102876>>2]&2|0)!=0){i=d;return}f=c[a+4>>2]|0;g=a+8|0;if((f|0)<(c[g>>2]|0)){h=e;j=f}else{i=d;return}while(1){Bk(h,j,b);f=j+1|0;if((f|0)>=(c[g>>2]|0))break;h=c[a>>2]|0;j=f}i=d;return}function rk(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;f=i;h=b+52|0;c[b+56>>2]=h;c[h>>2]=h;c[b+60>>2]=256;h=b+64|0;c[b+68>>2]=h;c[h>>2]=h;h=b+72|0;c[b+76>>2]=h;c[h>>2]=h;h=b+80|0;c[b+136>>2]=0;c[b+140>>2]=0;c[b+148>>2]=0;c[b+152>>2]=0;j=b+160|0;k=b+196|0;c[h+0>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;c[h+24>>2]=0;c[h+28>>2]=0;h=j+0|0;j=h+36|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));c[k>>2]=e;c[b+200>>2]=0;c[b+204>>2]=0;c[b+208>>2]=0;c[b+212>>2]=e;c[b+216>>
2]=0;c[b+220>>2]=0;c[b+224>>2]=0;c[b+228>>2]=e;c[b+232>>2]=0;c[b+236>>2]=0;c[b+240>>2]=0;c[b+244>>2]=e;c[b+248>>2]=0;c[b+252>>2]=0;c[b+256>>2]=0;c[b+260>>2]=e;c[b+264>>2]=0;c[b+268>>2]=0;c[b+272>>2]=0;c[b+276>>2]=e;k=b+280|0;l=b+316|0;a[l>>0]=0;m=b+320|0;c[k+0>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;g[m>>2]=1;n=b+324|0;g[n>>2]=1;g[b+328>>2]=1;o=b+332|0;c[o>>2]=0;g[b+336>>2]=.05000000074505806;g[b+340>>2]=1;g[b+344>>2]=.25;g[b+348>>2]=.25;g[b+352>>2]=.25;g[b+356>>2]=.20000000298023224;g[b+360>>
2]=.20000000298023224;g[b+364>>2]=1;g[b+368>>2]=.5;g[b+372>>2]=.5;g[b+376>>2]=.20000000298023224;g[b+380>>2]=.20000000298023224;c[b+384>>2]=8;g[b+388>>2]=.5;p=b+392|0;a[p>>0]=1;g[b+396>>2]=.01666666753590107;a[b>>0]=0;c[b+4>>2]=0;c[b+8>>2]=0;a[b+12>>0]=0;c[b+16>>2]=0;a[b+20>>0]=0;a[b+21>>0]=0;c[b+24>>2]=0;a[l>>0]=a[d>>0]|0;q=+g[d+4>>2];g[m>>2]=q;g[b+28>>2]=1/q;g[n>>2]=+g[d+8>>2];q=+g[d+12>>2]*2;g[b+32>>2]=q;g[b+40>>2]=q*q;g[b+36>>2]=1/q;c[o>>2]=c[d+16>>2];c[b+44>>2]=0;o=b+48|0;c[o>>2]=0;n=b+112|0;
c[b+144>>2]=0;c[b+308>>2]=0;c[b+312>>2]=0;c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;c[n+16>>2]=0;c[n+20>>2]=0;h=l+0|0;l=d+0|0;j=h+84|0;do{c[h>>2]=c[l>>2];h=h+4|0;l=l+4|0}while((h|0)<(j|0));l=b+400|0;c[l>>2]=e;c[b+156>>2]=0;e=b+296|0;c[e>>2]=0;c[e+4>>2]=0;a[b+304>>0]=0;e=a[p>>0]|0;if(e<<24>>24==0){a[p>>0]=e;i=f;return}h=c[k>>2]|0;if((h|0)==0){vk(b,256);b=Em(c[l>>2]|0,c[o>>2]<<2)|0;xn(b|0,0,c[o>>2]<<2|0)|0;r=b}else r=h;c[k>>2]=r;a[p>>0]=e;i=f;return}function sk(a){a=a|0;var b=0,d=0,e=0,f=0,g=
0;b=i;d=a+312|0;while(1){e=c[d>>2]|0;if((e|0)==0)break;tk(a,e)}if((c[a+84>>2]|0)==0?(d=a+80|0,e=c[d>>2]|0,(e|0)!=0):0){Fm(c[a+400>>2]|0,e,c[a+48>>2]<<2);c[d>>2]=0}if((c[a+92>>2]|0)==0?(d=a+88|0,e=c[d>>2]|0,(e|0)!=0):0){Fm(c[a+400>>2]|0,e,c[a+48>>2]<<2);c[d>>2]=0}if((c[a+164>>2]|0)==0?(d=a+160|0,e=c[d>>2]|0,(e|0)!=0):0){Fm(c[a+400>>2]|0,e,c[a+48>>2]<<2);c[d>>2]=0}if((c[a+172>>2]|0)==0?(d=a+168|0,e=c[d>>2]|0,(e|0)!=0):0){Fm(c[a+400>>2]|0,e,c[a+48>>2]<<2);c[d>>2]=0}if((c[a+180>>2]|0)==0?(d=a+176|0,e=
c[d>>2]|0,(e|0)!=0):0){Fm(c[a+400>>2]|0,e,c[a+48>>2]<<2);c[d>>2]=0}if((c[a+100>>2]|0)==0?(d=a+96|0,e=c[d>>2]|0,(e|0)!=0):0){Fm(c[a+400>>2]|0,e,c[a+48>>2]<<3);c[d>>2]=0}if((c[a+108>>2]|0)==0?(d=a+104|0,e=c[d>>2]|0,(e|0)!=0):0){Fm(c[a+400>>2]|0,e,c[a+48>>2]<<3);c[d>>2]=0}if((c[a+140>>2]|0)==0?(d=a+136|0,e=c[d>>2]|0,(e|0)!=0):0){Fm(c[a+400>>2]|0,e,c[a+48>>2]<<2);c[d>>2]=0}if((c[a+152>>2]|0)==0?(d=a+148|0,e=c[d>>2]|0,(e|0)!=0):0){Fm(c[a+400>>2]|0,e,c[a+48>>2]<<2);c[d>>2]=0}if((c[a+284>>2]|0)==0?(d=a+
280|0,e=c[d>>2]|0,(e|0)!=0):0){Fm(c[a+400>>2]|0,e,c[a+48>>2]<<2);c[d>>2]=0}if((c[a+292>>2]|0)==0?(d=a+288|0,e=c[d>>2]|0,(e|0)!=0):0){Fm(c[a+400>>2]|0,e,c[a+48>>2]<<2);c[d>>2]=0}d=a+112|0;e=a+48|0;f=c[d>>2]|0;if((f|0)!=0){Fm(c[a+400>>2]|0,f,c[e>>2]<<3);c[d>>2]=0}d=a+116|0;f=c[d>>2]|0;if((f|0)!=0){Fm(c[a+400>>2]|0,f,c[e>>2]<<2);c[d>>2]=0}d=a+120|0;f=c[d>>2]|0;if((f|0)!=0){Fm(c[a+400>>2]|0,f,c[e>>2]<<2);c[d>>2]=0}d=a+124|0;f=c[d>>2]|0;if((f|0)!=0){Fm(c[a+400>>2]|0,f,c[e>>2]<<2);c[d>>2]=0}d=a+128|0;f=
c[d>>2]|0;if((f|0)!=0){Fm(c[a+400>>2]|0,f,c[e>>2]<<3);c[d>>2]=0}d=a+132|0;f=c[d>>2]|0;if((f|0)!=0){Fm(c[a+400>>2]|0,f,c[e>>2]<<2);c[d>>2]=0}d=a+144|0;f=c[d>>2]|0;if((f|0)!=0){Fm(c[a+400>>2]|0,f,c[e>>2]<<2);c[d>>2]=0}d=a+264|0;e=c[d>>2]|0;if((e|0)!=0){f=a+272|0;Fm(c[a+276>>2]|0,e,(c[f>>2]|0)*60|0);c[d>>2]=0;c[f>>2]=0;c[a+268>>2]=0}f=a+248|0;d=c[f>>2]|0;if((d|0)!=0){e=a+256|0;Fm(c[a+260>>2]|0,d,(c[e>>2]|0)*20|0);c[f>>2]=0;c[e>>2]=0;c[a+252>>2]=0}e=a+232|0;f=c[e>>2]|0;if((f|0)!=0){d=a+240|0;Fm(c[a+244>>
2]|0,f,(c[d>>2]|0)*28|0);c[e>>2]=0;c[d>>2]=0;c[a+236>>2]=0}d=a+216|0;e=c[d>>2]|0;if((e|0)!=0){f=a+224|0;Fm(c[a+228>>2]|0,e,(c[f>>2]|0)*24|0);c[d>>2]=0;c[f>>2]=0;c[a+220>>2]=0}f=a+200|0;d=c[f>>2]|0;if((d|0)!=0){e=a+208|0;Fm(c[a+212>>2]|0,d,c[e>>2]<<3);c[f>>2]=0;c[e>>2]=0;c[a+204>>2]=0}e=a+184|0;f=c[e>>2]|0;if((f|0)==0){g=a+52|0;Tl(g);i=b;return}d=a+192|0;Fm(c[a+196>>2]|0,f,c[d>>2]<<2);c[e>>2]=0;c[d>>2]=0;c[a+188>>2]=0;g=a+52|0;Tl(g);i=b;return}function tk(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;e=i;f=b+400|0;g=c[(c[f>>2]|0)+102992>>2]|0;if((g|0)!=0)gb[c[(c[g>>2]|0)+16>>2]&63](g,d);g=d+12|0;h=c[g>>2]|0;j=h<<4;k=j&16;if((((j|-17)^16)&h|0)!=0)a[b+20>>0]=1;h=b+16|0;j=c[h>>2]|0;if((k&~j|0)!=0)c[h>>2]=j|k;c[g>>2]=k;k=c[d+4>>2]|0;g=c[d+8>>2]|0;if((k|0)<(g|0)){j=b+144|0;h=k;do{c[(c[j>>2]|0)+(h<<2)>>2]=0;h=h+1|0}while((h|0)<(g|0))}g=d+20|0;h=c[g>>2]|0;j=d+24|0;if((h|0)!=0)c[h+24>>2]=c[j>>2];h=c[j>>2]|0;if((h|0)!=0)c[h+20>>2]=c[g>>2];g=b+312|0;if((c[g>>2]|0)!=(d|0)){l=b+308|0;m=
c[l>>2]|0;n=m+-1|0;c[l>>2]=n;o=c[f>>2]|0;Fm(o,d,80);i=e;return}c[g>>2]=c[j>>2];l=b+308|0;m=c[l>>2]|0;n=m+-1|0;c[l>>2]=n;o=c[f>>2]|0;Fm(o,d,80);i=e;return}function uk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=a+136|0;e=c[d>>2]|0;if((e|0)!=0){f=e;c[d>>2]=f;i=b;return f|0}e=a+48|0;g=c[e>>2]|0;if((g|0)==0){vk(a,256);h=c[e>>2]|0}else h=g;g=Em(c[a+400>>2]|0,h<<2)|0;xn(g|0,0,c[e>>2]<<2|0)|0;f=g;c[d>>2]=f;i=b;return f|0}function vk(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;d=i;e=c[a+332>>2]|0;if((e|0)==0)f=b;else f=(e|0)<(b|0)?e:b;b=a+92|0;e=c[b>>2]|0;if((e|0)==0)g=f;else g=(f|0)>(e|0)?e:f;f=a+100|0;e=c[f>>2]|0;if((e|0)==0)h=g;else h=(g|0)>(e|0)?e:g;g=a+108|0;e=c[g>>2]|0;if((e|0)==0)j=h;else j=(h|0)>(e|0)?e:h;h=a+140|0;e=c[h>>2]|0;if((e|0)==0)k=j;else k=(j|0)>(e|0)?e:j;j=a+152|0;e=c[j>>2]|0;if((e|0)==0)l=k;else l=(k|0)>(e|0)?e:k;k=a+48|0;e=c[k>>2]|0;if((e|0)>=(l|0)){i=d;return}m=a+80|0;n=c[m>>2]|0;o=(n|
0)==0;if((c[a+84>>2]|0)==0&(o^1)){p=a+400|0;q=Em(c[p>>2]|0,l<<2)|0;if(o)r=q;else{o=e<<2;An(q|0,n|0,o|0)|0;Fm(c[p>>2]|0,n,o);r=q}}else r=n;c[m>>2]=r;r=c[k>>2]|0;c[a+60>>2]=l-r;m=a+88|0;n=c[m>>2]|0;if((c[b>>2]|0)==0){b=a+400|0;q=Em(c[b>>2]|0,l<<2)|0;if((n|0)==0)s=q;else{o=r<<2;An(q|0,n|0,o|0)|0;Fm(c[b>>2]|0,n,o);s=q}}else s=n;c[m>>2]=s;s=(c[a+156>>2]|0)>0;m=c[k>>2]|0;n=a+160|0;q=c[n>>2]|0;o=(q|0)==0;if((c[a+164>>2]|0)==0&(o&s^1)){b=a+400|0;r=Em(c[b>>2]|0,l<<2)|0;if(o)t=r;else{o=m<<2;An(r|0,q|0,o|0)|
0;Fm(c[b>>2]|0,q,o);t=r}}else t=q;c[n>>2]=t;t=c[k>>2]|0;n=a+168|0;q=c[n>>2]|0;r=(q|0)==0;if((c[a+172>>2]|0)==0&(r&s^1)){o=a+400|0;b=Em(c[o>>2]|0,l<<2)|0;if(r)u=b;else{r=t<<2;An(b|0,q|0,r|0)|0;Fm(c[o>>2]|0,q,r);u=b}}else u=q;c[n>>2]=u;u=c[k>>2]|0;n=a+176|0;q=c[n>>2]|0;b=(q|0)==0;if((c[a+180>>2]|0)==0&(b&s^1)){s=a+400|0;r=Em(c[s>>2]|0,l<<2)|0;if(b)v=r;else{b=u<<2;An(r|0,q|0,b|0)|0;Fm(c[s>>2]|0,q,b);v=r}}else v=q;c[n>>2]=v;v=c[k>>2]|0;n=a+96|0;q=c[n>>2]|0;if((c[f>>2]|0)==0){f=a+400|0;r=Em(c[f>>2]|0,
l<<3)|0;if((q|0)==0)w=r;else{b=v<<3;An(r|0,q|0,b|0)|0;Fm(c[f>>2]|0,q,b);w=r}}else w=q;c[n>>2]=w;w=c[k>>2]|0;n=a+104|0;q=c[n>>2]|0;if((c[g>>2]|0)==0){g=a+400|0;r=l<<3;b=Em(c[g>>2]|0,r)|0;if((q|0)==0){x=b;y=r;z=g}else{f=w<<3;An(b|0,q|0,f|0)|0;Fm(c[g>>2]|0,q,f);x=b;y=r;z=g}}else{x=q;y=l<<3;z=a+400|0}c[n>>2]=x;x=a+112|0;n=c[x>>2]|0;q=c[k>>2]|0;g=Em(c[z>>2]|0,y)|0;if((n|0)!=0){r=q<<3;An(g|0,n|0,r|0)|0;Fm(c[z>>2]|0,n,r)}c[x>>2]=g;g=a+116|0;x=c[g>>2]|0;r=c[k>>2]|0;n=l<<2;q=Em(c[z>>2]|0,n)|0;if((x|0)!=0){b=
r<<2;An(q|0,x|0,b|0)|0;Fm(c[z>>2]|0,x,b)}c[g>>2]=q;q=a+120|0;g=c[q>>2]|0;if((g|0)==0)A=0;else{b=c[k>>2]|0;x=Em(c[z>>2]|0,n)|0;r=b<<2;An(x|0,g|0,r|0)|0;Fm(c[z>>2]|0,g,r);A=x}c[q>>2]=A;A=a+124|0;q=c[A>>2]|0;x=c[k>>2]|0;r=Em(c[z>>2]|0,n)|0;if((q|0)!=0){g=x<<2;An(r|0,q|0,g|0)|0;Fm(c[z>>2]|0,q,g)}c[A>>2]=r;r=a+128|0;A=c[r>>2]|0;if((A|0)==0)B=0;else{g=c[k>>2]|0;q=Em(c[z>>2]|0,y)|0;y=g<<3;An(q|0,A|0,y|0)|0;Fm(c[z>>2]|0,A,y);B=q}c[r>>2]=B;B=a+132|0;r=c[B>>2]|0;if((r|0)==0)C=0;else{q=c[k>>2]|0;y=Em(c[z>>2]|
0,n)|0;A=q<<2;An(y|0,r|0,A|0)|0;Fm(c[z>>2]|0,r,A);C=y}c[B>>2]=C;C=c[k>>2]|0;B=a+136|0;y=c[B>>2]|0;A=(y|0)==0;do if((c[h>>2]|0)==0&(A^1)){r=Em(c[z>>2]|0,n)|0;if(A){D=r;break}q=C<<2;An(r|0,y|0,q|0)|0;Fm(c[z>>2]|0,y,q);D=r}else D=y;while(0);c[B>>2]=D;D=a+144|0;B=c[D>>2]|0;y=c[k>>2]|0;C=Em(c[z>>2]|0,n)|0;if((B|0)!=0){A=y<<2;An(C|0,B|0,A|0)|0;Fm(c[z>>2]|0,B,A)}c[D>>2]=C;C=c[k>>2]|0;D=a+148|0;A=c[D>>2]|0;B=(A|0)==0;do if((c[j>>2]|0)==0&(B^1)){y=Em(c[z>>2]|0,n)|0;if(B){E=y;break}h=C<<2;An(y|0,A|0,h|0)|0;
Fm(c[z>>2]|0,A,h);E=y}else E=A;while(0);c[D>>2]=E;E=c[k>>2]|0;D=a+280|0;A=c[D>>2]|0;C=(A|0)==0;do if((c[a+284>>2]|0)==0&(C^1)){B=Em(c[z>>2]|0,n)|0;if(C){F=B;break}j=E<<2;An(B|0,A|0,j|0)|0;Fm(c[z>>2]|0,A,j);F=B}else F=A;while(0);c[D>>2]=F;F=c[k>>2]|0;D=a+288|0;A=c[D>>2]|0;E=(A|0)==0;do if((c[a+292>>2]|0)==0&(E^1)){C=Em(c[z>>2]|0,n)|0;if(E){G=C;break}B=F<<2;An(C|0,A|0,B|0)|0;Fm(c[z>>2]|0,A,B);G=C}else G=A;while(0);c[D>>2]=G;c[k>>2]=l;i=d;return}function wk(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;e=i;f=b+400|0;if((c[(c[f>>2]|0)+102876>>2]&2|0)!=0){h=0;i=e;return h|0}j=b+44|0;k=c[j>>2]|0;l=b+48|0;m=c[l>>2]|0;if((k|0)<(m|0)){n=k;o=m}else{vk(b,(k|0)==0?256:k<<1);n=c[j>>2]|0;o=c[l>>2]|0}do if((n|0)>=(o|0))if((a[b+392>>0]|0)==0){h=-1;i=e;return h|0}else{k=c[b+288>>2]|0;m=c[k+(n+-1<<2)>>2]|0;p=+(c[(c[b+280>>2]|0)+(m<<2)>>2]|0)>0?m:c[k>>2]|0;k=b+88|0;Ak(b,p,c[(c[k>>2]|0)+(p<<2)>>2]|2);xk(b);q=k;r=c[j>>2]|0;break}else{q=b+88|0;r=n}while(0);
n=r+1|0;c[j>>2]=n;c[(c[q>>2]|0)+(r<<2)>>2]=0;q=c[b+160>>2]|0;if((q|0)!=0)c[q+(r<<2)>>2]=0;q=c[b+168>>2]|0;if((q|0)!=0)c[q+(r<<2)>>2]=0;q=c[b+176>>2]|0;if((q|0)!=0)c[q+(r<<2)>>2]=0;q=d+4|0;j=c[q+4>>2]|0;o=(c[b+96>>2]|0)+(r<<3)|0;c[o>>2]=c[q>>2];c[o+4>>2]=j;j=d+12|0;o=c[j+4>>2]|0;q=(c[b+104>>2]|0)+(r<<3)|0;c[q>>2]=c[j>>2];c[q+4>>2]=o;g[(c[b+116>>2]|0)+(r<<2)>>2]=0;o=8784;q=c[o+4>>2]|0;j=(c[b+112>>2]|0)+(r<<3)|0;c[j>>2]=c[o>>2];c[j+4>>2]=q;q=c[b+120>>2]|0;if((q|0)!=0)g[q+(r<<2)>>2]=0;q=c[b+132>>2]|0;
if((q|0)!=0)g[q+(r<<2)>>2]=0;q=b+136|0;j=c[q>>2]|0;o=d+20|0;do if((j|0)==0){if((((a[o>>0]|0)==0?(a[d+21>>0]|0)==0:0)?(a[d+22>>0]|0)==0:0)?(a[d+23>>0]|0)==0:0)break;k=c[l>>2]|0;if((k|0)==0){vk(b,256);s=c[l>>2]|0}else s=k;k=Em(c[f>>2]|0,s<<2)|0;xn(k|0,0,c[l>>2]<<2|0)|0;t=k;u=26}else{t=j;u=26}while(0);if((u|0)==26){c[q>>2]=t;q=a[d+21>>0]|0;j=a[d+22>>0]|0;s=a[d+23>>0]|0;a[t+(r<<2)>>0]=a[o>>0]|0;a[t+(r<<2)+1>>0]=q;a[t+(r<<2)+2>>0]=j;a[t+(r<<2)+3>>0]=s}s=b+148|0;t=c[s>>2]|0;j=d+28|0;if((t|0)==0){if((c[j>>
2]|0)!=0){q=c[l>>2]|0;if((q|0)==0){vk(b,256);v=c[l>>2]|0}else v=q;q=Em(c[f>>2]|0,v<<2)|0;xn(q|0,0,c[l>>2]<<2|0)|0;w=q;u=32}}else{w=t;u=32}if((u|0)==32){c[s>>2]=w;c[w+(r<<2)>>2]=c[j>>2]}j=c[b+80>>2]|0;if((j|0)!=0)c[j+(r<<2)>>2]=0;j=b+200|0;w=b+204|0;s=c[w>>2]|0;u=b+208|0;t=c[u>>2]|0;if((s|0)>=(t|0)?(q=(t|0)==0?256:t<<1,(t|0)<(q|0)):0){t=b+212|0;l=Em(c[t>>2]|0,q<<3)|0;v=c[j>>2]|0;if((v|0)!=0){An(l|0,v|0,c[w>>2]<<3|0)|0;Fm(c[t>>2]|0,c[j>>2]|0,c[u>>2]<<3)}c[u>>2]=q;c[j>>2]=l;x=c[w>>2]|0}else x=s;c[w>>
2]=x+1;w=c[j>>2]|0;y=+g[d+24>>2];j=y>0;if((c[b+280>>2]|0)!=0|j){if(j)z=y;else{j=c[b+300>>2]|0;z=+g[b+396>>2]*+(((j|0)<0?0-j|0:0)-j|0)}yk(b,r,z);c[(c[b+288>>2]|0)+(r<<2)>>2]=r}c[w+(x<<3)>>2]=r;x=c[d+32>>2]|0;c[(c[b+144>>2]|0)+(r<<2)>>2]=x;do if((x|0)!=0){w=x+4|0;j=c[w>>2]|0;s=x+8|0;l=c[s>>2]|0;if((j|0)<(l|0)){zk(b,j,l,r);c[s>>2]=n;break}else{c[w>>2]=r;c[s>>2]=n;break}}while(0);Ak(b,r,c[d>>2]|0);h=r;i=e;return h|0}function xk(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,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,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0;d=i;e=b+400|0;f=b+44|0;h=Ym((c[e>>2]|0)+76|0,c[f>>2]<<2)|0;if((c[f>>2]|0)>0){j=b+88|0;k=b+80|0;l=b+160|0;m=b+168|0;n=b+176|0;o=b+96|0;p=b+104|0;q=b+144|0;r=b+21|0;s=b+120|0;t=b+132|0;u=b+136|0;v=b+148|0;w=b+280|0;x=b+112|0;y=b+64|0;z=0;A=0;B=0;while(1){C=
c[j>>2]|0;D=c[C+(A<<2)>>2]|0;if((D&2|0)==0){c[h+(A<<2)>>2]=B;if((A|0)!=(B|0)){E=c[k>>2]|0;if((E|0)==0)F=C;else{C=c[E+(A<<2)>>2]|0;if((C|0)!=0)c[C+8>>2]=B;c[E+(B<<2)>>2]=C;F=c[j>>2]|0}c[F+(B<<2)>>2]=c[F+(A<<2)>>2];C=c[l>>2]|0;if((C|0)!=0)c[C+(B<<2)>>2]=c[C+(A<<2)>>2];C=c[m>>2]|0;if((C|0)!=0)c[C+(B<<2)>>2]=c[C+(A<<2)>>2];C=c[n>>2]|0;if((C|0)!=0)c[C+(B<<2)>>2]=c[C+(A<<2)>>2];C=c[o>>2]|0;E=C+(A<<3)|0;G=c[E+4>>2]|0;H=C+(B<<3)|0;c[H>>2]=c[E>>2];c[H+4>>2]=G;G=c[p>>2]|0;H=G+(A<<3)|0;E=c[H+4>>2]|0;C=G+(B<<
3)|0;c[C>>2]=c[H>>2];c[C+4>>2]=E;E=c[q>>2]|0;c[E+(B<<2)>>2]=c[E+(A<<2)>>2];if((a[r>>0]|0)!=0){E=c[x>>2]|0;C=E+(A<<3)|0;H=c[C+4>>2]|0;G=E+(B<<3)|0;c[G>>2]=c[C>>2];c[G+4>>2]=H}H=c[s>>2]|0;if((H|0)!=0)g[H+(B<<2)>>2]=+g[H+(A<<2)>>2];H=c[t>>2]|0;if((H|0)!=0)g[H+(B<<2)>>2]=+g[H+(A<<2)>>2];H=c[u>>2]|0;if((H|0)!=0){G=a[H+(A<<2)+1>>0]|0;C=a[H+(A<<2)+2>>0]|0;E=a[H+(A<<2)+3>>0]|0;a[H+(B<<2)>>0]=a[H+(A<<2)>>0]|0;a[H+(B<<2)+1>>0]=G;a[H+(B<<2)+2>>0]=C;a[H+(B<<2)+3>>0]=E}E=c[v>>2]|0;if((E|0)!=0)c[E+(B<<2)>>2]=c[E+
(A<<2)>>2];E=c[w>>2]|0;if((E|0)!=0)c[E+(B<<2)>>2]=c[E+(A<<2)>>2]}I=D|z;J=B+1|0}else{E=c[(c[e>>2]|0)+102992>>2]|0;if(!((D&512|0)==0|(E|0)==0))ib[c[(c[E>>2]|0)+20>>2]&7](E,b,A);E=c[k>>2]|0;if((E|0)!=0?(D=E+(A<<2)|0,E=c[D>>2]|0,(E|0)!=0):0){c[E+8>>2]=-1;c[D>>2]=0;Bm(y,E)}c[h+(A<<2)>>2]=-1;I=z;J=B}A=A+1|0;if((A|0)>=(c[f>>2]|0)){K=I;L=J;break}else{z=I;B=J}}}else{K=0;L=0}J=b+204|0;B=c[J>>2]|0;I=b+200|0;z=c[I>>2]|0;if((B|0)>0){A=0;do{y=z+(A<<3)|0;c[y>>2]=c[h+(c[y>>2]<<2)>>2];A=A+1|0;y=c[J>>2]|0}while((A|
0)<(y|0));M=y}else M=B;B=z+(M<<3)|0;a:do if((M|0)==0){N=z;O=40}else{A=z;while(1){if((c[A>>2]|0)<0){N=A;O=40;break a}A=A+8|0;if((A|0)==(B|0)){P=B;Q=z;break}}}while(0);if((O|0)==40)if((N|0)==(B|0)){P=B;Q=z}else{z=N;M=N;b:while(1){N=M;do{N=N+8|0;if((N|0)==(B|0))break b}while((c[N>>2]|0)<0);A=N;y=c[A+4>>2]|0;k=z;c[k>>2]=c[A>>2];c[k+4>>2]=y;z=z+8|0;M=N}P=z;Q=c[I>>2]|0}c[J>>2]=P-Q>>3;Q=b+220|0;P=c[Q>>2]|0;J=b+216|0;I=c[J>>2]|0;if((P|0)>0){z=0;do{M=I+(z*24|0)|0;B=I+(z*24|0)+4|0;y=c[h+(c[B>>2]<<2)>>2]|0;
c[M>>2]=c[h+(c[M>>2]<<2)>>2];c[B>>2]=y;z=z+1|0;y=c[Q>>2]|0}while((z|0)<(y|0));R=y}else R=P;P=I+(R*24|0)|0;c:do if((R|0)==0){S=I;O=52}else{z=I;while(1){if((c[z>>2]|0)<0){S=z;O=52;break c}if((c[z+4>>2]|0)<0){S=z;O=52;break c}z=z+24|0;if((z|0)==(P|0)){T=P;U=I;break}}}while(0);if((O|0)==52)if((S|0)==(P|0)){T=P;U=I}else{I=S+24|0;d:do if((I|0)==(P|0))V=S;else{R=S;z=I;N=S;while(1){y=z;B=N;while(1){if((c[y>>2]|0)>=0?(c[B+28>>2]|0)>=0:0)break;M=y+24|0;if((M|0)==(P|0)){V=R;break d}else{k=y;y=M;B=k}}c[R+0>>
2]=c[y+0>>2];c[R+4>>2]=c[y+4>>2];c[R+8>>2]=c[y+8>>2];c[R+12>>2]=c[y+12>>2];c[R+16>>2]=c[y+16>>2];c[R+20>>2]=c[y+20>>2];B=R+24|0;z=y+24|0;if((z|0)==(P|0)){V=B;break}else{R=B;N=y}}}while(0);T=V;U=c[J>>2]|0}c[Q>>2]=(T-U|0)/24|0;U=b+236|0;T=c[U>>2]|0;Q=b+232|0;J=c[Q>>2]|0;if((T|0)>0){V=0;do{P=J+(V*28|0)|0;c[P>>2]=c[h+(c[P>>2]<<2)>>2];V=V+1|0;P=c[U>>2]|0}while((V|0)<(P|0));W=P}else W=T;T=J+(W*28|0)|0;e:do if((W|0)==0){X=J;O=65}else{V=J;while(1){if((c[V>>2]|0)<0){X=V;O=65;break e}V=V+28|0;if((V|0)==(T|
0)){Y=T;Z=J;break}}}while(0);if((O|0)==65)if((X|0)==(T|0)){Y=T;Z=J}else{J=X;W=X;f:while(1){X=W;do{X=X+28|0;if((X|0)==(T|0))break f}while((c[X>>2]|0)<0);c[J+0>>2]=c[X+0>>2];c[J+4>>2]=c[X+4>>2];c[J+8>>2]=c[X+8>>2];c[J+12>>2]=c[X+12>>2];c[J+16>>2]=c[X+16>>2];c[J+20>>2]=c[X+20>>2];c[J+24>>2]=c[X+24>>2];J=J+28|0;W=X}Y=J;Z=c[Q>>2]|0}c[U>>2]=(Y-Z|0)/28|0;Z=b+252|0;Y=c[Z>>2]|0;U=b+248|0;Q=c[U>>2]|0;if((Y|0)>0){J=0;do{W=Q+(J*20|0)|0;c[W>>2]=c[h+(c[W>>2]<<2)>>2];W=Q+(J*20|0)+4|0;c[W>>2]=c[h+(c[W>>2]<<2)>>2];
J=J+1|0;W=c[Z>>2]|0}while((J|0)<(W|0));_=W}else _=Y;Y=Q+(_*20|0)|0;g:do if((_|0)==0){$=Q;O=77}else{J=Q;while(1){if((c[J>>2]|0)<0){$=J;O=77;break g}if((c[J+4>>2]|0)<0){$=J;O=77;break g}J=J+20|0;if((J|0)==(Y|0)){aa=Y;ba=Q;break}}}while(0);if((O|0)==77)if(($|0)==(Y|0)){aa=Y;ba=Q}else{Q=$+20|0;h:do if((Q|0)==(Y|0))ca=$;else{_=$;J=Q;X=$;while(1){W=J;T=X;while(1){if((c[W>>2]|0)>=0?(c[T+24>>2]|0)>=0:0)break;V=W+20|0;if((V|0)==(Y|0)){ca=_;break h}else{P=W;W=V;T=P}}c[_+0>>2]=c[W+0>>2];c[_+4>>2]=c[W+4>>2];
c[_+8>>2]=c[W+8>>2];c[_+12>>2]=c[W+12>>2];c[_+16>>2]=c[W+16>>2];T=_+20|0;J=W+20|0;if((J|0)==(Y|0)){ca=T;break}else{_=T;X=W}}}while(0);aa=ca;ba=c[U>>2]|0}c[Z>>2]=(aa-ba|0)/20|0;ba=b+268|0;aa=c[ba>>2]|0;Z=b+264|0;U=c[Z>>2]|0;if((aa|0)>0){ca=0;do{Y=U+(ca*60|0)|0;c[Y>>2]=c[h+(c[Y>>2]<<2)>>2];Y=U+(ca*60|0)+4|0;c[Y>>2]=c[h+(c[Y>>2]<<2)>>2];Y=U+(ca*60|0)+8|0;c[Y>>2]=c[h+(c[Y>>2]<<2)>>2];ca=ca+1|0;Y=c[ba>>2]|0}while((ca|0)<(Y|0));da=Y}else da=aa;aa=U+(da*60|0)|0;i:do if((da|0)==0){ea=U;O=92}else{ca=U;while(1){if((c[ca>>
2]|0)<0){ea=ca;O=92;break i}if((c[ca+4>>2]|0)<0){ea=ca;O=92;break i}if((c[ca+8>>2]|0)<0){ea=ca;O=92;break i}ca=ca+60|0;if((ca|0)==(aa|0)){fa=aa;ga=U;break}}}while(0);if((O|0)==92)if((ea|0)==(aa|0)){fa=aa;ga=U}else{U=ea+60|0;j:do if((U|0)==(aa|0))ha=ea;else{O=ea;da=U;ca=ea;while(1){Y=da;$=ca;while(1){if(((c[Y>>2]|0)>=0?(c[$+64>>2]|0)>=0:0)?(c[$+68>>2]|0)>=0:0)break;Q=Y+60|0;if((Q|0)==(aa|0)){ha=O;break j}else{X=Y;Y=Q;$=X}}$=O+0|0;W=Y+0|0;X=$+60|0;do{c[$>>2]=c[W>>2];$=$+4|0;W=W+4|0}while(($|0)<(X|0));
W=O+60|0;da=Y+60|0;if((da|0)==(aa|0)){ha=W;break}else{O=W;ca=Y}}}while(0);fa=ha;ga=c[Z>>2]|0}c[ba>>2]=(fa-ga|0)/60|0;ga=c[b+288>>2]|0;if((ga|0)!=0?(fa=c[f>>2]|0,(fa|0)>0):0){ba=fa;fa=0;Z=0;while(1){ha=c[h+(c[ga+(fa<<2)>>2]<<2)>>2]|0;if((ha|0)==-1){ia=ba;ja=Z}else{c[ga+(Z<<2)>>2]=ha;ia=c[f>>2]|0;ja=Z+1|0}fa=fa+1|0;if((fa|0)>=(ia|0))break;else{ba=ia;Z=ja}}}ja=b+312|0;Z=c[ja>>2]|0;if((Z|0)!=0){ia=b+16|0;ba=b+132|0;fa=b+48|0;ga=b+20|0;ha=Z;do{Z=ha+4|0;aa=c[Z>>2]|0;ea=ha+8|0;U=c[ea>>2]|0;if((aa|0)<(U|
0)){ca=L;O=aa;aa=0;da=0;while(1){W=c[h+(O<<2)>>2]|0;if((W|0)>-1){$=W+1|0;ka=(ca|0)<(W|0)?ca:W;la=(aa|0)>($|0)?aa:$;ma=da}else{ka=ca;la=aa;ma=1}O=O+1|0;if((O|0)>=(U|0)){na=ka;oa=la;pa=ma;break}else{ca=ka;aa=la;da=ma}}}else{na=L;oa=0;pa=0}if((na|0)<(oa|0)){c[Z>>2]=na;c[ea>>2]=oa;if(pa?(da=ha+12|0,aa=c[da>>2]|0,(aa&1|0)!=0):0){ca=aa|16;aa=c[ia>>2]|0;if((ca&~aa|0)!=0){U=c[ba>>2]|0;if((U|0)==0){O=c[fa>>2]|0;if((O|0)==0){vk(b,256);qa=c[fa>>2]|0}else qa=O;O=Em(c[e>>2]|0,qa<<2)|0;xn(O|0,0,c[fa>>2]<<2|0)|
0;ra=O;sa=c[ia>>2]|0}else{ra=U;sa=aa}c[ba>>2]=ra;c[ia>>2]=sa|ca}c[da>>2]=ca}}else{c[Z>>2]=0;c[ea>>2]=0;ca=ha+12|0;da=c[ca>>2]|0;if((da&4|0)==0){aa=da|8;if(((da&-9^-9)&da|0)!=0)a[ga>>0]=1;U=c[ia>>2]|0;if((aa&~U|0)!=0){if((da&1|0)==0)ta=U;else{da=c[ba>>2]|0;if((da|0)==0){O=c[fa>>2]|0;if((O|0)==0){vk(b,256);ua=c[fa>>2]|0}else ua=O;O=Em(c[e>>2]|0,ua<<2)|0;xn(O|0,0,c[fa>>2]<<2|0)|0;va=O;wa=c[ia>>2]|0}else{va=da;wa=U}c[ba>>2]=va;ta=wa}c[ia>>2]=ta|aa}c[ca>>2]=aa}}ha=c[ha+24>>2]|0}while((ha|0)!=0)}c[f>>2]=
L;_m((c[e>>2]|0)+76|0,h);c[b+8>>2]=K;a[b+12>>0]=0;K=c[ja>>2]|0;if((K|0)==0){i=d;return}else xa=K;do{K=xa;xa=c[xa+24>>2]|0;if((c[K+12>>2]&8|0)!=0)tk(b,K)}while((xa|0)!=0);i=d;return}function yk(b,d,e){b=b|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,t=0,u=0;f=i;h=b+288|0;j=c[h>>2]|0;k=(j|0)==0;l=b+280|0;m=c[l>>2]|0;if((m|0)==0){n=b+48|0;o=c[n>>2]|0;if((o|0)==0){vk(b,256);p=c[n>>2]|0}else p=o;o=Em(c[b+400>>2]|0,p<<2)|0;xn(o|0,0,c[n>>2]<<2|0)|0;q=o;r=c[h>>2]|0}else{q=m;r=j}c[l>>2]=
q;if((r|0)==0){q=b+48|0;j=c[q>>2]|0;if((j|0)==0){vk(b,256);s=c[q>>2]|0}else s=j;j=Em(c[b+400>>2]|0,s<<2)|0;xn(j|0,0,c[q>>2]<<2|0)|0;t=j}else t=r;c[h>>2]=t;if(k?(k=c[b+44>>2]|0,(k|0)>0):0){h=0;do{c[t+(h<<2)>>2]=h;h=h+1|0}while((h|0)!=(k|0))}k=~~(e/+g[b+396>>2]);if((k|0)>0)u=(c[b+300>>2]|0)+k|0;else u=k;k=(c[l>>2]|0)+(d<<2)|0;if((u|0)==(c[k>>2]|0)){i=f;return}c[k>>2]=u;a[b+304>>0]=1;i=f;return}function zk(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,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,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0;h=i;if((d|0)==(e|0)|(e|0)==(f|0)){i=h;return}j=c[b+88>>2]|0;k=j+(d<<2)|0;l=j+(e<<2)|0;m=j+(f<<2)|0;a:do if((d+1|0)!=(e|0)){if((e+1|0)==(f|0)){n=j+(f+-1<<2)|0;o=c[n>>2]|0;p=n-k|0;Bn(j+(f-(p>>2)<<2)|0,k|0,p|0)|0;c[k>>2]=o;break}o=l;p=o-k>>2;n=m;q=n-o>>2;if((p|0)==(q|
0)){o=k;r=l;while(1){s=c[o>>2]|0;c[o>>2]=c[r>>2];c[r>>2]=s;o=o+4|0;if((o|0)==(l|0))break a;else r=r+4|0}}else{t=p;u=q}while(1){r=(t|0)%(u|0)|0;if((r|0)==0)break;else{o=u;u=r;t=o}}if((u|0)!=0){q=p+-1|0;o=p+d|0;r=j+(u+d<<2)|0;do{s=r;r=r+-4|0;v=c[r>>2]|0;w=r;x=s+(q<<2)|0;while(1){c[w>>2]=c[x>>2];s=n-x>>2;if((p|0)<(s|0))y=x+(p<<2)|0;else y=j+(o-s<<2)|0;if((y|0)==(r|0))break;else{s=x;x=y;w=s}}c[x>>2]=v}while((r|0)!=(k|0))}}else{r=c[k>>2]|0;o=m-l|0;Bn(k|0,l|0,o|0)|0;c[j+((o>>2)+d<<2)>>2]=r}while(0);j=c[b+
160>>2]|0;b:do if((j|0)!=0){l=j+(d<<2)|0;k=j+(e<<2)|0;m=j+(f<<2)|0;if((d+1|0)==(e|0)){y=c[l>>2]|0;u=m-k|0;Bn(l|0,k|0,u|0)|0;c[j+((u>>2)+d<<2)>>2]=y;break}if((e+1|0)==(f|0)){y=j+(f+-1<<2)|0;u=c[y>>2]|0;t=y-l|0;Bn(j+(f-(t>>2)<<2)|0,l|0,t|0)|0;c[l>>2]=u;break}u=k;t=u-l>>2;y=m;m=y-u>>2;if((t|0)==(m|0)){u=l;r=k;while(1){o=c[u>>2]|0;c[u>>2]=c[r>>2];c[r>>2]=o;u=u+4|0;if((u|0)==(k|0))break b;else r=r+4|0}}else{z=t;A=m}while(1){r=(z|0)%(A|0)|0;if((r|0)==0)break;else{k=A;A=r;z=k}}if((A|0)!=0){m=t+-1|0;k=t+
d|0;r=j+(A+d<<2)|0;do{u=r;r=r+-4|0;o=c[r>>2]|0;p=r;n=u+(m<<2)|0;while(1){c[p>>2]=c[n>>2];u=y-n>>2;if((t|0)<(u|0))B=n+(t<<2)|0;else B=j+(k-u<<2)|0;if((B|0)==(r|0))break;else{u=n;n=B;p=u}}c[n>>2]=o}while((r|0)!=(l|0))}}while(0);B=c[b+168>>2]|0;c:do if((B|0)!=0){j=B+(d<<2)|0;A=B+(e<<2)|0;z=B+(f<<2)|0;if((d+1|0)==(e|0)){l=c[j>>2]|0;r=z-A|0;Bn(j|0,A|0,r|0)|0;c[B+((r>>2)+d<<2)>>2]=l;break}if((e+1|0)==(f|0)){l=B+(f+-1<<2)|0;r=c[l>>2]|0;k=l-j|0;Bn(B+(f-(k>>2)<<2)|0,j|0,k|0)|0;c[j>>2]=r;break}r=A;k=r-j>>2;
l=z;z=l-r>>2;if((k|0)==(z|0)){r=j;t=A;while(1){y=c[r>>2]|0;c[r>>2]=c[t>>2];c[t>>2]=y;r=r+4|0;if((r|0)==(A|0))break c;else t=t+4|0}}else{C=k;D=z}while(1){t=(C|0)%(D|0)|0;if((t|0)==0)break;else{A=D;D=t;C=A}}if((D|0)!=0){z=k+-1|0;A=k+d|0;t=B+(D+d<<2)|0;do{r=t;t=t+-4|0;y=c[t>>2]|0;m=t;p=r+(z<<2)|0;while(1){c[m>>2]=c[p>>2];r=l-p>>2;if((k|0)<(r|0))E=p+(k<<2)|0;else E=B+(A-r<<2)|0;if((E|0)==(t|0))break;else{r=p;p=E;m=r}}c[p>>2]=y}while((t|0)!=(j|0))}}while(0);E=c[b+176>>2]|0;d:do if((E|0)!=0){B=E+(d<<2)|
0;D=E+(e<<2)|0;C=E+(f<<2)|0;if((d+1|0)==(e|0)){j=c[B>>2]|0;t=C-D|0;Bn(B|0,D|0,t|0)|0;c[E+((t>>2)+d<<2)>>2]=j;break}if((e+1|0)==(f|0)){j=E+(f+-1<<2)|0;t=c[j>>2]|0;A=j-B|0;Bn(E+(f-(A>>2)<<2)|0,B|0,A|0)|0;c[B>>2]=t;break}t=D;A=t-B>>2;j=C;C=j-t>>2;if((A|0)==(C|0)){t=B;k=D;while(1){l=c[t>>2]|0;c[t>>2]=c[k>>2];c[k>>2]=l;t=t+4|0;if((t|0)==(D|0))break d;else k=k+4|0}}else{F=A;G=C}while(1){k=(F|0)%(G|0)|0;if((k|0)==0)break;else{D=G;G=k;F=D}}if((G|0)!=0){C=A+-1|0;D=A+d|0;k=E+(G+d<<2)|0;do{t=k;k=k+-4|0;l=c[k>>
2]|0;z=k;m=t+(C<<2)|0;while(1){c[z>>2]=c[m>>2];t=j-m>>2;if((A|0)<(t|0))H=m+(A<<2)|0;else H=E+(D-t<<2)|0;if((H|0)==(k|0))break;else{t=m;m=H;z=t}}c[m>>2]=l}while((k|0)!=(B|0))}}while(0);H=c[b+96>>2]|0;E=H+(d<<3)|0;G=H+(e<<3)|0;F=H+(f<<3)|0;e:do if((d+1|0)!=(e|0)){if((e+1|0)==(f|0)){B=H+(f+-1<<3)|0;k=B;D=c[k>>2]|0;A=c[k+4>>2]|0;k=B-E|0;Bn(H+(f-(k>>3)<<3)|0,E|0,k|0)|0;k=E;c[k>>2]=D;c[k+4>>2]=A;break}A=G;k=A-E>>3;D=F;B=D-A>>3;if((k|0)==(B|0)){A=E;j=G;while(1){C=A;z=c[C>>2]|0;y=c[C+4>>2]|0;C=j;p=c[C+4>>
2]|0;t=A;c[t>>2]=c[C>>2];c[t+4>>2]=p;p=j;c[p>>2]=z;c[p+4>>2]=y;A=A+8|0;if((A|0)==(G|0))break e;else j=j+8|0}}else{I=k;J=B}while(1){j=(I|0)%(J|0)|0;if((j|0)==0)break;else{A=J;J=j;I=A}}if((J|0)!=0){B=k+-1|0;A=k+d|0;j=H+(J+d<<3)|0;do{y=j;j=j+-8|0;p=j;z=c[p>>2]|0;t=c[p+4>>2]|0;p=j;C=y+(B<<3)|0;while(1){y=C;o=c[y+4>>2]|0;n=p;c[n>>2]=c[y>>2];c[n+4>>2]=o;o=D-C>>3;if((k|0)<(o|0))K=C+(k<<3)|0;else K=H+(A-o<<3)|0;if((K|0)==(j|0))break;else{o=C;C=K;p=o}}p=C;c[p>>2]=z;c[p+4>>2]=t}while((j|0)!=(E|0))}}else{j=
E;A=c[j>>2]|0;k=c[j+4>>2]|0;j=F-G|0;Bn(E|0,G|0,j|0)|0;D=H+((j>>3)+d<<3)|0;c[D>>2]=A;c[D+4>>2]=k}while(0);H=c[b+104>>2]|0;G=H+(d<<3)|0;E=H+(e<<3)|0;F=H+(f<<3)|0;f:do if((d+1|0)!=(e|0)){if((e+1|0)==(f|0)){K=H+(f+-1<<3)|0;J=K;I=c[J>>2]|0;k=c[J+4>>2]|0;J=K-G|0;Bn(H+(f-(J>>3)<<3)|0,G|0,J|0)|0;J=G;c[J>>2]=I;c[J+4>>2]=k;break}k=E;J=k-G>>3;I=F;K=I-k>>3;if((J|0)==(K|0)){k=G;D=E;while(1){A=k;j=c[A>>2]|0;B=c[A+4>>2]|0;A=D;p=c[A+4>>2]|0;l=k;c[l>>2]=c[A>>2];c[l+4>>2]=p;p=D;c[p>>2]=j;c[p+4>>2]=B;k=k+8|0;if((k|
0)==(E|0))break f;else D=D+8|0}}else{L=J;M=K}while(1){D=(L|0)%(M|0)|0;if((D|0)==0)break;else{k=M;M=D;L=k}}if((M|0)!=0){K=J+-1|0;k=J+d|0;D=H+(M+d<<3)|0;do{B=D;D=D+-8|0;p=D;j=c[p>>2]|0;l=c[p+4>>2]|0;p=D;A=B+(K<<3)|0;while(1){B=A;m=c[B+4>>2]|0;o=p;c[o>>2]=c[B>>2];c[o+4>>2]=m;m=I-A>>3;if((J|0)<(m|0))N=A+(J<<3)|0;else N=H+(k-m<<3)|0;if((N|0)==(D|0))break;else{m=A;A=N;p=m}}p=A;c[p>>2]=j;c[p+4>>2]=l}while((D|0)!=(G|0))}}else{D=G;k=c[D>>2]|0;J=c[D+4>>2]|0;D=F-E|0;Bn(G|0,E|0,D|0)|0;I=H+((D>>3)+d<<3)|0;c[I>>
2]=k;c[I+4>>2]=J}while(0);H=c[b+144>>2]|0;E=H+(d<<2)|0;G=H+(e<<2)|0;F=H+(f<<2)|0;g:do if((d+1|0)!=(e|0)){if((e+1|0)==(f|0)){N=H+(f+-1<<2)|0;M=c[N>>2]|0;L=N-E|0;Bn(H+(f-(L>>2)<<2)|0,E|0,L|0)|0;c[E>>2]=M;break}M=G;L=M-E>>2;N=F;J=N-M>>2;if((L|0)==(J|0)){M=E;I=G;while(1){k=c[M>>2]|0;c[M>>2]=c[I>>2];c[I>>2]=k;M=M+4|0;if((M|0)==(G|0))break g;else I=I+4|0}}else{O=L;P=J}while(1){I=(O|0)%(P|0)|0;if((I|0)==0)break;else{M=P;P=I;O=M}}if((P|0)!=0){J=L+-1|0;M=L+d|0;I=H+(P+d<<2)|0;do{k=I;I=I+-4|0;D=c[I>>2]|0;K=
I;p=k+(J<<2)|0;while(1){c[K>>2]=c[p>>2];k=N-p>>2;if((L|0)<(k|0))Q=p+(L<<2)|0;else Q=H+(M-k<<2)|0;if((Q|0)==(I|0))break;else{k=p;p=Q;K=k}}c[p>>2]=D}while((I|0)!=(E|0))}}else{I=c[E>>2]|0;M=F-G|0;Bn(E|0,G|0,M|0)|0;c[H+((M>>2)+d<<2)>>2]=I}while(0);h:do if((a[b+21>>0]|0)!=0){H=c[b+112>>2]|0;G=H+(d<<3)|0;E=H+(e<<3)|0;F=H+(f<<3)|0;if((d+1|0)==(e|0)){Q=G;P=c[Q>>2]|0;O=c[Q+4>>2]|0;Q=F-E|0;Bn(G|0,E|0,Q|0)|0;I=H+((Q>>3)+d<<3)|0;c[I>>2]=P;c[I+4>>2]=O;break}if((e+1|0)==(f|0)){O=H+(f+-1<<3)|0;I=O;P=c[I>>2]|0;Q=
c[I+4>>2]|0;I=O-G|0;Bn(H+(f-(I>>3)<<3)|0,G|0,I|0)|0;I=G;c[I>>2]=P;c[I+4>>2]=Q;break}Q=E;I=Q-G>>3;P=F;F=P-Q>>3;if((I|0)==(F|0)){Q=G;O=E;while(1){M=Q;L=c[M>>2]|0;N=c[M+4>>2]|0;M=O;J=c[M+4>>2]|0;K=Q;c[K>>2]=c[M>>2];c[K+4>>2]=J;J=O;c[J>>2]=L;c[J+4>>2]=N;Q=Q+8|0;if((Q|0)==(E|0))break h;else O=O+8|0}}else{R=I;S=F}while(1){O=(R|0)%(S|0)|0;if((O|0)==0)break;else{E=S;S=O;R=E}}if((S|0)!=0){F=I+-1|0;E=I+d|0;O=H+(S+d<<3)|0;do{Q=O;O=O+-8|0;N=O;J=c[N>>2]|0;L=c[N+4>>2]|0;N=O;K=Q+(F<<3)|0;while(1){Q=K;M=c[Q+4>>2]|
0;l=N;c[l>>2]=c[Q>>2];c[l+4>>2]=M;M=P-K>>3;if((I|0)<(M|0))T=K+(I<<3)|0;else T=H+(E-M<<3)|0;if((T|0)==(O|0))break;else{M=K;K=T;N=M}}N=K;c[N>>2]=J;c[N+4>>2]=L}while((O|0)!=(G|0))}}while(0);T=c[b+120>>2]|0;i:do if((T|0)!=0){S=T+(d<<2)|0;R=T+(e<<2)|0;G=T+(f<<2)|0;if((d+1|0)==(e|0)){U=+g[S>>2];O=G-R|0;Bn(S|0,R|0,O|0)|0;g[T+((O>>2)+d<<2)>>2]=U;break}if((e+1|0)==(f|0)){O=T+(f+-1<<2)|0;U=+g[O>>2];E=O-S|0;Bn(T+(f-(E>>2)<<2)|0,S|0,E|0)|0;g[S>>2]=U;break}E=R;O=E-S>>2;H=G;G=H-E>>2;if((O|0)==(G|0)){E=S;I=R;while(1){U=
+g[E>>2];g[E>>2]=+g[I>>2];g[I>>2]=U;E=E+4|0;if((E|0)==(R|0))break i;else I=I+4|0}}else{V=O;W=G}while(1){I=(V|0)%(W|0)|0;if((I|0)==0)break;else{R=W;W=I;V=R}}if((W|0)!=0){G=O+-1|0;R=O+d|0;I=T+(W+d<<2)|0;do{E=I;I=I+-4|0;U=+g[I>>2];P=I;F=E+(G<<2)|0;while(1){g[P>>2]=+g[F>>2];E=H-F>>2;if((O|0)<(E|0))X=F+(O<<2)|0;else X=T+(R-E<<2)|0;if((X|0)==(I|0))break;else{E=F;F=X;P=E}}g[F>>2]=U}while((I|0)!=(S|0))}}while(0);X=c[b+132>>2]|0;j:do if((X|0)!=0){T=X+(d<<2)|0;W=X+(e<<2)|0;V=X+(f<<2)|0;if((d+1|0)==(e|0)){Y=
+g[T>>2];S=V-W|0;Bn(T|0,W|0,S|0)|0;g[X+((S>>2)+d<<2)>>2]=Y;break}if((e+1|0)==(f|0)){S=X+(f+-1<<2)|0;Y=+g[S>>2];I=S-T|0;Bn(X+(f-(I>>2)<<2)|0,T|0,I|0)|0;g[T>>2]=Y;break}I=W;S=I-T>>2;R=V;V=R-I>>2;if((S|0)==(V|0)){I=T;O=W;while(1){Y=+g[I>>2];g[I>>2]=+g[O>>2];g[O>>2]=Y;I=I+4|0;if((I|0)==(W|0))break j;else O=O+4|0}}else{Z=S;_=V}while(1){O=(Z|0)%(_|0)|0;if((O|0)==0)break;else{W=_;_=O;Z=W}}if((_|0)!=0){V=S+-1|0;W=S+d|0;O=X+(_+d<<2)|0;do{I=O;O=O+-4|0;Y=+g[O>>2];H=O;G=I+(V<<2)|0;while(1){g[H>>2]=+g[G>>2];I=
R-G>>2;if((S|0)<(I|0))$=G+(S<<2)|0;else $=X+(W-I<<2)|0;if(($|0)==(O|0))break;else{I=G;G=$;H=I}}g[G>>2]=Y}while((O|0)!=(T|0))}}while(0);$=c[b+136>>2]|0;if(($|0)!=0)rl($+(d<<2)|0,$+(e<<2)|0,$+(f<<2)|0)|0;$=c[b+148>>2]|0;k:do if(($|0)!=0){X=$+(d<<2)|0;_=$+(e<<2)|0;Z=$+(f<<2)|0;if((d+1|0)==(e|0)){T=c[X>>2]|0;O=Z-_|0;Bn(X|0,_|0,O|0)|0;c[$+((O>>2)+d<<2)>>2]=T;break}if((e+1|0)==(f|0)){T=$+(f+-1<<2)|0;O=c[T>>2]|0;W=T-X|0;Bn($+(f-(W>>2)<<2)|0,X|0,W|0)|0;c[X>>2]=O;break}O=_;W=O-X>>2;T=Z;Z=T-O>>2;if((W|0)==
(Z|0)){O=X;S=_;while(1){R=c[O>>2]|0;c[O>>2]=c[S>>2];c[S>>2]=R;O=O+4|0;if((O|0)==(_|0))break k;else S=S+4|0}}else{aa=W;ba=Z}while(1){S=(aa|0)%(ba|0)|0;if((S|0)==0)break;else{_=ba;ba=S;aa=_}}if((ba|0)!=0){Z=W+-1|0;_=W+d|0;S=$+(ba+d<<2)|0;do{O=S;S=S+-4|0;R=c[S>>2]|0;V=S;H=O+(Z<<2)|0;while(1){c[V>>2]=c[H>>2];O=T-H>>2;if((W|0)<(O|0))ca=H+(W<<2)|0;else ca=$+(_-O<<2)|0;if((ca|0)==(S|0))break;else{O=H;H=ca;V=O}}c[H>>2]=R}while((S|0)!=(X|0))}}while(0);ca=b+80|0;$=c[ca>>2]|0;if(($|0)!=0){ba=$+(d<<2)|0;aa=$+
(e<<2)|0;X=$+(f<<2)|0;l:do if((d+1|0)!=(e|0)){if((e+1|0)==(f|0)){S=$+(f+-1<<2)|0;_=c[S>>2]|0;W=S-ba|0;Bn($+(f-(W>>2)<<2)|0,ba|0,W|0)|0;c[ba>>2]=_;break}_=aa;W=_-ba>>2;S=X;T=S-_>>2;if((W|0)==(T|0)){_=ba;Z=aa;while(1){V=c[_>>2]|0;c[_>>2]=c[Z>>2];c[Z>>2]=V;_=_+4|0;if((_|0)==(aa|0))break l;else Z=Z+4|0}}else{da=W;ea=T}while(1){Z=(da|0)%(ea|0)|0;if((Z|0)==0)break;else{_=ea;ea=Z;da=_}}if((ea|0)!=0){T=W+-1|0;_=W+d|0;Z=$+(ea+d<<2)|0;do{V=Z;Z=Z+-4|0;G=c[Z>>2]|0;O=Z;F=V+(T<<2)|0;while(1){c[O>>2]=c[F>>2];V=
S-F>>2;if((W|0)<(V|0))fa=F+(W<<2)|0;else fa=$+(_-V<<2)|0;if((fa|0)==(Z|0))break;else{V=F;F=fa;O=V}}c[F>>2]=G}while((Z|0)!=(ba|0))}}else{Z=c[ba>>2]|0;_=X-aa|0;Bn(ba|0,aa|0,_|0)|0;c[$+((_>>2)+d<<2)>>2]=Z}while(0);if((d|0)<(f|0)){$=c[ca>>2]|0;ca=f-e|0;aa=d-e|0;ba=d;do{X=c[$+(ba<<2)>>2]|0;if((X|0)!=0){fa=X+8|0;X=c[fa>>2]|0;do if((X|0)>=(d|0))if((X|0)<(e|0)){ga=ca+X|0;break}else{ga=X+((X|0)<(f|0)?aa:0)|0;break}else ga=X;while(0);c[fa>>2]=ga}ba=ba+1|0}while((ba|0)!=(f|0))}}ba=c[b+280>>2]|0;if((ba|0)!=0){ga=
ba+(d<<2)|0;aa=ba+(e<<2)|0;ca=ba+(f<<2)|0;m:do if((d+1|0)==(e|0)){$=c[ga>>2]|0;X=ca-aa|0;Bn(ga|0,aa|0,X|0)|0;c[ba+((X>>2)+d<<2)>>2]=$}else{if((e+1|0)==(f|0)){$=ba+(f+-1<<2)|0;X=c[$>>2]|0;ea=$-ga|0;Bn(ba+(f-(ea>>2)<<2)|0,ga|0,ea|0)|0;c[ga>>2]=X;break}X=aa;ea=X-ga>>2;$=ca;da=$-X>>2;if((ea|0)==(da|0)){X=ga;Z=aa;while(1){_=c[X>>2]|0;c[X>>2]=c[Z>>2];c[Z>>2]=_;X=X+4|0;if((X|0)==(aa|0))break m;else Z=Z+4|0}}else{ha=ea;ia=da}while(1){Z=(ha|0)%(ia|0)|0;if((Z|0)==0)break;else{X=ia;ia=Z;ha=X}}if((ia|0)==0)break;
da=ea+-1|0;X=ea+d|0;Z=ba+(ia+d<<2)|0;do{fa=Z;Z=Z+-4|0;_=c[Z>>2]|0;W=Z;S=fa+(da<<2)|0;while(1){c[W>>2]=c[S>>2];fa=$-S>>2;if((ea|0)<(fa|0))ja=S+(ea<<2)|0;else ja=ba+(X-fa<<2)|0;if((ja|0)==(Z|0))break;else{fa=S;S=ja;W=fa}}c[S>>2]=_}while((Z|0)!=(ga|0))}while(0);ga=c[b+44>>2]|0;ja=c[b+288>>2]|0;if((ga|0)>0){ba=f-e|0;ia=d-e|0;ha=0;do{aa=ja+(ha<<2)|0;ca=c[aa>>2]|0;do if((ca|0)>=(d|0))if((ca|0)<(e|0)){ka=ba+ca|0;break}else{ka=ca+((ca|0)<(f|0)?ia:0)|0;break}else ka=ca;while(0);c[aa>>2]=ka;ha=ha+1|0}while((ha|
0)!=(ga|0))}}ga=b+204|0;if((c[ga>>2]|0)>0){ha=c[b+200>>2]|0;ka=f-e|0;ia=d-e|0;ba=0;do{ja=ha+(ba<<3)|0;ca=c[ja>>2]|0;do if((ca|0)>=(d|0))if((ca|0)<(e|0)){la=ka+ca|0;break}else{la=ca+((ca|0)<(f|0)?ia:0)|0;break}else la=ca;while(0);c[ja>>2]=la;ba=ba+1|0}while((ba|0)<(c[ga>>2]|0))}ga=b+220|0;if((c[ga>>2]|0)>0){ba=c[b+216>>2]|0;la=f-e|0;ia=d-e|0;ka=0;do{ha=ba+(ka*24|0)|0;ca=c[ha>>2]|0;do if((ca|0)>=(d|0))if((ca|0)<(e|0)){ma=la+ca|0;break}else{ma=ca+((ca|0)<(f|0)?ia:0)|0;break}else ma=ca;while(0);ca=ba+
(ka*24|0)+4|0;ja=c[ca>>2]|0;do if((ja|0)>=(d|0))if((ja|0)<(e|0)){na=la+ja|0;break}else{na=ja+((ja|0)<(f|0)?ia:0)|0;break}else na=ja;while(0);c[ha>>2]=ma;c[ca>>2]=na;ka=ka+1|0}while((ka|0)<(c[ga>>2]|0))}ga=b+236|0;if((c[ga>>2]|0)>0){ka=c[b+232>>2]|0;na=f-e|0;ma=d-e|0;ia=0;do{la=ka+(ia*28|0)|0;ba=c[la>>2]|0;do if((ba|0)>=(d|0))if((ba|0)<(e|0)){oa=na+ba|0;break}else{oa=ba+((ba|0)<(f|0)?ma:0)|0;break}else oa=ba;while(0);c[la>>2]=oa;ia=ia+1|0}while((ia|0)<(c[ga>>2]|0))}ga=b+252|0;if((c[ga>>2]|0)>0){ia=
c[b+248>>2]|0;oa=f-e|0;ma=d-e|0;na=0;do{ka=ia+(na*20|0)|0;ba=c[ka>>2]|0;do if((ba|0)>=(d|0))if((ba|0)<(e|0)){pa=oa+ba|0;break}else{pa=ba+((ba|0)<(f|0)?ma:0)|0;break}else pa=ba;while(0);c[ka>>2]=pa;ba=ia+(na*20|0)+4|0;la=c[ba>>2]|0;do if((la|0)>=(d|0))if((la|0)<(e|0)){qa=oa+la|0;break}else{qa=la+((la|0)<(f|0)?ma:0)|0;break}else qa=la;while(0);c[ba>>2]=qa;na=na+1|0}while((na|0)<(c[ga>>2]|0))}ga=b+268|0;if((c[ga>>2]|0)>0){na=c[b+264>>2]|0;qa=f-e|0;ma=d-e|0;oa=0;do{ia=na+(oa*60|0)|0;pa=c[ia>>2]|0;do if((pa|
0)>=(d|0))if((pa|0)<(e|0)){ra=qa+pa|0;break}else{ra=pa+((pa|0)<(f|0)?ma:0)|0;break}else ra=pa;while(0);c[ia>>2]=ra;pa=na+(oa*60|0)+4|0;ba=c[pa>>2]|0;do if((ba|0)>=(d|0))if((ba|0)<(e|0)){sa=qa+ba|0;break}else{sa=ba+((ba|0)<(f|0)?ma:0)|0;break}else sa=ba;while(0);c[pa>>2]=sa;ba=na+(oa*60|0)+8|0;ia=c[ba>>2]|0;do if((ia|0)>=(d|0))if((ia|0)<(e|0)){ta=qa+ia|0;break}else{ta=ia+((ia|0)<(f|0)?ma:0)|0;break}else ta=ia;while(0);c[ba>>2]=ta;oa=oa+1|0}while((oa|0)<(c[ga>>2]|0))}ga=c[b+312>>2]|0;if((ga|0)==0){i=
h;return}b=d-e|0;oa=f-e|0;ta=ga;do{ga=ta+4|0;ma=c[ga>>2]|0;do if((ma|0)>=(d|0))if((ma|0)<(e|0)){ua=oa+ma|0;break}else{ua=ma+((ma|0)<(f|0)?b:0)|0;break}else ua=ma;while(0);c[ga>>2]=ua;ma=ta+8|0;ba=c[ma>>2]|0;qa=ba+-1|0;do if((ba|0)>(d|0))if((ba|0)>(e|0)){va=qa+((ba|0)>(f|0)?0:b)|0;break}else{va=oa+qa|0;break}else va=qa;while(0);c[ma>>2]=va+1;ta=c[ta+24>>2]|0}while((ta|0)!=0);i=h;return}function Ak(b,d,e){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;f=i;g=(c[b+88>>2]|0)+(d<<2)|0;if((c[g>>
2]&~e|0)!=0)a[b+12>>0]=1;d=b+8|0;if((~c[d>>2]&e|0)==0){c[g>>2]=e;i=f;return}if((e&128|0)!=0){h=b+128|0;j=c[h>>2]|0;if((j|0)==0){k=b+48|0;l=c[k>>2]|0;if((l|0)==0){vk(b,256);m=c[k>>2]|0}else m=l;l=Em(c[b+400>>2]|0,m<<3)|0;xn(l|0,0,c[k>>2]<<3|0)|0;n=l}else n=j;c[h>>2]=n}if((e&256|0)!=0){n=b+136|0;h=c[n>>2]|0;if((h|0)==0){j=b+48|0;l=c[j>>2]|0;if((l|0)==0){vk(b,256);o=c[j>>2]|0}else o=l;l=Em(c[b+400>>2]|0,o<<2)|0;xn(l|0,0,c[j>>2]<<2|0)|0;p=l}else p=h;c[n>>2]=p}c[d>>2]=c[d>>2]|e;c[g>>2]=e;i=f;return}function Bk(a,
b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;Ak(a,b,c[(c[a+88>>2]|0)+(b<<2)>>2]|(d?514:2));i=e;return}function Ck(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;g=i;i=i+64|0;h=g+16|0;j=g;k=b+400|0;if((c[(c[k>>2]|0)+102876>>2]&2|0)!=0){l=0;i=g;return l|0}c[h>>2]=7912;m=h+12|0;c[h+4>>2]=b;c[h+8>>2]=d;c[m+0>>2]=c[e+0>>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];a[h+28>>0]=f&1;f=h+32|0;c[f>>2]=0;pb[c[(c[d>>2]|0)+28>>2]&31](d,j,e,0);Dj(c[k>>2]|0,h,j);l=c[f>>2]|0;i=g;return l|0}
function Dk(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,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,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;j=i;i=i+96|0;k=j+48|0;l=j;m=+g[f+52>>2];if(m==0)n=+g[d+32>>2]*.75;else n=m;o=bb[c[(c[e>>2]|0)+12>>2]&7](e)|0;if((o|0)<=0){i=j;return}p=l+4|0;q=l+8|0;r=l+28|0;s=e+4|0;t=l+12|0;u=e+12|0;v=l+20|0;w=l+12|0;x=l+
24|0;y=l+16|0;z=k+4|0;A=k+12|0;B=k+20|0;C=k+21|0;D=k+22|0;E=k+23|0;F=k+24|0;G=k+28|0;H=k+32|0;I=h+12|0;J=h+8|0;K=h+4|0;L=f+28|0;M=f+8|0;N=f+12|0;O=f+20|0;P=f+24|0;R=f+32|0;S=f+33|0;T=f+34|0;U=f+35|0;V=f+64|0;W=f+68|0;X=0;m=0;while(1){c[l>>2]=488;c[p>>2]=1;g[q>>2]=.009999999776482582;c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[r+12>>2]=0;b[r+16>>1]=0;if((c[s>>2]|0)==1){Y=s;Z=c[Y+4>>2]|0;_=p;c[_>>2]=c[Y>>2];c[_+4>>2]=Z;c[t+0>>2]=c[u+0>>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];c[t+
16>>2]=c[u+16>>2];c[t+20>>2]=c[u+20>>2];c[t+24>>2]=c[u+24>>2];c[t+28>>2]=c[u+28>>2];b[t+32>>1]=b[u+32>>1]|0}else Ge(e,l,X);$=+g[w>>2];aa=+g[v>>2]-$;ba=+g[y>>2];ca=+g[x>>2]-ba;da=+Q(+(aa*aa+ca*ca));a:do if(m<da){ea=$;fa=ba;ga=m;while(1){ha=ga/da;ia=ea+aa*ha;ja=ca*ha+fa;c[H>>2]=0;c[k>>2]=c[f>>2];ha=+g[I>>2];ka=+g[J>>2];la=+g[h>>2]+(ia*ha-ja*ka);ma=ja*ha+ia*ka+ +g[K>>2];ka=+la;ia=+ma;Z=z;g[Z>>2]=ka;g[Z+4>>2]=ia;ia=+g[L>>2];ka=+(+g[O>>2]-ia*(ma-+g[N>>2]));ma=+(ia*(la-+g[M>>2])+ +g[P>>2]);Z=A;g[Z>>2]=
ka;g[Z+4>>2]=ma;Z=a[S>>0]|0;_=a[T>>0]|0;Y=a[U>>0]|0;a[B>>0]=a[R>>0]|0;a[C>>0]=Z;a[D>>0]=_;a[E>>0]=Y;g[F>>2]=+g[V>>2];c[G>>2]=c[W>>2];wk(d,k)|0;ma=n+ga;if(!(ma<da)){na=ma;break a}ea=+g[w>>2];fa=+g[y>>2];ga=ma}}else na=m;while(0);Y=X+1|0;if((Y|0)==(o|0))break;X=Y;m=na-da}i=j;return}function Ek(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,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,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,ba=0,ca=0;h=i;i=i+80|0;j=h+40|0;k=h+24|0;l=h+8|0;m=h;n=+g[e+52>>2];if(n==0)o=+g[b+32>>2]*.75;else o=n;g[k>>2]=0;g[k+4>>2]=0;g[k+8>>2]=0;g[k+12>>2]=1;pb[c[(c[d>>2]|0)+28>>2]&31](d,l,k,0);n=o*+O(+(+g[l+4>>2]/o));p=l+12|0;q=+g[p>>2];if(!(n<q)){i=h;return}r=l+8|0;s=m+4|0;t=j+4|0;u=j+12|0;v=j+20|0;w=j+21|0;x=j+22|0;y=j+23|0;z=j+24|0;A=j+28|0;B=j+32|0;C=f+12|0;D=f+8|0;E=f+4|0;F=e+28|0;G=e+8|0;H=e+12|0;I=e+20|0;J=e+24|0;K=e+32|0;L=e+33|0;M=e+34|0;N=e+35|0;P=e+64|0;Q=e+68|0;R=q;q=+g[r>>2];S=
n;while(1){n=o*+O(+(+g[l>>2]/o));if(n<q){T=n;do{g[m>>2]=T;g[s>>2]=S;if(hb[c[(c[d>>2]|0)+16>>2]&15](d,k,m)|0){c[B>>2]=0;c[j>>2]=c[e>>2];n=+g[C>>2];U=+g[m>>2];V=+g[D>>2];W=+g[s>>2];X=+g[f>>2]+(n*U-V*W);Y=U*V+n*W+ +g[E>>2];W=+X;n=+Y;Z=t;g[Z>>2]=W;g[Z+4>>2]=n;n=+g[F>>2];W=+(+g[I>>2]-n*(Y-+g[H>>2]));Y=+(n*(X-+g[G>>2])+ +g[J>>2]);Z=u;g[Z>>2]=W;g[Z+4>>2]=Y;Z=a[L>>0]|0;_=a[M>>0]|0;$=a[N>>0]|0;a[v>>0]=a[K>>0]|0;a[w>>0]=Z;a[x>>0]=_;a[y>>0]=$;g[z>>2]=+g[P>>2];c[A>>2]=c[Q>>2];wk(b,j)|0}T=o+T;aa=+g[r>>2]}while(T<
aa);ba=+g[p>>2];ca=aa}else{ba=R;ca=q}S=o+S;if(!(S<ba))break;else{R=ba;q=ca}}i=h;return}function Fk(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;e=i;i=i+64|0;f=e+20|0;h=e;j=e+16|0;k=b+400|0;if((c[(c[k>>2]|0)+102876>>2]&2|0)!=0){l=0;i=e;return l|0}m=+g[d+16>>2];n=d+8|0;o=c[n+4>>2]|0;p=h;c[p>>2]=c[n>>2];c[p+4>>2]=o;o=h+8|0;g[o>>2]=+T(+m);
p=h+12|0;g[p>>2]=+S(+m);n=b+44|0;q=c[n>>2]|0;r=c[d+40>>2]|0;do if((r|0)!=0){s=c[r+4>>2]|0;if((s|0)==3|(s|0)==1){Dk(b,r,d,h);break}else if((s|0)==0|(s|0)==2){Ek(b,r,d,h);break}else break}while(0);r=c[d+44>>2]|0;if((r|0)!=0){s=c[d+48>>2]|0;c[f>>2]=7720;c[f+12>>2]=r;c[f+16>>2]=s;Ek(b,f,d,h)}s=d+56|0;if((c[s>>2]|0)>0){r=d+60|0;t=f+4|0;u=f+12|0;v=f+20|0;w=f+21|0;x=f+22|0;y=f+23|0;z=f+24|0;A=f+28|0;B=f+32|0;m=+g[p>>2];C=+g[o>>2];D=+g[h>>2];E=+g[h+4>>2];o=d+28|0;p=d+8|0;F=d+12|0;G=d+20|0;H=d+24|0;I=d+32|
0;J=d+33|0;K=d+34|0;L=d+35|0;M=d+64|0;N=d+68|0;O=0;do{P=(c[r>>2]|0)+(O<<3)|0;Q=+g[P>>2];R=+g[P+4>>2];c[B>>2]=0;c[f>>2]=c[d>>2];U=D+(Q*m-R*C);V=m*R+Q*C+E;Q=+U;R=+V;P=t;g[P>>2]=Q;g[P+4>>2]=R;R=+g[o>>2];Q=+(+g[G>>2]-R*(V-+g[F>>2]));V=+(R*(U-+g[p>>2])+ +g[H>>2]);P=u;g[P>>2]=Q;g[P+4>>2]=V;P=a[J>>0]|0;W=a[K>>0]|0;X=a[L>>0]|0;a[v>>0]=a[I>>0]|0;a[w>>0]=P;a[x>>0]=W;a[y>>0]=X;g[z>>2]=+g[M>>2];c[A>>2]=c[N>>2];wk(b,f)|0;O=O+1|0}while((O|0)<(c[s>>2]|0))}s=c[n>>2]|0;n=Em(c[k>>2]|0,80)|0;if((n|0)==0)Y=0;else{mk(n);
Y=n}c[Y>>2]=b;c[Y+4>>2]=q;c[Y+8>>2]=s;g[Y+16>>2]=+g[d+36>>2];c[Y+76>>2]=c[d+68>>2];n=Y+60|0;c[n+0>>2]=c[h+0>>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];c[Y+20>>2]=0;h=b+312|0;c[Y+24>>2]=c[h>>2];n=c[h>>2]|0;if((n|0)!=0)c[n+20>>2]=Y;c[h>>2]=Y;h=b+308|0;c[h>>2]=(c[h>>2]|0)+1;if((q|0)<(s|0)){h=b+144|0;n=q;do{c[(c[h>>2]|0)+(n<<2)>>2]=Y;n=n+1|0}while((n|0)!=(s|0))}n=c[d+4>>2]|0;h=Y+12|0;O=c[h>>2]|0;f=(O^n)<<4&16|n;if((O&~f|0)!=0)a[b+20>>0]=1;O=b+16|0;N=c[O>>2]|0;if((f&~N|0)!=0){if((n&
1|0)==0)Z=N;else{n=b+132|0;A=c[n>>2]|0;if((A|0)==0){M=b+48|0;z=c[M>>2]|0;if((z|0)==0){vk(b,256);_=c[M>>2]|0}else _=z;z=Em(c[k>>2]|0,_<<2)|0;xn(z|0,0,c[M>>2]<<2|0)|0;$=z;aa=c[O>>2]|0}else{$=A;aa=N}c[n>>2]=$;Z=aa}c[O>>2]=Z|f}c[h>>2]=f;c[j>>2]=7544;Gk(b,1);Hk(b,q,s,j);j=d+72|0;d=c[j>>2]|0;if((d|0)==0){l=Y;i=e;return l|0}Ik(b,d,Y);l=c[j>>2]|0;i=e;return l|0}function Gk(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;d=i;i=i+32|0;e=d;f=d+8|0;h=a+204|0;j=c[h>>2]|0;k=
c[a+200>>2]|0;l=k+(j<<3)|0;if((j|0)>0){m=c[a+96>>2]|0;n=+g[a+36>>2];o=k;do{p=c[o>>2]|0;c[o+4>>2]=(~~(n*+g[m+(p<<3)+4>>2]+2048)>>>0<<20)+(~~(n*+g[m+(p<<3)>>2]*256+524288)>>>0);o=o+8|0}while(o>>>0<l>>>0);q=c[h>>2]|0}else q=j;Il(k,k+(q<<3)|0,e);e=c[a+400>>2]|0;c[f>>2]=0;c[f+4>>2]=0;q=f+8|0;c[q>>2]=0;k=f+12|0;c[k>>2]=e+76;if((c[a+8>>2]&32768|0)!=0?(c[e+102952>>2]|0)!=0:0)Rk(f,c[a+216>>2]|0,c[a+220>>2]|0,c[a+88>>2]|0);e=a+216|0;Ok(a,e);Qk(a,e);Sk(a,f);if(b){b=c[e>>2]|0;j=a+220|0;a=c[j>>2]|0;h=b+(a*24|
0)|0;a:do if((a|0)==0){r=b;s=12}else{l=b;while(1){if((c[l+20>>2]&2|0)!=0){r=l;s=12;break a}l=l+24|0;if((l|0)==(h|0)){t=h;u=b;break}}}while(0);if((s|0)==12)if((r|0)==(h|0)){t=h;u=b}else{b=r;s=r;b:while(1){r=s;do{a=r;r=r+24|0;if((r|0)==(h|0))break b}while((c[a+44>>2]&2|0)!=0);c[b+0>>2]=c[r+0>>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];c[b+16>>2]=c[r+16>>2];c[b+20>>2]=c[r+20>>2];b=b+24|0;s=r}t=b;u=c[e>>2]|0}c[j>>2]=(t-u|0)/24|0}u=c[f>>2]|0;if((u|0)==0){i=d;return}_m(c[k>>2]|0,u);
c[f>>2]=0;c[q>>2]=0;i=d;return}function Hk(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,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;f=i;i=i+48|0;h=f+40|0;j=f+12|0;k=f;l=(b|0)<(d|0);if(!l){i=f;return}m=c[a+88>>2]|0;n=b;o=0;do{o=c[m+(n<<2)>>2]|o;n=n+1|0}while((n|0)!=(d|0));if((o&1032|0)!=0){n=a+220|0;if((c[n>>2]|0)>0){m=a+216|0;p=a+88|0;q=a+144|0;r=a+252|0;s=a+256|0;t=a+248|0;
u=a+96|0;v=a+260|0;w=0;do{x=c[m>>2]|0;y=c[x+(w*24|0)>>2]|0;z=c[x+(w*24|0)+4>>2]|0;A=c[p>>2]|0;B=c[A+(y<<2)>>2]|0;C=c[A+(z<<2)>>2]|0;A=c[q>>2]|0;D=c[A+(y<<2)>>2]|0;E=c[A+(z<<2)>>2]|0;do if((z|0)<(d|0)&(((y|0)>=(d|0)|(y|0)<(b|0)|(z|0)<(b|0))^1)?(A=C|B,!((A&2|0)!=0|(A&1032|0)==0)):0){if(!(nb[c[(c[e>>2]|0)+8>>2]&31](e,y)|0)?!(nb[c[(c[e>>2]|0)+8>>2]&31](e,z)|0):0)break;if((B&28|0)==0){if((D|0)==0)break;if((c[D+12>>2]&2|0)==0)break}if((C&28|0)==0){if((E|0)==0)break;if((c[E+12>>2]&2|0)==0)break}if(hb[c[(c[e>>
2]|0)+12>>2]&15](e,y,z)|0){A=c[r>>2]|0;F=c[s>>2]|0;if((A|0)>=(F|0)?(G=(F|0)==0?256:F<<1,(F|0)<(G|0)):0){F=Em(c[v>>2]|0,G*20|0)|0;H=c[t>>2]|0;if((H|0)!=0){An(F|0,H|0,(c[r>>2]|0)*20|0)|0;Fm(c[v>>2]|0,c[t>>2]|0,(c[s>>2]|0)*20|0)}c[s>>2]=G;c[t>>2]=F;I=c[r>>2]|0}else I=A;c[r>>2]=I+1;A=c[t>>2]|0;c[A+(I*20|0)>>2]=y;c[A+(I*20|0)+4>>2]=z;c[A+(I*20|0)+8>>2]=c[x+(w*24|0)+20>>2];if((D|0)==0)J=1;else J=+g[D+16>>2];if((E|0)==0)K=1;else K=+g[E+16>>2];g[A+(I*20|0)+12>>2]=J<K?J:K;F=c[u>>2]|0;L=+g[F+(y<<3)>>2]-+g[F+
(z<<3)>>2];M=+g[F+(y<<3)+4>>2]-+g[F+(z<<3)+4>>2];g[A+(I*20|0)+16>>2]=+Q(+(L*L+M*M))}}while(0);w=w+1|0}while((w|0)<(c[n>>2]|0));N=r}else N=a+252|0;r=a+248|0;n=c[r>>2]|0;w=c[N>>2]|0;I=n+(w*20|0)|0;c[h>>2]=27;u=w*20|0;w=(u|0)/20|0;a:do if((u|0)>2560){t=w;while(1){s=rn(t*20|0,9632)|0;if((s|0)!=0){O=s;P=t;break a}if((t|0)>1)t=(t|0)/2|0;else{O=s;P=0;break}}}else{O=0;P=0}while(0);Pl(n,I,h,w,O,P);if((O|0)!=0)sn(O);O=c[r>>2]|0;P=c[N>>2]|0;w=O+(P*20|0)|0;b:do if((P|0)==0){R=O;S=40}else if((P|0)==1){T=w;U=O}else{I=
O;n=O+20|0;u=c[O>>2]|0;while(1){t=u;u=c[n>>2]|0;if((t|0)==(u|0)?(c[I+4>>2]|0)==(c[I+24>>2]|0):0){R=I;S=40;break b}t=n+20|0;if((t|0)==(w|0)){T=w;U=O;break}else{s=n;n=t;I=s}}}while(0);if((S|0)==40)if((R|0)==(w|0)){T=w;U=O}else{O=R;P=R+20|0;c:while(1){R=O+4|0;I=P;do{n=I;I=I+20|0;if((I|0)==(w|0))break c;if((c[O>>2]|0)!=(c[I>>2]|0))break}while((c[R>>2]|0)==(c[n+24>>2]|0));R=O+20|0;c[R+0>>2]=c[I+0>>2];c[R+4>>2]=c[I+4>>2];c[R+8>>2]=c[I+8>>2];c[R+12>>2]=c[I+12>>2];c[R+16>>2]=c[I+16>>2];O=R;P=I}T=O+20|0;U=
c[r>>2]|0}c[N>>2]=(T-U|0)/20|0}if((o&16|0)==0){i=f;return}hk(j,(c[a+400>>2]|0)+76|0,d-b|0);if(l){l=a+88|0;o=a+144|0;U=a+96|0;T=b;do{b=c[(c[l>>2]|0)+(T<<2)>>2]|0;do if((b&2|0)==0){N=c[(c[o>>2]|0)+(T<<2)>>2]|0;if((b&28|0)==0){if((N|0)==0)break;if((c[N+12>>2]&2|0)==0)break}N=c[U>>2]|0;jk(j,N+(T<<3)|0,T,nb[c[(c[e>>2]|0)+8>>2]&31](e,T)|0)}while(0);T=T+1|0}while((T|0)<(d|0))}K=+g[a+32>>2]*.75;kk(j,K*.5,K*2);c[k>>2]=7176;c[k+4>>2]=a;c[k+8>>2]=e;lk(j,k);k=a+264|0;e=c[k>>2]|0;d=a+268|0;a=c[d>>2]|0;T=e+(a*
60|0)|0;c[h>>2]=28;U=a*60|0;a=(U|0)/60|0;d:do if((U|0)>7680){o=a;while(1){l=rn(o*60|0,9632)|0;if((l|0)!=0){V=l;W=o;break d}if((o|0)>1)o=(o|0)/2|0;else{V=l;W=0;break}}}else{V=0;W=0}while(0);Ll(e,T,h,a,V,W);if((V|0)!=0)sn(V);V=c[k>>2]|0;W=c[d>>2]|0;a=V+(W*60|0)|0;e:do if((W|0)==0){X=V;S=69}else if((W|0)==1){Y=a;Z=V}else{h=V;T=V+60|0;e=c[V>>2]|0;while(1){U=e;e=c[T>>2]|0;if(((U|0)==(e|0)?(c[h+4>>2]|0)==(c[h+64>>2]|0):0)?(c[h+8>>2]|0)==(c[h+68>>2]|0):0){X=h;S=69;break e}U=T+60|0;if((U|0)==(a|0)){Y=a;Z=
V;break}else{o=T;T=U;h=o}}}while(0);if((S|0)==69)if((X|0)==(a|0)){Y=a;Z=V}else{V=X;S=X+60|0;f:while(1){X=V+4|0;W=V+8|0;h=S;do{T=h;h=h+60|0;if((h|0)==(a|0))break f;if((c[V>>2]|0)!=(c[h>>2]|0))break;if((c[X>>2]|0)!=(c[T+64>>2]|0))break}while((c[W>>2]|0)==(c[T+68>>2]|0));W=V+60|0;X=W+0|0;T=h+0|0;e=X+60|0;do{c[X>>2]=c[T>>2];X=X+4|0;T=T+4|0}while((X|0)<(e|0));V=W;S=h}Y=V+60|0;Z=c[k>>2]|0}c[d>>2]=(Y-Z|0)/60|0;ik(j);i=f;return}function Ik(b,d,e){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;f=i;i=i+16|0;g=f;h=b+400|0;if((c[(c[h>>2]|0)+102876>>2]&2|0)!=0){i=f;return}j=e+4|0;k=e+8|0;zk(b,c[j>>2]|0,c[k>>2]|0,c[b+44>>2]|0);l=d+4|0;m=d+8|0;zk(b,c[l>>2]|0,c[m>>2]|0,c[j>>2]|0);n=c[j>>2]|0;c[g>>2]=7576;c[g+4>>2]=n;Gk(b,1);Hk(b,c[l>>2]|0,c[k>>2]|0,g);g=c[j>>2]|0;l=c[k>>2]|0;if((g|0)<(l|0)){n=b+144|0;o=g;do{c[(c[n>>2]|0)+(o<<2)>>2]=d;o=o+1|0}while((o|0)<(l|0))}l=d+12|0;d=c[l>>2]|0;o=c[e+12>>2]|d;n=(o^d)<<4&16|o;if((d&~n|0)!=0)a[b+20>>0]=1;d=b+16|0;g=c[d>>2]|0;if((n&
~g|0)!=0){if((o&1|0)==0)p=g;else{o=b+132|0;q=c[o>>2]|0;if((q|0)==0){r=b+48|0;s=c[r>>2]|0;if((s|0)==0){vk(b,256);t=c[r>>2]|0}else t=s;s=Em(c[h>>2]|0,t<<2)|0;xn(s|0,0,c[r>>2]<<2|0)|0;u=s;v=c[d>>2]|0}else{u=q;v=g}c[o>>2]=u;p=v}c[d>>2]=p|n}c[l>>2]=n;c[m>>2]=c[k>>2];c[j>>2]=c[k>>2];tk(b,e);i=f;return}function Jk(a){a=a|0;return}function Kk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=c[a>>2]|0;f=c[b>>2]|0;if((e|0)==(f|0)){g=(c[a+4>>2]|0)<(c[b+4>>2]|0);i=d;return g|0}else{g=(e-f|0)<0;i=d;return g|0}return 0}
function Lk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=c[a>>2]|0;f=c[b>>2]|0;if((e|0)!=(f|0)){g=(e-f|0)<0;i=d;return g|0}f=c[a+4>>2]|0;e=c[b+4>>2]|0;if((f|0)==(e|0)){g=(c[a+8>>2]|0)<(c[b+8>>2]|0);i=d;return g|0}else{g=(f-e|0)<0;i=d;return g|0}return 0}function Mk(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,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;d=i;e=b+400|0;f=b+220|0;h=Ym((c[e>>2]|0)+76|0,(c[f>>2]|0)*24|0)|0;j=c[f>>2]|
0;if((j|0)>0){k=b+216|0;l=b+144|0;m=j;j=0;n=0;while(1){o=c[k>>2]|0;p=o+(n*24|0)|0;q=c[l>>2]|0;r=c[q+(c[p>>2]<<2)>>2]|0;if(((r|0)!=0?(r|0)==(c[q+(c[o+(n*24|0)+4>>2]<<2)>>2]|0):0)?(c[r+12>>2]&16|0)!=0:0){r=j+1|0;o=h+(j*24|0)|0;c[o+0>>2]=c[p+0>>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[o+16>>2]=c[p+16>>2];c[o+20>>2]=c[p+20>>2];s=c[f>>2]|0;t=r}else{s=m;t=j}n=n+1|0;if((n|0)>=(s|0)){u=t;break}else{m=s;j=t}}}else u=0;t=Ym((c[e>>2]|0)+76|0,c[b+308>>2]<<2)|0;j=c[b+312>>2]|0;if((j|
0)==0)v=0;else{s=b+16|0;m=b+124|0;n=b+132|0;f=b+48|0;l=b+20|0;k=j;j=0;while(1){r=k+12|0;p=c[r>>2]|0;if((p&16|0)!=0){o=j+1|0;c[t+(j<<2)>>2]=k;q=p&-17;if((((p|16)^-17)&p|0)!=0)a[l>>0]=1;w=c[s>>2]|0;if((q&~w|0)!=0){if((p&1|0)==0)x=w;else{p=c[n>>2]|0;if((p|0)==0){y=c[f>>2]|0;if((y|0)==0){vk(b,256);z=c[f>>2]|0}else z=y;y=Em(c[e>>2]|0,z<<2)|0;xn(y|0,0,c[f>>2]<<2|0)|0;A=y;B=c[s>>2]|0}else{A=p;B=w}c[n>>2]=A;x=B}c[s>>2]=x|q}c[r>>2]=q;q=c[k+4>>2]|0;r=c[k+8>>2]|0;if((q|0)<(r|0)){w=q+1|0;xn((c[m>>2]|0)+(q<<2)|
0,0,((r|0)>(w|0)?r:w)-q<<2|0)|0;C=o}else C=o}else C=j;k=c[k+24>>2]|0;if((k|0)==0){v=C;break}else j=C}}C=(u|0)>0;if(C){j=c[b+124>>2]|0;k=0;do{m=c[h+(k*24|0)+4>>2]|0;D=+g[h+(k*24|0)+8>>2];x=j+(c[h+(k*24|0)>>2]<<2)|0;g[x>>2]=D+ +g[x>>2];x=j+(m<<2)|0;g[x>>2]=D+ +g[x>>2];k=k+1|0}while((k|0)!=(u|0))}k=(v|0)>0;if(k){j=b+124|0;x=b+132|0;m=0;do{s=c[t+(m<<2)>>2]|0;B=c[s+4>>2]|0;A=c[s+8>>2]|0;if((B|0)<(A|0)){s=c[j>>2]|0;n=c[x>>2]|0;f=B;do{g[n+(f<<2)>>2]=+g[s+(f<<2)>>2]<.800000011920929?0:3.4028234663852886E38;
f=f+1|0}while((f|0)<(A|0))}m=m+1|0}while((m|0)!=(v|0))}m=~~+Q(+ +(c[b+44>>2]|0));if((m|0)>0?(x=b+132|0,C):0){C=0;do{j=c[x>>2]|0;A=0;f=0;while(1){D=1-+g[h+(A*24|0)+8>>2];s=j+(c[h+(A*24|0)>>2]<<2)|0;n=j+(c[h+(A*24|0)+4>>2]<<2)|0;E=+g[n>>2];F=D+E;G=+g[s>>2];H=D+G;if(G>F){g[s>>2]=F;I=+g[n>>2];J=1}else{I=E;J=f}if(I>H){g[n>>2]=H;K=1}else K=J;A=A+1|0;if((A|0)==(u|0))break;else f=K}C=C+1|0}while(K&(C|0)<(m|0))}if(!k){L=c[e>>2]|0;M=L+76|0;_m(M,t);N=c[e>>2]|0;O=N+76|0;_m(O,h);i=d;return}k=b+132|0;m=b+32|0;
b=0;do{C=c[t+(b<<2)>>2]|0;K=c[C+4>>2]|0;u=c[C+8>>2]|0;if((K|0)<(u|0)){C=c[k>>2]|0;J=K;do{K=C+(J<<2)|0;I=+g[K>>2];if(I<3.4028234663852886E38)P=I*+g[m>>2];else P=0;g[K>>2]=P;J=J+1|0}while((J|0)<(u|0))}b=b+1|0}while((b|0)!=(v|0));L=c[e>>2]|0;M=L+76|0;_m(M,t);N=c[e>>2]|0;O=N+76|0;_m(O,h);i=d;return}function Nk(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;e=i;f=+g[b+36>>2];h=(~~(f*+g[d+4>>2]+-1+2048)>>>0<<20)+(~~((f*+g[d>>2]+-1)*256+524288)>>>0)|0;j=~~(f*+g[d+12>>2]+1+2048)>>>0;k=~~((f*
+g[d+8>>2]+1)*256+524288)>>>0;d=c[b+200>>2]|0;l=c[b+204>>2]|0;b=d+(l<<3)|0;m=d;d=l<<3>>3;a:while(1){l=d;while(1){if((l|0)==0)break a;n=(l|0)/2|0;if((c[m+(n<<3)+4>>2]|0)>>>0<h>>>0)break;else l=n}m=m+(n+1<<3)|0;d=l+-1-n|0}n=(j<<20)+k|0;k=m;j=b-m>>3;b:while(1){b=j;while(1){if((b|0)==0)break b;o=(b|0)/2|0;if((c[k+(o<<3)+4>>2]|0)>>>0>n>>>0)b=o;else break}k=k+(o+1<<3)|0;j=b+-1-o|0}c[a>>2]=h&1048575;c[a+4>>2]=n&1048575;c[a+8>>2]=h&-1048576;c[a+12>>2]=n&-1048576;c[a+16>>2]=m;c[a+20>>2]=k;i=e;return}function Ok(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;d=i;e=c[a+200>>2]|0;f=c[a+204>>2]|0;g=e+(f<<3)|0;c[b+4>>2]=0;if((f|0)>0){h=e;j=e}else{i=d;return}while(1){e=h+4|0;f=(c[e>>2]|0)+256|0;k=h;h=h+8|0;l=h>>>0<g>>>0;a:do if(l){m=h;do{if(f>>>0<(c[m+4>>2]|0)>>>0)break a;Pk(a,c[k>>2]|0,c[m>>2]|0,b);m=m+8|0}while(m>>>0<g>>>0)}while(0);f=c[e>>2]|0;m=f+1048320|0;b:do if(j>>>0<g>>>0){n=j;while(1){o=n+8|0;if(!(m>>>0>(c[n+4>>2]|0)>>>0)){p=n;break b}if(o>>>0<g>>>0)n=o;else{p=o;break}}}else p=j;while(0);
m=f+1048832|0;c:do if(p>>>0<g>>>0){e=p;do{if(m>>>0<(c[e+4>>2]|0)>>>0)break c;Pk(a,c[k>>2]|0,c[e>>2]|0,b);e=e+8|0}while(e>>>0<g>>>0)}while(0);if(!l)break;else j=p}i=d;return}function Pk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;f=i;h=c[a+96>>2]|0;j=+g[h+(d<<3)>>2]-+g[h+(b<<3)>>2];l=+g[h+(d<<3)+4>>2]-+g[h+(b<<3)+4>>2];m=j*j+l*l;if(!(m<+g[a+40>>2])){i=f;return}n=(c[k>>2]=1597463007-((g[k>>2]=m,c[k>>2]|0)>>1),+g[k>>2]);o=n*(1.5-n*m*.5*n);h=e+4|0;p=c[h>>
2]|0;q=e+8|0;r=c[q>>2]|0;if((p|0)>=(r|0)?(s=(r|0)==0?256:r<<1,(r|0)<(s|0)):0){r=e+12|0;t=Em(c[r>>2]|0,s*24|0)|0;u=c[e>>2]|0;if((u|0)!=0){An(t|0,u|0,(c[h>>2]|0)*24|0)|0;Fm(c[r>>2]|0,c[e>>2]|0,(c[q>>2]|0)*24|0)}c[q>>2]=s;c[e>>2]=t;v=c[h>>2]|0}else v=p;c[h>>2]=v+1;h=c[e>>2]|0;c[h+(v*24|0)>>2]=b;c[h+(v*24|0)+4>>2]=d;e=c[a+88>>2]|0;c[h+(v*24|0)+20>>2]=c[e+(d<<2)>>2]|c[e+(b<<2)>>2];g[h+(v*24|0)+8>>2]=1-m*o*+g[a+36>>2];m=+(j*o);j=+(l*o);a=h+(v*24|0)+12|0;g[a>>2]=m;g[a+4>>2]=j;i=f;return}function Qk(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;d=i;if((c[a+8>>2]&131072|0)==0){i=d;return}e=c[(c[a+400>>2]|0)+102948>>2]|0;if((e|0)==0){i=d;return}f=c[b>>2]|0;g=b+4|0;h=c[g>>2]|0;j=f+(h*24|0)|0;a:do if((h|0)==0){k=f;l=8}else{m=f;while(1){if((c[m+20>>2]&131072|0)!=0?!(lb[c[(c[e>>2]|0)+16>>2]&7](e,a,c[m>>2]|0,c[m+4>>2]|0)|0):0){k=m;l=8;break a}m=m+24|0;if((m|0)==(j|0)){n=j;break}}}while(0);b:do if((l|0)==8)if((k|0)==(j|0))n=j;else{f=k;h=k;while(1){m=h;do{o=m;m=m+24|0;if((m|0)==(j|0)){n=f;
break b}if((c[o+44>>2]&131072|0)==0)break}while(!(lb[c[(c[e>>2]|0)+16>>2]&7](e,a,c[m>>2]|0,c[o+28>>2]|0)|0));c[f+0>>2]=c[m+0>>2];c[f+4>>2]=c[m+4>>2];c[f+8>>2]=c[m+8>>2];c[f+12>>2]=c[m+12>>2];c[f+16>>2]=c[m+16>>2];c[f+20>>2]=c[m+20>>2];f=f+24|0;h=m}}while(0);c[g>>2]=(n-(c[b>>2]|0)|0)/24|0;i=d;return}function Rk(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;f=i;i=i+16|0;g=f;h=c[a>>2]|0;if((h|0)!=0){_m(c[a+12>>2]|0,h);c[a>>2]=0;c[a+8>>2]=0}if((d|0)==0)j=c[a+8>>2]|0;else{h=
Ym(c[a+12>>2]|0,d*9|0)|0;c[a>>2]=h;k=h+(d<<3)|0;c[a+4>>2]=k;xn(k|0,1,d|0)|0;c[a+8>>2]=d;j=d}if((j|0)==0){i=f;return}j=c[a>>2]|0;if((d|0)>0){k=0;h=0;while(1){l=c[b+(k*24|0)>>2]|0;if((!((l|0)==-1)?(m=b+(k*24|0)+4|0,n=c[m>>2]|0,!((n|0)==-1)):0)?((c[e+(n<<2)>>2]|c[e+(l<<2)>>2])&32768|0)!=0:0){c[j+(k<<3)>>2]=l;c[j+(k<<3)+4>>2]=c[m>>2];o=h+1|0}else o=h;k=k+1|0;if((k|0)==(d|0)){p=o;break}else h=o}}else p=0;c[a+8>>2]=p;c[g>>2]=29;Cl(j,j+(p<<3)|0,g);i=f;return}function Sk(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;e=i;if((c[b+8>>2]&32768|0)==0){i=e;return}f=c[(c[b+400>>2]|0)+102952>>2]|0;if((f|0)==0){i=e;return}g=c[b+220>>2]|0;h=c[b+216>>2]|0;j=h+(g*24|0)|0;k=d+8|0;if((g|0)>0){g=d+4|0;l=h;while(1){h=c[l>>2]|0;m=c[l+4>>2]|0;n=c[k>>2]|0;do if((n|0)==0)o=24;else{p=c[d>>2]|0;q=p;r=p+(n<<3)-q>>3;s=(r|0)==0;a:do if(s)t=p;else{u=p;v=r;while(1){w=v;while(1){x=(w|0)/2|0;if((c[u+(x<<3)>>2]|0)<(h|0)?(c[u+(x<<3)+4>>2]|0)<(m|
0):0)break;if((w+1|0)>>>0<3){t=u;break a}else w=x}y=u+(x+1<<3)|0;z=w+-1|0;if((z|0)==(x|0)){t=y;break}else{u=y;v=z-x|0}}}while(0);if((t|0)!=0?(v=(t-q|0)>>>3,u=c[g>>2]|0,(a[u+v>>0]|0)!=0):0){A=u;B=v}else{b:do if(s)C=p;else{v=p;u=r;while(1){z=u;while(1){D=(z|0)/2|0;if((c[v+(D<<3)>>2]|0)<(m|0)?(c[v+(D<<3)+4>>2]|0)<(h|0):0)break;if((z+1|0)>>>0<3){C=v;break b}else z=D}w=v+(D+1<<3)|0;y=z+-1|0;if((y|0)==(D|0)){C=w;break}else{v=w;u=y-D|0}}}while(0);if((C|0)==0){o=24;break}r=(C-q|0)>>>3;p=c[g>>2]|0;if((a[p+
r>>0]|0)==0){o=24;break}else{A=p;B=r}}a[A+B>>0]=0}while(0);if((o|0)==24){o=0;ib[c[(c[f>>2]|0)+24>>2]&7](f,b,l)}l=l+24|0;if(!(l>>>0<j>>>0)){E=d;F=g;break}}}else{E=d;F=d+4|0}d=c[k>>2]|0;k=c[E>>2]|0;E=c[F>>2]|0;if((d|0)<=0){i=e;return}F=0;do{if((a[E+F>>0]|0)!=0)pb[c[(c[f>>2]|0)+28>>2]&31](f,b,c[k+(F<<3)>>2]|0,c[k+(F<<3)+4>>2]|0);F=F+1|0}while((F|0)!=(d|0));i=e;return}function Tk(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;d=i;e=a+156|0;if((c[e>>2]|0)<1){i=d;return}f=(c[a+176>>2]|
0)+(b<<2)|0;g=(c[a+160>>2]|0)+(b<<2)|0;h=(c[a+168>>2]|0)+(b<<2)|0;j=(c[h>>2]|0)+1|0;c[h>>2]=j;if((j|0)==2?(j=c[f>>2]|0,c[f>>2]=j+1,(j|0)>=(c[e>>2]|0)):0){e=a+184|0;j=a+188|0;f=c[j>>2]|0;h=a+192|0;k=c[h>>2]|0;if((f|0)>=(k|0)?(l=(k|0)==0?256:k<<1,(k|0)<(l|0)):0){k=a+196|0;m=Em(c[k>>2]|0,l<<2)|0;n=c[e>>2]|0;if((n|0)!=0){An(m|0,n|0,c[j>>2]<<2|0)|0;Fm(c[k>>2]|0,c[e>>2]|0,c[h>>2]<<2)}c[h>>2]=l;c[e>>2]=m;o=c[j>>2]|0}else o=f;c[j>>2]=o+1;c[(c[e>>2]|0)+(o<<2)>>2]=b}c[g>>2]=c[a+4>>2];i=d;return}function Uk(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;f=i;i=i+16|0;g=f;h=c[a>>2]|0;if((h|0)!=0){_m(c[a+12>>2]|0,h);c[a>>2]=0;c[a+8>>2]=0}if((d|0)==0)j=c[a+8>>2]|0;else{h=Ym(c[a+12>>2]|0,d*9|0)|0;c[a>>2]=h;k=h+(d<<3)|0;c[a+4>>2]=k;xn(k|0,1,d|0)|0;c[a+8>>2]=d;j=d}if((j|0)==0){i=f;return}j=c[a>>2]|0;if((d|0)>0){k=0;h=0;while(1){l=c[b+(k*28|0)>>2]|0;if(!((l|0)==-1)?(c[e+(l<<2)>>2]&16384|0)!=0:0){c[j+(k<<3)>>2]=c[b+(k*28|0)+8>>2];c[j+(k<<3)+4>>2]=l;m=h+1|0}else m=h;k=k+1|0;if((k|0)==(d|0)){n=
m;break}else h=m}}else n=0;c[a+8>>2]=n;c[g>>2]=30;Fl(j,j+(n<<3)|0,g);i=f;return}function Vk(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;if(!((c[a>>2]|0)>>>0<(c[b>>2]|0)>>>0)){e=0;i=d;return e|0}e=(c[a+4>>2]|0)<(c[b+4>>2]|0);i=d;return e|0}function Wk(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;if((c[a>>2]|0)>=(c[b>>2]|0)){e=0;i=d;return e|0}e=(c[a+4>>2]|0)<(c[b+4>>2]|0);i=d;return e|0}function Xk(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;if((c[b+
8>>2]&16384|0)==0){i=e;return}f=c[(c[b+400>>2]|0)+102952>>2]|0;if((f|0)==0){i=e;return}g=b+232|0;h=b+236|0;if((c[h>>2]|0)==0){j=d;k=d+8|0;l=d+4|0}else{m=d+8|0;n=d+4|0;o=c[g>>2]|0;while(1){p=c[o+8>>2]|0;q=c[o>>2]|0;r=c[m>>2]|0;if((r|0)!=0){s=c[d>>2]|0;t=s;u=s+(r<<3)-t>>3;a:do if((u|0)==0)v=s;else{r=s;w=u;while(1){x=w;while(1){y=(x|0)/2|0;if((c[r+(y<<3)>>2]|0)>>>0<p>>>0?(c[r+(y<<3)+4>>2]|0)<(q|0):0)break;if((x+1|0)>>>0<3){v=r;break a}else x=y}z=r+(y+1<<3)|0;A=x+-1|0;if((A|0)==(y|0)){v=z;break}else{r=
z;w=A-y|0}}}while(0);if((v|0)!=0?(q=(c[n>>2]|0)+((v-t|0)>>>3)|0,(a[q>>0]|0)!=0):0)a[q>>0]=0;else B=16}else B=16;if((B|0)==16){B=0;ib[c[(c[f>>2]|0)+16>>2]&7](f,b,o)}o=o+28|0;if((o|0)==((c[g>>2]|0)+((c[h>>2]|0)*28|0)|0)){j=d;k=m;l=n;break}}}n=c[j>>2]|0;j=c[l>>2]|0;l=c[k>>2]|0;if((l|0)<=0){i=e;return}k=0;do{if((a[j+k>>0]|0)!=0)pb[c[(c[f>>2]|0)+20>>2]&31](f,c[n+(k<<3)>>2]|0,b,c[n+(k<<3)+4>>2]|0);k=k+1|0}while((k|0)!=(l|0));i=e;return}function Yk(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,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;d=i;i=i+48|0;e=d+32|0;f=d+16|0;h=d;j=b+400|0;k=c[j>>2]|0;c[e>>2]=0;c[e+4>>2]=0;l=e+8|0;c[l>>2]=0;m=e+12|0;c[m>>2]=k+76;n=b+8|0;if((c[n>>2]&16384|0)!=0?(c[k+102952>>2]|0)!=0:0)Uk(e,c[b+232>>2]|0,c[b+236>>2]|0,c[b+88>>2]|0);if((c[b+156>>2]|0)>0?(k=c[b+44>>2]|0,(k|0)>0):0){o=c[b+168>>2]|0;p=b+4|0;q=c[b+160>>2]|0;r=b+176|0;s=0;do{c[o+(s<<2)>>2]=0;if((c[p>>2]|0)>((c[q+(s<<2)>>2]|0)+1|0))c[(c[r>>2]|0)+(s<<2)>>2]=0;s=s+1|0}while((s|
0)!=(k|0))}c[b+236>>2]=0;c[b+188>>2]=0;if((c[n>>2]&65536|0)==0)t=0;else t=c[(c[j>>2]|0)+102948>>2]|0;c[f+4>>2]=b;c[f>>2]=7056;c[f+8>>2]=t;t=c[b+44>>2]|0;g[h>>2]=3.4028234663852886E38;n=h+4|0;g[n>>2]=3.4028234663852886E38;k=h+8|0;g[k>>2]=-3.4028234663852886E38;s=h+12|0;g[s>>2]=-3.4028234663852886E38;if((t|0)>0){r=c[b+96>>2]|0;u=3.4028234663852886E38;v=3.4028234663852886E38;w=-3.4028234663852886E38;x=-3.4028234663852886E38;q=0;while(1){p=r+(q<<3)|0;y=+g[p>>2];z=+g[p+4>>2];A=u<y?u:y;B=v<z?v:z;C=+A;D=
+B;p=h;g[p>>2]=C;g[p+4>>2]=D;D=w>y?w:y;y=x>z?x:z;z=+D;C=+y;p=k;g[p>>2]=z;g[p+4>>2]=C;q=q+1|0;if((q|0)==(t|0)){E=y;F=A;G=B;H=D;break}else{u=A;v=B;w=D;x=y}}}else{E=-3.4028234663852886E38;F=3.4028234663852886E38;G=3.4028234663852886E38;H=-3.4028234663852886E38}x=+g[b+32>>2];g[h>>2]=F-x;g[n>>2]=G-x;g[k>>2]=H+x;g[s>>2]=E+x;Dj(c[j>>2]|0,f,h);if((a[b+316>>0]|0)!=0)Zk(b);Xk(b,e);b=c[e>>2]|0;if((b|0)==0){i=d;return}_m(c[m>>2]|0,b);c[e>>2]=0;c[l>>2]=0;i=d;return}function Zk(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,o=0,p=0,q=0;b=i;i=i+32|0;d=b+20|0;e=b;f=b+16|0;g=a+232|0;h=c[g>>2]|0;j=a+236|0;k=h+((c[j>>2]|0)*28|0)|0;c[d>>2]=31;yl(h,k,d);c[f>>2]=0;d=c[g>>2]|0;g=c[j>>2]|0;k=d+(g*28|0)|0;c[e>>2]=a;c[e+4>>2]=-1;c[e+8>>2]=0;c[e+12>>2]=f;a:do if((g|0)==0)l=d;else{a=d;do{if(xl(e,a)|0){l=a;break a}a=a+28|0}while((a|0)!=(k|0));m=c[j>>2]|0;n=c[f>>2]|0;o=m-n|0;c[j>>2]=o;i=b;return}while(0);if((l|0)==(k|0)){m=c[j>>2]|0;n=c[f>>2]|0;o=m-n|0;c[j>>2]=o;i=b;return}else{p=l;q=l}b:while(1){l=q;do{l=l+
28|0;if((l|0)==(k|0))break b}while(xl(e,l)|0);c[p+0>>2]=c[l+0>>2];c[p+4>>2]=c[l+4>>2];c[p+8>>2]=c[l+8>>2];c[p+12>>2]=c[l+12>>2];c[p+16>>2]=c[l+16>>2];c[p+20>>2]=c[l+20>>2];c[p+24>>2]=c[l+24>>2];p=p+28|0;q=l}m=c[j>>2]|0;n=c[f>>2]|0;o=m-n|0;c[j>>2]=o;i=b;return}function _k(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;d=i;e=c[a>>2]|0;f=c[b>>2]|0;if((e|0)==(f|0)){h=+g[a+12>>2]>+g[b+12>>2];i=d;return h|0}else{h=(e|0)<(f|0);i=d;return h|0}return 0}function Jf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;d=i;vh(a,b);c[a>>
2]=1056;e=b+20|0;f=c[e+4>>2]|0;h=a+68|0;c[h>>2]=c[e>>2];c[h+4>>2]=f;g[a+76>>2]=+g[b+28>>2];g[a+80>>2]=0;g[a+84>>2]=0;g[a+88>>2]=0;g[a+92>>2]=+g[b+32>>2];g[a+96>>2]=+g[b+36>>2];g[a+100>>2]=+g[b+40>>2];i=d;return}function Kf(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=
0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0;e=i;f=c[b+48>>2]|0;h=c[f+8>>2]|0;j=b+104|0;c[j>>2]=h;l=c[b+52>>2]|0;m=c[l+8>>2]|0;n=b+108|0;c[n>>2]=m;o=f+44|0;p=c[o>>2]|0;q=c[o+4>>2]|0;o=b+128|0;c[o>>2]=p;c[o+4>>2]=q;o=l+44|0;r=c[o>>2]|0;s=c[o+4>>2]|0;o=b+136|0;c[o>>2]=r;c[o+4>>2]=s;o=b+156|0;g[o>>2]=+g[f+136>>2];t=b+160|0;g[t>>2]=+g[l+136>>2];u=b+164|0;g[u>>2]=+g[f+144>>2];f=b+168|0;g[f>>2]=+g[l+144>>2];l=c[d+28>>2]|0;v=l+(h*12|0)|0;w=+g[v>>2];x=+g[v+4>>2];y=+g[l+(h*
12|0)+8>>2];v=d+32|0;z=c[v>>2]|0;A=z+(h*12|0)|0;B=+g[A>>2];C=+g[A+4>>2];D=+g[z+(h*12|0)+8>>2];h=l+(m*12|0)|0;E=+g[h>>2];F=+g[h+4>>2];G=+g[l+(m*12|0)+8>>2];l=z+(m*12|0)|0;H=+g[l>>2];I=+g[l+4>>2];J=+g[z+(m*12|0)+8>>2];K=+T(+y);L=+S(+y);M=+T(+G);N=+S(+G);O=-(c[k>>2]=p,+g[k>>2]);P=-(c[k>>2]=q,+g[k>>2]);Q=L*O-K*P;R=K*O+L*P;P=+Q;O=+R;q=b+112|0;g[q>>2]=P;g[q+4>>2]=O;O=-(c[k>>2]=r,+g[k>>2]);P=-(c[k>>2]=s,+g[k>>2]);U=N*O-M*P;V=M*O+N*P;P=+U;N=+V;s=b+120|0;g[s>>2]=P;g[s+4>>2]=N;N=+g[o>>2];P=+g[t>>2];O=+g[u>>
2];M=+g[f>>2];W=N+P;X=W+R*O*R+V*M*V;Y=O*Q;Z=M*U;_=-(R*Y)-V*Z;$=W+Q*Y+U*Z;Z=X*$-_*_;if(Z!=0)aa=1/Z;else aa=Z;Z=-(_*aa);g[b+172>>2]=$*aa;g[b+176>>2]=Z;g[b+180>>2]=Z;g[b+184>>2]=X*aa;aa=O+M;if(aa>0)ba=1/aa;else ba=aa;g[b+188>>2]=ba;ba=+g[b+68>>2];aa=+g[b+72>>2];X=+(E+U-w-Q-(L*ba-K*aa));w=+(F+V-x-R-(K*ba+L*aa));f=b+144|0;g[f>>2]=X;g[f+4>>2]=w;g[b+152>>2]=G-y-+g[b+76>>2];f=b+80|0;if((a[d+24>>0]|0)==0){g[f>>2]=0;g[b+84>>2]=0;g[b+88>>2]=0;ca=B;da=C;ea=H;fa=I;ga=D;ha=J;ia=c[j>>2]|0;ja=c[v>>2]|0;ka=ja+(ia*
12|0)|0;la=+ca;ma=+da;na=ka;oa=na;g[oa>>2]=la;pa=na+4|0;qa=pa;g[qa>>2]=ma;ra=c[j>>2]|0;sa=c[v>>2]|0;ta=sa+(ra*12|0)+8|0;g[ta>>2]=ga;ua=c[n>>2]|0;va=sa+(ua*12|0)|0;wa=+ea;xa=+fa;ya=va;za=ya;g[za>>2]=wa;Aa=ya+4|0;Ba=Aa;g[Ba>>2]=xa;Ca=c[n>>2]|0;Da=c[v>>2]|0;Ea=Da+(Ca*12|0)+8|0;g[Ea>>2]=ha;i=e;return}else{u=d+8|0;y=+g[u>>2];G=y*+g[f>>2];g[f>>2]=G;f=b+84|0;w=y*+g[f>>2];g[f>>2]=w;f=b+88|0;y=+g[u>>2]*+g[f>>2];g[f>>2]=y;ca=B-N*G;da=C-N*w;ea=H+P*G;fa=I+P*w;ga=D-O*(y+(w*Q-G*R));ha=J+M*(y+(w*U-G*V));ia=c[j>>
2]|0;ja=c[v>>2]|0;ka=ja+(ia*12|0)|0;la=+ca;ma=+da;na=ka;oa=na;g[oa>>2]=la;pa=na+4|0;qa=pa;g[qa>>2]=ma;ra=c[j>>2]|0;sa=c[v>>2]|0;ta=sa+(ra*12|0)+8|0;g[ta>>2]=ga;ua=c[n>>2]|0;va=sa+(ua*12|0)|0;wa=+ea;xa=+fa;ya=va;za=ya;g[za>>2]=wa;Aa=ya+4|0;Ba=Aa;g[Ba>>2]=xa;Ca=c[n>>2]|0;Da=c[v>>2]|0;Ea=Da+(Ca*12|0)+8|0;g[Ea>>2]=ha;i=e;return}}function Lf(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;d=i;e=a+104|
0;f=c[e>>2]|0;h=b+32|0;j=c[h>>2]|0;k=j+(f*12|0)|0;l=+g[k>>2];m=+g[k+4>>2];n=+g[j+(f*12|0)+8>>2];f=a+108|0;k=c[f>>2]|0;o=j+(k*12|0)|0;p=+g[o>>2];q=+g[o+4>>2];r=+g[j+(k*12|0)+8>>2];s=+g[a+156>>2];t=+g[a+160>>2];u=+g[a+164>>2];v=+g[a+168>>2];w=+g[b>>2];x=+g[b+4>>2]*+g[a+100>>2];b=a+88|0;y=+g[b>>2];z=w*+g[a+96>>2];A=y-+g[a+188>>2]*(r-n+x*+g[a+152>>2]);B=-z;C=A<z?A:z;z=C<B?B:C;g[b>>2]=z;C=z-y;y=n-u*C;n=r+v*C;C=+g[a+124>>2];r=+g[a+120>>2];z=+g[a+116>>2];B=+g[a+112>>2];A=+g[a+144>>2]*x+(z*y+(p-C*n-l));D=
x*+g[a+148>>2]+(q+r*n-m-B*y);x=+g[a+176>>2]*A+ +g[a+184>>2]*D;b=a+80|0;k=b;E=+g[k>>2];F=+g[k+4>>2];G=E-(+g[a+172>>2]*A+ +g[a+180>>2]*D);g[b>>2]=G;k=a+84|0;D=+g[k>>2]-x;g[k>>2]=D;x=w*+g[a+92>>2];w=G*G+D*D;if(w>x*x){A=+Q(+w);if(A<1.1920928955078125E-7){H=G;I=D}else{w=1/A;A=G*w;g[b>>2]=A;J=D*w;g[k>>2]=J;H=A;I=J}J=x*H;g[b>>2]=J;H=x*I;g[k>>2]=H;K=J;L=H}else{K=G;L=D}D=K-E;E=L-F;F=+(l-s*D);l=+(m-s*E);k=(c[h>>2]|0)+((c[e>>2]|0)*12|0)|0;g[k>>2]=F;g[k+4>>2]=l;k=c[h>>2]|0;g[k+((c[e>>2]|0)*12|0)+8>>2]=y-u*(B*
E-D*z);z=+(p+t*D);p=+(q+t*E);e=k+((c[f>>2]|0)*12|0)|0;g[e>>2]=z;g[e+4>>2]=p;g[(c[h>>2]|0)+((c[f>>2]|0)*12|0)+8>>2]=n+v*(E*r-D*C);i=d;return}function Mf(a,b){a=a|0;b=b|0;return 1}function Nf(a,b){a=a|0;b=b|0;var d=0,e=0;d=(c[b+48>>2]|0)+12|0;b=c[d+4>>2]|0;e=a;c[e>>2]=c[d>>2];c[e+4>>2]=b;return}function Of(a,b){a=a|0;b=b|0;var d=0,e=0;d=(c[b+52>>2]|0)+12|0;b=c[d+4>>2]|0;e=a;c[e>>2]=c[d>>2];c[e+4>>2]=b;return}function Pf(a,b,c){a=a|0;b=b|0;c=+c;var d=0;d=+g[b+84>>2]*c;g[a>>2]=+g[b+80>>2]*c;g[a+4>>2]=
d;return}function Qf(a,b){a=a|0;b=+b;return+(+g[a+88>>2]*b)}function Rf(a,d){a=a|0;d=d|0;var f=0,h=0,j=0,k=0,l=0;f=i;h=a+68|0;if(!(+g[d>>2]!=+g[h>>2])?!(+g[d+4>>2]!=+g[a+72>>2]):0){i=f;return}j=c[a+48>>2]|0;k=j+4|0;l=e[k>>1]|0;if((l&2|0)==0){b[k>>1]=l|2;g[j+160>>2]=0}j=c[a+52>>2]|0;a=j+4|0;l=e[a>>1]|0;if((l&2|0)==0){b[a>>1]=l|2;g[j+160>>2]=0}j=d;d=c[j+4>>2]|0;l=h;c[l>>2]=c[j>>2];c[l+4>>2]=d;i=f;return}function Sf(a,d){a=a|0;d=+d;var f=0,h=0,j=0,k=0,l=0;f=i;h=a+76|0;if(!(+g[h>>2]!=d)){i=f;return}j=
c[a+48>>2]|0;k=j+4|0;l=e[k>>1]|0;if((l&2|0)==0){b[k>>1]=l|2;g[j+160>>2]=0}j=c[a+52>>2]|0;a=j+4|0;l=e[a>>1]|0;if((l&2|0)==0){b[a>>1]=l|2;g[j+160>>2]=0}g[h>>2]=d;i=f;return}function Tf(a){a=a|0;var b=0,e=0,f=0,j=0,l=0;b=i;i=i+16|0;e=b;f=c[(c[a+48>>2]|0)+8>>2]|0;j=c[(c[a+52>>2]|0)+8>>2]|0;Rm(1104,e);c[e>>2]=f;Rm(1128,e);c[e>>2]=j;Rm(1160,e);c[e>>2]=d[a+61>>0]|0;Rm(1192,e);l=+g[a+72>>2];h[k>>3]=+g[a+68>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Rm(1232,
e);h[k>>3]=+g[a+76>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(1280,e);h[k>>3]=+g[a+92>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(1312,e);h[k>>3]=+g[a+96>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(1344,e);h[k>>3]=+g[a+100>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(1376,e);c[e>>2]=c[a+56>>2];Rm(1416,e);i=b;return}function Uf(a,b){a=a|0;b=b|0;return}function Vf(a){a=a|0;return}function Wf(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function Xf(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;h=i;c[a+8>>2]=b;c[a+12>>2]=d;j=+g[e>>2]-+g[b+12>>2];k=e+4|0;l=+g[k>>2]-+g[b+16>>2];m=+g[b+24>>2];n=+g[b+20>>2];o=+(j*m+l*n);p=+(m*l-j*n);b=a+20|0;g[b>>2]=o;g[b+4>>2]=p;p=+g[f>>2]-+g[d+12>>2];b=f+4|0;o=+g[b>>2]-+g[d+16>>2];n=+g[d+24>>2];j=+g[d+20>>2];l=+(p*n+o*j);m=+(n*o-p*j);d=a+28|0;g[d>>2]=l;g[d+4>>2]=m;m=+g[f>>2]-+g[e>>2];l=+g[b>>2]-+g[k>>2];g[a+36>>2]=+Q(+(m*m+l*l));i=h;return}function Yf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;d=i;vh(a,b);c[a>>2]=1504;e=b+20|0;f=c[e+4>>2]|0;h=a+80|
0;c[h>>2]=c[e>>2];c[h+4>>2]=f;f=b+28|0;h=c[f+4>>2]|0;e=a+88|0;c[e>>2]=c[f>>2];c[e+4>>2]=h;g[a+104>>2]=+g[b+36>>2];g[a+68>>2]=+g[b+40>>2];g[a+72>>2]=+g[b+44>>2];g[a+100>>2]=0;g[a+96>>2]=0;g[a+76>>2]=0;i=d;return}function Zf(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=
0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0;e=i;f=c[b+48>>2]|0;h=c[f+8>>2]|0;j=b+108|0;c[j>>2]=h;l=c[b+52>>2]|0;m=c[l+8>>2]|0;n=b+112|0;c[n>>2]=m;o=f+44|0;p=c[o>>2]|0;q=c[o+4>>2]|0;o=b+140|0;c[o>>2]=p;c[o+4>>2]=q;o=l+44|0;r=c[o>>2]|0;s=c[o+4>>2]|0;o=b+148|0;c[o>>2]=r;c[o+4>>2]=s;s=b+156|0;g[s>>2]=+g[f+136>>2];o=b+160|0;g[o>>2]=+g[l+136>>2];t=b+164|0;g[t>>2]=+g[f+144>>2];f=b+168|0;g[f>>2]=+g[l+144>>2];l=c[d+28>>2]|0;u=l+(h*12|0)|0;v=+g[u>>2];w=+g[u+4>>2];x=+g[l+(h*12|0)+8>>2];u=d+32|0;y=c[u>>2]|
0;z=y+(h*12|0)|0;A=+g[z>>2];B=+g[z+4>>2];C=+g[y+(h*12|0)+8>>2];h=l+(m*12|0)|0;D=+g[h>>2];E=+g[h+4>>2];F=+g[l+(m*12|0)+8>>2];l=y+(m*12|0)|0;G=+g[l>>2];H=+g[l+4>>2];I=+g[y+(m*12|0)+8>>2];J=+T(+x);K=+S(+x);x=+T(+F);L=+S(+F);F=+g[b+80>>2]-(c[k>>2]=p,+g[k>>2]);M=+g[b+84>>2]-(c[k>>2]=q,+g[k>>2]);N=K*F-J*M;O=J*F+K*M;M=+N;K=+O;q=b+124|0;g[q>>2]=M;g[q+4>>2]=K;K=+g[b+88>>2]-(c[k>>2]=r,+g[k>>2]);M=+g[b+92>>2]-+g[b+152>>2];F=L*K-x*M;J=x*K+L*M;M=+F;L=+J;r=b+132|0;g[r>>2]=M;g[r+4>>2]=L;r=b+116|0;L=D+F-v-N;v=E+
J-w-O;w=+L;E=+v;q=r;g[q>>2]=w;g[q+4>>2]=E;E=+Q(+(L*L+v*v));if(E>.004999999888241291){w=1/E;D=L*w;g[r>>2]=D;P=w*v;R=D}else{g[r>>2]=0;P=0;R=0}g[b+120>>2]=P;D=P*N-O*R;v=P*F-R*J;w=+g[s>>2];L=+g[t>>2];M=+g[o>>2];K=+g[f>>2];x=M+(w+D*D*L)+v*v*K;if(x!=0)U=1/x;else U=0;f=b+172|0;g[f>>2]=U;v=+g[b+68>>2];if(v>0){D=E-+g[b+104>>2];E=v*6.2831854820251465;v=E*U*E;V=+g[d>>2];W=V*(E*U*2*+g[b+72>>2]+v*V);o=b+96|0;g[o>>2]=W;if(W!=0)X=1/W;else X=0;g[o>>2]=X;g[b+76>>2]=v*D*V*X;V=x+X;if(V!=0)Y=1/V;else Y=0;g[f>>2]=Y}else{g[b+
96>>2]=0;g[b+76>>2]=0}if((a[d+24>>0]|0)==0){g[b+100>>2]=0;Z=A;_=B;$=G;aa=H;ba=C;ca=I;da=c[j>>2]|0;ea=c[u>>2]|0;fa=ea+(da*12|0)|0;ga=+Z;ha=+_;ia=fa;ja=ia;g[ja>>2]=ga;ka=ia+4|0;la=ka;g[la>>2]=ha;ma=c[j>>2]|0;na=c[u>>2]|0;oa=na+(ma*12|0)+8|0;g[oa>>2]=ba;pa=c[n>>2]|0;qa=na+(pa*12|0)|0;ra=+$;sa=+aa;ta=qa;ua=ta;g[ua>>2]=ra;va=ta+4|0;wa=va;g[wa>>2]=sa;xa=c[n>>2]|0;ya=c[u>>2]|0;za=ya+(xa*12|0)+8|0;g[za>>2]=ca;i=e;return}else{f=b+100|0;Y=+g[d+8>>2]*+g[f>>2];g[f>>2]=Y;V=R*Y;R=Y*P;Z=A-V*w;_=B-R*w;$=G+V*M;aa=
H+R*M;ba=C-L*(R*N-V*O);ca=I+K*(R*F-V*J);da=c[j>>2]|0;ea=c[u>>2]|0;fa=ea+(da*12|0)|0;ga=+Z;ha=+_;ia=fa;ja=ia;g[ja>>2]=ga;ka=ia+4|0;la=ka;g[la>>2]=ha;ma=c[j>>2]|0;na=c[u>>2]|0;oa=na+(ma*12|0)+8|0;g[oa>>2]=ba;pa=c[n>>2]|0;qa=na+(pa*12|0)|0;ra=+$;sa=+aa;ta=qa;ua=ta;g[ua>>2]=ra;va=ta+4|0;wa=va;g[wa>>2]=sa;xa=c[n>>2]|0;ya=c[u>>2]|0;za=ya+(xa*12|0)+8|0;g[za>>2]=ca;i=e;return}}function _f(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;d=i;e=a+
108|0;f=c[e>>2]|0;h=b+32|0;b=c[h>>2]|0;j=b+(f*12|0)|0;k=j;l=+g[k>>2];m=+g[k+4>>2];n=+g[b+(f*12|0)+8>>2];f=a+112|0;k=c[f>>2]|0;o=b+(k*12|0)|0;p=+g[o>>2];q=+g[o+4>>2];r=+g[b+(k*12|0)+8>>2];s=+g[a+128>>2];t=+g[a+124>>2];u=+g[a+136>>2];v=+g[a+132>>2];w=+g[a+116>>2];x=+g[a+120>>2];k=a+100|0;y=+g[k>>2];z=+g[a+172>>2]*(+g[a+76>>2]+(w*(p-r*u-(l-n*s))+x*(q+r*v-(m+n*t)))+ +g[a+96>>2]*y);A=-z;g[k>>2]=y-z;z=w*A;w=x*A;A=+g[a+156>>2];x=n-+g[a+164>>2]*(t*w-z*s);s=+g[a+160>>2];t=r+ +g[a+168>>2]*(w*v-z*u);u=+(l-A*
z);l=+(m-A*w);a=j;g[a>>2]=u;g[a+4>>2]=l;a=c[h>>2]|0;g[a+((c[e>>2]|0)*12|0)+8>>2]=x;x=+(p+z*s);z=+(q+w*s);e=a+((c[f>>2]|0)*12|0)|0;g[e>>2]=x;g[e+4>>2]=z;g[(c[h>>2]|0)+((c[f>>2]|0)*12|0)+8>>2]=t;i=d;return}function $f(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;d=i;if(+g[a+68>>2]>0){e=1;i=d;return e|0}f=a+108|0;h=c[f>>2]|0;j=b+28|0;b=c[j>>2]|0;k=b+(h*12|0)|0;l=k;m=+g[l>>2];n=+g[l+4>>2];o=+g[b+(h*12|0)+8>>2];h=a+112|0;l=
c[h>>2]|0;p=b+(l*12|0)|0;q=+g[p>>2];r=+g[p+4>>2];s=+g[b+(l*12|0)+8>>2];t=+T(+o);u=+S(+o);v=+T(+s);w=+S(+s);x=+g[a+80>>2]-+g[a+140>>2];y=+g[a+84>>2]-+g[a+144>>2];z=u*x-t*y;A=t*x+u*y;y=+g[a+88>>2]-+g[a+148>>2];u=+g[a+92>>2]-+g[a+152>>2];x=w*y-v*u;t=v*y+w*u;u=q+x-m-z;w=r+t-n-A;y=+Q(+(u*u+w*w));if(y<1.1920928955078125E-7){B=0;C=u;D=w}else{v=1/y;B=y;C=u*v;D=w*v}v=B-+g[a+104>>2];B=v<.20000000298023224?v:.20000000298023224;v=B<-.20000000298023224?-.20000000298023224:B;B=-(+g[a+172>>2]*v);w=C*B;C=D*B;B=+g[a+
156>>2];D=o-+g[a+164>>2]*(z*C-A*w);A=+g[a+160>>2];z=s+ +g[a+168>>2]*(x*C-t*w);t=+(m-B*w);m=+(n-B*C);a=k;g[a>>2]=t;g[a+4>>2]=m;a=c[j>>2]|0;g[a+((c[f>>2]|0)*12|0)+8>>2]=D;D=+(q+A*w);w=+(r+A*C);f=a+((c[h>>2]|0)*12|0)|0;g[f>>2]=D;g[f+4>>2]=w;g[(c[j>>2]|0)+((c[h>>2]|0)*12|0)+8>>2]=z;if(v>0)E=v;else E=-v;e=E<.004999999888241291;i=d;return e|0}function ag(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+48>>2]|0;e=+g[d+24>>2];f=+g[b+80>>2];h=+g[d+20>>2];i=+g[b+84>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+
12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function bg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+52>>2]|0;e=+g[d+24>>2];f=+g[b+88>>2];h=+g[d+20>>2];i=+g[b+92>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function cg(a,b,c){a=a|0;b=b|0;c=+c;var d=0;d=+g[b+100>>2]*c;c=d*+g[b+120>>2];g[a>>2]=+g[b+116>>2]*d;g[a+4>>2]=c;return}function dg(a,b){a=a|0;b=+b;return 0}function eg(a){a=a|0;var b=0,e=0,f=0,j=0,l=0;b=i;i=i+16|0;e=b;f=c[(c[a+48>>2]|0)+8>>2]|0;j=c[(c[a+52>>2]|0)+
8>>2]|0;Rm(1552,e);c[e>>2]=f;Rm(1584,e);c[e>>2]=j;Rm(1616,e);c[e>>2]=d[a+61>>0]|0;Rm(1648,e);l=+g[a+84>>2];h[k>>3]=+g[a+80>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Rm(1688,e);l=+g[a+92>>2];h[k>>3]=+g[a+88>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Rm(1736,e);h[k>>3]=+g[a+104>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(1784,e);h[k>>3]=+g[a+68>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(1808,e);h[k>>
3]=+g[a+72>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(1840,e);c[e>>2]=c[a+56>>2];Rm(1872,e);i=b;return}function fg(a){a=a|0;return}function gg(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function hg(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;f=i;c[a+8>>2]=b;c[a+12>>2]=d;h=+g[e>>2]-+g[b+12>>2];j=e+4|0;k=+g[j>>2]-+g[b+16>>2];l=+g[b+24>>2];m=+g[b+20>>2];n=+(h*l+k*m);o=+(l*k-h*m);b=a+20|0;g[b>>2]=n;g[b+4>>2]=o;o=+g[e>>2]-+g[d+12>>2];n=+g[j>>2]-+g[d+16>>2];m=+g[d+24>>2];h=+g[d+20>>
2];k=+(o*m+n*h);l=+(m*n-o*h);d=a+28|0;g[d>>2]=k;g[d+4>>2]=l;i=f;return}function ig(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;d=i;vh(a,b);c[a>>2]=1968;e=b+20|0;f=c[e+4>>2]|0;h=a+68|0;c[h>>2]=c[e>>2];c[h+4>>2]=f;f=b+28|0;h=c[f+4>>2]|0;e=a+76|0;c[e>>2]=c[f>>2];c[e+4>>2]=h;g[a+84>>2]=0;g[a+88>>2]=0;g[a+92>>2]=0;g[a+96>>2]=+g[b+36>>2];g[a+100>>2]=+g[b+40>>2];i=d;return}function jg(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0;e=i;f=c[b+48>>2]|0;h=c[f+8>>2]|0;j=b+104|0;c[j>>2]=h;l=c[b+52>>2]|0;m=c[l+8>>2]|0;n=b+108|0;c[n>>2]=m;o=f+44|0;p=c[o>>2]|0;q=c[o+4>>2]|0;o=b+128|0;c[o>>2]=p;c[o+4>>2]=q;o=l+44|0;r=c[o>>2]|0;s=c[o+4>>2]|0;o=b+136|0;c[o>>2]=r;c[o+4>>2]=s;o=b+144|0;g[o>>2]=+g[f+136>>2];t=+g[l+136>>2];g[b+148>>2]=t;u=+g[f+144>>2];g[b+152>>2]=u;v=
+g[l+144>>2];g[b+156>>2]=v;l=c[d+28>>2]|0;w=+g[l+(h*12|0)+8>>2];f=d+32|0;x=c[f>>2]|0;y=x+(h*12|0)|0;z=+g[y>>2];A=+g[y+4>>2];B=+g[x+(h*12|0)+8>>2];C=+g[l+(m*12|0)+8>>2];l=x+(m*12|0)|0;D=+g[l>>2];E=+g[l+4>>2];F=+g[x+(m*12|0)+8>>2];G=+T(+w);H=+S(+w);w=+T(+C);I=+S(+C);C=+g[b+68>>2]-(c[k>>2]=p,+g[k>>2]);J=+g[b+72>>2]-(c[k>>2]=q,+g[k>>2]);K=H*C-G*J;L=G*C+H*J;J=+K;H=+L;q=b+112|0;g[q>>2]=J;g[q+4>>2]=H;H=+g[b+76>>2]-(c[k>>2]=r,+g[k>>2]);J=+g[b+80>>2]-(c[k>>2]=s,+g[k>>2]);C=I*H-w*J;G=w*H+I*J;J=+C;I=+G;s=b+
120|0;g[s>>2]=J;g[s+4>>2]=I;I=+g[o>>2];J=I+t;H=J+L*u*L+G*v*G;w=u*K;M=v*C;N=-(L*w)-G*M;O=J+K*w+C*M;M=H*O-N*N;if(M!=0)P=1/M;else P=M;M=-(N*P);g[b+160>>2]=O*P;g[b+164>>2]=M;g[b+168>>2]=M;g[b+172>>2]=H*P;P=u+v;if(P>0)Q=1/P;else Q=P;g[b+176>>2]=Q;o=b+84|0;if((a[d+24>>0]|0)==0){g[o>>2]=0;g[b+88>>2]=0;g[b+92>>2]=0;R=z;U=A;V=D;W=E;X=B;Y=F;Z=c[j>>2]|0;_=c[f>>2]|0;$=_+(Z*12|0)|0;aa=+R;ba=+U;ca=$;da=ca;g[da>>2]=aa;ea=ca+4|0;fa=ea;g[fa>>2]=ba;ga=c[j>>2]|0;ha=c[f>>2]|0;ia=ha+(ga*12|0)+8|0;g[ia>>2]=X;ja=c[n>>2]|
0;ka=ha+(ja*12|0)|0;la=+V;ma=+W;na=ka;oa=na;g[oa>>2]=la;pa=na+4|0;qa=pa;g[qa>>2]=ma;ra=c[n>>2]|0;sa=c[f>>2]|0;ta=sa+(ra*12|0)+8|0;g[ta>>2]=Y;i=e;return}else{s=d+8|0;Q=+g[s>>2];P=Q*+g[o>>2];g[o>>2]=P;o=b+88|0;H=Q*+g[o>>2];g[o>>2]=H;o=b+92|0;Q=+g[s>>2]*+g[o>>2];g[o>>2]=Q;R=z-I*P;U=A-I*H;V=D+t*P;W=E+t*H;X=B-u*(Q+(H*K-P*L));Y=F+v*(Q+(H*C-P*G));Z=c[j>>2]|0;_=c[f>>2]|0;$=_+(Z*12|0)|0;aa=+R;ba=+U;ca=$;da=ca;g[da>>2]=aa;ea=ca+4|0;fa=ea;g[fa>>2]=ba;ga=c[j>>2]|0;ha=c[f>>2]|0;ia=ha+(ga*12|0)+8|0;g[ia>>2]=X;
ja=c[n>>2]|0;ka=ha+(ja*12|0)|0;la=+V;ma=+W;na=ka;oa=na;g[oa>>2]=la;pa=na+4|0;qa=pa;g[qa>>2]=ma;ra=c[n>>2]|0;sa=c[f>>2]|0;ta=sa+(ra*12|0)+8|0;g[ta>>2]=Y;i=e;return}}function kg(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;d=i;e=a+104|0;f=c[e>>2]|0;h=b+32|0;j=c[h>>2]|0;k=j+(f*12|0)|0;l=+g[k>>2];m=+g[k+4>>2];n=+g[j+(f*12|0)+8>>2];f=a+108|0;k=c[f>>2]|0;o=j+(k*12|0)|0;p=+g[o>>2];q=+g[o+4>>2];r=+g[j+
(k*12|0)+8>>2];s=+g[a+144>>2];t=+g[a+148>>2];u=+g[a+152>>2];v=+g[a+156>>2];w=+g[b>>2];b=a+92|0;x=+g[b>>2];y=w*+g[a+100>>2];z=x-(r-n)*+g[a+176>>2];A=-y;B=z<y?z:y;y=B<A?A:B;g[b>>2]=y;B=y-x;x=n-u*B;n=r+v*B;B=+g[a+124>>2];r=+g[a+120>>2];y=+g[a+116>>2];A=+g[a+112>>2];z=y*x+(p-B*n-l);C=q+r*n-m-A*x;D=+g[a+164>>2]*z+ +g[a+172>>2]*C;b=a+84|0;k=b;E=+g[k>>2];F=+g[k+4>>2];G=E-(+g[a+160>>2]*z+ +g[a+168>>2]*C);g[b>>2]=G;k=a+88|0;C=+g[k>>2]-D;g[k>>2]=C;D=w*+g[a+96>>2];w=G*G+C*C;if(w>D*D){z=+Q(+w);if(z<1.1920928955078125E-7){H=
G;I=C}else{w=1/z;z=G*w;g[b>>2]=z;J=C*w;g[k>>2]=J;H=z;I=J}J=D*H;g[b>>2]=J;H=D*I;g[k>>2]=H;K=J;L=H}else{K=G;L=C}C=K-E;E=L-F;F=+(l-s*C);l=+(m-s*E);k=(c[h>>2]|0)+((c[e>>2]|0)*12|0)|0;g[k>>2]=F;g[k+4>>2]=l;k=c[h>>2]|0;g[k+((c[e>>2]|0)*12|0)+8>>2]=x-u*(A*E-C*y);y=+(p+t*C);p=+(q+t*E);e=k+((c[f>>2]|0)*12|0)|0;g[e>>2]=y;g[e+4>>2]=p;g[(c[h>>2]|0)+((c[f>>2]|0)*12|0)+8>>2]=n+v*(E*r-C*B);i=d;return}function lg(a,b){a=a|0;b=b|0;return 1}function mg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+48>>2]|0;e=
+g[d+24>>2];f=+g[b+68>>2];h=+g[d+20>>2];i=+g[b+72>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function ng(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+52>>2]|0;e=+g[d+24>>2];f=+g[b+76>>2];h=+g[d+20>>2];i=+g[b+80>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function og(a,b,c){a=a|0;b=b|0;c=+c;var d=0;d=+g[b+88>>2]*c;g[a>>2]=+g[b+84>>2]*c;g[a+4>>2]=d;return}function pg(a,b){a=a|0;b=+b;return+(+g[a+92>>2]*b)}function qg(a){a=a|0;var b=
0,e=0,f=0,j=0,l=0;b=i;i=i+16|0;e=b;f=c[(c[a+48>>2]|0)+8>>2]|0;j=c[(c[a+52>>2]|0)+8>>2]|0;Rm(2016,e);c[e>>2]=f;Rm(2048,e);c[e>>2]=j;Rm(2080,e);c[e>>2]=d[a+61>>0]|0;Rm(2112,e);l=+g[a+72>>2];h[k>>3]=+g[a+68>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Rm(2152,e);l=+g[a+80>>2];h[k>>3]=+g[a+76>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Rm(2200,e);h[k>>3]=+g[a+96>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(2248,
e);h[k>>3]=+g[a+100>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(2280,e);c[e>>2]=c[a+56>>2];Rm(2312,e);i=b;return}function rg(a){a=a|0;return}function sg(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function tg(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;f=i;c[a+8>>2]=b;c[a+12>>2]=d;h=+g[e>>2]-+g[b+12>>2];j=e+4|0;k=+g[j>>2]-+g[b+16>>2];l=+g[b+24>>2];m=+g[b+20>>2];n=+(h*l+k*m);o=+(l*k-h*m);p=a+20|0;g[p>>2]=n;g[p+4>>2]=o;o=+g[e>>2]-+g[d+12>>2];n=+g[j>>2]-+g[d+16>>2];m=+g[d+24>>2];
h=+g[d+20>>2];k=+(o*m+n*h);l=+(m*n-o*h);j=a+28|0;g[j>>2]=k;g[j+4>>2]=l;g[a+36>>2]=+g[d+72>>2]-+g[b+72>>2];i=f;return}function ug(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;d=i;vh(a,b);c[a>>2]=2408;e=b+20|0;f=c[e+4>>2]|0;h=a+80|0;c[h>>2]=c[e>>2];c[h+4>>2]=f;f=b+28|0;h=c[f+4>>2]|0;e=a+88|0;c[e>>2]=c[f>>2];c[e+4>>2]=h;g[a+96>>2]=+g[b+36>>2];g[a+68>>2]=+g[b+40>>2];g[a+72>>2]=+g[b+44>>2];g[a+104>>2]=0;g[a+108>>2]=0;g[a+112>>2]=0;i=d;return}function vg(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0;e=i;i=i+48|0;f=e;h=c[b+48>>2]|0;j=c[h+8>>2]|0;l=b+116|0;c[l>>2]=j;m=c[b+52>>2]|0;n=c[m+8>>2]|0;o=b+120|0;c[o>>2]=n;p=h+44|0;q=c[p>>2]|0;r=c[p+4>>2]|0;p=b+140|0;c[p>>2]=q;c[p+4>>2]=r;p=m+44|0;s=c[p>>2]|0;t=c[p+4>>2]|0;p=b+148|0;c[p>>2]=s;c[p+4>>2]=t;p=b+
156|0;g[p>>2]=+g[h+136>>2];u=+g[m+136>>2];g[b+160>>2]=u;v=+g[h+144>>2];g[b+164>>2]=v;w=+g[m+144>>2];g[b+168>>2]=w;m=c[d+28>>2]|0;x=+g[m+(j*12|0)+8>>2];h=d+32|0;y=c[h>>2]|0;z=y+(j*12|0)|0;A=+g[z>>2];B=+g[z+4>>2];C=+g[y+(j*12|0)+8>>2];D=+g[m+(n*12|0)+8>>2];m=y+(n*12|0)|0;E=+g[m>>2];F=+g[m+4>>2];G=+g[y+(n*12|0)+8>>2];H=+T(+x);I=+S(+x);J=+T(+D);K=+S(+D);n=b+124|0;L=+g[b+80>>2]-(c[k>>2]=q,+g[k>>2]);M=+g[b+84>>2]-(c[k>>2]=r,+g[k>>2]);N=I*L-H*M;O=H*L+I*M;M=+N;I=+O;r=n;g[r>>2]=M;g[r+4>>2]=I;r=b+132|0;I=+g[b+
88>>2]-(c[k>>2]=s,+g[k>>2]);M=+g[b+92>>2]-(c[k>>2]=t,+g[k>>2]);L=K*I-J*M;H=J*I+K*M;M=+L;K=+H;t=r;g[t>>2]=M;g[t+4>>2]=K;K=+g[p>>2];M=K+u;p=b+128|0;t=b+136|0;g[f>>2]=M+v*O*O+w*H*H;I=-(v*O*N)-w*H*L;g[f+12>>2]=I;J=-(v*O)-w*H;g[f+24>>2]=J;g[f+4>>2]=I;g[f+16>>2]=M+v*N*N+w*L*L;M=v*N+w*L;g[f+28>>2]=M;g[f+8>>2]=J;g[f+20>>2]=M;M=v+w;g[f+32>>2]=M;s=b+68|0;q=b+172|0;if(+g[s>>2]>0){Im(f,q);if(M>0)P=1/M;else P=0;J=D-x-+g[b+96>>2];x=+g[s>>2]*6.2831854820251465;D=x*P*x;L=+g[d>>2];N=L*(x*P*2*+g[b+72>>2]+L*D);s=b+
100|0;g[s>>2]=N;if(N!=0)Q=1/N;else Q=0;g[s>>2]=Q;g[b+76>>2]=J*L*D*Q;D=M+Q;if(D!=0)R=1/D;else R=0;g[b+204>>2]=R}else{Jm(f,q);g[b+100>>2]=0;g[b+76>>2]=0}q=b+104|0;if((a[d+24>>0]|0)==0){g[q>>2]=0;g[b+108>>2]=0;g[b+112>>2]=0;U=A;V=B;W=E;X=F;Y=C;Z=G;_=c[l>>2]|0;$=c[h>>2]|0;aa=$+(_*12|0)|0;ba=+U;ca=+V;da=aa;ea=da;g[ea>>2]=ba;fa=da+4|0;ga=fa;g[ga>>2]=ca;ha=c[l>>2]|0;ia=c[h>>2]|0;ja=ia+(ha*12|0)+8|0;g[ja>>2]=Y;ka=c[o>>2]|0;la=ia+(ka*12|0)|0;ma=+W;na=+X;oa=la;pa=oa;g[pa>>2]=ma;qa=oa+4|0;ra=qa;g[ra>>2]=na;
sa=c[o>>2]|0;ta=c[h>>2]|0;ua=ta+(sa*12|0)+8|0;g[ua>>2]=Z;i=e;return}else{R=+g[d+8>>2];D=R*+g[q>>2];g[q>>2]=D;q=b+108|0;Q=R*+g[q>>2];g[q>>2]=Q;q=b+112|0;M=R*+g[q>>2];g[q>>2]=M;U=A-K*D;V=B-K*Q;W=E+u*D;X=F+u*Q;Y=C-v*(M+(Q*+g[n>>2]-D*+g[p>>2]));Z=G+w*(M+(Q*+g[r>>2]-D*+g[t>>2]));_=c[l>>2]|0;$=c[h>>2]|0;aa=$+(_*12|0)|0;ba=+U;ca=+V;da=aa;ea=da;g[ea>>2]=ba;fa=da+4|0;ga=fa;g[ga>>2]=ca;ha=c[l>>2]|0;ia=c[h>>2]|0;ja=ia+(ha*12|0)+8|0;g[ja>>2]=Y;ka=c[o>>2]|0;la=ia+(ka*12|0)|0;ma=+W;na=+X;oa=la;pa=oa;g[pa>>2]=ma;
qa=oa+4|0;ra=qa;g[ra>>2]=na;sa=c[o>>2]|0;ta=c[h>>2]|0;ua=ta+(sa*12|0)+8|0;g[ua>>2]=Z;i=e;return}}function wg(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,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;d=i;e=a+116|0;f=c[e>>2]|0;h=b+32|0;b=c[h>>2]|0;j=b+(f*12|0)|0;k=j;l=+g[k>>2];m=+g[k+4>>2];n=+g[b+(f*12|0)+8>>2];f=a+120|0;k=c[f>>
2]|0;o=b+(k*12|0)|0;p=+g[o>>2];q=+g[o+4>>2];r=+g[b+(k*12|0)+8>>2];s=+g[a+156>>2];t=+g[a+160>>2];u=+g[a+164>>2];v=+g[a+168>>2];if(+g[a+68>>2]>0){k=a+112|0;w=+g[k>>2];x=+g[a+204>>2]*(r-n+ +g[a+76>>2]+ +g[a+100>>2]*w);y=-x;g[k>>2]=w-x;x=n-u*y;w=r+v*y;y=+g[a+136>>2];z=+g[a+132>>2];A=+g[a+128>>2];B=+g[a+124>>2];C=A*x+(p-y*w-l);D=q+z*w-m-B*x;E=+g[a+172>>2]*C+ +g[a+184>>2]*D;F=+g[a+176>>2]*C+ +g[a+188>>2]*D;D=-E;C=-F;k=a+104|0;g[k>>2]=+g[k>>2]-E;k=a+108|0;g[k>>2]=+g[k>>2]-F;G=C;H=D;I=x-u*(B*C-A*D);J=w+v*
(z*C-y*D);K=t*H;L=t*G;M=s*H;N=s*G;O=p+K;P=q+L;Q=l-M;R=m-N;S=+Q;T=+R;U=j;V=U;g[V>>2]=S;W=U+4|0;X=W;g[X>>2]=T;Y=c[e>>2]|0;Z=c[h>>2]|0;_=Z+(Y*12|0)+8|0;g[_>>2]=I;$=c[f>>2]|0;aa=Z+($*12|0)|0;ba=+O;ca=+P;da=aa;ea=da;g[ea>>2]=ba;fa=da+4|0;ga=fa;g[ga>>2]=ca;ha=c[f>>2]|0;ia=c[h>>2]|0;ja=ia+(ha*12|0)+8|0;g[ja>>2]=J;i=d;return}else{D=+g[a+136>>2];y=+g[a+132>>2];C=+g[a+128>>2];z=+g[a+124>>2];w=p-r*D-l+n*C;A=q+r*y-m-n*z;B=r-n;x=w*+g[a+172>>2]+A*+g[a+184>>2]+B*+g[a+196>>2];F=w*+g[a+176>>2]+A*+g[a+188>>2]+B*+g[a+
200>>2];E=w*+g[a+180>>2]+A*+g[a+192>>2]+B*+g[a+204>>2];B=-x;A=-F;k=a+104|0;g[k>>2]=+g[k>>2]-x;k=a+108|0;g[k>>2]=+g[k>>2]-F;k=a+112|0;g[k>>2]=+g[k>>2]-E;G=A;H=B;I=n-u*(z*A-C*B-E);J=r+v*(y*A-D*B-E);K=t*H;L=t*G;M=s*H;N=s*G;O=p+K;P=q+L;Q=l-M;R=m-N;S=+Q;T=+R;U=j;V=U;g[V>>2]=S;W=U+4|0;X=W;g[X>>2]=T;Y=c[e>>2]|0;Z=c[h>>2]|0;_=Z+(Y*12|0)+8|0;g[_>>2]=I;$=c[f>>2]|0;aa=Z+($*12|0)|0;ba=+O;ca=+P;da=aa;ea=da;g[ea>>2]=ba;fa=da+4|0;ga=fa;g[ga>>2]=ca;ha=c[f>>2]|0;ia=c[h>>2]|0;ja=ia+(ha*12|0)+8|0;g[ja>>2]=J;i=d;return}}
function xg(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,R=0;d=i;i=i+80|0;e=d+40|0;f=d+32|0;h=d+24|0;j=d+12|0;k=d;l=a+116|0;m=c[l>>2]|0;n=b+28|0;b=c[n>>2]|0;o=b+(m*12|0)|0;p=+g[o>>2];q=+g[o+4>>2];r=+g[b+(m*12|0)+8>>2];m=a+120|0;o=c[m>>2]|0;s=b+(o*12|0)|0;t=+g[s>>2];u=+g[s+4>>2];v=+g[b+(o*12|0)+8>>2];w=+T(+r);x=+S(+r);y=+T(+v);z=+S(+v);A=+g[a+156>>2];B=+g[a+160>>2];C=+g[a+164>>
2];D=+g[a+168>>2];E=+g[a+80>>2]-+g[a+140>>2];F=+g[a+84>>2]-+g[a+144>>2];G=x*E-w*F;H=w*E+x*F;F=+g[a+88>>2]-+g[a+148>>2];x=+g[a+92>>2]-+g[a+152>>2];E=z*F-y*x;w=y*F+z*x;x=A+B;g[e>>2]=x+C*H*H+D*w*w;z=-(C*H*G)-D*w*E;g[e+12>>2]=z;F=-(C*H)-D*w;g[e+24>>2]=F;g[e+4>>2]=z;g[e+16>>2]=x+C*G*G+D*E*E;x=C*G+D*E;g[e+28>>2]=x;g[e+8>>2]=F;g[e+20>>2]=x;g[e+32>>2]=C+D;x=t+E-p-G;F=u+w-q-H;if(+g[a+68>>2]>0){g[f>>2]=x;g[f+4>>2]=F;z=+Q(+(F*F+x*x));Hm(h,e,f);y=-+g[h>>2];I=-+g[h+4>>2];J=I;K=y;L=E*I-w*y;M=G*I-H*y;N=0;O=z}else{z=
v-r-+g[a+96>>2];y=+Q(+(x*x+F*F));if(z>0)P=z;else P=-z;g[j>>2]=x;g[j+4>>2]=F;g[j+8>>2]=z;Gm(k,e,j);z=-+g[k>>2];F=-+g[k+4>>2];x=+g[k+8>>2];J=F;K=z;L=E*F-w*z-x;M=G*F-H*z-x;N=P;O=y}y=+(p-A*K);p=+(q-A*J);k=(c[n>>2]|0)+((c[l>>2]|0)*12|0)|0;g[k>>2]=y;g[k+4>>2]=p;k=c[n>>2]|0;g[k+((c[l>>2]|0)*12|0)+8>>2]=r-C*M;M=+(t+B*K);K=+(u+B*J);l=k+((c[m>>2]|0)*12|0)|0;g[l>>2]=M;g[l+4>>2]=K;g[(c[n>>2]|0)+((c[m>>2]|0)*12|0)+8>>2]=v+D*L;if(!(O<=.004999999888241291)){R=0;i=d;return R|0}R=N<=.03490658849477768;i=d;return R|
0}function yg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+48>>2]|0;e=+g[d+24>>2];f=+g[b+80>>2];h=+g[d+20>>2];i=+g[b+84>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function zg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+52>>2]|0;e=+g[d+24>>2];f=+g[b+88>>2];h=+g[d+20>>2];i=+g[b+92>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function Ag(a,b,c){a=a|0;b=b|0;c=+c;var d=0;d=+g[b+108>>2]*c;g[a>>2]=+g[b+104>>2]*c;g[a+4>>2]=d;return}
function Bg(a,b){a=a|0;b=+b;return+(+g[a+112>>2]*b)}function Cg(a){a=a|0;var b=0,e=0,f=0,j=0,l=0;b=i;i=i+16|0;e=b;f=c[(c[a+48>>2]|0)+8>>2]|0;j=c[(c[a+52>>2]|0)+8>>2]|0;Rm(2456,e);c[e>>2]=f;Rm(2480,e);c[e>>2]=j;Rm(2512,e);c[e>>2]=d[a+61>>0]|0;Rm(2544,e);l=+g[a+84>>2];h[k>>3]=+g[a+80>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Rm(2584,e);l=+g[a+92>>2];h[k>>3]=+g[a+88>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=
c[k+4>>2];Rm(2632,e);h[k>>3]=+g[a+96>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(2680,e);h[k>>3]=+g[a+68>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(2712,e);h[k>>3]=+g[a+72>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(2744,e);c[e>>2]=c[a+56>>2];Rm(2776,e);i=b;return}function Dg(a){a=a|0;return}function Eg(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function Fg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=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;d=i;vh(a,b);c[a>>2]=2864;e=a+92|0;f=a+100|0;h=a+108|0;j=a+116|0;l=a+124|0;m=a+132|0;n=b+20|0;o=c[n>>2]|0;c[a+68>>2]=o;p=b+24|0;q=c[p>>2]|0;c[a+72>>2]=q;r=c[o+4>>2]|0;c[a+76>>2]=r;s=c[q+4>>2]|0;c[a+80>>2]=s;t=c[o+48>>2]|0;c[a+84>>2]=t;u=c[o+52>>2]|0;c[a+48>>2]=u;v=+g[u+20>>2];w=+g[u+24>>2];x=+g[t+20>>2];y=+g[t+24>>2];o=c[n>>2]|0;if((r|0)==1){z=+g[u+72>>2];A=+g[t+72>>2];r=o+68|0;n=c[r+4>>2]|0;B=h;c[B>>2]=c[r>>2];c[B+4>>2]=n;n=o+76|0;B=c[n+4>>2]|0;r=e;c[r>>2]=c[n>>2];c[r+4>>2]=
B;C=+g[o+116>>2];g[a+140>>2]=C;g[l>>2]=0;g[a+128>>2]=0;D=z-A-C}else{C=+g[t+16>>2];A=+g[t+12>>2];z=+g[u+16>>2];E=+g[u+12>>2];u=o+68|0;t=c[u>>2]|0;B=c[u+4>>2]|0;u=h;c[u>>2]=t;c[u+4>>2]=B;u=o+76|0;h=c[u>>2]|0;r=c[u+4>>2]|0;u=e;c[u>>2]=h;c[u+4>>2]=r;g[a+140>>2]=+g[o+100>>2];u=o+84|0;o=c[u>>2]|0;e=c[u+4>>2]|0;u=l;c[u>>2]=o;c[u+4>>2]=e;F=(c[k>>2]=t,+g[k>>2]);G=(c[k>>2]=B,+g[k>>2]);H=(c[k>>2]=h,+g[k>>2]);I=(c[k>>2]=r,+g[k>>2]);J=E-A+(w*H-v*I);A=z-C+(v*H+w*I);I=(c[k>>2]=o,+g[k>>2])*(y*J+x*A-F);D=I+(c[k>>
2]=e,+g[k>>2])*(y*A-x*J-G)}e=c[q+48>>2]|0;c[a+88>>2]=e;o=c[q+52>>2]|0;c[a+52>>2]=o;G=+g[o+20>>2];J=+g[o+24>>2];x=+g[e+20>>2];A=+g[e+24>>2];q=c[p>>2]|0;if((s|0)==1){y=+g[o+72>>2];I=+g[e+72>>2];s=q+68|0;p=c[s+4>>2]|0;r=j;c[r>>2]=c[s>>2];c[r+4>>2]=p;p=q+76|0;r=c[p+4>>2]|0;s=f;c[s>>2]=c[p>>2];c[s+4>>2]=r;F=+g[q+116>>2];g[a+144>>2]=F;g[m>>2]=0;g[a+136>>2]=0;K=y-I-F;L=b+28|0;M=+g[L>>2];N=a+152|0;g[N>>2]=M;O=K*M;P=D+O;Q=a+148|0;g[Q>>2]=P;R=a+156|0;g[R>>2]=0;i=d;return}else{F=+g[e+16>>2];I=+g[e+12>>2];y=
+g[o+16>>2];w=+g[o+12>>2];o=q+68|0;e=c[o>>2]|0;r=c[o+4>>2]|0;o=j;c[o>>2]=e;c[o+4>>2]=r;o=q+76|0;j=c[o>>2]|0;s=c[o+4>>2]|0;o=f;c[o>>2]=j;c[o+4>>2]=s;g[a+144>>2]=+g[q+100>>2];o=q+84|0;q=c[o>>2]|0;f=c[o+4>>2]|0;o=m;c[o>>2]=q;c[o+4>>2]=f;H=(c[k>>2]=e,+g[k>>2]);v=(c[k>>2]=r,+g[k>>2]);C=(c[k>>2]=j,+g[k>>2]);z=(c[k>>2]=s,+g[k>>2]);E=w-I+(J*C-G*z);I=y-F+(G*C+J*z);z=(c[k>>2]=q,+g[k>>2])*(A*E+x*I-H);K=z+(c[k>>2]=f,+g[k>>2])*(A*I-x*E-v);L=b+28|0;M=+g[L>>2];N=a+152|0;g[N>>2]=M;O=K*M;P=D+O;Q=a+148|0;g[Q>>2]=P;
R=a+156|0;g[R>>2]=0;i=d;return}}function Gg(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=
0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0;e=i;f=c[b+48>>2]|0;h=c[f+8>>2]|0;j=b+160|0;c[j>>2]=h;l=c[b+52>>2]|0;m=c[l+8>>2]|0;n=b+164|0;c[n>>2]=m;o=c[b+84>>2]|0;p=c[o+8>>2]|0;q=b+168|0;c[q>>2]=p;r=c[b+88>>2]|0;s=c[r+8>>2]|0;t=b+172|0;c[t>>2]=s;u=b+176|0;v=f+44|0;w=c[v+4>>2]|0;x=u;c[x>>2]=c[v>>2];c[x+4>>2]=w;w=b+184|0;x=l+44|0;v=c[x+4>>2]|0;y=w;c[y>>2]=c[x>>2];c[y+4>>2]=v;v=b+192|0;y=o+44|0;x=c[y+4>>2]|0;z=
v;c[z>>2]=c[y>>2];c[z+4>>2]=x;x=r+44|0;z=c[x>>2]|0;y=c[x+4>>2]|0;x=b+200|0;c[x>>2]=z;c[x+4>>2]=y;A=+g[f+136>>2];g[b+208>>2]=A;B=+g[l+136>>2];g[b+212>>2]=B;C=+g[o+136>>2];g[b+216>>2]=C;D=+g[r+136>>2];g[b+220>>2]=D;E=+g[f+144>>2];g[b+224>>2]=E;F=+g[l+144>>2];g[b+228>>2]=F;G=+g[o+144>>2];g[b+232>>2]=G;H=+g[r+144>>2];g[b+236>>2]=H;r=c[d+28>>2]|0;I=+g[r+(h*12|0)+8>>2];o=d+32|0;l=c[o>>2]|0;f=l+(h*12|0)|0;J=+g[f>>2];K=+g[f+4>>2];L=+g[l+(h*12|0)+8>>2];M=+g[r+(m*12|0)+8>>2];h=l+(m*12|0)|0;N=+g[h>>2];O=+g[h+
4>>2];P=+g[l+(m*12|0)+8>>2];Q=+g[r+(p*12|0)+8>>2];m=l+(p*12|0)|0;R=+g[m>>2];U=+g[m+4>>2];V=+g[l+(p*12|0)+8>>2];W=+g[r+(s*12|0)+8>>2];r=l+(s*12|0)|0;X=+g[r>>2];Y=+g[r+4>>2];Z=+g[l+(s*12|0)+8>>2];_=+T(+I);$=+S(+I);I=+T(+M);aa=+S(+M);M=+T(+Q);ba=+S(+Q);Q=+T(+W);ca=+S(+W);s=b+272|0;g[s>>2]=0;W=(c[k>>2]=z,+g[k>>2]);if((c[b+76>>2]|0)==1){g[b+240>>2]=0;g[b+244>>2]=0;g[b+256>>2]=1;g[b+264>>2]=1;da=E+G;ea=0;fa=0;ga=1;ha=1}else{ia=+g[b+124>>2];ja=+g[b+128>>2];ka=ba*ia-M*ja;la=M*ia+ba*ja;ja=+g[b+108>>2]-+g[v>>
2];ia=+g[b+112>>2]-+g[b+196>>2];ma=+g[b+92>>2]-+g[u>>2];na=+g[b+96>>2]-+g[b+180>>2];oa=+ka;pa=+la;u=b+240|0;g[u>>2]=oa;g[u+4>>2]=pa;pa=la*(ba*ja-M*ia)-ka*(M*ja+ba*ia);g[b+264>>2]=pa;ia=la*($*ma-_*na)-ka*(_*ma+$*na);g[b+256>>2]=ia;da=C+A+pa*G*pa+ia*E*ia;ea=ka;fa=la;ga=ia;ha=pa}pa=da+0;g[s>>2]=pa;if((c[b+80>>2]|0)==1){g[b+248>>2]=0;g[b+252>>2]=0;da=+g[b+152>>2];g[b+260>>2]=da;g[b+268>>2]=da;qa=da*da*(F+H);ra=0;sa=0;ta=da;ua=da}else{da=+g[b+132>>2];ia=+g[b+136>>2];la=ca*da-Q*ia;ka=Q*da+ca*ia;ia=+g[b+
116>>2]-W;W=+g[b+120>>2]-+g[b+204>>2];da=+g[b+100>>2]-+g[w>>2];na=+g[b+104>>2]-+g[b+188>>2];$=+g[b+152>>2];ma=la*$;_=ka*$;ba=+ma;ja=+_;w=b+248|0;g[w>>2]=ba;g[w+4>>2]=ja;ja=(ka*(ca*ia-Q*W)-la*(Q*ia+ca*W))*$;g[b+268>>2]=ja;W=$*(ka*(aa*da-I*na)-la*(I*da+aa*na));g[b+260>>2]=W;qa=$*$*(D+B)+ja*H*ja+W*W*F;ra=ma;sa=_;ta=W;ua=ja}ja=pa+qa;g[s>>2]=ja;if(ja>0)va=1/ja;else va=0;g[s>>2]=va;s=b+156|0;if((a[d+24>>0]|0)==0){g[s>>2]=0;wa=J;xa=K;ya=N;za=O;Aa=R;Ba=U;Ca=X;Da=Y;Ea=L;Fa=P;Ga=V;Ha=Z;Ia=c[j>>2]|0;Ja=c[o>>
2]|0;Ka=Ja+(Ia*12|0)|0;La=+wa;Ma=+xa;Na=Ka;Oa=Na;g[Oa>>2]=La;Pa=Na+4|0;Qa=Pa;g[Qa>>2]=Ma;Ra=c[j>>2]|0;Sa=c[o>>2]|0;Ta=Sa+(Ra*12|0)+8|0;g[Ta>>2]=Ea;Ua=c[n>>2]|0;Va=Sa+(Ua*12|0)|0;Wa=+ya;Xa=+za;Ya=Va;Za=Ya;g[Za>>2]=Wa;_a=Ya+4|0;$a=_a;g[$a>>2]=Xa;ab=c[n>>2]|0;bb=c[o>>2]|0;cb=bb+(ab*12|0)+8|0;g[cb>>2]=Fa;db=c[q>>2]|0;eb=bb+(db*12|0)|0;fb=+Aa;gb=+Ba;hb=eb;ib=hb;g[ib>>2]=fb;jb=hb+4|0;kb=jb;g[kb>>2]=gb;lb=c[q>>2]|0;mb=c[o>>2]|0;nb=mb+(lb*12|0)+8|0;g[nb>>2]=Ga;ob=c[t>>2]|0;pb=mb+(ob*12|0)|0;qb=+Ca;rb=+Da;
sb=pb;tb=sb;g[tb>>2]=qb;ub=sb+4|0;vb=ub;g[vb>>2]=rb;wb=c[t>>2]|0;xb=c[o>>2]|0;yb=xb+(wb*12|0)+8|0;g[yb>>2]=Ha;i=e;return}else{va=+g[s>>2];ja=A*va;A=va*B;B=va*C;C=va*D;wa=J+ea*ja;xa=K+ja*fa;ya=N+ra*A;za=O+A*sa;Aa=R-ea*B;Ba=U-fa*B;Ca=X-ra*C;Da=Y-sa*C;Ea=L+va*E*ga;Fa=P+va*F*ta;Ga=V-va*G*ha;Ha=Z-va*H*ua;Ia=c[j>>2]|0;Ja=c[o>>2]|0;Ka=Ja+(Ia*12|0)|0;La=+wa;Ma=+xa;Na=Ka;Oa=Na;g[Oa>>2]=La;Pa=Na+4|0;Qa=Pa;g[Qa>>2]=Ma;Ra=c[j>>2]|0;Sa=c[o>>2]|0;Ta=Sa+(Ra*12|0)+8|0;g[Ta>>2]=Ea;Ua=c[n>>2]|0;Va=Sa+(Ua*12|0)|0;Wa=
+ya;Xa=+za;Ya=Va;Za=Ya;g[Za>>2]=Wa;_a=Ya+4|0;$a=_a;g[$a>>2]=Xa;ab=c[n>>2]|0;bb=c[o>>2]|0;cb=bb+(ab*12|0)+8|0;g[cb>>2]=Fa;db=c[q>>2]|0;eb=bb+(db*12|0)|0;fb=+Aa;gb=+Ba;hb=eb;ib=hb;g[ib>>2]=fb;jb=hb+4|0;kb=jb;g[kb>>2]=gb;lb=c[q>>2]|0;mb=c[o>>2]|0;nb=mb+(lb*12|0)+8|0;g[nb>>2]=Ga;ob=c[t>>2]|0;pb=mb+(ob*12|0)|0;qb=+Ca;rb=+Da;sb=pb;tb=sb;g[tb>>2]=qb;ub=sb+4|0;vb=ub;g[vb>>2]=rb;wb=c[t>>2]|0;xb=c[o>>2]|0;yb=xb+(wb*12|0)+8|0;g[yb>>2]=Ha;i=e;return}}function Hg(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;d=i;e=a+160|0;f=c[e>>2]|0;h=b+32|0;b=c[h>>2]|0;j=b+(f*12|0)|0;k=+g[j>>2];l=+g[j+4>>2];m=+g[b+(f*12|0)+8>>2];f=a+164|0;j=c[f>>2]|0;n=b+(j*12|0)|0;o=+g[n>>2];p=+g[n+4>>2];q=+g[b+(j*12|0)+8>>2];j=a+168|0;n=c[j>>2]|0;r=b+(n*12|0)|0;s=+g[r>>2];t=+g[r+4>>2];u=+g[b+(n*12|0)+8>>2];n=a+172|0;r=c[n>>2]|0;v=b+(r*12|0)|0;w=+g[v>>2];x=+g[v+4>>2];y=+g[b+(r*12|0)+8>>2];z=+g[a+240>>2];A=+g[a+244>>2];B=+g[a+248>>2];C=
+g[a+252>>2];D=+g[a+256>>2];E=+g[a+264>>2];F=+g[a+260>>2];G=+g[a+268>>2];H=+g[a+272>>2]*((k-s)*z+(l-t)*A+((o-w)*B+(p-x)*C)+(m*D-u*E+(q*F-y*G)));I=-H;r=a+156|0;g[r>>2]=+g[r>>2]-H;H=+g[a+208>>2]*I;J=m+ +g[a+224>>2]*I*D;D=+g[a+212>>2]*I;m=q+ +g[a+228>>2]*I*F;F=+g[a+216>>2]*I;q=u-+g[a+232>>2]*I*E;E=+g[a+220>>2]*I;u=y-+g[a+236>>2]*I*G;G=+(k+z*H);k=+(l+A*H);a=(c[h>>2]|0)+((c[e>>2]|0)*12|0)|0;g[a>>2]=G;g[a+4>>2]=k;a=c[h>>2]|0;g[a+((c[e>>2]|0)*12|0)+8>>2]=J;J=+(o+B*D);o=+(p+D*C);e=a+((c[f>>2]|0)*12|0)|0;
g[e>>2]=J;g[e+4>>2]=o;e=c[h>>2]|0;g[e+((c[f>>2]|0)*12|0)+8>>2]=m;m=+(s-z*F);z=+(t-A*F);f=e+((c[j>>2]|0)*12|0)|0;g[f>>2]=m;g[f+4>>2]=z;f=c[h>>2]|0;g[f+((c[j>>2]|0)*12|0)+8>>2]=q;q=+(w-B*E);B=+(x-C*E);j=f+((c[n>>2]|0)*12|0)|0;g[j>>2]=q;g[j+4>>2]=B;g[(c[h>>2]|0)+((c[n>>2]|0)*12|0)+8>>2]=u;i=d;return}function Ig(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,U=0,V=0,W=0,X=
0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;d=i;e=a+160|0;f=c[e>>2]|0;h=b+28|0;b=c[h>>2]|0;j=b+(f*12|0)|0;k=j;l=+g[k>>2];m=+g[k+4>>2];n=+g[b+(f*12|0)+8>>2];f=a+164|0;k=c[f>>2]|0;o=b+(k*12|0)|0;p=+g[o>>2];q=+g[o+4>>2];r=+g[b+(k*12|0)+8>>2];k=a+168|0;o=c[k>>2]|0;s=b+(o*12|0)|0;t=+g[s>>2];u=+g[s+4>>2];v=+g[b+(o*12|0)+8>>2];o=a+172|0;s=c[o>>2]|0;w=b+(s*12|0)|0;x=+g[w>>2];y=+g[w+4>>2];z=+g[b+(s*12|0)+8>>2];A=+T(+n);B=+S(+n);C=+T(+r);D=+S(+r);E=+T(+v);F=+S(+v);G=+T(+z);H=+S(+z);
if((c[a+76>>2]|0)==1){I=+g[a+224>>2];J=+g[a+232>>2];K=0;L=0;M=I;N=J;O=1;P=1;Q=n-v-+g[a+140>>2];R=I+J}else{J=+g[a+124>>2];I=+g[a+128>>2];U=F*J-E*I;V=E*J+F*I;W=+g[a+108>>2]-+g[a+192>>2];X=+g[a+112>>2]-+g[a+196>>2];Y=+g[a+92>>2]-+g[a+176>>2];Z=+g[a+96>>2]-+g[a+180>>2];_=B*Y-A*Z;$=A*Y+B*Z;Z=V*(F*W-E*X)-U*(E*W+F*X);B=V*_-U*$;Y=+g[a+232>>2];A=+g[a+224>>2];aa=l-t+_;_=m-u+$;K=U;L=V;M=A;N=Y;O=B;P=Z;Q=J*(F*aa+E*_-W)+I*(F*_-E*aa-X);R=+g[a+216>>2]+ +g[a+208>>2]+Z*Z*Y+B*A*B}if((c[a+80>>2]|0)==1){B=+g[a+152>>2];
A=+g[a+228>>2];Y=+g[a+236>>2];ba=B*B*(A+Y);ca=B;da=0;ea=0;fa=A;ga=Y;ha=B;ia=B;ja=r-z-+g[a+144>>2]}else{B=+g[a+132>>2];Y=+g[a+136>>2];A=H*B-G*Y;Z=G*B+H*Y;X=+g[a+116>>2]-+g[a+200>>2];aa=+g[a+120>>2]-+g[a+204>>2];E=+g[a+100>>2]-+g[a+184>>2];_=+g[a+104>>2]-+g[a+188>>2];F=D*E-C*_;I=C*E+D*_;_=+g[a+152>>2];D=_*(Z*(H*X-G*aa)-A*(G*X+H*aa));E=_*(Z*F-A*I);C=+g[a+236>>2];W=+g[a+228>>2];J=p-x+F;F=q-y+I;ba=_*_*(+g[a+220>>2]+ +g[a+212>>2])+D*D*C+E*W*E;ca=_;da=A*_;ea=Z*_;fa=W;ga=C;ha=E;ia=D;ja=B*(H*J+G*F-X)+Y*(H*
F-G*J-aa)}aa=R+0+ba;if(aa>0)ka=-(Q+ja*ca-+g[a+148>>2])/aa;else ka=0;aa=ka*+g[a+208>>2];ca=ka*+g[a+212>>2];ja=ka*+g[a+216>>2];Q=ka*+g[a+220>>2];ba=+(l+K*aa);l=+(m+L*aa);a=j;g[a>>2]=ba;g[a+4>>2]=l;a=c[h>>2]|0;g[a+((c[e>>2]|0)*12|0)+8>>2]=n+O*ka*M;M=+(p+da*ca);p=+(q+ea*ca);e=a+((c[f>>2]|0)*12|0)|0;g[e>>2]=M;g[e+4>>2]=p;e=c[h>>2]|0;g[e+((c[f>>2]|0)*12|0)+8>>2]=r+ha*ka*fa;fa=+(t-K*ja);K=+(u-L*ja);f=e+((c[k>>2]|0)*12|0)|0;g[f>>2]=fa;g[f+4>>2]=K;f=c[h>>2]|0;g[f+((c[k>>2]|0)*12|0)+8>>2]=v-P*ka*N;N=+(x-da*
Q);da=+(y-ea*Q);k=f+((c[o>>2]|0)*12|0)|0;g[k>>2]=N;g[k+4>>2]=da;g[(c[h>>2]|0)+((c[o>>2]|0)*12|0)+8>>2]=z-ia*ka*ga;i=d;return 1}function Jg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+48>>2]|0;e=+g[d+24>>2];f=+g[b+92>>2];h=+g[d+20>>2];i=+g[b+96>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function Kg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+52>>2]|0;e=+g[d+24>>2];f=+g[b+100>>2];h=+g[d+20>>2];i=+g[b+104>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*
f-h*i);g[a+4>>2]=j;return}function Lg(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0;d=+g[b+156>>2];e=d*+g[b+244>>2]*c;g[a>>2]=d*+g[b+240>>2]*c;g[a+4>>2]=e;return}function Mg(a,b){a=a|0;b=+b;return+(+g[a+156>>2]*+g[a+256>>2]*b)}function Ng(a){a=a|0;return+ +g[a+152>>2]}function Og(a){a=a|0;var b=0,e=0,f=0,j=0,l=0,m=0;b=i;i=i+16|0;e=b;f=c[(c[a+48>>2]|0)+8>>2]|0;j=c[(c[a+52>>2]|0)+8>>2]|0;l=c[(c[a+68>>2]|0)+56>>2]|0;m=c[(c[a+72>>2]|0)+56>>2]|0;Rm(2912,e);c[e>>2]=f;Rm(2936,e);c[e>>2]=j;Rm(2968,e);c[e>>2]=d[a+61>>
0]|0;Rm(3E3,e);c[e>>2]=l;Rm(3040,e);c[e>>2]=m;Rm(3072,e);h[k>>3]=+g[a+152>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(3104,e);c[e>>2]=c[a+56>>2];Rm(3128,e);i=b;return}function Pg(a){a=a|0;return}function Qg(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function Rg(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;h=i;c[a+8>>2]=b;c[a+12>>2]=d;j=+g[e>>2]-+g[b+12>>2];k=e+4|0;l=+g[k>>2]-+g[b+16>>2];m=b+24|0;n=+g[m>>2];o=b+20|0;p=+g[o>>2];q=+(j*n+l*p);r=+(n*l-j*p);s=a+20|
0;g[s>>2]=q;g[s+4>>2]=r;r=+g[e>>2]-+g[d+12>>2];q=+g[k>>2]-+g[d+16>>2];p=+g[d+24>>2];j=+g[d+20>>2];l=+(r*p+q*j);n=+(p*q-r*j);k=a+28|0;g[k>>2]=l;g[k+4>>2]=n;n=+g[m>>2];l=+g[f>>2];j=+g[o>>2];r=+g[f+4>>2];q=+(n*l+j*r);p=+(n*r-l*j);f=a+36|0;g[f>>2]=q;g[f+4>>2]=p;g[a+44>>2]=+g[d+72>>2]-+g[b+72>>2];i=h;return}function Sg(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=i;vh(b,d);c[b>>2]=3216;f=b+84|0;h=d+20|0;j=c[h+4>>2]|0;l=b+68|0;c[l>>2]=c[h>>2];c[l+4>>2]=j;j=d+28|0;l=c[j+4>>2]|0;h=b+
76|0;c[h>>2]=c[j>>2];c[h+4>>2]=l;l=d+36|0;h=c[l>>2]|0;j=c[l+4>>2]|0;l=f;c[l>>2]=h;c[l+4>>2]=j;m=(c[k>>2]=h,+g[k>>2]);n=(c[k>>2]=j,+g[k>>2]);o=+Q(+(m*m+n*n));if(o<1.1920928955078125E-7){p=n;q=m}else{r=1/o;o=m*r;g[f>>2]=o;m=n*r;g[b+88>>2]=m;p=m;q=o}o=+-p;p=+q;f=b+92|0;g[f>>2]=o;g[f+4>>2]=p;g[b+100>>2]=+g[d+44>>2];f=b+104|0;g[b+252>>2]=0;j=d+52|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;g[b+120>>2]=+g[j>>2];g[b+124>>2]=+g[d+56>>2];g[b+128>>2]=+g[d+64>>2];g[b+132>>2]=+g[d+68>>2];a[b+136>>0]=a[d+
48>>0]|0;a[b+137>>0]=a[d+60>>0]|0;c[b+140>>2]=0;d=b+184|0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;i=e;return}function Tg(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0;e=i;f=c[b+48>>2]|0;h=
c[f+8>>2]|0;j=b+144|0;c[j>>2]=h;l=c[b+52>>2]|0;m=c[l+8>>2]|0;n=b+148|0;c[n>>2]=m;o=f+44|0;p=c[o>>2]|0;q=c[o+4>>2]|0;o=b+152|0;c[o>>2]=p;c[o+4>>2]=q;o=l+44|0;r=c[o>>2]|0;s=c[o+4>>2]|0;o=b+160|0;c[o>>2]=r;c[o+4>>2]=s;o=b+168|0;g[o>>2]=+g[f+136>>2];t=b+172|0;g[t>>2]=+g[l+136>>2];u=+g[f+144>>2];g[b+176>>2]=u;v=+g[l+144>>2];g[b+180>>2]=v;l=c[d+28>>2]|0;f=l+(h*12|0)|0;w=+g[f>>2];x=+g[f+4>>2];y=+g[l+(h*12|0)+8>>2];f=d+32|0;z=c[f>>2]|0;A=z+(h*12|0)|0;B=+g[A>>2];C=+g[A+4>>2];D=+g[z+(h*12|0)+8>>2];h=l+(m*12|
0)|0;E=+g[h>>2];F=+g[h+4>>2];G=+g[l+(m*12|0)+8>>2];l=z+(m*12|0)|0;H=+g[l>>2];I=+g[l+4>>2];J=+g[z+(m*12|0)+8>>2];K=+T(+y);L=+S(+y);y=+T(+G);M=+S(+G);G=+g[b+68>>2]-(c[k>>2]=p,+g[k>>2]);N=+g[b+72>>2]-(c[k>>2]=q,+g[k>>2]);O=L*G-K*N;P=K*G+L*N;N=+g[b+76>>2]-(c[k>>2]=r,+g[k>>2]);G=+g[b+80>>2]-(c[k>>2]=s,+g[k>>2]);Q=M*N-y*G;R=y*N+M*G;G=E-w+Q-O;w=F-x+R-P;x=+g[o>>2];F=+g[t>>2];E=+g[b+84>>2];M=+g[b+88>>2];N=L*E-K*M;y=K*E+L*M;M=+N;E=+y;t=b+184|0;g[t>>2]=M;g[t+4>>2]=E;E=O+G;O=P+w;P=E*y-O*N;g[b+208>>2]=P;M=Q*y-
R*N;g[b+212>>2]=M;U=x+F;V=u*P;W=v*M;X=U+P*V+M*W;if(X>0)Y=1/X;else Y=X;g[b+252>>2]=Y;Y=+g[b+92>>2];Z=+g[b+96>>2];_=L*Y-K*Z;$=K*Y+L*Z;Z=+_;L=+$;t=b+192|0;g[t>>2]=Z;g[t+4>>2]=L;L=E*$-O*_;g[b+200>>2]=L;O=Q*$-R*_;g[b+204>>2]=O;R=u*L;Q=v*O;E=R+Q;Z=R*P+Q*M;Y=v+u;K=V+W;g[b+216>>2]=U+L*R+O*Q;g[b+220>>2]=E;g[b+224>>2]=Z;g[b+228>>2]=E;g[b+232>>2]=Y==0?1:Y;g[b+236>>2]=K;g[b+240>>2]=Z;g[b+244>>2]=K;g[b+248>>2]=X;do if((a[b+136>>0]|0)!=0){X=G*N+w*y;K=+g[b+124>>2];Z=+g[b+120>>2];Y=K-Z;if(Y>0)aa=Y;else aa=-Y;if(aa<
.009999999776482582){c[b+140>>2]=3;break}if(X<=Z){t=b+140|0;if((c[t>>2]|0)==1)break;c[t>>2]=1;g[b+112>>2]=0;break}t=b+140|0;if(!(X>=K)){c[t>>2]=0;g[b+112>>2]=0;break}if((c[t>>2]|0)!=2){c[t>>2]=2;g[b+112>>2]=0}}else{c[b+140>>2]=0;g[b+112>>2]=0}while(0);if((a[b+137>>0]|0)==0)g[b+116>>2]=0;t=b+104|0;if((a[d+24>>0]|0)==0){c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;ba=B;ca=C;da=H;ea=I;fa=D;ga=J;ha=c[j>>2]|0;ia=c[f>>2]|0;ja=ia+(ha*12|0)|0;ka=+ba;la=+ca;ma=ja;na=ma;g[na>>2]=ka;oa=ma+4|0;pa=oa;g[pa>>
2]=la;qa=c[j>>2]|0;ra=c[f>>2]|0;sa=ra+(qa*12|0)+8|0;g[sa>>2]=fa;ta=c[n>>2]|0;ua=ra+(ta*12|0)|0;va=+da;wa=+ea;xa=ua;ya=xa;g[ya>>2]=va;za=xa+4|0;Aa=za;g[Aa>>2]=wa;Ba=c[n>>2]|0;Ca=c[f>>2]|0;Da=Ca+(Ba*12|0)+8|0;g[Da>>2]=ga;i=e;return}else{o=d+8|0;aa=+g[o>>2];w=aa*+g[t>>2];g[t>>2]=w;t=b+108|0;G=aa*+g[t>>2];g[t>>2]=G;t=b+112|0;K=aa*+g[t>>2];g[t>>2]=K;t=b+116|0;aa=+g[o>>2]*+g[t>>2];g[t>>2]=aa;X=aa+K;K=w*_+N*X;N=w*$+X*y;ba=B-x*K;ca=C-x*N;da=H+F*K;ea=I+F*N;fa=D-u*(w*L+G+X*P);ga=J+v*(G+w*O+X*M);ha=c[j>>2]|
0;ia=c[f>>2]|0;ja=ia+(ha*12|0)|0;ka=+ba;la=+ca;ma=ja;na=ma;g[na>>2]=ka;oa=ma+4|0;pa=oa;g[pa>>2]=la;qa=c[j>>2]|0;ra=c[f>>2]|0;sa=ra+(qa*12|0)+8|0;g[sa>>2]=fa;ta=c[n>>2]|0;ua=ra+(ta*12|0)|0;va=+da;wa=+ea;xa=ua;ya=xa;g[ya>>2]=va;za=xa+4|0;Aa=za;g[Aa>>2]=wa;Ba=c[n>>2]|0;Ca=c[f>>2]|0;Da=Ca+(Ba*12|0)+8|0;g[Da>>2]=ga;i=e;return}}function Ug(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,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0;e=i;i=i+64|0;f=e+44|0;h=e+32|0;j=e+24|0;k=e+16|0;l=e+8|0;m=e;n=b+144|0;o=c[n>>2]|0;p=d+32|0;q=c[p>>2]|0;r=q+(o*12|0)|0;s=+g[r>>2];t=+g[r+4>>2];u=+g[q+(o*12|0)+8>>2];o=b+148|0;r=c[o>>2]|0;v=q+(r*12|0)|0;w=+g[v>>2];x=+g[v+4>>2];y=+g[q+(r*12|0)+8>>2];
z=+g[b+168>>2];A=+g[b+172>>2];B=+g[b+176>>2];C=+g[b+180>>2];if((a[b+137>>0]|0)!=0?(c[b+140>>2]|0)!=3:0){D=+g[b+184>>2];E=+g[b+188>>2];F=+g[b+212>>2];G=+g[b+208>>2];r=b+116|0;H=+g[r>>2];I=+g[d>>2]*+g[b+128>>2];J=H+ +g[b+252>>2]*(+g[b+132>>2]-((w-s)*D+(x-t)*E+y*F-u*G));K=-I;L=J<I?J:I;I=L<K?K:L;g[r>>2]=I;L=I-H;H=D*L;D=E*L;M=t-z*D;N=x+A*D;O=s-z*H;P=w+A*H;Q=u-B*G*L;R=y+C*F*L}else{M=t;N=x;O=s;P=w;Q=u;R=y}y=P-O;u=N-M;r=b+192|0;d=b+196|0;q=b+204|0;v=b+200|0;w=y*+g[r>>2]+u*+g[d>>2]+R*+g[q>>2]-Q*+g[v>>2];s=
R-Q;if((a[b+136>>0]|0)!=0?(S=b+140|0,(c[S>>2]|0)!=0):0){T=b+184|0;U=b+188|0;V=b+212|0;W=b+208|0;X=b+104|0;x=+g[X>>2];Y=b+108|0;t=+g[Y>>2];Z=b+112|0;L=+g[Z>>2];_=b+216|0;F=-w;G=-s;H=-(y*+g[T>>2]+u*+g[U>>2]+R*+g[V>>2]-Q*+g[W>>2]);g[h>>2]=F;g[h+4>>2]=G;g[h+8>>2]=H;Gm(f,_,h);g[X>>2]=+g[f>>2]+ +g[X>>2];h=f+4|0;g[Y>>2]=+g[h>>2]+ +g[Y>>2];$=f+8|0;H=+g[$>>2]+ +g[Z>>2];g[Z>>2]=H;aa=c[S>>2]|0;if((aa|0)==2){u=H<0?H:0;g[Z>>2]=u;ba=u}else if((aa|0)==1){u=H>0?H:0;g[Z>>2]=u;ba=u}else ba=H;H=ba-L;ba=G-H*+g[b+244>>
2];g[j>>2]=F-+g[b+240>>2]*H;g[j+4>>2]=ba;Hm(k,_,j);ba=x+ +g[k>>2];H=t+ +g[k+4>>2];g[X>>2]=ba;g[Y>>2]=H;F=ba-x;x=H-t;t=+g[Z>>2]-L;g[f>>2]=F;g[h>>2]=x;g[$>>2]=t;ca=x+F*+g[q>>2]+t*+g[V>>2];da=F*+g[r>>2]+t*+g[T>>2];ea=F*+g[v>>2]+x+t*+g[W>>2];fa=F*+g[d>>2]+t*+g[U>>2];ga=z*fa;ha=z*da;ia=O-ha;ja=M-ga;ka=A*da;la=A*fa;ma=P+ka;na=N+la;oa=B*ea;pa=C*ca;qa=Q-oa;ra=R+pa;sa=c[n>>2]|0;ta=c[p>>2]|0;ua=ta+(sa*12|0)|0;va=+ia;wa=+ja;xa=ua;ya=xa;g[ya>>2]=va;za=xa+4|0;Aa=za;g[Aa>>2]=wa;Ba=c[n>>2]|0;Ca=c[p>>2]|0;Da=Ca+
(Ba*12|0)+8|0;g[Da>>2]=qa;Ea=c[o>>2]|0;Fa=Ca+(Ea*12|0)|0;Ga=+ma;Ha=+na;Ia=Fa;Ja=Ia;g[Ja>>2]=Ga;Ka=Ia+4|0;La=Ka;g[La>>2]=Ha;Ma=c[o>>2]|0;Na=c[p>>2]|0;Oa=Na+(Ma*12|0)+8|0;g[Oa>>2]=ra;i=e;return}g[m>>2]=-w;g[m+4>>2]=-s;Hm(l,b+216|0,m);s=+g[l>>2];m=b+104|0;g[m>>2]=s+ +g[m>>2];w=+g[l+4>>2];l=b+108|0;g[l>>2]=w+ +g[l>>2];ca=w+s*+g[q>>2];da=s*+g[r>>2];ea=s*+g[v>>2]+w;fa=s*+g[d>>2];ga=z*fa;ha=z*da;ia=O-ha;ja=M-ga;ka=A*da;la=A*fa;ma=P+ka;na=N+la;oa=B*ea;pa=C*ca;qa=Q-oa;ra=R+pa;sa=c[n>>2]|0;ta=c[p>>2]|0;ua=
ta+(sa*12|0)|0;va=+ia;wa=+ja;xa=ua;ya=xa;g[ya>>2]=va;za=xa+4|0;Aa=za;g[Aa>>2]=wa;Ba=c[n>>2]|0;Ca=c[p>>2]|0;Da=Ca+(Ba*12|0)+8|0;g[Da>>2]=qa;Ea=c[o>>2]|0;Fa=Ca+(Ea*12|0)|0;Ga=+ma;Ha=+na;Ia=Fa;Ja=Ia;g[Ja>>2]=Ga;Ka=Ia+4|0;La=Ka;g[La>>2]=Ha;Ma=c[o>>2]|0;Na=c[p>>2]|0;Oa=Na+(Ma*12|0)+8|0;g[Oa>>2]=ra;i=e;return}function Vg(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,ba=0;e=i;i=i+64|0;f=e+24|0;h=e+12|0;j=e;k=b+144|0;l=c[k>>2]|0;m=d+28|0;d=c[m>>2]|0;n=d+(l*12|0)|0;o=+g[n>>2];p=+g[n+4>>2];q=+g[d+(l*12|0)+8>>2];l=b+148|0;n=c[l>>2]|0;r=d+(n*12|0)|0;s=+g[r>>2];t=+g[r+4>>2];u=+g[d+(n*12|0)+8>>2];v=+T(+q);w=+S(+q);x=+T(+u);y=+S(+u);z=+g[b+168>>2];A=+g[b+172>>2];B=+g[b+176>>2];C=+g[b+180>>2];D=+g[b+68>>2]-+g[b+152>>2];E=+g[b+72>>2]-+g[b+156>>2];F=w*D-v*E;G=v*D+w*E;E=+g[b+76>>2]-+g[b+160>>2];D=+g[b+80>>2]-+g[b+164>>2];H=y*E-x*D;I=x*E+y*D;D=s+H-
o-F;y=t+I-p-G;E=+g[b+84>>2];x=+g[b+88>>2];J=w*E-v*x;K=v*E+w*x;x=F+D;F=G+y;G=K*x-J*F;E=H*K-I*J;L=+g[b+92>>2];M=+g[b+96>>2];N=w*L-v*M;O=v*L+w*M;M=O*x-N*F;F=H*O-I*N;I=N*D+O*y;H=u-q-+g[b+100>>2];if(I>0)P=I;else P=-I;if(H>0)Q=H;else Q=-H;do if((a[b+136>>0]|0)!=0){x=J*D+K*y;w=+g[b+124>>2];L=+g[b+120>>2];v=w-L;if(v>0)R=v;else R=-v;if(R<.009999999776482582){v=x<.20000000298023224?x:.20000000298023224;if(x>0)U=x;else U=-x;V=v<-.20000000298023224?-.20000000298023224:v;W=1;X=P>U?P:U;break}if(x<=L){v=x-L+.004999999888241291;
Y=v<0?v:0;v=L-x;V=Y<-.20000000298023224?-.20000000298023224:Y;W=1;X=P>v?P:v;break}if(x>=w){v=x-w;w=v+-.004999999888241291;x=w<.20000000298023224?w:.20000000298023224;V=x<0?0:x;W=1;X=P>v?P:v}else{V=0;W=0;X=P}}else{V=0;W=0;X=P}while(0);P=z+A;U=B*M;R=C*F;y=F*R+(P+M*U);D=R+U;if(W){v=E*R+G*U;U=B+C;R=B*G;x=C*E;w=x+R;g[f>>2]=y;g[f+4>>2]=D;g[f+8>>2]=v;g[f+12>>2]=D;g[f+16>>2]=U==0?1:U;g[f+20>>2]=w;g[f+24>>2]=v;g[f+28>>2]=w;g[f+32>>2]=E*x+(P+G*R);g[j>>2]=-I;g[j+4>>2]=-H;g[j+8>>2]=-V;Gm(h,f,j);Z=+g[h>>2];_=
+g[h+8>>2];$=+g[h+4>>2]}else{V=B+C;R=V==0?1:V;V=-I;I=-H;H=R*y-D*D;if(H!=0)aa=1/H;else aa=H;Z=(R*V-D*I)*aa;_=0;$=(y*I-D*V)*aa}aa=J*_+N*Z;N=K*_+O*Z;O=+(o-z*aa);o=+(p-z*N);h=(c[m>>2]|0)+((c[k>>2]|0)*12|0)|0;g[h>>2]=O;g[h+4>>2]=o;h=c[m>>2]|0;g[h+((c[k>>2]|0)*12|0)+8>>2]=q-B*(G*_+($+M*Z));M=+(s+A*aa);aa=+(t+A*N);k=h+((c[l>>2]|0)*12|0)|0;g[k>>2]=M;g[k+4>>2]=aa;g[(c[m>>2]|0)+((c[l>>2]|0)*12|0)+8>>2]=u+C*(E*_+($+F*Z));if(!(X<=.004999999888241291)){ba=0;i=e;return ba|0}ba=Q<=.03490658849477768;i=e;return ba|
0}function Wg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+48>>2]|0;e=+g[d+24>>2];f=+g[b+68>>2];h=+g[d+20>>2];i=+g[b+72>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function Xg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+52>>2]|0;e=+g[d+24>>2];f=+g[b+76>>2];h=+g[d+20>>2];i=+g[b+80>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function Yg(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0;d=+g[b+104>>2];e=+g[b+116>>2]+ +g[b+112>>2];f=(d*
+g[b+196>>2]+e*+g[b+188>>2])*c;g[a>>2]=(d*+g[b+192>>2]+ +g[b+184>>2]*e)*c;g[a+4>>2]=f;return}function Zg(a,b){a=a|0;b=+b;return+(+g[a+108>>2]*b)}function _g(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;b=c[a+48>>2]|0;d=+g[b+24>>2];e=+g[a+68>>2];f=+g[b+20>>2];h=+g[a+72>>2];i=c[a+52>>2]|0;j=+g[i+24>>2];k=+g[a+76>>2];l=+g[i+20>>2];m=+g[a+80>>2];n=+g[a+84>>2];o=+g[a+88>>2];return+((+g[i+12>>2]+(j*k-l*m)-(+g[b+12>>2]+(d*e-f*h)))*(d*n-f*o)+(k*l+j*m+ +g[i+16>>2]-(e*f+d*h+ +g[b+16>>2]))*(f*
n+d*o))}function $g(b){b=b|0;return(a[b+136>>0]|0)!=0|0}function ah(f,h){f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;k=f+136|0;if((h&1|0)==(d[k>>0]|0|0)){i=j;return}l=c[f+48>>2]|0;m=l+4|0;n=e[m>>1]|0;if((n&2|0)==0){b[m>>1]=n|2;g[l+160>>2]=0}l=c[f+52>>2]|0;n=l+4|0;m=e[n>>1]|0;if((m&2|0)==0){b[n>>1]=m|2;g[l+160>>2]=0}a[k>>0]=h&1;g[f+112>>2]=0;i=j;return}function bh(b){b=b|0;return(a[b+137>>0]|0)!=0|0}function ch(d,f){d=d|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;j=c[d+48>>2]|0;k=j+4|0;l=e[k>>1]|0;if((l&2|
0)==0){b[k>>1]=l|2;g[j+160>>2]=0}j=c[d+52>>2]|0;l=j+4|0;k=e[l>>1]|0;if((k&2|0)!=0){m=d+137|0;n=f&1;a[m>>0]=n;i=h;return}b[l>>1]=k|2;g[j+160>>2]=0;m=d+137|0;n=f&1;a[m>>0]=n;i=h;return}function dh(a,d){a=a|0;d=+d;var f=0,h=0,j=0,k=0,l=0;f=i;h=c[a+48>>2]|0;j=h+4|0;k=e[j>>1]|0;if((k&2|0)==0){b[j>>1]=k|2;g[h+160>>2]=0}h=c[a+52>>2]|0;k=h+4|0;j=e[k>>1]|0;if((j&2|0)!=0){l=a+132|0;g[l>>2]=d;i=f;return}b[k>>1]=j|2;g[h+160>>2]=0;l=a+132|0;g[l>>2]=d;i=f;return}function eh(a,b){a=a|0;b=+b;return+(+g[a+116>>2]*
b)}function fh(a){a=a|0;var b=0,e=0,f=0,j=0,l=0;b=i;i=i+16|0;e=b;f=c[(c[a+48>>2]|0)+8>>2]|0;j=c[(c[a+52>>2]|0)+8>>2]|0;Rm(3264,e);c[e>>2]=f;Rm(3296,e);c[e>>2]=j;Rm(3328,e);c[e>>2]=d[a+61>>0]|0;Rm(3360,e);l=+g[a+72>>2];h[k>>3]=+g[a+68>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Rm(3400,e);l=+g[a+80>>2];h[k>>3]=+g[a+76>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Rm(3448,e);l=+g[a+88>>2];h[k>>3]=+g[a+
84>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Rm(3496,e);h[k>>3]=+g[a+100>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(3536,e);c[e>>2]=d[a+136>>0]|0;Rm(3568,e);h[k>>3]=+g[a+120>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(3600,e);h[k>>3]=+g[a+124>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(3640,e);c[e>>2]=d[a+137>>0]|0;Rm(3680,e);h[k>>3]=+g[a+132>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(3712,e);h[k>>3]=+g[a+128>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];
Rm(3744,e);c[e>>2]=c[a+56>>2];Rm(3776,e);i=b;return}function gh(a){a=a|0;return}function hh(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function ih(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;d=i;vh(a,b);c[a>>2]=3872;e=b+20|0;f=c[e+4>>2]|0;h=a+68|0;c[h>>2]=c[e>>2];c[h+4>>2]=f;f=b+28|0;h=c[f+4>>2]|0;e=a+76|0;c[e>>2]=c[f>>2];c[e+4>>2]=h;g[a+84>>2]=+g[b+36>>2];g[a+160>>2]=0;g[a+92>>2]=0;c[a+164>>2]=0;g[a+88>>2]=0;i=d;return}function jh(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,U=0,V=0,W=0,X=0,Y=0,Z=0;e=i;f=c[b+48>>2]|0;h=c[f+8>>2]|0;j=b+96|0;c[j>>2]=h;l=c[b+52>>2]|0;m=c[l+8>>2]|0;n=b+100|0;c[n>>2]=m;o=f+44|0;p=c[o>>2]|0;q=c[o+4>>2]|0;o=b+128|0;c[o>>2]=p;c[o+4>>2]=q;o=l+44|0;r=c[o>>2]|0;s=c[o+4>>2]|0;o=b+136|0;c[o>>2]=r;c[o+4>>2]=s;s=b+144|0;g[s>>2]=+g[f+136>>2];o=b+148|0;g[o>>2]=+g[l+136>>2];t=b+152|0;g[t>>2]=+g[f+144>>2];f=b+156|0;g[f>>2]=+g[l+144>>2];l=c[d+28>>2]|0;u=l+(h*12|0)|0;
v=+g[u>>2];w=+g[u+4>>2];x=+g[l+(h*12|0)+8>>2];u=d+32|0;y=c[u>>2]|0;z=y+(h*12|0)|0;A=+g[z>>2];B=+g[z+4>>2];C=+g[y+(h*12|0)+8>>2];h=l+(m*12|0)|0;D=+g[h>>2];E=+g[h+4>>2];F=+g[l+(m*12|0)+8>>2];l=y+(m*12|0)|0;G=+g[l>>2];H=+g[l+4>>2];I=+g[y+(m*12|0)+8>>2];J=+T(+x);K=+S(+x);x=+T(+F);L=+S(+F);F=+g[b+68>>2]-(c[k>>2]=p,+g[k>>2]);M=+g[b+72>>2]-(c[k>>2]=q,+g[k>>2]);N=K*F-J*M;O=J*F+K*M;M=+N;K=+O;q=b+112|0;g[q>>2]=M;g[q+4>>2]=K;K=+g[b+76>>2]-(c[k>>2]=r,+g[k>>2]);M=+g[b+80>>2]-+g[b+140>>2];F=L*K-x*M;J=x*K+L*M;M=
+F;L=+J;r=b+120|0;g[r>>2]=M;g[r+4>>2]=L;r=b+104|0;L=D+F-v-N;v=E+J-w-O;w=+L;E=+v;q=r;g[q>>2]=w;g[q+4>>2]=E;q=b+108|0;E=+Q(+(L*L+v*v));g[b+88>>2]=E;c[b+164>>2]=E-+g[b+84>>2]>0?2:0;if(!(E>.004999999888241291)){g[r>>2]=0;g[q>>2]=0;g[b+160>>2]=0;g[b+92>>2]=0;i=e;return}w=1/E;E=w*L;g[r>>2]=E;L=w*v;g[q>>2]=L;v=N*L-O*E;w=L*F-E*J;D=+g[s>>2];M=+g[t>>2];K=+g[o>>2];x=+g[f>>2];P=K+(D+v*v*M)+w*w*x;if(P!=0)R=1/P;else R=0;g[b+160>>2]=R;if((a[d+24>>0]|0)==0){g[b+92>>2]=0;U=A;V=B;W=G;X=H;Y=C;Z=I}else{f=b+92|0;R=+g[d+
8>>2]*+g[f>>2];g[f>>2]=R;P=E*R;E=R*L;U=A-P*D;V=B-E*D;W=G+P*K;X=H+E*K;Y=C-M*(E*N-P*O);Z=I+x*(E*F-P*J)}J=+U;U=+V;f=(c[u>>2]|0)+((c[j>>2]|0)*12|0)|0;g[f>>2]=J;g[f+4>>2]=U;f=c[u>>2]|0;g[f+((c[j>>2]|0)*12|0)+8>>2]=Y;Y=+W;W=+X;j=f+((c[n>>2]|0)*12|0)|0;g[j>>2]=Y;g[j+4>>2]=W;g[(c[u>>2]|0)+((c[n>>2]|0)*12|0)+8>>2]=Z;i=e;return}function kh(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;d=i;e=a+96|0;f=c[e>>2]|0;h=b+32|0;j=c[h>>2]|0;k=j+(f*12|
0)|0;l=k;m=+g[l>>2];n=+g[l+4>>2];o=+g[j+(f*12|0)+8>>2];f=a+100|0;l=c[f>>2]|0;p=j+(l*12|0)|0;q=+g[p>>2];r=+g[p+4>>2];s=+g[j+(l*12|0)+8>>2];t=+g[a+116>>2];u=+g[a+112>>2];v=+g[a+124>>2];w=+g[a+120>>2];x=+g[a+88>>2]-+g[a+84>>2];y=+g[a+104>>2];z=+g[a+108>>2];A=(q-s*v-(m-o*t))*y+(r+s*w-(n+o*u))*z;if(x<0)B=A+x*+g[b+4>>2];else B=A;b=a+92|0;A=+g[b>>2];x=A-B*+g[a+160>>2];B=x>0?0:x;g[b>>2]=B;x=B-A;A=y*x;y=z*x;x=+g[a+144>>2];z=o-+g[a+152>>2]*(u*y-A*t);t=+g[a+148>>2];u=s+ +g[a+156>>2]*(y*w-A*v);v=+(m-x*A);m=+(n-
x*y);a=k;g[a>>2]=v;g[a+4>>2]=m;a=c[h>>2]|0;g[a+((c[e>>2]|0)*12|0)+8>>2]=z;z=+(q+A*t);A=+(r+y*t);e=a+((c[f>>2]|0)*12|0)|0;g[e>>2]=z;g[e+4>>2]=A;g[(c[h>>2]|0)+((c[f>>2]|0)*12|0)+8>>2]=u;i=d;return}function lh(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=i;e=a+96|0;f=c[e>>2]|0;h=b+28|0;b=c[h>>2]|0;j=b+(f*12|0)|0;k=j;l=+g[k>>2];m=+g[k+4>>2];n=+g[b+(f*12|0)+8>>2];f=a+100|0;k=c[f>>2]|0;o=b+(k*12|0)|0;p=+g[o>>2];q=+g[o+4>>2];r=+g[b+
(k*12|0)+8>>2];s=+T(+n);t=+S(+n);u=+T(+r);v=+S(+r);w=+g[a+68>>2]-+g[a+128>>2];x=+g[a+72>>2]-+g[a+132>>2];y=t*w-s*x;z=s*w+t*x;x=+g[a+76>>2]-+g[a+136>>2];t=+g[a+80>>2]-+g[a+140>>2];w=v*x-u*t;s=u*x+v*t;t=p+w-l-y;v=q+s-m-z;x=+Q(+(t*t+v*v));if(x<1.1920928955078125E-7){A=0;B=t;C=v}else{u=1/x;A=x;B=t*u;C=v*u}k=a+84|0;u=A-+g[k>>2];v=u<.20000000298023224?u:.20000000298023224;u=-(+g[a+160>>2]*(v<0?0:v));v=B*u;B=C*u;u=+g[a+144>>2];C=n-+g[a+152>>2]*(y*B-z*v);z=+g[a+148>>2];y=r+ +g[a+156>>2]*(w*B-s*v);s=+(l-u*
v);l=+(m-u*B);a=j;g[a>>2]=s;g[a+4>>2]=l;a=c[h>>2]|0;g[a+((c[e>>2]|0)*12|0)+8>>2]=C;C=+(p+z*v);v=+(q+z*B);e=a+((c[f>>2]|0)*12|0)|0;g[e>>2]=C;g[e+4>>2]=v;g[(c[h>>2]|0)+((c[f>>2]|0)*12|0)+8>>2]=y;i=d;return A-+g[k>>2]<.004999999888241291|0}function mh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+48>>2]|0;e=+g[d+24>>2];f=+g[b+68>>2];h=+g[d+20>>2];i=+g[b+72>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function nh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+52>>
2]|0;e=+g[d+24>>2];f=+g[b+76>>2];h=+g[d+20>>2];i=+g[b+80>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function oh(a,b,c){a=a|0;b=b|0;c=+c;var d=0;d=+g[b+92>>2]*c;c=d*+g[b+108>>2];g[a>>2]=+g[b+104>>2]*d;g[a+4>>2]=c;return}function ph(a,b){a=a|0;b=+b;return 0}function qh(a){a=a|0;var b=0,e=0,f=0,j=0,l=0;b=i;i=i+16|0;e=b;f=c[(c[a+48>>2]|0)+8>>2]|0;j=c[(c[a+52>>2]|0)+8>>2]|0;Rm(3920,e);c[e>>2]=f;Rm(3944,e);c[e>>2]=j;Rm(3976,e);c[e>>2]=d[a+61>>0]|0;Rm(4008,e);l=+g[a+72>>
2];h[k>>3]=+g[a+68>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Rm(4048,e);l=+g[a+80>>2];h[k>>3]=+g[a+76>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Rm(4096,e);h[k>>3]=+g[a+84>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(4144,e);c[e>>2]=c[a+56>>2];Rm(4176,e);i=b;return}function rh(a){a=a|0;return}function sh(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function th(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;d=i;do switch(c[a>>2]|0){case 5:e=Em(b,168)|0;if((e|0)==0)f=0;else{vf(e,a);f=e}g=f;break;case 2:e=Em(b,256)|0;if((e|0)==0)h=0;else{Sg(e,a);h=e}g=h;break;case 7:e=Em(b,224)|0;if((e|0)==0)j=0;else{Sh(e,a);j=e}g=j;break;case 4:e=Em(b,196)|0;if((e|0)==0)k=0;else{di(e,a);k=e}g=k;break;case 3:e=Em(b,176)|0;if((e|0)==0)l=0;else{Yf(e,a);l=e}g=l;break;case 9:e=Em(b,180)|0;if((e|0)==0)m=0;else{ig(e,a);m=e}g=m;break;case 11:e=Em(b,192)|0;if((e|0)==0)n=0;else{Jf(e,a);n=e}g=n;break;
case 1:e=Em(b,228)|0;if((e|0)==0)o=0;else{Ah(e,a);o=e}g=o;break;case 8:e=Em(b,208)|0;if((e|0)==0)p=0;else{ug(e,a);p=e}g=p;break;case 6:e=Em(b,276)|0;if((e|0)==0)q=0;else{Fg(e,a);q=e}g=q;break;case 10:e=Em(b,168)|0;if((e|0)==0)r=0;else{ih(e,a);r=e}g=r;break;default:g=0}while(0);i=d;return g|0}function uh(a,b){a=a|0;b=b|0;var d=0;d=i;eb[c[(c[a>>2]|0)+24>>2]&127](a);do switch(c[a+4>>2]|0){case 9:Fm(b,a,180);break;case 2:Fm(b,a,256);break;case 1:Fm(b,a,228);break;case 7:Fm(b,a,224);break;case 8:Fm(b,
a,208);break;case 5:Fm(b,a,168);break;case 3:Fm(b,a,176);break;case 11:Fm(b,a,192);break;case 4:Fm(b,a,196);break;case 10:Fm(b,a,168);break;case 6:Fm(b,a,276);break;default:}while(0);i=d;return}function vh(b,d){b=b|0;d=d|0;var e=0;e=i;c[b>>2]=4264;c[b+4>>2]=c[d>>2];c[b+8>>2]=0;c[b+12>>2]=0;c[b+48>>2]=c[d+8>>2];c[b+52>>2]=c[d+12>>2];c[b+56>>2]=0;a[b+61>>0]=a[d+16>>0]|0;a[b+60>>0]=0;c[b+64>>2]=c[d+4>>2];d=b+16|0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;
c[d+28>>2]=0;i=e;return}function wh(a){a=a|0;a=i;i=i+16|0;Rm(4312,a);i=a;return}function xh(a){a=a|0;return}function yh(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function zh(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;f=i;c[a+8>>2]=b;c[a+12>>2]=d;h=+g[e>>2]-+g[b+12>>2];j=e+4|0;k=+g[j>>2]-+g[b+16>>2];l=+g[b+24>>2];m=+g[b+20>>2];n=+(h*l+k*m);o=+(l*k-h*m);p=a+20|0;g[p>>2]=n;g[p+4>>2]=o;o=+g[e>>2]-+g[d+12>>2];n=+g[j>>2]-+g[d+16>>2];m=+g[d+24>>2];h=+g[d+20>>2];k=+(o*m+n*h);l=+(m*
n-o*h);j=a+28|0;g[j>>2]=k;g[j+4>>2]=l;g[a+36>>2]=+g[d+72>>2]-+g[b+72>>2];i=f;return}function Ah(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0;e=i;vh(b,d);c[b>>2]=4368;f=d+20|0;h=c[f+4>>2]|0;j=b+68|0;c[j>>2]=c[f>>2];c[j+4>>2]=h;h=d+28|0;j=c[h+4>>2]|0;f=b+76|0;c[f>>2]=c[h>>2];c[f+4>>2]=j;g[b+116>>2]=+g[d+36>>2];j=b+84|0;f=d+44|0;c[j+0>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;g[b+120>>2]=+g[f>>2];g[b+124>>2]=+g[d+48>>2];g[b+104>>2]=+g[d+60>>2];g[b+108>>2]=+g[d+56>>2];a[b+112>>0]=a[d+40>>0]|0;a[b+100>>0]=a[d+
52>>0]|0;c[b+224>>2]=0;i=e;return}function Bh(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0;e=i;f=c[b+48>>2]|0;h=c[f+8>>2]|0;j=b+128|0;c[j>>2]=h;l=c[b+52>>2]|0;m=c[l+8>>2]|0;n=b+132|0;c[n>>2]=m;o=f+44|0;p=c[o>>2]|0;q=c[o+4>>2]|0;o=b+152|0;c[o>>2]=
p;c[o+4>>2]=q;o=l+44|0;r=c[o>>2]|0;s=c[o+4>>2]|0;o=b+160|0;c[o>>2]=r;c[o+4>>2]=s;o=b+168|0;g[o>>2]=+g[f+136>>2];t=+g[l+136>>2];g[b+172>>2]=t;u=+g[f+144>>2];g[b+176>>2]=u;v=+g[l+144>>2];g[b+180>>2]=v;l=c[d+28>>2]|0;w=+g[l+(h*12|0)+8>>2];f=d+32|0;x=c[f>>2]|0;y=x+(h*12|0)|0;z=+g[y>>2];A=+g[y+4>>2];B=+g[x+(h*12|0)+8>>2];C=+g[l+(m*12|0)+8>>2];l=x+(m*12|0)|0;D=+g[l>>2];E=+g[l+4>>2];F=+g[x+(m*12|0)+8>>2];G=+T(+w);H=+S(+w);I=+T(+C);J=+S(+C);m=b+136|0;K=+g[b+68>>2]-(c[k>>2]=p,+g[k>>2]);L=+g[b+72>>2]-(c[k>>
2]=q,+g[k>>2]);M=H*K-G*L;N=G*K+H*L;L=+M;H=+N;q=m;g[q>>2]=L;g[q+4>>2]=H;H=+g[b+76>>2]-(c[k>>2]=r,+g[k>>2]);L=+g[b+80>>2]-(c[k>>2]=s,+g[k>>2]);K=J*H-I*L;G=I*H+J*L;L=+K;J=+G;s=b+144|0;g[s>>2]=L;g[s+4>>2]=J;J=+g[o>>2];L=u+v;o=L==0;H=J+t;s=b+140|0;g[b+184>>2]=H+u*N*N+v*G*G;I=-(u*N*M)-v*G*K;g[b+196>>2]=I;O=-(u*N)-v*G;g[b+208>>2]=O;g[b+188>>2]=I;g[b+200>>2]=H+u*M*M+v*K*K;H=u*M+v*K;g[b+212>>2]=H;g[b+192>>2]=O;g[b+204>>2]=H;g[b+216>>2]=L;if(L>0)P=1/L;else P=L;g[b+220>>2]=P;if((a[b+100>>0]|0)==0|o)g[b+96>>
2]=0;do if((a[b+112>>0]|0)==0|o)c[b+224>>2]=0;else{P=C-w-+g[b+116>>2];L=+g[b+124>>2];H=+g[b+120>>2];O=L-H;if(O>0)Q=O;else Q=-O;if(Q<.06981317698955536){c[b+224>>2]=3;break}if(P<=H){r=b+224|0;if((c[r>>2]|0)!=1)g[b+92>>2]=0;c[r>>2]=1;break}r=b+224|0;if(!(P>=L)){c[r>>2]=0;g[b+92>>2]=0;break}if((c[r>>2]|0)!=2)g[b+92>>2]=0;c[r>>2]=2}while(0);o=b+84|0;if((a[d+24>>0]|0)==0){c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;R=z;U=A;V=D;W=E;X=B;Y=F;Z=c[j>>2]|0;_=c[f>>2]|0;$=_+(Z*12|0)|0;aa=+R;ba=+U;ca=$;da=
ca;g[da>>2]=aa;ea=ca+4|0;fa=ea;g[fa>>2]=ba;ga=c[j>>2]|0;ha=c[f>>2]|0;ia=ha+(ga*12|0)+8|0;g[ia>>2]=X;ja=c[n>>2]|0;ka=ha+(ja*12|0)|0;la=+V;ma=+W;na=ka;oa=na;g[oa>>2]=la;pa=na+4|0;qa=pa;g[qa>>2]=ma;ra=c[n>>2]|0;sa=c[f>>2]|0;ta=sa+(ra*12|0)+8|0;g[ta>>2]=Y;i=e;return}else{r=d+8|0;Q=+g[r>>2];w=Q*+g[o>>2];g[o>>2]=w;o=b+88|0;C=Q*+g[o>>2];g[o>>2]=C;o=b+92|0;L=Q*+g[o>>2];g[o>>2]=L;o=b+96|0;Q=+g[r>>2]*+g[o>>2];g[o>>2]=Q;R=z-J*w;U=A-J*C;V=D+t*w;W=E+t*C;X=B-u*(L+(Q+(C*+g[m>>2]-w*+g[s>>2])));Y=F+v*(L+(Q+(C*K-w*
G)));Z=c[j>>2]|0;_=c[f>>2]|0;$=_+(Z*12|0)|0;aa=+R;ba=+U;ca=$;da=ca;g[da>>2]=aa;ea=ca+4|0;fa=ea;g[fa>>2]=ba;ga=c[j>>2]|0;ha=c[f>>2]|0;ia=ha+(ga*12|0)+8|0;g[ia>>2]=X;ja=c[n>>2]|0;ka=ha+(ja*12|0)|0;la=+V;ma=+W;na=ka;oa=na;g[oa>>2]=la;pa=na+4|0;qa=pa;g[qa>>2]=ma;ra=c[n>>2]|0;sa=c[f>>2]|0;ta=sa+(ra*12|0)+8|0;g[ta>>2]=Y;i=e;return}}function Ch(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,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0;e=i;i=i+80|0;f=e+60|0;h=e+48|0;j=e+40|0;k=e+32|0;l=e+24|0;m=e+16|0;n=e+8|0;o=e;p=b+128|0;q=c[p>>2]|0;r=d+32|0;s=c[r>>2]|0;t=s+(q*12|0)|0;u=+g[t>>2];v=+g[t+4>>2];w=+g[s+(q*12|0)+8>>2];q=b+132|0;t=c[q>>2]|0;x=s+(t*12|0)|0;y=+g[x>>2];z=+g[x+4>>2];A=+g[s+(t*12|0)+8>>2];B=+g[b+168>>2];
C=+g[b+172>>2];D=+g[b+176>>2];E=+g[b+180>>2];t=D+E==0;if((a[b+100>>0]|0)!=0?!((c[b+224>>2]|0)==3|t):0){s=b+96|0;F=+g[s>>2];G=+g[d>>2]*+g[b+104>>2];H=F-+g[b+220>>2]*(A-w-+g[b+108>>2]);I=-G;J=H<G?H:G;G=J<I?I:J;g[s>>2]=G;J=G-F;K=w-D*J;L=A+E*J}else{K=w;L=A}if((a[b+112>>0]|0)!=0?(s=b+224|0,!((c[s>>2]|0)==0|t)):0){t=b+148|0;d=b+144|0;x=b+140|0;M=b+136|0;A=y-L*+g[t>>2]-u+K*+g[x>>2];w=z+L*+g[d>>2]-v-K*+g[M>>2];g[f>>2]=A;g[f+4>>2]=w;g[f+8>>2]=L-K;N=b+184|0;Gm(h,N,f);J=+g[h>>2];F=-J;G=+g[h+4>>2];I=-G;H=+g[h+
8>>2];O=-H;h=c[s>>2]|0;do if((h|0)==2){s=b+84|0;f=b+92|0;P=+g[f>>2];Q=P-H;if(Q>0){R=P*+g[b+212>>2]-w;g[l>>2]=P*+g[b+208>>2]-A;g[l+4>>2]=R;Hm(m,N,l);R=+g[m>>2];P=+g[m+4>>2];S=-+g[f>>2];g[s>>2]=R+ +g[s>>2];T=b+88|0;g[T>>2]=P+ +g[T>>2];g[f>>2]=0;U=P;V=R;W=S;break}else{g[s>>2]=+g[s>>2]-J;s=b+88|0;g[s>>2]=+g[s>>2]-G;g[f>>2]=Q;U=I;V=F;W=O;break}}else if((h|0)==3){f=b+84|0;g[f>>2]=+g[f>>2]-J;f=b+88|0;g[f>>2]=+g[f>>2]-G;f=b+92|0;g[f>>2]=+g[f>>2]-H;U=I;V=F;W=O}else if((h|0)==1){f=b+84|0;s=b+92|0;Q=+g[s>>2];
S=Q-H;if(S<0){R=Q*+g[b+212>>2]-w;g[j>>2]=Q*+g[b+208>>2]-A;g[j+4>>2]=R;Hm(k,N,j);R=+g[k>>2];Q=+g[k+4>>2];P=-+g[s>>2];g[f>>2]=R+ +g[f>>2];T=b+88|0;g[T>>2]=Q+ +g[T>>2];g[s>>2]=0;U=Q;V=R;W=P;break}else{g[f>>2]=+g[f>>2]-J;f=b+88|0;g[f>>2]=+g[f>>2]-G;g[s>>2]=S;U=I;V=F;W=O;break}}else{U=I;V=F;W=O}while(0);X=W+(U*+g[d>>2]-V*+g[t>>2]);Y=W+(U*+g[M>>2]-V*+g[x>>2]);Z=U;_=V;$=C*_;aa=C*Z;ba=B*_;ca=B*Z;da=y+$;ea=z+aa;fa=u-ba;ga=v-ca;ha=D*Y;ia=E*X;ja=K-ha;ka=L+ia;la=c[p>>2]|0;ma=c[r>>2]|0;na=ma+(la*12|0)|0;oa=+fa;
pa=+ga;qa=na;ra=qa;g[ra>>2]=oa;sa=qa+4|0;ta=sa;g[ta>>2]=pa;ua=c[p>>2]|0;va=c[r>>2]|0;wa=va+(ua*12|0)+8|0;g[wa>>2]=ja;xa=c[q>>2]|0;ya=va+(xa*12|0)|0;za=+da;Aa=+ea;Ba=ya;Ca=Ba;g[Ca>>2]=za;Da=Ba+4|0;Ea=Da;g[Ea>>2]=Aa;Fa=c[q>>2]|0;Ga=c[r>>2]|0;Ha=Ga+(Fa*12|0)+8|0;g[Ha>>2]=ka;i=e;return}x=b+148|0;M=b+144|0;t=b+140|0;d=b+136|0;V=-(z+L*+g[M>>2]-v-K*+g[d>>2]);g[o>>2]=-(y-L*+g[x>>2]-u+K*+g[t>>2]);g[o+4>>2]=V;Hm(n,b+184|0,o);V=+g[n>>2];o=b+84|0;g[o>>2]=V+ +g[o>>2];U=+g[n+4>>2];n=b+88|0;g[n>>2]=U+ +g[n>>2];
X=U*+g[M>>2]-V*+g[x>>2];Y=U*+g[d>>2]-V*+g[t>>2];Z=U;_=V;$=C*_;aa=C*Z;ba=B*_;ca=B*Z;da=y+$;ea=z+aa;fa=u-ba;ga=v-ca;ha=D*Y;ia=E*X;ja=K-ha;ka=L+ia;la=c[p>>2]|0;ma=c[r>>2]|0;na=ma+(la*12|0)|0;oa=+fa;pa=+ga;qa=na;ra=qa;g[ra>>2]=oa;sa=qa+4|0;ta=sa;g[ta>>2]=pa;ua=c[p>>2]|0;va=c[r>>2]|0;wa=va+(ua*12|0)+8|0;g[wa>>2]=ja;xa=c[q>>2]|0;ya=va+(xa*12|0)|0;za=+da;Aa=+ea;Ba=ya;Ca=Ba;g[Ca>>2]=za;Da=Ba+4|0;Ea=Da;g[Ea>>2]=Aa;Fa=c[q>>2]|0;Ga=c[r>>2]|0;Ha=Ga+(Fa*12|0)+8|0;g[Ha>>2]=ka;i=e;return}function Dh(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;e=i;f=b+128|0;h=c[f>>2]|0;j=d+28|0;d=c[j>>2]|0;k=d+(h*12|0)|0;l=k;m=+g[l>>2];n=+g[l+4>>2];o=+g[d+(h*12|0)+8>>2];h=b+132|0;l=c[h>>2]|0;p=d+(l*12|0)|0;q=+g[p>>2];r=+g[p+4>>2];s=+g[d+(l*12|0)+8>>2];l=b+176|0;d=b+180|0;if((a[b+112>>0]|0)!=0){t=+g[d>>2];u=+g[l>>2];p=c[b+224>>2]|0;if((p|0)==0|t+u==0){v=u;w=t;x=o;y=s;z=0}else{A=s-o-+g[b+116>>2];if((p|0)==1){B=A-+g[b+
120>>2];C=B+.03490658849477768;D=C<0?C:0;E=-B;F=-(+g[b+220>>2]*(D<-.13962635397911072?-.13962635397911072:D))}else if((p|0)==3){D=A-+g[b+120>>2];B=D<.13962635397911072?D:.13962635397911072;D=B<-.13962635397911072?-.13962635397911072:B;B=-(+g[b+220>>2]*D);if(D>0){E=D;F=B}else{E=-D;F=B}}else if((p|0)==2){B=A-+g[b+124>>2];A=B+-.03490658849477768;D=A<.13962635397911072?A:.13962635397911072;E=B;F=-(+g[b+220>>2]*(D<0?0:D))}else{E=0;F=0}v=u;w=t;x=o-F*u;y=s+F*t;z=E}}else{v=+g[l>>2];w=+g[d>>2];x=o;y=s;z=0}s=
+T(+x);o=+S(+x);E=+T(+y);t=+S(+y);F=+g[b+68>>2]-+g[b+152>>2];u=+g[b+72>>2]-+g[b+156>>2];D=o*F-s*u;B=s*F+o*u;u=+g[b+76>>2]-+g[b+160>>2];o=+g[b+80>>2]-+g[b+164>>2];F=t*u-E*o;s=E*u+t*o;o=q+F-m-D;t=r+s-n-B;u=+Q(+(o*o+t*t));E=+g[b+168>>2];A=+g[b+172>>2];C=E+A;G=C+B*B*v+s*s*w;H=D*v;I=F*w;J=-(B*H)-s*I;K=C+D*H+F*I;I=G*K-J*J;if(I!=0)L=1/I;else L=I;I=-((o*K-t*J)*L);K=-((t*G-o*J)*L);L=+(m-E*I);m=+(n-E*K);b=k;g[b>>2]=L;g[b+4>>2]=m;b=c[j>>2]|0;g[b+((c[f>>2]|0)*12|0)+8>>2]=x-v*(D*K-B*I);B=+(q+A*I);q=+(r+A*K);f=
b+((c[h>>2]|0)*12|0)|0;g[f>>2]=B;g[f+4>>2]=q;g[(c[j>>2]|0)+((c[h>>2]|0)*12|0)+8>>2]=y+w*(F*K-s*I);if(!(u<=.004999999888241291)){M=0;i=e;return M|0}M=z<=.03490658849477768;i=e;return M|0}function Eh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+48>>2]|0;e=+g[d+24>>2];f=+g[b+68>>2];h=+g[d+20>>2];i=+g[b+72>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function Fh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+52>>2]|0;e=+g[d+24>>2];f=+g[b+76>>2];h=+g[d+20>>2];i=
+g[b+80>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function Gh(a,b,c){a=a|0;b=b|0;c=+c;var d=0;d=+g[b+88>>2]*c;g[a>>2]=+g[b+84>>2]*c;g[a+4>>2]=d;return}function Hh(a,b){a=a|0;b=+b;return+(+g[a+92>>2]*b)}function Ih(a){a=a|0;return+(+g[(c[a+52>>2]|0)+72>>2]-+g[(c[a+48>>2]|0)+72>>2]-+g[a+116>>2])}function Jh(b){b=b|0;return(a[b+100>>0]|0)!=0|0}function Kh(d,f){d=d|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;j=c[d+48>>2]|0;k=j+4|0;l=e[k>>1]|0;if((l&2|0)==0){b[k>>1]=l|2;g[j+
160>>2]=0}j=c[d+52>>2]|0;l=j+4|0;k=e[l>>1]|0;if((k&2|0)!=0){m=d+100|0;n=f&1;a[m>>0]=n;i=h;return}b[l>>1]=k|2;g[j+160>>2]=0;m=d+100|0;n=f&1;a[m>>0]=n;i=h;return}function Lh(a,d){a=a|0;d=+d;var f=0,h=0,j=0,k=0,l=0;f=i;h=c[a+48>>2]|0;j=h+4|0;k=e[j>>1]|0;if((k&2|0)==0){b[j>>1]=k|2;g[h+160>>2]=0}h=c[a+52>>2]|0;k=h+4|0;j=e[k>>1]|0;if((j&2|0)!=0){l=a+108|0;g[l>>2]=d;i=f;return}b[k>>1]=j|2;g[h+160>>2]=0;l=a+108|0;g[l>>2]=d;i=f;return}function Mh(b){b=b|0;return(a[b+112>>0]|0)!=0|0}function Nh(f,h){f=f|0;
h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;k=f+112|0;if((h&1|0)==(d[k>>0]|0|0)){i=j;return}l=c[f+48>>2]|0;m=l+4|0;n=e[m>>1]|0;if((n&2|0)==0){b[m>>1]=n|2;g[l+160>>2]=0}l=c[f+52>>2]|0;n=l+4|0;m=e[n>>1]|0;if((m&2|0)==0){b[n>>1]=m|2;g[l+160>>2]=0}a[k>>0]=h&1;g[f+92>>2]=0;i=j;return}function Oh(a){a=a|0;var b=0,e=0,f=0,j=0,l=0;b=i;i=i+16|0;e=b;f=c[(c[a+48>>2]|0)+8>>2]|0;j=c[(c[a+52>>2]|0)+8>>2]|0;Rm(4416,e);c[e>>2]=f;Rm(4448,e);c[e>>2]=j;Rm(4480,e);c[e>>2]=d[a+61>>0]|0;Rm(4512,e);l=+g[a+72>>2];h[k>>3]=+g[a+68>>
2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Rm(4552,e);l=+g[a+80>>2];h[k>>3]=+g[a+76>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Rm(4600,e);h[k>>3]=+g[a+116>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(4648,e);c[e>>2]=d[a+112>>0]|0;Rm(4680,e);h[k>>3]=+g[a+120>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(4712,e);h[k>>3]=+g[a+124>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(4744,e);c[e>>2]=d[a+100>>0]|0;Rm(4776,
e);h[k>>3]=+g[a+108>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(4808,e);h[k>>3]=+g[a+104>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(4840,e);c[e>>2]=c[a+56>>2];Rm(4872,e);i=b;return}function Ph(a){a=a|0;return}function Qh(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function Rh(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;h=i;c[a+8>>2]=b;c[a+12>>2]=d;j=+g[e>>2]-+g[b+12>>2];k=e+4|0;l=+g[k>>2]-+g[b+16>>2];m=b+24|0;n=+g[m>>2];o=b+20|0;p=+g[o>>2];q=+(j*n+l*p);r=+(n*l-j*
p);b=a+20|0;g[b>>2]=q;g[b+4>>2]=r;r=+g[e>>2]-+g[d+12>>2];q=+g[k>>2]-+g[d+16>>2];p=+g[d+24>>2];j=+g[d+20>>2];l=+(r*p+q*j);n=+(p*q-r*j);d=a+28|0;g[d>>2]=l;g[d+4>>2]=n;n=+g[m>>2];l=+g[f>>2];j=+g[o>>2];r=+g[f+4>>2];q=+(n*l+j*r);p=+(n*r-l*j);f=a+36|0;g[f>>2]=q;g[f+4>>2]=p;i=h;return}function Sh(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0;e=i;vh(b,d);c[b>>2]=4968;f=d+20|0;h=c[f+4>>2]|0;j=b+76|0;c[j>>2]=c[f>>2];c[j+4>>2]=h;h=d+28|0;j=c[h+4>>2]|0;f=b+84|0;c[f>>2]=c[h>>2];c[f+4>>2]=j;j=d+36|0;f=c[j>>2]|0;h=c[j+4>>
2]|0;j=b+92|0;c[j>>2]=f;c[j+4>>2]=h;j=b+100|0;g[j>>2]=-(c[k>>2]=h,+g[k>>2]);c[j+4>>2]=f;g[b+204>>2]=0;g[b+108>>2]=0;g[b+208>>2]=0;g[b+112>>2]=0;g[b+212>>2]=0;g[b+116>>2]=0;g[b+120>>2]=+g[d+48>>2];g[b+124>>2]=+g[d+52>>2];a[b+128>>0]=a[d+44>>0]|0;g[b+68>>2]=+g[d+56>>2];g[b+72>>2]=+g[d+60>>2];g[b+216>>2]=0;g[b+220>>2]=0;d=b+172|0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;i=e;return}function Th(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0;e=i;f=c[b+48>>2]|0;h=c[f+8>>2]|0;j=b+132|0;c[j>>2]=h;l=c[b+52>>2]|0;m=c[l+8>>2]|0;n=b+136|0;c[n>>2]=m;o=f+44|0;p=c[o>>2]|0;q=c[o+4>>2]|0;o=b+140|0;c[o>>2]=p;c[o+4>>2]=q;o=l+44|0;r=c[o>>2]|0;s=c[o+4>>2]|0;o=b+148|0;c[o>>2]=r;c[o+4>>2]=s;t=+g[f+136>>2];o=b+156|0;
g[o>>2]=t;u=+g[l+136>>2];v=b+160|0;g[v>>2]=u;w=+g[f+144>>2];f=b+164|0;g[f>>2]=w;x=+g[l+144>>2];l=b+168|0;g[l>>2]=x;y=c[d+28>>2]|0;z=y+(h*12|0)|0;A=+g[z>>2];B=+g[z+4>>2];C=+g[y+(h*12|0)+8>>2];z=d+32|0;D=c[z>>2]|0;E=D+(h*12|0)|0;F=+g[E>>2];G=+g[E+4>>2];H=+g[D+(h*12|0)+8>>2];h=y+(m*12|0)|0;I=+g[h>>2];J=+g[h+4>>2];K=+g[y+(m*12|0)+8>>2];y=D+(m*12|0)|0;L=+g[y>>2];M=+g[y+4>>2];N=+g[D+(m*12|0)+8>>2];O=+T(+C);P=+S(+C);C=+T(+K);Q=+S(+K);K=+g[b+76>>2]-(c[k>>2]=p,+g[k>>2]);R=+g[b+80>>2]-(c[k>>2]=q,+g[k>>2]);
U=P*K-O*R;V=O*K+P*R;R=+g[b+84>>2]-(c[k>>2]=r,+g[k>>2]);K=+g[b+88>>2]-(c[k>>2]=s,+g[k>>2]);W=Q*R-C*K;X=C*R+Q*K;K=I+W-A-U;A=J+X-B-V;B=+g[b+100>>2];J=+g[b+104>>2];I=P*B-O*J;Q=O*B+P*J;J=+I;B=+Q;s=b+180|0;g[s>>2]=J;g[s+4>>2]=B;B=U+K;U=V+A;V=Q*B-I*U;g[b+196>>2]=V;J=W*Q-X*I;g[b+200>>2]=J;R=t+u;u=R+V*w*V+J*x*J;if(u>0)Y=1/u;else Y=u;g[b+204>>2]=Y;s=b+212|0;g[s>>2]=0;r=b+216|0;g[r>>2]=0;q=b+220|0;g[q>>2]=0;Y=+g[b+68>>2];if(Y>0){u=+g[b+92>>2];t=+g[b+96>>2];C=P*u-O*t;Z=O*u+P*t;t=+C;P=+Z;p=b+172|0;g[p>>2]=t;g[p+
4>>2]=P;P=B*Z-U*C;g[b+188>>2]=P;U=W*Z-X*C;g[b+192>>2]=U;X=R+P*w*P+U*x*U;if(X>0){U=1/X;g[s>>2]=U;P=Y*6.2831854820251465;Y=P*U*P;R=+g[d>>2];W=R*(P*U*2*+g[b+72>>2]+R*Y);if(W>0)_=1/W;else _=W;g[q>>2]=_;g[r>>2]=(K*C+A*Z)*R*Y*_;Y=X+_;g[s>>2]=Y;if(Y>0)g[s>>2]=1/Y}}else g[b+116>>2]=0;if((a[b+128>>0]|0)!=0){Y=x+w;s=b+208|0;g[s>>2]=Y;if(Y>0)g[s>>2]=1/Y}else{g[b+208>>2]=0;g[b+112>>2]=0}if((a[d+24>>0]|0)==0){g[b+108>>2]=0;g[b+116>>2]=0;g[b+112>>2]=0;$=F;aa=G;ba=L;ca=M;da=H;ea=N;fa=c[j>>2]|0;ga=c[z>>2]|0;ha=ga+
(fa*12|0)|0;ia=+$;ja=+aa;ka=ha;la=ka;g[la>>2]=ia;ma=ka+4|0;na=ma;g[na>>2]=ja;oa=c[j>>2]|0;pa=c[z>>2]|0;qa=pa+(oa*12|0)+8|0;g[qa>>2]=da;ra=c[n>>2]|0;sa=pa+(ra*12|0)|0;ta=+ba;ua=+ca;va=sa;wa=va;g[wa>>2]=ta;xa=va+4|0;ya=xa;g[ya>>2]=ua;za=c[n>>2]|0;Aa=c[z>>2]|0;Ba=Aa+(za*12|0)+8|0;g[Ba>>2]=ea;i=e;return}else{s=d+8|0;d=b+108|0;Y=+g[s>>2]*+g[d>>2];g[d>>2]=Y;d=b+116|0;w=+g[s>>2]*+g[d>>2];g[d>>2]=w;d=b+112|0;x=+g[s>>2]*+g[d>>2];g[d>>2]=x;_=Y*I+w*+g[b+172>>2];I=Y*Q+w*+g[b+176>>2];Q=+g[o>>2];X=+g[v>>2];$=F-
_*Q;aa=G-I*Q;ba=L+_*X;ca=M+I*X;da=H-(x+(Y*V+w*+g[b+188>>2]))*+g[f>>2];ea=N+(x+(Y*J+w*+g[b+192>>2]))*+g[l>>2];fa=c[j>>2]|0;ga=c[z>>2]|0;ha=ga+(fa*12|0)|0;ia=+$;ja=+aa;ka=ha;la=ka;g[la>>2]=ia;ma=ka+4|0;na=ma;g[na>>2]=ja;oa=c[j>>2]|0;pa=c[z>>2]|0;qa=pa+(oa*12|0)+8|0;g[qa>>2]=da;ra=c[n>>2]|0;sa=pa+(ra*12|0)|0;ta=+ba;ua=+ca;va=sa;wa=va;g[wa>>2]=ta;xa=va+4|0;ya=xa;g[ya>>2]=ua;za=c[n>>2]|0;Aa=c[z>>2]|0;Ba=Aa+(za*12|0)+8|0;g[Ba>>2]=ea;i=e;return}}function Uh(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=i;e=+g[a+156>>2];f=+g[a+160>>2];h=+g[a+164>>2];j=+g[a+168>>2];k=a+132|0;l=c[k>>2]|0;m=b+32|0;n=c[m>>2]|0;o=n+(l*12|0)|0;p=+g[o>>2];q=+g[o+4>>2];r=+g[n+(l*12|0)+8>>2];l=a+136|0;o=c[l>>2]|0;s=n+(o*12|0)|0;t=+g[s>>2];u=+g[s+4>>2];v=+g[n+(o*12|0)+8>>2];w=+g[a+172>>2];x=+g[a+176>>2];y=+g[a+192>>2];z=+g[a+188>>2];o=a+116|0;A=+g[o>>2];B=+g[a+212>>2]*(+g[a+216>>2]+(v*y+(w*(t-p)+x*(u-q))-r*z)+ +g[a+220>>2]*A);C=-B;g[o>>2]=A-B;B=w*C;w=
x*C;x=p-e*B;p=q-e*w;q=r-h*z*C;z=t+f*B;B=u+f*w;w=v+j*y*C;o=a+112|0;C=+g[o>>2];y=+g[b>>2]*+g[a+120>>2];v=C-+g[a+208>>2]*(w-q-+g[a+124>>2]);u=-y;t=v<y?v:y;y=t<u?u:t;g[o>>2]=y;t=y-C;C=q-h*t;q=w+j*t;t=+g[a+180>>2];w=+g[a+184>>2];y=+g[a+200>>2];u=+g[a+196>>2];v=+g[a+204>>2]*((z-x)*t+(B-p)*w+y*q-u*C);r=-v;o=a+108|0;g[o>>2]=+g[o>>2]-v;v=t*r;t=w*r;w=+(x-e*v);x=+(p-e*t);o=(c[m>>2]|0)+((c[k>>2]|0)*12|0)|0;g[o>>2]=w;g[o+4>>2]=x;o=c[m>>2]|0;g[o+((c[k>>2]|0)*12|0)+8>>2]=C-h*u*r;u=+(z+f*v);v=+(B+f*t);k=o+((c[l>>
2]|0)*12|0)|0;g[k>>2]=u;g[k+4>>2]=v;g[(c[m>>2]|0)+((c[l>>2]|0)*12|0)+8>>2]=q+j*y*r;i=d;return}function Vh(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;d=i;e=a+132|0;f=c[e>>2]|0;h=b+28|0;b=c[h>>2]|0;j=b+(f*12|0)|0;k=+g[j>>2];l=+g[j+4>>2];m=+g[b+(f*12|0)+8>>2];f=a+136|0;j=c[f>>2]|0;n=b+(j*12|0)|0;o=+g[n>>2];p=+g[n+4>>2];q=+g[b+(j*12|0)+8>>2];r=+T(+m);s=+S(+m);t=+T(+q);u=+S(+q);v=+g[a+76>>2]-+g[a+140>>
2];w=+g[a+80>>2]-+g[a+144>>2];x=s*v-r*w;y=r*v+s*w;w=+g[a+84>>2]-+g[a+148>>2];v=+g[a+88>>2]-+g[a+152>>2];z=u*w-t*v;A=t*w+u*v;v=o-k+z-x;u=p-l+A-y;w=+g[a+100>>2];t=+g[a+104>>2];B=s*w-r*t;C=r*w+s*t;t=B*v+C*u;s=+g[a+156>>2];w=+g[a+160>>2];r=+g[a+164>>2];D=+g[a+196>>2];E=+g[a+168>>2];F=+g[a+200>>2];G=s+w+D*r*D+F*E*F;if(G!=0)H=-t/G;else H=0;G=B*H;F=C*H;D=+(k-G*s);k=+(l-F*s);a=(c[h>>2]|0)+((c[e>>2]|0)*12|0)|0;g[a>>2]=D;g[a+4>>2]=k;a=c[h>>2]|0;g[a+((c[e>>2]|0)*12|0)+8>>2]=m-(C*(x+v)-B*(y+u))*H*r;r=+(o+G*w);
G=+(p+F*w);e=a+((c[f>>2]|0)*12|0)|0;g[e>>2]=r;g[e+4>>2]=G;g[(c[h>>2]|0)+((c[f>>2]|0)*12|0)+8>>2]=q+(z*C-A*B)*H*E;if(t>0){I=t;J=I<=.004999999888241291;i=d;return J|0}I=-t;J=I<=.004999999888241291;i=d;return J|0}function Wh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+48>>2]|0;e=+g[d+24>>2];f=+g[b+76>>2];h=+g[d+20>>2];i=+g[b+80>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function Xh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+52>>2]|0;e=+g[d+24>>2];f=+g[b+
84>>2];h=+g[d+20>>2];i=+g[b+88>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function Yh(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0;d=+g[b+108>>2];e=+g[b+116>>2];f=(d*+g[b+184>>2]+e*+g[b+176>>2])*c;g[a>>2]=(d*+g[b+180>>2]+e*+g[b+172>>2])*c;g[a+4>>2]=f;return}function Zh(a,b){a=a|0;b=+b;return+(+g[a+112>>2]*b)}function _h(a,d){a=a|0;d=+d;var f=0,h=0,j=0,k=0,l=0;f=i;h=c[a+48>>2]|0;j=h+4|0;k=e[j>>1]|0;if((k&2|0)==0){b[j>>1]=k|2;g[h+160>>2]=0}h=c[a+52>>2]|0;k=h+4|0;j=e[k>>1]|
0;if((j&2|0)!=0){l=a+124|0;g[l>>2]=d;i=f;return}b[k>>1]=j|2;g[h+160>>2]=0;l=a+124|0;g[l>>2]=d;i=f;return}function $h(a){a=a|0;var b=0,e=0,f=0,j=0,l=0;b=i;i=i+16|0;e=b;f=c[(c[a+48>>2]|0)+8>>2]|0;j=c[(c[a+52>>2]|0)+8>>2]|0;Rm(5016,e);c[e>>2]=f;Rm(5040,e);c[e>>2]=j;Rm(5072,e);c[e>>2]=d[a+61>>0]|0;Rm(5104,e);l=+g[a+80>>2];h[k>>3]=+g[a+76>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Rm(5144,e);l=+g[a+88>>2];h[k>>3]=+g[a+84>>2];c[e>>2]=c[k>>2];c[e+4>>2]=
c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Rm(5192,e);l=+g[a+96>>2];h[k>>3]=+g[a+92>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Rm(5240,e);c[e>>2]=d[a+128>>0]|0;Rm(5280,e);h[k>>3]=+g[a+124>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(5312,e);h[k>>3]=+g[a+120>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(5344,e);h[k>>3]=+g[a+68>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(5376,e);h[k>>3]=+g[a+72>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];
Rm(5408,e);c[e>>2]=c[a+56>>2];Rm(5440,e);i=b;return}function ai(a){a=a|0;return}function bi(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function ci(a,b,d,e,f,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=+k;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;l=i;c[a+8>>2]=b;c[a+12>>2]=d;m=e;n=c[m+4>>2]|0;o=a+20|0;c[o>>2]=c[m>>2];c[o+4>>2]=n;n=f;o=c[n+4>>2]|0;m=a+28|0;c[m>>2]=c[n>>2];c[m+4>>2]=o;p=+g[h>>2]-+g[b+12>>2];o=h+4|0;q=+g[o>>2]-+g[b+16>>2];r=+g[b+24>>2];s=+g[b+20>>2];t=+(p*r+q*s);u=+(r*q-p*s);b=a+
36|0;g[b>>2]=t;g[b+4>>2]=u;u=+g[j>>2]-+g[d+12>>2];b=j+4|0;t=+g[b>>2]-+g[d+16>>2];s=+g[d+24>>2];p=+g[d+20>>2];q=+(u*s+t*p);r=+(s*t-u*p);d=a+44|0;g[d>>2]=q;g[d+4>>2]=r;r=+g[h>>2]-+g[e>>2];q=+g[o>>2]-+g[e+4>>2];g[a+52>>2]=+Q(+(r*r+q*q));q=+g[j>>2]-+g[f>>2];r=+g[b>>2]-+g[f+4>>2];g[a+56>>2]=+Q(+(q*q+r*r));g[a+60>>2]=k;i=l;return}function di(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0;d=i;vh(a,b);c[a>>2]=5528;e=b+20|0;f=c[e+4>>2]|0;h=a+68|0;c[h>>2]=c[e>>2];c[h+4>>2]=f;f=b+28|0;h=c[f+4>>2]|0;e=a+76|0;c[e>>
2]=c[f>>2];c[e+4>>2]=h;h=b+36|0;e=c[h+4>>2]|0;f=a+92|0;c[f>>2]=c[h>>2];c[f+4>>2]=e;e=b+44|0;f=c[e+4>>2]|0;h=a+100|0;c[h>>2]=c[e>>2];c[h+4>>2]=f;f=b+52|0;g[a+84>>2]=+g[f>>2];h=b+56|0;g[a+88>>2]=+g[h>>2];j=+g[b+60>>2];g[a+112>>2]=j;g[a+108>>2]=+g[f>>2]+j*+g[h>>2];g[a+116>>2]=0;i=d;return}function ei(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,
ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0;e=i;f=c[b+48>>2]|0;h=c[f+8>>2]|0;j=b+120|0;c[j>>2]=h;l=c[b+52>>2]|0;m=c[l+8>>2]|0;n=b+124|0;c[n>>2]=m;o=f+44|0;p=c[o>>2]|0;q=c[o+4>>2]|0;o=b+160|0;c[o>>2]=p;c[o+4>>2]=q;o=l+44|0;r=c[o>>2]|0;s=c[o+4>>2]|0;o=b+168|0;c[o>>2]=r;c[o+4>>2]=s;s=b+176|0;g[s>>2]=+g[f+136>>2];o=b+180|0;g[o>>2]=+g[l+136>>2];t=b+184|0;g[t>>2]=+g[f+144>>2];f=b+188|0;g[f>>2]=+g[l+144>>2];l=c[d+28>>2]|0;u=l+(h*12|0)|
0;v=+g[u>>2];w=+g[u+4>>2];x=+g[l+(h*12|0)+8>>2];u=d+32|0;y=c[u>>2]|0;z=y+(h*12|0)|0;A=+g[z>>2];B=+g[z+4>>2];C=+g[y+(h*12|0)+8>>2];h=l+(m*12|0)|0;D=+g[h>>2];E=+g[h+4>>2];F=+g[l+(m*12|0)+8>>2];l=y+(m*12|0)|0;G=+g[l>>2];H=+g[l+4>>2];I=+g[y+(m*12|0)+8>>2];J=+T(+x);K=+S(+x);x=+T(+F);L=+S(+F);m=b+144|0;F=+g[b+92>>2]-(c[k>>2]=p,+g[k>>2]);M=+g[b+96>>2]-(c[k>>2]=q,+g[k>>2]);N=K*F-J*M;O=J*F+K*M;M=+N;K=+O;q=m;g[q>>2]=M;g[q+4>>2]=K;K=+g[b+100>>2]-(c[k>>2]=r,+g[k>>2]);M=+g[b+104>>2]-+g[b+172>>2];F=L*K-x*M;J=x*
K+L*M;M=+F;L=+J;r=b+152|0;g[r>>2]=M;g[r+4>>2]=L;r=b+128|0;L=v+N-+g[b+68>>2];N=w+O-+g[b+72>>2];O=+L;w=+N;q=r;g[q>>2]=O;g[q+4>>2]=w;q=b+136|0;w=D+F-+g[b+76>>2];D=E+J-+g[b+80>>2];E=+w;O=+D;p=q;g[p>>2]=E;g[p+4>>2]=O;O=+Q(+(L*L+N*N));E=+Q(+(w*w+D*D));if(O>.04999999701976776){v=1/O;O=L*v;g[r>>2]=O;P=v*N;R=O}else{g[r>>2]=0;P=0;R=0}g[b+132>>2]=P;if(E>.04999999701976776){O=1/E;E=O*w;g[q>>2]=E;U=O*D;V=E}else{g[q>>2]=0;U=0;V=0}g[b+140>>2]=U;E=+g[m>>2];D=+g[b+148>>2];O=E*P-D*R;w=F*U-J*V;N=+g[s>>2];v=+g[t>>2];
L=+g[o>>2];M=+g[f>>2];K=+g[b+112>>2];x=N+O*O*v+K*K*(L+w*w*M);if(x>0)W=1/x;else W=x;g[b+192>>2]=W;if((a[d+24>>0]|0)==0){g[b+116>>2]=0;X=A;Y=B;Z=G;_=H;$=C;aa=I;ba=c[j>>2]|0;ca=c[u>>2]|0;da=ca+(ba*12|0)|0;ea=+X;fa=+Y;ga=da;ha=ga;g[ha>>2]=ea;ia=ga+4|0;ja=ia;g[ja>>2]=fa;ka=c[j>>2]|0;la=c[u>>2]|0;ma=la+(ka*12|0)+8|0;g[ma>>2]=$;na=c[n>>2]|0;oa=la+(na*12|0)|0;pa=+Z;qa=+_;ra=oa;sa=ra;g[sa>>2]=pa;ta=ra+4|0;ua=ta;g[ua>>2]=qa;va=c[n>>2]|0;wa=c[u>>2]|0;xa=wa+(va*12|0)+8|0;g[xa>>2]=aa;i=e;return}else{f=b+116|0;
W=+g[d+8>>2]*+g[f>>2];g[f>>2]=W;x=-W;w=R*x;R=P*x;x=-(W*K);K=V*x;V=U*x;X=A+w*N;Y=B+R*N;Z=G+K*L;_=H+V*L;$=C+v*(R*E-w*D);aa=I+M*(V*F-K*J);ba=c[j>>2]|0;ca=c[u>>2]|0;da=ca+(ba*12|0)|0;ea=+X;fa=+Y;ga=da;ha=ga;g[ha>>2]=ea;ia=ga+4|0;ja=ia;g[ja>>2]=fa;ka=c[j>>2]|0;la=c[u>>2]|0;ma=la+(ka*12|0)+8|0;g[ma>>2]=$;na=c[n>>2]|0;oa=la+(na*12|0)|0;pa=+Z;qa=+_;ra=oa;sa=ra;g[sa>>2]=pa;ta=ra+4|0;ua=ta;g[ua>>2]=qa;va=c[n>>2]|0;wa=c[u>>2]|0;xa=wa+(va*12|0)+8|0;g[xa>>2]=aa;i=e;return}}function fi(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=i;e=a+120|0;f=c[e>>2]|0;h=b+32|0;b=c[h>>2]|0;j=b+(f*12|0)|0;k=j;l=+g[k>>2];m=+g[k+4>>2];n=+g[b+(f*12|0)+8>>2];f=a+124|0;k=c[f>>2]|0;o=b+(k*12|0)|0;p=+g[o>>2];q=+g[o+4>>2];r=+g[b+(k*12|0)+8>>2];s=+g[a+148>>2];t=+g[a+144>>2];u=+g[a+156>>2];v=+g[a+152>>2];w=+g[a+128>>2];x=+g[a+132>>2];y=+g[a+112>>2];z=+g[a+136>>2];A=+g[a+140>>2];B=+g[a+192>>2]*(-((l-n*s)*w+(m+n*t)*x)-y*((p-r*u)*z+(q+r*v)*A));k=a+116|0;g[k>>
2]=+g[k>>2]-B;C=w*B;w=x*B;x=y*B;B=z*x;z=x*A;A=+g[a+176>>2];x=n+ +g[a+184>>2]*(w*t-C*s);s=+g[a+180>>2];t=r+ +g[a+188>>2]*(z*v-B*u);u=+(l+C*A);C=+(m+w*A);a=j;g[a>>2]=u;g[a+4>>2]=C;a=c[h>>2]|0;g[a+((c[e>>2]|0)*12|0)+8>>2]=x;x=+(p+B*s);B=+(q+z*s);e=a+((c[f>>2]|0)*12|0)|0;g[e>>2]=x;g[e+4>>2]=B;g[(c[h>>2]|0)+((c[f>>2]|0)*12|0)+8>>2]=t;i=d;return}function gi(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;d=i;e=a+120|0;f=c[e>>2]|0;h=b+28|0;b=c[h>>2]|0;j=b+(f*12|0)|0;k=j;l=+g[k>>2];m=+g[k+4>>2];n=+g[b+(f*12|0)+8>>2];f=a+124|0;k=c[f>>2]|0;o=b+(k*12|0)|0;p=+g[o>>2];q=+g[o+4>>2];r=+g[b+(k*12|0)+8>>2];s=+T(+n);t=+S(+n);u=+T(+r);v=+S(+r);w=+g[a+92>>2]-+g[a+160>>2];x=+g[a+96>>2]-+g[a+164>>2];y=t*w-s*x;z=s*w+t*x;x=+g[a+100>>2]-+g[a+168>>2];t=+g[a+104>>2]-+g[a+172>>2];w=v*x-u*t;s=u*x+v*t;t=l+y-+g[a+68>>2];v=m+z-+g[a+72>>2];x=p+w-+g[a+76>>2];u=q+s-+g[a+80>>2];A=+Q(+(t*t+v*v));B=+Q(+(x*x+u*u));if(A>.04999999701976776){C=
1/A;D=v*C;E=t*C}else{D=0;E=0}if(B>.04999999701976776){C=1/B;F=u*C;G=x*C}else{F=0;G=0}C=y*D-z*E;x=w*F-s*G;u=+g[a+176>>2];t=+g[a+184>>2];v=+g[a+180>>2];H=+g[a+188>>2];I=+g[a+112>>2];J=u+C*C*t+I*I*(v+x*x*H);if(J>0)K=1/J;else K=J;J=+g[a+108>>2]-A-B*I;if(J>0)L=J;else L=-J;B=K*J;J=E*B;E=D*B;D=B*I;I=G*D;G=F*D;D=+(l+J*u);l=+(m+E*u);a=j;g[a>>2]=D;g[a+4>>2]=l;a=c[h>>2]|0;g[a+((c[e>>2]|0)*12|0)+8>>2]=n+(y*E-z*J)*t;t=+(p+I*v);p=+(q+G*v);e=a+((c[f>>2]|0)*12|0)|0;g[e>>2]=t;g[e+4>>2]=p;g[(c[h>>2]|0)+((c[f>>2]|0)*
12|0)+8>>2]=r+H*(w*G-s*I);i=d;return L<.004999999888241291|0}function hi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+48>>2]|0;e=+g[d+24>>2];f=+g[b+92>>2];h=+g[d+20>>2];i=+g[b+96>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function ii(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+52>>2]|0;e=+g[d+24>>2];f=+g[b+100>>2];h=+g[d+20>>2];i=+g[b+104>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function ji(a,b,c){a=a|0;b=b|0;c=+c;var d=
0,e=0;d=+g[b+116>>2];e=d*+g[b+140>>2]*c;g[a>>2]=d*+g[b+136>>2]*c;g[a+4>>2]=e;return}function ki(a,b){a=a|0;b=+b;return 0}function li(a){a=a|0;var b=0,e=0,f=0,j=0,l=0;b=i;i=i+16|0;e=b;f=c[(c[a+48>>2]|0)+8>>2]|0;j=c[(c[a+52>>2]|0)+8>>2]|0;Rm(5576,e);c[e>>2]=f;Rm(5600,e);c[e>>2]=j;Rm(5632,e);c[e>>2]=d[a+61>>0]|0;Rm(5664,e);l=+g[a+72>>2];h[k>>3]=+g[a+68>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Rm(5704,e);l=+g[a+80>>2];h[k>>3]=+g[a+76>>2];c[e>>2]=c[k>>
2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Rm(5752,e);l=+g[a+96>>2];h[k>>3]=+g[a+92>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Rm(5800,e);l=+g[a+104>>2];h[k>>3]=+g[a+100>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Rm(5848,e);h[k>>3]=+g[a+84>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(5896,e);h[k>>3]=+g[a+88>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(5928,e);h[k>>3]=
+g[a+112>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Rm(5960,e);c[e>>2]=c[a+56>>2];Rm(5984,e);i=b;return}function mi(a,b){a=a|0;b=b|0;var c=0,d=0;c=a+68|0;g[c>>2]=+g[c>>2]-+g[b>>2];c=b+4|0;d=a+72|0;g[d>>2]=+g[d>>2]-+g[c>>2];d=a+76|0;g[d>>2]=+g[d>>2]-+g[b>>2];b=a+80|0;g[b>>2]=+g[b>>2]-+g[c>>2];return}function ni(a){a=a|0;return}function oi(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function pi(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;h=Em(f,148)|0;if((h|0)==0){j=0;i=g;return j|0}wi(h,a,
b,d,e);c[h>>2]=6072;j=h;i=g;return j|0}function qi(a,b){a=a|0;b=b|0;var d=0;d=i;eb[c[(c[a>>2]|0)+4>>2]&127](a);Fm(b,a,148);i=d;return}function ri(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;h=i;i=i+48|0;j=h;k=c[(c[a+48>>2]|0)+12>>2]|0;c[j>>2]=488;c[j+4>>2]=1;g[j+8>>2]=.009999999776482582;l=j+28|0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;b[l+16>>1]=0;Ge(k,j,c[a+56>>2]|0);ff(d,j,e,c[(c[a+52>>2]|0)+12>>2]|0,f);i=h;return}function si(a){a=a|0;return}function ti(a){a=a|0;var b=0;b=i;sn(a);
i=b;return}function ui(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;h=i;if((a[6352]|0)==0){c[1540]=6;c[6164>>2]=53;a[6168>>0]=1;c[6256>>2]=7;c[6260>>2]=54;a[6264>>0]=1;c[6184>>2]=7;c[6188>>2]=54;a[6192>>0]=0;c[6280>>2]=8;c[6284>>2]=55;a[6288>>0]=1;c[6208>>2]=9;c[6212>>2]=56;a[6216>>0]=1;c[6172>>2]=9;c[6176>>2]=56;a[6180>>0]=0;c[6232>>2]=10;c[6236>>2]=57;a[6240>>0]=1;c[6268>>2]=10;c[6272>>2]=57;a[6276>>0]=0;c[6304>>2]=11;c[6308>>2]=58;a[6312>>0]=1;c[6196>>2]=11;c[6200>>2]=58;a[6204>>
0]=0;c[6328>>2]=12;c[6332>>2]=59;a[6336>>0]=1;c[6292>>2]=12;c[6296>>2]=59;a[6300>>0]=0;a[6352]=1}j=c[(c[b+12>>2]|0)+4>>2]|0;k=c[(c[e+12>>2]|0)+4>>2]|0;l=c[6160+(j*48|0)+(k*12|0)>>2]|0;if((l|0)==0){m=0;i=h;return m|0}if((a[6160+(j*48|0)+(k*12|0)+8>>0]|0)==0){m=ob[l&15](e,f,b,d,g)|0;i=h;return m|0}else{m=ob[l&15](b,d,e,f,g)|0;i=h;return m|0}return 0}function vi(d,f){d=d|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;j=c[d+48>>2]|0;k=c[d+52>>2]|0;if(((c[d+124>>2]|0)>0?(a[j+38>>0]|0)==0:0)?(a[k+38>>0]|0)==0:
0){l=c[j+8>>2]|0;m=l+4|0;n=e[m>>1]|0;if((n&2|0)==0){b[m>>1]=n|2;g[l+160>>2]=0}l=c[k+8>>2]|0;n=l+4|0;m=e[n>>1]|0;if((m&2|0)==0){b[n>>1]=m|2;g[l+160>>2]=0}}gb[c[6160+((c[(c[j+12>>2]|0)+4>>2]|0)*48|0)+((c[(c[k+12>>2]|0)+4>>2]|0)*12|0)+4>>2]&63](d,f);i=h;return}function wi(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;h=i;c[a>>2]=6368;c[a+4>>2]=4;c[a+48>>2]=b;c[a+52>>2]=e;c[a+56>>2]=d;c[a+60>>2]=f;c[a+124>>2]=0;c[a+128>>2]=0;f=b+16|0;d=a+8|0;j=d+40|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(j|
0));g[a+136>>2]=+Q(+(+g[f>>2]*+g[e+16>>2]));k=+g[b+20>>2];l=+g[e+20>>2];g[a+140>>2]=k>l?k:l;g[a+144>>2]=0;i=h;return}function xi(d,f){d=d|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;h=i;i=i+64|0;j=h;k=d+64|0;l=j+0|0;m=k+0|0;n=l+64|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));m=d+4|0;l=c[m>>2]|0;c[m>>2]=l|4;n=l>>>1;l=c[d+48>>2]|0;o=c[d+52>>2]|0;p=(a[o+38>>0]|a[l+38>>0])<<24>>24!=0;q=c[l+8>>2]|0;r=c[o+8>>2]|0;s=q+12|0;t=r+12|0;if(!p){pb[c[c[d>>
2]>>2]&31](d,k,s,t);k=d+124|0;u=(c[k>>2]|0)>0;a:do if(u){v=c[j+60>>2]|0;if((v|0)>0)w=0;else{x=0;while(1){g[d+(x*20|0)+72>>2]=0;g[d+(x*20|0)+76>>2]=0;x=x+1|0;if((x|0)>=(c[k>>2]|0))break a}}do{x=d+(w*20|0)+72|0;g[x>>2]=0;y=d+(w*20|0)+76|0;g[y>>2]=0;z=c[d+(w*20|0)+80>>2]|0;A=0;while(1){B=A+1|0;if((c[j+(A*20|0)+16>>2]|0)==(z|0)){C=7;break}if((B|0)<(v|0))A=B;else break}if((C|0)==7){C=0;g[x>>2]=+g[j+(A*20|0)+8>>2];g[y>>2]=+g[j+(A*20|0)+12>>2]}w=w+1|0}while((w|0)<(c[k>>2]|0))}while(0);k=n&1;if(u^(k|0)!=
0){w=q+4|0;C=e[w>>1]|0;if((C&2|0)==0){b[w>>1]=C|2;g[q+160>>2]=0}q=r+4|0;C=e[q>>1]|0;if((C&2|0)==0){b[q>>1]=C|2;g[r+160>>2]=0;D=k;E=u}else{D=k;E=u}}else{D=k;E=u}}else{u=lf(c[l+12>>2]|0,c[d+56>>2]|0,c[o+12>>2]|0,c[d+60>>2]|0,s,t)|0;c[d+124>>2]=0;D=n&1;E=u}u=c[m>>2]|0;c[m>>2]=E?u|2:u&-3;u=(D|0)==0;D=E^1;m=(f|0)==0;if(!(u^1|D|m))gb[c[(c[f>>2]|0)+8>>2]&63](f,d);if(!(u|E|m))gb[c[(c[f>>2]|0)+12>>2]&63](f,d);if(p|D|m){i=h;return}ib[c[(c[f>>2]|0)+32>>2]&7](f,d,j);i=h;return}function yi(a){a=a|0;return}function zi(a){a=
a|0;var b=0;b=i;sn(a);i=b;return}function Ai(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;e=i;b=Em(f,148)|0;if((b|0)==0){g=0;i=e;return g|0}wi(b,a,0,d,0);c[b>>2]=6392;g=b;i=e;return g|0}function Bi(a,b){a=a|0;b=b|0;var d=0;d=i;eb[c[(c[a>>2]|0)+4>>2]&127](a);Fm(b,a,148);i=d;return}function Ci(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;Ue(b,c[(c[a+48>>2]|0)+12>>2]|0,d,c[(c[a+52>>2]|0)+12>>2]|0,e);i=f;return}function Di(a){a=a|0;return}function Ei(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function Fi(a,
b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;e=i;b=Em(f,148)|0;if((b|0)==0){g=0;i=e;return g|0}wi(b,a,0,d,0);c[b>>2]=6464;g=b;i=e;return g|0}function Gi(a,b){a=a|0;b=b|0;var d=0;d=i;eb[c[(c[a>>2]|0)+4>>2]&127](a);Fm(b,a,148);i=d;return}function Hi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;Te(b,c[(c[a+48>>2]|0)+12>>2]|0,d,c[(c[a+52>>2]|0)+12>>2]|0,e);i=f;return}function Ii(a){a=a|0;return}function Ji(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function Ki(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;e=i;c[b+0>>2]=c[d+0>>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[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];f=c[d+44>>2]|0;h=b+36|0;c[h>>2]=f;j=c[d+32>>2]|0;k=b+52|0;c[k>>2]=j;l=b+40|0;c[l>>2]=Ym(f,j*88|0)|0;j=Ym(c[h>>2]|0,(c[k>>2]|0)*156|0)|0;h=b+44|0;c[h>>2]=j;c[b+28>>2]=c[d+36>>2];c[b+32>>2]=c[d+40>>2];f=c[d+28>>2]|0;d=b+48|0;c[d>>2]=f;if((c[k>>2]|0)<=0){i=e;return}m=b+24|0;n=b+8|0;b=f;f=j;
j=0;while(1){o=c[b+(j<<2)>>2]|0;p=c[o+48>>2]|0;q=c[o+52>>2]|0;r=+g[(c[p+12>>2]|0)+8>>2];s=+g[(c[q+12>>2]|0)+8>>2];t=c[p+8>>2]|0;p=c[q+8>>2]|0;q=c[o+124>>2]|0;g[f+(j*156|0)+136>>2]=+g[o+136>>2];g[f+(j*156|0)+140>>2]=+g[o+140>>2];g[f+(j*156|0)+144>>2]=+g[o+144>>2];u=t+8|0;c[f+(j*156|0)+112>>2]=c[u>>2];v=p+8|0;c[f+(j*156|0)+116>>2]=c[v>>2];w=t+136|0;g[f+(j*156|0)+120>>2]=+g[w>>2];x=p+136|0;g[f+(j*156|0)+124>>2]=+g[x>>2];y=t+144|0;g[f+(j*156|0)+128>>2]=+g[y>>2];z=p+144|0;g[f+(j*156|0)+132>>2]=+g[z>>2];
c[f+(j*156|0)+152>>2]=j;c[f+(j*156|0)+148>>2]=q;A=f+(j*156|0)+80|0;c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;c[A+12>>2]=0;c[A+16>>2]=0;c[A+20>>2]=0;c[A+24>>2]=0;c[A+28>>2]=0;A=c[l>>2]|0;c[A+(j*88|0)+32>>2]=c[u>>2];c[A+(j*88|0)+36>>2]=c[v>>2];g[A+(j*88|0)+40>>2]=+g[w>>2];g[A+(j*88|0)+44>>2]=+g[x>>2];x=t+44|0;t=c[x+4>>2]|0;w=A+(j*88|0)+48|0;c[w>>2]=c[x>>2];c[w+4>>2]=t;t=p+44|0;p=c[t+4>>2]|0;w=A+(j*88|0)+56|0;c[w>>2]=c[t>>2];c[w+4>>2]=p;g[A+(j*88|0)+64>>2]=+g[y>>2];g[A+(j*88|0)+68>>2]=+g[z>>2];z=o+104|0;y=
c[z+4>>2]|0;p=A+(j*88|0)+16|0;c[p>>2]=c[z>>2];c[p+4>>2]=y;y=o+112|0;p=c[y+4>>2]|0;z=A+(j*88|0)+24|0;c[z>>2]=c[y>>2];c[z+4>>2]=p;c[A+(j*88|0)+84>>2]=q;g[A+(j*88|0)+76>>2]=r;g[A+(j*88|0)+80>>2]=s;c[A+(j*88|0)+72>>2]=c[o+120>>2];if((q|0)>0){p=0;do{z=o+(p*20|0)+64|0;if((a[m>>0]|0)==0){g[f+(j*156|0)+(p*36|0)+16>>2]=0;g[f+(j*156|0)+(p*36|0)+20>>2]=0}else{g[f+(j*156|0)+(p*36|0)+16>>2]=+g[n>>2]*+g[o+(p*20|0)+72>>2];g[f+(j*156|0)+(p*36|0)+20>>2]=+g[n>>2]*+g[o+(p*20|0)+76>>2]}y=f+(j*156|0)+(p*36|0)|0;g[f+(j*
156|0)+(p*36|0)+24>>2]=0;g[f+(j*156|0)+(p*36|0)+28>>2]=0;g[f+(j*156|0)+(p*36|0)+32>>2]=0;w=A+(j*88|0)+(p<<3)|0;c[y+0>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;c[y+12>>2]=0;y=z;z=c[y+4>>2]|0;t=w;c[t>>2]=c[y>>2];c[t+4>>2]=z;p=p+1|0}while((p|0)!=(q|0))}q=j+1|0;if((q|0)>=(c[k>>2]|0))break;b=c[d>>2]|0;f=c[h>>2]|0;j=q}i=e;return}function Li(a){a=a|0;var b=0,d=0;b=i;d=a+36|0;_m(c[d>>2]|0,c[a+44>>2]|0);_m(c[d>>2]|0,c[a+40>>2]|0);i=b;return}function Mi(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,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;b=i;i=i+64|0;d=b+48|0;e=b+32|0;f=b;h=a+52|0;if((c[h>>2]|0)<=0){i=b;return}j=a+44|0;k=a+40|0;l=a+48|0;m=a+28|0;n=a+32|0;a=d+8|0;o=d+12|0;p=e+8|0;q=e+12|0;r=0;do{s=c[j>>2]|0;t=c[k>>2]|0;u=+g[t+(r*88|0)+76>>2];v=+g[t+(r*88|0)+80>>2];w=(c[(c[l>>2]|0)+(c[s+(r*156|0)+152>>2]<<2)>>2]|0)+64|0;x=c[s+(r*156|0)+112>>2]|0;y=c[s+(r*156|0)+116>>2]|
0;z=+g[s+(r*156|0)+120>>2];A=+g[s+(r*156|0)+124>>2];B=+g[s+(r*156|0)+128>>2];C=+g[s+(r*156|0)+132>>2];D=t+(r*88|0)+48|0;E=+g[D>>2];F=+g[D+4>>2];D=t+(r*88|0)+56|0;G=+g[D>>2];H=+g[D+4>>2];D=c[m>>2]|0;t=D+(x*12|0)|0;I=+g[t>>2];J=+g[t+4>>2];K=+g[D+(x*12|0)+8>>2];t=c[n>>2]|0;L=t+(x*12|0)|0;M=+g[L>>2];N=+g[L+4>>2];O=+g[t+(x*12|0)+8>>2];x=D+(y*12|0)|0;P=+g[x>>2];Q=+g[x+4>>2];R=+g[D+(y*12|0)+8>>2];D=t+(y*12|0)|0;U=+g[D>>2];V=+g[D+4>>2];W=+g[t+(y*12|0)+8>>2];X=+T(+K);g[a>>2]=X;Y=+S(+K);g[o>>2]=Y;K=+T(+R);
g[p>>2]=K;Z=+S(+R);g[q>>2]=Z;R=+(I-(E*Y-F*X));_=+(J-(F*Y+E*X));y=d;g[y>>2]=R;g[y+4>>2]=_;_=+(P-(G*Z-H*K));R=+(Q-(H*Z+G*K));y=e;g[y>>2]=_;g[y+4>>2]=R;jf(f,w,d,u,e,v);w=s+(r*156|0)+72|0;y=f;t=c[y+4>>2]|0;D=w;c[D>>2]=c[y>>2];c[D+4>>2]=t;t=s+(r*156|0)+148|0;D=c[t>>2]|0;do if((D|0)>0){y=s+(r*156|0)+76|0;v=z+A;x=s+(r*156|0)+140|0;L=0;do{$=f+(L<<3)+8|0;u=+g[$>>2]-I;aa=f+(L<<3)+12|0;R=+u;_=+(+g[aa>>2]-J);ba=s+(r*156|0)+(L*36|0)|0;g[ba>>2]=R;g[ba+4>>2]=_;_=+g[$>>2]-P;R=+_;K=+(+g[aa>>2]-Q);aa=s+(r*156|0)+(L*
36|0)+8|0;g[aa>>2]=R;g[aa+4>>2]=K;K=+g[y>>2];R=+g[s+(r*156|0)+(L*36|0)+4>>2];G=+g[w>>2];Z=u*K-R*G;H=+g[s+(r*156|0)+(L*36|0)+12>>2];X=K*_-G*H;G=v+Z*B*Z+X*C*X;if(G>0)ca=1/G;else ca=0;g[s+(r*156|0)+(L*36|0)+24>>2]=ca;G=+g[y>>2];X=-+g[w>>2];Z=u*X-G*R;K=_*X-G*H;G=v+Z*B*Z+K*C*K;if(G>0)da=1/G;else da=0;g[s+(r*156|0)+(L*36|0)+28>>2]=da;aa=s+(r*156|0)+(L*36|0)+32|0;g[aa>>2]=0;G=+g[w>>2]*(U-W*H-M+O*R)+ +g[y>>2]*(V+W*_-N-O*u);if(G<-1)g[aa>>2]=-(G*+g[x>>2]);L=L+1|0}while((L|0)!=(D|0));if((c[t>>2]|0)==2){v=+g[s+
(r*156|0)+76>>2];G=+g[w>>2];u=+g[s+(r*156|0)>>2]*v-+g[s+(r*156|0)+4>>2]*G;_=v*+g[s+(r*156|0)+8>>2]-G*+g[s+(r*156|0)+12>>2];R=v*+g[s+(r*156|0)+36>>2]-G*+g[s+(r*156|0)+40>>2];H=v*+g[s+(r*156|0)+44>>2]-G*+g[s+(r*156|0)+48>>2];G=z+A;v=B*u;K=C*_;Z=G+u*v+_*K;_=G+R*B*R+H*C*H;u=G+v*R+K*H;H=Z*_-u*u;if(!(Z*Z<H*1E3)){c[t>>2]=1;break}g[s+(r*156|0)+96>>2]=Z;g[s+(r*156|0)+100>>2]=u;g[s+(r*156|0)+104>>2]=u;g[s+(r*156|0)+108>>2]=_;if(H!=0)ea=1/H;else ea=H;H=-(ea*u);g[s+(r*156|0)+80>>2]=_*ea;g[s+(r*156|0)+84>>2]=
H;g[s+(r*156|0)+88>>2]=H;g[s+(r*156|0)+92>>2]=Z*ea}}while(0);r=r+1|0}while((r|0)<(c[h>>2]|0));i=b;return}function Ni(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;b=i;d=a+52|0;if((c[d>>2]|0)<=0){i=b;return}e=a+44|0;f=a+32|0;a=c[f>>2]|0;h=0;do{j=c[e>>2]|0;k=c[j+(h*156|0)+112>>2]|0;l=c[j+(h*156|0)+116>>2]|0;m=+g[j+(h*156|0)+120>>2];n=+g[j+(h*156|0)+128>>2];o=+g[j+(h*
156|0)+124>>2];p=+g[j+(h*156|0)+132>>2];q=c[j+(h*156|0)+148>>2]|0;r=a+(k*12|0)|0;s=r;t=+g[s>>2];u=+g[s+4>>2];v=+g[a+(k*12|0)+8>>2];s=a+(l*12|0)|0;w=+g[s>>2];x=+g[s+4>>2];y=+g[a+(l*12|0)+8>>2];s=j+(h*156|0)+72|0;z=+g[s>>2];A=+g[s+4>>2];if((q|0)>0){B=t;C=u;D=w;E=x;s=0;F=v;G=y;while(1){H=+g[j+(h*156|0)+(s*36|0)+16>>2];I=+g[j+(h*156|0)+(s*36|0)+20>>2];J=z*H+A*I;K=A*H-z*I;I=F-n*(+g[j+(h*156|0)+(s*36|0)>>2]*K-+g[j+(h*156|0)+(s*36|0)+4>>2]*J);H=B-m*J;L=C-m*K;M=G+p*(K*+g[j+(h*156|0)+(s*36|0)+8>>2]-J*+g[j+
(h*156|0)+(s*36|0)+12>>2]);N=D+o*J;J=E+o*K;s=s+1|0;if((s|0)==(q|0)){O=L;P=J;Q=N;R=H;S=I;T=M;break}else{B=H;C=L;D=N;E=J;F=I;G=M}}}else{O=u;P=x;Q=w;R=t;S=v;T=y}G=+R;F=+O;q=r;g[q>>2]=G;g[q+4>>2]=F;q=c[f>>2]|0;g[q+(k*12|0)+8>>2]=S;F=+Q;G=+P;s=q+(l*12|0)|0;g[s>>2]=F;g[s+4>>2]=G;a=c[f>>2]|0;g[a+(l*12|0)+8>>2]=T;h=h+1|0}while((h|0)<(c[d>>2]|0));i=b;return}function Oi(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,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0;b=i;d=a+52|0;if((c[d>>2]|0)<=0){i=b;return}e=a+44|0;f=a+32|0;a=c[f>>2]|0;h=0;do{j=c[e>>2]|0;k=j+(h*156|0)|0;l=c[j+(h*156|0)+112>>2]|0;m=c[j+(h*156|0)+116>>2]|0;n=+g[j+(h*156|0)+120>>2];o=+g[j+(h*156|0)+128>>2];p=+g[j+(h*156|0)+124>>2];q=+g[j+(h*156|0)+132>>2];r=j+(h*156|0)+148|0;s=c[r>>2]|0;t=a+(l*12|0)|0;u=t;v=+g[u>>2];w=+g[u+4>>2];x=
+g[a+(l*12|0)+8>>2];u=a+(m*12|0)|0;y=+g[u>>2];z=+g[u+4>>2];A=+g[a+(m*12|0)+8>>2];u=j+(h*156|0)+72|0;B=+g[u>>2];C=+g[u+4>>2];D=-B;E=+g[j+(h*156|0)+136>>2];if((s|0)>0){u=j+(h*156|0)+144|0;F=y;G=z;H=v;I=w;J=0;K=x;L=A;do{M=+g[j+(h*156|0)+(J*36|0)+12>>2];N=+g[j+(h*156|0)+(J*36|0)+8>>2];O=+g[j+(h*156|0)+(J*36|0)+4>>2];P=+g[j+(h*156|0)+(J*36|0)>>2];Q=E*+g[j+(h*156|0)+(J*36|0)+16>>2];R=j+(h*156|0)+(J*36|0)+20|0;S=+g[R>>2];T=S-+g[j+(h*156|0)+(J*36|0)+28>>2]*(C*(F-L*M-H+K*O)+(G+L*N-I-K*P)*D-+g[u>>2]);U=-Q;
V=T<Q?T:Q;Q=V<U?U:V;V=Q-S;g[R>>2]=Q;Q=C*V;S=V*D;H=H-n*Q;I=I-n*S;K=K-o*(P*S-O*Q);F=F+p*Q;G=G+p*S;L=L+q*(N*S-M*Q);J=J+1|0}while((J|0)!=(s|0));if((c[r>>2]|0)==1){D=+g[j+(h*156|0)+12>>2];E=+g[j+(h*156|0)+8>>2];Q=+g[j+(h*156|0)+4>>2];M=+g[k>>2];s=j+(h*156|0)+16|0;S=+g[s>>2];N=S-+g[j+(h*156|0)+24>>2]*(B*(F-L*D-H+K*Q)+C*(G+L*E-I-K*M)-+g[j+(h*156|0)+32>>2]);O=N>0?N:0;N=O-S;g[s>>2]=O;O=B*N;S=C*N;W=H-n*O;X=I-n*S;Y=F+p*O;Z=G+p*S;_=K-o*(M*S-Q*O);$=L+q*(E*S-D*O)}else{aa=I;ba=H;ca=G;da=F;ea=K;fa=L;ga=8}}else{aa=
w;ba=v;ca=z;da=y;ea=x;fa=A;ga=8}do if((ga|0)==8){ga=0;s=j+(h*156|0)+16|0;O=+g[s>>2];J=j+(h*156|0)+52|0;D=+g[J>>2];S=+g[j+(h*156|0)+12>>2];E=+g[j+(h*156|0)+8>>2];Q=+g[j+(h*156|0)+4>>2];M=+g[k>>2];N=+g[j+(h*156|0)+48>>2];P=+g[j+(h*156|0)+44>>2];V=+g[j+(h*156|0)+40>>2];U=+g[j+(h*156|0)+36>>2];T=+g[j+(h*156|0)+104>>2];ha=+g[j+(h*156|0)+100>>2];ia=B*(da-fa*S-ba+ea*Q)+C*(ca+fa*E-aa-ea*M)-+g[j+(h*156|0)+32>>2]-(O*+g[j+(h*156|0)+96>>2]+D*T);ja=B*(da-fa*N-ba+ea*V)+C*(ca+fa*P-aa-ea*U)-+g[j+(h*156|0)+68>>2]-
(O*ha+D*+g[j+(h*156|0)+108>>2]);ka=+g[j+(h*156|0)+80>>2]*ia+ +g[j+(h*156|0)+88>>2]*ja;la=ia*+g[j+(h*156|0)+84>>2]+ja*+g[j+(h*156|0)+92>>2];ma=-ka;na=-la;if(!(!(ka<=-0)|!(la<=-0))){la=ma-O;ka=na-D;oa=B*la;pa=C*la;la=B*ka;qa=C*ka;ka=oa+la;ra=pa+qa;g[s>>2]=ma;g[J>>2]=na;W=ba-n*ka;X=aa-n*ra;Y=da+p*ka;Z=ca+p*ra;_=ea-o*(M*pa-Q*oa+(U*qa-V*la));$=fa+q*(E*pa-S*oa+(P*qa-N*la));break}la=ia*+g[j+(h*156|0)+24>>2];qa=-la;if(la<=-0?ja+ha*qa>=0:0){ha=qa-O;la=0-D;oa=B*ha;pa=C*ha;ha=B*la;ra=C*la;la=ha+oa;ka=ra+pa;
g[s>>2]=qa;g[J>>2]=0;W=ba-n*la;X=aa-n*ka;Y=da+p*la;Z=ca+p*ka;_=ea-o*(pa*M-oa*Q+(ra*U-ha*V));$=fa+q*(pa*E-oa*S+(ra*P-ha*N));break}ha=ja*+g[j+(h*156|0)+60>>2];ra=-ha;if(ha<=-0?ia+T*ra>=0:0){T=0-O;ha=ra-D;oa=B*T;pa=C*T;T=B*ha;ka=C*ha;ha=oa+T;la=pa+ka;g[s>>2]=0;g[J>>2]=ra;W=ba-n*ha;X=aa-n*la;Y=da+p*ha;Z=ca+p*la;_=ea-o*(pa*M-oa*Q+(ka*U-T*V));$=fa+q*(pa*E-oa*S+(ka*P-T*N));break}if(!(ia>=0)|!(ja>=0)){W=ba;X=aa;Y=da;Z=ca;_=ea;$=fa}else{ja=0-O;O=0-D;D=B*ja;ia=C*ja;ja=B*O;T=C*O;O=D+ja;ka=ia+T;g[s>>2]=0;g[J>>
2]=0;W=ba-n*O;X=aa-n*ka;Y=da+p*O;Z=ca+p*ka;_=ea-o*(ia*M-D*Q+(T*U-ja*V));$=fa+q*(ia*E-D*S+(T*P-ja*N))}}while(0);q=+W;o=+X;j=t;g[j>>2]=q;g[j+4>>2]=o;j=c[f>>2]|0;g[j+(l*12|0)+8>>2]=_;o=+Y;q=+Z;k=j+(m*12|0)|0;g[k>>2]=o;g[k+4>>2]=q;a=c[f>>2]|0;g[a+(m*12|0)+8>>2]=$;h=h+1|0}while((h|0)<(c[d>>2]|0));i=b;return}function Pi(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0;b=i;d=c[a+52>>2]|0;if((d|0)<=0){i=b;return}e=c[a+44>>2]|0;f=c[a+48>>2]|0;a=0;do{h=c[f+(c[e+(a*156|0)+152>>2]<<2)>>2]|0;j=c[e+(a*156|0)+148>>2]|0;
if((j|0)>0){k=0;do{g[h+(k*20|0)+72>>2]=+g[e+(a*156|0)+(k*36|0)+16>>2];g[h+(k*20|0)+76>>2]=+g[e+(a*156|0)+(k*36|0)+20>>2];k=k+1|0}while((k|0)<(j|0))}a=a+1|0}while((a|0)<(d|0));i=b;return}function Qi(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,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;b=i;i=i+64|0;d=b+40|
0;e=b+24|0;f=b;h=a+52|0;if((c[h>>2]|0)<=0){j=0;k=j>=-.014999999664723873;i=b;return k|0}l=a+40|0;m=a+28|0;a=d+8|0;n=d+12|0;o=e+8|0;p=e+12|0;q=f+8|0;r=f+16|0;s=c[m>>2]|0;t=0;u=0;while(1){v=c[l>>2]|0;w=v+(t*88|0)|0;x=c[v+(t*88|0)+32>>2]|0;y=c[v+(t*88|0)+36>>2]|0;z=v+(t*88|0)+48|0;A=+g[z>>2];B=+g[z+4>>2];C=+g[v+(t*88|0)+40>>2];D=+g[v+(t*88|0)+64>>2];z=v+(t*88|0)+56|0;E=+g[z>>2];F=+g[z+4>>2];G=+g[v+(t*88|0)+44>>2];H=+g[v+(t*88|0)+68>>2];z=c[v+(t*88|0)+84>>2]|0;v=s+(x*12|0)|0;I=+g[v>>2];J=+g[v+4>>2];K=
+g[s+(x*12|0)+8>>2];v=s+(y*12|0)|0;L=+g[v>>2];M=+g[v+4>>2];N=+g[s+(y*12|0)+8>>2];if((z|0)>0){O=C+G;P=I;Q=J;R=L;U=M;V=K;W=N;v=0;X=u;do{Y=+T(+V);g[a>>2]=Y;Z=+S(+V);g[n>>2]=Z;_=+T(+W);g[o>>2]=_;$=+S(+W);g[p>>2]=$;aa=+(P-(A*Z-B*Y));ba=+(Q-(B*Z+A*Y));ca=d;g[ca>>2]=aa;g[ca+4>>2]=ba;ba=+(R-(E*$-F*_));aa=+(U-(F*$+E*_));ca=e;g[ca>>2]=ba;g[ca+4>>2]=aa;Ri(f,w,d,e,v);ca=f;aa=+g[ca>>2];ba=+g[ca+4>>2];ca=q;_=+g[ca>>2];$=+g[ca+4>>2];Y=+g[r>>2];Z=_-P;da=$-Q;ea=_-R;_=$-U;X=X<Y?X:Y;$=(Y+.004999999888241291)*.20000000298023224;
Y=$<0?$:0;$=ba*Z-aa*da;fa=ba*ea-aa*_;ga=fa*H*fa+(O+$*D*$);if(ga>0)ha=-(Y<-.20000000298023224?-.20000000298023224:Y)/ga;else ha=0;ga=aa*ha;aa=ba*ha;P=P-C*ga;Q=Q-C*aa;V=V-D*(Z*aa-da*ga);R=R+G*ga;U=U+G*aa;W=W+H*(ea*aa-_*ga);v=v+1|0}while((v|0)!=(z|0));ia=Q;ja=P;ka=U;la=R;ma=c[m>>2]|0;na=V;oa=W;pa=X}else{ia=J;ja=I;ka=M;la=L;ma=s;na=K;oa=N;pa=u}H=+ja;G=+ia;z=ma+(x*12|0)|0;g[z>>2]=H;g[z+4>>2]=G;z=c[m>>2]|0;g[z+(x*12|0)+8>>2]=na;G=+la;H=+ka;v=z+(y*12|0)|0;g[v>>2]=G;g[v+4>>2]=H;s=c[m>>2]|0;g[s+(y*12|0)+8>>
2]=oa;t=t+1|0;if((t|0)>=(c[h>>2]|0)){j=pa;break}else u=pa}k=j>=-.014999999664723873;i=b;return k|0}function Ri(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;h=i;j=c[b+72>>2]|0;if((j|0)==2){k=e+12|0;l=+g[k>>2];m=+g[b+16>>2];n=e+8|0;o=+g[n>>2];p=+g[b+20>>2];q=l*m-o*p;r=m*o+l*p;p=+q;l=+r;s=a;g[s>>2]=p;g[s+4>>2]=l;l=+g[k>>2];p=+g[b+24>>2];o=+g[n>>2];m=+g[b+28>>2];t=+g[d+12>>2];u=+g[b+(f<<3)>>2];v=+g[d+8>>2];w=+g[b+(f<<3)+4>>2];
x=+g[d>>2]+(t*u-v*w);y=u*v+t*w+ +g[d+4>>2];g[a+16>>2]=q*(x-(+g[e>>2]+(l*p-o*m)))+(y-(p*o+l*m+ +g[e+4>>2]))*r-+g[b+76>>2]-+g[b+80>>2];m=+x;x=+y;n=a+8|0;g[n>>2]=m;g[n+4>>2]=x;x=+-q;q=+-r;n=a;g[n>>2]=x;g[n+4>>2]=q;i=h;return}else if((j|0)==1){n=d+12|0;q=+g[n>>2];x=+g[b+16>>2];k=d+8|0;r=+g[k>>2];m=+g[b+20>>2];y=q*x-r*m;l=x*r+q*m;m=+y;q=+l;s=a;g[s>>2]=m;g[s+4>>2]=q;q=+g[n>>2];m=+g[b+24>>2];r=+g[k>>2];x=+g[b+28>>2];o=+g[e+12>>2];p=+g[b+(f<<3)>>2];w=+g[e+8>>2];t=+g[b+(f<<3)+4>>2];v=+g[e>>2]+(o*p-w*t);u=
p*w+o*t+ +g[e+4>>2];g[a+16>>2]=y*(v-(+g[d>>2]+(q*m-r*x)))+(u-(m*r+q*x+ +g[d+4>>2]))*l-+g[b+76>>2]-+g[b+80>>2];l=+v;v=+u;f=a+8|0;g[f>>2]=l;g[f+4>>2]=v;i=h;return}else if((j|0)==0){v=+g[d+12>>2];l=+g[b+24>>2];u=+g[d+8>>2];x=+g[b+28>>2];q=+g[d>>2]+(v*l-u*x);r=l*u+v*x+ +g[d+4>>2];x=+g[e+12>>2];v=+g[b>>2];u=+g[e+8>>2];l=+g[b+4>>2];m=+g[e>>2]+(x*v-u*l);y=v*u+x*l+ +g[e+4>>2];l=m-q;x=y-r;u=+l;v=+x;e=a;g[e>>2]=u;g[e+4>>2]=v;v=+Q(+(l*l+x*x));if(v<1.1920928955078125E-7){z=l;A=x}else{u=1/v;v=l*u;g[a>>2]=v;t=
x*u;g[a+4>>2]=t;z=v;A=t}t=+((q+m)*.5);m=+((r+y)*.5);e=a+8|0;g[e>>2]=t;g[e+4>>2]=m;g[a+16>>2]=l*z+x*A-+g[b+76>>2]-+g[b+80>>2];i=h;return}else{g[a+16>>2]=0;b=8784;e=c[b+4>>2]|0;d=a;c[d>>2]=c[b>>2];c[d+4>>2]=e;e=8784;d=c[e+4>>2]|0;b=a+8|0;c[b>>2]=c[e>>2];c[b+4>>2]=d;i=h;return}}function Si(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,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,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0;e=i;i=i+64|0;f=e+40|0;h=e+24|0;j=e;k=a+52|0;if((c[k>>2]|0)<=0){l=0;m=l>=-.007499999832361937;i=e;return m|0}n=a+40|0;o=a+28|0;a=f+8|0;p=f+12|0;q=h+8|0;r=h+12|0;s=j+8|0;t=j+16|0;u=0;v=0;while(1){w=c[n>>2]|0;x=w+(u*88|0)|0;y=c[w+(u*88|0)+32>>2]|0;z=c[w+(u*88|0)+36>>2]|0;A=w+(u*88|0)+48|0;B=+g[A>>2];C=+g[A+4>>2];A=w+(u*88|0)+56|0;D=+g[A>>2];E=+g[A+4>>2];A=c[w+(u*88|0)+84>>2]|0;if((y|0)==(b|0)|(y|0)==(d|0)){F=+g[w+
(u*88|0)+64>>2];G=+g[w+(u*88|0)+40>>2]}else{F=0;G=0}if((z|0)==(b|0)|(z|0)==(d|0)){H=+g[w+(u*88|0)+68>>2];I=+g[w+(u*88|0)+44>>2]}else{H=0;I=0}w=c[o>>2]|0;J=w+(y*12|0)|0;K=+g[J>>2];L=+g[J+4>>2];M=+g[w+(y*12|0)+8>>2];J=w+(z*12|0)|0;N=+g[J>>2];O=+g[J+4>>2];P=+g[w+(z*12|0)+8>>2];if((A|0)>0){Q=G+I;R=N;U=O;V=K;W=L;X=M;Y=P;J=0;Z=v;do{_=+T(+X);g[a>>2]=_;$=+S(+X);g[p>>2]=$;aa=+T(+Y);g[q>>2]=aa;ba=+S(+Y);g[r>>2]=ba;ca=+(V-(B*$-C*_));da=+(W-(C*$+B*_));ea=f;g[ea>>2]=ca;g[ea+4>>2]=da;da=+(R-(D*ba-E*aa));ca=+(U-
(E*ba+D*aa));ea=h;g[ea>>2]=da;g[ea+4>>2]=ca;Ri(j,x,f,h,J);ea=j;ca=+g[ea>>2];da=+g[ea+4>>2];ea=s;aa=+g[ea>>2];ba=+g[ea+4>>2];_=+g[t>>2];$=aa-V;fa=ba-W;ga=aa-R;aa=ba-U;Z=Z<_?Z:_;ba=(_+.004999999888241291)*.75;_=ba<0?ba:0;ba=da*$-ca*fa;ha=da*ga-ca*aa;ia=ha*H*ha+(Q+ba*F*ba);if(ia>0)ja=-(_<-.20000000298023224?-.20000000298023224:_)/ia;else ja=0;ia=ca*ja;ca=da*ja;V=V-G*ia;W=W-G*ca;X=X-F*($*ca-fa*ia);R=R+I*ia;U=U+I*ca;Y=Y+H*(ga*ca-aa*ia);J=J+1|0}while((J|0)!=(A|0));ka=W;la=V;ma=U;na=R;oa=c[o>>2]|0;pa=X;
qa=Y;ra=Z}else{ka=L;la=K;ma=O;na=N;oa=w;pa=M;qa=P;ra=v}Q=+la;D=+ka;A=oa+(y*12|0)|0;g[A>>2]=Q;g[A+4>>2]=D;A=c[o>>2]|0;g[A+(y*12|0)+8>>2]=pa;D=+na;Q=+ma;J=A+(z*12|0)|0;g[J>>2]=D;g[J+4>>2]=Q;g[(c[o>>2]|0)+(z*12|0)+8>>2]=qa;u=u+1|0;if((u|0)>=(c[k>>2]|0)){l=ra;break}else v=ra}m=l>=-.007499999832361937;i=e;return m|0}function Ti(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;e=i;b=Em(f,148)|0;if((b|0)==0){g=0;i=e;return g|0}wi(b,a,0,d,0);c[b>>2]=6528;g=b;i=e;return g|0}function Ui(a,b){a=a|0;b=b|0;var d=
0;d=i;eb[c[(c[a>>2]|0)+4>>2]&127](a);Fm(b,a,148);i=d;return}function Vi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;cf(b,c[(c[a+48>>2]|0)+12>>2]|0,d,c[(c[a+52>>2]|0)+12>>2]|0,e);i=f;return}function Wi(a){a=a|0;return}function Xi(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function Yi(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;h=Em(f,148)|0;if((h|0)==0){j=0;i=g;return j|0}wi(h,a,b,d,e);c[h>>2]=6600;j=h;i=g;return j|0}function Zi(a,b){a=a|0;b=b|0;var d=0;d=i;eb[c[(c[a>>2]|0)+4>>2]&127](a);
Fm(b,a,148);i=d;return}function _i(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;h=i;i=i+48|0;j=h;k=c[(c[a+48>>2]|0)+12>>2]|0;c[j>>2]=488;c[j+4>>2]=1;g[j+8>>2]=.009999999776482582;l=j+28|0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;b[l+16>>1]=0;Ge(k,j,c[a+56>>2]|0);cf(d,j,e,c[(c[a+52>>2]|0)+12>>2]|0,f);i=h;return}function $i(a){a=a|0;return}function aj(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function bj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;e=i;b=Em(f,148)|0;if((b|0)==0){g=0;
i=e;return g|0}wi(b,a,0,d,0);c[b>>2]=6672;g=b;i=e;return g|0}function cj(a,b){a=a|0;b=b|0;var d=0;d=i;eb[c[(c[a>>2]|0)+4>>2]&127](a);Fm(b,a,148);i=d;return}function dj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;ff(b,c[(c[a+48>>2]|0)+12>>2]|0,d,c[(c[a+52>>2]|0)+12>>2]|0,e);i=f;return}function ej(a){a=a|0;return}function fj(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function gj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;e=i;b=Em(f,148)|0;if((b|0)==0){g=0;i=e;return g|0}wi(b,a,0,d,0);c[b>>2]=6744;
g=b;i=e;return g|0}function hj(a,b){a=a|0;b=b|0;var d=0;d=i;eb[c[(c[a>>2]|0)+4>>2]&127](a);Fm(b,a,148);i=d;return}function ij(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;gf(b,c[(c[a+48>>2]|0)+12>>2]|0,d,c[(c[a+52>>2]|0)+12>>2]|0,e);i=f;return}function jj(a){a=a|0;return}function kj(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function lj(a){a=a|0;var d=0;d=i;b[a+32>>1]=1;b[a+34>>1]=-1;b[a+36>>1]=0;c[a+40>>2]=0;c[a+24>>2]=0;c[a+28>>2]=0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;i=d;return}function mj(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;j=i;c[d+40>>2]=c[h+4>>2];g[d+16>>2]=+g[h+8>>2];g[d+20>>2]=+g[h+12>>2];c[d+8>>2]=f;c[d+4>>2]=0;f=d+32|0;k=h+22|0;b[f+0>>1]=b[k+0>>1]|0;b[f+2>>1]=b[k+2>>1]|0;b[f+4>>1]=b[k+4>>1]|0;a[d+38>>0]=a[h+20>>0]|0;k=c[h>>2]|0;f=nb[c[(c[k>>2]|0)+8>>2]&31](k,e)|0;c[d+12>>2]=f;k=bb[c[(c[f>>2]|0)+12>>2]&7](f)|0;f=Em(e,k*28|0)|0;e=d+24|0;c[e>>2]=f;if((k|0)>0){l=f;m=0}else{n=d+28|0;c[n>>2]=0;o=h+16|0;p=+g[o>>2];g[d>>2]=p;i=j;return}do{c[l+(m*28|0)+16>>
2]=0;l=c[e>>2]|0;c[l+(m*28|0)+24>>2]=-1;m=m+1|0}while((m|0)!=(k|0));n=d+28|0;c[n>>2]=0;o=h+16|0;p=+g[o>>2];g[d>>2]=p;i=j;return}function nj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=a+12|0;f=c[e>>2]|0;g=bb[c[(c[f>>2]|0)+12>>2]&7](f)|0;f=a+24|0;Fm(b,c[f>>2]|0,g*28|0);c[f>>2]=0;f=c[e>>2]|0;g=c[f+4>>2]|0;if((g|0)==1){eb[c[c[f>>2]>>2]&127](f);Fm(b,f,48);c[e>>2]=0;i=d;return}else if((g|0)==3){eb[c[c[f>>2]>>2]&127](f);Fm(b,f,40);c[e>>2]=0;i=d;return}else if((g|0)==0){eb[c[c[f>>2]>>2]&127](f);Fm(b,f,20);
c[e>>2]=0;i=d;return}else if((g|0)==2){eb[c[c[f>>2]>>2]&127](f);Fm(b,f,152);c[e>>2]=0;i=d;return}else{c[e>>2]=0;i=d;return}}function oj(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;e=i;f=a+12|0;g=c[f>>2]|0;h=bb[c[(c[g>>2]|0)+12>>2]&7](g)|0;g=a+28|0;c[g>>2]=h;if((h|0)<=0){i=e;return}h=a+24|0;j=0;do{k=c[h>>2]|0;l=k+(j*28|0)|0;m=c[f>>2]|0;pb[c[(c[m>>2]|0)+28>>2]&31](m,l,d,j);c[k+(j*28|0)+24>>2]=Oe(b,l,l)|0;c[k+(j*28|0)+16>>2]=a;c[k+(j*28|0)+20>>2]=j;j=j+1|0}while((j|0)<(c[g>>2]|0));i=
e;return}function pj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=a+28|0;if((c[e>>2]|0)<=0){c[e>>2]=0;i=d;return}f=a+24|0;a=0;do{g=(c[f>>2]|0)+(a*28|0)+24|0;Pe(b,c[g>>2]|0);c[g>>2]=-1;a=a+1|0}while((a|0)<(c[e>>2]|0));c[e>>2]=0;i=d;return}function qj(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=i;i=i+48|0;h=f+24|0;j=f+8|0;k=f;l=a+28|0;if((c[l>>2]|0)<=0){i=f;return}m=a+24|0;n=a+12|0;a=h+4|0;o=j+4|0;p=h+8|0;q=j+8|
0;r=h+12|0;s=j+12|0;t=e+4|0;u=d+4|0;v=k+4|0;w=0;do{x=c[m>>2]|0;y=c[n>>2]|0;z=x+(w*28|0)+20|0;pb[c[(c[y>>2]|0)+28>>2]&31](y,h,d,c[z>>2]|0);y=c[n>>2]|0;pb[c[(c[y>>2]|0)+28>>2]&31](y,j,e,c[z>>2]|0);z=x+(w*28|0)|0;A=+g[h>>2];B=+g[j>>2];C=+g[a>>2];D=+g[o>>2];E=+(A<B?A:B);B=+(C<D?C:D);y=z;g[y>>2]=E;g[y+4>>2]=B;B=+g[p>>2];E=+g[q>>2];D=+g[r>>2];C=+g[s>>2];A=+(B>E?B:E);E=+(D>C?D:C);y=x+(w*28|0)+8|0;g[y>>2]=A;g[y+4>>2]=E;E=+g[t>>2]-+g[u>>2];g[k>>2]=+g[e>>2]-+g[d>>2];g[v>>2]=E;Qe(b,c[x+(w*28|0)+24>>2]|0,z,k);
w=w+1|0}while((w|0)<(c[l>>2]|0));i=f;return}function rj(b,d){b=b|0;d=d|0;var e=0,f=0,h=0;e=i;Cm(b);Wm(b+76|0);Sj(b+102880|0);c[b+102992>>2]=0;c[b+102996>>2]=0;f=b+102960|0;h=b+103004|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[h>>0]=1;a[b+103005>>0]=1;a[b+103006>>0]=0;a[b+103007>>0]=1;a[b+102988>>0]=1;h=d;d=c[h+4>>2]|0;f=b+102980|0;c[f>>2]=c[h>>2];c[f+4>>2]=d;c[b+102876>>2]=4;g[b+103E3>>2]=0;c[b+102956>>2]=b;c[b+103040>>2]=8792;c[b+103044>>2]=c[2206];d=b+103008|0;c[d+0>>2]=0;
c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0;i=e;return}function qb(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+7&-8;return b|0}function rb(){return i|0}function sb(a){a=a|0;i=a}function tb(a,b){a=a|0;b=b|0;if((p|0)==0){p=a;q=b}}function ub(b){b=b|0;a[k>>0]=a[b>>0];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 vb(b){b=b|0;a[k>>0]=a[b>>0];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 wb(a){a=a|0;E=a}function xb(){return E|0}function yb(a){a=a|0;return+ +(c[a+60>>2]|0)}function zb(d,e,f,j,k,l,m,n,o,p,q){d=d|0;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=p|0;q=+q;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;r=i;i=i+1104|0;s=r;t=r+1072|0;u=r+1032|0;v=r+8|0;h[s>>3]=l;c[t>>2]=0;g[t+16>>2]=e;g[t+8>>2]=f;a[t+20>>0]=j!=0&1;g[t+12>>2]=k;c[t+4>>2]=s;b[t+22>>1]=~~m;b[t+26>>1]=~~n;b[t+24>>1]=~~o;c[u>>2]=760;c[u+4>>2]=3;g[u+8>>2]=.009999999776482582;c[u+12>>
2]=0;c[u+16>>2]=0;a[u+36>>0]=0;a[u+37>>0]=0;s=~~(q*.5);if(q>0){w=0;x=0}else{De(u,v,s);c[t>>2]=u;y=Mj(d,t)|0;Ce(u);i=r;return y|0}while(1){o=+ +g[p+(w<<2)>>2];n=+ +g[p+((w|1)<<2)>>2];z=v+(x<<3)|0;g[z>>2]=o;g[z+4>>2]=n;w=w+2|0;if(!(+(w|0)<q))break;else x=x+1|0}De(u,v,s);c[t>>2]=u;y=Mj(d,t)|0;Ce(u);i=r;return y|0}function Ab(a){a=a|0;Ha(a|0)|0;xa()}function Bb(d,e,f,j,k,l,m,n,o,p,q,r){d=d|0;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;var s=0,t=0,u=0,v=0;s=i;i=i+64|0;t=s;u=s+28|0;v=s+8|0;h[t>>
3]=l;g[u+16>>2]=e;g[u+8>>2]=f;a[u+20>>0]=j!=0&1;g[u+12>>2]=k;c[u+4>>2]=t;b[u+22>>1]=~~m;b[u+26>>1]=~~n;b[u+24>>1]=~~o;c[v>>2]=680;t=v+4|0;c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;g[v+12>>2]=p;g[v+16>>2]=q;g[v+8>>2]=r;c[u>>2]=v;v=Mj(d,u)|0;i=s;return v|0}function Cb(a){a=a|0;return}function Db(b,d,e,f,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B){b=b|0;d=+d;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;v=+v;w=+w;x=+x;y=+y;z=+z;A=+A;B=+B;var 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;C=i;i=i+112|0;D=C;E=C+28|0;F=C+8|0;h[D>>3]=y;G=E+8|0;H=E+20|0;I=E+4|0;J=E+16|0;K=E+28|0;L=E+32|0;M=E+33|0;N=E+34|0;O=E+35|0;P=E+36|0;Q=E+40|0;c[Q+0>>2]=0;c[Q+4>>2]=0;c[Q+8>>2]=0;c[Q+12>>2]=0;c[Q+16>>2]=0;c[Q+20>>2]=0;c[Q+24>>2]=0;g[J>>2]=d;g[K>>2]=e;a[L>>0]=~~f;a[M>>0]=~~j;a[N>>0]=~~k;a[O>>0]=~~l;c[E>>2]=~~m>>>0;c[E+72>>2]=0;c[I>>2]=~~o>>>0;g[E+64>>2]=p;p=+q;q=+r;I=H;g[I>>2]=p;g[I+4>>2]=q;q=+s;s=+t;I=G;g[I>>2]=q;g[I+4>>2]=s;c[E+60>>2]=0;c[E+56>>2]=~~v;c[E+48>>2]=0;c[E+44>>2]=0;g[P>>
2]=w;g[E+52>>2]=x;c[E+68>>2]=D;c[F>>2]=680;c[F+4>>2]=0;x=+z;z=+A;D=F+12|0;g[D>>2]=x;g[D+4>>2]=z;g[F+8>>2]=B;c[Q>>2]=F;F=Fk(b,E)|0;i=C;return F|0}function Eb(a,b,d,e,f,h,j,k){a=a|0;b=+b;d=+d;e=+e;f=+f;h=+h;j=+j;k=+k;var l=0,m=0,n=0,o=0;l=i;i=i+48|0;m=l+16|0;n=l;c[m>>2]=680;o=m+4|0;c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;g[m+12>>2]=b;g[m+16>>2]=d;g[m+8>>2]=e;g[n>>2]=f;g[n+4>>2]=h;g[n+8>>2]=j;g[n+12>>2]=k;k=+(Ck(a,m,n,0)|0);i=l;return+k}function Fb(d,e,f,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y){d=d|0;e=+e;f=+f;
j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;v=+v;w=+w;x=+x;y=+y;var z=0,A=0,B=0,C=0;z=i;i=i+96|0;A=z;B=z+56|0;C=z+8|0;h[A>>3]=l;g[B+16>>2]=e;g[B+8>>2]=f;a[B+20>>0]=j!=0&1;g[B+12>>2]=k;c[B+4>>2]=A;b[B+22>>1]=~~m;b[B+26>>1]=~~n;b[B+24>>1]=~~o;c[C>>2]=488;c[C+4>>2]=1;g[C+8>>2]=.009999999776482582;A=C+28|0;c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;c[A+12>>2]=0;b[A+16>>1]=0;o=+r;r=+s;A=C+28|0;g[A>>2]=o;g[A+4>>2]=r;r=+t;t=+u;A=C+12|0;g[A>>2]=r;g[A+4>>2]=t;t=+v;v=+w;A=C+20|0;g[A>>2]=t;g[A+4>>2]=
v;v=+x;x=+y;A=C+36|0;g[A>>2]=v;g[A+4>>2]=x;a[C+44>>0]=p!=0&1;a[C+45>>0]=q!=0&1;c[B>>2]=C;C=Mj(d,B)|0;i=z;return C|0}function Gb(a){a=a|0;return}function Hb(d,e,f,j,k,l,m,n,o,p,q,r,s,t,u){d=d|0;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;var v=0,w=0,x=0,y=0,z=0;v=i;i=i+224|0;w=v;x=v+184|0;y=v+160|0;z=v+8|0;h[w>>3]=l;g[x+16>>2]=e;g[x+8>>2]=f;a[x+20>>0]=j!=0&1;g[x+12>>2]=k;c[x+4>>2]=w;b[x+22>>1]=~~m;b[x+26>>1]=~~n;b[x+24>>1]=~~o;g[y>>2]=p;g[y+4>>2]=q;g[y+8>>2]=r;g[y+12>>2]=
s;g[y+16>>2]=t;g[y+20>>2]=u;c[z>>2]=592;c[z+4>>2]=2;g[z+8>>2]=.009999999776482582;c[z+148>>2]=0;g[z+12>>2]=0;g[z+16>>2]=0;oe(z,y,3);c[x>>2]=z;z=Mj(d,x)|0;i=v;return z|0}function Ib(a){a=a|0;return}function Jb(d,e,f,j,k,l,m,n,o,p,q,r,s,t,u,v,w){d=d|0;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;v=+v;w=+w;var x=0,y=0,z=0,A=0,B=0;x=i;i=i+224|0;y=x;z=x+192|0;A=x+160|0;B=x+8|0;h[y>>3]=l;g[z+16>>2]=e;g[z+8>>2]=f;a[z+20>>0]=j!=0&1;g[z+12>>2]=k;c[z+4>>2]=y;b[z+22>>1]=~~m;b[z+26>>
1]=~~n;b[z+24>>1]=~~o;g[A>>2]=p;g[A+4>>2]=q;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;c[B>>2]=592;c[B+4>>2]=2;g[B+8>>2]=.009999999776482582;c[B+148>>2]=0;g[B+12>>2]=0;g[B+16>>2]=0;oe(B,A,4);c[z>>2]=B;B=Mj(d,z)|0;i=x;return B|0}function Kb(d,e,f,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y){d=d|0;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;v=+v;w=+w;x=+x;y=+y;var z=0,A=0,B=0,C=0,D=0;z=i;i=i+240|0;A=z;B=z+200|0;C=z+160|0;D=z+8|0;h[A>>3]=l;g[B+16>>2]=e;
g[B+8>>2]=f;a[B+20>>0]=j!=0&1;g[B+12>>2]=k;c[B+4>>2]=A;b[B+22>>1]=~~m;b[B+26>>1]=~~n;b[B+24>>1]=~~o;g[C>>2]=p;g[C+4>>2]=q;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;g[C+32>>2]=x;g[C+36>>2]=y;c[D>>2]=592;c[D+4>>2]=2;g[D+8>>2]=.009999999776482582;c[D+148>>2]=0;g[D+12>>2]=0;g[D+16>>2]=0;oe(D,C,5);c[B>>2]=D;D=Mj(d,B)|0;i=z;return D|0}function Lb(d,e,f,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A){d=d|0;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;v=+v;
w=+w;x=+x;y=+y;z=+z;A=+A;var B=0,C=0,D=0,E=0,F=0;B=i;i=i+240|0;C=B;D=B+208|0;E=B+160|0;F=B+8|0;h[C>>3]=l;g[D+16>>2]=e;g[D+8>>2]=f;a[D+20>>0]=j!=0&1;g[D+12>>2]=k;c[D+4>>2]=C;b[D+22>>1]=~~m;b[D+26>>1]=~~n;b[D+24>>1]=~~o;g[E>>2]=p;g[E+4>>2]=q;g[E+8>>2]=r;g[E+12>>2]=s;g[E+16>>2]=t;g[E+20>>2]=u;g[E+24>>2]=v;g[E+28>>2]=w;g[E+32>>2]=x;g[E+36>>2]=y;g[E+40>>2]=z;g[E+44>>2]=A;c[F>>2]=592;c[F+4>>2]=2;g[F+8>>2]=.009999999776482582;c[F+148>>2]=0;g[F+12>>2]=0;g[F+16>>2]=0;oe(F,E,6);c[D>>2]=F;F=Mj(d,D)|0;i=B;return F|
0}function Mb(d,e,f,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){d=d|0;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;v=+v;w=+w;x=+x;y=+y;z=+z;A=+A;B=+B;C=+C;var D=0,E=0,F=0,G=0,H=0;D=i;i=i+256|0;E=D;F=D+216|0;G=D+160|0;H=D+8|0;h[E>>3]=l;g[F+16>>2]=e;g[F+8>>2]=f;a[F+20>>0]=j!=0&1;g[F+12>>2]=k;c[F+4>>2]=E;b[F+22>>1]=~~m;b[F+26>>1]=~~n;b[F+24>>1]=~~o;g[G>>2]=p;g[G+4>>2]=q;g[G+8>>2]=r;g[G+12>>2]=s;g[G+16>>2]=t;g[G+20>>2]=u;g[G+24>>2]=v;g[G+28>>2]=w;g[G+32>>2]=x;g[G+36>>2]=y;g[G+40>>
2]=z;g[G+44>>2]=A;g[G+48>>2]=B;g[G+52>>2]=C;c[H>>2]=592;c[H+4>>2]=2;g[H+8>>2]=.009999999776482582;c[H+148>>2]=0;g[H+12>>2]=0;g[H+16>>2]=0;oe(H,G,7);c[F>>2]=H;H=Mj(d,F)|0;i=D;return H|0}function Nb(d,e,f,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E){d=d|0;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;v=+v;w=+w;x=+x;y=+y;z=+z;A=+A;B=+B;C=+C;D=+D;E=+E;var F=0,G=0,H=0,I=0,J=0;F=i;i=i+256|0;G=F;H=F+224|0;I=F+160|0;J=F+8|0;h[G>>3]=l;g[H+16>>2]=e;g[H+8>>2]=f;a[H+20>>0]=j!=0&1;g[H+
12>>2]=k;c[H+4>>2]=G;b[H+22>>1]=~~m;b[H+26>>1]=~~n;b[H+24>>1]=~~o;g[I>>2]=p;g[I+4>>2]=q;g[I+8>>2]=r;g[I+12>>2]=s;g[I+16>>2]=t;g[I+20>>2]=u;g[I+24>>2]=v;g[I+28>>2]=w;g[I+32>>2]=x;g[I+36>>2]=y;g[I+40>>2]=z;g[I+44>>2]=A;g[I+48>>2]=B;g[I+52>>2]=C;g[I+56>>2]=D;g[I+60>>2]=E;c[J>>2]=592;c[J+4>>2]=2;g[J+8>>2]=.009999999776482582;c[J+148>>2]=0;g[J+12>>2]=0;g[J+16>>2]=0;oe(J,I,8);c[H>>2]=J;J=Mj(d,H)|0;i=F;return J|0}function Ob(b,d,e,f,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G){b=b|0;d=+d;e=+e;f=+f;j=
+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;v=+v;w=+w;x=+x;y=+y;z=+z;A=+A;B=+B;C=+C;D=+D;E=+E;F=+F;G=+G;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;H=i;i=i+272|0;I=H;J=H+192|0;K=H+160|0;L=H+8|0;h[I>>3]=y;M=J+8|0;N=J+20|0;O=J+4|0;P=J+16|0;Q=J+28|0;R=J+32|0;S=J+33|0;T=J+34|0;U=J+35|0;V=J+36|0;W=J+40|0;c[W+0>>2]=0;c[W+4>>2]=0;c[W+8>>2]=0;c[W+12>>2]=0;c[W+16>>2]=0;c[W+20>>2]=0;c[W+24>>2]=0;g[P>>2]=d;g[Q>>2]=e;a[R>>0]=~~f;a[S>>0]=~~j;a[T>>0]=~~k;a[U>>0]=~~l;c[J>>2]=
~~m>>>0;c[J+72>>2]=0;c[O>>2]=~~o>>>0;g[J+64>>2]=p;p=+q;q=+r;O=N;g[O>>2]=p;g[O+4>>2]=q;q=+s;s=+t;O=M;g[O>>2]=q;g[O+4>>2]=s;c[J+60>>2]=0;c[J+56>>2]=~~v;c[J+48>>2]=0;c[J+44>>2]=0;g[V>>2]=w;g[J+52>>2]=x;c[J+68>>2]=I;g[K>>2]=z;g[K+4>>2]=A;g[K+8>>2]=B;g[K+12>>2]=C;g[K+16>>2]=D;g[K+20>>2]=E;g[K+24>>2]=F;g[K+28>>2]=G;c[L>>2]=592;c[L+4>>2]=2;g[L+8>>2]=.009999999776482582;c[L+148>>2]=0;g[L+12>>2]=0;g[L+16>>2]=0;oe(L,K,4);c[W>>2]=L;L=Fk(b,J)|0;i=H;return L|0}function Pb(a,b,d,e,f,h,j,k,l,m,n,o,p){a=a|0;b=+b;
d=+d;e=+e;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;var q=0,r=0,s=0,t=0;q=i;i=i+208|0;r=q+168|0;s=q+16|0;t=q;g[r>>2]=b;g[r+4>>2]=d;g[r+8>>2]=e;g[r+12>>2]=f;g[r+16>>2]=h;g[r+20>>2]=j;g[r+24>>2]=k;g[r+28>>2]=l;c[s>>2]=592;c[s+4>>2]=2;g[s+8>>2]=.009999999776482582;c[s+148>>2]=0;g[s+12>>2]=0;g[s+16>>2]=0;oe(s,r,4);g[t>>2]=m;g[t+4>>2]=n;g[t+8>>2]=o;g[t+12>>2]=p;p=+(Ck(a,s,t,0)|0);i=q;return+p}function Qb(a,d,e){a=a|0;d=+d;e=+e;var f=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;h=d;if((c[a>>2]|0)!=2){i=f;return}j=
a+4|0;k=b[j>>1]|0;if((e!=0?(k&2)==0:0)?(l=k&65535,(l&2|0)==0):0){m=(l|2)&65535;b[j>>1]=m;g[a+160>>2]=0;n=m}else n=k;if((n&2)==0){i=f;return}n=a+88|0;g[n>>2]=+g[n>>2]+h*+g[a+144>>2];i=f;return}function Rb(a,d,e,f,h,j){a=a|0;d=+d;e=+e;f=+f;h=+h;j=+j;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;k=i;l=d;d=e;e=f;f=h;if((c[a>>2]|0)!=2){i=k;return}m=a+4|0;n=b[m>>1]|0;if((j!=0?(n&2)==0:0)?(o=n&65535,(o&2|0)==0):0){p=(o|2)&65535;b[m>>1]=p;g[a+160>>2]=0;q=p}else q=n;if((q&2)==0){i=k;return}q=a+92|0;g[q>>2]=l+ +g[q>>2];
q=a+96|0;g[q>>2]=d+ +g[q>>2];q=a+100|0;g[q>>2]=+g[q>>2]+(d*(e-+g[a+60>>2])-l*(f-+g[a+64>>2]));i=k;return}function Sb(a,d,e,f){a=a|0;d=+d;e=+e;f=+f;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;j=d;d=e;if((c[a>>2]|0)!=2){i=h;return}k=a+4|0;l=b[k>>1]|0;if((f!=0?(l&2)==0:0)?(m=l&65535,(m&2|0)==0):0){n=(m|2)&65535;b[k>>1]=n;g[a+160>>2]=0;o=n}else o=l;if((o&2)==0){i=h;return}o=a+92|0;g[o>>2]=j+ +g[o>>2];o=a+96|0;g[o>>2]=d+ +g[o>>2];i=h;return}function Tb(a,d,e){a=a|0;d=+d;e=+e;var f=0,h=0,j=0,k=0,l=0,m=0,n=0;f=
i;h=d;if((c[a>>2]|0)!=2){i=f;return}j=a+4|0;k=b[j>>1]|0;if((e!=0?(k&2)==0:0)?(l=k&65535,(l&2|0)==0):0){m=(l|2)&65535;b[j>>1]=m;g[a+160>>2]=0;n=m}else n=k;if((n&2)==0){i=f;return}n=a+100|0;g[n>>2]=h+ +g[n>>2];i=f;return}function Ub(a,b){a=a|0;b=b|0;var c=0;c=i;Nj(a,b);i=c;return}function Vb(a){a=a|0;return+ +g[a+72>>2]}function Wb(a){a=a|0;return+ +g[a+88>>2]}function Xb(a){a=a|0;var b=0,c=0;b=+g[a+44>>2];c=+g[a+48>>2];return+(+g[a+140>>2]+ +g[a+132>>2]*(b*b+c*c))}function Yb(a,b){a=a|0;b=b|0;var c=
0;c=+g[a+84>>2];g[b>>2]=+g[a+80>>2];g[b+4>>2]=c;return}function Zb(a,b,c,d){a=a|0;b=+b;c=+c;d=d|0;var e=0,f=0;e=b-+g[a+12>>2];b=c-+g[a+16>>2];c=+g[a+24>>2];f=+g[a+20>>2];g[d>>2]=e*c+b*f;g[d+4>>2]=c*b-e*f;return}function _b(a,b,c,d){a=a|0;b=+b;c=+c;d=d|0;var e=0,f=0;e=b-+g[a+12>>2];b=c-+g[a+16>>2];c=+g[a+24>>2];f=+g[a+20>>2];g[d>>2]=e*c+b*f;g[d+4>>2]=c*b-e*f;return}function $b(a){a=a|0;return+ +g[a+132>>2]}function ac(a,b){a=a|0;b=b|0;var c=0;c=+g[a+16>>2];g[b>>2]=+g[a+12>>2];g[b+4>>2]=c;return}function bc(a,
b){a=a|0;b=b|0;g[b>>2]=+g[a+12>>2];g[b+4>>2]=+g[a+16>>2];g[b+8>>2]=+g[a+20>>2];g[b+12>>2]=+g[a+24>>2];return}function cc(a){a=a|0;return+ +((c[a>>2]|0)>>>0)}function dc(a,b){a=a|0;b=b|0;var c=0;c=+g[a+64>>2];g[b>>2]=+g[a+60>>2];g[b+4>>2]=c;return}function ec(a,b,c,d){a=a|0;b=+b;c=+c;d=d|0;var e=0,f=0,h=0;e=b;b=c;c=+g[a+24>>2];f=+g[a+20>>2];h=b*c+e*f+ +g[a+16>>2];g[d>>2]=+g[a+12>>2]+(e*c-b*f);g[d+4>>2]=h;return}function fc(a,b,c,d){a=a|0;b=+b;c=+c;d=d|0;var e=0,f=0,h=0;e=b;b=c;c=+g[a+24>>2];f=+g[a+
20>>2];h=b*c+e*f+ +g[a+16>>2];g[d>>2]=+g[a+12>>2]+(e*c-b*f);g[d+4>>2]=h;return}function gc(a,d){a=a|0;d=+d;var f=0,h=0,j=0,k=0;f=i;h=a+4|0;j=e[h>>1]|0;if(!(d!=0)){b[h>>1]=j&65533;g[a+160>>2]=0;k=a+80|0;c[k+0>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;i=f;return}if((j&2|0)!=0){i=f;return}b[h>>1]=j|2;g[a+160>>2]=0;i=f;return}function hc(a,d){a=a|0;d=+d;var f=0,h=0,j=0,k=0;f=i;h=d;if((c[a>>2]|0)==0){i=f;return}if(h*h>0?(j=a+4|0,k=e[j>>1]|0,(k&2|0)==0):0){b[j>>1]=k|2;g[a+160>>
2]=0}g[a+88>>2]=h;i=f;return}function ic(a,d,f){a=a|0;d=+d;f=+f;var h=0,j=0,k=0,l=0;h=i;j=d;d=f;if((c[a>>2]|0)==0){i=h;return}if(j*j+d*d>0?(k=a+4|0,l=e[k>>1]|0,(l&2|0)==0):0){b[k>>1]=l|2;g[a+160>>2]=0}f=+j;j=+d;l=a+80|0;g[l>>2]=f;g[l+4>>2]=j;i=h;return}function jc(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0,h=0;f=i;i=i+16|0;h=f;g[h>>2]=b;g[h+4>>2]=c;g[h+8>>2]=d;g[h+12>>2]=e;Oj(a,h);i=f;return}function kc(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;var e=0,f=0;e=i;i=i+16|0;f=e;g[f>>2]=b;g[f+4>>2]=c;Qj(a,f,d);i=
e;return}function lc(a,b){a=a|0;b=+b;var c=0;c=i;Jj(a,~~b>>>0);i=c;return}function mc(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0,h=0;e=i;i=i+16|0;f=e;g[f>>2]=b;g[f+4>>2]=d;h=c[a+12>>2]|0;d=+((hb[c[(c[h>>2]|0)+16>>2]&15](h,(c[a+8>>2]|0)+12|0,f)|0)&1);i=e;return+d}function nc(a){a=a|0;return}function oc(a){a=a|0;return}function pc(a){a=a|0;return}function qc(a,b){a=+a;b=+b;var c=0,d=0,e=0;c=i;i=i+16|0;d=c;e=qn(103048)|0;g[d>>2]=a;g[d+4>>2]=b;rj(e,d);i=c;return e|0}function rc(b,d,e,f,h,j,k,l,m,n,o,p,q,r,s,
t,u){b=b|0;d=+d;e=+e;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=u|0;var v=0,w=0,x=0,y=0,z=0;v=i;i=i+64|0;w=v;x=w+44|0;y=w+4|0;z=w+36|0;c[y+0>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;c[y+12>>2]=0;c[y+16>>2]=0;c[y+20>>2]=0;a[w+40>>0]=d!=0&1;a[z>>0]=e!=0&1;g[w+12>>2]=f;g[w+24>>2]=h;g[w+32>>2]=j;a[w+37>>0]=k!=0&1;a[w+39>>0]=l!=0&1;a[w+38>>0]=m!=0&1;g[w+48>>2]=n;g[w+28>>2]=o;g[w+16>>2]=p;g[w+20>>2]=q;g[y>>2]=r;g[w+8>>2]=s;c[w>>2]=~~t>>>0;c[x>>2]=u;u=vj(b,w)|0;i=v;return u|0}function sc(b,
d,e,f,h,j,k,l,m,n,o,p,q,r,s,t,u,v){b=b|0;d=+d;e=+e;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;v=+v;var w=0,x=0,y=0;w=i;i=i+96|0;x=w;a[x>>0]=0;g[x+4>>2]=1;g[x+8>>2]=1;c[x+16>>2]=0;g[x+72>>2]=d;g[x+24>>2]=e;a[x+76>>0]=f!=0&1;g[x+56>>2]=h;g[x+28>>2]=j;g[x+80>>2]=k;g[x+52>>2]=l;g[x+20>>2]=m;g[x+12>>2]=n;g[x+48>>2]=o;g[x+32>>2]=p;c[x+68>>2]=~~q;g[x+64>>2]=r;g[x+60>>2]=s;g[x+44>>2]=t;g[x+40>>2]=u;g[x+36>>2]=v;y=zj(b,x)|0;i=w;return y|0}function tc(a){a=a|0;var b=0;b=i;if((a|0)!=
0){sj(a);sn(a)}i=b;return}function uc(a,b){a=a|0;b=b|0;var c=0;c=i;wj(a,b);i=c;return}function vc(a,b){a=a|0;b=b|0;var c=0;c=i;xj(a,b);i=c;return}function wc(a,b){a=a|0;b=b|0;var c=0;c=i;tj(a,b);i=c;return}function xc(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0,h=0,j=0,k=0;f=i;i=i+16|0;h=f;j=+b;b=+c;k=h;g[k>>2]=j;g[k+4>>2]=b;b=+d;d=+e;k=h+8|0;g[k>>2]=b;g[k+4>>2]=d;Dj(a,16,h);i=f;return}function yc(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0,h=0,j=0;f=i;i=i+16|0;h=f+8|0;j=f;g[h>>2]=b;g[h+4>>2]=c;
g[j>>2]=d;g[j+4>>2]=e;Ej(a,24,h,j);i=f;return}function zc(a){a=a|0;var b=0;b=i;uj(a,8);i=b;return}function Ac(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0,f=0;d=i;e=+b;b=+c;f=a+102980|0;g[f>>2]=e;g[f+4>>2]=b;i=d;return}function Bc(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;var e=0;e=i;Cj(a,b,~~c,~~d,3);i=e;return}function Cc(a){a=a|0;return a+64|0}function Dc(a){a=a|0;var b=0,d=0,e=0;b=i;d=c[a+48>>2]|0;e=c[a+52>>2]|0;jf(32,a+64|0,(c[d+8>>2]|0)+12|0,+g[(c[d+12>>2]|0)+8>>2],(c[e+8>>2]|0)+12|0,+g[(c[e+12>>2]|0)+8>>2]);i=b;
return 32}function Ec(b,d,e,f,h,j,k,l,m,n,o){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;var p=0,q=0,r=0;p=i;i=i+48|0;q=p;c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q>>2]=3;r=q+20|0;c[r>>2]=0;c[r+4>>2]=0;c[q+8>>2]=d;c[q+12>>2]=e;a[q+16>>0]=f!=0&1;g[q+44>>2]=h;g[q+40>>2]=j;g[q+36>>2]=k;k=+l;l=+m;e=q+20|0;g[e>>2]=k;g[e+4>>2]=l;l=+n;n=+o;e=q+28|0;g[e>>2]=l;g[e+4>>2]=n;e=yj(b,q)|0;i=p;return e|0}function Fc(b,d,e,f,h,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;
var o=0,p=0,q=0,r=0,s=0,t=0;o=i;i=i+64|0;p=o+16|0;q=o+8|0;r=o;c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p>>2]=3;s=p+20|0;t=p+36|0;c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;g[t>>2]=1;a[p+16>>0]=l!=0&1;g[p+44>>2]=m;g[p+40>>2]=n;g[q>>2]=f;g[q+4>>2]=h;g[r>>2]=j;g[r+4>>2]=k;Xf(p,d,e,q,r);r=yj(b,p)|0;i=o;return r|0}function Gc(b,d,e,f,h,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;var o=0,p=0,q=0;o=i;i=i+48|0;p=o;c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p>>2]=
9;q=p+20|0;c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q+16>>2]=0;c[p+8>>2]=d;c[p+12>>2]=e;a[p+16>>0]=f!=0&1;f=+h;h=+j;e=p+20|0;g[e>>2]=f;g[e+4>>2]=h;h=+k;k=+l;e=p+28|0;g[e>>2]=h;g[e+4>>2]=k;g[p+36>>2]=m;g[p+40>>2]=n;e=yj(b,p)|0;i=o;return e|0}function Hc(b,d,e,f,h,j,k,l){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;var m=0,n=0,o=0,p=0;m=i;i=i+64|0;n=m+8|0;o=m;c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;c[n>>2]=9;p=n+20|0;c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=0;a[n+
16>>0]=j!=0&1;g[n+36>>2]=k;g[n+40>>2]=l;g[o>>2]=f;g[o+4>>2]=h;hg(n,d,e,o);o=yj(b,n)|0;i=m;return o|0}function Ic(a){a=a|0;var b=0,c=0;b=i;c=+Ng(a);i=b;return+c}function Jc(b,d,e,f,h,j,k){b=b|0;d=d|0;e=e|0;f=+f;h=h|0;j=j|0;k=+k;var l=0,m=0;l=i;i=i+32|0;m=l;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m>>2]=6;c[m+8>>2]=d;c[m+12>>2]=e;a[m+16>>0]=f!=0&1;c[m+20>>2]=h;c[m+24>>2]=j;g[m+28>>2]=k;j=yj(b,m)|0;i=l;return j|0}function Kc(a){a=a|0;return c[a+48>>2]|0}function Lc(a){a=a|0;return c[a+52>>
2]|0}function Mc(a,b){a=a|0;b=+b;var c=0;c=i;Sf(a,b);i=c;return}function Nc(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0;d=i;i=i+16|0;e=d;g[e>>2]=b;g[e+4>>2]=c;Rf(a,e);i=d;return}function Oc(b,d,e,f,h,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;var o=0,p=0;o=i;i=i+48|0;p=o;c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p>>2]=11;c[p+8>>2]=d;c[p+12>>2]=e;a[p+16>>0]=f!=0&1;g[p+28>>2]=h;g[p+40>>2]=j;j=+k;k=+l;e=p+20|0;g[e>>2]=j;g[e+4>>2]=k;g[p+32>>2]=m;g[p+36>>2]=n;e=yj(b,p)|0;i=o;return e|
0}function Pc(b,d,e,f,h,j,k){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;var l=0,m=0;l=i;i=i+48|0;m=l;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m>>2]=11;g[m+20>>2]=0;g[m+24>>2]=0;g[m+28>>2]=0;a[m+16>>0]=f!=0&1;g[m+40>>2]=h;g[m+32>>2]=j;g[m+36>>2]=k;If(m,d,e);e=yj(b,m)|0;i=l;return e|0}function Qc(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0;d=i;i=i+16|0;e=d;g[e>>2]=b;g[e+4>>2]=c;wf(a,e);i=d;return}function Rc(b,d,e,f,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;var n=0,o=0;n=i;i=i+48|0;o=n;
c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;c[o>>2]=5;c[o+8>>2]=d;c[o+12>>2]=e;a[o+16>>0]=f!=0&1;g[o+36>>2]=h;g[o+32>>2]=j;g[o+28>>2]=k;k=+l;l=+m;e=o+20|0;g[e>>2]=k;g[e+4>>2]=l;e=yj(b,o)|0;i=n;return e|0}function Sc(a,b){a=a|0;b=+b;var c=0;c=i;ah(a,b!=0);i=c;return}function Tc(a,b){a=a|0;b=+b;var c=0;c=i;ch(a,b!=0);i=c;return}function Uc(a){a=a|0;var b=0,c=0;b=i;c=+_g(a);i=b;return+c}function Vc(a){a=a|0;return+ +g[a+132>>2]}function Wc(a,b){a=a|0;b=+b;var c=0,d=0;c=i;d=+eh(a,b);i=c;return+d}
function Xc(a){a=a|0;var b=0,c=0;b=i;c=+(($g(a)|0)&1);i=b;return+c}function Yc(a){a=a|0;var b=0,c=0;b=i;c=+((bh(a)|0)&1);i=b;return+c}function Zc(a,b){a=a|0;b=+b;var c=0;c=i;dh(a,b);i=c;return}function _c(b,d,e,f,h,j,k,l,m,n,o,p,q,r,s,t,u){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;var v=0,w=0,x=0;v=i;i=i+80|0;w=v;c[w+0>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;c[w+12>>2]=0;c[w>>2]=2;x=w+20|0;c[x>>2]=0;c[x+4>>2]=0;c[w+8>>2]=d;c[w+12>>2]=e;a[w+16>>0]=f!=0&1;a[w+48>>
0]=h!=0&1;a[w+60>>0]=j!=0&1;j=+k;k=+l;e=w+20|0;g[e>>2]=j;g[e+4>>2]=k;k=+m;m=+n;e=w+28|0;g[e>>2]=k;g[e+4>>2]=m;m=+o;o=+p;e=w+36|0;g[e>>2]=m;g[e+4>>2]=o;g[w+52>>2]=q;g[w+64>>2]=r;g[w+68>>2]=s;g[w+44>>2]=t;g[w+56>>2]=u;e=yj(b,w)|0;i=v;return e|0}function $c(b,d,e,f,h,j,k,l,m,n,o,p,q,r){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;var s=0,t=0,u=0,v=0,w=0,x=0;s=i;i=i+96|0;t=s+16|0;u=s+8|0;v=s;c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;c[t>>2]=2;w=t+20|0;x=t+36|0;c[w+0>>
2]=0;c[w+4>>2]=0;c[w+8>>2]=0;c[w+12>>2]=0;g[x>>2]=1;g[t+40>>2]=0;g[t+44>>2]=0;a[t+16>>0]=l!=0&1;a[t+48>>0]=m!=0&1;a[t+60>>0]=n!=0&1;g[t+52>>2]=o;g[t+64>>2]=p;g[t+68>>2]=q;g[t+56>>2]=r;g[u>>2]=f;g[u+4>>2]=h;g[v>>2]=j;g[v+4>>2]=k;Rg(t,d,e,u,v);v=yj(b,t)|0;i=s;return v|0}function ad(b,d,e,f,h,j,k,l,m,n,o,p,q,r,s){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;var t=0,u=0;t=i;i=i+64|0;u=t;c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[u>>2]=4;c[u+8>>2]=d;c[u+12>>2]=e;a[u+16>>0]=
f!=0&1;f=+h;h=+j;e=u+20|0;g[e>>2]=f;g[e+4>>2]=h;h=+k;k=+l;e=u+28|0;g[e>>2]=h;g[e+4>>2]=k;g[u+52>>2]=m;g[u+56>>2]=n;n=+o;o=+p;e=u+36|0;g[e>>2]=n;g[e+4>>2]=o;o=+q;q=+r;e=u+44|0;g[e>>2]=o;g[e+4>>2]=q;g[u+60>>2]=s;e=yj(b,u)|0;i=t;return e|0}function bd(b,d,e,f,h,j,k,l,m,n,o,p,q){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;var r=0,s=0,t=0,u=0,v=0,w=0;r=i;i=i+96|0;s=r+32|0;t=r+24|0;u=r+16|0;v=r+8|0;w=r;c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;c[s>>2]=4;g[s+20>>2]=-1;g[s+
24>>2]=1;g[s+28>>2]=1;g[s+32>>2]=1;g[s+36>>2]=-1;g[s+40>>2]=0;g[s+44>>2]=1;g[s+48>>2]=0;g[s+52>>2]=0;g[s+56>>2]=0;g[s+60>>2]=1;a[s+16>>0]=q!=0&1;g[t>>2]=l;g[t+4>>2]=m;g[u>>2]=n;g[u+4>>2]=o;g[v>>2]=f;g[v+4>>2]=h;g[w>>2]=j;g[w+4>>2]=k;ci(s,d,e,t,u,v,w,p);w=yj(b,s)|0;i=r;return w|0}function cd(a,b){a=a|0;b=+b;var c=0;c=i;Nh(a,b!=0);i=c;return}function dd(a,b){a=a|0;b=+b;var c=0;c=i;Kh(a,b!=0);i=c;return}function ed(a){a=a|0;var b=0,c=0;b=i;c=+Ih(a);i=b;return+c}function fd(a){a=a|0;var b=0,c=0;b=i;c=
+((Mh(a)|0)&1);i=b;return+c}function gd(a){a=a|0;var b=0,c=0;b=i;c=+((Jh(a)|0)&1);i=b;return+c}function hd(b,d,e,f,h,j,k,l,m,n,o,p,q,r,s){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;var t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;t=i;i=i+64|0;u=t;c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[u+12>>2]=0;c[u>>2]=1;v=u+20|0;w=u+44|0;x=u+48|0;y=u+60|0;z=u+56|0;A=u+52|0;c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[v+12>>2]=0;c[u+8>>2]=d;c[u+12>>2]=e;a[u+16>>0]=f!=0&1;a[u+40>>0]=h!=0&1;a[A>>0]=j!=
0&1;j=+l;l=+m;A=u+20|0;g[A>>2]=j;g[A+4>>2]=l;l=+n;n=+o;A=u+28|0;g[A>>2]=l;g[A+4>>2]=n;g[w>>2]=k;g[y>>2]=p;g[z>>2]=q;g[u+36>>2]=r;g[x>>2]=s;x=yj(b,u)|0;i=t;return x|0}function id(b,d,e,f,h,j,k,l,m,n,o,p){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;q=i;i=i+80|0;r=q+8|0;s=q;c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[r+12>>2]=0;c[r>>2]=1;t=r+20|0;u=r+44|0;v=r+48|0;w=r+60|0;x=r+56|0;y=r+52|0;c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;c[t+16>>
2]=0;a[r+16>>0]=j!=0&1;a[r+40>>0]=k!=0&1;a[y>>0]=l!=0&1;g[u>>2]=m;g[w>>2]=n;g[x>>2]=o;g[v>>2]=p;g[s>>2]=f;g[s+4>>2]=h;zh(r,d,e,s);s=yj(b,r)|0;i=q;return s|0}function jd(a,b){a=a|0;b=+b;var c=0;c=i;Lh(a,b);i=c;return}function kd(b,d,e,f,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;var n=0,o=0;n=i;i=i+48|0;o=n;c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;c[o>>2]=10;c[o+8>>2]=d;c[o+12>>2]=e;a[o+16>>0]=f!=0&1;f=+h;h=+j;e=o+20|0;g[e>>2]=f;g[e+4>>2]=h;h=+k;k=+l;e=o+28|0;g[e>>2]=h;g[e+
4>>2]=k;g[o+36>>2]=m;e=yj(b,o)|0;i=n;return e|0}function ld(b,d,e,f,h,j,k,l,m,n,o){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;var p=0,q=0,r=0;p=i;i=i+48|0;q=p;c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q>>2]=8;r=q+20|0;c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[r+12>>2]=0;c[q+8>>2]=d;c[q+12>>2]=e;a[q+16>>0]=f!=0&1;g[q+44>>2]=h;g[q+40>>2]=j;j=+k;k=+l;e=q+20|0;g[e>>2]=j;g[e+4>>2]=k;k=+m;m=+n;e=q+28|0;g[e>>2]=k;g[e+4>>2]=m;g[q+36>>2]=o;e=yj(b,q)|0;i=p;return e|0}function md(b,d,e,f,
h,j,k,l){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;var m=0,n=0,o=0,p=0;m=i;i=i+64|0;n=m+8|0;o=m;c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;c[n>>2]=8;p=n+20|0;c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=0;a[n+16>>0]=j!=0&1;g[n+44>>2]=k;g[n+40>>2]=l;g[o>>2]=f;g[o+4>>2]=h;tg(n,d,e,o);o=yj(b,n)|0;i=m;return o|0}function nd(a,b){a=a|0;b=+b;var c=0;c=i;_h(a,b);i=c;return}function od(a,b){a=a|0;b=+b;g[a+68>>2]=b;return}function pd(b,d,e,f,h,j,k,l,m,n,o,p,q,r,s){b=b|0;d=d|0;e=e|0;f=
+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;var t=0,u=0,v=0;t=i;i=i+64|0;u=t;c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[u+12>>2]=0;c[u>>2]=7;v=u+20|0;c[v>>2]=0;c[v+4>>2]=0;c[u+8>>2]=d;c[u+12>>2]=e;a[u+16>>0]=f!=0&1;g[u+60>>2]=h;a[u+44>>0]=j!=0&1;g[u+56>>2]=k;k=+l;l=+m;e=u+20|0;g[e>>2]=k;g[e+4>>2]=l;l=+n;n=+o;e=u+28|0;g[e>>2]=l;g[e+4>>2]=n;n=+p;p=+q;e=u+36|0;g[e>>2]=n;g[e+4>>2]=p;g[u+48>>2]=r;g[u+52>>2]=s;e=yj(b,u)|0;i=t;return e|0}function qd(b,d,e,f,h,j,k,l,m,n,o,p,q){b=b|0;d=d|0;e=e|0;
f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;var r=0,s=0,t=0,u=0,v=0,w=0;r=i;i=i+80|0;s=r+16|0;t=r+8|0;u=r;c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;c[s>>2]=7;v=s+20|0;w=s+36|0;c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[v+12>>2]=0;g[w>>2]=1;g[s+40>>2]=0;a[s+16>>0]=l!=0&1;g[s+60>>2]=m;a[s+44>>0]=n!=0&1;g[s+56>>2]=o;g[s+48>>2]=p;g[s+52>>2]=q;g[t>>2]=f;g[t+4>>2]=h;g[u>>2]=j;g[u+4>>2]=k;Rh(s,d,e,t,u);u=yj(b,s)|0;i=r;return u|0}function rd(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0;d=i;i=i+16|0;e=d;g[e>>
2]=b;g[e+4>>2]=c;ok(a,e);i=d;return}function sd(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0;d=i;i=i+16|0;e=d;g[e>>2]=b;g[e+4>>2]=c;pk(a,e);i=d;return}function td(a,b){a=a|0;b=+b;var c=0;c=i;qk(a,b!=0);i=c;return}function ud(a){a=a|0;return+ +(c[a+4>>2]|0)}function vd(a){a=a|0;return+ +((c[a+8>>2]|0)-(c[a+4>>2]|0)|0)}function wd(b,d,e,f,j,k,l,m,n,o,p,q,r){b=b|0;d=+d;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;var s=0,t=0,u=0,v=0;s=i;i=i+64|0;t=s+8|0;u=s;v=s+16|0;h[t>>3]=l;h[u>>3]=p;a[v+20>>0]=~~d;
a[v+21>>0]=~~f;a[v+22>>0]=~~e;a[v+23>>0]=~~j;c[v>>2]=~~k>>>0;c[v+32>>2]=t;g[v+24>>2]=m;m=+n;n=+o;t=v+4|0;g[t>>2]=m;g[t+4>>2]=n;c[v+28>>2]=u;n=+q;q=+r;u=v+12|0;g[u>>2]=n;g[u+4>>2]=q;q=+(wk(b,v)|0);i=s;return+q}function xd(a){a=a|0;var b=0,c=0;b=i;c=uk(a)|0;i=b;return c|0}function yd(a){a=a|0;return+ +(c[a+44>>2]|0)}function zd(a){a=a|0;return c[a+96>>2]|0}function Ad(a){a=a|0;return c[a+104>>2]|0}function Bd(a,b){a=a|0;b=+b;g[a+340>>2]=b;return}function Cd(a,b){a=a|0;b=+b;var c=0;c=b;g[a+320>>2]=c;
g[a+28>>2]=1/c;return}function Dd(a,b){a=a|0;b=+b;var c=0;c=b*2;g[a+32>>2]=c;g[a+40>>2]=c*c;g[a+36>>2]=1/c;return}function Ed(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function Fd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0;a=i;f=+La(b|0,+ +g[c>>2],+ +g[c+4>>2],+ +g[d>>2],+ +g[d+4>>2],+e);i=a;return+f}function Gd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return 0}function Hd(a,b){a=a|0;b=b|0;return 1}function Id(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function Jd(a,b){a=a|0;b=b|0;var c=0;a=i;
c=Xa(b|0)|0;i=a;return c|0}function Kd(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function Ld(a,b){a=a|0;b=b|0;return 1}function Md(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function Nd(a,b){a=a|0;b=b|0;a=i;Pa(b|0);i=a;return}function Od(a,b){a=a|0;b=b|0;a=i;Wa(b|0);i=a;return}function Pd(a,b,c){a=a|0;b=b|0;c=c|0;return}function Qd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function Rd(a,b,c){a=a|0;b=b|0;c=c|0;return}function Sd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function Td(a,b,c){a=a|0;b=b|0;c=c|0;a=i;ya(b|
0,c|0);i=a;return}function Ud(a,b,c){a=a|0;b=b|0;c=c|0;a=i;Ya(b|0,c|0);i=a;return}function Vd(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function Wd(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function Xd(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function Yd(){c[2]=280;c[4]=176;c[6]=72;return}function Zd(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,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=
0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0;f=i;i=i+320|0;h=f;j=f+284|0;k=f+248|0;l=f+236|0;m=f+144|0;n=f+120|0;o=f+16|0;p=f+12|0;q=f+8|0;Km(h);c[104]=(c[104]|0)+1;c[d>>2]=0;r=e+128|0;s=d+4|0;g[s>>2]=+g[r>>2];t=e+28|0;u=j+0|0;v=e+56|0;w=u+36|0;do{c[u>>2]=c[v>>2];u=u+4|0;v=v+4|0}while((u|0)<(w|0));u=k+0|0;v=e+92|0;w=u+36|0;do{c[u>>2]=c[v>>2];u=u+4|0;v=v+4|0}while((u|0)<(w|0));v=j+24|0;x=
+g[v>>2];y=+O(+(x/6.2831854820251465))*6.2831854820251465;z=x-y;g[v>>2]=z;u=j+28|0;x=+g[u>>2]-y;g[u>>2]=x;w=k+24|0;y=+g[w>>2];A=+O(+(y/6.2831854820251465))*6.2831854820251465;B=y-A;g[w>>2]=B;C=k+28|0;y=+g[C>>2]-A;g[C>>2]=y;A=+g[r>>2];D=+g[e+24>>2]+ +g[e+52>>2]+-.014999999664723873;E=D<.004999999888241291?.004999999888241291:D;b[l+4>>1]=0;c[m+0>>2]=c[e+0>>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];c[m+16>>2]=c[e+16>>2];c[m+20>>2]=c[e+20>>2];c[m+24>>2]=c[e+24>>2];r=m+28|0;c[r+
0>>2]=c[t+0>>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];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];a[m+88>>0]=0;r=j+8|0;F=j+12|0;G=j+16|0;H=j+20|0;I=j+4|0;J=k+8|0;K=k+12|0;L=k+16|0;M=k+20|0;N=k+4|0;P=m+56|0;Q=m+64|0;R=m+68|0;U=m+72|0;V=m+80|0;W=m+84|0;X=n+16|0;D=E+.0012499999720603228;Y=E+-.0012499999720603228;Z=z;z=x;x=B;B=y;_=0;y=0;a:while(1){$=1-y;aa=$*Z+y*z;ba=+T(+aa);ca=+S(+aa);aa=+g[j>>2];da=+g[I>>2];ea=$*x+y*B;fa=+T(+ea);ga=+S(+ea);ea=+g[k>>2];ha=
+g[N>>2];ia=$*+g[J>>2]+y*+g[L>>2]-(ga*ea-fa*ha);ja=$*+g[K>>2]+y*+g[M>>2]-(fa*ea+ga*ha);ha=+($*+g[r>>2]+y*+g[G>>2]-(ca*aa-ba*da));ea=+($*+g[F>>2]+y*+g[H>>2]-(ba*aa+ca*da));ka=P;g[ka>>2]=ha;g[ka+4>>2]=ea;g[Q>>2]=ba;g[R>>2]=ca;ca=+ia;ia=+ja;ka=U;g[ka>>2]=ca;g[ka+4>>2]=ia;g[V>>2]=fa;g[W>>2]=ga;de(n,l,m);ga=+g[X>>2];if(ga<=0){la=3;break}if(ga<D){la=5;break}+_d(o,l,e,j,t,k,y);ka=0;ga=A;while(1){fa=+$d(o,p,q,ga);if(fa>D){la=8;break a}if(fa>Y){ma=ga;break}na=c[p>>2]|0;oa=c[q>>2]|0;ia=+ae(o,na,oa,y);if(ia<
Y){la=11;break a}if(!(ia<=D)){pa=y;qa=ga;ra=0;sa=ia;ta=fa}else{la=13;break a}while(1){if((ra&1|0)==0)ua=(pa+qa)*.5;else ua=pa+(E-sa)*(qa-pa)/(ta-sa);ra=ra+1|0;c[110]=(c[110]|0)+1;fa=+ae(o,na,oa,ua);ia=fa-E;if(ia>0)va=ia;else va=-ia;if(va<.0012499999720603228){wa=ua;break}xa=fa>E;if((ra|0)==50){wa=ga;break}else{pa=xa?ua:pa;qa=xa?qa:ua;sa=xa?fa:sa;ta=xa?ta:fa}}oa=c[112]|0;c[112]=(oa|0)>(ra|0)?oa:ra;ka=ka+1|0;if((ka|0)==8){ma=y;break}else ga=wa}ka=_+1|0;c[106]=(c[106]|0)+1;if((ka|0)==20){la=25;break}Z=
+g[v>>2];z=+g[u>>2];x=+g[w>>2];B=+g[C>>2];_=ka;y=ma}if((la|0)==3){c[d>>2]=2;g[s>>2]=0;ya=_;za=c[108]|0;Aa=(za|0)>(ya|0);Ba=Aa?za:ya;c[108]=Ba;Ca=+Mm(h);Da=+g[102];Ea=Da>Ca;Fa=Ea?Da:Ca;g[102]=Fa;Ga=+g[100];Ha=Ca+Ga;g[100]=Ha;i=f;return}else if((la|0)==5){c[d>>2]=3;g[s>>2]=y;ya=_;za=c[108]|0;Aa=(za|0)>(ya|0);Ba=Aa?za:ya;c[108]=Ba;Ca=+Mm(h);Da=+g[102];Ea=Da>Ca;Fa=Ea?Da:Ca;g[102]=Fa;Ga=+g[100];Ha=Ca+Ga;g[100]=Ha;i=f;return}else if((la|0)==8){c[d>>2]=4;g[s>>2]=A}else if((la|0)==11){c[d>>2]=1;g[s>>2]=y}else if((la|
0)==13){c[d>>2]=3;g[s>>2]=y}else if((la|0)==25){c[d>>2]=1;g[s>>2]=ma;ya=20;za=c[108]|0;Aa=(za|0)>(ya|0);Ba=Aa?za:ya;c[108]=Ba;Ca=+Mm(h);Da=+g[102];Ea=Da>Ca;Fa=Ea?Da:Ca;g[102]=Fa;Ga=+g[100];Ha=Ca+Ga;g[100]=Ha;i=f;return}c[106]=(c[106]|0)+1;ya=_+1|0;za=c[108]|0;Aa=(za|0)>(ya|0);Ba=Aa?za:ya;c[108]=Ba;Ca=+Mm(h);Da=+g[102];Ea=Da>Ca;Fa=Ea?Da:Ca;g[102]=Fa;Ga=+g[100];Ha=Ca+Ga;g[100]=Ha;i=f;return}function _d(e,f,h,j,k,l,m){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;n=i;c[e>>2]=h;c[e+4>>2]=k;o=b[f+4>>1]|0;p=e+8|0;q=p+0|0;r=j+0|0;j=q+36|0;do{c[q>>2]=c[r>>2];q=q+4|0;r=r+4|0}while((q|0)<(j|0));s=e+44|0;q=s+0|0;r=l+0|0;j=q+36|0;do{c[q>>2]=c[r>>2];q=q+4|0;r=r+4|0}while((q|0)<(j|0));t=1-m;u=t*+g[e+32>>2]+ +g[e+36>>2]*m;v=+T(+u);w=+S(+u);u=+g[p>>2];x=+g[e+12>>2];y=t*+g[e+16>>2]+ +g[e+24>>2]*m-(w*u-v*x);z=t*+g[e+20>>2]+ +g[e+28>>2]*m-(v*u+w*x);x=t*+g[e+68>>2]+ +g[e+72>>2]*m;u=+T(+x);A=+S(+x);x=+g[s>>
2];B=+g[e+48>>2];C=t*+g[e+52>>2]+ +g[e+60>>2]*m-(A*x-u*B);D=t*+g[e+56>>2]+ +g[e+64>>2]*m-(u*x+A*B);if(o<<16>>16==1){c[e+80>>2]=0;o=(c[h+16>>2]|0)+(d[f+6>>0]<<3)|0;B=+g[o>>2];x=+g[o+4>>2];o=(c[k+16>>2]|0)+(d[f+9>>0]<<3)|0;m=+g[o>>2];t=+g[o+4>>2];o=e+92|0;E=C+(A*m-u*t)-(y+(w*B-v*x));F=D+(u*m+A*t)-(z+(v*B+w*x));x=+E;B=+F;s=o;g[s>>2]=x;g[s+4>>2]=B;B=+Q(+(E*E+F*F));if(B<1.1920928955078125E-7)G=0;else{x=1/B;g[o>>2]=E*x;g[e+96>>2]=F*x;G=B}o=8784;s=c[o+4>>2]|0;p=e+84|0;c[p>>2]=c[o>>2];c[p+4>>2]=s;H=G;i=n;
return+H}s=f+6|0;p=f+7|0;o=e+80|0;if((a[s>>0]|0)==(a[p>>0]|0)){c[o>>2]=2;r=c[k+16>>2]|0;q=r+(d[f+9>>0]<<3)|0;G=+g[q>>2];B=+g[q+4>>2];q=r+(d[f+10>>0]<<3)|0;x=+g[q>>2];F=+g[q+4>>2];q=e+92|0;E=x-G;t=F-B;m=-E;I=+t;J=+m;r=q;g[r>>2]=I;g[r+4>>2]=J;J=+Q(+(t*t+E*E));if(J<1.1920928955078125E-7){K=t;L=m}else{E=1/J;J=t*E;g[q>>2]=J;t=E*m;g[e+96>>2]=t;K=J;L=t}t=(G+x)*.5;x=(B+F)*.5;F=+t;B=+x;r=e+84|0;g[r>>2]=F;g[r+4>>2]=B;r=(c[h+16>>2]|0)+(d[s>>0]<<3)|0;B=+g[r>>2];F=+g[r+4>>2];G=(A*K-u*L)*(y+(w*B-v*F)-(C+(A*t-u*
x)))+(u*K+A*L)*(z+(v*B+w*F)-(D+(u*t+A*x)));if(!(G<0)){H=G;i=n;return+H}x=+-K;K=+-L;r=q;g[r>>2]=x;g[r+4>>2]=K;H=-G;i=n;return+H}else{c[o>>2]=1;o=c[h+16>>2]|0;h=o+(d[s>>0]<<3)|0;G=+g[h>>2];K=+g[h+4>>2];h=o+(d[p>>0]<<3)|0;x=+g[h>>2];L=+g[h+4>>2];h=e+92|0;t=x-G;F=L-K;B=-t;J=+F;m=+B;p=h;g[p>>2]=J;g[p+4>>2]=m;m=+Q(+(F*F+t*t));if(m<1.1920928955078125E-7){M=F;N=B}else{t=1/m;m=F*t;g[h>>2]=m;F=t*B;g[e+96>>2]=F;M=m;N=F}F=(G+x)*.5;x=(K+L)*.5;L=+F;K=+x;p=e+84|0;g[p>>2]=L;g[p+4>>2]=K;p=(c[k+16>>2]|0)+(d[f+9>>0]<<
3)|0;K=+g[p>>2];L=+g[p+4>>2];G=(w*M-v*N)*(C+(A*K-u*L)-(y+(w*F-v*x)))+(v*M+w*N)*(D+(u*K+A*L)-(z+(v*F+w*x)));if(!(G<0)){H=G;i=n;return+H}x=+-M;M=+-N;p=h;g[p>>2]=x;g[p+4>>2]=M;H=-G;i=n;return+H}return 0}function $d(a,b,d,e){a=a|0;b=b|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,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;f=i;h=1-e;j=h*+g[a+32>>2]+ +g[a+36>>2]*e;k=+T(+j);l=+S(+j);j=+g[a+8>>2];m=+g[a+12>>2];n=h*+g[a+16>>2]+ +g[a+24>>2]*e-(l*j-k*m);o=h*+g[a+20>>2]+
+g[a+28>>2]*e-(k*j+l*m);m=h*+g[a+68>>2]+ +g[a+72>>2]*e;j=+T(+m);p=+S(+m);m=+g[a+44>>2];q=+g[a+48>>2];r=h*+g[a+52>>2]+ +g[a+60>>2]*e-(p*m-j*q);s=h*+g[a+56>>2]+ +g[a+64>>2]*e-(j*m+p*q);t=c[a+80>>2]|0;if((t|0)==0){q=+g[a+92>>2];m=+g[a+96>>2];e=l*q+k*m;h=l*m-k*q;u=-q;v=-m;w=p*u+j*v;x=p*v-j*u;y=c[a>>2]|0;z=c[y+16>>2]|0;A=c[y+20>>2]|0;if((A|0)>1){y=0;u=h*+g[z+4>>2]+e*+g[z>>2];B=1;while(1){v=e*+g[z+(B<<3)>>2]+h*+g[z+(B<<3)+4>>2];C=v>u;D=C?B:y;B=B+1|0;if((B|0)==(A|0)){E=D;break}else{y=D;u=C?v:u}}}else E=
0;c[b>>2]=E;E=c[a+4>>2]|0;y=c[E+16>>2]|0;A=c[E+20>>2]|0;if((A|0)>1){E=0;u=x*+g[y+4>>2]+w*+g[y>>2];B=1;while(1){h=w*+g[y+(B<<3)>>2]+x*+g[y+(B<<3)+4>>2];C=h>u;D=C?B:E;B=B+1|0;if((B|0)==(A|0)){F=D;break}else{E=D;u=C?h:u}}}else F=0;c[d>>2]=F;E=z+(c[b>>2]<<3)|0;u=+g[E>>2];x=+g[E+4>>2];E=y+(F<<3)|0;w=+g[E>>2];h=+g[E+4>>2];G=q*(r+(p*w-j*h)-(n+(l*u-k*x)))+m*(s+(j*w+p*h)-(o+(k*u+l*x)));i=f;return+G}else if((t|0)==1){x=+g[a+92>>2];u=+g[a+96>>2];h=l*x-k*u;w=k*x+l*u;u=+g[a+84>>2];x=+g[a+88>>2];m=n+(l*u-k*x);
q=o+(k*u+l*x);x=-h;u=-w;e=p*x+j*u;v=p*u-j*x;c[b>>2]=-1;E=c[a+4>>2]|0;F=c[E+16>>2]|0;y=c[E+20>>2]|0;if((y|0)>1){E=0;x=v*+g[F+4>>2]+e*+g[F>>2];z=1;while(1){u=e*+g[F+(z<<3)>>2]+v*+g[F+(z<<3)+4>>2];A=u>x;B=A?z:E;z=z+1|0;if((z|0)==(y|0)){H=B;break}else{E=B;x=A?u:x}}}else H=0;c[d>>2]=H;E=F+(H<<3)|0;x=+g[E>>2];v=+g[E+4>>2];G=h*(r+(p*x-j*v)-m)+w*(s+(j*x+p*v)-q);i=f;return+G}else if((t|0)==2){q=+g[a+92>>2];v=+g[a+96>>2];x=p*q-j*v;w=j*q+p*v;v=+g[a+84>>2];q=+g[a+88>>2];m=r+(p*v-j*q);r=s+(j*v+p*q);q=-x;p=-w;
v=l*q+k*p;j=l*p-k*q;c[d>>2]=-1;t=c[a>>2]|0;a=c[t+16>>2]|0;E=c[t+20>>2]|0;if((E|0)>1){t=0;q=j*+g[a+4>>2]+v*+g[a>>2];H=1;while(1){p=v*+g[a+(H<<3)>>2]+j*+g[a+(H<<3)+4>>2];F=p>q;y=F?H:t;H=H+1|0;if((H|0)==(E|0)){I=y;break}else{t=y;q=F?p:q}}}else I=0;c[b>>2]=I;t=a+(I<<3)|0;q=+g[t>>2];j=+g[t+4>>2];G=x*(n+(l*q-k*j)-m)+w*(o+(k*q+l*j)-r);i=f;return+G}else{c[b>>2]=-1;c[d>>2]=-1;G=0;i=f;return+G}return 0}function ae(a,b,d,e){a=a|0;b=b|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,t=0,u=0,v=
0,w=0,x=0;f=i;h=1-e;j=h*+g[a+32>>2]+ +g[a+36>>2]*e;k=+T(+j);l=+S(+j);j=+g[a+8>>2];m=+g[a+12>>2];n=h*+g[a+16>>2]+ +g[a+24>>2]*e-(l*j-k*m);o=h*+g[a+20>>2]+ +g[a+28>>2]*e-(k*j+l*m);m=h*+g[a+68>>2]+ +g[a+72>>2]*e;j=+T(+m);p=+S(+m);m=+g[a+44>>2];q=+g[a+48>>2];r=h*+g[a+52>>2]+ +g[a+60>>2]*e-(p*m-j*q);s=h*+g[a+56>>2]+ +g[a+64>>2]*e-(j*m+p*q);t=c[a+80>>2]|0;if((t|0)==0){u=(c[(c[a>>2]|0)+16>>2]|0)+(b<<3)|0;q=+g[u>>2];m=+g[u+4>>2];u=(c[(c[a+4>>2]|0)+16>>2]|0)+(d<<3)|0;e=+g[u>>2];h=+g[u+4>>2];v=+g[a+92>>2]*
(r+(p*e-j*h)-(n+(l*q-k*m)))+ +g[a+96>>2]*(s+(j*e+p*h)-(o+(k*q+l*m)));i=f;return+v}else if((t|0)==1){m=+g[a+92>>2];q=+g[a+96>>2];h=+g[a+84>>2];e=+g[a+88>>2];u=(c[(c[a+4>>2]|0)+16>>2]|0)+(d<<3)|0;w=+g[u>>2];x=+g[u+4>>2];v=(l*m-k*q)*(r+(p*w-j*x)-(n+(l*h-k*e)))+(k*m+l*q)*(s+(j*w+p*x)-(o+(k*h+l*e)));i=f;return+v}else if((t|0)==2){e=+g[a+92>>2];h=+g[a+96>>2];x=+g[a+84>>2];w=+g[a+88>>2];t=(c[(c[a>>2]|0)+16>>2]|0)+(b<<3)|0;q=+g[t>>2];m=+g[t+4>>2];v=(p*e-j*h)*(n+(l*q-k*m)-(r+(p*x-j*w)))+(j*e+p*h)*(o+(k*q+
l*m)-(s+(j*x+p*w)));i=f;return+v}else{v=0;i=f;return+v}return 0}function be(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0;e=i;f=c[b+4>>2]|0;if((f|0)==0){c[a+16>>2]=b+12;c[a+20>>2]=1;g[a+24>>2]=+g[b+8>>2];i=e;return}else if((f|0)==2){c[a+16>>2]=b+20;c[a+20>>2]=c[b+148>>2];g[a+24>>2]=+g[b+8>>2];i=e;return}else if((f|0)==1){c[a+16>>2]=b+12;c[a+20>>2]=2;g[a+24>>2]=+g[b+8>>2];i=e;return}else if((f|0)==3){f=b+12|0;h=(c[f>>2]|0)+(d<<3)|0;j=c[h+4>>2]|0;k=a;c[k>>2]=c[h>>2];c[k+4>>2]=j;j=d+1|0;d=a+8|0;k=
c[f>>2]|0;if((j|0)<(c[b+16>>2]|0)){f=k+(j<<3)|0;j=c[f+4>>2]|0;h=d;c[h>>2]=c[f>>2];c[h+4>>2]=j}else{j=k;k=c[j+4>>2]|0;h=d;c[h>>2]=c[j>>2];c[h+4>>2]=k}c[a+16>>2]=a;c[a+20>>2]=2;g[a+24>>2]=+g[b+8>>2];i=e;return}else{i=e;return}}function ce(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;b=i;d=a+16|0;e=+g[d>>2];f=+g[d+4>>2];d=a+36|0;h=a+52|0;j=+g[h>>2];k=+g[h+4>>2];h=a+72|0;l=a+88|0;m=+g[l>>2];n=+g[l+4>>2];o=j-e;p=k-f;q=e*o+f*p;r=j*o+k*
p;s=m-e;t=n-f;u=e*s+f*t;v=m*s+n*t;w=m-j;x=n-k;y=j*w+k*x;z=m*w+n*x;x=o*t-p*s;s=(j*n-k*m)*x;p=(f*m-e*n)*x;n=(e*k-f*j)*x;if(!(!(q>=-0)|!(u>=-0))){g[a+24>>2]=1;c[a+108>>2]=1;i=b;return}if(!(!(q<-0)|!(r>0)|!(n<=0))){x=1/(r-q);g[a+24>>2]=r*x;g[a+60>>2]=-(q*x);c[a+108>>2]=2;i=b;return}if(!(!(u<-0)|!(v>0)|!(p<=0))){x=1/(v-u);g[a+24>>2]=v*x;g[a+96>>2]=-(u*x);c[a+108>>2]=2;A=d+0|0;B=h+0|0;C=A+36|0;do{c[A>>2]=c[B>>2];A=A+4|0;B=B+4|0}while((A|0)<(C|0));i=b;return}if(!(!(r<=0)|!(y>=-0))){g[a+60>>2]=1;c[a+108>>
2]=1;A=a+0|0;B=d+0|0;C=A+36|0;do{c[A>>2]=c[B>>2];A=A+4|0;B=B+4|0}while((A|0)<(C|0));i=b;return}if(!(!(v<=0)|!(z<=0))){g[a+96>>2]=1;c[a+108>>2]=1;A=a+0|0;B=h+0|0;C=A+36|0;do{c[A>>2]=c[B>>2];A=A+4|0;B=B+4|0}while((A|0)<(C|0));i=b;return}if(!(y<-0)|!(z>0)|!(s<=0)){v=1/(n+(s+p));g[a+24>>2]=s*v;g[a+60>>2]=p*v;g[a+96>>2]=n*v;c[a+108>>2]=3;i=b;return}else{v=1/(z-y);g[a+60>>2]=z*v;g[a+96>>2]=-(y*v);c[a+108>>2]=2;A=a+0|0;B=h+0|0;C=A+36|0;do{c[A>>2]=c[B>>2];A=A+4|0;B=B+4|0}while((A|0)<(C|0));i=b;return}}function de(d,
e,f){d=d|0;e=e|0;f=f|0;var h=0,j=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,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0;h=i;i=i+176|0;j=h+152|0;l=h+136|0;m=h;n=h+124|0;o=h+112|0;c[114]=(c[114]|0)+1;p=f+28|0;q=f+56|0;c[j+0>>2]=c[q+0>>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+72|
0;c[l+0>>2]=c[q+0>>2];c[l+4>>2]=c[q+4>>2];c[l+8>>2]=c[q+8>>2];c[l+12>>2]=c[q+12>>2];ee(m,e,f,j,p,l);c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;p=m+108|0;r=+g[j+12>>2];s=+g[j+8>>2];q=f+16|0;t=f+20|0;u=+g[j>>2];v=+g[j+4>>2];w=+g[l+12>>2];x=+g[l+8>>2];j=f+44|0;y=f+48|0;z=+g[l>>2];A=+g[l+4>>2];l=m+16|0;B=m+20|0;C=m+52|0;D=m+56|0;E=m+16|0;F=m+36|0;G=m+52|0;H=m+24|0;I=m+60|0;J=c[p>>2]|0;K=0;a:while(1){L=(J|0)>0;if(L){M=0;do{c[n+(M<<2)>>2]=c[m+(M*36|0)+28>>2];c[o+(M<<2)>>2]=
c[m+(M*36|0)+32>>2];M=M+1|0}while((M|0)!=(J|0))}do if((J|0)==2){M=E;N=+g[M>>2];O=+g[M+4>>2];M=G;P=+g[M>>2];R=+g[M+4>>2];S=P-N;T=R-O;U=N*S+O*T;if(U>=-0){g[H>>2]=1;c[p>>2]=1;V=13;break}O=P*S+R*T;if(!(O<=0)){T=1/(O-U);g[H>>2]=O*T;g[I>>2]=-(U*T);c[p>>2]=2;V=14;break}else{g[I>>2]=1;c[p>>2]=1;M=m+0|0;W=F+0|0;X=M+36|0;do{c[M>>2]=c[W>>2];M=M+4|0;W=W+4|0}while((M|0)<(X|0));V=13;break}}else if((J|0)==3){ce(m);W=c[p>>2]|0;if((W|0)==3){V=11;break a}else{Y=W;V=12}}else{Y=J;V=12}while(0);do if((V|0)==12){V=0;if((Y|
0)==1){V=13;break}else if((Y|0)==2){V=14;break}W=8784;T=+g[W>>2];Z=T;_=+g[W+4>>2];$=Y}while(0);do if((V|0)==13){V=0;Z=-+g[l>>2];_=-+g[B>>2];$=1}else if((V|0)==14){V=0;T=+g[l>>2];U=+g[C>>2]-T;O=+g[B>>2];R=+g[D>>2]-O;if(T*R-U*O>0){Z=-R;_=U;$=2;break}else{Z=R;_=-U;$=2;break}}while(0);if(_*_+Z*Z<1.4210854715202004E-14){aa=$;ba=K;V=31;break}W=m+($*36|0)|0;U=-Z;R=-_;O=r*U+s*R;T=r*R-s*U;M=c[q>>2]|0;X=c[t>>2]|0;if((X|0)>1){ca=0;U=T*+g[M+4>>2]+O*+g[M>>2];da=1;while(1){R=O*+g[M+(da<<3)>>2]+T*+g[M+(da<<3)+4>>
2];ea=R>U;fa=ea?da:ca;da=da+1|0;if((da|0)==(X|0)){ga=fa;break}else{ca=fa;U=ea?R:U}}}else ga=0;c[m+($*36|0)+28>>2]=ga;U=+g[M+(ga<<3)>>2];T=+g[M+(ga<<3)+4>>2];O=u+(r*U-s*T);R=+O;S=+(U*s+r*T+v);ca=W;g[ca>>2]=R;g[ca+4>>2]=S;S=Z*w+_*x;R=_*w-Z*x;ca=c[j>>2]|0;X=c[y>>2]|0;if((X|0)>1){da=0;T=R*+g[ca+4>>2]+S*+g[ca>>2];ea=1;while(1){U=S*+g[ca+(ea<<3)>>2]+R*+g[ca+(ea<<3)+4>>2];fa=U>T;ha=fa?ea:da;ea=ea+1|0;if((ea|0)==(X|0)){ia=ha;break}else{da=ha;T=fa?U:T}}}else ia=0;c[m+($*36|0)+32>>2]=ia;T=+g[ca+(ia<<3)>>2];
R=+g[ca+(ia<<3)+4>>2];S=z+(w*T-x*R);U=+S;P=+(T*x+w*R+A);da=m+($*36|0)+8|0;g[da>>2]=U;g[da+4>>2]=P;P=+(S-O);S=+(+g[m+($*36|0)+12>>2]-+g[m+($*36|0)+4>>2]);da=m+($*36|0)+16|0;g[da>>2]=P;g[da+4>>2]=S;ja=K+1|0;c[116]=(c[116]|0)+1;if(L){da=0;do{if((ga|0)==(c[n+(da<<2)>>2]|0)?(ia|0)==(c[o+(da<<2)>>2]|0):0){V=30;break a}da=da+1|0}while((da|0)<(J|0))}da=(c[p>>2]|0)+1|0;c[p>>2]=da;if((ja|0)<20){J=da;K=ja}else{aa=da;ba=ja;V=31;break}}if((V|0)==11){J=c[118]|0;c[118]=(J|0)>(K|0)?J:K;ka=d+8|0;la=K;V=35}else if((V|
0)==30){aa=c[p>>2]|0;ba=ja;V=31}do if((V|0)==31){ja=c[118]|0;c[118]=(ja|0)>(ba|0)?ja:ba;ja=d+8|0;if((aa|0)==1){p=m;K=c[p>>2]|0;J=c[p+4>>2]|0;p=d;c[p>>2]=K;c[p+4>>2]=J;p=m+8|0;o=c[p>>2]|0;ia=c[p+4>>2]|0;p=ja;c[p>>2]=o;c[p+4>>2]=ia;A=(c[k>>2]=K,+g[k>>2]);w=(c[k>>2]=o,+g[k>>2]);x=(c[k>>2]=J,+g[k>>2]);ma=w;na=A;oa=(c[k>>2]=ia,+g[k>>2]);pa=x;qa=1;ra=ja;sa=ba;break}else if((aa|0)==2){x=+g[H>>2];A=+g[I>>2];w=x*+g[m>>2]+A*+g[m+36>>2];z=x*+g[m+4>>2]+A*+g[m+40>>2];Z=+w;_=+z;ia=d;g[ia>>2]=Z;g[ia+4>>2]=_;_=x*
+g[m+8>>2]+A*+g[m+44>>2];Z=x*+g[m+12>>2]+A*+g[m+48>>2];A=+_;x=+Z;ia=ja;g[ia>>2]=A;g[ia+4>>2]=x;ma=_;na=w;oa=Z;pa=z;qa=2;ra=ja;sa=ba;break}else if((aa|0)==3){ka=ja;la=ba;V=35;break}else{ma=+g[ja>>2];na=+g[d>>2];oa=+g[d+12>>2];pa=+g[d+4>>2];qa=aa;ra=ja;sa=ba;break}}while(0);if((V|0)==35){z=+g[H>>2];Z=+g[I>>2];w=+g[m+96>>2];_=z*+g[m>>2]+Z*+g[m+36>>2]+w*+g[m+72>>2];x=z*+g[m+4>>2]+Z*+g[m+40>>2]+w*+g[m+76>>2];w=+_;Z=+x;I=d;g[I>>2]=w;g[I+4>>2]=Z;I=ka;g[I>>2]=w;g[I+4>>2]=Z;ma=_;na=_;oa=x;pa=x;qa=3;ra=ka;
sa=la}x=na-ma;la=d+4|0;ka=d+12|0;ma=pa-oa;I=d+16|0;g[I>>2]=+Q(+(x*x+ma*ma));c[d+20>>2]=sa;if((qa|0)==2){ma=+g[l>>2]-+g[C>>2];x=+g[B>>2]-+g[D>>2];ta=+Q(+(ma*ma+x*x));V=39}else if((qa|0)!=3){g[e>>2]=0;b[e+4>>1]=qa;if((qa|0)>0){ua=0;V=41}}else{x=+g[l>>2];ma=+g[B>>2];ta=(+g[C>>2]-x)*(+g[m+92>>2]-ma)-(+g[D>>2]-ma)*(+g[m+88>>2]-x);V=39}if((V|0)==39){g[e>>2]=ta;b[e+4>>1]=qa;ua=0;V=41}if((V|0)==41)while(1){V=0;a[e+ua+6>>0]=c[m+(ua*36|0)+28>>2];a[e+ua+9>>0]=c[m+(ua*36|0)+32>>2];ua=ua+1|0;if((ua|0)>=(qa|0))break;
else V=41}if((a[f+88>>0]|0)==0){i=h;return}ta=+g[f+24>>2];x=+g[f+52>>2];ma=+g[I>>2];oa=ta+x;if(!(ma>oa&ma>1.1920928955078125E-7)){pa=+((+g[d>>2]+ +g[ra>>2])*.5);na=+((+g[la>>2]+ +g[ka>>2])*.5);f=d;g[f>>2]=pa;g[f+4>>2]=na;f=ra;g[f>>2]=pa;g[f+4>>2]=na;g[I>>2]=0;i=h;return}g[I>>2]=ma-oa;oa=+g[ra>>2];ma=+g[d>>2];na=oa-ma;pa=+g[ka>>2];_=+g[la>>2];Z=pa-_;w=+Q(+(na*na+Z*Z));if(w<1.1920928955078125E-7){va=na;wa=Z}else{z=1/w;va=na*z;wa=Z*z}g[d>>2]=ta*va+ma;g[la>>2]=ta*wa+_;g[ra>>2]=oa-x*va;g[ka>>2]=pa-x*wa;
i=h;return}function ee(a,e,f,h,j,k){a=a|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=i;m=b[e+4>>1]|0;n=m&65535;o=a+108|0;c[o>>2]=n;if(m<<16>>16==0)p=n;else{n=f+16|0;m=j+16|0;q=h+12|0;r=h+8|0;s=h+4|0;t=k+12|0;u=k+8|0;v=k+4|0;w=0;do{x=d[e+w+6>>0]|0;c[a+(w*36|0)+28>>2]=x;y=d[e+w+9>>0]|0;c[a+(w*36|0)+32>>2]=y;z=(c[n>>2]|0)+(x<<3)|0;A=+g[z>>2];B=+g[z+4>>2];z=(c[m>>2]|0)+(y<<3)|0;C=+g[z>>2];D=+g[z+4>>2];E=+g[q>>
2];F=+g[r>>2];G=+g[h>>2]+(A*E-B*F);H=+G;I=+(E*B+A*F+ +g[s>>2]);z=a+(w*36|0)|0;g[z>>2]=H;g[z+4>>2]=I;I=+g[t>>2];H=+g[u>>2];F=+g[k>>2]+(C*I-D*H);A=+F;B=+(D*I+C*H+ +g[v>>2]);z=a+(w*36|0)+8|0;g[z>>2]=A;g[z+4>>2]=B;B=+(F-G);G=+(+g[a+(w*36|0)+12>>2]-+g[a+(w*36|0)+4>>2]);z=a+(w*36|0)+16|0;g[z>>2]=B;g[z+4>>2]=G;g[a+(w*36|0)+24>>2]=0;w=w+1|0;z=c[o>>2]|0}while((w|0)<(z|0));p=z}do if((p|0)>1){G=+g[e>>2];if((p|0)==2){B=+g[a+16>>2]-+g[a+52>>2];F=+g[a+20>>2]-+g[a+56>>2];J=+Q(+(B*B+F*F))}else if((p|0)==3){F=+g[a+
16>>2];B=+g[a+20>>2];J=(+g[a+52>>2]-F)*(+g[a+92>>2]-B)-(+g[a+56>>2]-B)*(+g[a+88>>2]-F)}else J=0;if(!(J<G*.5)?!(G*2<J|J<1.1920928955078125E-7):0){K=11;break}c[o>>2]=0}else K=11;while(0);if((K|0)==11?(p|0)!=0:0){i=l;return}c[a+28>>2]=0;c[a+32>>2]=0;p=c[f+16>>2]|0;J=+g[p>>2];G=+g[p+4>>2];p=c[j+16>>2]|0;F=+g[p>>2];B=+g[p+4>>2];A=+g[h+12>>2];H=+g[h+8>>2];C=+g[h>>2]+(J*A-G*H);I=A*G+J*H+ +g[h+4>>2];H=+C;J=+I;h=a;g[h>>2]=H;g[h+4>>2]=J;J=+g[k+12>>2];H=+g[k+8>>2];G=+g[k>>2]+(F*J-B*H);A=B*J+F*H+ +g[k+4>>2];
H=+G;F=+A;k=a+8|0;g[k>>2]=H;g[k+4>>2]=F;F=+(G-C);C=+(A-I);k=a+16|0;g[k>>2]=F;g[k+4>>2]=C;g[a+24>>2]=1;c[o>>2]=1;i=l;return}function fe(a,d){a=a|0;d=d|0;var e=0,f=0,h=0,j=0;e=i;f=Em(d,48)|0;if((f|0)==0)h=0;else{c[f>>2]=488;c[f+4>>2]=1;g[f+8>>2]=.009999999776482582;d=f+28|0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;b[d+16>>1]=0;h=f}f=a+4|0;d=c[f+4>>2]|0;j=h+4|0;c[j>>2]=c[f>>2];c[j+4>>2]=d;d=h+12|0;j=a+12|0;c[d+0>>2]=c[j+0>>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];c[d+
16>>2]=c[j+16>>2];c[d+20>>2]=c[j+20>>2];c[d+24>>2]=c[j+24>>2];c[d+28>>2]=c[j+28>>2];b[d+32>>1]=b[j+32>>1]|0;i=e;return h|0}function ge(a){a=a|0;return 1}function he(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function ie(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,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;f=i;h=+g[b+12>>2];j=+g[a+12>>2];k=+g[b+8>>2];l=+g[a+16>>2];m=+g[b>>2];n=m+(h*j-k*l);o=+g[b+4>>2];p=j*k+h*l+o;l=+g[a+20>>2];j=+g[a+24>>2];q=m+(h*l-k*j);m=
o+(k*l+h*j);j=+g[c>>2];h=j-n;l=+g[c+4>>2];k=l-p;o=q-n;n=m-p;p=h*o+k*n;do if(p>0){r=o*o+n*n;if(p>r){s=j-q;t=l-m;break}else{u=p/r;s=h-o*u;t=k-n*u;break}}else{s=h;t=k}while(0);k=+Q(+(t*t+s*s));g[d>>2]=k;if(k>0){h=1/k;v=s*h;w=t*h;x=+v;y=+w;z=e;A=z;g[A>>2]=x;B=z+4|0;C=B;g[C>>2]=y;i=f;return}else{d=8784;h=+g[d>>2];v=h;w=+g[d+4>>2];x=+v;y=+w;z=e;A=z;g[A>>2]=x;B=z+4|0;C=B;g[C>>2]=y;i=f;return}}function je(a,b,c,d,e){a=a|0;b=b|0;c=c|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;e=i;f=+g[d>>2];h=+g[c>>2]-f;j=+g[d+4>>2];k=+g[c+4>>2]-j;l=d+12|0;m=+g[l>>2];n=d+8|0;o=+g[n>>2];p=h*m+k*o;q=m*k-h*o;h=+g[c+8>>2]-f;f=+g[c+12>>2]-j;j=m*h+o*f-p;k=m*f-o*h-q;d=a+12|0;h=+g[d>>2];o=+g[d+4>>2];d=a+20|0;f=+g[d>>2];m=f-h;f=+g[d+4>>2]-o;r=-m;s=m*m+f*f;t=+Q(+s);if(t<1.1920928955078125E-7){u=f;v=r}else{w=1/t;u=f*w;v=w*r}r=(o-q)*v+(h-p)*u;w=k*v+j*u;if(w==0){x=0;i=e;return x|0}t=r/w;if(t<0){x=0;i=e;return x|0}if(s==0?1:+g[c+16>>2]<t){x=0;i=e;return x|0}w=(m*(p+j*t-h)+f*(q+k*t-o))/s;
if(w<0|w>1){x=0;i=e;return x|0}g[b+8>>2]=t;t=+g[l>>2];w=+g[n>>2];s=u*t-v*w;o=v*t+u*w;if(r>0){r=+-s;w=+-o;n=b;g[n>>2]=r;g[n+4>>2]=w;x=1;i=e;return x|0}else{w=+s;s=+o;n=b;g[n>>2]=w;g[n+4>>2]=s;x=1;i=e;return x|0}return 0}function ke(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,k=0,l=0,m=0,n=0,o=0;d=i;e=+g[c+12>>2];f=+g[a+12>>2];h=+g[c+8>>2];j=+g[a+16>>2];k=+g[c>>2];l=k+(e*f-h*j);m=+g[c+4>>2];n=f*h+e*j+m;j=+g[a+20>>2];f=+g[a+24>>2];o=k+(e*j-h*f);k=m+(h*j+e*f);f=+g[a+8>>2];e=+((l<o?l:o)-f);j=
+((n<k?n:k)-f);a=b;g[a>>2]=e;g[a+4>>2]=j;j=+(f+(l>o?l:o));o=+(f+(n>k?n:k));a=b+8|0;g[a>>2]=j;g[a+4>>2]=o;i=d;return}function le(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0;d=i;g[b>>2]=0;c=+((+g[a+12>>2]+ +g[a+20>>2])*.5);e=+((+g[a+16>>2]+ +g[a+24>>2])*.5);a=b+4|0;g[a>>2]=c;g[a+4>>2]=e;g[b+12>>2]=0;i=d;return}function me(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;d=i;e=Em(b,152)|0;if((e|0)==0)f=0;else{c[e>>2]=592;c[e+4>>2]=2;g[e+8>>2]=.009999999776482582;c[e+148>>2]=0;g[e+12>>2]=0;g[e+16>>2]=0;f=e}e=a+4|0;b=c[e+
4>>2]|0;h=f+4|0;c[h>>2]=c[e>>2];c[h+4>>2]=b;An(f+12|0,a+12|0,140)|0;i=d;return f|0}function ne(a){a=a|0;return 1}function oe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=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;e=i;i=i+96|0;f=e+32|0;h=e;if((d|0)<3){c[a+148>>2]=4;g[a+20>>2]=-1;g[a+24>>2]=-1;g[a+28>>2]=1;g[a+32>>2]=-1;g[a+36>>2]=1;g[a+40>>2]=1;g[a+44>>2]=-1;g[a+48>>2]=1;g[a+84>>2]=0;g[a+88>>2]=-1;g[a+92>>2]=1;g[a+96>>2]=0;g[a+100>>2]=0;g[a+
104>>2]=1;g[a+108>>2]=-1;g[a+112>>2]=0;g[a+12>>2]=0;g[a+16>>2]=0;i=e;return}j=(d|0)<8?d:8;d=0;l=0;while(1){m=b+(d<<3)|0;n=c[m>>2]|0;o=c[m+4>>2]|0;p=(c[k>>2]=n,+g[k>>2]);q=(c[k>>2]=o,+g[k>>2]);a:do if((l|0)>0){m=0;while(1){r=p-+g[f+(m<<3)>>2];s=q-+g[f+(m<<3)+4>>2];m=m+1|0;if(r*r+s*s<.0024999999441206455){t=l;break a}if((m|0)>=(l|0)){u=7;break}}}else u=7;while(0);if((u|0)==7){u=0;m=f+(l<<3)|0;c[m>>2]=n;c[m+4>>2]=o;t=l+1|0}d=d+1|0;if((d|0)==(j|0))break;else l=t}if((t|0)<3){c[a+148>>2]=4;g[a+20>>2]=-1;
g[a+24>>2]=-1;g[a+28>>2]=1;g[a+32>>2]=-1;g[a+36>>2]=1;g[a+40>>2]=1;g[a+44>>2]=-1;g[a+48>>2]=1;g[a+84>>2]=0;g[a+88>>2]=-1;g[a+92>>2]=1;g[a+96>>2]=0;g[a+100>>2]=0;g[a+104>>2]=1;g[a+108>>2]=-1;g[a+112>>2]=0;g[a+12>>2]=0;g[a+16>>2]=0;i=e;return}l=0;j=1;q=+g[f>>2];while(1){p=+g[f+(j<<3)>>2];if(!(p>q))if(p==q?+g[f+(j<<3)+4>>2]<+g[f+(l<<3)+4>>2]:0)u=22;else{v=l;w=q}else u=22;if((u|0)==22){u=0;v=j;w=p}j=j+1|0;if((j|0)==(t|0)){x=v;y=0;break}else{l=v;q=w}}while(1){c[h+(y<<2)>>2]=x;l=0;j=1;while(1){if((l|0)!=
(x|0)){w=+g[f+(x<<3)>>2];q=+g[f+(l<<3)>>2]-w;p=+g[f+(x<<3)+4>>2];s=+g[f+(l<<3)+4>>2]-p;r=+g[f+(j<<3)>>2]-w;w=+g[f+(j<<3)+4>>2]-p;p=q*w-s*r;u=p<0?j:l;if(p==0?r*r+w*w>q*q+s*s:0)z=j;else z=u}else z=j;j=j+1|0;if((j|0)==(t|0))break;else l=z}A=y+1|0;if((z|0)==(v|0))break;else{x=z;y=A}}c[a+148>>2]=A;z=(y|0)>-1;if(z){x=0;do{v=f+(c[h+(x<<2)>>2]<<3)|0;t=c[v+4>>2]|0;l=a+(x<<3)+20|0;c[l>>2]=c[v>>2];c[l+4>>2]=t;x=x+1|0}while((x|0)!=(A|0));if(z){z=0;do{x=z;z=z+1|0;h=(z|0)<(A|0)?z:0;s=+g[a+(h<<3)+24>>2]-+g[a+(x<<
3)+24>>2];f=a+(x<<3)+84|0;q=+s;w=+-(+g[a+(h<<3)+20>>2]-+g[a+(x<<3)+20>>2]);h=f;g[h>>2]=q;g[h+4>>2]=w;h=a+(x<<3)+88|0;w=+g[h>>2];q=+Q(+(s*s+w*w));if(!(q<1.1920928955078125E-7)){r=1/q;g[f>>2]=s*r;g[h>>2]=w*r}}while((z|0)!=(A|0))}}z=a+12|0;h=a+20|0;if((y|0)>-1){r=0;w=0;s=0;y=0;while(1){f=a+(y<<3)+20|0;q=+g[f>>2];p=+g[f+4>>2];y=y+1|0;if((y|0)<(A|0))B=a+(y<<3)+20|0;else B=h;f=B;C=+g[f>>2];D=+g[f+4>>2];E=(q*D-p*C)*.5;F=s+E;G=E*.3333333432674408;E=r+(q+0+C)*G;C=w+(p+0+D)*G;if((y|0)==(A|0)){H=E;I=C;J=F;break}else{r=
E;w=C;s=F}}}else{H=0;I=0;J=0}s=1/J;J=+(H*s);H=+(I*s);A=z;g[A>>2]=J;g[A+4>>2]=H;i=e;return}function pe(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;e=i;f=+g[d>>2]-+g[b>>2];h=+g[d+4>>2]-+g[b+4>>2];j=+g[b+12>>2];k=+g[b+8>>2];l=f*j+h*k;m=j*h-f*k;b=c[a+148>>2]|0;if((b|0)>0)n=0;else{o=1;i=e;return o|0}while(1){if((l-+g[a+(n<<3)+20>>2])*+g[a+(n<<3)+84>>2]+(m-+g[a+(n<<3)+24>>2])*+g[a+(n<<3)+88>>2]>0){o=0;p=4;break}n=n+1|0;if((n|0)>=(b|0)){o=1;p=4;break}}if((p|0)==4){i=e;return o|0}return 0}
function qe(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,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=i;j=+g[d>>2]-+g[b>>2];k=+g[d+4>>2]-+g[b+4>>2];d=b+12|0;l=+g[d>>2];m=b+8|0;n=+g[m>>2];o=j*l+k*n;p=l*k-j*n;b=c[a+148>>2]|0;q=(b|0)>0;if(q){n=o;j=p;r=0;k=-3.4028234663852886E38;while(1){s=a+(r<<3)+84|0;l=(o-+g[a+(r<<3)+20>>2])*+g[s>>2]+(p-+g[a+(r<<3)+24>>2])*+g[a+(r<<3)+88>>2];if(l>k){t=s;u=+g[t>>2];v=+g[t+4>>2];w=u;x=l}else{v=j;w=n;x=k}r=
r+1|0;if((r|0)>=(b|0))break;else{n=w;j=v;k=x}}if(x>0){k=x*x;if(q){j=v;n=w;q=0;l=k;while(1){u=o-+g[a+(q<<3)+20>>2];y=p-+g[a+(q<<3)+24>>2];z=u*u+y*y;r=l>z;A=r?y:j;y=r?u:n;u=r?z:l;q=q+1|0;if((q|0)>=(b|0)){B=A;C=y;D=u;break}else{j=A;n=y;l=u}}}else{B=v;C=w;D=k}g[e>>2]=+Q(+D);D=+g[d>>2];k=+g[m>>2];l=C*D-B*k;n=B*D+C*k;k=+l;C=+n;b=f;g[b>>2]=k;g[b+4>>2]=C;C=+Q(+(l*l+n*n));if(C<1.1920928955078125E-7){i=h;return}k=1/C;g[f>>2]=l*k;g[f+4>>2]=n*k;i=h;return}else{E=v;F=w;G=x}}else{E=p;F=o;G=-3.4028234663852886E38}g[e>>
2]=G;G=+g[d>>2];o=+g[m>>2];p=+(F*G-E*o);x=+(E*G+F*o);m=f;g[m>>2]=p;g[m+4>>2]=x;i=h;return}function re(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;f=i;h=+g[e>>2];j=+g[d>>2]-h;k=+g[e+4>>2];l=+g[d+4>>2]-k;m=e+12|0;n=+g[m>>2];o=e+8|0;p=+g[o>>2];q=j*n+l*p;r=n*l-j*p;j=+g[d+8>>2]-h;h=+g[d+12>>2]-k;k=n*j+p*h-q;l=n*h-p*j-r;e=c[a+148>>2]|0;if((e|0)<=0){s=0;i=f;return s|0}t=0;u=-1;j=0;p=+g[d+16>>2];a:while(1){h=+g[a+(t<<3)+84>>2];n=
+g[a+(t<<3)+88>>2];v=(+g[a+(t<<3)+20>>2]-q)*h+(+g[a+(t<<3)+24>>2]-r)*n;w=k*h+l*n;do if(w==0)if(v<0){s=0;x=15;break a}else{y=u;z=j;A=p}else{if(w<0?v<j*w:0){y=t;z=v/w;A=p;break}if(w>0?v<p*w:0){y=u;z=j;A=v/w}else{y=u;z=j;A=p}}while(0);t=t+1|0;if(A<z){s=0;x=15;break}if((t|0)>=(e|0)){x=13;break}else{u=y;j=z;p=A}}if((x|0)==13){if(!((y|0)>-1)){s=0;i=f;return s|0}g[b+8>>2]=z;z=+g[m>>2];A=+g[a+(y<<3)+84>>2];p=+g[o>>2];j=+g[a+(y<<3)+88>>2];l=+(z*A-p*j);k=+(A*p+z*j);y=b;g[y>>2]=l;g[y+4>>2]=k;s=1;i=f;return s|
0}else if((x|0)==15){i=f;return s|0}return 0}function se(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;e=i;f=+g[d+12>>2];h=+g[a+20>>2];j=+g[d+8>>2];k=+g[a+24>>2];l=+g[d>>2];m=l+(f*h-j*k);n=+g[d+4>>2];o=h*j+f*k+n;d=c[a+148>>2]|0;if((d|0)>1){k=m;h=o;p=m;q=o;r=1;while(1){s=+g[a+(r<<3)+20>>2];t=+g[a+(r<<3)+24>>2];u=l+(f*s-j*t);v=s*j+f*t+n;t=k<u?k:u;s=h<v?h:v;w=p>u?p:u;u=q>v?q:v;r=r+1|0;if((r|0)>=(d|0)){x=s;y=t;z=u;A=w;break}else{k=
t;h=s;p=w;q=u}}}else{x=o;y=m;z=o;A=m}m=+g[a+8>>2];o=+(y-m);y=+(x-m);a=b;g[a>>2]=o;g[a+4>>2]=y;y=+(A+m);A=+(z+m);a=b+8|0;g[a>>2]=y;g[a+4>>2]=A;i=e;return}function te(a,b,d){a=a|0;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;e=i;f=c[a+148>>2]|0;h=(f|0)>0;if(h){j=0;k=0;l=0;do{j=j+ +g[a+(l<<3)+20>>2];k=k+ +g[a+(l<<3)+24>>2];l=l+1|0}while((l|0)<(f|0));m=1/+(f|0);n=j*m;j=k*m;if(h){h=a+20|0;l=a+24|0;m=0;k=0;o=0;p=0;q=0;
while(1){r=+g[a+(q<<3)+20>>2]-n;s=+g[a+(q<<3)+24>>2]-j;q=q+1|0;t=(q|0)<(f|0);if(t){u=a+(q<<3)+20|0;v=a+(q<<3)+24|0}else{u=h;v=l}w=+g[u>>2]-n;x=+g[v>>2]-j;y=r*x-s*w;z=y*.5;A=p+z;B=z*.3333333432674408;z=m+(r+w)*B;C=k+(s+x)*B;B=o+y*.0833333358168602*(w*w+(r*r+r*w)+(x*x+(s*s+s*x)));if(!t){D=C;E=z;F=n;G=j;H=B;I=A;break}else{m=z;k=C;o=B;p=A}}}else{D=0;E=0;F=n;G=j;H=0;I=0}}else{j=1/+(f|0);D=0;E=0;F=j*0;G=j*0;H=0;I=0}j=I*d;g[b>>2]=j;n=1/I;I=E*n;E=D*n;n=F+I;F=G+E;G=+n;D=+F;f=b+4|0;g[f>>2]=G;g[f+4>>2]=D;g[b+
12>>2]=H*d+j*(n*n+F*F-(I*I+E*E));i=e;return}function ue(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=Em(b,20)|0;if((e|0)==0)f=0;else{c[e>>2]=680;b=e+4|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;f=e}e=a+4|0;b=c[e+4>>2]|0;g=f+4|0;c[g>>2]=c[e>>2];c[g+4>>2]=b;b=a+12|0;a=c[b+4>>2]|0;g=f+12|0;c[g>>2]=c[b>>2];c[g+4>>2]=a;i=d;return f|0}function ve(a){a=a|0;return 1}function we(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=+g[b+12>>2];e=+g[a+12>>2];f=+g[b+8>>2];h=+g[a+16>>2];i=+g[c>>2]-(+g[b>>
2]+(d*e-f*h));j=+g[c+4>>2]-(+g[b+4>>2]+(e*f+d*h));h=+g[a+8>>2];return i*i+j*j<=h*h|0}function xe(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;f=i;h=+g[b+12>>2];j=+g[a+12>>2];k=+g[b+8>>2];l=+g[a+16>>2];m=+g[c>>2]-(+g[b>>2]+(h*j-k*l));n=+g[c+4>>2]-(+g[b+4>>2]+(j*k+h*l));l=+Q(+(m*m+n*n));g[d>>2]=l-+g[a+8>>2];h=1/l;l=+(m*h);m=+(n*h);a=e;g[a>>2]=l;g[a+4>>2]=m;i=f;return}function ye(a,b,c,d,e){a=a|0;b=b|0;c=c|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;e=i;f=+g[d+
12>>2];h=+g[a+12>>2];j=+g[d+8>>2];k=+g[a+16>>2];l=+g[c>>2];m=l-(+g[d>>2]+(f*h-j*k));n=+g[c+4>>2];o=n-(+g[d+4>>2]+(h*j+f*k));k=+g[a+8>>2];f=+g[c+8>>2]-l;l=+g[c+12>>2]-n;n=m*f+o*l;j=f*f+l*l;h=n*n-(m*m+o*o-k*k)*j;if(h<0|j<1.1920928955078125E-7){p=0;i=e;return p|0}k=n+ +Q(+h);h=-k;if(!(k<=-0)){p=0;i=e;return p|0}if(!(j*+g[c+16>>2]>=h)){p=0;i=e;return p|0}k=h/j;g[b+8>>2]=k;j=m+f*k;f=o+l*k;k=+j;l=+f;c=b;g[c>>2]=k;g[c+4>>2]=l;l=+Q(+(j*j+f*f));if(l<1.1920928955078125E-7){p=1;i=e;return p|0}k=1/l;g[b>>2]=
j*k;g[b+4>>2]=f*k;p=1;i=e;return p|0}function ze(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,j=0,k=0;e=+g[c+12>>2];f=+g[a+12>>2];h=+g[c+8>>2];i=+g[a+16>>2];j=+g[c>>2]+(e*f-h*i);k=+g[c+4>>2]+(f*h+e*i);c=a+8|0;i=+g[c>>2];g[b>>2]=j-i;g[b+4>>2]=k-i;i=+g[c>>2];g[b+8>>2]=j+i;g[b+12>>2]=k+i;return}function Ae(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0;e=a+8|0;f=+g[e>>2];h=f*d*3.1415927410125732*f;g[b>>2]=h;i=a+12|0;j=i;k=c[j+4>>2]|0;l=b+4|0;c[l>>2]=c[j>>2];c[l+4>>2]=k;f=+g[e>>2];
d=+g[i>>2];m=+g[a+16>>2];g[b+12>>2]=h*(f*f*.5+(d*d+m*m));return}function Be(a){a=a|0;var b=0;b=i;c[a>>2]=760;Qm(c[a+12>>2]|0);sn(a);i=b;return}function Ce(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=760;d=a+12|0;Qm(c[d>>2]|0);c[d>>2]=0;c[a+16>>2]=0;i=b;return}function De(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;g=a+16|0;c[g>>2]=e;h=Pm(e<<3)|0;c[a+12>>2]=h;An(h|0,d|0,c[g>>2]<<3|0)|0;g=a+20|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;b[g+16>>1]=0;i=f;return}function Ee(d,e){d=d|0;e=e|0;var f=0,h=0,
j=0,k=0,l=0;f=i;h=Em(e,40)|0;if((h|0)==0)j=0;else{c[h>>2]=760;c[h+4>>2]=3;g[h+8>>2]=.009999999776482582;c[h+12>>2]=0;c[h+16>>2]=0;a[h+36>>0]=0;a[h+37>>0]=0;j=h}h=c[d+12>>2]|0;e=c[d+16>>2]|0;k=j+16|0;c[k>>2]=e;l=Pm(e<<3)|0;c[j+12>>2]=l;An(l|0,h|0,c[k>>2]<<3|0)|0;k=j+20|0;c[k+0>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;b[k+16>>1]=0;k=d+20|0;h=c[k+4>>2]|0;l=j+20|0;c[l>>2]=c[k>>2];c[l+4>>2]=h;h=d+28|0;l=c[h+4>>2]|0;k=j+28|0;c[k>>2]=c[h>>2];c[k+4>>2]=l;a[j+36>>0]=a[d+36>>0]|0;a[j+37>>0]=a[d+37>>0]|0;
i=f;return j|0}function Fe(a){a=a|0;return(c[a+16>>2]|0)+-1|0}function Ge(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;f=i;c[d+4>>2]=1;g[d+8>>2]=+g[b+8>>2];h=b+12|0;j=(c[h>>2]|0)+(e<<3)|0;k=c[j+4>>2]|0;l=d+12|0;c[l>>2]=c[j>>2];c[l+4>>2]=k;k=(c[h>>2]|0)+(e+1<<3)|0;l=c[k+4>>2]|0;j=d+20|0;c[j>>2]=c[k>>2];c[j+4>>2]=l;l=d+28|0;if((e|0)>0){j=(c[h>>2]|0)+(e+-1<<3)|0;k=c[j+4>>2]|0;m=l;c[m>>2]=c[j>>2];c[m+4>>2]=k;a[d+44>>0]=1}else{k=b+20|0;m=c[k+4>>2]|0;j=l;c[j>>2]=c[k>>2];c[j+4>>2]=m;a[d+44>>0]=a[b+
36>>0]|0}m=d+36|0;if(((c[b+16>>2]|0)+-2|0)>(e|0)){j=(c[h>>2]|0)+(e+2<<3)|0;e=c[j+4>>2]|0;h=m;c[h>>2]=c[j>>2];c[h+4>>2]=e;a[d+45>>0]=1;i=f;return}else{e=b+28|0;h=c[e+4>>2]|0;j=m;c[j>>2]=c[e>>2];c[j+4>>2]=h;a[d+45>>0]=a[b+37>>0]|0;i=f;return}}function He(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;l=i;i=i+48|0;m=l;c[m>>2]=488;n=m+4|0;o=m+8|0;p=m+28|0;c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;b[p+16>>1]=0;c[n>>2]=1;g[o>>2]=+g[d+8>>2];o=c[d+12>>2]|0;n=o+(k<<
3)|0;p=c[n+4>>2]|0;q=m+12|0;c[q>>2]=c[n>>2];c[q+4>>2]=p;p=o+(k+1<<3)|0;q=c[p+4>>2]|0;n=m+20|0;c[n>>2]=c[p>>2];c[n+4>>2]=q;q=m+28|0;if((k|0)>0){n=o+(k+-1<<3)|0;p=c[n+4>>2]|0;r=q;c[r>>2]=c[n>>2];c[r+4>>2]=p;a[m+44>>0]=1}else{p=d+20|0;r=c[p+4>>2]|0;n=q;c[n>>2]=c[p>>2];c[n+4>>2]=r;a[m+44>>0]=a[d+36>>0]|0}r=m+36|0;if(((c[d+16>>2]|0)+-2|0)>(k|0)){n=o+(k+2<<3)|0;k=c[n+4>>2]|0;o=r;c[o>>2]=c[n>>2];c[o+4>>2]=k;a[m+45>>0]=1;ie(m,e,f,h,j,0);i=l;return}else{k=d+28|0;o=c[k+4>>2]|0;n=r;c[n>>2]=c[k>>2];c[n+4>>2]=
o;a[m+45>>0]=a[d+37>>0]|0;ie(m,e,f,h,j,0);i=l;return}}function Ie(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function Je(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;j=i;i=i+48|0;k=j;c[k>>2]=488;c[k+4>>2]=1;g[k+8>>2]=.009999999776482582;l=k+28|0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;b[l+16>>1]=0;l=h+1|0;m=(l|0)==(c[a+16>>2]|0)?0:l;l=c[a+12>>2]|0;a=l+(h<<3)|0;h=c[a+4>>2]|0;n=k+12|0;c[n>>2]=c[a>>2];c[n+4>>2]=h;h=l+(m<<3)|0;m=c[h+4>>2]|0;l=k+20|0;c[l>>2]=c[h>>2];c[l+4>>2]=m;m=je(k,
d,e,f,0)|0;i=j;return m|0}function Ke(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;f=i;h=e+1|0;j=(h|0)==(c[a+16>>2]|0)?0:h;h=c[a+12>>2]|0;k=+g[d+12>>2];l=+g[h+(e<<3)>>2];m=+g[d+8>>2];n=+g[h+(e<<3)+4>>2];o=+g[d>>2];p=o+(k*l-m*n);q=+g[d+4>>2];r=l*m+k*n+q;n=+g[h+(j<<3)>>2];l=+g[h+(j<<3)+4>>2];s=o+(k*n-m*l);o=q+(m*n+k*l);l=+(p<s?p:s);k=+(r<o?r:o);j=b;g[j>>2]=l;g[j+4>>2]=k;k=+(p>s?p:s);s=+(r>o?r:o);j=b+8|0;g[j>>2]=k;g[j+4>>2]=s;i=f;return}function Le(a,b,d){a=a|
0;b=b|0;d=+d;a=i;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;i=a;return}function Me(a){a=a|0;var b=0;b=i;Ve(a);c[a+28>>2]=0;c[a+48>>2]=16;c[a+52>>2]=0;c[a+44>>2]=Pm(128)|0;c[a+36>>2]=16;c[a+40>>2]=0;c[a+32>>2]=Pm(64)|0;i=b;return}function Ne(a){a=a|0;var b=0;b=i;Qm(c[a+32>>2]|0);Qm(c[a+44>>2]|0);We(a);i=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;f=Ye(a,b,d)|0;d=a+28|0;c[d>>2]=(c[d>>2]|0)+1;d=a+40|0;b=c[d>>2]|0;g=a+36|0;h=a+32|0;if((b|0)==(c[g>>2]|0)){a=c[h>>2]|
0;c[g>>2]=b<<1;g=Pm(b<<3)|0;c[h>>2]=g;An(g|0,a|0,c[d>>2]<<2|0)|0;Qm(a);j=c[d>>2]|0}else j=b;c[(c[h>>2]|0)+(j<<2)>>2]=f;c[d>>2]=(c[d>>2]|0)+1;i=e;return f|0}function Pe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;e=a+40|0;f=c[e>>2]|0;if((f|0)>0){g=c[a+32>>2]|0;h=f;f=0;while(1){j=g+(f<<2)|0;if((c[j>>2]|0)==(b|0)){c[j>>2]=-1;k=c[e>>2]|0}else k=h;f=f+1|0;if((f|0)>=(k|0))break;else h=k}}k=a+28|0;c[k>>2]=(c[k>>2]|0)+-1;_e(a,b);i=d;return}function Qe(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;if(!(af(a,b,d,e)|0)){i=f;return}e=a+40|0;d=c[e>>2]|0;g=a+36|0;h=a+32|0;if((d|0)==(c[g>>2]|0)){a=c[h>>2]|0;c[g>>2]=d<<1;g=Pm(d<<3)|0;c[h>>2]=g;An(g|0,a|0,c[e>>2]<<2|0)|0;Qm(a);j=c[e>>2]|0}else j=d;c[(c[h>>2]|0)+(j<<2)>>2]=b;c[e>>2]=(c[e>>2]|0)+1;i=f;return}function Re(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;e=a+40|0;f=c[e>>2]|0;g=a+36|0;h=a+32|0;if((f|0)==(c[g>>2]|0)){a=c[h>>2]|0;c[g>>2]=f<<1;g=Pm(f<<3)|0;c[h>>2]=g;An(g|0,a|0,c[e>>2]<<2|0)|0;Qm(a);j=c[e>>2]|0}else j=f;c[(c[h>>
2]|0)+(j<<2)>>2]=b;c[e>>2]=(c[e>>2]|0)+1;i=d;return}function Se(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;e=a+56|0;f=c[e>>2]|0;if((f|0)==(b|0)){i=d;return 1}g=a+52|0;h=c[g>>2]|0;j=a+48|0;k=a+44|0;if((h|0)==(c[j>>2]|0)){a=c[k>>2]|0;c[j>>2]=h<<1;j=Pm(h<<4)|0;c[k>>2]=j;An(j|0,a|0,c[g>>2]<<3|0)|0;Qm(a);l=c[e>>2]|0;m=c[g>>2]|0}else{l=f;m=h}h=c[k>>2]|0;c[h+(m<<3)>>2]=(l|0)>(b|0)?b:l;l=c[e>>2]|0;c[h+(c[g>>2]<<3)+4>>2]=(l|0)<(b|0)?b:l;c[g>>2]=(c[g>>2]|0)+1;i=d;return 1}function Te(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;h=i;j=a+60|0;c[j>>2]=0;k=b+12|0;l=+g[d+12>>2];m=+g[k>>2];n=+g[d+8>>2];o=+g[b+16>>2];p=e+12|0;q=+g[f+12>>2];r=+g[p>>2];s=+g[f+8>>2];t=+g[e+16>>2];u=+g[f>>2]+(q*r-s*t)-(+g[d>>2]+(l*m-n*o));v=r*s+q*t+ +g[f+4>>2]-(m*n+l*o+ +g[d+4>>2]);o=+g[b+8>>2]+ +g[e+8>>2];if(u*u+v*v>o*o){i=h;return}c[a+56>>2]=0;e=k;k=c[e+4>>2]|0;b=a+48|0;c[b>>2]=c[e>>2];c[b+4>>2]=k;g[a+40>>2]=0;g[a+44>>2]=0;c[j>>2]=1;j=p;p=c[j+4>>2]|0;
k=a;c[k>>2]=c[j>>2];c[k+4>>2]=p;c[a+16>>2]=0;i=h;return}function Ue(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,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;h=i;j=a+60|0;c[j>>2]=0;l=e+12|0;m=+g[f+12>>2];n=+g[l>>2];o=+g[f+8>>2];p=+g[e+16>>2];q=+g[f>>2]+(m*n-o*p)-+g[d>>2];r=n*o+m*p+ +g[f+4>>2]-+g[d+4>>2];p=+g[d+12>>2];m=+g[d+8>>2];o=q*p+r*m;n=p*r-q*m;m=+g[b+8>>2]+ +g[e+8>>2];e=c[b+148>>2]|0;do if((e|0)>0){d=0;f=0;q=-3.4028234663852886E38;while(1){r=(o-
+g[b+(d<<3)+20>>2])*+g[b+(d<<3)+84>>2]+(n-+g[b+(d<<3)+24>>2])*+g[b+(d<<3)+88>>2];if(r>m){s=19;break}t=r>q;q=t?r:q;f=t?d:f;d=d+1|0;if((d|0)>=(e|0)){s=4;break}}if((s|0)==4){u=f;v=q<1.1920928955078125E-7;break}else if((s|0)==19){i=h;return}}else{u=0;v=1}while(0);s=u+1|0;d=b+(u<<3)+20|0;t=c[d>>2]|0;w=c[d+4>>2]|0;r=(c[k>>2]=t,+g[k>>2]);p=(c[k>>2]=w,+g[k>>2]);d=b+(((s|0)<(e|0)?s:0)<<3)+20|0;s=c[d>>2]|0;e=c[d+4>>2]|0;x=(c[k>>2]=s,+g[k>>2]);y=(c[k>>2]=e,+g[k>>2]);if(v){c[j>>2]=1;c[a+56>>2]=1;v=b+(u<<3)+84|
0;d=c[v+4>>2]|0;z=a+40|0;c[z>>2]=c[v>>2];c[z+4>>2]=d;A=+((r+x)*.5);B=+((p+y)*.5);d=a+48|0;g[d>>2]=A;g[d+4>>2]=B;d=l;z=c[d+4>>2]|0;v=a;c[v>>2]=c[d>>2];c[v+4>>2]=z;c[a+16>>2]=0;i=h;return}B=o-r;A=n-p;C=o-x;D=n-y;if(B*(x-r)+A*(y-p)<=0){if(B*B+A*A>m*m){i=h;return}c[j>>2]=1;c[a+56>>2]=1;z=a+40|0;E=+B;F=+A;v=z;g[v>>2]=E;g[v+4>>2]=F;F=+Q(+(B*B+A*A));if(!(F<1.1920928955078125E-7)){E=1/F;g[z>>2]=B*E;g[a+44>>2]=A*E}z=a+48|0;c[z>>2]=t;c[z+4>>2]=w;w=l;z=c[w+4>>2]|0;t=a;c[t>>2]=c[w>>2];c[t+4>>2]=z;c[a+16>>2]=
0;i=h;return}if(!(C*(r-x)+D*(p-y)<=0)){E=(r+x)*.5;x=(p+y)*.5;z=b+(u<<3)+84|0;if((o-E)*+g[z>>2]+(n-x)*+g[b+(u<<3)+88>>2]>m){i=h;return}c[j>>2]=1;c[a+56>>2]=1;u=z;z=c[u+4>>2]|0;b=a+40|0;c[b>>2]=c[u>>2];c[b+4>>2]=z;n=+E;E=+x;z=a+48|0;g[z>>2]=n;g[z+4>>2]=E;z=l;b=c[z+4>>2]|0;u=a;c[u>>2]=c[z>>2];c[u+4>>2]=b;c[a+16>>2]=0;i=h;return}if(C*C+D*D>m*m){i=h;return}c[j>>2]=1;c[a+56>>2]=1;j=a+40|0;m=+C;E=+D;b=j;g[b>>2]=m;g[b+4>>2]=E;E=+Q(+(C*C+D*D));if(!(E<1.1920928955078125E-7)){m=1/E;g[j>>2]=C*m;g[a+44>>2]=D*
m}j=a+48|0;c[j>>2]=s;c[j+4>>2]=e;e=l;l=c[e+4>>2]|0;j=a;c[j>>2]=c[e>>2];c[j+4>>2]=l;c[a+16>>2]=0;i=h;return}function Ve(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;c[a>>2]=-1;d=a+12|0;c[d>>2]=16;c[a+8>>2]=0;e=Pm(576)|0;f=a+4|0;c[f>>2]=e;xn(e|0,0,(c[d>>2]|0)*36|0)|0;e=(c[d>>2]|0)+-1|0;g=c[f>>2]|0;if((e|0)>0){f=0;do{h=f;f=f+1|0;c[g+(h*36|0)+20>>2]=f;c[g+(h*36|0)+32>>2]=-1;h=(c[d>>2]|0)+-1|0}while((f|0)<(h|0));j=h}else j=e;c[g+(j*36|0)+20>>2]=-1;c[g+(((c[d>>2]|0)+-1|0)*36|0)+32>>2]=-1;c[a+16>>2]=0;c[a+
20>>2]=0;c[a+24>>2]=0;i=b;return}function We(a){a=a|0;var b=0;b=i;Qm(c[a+4>>2]|0);i=b;return}function Xe(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,o=0,p=0,q=0;b=i;d=a+16|0;e=c[d>>2]|0;f=a+4|0;g=c[f>>2]|0;if((e|0)==-1){h=a+12|0;j=c[h>>2]|0;c[h>>2]=j<<1;k=Pm(j*72|0)|0;c[f>>2]=k;j=a+8|0;An(k|0,g|0,(c[j>>2]|0)*36|0)|0;Qm(g);k=c[j>>2]|0;l=(c[h>>2]|0)+-1|0;m=c[f>>2]|0;if((k|0)<(l|0)){f=k;do{k=f;f=f+1|0;c[m+(k*36|0)+20>>2]=f;c[m+(k*36|0)+32>>2]=-1;k=(c[h>>2]|0)+-1|0}while((f|0)<(k|0));n=k}else n=
l;c[m+(n*36|0)+20>>2]=-1;c[m+(((c[h>>2]|0)+-1|0)*36|0)+32>>2]=-1;h=c[j>>2]|0;c[d>>2]=h;o=j;p=m;q=h}else{o=a+8|0;p=g;q=e}e=p+(q*36|0)+20|0;c[d>>2]=c[e>>2];c[e>>2]=-1;c[p+(q*36|0)+24>>2]=-1;c[p+(q*36|0)+28>>2]=-1;c[p+(q*36|0)+32>>2]=0;c[p+(q*36|0)+16>>2]=0;c[o>>2]=(c[o>>2]|0)+1;i=b;return q|0}function Ye(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;e=i;f=Xe(a)|0;h=a+4|0;j=+(+g[b>>2]+-.10000000149011612);k=+(+g[b+4>>2]+-.10000000149011612);l=(c[h>>2]|0)+(f*36|0)|0;g[l>>2]=j;g[l+4>>2]=k;k=+(+g[b+
8>>2]+.10000000149011612);j=+(+g[b+12>>2]+.10000000149011612);b=(c[h>>2]|0)+(f*36|0)+8|0;g[b>>2]=k;g[b+4>>2]=j;c[(c[h>>2]|0)+(f*36|0)+16>>2]=d;c[(c[h>>2]|0)+(f*36|0)+32>>2]=0;Ze(a,f);i=e;return f|0}function Ze(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;d=i;e=a+24|0;c[e>>2]=(c[e>>2]|0)+1;e=c[a>>2]|0;if((e|0)==-1){c[a>>2]=b;c[(c[a+4>>2]|0)+(b*36|0)+20>>2]=-1;i=d;return}f=a+4|0;h=c[f>>2]|0;j=+g[h+(b*36|0)>>
2];k=+g[h+(b*36|0)+4>>2];l=+g[h+(b*36|0)+8>>2];m=+g[h+(b*36|0)+12>>2];n=c[h+(e*36|0)+24>>2]|0;a:do if((n|0)==-1)o=e;else{p=n;q=e;while(1){r=c[h+(q*36|0)+28>>2]|0;s=+g[h+(q*36|0)+8>>2];t=+g[h+(q*36|0)>>2];u=+g[h+(q*36|0)+12>>2];v=+g[h+(q*36|0)+4>>2];w=((s>l?s:l)-(t<j?t:j)+((u>m?u:m)-(v<k?v:k)))*2;x=w*2;y=(w-(s-t+(u-v))*2)*2;v=+g[h+(p*36|0)>>2];u=j<v?j:v;t=+g[h+(p*36|0)+4>>2];s=k<t?k:t;w=+g[h+(p*36|0)+8>>2];z=l>w?l:w;A=+g[h+(p*36|0)+12>>2];B=m>A?m:A;if((c[h+(p*36|0)+24>>2]|0)==-1)C=(z-u+(B-s))*2;else C=
(z-u+(B-s))*2-(w-v+(A-t))*2;t=y+C;A=+g[h+(r*36|0)>>2];v=j<A?j:A;w=+g[h+(r*36|0)+4>>2];s=k<w?k:w;B=+g[h+(r*36|0)+8>>2];u=l>B?l:B;z=+g[h+(r*36|0)+12>>2];D=m>z?m:z;if((c[h+(r*36|0)+24>>2]|0)==-1)E=(u-v+(D-s))*2;else E=(u-v+(D-s))*2-(B-A+(z-w))*2;w=y+E;if(x<t&x<w){o=q;break a}F=t<w?p:r;p=c[h+(F*36|0)+24>>2]|0;if((p|0)==-1){o=F;break}else q=F}}while(0);e=c[h+(o*36|0)+20>>2]|0;h=Xe(a)|0;n=c[f>>2]|0;c[n+(h*36|0)+20>>2]=e;c[n+(h*36|0)+16>>2]=0;n=c[f>>2]|0;E=+g[n+(o*36|0)>>2];C=+g[n+(o*36|0)+4>>2];w=+(j<E?
j:E);E=+(k<C?k:C);q=n+(h*36|0)|0;g[q>>2]=w;g[q+4>>2]=E;E=+g[n+(o*36|0)+8>>2];w=+g[n+(o*36|0)+12>>2];C=+(l>E?l:E);E=+(m>w?m:w);q=n+(h*36|0)+8|0;g[q>>2]=C;g[q+4>>2]=E;q=c[f>>2]|0;c[q+(h*36|0)+32>>2]=(c[q+(o*36|0)+32>>2]|0)+1;if((e|0)==-1){c[q+(h*36|0)+24>>2]=o;c[q+(h*36|0)+28>>2]=b;c[q+(o*36|0)+20>>2]=h;n=q+(b*36|0)+20|0;c[n>>2]=h;c[a>>2]=h;G=c[n>>2]|0}else{n=q+(e*36|0)+24|0;if((c[n>>2]|0)==(o|0))c[n>>2]=h;else c[q+(e*36|0)+28>>2]=h;c[q+(h*36|0)+24>>2]=o;c[q+(h*36|0)+28>>2]=b;c[q+(o*36|0)+20>>2]=h;
c[q+(b*36|0)+20>>2]=h;G=h}if((G|0)==-1){i=d;return}else H=G;do{G=bf(a,H)|0;h=c[f>>2]|0;b=c[h+(G*36|0)+24>>2]|0;q=c[h+(G*36|0)+28>>2]|0;o=c[h+(b*36|0)+32>>2]|0;e=c[h+(q*36|0)+32>>2]|0;c[h+(G*36|0)+32>>2]=((o|0)>(e|0)?o:e)+1;E=+g[h+(b*36|0)>>2];C=+g[h+(q*36|0)>>2];w=+g[h+(b*36|0)+4>>2];m=+g[h+(q*36|0)+4>>2];l=+(E<C?E:C);C=+(w<m?w:m);e=h+(G*36|0)|0;g[e>>2]=l;g[e+4>>2]=C;C=+g[h+(b*36|0)+8>>2];l=+g[h+(q*36|0)+8>>2];m=+g[h+(b*36|0)+12>>2];w=+g[h+(q*36|0)+12>>2];E=+(C>l?C:l);l=+(m>w?m:w);q=h+(G*36|0)+8|
0;g[q>>2]=E;g[q+4>>2]=l;H=c[(c[f>>2]|0)+(G*36|0)+20>>2]|0}while(!((H|0)==-1));i=d;return}function _e(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;$e(a,b);e=a+16|0;f=c[a+4>>2]|0;c[f+(b*36|0)+20>>2]=c[e>>2];c[f+(b*36|0)+32>>2]=-1;c[e>>2]=b;b=a+8|0;c[b>>2]=(c[b>>2]|0)+-1;i=d;return}function $e(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;d=i;if((c[a>>2]|0)==(b|0)){c[a>>2]=-1;i=d;return}e=a+4|0;f=c[e>>2]|0;h=c[f+(b*36|0)+20>>2]|0;j=f+(h*36|0)+20|0;k=c[j>>2]|0;l=c[f+(h*36|0)+24>>2]|
0;if((l|0)==(b|0))m=c[f+(h*36|0)+28>>2]|0;else m=l;if((k|0)==-1){c[a>>2]=m;c[f+(m*36|0)+20>>2]=-1;l=a+16|0;c[j>>2]=c[l>>2];c[f+(h*36|0)+32>>2]=-1;c[l>>2]=h;l=a+8|0;c[l>>2]=(c[l>>2]|0)+-1;i=d;return}l=f+(k*36|0)+24|0;if((c[l>>2]|0)==(h|0))c[l>>2]=m;else c[f+(k*36|0)+28>>2]=m;c[f+(m*36|0)+20>>2]=k;m=a+16|0;c[j>>2]=c[m>>2];c[f+(h*36|0)+32>>2]=-1;c[m>>2]=h;h=a+8|0;c[h>>2]=(c[h>>2]|0)+-1;h=k;do{k=bf(a,h)|0;m=c[e>>2]|0;f=c[m+(k*36|0)+24>>2]|0;j=c[m+(k*36|0)+28>>2]|0;n=+g[m+(f*36|0)>>2];o=+g[m+(j*36|0)>>
2];p=+g[m+(f*36|0)+4>>2];q=+g[m+(j*36|0)+4>>2];r=+(n<o?n:o);o=+(p<q?p:q);l=m+(k*36|0)|0;g[l>>2]=r;g[l+4>>2]=o;o=+g[m+(f*36|0)+8>>2];r=+g[m+(j*36|0)+8>>2];q=+g[m+(f*36|0)+12>>2];p=+g[m+(j*36|0)+12>>2];n=+(o>r?o:r);r=+(q>p?q:p);l=m+(k*36|0)+8|0;g[l>>2]=n;g[l+4>>2]=r;l=c[e>>2]|0;m=c[l+(f*36|0)+32>>2]|0;f=c[l+(j*36|0)+32>>2]|0;c[l+(k*36|0)+32>>2]=((m|0)>(f|0)?m:f)+1;h=c[l+(k*36|0)+20>>2]|0}while(!((h|0)==-1));i=d;return}function af(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;f=i;h=a+4|0;j=c[h>>2]|0;if(((+g[j+(b*36|0)>>2]<=+g[d>>2]?+g[j+(b*36|0)+4>>2]<=+g[d+4>>2]:0)?+g[d+8>>2]<=+g[j+(b*36|0)+8>>2]:0)?+g[d+12>>2]<=+g[j+(b*36|0)+12>>2]:0){k=0;i=f;return k|0}$e(a,b);j=d;l=+g[j>>2];m=+g[j+4>>2];j=d+8|0;n=+g[j>>2];o=l+-.10000000149011612;l=m+-.10000000149011612;m=n+.10000000149011612;n=+g[j+4>>2]+.10000000149011612;p=+g[e>>2]*2;q=+g[e+4>>2]*2;if(p<0){r=o+p;s=m}else{r=o;s=p+m}if(q<0){t=l+q;u=n}else{t=l;u=q+n}e=c[h>>2]|0;n=+r;r=+t;h=e+(b*36|0)|0;g[h>>
2]=n;g[h+4>>2]=r;r=+s;s=+u;h=e+(b*36|0)+8|0;g[h>>2]=r;g[h+4>>2]=s;Ze(a,b);k=1;i=f;return k|0}function bf(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;d=i;e=c[a+4>>2]|0;f=e+(b*36|0)|0;h=e+(b*36|0)+24|0;j=c[h>>2]|0;if((j|0)==-1){k=b;i=d;return k|0}l=e+(b*36|0)+32|0;if((c[l>>2]|0)<2){k=b;i=d;return k|0}m=e+(b*36|0)+28|0;n=c[m>>2]|0;o=e+(j*36|0)|0;p=e+(n*36|0)|0;q=e+(n*36|0)+32|0;r=e+(j*36|0)+32|0;
s=(c[q>>2]|0)-(c[r>>2]|0)|0;if((s|0)>1){t=e+(n*36|0)+24|0;u=c[t>>2]|0;v=e+(n*36|0)+28|0;w=c[v>>2]|0;x=e+(u*36|0)|0;y=e+(w*36|0)|0;c[t>>2]=b;t=e+(b*36|0)+20|0;z=e+(n*36|0)+20|0;c[z>>2]=c[t>>2];c[t>>2]=n;t=c[z>>2]|0;do if(!((t|0)==-1)){z=e+(t*36|0)+24|0;if((c[z>>2]|0)==(b|0)){c[z>>2]=n;break}else{c[e+(t*36|0)+28>>2]=n;break}}else c[a>>2]=n;while(0);t=e+(u*36|0)+32|0;z=e+(w*36|0)+32|0;if((c[t>>2]|0)>(c[z>>2]|0)){c[v>>2]=u;c[m>>2]=w;c[e+(w*36|0)+20>>2]=b;A=+g[o>>2];B=+g[y>>2];C=A<B?A:B;B=+g[e+(j*36|0)+
4>>2];A=+g[e+(w*36|0)+4>>2];D=+C;E=+(B<A?B:A);F=f;g[F>>2]=D;g[F+4>>2]=E;E=+g[e+(j*36|0)+8>>2];D=+g[e+(w*36|0)+8>>2];A=+g[e+(j*36|0)+12>>2];B=+g[e+(w*36|0)+12>>2];G=+(E>D?E:D);D=+(A>B?A:B);F=e+(b*36|0)+8|0;g[F>>2]=G;g[F+4>>2]=D;D=+g[x>>2];G=+g[e+(b*36|0)+4>>2];B=+g[e+(u*36|0)+4>>2];A=+(C<D?C:D);D=+(G<B?G:B);F=p;g[F>>2]=A;g[F+4>>2]=D;D=+g[e+(b*36|0)+8>>2];A=+g[e+(u*36|0)+8>>2];B=+g[e+(b*36|0)+12>>2];G=+g[e+(u*36|0)+12>>2];C=+(D>A?D:A);A=+(B>G?B:G);F=e+(n*36|0)+8|0;g[F>>2]=C;g[F+4>>2]=A;F=c[r>>2]|0;
H=c[z>>2]|0;I=((F|0)>(H|0)?F:H)+1|0;c[l>>2]=I;H=c[t>>2]|0;J=(I|0)>(H|0)?I:H}else{c[v>>2]=w;c[m>>2]=u;c[e+(u*36|0)+20>>2]=b;A=+g[o>>2];C=+g[x>>2];G=A<C?A:C;C=+g[e+(j*36|0)+4>>2];A=+g[e+(u*36|0)+4>>2];B=+G;D=+(C<A?C:A);x=f;g[x>>2]=B;g[x+4>>2]=D;D=+g[e+(j*36|0)+8>>2];B=+g[e+(u*36|0)+8>>2];A=+g[e+(j*36|0)+12>>2];C=+g[e+(u*36|0)+12>>2];E=+(D>B?D:B);B=+(A>C?A:C);u=e+(b*36|0)+8|0;g[u>>2]=E;g[u+4>>2]=B;B=+g[y>>2];E=+g[e+(b*36|0)+4>>2];C=+g[e+(w*36|0)+4>>2];A=+(G<B?G:B);B=+(E<C?E:C);y=p;g[y>>2]=A;g[y+4>>2]=
B;B=+g[e+(b*36|0)+8>>2];A=+g[e+(w*36|0)+8>>2];C=+g[e+(b*36|0)+12>>2];E=+g[e+(w*36|0)+12>>2];G=+(B>A?B:A);A=+(C>E?C:E);w=e+(n*36|0)+8|0;g[w>>2]=G;g[w+4>>2]=A;w=c[r>>2]|0;y=c[t>>2]|0;t=((w|0)>(y|0)?w:y)+1|0;c[l>>2]=t;y=c[z>>2]|0;J=(t|0)>(y|0)?t:y}c[q>>2]=J+1;k=n;i=d;return k|0}if(!((s|0)<-1)){k=b;i=d;return k|0}s=e+(j*36|0)+24|0;J=c[s>>2]|0;y=e+(j*36|0)+28|0;t=c[y>>2]|0;z=e+(J*36|0)|0;w=e+(t*36|0)|0;c[s>>2]=b;s=e+(b*36|0)+20|0;u=e+(j*36|0)+20|0;c[u>>2]=c[s>>2];c[s>>2]=j;s=c[u>>2]|0;do if(!((s|0)==-1)){u=
e+(s*36|0)+24|0;if((c[u>>2]|0)==(b|0)){c[u>>2]=j;break}else{c[e+(s*36|0)+28>>2]=j;break}}else c[a>>2]=j;while(0);a=e+(J*36|0)+32|0;s=e+(t*36|0)+32|0;if((c[a>>2]|0)>(c[s>>2]|0)){c[y>>2]=J;c[h>>2]=t;c[e+(t*36|0)+20>>2]=b;A=+g[p>>2];G=+g[w>>2];E=A<G?A:G;G=+g[e+(n*36|0)+4>>2];A=+g[e+(t*36|0)+4>>2];C=+E;B=+(G<A?G:A);u=f;g[u>>2]=C;g[u+4>>2]=B;B=+g[e+(n*36|0)+8>>2];C=+g[e+(t*36|0)+8>>2];A=+g[e+(n*36|0)+12>>2];G=+g[e+(t*36|0)+12>>2];D=+(B>C?B:C);C=+(A>G?A:G);u=e+(b*36|0)+8|0;g[u>>2]=D;g[u+4>>2]=C;C=+g[z>>
2];D=+g[e+(b*36|0)+4>>2];G=+g[e+(J*36|0)+4>>2];A=+(E<C?E:C);C=+(D<G?D:G);u=o;g[u>>2]=A;g[u+4>>2]=C;C=+g[e+(b*36|0)+8>>2];A=+g[e+(J*36|0)+8>>2];G=+g[e+(b*36|0)+12>>2];D=+g[e+(J*36|0)+12>>2];E=+(C>A?C:A);A=+(G>D?G:D);u=e+(j*36|0)+8|0;g[u>>2]=E;g[u+4>>2]=A;u=c[q>>2]|0;x=c[s>>2]|0;m=((u|0)>(x|0)?u:x)+1|0;c[l>>2]=m;x=c[a>>2]|0;K=(m|0)>(x|0)?m:x}else{c[y>>2]=t;c[h>>2]=J;c[e+(J*36|0)+20>>2]=b;A=+g[p>>2];E=+g[z>>2];D=A<E?A:E;E=+g[e+(n*36|0)+4>>2];A=+g[e+(J*36|0)+4>>2];G=+D;C=+(E<A?E:A);z=f;g[z>>2]=G;g[z+
4>>2]=C;C=+g[e+(n*36|0)+8>>2];G=+g[e+(J*36|0)+8>>2];A=+g[e+(n*36|0)+12>>2];E=+g[e+(J*36|0)+12>>2];B=+(C>G?C:G);G=+(A>E?A:E);J=e+(b*36|0)+8|0;g[J>>2]=B;g[J+4>>2]=G;G=+g[w>>2];B=+g[e+(b*36|0)+4>>2];E=+g[e+(t*36|0)+4>>2];A=+(D<G?D:G);G=+(B<E?B:E);w=o;g[w>>2]=A;g[w+4>>2]=G;G=+g[e+(b*36|0)+8>>2];A=+g[e+(t*36|0)+8>>2];E=+g[e+(b*36|0)+12>>2];B=+g[e+(t*36|0)+12>>2];D=+(G>A?G:A);A=+(E>B?E:B);t=e+(j*36|0)+8|0;g[t>>2]=D;g[t+4>>2]=A;t=c[q>>2]|0;q=c[a>>2]|0;a=((t|0)>(q|0)?t:q)+1|0;c[l>>2]=a;l=c[s>>2]|0;K=(a|0)>
(l|0)?a:l}c[r>>2]=K+1;k=j;i=d;return k|0}function cf(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=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;j=i;l=b+60|0;c[l>>2]=0;m=f+12|0;n=+g[h+12>>2];o=+g[m>>2];p=+g[h+8>>2];q=+g[f+16>>2];r=+g[h>>2]+(n*o-p*q)-+g[e>>2];s=o*p+n*q+ +g[h+4>>2]-+g[e+4>>2];q=+g[e+12>>2];n=+g[e+8>>2];p=r*q+s*n;o=q*s-r*n;e=d+12|0;h=c[e>>2]|0;t=c[e+4>>2]|0;n=(c[k>>2]=h,+g[k>>2]);r=(c[k>>2]=t,+g[k>>2]);e=d+20|0;u=c[e>>2]|0;
v=c[e+4>>2]|0;s=(c[k>>2]=u,+g[k>>2]);q=(c[k>>2]=v,+g[k>>2]);w=s-n;x=q-r;y=w*(s-p)+x*(q-o);z=p-n;A=o-r;B=z*w+A*x;C=+g[d+8>>2]+ +g[f+8>>2];if(B<=0){if(z*z+A*A>C*C){i=j;return}if((a[d+44>>0]|0)!=0?(f=d+28|0,D=+g[f>>2],(n-p)*(n-D)+(r-o)*(r-+g[f+4>>2])>0):0){i=j;return}c[l>>2]=1;c[b+56>>2]=0;g[b+40>>2]=0;g[b+44>>2]=0;f=b+48|0;c[f>>2]=h;c[f+4>>2]=t;f=b+16|0;c[f>>2]=0;a[f>>0]=0;a[f+1>>0]=0;a[f+2>>0]=0;a[f+3>>0]=0;f=m;e=c[f+4>>2]|0;E=b;c[E>>2]=c[f>>2];c[E+4>>2]=e;i=j;return}if(y<=0){D=p-s;F=o-q;if(D*D+F*
F>C*C){i=j;return}if((a[d+45>>0]|0)!=0?(e=d+36|0,G=+g[e>>2],D*(G-s)+F*(+g[e+4>>2]-q)>0):0){i=j;return}c[l>>2]=1;c[b+56>>2]=0;g[b+40>>2]=0;g[b+44>>2]=0;e=b+48|0;c[e>>2]=u;c[e+4>>2]=v;v=b+16|0;c[v>>2]=0;a[v>>0]=1;a[v+1>>0]=0;a[v+2>>0]=0;a[v+3>>0]=0;v=m;e=c[v+4>>2]|0;u=b;c[u>>2]=c[v>>2];c[u+4>>2]=e;i=j;return}F=1/(w*w+x*x);G=p-(n*y+s*B)*F;s=o-(r*y+q*B)*F;if(G*G+s*s>C*C){i=j;return}C=-x;if(w*A+z*C<0){H=x;I=-w}else{H=C;I=w}w=+Q(+(I*I+H*H));if(w<1.1920928955078125E-7){J=H;K=I}else{C=1/w;J=H*C;K=I*C}c[l>>
2]=1;c[b+56>>2]=1;C=+J;J=+K;l=b+40|0;g[l>>2]=C;g[l+4>>2]=J;l=b+48|0;c[l>>2]=h;c[l+4>>2]=t;t=b+16|0;c[t>>2]=0;a[t>>0]=0;a[t+1>>0]=0;a[t+2>>0]=1;a[t+3>>0]=0;t=m;m=c[t+4>>2]|0;l=b;c[l>>2]=c[t>>2];c[l+4>>2]=m;i=j;return}function df(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 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,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=
0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0;l=i;i=i+144|0;m=l+128|0;n=l+24|0;o=l+72|0;p=l+48|0;q=l;r=b+132|0;s=+g[f+12>>2];t=+g[j+8>>2];u=+g[f+8>>2];v=+g[j+12>>2];w=s*t-u*v;x=t*u+s*v;v=+w;t=+x;y=+g[j>>2]-+g[f>>2];z=+g[j+4>>2]-+g[f+4>>2];A=s*y+u*z;B=s*z-u*y;y=+A;u=+B;f=r;g[f>>2]=y;g[f+4>>2]=u;f=b+140|0;g[f>>2]=v;g[f+4>>2]=t;f=b+144|0;t=+g[h+12>>2];j=b+140|0;v=+g[h+16>>2];u=A+(x*t-w*v);C=b+136|0;A=t*w+x*v+B;B=+u;v=+A;D=b+148|0;g[D>>2]=B;g[D+
4>>2]=v;D=e+28|0;E=c[D>>2]|0;F=c[D+4>>2]|0;D=b+156|0;c[D>>2]=E;c[D+4>>2]=F;D=b+164|0;G=e+12|0;H=c[G>>2]|0;I=c[G+4>>2]|0;G=D;c[G>>2]=H;c[G+4>>2]=I;G=b+172|0;J=e+20|0;K=c[J>>2]|0;L=c[J+4>>2]|0;J=G;c[J>>2]=K;c[J+4>>2]=L;J=e+36|0;M=c[J>>2]|0;N=c[J+4>>2]|0;J=b+180|0;c[J>>2]=M;c[J+4>>2]=N;J=(a[e+44>>0]|0)!=0;O=(a[e+45>>0]|0)!=0;v=(c[k>>2]=K,+g[k>>2]);B=(c[k>>2]=H,+g[k>>2]);x=v-B;w=(c[k>>2]=L,+g[k>>2]);L=b+168|0;t=(c[k>>2]=I,+g[k>>2]);y=w-t;z=+Q(+(x*x+y*y));s=(c[k>>2]=E,+g[k>>2]);P=(c[k>>2]=F,+g[k>>2]);
R=(c[k>>2]=M,+g[k>>2]);S=(c[k>>2]=N,+g[k>>2]);if(z<1.1920928955078125E-7){T=x;U=y}else{V=1/z;T=x*V;U=y*V}N=b+196|0;V=-T;g[N>>2]=U;M=b+200|0;g[M>>2]=V;y=(u-B)*U+(A-t)*V;if(J){V=B-s;B=t-P;t=+Q(+(V*V+B*B));if(t<1.1920928955078125E-7){W=V;X=B}else{x=1/t;W=V*x;X=B*x}x=-W;g[b+188>>2]=X;g[b+192>>2]=x;Y=U*W-T*X>=0;Z=(u-s)*X+(A-P)*x}else{Y=0;Z=0}a:do if(!O){if(!J){F=y>=0;a[b+248>>0]=F&1;E=b+212|0;if(F){_=E;$=64;break}else{aa=E;$=65;break}}E=Z>=0;if(Y){if(!E){F=y>=0;a[b+248>>0]=F&1;I=b+212|0;if(F)ba=I;else{x=
+-U;P=+T;F=I;g[F>>2]=x;g[F+4>>2]=P;F=N;I=c[F>>2]|0;H=c[F+4>>2]|0;F=b+228|0;c[F>>2]=I;c[F+4>>2]=H;H=b+236|0;g[H>>2]=-(c[k>>2]=I,+g[k>>2]);g[H+4>>2]=P;break}}else{a[b+248>>0]=1;ba=b+212|0}H=N;I=c[H+4>>2]|0;F=ba;c[F>>2]=c[H>>2];c[F+4>>2]=I;I=b+188|0;F=c[I+4>>2]|0;H=b+228|0;c[H>>2]=c[I>>2];c[H+4>>2]=F;P=+-+g[N>>2];x=+-+g[M>>2];F=b+236|0;g[F>>2]=P;g[F+4>>2]=x;break}else{if(E){E=y>=0;a[b+248>>0]=E&1;F=b+212|0;if(E){E=N;H=c[E>>2]|0;I=c[E+4>>2]|0;E=F;c[E>>2]=H;c[E+4>>2]=I;E=b+228|0;c[E>>2]=H;c[E+4>>2]=I;
x=+-(c[k>>2]=H,+g[k>>2]);P=+T;H=b+236|0;g[H>>2]=x;g[H+4>>2]=P;break}else ca=F}else{a[b+248>>0]=0;ca=b+212|0}P=+-U;x=+T;F=ca;g[F>>2]=P;g[F+4>>2]=x;F=N;H=c[F+4>>2]|0;I=b+228|0;c[I>>2]=c[F>>2];c[I+4>>2]=H;x=+-+g[b+188>>2];P=+-+g[b+192>>2];H=b+236|0;g[H>>2]=x;g[H+4>>2]=P;break}}else{P=R-v;x=S-w;X=+Q(+(P*P+x*x));if(X<1.1920928955078125E-7){da=P;ea=x}else{s=1/X;da=P*s;ea=x*s}s=-da;H=b+204|0;g[H>>2]=ea;I=b+208|0;g[I>>2]=s;F=T*ea-U*da>0;x=(u-v)*ea+(A-w)*s;if(!J){E=y>=0;if(!O){a[b+248>>0]=E&1;K=b+212|0;if(E){_=
K;$=64;break}else{aa=K;$=65;break}}if(F){if(!E){K=x>=0;a[b+248>>0]=K&1;e=b+212|0;if(K)fa=e;else{s=+-U;P=+T;K=e;g[K>>2]=s;g[K+4>>2]=P;K=b+228|0;g[K>>2]=s;g[K+4>>2]=P;K=N;e=c[K+4>>2]|0;ga=b+236|0;c[ga>>2]=c[K>>2];c[ga+4>>2]=e;break}}else{a[b+248>>0]=1;fa=b+212|0}e=N;ga=c[e+4>>2]|0;K=fa;c[K>>2]=c[e>>2];c[K+4>>2]=ga;P=+-+g[N>>2];s=+-+g[M>>2];ga=b+228|0;g[ga>>2]=P;g[ga+4>>2]=s;ga=b+204|0;K=c[ga+4>>2]|0;e=b+236|0;c[e>>2]=c[ga>>2];c[e+4>>2]=K;break}else{if(E){E=x>=0;a[b+248>>0]=E&1;K=b+212|0;if(E){E=N;e=
c[E>>2]|0;ga=c[E+4>>2]|0;E=K;c[E>>2]=e;c[E+4>>2]=ga;s=+-(c[k>>2]=e,+g[k>>2]);P=+T;E=b+228|0;g[E>>2]=s;g[E+4>>2]=P;E=b+236|0;c[E>>2]=e;c[E+4>>2]=ga;break}else ha=K}else{a[b+248>>0]=0;ha=b+212|0}P=+-U;s=+T;K=ha;g[K>>2]=P;g[K+4>>2]=s;s=+-+g[b+204>>2];P=+-+g[b+208>>2];K=b+228|0;g[K>>2]=s;g[K+4>>2]=P;K=N;ga=c[K+4>>2]|0;E=b+236|0;c[E>>2]=c[K>>2];c[E+4>>2]=ga;break}}if(Y&F){if(!(Z>=0)&!(y>=0)){ga=x>=0;a[b+248>>0]=ga&1;E=b+212|0;if(ga)ia=E;else{P=+-U;s=+T;ga=E;g[ga>>2]=P;g[ga+4>>2]=s;ga=b+228|0;g[ga>>2]=
P;g[ga+4>>2]=s;ga=b+236|0;g[ga>>2]=P;g[ga+4>>2]=s;break}}else{a[b+248>>0]=1;ia=b+212|0}ga=N;E=c[ga+4>>2]|0;K=ia;c[K>>2]=c[ga>>2];c[K+4>>2]=E;E=b+188|0;K=c[E+4>>2]|0;ga=b+228|0;c[ga>>2]=c[E>>2];c[ga+4>>2]=K;K=b+204|0;ga=c[K+4>>2]|0;E=b+236|0;c[E>>2]=c[K>>2];c[E+4>>2]=ga;break}if(Y){do if(!(Z>=0)){if(y>=0){ga=x>=0;a[b+248>>0]=ga&1;E=b+212|0;if(ga){ja=E;break}else ka=E}else{a[b+248>>0]=0;ka=b+212|0}s=+-U;P=+T;E=ka;g[E>>2]=s;g[E+4>>2]=P;P=+-+g[H>>2];s=+-+g[I>>2];E=b+228|0;g[E>>2]=P;g[E+4>>2]=s;s=+-+g[N>>
2];P=+-+g[M>>2];E=b+236|0;g[E>>2]=s;g[E+4>>2]=P;break a}else{a[b+248>>0]=1;ja=b+212|0}while(0);E=N;ga=c[E+4>>2]|0;K=ja;c[K>>2]=c[E>>2];c[K+4>>2]=ga;ga=b+188|0;K=c[ga+4>>2]|0;E=b+228|0;c[E>>2]=c[ga>>2];c[E+4>>2]=K;K=N;E=c[K+4>>2]|0;ga=b+236|0;c[ga>>2]=c[K>>2];c[ga+4>>2]=E;break}if(!F){if(!(!(Z>=0)|!(y>=0))){E=x>=0;a[b+248>>0]=E&1;ga=b+212|0;if(E){E=N;K=c[E>>2]|0;e=c[E+4>>2]|0;E=ga;c[E>>2]=K;c[E+4>>2]=e;E=b+228|0;c[E>>2]=K;c[E+4>>2]=e;E=b+236|0;c[E>>2]=K;c[E+4>>2]=e;break}else la=ga}else{a[b+248>>0]=
0;la=b+212|0}P=+-U;s=+T;ga=la;g[ga>>2]=P;g[ga+4>>2]=s;s=+-+g[H>>2];P=+-+g[I>>2];ga=b+228|0;g[ga>>2]=s;g[ga+4>>2]=P;P=+-+g[b+188>>2];s=+-+g[b+192>>2];ga=b+236|0;g[ga>>2]=P;g[ga+4>>2]=s;break}do if(!(x>=0)){if(Z>=0){ga=y>=0;a[b+248>>0]=ga&1;e=b+212|0;if(ga){ma=e;break}else na=e}else{a[b+248>>0]=0;na=b+212|0}s=+-U;P=+T;e=na;g[e>>2]=s;g[e+4>>2]=P;P=+-+g[N>>2];s=+-+g[M>>2];e=b+228|0;g[e>>2]=P;g[e+4>>2]=s;s=+-+g[b+188>>2];P=+-+g[b+192>>2];e=b+236|0;g[e>>2]=s;g[e+4>>2]=P;break a}else{a[b+248>>0]=1;ma=b+
212|0}while(0);I=N;H=c[I+4>>2]|0;F=ma;c[F>>2]=c[I>>2];c[F+4>>2]=H;H=N;F=c[H+4>>2]|0;I=b+228|0;c[I>>2]=c[H>>2];c[I+4>>2]=F;F=b+204|0;I=c[F+4>>2]|0;H=b+236|0;c[H>>2]=c[F>>2];c[H+4>>2]=I}while(0);if(($|0)==64){ma=N;na=c[ma>>2]|0;la=c[ma+4>>2]|0;ma=_;c[ma>>2]=na;c[ma+4>>2]=la;y=+-(c[k>>2]=na,+g[k>>2]);Z=+T;na=b+228|0;g[na>>2]=y;g[na+4>>2]=Z;na=b+236|0;g[na>>2]=y;g[na+4>>2]=Z}else if(($|0)==65){Z=+-U;U=+T;na=aa;g[na>>2]=Z;g[na+4>>2]=U;na=N;aa=c[na>>2]|0;la=c[na+4>>2]|0;na=b+228|0;c[na>>2]=aa;c[na+4>>2]=
la;na=b+236|0;c[na>>2]=aa;c[na+4>>2]=la}la=h+148|0;na=b+128|0;c[na>>2]=c[la>>2];if((c[la>>2]|0)>0){aa=0;do{U=+g[f>>2];Z=+g[h+(aa<<3)+20>>2];T=+g[j>>2];y=+g[h+(aa<<3)+24>>2];w=+(+g[r>>2]+(U*Z-T*y));A=+(Z*T+U*y+ +g[C>>2]);ma=b+(aa<<3)|0;g[ma>>2]=w;g[ma+4>>2]=A;A=+g[f>>2];w=+g[h+(aa<<3)+84>>2];y=+g[j>>2];U=+g[h+(aa<<3)+88>>2];T=+(A*w-y*U);Z=+(w*y+A*U);ma=b+(aa<<3)+64|0;g[ma>>2]=T;g[ma+4>>2]=Z;aa=aa+1|0}while((aa|0)<(c[la>>2]|0))}la=b+244|0;g[la>>2]=.019999999552965164;aa=d+60|0;c[aa>>2]=0;ma=b+248|0;
_=c[na>>2]|0;if((_|0)<=0){i=l;return}Z=+g[b+164>>2];T=+g[L>>2];U=+g[b+212>>2];A=+g[b+216>>2];y=3.4028234663852886E38;L=0;do{w=U*(+g[b+(L<<3)>>2]-Z)+A*(+g[b+(L<<3)+4>>2]-T);y=w<y?w:y;L=L+1|0}while((L|0)!=(_|0));if(y>.019999999552965164){i=l;return}ef(m,b);_=c[m>>2]|0;if((_|0)!=0){T=+g[m+8>>2];if(T>+g[la>>2]){i=l;return}if(T>y*.9800000190734863+.0010000000474974513){L=c[m+4>>2]|0;m=d+56|0;if((_|0)==1){oa=n;pa=m;$=77}else{c[m>>2]=2;m=D;_=c[m+4>>2]|0;ja=n;c[ja>>2]=c[m>>2];c[ja+4>>2]=_;_=n+8|0;a[_>>0]=
0;ja=L&255;a[_+1>>0]=ja;a[_+2>>0]=0;a[_+3>>0]=1;_=G;m=c[_+4>>2]|0;ka=n+12|0;c[ka>>2]=c[_>>2];c[ka+4>>2]=m;m=n+20|0;a[m>>0]=0;a[m+1>>0]=ja;a[m+2>>0]=0;a[m+3>>0]=1;c[o>>2]=L;m=L+1|0;ja=(m|0)<(c[na>>2]|0)?m:0;c[o+4>>2]=ja;m=b+(L<<3)|0;ka=c[m>>2]|0;_=c[m+4>>2]|0;m=o+8|0;c[m>>2]=ka;c[m+4>>2]=_;m=b+(ja<<3)|0;ja=c[m>>2]|0;Y=c[m+4>>2]|0;m=o+16|0;c[m>>2]=ja;c[m+4>>2]=Y;m=b+(L<<3)+64|0;ia=c[m>>2]|0;ha=c[m+4>>2]|0;m=o+24|0;c[m>>2]=ia;c[m+4>>2]=ha;qa=Y;ra=ja;sa=_;ta=ka;ua=ia;va=ha;wa=n;xa=L;ya=0}}else $=75}else $=
75;if(($|0)==75){oa=n;pa=d+56|0;$=77}do if(($|0)==77){c[pa>>2]=1;L=c[na>>2]|0;if((L|0)>1){y=+g[b+216>>2];T=+g[b+212>>2];ha=0;A=T*+g[b+64>>2]+y*+g[b+68>>2];ia=1;while(1){Z=T*+g[b+(ia<<3)+64>>2]+y*+g[b+(ia<<3)+68>>2];ka=Z<A;_=ka?ia:ha;ia=ia+1|0;if((ia|0)>=(L|0)){za=_;break}else{ha=_;A=ka?Z:A}}}else za=0;ha=za+1|0;ia=(ha|0)<(L|0)?ha:0;ha=b+(za<<3)|0;ka=c[ha+4>>2]|0;_=n;c[_>>2]=c[ha>>2];c[_+4>>2]=ka;ka=n+8|0;a[ka>>0]=0;a[ka+1>>0]=za;a[ka+2>>0]=1;a[ka+3>>0]=0;ka=b+(ia<<3)|0;_=c[ka+4>>2]|0;ha=n+12|0;c[ha>>
2]=c[ka>>2];c[ha+4>>2]=_;_=n+20|0;a[_>>0]=0;a[_+1>>0]=ia;a[_+2>>0]=1;a[_+3>>0]=0;if((a[ma>>0]|0)==0){c[o>>2]=1;c[o+4>>2]=0;_=G;ia=c[_>>2]|0;ha=c[_+4>>2]|0;_=o+8|0;c[_>>2]=ia;c[_+4>>2]=ha;_=D;ka=c[_>>2]|0;ja=c[_+4>>2]|0;_=o+16|0;c[_>>2]=ka;c[_+4>>2]=ja;_=(g[k>>2]=-+g[N>>2],c[k>>2]|0);Y=(g[k>>2]=-+g[M>>2],c[k>>2]|0);m=o+24|0;c[m>>2]=_;c[m+4>>2]=Y;qa=ja;ra=ka;sa=ha;ta=ia;ua=_;va=Y;wa=oa;xa=1;ya=1;break}else{c[o>>2]=0;c[o+4>>2]=1;Y=D;_=c[Y>>2]|0;ia=c[Y+4>>2]|0;Y=o+8|0;c[Y>>2]=_;c[Y+4>>2]=ia;Y=G;ha=c[Y>>
2]|0;ka=c[Y+4>>2]|0;Y=o+16|0;c[Y>>2]=ha;c[Y+4>>2]=ka;Y=N;ja=c[Y>>2]|0;m=c[Y+4>>2]|0;Y=o+24|0;c[Y>>2]=ja;c[Y+4>>2]=m;qa=ka;ra=ha;sa=ia;ta=_;ua=ja;va=m;wa=oa;xa=0;ya=1;break}}while(0);A=(c[k>>2]=va,+g[k>>2]);y=(c[k>>2]=ua,+g[k>>2]);T=(c[k>>2]=ta,+g[k>>2]);Z=(c[k>>2]=sa,+g[k>>2]);U=(c[k>>2]=ra,+g[k>>2]);w=(c[k>>2]=qa,+g[k>>2]);qa=o+32|0;ra=o+24|0;sa=o+28|0;ea=-y;g[qa>>2]=A;g[o+36>>2]=ea;ta=o+44|0;y=-A;va=ta;g[va>>2]=y;c[va+4>>2]=ua;va=o+8|0;oa=o+12|0;v=A*T+Z*ea;g[o+40>>2]=v;N=o+52|0;g[N>>2]=U*y+(c[k>>
2]=ua,+g[k>>2])*w;if((kf(p,wa,qa,v,xa)|0)<2){i=l;return}if((kf(q,p,ta,+g[N>>2],c[o+4>>2]|0)|0)<2){i=l;return}N=d+40|0;if(ya){ya=ra;ta=c[ya>>2]|0;p=c[ya+4>>2]|0;ya=N;c[ya>>2]=ta;c[ya+4>>2]=p;p=va;ya=c[p>>2]|0;xa=c[p+4>>2]|0;p=d+48|0;c[p>>2]=ya;c[p+4>>2]=xa;v=(c[k>>2]=ya,+g[k>>2]);w=(c[k>>2]=ta,+g[k>>2]);y=+g[oa>>2];U=+g[sa>>2];ea=+g[q>>2];Z=+g[q+4>>2];T=+g[la>>2];if(!((ea-v)*w+(Z-y)*U<=T)){Aa=T;Ba=0}else{T=ea-+g[r>>2];ea=Z-+g[C>>2];Z=+g[f>>2];A=+g[j>>2];u=+(T*Z+ea*A);da=+(Z*ea-T*A);ta=d;g[ta>>2]=u;
g[ta+4>>2]=da;c[d+16>>2]=c[q+8>>2];Aa=+g[la>>2];Ba=1}da=+g[q+12>>2];u=+g[q+16>>2];if(!((da-v)*w+(u-y)*U<=Aa))Ca=Ba;else{Aa=da-+g[r>>2];da=u-+g[C>>2];u=+g[f>>2];U=+g[j>>2];y=+(Aa*u+da*U);w=+(u*da-Aa*U);j=d+(Ba*20|0)|0;g[j>>2]=y;g[j+4>>2]=w;c[d+(Ba*20|0)+16>>2]=c[q+20>>2];Ca=Ba+1|0}}else{Ba=c[o>>2]|0;o=h+(Ba<<3)+84|0;j=c[o+4>>2]|0;f=N;c[f>>2]=c[o>>2];c[f+4>>2]=j;j=h+(Ba<<3)+20|0;Ba=c[j+4>>2]|0;h=d+48|0;c[h>>2]=c[j>>2];c[h+4>>2]=Ba;w=+g[va>>2];y=+g[ra>>2];U=+g[oa>>2];Aa=+g[sa>>2];da=+g[la>>2];if(!((+g[q>>
2]-w)*y+(+g[q+4>>2]-U)*Aa<=da)){Da=da;Ea=0}else{sa=q;oa=c[sa+4>>2]|0;ra=d;c[ra>>2]=c[sa>>2];c[ra+4>>2]=oa;oa=q+8|0;ra=d+16|0;a[ra+2>>0]=a[oa+3>>0]|0;a[ra+3>>0]=a[oa+2>>0]|0;a[ra>>0]=a[oa+1>>0]|0;a[ra+1>>0]=a[oa>>0]|0;Da=+g[la>>2];Ea=1}la=q+12|0;if(!((+g[la>>2]-w)*y+(+g[q+16>>2]-U)*Aa<=Da))Ca=Ea;else{oa=la;la=c[oa+4>>2]|0;ra=d+(Ea*20|0)|0;c[ra>>2]=c[oa>>2];c[ra+4>>2]=la;la=q+20|0;q=d+(Ea*20|0)+16|0;a[q+2>>0]=a[la+3>>0]|0;a[q+3>>0]=a[la+2>>0]|0;a[q>>0]=a[la+1>>0]|0;a[q+1>>0]=a[la>>0]|0;Ca=Ea+1|0}}c[aa>>
2]=Ca;i=l;return}function ef(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;d=i;c[a>>2]=0;e=a+4|0;c[e>>2]=-1;f=a+8|0;g[f>>2]=-3.4028234663852886E38;h=+g[b+216>>2];j=+g[b+212>>2];k=c[b+128>>2]|0;if((k|0)<=0){i=d;return}l=+g[b+164>>2];m=+g[b+168>>2];n=+g[b+172>>2];o=+g[b+176>>2];p=+g[b+244>>2];q=b+228|0;r=b+232|0;s=b+236|0;t=b+240|0;u=-3.4028234663852886E38;v=0;while(1){w=+g[b+(v<<3)+64>>2];x=-w;y=-+g[b+(v<<3)+68>>
2];z=+g[b+(v<<3)>>2];A=+g[b+(v<<3)+4>>2];B=(z-l)*x+(A-m)*y;C=(z-n)*x+(A-o)*y;D=B<C?B:C;if(D>p)break;if(!(h*w+j*y>=0))if(D>u?!((x-+g[q>>2])*j+(y-+g[r>>2])*h<-.03490658849477768):0)E=8;else F=u;else if(D>u?!((x-+g[s>>2])*j+(y-+g[t>>2])*h<-.03490658849477768):0)E=8;else F=u;if((E|0)==8){E=0;c[a>>2]=2;c[e>>2]=v;g[f>>2]=D;F=D}G=v+1|0;if((G|0)<(k|0)){u=F;v=G}else{E=10;break}}if((E|0)==10){i=d;return}c[a>>2]=2;c[e>>2]=v;g[f>>2]=D;i=d;return}function ff(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=
i;i=i+256|0;df(f,a,b,c,d,e);i=f;return}function gf(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,R=0,S=0,T=0,U=0,V=0,W=0;j=i;i=i+96|0;k=j+92|0;l=j+88|0;m=j;n=j+80|0;o=j+56|0;p=j+32|0;q=j+24|0;r=b+60|0;c[r>>2]=0;s=+g[d+8>>2]+ +g[f+8>>2];c[k>>2]=0;t=+hf(k,d,e,f,h);if(t>s){i=j;return}c[l>>2]=0;u=+hf(l,f,h,d,e);if(u>s){i=j;return}if(u>t+5.000000237487257E-4){t=+g[h>>2];u=
+g[h+4>>2];v=+g[h+8>>2];w=+g[h+12>>2];x=+g[e>>2];y=+g[e+4>>2];z=+g[e+8>>2];A=+g[e+12>>2];B=c[l>>2]|0;c[b+56>>2]=2;C=t;D=u;E=w;F=v;G=A;H=z;I=x;J=y;K=B;L=1;M=f;N=d}else{y=+g[e>>2];x=+g[e+4>>2];z=+g[e+8>>2];A=+g[e+12>>2];v=+g[h>>2];w=+g[h+4>>2];u=+g[h+8>>2];t=+g[h+12>>2];h=c[k>>2]|0;c[b+56>>2]=1;C=y;D=x;E=A;F=z;G=t;H=u;I=v;J=w;K=h;L=0;M=d;N=f}f=c[N+148>>2]|0;w=+g[M+(K<<3)+84>>2];v=+g[M+(K<<3)+88>>2];u=E*w-F*v;t=F*w+E*v;v=G*u+H*t;w=G*t-H*u;if((f|0)>0){d=0;h=0;u=3.4028234663852886E38;while(1){t=v*+g[N+
(d<<3)+84>>2]+w*+g[N+(d<<3)+88>>2];k=t<u;e=k?d:h;d=d+1|0;if((d|0)==(f|0)){O=e;break}else{h=e;u=k?t:u}}}else O=0;h=O+1|0;d=(h|0)<(f|0)?h:0;u=+g[N+(O<<3)+20>>2];w=+g[N+(O<<3)+24>>2];v=+(I+(G*u-H*w));t=+(J+(H*u+G*w));h=m;g[h>>2]=v;g[h+4>>2]=t;h=K&255;f=m+8|0;a[f>>0]=h;a[f+1>>0]=O;a[f+2>>0]=1;a[f+3>>0]=0;t=+g[N+(d<<3)+20>>2];v=+g[N+(d<<3)+24>>2];w=+(I+(G*t-H*v));u=+(J+(H*t+G*v));N=m+12|0;g[N>>2]=w;g[N+4>>2]=u;N=m+20|0;a[N>>0]=h;a[N+1>>0]=d;a[N+2>>0]=1;a[N+3>>0]=0;N=K+1|0;d=(N|0)<(c[M+148>>2]|0)?N:0;N=
M+(K<<3)+20|0;u=+g[N>>2];w=+g[N+4>>2];N=M+(d<<3)+20|0;v=+g[N>>2];t=+g[N+4>>2];z=v-u;A=t-w;x=+Q(+(z*z+A*A));if(x<1.1920928955078125E-7){P=z;R=A}else{y=1/x;P=z*y;R=A*y}y=E*P-F*R;A=E*R+F*P;g[n>>2]=y;g[n+4>>2]=A;z=-y;x=C+(E*u-F*w);S=D+(F*u+E*w);T=x*A+S*z;g[q>>2]=z;g[q+4>>2]=-A;if((kf(o,m,q,s-(x*y+S*A),K)|0)<2){i=j;return}if((kf(p,o,n,s+((C+(E*v-F*t))*y+(D+(F*v+E*t))*A),d)|0)<2){i=j;return}E=+R;R=+-P;d=b+40|0;g[d>>2]=E;g[d+4>>2]=R;R=+((u+v)*.5);v=+((w+t)*.5);d=b+48|0;g[d>>2]=R;g[d+4>>2]=v;v=+g[p>>2];R=
+g[p+4>>2];d=!(A*v+R*z-T<=s);if(L<<24>>24==0){if(d)U=0;else{t=v-I;w=R-J;u=+(G*t+H*w);E=+(G*w-H*t);L=b;g[L>>2]=u;g[L+4>>2]=E;c[b+16>>2]=c[p+8>>2];U=1}E=+g[p+12>>2];u=+g[p+16>>2];if(!(A*E+u*z-T<=s))V=U;else{t=E-I;E=u-J;u=+(G*t+H*E);w=+(G*E-H*t);L=b+(U*20|0)|0;g[L>>2]=u;g[L+4>>2]=w;c[b+(U*20|0)+16>>2]=c[p+20>>2];V=U+1|0}}else{if(d)W=0;else{w=v-I;v=R-J;R=+(G*w+H*v);u=+(G*v-H*w);d=b;g[d>>2]=R;g[d+4>>2]=u;d=b+16|0;U=c[p+8>>2]|0;c[d>>2]=U;a[d>>0]=U>>>8;a[d+1>>0]=U;a[d+2>>0]=U>>>24;a[d+3>>0]=U>>>16;W=1}u=
+g[p+12>>2];R=+g[p+16>>2];if(!(A*u+R*z-T<=s))V=W;else{s=u-I;I=R-J;J=+(G*s+H*I);R=+(G*I-H*s);U=b+(W*20|0)|0;g[U>>2]=J;g[U+4>>2]=R;U=b+(W*20|0)+16|0;b=c[p+20>>2]|0;c[U>>2]=b;a[U>>0]=b>>>8;a[U+1>>0]=b;a[U+2>>0]=b>>>24;a[U+3>>0]=b>>>16;V=W+1|0}}c[r>>2]=V;i=j;return}function hf(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;h=i;j=c[b+148>>2]|0;k=c[e+148>>2]|0;l=+g[f+12>>2];m=+g[d+8>>2];n=+g[f+8>>2];o=+g[d+12>>2];p=l*m-n*o;q=
m*n+l*o;o=+g[d>>2]-+g[f>>2];m=+g[d+4>>2]-+g[f+4>>2];r=l*o+n*m;s=l*m-n*o;if((j|0)<=0){t=0;u=-3.4028234663852886E38;c[a>>2]=t;i=h;return+u}if((k|0)>0){v=0;w=0;x=-3.4028234663852886E38}else{f=0;d=0;o=-3.4028234663852886E38;while(1){y=o<3.4028234663852886E38;n=y?3.4028234663852886E38:o;z=y?d:f;d=d+1|0;if((d|0)==(j|0)){t=z;u=n;break}else{f=z;o=n}}c[a>>2]=t;i=h;return+u}while(1){o=+g[b+(w<<3)+84>>2];n=+g[b+(w<<3)+88>>2];m=q*o-p*n;l=p*o+q*n;n=+g[b+(w<<3)+20>>2];o=+g[b+(w<<3)+24>>2];A=r+(q*n-p*o);B=s+(p*
n+q*o);f=0;o=3.4028234663852886E38;do{n=m*(+g[e+(f<<3)+20>>2]-A)+l*(+g[e+(f<<3)+24>>2]-B);o=n<o?n:o;f=f+1|0}while((f|0)!=(k|0));f=o>x;B=f?o:x;d=f?w:v;w=w+1|0;if((w|0)==(j|0)){t=d;u=B;break}else{v=d;x=B}}c[a>>2]=t;i=h;return+u}function jf(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=+e;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,H=0;j=i;k=b+60|0;if((c[k>>2]|0)==0){i=j;return}l=c[b+56>>2]|0;if((l|0)==2){m=f+12|0;n=+g[m>>2];o=+g[b+40>>2];p=f+8|0;
q=+g[p>>2];r=+g[b+44>>2];s=n*o-q*r;t=o*q+n*r;r=+s;n=+t;u=a;g[u>>2]=r;g[u+4>>2]=n;n=+g[m>>2];r=+g[b+48>>2];q=+g[p>>2];o=+g[b+52>>2];v=+g[f>>2]+(n*r-q*o);w=r*q+n*o+ +g[f+4>>2];if((c[k>>2]|0)>0){p=d+12|0;m=d+8|0;u=d+4|0;x=a+4|0;o=s;n=t;y=0;while(1){q=+g[p>>2];r=+g[b+(y*20|0)>>2];z=+g[m>>2];A=+g[b+(y*20|0)+4>>2];B=+g[d>>2]+(q*r-z*A);C=r*z+q*A+ +g[u>>2];A=h-(o*(B-v)+(C-w)*n);q=B+o*A;z=C+n*A;A=B-o*e;B=C-n*e;C=+((A+q)*.5);r=+((B+z)*.5);D=a+(y<<3)+8|0;g[D>>2]=C;g[D+4>>2]=r;g[a+(y<<2)+24>>2]=+g[a>>2]*(A-q)+
+g[x>>2]*(B-z);y=y+1|0;z=+g[a>>2];B=+g[x>>2];if((y|0)>=(c[k>>2]|0)){E=z;F=B;break}else{o=z;n=B}}}else{E=s;F=t}t=+-E;E=+-F;y=a;g[y>>2]=t;g[y+4>>2]=E;i=j;return}else if((l|0)==0){g[a>>2]=1;y=a+4|0;g[y>>2]=0;E=+g[d+12>>2];t=+g[b+48>>2];F=+g[d+8>>2];s=+g[b+52>>2];n=+g[d>>2]+(E*t-F*s);o=t*F+E*s+ +g[d+4>>2];s=+g[f+12>>2];E=+g[b>>2];F=+g[f+8>>2];t=+g[b+4>>2];w=+g[f>>2]+(s*E-F*t);v=E*F+s*t+ +g[f+4>>2];t=n-w;s=o-v;if(t*t+s*s>1.4210854715202004E-14){s=w-n;t=v-o;F=+s;E=+t;x=a;g[x>>2]=F;g[x+4>>2]=E;E=+Q(+(s*
s+t*t));if(E<1.1920928955078125E-7){G=s;H=t}else{F=1/E;E=s*F;g[a>>2]=E;s=t*F;g[y>>2]=s;G=E;H=s}}else{G=1;H=0}s=n+G*e;n=o+H*e;o=w-G*h;w=v-H*h;v=+((s+o)*.5);E=+((n+w)*.5);y=a+8|0;g[y>>2]=v;g[y+4>>2]=E;g[a+24>>2]=G*(o-s)+H*(w-n);i=j;return}else if((l|0)==1){l=d+12|0;n=+g[l>>2];w=+g[b+40>>2];y=d+8|0;H=+g[y>>2];s=+g[b+44>>2];o=n*w-H*s;G=w*H+n*s;s=+o;n=+G;x=a;g[x>>2]=s;g[x+4>>2]=n;n=+g[l>>2];s=+g[b+48>>2];H=+g[y>>2];w=+g[b+52>>2];E=+g[d>>2]+(n*s-H*w);v=s*H+n*w+ +g[d+4>>2];if((c[k>>2]|0)<=0){i=j;return}d=
f+12|0;y=f+8|0;l=f+4|0;x=a+4|0;w=o;o=G;u=0;while(1){G=+g[d>>2];n=+g[b+(u*20|0)>>2];H=+g[y>>2];s=+g[b+(u*20|0)+4>>2];F=+g[f>>2]+(G*n-H*s);t=n*H+G*s+ +g[l>>2];s=e-(w*(F-E)+(t-v)*o);G=F+w*s;H=t+o*s;s=F-w*h;F=t-o*h;t=+((s+G)*.5);n=+((F+H)*.5);m=a+(u<<3)+8|0;g[m>>2]=t;g[m+4>>2]=n;g[a+(u<<2)+24>>2]=+g[a>>2]*(s-G)+ +g[x>>2]*(F-H);m=u+1|0;if((m|0)>=(c[k>>2]|0))break;w=+g[a>>2];o=+g[x>>2];u=m}i=j;return}else{i=j;return}}function kf(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=+f;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;j=i;k=+g[e>>2];l=+g[e+4>>2];e=d+4|0;m=k*+g[d>>2]+l*+g[e>>2]-f;n=d+12|0;o=d+16|0;p=k*+g[n>>2]+l*+g[o>>2]-f;if(!(m<=0))q=0;else{c[b+0>>2]=c[d+0>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];q=1}if(!(p<=0))r=q;else{s=q+1|0;t=b+(q*12|0)|0;c[t+0>>2]=c[n+0>>2];c[t+4>>2]=c[n+4>>2];c[t+8>>2]=c[n+8>>2];r=s}if(!(m*p<0)){u=r;i=j;return u|0}f=m/(m-p);p=+g[d>>2];m=+g[e>>2];l=+(p+f*(+g[n>>2]-p));p=+(m+f*(+g[o>>2]-m));o=b+(r*12|0)|0;g[o>>2]=l;g[o+4>>2]=p;o=b+(r*12|0)+8|0;a[o>>0]=h;a[o+1>>0]=a[d+
9>>0]|0;a[o+2>>0]=0;a[o+3>>0]=1;u=r+1|0;i=j;return u|0}function lf(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;l=i;i=i+128|0;m=l+36|0;n=l+24|0;o=l;c[m+16>>2]=0;c[m+20>>2]=0;g[m+24>>2]=0;c[m+44>>2]=0;c[m+48>>2]=0;g[m+52>>2]=0;be(m,d,e);be(m+28|0,f,h);h=m+56|0;c[h+0>>2]=c[j+0>>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=m+72|0;c[j+0>>2]=c[k+0>>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];a[m+88>>0]=1;b[n+4>>1]=0;de(o,n,m);i=l;return+g[o+
16>>2]<1.1920928955078125E-6|0}function mf(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,j=0;h=i;j=a+40|0;c[j>>2]=b;c[a+44>>2]=d;c[a+48>>2]=e;c[a+28>>2]=0;c[a+36>>2]=0;c[a+32>>2]=0;c[a>>2]=f;c[a+4>>2]=g;c[a+8>>2]=Ym(f,b<<2)|0;c[a+12>>2]=Ym(c[a>>2]|0,d<<2)|0;c[a+16>>2]=Ym(c[a>>2]|0,e<<2)|0;c[a+24>>2]=Ym(c[a>>2]|0,(c[j>>2]|0)*12|0)|0;c[a+20>>2]=Ym(c[a>>2]|0,(c[j>>2]|0)*12|0)|0;i=h;return}function nf(a){a=a|0;var b=0;b=i;_m(c[a>>2]|0,c[a+20>>2]|0);_m(c[a>>2]|0,c[a+24>>2]|0);_m(c[a>>2]|0,c[a+
16>>2]|0);_m(c[a>>2]|0,c[a+12>>2]|0);_m(c[a>>2]|0,c[a+8>>2]|0);i=b;return}function of(d,e,f,h,j){d=d|0;e=e|0;f=f|0;h=h|0;j=j|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,N=0,O=0,P=0,R=0,U=0,V=0,W=0,X=0,Y=0;l=i;i=i+176|0;m=l+148|0;n=l;o=l+112|0;p=l+64|0;q=l+8|0;Km(n);r=+g[f>>2];s=d+28|0;if((c[s>>2]|0)>0){t=d+8|0;u=h+4|0;v=d+20|0;w=d+24|0;x=0;do{y=c[(c[t>>2]|0)+(x<<2)>>2]|0;z=y+60|0;A=c[z>>2]|0;B=c[z+4>>2]|0;C=+g[y+72>>2];z=y+
80|0;D=+g[z>>2];E=+g[z+4>>2];F=+g[y+88>>2];z=y+52|0;c[z>>2]=A;c[z+4>>2]=B;g[y+68>>2]=C;if((c[y>>2]|0)==2){G=+g[y+156>>2];H=+g[y+136>>2];I=1/(r*+g[y+148>>2]+1);J=(D+r*(G*+g[h>>2]+H*+g[y+92>>2]))*I;K=(E+r*(G*+g[u>>2]+H*+g[y+96>>2]))*I;L=(F+r*+g[y+144>>2]*+g[y+100>>2])*(1/(r*+g[y+152>>2]+1))}else{J=D;K=E;L=F}y=(c[v>>2]|0)+(x*12|0)|0;c[y>>2]=A;c[y+4>>2]=B;g[(c[v>>2]|0)+(x*12|0)+8>>2]=C;C=+J;F=+K;B=(c[w>>2]|0)+(x*12|0)|0;g[B>>2]=C;g[B+4>>2]=F;g[(c[w>>2]|0)+(x*12|0)+8>>2]=L;x=x+1|0}while((x|0)<(c[s>>2]|
0));M=w;N=v}else{M=d+24|0;N=d+20|0}c[o+0>>2]=c[f+0>>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];c[o+16>>2]=c[f+16>>2];c[o+20>>2]=c[f+20>>2];c[o+24>>2]=c[f+24>>2];v=c[N>>2]|0;c[o+28>>2]=v;w=c[M>>2]|0;c[o+32>>2]=w;c[p+0>>2]=c[f+0>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];c[p+16>>2]=c[f+16>>2];c[p+20>>2]=c[f+20>>2];c[p+24>>2]=c[f+24>>2];x=d+12|0;c[p+28>>2]=c[x>>2];u=d+36|0;c[p+32>>2]=c[u>>2];c[p+36>>2]=v;c[p+40>>2]=w;c[p+44>>2]=c[d>>2];Ki(q,p);Mi(q);if((a[f+
24>>0]|0)!=0)Ni(q);p=d+32|0;if((c[p>>2]|0)>0){w=d+16|0;v=0;do{h=c[(c[w>>2]|0)+(v<<2)>>2]|0;gb[c[(c[h>>2]|0)+32>>2]&63](h,o);v=v+1|0}while((v|0)<(c[p>>2]|0))}g[e+12>>2]=+Mm(n);v=f+12|0;if((c[v>>2]|0)>0){w=d+16|0;h=0;do{if((c[p>>2]|0)>0){t=0;do{B=c[(c[w>>2]|0)+(t<<2)>>2]|0;gb[c[(c[B>>2]|0)+36>>2]&63](B,o);t=t+1|0}while((t|0)<(c[p>>2]|0))}Oi(q);h=h+1|0}while((h|0)<(c[v>>2]|0))}Pi(q);g[e+16>>2]=+Mm(n);if((c[s>>2]|0)>0){v=c[M>>2]|0;h=0;do{w=c[N>>2]|0;t=w+(h*12|0)|0;B=t;L=+g[B>>2];K=+g[B+4>>2];J=+g[w+(h*
12|0)+8>>2];w=v+(h*12|0)|0;F=+g[w>>2];C=+g[w+4>>2];E=+g[v+(h*12|0)+8>>2];D=r*F;I=r*C;H=D*D+I*I;if(H>4){I=2/+Q(+H);O=F*I;P=C*I}else{O=F;P=C}C=r*E;if(C*C>2.4674012660980225){if(C>0)R=C;else R=-C;U=E*(1.5707963705062866/R)}else U=E;E=+(L+r*O);L=+(K+r*P);w=t;g[w>>2]=E;g[w+4>>2]=L;g[(c[N>>2]|0)+(h*12|0)+8>>2]=J+r*U;J=+O;L=+P;w=(c[M>>2]|0)+(h*12|0)|0;g[w>>2]=J;g[w+4>>2]=L;v=c[M>>2]|0;g[v+(h*12|0)+8>>2]=U;h=h+1|0}while((h|0)<(c[s>>2]|0))}h=f+16|0;a:do if((c[h>>2]|0)>0){f=d+16|0;v=0;while(1){w=Qi(q)|0;if((c[p>>
2]|0)>0){t=0;B=1;while(1){y=c[(c[f>>2]|0)+(t<<2)>>2]|0;A=B&(nb[c[(c[y>>2]|0)+40>>2]&31](y,o)|0);t=t+1|0;if((t|0)>=(c[p>>2]|0)){V=A;break}else B=A}}else V=1;v=v+1|0;if(w&V){W=0;break a}if((v|0)>=(c[h>>2]|0)){W=1;break}}}else W=1;while(0);if((c[s>>2]|0)>0){h=d+8|0;V=0;do{p=c[(c[h>>2]|0)+(V<<2)>>2]|0;o=(c[N>>2]|0)+(V*12|0)|0;v=c[o>>2]|0;f=c[o+4>>2]|0;o=p+60|0;c[o>>2]=v;c[o+4>>2]=f;U=+g[(c[N>>2]|0)+(V*12|0)+8>>2];g[p+72>>2]=U;o=(c[M>>2]|0)+(V*12|0)|0;B=c[o+4>>2]|0;t=p+80|0;c[t>>2]=c[o>>2];c[t+4>>2]=B;
g[p+88>>2]=+g[(c[M>>2]|0)+(V*12|0)+8>>2];P=+T(+U);g[p+20>>2]=P;O=+S(+U);g[p+24>>2]=O;U=+g[p+44>>2];R=+g[p+48>>2];L=(c[k>>2]=v,+g[k>>2])-(O*U-P*R);J=(c[k>>2]=f,+g[k>>2])-(P*U+O*R);R=+L;L=+J;f=p+12|0;g[f>>2]=R;g[f+4>>2]=L;V=V+1|0}while((V|0)<(c[s>>2]|0))}g[e+20>>2]=+Mm(n);n=c[q+44>>2]|0;e=d+4|0;if((c[e>>2]|0)!=0?(c[u>>2]|0)>0:0){V=m+16|0;M=0;do{N=c[(c[x>>2]|0)+(M<<2)>>2]|0;h=c[n+(M*156|0)+148>>2]|0;c[V>>2]=h;if((h|0)>0){f=0;do{g[m+(f<<2)>>2]=+g[n+(M*156|0)+(f*36|0)+16>>2];g[m+(f<<2)+8>>2]=+g[n+(M*156|
0)+(f*36|0)+20>>2];f=f+1|0}while((f|0)!=(h|0))}h=c[e>>2]|0;ib[c[(c[h>>2]|0)+36>>2]&7](h,N,m);M=M+1|0}while((M|0)<(c[u>>2]|0))}if(!j){Li(q);i=l;return}j=c[s>>2]|0;u=(j|0)>0;if(u){M=c[d+8>>2]|0;m=0;L=3.4028234663852886E38;while(1){e=c[M+(m<<2)>>2]|0;do if((c[e>>2]|0)==0)X=L;else{if((!((b[e+4>>1]&4)==0)?(R=+g[e+88>>2],!(R*R>.001218469929881394)):0)?(R=+g[e+80>>2],J=+g[e+84>>2],!(R*R+J*J>9.999999747378752E-5)):0){n=e+160|0;J=r+ +g[n>>2];g[n>>2]=J;X=L<J?L:J;break}g[e+160>>2]=0;X=0}while(0);m=m+1|0;if((m|
0)>=(j|0)){Y=X;break}else L=X}}else Y=3.4028234663852886E38;if(!(Y>=.5)|W|u^1){Li(q);i=l;return}u=d+8|0;d=0;do{W=c[(c[u>>2]|0)+(d<<2)>>2]|0;j=W+4|0;b[j>>1]=b[j>>1]&65533;g[W+160>>2]=0;j=W+80|0;c[j+0>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;c[j+16>>2]=0;c[j+20>>2]=0;d=d+1|0}while((d|0)<(c[s>>2]|0));Li(q);i=l;return}function pf(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,G=0,H=0,I=0,J=0;f=i;i=i+128|0;h=f+
104|0;j=f+56|0;k=f;l=a+28|0;if((c[l>>2]|0)>0){m=a+8|0;n=a+20|0;o=a+24|0;p=0;do{q=c[(c[m>>2]|0)+(p<<2)>>2]|0;r=q+60|0;s=c[r+4>>2]|0;t=(c[n>>2]|0)+(p*12|0)|0;c[t>>2]=c[r>>2];c[t+4>>2]=s;g[(c[n>>2]|0)+(p*12|0)+8>>2]=+g[q+72>>2];s=q+80|0;t=c[s+4>>2]|0;r=(c[o>>2]|0)+(p*12|0)|0;c[r>>2]=c[s>>2];c[r+4>>2]=t;t=c[o>>2]|0;g[t+(p*12|0)+8>>2]=+g[q+88>>2];p=p+1|0}while((p|0)<(c[l>>2]|0));u=n;v=t}else{u=a+20|0;v=c[a+24>>2]|0}n=a+12|0;c[j+28>>2]=c[n>>2];p=a+36|0;c[j+32>>2]=c[p>>2];c[j+44>>2]=c[a>>2];c[j+0>>2]=c[b+
0>>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];c[j+16>>2]=c[b+16>>2];c[j+20>>2]=c[b+20>>2];c[j+24>>2]=c[b+24>>2];c[j+36>>2]=c[u>>2];o=a+24|0;c[j+40>>2]=v;Ki(k,j);j=b+16|0;a:do if((c[j>>2]|0)>0){v=0;do{v=v+1|0;if(Si(k,d,e)|0)break a}while((v|0)<(c[j>>2]|0))}while(0);j=a+8|0;v=(c[u>>2]|0)+(d*12|0)|0;m=c[v+4>>2]|0;t=(c[(c[j>>2]|0)+(d<<2)>>2]|0)+52|0;c[t>>2]=c[v>>2];c[t+4>>2]=m;m=c[u>>2]|0;t=c[j>>2]|0;g[(c[t+(d<<2)>>2]|0)+68>>2]=+g[m+(d*12|0)+8>>2];d=m+(e*12|0)|0;m=c[d+4>>2]|0;v=
(c[t+(e<<2)>>2]|0)+52|0;c[v>>2]=c[d>>2];c[v+4>>2]=m;g[(c[(c[j>>2]|0)+(e<<2)>>2]|0)+68>>2]=+g[(c[u>>2]|0)+(e*12|0)+8>>2];Mi(k);e=b+12|0;if((c[e>>2]|0)>0){m=0;do{Oi(k);m=m+1|0}while((m|0)<(c[e>>2]|0))}w=+g[b>>2];if((c[l>>2]|0)>0){b=0;do{e=c[u>>2]|0;m=e+(b*12|0)|0;v=m;x=+g[v>>2];y=+g[v+4>>2];z=+g[e+(b*12|0)+8>>2];e=c[o>>2]|0;v=e+(b*12|0)|0;A=+g[v>>2];B=+g[v+4>>2];C=+g[e+(b*12|0)+8>>2];D=w*A;E=w*B;F=D*D+E*E;if(F>4){E=2/+Q(+F);G=A*E;H=B*E}else{G=A;H=B}B=w*C;if(B*B>2.4674012660980225){if(B>0)I=B;else I=
-B;J=C*(1.5707963705062866/I)}else J=C;C=x+w*G;x=y+w*H;y=z+w*J;z=+C;B=+x;e=m;g[e>>2]=z;g[e+4>>2]=B;g[(c[u>>2]|0)+(b*12|0)+8>>2]=y;A=+G;E=+H;e=(c[o>>2]|0)+(b*12|0)|0;g[e>>2]=A;g[e+4>>2]=E;g[(c[o>>2]|0)+(b*12|0)+8>>2]=J;e=c[(c[j>>2]|0)+(b<<2)>>2]|0;m=e+60|0;g[m>>2]=z;g[m+4>>2]=B;g[e+72>>2]=y;m=e+80|0;g[m>>2]=A;g[m+4>>2]=E;g[e+88>>2]=J;E=+T(+y);g[e+20>>2]=E;A=+S(+y);g[e+24>>2]=A;y=+g[e+44>>2];B=+g[e+48>>2];z=+(C-(A*y-E*B));C=+(x-(E*y+A*B));m=e+12|0;g[m>>2]=z;g[m+4>>2]=C;b=b+1|0}while((b|0)<(c[l>>2]|
0))}l=c[k+44>>2]|0;b=a+4|0;if((c[b>>2]|0)==0){Li(k);i=f;return}if((c[p>>2]|0)<=0){Li(k);i=f;return}a=h+16|0;j=0;do{o=c[(c[n>>2]|0)+(j<<2)>>2]|0;u=c[l+(j*156|0)+148>>2]|0;c[a>>2]=u;if((u|0)>0){m=0;do{g[h+(m<<2)>>2]=+g[l+(j*156|0)+(m*36|0)+16>>2];g[h+(m<<2)+8>>2]=+g[l+(j*156|0)+(m*36|0)+20>>2];m=m+1|0}while((m|0)!=(u|0))}u=c[b>>2]|0;ib[c[(c[u>>2]|0)+36>>2]&7](u,o,h);j=j+1|0}while((j|0)<(c[p>>2]|0));Li(k);i=f;return}function qf(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0;a=i;e=b[c+36>>1]|0;if(!(e<<16>>16==
0?1:e<<16>>16!=(b[d+36>>1]|0))){f=e<<16>>16>0;i=a;return f|0}if((b[d+32>>1]&b[c+34>>1])<<16>>16==0){f=0;i=a;return f|0}f=(b[d+34>>1]&b[c+32>>1])<<16>>16!=0;i=a;return f|0}function rf(a){a=a|0;return}function sf(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function tf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function uf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function vf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;d=i;vh(a,b);c[a>>2]=904;e=b+20|0;f=c[e>>2]|0;h=c[e+4>>2]|0;e=a+76|0;c[e>>
2]=f;c[e+4>>2]=h;e=c[a+52>>2]|0;j=(c[k>>2]=f,+g[k>>2])-+g[e+12>>2];l=(c[k>>2]=h,+g[k>>2])-+g[e+16>>2];m=+g[e+24>>2];n=+g[e+20>>2];o=+(j*m+l*n);p=+(m*l-j*n);e=a+68|0;g[e>>2]=o;g[e+4>>2]=p;g[a+104>>2]=+g[b+28>>2];g[a+96>>2]=0;g[a+100>>2]=0;g[a+84>>2]=+g[b+32>>2];g[a+88>>2]=+g[b+36>>2];g[a+92>>2]=0;g[a+108>>2]=0;i=d;return}function wf(a,d){a=a|0;d=d|0;var e=0,f=0,h=0,j=0,k=0;e=i;f=c[a+52>>2]|0;h=f+4|0;j=b[h>>1]|0;if((j&2)==0?(k=j&65535,(k&2|0)==0):0){b[h>>1]=k|2;g[f+160>>2]=0}f=d;d=c[f+4>>2]|0;k=a+76|
0;c[k>>2]=c[f>>2];c[k+4>>2]=d;i=e;return}function xf(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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;e=i;f=c[b+52>>2]|0;h=c[f+8>>2]|0;j=b+116|0;c[j>>2]=h;l=f+44|0;m=c[l>>2]|0;n=c[l+4>>2]|0;l=b+128|0;c[l>>2]=m;c[l+4>>2]=n;o=+g[f+136>>2];g[b+136>>2]=o;p=+g[f+144>>2];g[b+140>>2]=p;l=c[d+28>>2]|0;q=l+(h*12|0)|0;r=+g[q>>2];s=+g[q+4>>2];t=+g[l+(h*12|0)+8>>2];l=d+32|0;q=c[l>>2]|
0;u=q+(h*12|0)|0;v=+g[u>>2];w=+g[u+4>>2];x=+g[q+(h*12|0)+8>>2];y=+T(+t);z=+S(+t);t=+g[f+132>>2];A=+g[b+84>>2]*6.2831854820251465;B=+g[d>>2];C=B*t*A*A;D=B*(A*t*2*+g[b+88>>2]+C);t=(c[k>>2]=m,+g[k>>2]);A=(c[k>>2]=n,+g[k>>2]);if(D!=0)E=1/D;else E=D;g[b+108>>2]=E;D=C*E;g[b+92>>2]=D;C=+g[b+68>>2]-t;t=+g[b+72>>2]-A;A=z*C-y*t;B=y*C+z*t;t=+A;z=+B;n=b+120|0;g[n>>2]=t;g[n+4>>2]=z;z=E+(o+B*p*B);t=p*A;C=B*t;y=E+(o+A*t);t=z*y-C*C;if(t!=0)F=1/t;else F=t;t=C*F;g[b+144>>2]=y*F;g[b+148>>2]=t;g[b+152>>2]=t;g[b+156>>
2]=z*F;n=b+160|0;F=r+A-+g[b+76>>2];r=s+B-+g[b+80>>2];s=+F;z=+r;m=n;g[m>>2]=s;g[m+4>>2]=z;g[n>>2]=D*F;g[b+164>>2]=D*r;r=x*.9800000190734863;n=b+96|0;if((a[d+24>>0]|0)==0){g[n>>2]=0;g[b+100>>2]=0;G=v;H=w;I=r;J=c[l>>2]|0;K=J+(h*12|0)|0;L=+G;M=+H;N=K;O=N;g[O>>2]=L;P=N+4|0;Q=P;g[Q>>2]=M;R=c[j>>2]|0;U=c[l>>2]|0;V=U+(R*12|0)+8|0;g[V>>2]=I;i=e;return}else{x=+g[d+8>>2];D=x*+g[n>>2];g[n>>2]=D;n=b+100|0;F=x*+g[n>>2];g[n>>2]=F;G=v+o*D;H=w+F*o;I=r+p*(F*A-D*B);J=c[l>>2]|0;K=J+(h*12|0)|0;L=+G;M=+H;N=K;O=N;g[O>>
2]=L;P=N+4|0;Q=P;g[Q>>2]=M;R=c[j>>2]|0;U=c[l>>2]|0;V=U+(R*12|0)+8|0;g[V>>2]=I;i=e;return}}function yf(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;d=i;e=a+116|0;f=c[e>>2]|0;h=b+32|0;j=c[h>>2]|0;k=j+(f*12|0)|0;l=k;m=+g[l>>2];n=+g[l+4>>2];o=+g[j+(f*12|0)+8>>2];p=+g[a+124>>2];q=+g[a+120>>2];r=+g[a+108>>2];f=a+96|0;s=+g[f>>2];j=a+100|0;t=+g[j>>2];u=-(m-o*p+ +g[a+160>>2]+r*s);v=-(n+o*q+ +g[a+164>>2]+r*t);r=+g[a+148>>2]*u+ +g[a+156>>2]*v;l=
f;w=+g[l>>2];x=+g[l+4>>2];y=s+(+g[a+144>>2]*u+ +g[a+152>>2]*v);g[f>>2]=y;v=r+t;g[j>>2]=v;t=+g[b>>2]*+g[a+104>>2];r=v*v+y*y;if(r>t*t){u=t/+Q(+r);r=y*u;g[f>>2]=r;t=u*v;g[j>>2]=t;z=r;A=t}else{z=y;A=v}v=z-w;w=A-x;x=+g[a+136>>2];A=o+ +g[a+140>>2]*(w*q-v*p);p=+(m+v*x);v=+(n+w*x);a=k;g[a>>2]=p;g[a+4>>2]=v;g[(c[h>>2]|0)+((c[e>>2]|0)*12|0)+8>>2]=A;i=d;return}function zf(a,b){a=a|0;b=b|0;return 1}function Af(a,b){a=a|0;b=b|0;var d=0,e=0;d=b+76|0;b=c[d+4>>2]|0;e=a;c[e>>2]=c[d>>2];c[e+4>>2]=b;return}function Bf(a,
b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+52>>2]|0;e=+g[d+24>>2];f=+g[b+68>>2];h=+g[d+20>>2];i=+g[b+72>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function Cf(a,b,c){a=a|0;b=b|0;c=+c;var d=0;d=+g[b+100>>2]*c;g[a>>2]=+g[b+96>>2]*c;g[a+4>>2]=d;return}function Df(a,b){a=a|0;b=+b;return+(b*0)}function Ef(a,b){a=a|0;b=b|0;var c=0;c=a+76|0;g[c>>2]=+g[c>>2]-+g[b>>2];c=a+80|0;g[c>>2]=+g[c>>2]-+g[b+4>>2];return}function Ff(a){a=a|0;a=i;i=i+16|0;Rm(1008,a);i=a;return}
function Gf(a){a=a|0;return}function Hf(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function If(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;e=i;c[a+8>>2]=b;c[a+12>>2]=d;f=d+12|0;h=+g[f>>2];j=h-+g[b+12>>2];h=+g[f+4>>2]-+g[b+16>>2];k=+g[b+24>>2];l=+g[b+20>>2];m=+(j*k+h*l);n=+(k*h-j*l);f=a+20|0;g[f>>2]=m;g[f+4>>2]=n;g[a+28>>2]=+g[d+72>>2]-+g[b+72>>2];i=e;return}function cm(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,G=0,H=0,I=0,J=0,K=0,L=0;f=i;h=a+4|0;j=c[(c[h>>2]|0)+88>>2]|0;k=c[j+(d<<2)>>2]|c[j+(b<<2)>>2]|c[j+(e<<2)>>2];if((k&16|0)==0){i=f;return}j=c[a+8>>2]|0;if(!(lb[c[(c[j>>2]|0)+16>>2]&7](j,b,d,e)|0)){i=f;return}j=c[h>>2]|0;h=c[j+96>>2]|0;a=h+(b<<3)|0;l=+g[a>>2];m=h+(d<<3)|0;n=+g[m>>2];o=l-n;p=h+(b<<3)+4|0;q=+g[p>>2];r=h+(d<<3)+4|0;s=+g[r>>2];t=q-s;u=h+(e<<3)|0;v=+g[u>>2];w=n-v;x=h+(e<<3)+4|0;n=+g[x>>2];y=s-n;s=v-l;l=n-q;q=+g[j+40>>2]*4;if(o*o+t*t>q){i=f;return}if(w*w+y*y>q){i=f;return}if(s*
s+l*l>q){i=f;return}h=c[j+144>>2]|0;z=c[h+(b<<2)>>2]|0;A=c[h+(d<<2)>>2]|0;B=c[h+(e<<2)>>2]|0;h=j+264|0;C=j+268|0;D=c[C>>2]|0;E=j+272|0;F=c[E>>2]|0;if((D|0)>=(F|0)?(G=(F|0)==0?256:F<<1,(F|0)<(G|0)):0){F=j+276|0;j=Em(c[F>>2]|0,G*60|0)|0;H=c[h>>2]|0;if((H|0)!=0){An(j|0,H|0,(c[C>>2]|0)*60|0)|0;Fm(c[F>>2]|0,c[h>>2]|0,(c[E>>2]|0)*60|0)}c[E>>2]=G;c[h>>2]=j;I=c[C>>2]|0}else I=D;c[C>>2]=I+1;C=c[h>>2]|0;c[C+(I*60|0)>>2]=b;c[C+(I*60|0)+4>>2]=d;c[C+(I*60|0)+8>>2]=e;c[C+(I*60|0)+12>>2]=k;if((z|0)==0)J=1;else J=
+g[z+16>>2];if((A|0)==0)K=1;else K=+g[A+16>>2];q=J<K?J:K;if((B|0)==0)L=1;else L=+g[B+16>>2];g[C+(I*60|0)+16>>2]=q<L?q:L;L=+g[a>>2];q=+g[p>>2];K=(L+ +g[m>>2]+ +g[u>>2])*.3333333432674408;J=(q+ +g[r>>2]+ +g[x>>2])*.3333333432674408;n=+(L-K);L=+(q-J);B=C+(I*60|0)+20|0;g[B>>2]=n;g[B+4>>2]=L;L=+(+g[m>>2]-K);n=+(+g[r>>2]-J);B=C+(I*60|0)+28|0;g[B>>2]=L;g[B+4>>2]=n;n=+(+g[u>>2]-K);K=+(+g[x>>2]-J);B=C+(I*60|0)+36|0;g[B>>2]=n;g[B+4>>2]=K;g[C+(I*60|0)+44>>2]=-(o*s+t*l);g[C+(I*60|0)+48>>2]=-(o*w+t*y);g[C+(I*
60|0)+52>>2]=-(w*s+y*l);l=+g[a>>2];y=+g[r>>2];s=+g[p>>2];w=+g[m>>2];t=+g[x>>2];o=+g[u>>2];g[C+(I*60|0)+56>>2]=s*o-l*t+(l*y-s*w+(w*t-y*o));i=f;return}function dm(a){a=a|0;return}function em(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function fm(a,b){a=a|0;b=b|0;return(c[(c[a+4>>2]|0)+(b<<2)>>2]&4096|0)!=0|0}function gm(a,b,c){a=a|0;b=b|0;c=c|0;return 1}function hm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function im(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function jm(a,b){a=a|0;b=b|0;return 1}function km(a){a=
a|0;return}function lm(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function mm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;f=c[a+4>>2]|0;a=(f|0)<=(b|0);b=(f|0)>(d|0);if(a|b){i=e;return b&a|0}else{i=e;return 1}return 0}function nm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;g=c[a+4>>2]|0;a=(g|0)>(b|0);b=(g|0)>(d|0);if(a|b|(g|0)>(e|0)){i=f;return(g|0)<=(e|0)|a&b^1|0}else{i=f;return 0}return 0}function om(a){a=a|0;return}function pm(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function qm(a,b){a=a|0;b=b|0;return 0}
function rm(a){a=a|0;return 1}function sm(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;e=i;f=a+16|0;if((c[f>>2]|0)<=0){g=0;i=e;return g|0}h=a+12|0;a=0;while(1){j=c[(c[h>>2]|0)+(a<<2)>>2]|0;a=a+1|0;if(hb[c[(c[j>>2]|0)+16>>2]&15](j,b,d)|0){g=1;k=5;break}if((a|0)>=(c[f>>2]|0)){g=0;k=5;break}}if((k|0)==5){i=e;return g|0}return 0}function tm(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}function um(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return 0}function vm(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;e=i;i=i+16|0;f=e;g[b>>2]=3.4028234663852886E38;h=b+4|0;g[h>>2]=3.4028234663852886E38;g[b+8>>2]=-3.4028234663852886E38;j=b+12|0;g[j>>2]=-3.4028234663852886E38;k=a+16|0;if((c[k>>2]|0)<=0){i=e;return}l=a+12|0;a=f+4|0;m=b+8|0;n=f+8|0;o=f+12|0;p=0;do{q=c[(c[l>>2]|0)+(p<<2)>>2]|0;r=bb[c[(c[q>>2]|0)+12>>2]&7](q)|0;if((r|0)>0){q=0;do{s=c[(c[l>>2]|0)+(p<<2)>>2]|0;pb[c[(c[s>>2]|0)+28>>2]&31](s,f,d,q);t=+g[b>>2];u=+g[f>>2];v=+g[h>>
2];w=+g[a>>2];x=+(t<u?t:u);u=+(v<w?v:w);s=b;g[s>>2]=x;g[s+4>>2]=u;u=+g[m>>2];x=+g[n>>2];w=+g[j>>2];v=+g[o>>2];t=+(u>x?u:x);x=+(w>v?w:v);s=m;g[s>>2]=t;g[s+4>>2]=x;q=q+1|0}while((q|0)!=(r|0))}p=p+1|0}while((p|0)<(c[k>>2]|0));i=e;return}function wm(a,b,c){a=a|0;b=b|0;c=+c;return}function xm(a){a=a|0;return}function ym(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function zm(a,b){a=a|0;b=b|0;return 0}function Am(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;g=b+4|0;if((c[g>>2]|0)!=(d|0)){h=0;i=f;return h|
0}j=c[b+8>>2]|0;if(!(hb[c[(c[j>>2]|0)+16>>2]&15](j,b+12|0,(c[d+96>>2]|0)+(e<<3)|0)|0)){h=1;i=f;return h|0}d=c[g>>2]|0;Ak(d,e,c[(c[d+88>>2]|0)+(e<<2)>>2]|((a[b+28>>0]|0)!=0?514:2));e=b+32|0;c[e>>2]=(c[e>>2]|0)+1;h=1;i=f;return h|0}function Bm(a,b){a=a|0;b=b|0;var d=0,e=0;d=b+4|0;c[(c[b>>2]|0)+4>>2]=c[d>>2];c[c[d>>2]>>2]=c[b>>2];c[d>>2]=b;c[b>>2]=b;e=a+12|0;c[d>>2]=c[e>>2];c[b>>2]=a+8;c[c[e>>2]>>2]=b;c[e>>2]=b;return}function Cm(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;e=b+68|0;c[b+72>>2]=e;c[e>>2]=
e;e=b+8|0;c[e>>2]=128;c[b+4>>2]=0;f=Pm(1024)|0;c[b>>2]=f;xn(f|0,0,c[e>>2]<<3|0)|0;e=b+12|0;b=e+56|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(b|0));if((a[8776]|0)==0){g=1;h=0}else{i=d;return}while(1){if((g|0)>(c[8072+(h<<2)>>2]|0)){e=h+1|0;a[8128+g>>0]=e;j=e}else{a[8128+g>>0]=h;j=h}g=g+1|0;if((g|0)==641)break;else h=j}a[8776]=1;i=d;return}function Dm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;d=a+4|0;e=c[a>>2]|0;if((c[d>>2]|0)>0){f=e;g=0;while(1){Qm(c[f+(g<<3)+4>>2]|0);g=g+1|0;h=c[a>>2]|0;if((g|0)>=(c[d>>
2]|0)){j=h;break}else f=h}}else j=e;Qm(j);j=a+68|0;Vm(j);e=a+72|0;c[(c[j>>2]|0)+4>>2]=c[e>>2];c[c[e>>2]>>2]=c[j>>2];c[e>>2]=j;c[j>>2]=j;i=b;return}function Em(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;if((b|0)==0){f=0;i=e;return f|0}if((b|0)>640){f=Tm(a+68|0,b)|0;i=e;return f|0}g=d[8128+b>>0]|0;b=a+(g<<2)+12|0;h=c[b>>2]|0;if((h|0)!=0){c[b>>2]=c[h>>2];f=h;i=e;return f|0}h=a+4|0;j=c[h>>2]|0;k=a+8|0;if((j|0)==(c[k>>2]|0)){l=c[a>>2]|0;m=j+128|0;c[k>>2]=m;k=Pm(m<<3)|0;c[a>>2]=k;
An(k|0,l|0,c[h>>2]<<3|0)|0;xn((c[a>>2]|0)+(c[h>>2]<<3)|0,0,1024)|0;Qm(l);n=c[h>>2]|0}else n=j;j=c[a>>2]|0;a=Pm(16384)|0;l=j+(n<<3)+4|0;c[l>>2]=a;k=c[8072+(g<<2)>>2]|0;c[j+(n<<3)>>2]=k;n=(16384/(k|0)|0)+-1|0;if((n|0)>0){j=a;g=0;while(1){m=g;g=g+1|0;c[j+(aa(m,k)|0)>>2]=j+(aa(g,k)|0);m=c[l>>2]|0;if((g|0)==(n|0)){o=m;break}else j=m}}else o=a;c[o+(aa(n,k)|0)>>2]=0;c[b>>2]=c[c[l>>2]>>2];c[h>>2]=(c[h>>2]|0)+1;f=c[l>>2]|0;i=e;return f|0}function Fm(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0;f=i;if((e|0)==0){i=
f;return}if((e|0)>640){Um(a+68|0,b);i=f;return}else{g=a+((d[8128+e>>0]|0)<<2)+12|0;c[b>>2]=c[g>>2];c[g>>2]=b;i=f;return}}function Gm(a,b,c){a=a|0;b=b|0;c=c|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,t=0;d=+g[b+16>>2];e=+g[b+32>>2];f=+g[b+20>>2];h=+g[b+28>>2];i=d*e-f*h;j=+g[b+24>>2];k=+g[b+12>>2];l=f*j-e*k;m=h*k-d*j;n=+g[b>>2];o=+g[b+4>>2];p=+g[b+8>>2];q=i*n+o*l+m*p;if(q!=0)r=1/q;else r=q;q=+g[c>>2];s=+g[c+4>>2];t=+g[c+8>>2];g[a>>2]=r*(i*q+s*l+m*t);g[a+4>>2]=r*((s*e-t*h)*n+o*
(t*j-e*q)+(h*q-s*j)*p);g[a+8>>2]=r*((d*t-f*s)*n+o*(f*q-t*k)+(s*k-d*q)*p);return}function Hm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0;d=+g[b>>2];e=+g[b+12>>2];f=+g[b+4>>2];h=+g[b+16>>2];i=d*h-e*f;if(i!=0)j=1/i;else j=i;i=+g[c>>2];k=+g[c+4>>2];g[a>>2]=j*(h*i-e*k);g[a+4>>2]=j*(d*k-f*i);return}function Im(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0;d=i;e=+g[a>>2];f=+g[a+12>>2];h=+g[a+4>>2];j=+g[a+16>>2];k=e*j-f*h;if(k!=0)l=1/k;else l=k;g[b>>2]=j*l;j=-l;g[b+12>>2]=f*j;g[b+8>>2]=0;
g[b+4>>2]=h*j;g[b+16>>2]=e*l;a=b+20|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;i=d;return}function Jm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c=+g[a+16>>2];d=+g[a+32>>2];e=c*d;f=+g[a+20>>2];h=+g[a+28>>2];i=+g[a+24>>2];j=+g[a+12>>2];k=d*j;l=h*j-c*i;m=+g[a>>2];n=(e-f*h)*m+ +g[a+4>>2]*(f*i-k)+l*+g[a+8>>2];if(n!=0)o=1/n;else o=n;g[b>>2]=o*(e-h*h);e=o*(i*h-k);g[b+4>>2]=e;k=o*l;g[b+8>>2]=k;g[b+12>>2]=e;g[b+16>>2]=o*(m*d-i*i);d=o*(j*i-m*h);g[b+20>>2]=d;g[b+24>>2]=k;g[b+
28>>2]=d;g[b+32>>2]=o*(m*c-j*j);return}function Km(a){a=a|0;return}function Lm(a){a=a|0;return}function Mm(a){a=a|0;return 0}function Nm(a,b){a=a|0;b=b|0;var c=0;b=i;c=on(a)|0;i=b;return c|0}function Om(a,b){a=a|0;b=b|0;b=i;pn(a);i=b;return}function Pm(a){a=a|0;var b=0,d=0;b=i;c[2214]=(c[2214]|0)+1;d=nb[c[2208]&31](a,c[2212]|0)|0;i=b;return d|0}function Qm(a){a=a|0;var b=0;b=i;c[2214]=(c[2214]|0)+-1;gb[c[2210]&63](a,c[2212]|0);i=b;return}function Rm(a,b){a=a|0;b=b|0;return}function Sm(a){a=a|0;return a+
43&-32|0}function Tm(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=Pm(b+44|0)|0;c[e>>2]=e;b=e+43&-32;c[b+-4>>2]=e;c[e+4>>2]=a;c[e>>2]=c[a>>2];c[(c[a>>2]|0)+4>>2]=e;c[a>>2]=e;i=d;return b|0}function Um(a,b){a=a|0;b=b|0;var d=0;a=i;d=c[b+-4>>2]|0;b=d+4|0;c[(c[d>>2]|0)+4>>2]=c[b>>2];c[c[b>>2]>>2]=c[d>>2];c[b>>2]=d;c[d>>2]=d;Qm(d);i=a;return}function Vm(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=a+4|0;e=c[d>>2]|0;if((e|0)==(a|0)){i=b;return}else f=e;do{e=f+4|0;c[(c[f>>2]|0)+4>>2]=c[e>>2];c[c[e>>2]>>2]=c[f>>2];c[e>>2]=f;
c[f>>2]=f;Qm(f);f=c[d>>2]|0}while((f|0)!=(a|0));i=b;return}function Wm(a){a=a|0;c[a+102400>>2]=0;c[a+102404>>2]=0;c[a+102408>>2]=0;c[a+102796>>2]=0;return}function Xm(a){a=a|0;return}function Ym(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;f=d+3&-4;d=b+102796|0;g=c[d>>2]|0;h=b+(g*12|0)+102412|0;c[b+(g*12|0)+102416>>2]=f;j=b+102400|0;k=c[j>>2]|0;if((k+f|0)>102400){c[h>>2]=Pm(f)|0;a[b+(g*12|0)+102420>>0]=1}else{c[h>>2]=b+k;a[b+(g*12|0)+102420>>0]=0;c[j>>2]=(c[j>>2]|0)+f}j=b+102404|0;g=(c[j>>2]|
0)+f|0;c[j>>2]=g;j=b+102408|0;b=c[j>>2]|0;c[j>>2]=(b|0)>(g|0)?b:g;c[d>>2]=(c[d>>2]|0)+1;i=e;return c[h>>2]|0}function Zm(b,d,e){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;d=i;f=(c[b+102796>>2]|0)+-1|0;g=b+(f*12|0)+102412|0;h=b+(f*12|0)+102416|0;j=e-(c[h>>2]|0)|0;if((j|0)<=0){k=c[g>>2]|0;i=d;return k|0}l=b+(f*12|0)+102420|0;do if((a[l>>0]|0)==0){f=b+102400|0;m=(c[f>>2]|0)+j|0;if((m|0)>102400){n=Pm(e)|0;An(n|0,c[g>>2]|0,c[h>>2]|0)|0;c[f>>2]=(c[f>>2]|0)-(c[h>>2]|0);c[g>>2]=n;a[l>>0]=1;break}else{c[f>>
2]=m;m=b+102404|0;f=(c[m>>2]|0)+j|0;c[m>>2]=f;m=b+102408|0;n=c[m>>2]|0;c[m>>2]=(n|0)>(f|0)?n:f;break}}else{f=Pm(e)|0;An(f|0,c[g>>2]|0,c[h>>2]|0)|0;Qm(c[g>>2]|0);c[g>>2]=f}while(0);c[h>>2]=e;k=c[g>>2]|0;i=d;return k|0}function _m(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;e=i;f=b+102796|0;g=c[f>>2]|0;h=g+-1|0;if((a[b+(h*12|0)+102420>>0]|0)==0){j=b+(h*12|0)+102416|0;k=b+102400|0;c[k>>2]=(c[k>>2]|0)-(c[j>>2]|0);l=j;m=g}else{Qm(d);l=b+(h*12|0)+102416|0;m=c[f>>2]|0}h=b+102404|0;c[h>>2]=(c[h>>
2]|0)-(c[l>>2]|0);c[f>>2]=m+-1;i=e;return}function $m(a){a=a|0;return}function an(a){a=a|0;return}function bn(a){a=a|0;return}function cn(a){a=a|0;return}function dn(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function en(a){a=a|0;var b=0;b=i;sn(a);i=b;return}function fn(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+64|0;f=e;if((a|0)==(b|0)){g=1;i=e;return g|0}if((b|0)==0){g=0;i=e;return g|0}h=jn(b,8928,8984,0)|0;if((h|0)==0){g=0;i=e;return g|0}b=f+0|0;j=b+56|0;do{c[b>>2]=0;b=b+4|0}while((b|
0)<(j|0));c[f>>2]=h;c[f+8>>2]=a;c[f+12>>2]=-1;c[f+48>>2]=1;pb[c[(c[h>>2]|0)+28>>2]&31](h,f,c[d>>2]|0,1);if((c[f+24>>2]|0)!=1){g=0;i=e;return g|0}c[d>>2]=c[f+16>>2];g=1;i=e;return g|0}function gn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;if((c[d+8>>2]|0)!=(b|0)){i=g;return}b=d+16|0;h=c[b>>2]|0;if((h|0)==0){c[b>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1;i=g;return}if((h|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;i=g;return}e=d+24|0;if((c[e>>2]|0)!=2){i=g;return}c[e>>2]=f;i=g;return}
function hn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;if((b|0)!=(c[d+8>>2]|0)){h=c[b+8>>2]|0;pb[c[(c[h>>2]|0)+28>>2]&31](h,d,e,f);i=g;return}h=d+16|0;b=c[h>>2]|0;if((b|0)==0){c[h>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1;i=g;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;i=g;return}e=d+24|0;if((c[e>>2]|0)!=2){i=g;return}c[e>>2]=f;i=g;return}function jn(d,e,f,g){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;h=i;i=i+64|0;j=h;k=c[d>>2]|0;l=d+(c[k+
-8>>2]|0)|0;m=c[k+-4>>2]|0;c[j>>2]=f;c[j+4>>2]=d;c[j+8>>2]=e;c[j+12>>2]=g;g=j+16|0;e=j+20|0;d=j+24|0;k=j+28|0;n=j+32|0;o=j+40|0;p=(m|0)==(f|0);f=g+0|0;q=f+36|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(q|0));b[g+36>>1]=0;a[g+38>>0]=0;if(p){c[j+48>>2]=1;mb[c[(c[m>>2]|0)+20>>2]&7](m,j,l,l,1,0);r=(c[d>>2]|0)==1?l:0;i=h;return r|0}cb[c[(c[m>>2]|0)+24>>2]&3](m,j,l,1,0);l=c[j+36>>2]|0;if((l|0)==1){if((c[d>>2]|0)!=1){if((c[o>>2]|0)!=0){r=0;i=h;return r|0}if((c[k>>2]|0)!=1){r=0;i=h;return r|0}if((c[n>>2]|0)!=1){r=
0;i=h;return r|0}}r=c[g>>2]|0;i=h;return r|0}else if((l|0)==0){if((c[o>>2]|0)!=1){r=0;i=h;return r|0}if((c[k>>2]|0)!=1){r=0;i=h;return r|0}r=(c[n>>2]|0)==1?c[e>>2]|0:0;i=h;return r|0}else{r=0;i=h;return r|0}return 0}function kn(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;h=i;if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)!=(e|0)){i=h;return}j=d+28|0;if((c[j>>2]|0)==1){i=h;return}c[j>>2]=f;i=h;return}if((b|0)!=(c[d>>2]|0)){j=c[b+8>>2]|0;cb[c[(c[j>>2]|0)+24>>2]&3](j,d,e,f,
g);i=h;return}if((c[d+16>>2]|0)!=(e|0)?(j=d+20|0,(c[j>>2]|0)!=(e|0)):0){c[d+32>>2]=f;k=d+44|0;if((c[k>>2]|0)==4){i=h;return}l=d+52|0;a[l>>0]=0;m=d+53|0;a[m>>0]=0;n=c[b+8>>2]|0;mb[c[(c[n>>2]|0)+20>>2]&7](n,d,e,e,1,g);if((a[m>>0]|0)!=0){if((a[l>>0]|0)==0){o=1;p=13}}else{o=0;p=13}do if((p|0)==13){c[j>>2]=e;l=d+40|0;c[l>>2]=(c[l>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0){a[d+54>>0]=1;if(o)break}else p=16;if((p|0)==16?o:0)break;c[k>>2]=4;i=h;return}while(0);c[k>>2]=3;i=h;return}if((f|0)!=1){i=
h;return}c[d+32>>2]=1;i=h;return}function ln(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;g=i;if((c[d+8>>2]|0)==(b|0)){if((c[d+4>>2]|0)!=(e|0)){i=g;return}h=d+28|0;if((c[h>>2]|0)==1){i=g;return}c[h>>2]=f;i=g;return}if((c[d>>2]|0)!=(b|0)){i=g;return}if((c[d+16>>2]|0)!=(e|0)?(b=d+20|0,(c[b>>2]|0)!=(e|0)):0){c[d+32>>2]=f;c[b>>2]=e;e=d+40|0;c[e>>2]=(c[e>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0)a[d+54>>0]=1;c[d+44>>2]=4;i=g;return}if((f|0)!=1){i=g;return}c[d+32>>2]=1;i=g;return}function mn(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 j=0,k=0,l=0;j=i;if((b|0)!=(c[d+8>>2]|0)){k=c[b+8>>2]|0;mb[c[(c[k>>2]|0)+20>>2]&7](k,d,e,f,g,h);i=j;return}a[d+53>>0]=1;if((c[d+4>>2]|0)!=(f|0)){i=j;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(!((g|0)==1?(c[d+48>>2]|0)==1:0)){i=j;return}a[d+54>>0]=1;i=j;return}if((h|0)!=(e|0)){e=d+36|0;c[e>>2]=(c[e>>2]|0)+1;a[d+54>>0]=1;i=j;return}e=d+24|0;h=c[e>>2]|0;if((h|0)==2){c[e>>2]=g;l=g}else l=h;if(!((l|0)==
1?(c[d+48>>2]|0)==1:0)){i=j;return}a[d+54>>0]=1;i=j;return}function nn(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 j=0;h=i;if((c[d+8>>2]|0)!=(b|0)){i=h;return}a[d+53>>0]=1;if((c[d+4>>2]|0)!=(f|0)){i=h;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(!((g|0)==1?(c[d+48>>2]|0)==1:0)){i=h;return}a[d+54>>0]=1;i=h;return}if((b|0)!=(e|0)){e=d+36|0;c[e>>2]=(c[e>>2]|0)+1;a[d+54>>0]=1;i=h;return}e=d+24|0;b=c[e>>2]|0;if((b|0)==2){c[e>>2]=g;j=g}else j=b;if(!((j|
0)==1?(c[d+48>>2]|0)==1:0)){i=h;return}a[d+54>>0]=1;i=h;return}function on(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,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,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Ea=0,Fa=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0;b=i;do if(a>>>0<245){if(a>>>0<
11)d=16;else d=a+11&-8;e=d>>>3;f=c[2284]|0;g=f>>>e;if((g&3|0)!=0){h=(g&1^1)+e|0;j=h<<1;k=9176+(j<<2)|0;l=9176+(j+2<<2)|0;j=c[l>>2]|0;m=j+8|0;n=c[m>>2]|0;do if((k|0)!=(n|0)){if(n>>>0<(c[9152>>2]|0)>>>0)Ua();o=n+12|0;if((c[o>>2]|0)==(j|0)){c[o>>2]=k;c[l>>2]=n;break}else Ua()}else c[2284]=f&~(1<<h);while(0);n=h<<3;c[j+4>>2]=n|3;l=j+(n|4)|0;c[l>>2]=c[l>>2]|1;p=m;i=b;return p|0}if(d>>>0>(c[9144>>2]|0)>>>0){if((g|0)!=0){l=2<<e;n=g<<e&(l|0-l);l=(n&0-n)+-1|0;n=l>>>12&16;k=l>>>n;l=k>>>5&8;o=k>>>l;k=o>>>2&
4;q=o>>>k;o=q>>>1&2;r=q>>>o;q=r>>>1&1;s=(l|n|k|o|q)+(r>>>q)|0;q=s<<1;r=9176+(q<<2)|0;o=9176+(q+2<<2)|0;q=c[o>>2]|0;k=q+8|0;n=c[k>>2]|0;do if((r|0)!=(n|0)){if(n>>>0<(c[9152>>2]|0)>>>0)Ua();l=n+12|0;if((c[l>>2]|0)==(q|0)){c[l>>2]=r;c[o>>2]=n;break}else Ua()}else c[2284]=f&~(1<<s);while(0);f=s<<3;n=f-d|0;c[q+4>>2]=d|3;o=q+d|0;c[q+(d|4)>>2]=n|1;c[q+f>>2]=n;f=c[9144>>2]|0;if((f|0)!=0){r=c[9156>>2]|0;e=f>>>3;f=e<<1;g=9176+(f<<2)|0;m=c[2284]|0;j=1<<e;if((m&j|0)!=0){e=9176+(f+2<<2)|0;h=c[e>>2]|0;if(h>>>0<
(c[9152>>2]|0)>>>0)Ua();else{t=e;u=h}}else{c[2284]=m|j;t=9176+(f+2<<2)|0;u=g}c[t>>2]=r;c[u+12>>2]=r;c[r+8>>2]=u;c[r+12>>2]=g}c[9144>>2]=n;c[9156>>2]=o;p=k;i=b;return p|0}o=c[9140>>2]|0;if((o|0)!=0){n=(o&0-o)+-1|0;o=n>>>12&16;g=n>>>o;n=g>>>5&8;r=g>>>n;g=r>>>2&4;f=r>>>g;r=f>>>1&2;j=f>>>r;f=j>>>1&1;m=c[9440+((n|o|g|r|f)+(j>>>f)<<2)>>2]|0;f=(c[m+4>>2]&-8)-d|0;j=m;r=m;while(1){m=c[j+16>>2]|0;if((m|0)==0){g=c[j+20>>2]|0;if((g|0)==0)break;else v=g}else v=m;m=(c[v+4>>2]&-8)-d|0;g=m>>>0<f>>>0;f=g?m:f;j=v;
r=g?v:r}j=c[9152>>2]|0;if(r>>>0<j>>>0)Ua();k=r+d|0;if(!(r>>>0<k>>>0))Ua();q=c[r+24>>2]|0;s=c[r+12>>2]|0;do if((s|0)==(r|0)){g=r+20|0;m=c[g>>2]|0;if((m|0)==0){o=r+16|0;n=c[o>>2]|0;if((n|0)==0){w=0;break}else{x=n;y=o}}else{x=m;y=g}while(1){g=x+20|0;m=c[g>>2]|0;if((m|0)!=0){x=m;y=g;continue}g=x+16|0;m=c[g>>2]|0;if((m|0)==0)break;else{x=m;y=g}}if(y>>>0<j>>>0)Ua();else{c[y>>2]=0;w=x;break}}else{g=c[r+8>>2]|0;if(g>>>0<j>>>0)Ua();m=g+12|0;if((c[m>>2]|0)!=(r|0))Ua();o=s+8|0;if((c[o>>2]|0)==(r|0)){c[m>>2]=
s;c[o>>2]=g;w=s;break}else Ua()}while(0);do if((q|0)!=0){s=c[r+28>>2]|0;j=9440+(s<<2)|0;if((r|0)==(c[j>>2]|0)){c[j>>2]=w;if((w|0)==0){c[9140>>2]=c[9140>>2]&~(1<<s);break}}else{if(q>>>0<(c[9152>>2]|0)>>>0)Ua();s=q+16|0;if((c[s>>2]|0)==(r|0))c[s>>2]=w;else c[q+20>>2]=w;if((w|0)==0)break}if(w>>>0<(c[9152>>2]|0)>>>0)Ua();c[w+24>>2]=q;s=c[r+16>>2]|0;do if((s|0)!=0)if(s>>>0<(c[9152>>2]|0)>>>0)Ua();else{c[w+16>>2]=s;c[s+24>>2]=w;break}while(0);s=c[r+20>>2]|0;if((s|0)!=0)if(s>>>0<(c[9152>>2]|0)>>>0)Ua();
else{c[w+20>>2]=s;c[s+24>>2]=w;break}}while(0);if(f>>>0<16){q=f+d|0;c[r+4>>2]=q|3;s=r+(q+4)|0;c[s>>2]=c[s>>2]|1}else{c[r+4>>2]=d|3;c[r+(d|4)>>2]=f|1;c[r+(f+d)>>2]=f;s=c[9144>>2]|0;if((s|0)!=0){q=c[9156>>2]|0;j=s>>>3;s=j<<1;g=9176+(s<<2)|0;o=c[2284]|0;m=1<<j;if((o&m|0)!=0){j=9176+(s+2<<2)|0;n=c[j>>2]|0;if(n>>>0<(c[9152>>2]|0)>>>0)Ua();else{z=j;A=n}}else{c[2284]=o|m;z=9176+(s+2<<2)|0;A=g}c[z>>2]=q;c[A+12>>2]=q;c[q+8>>2]=A;c[q+12>>2]=g}c[9144>>2]=f;c[9156>>2]=k}p=r+8|0;i=b;return p|0}else B=d}else B=
d}else if(!(a>>>0>4294967231)){g=a+11|0;q=g&-8;s=c[9140>>2]|0;if((s|0)!=0){m=0-q|0;o=g>>>8;if((o|0)!=0)if(q>>>0>16777215)C=31;else{g=(o+1048320|0)>>>16&8;n=o<<g;o=(n+520192|0)>>>16&4;j=n<<o;n=(j+245760|0)>>>16&2;h=14-(o|g|n)+(j<<n>>>15)|0;C=q>>>(h+7|0)&1|h<<1}else C=0;h=c[9440+(C<<2)>>2]|0;a:do if((h|0)==0){D=m;E=0;F=0}else{if((C|0)==31)G=0;else G=25-(C>>>1)|0;n=m;j=0;g=q<<G;o=h;e=0;while(1){l=c[o+4>>2]&-8;H=l-q|0;if(H>>>0<n>>>0)if((l|0)==(q|0)){D=H;E=o;F=o;break a}else{I=H;J=o}else{I=n;J=e}H=c[o+
20>>2]|0;o=c[o+(g>>>31<<2)+16>>2]|0;l=(H|0)==0|(H|0)==(o|0)?j:H;if((o|0)==0){D=I;E=l;F=J;break}else{n=I;j=l;g=g<<1;e=J}}}while(0);if((E|0)==0&(F|0)==0){h=2<<C;m=s&(h|0-h);if((m|0)==0){B=q;break}h=(m&0-m)+-1|0;m=h>>>12&16;r=h>>>m;h=r>>>5&8;k=r>>>h;r=k>>>2&4;f=k>>>r;k=f>>>1&2;e=f>>>k;f=e>>>1&1;K=c[9440+((h|m|r|k|f)+(e>>>f)<<2)>>2]|0}else K=E;if((K|0)==0){L=D;M=F}else{f=D;e=K;k=F;while(1){r=(c[e+4>>2]&-8)-q|0;m=r>>>0<f>>>0;h=m?r:f;r=m?e:k;m=c[e+16>>2]|0;if((m|0)!=0){f=h;e=m;k=r;continue}e=c[e+20>>2]|
0;if((e|0)==0){L=h;M=r;break}else{f=h;k=r}}}if((M|0)!=0?L>>>0<((c[9144>>2]|0)-q|0)>>>0:0){k=c[9152>>2]|0;if(M>>>0<k>>>0)Ua();f=M+q|0;if(!(M>>>0<f>>>0))Ua();e=c[M+24>>2]|0;s=c[M+12>>2]|0;do if((s|0)==(M|0)){r=M+20|0;h=c[r>>2]|0;if((h|0)==0){m=M+16|0;g=c[m>>2]|0;if((g|0)==0){N=0;break}else{O=g;P=m}}else{O=h;P=r}while(1){r=O+20|0;h=c[r>>2]|0;if((h|0)!=0){O=h;P=r;continue}r=O+16|0;h=c[r>>2]|0;if((h|0)==0)break;else{O=h;P=r}}if(P>>>0<k>>>0)Ua();else{c[P>>2]=0;N=O;break}}else{r=c[M+8>>2]|0;if(r>>>0<k>>>
0)Ua();h=r+12|0;if((c[h>>2]|0)!=(M|0))Ua();m=s+8|0;if((c[m>>2]|0)==(M|0)){c[h>>2]=s;c[m>>2]=r;N=s;break}else Ua()}while(0);do if((e|0)!=0){s=c[M+28>>2]|0;k=9440+(s<<2)|0;if((M|0)==(c[k>>2]|0)){c[k>>2]=N;if((N|0)==0){c[9140>>2]=c[9140>>2]&~(1<<s);break}}else{if(e>>>0<(c[9152>>2]|0)>>>0)Ua();s=e+16|0;if((c[s>>2]|0)==(M|0))c[s>>2]=N;else c[e+20>>2]=N;if((N|0)==0)break}if(N>>>0<(c[9152>>2]|0)>>>0)Ua();c[N+24>>2]=e;s=c[M+16>>2]|0;do if((s|0)!=0)if(s>>>0<(c[9152>>2]|0)>>>0)Ua();else{c[N+16>>2]=s;c[s+24>>
2]=N;break}while(0);s=c[M+20>>2]|0;if((s|0)!=0)if(s>>>0<(c[9152>>2]|0)>>>0)Ua();else{c[N+20>>2]=s;c[s+24>>2]=N;break}}while(0);b:do if(!(L>>>0<16)){c[M+4>>2]=q|3;c[M+(q|4)>>2]=L|1;c[M+(L+q)>>2]=L;e=L>>>3;if(L>>>0<256){s=e<<1;k=9176+(s<<2)|0;r=c[2284]|0;m=1<<e;do if((r&m|0)==0){c[2284]=r|m;Q=9176+(s+2<<2)|0;R=k}else{e=9176+(s+2<<2)|0;h=c[e>>2]|0;if(!(h>>>0<(c[9152>>2]|0)>>>0)){Q=e;R=h;break}Ua()}while(0);c[Q>>2]=f;c[R+12>>2]=f;c[M+(q+8)>>2]=R;c[M+(q+12)>>2]=k;break}s=L>>>8;if((s|0)!=0)if(L>>>0>16777215)S=
31;else{m=(s+1048320|0)>>>16&8;r=s<<m;s=(r+520192|0)>>>16&4;h=r<<s;r=(h+245760|0)>>>16&2;e=14-(s|m|r)+(h<<r>>>15)|0;S=L>>>(e+7|0)&1|e<<1}else S=0;e=9440+(S<<2)|0;c[M+(q+28)>>2]=S;c[M+(q+20)>>2]=0;c[M+(q+16)>>2]=0;r=c[9140>>2]|0;h=1<<S;if((r&h|0)==0){c[9140>>2]=r|h;c[e>>2]=f;c[M+(q+24)>>2]=e;c[M+(q+12)>>2]=f;c[M+(q+8)>>2]=f;break}h=c[e>>2]|0;if((S|0)==31)T=0;else T=25-(S>>>1)|0;c:do if((c[h+4>>2]&-8|0)!=(L|0)){e=L<<T;r=h;while(1){U=r+(e>>>31<<2)+16|0;m=c[U>>2]|0;if((m|0)==0)break;if((c[m+4>>2]&-8|
0)==(L|0)){V=m;break c}else{e=e<<1;r=m}}if(U>>>0<(c[9152>>2]|0)>>>0)Ua();else{c[U>>2]=f;c[M+(q+24)>>2]=r;c[M+(q+12)>>2]=f;c[M+(q+8)>>2]=f;break b}}else V=h;while(0);h=V+8|0;k=c[h>>2]|0;e=c[9152>>2]|0;if(V>>>0<e>>>0)Ua();if(k>>>0<e>>>0)Ua();else{c[k+12>>2]=f;c[h>>2]=f;c[M+(q+8)>>2]=k;c[M+(q+12)>>2]=V;c[M+(q+24)>>2]=0;break}}else{k=L+q|0;c[M+4>>2]=k|3;h=M+(k+4)|0;c[h>>2]=c[h>>2]|1}while(0);p=M+8|0;i=b;return p|0}else B=q}else B=q}else B=-1;while(0);M=c[9144>>2]|0;if(!(B>>>0>M>>>0)){L=M-B|0;V=c[9156>>
2]|0;if(L>>>0>15){c[9156>>2]=V+B;c[9144>>2]=L;c[V+(B+4)>>2]=L|1;c[V+M>>2]=L;c[V+4>>2]=B|3}else{c[9144>>2]=0;c[9156>>2]=0;c[V+4>>2]=M|3;L=V+(M+4)|0;c[L>>2]=c[L>>2]|1}p=V+8|0;i=b;return p|0}V=c[9148>>2]|0;if(B>>>0<V>>>0){L=V-B|0;c[9148>>2]=L;V=c[9160>>2]|0;c[9160>>2]=V+B;c[V+(B+4)>>2]=L|1;c[V+4>>2]=B|3;p=V+8|0;i=b;return p|0}do if((c[2402]|0)==0){V=Ta(30)|0;if((V+-1&V|0)==0){c[9616>>2]=V;c[9612>>2]=V;c[9620>>2]=-1;c[9624>>2]=-1;c[9628>>2]=0;c[9580>>2]=0;c[2402]=(Da(0)|0)&-16^1431655768;break}else Ua()}while(0);
V=B+48|0;L=c[9616>>2]|0;M=B+47|0;U=L+M|0;T=0-L|0;L=U&T;if(!(L>>>0>B>>>0)){p=0;i=b;return p|0}S=c[9576>>2]|0;if((S|0)!=0?(R=c[9568>>2]|0,Q=R+L|0,Q>>>0<=R>>>0|Q>>>0>S>>>0):0){p=0;i=b;return p|0}d:do if((c[9580>>2]&4|0)==0){S=c[9160>>2]|0;e:do if((S|0)!=0){Q=9584|0;while(1){R=c[Q>>2]|0;if(!(R>>>0>S>>>0)?(W=Q+4|0,(R+(c[W>>2]|0)|0)>>>0>S>>>0):0)break;R=c[Q+8>>2]|0;if((R|0)==0){X=182;break e}else Q=R}if((Q|0)!=0){R=U-(c[9148>>2]|0)&T;if(R>>>0<2147483647){N=Ga(R|0)|0;O=(N|0)==((c[Q>>2]|0)+(c[W>>2]|0)|0);
Y=N;Z=R;_=O?N:-1;$=O?R:0;X=191}else aa=0}else X=182}else X=182;while(0);do if((X|0)==182){S=Ga(0)|0;if((S|0)!=(-1|0)){q=S;R=c[9612>>2]|0;O=R+-1|0;if((O&q|0)==0)ba=L;else ba=L-q+(O+q&0-R)|0;R=c[9568>>2]|0;q=R+ba|0;if(ba>>>0>B>>>0&ba>>>0<2147483647){O=c[9576>>2]|0;if((O|0)!=0?q>>>0<=R>>>0|q>>>0>O>>>0:0){aa=0;break}O=Ga(ba|0)|0;q=(O|0)==(S|0);Y=O;Z=ba;_=q?S:-1;$=q?ba:0;X=191}else aa=0}else aa=0}while(0);f:do if((X|0)==191){q=0-Z|0;if((_|0)!=(-1|0)){ca=_;da=$;X=202;break d}do if((Y|0)!=(-1|0)&Z>>>0<2147483647&
Z>>>0<V>>>0?(S=c[9616>>2]|0,O=M-Z+S&0-S,O>>>0<2147483647):0)if((Ga(O|0)|0)==(-1|0)){Ga(q|0)|0;aa=$;break f}else{ea=O+Z|0;break}else ea=Z;while(0);if((Y|0)==(-1|0))aa=$;else{ca=Y;da=ea;X=202;break d}}while(0);c[9580>>2]=c[9580>>2]|4;fa=aa;X=199}else{fa=0;X=199}while(0);if((((X|0)==199?L>>>0<2147483647:0)?(aa=Ga(L|0)|0,L=Ga(0)|0,(L|0)!=(-1|0)&(aa|0)!=(-1|0)&aa>>>0<L>>>0):0)?(ea=L-aa|0,L=ea>>>0>(B+40|0)>>>0,L):0){ca=aa;da=L?ea:fa;X=202}if((X|0)==202){fa=(c[9568>>2]|0)+da|0;c[9568>>2]=fa;if(fa>>>0>(c[9572>>
2]|0)>>>0)c[9572>>2]=fa;fa=c[9160>>2]|0;g:do if((fa|0)!=0){ea=9584|0;while(1){ga=c[ea>>2]|0;ha=ea+4|0;ia=c[ha>>2]|0;if((ca|0)==(ga+ia|0)){X=214;break}L=c[ea+8>>2]|0;if((L|0)==0)break;else ea=L}if(((X|0)==214?(c[ea+12>>2]&8|0)==0:0)?fa>>>0>=ga>>>0&fa>>>0<ca>>>0:0){c[ha>>2]=ia+da;L=(c[9148>>2]|0)+da|0;aa=fa+8|0;if((aa&7|0)==0)ja=0;else ja=0-aa&7;aa=L-ja|0;c[9160>>2]=fa+ja;c[9148>>2]=aa;c[fa+(ja+4)>>2]=aa|1;c[fa+(L+4)>>2]=40;c[9164>>2]=c[9624>>2];break}if(ca>>>0<(c[9152>>2]|0)>>>0)c[9152>>2]=ca;L=ca+
da|0;aa=9584|0;while(1){if((c[aa>>2]|0)==(L|0)){X=224;break}Y=c[aa+8>>2]|0;if((Y|0)==0)break;else aa=Y}if((X|0)==224?(c[aa+12>>2]&8|0)==0:0){c[aa>>2]=ca;L=aa+4|0;c[L>>2]=(c[L>>2]|0)+da;L=ca+8|0;if((L&7|0)==0)ka=0;else ka=0-L&7;L=ca+(da+8)|0;if((L&7|0)==0)la=0;else la=0-L&7;L=ca+(la+da)|0;ea=ka+B|0;Y=ca+ea|0;$=L-(ca+ka)-B|0;c[ca+(ka+4)>>2]=B|3;h:do if((L|0)!=(c[9160>>2]|0)){if((L|0)==(c[9156>>2]|0)){Z=(c[9144>>2]|0)+$|0;c[9144>>2]=Z;c[9156>>2]=Y;c[ca+(ea+4)>>2]=Z|1;c[ca+(Z+ea)>>2]=Z;break}Z=da+4|0;
M=c[ca+(Z+la)>>2]|0;if((M&3|0)==1){V=M&-8;_=M>>>3;i:do if(!(M>>>0<256)){ba=c[ca+((la|24)+da)>>2]|0;W=c[ca+(da+12+la)>>2]|0;do if((W|0)==(L|0)){T=la|16;U=ca+(Z+T)|0;q=c[U>>2]|0;if((q|0)==0){Q=ca+(T+da)|0;T=c[Q>>2]|0;if((T|0)==0){ma=0;break}else{na=T;oa=Q}}else{na=q;oa=U}while(1){U=na+20|0;q=c[U>>2]|0;if((q|0)!=0){na=q;oa=U;continue}U=na+16|0;q=c[U>>2]|0;if((q|0)==0)break;else{na=q;oa=U}}if(oa>>>0<(c[9152>>2]|0)>>>0)Ua();else{c[oa>>2]=0;ma=na;break}}else{U=c[ca+((la|8)+da)>>2]|0;if(U>>>0<(c[9152>>2]|
0)>>>0)Ua();q=U+12|0;if((c[q>>2]|0)!=(L|0))Ua();Q=W+8|0;if((c[Q>>2]|0)==(L|0)){c[q>>2]=W;c[Q>>2]=U;ma=W;break}else Ua()}while(0);if((ba|0)==0)break;W=c[ca+(da+28+la)>>2]|0;r=9440+(W<<2)|0;do if((L|0)!=(c[r>>2]|0)){if(ba>>>0<(c[9152>>2]|0)>>>0)Ua();U=ba+16|0;if((c[U>>2]|0)==(L|0))c[U>>2]=ma;else c[ba+20>>2]=ma;if((ma|0)==0)break i}else{c[r>>2]=ma;if((ma|0)!=0)break;c[9140>>2]=c[9140>>2]&~(1<<W);break i}while(0);if(ma>>>0<(c[9152>>2]|0)>>>0)Ua();c[ma+24>>2]=ba;W=la|16;r=c[ca+(W+da)>>2]|0;do if((r|0)!=
0)if(r>>>0<(c[9152>>2]|0)>>>0)Ua();else{c[ma+16>>2]=r;c[r+24>>2]=ma;break}while(0);r=c[ca+(Z+W)>>2]|0;if((r|0)==0)break;if(r>>>0<(c[9152>>2]|0)>>>0)Ua();else{c[ma+20>>2]=r;c[r+24>>2]=ma;break}}else{r=c[ca+((la|8)+da)>>2]|0;ba=c[ca+(da+12+la)>>2]|0;U=9176+(_<<1<<2)|0;do if((r|0)!=(U|0)){if(r>>>0<(c[9152>>2]|0)>>>0)Ua();if((c[r+12>>2]|0)==(L|0))break;Ua()}while(0);if((ba|0)==(r|0)){c[2284]=c[2284]&~(1<<_);break}do if((ba|0)==(U|0))pa=ba+8|0;else{if(ba>>>0<(c[9152>>2]|0)>>>0)Ua();W=ba+8|0;if((c[W>>2]|
0)==(L|0)){pa=W;break}Ua()}while(0);c[r+12>>2]=ba;c[pa>>2]=r}while(0);qa=ca+((V|la)+da)|0;ra=V+$|0}else{qa=L;ra=$}_=qa+4|0;c[_>>2]=c[_>>2]&-2;c[ca+(ea+4)>>2]=ra|1;c[ca+(ra+ea)>>2]=ra;_=ra>>>3;if(ra>>>0<256){Z=_<<1;M=9176+(Z<<2)|0;U=c[2284]|0;W=1<<_;do if((U&W|0)==0){c[2284]=U|W;sa=9176+(Z+2<<2)|0;ta=M}else{_=9176+(Z+2<<2)|0;Q=c[_>>2]|0;if(!(Q>>>0<(c[9152>>2]|0)>>>0)){sa=_;ta=Q;break}Ua()}while(0);c[sa>>2]=Y;c[ta+12>>2]=Y;c[ca+(ea+8)>>2]=ta;c[ca+(ea+12)>>2]=M;break}Z=ra>>>8;do if((Z|0)==0)ua=0;else{if(ra>>>
0>16777215){ua=31;break}W=(Z+1048320|0)>>>16&8;U=Z<<W;V=(U+520192|0)>>>16&4;Q=U<<V;U=(Q+245760|0)>>>16&2;_=14-(V|W|U)+(Q<<U>>>15)|0;ua=ra>>>(_+7|0)&1|_<<1}while(0);Z=9440+(ua<<2)|0;c[ca+(ea+28)>>2]=ua;c[ca+(ea+20)>>2]=0;c[ca+(ea+16)>>2]=0;M=c[9140>>2]|0;_=1<<ua;if((M&_|0)==0){c[9140>>2]=M|_;c[Z>>2]=Y;c[ca+(ea+24)>>2]=Z;c[ca+(ea+12)>>2]=Y;c[ca+(ea+8)>>2]=Y;break}_=c[Z>>2]|0;if((ua|0)==31)va=0;else va=25-(ua>>>1)|0;j:do if((c[_+4>>2]&-8|0)!=(ra|0)){Z=ra<<va;M=_;while(1){wa=M+(Z>>>31<<2)+16|0;U=c[wa>>
2]|0;if((U|0)==0)break;if((c[U+4>>2]&-8|0)==(ra|0)){xa=U;break j}else{Z=Z<<1;M=U}}if(wa>>>0<(c[9152>>2]|0)>>>0)Ua();else{c[wa>>2]=Y;c[ca+(ea+24)>>2]=M;c[ca+(ea+12)>>2]=Y;c[ca+(ea+8)>>2]=Y;break h}}else xa=_;while(0);_=xa+8|0;Z=c[_>>2]|0;r=c[9152>>2]|0;if(xa>>>0<r>>>0)Ua();if(Z>>>0<r>>>0)Ua();else{c[Z+12>>2]=Y;c[_>>2]=Y;c[ca+(ea+8)>>2]=Z;c[ca+(ea+12)>>2]=xa;c[ca+(ea+24)>>2]=0;break}}else{Z=(c[9148>>2]|0)+$|0;c[9148>>2]=Z;c[9160>>2]=Y;c[ca+(ea+4)>>2]=Z|1}while(0);p=ca+(ka|8)|0;i=b;return p|0}ea=9584|
0;while(1){ya=c[ea>>2]|0;if(!(ya>>>0>fa>>>0)?(za=c[ea+4>>2]|0,Aa=ya+za|0,Aa>>>0>fa>>>0):0)break;ea=c[ea+8>>2]|0}ea=ya+(za+-39)|0;if((ea&7|0)==0)Ba=0;else Ba=0-ea&7;ea=ya+(za+-47+Ba)|0;Y=ea>>>0<(fa+16|0)>>>0?fa:ea;ea=Y+8|0;$=ca+8|0;if(($&7|0)==0)Ca=0;else Ca=0-$&7;$=da+-40-Ca|0;c[9160>>2]=ca+Ca;c[9148>>2]=$;c[ca+(Ca+4)>>2]=$|1;c[ca+(da+-36)>>2]=40;c[9164>>2]=c[9624>>2];c[Y+4>>2]=27;c[ea+0>>2]=c[9584>>2];c[ea+4>>2]=c[9588>>2];c[ea+8>>2]=c[9592>>2];c[ea+12>>2]=c[9596>>2];c[9584>>2]=ca;c[9588>>2]=da;
c[9596>>2]=0;c[9592>>2]=ea;ea=Y+28|0;c[ea>>2]=7;if((Y+32|0)>>>0<Aa>>>0){$=ea;do{ea=$;$=$+4|0;c[$>>2]=7}while((ea+8|0)>>>0<Aa>>>0)}if((Y|0)!=(fa|0)){$=Y-fa|0;ea=fa+($+4)|0;c[ea>>2]=c[ea>>2]&-2;c[fa+4>>2]=$|1;c[fa+$>>2]=$;ea=$>>>3;if($>>>0<256){L=ea<<1;aa=9176+(L<<2)|0;Z=c[2284]|0;_=1<<ea;do if((Z&_|0)==0){c[2284]=Z|_;Ea=9176+(L+2<<2)|0;Fa=aa}else{ea=9176+(L+2<<2)|0;r=c[ea>>2]|0;if(!(r>>>0<(c[9152>>2]|0)>>>0)){Ea=ea;Fa=r;break}Ua()}while(0);c[Ea>>2]=fa;c[Fa+12>>2]=fa;c[fa+8>>2]=Fa;c[fa+12>>2]=aa;break}L=
$>>>8;if((L|0)!=0)if($>>>0>16777215)Ha=31;else{_=(L+1048320|0)>>>16&8;Z=L<<_;L=(Z+520192|0)>>>16&4;Y=Z<<L;Z=(Y+245760|0)>>>16&2;r=14-(L|_|Z)+(Y<<Z>>>15)|0;Ha=$>>>(r+7|0)&1|r<<1}else Ha=0;r=9440+(Ha<<2)|0;c[fa+28>>2]=Ha;c[fa+20>>2]=0;c[fa+16>>2]=0;Z=c[9140>>2]|0;Y=1<<Ha;if((Z&Y|0)==0){c[9140>>2]=Z|Y;c[r>>2]=fa;c[fa+24>>2]=r;c[fa+12>>2]=fa;c[fa+8>>2]=fa;break}Y=c[r>>2]|0;if((Ha|0)==31)Ia=0;else Ia=25-(Ha>>>1)|0;k:do if((c[Y+4>>2]&-8|0)!=($|0)){r=$<<Ia;Z=Y;while(1){Ja=Z+(r>>>31<<2)+16|0;_=c[Ja>>2]|0;
if((_|0)==0)break;if((c[_+4>>2]&-8|0)==($|0)){Ka=_;break k}else{r=r<<1;Z=_}}if(Ja>>>0<(c[9152>>2]|0)>>>0)Ua();else{c[Ja>>2]=fa;c[fa+24>>2]=Z;c[fa+12>>2]=fa;c[fa+8>>2]=fa;break g}}else Ka=Y;while(0);Y=Ka+8|0;$=c[Y>>2]|0;aa=c[9152>>2]|0;if(Ka>>>0<aa>>>0)Ua();if($>>>0<aa>>>0)Ua();else{c[$+12>>2]=fa;c[Y>>2]=fa;c[fa+8>>2]=$;c[fa+12>>2]=Ka;c[fa+24>>2]=0;break}}}else{$=c[9152>>2]|0;if(($|0)==0|ca>>>0<$>>>0)c[9152>>2]=ca;c[9584>>2]=ca;c[9588>>2]=da;c[9596>>2]=0;c[9172>>2]=c[2402];c[9168>>2]=-1;$=0;do{Y=$<<
1;aa=9176+(Y<<2)|0;c[9176+(Y+3<<2)>>2]=aa;c[9176+(Y+2<<2)>>2]=aa;$=$+1|0}while(($|0)!=32);$=ca+8|0;if(($&7|0)==0)La=0;else La=0-$&7;$=da+-40-La|0;c[9160>>2]=ca+La;c[9148>>2]=$;c[ca+(La+4)>>2]=$|1;c[ca+(da+-36)>>2]=40;c[9164>>2]=c[9624>>2]}while(0);da=c[9148>>2]|0;if(da>>>0>B>>>0){ca=da-B|0;c[9148>>2]=ca;da=c[9160>>2]|0;c[9160>>2]=da+B;c[da+(B+4)>>2]=ca|1;c[da+4>>2]=B|3;p=da+8|0;i=b;return p|0}}c[(Qa()|0)>>2]=12;p=0;i=b;return p|0}function pn(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,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;b=i;if((a|0)==0){i=b;return}d=a+-8|0;e=c[9152>>2]|0;if(d>>>0<e>>>0)Ua();f=c[a+-4>>2]|0;g=f&3;if((g|0)==1)Ua();h=f&-8;j=a+(h+-8)|0;do if((f&1|0)==0){k=c[d>>2]|0;if((g|0)==0){i=b;return}l=-8-k|0;m=a+l|0;n=k+h|0;if(m>>>0<e>>>0)Ua();if((m|0)==(c[9156>>2]|0)){o=a+(h+-4)|0;if((c[o>>2]&3|0)!=3){p=m;q=n;break}c[9144>>2]=n;c[o>>2]=c[o>>2]&-2;c[a+(l+4)>>2]=n|1;c[j>>2]=n;i=b;return}o=k>>>3;if(k>>>0<256){k=c[a+(l+8)>>
2]|0;r=c[a+(l+12)>>2]|0;s=9176+(o<<1<<2)|0;if((k|0)!=(s|0)){if(k>>>0<e>>>0)Ua();if((c[k+12>>2]|0)!=(m|0))Ua()}if((r|0)==(k|0)){c[2284]=c[2284]&~(1<<o);p=m;q=n;break}if((r|0)!=(s|0)){if(r>>>0<e>>>0)Ua();s=r+8|0;if((c[s>>2]|0)==(m|0))t=s;else Ua()}else t=r+8|0;c[k+12>>2]=r;c[t>>2]=k;p=m;q=n;break}k=c[a+(l+24)>>2]|0;r=c[a+(l+12)>>2]|0;do if((r|0)==(m|0)){s=a+(l+20)|0;o=c[s>>2]|0;if((o|0)==0){u=a+(l+16)|0;v=c[u>>2]|0;if((v|0)==0){w=0;break}else{x=v;y=u}}else{x=o;y=s}while(1){s=x+20|0;o=c[s>>2]|0;if((o|
0)!=0){x=o;y=s;continue}s=x+16|0;o=c[s>>2]|0;if((o|0)==0)break;else{x=o;y=s}}if(y>>>0<e>>>0)Ua();else{c[y>>2]=0;w=x;break}}else{s=c[a+(l+8)>>2]|0;if(s>>>0<e>>>0)Ua();o=s+12|0;if((c[o>>2]|0)!=(m|0))Ua();u=r+8|0;if((c[u>>2]|0)==(m|0)){c[o>>2]=r;c[u>>2]=s;w=r;break}else Ua()}while(0);if((k|0)!=0){r=c[a+(l+28)>>2]|0;s=9440+(r<<2)|0;if((m|0)==(c[s>>2]|0)){c[s>>2]=w;if((w|0)==0){c[9140>>2]=c[9140>>2]&~(1<<r);p=m;q=n;break}}else{if(k>>>0<(c[9152>>2]|0)>>>0)Ua();r=k+16|0;if((c[r>>2]|0)==(m|0))c[r>>2]=w;else c[k+
20>>2]=w;if((w|0)==0){p=m;q=n;break}}if(w>>>0<(c[9152>>2]|0)>>>0)Ua();c[w+24>>2]=k;r=c[a+(l+16)>>2]|0;do if((r|0)!=0)if(r>>>0<(c[9152>>2]|0)>>>0)Ua();else{c[w+16>>2]=r;c[r+24>>2]=w;break}while(0);r=c[a+(l+20)>>2]|0;if((r|0)!=0)if(r>>>0<(c[9152>>2]|0)>>>0)Ua();else{c[w+20>>2]=r;c[r+24>>2]=w;p=m;q=n;break}else{p=m;q=n}}else{p=m;q=n}}else{p=d;q=h}while(0);if(!(p>>>0<j>>>0))Ua();d=a+(h+-4)|0;w=c[d>>2]|0;if((w&1|0)==0)Ua();if((w&2|0)==0){if((j|0)==(c[9160>>2]|0)){e=(c[9148>>2]|0)+q|0;c[9148>>2]=e;c[9160>>
2]=p;c[p+4>>2]=e|1;if((p|0)!=(c[9156>>2]|0)){i=b;return}c[9156>>2]=0;c[9144>>2]=0;i=b;return}if((j|0)==(c[9156>>2]|0)){e=(c[9144>>2]|0)+q|0;c[9144>>2]=e;c[9156>>2]=p;c[p+4>>2]=e|1;c[p+e>>2]=e;i=b;return}e=(w&-8)+q|0;x=w>>>3;do if(!(w>>>0<256)){y=c[a+(h+16)>>2]|0;t=c[a+(h|4)>>2]|0;do if((t|0)==(j|0)){g=a+(h+12)|0;f=c[g>>2]|0;if((f|0)==0){r=a+(h+8)|0;k=c[r>>2]|0;if((k|0)==0){z=0;break}else{A=k;B=r}}else{A=f;B=g}while(1){g=A+20|0;f=c[g>>2]|0;if((f|0)!=0){A=f;B=g;continue}g=A+16|0;f=c[g>>2]|0;if((f|0)==
0)break;else{A=f;B=g}}if(B>>>0<(c[9152>>2]|0)>>>0)Ua();else{c[B>>2]=0;z=A;break}}else{g=c[a+h>>2]|0;if(g>>>0<(c[9152>>2]|0)>>>0)Ua();f=g+12|0;if((c[f>>2]|0)!=(j|0))Ua();r=t+8|0;if((c[r>>2]|0)==(j|0)){c[f>>2]=t;c[r>>2]=g;z=t;break}else Ua()}while(0);if((y|0)!=0){t=c[a+(h+20)>>2]|0;n=9440+(t<<2)|0;if((j|0)==(c[n>>2]|0)){c[n>>2]=z;if((z|0)==0){c[9140>>2]=c[9140>>2]&~(1<<t);break}}else{if(y>>>0<(c[9152>>2]|0)>>>0)Ua();t=y+16|0;if((c[t>>2]|0)==(j|0))c[t>>2]=z;else c[y+20>>2]=z;if((z|0)==0)break}if(z>>>
0<(c[9152>>2]|0)>>>0)Ua();c[z+24>>2]=y;t=c[a+(h+8)>>2]|0;do if((t|0)!=0)if(t>>>0<(c[9152>>2]|0)>>>0)Ua();else{c[z+16>>2]=t;c[t+24>>2]=z;break}while(0);t=c[a+(h+12)>>2]|0;if((t|0)!=0)if(t>>>0<(c[9152>>2]|0)>>>0)Ua();else{c[z+20>>2]=t;c[t+24>>2]=z;break}}}else{t=c[a+h>>2]|0;y=c[a+(h|4)>>2]|0;n=9176+(x<<1<<2)|0;if((t|0)!=(n|0)){if(t>>>0<(c[9152>>2]|0)>>>0)Ua();if((c[t+12>>2]|0)!=(j|0))Ua()}if((y|0)==(t|0)){c[2284]=c[2284]&~(1<<x);break}if((y|0)!=(n|0)){if(y>>>0<(c[9152>>2]|0)>>>0)Ua();n=y+8|0;if((c[n>>
2]|0)==(j|0))C=n;else Ua()}else C=y+8|0;c[t+12>>2]=y;c[C>>2]=t}while(0);c[p+4>>2]=e|1;c[p+e>>2]=e;if((p|0)==(c[9156>>2]|0)){c[9144>>2]=e;i=b;return}else D=e}else{c[d>>2]=w&-2;c[p+4>>2]=q|1;c[p+q>>2]=q;D=q}q=D>>>3;if(D>>>0<256){w=q<<1;d=9176+(w<<2)|0;e=c[2284]|0;C=1<<q;if((e&C|0)!=0){q=9176+(w+2<<2)|0;j=c[q>>2]|0;if(j>>>0<(c[9152>>2]|0)>>>0)Ua();else{E=q;F=j}}else{c[2284]=e|C;E=9176+(w+2<<2)|0;F=d}c[E>>2]=p;c[F+12>>2]=p;c[p+8>>2]=F;c[p+12>>2]=d;i=b;return}d=D>>>8;if((d|0)!=0)if(D>>>0>16777215)G=31;
else{F=(d+1048320|0)>>>16&8;E=d<<F;d=(E+520192|0)>>>16&4;w=E<<d;E=(w+245760|0)>>>16&2;C=14-(d|F|E)+(w<<E>>>15)|0;G=D>>>(C+7|0)&1|C<<1}else G=0;C=9440+(G<<2)|0;c[p+28>>2]=G;c[p+20>>2]=0;c[p+16>>2]=0;E=c[9140>>2]|0;w=1<<G;a:do if((E&w|0)!=0){F=c[C>>2]|0;if((G|0)==31)H=0;else H=25-(G>>>1)|0;b:do if((c[F+4>>2]&-8|0)!=(D|0)){d=D<<H;e=F;while(1){I=e+(d>>>31<<2)+16|0;j=c[I>>2]|0;if((j|0)==0)break;if((c[j+4>>2]&-8|0)==(D|0)){J=j;break b}else{d=d<<1;e=j}}if(I>>>0<(c[9152>>2]|0)>>>0)Ua();else{c[I>>2]=p;c[p+
24>>2]=e;c[p+12>>2]=p;c[p+8>>2]=p;break a}}else J=F;while(0);F=J+8|0;d=c[F>>2]|0;j=c[9152>>2]|0;if(J>>>0<j>>>0)Ua();if(d>>>0<j>>>0)Ua();else{c[d+12>>2]=p;c[F>>2]=p;c[p+8>>2]=d;c[p+12>>2]=J;c[p+24>>2]=0;break}}else{c[9140>>2]=E|w;c[C>>2]=p;c[p+24>>2]=C;c[p+12>>2]=p;c[p+8>>2]=p}while(0);p=(c[9168>>2]|0)+-1|0;c[9168>>2]=p;if((p|0)==0)K=9592|0;else{i=b;return}while(1){p=c[K>>2]|0;if((p|0)==0)break;else K=p+8|0}c[9168>>2]=-1;i=b;return}function qn(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=(a|0)==0?1:a;while(1){e=
on(d)|0;if((e|0)!=0){f=6;break}a=c[2410]|0;c[2410]=a+0;if((a|0)==0){f=5;break}jb[a&1]()}if((f|0)==5){d=Aa(4)|0;c[d>>2]=9656;Sa(d|0,9704,92)}else if((f|0)==6){i=b;return e|0}return 0}function rn(a,b){a=a|0;b=b|0;var c=0;b=i;c=qn(a)|0;i=b;return c|0}function sn(a){a=a|0;var b=0;b=i;if((a|0)!=0)pn(a);i=b;return}function tn(a){a=a|0;var b=0;b=i;Ra(a|0);sn(a);i=b;return}function un(a){a=a|0;var b=0;b=i;Ra(a|0);i=b;return}function vn(a){a=a|0;return 9672}function wn(){c[2428]=o}function xn(b,d,e){b=b|0;
d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;g=b&3;h=d|d<<8|d<<16|d<<24;i=f&~3;if(g){g=b+4-g|0;while((b|0)<(g|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(i|0)){c[b>>2]=h;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function yn(b){b=b|0;var c=0;c=b;while(a[c>>0]|0)c=c+1|0;return c-b|0}function zn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=a+c>>>0;return(E=b+d+(e>>>0<a>>>0|0)>>>0,e|0)|0}function An(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return Ma(b|0,d|0,e|0)|0;f=b|0;
if((b&3)==(d&3)){while(b&3){if((e|0)==0)return f|0;a[b>>0]=a[d>>0]|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>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function Bn(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;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>>0]=a[c>>0]|0}b=e}else An(b,c,d)|0;return b|0}function Cn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=b-d>>>0;e=b-d-(c>>>0>a>>>0|0)>>>0;return(E=e,
a-c>>>0|0)|0}function Dn(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){E=b<<c|(a&(1<<c)-1<<32-c)>>>32-c;return a<<c}E=a<<c-32;return 0}function En(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){E=b>>>c;return a>>>c|(b&(1<<c)-1)<<32-c}E=0;return b>>>c-32|0}function Fn(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){E=b>>c;return a>>>c|(b&(1<<c)-1)<<32-c}E=(b|0)<0?-1:0;return b>>c-32|0}function Gn(b){b=b|0;var c=0;c=a[n+(b>>>24)>>0]|0;if((c|0)<8)return c|0;c=a[n+(b>>16&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[n+(b>>8&255)>>0]|
0;if((c|0)<8)return c+16|0;return(a[n+(b&255)>>0]|0)+24|0}function Hn(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return(a[m+(b>>>24)>>0]|0)+24|0}function In(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=a&65535;d=b&65535;e=aa(d,c)|0;f=a>>>16;a=(e>>>16)+(aa(d,f)|0)|0;d=b>>>16;b=aa(d,c)|0;return(E=(a>>>16)+(aa(d,f)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|e&65535|0)|0}function Jn(a,b,c,d){a=a|0;b=b|0;
c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=b>>31|((b|0)<0?-1:0)<<1;f=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;g=d>>31|((d|0)<0?-1:0)<<1;h=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;i=Cn(e^a,f^b,e,f)|0;b=E;a=g^e;e=h^f;f=Cn((On(i,b,Cn(g^c,h^d,g,h)|0,E,0)|0)^a,E^e,a,e)|0;return f|0}function Kn(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;f=i;i=i+8|0;g=f|0;h=b>>31|((b|0)<0?-1:0)<<1;j=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;k=e>>31|((e|0)<0?-1:0)<<1;l=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;m=Cn(h^a,j^
b,h,j)|0;b=E;On(m,b,Cn(k^d,l^e,k,l)|0,E,g)|0;l=Cn(c[g>>2]^h,c[g+4>>2]^j,h,j)|0;j=E;i=f;return(E=j,l)|0}function Ln(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;a=c;c=In(e,a)|0;f=E;return(E=(aa(b,a)|0)+(aa(d,e)|0)+f|f&0,c|0|0)|0}function Mn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=On(a,b,c,d,0)|0;return e|0}function Nn(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;On(a,b,d,e,g)|0;i=f;return(E=c[g+4>>2]|0,c[g>>2]|0)|0}function On(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,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,F=0,G=0,H=0;g=a;h=b;i=h;j=d;k=e;l=k;if((i|0)==0){m=(f|0)!=0;if((l|0)==0){if(m){c[f>>2]=(g>>>0)%(j>>>0);c[f+4>>2]=0}n=0;o=(g>>>0)/(j>>>0)>>>0;return(E=n,o)|0}else{if(!m){n=0;o=0;return(E=n,o)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;o=0;return(E=n,o)|0}}m=(l|0)==0;do if((j|0)!=0){if(!m){p=(Gn(l|0)|0)-(Gn(i|0)|0)|0;if(p>>>0<=31){q=p+1|0;r=31-p|0;s=p-31>>31;t=q;u=g>>>(q>>>0)&s|i<<r;v=i>>>(q>>>0)&s;w=0;x=g<<r;break}if((f|
0)==0){n=0;o=0;return(E=n,o)|0}c[f>>2]=a|0;c[f+4>>2]=h|b&0;n=0;o=0;return(E=n,o)|0}r=j-1|0;if((r&j|0)!=0){s=(Gn(j|0)|0)+33-(Gn(i|0)|0)|0;q=64-s|0;p=32-s|0;y=p>>31;z=s-32|0;A=z>>31;t=s;u=p-1>>31&i>>>(z>>>0)|(i<<p|g>>>(s>>>0))&A;v=A&i>>>(s>>>0);w=g<<q&y;x=(i<<q|g>>>(z>>>0))&y|g<<p&s-33>>31;break}if((f|0)!=0){c[f>>2]=r&g;c[f+4>>2]=0}if((j|0)==1){n=h|b&0;o=a|0|0;return(E=n,o)|0}else{r=Hn(j|0)|0;n=i>>>(r>>>0)|0;o=i<<32-r|g>>>(r>>>0)|0;return(E=n,o)|0}}else{if(m){if((f|0)!=0){c[f>>2]=(i>>>0)%(j>>>0);c[f+
4>>2]=0}n=0;o=(i>>>0)/(j>>>0)>>>0;return(E=n,o)|0}if((g|0)==0){if((f|0)!=0){c[f>>2]=0;c[f+4>>2]=(i>>>0)%(l>>>0)}n=0;o=(i>>>0)/(l>>>0)>>>0;return(E=n,o)|0}r=l-1|0;if((r&l|0)==0){if((f|0)!=0){c[f>>2]=a|0;c[f+4>>2]=r&i|b&0}n=0;o=i>>>((Hn(l|0)|0)>>>0);return(E=n,o)|0}r=(Gn(l|0)|0)-(Gn(i|0)|0)|0;if(r>>>0<=30){s=r+1|0;p=31-r|0;t=s;u=i<<p|g>>>(s>>>0);v=i>>>(s>>>0);w=0;x=g<<p;break}if((f|0)==0){n=0;o=0;return(E=n,o)|0}c[f>>2]=a|0;c[f+4>>2]=h|b&0;n=0;o=0;return(E=n,o)|0}while(0);if((t|0)==0){B=x;C=w;D=v;F=
u;G=0;H=0}else{b=d|0|0;d=k|e&0;e=zn(b,d,-1,-1)|0;k=E;h=x;x=w;w=v;v=u;u=t;t=0;do{a=h;h=x>>>31|h<<1;x=t|x<<1;g=v<<1|a>>>31|0;a=v>>>31|w<<1|0;Cn(e,k,g,a)|0;i=E;l=i>>31|((i|0)<0?-1:0)<<1;t=l&1;v=Cn(g,a,l&b,(((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1)&d)|0;w=E;u=u-1|0}while((u|0)!=0);B=h;C=x;D=w;F=v;G=0;H=t}t=C;C=0;if((f|0)!=0){c[f>>2]=F;c[f+4>>2]=D}n=(t|0)>>>31|(B|C)<<1|(C<<1|t>>>31)&0|G;o=(t<<1|0>>>31)&-2|H;return(E=n,o)|0}function Pn(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+ab[a&1](b|
0,c|0,d|0,e|0,f|0,+g)}function Qn(a,b){a=a|0;b=b|0;return bb[a&7](b|0)|0}function Rn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;cb[a&3](b|0,c|0,d|0,e|0,f|0)}function Sn(a,b,c){a=a|0;b=b|0;c=+c;return+db[a&15](b|0,+c)}function Tn(a,b){a=a|0;b=b|0;eb[a&127](b|0)}function Un(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return+fb[a&1](b|0,c|0,d|0,e|0,+f)}function Vn(a,b,c){a=a|0;b=b|0;c=c|0;gb[a&63](b|0,c|0)}function Wn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return hb[a&15](b|0,c|0,d|0)|0}function Xn(a,
b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ib[a&7](b|0,c|0,d|0)}function Yn(a){a=a|0;jb[a&1]()}function Zn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;kb[a&31](b|0,c|0,+d)}function _n(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return lb[a&7](b|0,c|0,d|0,e|0)|0}function $n(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;mb[a&7](b|0,c|0,d|0,e|0,f|0,g|0)}function ao(a,b,c){a=a|0;b=b|0;c=c|0;return nb[a&31](b|0,c|0)|0}function bo(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 ob[a&15](b|0,c|0,d|0,e|0,f|0)|0}
function co(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;pb[a&31](b|0,c|0,d|0,e|0)}function eo(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ba(0);return 0}function fo(a){a=a|0;ba(1);return 0}function go(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ba(2)}function ho(a,b){a=a|0;b=+b;ba(3);return 0}function io(a){a=a|0;ba(4)}function jo(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ba(5);return 0}function ko(a,b){a=a|0;b=b|0;ba(6)}function lo(a,b,c){a=a|0;b=b|0;c=c|0;ba(7);return 0}function mo(a,b,c){a=a|0;b=b|
0;c=c|0;ba(8)}function no(){ba(9)}function oo(){_a()}function po(a,b,c){a=a|0;b=b|0;c=+c;ba(10)}function qo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ba(11);return 0}function ro(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ba(12)}function so(a,b){a=a|0;b=b|0;ba(13);return 0}function to(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ba(14);return 0}function uo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ba(15)}var ab=[eo,Gd];var bb=[fo,ge,ne,ve,Fe,rm,vn,fo];var cb=[go,ln,kn,go];var db=[ho,Df,Qf,dg,pg,Bg,Mg,Zg,ph,Hh,Zh,
ki,ho,ho,ho,ho];var eb=[io,pc,Ed,oc,Id,nc,Md,Gb,Wd,Ib,Vd,Cb,Xd,Ce,Be,rf,sf,Ff,Gf,Hf,Tf,Vf,Wf,eg,fg,gg,qg,rg,sg,Cg,Dg,Eg,Og,Pg,Qg,fh,gh,hh,qh,rh,sh,wh,xh,yh,Oh,Ph,Qh,$h,ai,bi,li,ni,oi,si,ti,yi,zi,Di,Ei,Ii,Ji,Wi,Xi,$i,aj,ej,fj,jj,kj,Rj,ck,Ul,Vl,Zl,_l,am,bm,dm,em,Jk,im,km,lm,om,pm,xm,ym,an,dn,bn,cn,en,un,tn,io,io,io,io,io,io,io,io,io,io,io,io,io,io,io,io,io,io,io,io,io,io,io,io,io,io,io,io,io,io,io,io,io,io];var fb=[jo,Fd];var gb=[ko,Nd,Od,Af,Bf,Ef,xf,yf,Nf,Of,Uf,Kf,Lf,ag,bg,Zf,_f,mg,ng,jg,kg,yg,zg,
vg,wg,Jg,Kg,Gg,Hg,Wg,Xg,Tg,Ug,mh,nh,jh,kh,Eh,Fh,Bh,Ch,Wh,Xh,Th,Uh,hi,ii,mi,ei,fi,dk,ek,Om,Gi,Bi,hj,Ui,cj,Zi,qi,ko,ko,ko,ko];var hb=[lo,Kd,he,pe,we,Ie,qf,gm,mm,sm,Am,fn,lo,lo,lo,lo];var ib=[mo,Pd,Rd,Td,Ud,fk,gk,mo];var jb=[no,oo];var kb=[po,le,te,Ae,Le,Cf,Pf,cg,og,Ag,Lg,Yg,oh,Gh,Yh,ji,wm,po,po,po,po,po,po,po,po,po,po,po,po,po,po,po];var lb=[qo,tf,uf,hm,nm,qo,qo,qo];var mb=[ro,ie,qe,xe,He,tm,nn,mn];var nb=[so,Hd,Jd,Ld,fe,me,ue,Ee,zf,Mf,$f,lg,xg,Ig,Vg,lh,Dh,Vh,gi,Wl,Xl,fm,jm,qm,zm,Nm,Zj,Kk,Lk,Wk,Vk,
_k];var ob=[to,je,re,ye,Je,um,Fi,Ai,gj,Ti,bj,Yi,pi,to,to,to];var pb=[uo,Qd,Sd,ke,se,ze,Ke,ri,Ci,Hi,Vi,_i,dj,ij,Yl,$l,cm,vm,gn,hn,uo,uo,uo,uo,uo,uo,uo,uo,uo,uo,uo,uo];return{_b2PrismaticJoint_IsMotorEnabled:Yc,_b2Body_GetWorldVector:fc,_strlen:yn,_b2Body_GetLocalVector:_b,_b2PrismaticJoint_GetMotorSpeed:Vc,_b2RopeJointDef_Create:kd,_b2World_CreateParticleSystem:sc,_b2ParticleSystem_SetRadius:Dd,_b2FrictionJointDef_Create:Gc,_b2World_RayCast:yc,_b2MotorJointDef_InitializeAndCreate:Pc,_b2GearJoint_GetRatio:Ic,
_b2Body_GetLocalPoint:Zb,_memcpy:An,_b2RevoluteJoint_EnableLimit:cd,_b2Body_DestroyFixture:Ub,_b2World_Create:qc,_b2PolygonShape_CreateFixture_3:Hb,_b2PolygonShape_CreateFixture_6:Lb,_b2PolygonShape_CreateFixture_7:Mb,_b2PolygonShape_CreateFixture_4:Jb,_b2PolygonShape_CreateFixture_5:Kb,_b2Body_SetAwake:gc,_b2Body_GetWorldCenter:dc,_b2ParticleGroup_DestroyParticles:td,_b2PrismaticJoint_EnableLimit:Sc,_b2Fixture_TestPoint:mc,_b2MotorJoint_SetLinearOffset:Nc,_free:pn,_b2ParticleSystem_CreateParticle:wd,
_b2Body_SetLinearVelocity:ic,_b2CircleShape_CreateParticleGroup:Db,_b2WeldJointDef_Create:ld,_b2Body_GetAngularVelocity:Wb,_b2Body_ApplyForceToCenter:Sb,_b2DistanceJointDef_InitializeAndCreate:Fc,_b2Body_ApplyForce:Rb,_b2RevoluteJoint_SetMotorSpeed:jd,_b2Body_GetPosition:ac,_b2World_CreateBody:rc,_b2Body_GetLinearVelocity:Yb,_b2Body_SetMassData:jc,_b2MouseJointDef_Create:Rc,_b2ParticleSystem_GetColorBuffer:xd,_b2DistanceJointDef_Create:Ec,_b2ParticleSystem_GetPositionBuffer:zd,_b2CircleShape_DestroyParticlesInShape:Eb,
_b2World_QueryAABB:xc,_b2PolygonShape_DestroyParticlesInShape_4:Pb,_b2RevoluteJointDef_InitializeAndCreate:id,_b2GearJointDef_Create:Jc,_b2PrismaticJoint_IsLimitEnabled:Xc,_b2Contact_GetWorldManifold:Dc,_b2WheelJoint_SetSpringFrequencyHz:od,_b2Body_ApplyTorque:Tb,_b2ParticleGroup_ApplyLinearImpulse:sd,_b2PrismaticJointDef_InitializeAndCreate:$c,_memset:xn,_b2MotorJointDef_Create:Oc,_b2World_DestroyBody:uc,_b2RevoluteJointDef_Create:hd,_b2ParticleGroup_GetParticleCount:vd,_b2World_SetGravity:Ac,_b2PrismaticJoint_EnableMotor:Tc,
_b2PolygonShape_CreateParticleGroup_4:Ob,_b2PolygonShape_CreateFixture_8:Nb,_b2Body_SetAngularVelocity:hc,_b2Body_GetWorldPoint:ec,_b2WheelJoint_SetMotorSpeed:nd,_b2FrictionJointDef_InitializeAndCreate:Hc,_b2World_SetContactListener:zc,_b2ParticleSystem_SetDamping:Bd,_b2Body_SetType:lc,_b2Body_SetTransform:kc,_b2CircleShape_CreateFixture:Bb,_b2RevoluteJoint_GetJointAngle:ed,_b2ParticleGroup_ApplyForce:rd,_malloc:on,_b2Contact_GetManifold:Cc,_b2RevoluteJoint_IsMotorEnabled:gd,_b2ParticleSystem_GetVelocityBuffer:Ad,
_b2RevoluteJoint_IsLimitEnabled:fd,_b2World_DestroyParticleSystem:wc,_b2RevoluteJoint_EnableMotor:dd,_b2Body_GetTransform:bc,_b2WeldJointDef_InitializeAndCreate:md,_b2EdgeShape_CreateFixture:Fb,_b2Body_GetType:cc,_b2Manifold_GetPointCount:yb,_b2ParticleSystem_SetDensity:Cd,_b2PrismaticJoint_GetMotorForce:Wc,_b2Joint_GetBodyA:Kc,_b2PulleyJointDef_InitializeAndCreate:bd,_b2Joint_GetBodyB:Lc,_b2ParticleSystem_GetParticleCount:yd,_b2MouseJoint_SetTarget:Qc,_b2Body_ApplyAngularImpulse:Qb,_b2ChainShape_CreateFixture:zb,
_b2World_DestroyJoint:vc,_b2MotorJoint_SetAngularOffset:Mc,_b2World_Delete:tc,_b2PrismaticJoint_GetJointTranslation:Uc,_i64Add:zn,_b2Body_GetMass:$b,_b2Body_GetAngle:Vb,_b2ParticleGroup_GetBufferIndex:ud,_b2WheelJointDef_InitializeAndCreate:qd,_b2World_Step:Bc,_b2PrismaticJointDef_Create:_c,_b2WheelJointDef_Create:pd,_b2PulleyJointDef_Create:ad,_b2Body_GetInertia:Xb,_memmove:Bn,_b2PrismaticJoint_SetMotorSpeed:Zc,__GLOBAL__I_a:Yd,runPostSets:wn,stackAlloc:qb,stackSave:rb,stackRestore:sb,setThrew:tb,
setTempRet0:wb,getTempRet0:xb,dynCall_diiiiid:Pn,dynCall_ii:Qn,dynCall_viiiii:Rn,dynCall_did:Sn,dynCall_vi:Tn,dynCall_diiiid:Un,dynCall_vii:Vn,dynCall_iiii:Wn,dynCall_viii:Xn,dynCall_v:Yn,dynCall_viid:Zn,dynCall_iiiii:_n,dynCall_viiiiii:$n,dynCall_iii:ao,dynCall_iiiiii:bo,dynCall_viiii:co}}({"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,"invoke_diiiiid":invoke_diiiiid,"invoke_ii":invoke_ii,"invoke_viiiii":invoke_viiiii,"invoke_did":invoke_did,"invoke_vi":invoke_vi,"invoke_diiiid":invoke_diiiid,"invoke_vii":invoke_vii,"invoke_iiii":invoke_iiii,"invoke_viii":invoke_viii,"invoke_v":invoke_v,"invoke_viid":invoke_viid,"invoke_iiiii":invoke_iiiii,"invoke_viiiiii":invoke_viiiiii,"invoke_iii":invoke_iii,"invoke_iiiiii":invoke_iiiiii,"invoke_viiii":invoke_viiii,
"_cosf":_cosf,"__ZSt9terminatev":__ZSt9terminatev,"_b2WorldPreSolve":_b2WorldPreSolve,"___cxa_is_number_type":___cxa_is_number_type,"___cxa_allocate_exception":___cxa_allocate_exception,"___cxa_find_matching_catch":___cxa_find_matching_catch,"_fflush":_fflush,"_time":_time,"__exit":__exit,"___setErrNo":___setErrNo,"_sbrk":_sbrk,"___cxa_begin_catch":___cxa_begin_catch,"_sinf":_sinf,"___resumeException":___resumeException,"__ZSt18uncaught_exceptionv":__ZSt18uncaught_exceptionv,"_b2WorldRayCastCallback":_b2WorldRayCastCallback,
"_emscripten_memcpy_big":_emscripten_memcpy_big,"_floorf":_floorf,"_sqrtf":_sqrtf,"_b2WorldBeginContactBody":_b2WorldBeginContactBody,"___errno_location":___errno_location,"__ZNSt9exceptionD2Ev":__ZNSt9exceptionD2Ev,"___cxa_throw":___cxa_throw,"_sysconf":_sysconf,"_abort":_abort,"___cxa_does_inherit":___cxa_does_inherit,"_b2WorldEndContactBody":_b2WorldEndContactBody,"_b2WorldQueryAABB":_b2WorldQueryAABB,"_b2WorldPostSolve":_b2WorldPostSolve,"_exit":_exit,"___cxa_pure_virtual":___cxa_pure_virtual,
"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"cttz_i8":cttz_i8,"ctlz_i8":ctlz_i8,"NaN":NaN,"Infinity":Infinity,"__ZTISt9exception":__ZTISt9exception},buffer);var _b2PrismaticJoint_IsMotorEnabled=Module["_b2PrismaticJoint_IsMotorEnabled"]=asm["_b2PrismaticJoint_IsMotorEnabled"];var _b2Body_GetWorldVector=Module["_b2Body_GetWorldVector"]=asm["_b2Body_GetWorldVector"];var _strlen=Module["_strlen"]=asm["_strlen"];
var _b2Body_GetLocalVector=Module["_b2Body_GetLocalVector"]=asm["_b2Body_GetLocalVector"];var _b2PrismaticJoint_GetMotorSpeed=Module["_b2PrismaticJoint_GetMotorSpeed"]=asm["_b2PrismaticJoint_GetMotorSpeed"];var _b2RopeJointDef_Create=Module["_b2RopeJointDef_Create"]=asm["_b2RopeJointDef_Create"];var _b2World_CreateParticleSystem=Module["_b2World_CreateParticleSystem"]=asm["_b2World_CreateParticleSystem"];var _b2ParticleSystem_SetRadius=Module["_b2ParticleSystem_SetRadius"]=asm["_b2ParticleSystem_SetRadius"];
var _b2FrictionJointDef_Create=Module["_b2FrictionJointDef_Create"]=asm["_b2FrictionJointDef_Create"];var _b2World_RayCast=Module["_b2World_RayCast"]=asm["_b2World_RayCast"];var _b2MotorJointDef_InitializeAndCreate=Module["_b2MotorJointDef_InitializeAndCreate"]=asm["_b2MotorJointDef_InitializeAndCreate"];var _b2GearJoint_GetRatio=Module["_b2GearJoint_GetRatio"]=asm["_b2GearJoint_GetRatio"];var _b2Body_GetLocalPoint=Module["_b2Body_GetLocalPoint"]=asm["_b2Body_GetLocalPoint"];
var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _b2RevoluteJoint_EnableLimit=Module["_b2RevoluteJoint_EnableLimit"]=asm["_b2RevoluteJoint_EnableLimit"];var _b2Body_DestroyFixture=Module["_b2Body_DestroyFixture"]=asm["_b2Body_DestroyFixture"];var _b2World_Create=Module["_b2World_Create"]=asm["_b2World_Create"];var _b2PolygonShape_CreateFixture_3=Module["_b2PolygonShape_CreateFixture_3"]=asm["_b2PolygonShape_CreateFixture_3"];
var _b2PolygonShape_CreateFixture_6=Module["_b2PolygonShape_CreateFixture_6"]=asm["_b2PolygonShape_CreateFixture_6"];var _b2PolygonShape_CreateFixture_7=Module["_b2PolygonShape_CreateFixture_7"]=asm["_b2PolygonShape_CreateFixture_7"];var _b2PolygonShape_CreateFixture_4=Module["_b2PolygonShape_CreateFixture_4"]=asm["_b2PolygonShape_CreateFixture_4"];var _b2PolygonShape_CreateFixture_5=Module["_b2PolygonShape_CreateFixture_5"]=asm["_b2PolygonShape_CreateFixture_5"];
var _b2Body_SetAwake=Module["_b2Body_SetAwake"]=asm["_b2Body_SetAwake"];var _b2Body_GetWorldCenter=Module["_b2Body_GetWorldCenter"]=asm["_b2Body_GetWorldCenter"];var _b2ParticleGroup_DestroyParticles=Module["_b2ParticleGroup_DestroyParticles"]=asm["_b2ParticleGroup_DestroyParticles"];var _b2PrismaticJoint_EnableLimit=Module["_b2PrismaticJoint_EnableLimit"]=asm["_b2PrismaticJoint_EnableLimit"];var _b2Fixture_TestPoint=Module["_b2Fixture_TestPoint"]=asm["_b2Fixture_TestPoint"];
var _b2MotorJoint_SetLinearOffset=Module["_b2MotorJoint_SetLinearOffset"]=asm["_b2MotorJoint_SetLinearOffset"];var _free=Module["_free"]=asm["_free"];var _b2ParticleSystem_CreateParticle=Module["_b2ParticleSystem_CreateParticle"]=asm["_b2ParticleSystem_CreateParticle"];var _b2Body_SetLinearVelocity=Module["_b2Body_SetLinearVelocity"]=asm["_b2Body_SetLinearVelocity"];var _b2CircleShape_CreateParticleGroup=Module["_b2CircleShape_CreateParticleGroup"]=asm["_b2CircleShape_CreateParticleGroup"];
var _b2WeldJointDef_Create=Module["_b2WeldJointDef_Create"]=asm["_b2WeldJointDef_Create"];var _b2Body_GetAngularVelocity=Module["_b2Body_GetAngularVelocity"]=asm["_b2Body_GetAngularVelocity"];var _b2Body_ApplyForceToCenter=Module["_b2Body_ApplyForceToCenter"]=asm["_b2Body_ApplyForceToCenter"];var _b2DistanceJointDef_InitializeAndCreate=Module["_b2DistanceJointDef_InitializeAndCreate"]=asm["_b2DistanceJointDef_InitializeAndCreate"];var _b2Body_ApplyForce=Module["_b2Body_ApplyForce"]=asm["_b2Body_ApplyForce"];
var _b2RevoluteJoint_SetMotorSpeed=Module["_b2RevoluteJoint_SetMotorSpeed"]=asm["_b2RevoluteJoint_SetMotorSpeed"];var _b2Body_GetPosition=Module["_b2Body_GetPosition"]=asm["_b2Body_GetPosition"];var _b2World_CreateBody=Module["_b2World_CreateBody"]=asm["_b2World_CreateBody"];var _b2Body_GetLinearVelocity=Module["_b2Body_GetLinearVelocity"]=asm["_b2Body_GetLinearVelocity"];var _b2Body_SetMassData=Module["_b2Body_SetMassData"]=asm["_b2Body_SetMassData"];
var _b2MouseJointDef_Create=Module["_b2MouseJointDef_Create"]=asm["_b2MouseJointDef_Create"];var _b2ParticleSystem_GetColorBuffer=Module["_b2ParticleSystem_GetColorBuffer"]=asm["_b2ParticleSystem_GetColorBuffer"];var _b2DistanceJointDef_Create=Module["_b2DistanceJointDef_Create"]=asm["_b2DistanceJointDef_Create"];var _b2ParticleSystem_GetPositionBuffer=Module["_b2ParticleSystem_GetPositionBuffer"]=asm["_b2ParticleSystem_GetPositionBuffer"];
var _b2CircleShape_DestroyParticlesInShape=Module["_b2CircleShape_DestroyParticlesInShape"]=asm["_b2CircleShape_DestroyParticlesInShape"];var _b2World_QueryAABB=Module["_b2World_QueryAABB"]=asm["_b2World_QueryAABB"];var _b2PolygonShape_DestroyParticlesInShape_4=Module["_b2PolygonShape_DestroyParticlesInShape_4"]=asm["_b2PolygonShape_DestroyParticlesInShape_4"];var _b2RevoluteJointDef_InitializeAndCreate=Module["_b2RevoluteJointDef_InitializeAndCreate"]=asm["_b2RevoluteJointDef_InitializeAndCreate"];
var _b2GearJointDef_Create=Module["_b2GearJointDef_Create"]=asm["_b2GearJointDef_Create"];var _b2PrismaticJoint_IsLimitEnabled=Module["_b2PrismaticJoint_IsLimitEnabled"]=asm["_b2PrismaticJoint_IsLimitEnabled"];var _b2Contact_GetWorldManifold=Module["_b2Contact_GetWorldManifold"]=asm["_b2Contact_GetWorldManifold"];var _b2WheelJoint_SetSpringFrequencyHz=Module["_b2WheelJoint_SetSpringFrequencyHz"]=asm["_b2WheelJoint_SetSpringFrequencyHz"];var _b2Body_ApplyTorque=Module["_b2Body_ApplyTorque"]=asm["_b2Body_ApplyTorque"];
var _b2ParticleGroup_ApplyLinearImpulse=Module["_b2ParticleGroup_ApplyLinearImpulse"]=asm["_b2ParticleGroup_ApplyLinearImpulse"];var _b2PrismaticJointDef_InitializeAndCreate=Module["_b2PrismaticJointDef_InitializeAndCreate"]=asm["_b2PrismaticJointDef_InitializeAndCreate"];var _memset=Module["_memset"]=asm["_memset"];var _b2MotorJointDef_Create=Module["_b2MotorJointDef_Create"]=asm["_b2MotorJointDef_Create"];var _b2World_DestroyBody=Module["_b2World_DestroyBody"]=asm["_b2World_DestroyBody"];
var _b2RevoluteJointDef_Create=Module["_b2RevoluteJointDef_Create"]=asm["_b2RevoluteJointDef_Create"];var _b2ParticleGroup_GetParticleCount=Module["_b2ParticleGroup_GetParticleCount"]=asm["_b2ParticleGroup_GetParticleCount"];var _b2World_SetGravity=Module["_b2World_SetGravity"]=asm["_b2World_SetGravity"];var _b2PrismaticJoint_EnableMotor=Module["_b2PrismaticJoint_EnableMotor"]=asm["_b2PrismaticJoint_EnableMotor"];
var _b2PolygonShape_CreateParticleGroup_4=Module["_b2PolygonShape_CreateParticleGroup_4"]=asm["_b2PolygonShape_CreateParticleGroup_4"];var _b2PolygonShape_CreateFixture_8=Module["_b2PolygonShape_CreateFixture_8"]=asm["_b2PolygonShape_CreateFixture_8"];var _b2Body_SetAngularVelocity=Module["_b2Body_SetAngularVelocity"]=asm["_b2Body_SetAngularVelocity"];var _b2Body_GetWorldPoint=Module["_b2Body_GetWorldPoint"]=asm["_b2Body_GetWorldPoint"];
var _b2WheelJoint_SetMotorSpeed=Module["_b2WheelJoint_SetMotorSpeed"]=asm["_b2WheelJoint_SetMotorSpeed"];var _b2FrictionJointDef_InitializeAndCreate=Module["_b2FrictionJointDef_InitializeAndCreate"]=asm["_b2FrictionJointDef_InitializeAndCreate"];var _b2World_SetContactListener=Module["_b2World_SetContactListener"]=asm["_b2World_SetContactListener"];var _b2ParticleSystem_SetDamping=Module["_b2ParticleSystem_SetDamping"]=asm["_b2ParticleSystem_SetDamping"];
var _b2Body_SetType=Module["_b2Body_SetType"]=asm["_b2Body_SetType"];var _b2Body_SetTransform=Module["_b2Body_SetTransform"]=asm["_b2Body_SetTransform"];var _b2CircleShape_CreateFixture=Module["_b2CircleShape_CreateFixture"]=asm["_b2CircleShape_CreateFixture"];var _b2RevoluteJoint_GetJointAngle=Module["_b2RevoluteJoint_GetJointAngle"]=asm["_b2RevoluteJoint_GetJointAngle"];var _b2ParticleGroup_ApplyForce=Module["_b2ParticleGroup_ApplyForce"]=asm["_b2ParticleGroup_ApplyForce"];
var _malloc=Module["_malloc"]=asm["_malloc"];var _b2Contact_GetManifold=Module["_b2Contact_GetManifold"]=asm["_b2Contact_GetManifold"];var _b2RevoluteJoint_IsMotorEnabled=Module["_b2RevoluteJoint_IsMotorEnabled"]=asm["_b2RevoluteJoint_IsMotorEnabled"];var _b2ParticleSystem_GetVelocityBuffer=Module["_b2ParticleSystem_GetVelocityBuffer"]=asm["_b2ParticleSystem_GetVelocityBuffer"];var _b2RevoluteJoint_IsLimitEnabled=Module["_b2RevoluteJoint_IsLimitEnabled"]=asm["_b2RevoluteJoint_IsLimitEnabled"];
var _b2World_DestroyParticleSystem=Module["_b2World_DestroyParticleSystem"]=asm["_b2World_DestroyParticleSystem"];var _b2RevoluteJoint_EnableMotor=Module["_b2RevoluteJoint_EnableMotor"]=asm["_b2RevoluteJoint_EnableMotor"];var _b2Body_GetTransform=Module["_b2Body_GetTransform"]=asm["_b2Body_GetTransform"];var _b2WeldJointDef_InitializeAndCreate=Module["_b2WeldJointDef_InitializeAndCreate"]=asm["_b2WeldJointDef_InitializeAndCreate"];
var _b2EdgeShape_CreateFixture=Module["_b2EdgeShape_CreateFixture"]=asm["_b2EdgeShape_CreateFixture"];var _b2Body_GetType=Module["_b2Body_GetType"]=asm["_b2Body_GetType"];var _b2Manifold_GetPointCount=Module["_b2Manifold_GetPointCount"]=asm["_b2Manifold_GetPointCount"];var _b2ParticleSystem_SetDensity=Module["_b2ParticleSystem_SetDensity"]=asm["_b2ParticleSystem_SetDensity"];var _b2PrismaticJoint_GetMotorForce=Module["_b2PrismaticJoint_GetMotorForce"]=asm["_b2PrismaticJoint_GetMotorForce"];
var _b2Joint_GetBodyA=Module["_b2Joint_GetBodyA"]=asm["_b2Joint_GetBodyA"];var _b2PulleyJointDef_InitializeAndCreate=Module["_b2PulleyJointDef_InitializeAndCreate"]=asm["_b2PulleyJointDef_InitializeAndCreate"];var _b2Joint_GetBodyB=Module["_b2Joint_GetBodyB"]=asm["_b2Joint_GetBodyB"];var _b2ParticleSystem_GetParticleCount=Module["_b2ParticleSystem_GetParticleCount"]=asm["_b2ParticleSystem_GetParticleCount"];var _b2MouseJoint_SetTarget=Module["_b2MouseJoint_SetTarget"]=asm["_b2MouseJoint_SetTarget"];
var _b2Body_ApplyAngularImpulse=Module["_b2Body_ApplyAngularImpulse"]=asm["_b2Body_ApplyAngularImpulse"];var _b2ChainShape_CreateFixture=Module["_b2ChainShape_CreateFixture"]=asm["_b2ChainShape_CreateFixture"];var _b2World_DestroyJoint=Module["_b2World_DestroyJoint"]=asm["_b2World_DestroyJoint"];var _b2MotorJoint_SetAngularOffset=Module["_b2MotorJoint_SetAngularOffset"]=asm["_b2MotorJoint_SetAngularOffset"];var _b2World_Delete=Module["_b2World_Delete"]=asm["_b2World_Delete"];
var _b2PrismaticJoint_GetJointTranslation=Module["_b2PrismaticJoint_GetJointTranslation"]=asm["_b2PrismaticJoint_GetJointTranslation"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _b2Body_GetMass=Module["_b2Body_GetMass"]=asm["_b2Body_GetMass"];var _b2Body_GetAngle=Module["_b2Body_GetAngle"]=asm["_b2Body_GetAngle"];var _b2ParticleGroup_GetBufferIndex=Module["_b2ParticleGroup_GetBufferIndex"]=asm["_b2ParticleGroup_GetBufferIndex"];
var _b2WheelJointDef_InitializeAndCreate=Module["_b2WheelJointDef_InitializeAndCreate"]=asm["_b2WheelJointDef_InitializeAndCreate"];var _b2World_Step=Module["_b2World_Step"]=asm["_b2World_Step"];var _b2PrismaticJointDef_Create=Module["_b2PrismaticJointDef_Create"]=asm["_b2PrismaticJointDef_Create"];var _b2WheelJointDef_Create=Module["_b2WheelJointDef_Create"]=asm["_b2WheelJointDef_Create"];var _b2PulleyJointDef_Create=Module["_b2PulleyJointDef_Create"]=asm["_b2PulleyJointDef_Create"];
var _b2Body_GetInertia=Module["_b2Body_GetInertia"]=asm["_b2Body_GetInertia"];var _memmove=Module["_memmove"]=asm["_memmove"];var _b2PrismaticJoint_SetMotorSpeed=Module["_b2PrismaticJoint_SetMotorSpeed"]=asm["_b2PrismaticJoint_SetMotorSpeed"];var __GLOBAL__I_a=Module["__GLOBAL__I_a"]=asm["__GLOBAL__I_a"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var dynCall_diiiiid=Module["dynCall_diiiiid"]=asm["dynCall_diiiiid"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];
var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_did=Module["dynCall_did"]=asm["dynCall_did"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_diiiid=Module["dynCall_diiiid"]=asm["dynCall_diiiid"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];
var dynCall_viid=Module["dynCall_viid"]=asm["dynCall_viid"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];
Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];
var i64Math=function(){var goog={math:{}};goog.math.Long=function(low,high){this.low_=low|0;this.high_=high|0};goog.math.Long.IntCache_={};goog.math.Long.fromInt=function(value){if(-128<=value&&value<128){var cachedObj=goog.math.Long.IntCache_[value];if(cachedObj)return cachedObj}var obj=new goog.math.Long(value|0,value<0?-1:0);if(-128<=value&&value<128)goog.math.Long.IntCache_[value]=obj;return obj};goog.math.Long.fromNumber=function(value){if(isNaN(value)||!isFinite(value))return goog.math.Long.ZERO;
else if(value<=-goog.math.Long.TWO_PWR_63_DBL_)return goog.math.Long.MIN_VALUE;else if(value+1>=goog.math.Long.TWO_PWR_63_DBL_)return goog.math.Long.MAX_VALUE;else if(value<0)return goog.math.Long.fromNumber(-value).negate();else return new goog.math.Long(value%goog.math.Long.TWO_PWR_32_DBL_|0,value/goog.math.Long.TWO_PWR_32_DBL_|0)};goog.math.Long.fromBits=function(lowBits,highBits){return new goog.math.Long(lowBits,highBits)};goog.math.Long.fromString=function(str,opt_radix){if(str.length==0)throw Error("number format error: empty string");
var radix=opt_radix||10;if(radix<2||36<radix)throw Error("radix out of range: "+radix);if(str.charAt(0)=="-")return goog.math.Long.fromString(str.substring(1),radix).negate();else if(str.indexOf("-")>=0)throw Error('number format error: interior "-" character: '+str);var radixToPower=goog.math.Long.fromNumber(Math.pow(radix,8));var result=goog.math.Long.ZERO;for(var i=0;i<str.length;i+=8){var size=Math.min(8,str.length-i);var value=parseInt(str.substring(i,i+size),radix);if(size<8){var power=goog.math.Long.fromNumber(Math.pow(radix,
size));result=result.multiply(power).add(goog.math.Long.fromNumber(value))}else{result=result.multiply(radixToPower);result=result.add(goog.math.Long.fromNumber(value))}}return result};goog.math.Long.TWO_PWR_16_DBL_=1<<16;goog.math.Long.TWO_PWR_24_DBL_=1<<24;goog.math.Long.TWO_PWR_32_DBL_=goog.math.Long.TWO_PWR_16_DBL_*goog.math.Long.TWO_PWR_16_DBL_;goog.math.Long.TWO_PWR_31_DBL_=goog.math.Long.TWO_PWR_32_DBL_/2;goog.math.Long.TWO_PWR_48_DBL_=goog.math.Long.TWO_PWR_32_DBL_*goog.math.Long.TWO_PWR_16_DBL_;
goog.math.Long.TWO_PWR_64_DBL_=goog.math.Long.TWO_PWR_32_DBL_*goog.math.Long.TWO_PWR_32_DBL_;goog.math.Long.TWO_PWR_63_DBL_=goog.math.Long.TWO_PWR_64_DBL_/2;goog.math.Long.ZERO=goog.math.Long.fromInt(0);goog.math.Long.ONE=goog.math.Long.fromInt(1);goog.math.Long.NEG_ONE=goog.math.Long.fromInt(-1);goog.math.Long.MAX_VALUE=goog.math.Long.fromBits(4294967295|0,2147483647|0);goog.math.Long.MIN_VALUE=goog.math.Long.fromBits(0,2147483648|0);goog.math.Long.TWO_PWR_24_=goog.math.Long.fromInt(1<<24);goog.math.Long.prototype.toInt=
function(){return this.low_};goog.math.Long.prototype.toNumber=function(){return this.high_*goog.math.Long.TWO_PWR_32_DBL_+this.getLowBitsUnsigned()};goog.math.Long.prototype.toString=function(opt_radix){var radix=opt_radix||10;if(radix<2||36<radix)throw Error("radix out of range: "+radix);if(this.isZero())return"0";if(this.isNegative())if(this.equals(goog.math.Long.MIN_VALUE)){var radixLong=goog.math.Long.fromNumber(radix);var div=this.div(radixLong);var rem=div.multiply(radixLong).subtract(this);
return div.toString(radix)+rem.toInt().toString(radix)}else return"-"+this.negate().toString(radix);var radixToPower=goog.math.Long.fromNumber(Math.pow(radix,6));var rem=this;var result="";while(true){var remDiv=rem.div(radixToPower);var intval=rem.subtract(remDiv.multiply(radixToPower)).toInt();var digits=intval.toString(radix);rem=remDiv;if(rem.isZero())return digits+result;else{while(digits.length<6)digits="0"+digits;result=""+digits+result}}};goog.math.Long.prototype.getHighBits=function(){return this.high_};
goog.math.Long.prototype.getLowBits=function(){return this.low_};goog.math.Long.prototype.getLowBitsUnsigned=function(){return this.low_>=0?this.low_:goog.math.Long.TWO_PWR_32_DBL_+this.low_};goog.math.Long.prototype.getNumBitsAbs=function(){if(this.isNegative())if(this.equals(goog.math.Long.MIN_VALUE))return 64;else return this.negate().getNumBitsAbs();else{var val=this.high_!=0?this.high_:this.low_;for(var bit=31;bit>0;bit--)if((val&1<<bit)!=0)break;return this.high_!=0?bit+33:bit+1}};goog.math.Long.prototype.isZero=
function(){return this.high_==0&&this.low_==0};goog.math.Long.prototype.isNegative=function(){return this.high_<0};goog.math.Long.prototype.isOdd=function(){return(this.low_&1)==1};goog.math.Long.prototype.equals=function(other){return this.high_==other.high_&&this.low_==other.low_};goog.math.Long.prototype.notEquals=function(other){return this.high_!=other.high_||this.low_!=other.low_};goog.math.Long.prototype.lessThan=function(other){return this.compare(other)<0};goog.math.Long.prototype.lessThanOrEqual=
function(other){return this.compare(other)<=0};goog.math.Long.prototype.greaterThan=function(other){return this.compare(other)>0};goog.math.Long.prototype.greaterThanOrEqual=function(other){return this.compare(other)>=0};goog.math.Long.prototype.compare=function(other){if(this.equals(other))return 0;var thisNeg=this.isNegative();var otherNeg=other.isNegative();if(thisNeg&&!otherNeg)return-1;if(!thisNeg&&otherNeg)return 1;if(this.subtract(other).isNegative())return-1;else return 1};goog.math.Long.prototype.negate=
function(){if(this.equals(goog.math.Long.MIN_VALUE))return goog.math.Long.MIN_VALUE;else return this.not().add(goog.math.Long.ONE)};goog.math.Long.prototype.add=function(other){var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00+b00;c16+=c00>>>16;c00&=65535;c16+=a16+b16;c32+=c16>>>16;c16&=65535;c32+=a32+b32;c48+=c32>>>
16;c32&=65535;c48+=a48+b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)};goog.math.Long.prototype.subtract=function(other){return this.add(other.negate())};goog.math.Long.prototype.multiply=function(other){if(this.isZero())return goog.math.Long.ZERO;else if(other.isZero())return goog.math.Long.ZERO;if(this.equals(goog.math.Long.MIN_VALUE))return other.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO;else if(other.equals(goog.math.Long.MIN_VALUE))return this.isOdd()?goog.math.Long.MIN_VALUE:
goog.math.Long.ZERO;if(this.isNegative())if(other.isNegative())return this.negate().multiply(other.negate());else return this.negate().multiply(other).negate();else if(other.isNegative())return this.multiply(other.negate()).negate();if(this.lessThan(goog.math.Long.TWO_PWR_24_)&&other.lessThan(goog.math.Long.TWO_PWR_24_))return goog.math.Long.fromNumber(this.toNumber()*other.toNumber());var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>
16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00*b00;c16+=c00>>>16;c00&=65535;c16+=a16*b00;c32+=c16>>>16;c16&=65535;c16+=a00*b16;c32+=c16>>>16;c16&=65535;c32+=a32*b00;c48+=c32>>>16;c32&=65535;c32+=a16*b16;c48+=c32>>>16;c32&=65535;c32+=a00*b32;c48+=c32>>>16;c32&=65535;c48+=a48*b00+a32*b16+a16*b32+a00*b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)};goog.math.Long.prototype.div=function(other){if(other.isZero())throw Error("division by zero");
else if(this.isZero())return goog.math.Long.ZERO;if(this.equals(goog.math.Long.MIN_VALUE))if(other.equals(goog.math.Long.ONE)||other.equals(goog.math.Long.NEG_ONE))return goog.math.Long.MIN_VALUE;else if(other.equals(goog.math.Long.MIN_VALUE))return goog.math.Long.ONE;else{var halfThis=this.shiftRight(1);var approx=halfThis.div(other).shiftLeft(1);if(approx.equals(goog.math.Long.ZERO))return other.isNegative()?goog.math.Long.ONE:goog.math.Long.NEG_ONE;else{var rem=this.subtract(other.multiply(approx));
var result=approx.add(rem.div(other));return result}}else if(other.equals(goog.math.Long.MIN_VALUE))return goog.math.Long.ZERO;if(this.isNegative())if(other.isNegative())return this.negate().div(other.negate());else return this.negate().div(other).negate();else if(other.isNegative())return this.div(other.negate()).negate();var res=goog.math.Long.ZERO;var rem=this;while(rem.greaterThanOrEqual(other)){var approx=Math.max(1,Math.floor(rem.toNumber()/other.toNumber()));var log2=Math.ceil(Math.log(approx)/
Math.LN2);var delta=log2<=48?1:Math.pow(2,log2-48);var approxRes=goog.math.Long.fromNumber(approx);var approxRem=approxRes.multiply(other);while(approxRem.isNegative()||approxRem.greaterThan(rem)){approx-=delta;approxRes=goog.math.Long.fromNumber(approx);approxRem=approxRes.multiply(other)}if(approxRes.isZero())approxRes=goog.math.Long.ONE;res=res.add(approxRes);rem=rem.subtract(approxRem)}return res};goog.math.Long.prototype.modulo=function(other){return this.subtract(this.div(other).multiply(other))};
goog.math.Long.prototype.not=function(){return goog.math.Long.fromBits(~this.low_,~this.high_)};goog.math.Long.prototype.and=function(other){return goog.math.Long.fromBits(this.low_&other.low_,this.high_&other.high_)};goog.math.Long.prototype.or=function(other){return goog.math.Long.fromBits(this.low_|other.low_,this.high_|other.high_)};goog.math.Long.prototype.xor=function(other){return goog.math.Long.fromBits(this.low_^other.low_,this.high_^other.high_)};goog.math.Long.prototype.shiftLeft=function(numBits){numBits&=
63;if(numBits==0)return this;else{var low=this.low_;if(numBits<32){var high=this.high_;return goog.math.Long.fromBits(low<<numBits,high<<numBits|low>>>32-numBits)}else return goog.math.Long.fromBits(0,low<<numBits-32)}};goog.math.Long.prototype.shiftRight=function(numBits){numBits&=63;if(numBits==0)return this;else{var high=this.high_;if(numBits<32){var low=this.low_;return goog.math.Long.fromBits(low>>>numBits|high<<32-numBits,high>>numBits)}else return goog.math.Long.fromBits(high>>numBits-32,high>=
0?0:-1)}};goog.math.Long.prototype.shiftRightUnsigned=function(numBits){numBits&=63;if(numBits==0)return this;else{var high=this.high_;if(numBits<32){var low=this.low_;return goog.math.Long.fromBits(low>>>numBits|high<<32-numBits,high>>>numBits)}else if(numBits==32)return goog.math.Long.fromBits(high,0);else return goog.math.Long.fromBits(high>>>numBits-32,0)}};var navigator={appName:"Modern Browser"};var dbits;var canary=0xdeadbeefcafe;var j_lm=(canary&16777215)==15715070;function BigInteger(a,b,
c){if(a!=null)if("number"==typeof a)this.fromNumber(a,b,c);else if(b==null&&"string"!=typeof a)this.fromString(a,256);else this.fromString(a,b)}function nbi(){return new BigInteger(null)}function am1(i,x,w,j,c,n){while(--n>=0){var v=x*this[i++]+w[j]+c;c=Math.floor(v/67108864);w[j++]=v&67108863}return c}function am2(i,x,w,j,c,n){var xl=x&32767,xh=x>>15;while(--n>=0){var l=this[i]&32767;var h=this[i++]>>15;var m=xh*l+h*xl;l=xl*l+((m&32767)<<15)+w[j]+(c&1073741823);c=(l>>>30)+(m>>>15)+xh*h+(c>>>30);
w[j++]=l&1073741823}return c}function am3(i,x,w,j,c,n){var xl=x&16383,xh=x>>14;while(--n>=0){var l=this[i]&16383;var h=this[i++]>>14;var m=xh*l+h*xl;l=xl*l+((m&16383)<<14)+w[j]+c;c=(l>>28)+(m>>14)+xh*h;w[j++]=l&268435455}return c}if(j_lm&&navigator.appName=="Microsoft Internet Explorer"){BigInteger.prototype.am=am2;dbits=30}else if(j_lm&&navigator.appName!="Netscape"){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=
(1<<dbits)-1;BigInteger.prototype.DV=1<<dbits;var BI_FP=52;BigInteger.prototype.FV=Math.pow(2,BI_FP);BigInteger.prototype.F1=BI_FP-dbits;BigInteger.prototype.F2=2*dbits-BI_FP;var BI_RM="0123456789abcdefghijklmnopqrstuvwxyz";var BI_RC=new Array;var rr,vv;rr="0".charCodeAt(0);for(vv=0;vv<=9;++vv)BI_RC[rr++]=vv;rr="a".charCodeAt(0);for(vv=10;vv<36;++vv)BI_RC[rr++]=vv;rr="A".charCodeAt(0);for(vv=10;vv<36;++vv)BI_RC[rr++]=vv;function int2char(n){return BI_RM.charAt(n)}function intAt(s,i){var c=BI_RC[s.charCodeAt(i)];
return c==null?-1:c}function bnpCopyTo(r){for(var i=this.t-1;i>=0;--i)r[i]=this[i];r.t=this.t;r.s=this.s}function bnpFromInt(x){this.t=1;this.s=x<0?-1:0;if(x>0)this[0]=x;else if(x<-1)this[0]=x+DV;else this.t=0}function nbv(i){var r=nbi();r.fromInt(i);return r}function bnpFromString(s,b){var k;if(b==16)k=4;else if(b==8)k=3;else if(b==256)k=8;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else{this.fromRadix(s,b);return}this.t=0;this.s=0;var i=s.length,mi=false,sh=0;while(--i>=0){var x=k==8?s[i]&
255:intAt(s,i);if(x<0){if(s.charAt(i)=="-")mi=true;continue}mi=false;if(sh==0)this[this.t++]=x;else if(sh+k>this.DB){this[this.t-1]|=(x&(1<<this.DB-sh)-1)<<sh;this[this.t++]=x>>this.DB-sh}else this[this.t-1]|=x<<sh;sh+=k;if(sh>=this.DB)sh-=this.DB}if(k==8&&(s[0]&128)!=0){this.s=-1;if(sh>0)this[this.t-1]|=(1<<this.DB-sh)-1<<sh}this.clamp();if(mi)BigInteger.ZERO.subTo(this,this)}function bnpClamp(){var c=this.s&this.DM;while(this.t>0&&this[this.t-1]==c)--this.t}function bnToString(b){if(this.s<0)return"-"+
this.negate().toString(b);var k;if(b==16)k=4;else if(b==8)k=3;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else return this.toRadix(b);var km=(1<<k)-1,d,m=false,r="",i=this.t;var p=this.DB-i*this.DB%k;if(i-- >0){if(p<this.DB&&(d=this[i]>>p)>0){m=true;r=int2char(d)}while(i>=0){if(p<k){d=(this[i]&(1<<p)-1)<<k-p;d|=this[--i]>>(p+=this.DB-k)}else{d=this[i]>>(p-=k)&km;if(p<=0){p+=this.DB;--i}}if(d>0)m=true;if(m)r+=int2char(d)}}return m?r:"0"}function bnNegate(){var r=nbi();BigInteger.ZERO.subTo(this,
r);return r}function bnAbs(){return this.s<0?this.negate():this}function bnCompareTo(a){var r=this.s-a.s;if(r!=0)return r;var i=this.t;r=i-a.t;if(r!=0)return this.s<0?-r:r;while(--i>=0)if((r=this[i]-a[i])!=0)return r;return 0}function nbits(x){var r=1,t;if((t=x>>>16)!=0){x=t;r+=16}if((t=x>>8)!=0){x=t;r+=8}if((t=x>>4)!=0){x=t;r+=4}if((t=x>>2)!=0){x=t;r+=2}if((t=x>>1)!=0){x=t;r+=1}return r}function bnBitLength(){if(this.t<=0)return 0;return this.DB*(this.t-1)+nbits(this[this.t-1]^this.s&this.DM)}function bnpDLShiftTo(n,
r){var i;for(i=this.t-1;i>=0;--i)r[i+n]=this[i];for(i=n-1;i>=0;--i)r[i]=0;r.t=this.t+n;r.s=this.s}function bnpDRShiftTo(n,r){for(var i=n;i<this.t;++i)r[i-n]=this[i];r.t=Math.max(this.t-n,0);r.s=this.s}function bnpLShiftTo(n,r){var bs=n%this.DB;var cbs=this.DB-bs;var bm=(1<<cbs)-1;var ds=Math.floor(n/this.DB),c=this.s<<bs&this.DM,i;for(i=this.t-1;i>=0;--i){r[i+ds+1]=this[i]>>cbs|c;c=(this[i]&bm)<<bs}for(i=ds-1;i>=0;--i)r[i]=0;r[ds]=c;r.t=this.t+ds+1;r.s=this.s;r.clamp()}function bnpRShiftTo(n,r){r.s=
this.s;var ds=Math.floor(n/this.DB);if(ds>=this.t){r.t=0;return}var bs=n%this.DB;var cbs=this.DB-bs;var bm=(1<<bs)-1;r[0]=this[ds]>>bs;for(var i=ds+1;i<this.t;++i){r[i-ds-1]|=(this[i]&bm)<<cbs;r[i-ds]=this[i]>>bs}if(bs>0)r[this.t-ds-1]|=(this.s&bm)<<cbs;r.t=this.t-ds;r.clamp()}function bnpSubTo(a,r){var i=0,c=0,m=Math.min(a.t,this.t);while(i<m){c+=this[i]-a[i];r[i++]=c&this.DM;c>>=this.DB}if(a.t<this.t){c-=a.s;while(i<this.t){c+=this[i];r[i++]=c&this.DM;c>>=this.DB}c+=this.s}else{c+=this.s;while(i<
a.t){c-=a[i];r[i++]=c&this.DM;c>>=this.DB}c-=a.s}r.s=c<0?-1:0;if(c<-1)r[i++]=this.DV+c;else if(c>0)r[i++]=c;r.t=i;r.clamp()}function bnpMultiplyTo(a,r){var x=this.abs(),y=a.abs();var i=x.t;r.t=i+y.t;while(--i>=0)r[i]=0;for(i=0;i<y.t;++i)r[i+x.t]=x.am(0,y[i],r,i,0,x.t);r.s=0;r.clamp();if(this.s!=a.s)BigInteger.ZERO.subTo(r,r)}function bnpSquareTo(r){var x=this.abs();var i=r.t=2*x.t;while(--i>=0)r[i]=0;for(i=0;i<x.t-1;++i){var c=x.am(i,x[i],r,2*i,0,1);if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1))>=
x.DV){r[i+x.t]-=x.DV;r[i+x.t+1]=1}}if(r.t>0)r[r.t-1]+=x.am(i,x[i],r,2*i,0,1);r.s=0;r.clamp()}function bnpDivRemTo(m,q,r){var pm=m.abs();if(pm.t<=0)return;var pt=this.abs();if(pt.t<pm.t){if(q!=null)q.fromInt(0);if(r!=null)this.copyTo(r);return}if(r==null)r=nbi();var y=nbi(),ts=this.s,ms=m.s;var nsh=this.DB-nbits(pm[pm.t-1]);if(nsh>0){pm.lShiftTo(nsh,y);pt.lShiftTo(nsh,r)}else{pm.copyTo(y);pt.copyTo(r)}var ys=y.t;var y0=y[ys-1];if(y0==0)return;var yt=y0*(1<<this.F1)+(ys>1?y[ys-2]>>this.F2:0);var d1=
this.FV/yt,d2=(1<<this.F1)/yt,e=1<<this.F2;var i=r.t,j=i-ys,t=q==null?nbi():q;y.dlShiftTo(j,t);if(r.compareTo(t)>=0){r[r.t++]=1;r.subTo(t,r)}BigInteger.ONE.dlShiftTo(ys,t);t.subTo(y,y);while(y.t<ys)y[y.t++]=0;while(--j>=0){var qd=r[--i]==y0?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);if((r[i]+=y.am(0,qd,r,j,0,ys))<qd){y.dlShiftTo(j,t);r.subTo(t,r);while(r[i]<--qd)r.subTo(t,r)}}if(q!=null){r.drShiftTo(ys,q);if(ts!=ms)BigInteger.ZERO.subTo(q,q)}r.t=ys;r.clamp();if(nsh>0)r.rShiftTo(nsh,r);if(ts<0)BigInteger.ZERO.subTo(r,
r)}function bnMod(a){var r=nbi();this.abs().divRemTo(a,null,r);if(this.s<0&&r.compareTo(BigInteger.ZERO)>0)a.subTo(r,r);return r}function Classic(m){this.m=m}function cConvert(x){if(x.s<0||x.compareTo(this.m)>=0)return x.mod(this.m);else return x}function cRevert(x){return x}function cReduce(x){x.divRemTo(this.m,null,x)}function cMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}function cSqrTo(x,r){x.squareTo(r);this.reduce(r)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=
cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1)return 0;var x=this[0];if((x&1)==0)return 0;var y=x&3;y=y*(2-(x&15)*y)&15;y=y*(2-(x&255)*y)&255;y=y*(2-((x&65535)*y&65535))&65535;y=y*(2-x*y%this.DV)%this.DV;return y>0?this.DV-y:-y}function Montgomery(m){this.m=m;this.mp=m.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<<m.DB-15)-1;this.mt2=2*m.t}function montConvert(x){var r=nbi();x.abs().dlShiftTo(this.m.t,r);r.divRemTo(this.m,
null,r);if(x.s<0&&r.compareTo(BigInteger.ZERO)>0)this.m.subTo(r,r);return r}function montRevert(x){var r=nbi();x.copyTo(r);this.reduce(r);return r}function montReduce(x){while(x.t<=this.mt2)x[x.t++]=0;for(var i=0;i<this.m.t;++i){var j=x[i]&32767;var u0=j*this.mpl+((j*this.mph+(x[i]>>15)*this.mpl&this.um)<<15)&x.DM;j=i+this.m.t;x[j]+=this.m.am(0,u0,x,i,0,this.m.t);while(x[j]>=x.DV){x[j]-=x.DV;x[++j]++}}x.clamp();x.drShiftTo(this.m.t,x);if(x.compareTo(this.m)>=0)x.subTo(this.m,x)}function montSqrTo(x,
r){x.squareTo(r);this.reduce(r)}function montMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return(this.t>0?this[0]&1:this.s)==0}function bnpExp(e,z){if(e>4294967295||e<1)return BigInteger.ONE;var r=nbi(),r2=nbi(),g=z.convert(this),i=nbits(e)-1;g.copyTo(r);while(--i>=0){z.sqrTo(r,r2);if((e&
1<<i)>0)z.mulTo(r2,g,r);else{var t=r;r=r2;r2=t}}return z.revert(r)}function bnModPowInt(e,m){var z;if(e<256||m.isEven())z=new Classic(m);else z=new Montgomery(m);return this.exp(e,z)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=
bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=
bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);function bnpFromRadix(s,b){this.fromInt(0);if(b==null)b=10;var cs=this.chunkSize(b);var d=Math.pow(b,cs),mi=false,j=0,w=0;for(var i=0;i<s.length;++i){var x=intAt(s,i);if(x<0){if(s.charAt(i)=="-"&&this.signum()==0)mi=true;continue}w=b*w+x;if(++j>=cs){this.dMultiply(d);this.dAddOffset(w,0);j=0;w=0}}if(j>0){this.dMultiply(Math.pow(b,j));this.dAddOffset(w,0)}if(mi)BigInteger.ZERO.subTo(this,this)}function bnpChunkSize(r){return Math.floor(Math.LN2*
this.DB/Math.log(r))}function bnSigNum(){if(this.s<0)return-1;else if(this.t<=0||this.t==1&&this[0]<=0)return 0;else return 1}function bnpDMultiply(n){this[this.t]=this.am(0,n-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(n,w){if(n==0)return;while(this.t<=w)this[this.t++]=0;this[w]+=n;while(this[w]>=this.DV){this[w]-=this.DV;if(++w>=this.t)this[this.t++]=0;++this[w]}}function bnpToRadix(b){if(b==null)b=10;if(this.signum()==0||b<2||b>36)return"0";var cs=this.chunkSize(b);var a=Math.pow(b,
cs);var d=nbv(a),y=nbi(),z=nbi(),r="";this.divRemTo(d,y,z);while(y.signum()>0){r=(a+z.intValue()).toString(b).substr(1)+r;y.divRemTo(d,y,z)}return z.intValue().toString(b)+r}function bnIntValue(){if(this.s<0)if(this.t==1)return this[0]-this.DV;else{if(this.t==0)return-1}else if(this.t==1)return this[0];else if(this.t==0)return 0;return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]}function bnpAddTo(a,r){var i=0,c=0,m=Math.min(a.t,this.t);while(i<m){c+=this[i]+a[i];r[i++]=c&this.DM;c>>=this.DB}if(a.t<
this.t){c+=a.s;while(i<this.t){c+=this[i];r[i++]=c&this.DM;c>>=this.DB}c+=this.s}else{c+=this.s;while(i<a.t){c+=a[i];r[i++]=c&this.DM;c>>=this.DB}c+=a.s}r.s=c<0?-1:0;if(c>0)r[i++]=c;else if(c<-1)r[i++]=this.DV+c;r.t=i;r.clamp()}BigInteger.prototype.fromRadix=bnpFromRadix;BigInteger.prototype.chunkSize=bnpChunkSize;BigInteger.prototype.signum=bnSigNum;BigInteger.prototype.dMultiply=bnpDMultiply;BigInteger.prototype.dAddOffset=bnpDAddOffset;BigInteger.prototype.toRadix=bnpToRadix;BigInteger.prototype.intValue=
bnIntValue;BigInteger.prototype.addTo=bnpAddTo;var Wrapper={abs:function(l,h){var x=new goog.math.Long(l,h);var ret;if(x.isNegative())ret=x.negate();else ret=x;HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_},ensureTemps:function(){if(Wrapper.ensuredTemps)return;Wrapper.ensuredTemps=true;Wrapper.two32=new BigInteger;Wrapper.two32.fromString("4294967296",10);Wrapper.two64=new BigInteger;Wrapper.two64.fromString("18446744073709551616",10);Wrapper.temp1=new BigInteger;Wrapper.temp2=
new BigInteger},lh2bignum:function(l,h){var a=new BigInteger;a.fromString(h.toString(),10);var b=new BigInteger;a.multiplyTo(Wrapper.two32,b);var c=new BigInteger;c.fromString(l.toString(),10);var d=new BigInteger;c.addTo(b,d);return d},stringify:function(l,h,unsigned){var ret=(new goog.math.Long(l,h)).toString();if(unsigned&&ret[0]=="-"){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(ret,10);ret=new BigInteger;Wrapper.two64.addTo(bignum,ret);ret=ret.toString(10)}return ret},fromString:function(str,
base,min,max,unsigned){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(str,base);var bigmin=new BigInteger;bigmin.fromString(min,10);var bigmax=new BigInteger;bigmax.fromString(max,10);if(unsigned&&bignum.compareTo(BigInteger.ZERO)<0){var temp=new BigInteger;bignum.addTo(Wrapper.two64,temp);bignum=temp}var error=false;if(bignum.compareTo(bigmin)<0){bignum=bigmin;error=true}else if(bignum.compareTo(bigmax)>0){bignum=bigmax;error=true}var ret=goog.math.Long.fromString(bignum.toString());
HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_;if(error)throw"range error";}};return Wrapper}();
if(memoryInitializer)if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,STATIC_BASE)}else{addRunDependency("memory initializer");Browser.asyncLoad(memoryInitializer,function(data){HEAPU8.set(data,STATIC_BASE);removeRunDependency("memory initializer")},function(data){throw"could not load memory initializer "+memoryInitializer;})}
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;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"]&&shouldRunNow)run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};
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||[];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(!Module["noExitRuntime"])exit(ret)}catch(e){if(e instanceof ExitStatus)return;else if(e=="SimulateInfiniteLoop"){Module["noExitRuntime"]=true;return}else{if(e&&typeof e==="object"&&e.stack)Module.printErr("exception thrown: "+[e,e.stack]);throw e;}}finally{calledMain=true}};
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)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;ensureInitRuntime();preMain();if(ENVIRONMENT_IS_WEB&&preloadStartTime!==null)Module.printErr("pre-main prep time: "+(Date.now()-preloadStartTime)+" ms");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;exitRuntime();throw new ExitStatus(status);}Module["exit"]=Module.exit=exit;
function abort(text){if(text){Module.print(text);Module.printErr(text)}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";throw"abort() at "+stackTrace()+extra;}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0)Module["preInit"].pop()()}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();var Offsets={b2Body:{type:0,islandIndex:8,xf:12,xf0:28,sweep:44,linearVelocity:80,angularVelocity:88,force:92,torque:100,world:104,prev:108,next:112,fixtureList:116,fixtureCount:120,jointList:124,contactList:128,mass:132,invMass:136,I:140,invI:144,linearDamping:148,angularDamping:152,gravityScale:156,sleepTime:160,userData:164},b2Contact:{flags:4,prev:8,next:12,nodeA:16,nodeB:32,fixtureA:48,fixtureB:52,indexA:56,indexB:60,manifold:64,toiCount:128,toi:132,friction:136,restitution:140,tangentSpeed:144},
b2Fixture:{density:0,next:4,body:8,shape:12,friction:16,restitution:20,proxies:24,proxyCount:28,filter:32,isSensor:38,userData:40},b2ParticleGroup:{system:0,firstIndex:4,lastIndex:8,groupFlags:12,strength:16,prev:20,next:24,timestamp:28,mass:32,inertia:36,center:40,linearVelocity:48,angularVelocity:56,transform:60,userData:76},b2WorldManifold:{normal:0,points:8,separations:24},b2World:{bodyList:102960}};var FLT_EPSILON=1.1920929E-7;function b2Max(a,b){return new b2Vec2(Math.max(a.x,b.x),Math.max(a.y,b.y))}function b2Min(a,b){return new b2Vec2(Math.min(a.x,b.x),Math.min(a.y,b.y))}function b2Clamp(a,low,high){return b2Max(low,b2Min(a,high))}function b2Vec2(x,y){if(x===undefined)x=0;if(y===undefined)y=0;this.x=x;this.y=y}b2Vec2.Add=function(out,a,b){out.x=a.x+b.x;out.y=a.y+b.y};b2Vec2.CrossScalar=function(output,input,scalar){output.x=-scalar*input.y;output.y=scalar*input.x};
b2Vec2.Cross=function(a,b){return a.x*b.y-a.y*b.x};b2Vec2.MulScalar=function(out,input,scalar){out.x=input.x*scalar;out.y=input.y*scalar};b2Vec2.Mul=function(out,T,v){var Tp=T.p;var Tqc=T.q.c;var Tqs=T.q.s;var x=v.x;var y=v.y;out.x=Tqc*x-Tqs*y+Tp.x;out.y=Tqs*x+Tqc*y+Tp.y};b2Vec2.Normalize=function(out,input){var length=input.Length();if(length<FLT_EPSILON){out.x=0;out.y=0;return}var invLength=1/length;out.x=input.x*invLength;out.y=input.y*invLength};
b2Vec2.Sub=function(out,input,subtract){out.x=input.x-subtract.x;out.y=input.y-subtract.y};b2Vec2.prototype.Clone=function(){return new b2Vec2(this.x,this.y)};b2Vec2.prototype.Set=function(x,y){this.x=x;this.y=y};b2Vec2.prototype.Length=function(){var x=this.x;var y=this.y;return Math.sqrt(x*x+y*y)};b2Vec2.prototype.LengthSquared=function(){var x=this.x;var y=this.y;return x*x+y*y};function b2Rot(radians){if(radians===undefined)radians=0;this.s=Math.sin(radians);this.c=Math.cos(radians)}
b2Rot.prototype.Set=function(radians){this.s=Math.sin(radians);this.c=Math.cos(radians)};b2Rot.prototype.SetIdentity=function(){this.s=0;this.c=1};b2Rot.prototype.GetXAxis=function(){return new b2Vec2(this.c,this.s)};function b2Transform(position,rotation){if(position===undefined)position=new b2Vec2;if(rotation===undefined)rotation=new b2Rot;this.p=position;this.q=rotation}b2Transform.prototype.FromFloat64Array=function(arr){var p=this.p;var q=this.q;p.x=arr[0];p.y=arr[1];q.s=arr[2];q.c=arr[3]};
b2Transform.prototype.SetIdentity=function(){this.p.Set(0,0);this.q.SetIdentity()};function b2AABB(){this.lowerBound=new b2Vec2;this.upperBound=new b2Vec2}b2AABB.prototype.GetCenter=function(){var sum=new b2Vec2;b2Vec2.Add(sum,this.lowerBound,this.upperBound);b2Vec2.MulScalar(sum,sum,.5)};var b2Manifold_GetPointCount=Module.cwrap("b2Manifold_GetPointCount","number",["number"]);function b2Manifold(ptr){this.ptr=ptr}b2Manifold.prototype.GetPointCount=function(){return b2Manifold_GetPointCount(this.ptr)};var b2WorldManifold_points_offset=Offsets.b2WorldManifold.points;
function b2WorldManifold(ptr){this.buffer=new DataView(Module.HEAPU8.buffer,ptr);this.ptr=ptr}b2WorldManifold.prototype.GetPoint=function(i){var point=new b2Vec2;point.x=this.buffer.getFloat32(i*2+b2WorldManifold_points_offset,true);point.y=this.buffer.getFloat32(i*2+4+b2WorldManifold_points_offset,true);return point};var b2EdgeShape_CreateFixture=Module.cwrap("b2EdgeShape_CreateFixture","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);function b2EdgeShape(){this.hasVertex0=false;this.hasVertex3=false;this.vertex0=new b2Vec2;this.vertex1=new b2Vec2;this.vertex2=new b2Vec2;this.vertex3=new b2Vec2;this.type=b2Shape_Type_e_edge}
b2EdgeShape.prototype.Set=function(v1,v2){this.vertex1=v1;this.vertex2=v2;this.hasVertex0=false;this.hasVertex3=false};
b2EdgeShape.prototype._CreateFixture=function(body,fixtureDef){return b2EdgeShape_CreateFixture(body.ptr,fixtureDef.density,fixtureDef.friction,fixtureDef.isSensor,fixtureDef.restitution,fixtureDef.userData,fixtureDef.filter.categoryBits,fixtureDef.filter.groupIndex,fixtureDef.filter.maskBits,this.hasVertex0,this.hasVertex3,this.vertex0.x,this.vertex0.y,this.vertex1.x,this.vertex1.y,this.vertex2.x,this.vertex2.y,this.vertex3.x,this.vertex3.y)};var b2PolygonShape_CreateFixture_3=Module.cwrap("b2PolygonShape_CreateFixture_3","number",["number","number","number","number","number","number","number","number","number","number","number","number"]);var b2PolygonShape_CreateFixture_4=Module.cwrap("b2PolygonShape_CreateFixture_4","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
var b2PolygonShape_CreateFixture_5=Module.cwrap("b2PolygonShape_CreateFixture_5","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);var b2PolygonShape_CreateFixture_6=Module.cwrap("b2PolygonShape_CreateFixture_6","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
var b2PolygonShape_CreateFixture_7=Module.cwrap("b2PolygonShape_CreateFixture_7","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
var b2PolygonShape_CreateFixture_8=Module.cwrap("b2PolygonShape_CreateFixture_8","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
var b2PolygonShape_CreateParticleGroup_4=Module.cwrap("b2PolygonShape_CreateParticleGroup_4","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
var b2PolygonShape_DestroyParticlesInShape_4=Module.cwrap("b2PolygonShape_DestroyParticlesInShape_4","number",["number","number","number","number","number","number","number","number","number","number","number","number","number"]);function b2PolygonShape(){this.position=new b2Vec2;this.vertices=[];this.type=b2Shape_Type_e_polygon}
b2PolygonShape.prototype.SetAsBoxXY=function(hx,hy){this.vertices[0]=new b2Vec2(-hx,-hy);this.vertices[1]=new b2Vec2(hx,-hy);this.vertices[2]=new b2Vec2(hx,hy);this.vertices[3]=new b2Vec2(-hx,hy)};
b2PolygonShape.prototype.SetAsBoxXYCenterAngle=function(hx,hy,center,angle){this.vertices[0]=new b2Vec2(-hx,-hy);this.vertices[1]=new b2Vec2(hx,-hy);this.vertices[2]=new b2Vec2(hx,hy);this.vertices[3]=new b2Vec2(-hx,hy);var xf=new b2Transform;xf.p=center;xf.q.Set(angle);for(var i=0;i<4;i++)b2Vec2.Mul(this.vertices[i],xf,this.vertices[i])};
b2PolygonShape.prototype._CreateFixture=function(body,fixtureDef){var vertices=this.vertices;switch(vertices.length){case 3:var v0=vertices[0];var v1=vertices[1];var v2=vertices[2];return b2PolygonShape_CreateFixture_3(body.ptr,fixtureDef.density,fixtureDef.friction,fixtureDef.isSensor,fixtureDef.restitution,fixtureDef.userData,fixtureDef.filter.categoryBits,fixtureDef.filter.groupIndex,fixtureDef.filter.maskBits,v0.x,v0.y,v1.x,v1.y,v2.x,v2.y);break;case 4:var v0=vertices[0];var v1=vertices[1];var v2=
vertices[2];var v3=vertices[3];return b2PolygonShape_CreateFixture_4(body.ptr,fixtureDef.density,fixtureDef.friction,fixtureDef.isSensor,fixtureDef.restitution,fixtureDef.userData,fixtureDef.filter.categoryBits,fixtureDef.filter.groupIndex,fixtureDef.filter.maskBits,v0.x,v0.y,v1.x,v1.y,v2.x,v2.y,v3.x,v3.y);break;case 5:var v0=vertices[0];var v1=vertices[1];var v2=vertices[2];var v3=vertices[3];var v4=vertices[4];return b2PolygonShape_CreateFixture_5(body.ptr,fixtureDef.density,fixtureDef.friction,
fixtureDef.isSensor,fixtureDef.restitution,fixtureDef.userData,fixtureDef.filter.categoryBits,fixtureDef.filter.groupIndex,fixtureDef.filter.maskBits,v0.x,v0.y,v1.x,v1.y,v2.x,v2.y,v3.x,v3.y,v4.x,v4.y);break;case 6:var v0=vertices[0];var v1=vertices[1];var v2=vertices[2];var v3=vertices[3];var v4=vertices[4];var v5=vertices[5];return b2PolygonShape_CreateFixture_6(body.ptr,fixtureDef.density,fixtureDef.friction,fixtureDef.isSensor,fixtureDef.restitution,fixtureDef.userData,fixtureDef.filter.categoryBits,
fixtureDef.filter.groupIndex,fixtureDef.filter.maskBits,v0.x,v0.y,v1.x,v1.y,v2.x,v2.y,v3.x,v3.y,v4.x,v4.y,v5.x,v5.y);break;case 7:var v0=vertices[0];var v1=vertices[1];var v2=vertices[2];var v3=vertices[3];var v4=vertices[4];var v5=vertices[5];var v6=vertices[6];return b2PolygonShape_CreateFixture_7(body.ptr,fixtureDef.density,fixtureDef.friction,fixtureDef.isSensor,fixtureDef.restitution,fixtureDef.userData,fixtureDef.filter.categoryBits,fixtureDef.filter.groupIndex,fixtureDef.filter.maskBits,v0.x,
v0.y,v1.x,v1.y,v2.x,v2.y,v3.x,v3.y,v4.x,v4.y,v5.x,v5.y,v6.x,v6.y);break;case 8:var v0=vertices[0];var v1=vertices[1];var v2=vertices[2];var v3=vertices[3];var v4=vertices[4];var v5=vertices[5];var v6=vertices[6];var v7=vertices[7];return b2PolygonShape_CreateFixture_8(body.ptr,fixtureDef.density,fixtureDef.friction,fixtureDef.isSensor,fixtureDef.restitution,fixtureDef.userData,fixtureDef.filter.categoryBits,fixtureDef.filter.groupIndex,fixtureDef.filter.maskBits,v0.x,v0.y,v1.x,v1.y,v2.x,v2.y,v3.x,
v3.y,v4.x,v4.y,v5.x,v5.y,v6.x,v6.y,v6.x,v7.y);break}};
b2PolygonShape.prototype._CreateParticleGroup=function(particleSystem,pgd){var v=this.vertices;switch(v.length){case 3:break;case 4:return b2PolygonShape_CreateParticleGroup_4(particleSystem.ptr,pgd.angle,pgd.angularVelocity,pgd.color.r,pgd.color.g,pgd.color.b,pgd.color.a,pgd.flags,pgd.group.ptr,pgd.groupFlags,pgd.lifetime,pgd.linearVelocity.x,pgd.linearVelocity.y,pgd.position.x,pgd.position.y,pgd.positionData,pgd.particleCount,pgd.strength,pgd.stride,pgd.userData,v[0].x,v[0].y,v[1].x,v[1].y,v[2].x,
v[2].y,v[3].x,v[3].y);break}};b2PolygonShape.prototype._DestroyParticlesInShape=function(ps,xf){var v=this.vertices;switch(v.length){case 3:break;case 4:return b2PolygonShape_DestroyParticlesInShape_4(ps.ptr,v[0].x,v[0].y,v[1].x,v[1].y,v[2].x,v[2].y,v[3].x,v[3].y,xf.p.x,xf.p.y,xf.q.s,xf.q.c);break}};
b2PolygonShape.prototype.Validate=function(){for(var i=0,max=this.vertices.length;i<max;++i){var i1=i;var i2=i<max-1?i1+1:0;var p=this.vertices[i1];var e=this.vertices[i2];var eSubP=new b2Vec2;b2Vec2.Sub(eSubP,e,p);for(var j=0;j<max;++j){if(j==i1||j==i2)continue;var v=new b2Vec2;b2Vec2.Sub(v,this.vertices[j],p);var c=b2Vec2.Cross(eSubP,v);if(c<0)return false}}return true};var b2Shape_Type_e_circle=0;var b2Shape_Type_e_edge=1;var b2Shape_Type_e_polygon=2;var b2Shape_Type_e_chain=3;var b2Shape_Type_e_typeCount=4;var b2_linearSlop=.005;var b2_polygonRadius=2*b2_linearSlop;var b2_maxPolygonVertices=8;function b2MassData(mass,center,I){this.mass=mass;this.center=center;this.I=I};var b2ChainShape_CreateFixture=Module.cwrap("b2ChainShape_CreateFixture","number",["number","number","number","number","number","number","number","number"]);function b2ChainShape(){this.radius=b2_polygonRadius;this.vertices=[];this.type=b2Shape_Type_e_chain}b2ChainShape.prototype.CreateLoop=function(){this.vertices.push(this.vertices[0])};
b2ChainShape.prototype._CreateFixture=function(body,fixtureDef){var vertices=this.vertices;var chainLength=vertices.length;var dataLength=chainLength*2;var data=new Float32Array(dataLength);for(var i=0,j=0;i<dataLength;i+=2,j++){data[i]=vertices[j].x;data[i+1]=vertices[j].y}var nDataBytes=data.length*data.BYTES_PER_ELEMENT;var dataPtr=Module._malloc(nDataBytes);var dataHeap=new Uint8Array(Module.HEAPU8.buffer,dataPtr,nDataBytes);dataHeap.set(new Uint8Array(data.buffer));var fixture=b2ChainShape_CreateFixture(body.ptr,
fixtureDef.density,fixtureDef.friction,fixtureDef.isSensor,fixtureDef.restitution,fixtureDef.userData,fixtureDef.filter.categoryBits,fixtureDef.filter.groupIndex,fixtureDef.filter.maskBits,dataHeap.byteOffset,data.length);Module._free(dataHeap.byteOffset);return fixture};var b2CircleShape_CreateFixture=Module.cwrap("b2CircleShape_CreateFixture","number",["number","number","number","number","number","number","number","number","number"]);var b2CircleShape_CreateParticleGroup=Module.cwrap("b2CircleShape_CreateParticleGroup","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
var b2CircleShape_DestroyParticlesInShape=Module.cwrap("b2CircleShape_DestroyParticlesInShape","number",["number","number","number","number","number","number","number","number"]);function b2CircleShape(){this.position=new b2Vec2;this.radius=0;this.type=b2Shape_Type_e_circle}
b2CircleShape.prototype._CreateFixture=function(body,fixtureDef){return b2CircleShape_CreateFixture(body.ptr,fixtureDef.density,fixtureDef.friction,fixtureDef.isSensor,fixtureDef.restitution,fixtureDef.userData,fixtureDef.filter.categoryBits,fixtureDef.filter.groupIndex,fixtureDef.filter.maskBits,this.position.x,this.position.y,this.radius)};
b2CircleShape.prototype._CreateParticleGroup=function(particleSystem,pgd){return b2CircleShape_CreateParticleGroup(particleSystem.ptr,pgd.angle,pgd.angularVelocity,pgd.color.r,pgd.color.g,pgd.color.b,pgd.color.a,pgd.flags,pgd.group.ptr,pgd.groupFlags,pgd.lifetime,pgd.linearVelocity.x,pgd.linearVelocity.y,pgd.position.x,pgd.position.y,pgd.positionData,pgd.particleCount,pgd.strength,pgd.stride,pgd.userData,this.position.x,this.position.y,this.radius)};
b2CircleShape.prototype._DestroyParticlesInShape=function(ps,xf){return b2CircleShape_DestroyParticlesInShape(ps.ptr,this.position.x,this.position.y,this.radius,xf.p.x,xf.p.y,xf.q.s,xf.q.c)};var b2Body_ApplyAngularImpulse=Module.cwrap("b2Body_ApplyAngularImpulse","null",["number","number","number"]);var b2Body_ApplyForce=Module.cwrap("b2Body_ApplyForce","number",["number","number","number","number","number","number"]);var b2Body_ApplyForceToCenter=Module.cwrap("b2Body_ApplyForceToCenter","number",["number","number","number","number"]);var b2Body_ApplyTorque=Module.cwrap("b2Body_ApplyTorque","number",["number","number","number"]);
var b2Body_DestroyFixture=Module.cwrap("b2Body_DestroyFixture","null",["number","number"]);var b2Body_GetAngle=Module.cwrap("b2Body_GetAngle","number",["number"]);var b2Body_GetAngularVelocity=Module.cwrap("b2Body_GetAngularVelocity","number",["number"]);var b2Body_GetInertia=Module.cwrap("b2Body_GetInertia","number",["number"]);var b2Body_GetLinearVelocity=Module.cwrap("b2Body_GetLinearVelocity","null",["number","number"]);
var b2Body_GetLocalPoint=Module.cwrap("b2Body_GetLocalPoint","null",["number","number","number","number"]);var b2Body_GetLocalVector=Module.cwrap("b2Body_GetLocalVector","null",["number","number","number","number"]);var b2Body_GetMass=Module.cwrap("b2Body_GetMass","number",["number"]);var b2Body_GetPosition=Module.cwrap("b2Body_GetPosition","null",["number","number"]);var b2Body_GetTransform=Module.cwrap("b2Body_GetTransform","null",["number","number"]);
var b2Body_GetType=Module.cwrap("b2Body_GetType","number",["number"]);var b2Body_GetWorldCenter=Module.cwrap("b2Body_GetWorldCenter","null",["number","number"]);var b2Body_GetWorldPoint=Module.cwrap("b2Body_GetWorldPoint","null",["number","number","number","number"]);var b2Body_GetWorldVector=Module.cwrap("b2Body_GetWorldVector","null",["number","number","number","number"]);var b2Body_SetAngularVelocity=Module.cwrap("b2Body_SetAngularVelocity","null",["number","number"]);
var b2Body_SetAwake=Module.cwrap("b2Body_SetAwake","number",["number","number"]);var b2Body_SetLinearVelocity=Module.cwrap("b2Body_SetLinearVelocity","null",["number","number","number"]);var b2Body_SetMassData=Module.cwrap("b2Body_SetMassData","null",["number","number","number","number","number"]);var b2Body_SetTransform=Module.cwrap("b2Body_SetTransform","null",["number","number","number"]);var b2Body_SetType=Module.cwrap("b2Body_SetType","null",["number","number"]);var b2Body_xf_offset=Offsets.b2Body.xf;
var b2Body_userData_offset=Offsets.b2Body.userData;function b2Body(ptr){this.buffer=new DataView(Module.HEAPU8.buffer,ptr);this.ptr=ptr;this.fixtures=[]}b2Body.prototype.ApplyAngularImpulse=function(force,wake){b2Body_ApplyAngularImpulse(this.ptr,force,wake)};b2Body.prototype.ApplyForce=function(force,point,wake){b2Body_ApplyForce(this.ptr,force.x,force.y,point.x,point.y,wake)};b2Body.prototype.ApplyForceToCenter=function(force,wake){b2Body_ApplyForceToCenter(this.ptr,force.x,force.y,wake)};
b2Body.prototype.ApplyTorque=function(force,wake){b2Body_ApplyTorque(this.ptr,force,wake)};b2Body.prototype.CreateFixtureFromDef=function(fixtureDef){var fixture=new b2Fixture;fixture.FromFixtureDef(fixtureDef);fixture._SetPtr(fixtureDef.shape._CreateFixture(this,fixtureDef));fixture.body=this;b2World._Push(fixture,this.fixtures);world.fixturesLookup[fixture.ptr]=fixture;return fixture};
b2Body.prototype.CreateFixtureFromShape=function(shape,density){var fixtureDef=new b2FixtureDef;fixtureDef.shape=shape;fixtureDef.density=density;return this.CreateFixtureFromDef(fixtureDef)};b2Body.prototype.DestroyFixture=function(fixture){b2Body_DestroyFixture(this.ptr,fixture.ptr);b2World._RemoveItem(fixture,this.fixtures)};b2Body.prototype.GetAngle=function(){return b2Body_GetAngle(this.ptr)};b2Body.prototype.GetAngularVelocity=function(){return b2Body_GetAngularVelocity(this.ptr)};
b2Body.prototype.GetInertia=function(){return b2Body_GetInertia(this.ptr)};b2Body.prototype.GetMass=function(){return b2Body_GetMass(this.ptr)};b2Body.prototype.GetLinearVelocity=function(){b2Body_GetLinearVelocity(this.ptr,_vec2Buf.byteOffset);var result=new Float32Array(_vec2Buf.buffer,_vec2Buf.byteOffset,_vec2Buf.length);return new b2Vec2(result[0],result[1])};
b2Body.prototype.GetLocalPoint=function(vec){b2Body_GetLocalPoint(this.ptr,vec.x,vec.y,_vec2Buf.byteOffset);var result=new Float32Array(_vec2Buf.buffer,_vec2Buf.byteOffset,_vec2Buf.length);return new b2Vec2(result[0],result[1])};b2Body.prototype.GetLocalVector=function(vec){b2Body_GetLocalVector(this.ptr,vec.x,vec.y,_vec2Buf.byteOffset);var result=new Float32Array(_vec2Buf.buffer,_vec2Buf.byteOffset,_vec2Buf.length);return new b2Vec2(result[0],result[1])};
b2Body.prototype.GetPosition=function(){b2Body_GetPosition(this.ptr,_vec2Buf.byteOffset);var result=new Float32Array(_vec2Buf.buffer,_vec2Buf.byteOffset,_vec2Buf.length);return new b2Vec2(result[0],result[1])};
b2Body.prototype.GetTransform=function(){var transform=new b2Transform;transform.p.x=this.buffer.getFloat32(b2Body_xf_offset,true);transform.p.y=this.buffer.getFloat32(b2Body_xf_offset+4,true);transform.q.s=this.buffer.getFloat32(b2Body_xf_offset+8,true);transform.q.c=this.buffer.getFloat32(b2Body_xf_offset+12,true);return transform};b2Body.prototype.GetType=function(){return b2Body_GetType(this.ptr)};b2Body.prototype.GetUserData=function(){return this.buffer.getUint32(b2Body_userData_offset,true)};
b2Body.prototype.GetWorldCenter=function(){b2Body_GetWorldCenter(this.ptr,_vec2Buf.byteOffset);var result=new Float32Array(_vec2Buf.buffer,_vec2Buf.byteOffset,_vec2Buf.length);return new b2Vec2(result[0],result[1])};b2Body.prototype.GetWorldPoint=function(vec){b2Body_GetWorldPoint(this.ptr,vec.x,vec.y,_vec2Buf.byteOffset);var result=new Float32Array(_vec2Buf.buffer,_vec2Buf.byteOffset,_vec2Buf.length);return new b2Vec2(result[0],result[1])};
b2Body.prototype.GetWorldVector=function(vec){b2Body_GetWorldVector(this.ptr,vec.x,vec.y,_vec2Buf.byteOffset);var result=new Float32Array(_vec2Buf.buffer,_vec2Buf.byteOffset,_vec2Buf.length);return new b2Vec2(result[0],result[1])};b2Body.prototype.SetAngularVelocity=function(angle){b2Body_SetAngularVelocity(this.ptr,angle)};b2Body.prototype.SetAwake=function(flag){b2Body_SetAwake(this.ptr,flag)};b2Body.prototype.SetLinearVelocity=function(v){b2Body_SetLinearVelocity(this.ptr,v.x,v.y)};
b2Body.prototype.SetMassData=function(massData){b2Body_SetMassData(this.ptr,massData.mass,massData.center.x,massData.center.y,massData.I)};b2Body.prototype.SetTransform=function(v,angle){b2Body_SetTransform(this.ptr,v.x,v.y,angle)};b2Body.prototype.SetType=function(type){b2Body_SetType(this.ptr,type)};var b2_staticBody=0;var b2_kinematicBody=1;var b2_dynamicBody=2;
function b2BodyDef(){this.active=true;this.allowSleep=true;this.angle=0;this.angularVelocity=0;this.angularDamping=0;this.awake=true;this.bullet=false;this.fixedRotation=false;this.gravityScale=1;this.linearDamping=0;this.linearVelocity=new b2Vec2;this.position=new b2Vec2;this.type=b2_staticBody;this.userData=null};b2World.BeginContactBody=function(contactPtr){if(world.listener.BeginContactBody===undefined)return;var contact=new b2Contact(contactPtr);world.listener.BeginContactBody(contact)};b2World.EndContactBody=function(contactPtr){if(world.listener.EndContactBody===undefined)return;var contact=new b2Contact(contactPtr);world.listener.EndContactBody(contact)};
b2World.PreSolve=function(contactPtr,oldManifoldPtr){if(world.listener.PreSolve===undefined)return;world.listener.PreSolve(new b2Contact(contactPtr),new b2Manifold(oldManifoldPtr))};b2World.PostSolve=function(contactPtr,impulsePtr){if(world.listener.PostSolve===undefined)return;world.listener.PostSolve(new b2Contact(contactPtr),new b2ContactImpulse(impulsePtr))};b2World.QueryAABB=function(fixturePtr){return world.queryAABBCallback.ReportFixture(world.fixturesLookup[fixturePtr])};
b2World.RayCast=function(fixturePtr,pointX,pointY,normalX,normalY,fraction){return world.rayCastCallback.ReportFixture(world.fixturesLookup[fixturePtr],new b2Vec2(pointX,pointY),new b2Vec2(normalX,normalY),fraction)};var b2World_Create=Module.cwrap("b2World_Create","number",["number","number"]);
var b2World_CreateBody=Module.cwrap("b2World_CreateBody","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);var b2World_CreateParticleSystem=Module.cwrap("b2World_CreateParticleSystem","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
var b2World_DestroyBody=Module.cwrap("b2World_DestroyBody","null",["number","number"]);var b2World_DestroyJoint=Module.cwrap("b2World_DestroyJoint","null",["number","number"]);var b2World_DestroyParticleSystem=Module.cwrap("b2World_DestroyParticleSystem","null",["number","number"]);var b2World_QueryAABB=Module.cwrap("b2World_QueryAABB","null",["number","number","number","number","number"]);var b2World_RayCast=Module.cwrap("b2World_RayCast","null",["number","number","number","number","number"]);
var b2World_SetContactListener=Module.cwrap("b2World_SetContactListener","null",["number"]);var b2World_SetGravity=Module.cwrap("b2World_SetGravity","null",["number","number","number"]);var b2World_Step=Module.cwrap("b2World_Step","null",["number","number","number"]);var _transBuf=null;var _vec2Buf=null;
function b2World(gravity){this.bodies=[];this.bodiesLookup={};this.fixturesLookup={};this.joints=[];this.listener=null;this.particleSystems=[];this.ptr=b2World_Create(gravity.x,gravity.y);this.queryAABBCallback=null;this.rayCastCallback=null;this.buffer=new DataView(Module.HEAPU8.buffer,this.ptr);var nDataBytes=4*Float32Array.BYTES_PER_ELEMENT;var dataPtr=Module._malloc(nDataBytes);_transBuf=new Uint8Array(Module.HEAPU8.buffer,dataPtr,nDataBytes);nDataBytes=2*Float32Array.BYTES_PER_ELEMENT;dataPtr=
Module._malloc(nDataBytes);_vec2Buf=new Uint8Array(Module.HEAPU8.buffer,dataPtr,nDataBytes)}b2World._Push=function(item,list){item.lindex=list.length;list.push(item)};b2World._RemoveItem=function(item,list){var length=list.length;var lindex=item.lindex;if(length>1){list[lindex]=list[length-1];list[lindex].lindex=lindex}list.pop()};
b2World.prototype.CreateBody=function(bodyDef){var body=new b2Body(b2World_CreateBody(this.ptr,bodyDef.active,bodyDef.allowSleep,bodyDef.angle,bodyDef.angularVelocity,bodyDef.angularDamping,bodyDef.awake,bodyDef.bullet,bodyDef.fixedRotation,bodyDef.gravityScale,bodyDef.linearDamping,bodyDef.linearVelocity.x,bodyDef.linearVelocity.y,bodyDef.position.x,bodyDef.position.y,bodyDef.type,bodyDef.userData));b2World._Push(body,this.bodies);this.bodiesLookup[body.ptr]=body;return body};
b2World.prototype.CreateJoint=function(jointDef){var joint=jointDef.Create(this);b2World._Push(joint,this.joints);return joint};
b2World.prototype.CreateParticleSystem=function(psd){var ps=new b2ParticleSystem(b2World_CreateParticleSystem(this.ptr,psd.colorMixingStrength,psd.dampingStrength,psd.destroyByAge,psd.ejectionStrength,psd.elasticStrength,psd.lifetimeGranularity,psd.powderStrength,psd.pressureStrength,psd.radius,psd.repulsiveStrength,psd.springStrength,psd.staticPressureIterations,psd.staticPressureRelaxation,psd.staticPressureStrength,psd.surfaceTensionNormalStrength,psd.surfaceTensionPressureStrength,psd.viscousStrength));
b2World._Push(ps,this.particleSystems);ps.dampingStrength=psd.dampingStrength;ps.radius=psd.radius;return ps};b2World.prototype.DestroyBody=function(body){b2World_DestroyBody(this.ptr,body.ptr);b2World._RemoveItem(body,this.bodies)};b2World.prototype.DestroyJoint=function(joint){b2World_DestroyJoint(this.ptr,joint.ptr);b2World._RemoveItem(joint,this.joints)};
b2World.prototype.DestroyParticleSystem=function(particleSystem){b2World_DestroyParticleSystem(this.ptr,particleSystem.ptr);b2World._RemoveItem(particleSystem,this.particleSystems)};b2World.prototype.QueryAABB=function(callback,aabb){this.queryAABBCallback=callback;b2World_QueryAABB(this.ptr,aabb.lowerBound.x,aabb.lowerBound.y,aabb.upperBound.x,aabb.upperBound.y)};
b2World.prototype.RayCast=function(callback,point1,point2){this.rayCastCallback=callback;b2World_RayCast(this.ptr,point1.x,point1.y,point2.x,point2.y)};b2World.prototype.SetContactListener=function(listener){this.listener=listener;b2World_SetContactListener(this.ptr)};b2World.prototype.SetGravity=function(gravity){b2World_SetGravity(this.ptr,gravity.x,gravity.y)};b2World.prototype.Step=function(steps,vIterations,pIterations){b2World_Step(this.ptr,steps,vIterations,pIterations)};var b2WheelJoint_SetMotorSpeed=Module.cwrap("b2WheelJoint_SetMotorSpeed","null",["number","number"]);var b2WheelJoint_SetSpringFrequencyHz=Module.cwrap("b2WheelJoint_SetSpringFrequencyHz","null",["number","number"]);function b2WheelJoint(def){this.next=null;this.ptr=null}b2WheelJoint.prototype.SetMotorSpeed=function(speed){b2WheelJoint_SetMotorSpeed(this.ptr,speed)};b2WheelJoint.prototype.SetSpringFrequencyHz=function(hz){b2WheelJoint_SetSpringFrequencyHz(this.ptr,hz)};
var b2WheelJointDef_Create=Module.cwrap("b2WheelJointDef_Create","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);var b2WheelJointDef_InitializeAndCreate=Module.cwrap("b2WheelJointDef_InitializeAndCreate","number",["number","number","number","number","number","number","number","number","number","number","number","number","number"]);
function b2WheelJointDef(){this.bodyA=null;this.bodyB=null;this.collideConnected=false;this.dampingRatio=.7;this.enableMotor=false;this.frequencyHz=2;this.localAnchorA=new b2Vec2;this.localAnchorB=new b2Vec2;this.localAxisA=new b2Vec2(1,0);this.maxMotorTorque=0;this.motorSpeed=0}
b2WheelJointDef.prototype.Create=function(world){var wheelJoint=new b2WheelJoint(this);wheelJoint.ptr=b2WheelJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.dampingRatio,this.enableMotor,this.frequencyHz,this.localAnchorA.x,this.localAnchorA.y,this.localAnchorB.x,this.localAnchorB.y,this.localAxisA.x,this.localAxisA.y,this.maxMotorTorque,this.motorSpeed);return wheelJoint};
b2WheelJointDef.prototype.InitializeAndCreate=function(bodyA,bodyB,anchor,axis){this.bodyA=bodyA;this.bodyB=bodyB;var wheelJoint=new b2WheelJoint(this);wheelJoint.ptr=b2WheelJointDef_InitializeAndCreate(world.ptr,this.bodyA.ptr,this.bodyB.ptr,anchor.x,anchor.y,axis.x,axis.y,this.collideConnected,this.dampingRatio,this.enableMotor,this.frequencyHz,this.maxMotorTorque,this.motorSpeed);b2World._Push(wheelJoint,world.joints);return wheelJoint};var b2WeldJointDef_Create=Module.cwrap("b2WeldJointDef_Create","number",["number","number","number","number","number","number","number","number","number","number"]);var b2WeldJointDef_InitializeAndCreate=Module.cwrap("b2WeldJointDef_InitializeAndCreate","number",["number","number","number","number","number","number","number","number"]);
function b2WeldJointDef(){this.bodyA=null;this.bodyB=null;this.collideConnected=false;this.dampingRatio=0;this.frequencyHz=0;this.localAnchorA=new b2Vec2;this.localAnchorB=new b2Vec2;this.referenceAngle=0}
b2WeldJointDef.prototype.Create=function(world){var weldJoint=new b2WeldJoint(this);weldJoint.ptr=b2WeldJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.dampingRatio,this.frequencyHz,this.localAnchorA.x,this.localAnchorA.y,this.localAnchorB.x,this.localAnchorB.y,this.referenceAngle);return weldJoint};
b2WeldJointDef.prototype.InitializeAndCreate=function(bodyA,bodyB,anchor){this.bodyA=bodyA;this.bodyB=bodyB;var weldJoint=new b2WeldJoint(this);weldJoint.ptr=b2WeldJointDef_InitializeAndCreate(world.ptr,this.bodyA.ptr,this.bodyB.ptr,anchor.x,anchor.y,this.collideConnected,this.dampingRatio,this.frequencyHz);b2World._Push(weldJoint,world.joints);return weldJoint};function b2WeldJoint(def){this.bodyA=def.bodyA;this.bodyB=def.bodyB;this.next=null;this.ptr=null};var b2GearJoint_GetRatio=Module.cwrap("b2GearJoint_GetRatio","number",["number"]);function b2GearJoint(def){this.ptr=null;this.next=null}b2GearJoint.prototype.GetRatio=function(){return b2GearJoint_GetRatio(this.ptr)};var b2GearJointDef_Create=Module.cwrap("b2GearJointDef_Create","number",["number","number","number","number","number","number","number"]);function b2GearJointDef(){this.bodyA=null;this.bodyB=null;this.collideConnected=false;this.joint1=null;this.joint2=null;this.ratio=0}
b2GearJointDef.prototype.Create=function(world){var gearJoint=new b2GearJoint(this);gearJoint.ptr=b2GearJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.joint1.ptr,this.joint2.ptr,this.ratio);return gearJoint};var e_unknownJoint=0;var e_revoluteJoint=1;var e_prismaticJoint=2;var e_distanceJoint=3;var e_pulleyJoint=4;var e_mouseJoint=5;var e_gearJoint=6;var e_wheelJoint=7;var e_weldJoint=8;var e_frictionJoint=9;var e_ropeJoint=10;var e_motorJoint=11;var b2Joint_GetBodyA=Module.cwrap("b2Joint_GetBodyA","number",["number"]);var b2Joint_GetBodyB=Module.cwrap("b2Joint_GetBodyB","number",["number"]);function b2Joint(){}b2Joint.prototype.GetBodyA=function(){return world.bodiesLookup[b2Joint_GetBodyA(this.ptr)]};
b2Joint.prototype.GetBodyB=function(){return world.bodiesLookup[b2Joint_GetBodyB(this.ptr)]};var b2FrictionJointDef_Create=Module.cwrap("b2FrictionJointDef_Create","number",["number","number","number","number","number","number","number","number","number","number"]);var b2FrictionJointDef_InitializeAndCreate=Module.cwrap("b2FrictionJointDef_InitializeAndCreate","number",["number","number","number","number","number","number","number","number"]);
function b2FrictionJointDef(){this.bodyA=null;this.bodyB=null;this.collideConnected=false;this.localAnchorA=new b2Vec2;this.localAnchorB=new b2Vec2;this.maxForce=0;this.maxTorque=0;this.userData=null}
b2FrictionJointDef.prototype.Create=function(world){var frictionJoint=new b2FrictionJoint(this);frictionJoint.ptr=b2FrictionJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.localAnchorA.x,this.localAnchorA.y,this.localAnchorB.x,this.localAnchorB.y,this.maxForce,this.maxTorque);return frictionJoint};
b2FrictionJointDef.prototype.InitializeAndCreate=function(bodyA,bodyB,anchor){this.bodyA=bodyA;this.bodyB=bodyB;var frictionJoint=new b2FrictionJoint(this);frictionJoint.ptr=b2FrictionJointDef_InitializeAndCreate(world.ptr,this.bodyA.ptr,this.bodyB.ptr,anchor.x,anchor.y,this.collideConnected,this.maxForce,this.maxTorque);b2World._Push(frictionJoint,world.joints);return frictionJoint};function b2FrictionJoint(def){this.bodyA=def.bodyA;this.bodyB=def.bodyB;this.ptr=null;this.next=null};var b2RevoluteJoint_EnableLimit=Module.cwrap("b2RevoluteJoint_EnableLimit","number",["number","number"]);var b2RevoluteJoint_EnableMotor=Module.cwrap("b2RevoluteJoint_EnableMotor","number",["number","number"]);var b2RevoluteJoint_GetJointAngle=Module.cwrap("b2RevoluteJoint_GetJointAngle","number",["number"]);var b2RevoluteJoint_IsLimitEnabled=Module.cwrap("b2RevoluteJoint_IsLimitEnabled","number",["number"]);
var b2RevoluteJoint_IsMotorEnabled=Module.cwrap("b2RevoluteJoint_IsMotorEnabled","number",["number"]);var b2RevoluteJoint_SetMotorSpeed=Module.cwrap("b2RevoluteJoint_SetMotorSpeed","number",["number","number"]);
function b2RevoluteJoint(revoluteJointDef){this.collideConnected=revoluteJointDef.collideConnected;this.enableLimit=revoluteJointDef.enableLimit;this.enableMotor=revoluteJointDef.enableMotor;this.lowerAngle=revoluteJointDef.lowerAngle;this.maxMotorTorque=revoluteJointDef.maxMotorTorque;this.motorSpeed=revoluteJointDef.motorSpeed;this.next=null;this.ptr=null;this.upperAngle=revoluteJointDef.upperAngle;this.userData=revoluteJointDef.userData}b2RevoluteJoint.prototype=new b2Joint;
b2RevoluteJoint.prototype.EnableLimit=function(flag){b2RevoluteJoint_EnableLimit(this.ptr,flag)};b2RevoluteJoint.prototype.EnableMotor=function(flag){b2RevoluteJoint_EnableMotor(this.ptr,flag)};b2RevoluteJoint.prototype.GetJointAngle=function(flag){return b2RevoluteJoint_GetJointAngle(this.ptr)};b2RevoluteJoint.prototype.IsLimitEnabled=function(){return b2RevoluteJoint_IsLimitEnabled(this.ptr)};b2RevoluteJoint.prototype.IsMotorEnabled=function(){return b2RevoluteJoint_IsMotorEnabled(this.ptr)};
b2RevoluteJoint.prototype.SetMotorSpeed=function(speed){b2RevoluteJoint_SetMotorSpeed(this.ptr,speed);this.motorSpeed=speed};var b2RevoluteJointDef_Create=Module.cwrap("b2RevoluteJointDef_Create","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
var b2RevoluteJointDef_InitializeAndCreate=Module.cwrap("b2RevoluteJointDef_InitializeAndCreate","number",["number","number","number","number","number","number","number","number","number","number","number","number"]);function b2RevoluteJointDef(){this.collideConnected=false;this.enableLimit=false;this.enableMotor=false;this.localAnchorA=new b2Vec2;this.localAnchorB=new b2Vec2;this.lowerAngle=0;this.maxMotorTorque=0;this.motorSpeed=0;this.referenceAngle=0;this.upperAngle=0;this.userData=null}
b2RevoluteJointDef.prototype.Create=function(world){var revoluteJoint=new b2RevoluteJoint(this);revoluteJoint.ptr=b2RevoluteJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.enableLimit,this.enableMotor,this.lowerAngle,this.localAnchorA.x,this.localAnchorA.y,this.localAnchorB.x,this.localAnchorB.y,this.maxMotorTorque,this.motorSpeed,this.referenceAngle,this.upperAngle);return revoluteJoint};
b2RevoluteJointDef.prototype.InitializeAndCreate=function(bodyA,bodyB,anchor){this.bodyA=bodyA;this.bodyB=bodyB;var revoluteJoint=new b2RevoluteJoint(this);revoluteJoint.ptr=b2RevoluteJointDef_InitializeAndCreate(world.ptr,bodyA.ptr,bodyB.ptr,anchor.x,anchor.y,this.collideConnected,this.enableLimit,this.enableMotor,this.lowerAngle,this.maxMotorTorque,this.motorSpeed,this.upperAngle);b2World._Push(revoluteJoint,world.joints);return revoluteJoint};var b2MotorJoint_SetAngularOffset=Module.cwrap("b2MotorJoint_SetAngularOffset","null",["number","number"]);var b2MotorJoint_SetLinearOffset=Module.cwrap("b2MotorJoint_SetLinearOffset","null",["number","number","number"]);function b2MotorJoint(def){this.bodyA=def.bodyA;this.bodyB=def.bodyB;this.ptr=null;this.next=null}b2MotorJoint.prototype.SetAngularOffset=function(angle){b2MotorJoint_SetAngularOffset(this.ptr,angle)};
b2MotorJoint.prototype.SetLinearOffset=function(v){b2MotorJoint_SetLinearOffset(this.ptr,v.x,v.y)};var b2MotorJointDef_Create=Module.cwrap("b2MotorJointDef_Create","number",["number","number","number","number","number","number","number","number","number","number"]);var b2MotorJointDef_InitializeAndCreate=Module.cwrap("b2MotorJointDef_InitializeAndCreate","number",["number","number","number","number","number","number","number","number"]);
function b2MotorJointDef(){this.bodyA=null;this.bodyB=null;this.collideConnected=false;this.angularOffset=0;this.correctionFactor=.3;this.linearOffset=new b2Vec2;this.maxForce=0;this.maxTorque=0}b2MotorJointDef.prototype.Create=function(world){var motorJoint=new b2MotorJoint(this);motorJoint.ptr=b2MotorJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.angularOffset,this.correctionFactor,this.linearOffset.x,this.linearOffset.y,this.maxForce,this.maxTorque);return motorJoint};
b2MotorJointDef.prototype.InitializeAndCreate=function(bodyA,bodyB){this.bodyA=bodyA;this.bodyB=bodyB;var motorJoint=new b2MotorJoint(this);motorJoint.ptr=b2MotorJointDef_InitializeAndCreate(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.correctionFactor,this.maxForce,this.maxTorque);b2World._Push(motorJoint,world.joints);return motorJoint};function b2PulleyJoint(def){this.ptr=null;this.next=null}var b2PulleyJointDef_Create=Module.cwrap("b2PulleyJointDef_Create","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);var b2PulleyJointDef_InitializeAndCreate=Module.cwrap("b2PulleyJointDef_InitializeAndCreate","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
function b2PulleyJointDef(){this.bodyA=null;this.bodyB=null;this.collideConnected=true;this.groundAnchorA=new b2Vec2;this.groundAnchorB=new b2Vec2;this.localAnchorA=new b2Vec2;this.localAnchorB=new b2Vec2;this.lengthA=0;this.lengthB=0;this.ratio=1}
b2PulleyJointDef.prototype.Create=function(world){var pulleyJoint=new b2PulleyJoint(this);pulleyJoint.ptr=b2PulleyJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.groundAnchorA.x,this.groundAnchorA.y,this.groundAnchorB.x,this.groundAnchorB.y,this.lengthA,this.lengthB,this.localAnchorA.x,this.localAnchorA.y,this.localAnchorB.x,this.localAnchorB.y,this.ratio);return pulleyJoint};
b2PulleyJointDef.prototype.InitializeAndCreate=function(bodyA,bodyB,groundAnchorA,groundAnchorB,anchorA,anchorB,ratio){this.bodyA=bodyA;this.bodyB=bodyB;var pulleyJoint=new b2PulleyJoint(this);pulleyJoint.ptr=b2PulleyJointDef_InitializeAndCreate(world.ptr,this.bodyA.ptr,this.bodyB.ptr,anchorA.x,anchorA.y,anchorB.x,anchorB.y,groundAnchorA.x,groundAnchorA.y,groundAnchorB.x,groundAnchorB.y,ratio,this.collideConnected);b2World._Push(pulleyJoint,world.joints);return pulleyJoint};function b2DistanceJoint(def){this.bodyA=def.bodyA;this.bodyB=def.bodyB;this.ptr=null;this.next=null}var b2DistanceJointDef_Create=Module.cwrap("b2DistanceJointDef_Create","number",["number","number","number","number","number","number","number","number","number","number","number"]);var b2DistanceJointDef_InitializeAndCreate=Module.cwrap("b2DistanceJointDef_InitializeAndCreate","number",["number","number","number","number","number","number","number","number","number","number"]);
function b2DistanceJointDef(){this.bodyA=null;this.bodyB=null;this.collideConnected=false;this.dampingRatio=0;this.length=1;this.localAnchorA=new b2Vec2;this.localAnchorB=new b2Vec2;this.frequencyHz=0}
b2DistanceJointDef.prototype.Create=function(world){var distanceJoint=new b2DistanceJoint(this);distanceJoint.ptr=b2DistanceJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.dampingRatio,this.frequencyHz,this.length,this.localAnchorA.x,this.localAnchorA.y,this.localAnchorB.x,this.localAnchorB.y);return distanceJoint};
b2DistanceJointDef.prototype.InitializeAndCreate=function(bodyA,bodyB,anchorA,anchorB){this.bodyA=bodyA;this.bodyB=bodyB;var distanceJoint=new b2DistanceJoint(this);distanceJoint.ptr=b2DistanceJointDef_InitializeAndCreate(world.ptr,this.bodyA.ptr,this.bodyB.ptr,anchorA.x,anchorA.y,anchorB.x,anchorB.y,this.collideConnected,this.dampingRatio,this.frequencyHz);b2World._Push(distanceJoint,world.joints);return distanceJoint};var b2PrismaticJoint_EnableLimit=Module.cwrap("b2PrismaticJoint_EnableLimit","number",["number","number"]);var b2PrismaticJoint_EnableMotor=Module.cwrap("b2PrismaticJoint_EnableMotor","number",["number","number"]);var b2PrismaticJoint_GetJointTranslation=Module.cwrap("b2PrismaticJoint_GetJointTranslation","number",["number"]);var b2PrismaticJoint_GetMotorSpeed=Module.cwrap("b2PrismaticJoint_GetMotorSpeed","number",["number"]);
var b2PrismaticJoint_GetMotorForce=Module.cwrap("b2PrismaticJoint_GetMotorForce","number",["number","number"]);var b2PrismaticJoint_IsLimitEnabled=Module.cwrap("b2PrismaticJoint_IsLimitEnabled","number",["number"]);var b2PrismaticJoint_IsMotorEnabled=Module.cwrap("b2PrismaticJoint_IsMotorEnabled","number",["number"]);var b2PrismaticJoint_SetMotorSpeed=Module.cwrap("b2PrismaticJoint_SetMotorSpeed","number",["number","number"]);function b2PrismaticJoint(def){this.ptr=null;this.next=null}
b2PrismaticJoint.prototype=new b2Joint;b2PrismaticJoint.prototype.EnableLimit=function(flag){return b2PrismaticJoint_EnableLimit(this.ptr,flag)};b2PrismaticJoint.prototype.EnableMotor=function(flag){return b2PrismaticJoint_EnableMotor(this.ptr,flag)};b2PrismaticJoint.prototype.GetJointTranslation=function(){return b2PrismaticJoint_GetJointTranslation(this.ptr)};b2PrismaticJoint.prototype.GetMotorSpeed=function(){return b2PrismaticJoint_GetMotorSpeed(this.ptr)};
b2PrismaticJoint.prototype.GetMotorForce=function(hz){return b2PrismaticJoint_GetMotorForce(this.ptr,hz)};b2PrismaticJoint.prototype.IsLimitEnabled=function(){return b2PrismaticJoint_IsLimitEnabled(this.ptr)};b2PrismaticJoint.prototype.IsMotorEnabled=function(){return b2PrismaticJoint_IsMotorEnabled(this.ptr)};b2PrismaticJoint.prototype.GetMotorEnabled=function(){return b2PrismaticJoint_IsMotorEnabled(this.ptr)};
b2PrismaticJoint.prototype.SetMotorSpeed=function(speed){return b2PrismaticJoint_SetMotorSpeed(this.ptr,speed)};var b2PrismaticJointDef_Create=Module.cwrap("b2PrismaticJointDef_Create","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
var b2PrismaticJointDef_InitializeAndCreate=Module.cwrap("b2PrismaticJointDef_InitializeAndCreate","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
function b2PrismaticJointDef(){this.bodyA=null;this.bodyB=null;this.collideConnected=false;this.enableLimit=false;this.enableMotor=false;this.localAnchorA=new b2Vec2;this.localAnchorB=new b2Vec2;this.localAxisA=new b2Vec2(1,0);this.lowerTranslation=0;this.maxMotorForce=0;this.motorSpeed=0;this.referenceAngle=0;this.upperTranslation=0}
b2PrismaticJointDef.prototype.Create=function(world){var prismaticJoint=new b2PrismaticJoint(this);prismaticJoint.ptr=b2PrismaticJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.enableLimit,this.enableMotor,this.localAnchorA.x,this.localAnchorA.y,this.localAnchorB.x,this.localAnchorB.y,this.localAxisA.x,this.localAxisA.y,this.lowerTranslation,this.maxMotorForce,this.motorSpeed,this.referenceAngle,this.upperTranslation);return prismaticJoint};
b2PrismaticJointDef.prototype.InitializeAndCreate=function(bodyA,bodyB,anchor,axis){this.bodyA=bodyA;this.bodyB=bodyB;var prismaticJoint=new b2PrismaticJoint(this);prismaticJoint.ptr=b2PrismaticJointDef_InitializeAndCreate(world.ptr,this.bodyA.ptr,this.bodyB.ptr,anchor.x,anchor.y,axis.x,axis.y,this.collideConnected,this.enableLimit,this.enableMotor,this.lowerTranslation,this.maxMotorForce,this.motorSpeed,this.upperTranslation);b2World._Push(prismaticJoint,world.joints);return prismaticJoint};function b2RopeJoint(def){this.next=null;this.ptr=null}var b2RopeJointDef_Create=Module.cwrap("b2RopeJointDef_Create","number",["number","number","number","number","number","number","number","number","number"]);function b2RopeJointDef(){this.bodyA=null;this.bodyB=null;this.collideConnected=false;this.localAnchorA=new b2Vec2;this.localAnchorB=new b2Vec2;this.maxLength=0}
b2RopeJointDef.prototype.Create=function(world){var ropeJoint=new b2RopeJoint(this);ropeJoint.ptr=b2RopeJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.localAnchorA.x,this.localAnchorA.y,this.localAnchorB.x,this.localAnchorB.y,this.maxLength);return ropeJoint};var b2MouseJoint_SetTarget=Module.cwrap("b2MouseJoint_SetTarget","null",["number","number","number"]);function b2MouseJoint(def){this.ptr=null;this.next=null}b2MouseJoint.prototype.SetTarget=function(p){b2MouseJoint_SetTarget(this.ptr,p.x,p.y)};var b2MouseJointDef_Create=Module.cwrap("b2MouseJointDef_Create","number",["number","number","number","number","number","number","number","number","number"]);
function b2MouseJointDef(){this.bodyA=null;this.bodyB=null;this.collideConnected=false;this.dampingRatio=.7;this.frequencyHz=5;this.maxForce=0;this.target=new b2Vec2}b2MouseJointDef.prototype.Create=function(world){var mouseJoint=new b2MouseJoint(this);mouseJoint.ptr=b2MouseJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.dampingRatio,this.frequencyHz,this.maxForce,this.target.x,this.target.y);return mouseJoint};var b2Contact_fixtureA_offset=Offsets.b2Contact.fixtureA;var b2Contact_fixtureB_offset=Offsets.b2Contact.fixtureB;var b2Contact_tangentSpeed_offset=Offsets.b2Contact.tangentSpeed;var b2Contact_GetManifold=Module.cwrap("b2Contact_GetManifold","number",["number"]);var b2Contact_GetWorldManifold=Module.cwrap("b2Contact_GetWorldManifold","number",["number"]);function b2Contact(ptr){this.buffer=new DataView(Module.HEAPU8.buffer,ptr);this.ptr=ptr}
b2Contact.prototype.GetFixtureA=function(){var fixAPtr=this.buffer.getUint32(b2Contact_fixtureA_offset,true);return world.fixturesLookup[fixAPtr]};b2Contact.prototype.GetFixtureB=function(){var fixBPtr=this.buffer.getUint32(b2Contact_fixtureB_offset,true);return world.fixturesLookup[fixBPtr]};b2Contact.prototype.GetManifold=function(){return new b2Manifold(b2Contact_GetManifold(this.ptr))};b2Contact.prototype.GetWorldManifold=function(){return new b2WorldManifold(b2Contact_GetWorldManifold(this.ptr))};
b2Contact.prototype.SetTangentSpeed=function(speed){this.buffer.setFloat32(b2Contact_tangentSpeed_offset,speed,true)};function b2Filter(){this.categoryBits=1;this.groupIndex=0;this.maskBits=65535}var b2Fixture_isSensor_offset=Offsets.b2Fixture.isSensor;var b2Fixture_userData_offset=Offsets.b2Fixture.userData;function b2Fixture(){this.body=null;this.buffer=null;this.ptr=null;this.shape=null}var b2Fixture_TestPoint=Module.cwrap("b2Fixture_TestPoint","number",["number","number","number"]);b2Fixture.prototype._SetPtr=function(ptr){this.ptr=ptr;this.buffer=new DataView(Module.HEAPU8.buffer,ptr)};
b2Fixture.prototype.FromFixtureDef=function(fixtureDef){this.density=fixtureDef.density;this.friction=fixtureDef.friction;this.isSensor=fixtureDef.isSensor;this.restitution=fixtureDef.restitution;this.shape=fixtureDef.shape;this.userData=fixtureDef.userData;this.vertices=[]};b2Fixture.prototype.GetUserData=function(){return this.buffer.getUint32(b2Fixture_userData_offset,true)};b2Fixture.prototype.SetSensor=function(flag){this.buffer.setUint32(b2Fixture_isSensor_offset,flag,true)};
b2Fixture.prototype.TestPoint=function(p){return b2Fixture_TestPoint(this.ptr,p.x,p.y)};function b2FixtureDef(){this.density=0;this.friction=.2;this.isSensor=false;this.restitution=0;this.shape=null;this.userData=null;this.filter=new b2Filter};function b2ContactImpulse(ptr){this.ptr=ptr;this.buffer=new DataView(Module.HEAPU8.buffer,ptr)}b2ContactImpulse.prototype.GetNormalImpulse=function(i){return this.buffer.getFloat32(i*4,true)};b2ContactImpulse.prototype.GetTangentImpulse=function(i){return this.buffer.getFloat32(i*4+8,true)};b2ContactImpulse.prototype.GetCount=function(i){console.log(this.buffer.getInt32(16,true))};function b2ParticleSystemDef(){this.colorMixingStrength=.5;this.dampingStrength=1;this.destroyByAge=true;this.ejectionStrength=.5;this.elasticStrength=.25;this.lifetimeGranularity=1/60;this.powderStrength=.5;this.pressureStrength=.05;this.radius=1;this.repulsiveStrength=1;this.springStrength=.25;this.staticPressureIterations=8;this.staticPressureRelaxation=.2;this.staticPressureStrength=.2;this.surfaceTensionNormalStrength=.2;this.surfaceTensionPressureStrength=.2;this.viscousStrength=.25}
var b2ParticleSystem_CreateParticle=Module.cwrap("b2ParticleSystem_CreateParticle","number",["number","number","number","number","number","number","number","number","number","number","number","number","number"]);var b2ParticleSystem_GetColorBuffer=Module.cwrap("b2ParticleSystem_GetColorBuffer","number",["number"]);var b2ParticleSystem_GetParticleCount=Module.cwrap("b2ParticleSystem_GetParticleCount","number",["number"]);
var b2ParticleSystem_GetPositionBuffer=Module.cwrap("b2ParticleSystem_GetPositionBuffer","number",["number"]);var b2ParticleSystem_GetVelocityBuffer=Module.cwrap("b2ParticleSystem_GetVelocityBuffer","number",["number"]);var b2ParticleSystem_SetDamping=Module.cwrap("b2ParticleSystem_SetDamping","null",["number","number"]);var b2ParticleSystem_SetDensity=Module.cwrap("b2ParticleSystem_SetDensity","null",["number","number"]);
var b2ParticleSystem_SetRadius=Module.cwrap("b2ParticleSystem_SetRadius","null",["number","number"]);function b2ParticleSystem(ptr){this.dampingStrength=1;this.density=1;this.ptr=ptr;this.particleGroups=[];this.radius=1}b2ParticleSystem.prototype.CreateParticle=function(pd){return b2ParticleSystem_CreateParticle(this.ptr,pd.color.r,pd.color.g,pd.color.b,pd.color.a,pd.flags,pd.group,pd.lifetime,pd.position.x,pd.position.y,pd.userData,pd.velocity.x,pd.velocity.y)};
b2ParticleSystem.prototype.CreateParticleGroup=function(pgd){var particleGroup=new b2ParticleGroup(pgd.shape._CreateParticleGroup(this,pgd));this.particleGroups.push(particleGroup);return particleGroup};b2ParticleSystem.prototype.DestroyParticlesInShape=function(shape,xf){return shape._DestroyParticlesInShape(this,xf)};
b2ParticleSystem.prototype.GetColorBuffer=function(){var count=b2ParticleSystem_GetParticleCount(this.ptr)*4;var offset=b2ParticleSystem_GetColorBuffer(this.ptr);return new Uint8Array(Module.HEAPU8.buffer,offset,count)};b2ParticleSystem.prototype.GetParticleCount=function(){return b2ParticleSystem_GetParticleCount(this.ptr)*2};
b2ParticleSystem.prototype.GetPositionBuffer=function(){var count=b2ParticleSystem_GetParticleCount(this.ptr)*2;var offset=b2ParticleSystem_GetPositionBuffer(this.ptr);return new Float32Array(Module.HEAPU8.buffer,offset,count)};b2ParticleSystem.prototype.GetVelocityBuffer=function(){var count=b2ParticleSystem_GetParticleCount(this.ptr)*2;var offset=b2ParticleSystem_GetVelocityBuffer(this.ptr);return new Float32Array(Module.HEAPU8.buffer,offset,count)};
b2ParticleSystem.prototype.SetDamping=function(damping){this.dampingStrength=damping;b2ParticleSystem_SetDamping(this.ptr,damping)};b2ParticleSystem.prototype.SetDensity=function(density){this.density=density;b2ParticleSystem_SetDensity(this.ptr,density)};b2ParticleSystem.prototype.SetRadius=function(radius){this.radius=radius;b2ParticleSystem_SetRadius(this.ptr,radius)};var b2_solidParticleGroup=1<<0;var b2_rigidParticleGroup=1<<1;var b2_particleGroupCanBeEmpty=1<<2;var b2_particleGroupWillBeDestroyed=1<<3;var b2_particleGroupNeedsUpdateDepth=1<<4;var b2_particleGroupInternalMask=b2_particleGroupWillBeDestroyed|b2_particleGroupNeedsUpdateDepth;var b2ParticleGroup_ApplyForce=Module.cwrap("b2ParticleGroup_ApplyForce","null",["number","number","number"]);
var b2ParticleGroup_ApplyLinearImpulse=Module.cwrap("b2ParticleGroup_ApplyLinearImpulse","null",["number","number","number"]);var b2ParticleGroup_DestroyParticles=Module.cwrap("b2ParticleGroup_DestroyParticles","null",["number","number"]);var b2ParticleGroup_GetBufferIndex=Module.cwrap("b2ParticleGroup_GetBufferIndex","number",["number"]);var b2ParticleGroup_GetParticleCount=Module.cwrap("b2ParticleGroup_GetParticleCount","number",["number"]);var b2ParticleGroup_groupFlags_offset=Offsets.b2ParticleGroup.groupFlags;
function b2ParticleGroup(ptr){this.buffer=new DataView(Module.HEAPU8.buffer,ptr);this.ptr=ptr}b2ParticleGroup.prototype.ApplyForce=function(force){b2ParticleGroup_ApplyForce(this.ptr,force.x,force.y)};b2ParticleGroup.prototype.ApplyLinearImpulse=function(impulse){b2ParticleGroup_ApplyLinearImpulse(this.ptr,impulse.x,impulse.y)};b2ParticleGroup.prototype.DestroyParticles=function(flag){b2ParticleGroup_DestroyParticles(this.ptr,flag)};b2ParticleGroup.prototype.GetBufferIndex=function(){return b2ParticleGroup_GetBufferIndex(this.ptr)};
b2ParticleGroup.prototype.GetGroupFlags=function(){return this.buffer.getUint32(b2ParticleGroup_groupFlags_offset,true)};b2ParticleGroup.prototype.GetParticleCount=function(){return b2ParticleGroup_GetParticleCount(this.ptr)};b2ParticleGroup.prototype.SetGroupFlags=function(flags){this.buffer.setUint32(b2ParticleGroup_groupFlags_offset,flags,true)};
function b2ParticleGroupDef(){this.angle=0;this.angularVelocity=0;this.color=new b2ParticleColor(0,0,0,0);this.flags=0;this.group=new b2ParticleGroup(null);this.groupFlags=0;this.lifetime=0;this.linearVelocity=new b2Vec2;this.position=new b2Vec2;this.positionData=null;this.particleCount=0;this.shape=null;this.strength=1;this.stride=0;this.userData=null};var b2_waterParticle=0;var b2_zombieParticle=1<<1;var b2_wallParticle=1<<2;var b2_springParticle=1<<3;var b2_elasticParticle=1<<4;var b2_viscousParticle=1<<5;var b2_powderParticle=1<<6;var b2_tensileParticle=1<<7;var b2_colorMixingParticle=1<<8;var b2_destructionListenerParticle=1<<9;var b2_barrierParticle=1<<10;var b2_staticPressureParticle=1<<11;var b2_reactiveParticle=1<<12;var b2_repulsiveParticle=1<<13;var b2_fixtureContactListenerParticle=1<<14;var b2_particleContactListenerParticle=1<<15;
var b2_fixtureContactFilterParticle=1<<16;var b2_particleContactFilterParticle=1<<17;function b2ParticleColor(r,g,b,a){if(r===undefined)r=0;if(g===undefined)g=0;if(b===undefined)b=0;if(a===undefined)a=0;this.r=r;this.g=g;this.b=b;this.a=a}b2ParticleColor.prototype.Set=function(r,g,b,a){this.r=r;this.g=g;this.b=b;this.a=a};function b2ParticleDef(){this.color=new b2Vec2;this.flags=0;this.group=0;this.lifetime=0;this.position=new b2Vec2;this.userData=0;this.velocity=new b2Vec2};

Module['b2_waterParticle']=b2_waterParticle,Module['b2_zombieParticle']=b2_zombieParticle,Module['b2_wallParticle']=b2_wallParticle,Module['b2_springParticle']=b2_springParticle,Module['b2_elasticParticle']=b2_elasticParticle,Module['b2_viscousParticle']=b2_viscousParticle,Module['b2_powderParticle']=b2_powderParticle,Module['b2_tensileParticle']=b2_tensileParticle,Module['b2_colorMixingParticle']=b2_colorMixingParticle,Module['b2_destructionListenerParticle']=b2_destructionListenerParticle,Module['b2_barrierParticle']=b2_barrierParticle,Module['b2_staticPressureParticle']=b2_staticPressureParticle,Module['b2_reactiveParticle']=b2_reactiveParticle,Module['b2_repulsiveParticle']=b2_repulsiveParticle,Module['b2_fixtureContactListenerParticle']=b2_fixtureContactListenerParticle,Module['b2_particleContactListenerParticle']=b2_particleContactListenerParticle,Module['b2_fixtureContactFilterParticle']=b2_fixtureContactFilterParticle,Module['b2_particleContactFilterParticle']=b2_particleContactFilterParticle,Module['b2_solidParticleGroup']=b2_solidParticleGroup,Module['b2_rigidParticleGroup']=b2_rigidParticleGroup,Module['b2_particleGroupCanBeEmpty']=b2_particleGroupCanBeEmpty,Module['b2_particleGroupWillBeDestroyed']=b2_particleGroupWillBeDestroyed,Module['b2_particleGroupNeedsUpdateDepth']=b2_particleGroupNeedsUpdateDepth,Module['b2_particleGroupInternalMask']=b2_particleGroupInternalMask,Module['b2_staticBody']=b2_staticBody,Module['b2_kinematicBody']=b2_kinematicBody,Module['b2_dynamicBody']=b2_dynamicBody,Module['b2_linearSlop']=b2_linearSlop,Module['b2_polygonRadius']=b2_polygonRadius,Module['b2_maxPolygonVertices']=b2_maxPolygonVertices;
Module['b2AABB']=b2AABB,Module['b2Manifold']=b2Manifold,Module['b2WorldManifold']=b2WorldManifold,Module['b2Body']=b2Body,Module['b2BodyDef']=b2BodyDef,Module['b2Filter']=b2Filter,Module['b2Fixture']=b2Fixture,Module['b2FixtureDef']=b2FixtureDef,Module['b2World']=b2World,Module['b2ContactImpulse']=b2ContactImpulse,Module['b2Max']=b2Max,Module['b2Min']=b2Min,Module['b2Clamp']=b2Clamp,Module['b2Vec2']=b2Vec2,Module['b2Rot']=b2Rot,Module['b2Transform']=b2Transform,Module['b2ParticleColor']=b2ParticleColor,Module['b2ParticleDef']=b2ParticleDef,Module['b2ParticleGroup']=b2ParticleGroup,Module['b2ParticleGroupDef']=b2ParticleGroupDef,Module['b2ParticleSystemDef']=b2ParticleSystemDef,Module['b2ParticleSystem']=b2ParticleSystem,Module['b2ChainShape']=b2ChainShape,Module['b2CircleShape']=b2CircleShape,Module['b2EdgeShape']=b2EdgeShape,Module['b2PolygonShape']=b2PolygonShape,Module['b2MassData']=b2MassData,Module['b2DistanceJoint']=b2DistanceJoint,Module['b2DistanceJointDef']=b2DistanceJointDef,Module['b2FrictionJointDef']=b2FrictionJointDef,Module['b2FrictionJoint']=b2FrictionJoint,Module['b2GearJoint']=b2GearJoint,Module['b2GearJointDef']=b2GearJointDef,Module['b2Joint']=b2Joint,Module['b2MotorJoint']=b2MotorJoint,Module['b2MotorJointDef']=b2MotorJointDef,Module['b2MouseJoint']=b2MouseJoint,Module['b2MouseJointDef']=b2MouseJointDef,Module['b2PrismaticJoint']=b2PrismaticJoint,Module['b2PrismaticJointDef']=b2PrismaticJointDef,Module['b2PulleyJoint']=b2PulleyJoint,Module['b2PulleyJointDef']=b2PulleyJointDef,Module['b2RevoluteJoint']=b2RevoluteJoint,Module['b2RevoluteJointDef']=b2RevoluteJointDef,Module['b2RopeJoint']=b2RopeJoint,Module['b2RopeJointDef']=b2RopeJointDef,Module['b2WeldJointDef']=b2WeldJointDef,Module['b2WeldJoint']=b2WeldJoint,Module['b2WheelJoint']=b2WheelJoint,Module['b2WheelJointDef']=b2WheelJointDef,Module['b2Contact']=b2Contact})();